ECCE @ EIC Software
 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 
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 
59 {
60  public: // with description
61 
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 
85  G4VSolid* motherSolid,
86  DivisionType divType );
88 
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 
101  const G4VPhysicalVolume*) const {}
103  const G4VPhysicalVolume*) const {}
105  const G4VPhysicalVolume*) const {}
107  const G4VPhysicalVolume*) const {}
109  const G4VPhysicalVolume*) const {}
111  const G4VPhysicalVolume*) const {}
113  const G4VPhysicalVolume*) const {}
115  const G4VPhysicalVolume*) const {}
117  const G4VPhysicalVolume*) const {}
119  const G4VPhysicalVolume*) const {}
121  const G4VPhysicalVolume*) const {}
123  const G4VPhysicalVolume*) const {}
124 };
125 
126 //---------------------------------------------------------------------
127 // Class G4ParameterisationPolyhedraPhi
128 //---------------------------------------------------------------------
129 
131 {
132  public: // with description
133 
136  G4VSolid* motherSolid,
137  DivisionType divType );
139 
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 
152  const G4VPhysicalVolume*) const {}
154  const G4VPhysicalVolume*) const {}
156  const G4VPhysicalVolume*) const {}
158  const G4VPhysicalVolume*) const {}
160  const G4VPhysicalVolume*) const {}
162  const G4VPhysicalVolume*) const {}
164  const G4VPhysicalVolume*) const {}
166  const G4VPhysicalVolume*) const {}
168  const G4VPhysicalVolume*) const {}
170  const G4VPhysicalVolume*) const {}
172  const G4VPhysicalVolume*) const {}
174  const G4VPhysicalVolume*) const {}
175 };
176 
177 //---------------------------------------------------------------------
178 // Class G4ParameterisationPolyhedraZ
179 //---------------------------------------------------------------------
180 
182 {
183  public: // with description
184 
187  G4VSolid* motherSolid,
188  DivisionType divType );
190 
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 
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 ...
209  const G4VPhysicalVolume*) const {}
211  const G4VPhysicalVolume*) const {}
213  const G4VPhysicalVolume*) const {}
215  const G4VPhysicalVolume*) const {}
217  const G4VPhysicalVolume*) const {}
219  const G4VPhysicalVolume*) const {}
221  const G4VPhysicalVolume*) const {}
223  const G4VPhysicalVolume*) const {}
225  const G4VPhysicalVolume*) const {}
227  const G4VPhysicalVolume*) const {}
229  const G4VPhysicalVolume*) const {}
231  const G4VPhysicalVolume*) const {}
232  private:
233 
236 };
237 
238 #endif