Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/HGCal_testbeam/include/HGCalTBMaterials.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 #ifndef HGCALTBMATERIALS_HH
 27 #define HGCALTBMATERIALS_HH
 28 
 29 #include "G4Types.hh"
 30 #include "G4String.hh"
 31 #include "CLHEP/Units/SystemOfUnits.h"
 32 
 33 #include <map>
 34 
 35 class G4Box;
 36 class G4LogicalVolume;
 37 class G4Material;
 38 class G4SubtractionSolid;
 39 
 40 /// Construction of a hexagon solid
 41 /// @param[in] name Name of the solid
 42 /// @param[in] cellThickness Thickness of the hexagon
 43 /// @param[in] cellSideLength Length of a side of the haxagon
 44 /// @return Solid
 45 G4SubtractionSolid *HexagonSolid(G4String name, G4double cellThickness,
 46                                  G4double cellSideLength);
 47 
 48 /// Construction of a logical volume
 49 /// @param[in] name Name of the solid
 50 /// @param[in] cellThickness Thickness of the hexagon
 51 /// @param[in] cellSideLength Length of a side of the haxagon
 52 /// @param[in] material Material
 53 /// @return Logical volume
 54 G4LogicalVolume *HexagonLogical(G4String name, G4double cellThickness,
 55                                 G4double cellSideLength, G4Material *material);
 56 
 57 /**
 58  * @brief HGCal material and elements definitions
 59  *
 60  * Defines materials used for HGCal test-beam.
 61  * Creates logical volumes for every element that may be constructed and placed
 62  * in the test beam.
 63  *
 64  */
 65 
 66 class HGCalTBMaterials {
 67 public:
 68   /// Create HGCal materials
 69   HGCalTBMaterials();
 70   /// Set visualisation attributes
 71   void SetEventDisplayColorScheme();
 72   /// Get length of the beam line (world)
 73   inline G4double GetBeamLineLength() const { return fBeamLineLength; }
 74   /// Get transverse size of the beam line (world)
 75   inline G4double GetBeamLineXY() const { return fBeamLineXY; }
 76   /// Get pointer to the air material
 77   G4Material *GetAir() { return fMatAIR; }
 78   /// Place logical volume
 79   /// @param[in] aName Name of the logical volume
 80   /// @param[in,out] aZ0 Position in front of the logical volume, incremented by
 81   /// half the thickness for placement, and by another half thickness to return
 82   /// the position just behind the placed volume
 83   /// @param[in] aLogicMother Pointer to mother volume for placement
 84   void PlaceItemInLogicalVolume(std::string aName, G4double &aZ0,
 85                                 G4LogicalVolume *aLogicMother);
 86   /// Get logical volume of silicon pixel (cell)
 87   G4LogicalVolume *GetSiPixelLogical() { return this->fSiPixelLogical; }
 88   /// Get logical volume of SiPM
 89   G4LogicalVolume *GetAHCALSiPMlogical() { return this->fAHCALSiPMlogical; }
 90   /// Get any logical volume by name
 91   inline const G4LogicalVolume *GetLogicalVolume(G4String aName) {
 92     return fLogicalVolumeMap[aName];
 93   };
 94   /// Get thickness of logical volume by name
 95   inline G4double GetThickness(std::string aName) {
 96     return fThicknessMap[aName];
 97   };
 98 
 99 private:
100   /// Define materisals used in HGCal test-beam
101   void DefineMaterials();
102   /// Define silicon wafer logical volume from silicon cells/pixels
103   void DefineSiWaferAndCells();
104   /// Define logical volumes for HGCal baseplates (CuW, Cu, PCB, Kapton layers)
105   void DefineHGCalBaseplates();
106   /// Define logical volumes for HGCal cases (Al, Steel)
107   void DefineHGCalCases();
108   /// Define logical volumes for HGCal electromagnetic part absorbers (Pb, Cu,
109   /// W)
110   void DefineHGCalEEAbsorbers();
111   /// Define logical volumes for HGCal hadronic part absorbers (Cu, Fe)
112   void DefineHGCalFHAbsorbers();
113   /// Define logical volumes for AHCAL SiPM
114   void DefineAHCALSiPM();
115   /// Define logical volumes for AHCAL absorbers
116   void DefineAHCALAbsorbers();
117   /// Define logical volumes for beamline elements (MCP, scintillators, DWC)
118   void DefineBeamLineElements();
119   /// Length of the beam line
120   G4double fBeamLineLength = 90 * CLHEP::m;
121   /// Transverse dimension of the beam line
122   G4double fBeamLineXY = 4 * CLHEP::m;
123   /// Rotation angle of silicon hexagon
124   G4double fAlpha;
125   /// Side length of silicon cell hexagon
126   G4double fSiPixelSideLength;
127   /// Thickness of silicon wafer hexagon
128   G4double fSiWaferThickness;
129   /// Side length of silicon wafer haxagon
130   G4double fSiWaferSideLength;
131   /// Transverse size of AHCAL SiPM
132   G4double fAHCALSiPMxy;
133   /// Box representing AHCAL SiPM
134   G4Box *fAHCALSiPMsolid;
135   /// Map of volume name to its thickness
136   std::map<G4String, G4double> fThicknessMap;
137   /// Map of volume name to its logical volume
138   std::map<G4String, G4LogicalVolume *> fLogicalVolumeMap;
139   /// Map of volume name to counter of placed copies
140   std::map<G4String, int> fCopyCounterMap;
141   /// Materials
142   G4Material *fMatVacuum;
143   G4Material *fMatAIR;
144   G4Material *fMatAr;
145   G4Material *fMatAl;
146   G4Material *fMatFe;
147   G4Material *fMatGlass;
148   G4Material *fMatSteel;
149   G4Material *fMatPb;
150   G4Material *fMatCu;
151   G4Material *fMatW;
152   G4Material *fMatSi;
153   G4Material *fMatKAPTON;
154   G4Material *fMatAu;
155   G4Material *fMatPCB;
156   G4Material *fMatQuartz;
157   G4Material *fMatPolystyrene;
158   G4Material *fMatCuW;
159   G4Material *fMatC;
160   G4Material *fMatH;
161   G4Material *fMatO;
162   G4Material *fMatMn;
163   G4Material *fMatCr;
164   G4Material *fMatNi;
165   G4Material *fMatPolyethylene;
166   G4Material *fMatFreon;
167   G4Material *fMatScintillator;
168   G4Material *fMatArCO2;
169   G4Material *fMatCl;
170   G4Material *fMatF;
171 
172   /// Logical volumes
173   G4LogicalVolume *fSiPixelLogical;
174   G4LogicalVolume *fSiWaferLogical;
175   G4LogicalVolume *fCuWbaseplateLogical;
176   G4LogicalVolume *fCuWbaseplate550umLogical;
177   G4LogicalVolume *fCuWbaseplate610umLogical;
178   G4LogicalVolume *fCuWbaseplate710umLogical;
179   G4LogicalVolume *fCuBaseplateLogical;
180   G4LogicalVolume *fCuBaseplate25umLogical;
181   G4LogicalVolume *fCuBaseplate175umLogical;
182   G4LogicalVolume *fPCBbaseplateLogical;
183   G4LogicalVolume *fPCBbaseplateThinLogical;
184   G4LogicalVolume *fKaptonLayerLogical;
185   G4LogicalVolume *fAlCaseLogical;
186   G4LogicalVolume *fAlCaseThickLogical;
187   G4LogicalVolume *fAlChipLogical;
188   G4LogicalVolume *fSteelCaseLogical;
189   G4LogicalVolume *fSteelCaseThickLogical;
190   G4LogicalVolume *fPbAbsorberEElogical;
191   G4LogicalVolume *fFeAbsorberEElogical;
192   G4LogicalVolume *fCuAbsorberEElogical;
193   G4LogicalVolume *fWabsorberEElogical;
194   G4LogicalVolume *fW2mmAbsorberEEDESY2018Logical;
195   G4LogicalVolume *fW4mmAbsorberEEDESY2018Logical;
196   G4LogicalVolume *fCuAbsorberFHlogical;
197   G4LogicalVolume *fFeAbsorberFHlogical;
198   G4LogicalVolume *fAHCALSiPMlogical;
199   G4LogicalVolume *fAHCALSiPM2x2HUBlogical;
200   G4LogicalVolume *fAlAbsorberAHCALlogical;
201   G4LogicalVolume *fPCBAHCALlogical;
202   G4LogicalVolume *fFeAbsorberAHCALlogical;
203   G4LogicalVolume *fScintillatorLogical;
204   G4LogicalVolume *fScintillatorThinLogical;
205   G4LogicalVolume *fMCPlogical;
206   G4LogicalVolume *fDWClogical;
207   G4LogicalVolume *fDWCgasLogical;
208   G4LogicalVolume *fCK3logical;
209 };
210 #endif /* HGCALTBMATERIALS_HH */
211