Geant4
10.03.p01
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
G4UPolyhedra.hh
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
// $Id:$
28
//
29
//
30
// --------------------------------------------------------------------
31
// GEANT 4 class header file
32
//
33
//
34
// G4UPolyhedra
35
//
36
// Class description:
37
//
38
// Wrapper class for UPolyhedra to make use of it from USolids module.
39
40
// History:
41
// 31.10.13 G.Cosmo, CERN/PH
42
// --------------------------------------------------------------------
43
#ifndef G4UPOLYHEDRA_HH
44
#define G4UPOLYHEDRA_HH
45
46
#include "
G4USolid.hh
"
47
48
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
49
50
#include "UPolyhedra.hh"
51
#include "
G4TwoVector.hh
"
52
#include "
G4PolyhedraSide.hh
"
53
#include "
G4PolyhedraHistorical.hh
"
54
#include "
G4Polyhedron.hh
"
55
56
class
G4EnclosingCylinder
;
57
class
G4ReduciblePolygon
;
58
59
class
G4UPolyhedra :
public
G4USolid
60
{
61
public
:
// with description
62
63
G4UPolyhedra(
const
G4String
&
name
,
64
G4double
phiStart,
// initial phi starting angle
65
G4double
phiTotal,
// total phi angle
66
G4int
numSide,
// number sides
67
G4int
numZPlanes,
// number of z planes
68
const
G4double
zPlane[],
// position of z planes
69
const
G4double
rInner[],
// tangent distance to inner surface
70
const
G4double
rOuter[] );
// tangent distance to outer surface
71
72
G4UPolyhedra(
const
G4String
&
name
,
73
G4double
phiStart,
// initial phi starting angle
74
G4double
phiTotal,
// total phi angle
75
G4int
numSide,
// number sides
76
G4int
numRZ,
// number corners in r,z space
77
const
G4double
r[],
// r coordinate of these corners
78
const
G4double
z[] );
// z coordinate of these corners
79
80
~G4UPolyhedra();
81
82
void
ComputeDimensions(
G4VPVParameterisation
*
p
,
83
const
G4int
n
,
84
const
G4VPhysicalVolume
* pRep);
85
86
G4VSolid
* Clone()
const
;
87
88
inline
UPolyhedra* GetShape()
const
;
89
90
G4int
GetNumSide()
const
;
91
G4double
GetStartPhi()
const
;
92
G4double
GetEndPhi()
const
;
93
G4double
GetSinStartPhi()
const
;
94
G4double
GetCosStartPhi()
const
;
95
G4double
GetSinEndPhi()
const
;
96
G4double
GetCosEndPhi()
const
;
97
G4bool
IsOpen()
const
;
98
G4bool
IsGeneric()
const
;
99
G4int
GetNumRZCorner()
const
;
100
G4PolyhedraSideRZ
GetCorner(
const
G4int
index )
const
;
101
G4PolyhedraHistorical
* GetOriginalParameters()
const
;
102
void
SetOriginalParameters(
G4PolyhedraHistorical
* pars);
103
104
G4bool
Reset();
105
106
inline
G4GeometryType
GetEntityType()
const
;
107
108
public
:
// without description
109
110
G4UPolyhedra(__void__&);
111
// Fake default constructor for usage restricted to direct object
112
// persistency for clients requiring preallocation of memory for
113
// persistifiable objects.
114
115
G4UPolyhedra(
const
G4UPolyhedra &source );
116
G4UPolyhedra &operator=(
const
G4UPolyhedra &source );
117
// Copy constructor and assignment operator.
118
119
void
Extent(
G4ThreeVector
& pMin,
G4ThreeVector
& pMax)
const
;
120
121
G4bool
CalculateExtent(
const
EAxis
pAxis,
122
const
G4VoxelLimits
& pVoxelLimit,
123
const
G4AffineTransform
& pTransform,
124
G4double
& pMin,
G4double
& pMax)
const
;
125
126
G4Polyhedron
* CreatePolyhedron()
const
;
127
128
private
:
129
130
G4double
wrStart;
131
G4double
wrDelta;
132
G4int
wrNumSide;
133
std::vector<G4TwoVector> rzcorners;
134
};
135
136
// --------------------------------------------------------------------
137
// Inline methods
138
// --------------------------------------------------------------------
139
140
inline
UPolyhedra* G4UPolyhedra::GetShape()
const
141
{
142
return
(UPolyhedra*) fShape;
143
}
144
145
inline
G4GeometryType
G4UPolyhedra::GetEntityType()
const
146
{
147
return
"G4Polyhedra"
;
148
}
149
150
#endif // G4GEOM_USE_USOLIDS
151
152
#endif
G4TwoVector.hh
name
const XML_Char * name
Definition:
expat.h:151
CLHEP::Hep3Vector
Definition:
ThreeVector.h:41
G4Polyhedron.hh
G4USolid.hh
G4VPhysicalVolume
Definition:
G4VPhysicalVolume.hh:82
p
const char * p
Definition:
xmltok.h:285
G4ReduciblePolygon
Definition:
G4ReduciblePolygon.hh:61
G4int
int G4int
Definition:
G4Types.hh:78
G4PolyhedraHistorical
Definition:
G4PolyhedraHistorical.hh:47
G4AffineTransform
Definition:
G4AffineTransform.hh:70
G4PolyhedraSide.hh
G4EnclosingCylinder
Definition:
G4EnclosingCylinder.hh:53
G4VSolid
Definition:
G4VSolid.hh:87
G4bool
bool G4bool
Definition:
G4Types.hh:79
G4VoxelLimits
Definition:
G4VoxelLimits.hh:62
G4PolyhedraSideRZ
Definition:
G4PolyhedraSide.hh:63
G4VPVParameterisation
Definition:
G4VPVParameterisation.hh:72
EAxis
EAxis
Definition:
geomdefs.hh:54
G4Polyhedron
Definition:
G4Polyhedron.hh:115
G4PolyhedraHistorical.hh
G4double
double G4double
Definition:
G4Types.hh:76
CLHEP::detail::n
n
Definition:
Ranlux64Engine.cc:88
G4String
Definition:
G4String.hh:60
geant4.10.03.p01
source
geometry
solids
specific
include
G4UPolyhedra.hh
Generated on Thu Mar 16 2017 22:37:54 for Geant4 by
1.8.5