BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ExtBesEmcConstruction.h
Go to the documentation of this file.
1#ifndef ExtBesEmcConstruction_h
2#define ExtBesEmcConstruction_h 1
3
4#include "ExtBesSubdetector.h"
5#include "globals.hh"
6
7// For Code construction------------
9#include "ExtBesEmcGeometry.h"
10#include "G4VPVParameterisation.hh"
11
12class G4Box;
13class G4Tubs;
14class G4Cons;
15class G4Polyhedra;
16class G4Trap;
17class G4UnionSolid;
18class G4LogicalVolume;
19class G4VPhysicalVolume;
20class G4Material;
21class G4UniformMagField;
23class BesEmcSD;
24class G4IrregBox;
25class G4SubtractionSolid;
26//--------------------------------
27
29public:
32
33 static ExtBesEmcConstruction* GetBesEmcConstruction() { return fBesEmcConstruction; };
34
35 void Construct( G4LogicalVolume* );
36
37 void ConstructSPFrame( G4LogicalVolume*, ExtBesEmcGeometry* );
38 void ConstructEndGeometry( G4LogicalVolume* );
39 G4int ComputeEndCopyNb( G4int );
40
41 inline void SetVerboseLevel( G4int val ) { verboseLevel = val; }
42
43 void SetCrystalMaterial( G4String );
44
45 void SetCasingMaterial( G4String );
46 void SetCasingThickness( G4ThreeVector );
47
48 void SetBSCRmin( G4double );
49 void SetBSCNbPhi( G4int );
50 void SetBSCNbTheta( G4int );
51 void SetStartIDTheta( G4int );
52 void SetBSCCrystalLength( G4double );
53 void SetBSCYFront0( G4double );
54 void SetBSCYFront( G4double );
55 void SetBSCPosition0( G4double );
56 void SetBSCPosition1( G4double );
57
58 void SetMagField( G4double );
59
60 void UpdateGeometry();
61
62 void PrintEMCParameters();
63
64 G4int GetVerboseLevel() { return verboseLevel; };
65 G4double GetMagField() { return fmagField; };
66
67 G4int GetStartIDTheta() { return startID; };
68
69 G4Material* GetCrystalMaterial() { return fCrystalMaterial; };
70 G4Material* GetCasingMaterial() { return fCasingMaterial; };
71 // G4ThreeVector GetCasingThickness() {return
72 // G4ThreeVector(fTyvekThickness,fAlThickness,fMylarThickness);};
73
74 const G4VPhysicalVolume* GetEMC() { return physiEMC; }
75 const G4VPhysicalVolume* GetBSCPhi() { return physiBSCPhi; };
76 const G4VPhysicalVolume* GetBSCTheta() { return physiBSCTheta; };
77 const G4VPhysicalVolume* GetBSCCrystal() { return physiBSCCrystal; };
78 const G4VPVParameterisation* GetCrystalParam() { return crystalParam; };
79
80private:
81 static ExtBesEmcConstruction* fBesEmcConstruction;
82
83private:
84 void DefineMaterials();
85 // G4LogicalVolume* logicalEmc;
86 // G4VPhysicalVolume* physicalEmc;
87
88 // For code construction-----------------------
89 G4int verboseLevel;
90 G4double fmagField;
91
92 G4Material* fCrystalMaterial;
93
94 G4int phiNbCrystals;
95 G4int thetaNbCrystals;
96 G4int startID;
97
98 G4Material* fCasingMaterial;
99
100 G4Material* defaultMaterial;
101
102 G4Tubs* solidBSC; // Barrel
103 G4Tubs* solidESC; // Endcap
104 G4UnionSolid* solidEMC;
105 G4LogicalVolume* logicEMC;
106 G4VPhysicalVolume* physiEMC;
107
108 G4Tubs* solidBSCPhiTub;
109 G4Cons* solidConsPhi;
110 G4SubtractionSolid* solidBSCPhi1;
111 G4SubtractionSolid* solidBSCPhi; // pointer to the solid Layer
112 G4LogicalVolume* logicBSCPhi; // pointer to the logical Layer
113 G4VPhysicalVolume* physiBSCPhi; // pointer to the physical Layer
114
115 G4Trap* solidBSCTheta; // pointer to the solid Absorber
116 G4LogicalVolume* logicBSCTheta; // pointer to the logical Absorber
117 G4VPhysicalVolume* physiBSCTheta; // pointer to the physical Absorber
118
119 G4Trap* solidBSCCrystal; // pointer to the solid Absorber
120 G4LogicalVolume* logicBSCCrystal; // pointer to the logical Absorber
121 G4VPhysicalVolume* physiBSCCrystal; // pointer to the physical Absorber
122
123 G4UniformMagField* magField; // pointer to the magnetic field
124
125 BesEmcDetectorMessenger* detectorMessenger; // pointer to the Messenger
126 BesEmcSD* besEMCSD; // pointer to the sensitive detector
127 ExtBesEmcGeometry* besEMCGeometry;
128 ExtBesEmcEndGeometry* emcEnd;
129 G4VPVParameterisation* crystalParam;
130
131 // Endcap geometry
132 G4Cons* solidEnd; // pointer to the endcap
133 G4LogicalVolume* logicEnd;
134 G4VPhysicalVolume* physiEnd;
135
136 G4Cons* solidEndPhi;
137 G4LogicalVolume* logicEndPhi;
138 G4VPhysicalVolume* physiEndPhi;
139
140 G4IrregBox* solidEndCasing;
141 G4LogicalVolume* logicEndCasing;
142 G4VPhysicalVolume* physiEndCasing;
143
144 G4IrregBox* solidEndCrystal;
145 G4LogicalVolume* logicEndCrystal;
146 G4VPhysicalVolume* physiEndCrystal;
147
148 // other substance on the rear face of crystal
149private:
150 G4Box* solidRear; // virtual volume
151 G4LogicalVolume* logicRear;
152 G4VPhysicalVolume* physiRear;
153
154 G4Box* solidCasingBox; // casing
155 G4Box* solidAirHole;
156 G4SubtractionSolid* solidRearCasing;
157 G4LogicalVolume* logicRearCasing;
158 G4VPhysicalVolume* physiRearCasing;
159
160 G4Box* solidOrgGlass; // organic glass
161 G4LogicalVolume* logicOrgGlass;
162 G4VPhysicalVolume* physiOrgGlass;
163
164 G4Box* solidPD; // photodiode
165 G4LogicalVolume* logicPD;
166 G4VPhysicalVolume* physiPD;
167
168 G4Box* solidAlBox; // Al plate
169 G4SubtractionSolid* solidAlPlate;
170 G4LogicalVolume* logicAlPlate;
171 G4VPhysicalVolume* physiAlPlate;
172
173 G4Box* solidPreAmpBox; // preamplifier box
174 G4LogicalVolume* logicPreAmpBox;
175 G4VPhysicalVolume* physiPreAmpBox;
176
177 G4Box* solidAirInPABox; // air in preamplifier box
178 G4LogicalVolume* logicAirInPABox;
179 G4VPhysicalVolume* physiAirInPABox;
180
181 G4Box* solidHangingPlate; // stainless steel for hanging the crysta
182 G4LogicalVolume* logicHangingPlate;
183 G4VPhysicalVolume* physiHangingPlate;
184
185 G4Cons* solidOCGirder; // opening-cut girder
186 G4LogicalVolume* logicOCGirder;
187 G4VPhysicalVolume* physiOCGirder;
188
189 G4Tubs* solidCable; // cable
190 G4LogicalVolume* logicCable;
191 G4VPhysicalVolume* physiCable;
192
193 G4Tubs* solidWaterPipe; // water pipe
194 G4LogicalVolume* logicWaterPipe;
195 G4VPhysicalVolume* physiWaterPipe;
196
197 // barrel support frame
198private:
199 G4Tubs* solidSupportBar; // support bar
200 G4LogicalVolume* logicSupportBar;
201 G4VPhysicalVolume* physiSupportBar;
202
203 G4Tubs* solidSupportBar1;
204 G4LogicalVolume* logicSupportBar1;
205 G4VPhysicalVolume* physiSupportBar1;
206
207 G4Tubs* solidEndRing; // end ring
208 G4LogicalVolume* logicEndRing;
209 G4VPhysicalVolume* physiEndRing;
210
211 G4Tubs* solidGear;
212 G4LogicalVolume* logicGear;
213 G4VPhysicalVolume* physiGear;
214
215 G4Tubs* solidTaperRing1; // taper ring
216 G4LogicalVolume* logicTaperRing1;
217 G4VPhysicalVolume* physiTaperRing1;
218
219 G4Cons* solidTaperRing2;
220 G4LogicalVolume* logicTaperRing2;
221 G4VPhysicalVolume* physiTaperRing2;
222
223 G4Cons* solidTaperRing3;
224 G4LogicalVolume* logicTaperRing3;
225 G4VPhysicalVolume* physiTaperRing3;
226
227private:
228 G4Material* rearCasingMaterial;
229 G4Material* organicGlass;
230 G4Material* stainlessSteel;
231 G4Material* cable;
232 G4Material* waterPipe;
233
234 //----------------------------------------------------------------
235};
236
237#endif
static ExtBesEmcConstruction * GetBesEmcConstruction()
void ConstructEndGeometry(G4LogicalVolume *)
const G4VPVParameterisation * GetCrystalParam()
const G4VPhysicalVolume * GetEMC()
void SetCasingThickness(G4ThreeVector)
const G4VPhysicalVolume * GetBSCPhi()
const G4VPhysicalVolume * GetBSCTheta()
void Construct(G4LogicalVolume *)
const G4VPhysicalVolume * GetBSCCrystal()
void ConstructSPFrame(G4LogicalVolume *, ExtBesEmcGeometry *)