28{
30
31 const double dzCrate = (
m_zLength)/2.*CLHEP::mm ;
32 const double dyCrate = (
m_yLength)/2.*CLHEP::mm ;
33 const double dxCrate = (
m_xLength)/2.*CLHEP::mm ;
34
35 G4Box *emptybox = new G4Box("Crate",dxCrate,dyCrate,dzCrate);
36
37
38 StoredMaterialManager* materialManager = nullptr;
39 if (StatusCode::SUCCESS !=
detStore()->
retrieve(materialManager, std::string(
"MATERIALS")))
40 {
41
42 return;
43 }
44 const GeoMaterial *geoAir = materialManager->
getMaterial(
"tile::Air");
45 const GeoMaterial *geoAluminium = materialManager->
getMaterial(
"std::Aluinium");
46 const GeoMaterial *geoSiO2CondEpox = materialManager->
getMaterial(
"tile::SiO2CondEpox");
47 Geo2G4MaterialFactory theMaterialFactory;
48 G4Material *airMaterial=theMaterialFactory.
Build(geoAir);
49 G4Material *aluminiumMaterial=theMaterialFactory.
Build(geoAluminium);
50 G4Material *SiO2CondEpoxMaterial=theMaterialFactory.
Build(geoSiO2CondEpox);
51
52 G4Material *crateMaterial = new G4Material("LArCrateMaterial", 0.2876*CLHEP::g/CLHEP::cm3,3);
53 crateMaterial->AddMaterial(aluminiumMaterial, 0.7744);
54 crateMaterial->AddMaterial(SiO2CondEpoxMaterial, 0.2216);
55 crateMaterial->AddMaterial(airMaterial, 0.0040);
56
57 G4LogicalVolume *emptyboxV = new G4LogicalVolume(emptybox,crateMaterial,"LarCrate");
58
59 const double thicknessAlu = 5.*CLHEP::mm ;
60
61 for(int j=0; j<2;j++)
62 {
63 double xLayers=0.0, yLayers=0.0, zLayers=0.0;
64
65
66 G4Box *AluLayerTB = new G4Box("AluLayerTB",dxCrate,thicknessAlu/2.,dzCrate);
67 G4LogicalVolume *AluLayerVTB = new G4LogicalVolume(AluLayerTB,aluminiumMaterial,"AluLayerTB");
68 if(j==0) yLayers = dyCrate - thicknessAlu/2.;
69 if(j==1) yLayers = -dyCrate + thicknessAlu/2.;
71 new G4PVPlacement(0,
72 G4ThreeVector(0.,yLayers,0.),
73 AluLayerVTB,
74 "AluLayerTB" ,
75 emptyboxV,
76 false,
77 j+1);
78
79
80 G4Box *AluLayerRL = new G4Box("AluLayerRL",dxCrate,dyCrate-thicknessAlu,thicknessAlu/2.);
81 G4LogicalVolume *AluLayerVRL = new G4LogicalVolume(AluLayerRL,aluminiumMaterial,"AluLayerRL");
82 if(j==0) zLayers = dzCrate - thicknessAlu/2.;
83 if(j==1) zLayers = -dzCrate + thicknessAlu/2.;
85 new G4PVPlacement(0,
86 G4ThreeVector(0.,0.,zLayers),
87 AluLayerVRL,
88 "AluLayerRL" ,
89 emptyboxV,
90 false,
91 j+1);
92
93
94 G4Box *AluLayerFB = new G4Box("AluLayerFB",thicknessAlu/2.,dyCrate-thicknessAlu,dzCrate-thicknessAlu);
95 G4LogicalVolume *AluLayerVFB = new G4LogicalVolume(AluLayerFB,aluminiumMaterial,"AluLayerFB");
96 if(j==0) xLayers = dxCrate - thicknessAlu/2.;
97 if(j==1) xLayers = -dxCrate + thicknessAlu/2.;
99 new G4PVPlacement(0,
100 G4ThreeVector(xLayers,0.,0.),
101 AluLayerVFB,
102 "AluLayerFB" ,
103 emptyboxV,
104 false,
105 j+1);
106 }
109}
__attribute__((always_inline)) inline uint16_t TileCalibDrawerBase
G4Material * Build(const GeoMaterial *)
virtual const GeoMaterial * getMaterial(const std::string &name)=0
retrieve(aClass, aKey=None)