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