39 {
40
43 << " side muon wall: "
45
46
47
48
49 const double zScintillator =
m_zLength / 2.;
50 const double yScintillator =
m_yLength / 2.;
51 const double xScintillator =
m_xLength / 2.;
52 const double dzmuonwall = 750. * CLHEP::mm;
53 const double dymuonwall = 425. * CLHEP::mm;
54 const double dxmuonwall = xScintillator;
55
56 G4Box *wall = new G4Box("MuonWall", dxmuonwall, dymuonwall, dzmuonwall);
57
58
59 StoredMaterialManager* materialManager = nullptr;
60 if (StatusCode::SUCCESS !=
detStore()->
retrieve(materialManager, std::string(
"MATERIALS"))) {
62 return;
63 }
64
65 const GeoMaterial *geoAir = materialManager->
getMaterial(
"tile::Air");
66 const GeoMaterial *geoScintillator = materialManager->
getMaterial(
"tile::Scintillator");
67 Geo2G4MaterialFactory theMaterialFactory;
68 G4Material *airMaterial = theMaterialFactory.
Build(geoAir);
69 G4Material *scintillatorMaterial = theMaterialFactory.
Build(geoScintillator);
70
71 G4LogicalVolume *wallV = new G4LogicalVolume(wall, airMaterial, "MuonWall");
72
73
74 double zLayer, yLayer, xLayer = 0.;
75
77
78 const int nrOfLayers = 12;
79
80 for (int j = 0; j < nrOfLayers; j++) {
81
82
83 G4Box *scintillatorLayer = new G4Box("ScintillatorLayer", xScintillator, yScintillator, zScintillator);
84
85 G4LogicalVolume *scintillatorLayerV = new G4LogicalVolume(scintillatorLayer, scintillatorMaterial,
86 "MuScintillatorLayer");
87
88
89
90 if (j < 6) {
91 yLayer = yScintillator + 25. * CLHEP::mm;
92 zLayer = -450. * CLHEP::mm + (2 * j + 1) * zScintillator;
93 } else {
94 yLayer = -yScintillator + 25. * CLHEP::mm;
95 zLayer = -450. * CLHEP::mm + (2 * (j - 6) + 1) * zScintillator;
96 }
97
99 new G4PVPlacement(0,
100 G4ThreeVector(xLayer,yLayer,zLayer),
101 scintillatorLayerV,
102 "MuScintillatorLayer",
103 wallV,
104 false,
105 j+1);
106 }
107 }
108
110
111
112 const double yScintillator1 = yScintillator + 50. * CLHEP::mm;
113 const double zScintillator1 = zScintillator - 50. * CLHEP::mm;
114
115 const int nScintLayers = 3;
116
117 for (int j = 0; j < nScintLayers; j++) {
118
119 G4Box* scintillatorLayer = new G4Box("SideScintiLayer", xScintillator, yScintillator1, zScintillator1);
120
121 G4LogicalVolume* scintillatorLayerV = new G4LogicalVolume(scintillatorLayer, scintillatorMaterial,
122 "SideMuScintiLayer");
123
124 yLayer = -175. * CLHEP::mm;
125 zLayer = -750. * CLHEP::mm + (2 * j + 1) * zScintillator1;
126
128 new G4PVPlacement(0,
129 G4ThreeVector(xLayer,yLayer,zLayer),
130 scintillatorLayerV,
131 "SideMuScintiLayer",
132 wallV,
133 false,
134 j+1);
135 }
136 }
137
138
140}
__attribute__((always_inline)) inline uint16_t TileCalibDrawerBase
G4Material * Build(const GeoMaterial *)
virtual const GeoMaterial * getMaterial(const std::string &name)=0
retrieve(aClass, aKey=None)