Geant4  10.01.p03
GammaRayTelDetectorConstruction.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: GammaRayTelDetectorConstruction.hh 82268 2014-06-13 13:47:30Z gcosmo $
28 // ------------------------------------------------------------
29 // GEANT 4 class header file
30 // CERN Geneva Switzerland
31 //
32 //
33 // ------------ GammaRayTelDetectorConstruction ------
34 // by F.Longo, R.Giannitrapani & G.Santin (13 nov 2000)
35 //
36 // ************************************************************
37 
38 #ifndef GammaRayTelDetectorConstruction_h
39 #define GammaRayTelDetectorConstruction_h 1
40 
42 #include "G4Cache.hh"
43 #include "globals.hh"
44 
45 class G4Box;
46 class G4LogicalVolume;
47 class G4VPhysicalVolume;
48 class G4Material;
49 class G4UniformMagField;
50 class G4Region;
56 
57 //class GammaRayTelTrackerROGeometry;
58 
59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
60 
62 {
63 public:
64 
67 
68 public:
69 
70  void SetNbOfTKRLayers (G4int); // TKR number of layers, material, detector
72  void SetNbOfTKRTiles (G4int);
75 
78 
79  void SetConverterMaterial (G4String); // TKR Converter material & thickness
81 
82  void SetNbOfCALLayers (G4int); // CAL material, lenght, thickness
83  void SetNbOfCALBars (G4int);
85 
86  void SetACDThickness (G4double); //ACD Thickness
87 
88  void SetMagField(G4double); // Magnetic Field
89 
90 
92  void UpdateGeometry();
93  void ConstructSDandField();
94 
95 public:
96 
98 
99 
100  G4double GetWorldSizeZ() const {return WorldSizeZ;};
102 
105 
106  G4double GetTKRSizeZ() const {return TKRSizeZ;};
107  G4double GetTKRSizeXY() const {return TKRSizeXY;};
108 
109  G4double GetCALSizeZ() const {return CALSizeZ;};
111 
116  G4int GetNbOfTKRTiles() const {return NbOfTKRTiles;};
120 
125 
128 
131  G4int GetNbOfCALBars() const {return NbOfCALBars;};
132 
136 
137 private:
138 
141 
145 
148 
152 
155 
161 
165 
169 
173 
177 
178 
181 
187 
190 
196 
199 
206 
207  G4Box* solidWorld; // World
210 
211  G4Box* solidPayload; // Payload
214 
215  G4Box* solidTKR; // Tracker
218 
219  G4Box* solidCAL; // Calorimeter
222 
223  G4Box* solidACT; // Top Anticoincidence
226 
227  G4Box* solidACL1; // Lateral Anticoincidence
230 
234 
235  G4Box* solidTKRDetectorX; // Tracker PLANE X
238 
239  G4Box* solidTKRDetectorY; // Tracker PLANE Y
242 
243  G4Box* solidCALLayerX; // Calorimeter PLANE X
246 
247  G4Box* solidCALLayerY; // Calorimeter PLANE Y
250 
251  G4Box* solidCALDetectorX; // Calorimeter DETECTOR X
254 
255  G4Box* solidCALDetectorY; // Calorimeter DETECTOR Y
258 
259  G4Box* solidPlane; // Support Plane
262 
263  G4Box* solidConverter; // Converter
266 
269 
270  // magnetic field messenger
272 
273  GammaRayTelDetectorMessenger* detectorMessenger; //pointer to the Messenger
274 
275 
276  G4Cache<GammaRayTelTrackerSD*> trackerSD; //pointer to the sensitive detector
277  G4Cache<GammaRayTelCalorimeterSD*> calorimeterSD; //pointer to the sensitive detector
278  G4Cache<GammaRayTelAnticoincidenceSD*> anticoincidenceSD; //pointer to the sensitive detector
279 
280  //G4Region* aTKRRegion; // TKR cut region
281  //G4Region* aCALRegion; // CAL cut region
282 
283 private:
284 
285  void DefineMaterials();
288 };
289 
290 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
291 
293 {
294  // Compute derived parameters of the payload
295 
300 
304 
305  SiliconGuardRing = TKRActiveTileXY - NbOfTKRStrips*TKRSiliconPitch;
307 
311 
314 
315  CALBarX = CALSizeXY;
318 
321 
325 
329 
330  PayloadSizeZ = 1.1*(ACL1SizeZ + ACTSizeZ);
332 
334 
335 }
336 
337 #endif
338 
339 
340 
341 
342 
343 
344 
345 
346 
static G4ThreadLocal G4GlobalMagFieldMessenger * fMagFieldMessenger
Definition: G4Box.hh:64
#define G4ThreadLocal
Definition: tls.hh:89
int G4int
Definition: G4Types.hh:78
G4Cache< GammaRayTelAnticoincidenceSD * > anticoincidenceSD
G4Cache< GammaRayTelCalorimeterSD * > calorimeterSD
double G4double
Definition: G4Types.hh:76
G4Cache< GammaRayTelTrackerSD * > trackerSD
GammaRayTelDetectorMessenger * detectorMessenger