G4XTankConstruction.h
Go to the documentation of this file.
1 #ifndef _G4XTankSimulatorAG_G4XTankConstruction_h_
2 #define _G4XTankSimulatorAG_G4XTankConstruction_h_
3 
4 #include "G4XTankSimulator.h"
5 #include "G4XTankPMTAction.h"
6 #include "G4XTankPMT.h"
7 
8 #include <utl/Point.h>
9 #include <utl/TabulatedFunction.h>
10 
11 // Geant 4 header files
12 #include <G4VUserDetectorConstruction.hh>
13 #include <G4Box.hh>
14 #include <G4Colour.hh>
15 #include <G4Element.hh>
16 #include <G4ElementTable.hh>
17 #include <G4LogicalBorderSurface.hh>
18 #include <G4LogicalVolume.hh>
19 #include <G4Material.hh>
20 #include <G4MaterialTable.hh>
21 #include <G4PVPlacement.hh>
22 #include <G4SDManager.hh>
23 #include <G4Sphere.hh>
24 #include <G4ThreeVector.hh>
25 #include <G4Tubs.hh>
26 #include <G4VisAttributes.hh>
27 #include <G4GeometryManager.hh>
28 #include <G4PhysicalVolumeStore.hh>
29 #include <G4LogicalVolumeStore.hh>
30 #include <G4SolidStore.hh>
31 #include <G4RunManager.hh>
32 #include <CLHEP/Units/SystemOfUnits.h>
33 #include <G4SubtractionSolid.hh>
34 
36 #include <G4Ellipsoid.hh>
37 
38 namespace G4XTankSimulatorAG {
39 
40  class G4XTankConstruction : public G4VUserDetectorConstruction {
41 
42  public:
43 
44  G4XTankConstruction(double);
46 
47  G4VPhysicalVolume* Construct(void);
48  void GetDataForThisTank(void);
49 
50 
51  private:
52 
53  friend class G4XTankFastCerenkov;
54  void SetRequiredParameters(double);
55  void SetDetectorParameters(void);
56  void SetXMLParameters(void);
57  void CreateElements(void);
58  void CreateMaterials(void);
59  void CleanupFreestore(void);
60  G4VPhysicalVolume *CreateTank(void);
61 
62  void CreateAir(void);
63  void CreateWater(void);
64  void CreateVacuum(void);
65  void CreatePyrex(void);
66  void CreatePyrex1(void);
67  void CreateLucite(void);
68  void CreateInterface(void);
69  void CreateHDPE(void);
70  void CreateLiner(void);
71  void CreateAluminium(void);
72  void CreateGround(void);
73  void CreatePrimitives(void);
74  void CreateHall(void);
75  void AssembleTank(void);
76 
78 
79  G4Element *elN, *elO, *elAl, *elFe, *elH, *elSi, *elB, *elNa, *elC, *elMg, *elCl, *elK, *elCa, *elTi;
80  G4Material *Air, *Water, *Vacuum, *SiO2, *B2O2, *Na2O, *Pyrex, *Pyrex1, *CH3, *Al2O3, *Fe2O3, *TiO2, *CaO, *MgO, *K2O;
81  G4Material *CH2, *C, *CO2, *Lucite, *Interface, *HDPE, *Al, *Ground;
82  G4MaterialPropertiesTable *airMPT, *waterMPT, *pmtfaceMPT, *pmtfaceMPT1, *pmtdomeMPT;
83  G4MaterialPropertiesTable *interfaceMPT, *linerMPT;
84  G4MaterialPropertiesTable *linerOpticalMPT;
85  G4OpticalSurface *OpLinerSurface;
86  G4LogicalBorderSurface *topsurface, *bottomsurface, *sidesurface;
87 
92 
93  G4SubtractionSolid *pmt_solid, *pmt_solid1, *interface_solid, *dome_solid;
94 
95  G4LogicalVolume *expHall_log, *tank_log, *top_log, *bottom_log, *side_log;
96  G4LogicalVolume *inner_log, *inner1_log, *inner2_log, *inner3_log;
98  G4LogicalVolume *pmt1_log1, *pmt2_log1, *pmt3_log1;
99  G4LogicalVolume *interface3_log, *dome1_log, *dome2_log, *dome3_log;
100  G4LogicalVolume *ground_log;
101  G4LogicalVolume *solarPanel_log, *elecBox_log;
102 
103  G4VPhysicalVolume *expHall_phys, *tank_phys, *top_phys, *bottom_phys;
104  G4VPhysicalVolume *side_phys, *inner1_phys, *inner2_phys, *inner3_phys;
105  G4VPhysicalVolume *pmt1_phys, *pmt2_phys, *pmt3_phys, *interface1_phys;
106  G4VPhysicalVolume *pmt1_phys1, *pmt2_phys1, *pmt3_phys1;
108  G4VPhysicalVolume *dome2_phys, *dome3_phys, *ground_phys;
109  G4VPhysicalVolume *solarPanel_phys, *elecBox_phys;
110 
111  static double fFaceRadius;
112  static double fFaceRadiusz;
113  static double fFaceActiveRadius;
114 
115  static double fExpHall_r, fExpHall_z;
116 
117  static double fTankRadius;
118  static double fTankHalfHeight;
119  static double fTankThickness;
121 
122  static double fGroundThickness;
123 
125 
126  static double fPmtRmin, fPmtRmax;
129  static double fDomeRmin, fDomeRmax;
130  static double fMinPhi, fMaxPhi;
131  static double fMinTheta, fMaxTheta;
132  static double fPmtRzmin;
133  static double fPmtRzmax;
134  static double fInterfaceRzmin;
135  static double fInterfaceRzmax;
136  static double fDomeRzmin;
137  static double fDomeRzmax;
138 
139  static double alpha;
140  static double fHeightz;
141 
146  static double fSIGMA_ALPHA;
154 
155  // Solar panel setup
156  //------------------
157 
158  static double fSolarPanelLength;
159  static double fSolarPanelWidth;
160  static double fSolarPanelThickness;
161 
163  static double fSolarPanelTiltAngle;
164 
165 
166  // electronics box setup
167  // ---------------------
168 
169  static double fElecBoxLength;
170  static double fElecBoxWidth;
171  static double fElecBoxThickness;
172 
173  static double fElecBoxX, fElecBoxY, fElecBoxZ;
174  static double fElecBoxTiltAngle;
175 
176 
177  // PMT setup
178  //----------
179  /*
180  The "PMT setup" consists of the dome,
181  a thin interface layer, and the face.
182  The pmt domes are hemispherical
183  shells with the same surface area as the
184  the actual domes.
185  The pmt "faces" are hemispherical domes
186  that have the same active area as the
187  photocathodes.
188  The origin of the following
189  coordinates is the center of the
190  tank -> (0.0, 0.0, 60.0) cm
191  Why? Because in order to have the
192  optical properties of the dome, etc.
193  work correctly, the volumes must
194  be defined and placed in the tank volume
195  (as opposed to the experimental hall volume)
196  Since the dome, interface, and face are
197  defined as hemispherical shells placed in
198  one another, they have they same
199  x-y-z coordinates.
200  */
201 
202  // PMT Optical properties
203 
204  /*
205  Tyvek Refractive Index on liner surface vs. momentum
206  (NOTE: refractive index is set to zero for the
207  following reason. The only surfaces that work
208  with the unified model are ground and
209  groundbackpainted (others are limited to either
210  purely specular or Lambertian reflection.) Both
211  ground and groundbackpainted necessarily calculate
212  transmissin coefficients based on index of refraction
213  of the next material. For groundbackpainted, you
214  are allowd to define a 'thin' layer of dielectric
215  between the ground surface and the painted one.
216  If this is defined to be zero, then all the photons
217  undergo total internal reflection from the ground
218  surface and the unfied model is used. Note that
219  this is a kludge, and the author of this code
220  needs to be contacted to discuss providing some
221  additional flexibility in the optical model.
222  */
223  };
224 
225 }
226 #endif
Point object.
Definition: Point.h:32
static utl::TabulatedFunction fLinerBACKSCATTERCONSTANT
static utl::TabulatedFunction fLinerABSORPTION
Class to hold collection (x,y) points and provide interpolation between them.
static utl::TabulatedFunction fInterfaceABSORPTION
G4MaterialPropertiesTable * pmtdomeMPT
static utl::TabulatedFunction fInterfaceRINDEX
G4MaterialPropertiesTable * interfaceMPT
static utl::TabulatedFunction fLinerTYVEK_RINDEX
static utl::TabulatedFunction fPmtfaceRINDEX
static utl::TabulatedFunction fPmtdomeABSORPTION
static utl::TabulatedFunction fWaterRINDEX
G4MaterialPropertiesTable * pmtfaceMPT1
static utl::TabulatedFunction fPmtdomeRINDEX
static utl::TabulatedFunction fLinerREFLECTIVITY
static utl::TabulatedFunction fLinerSPECULARSPIKECONSTANT
G4MaterialPropertiesTable * linerOpticalMPT
static utl::TabulatedFunction fWaterABSORPTION
G4MaterialPropertiesTable * pmtfaceMPT
static utl::TabulatedFunction fLinerSPECULARLOBECONSTANT
static utl::TabulatedFunction fPmtfaceABSORPTION

, generated on Tue Sep 26 2023.