Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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//
27// $Id$
28//
29// classes G4ParameterisationPolyhedraRho,
30// G4ParameterisationPolyhedraPhi,
31// G4ParameterisationPolyhedraZ
32//
33// Class description:
34//
35// These classes represent the parameterised positioning equivalent to
36// dividing a G4Polyhedra along one of each axis Rho, Phi, Z.
37
38// History:
39// -------
40// 09.05.01 - P.Arce, Initial version
41// 08.04.04 - I.Hrivnacova, Implemented reflection
42//---------------------------------------------------------------------
43#ifndef G4ParameterisationPolyhedra_H
44#define G4ParameterisationPolyhedra_H 1
45
47#include "G4Polyhedra.hh"
48
50
51// Dummy declarations to get rid of warnings ...
52//
53class G4Trd;
54class G4Trap;
55class G4Cons;
56class G4Sphere;
57class G4Orb;
58class G4Torus;
59class G4Para;
60class G4Hype;
61class G4Tubs;
62class G4Polycone;
63
65{
66 public: // with description
67
69 G4double offset, G4double step,
70 G4VSolid* msolid, DivisionType divType );
71
73
74 private:
75
76 G4double ConvertRadiusFactor(const G4Polyhedra& phedra) const;
77 // Converts radius of the sides to radius of the corners:
78 // r_corners = r_sides/factor
79};
80
81//---------------------------------------------------------------------
82// Class G4ParameterisationPolyhedraRho
83//---------------------------------------------------------------------
84
86{
87 public: // with description
88
90 G4double offset, G4double step,
91 G4VSolid* motherSolid,
92 DivisionType divType );
94
96
98
99 void ComputeTransformation( const G4int copyNo,
100 G4VPhysicalVolume* physVol ) const;
101 void ComputeDimensions( G4Polyhedra& phedra, const G4int copyNo,
102 const G4VPhysicalVolume* physVol ) const;
103
104 private: // Dummy declarations to get rid of warnings ...
105
106 void ComputeDimensions (G4Trd&,const G4int,
107 const G4VPhysicalVolume*) const {}
108 void ComputeDimensions (G4Trap&,const G4int,
109 const G4VPhysicalVolume*) const {}
110 void ComputeDimensions (G4Box&,const G4int,
111 const G4VPhysicalVolume*) const {}
112 void ComputeDimensions (G4Sphere&,const G4int,
113 const G4VPhysicalVolume*) const {}
114 void ComputeDimensions (G4Orb&,const G4int,
115 const G4VPhysicalVolume*) const {}
116 void ComputeDimensions (G4Torus&,const G4int,
117 const G4VPhysicalVolume*) const {}
118 void ComputeDimensions (G4Para&,const G4int,
119 const G4VPhysicalVolume*) const {}
120 void ComputeDimensions (G4Hype&,const G4int,
121 const G4VPhysicalVolume*) const {}
122 void ComputeDimensions (G4Tubs&,const G4int,
123 const G4VPhysicalVolume*) const {}
124 void ComputeDimensions (G4Cons&,const G4int,
125 const G4VPhysicalVolume*) const {}
127 const G4VPhysicalVolume*) const {}
128};
129
130//---------------------------------------------------------------------
131// Class G4ParameterisationPolyhedraPhi
132//---------------------------------------------------------------------
133
135{
136 public: // with description
137
139 G4double offset, G4double step,
140 G4VSolid* motherSolid,
141 DivisionType divType );
143
145
147
148 void ComputeTransformation( const G4int copyNo,
149 G4VPhysicalVolume* physVol ) const;
150 void ComputeDimensions( G4Polyhedra& phedra, const G4int copyNo,
151 const G4VPhysicalVolume* physVol ) const;
152
153 private: // Dummy declarations to get rid of warnings ...
154
155 void ComputeDimensions (G4Trd&,const G4int,
156 const G4VPhysicalVolume*) const {}
157 void ComputeDimensions (G4Trap&,const G4int,
158 const G4VPhysicalVolume*) const {}
159 void ComputeDimensions (G4Box&,const G4int,
160 const G4VPhysicalVolume*) const {}
161 void ComputeDimensions (G4Sphere&,const G4int,
162 const G4VPhysicalVolume*) const {}
163 void ComputeDimensions (G4Orb&,const G4int,
164 const G4VPhysicalVolume*) const {}
165 void ComputeDimensions (G4Torus&,const G4int,
166 const G4VPhysicalVolume*) const {}
167 void ComputeDimensions (G4Para&,const G4int,
168 const G4VPhysicalVolume*) const {}
169 void ComputeDimensions (G4Hype&,const G4int,
170 const G4VPhysicalVolume*) const {}
171 void ComputeDimensions (G4Tubs&,const G4int,
172 const G4VPhysicalVolume*) const {}
173 void ComputeDimensions (G4Cons&,const G4int,
174 const G4VPhysicalVolume*) const {}
176 const G4VPhysicalVolume*) const {}
177};
178
179//---------------------------------------------------------------------
180// Class G4ParameterisationPolyhedraZ
181//---------------------------------------------------------------------
182
184{
185 public: // with description
186
188 G4double offset, G4double step,
189 G4VSolid* motherSolid,
190 DivisionType divType );
192
194
196
197 void ComputeTransformation( const G4int copyNo,
198 G4VPhysicalVolume* physVol ) const;
199 void ComputeDimensions( G4Polyhedra& phedra, const G4int copyNo,
200 const G4VPhysicalVolume* physVol ) const;
201
202 private:
203
204 G4double GetR(G4double z, G4double z1, G4double r1,
205 G4double z2, G4double r2) const;
206 G4double GetRmin(G4double z, G4int nsegment) const;
207 G4double GetRmax(G4double z, G4int nsegment) const;
208
209 // Dummy declarations to get rid of warnings ...
210 void ComputeDimensions (G4Trd&,const G4int,
211 const G4VPhysicalVolume*) const {}
212 void ComputeDimensions (G4Trap&,const G4int,
213 const G4VPhysicalVolume*) const {}
214 void ComputeDimensions (G4Box&,const G4int,
215 const G4VPhysicalVolume*) const {}
216 void ComputeDimensions (G4Sphere&,const G4int,
217 const G4VPhysicalVolume*) const {}
218 void ComputeDimensions (G4Orb&,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 {}
231 const G4VPhysicalVolume*) const {}
232 private:
233
234 G4int fNSegment;
235 G4PolyhedraHistorical* fOrigParamMother;
236};
237
238#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
Definition: G4Box.hh:55
Definition: G4Cons.hh:75
Definition: G4Hype.hh:67
Definition: G4Orb.hh:52
Definition: G4Para.hh:77
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:77
EAxis
Definition: geomdefs.hh:54