ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4ParameterisationPolyhedra.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4ParameterisationPolyhedra.hh
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
// G4ParameterisationPolyhedra[Rho/Phi/Z]
27
//
28
// Class description:
29
//
30
// These classes represent the parameterised positioning equivalent to
31
// dividing a G4Polyhedra along one of each axis Rho, Phi, Z.
32
33
// 09.05.01 - P.Arce, Initial version
34
// 08.04.04 - I.Hrivnacova, Implemented reflection
35
//---------------------------------------------------------------------
36
#ifndef G4PARAMETERISATIONPOLYHEDRA_HH
37
#define G4PARAMETERISATIONPOLYHEDRA_HH 1
38
39
#include "
G4VDivisionParameterisation.hh
"
40
#include "
G4Polyhedra.hh
"
41
42
class
G4VPhysicalVolume
;
43
44
// Dummy declarations to get rid of warnings ...
45
//
46
class
G4Trd
;
47
class
G4Trap
;
48
class
G4Cons
;
49
class
G4Sphere
;
50
class
G4Orb
;
51
class
G4Ellipsoid
;
52
class
G4Torus
;
53
class
G4Para
;
54
class
G4Hype
;
55
class
G4Tubs
;
56
class
G4Polycone
;
57
58
class
G4VParameterisationPolyhedra
:
public
G4VDivisionParameterisation
59
{
60
public
:
// with description
61
62
G4VParameterisationPolyhedra
(
EAxis
axis,
G4int
nCopies,
63
G4double
offset
,
G4double
step
,
64
G4VSolid
* msolid,
DivisionType
divType );
65
66
virtual
~G4VParameterisationPolyhedra
();
67
68
private
:
69
70
G4double
ConvertRadiusFactor
(
const
G4Polyhedra
& phedra)
const
;
71
// Converts radius of the sides to radius of the corners:
72
// r_corners = r_sides/factor
73
};
74
75
//---------------------------------------------------------------------
76
// Class G4ParameterisationPolyhedraRho
77
//---------------------------------------------------------------------
78
79
class
G4ParameterisationPolyhedraRho
:
public
G4VParameterisationPolyhedra
80
{
81
public
:
// with description
82
83
G4ParameterisationPolyhedraRho
(
EAxis
axis,
G4int
nCopies,
84
G4double
offset
,
G4double
step
,
85
G4VSolid
* motherSolid,
86
DivisionType
divType );
87
~G4ParameterisationPolyhedraRho
();
88
89
void
CheckParametersValidity
();
90
91
G4double
GetMaxParameter
()
const
;
92
93
void
ComputeTransformation
(
const
G4int
copyNo,
94
G4VPhysicalVolume
* physVol )
const
;
95
void
ComputeDimensions
(
G4Polyhedra
& phedra,
const
G4int
copyNo,
96
const
G4VPhysicalVolume
* physVol )
const
;
97
98
private
:
// Dummy declarations to get rid of warnings ...
99
100
void
ComputeDimensions
(
G4Trd
&,
const
G4int
,
101
const
G4VPhysicalVolume
*)
const
{}
102
void
ComputeDimensions
(
G4Trap
&,
const
G4int
,
103
const
G4VPhysicalVolume
*)
const
{}
104
void
ComputeDimensions
(
G4Box
&,
const
G4int
,
105
const
G4VPhysicalVolume
*)
const
{}
106
void
ComputeDimensions
(
G4Sphere
&,
const
G4int
,
107
const
G4VPhysicalVolume
*)
const
{}
108
void
ComputeDimensions
(
G4Orb
&,
const
G4int
,
109
const
G4VPhysicalVolume
*)
const
{}
110
void
ComputeDimensions
(
G4Ellipsoid
&,
const
G4int
,
111
const
G4VPhysicalVolume
*)
const
{}
112
void
ComputeDimensions
(
G4Torus
&,
const
G4int
,
113
const
G4VPhysicalVolume
*)
const
{}
114
void
ComputeDimensions
(
G4Para
&,
const
G4int
,
115
const
G4VPhysicalVolume
*)
const
{}
116
void
ComputeDimensions
(
G4Hype
&,
const
G4int
,
117
const
G4VPhysicalVolume
*)
const
{}
118
void
ComputeDimensions
(
G4Tubs
&,
const
G4int
,
119
const
G4VPhysicalVolume
*)
const
{}
120
void
ComputeDimensions
(
G4Cons
&,
const
G4int
,
121
const
G4VPhysicalVolume
*)
const
{}
122
void
ComputeDimensions
(
G4Polycone
&,
const
G4int
,
123
const
G4VPhysicalVolume
*)
const
{}
124
};
125
126
//---------------------------------------------------------------------
127
// Class G4ParameterisationPolyhedraPhi
128
//---------------------------------------------------------------------
129
130
class
G4ParameterisationPolyhedraPhi
:
public
G4VParameterisationPolyhedra
131
{
132
public
:
// with description
133
134
G4ParameterisationPolyhedraPhi
(
EAxis
axis,
G4int
nCopies,
135
G4double
offset
,
G4double
step
,
136
G4VSolid
* motherSolid,
137
DivisionType
divType );
138
~G4ParameterisationPolyhedraPhi
();
139
140
void
CheckParametersValidity
();
141
142
G4double
GetMaxParameter
()
const
;
143
144
void
ComputeTransformation
(
const
G4int
copyNo,
145
G4VPhysicalVolume
* physVol )
const
;
146
void
ComputeDimensions
(
G4Polyhedra
& phedra,
const
G4int
copyNo,
147
const
G4VPhysicalVolume
* physVol )
const
;
148
149
private
:
// Dummy declarations to get rid of warnings ...
150
151
void
ComputeDimensions
(
G4Trd
&,
const
G4int
,
152
const
G4VPhysicalVolume
*)
const
{}
153
void
ComputeDimensions
(
G4Trap
&,
const
G4int
,
154
const
G4VPhysicalVolume
*)
const
{}
155
void
ComputeDimensions
(
G4Box
&,
const
G4int
,
156
const
G4VPhysicalVolume
*)
const
{}
157
void
ComputeDimensions
(
G4Sphere
&,
const
G4int
,
158
const
G4VPhysicalVolume
*)
const
{}
159
void
ComputeDimensions
(
G4Orb
&,
const
G4int
,
160
const
G4VPhysicalVolume
*)
const
{}
161
void
ComputeDimensions
(
G4Ellipsoid
&,
const
G4int
,
162
const
G4VPhysicalVolume
*)
const
{}
163
void
ComputeDimensions
(
G4Torus
&,
const
G4int
,
164
const
G4VPhysicalVolume
*)
const
{}
165
void
ComputeDimensions
(
G4Para
&,
const
G4int
,
166
const
G4VPhysicalVolume
*)
const
{}
167
void
ComputeDimensions
(
G4Hype
&,
const
G4int
,
168
const
G4VPhysicalVolume
*)
const
{}
169
void
ComputeDimensions
(
G4Tubs
&,
const
G4int
,
170
const
G4VPhysicalVolume
*)
const
{}
171
void
ComputeDimensions
(
G4Cons
&,
const
G4int
,
172
const
G4VPhysicalVolume
*)
const
{}
173
void
ComputeDimensions
(
G4Polycone
&,
const
G4int
,
174
const
G4VPhysicalVolume
*)
const
{}
175
};
176
177
//---------------------------------------------------------------------
178
// Class G4ParameterisationPolyhedraZ
179
//---------------------------------------------------------------------
180
181
class
G4ParameterisationPolyhedraZ
:
public
G4VParameterisationPolyhedra
182
{
183
public
:
// with description
184
185
G4ParameterisationPolyhedraZ
(
EAxis
axis,
G4int
nCopies,
186
G4double
offset
,
G4double
step
,
187
G4VSolid
* motherSolid,
188
DivisionType
divType );
189
~G4ParameterisationPolyhedraZ
();
190
191
void
CheckParametersValidity
();
192
193
G4double
GetMaxParameter
()
const
;
194
195
void
ComputeTransformation
(
const
G4int
copyNo,
196
G4VPhysicalVolume
* physVol )
const
;
197
void
ComputeDimensions
(
G4Polyhedra
& phedra,
const
G4int
copyNo,
198
const
G4VPhysicalVolume
* physVol )
const
;
199
200
private
:
201
202
G4double
GetR
(
G4double
z
,
G4double
z1
,
G4double
r1
,
203
G4double
z2
,
G4double
r2
)
const
;
204
G4double
GetRmin
(
G4double
z,
G4int
nsegment)
const
;
205
G4double
GetRmax
(
G4double
z,
G4int
nsegment)
const
;
206
207
// Dummy declarations to get rid of warnings ...
208
void
ComputeDimensions
(
G4Trd
&,
const
G4int
,
209
const
G4VPhysicalVolume
*)
const
{}
210
void
ComputeDimensions
(
G4Trap
&,
const
G4int
,
211
const
G4VPhysicalVolume
*)
const
{}
212
void
ComputeDimensions
(
G4Box
&,
const
G4int
,
213
const
G4VPhysicalVolume
*)
const
{}
214
void
ComputeDimensions
(
G4Sphere
&,
const
G4int
,
215
const
G4VPhysicalVolume
*)
const
{}
216
void
ComputeDimensions
(
G4Orb
&,
const
G4int
,
217
const
G4VPhysicalVolume
*)
const
{}
218
void
ComputeDimensions
(
G4Ellipsoid
&,
const
G4int
,
219
const
G4VPhysicalVolume
*)
const
{}
220
void
ComputeDimensions
(
G4Torus
&,
const
G4int
,
221
const
G4VPhysicalVolume
*)
const
{}
222
void
ComputeDimensions
(
G4Para
&,
const
G4int
,
223
const
G4VPhysicalVolume
*)
const
{}
224
void
ComputeDimensions
(
G4Hype
&,
const
G4int
,
225
const
G4VPhysicalVolume
*)
const
{}
226
void
ComputeDimensions
(
G4Tubs
&,
const
G4int
,
227
const
G4VPhysicalVolume
*)
const
{}
228
void
ComputeDimensions
(
G4Cons
&,
const
G4int
,
229
const
G4VPhysicalVolume
*)
const
{}
230
void
ComputeDimensions
(
G4Polycone
&,
const
G4int
,
231
const
G4VPhysicalVolume
*)
const
{}
232
private
:
233
234
G4int
fNSegment
= 0;
235
G4PolyhedraHistorical
*
fOrigParamMother
=
nullptr
;
236
};
237
238
#endif
geant4
tree
geant4-10.6-release
source
geometry
divisions
include
G4ParameterisationPolyhedra.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:16
using
1.8.2 with
ECCE GitHub integration