Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ParameterisationPolyhedra.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// 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
40#include "G4Polyhedra.hh"
41
43
44// Dummy declarations to get rid of warnings ...
45//
46class G4Trd;
47class G4Trap;
48class G4Cons;
49class G4Sphere;
50class G4Orb;
51class G4Ellipsoid;
52class G4Torus;
53class G4Para;
54class G4Hype;
55class G4Tubs;
56class G4Polycone;
57
59{
60 public: // with description
61
63 G4double offset, G4double step,
64 G4VSolid* msolid, DivisionType divType );
65
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
80{
81 public: // with description
82
84 G4double offset, G4double step,
85 G4VSolid* motherSolid,
86 DivisionType divType );
88
90
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 {}
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 {}
123 const G4VPhysicalVolume*) const {}
124};
125
126//---------------------------------------------------------------------
127// Class G4ParameterisationPolyhedraPhi
128//---------------------------------------------------------------------
129
131{
132 public: // with description
133
135 G4double offset, G4double step,
136 G4VSolid* motherSolid,
137 DivisionType divType );
139
141
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 {}
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 {}
174 const G4VPhysicalVolume*) const {}
175};
176
177//---------------------------------------------------------------------
178// Class G4ParameterisationPolyhedraZ
179//---------------------------------------------------------------------
180
182{
183 public: // with description
184
186 G4double offset, G4double step,
187 G4VSolid* motherSolid,
188 DivisionType divType );
190
192
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 {}
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 {}
231 const G4VPhysicalVolume*) const {}
232 private:
233
234 G4int fNSegment = 0;
235 G4PolyhedraHistorical* fOrigParamMother = nullptr;
236};
237
238#endif
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
Definition: G4Box.hh:56
Definition: G4Cons.hh:78
Definition: G4Hype.hh:69
Definition: G4Orb.hh:56
Definition: G4Para.hh:79
void ComputeDimensions(G4Polyhedra &phedra, const G4int copyNo, const G4VPhysicalVolume *physVol) const
void ComputeTransformation(const G4int copyNo, G4VPhysicalVolume *physVol) const
void ComputeDimensions(G4Polyhedra &phedra, const G4int copyNo, const G4VPhysicalVolume *physVol) const
void ComputeTransformation(const G4int copyNo, G4VPhysicalVolume *physVol) const
void ComputeTransformation(const G4int copyNo, G4VPhysicalVolume *physVol) const
void ComputeDimensions(G4Polyhedra &phedra, const G4int copyNo, const G4VPhysicalVolume *physVol) const
Definition: G4Trd.hh:63
Definition: G4Tubs.hh:75
EAxis
Definition: geomdefs.hh:54