Geant4 Cross Reference |
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