13 #include "GeoModelKernel/GeoMaterial.h"
14 #include "GeoModelKernel/GeoElement.h"
15 #include "GeoModelKernel/GeoBox.h"
16 #include "GeoModelKernel/GeoNameTag.h"
17 #include "GeoModelKernel/GeoPhysVol.h"
18 #include "GeoModelKernel/GeoFullPhysVol.h"
19 #include "GeoModelKernel/GeoTransform.h"
20 #include "GeoModelKernel/GeoIdentifierTag.h"
21 #include "GeoModelKernel/Units.h"
23 #include "GaudiKernel/SystemOfUnits.h"
26 #include "GeoModelKernel/GeoMaterial.h"
29 #include "CLHEP/Geometry/Transform3D.h"
47 m_detectorManager(NULL),
52 LogStream << MSG::ERROR <<
"execute: Could not retrieve ZdcID object from the detector store" <<
endmsg;
60 m_zdcOn = {{
true,
true,
true,
true},
61 {
true,
true,
true,
true}};
62 m_zdcPos = {{-397.0, -27.0, 153.0, 303.0},
63 {-397.0, -27.0, 153.0, 303.0}};
71 m_zdcOn = {{
true,
true,
true,
true},
72 {
true,
true,
true,
true}};
73 m_zdcPos = {{-344, 52.15, 220.8, 375.8},
74 {-325.5, 20.15, 188.8, 343.8}};
90 LogStream << MSG::ERROR <<
"execute: Could not retrieve StoredMaterialManager object from the detector store" <<
endmsg;
97 const GeoMaterial *Air = theMaterialManager->
getMaterial(
"std::Air");
99 GeoLogVol *Envelope_Logical =
new GeoLogVol(
"Envelope_Logical", Envelope_Box, Air);
102 for(
int side : {0, 1}){
103 int sideSign = (
side == 0) ? -1 : 1;
104 GeoFullPhysVol *Envelope_Physical =
new GeoFullPhysVol(Envelope_Logical);
134 sprintf(volName,
"Zdc::ZDC_Air_Envelope %c", (
side == 0) ?
'C' :
'A');
135 world->add(
new GeoNameTag(volName));
137 world->add(
new GeoAlignableTransform(GeoTrf::TranslateZ3D(sideSign*141.580 *
CLHEP::m)));
139 world->add(Envelope_Physical);
147 const GeoElement *Oxygen = materialManager->
getElement(
"Oxygen");
148 const GeoElement *Silicon = materialManager->
getElement(
"Silicon");
149 const GeoElement *Hydrogen = materialManager->
getElement(
"Hydrogen");
150 const GeoElement *Nitrogen = materialManager->
getElement(
"Nitrogen");
151 const GeoElement *Carbon = materialManager->
getElement(
"Carbon");
152 const GeoElement *Argon = materialManager->
getElement(
"Argon");
153 const GeoElement *Tung = materialManager->
getElement(
"Wolfram");
154 const GeoElement *Iron = materialManager->
getElement(
"Iron");
155 const GeoElement *Nickel = materialManager->
getElement(
"Nickel");
162 double photonEnergy[
nEntries] = {0};
163 double minEnergy = 1.90769 *
eV;
double maxEnergy = 4.08882 *
eV;
166 photonEnergy[
i] = minEnergy +
i*
step;
172 OpAir->add(Nitrogen, 0.755);
173 OpAir->add(Oxygen , 0.232);
174 OpAir->add(Argon , 0.013);
178 double RefractiveIndexAir[
nEntries];
180 RefractiveIndexAir[
i] = 1.000271800;
191 OpSilicaCore->add(Silicon, 0.467);
192 OpSilicaCore->add(Oxygen, 0.533);
196 double silica_RIND[] = {1.45656, 1.45694, 1.45737, 1.45781, 1.45825, 1.4587 , 1.45914, 1.45959, 1.46003, 1.46048,
197 1.46095, 1.46145, 1.46194, 1.46242, 1.46289, 1.4634 , 1.46394, 1.46448, 1.46502, 1.46556,
198 1.46608, 1.46666, 1.46725, 1.46784, 1.46843, 1.46902, 1.46961, 1.47024, 1.4709 , 1.47155,
199 1.4722 , 1.47288, 1.47356, 1.47425, 1.47494, 1.47566, 1.4764 , 1.47715, 1.4779 , 1.47864,
200 1.47935, 1.48014, 1.48093, 1.48172, 1.48254, 1.48339, 1.48424, 1.4851 , 1.48598, 1.48689};
206 silica_ABSL[
i] = 302.163 *
cm;
213 OpSilicaCore->lock();
219 OpSilicaClad->add(Silicon, 0.467);
220 OpSilicaClad->add(Oxygen, 0.533);
224 double silica_clad_RIND[] = {1.43985, 1.44023, 1.44067, 1.44112, 1.44156, 1.44201, 1.44246, 1.44291, 1.44336, 1.44381,
225 1.44429, 1.4448 , 1.44529, 1.44577, 1.44625, 1.44677, 1.44731, 1.44786, 1.44841, 1.44895,
226 1.44948, 1.45007, 1.45067, 1.45126, 1.45186, 1.45245, 1.45305, 1.45369, 1.45435, 1.45501,
227 1.45567, 1.45635, 1.45705, 1.45774, 1.45844, 1.45916, 1.45992, 1.46067, 1.46143, 1.46219,
228 1.4629 , 1.4637 , 1.46449, 1.46529, 1.46612, 1.46698, 1.46785, 1.46871, 1.4696 , 1.47052};
235 OpSilicaClad->lock();
241 OpKapton->add(Hydrogen, 0.026362);
242 OpKapton->add(Carbon , 0.691133);
243 OpKapton->add(Nitrogen, 0.073270);
244 OpKapton->add(Oxygen , 0.209235);
248 double kapton_RIND[] = {1.7095 , 1.7111 , 1.7143 , 1.7191, 1.7207 , 1.7255 , 1.7271 , 1.73157, 1.7351 , 1.7383 ,
249 1.7416 , 1.7464 , 1.74978, 1.7545, 1.7593 , 1.766 , 1.7692 , 1.7758 , 1.78179, 1.79009,
250 1.794 , 1.80245, 1.8074 , 1.8157, 1.82184, 1.82659, 1.8344 , 1.84222, 1.8514 , 1.8584 ,
251 1.86392, 1.8723 , 1.88251, 1.8959, 1.90567, 1.92604, 1.93911, 1.95036, 1.96867, 1.97804,
252 1.9905 , 1.99755, 2.00821, 2.0146, 2.03435, 2.05705, 2.08078, 2.10021, 2.12912, 2.14333};
256 double kapton_REFL[] = {0.502195 , 0.473894 , 0.446164 , 0.413816 , 0.375095 , 0.336845 , 0.293879 , 0.239299 , 0.200573 , 0.141596 ,
257 0.0949924 , 0.0590249 , 0.0353952 , 0.0206475 , 0.01305 , 0.00915075, 0.00722501, 0.00551299, 0.00552271, 0.00553177,
258 0.00554062, 0.00554942, 0.00555642, 0.00556579, 0.0083157, 0.011944 , 0.0172255 , 0.0225071 , 0.0277887 , 0.0330702 ,
259 0.0383518 , 0.0436334 , 0.0489149 , 0.0541965 , 0.0594781, 0.0647597 , 0.0700412 , 0.0753228 , 0.0806044 , 0.0858859 ,
260 0.0911675 , 0.0964491 , 0.101731 , 0.107012 , 0.112294 , 0.117575 , 0.122857 , 0.128139 , 0.13342 , 0.138702 };
264 double kapton_ABSL[] = {0.00867389 *
cm, 0.00842316 *
cm, 0.00818715 *
cm, 0.00798542 *
cm, 0.00774517 *
cm, 0.00751684 *
cm, 0.00729959 *
cm, 0.00709258 *
cm, 0.00685686 *
cm, 0.0066337 *
cm,
265 0.00642212 *
cm, 0.00616231 *
cm, 0.00587855 *
cm, 0.00561968 *
cm, 0.00541849 *
cm, 0.0052337 *
cm, 0.00504545 *
cm, 0.00487671 *
cm, 0.00474623 *
cm, 0.00461459 *
cm,
266 0.00449314 *
cm, 0.00437628 *
cm, 0.0042637 *
cm, 0.00413695 *
cm, 0.00401798 *
cm, 0.00382827 *
cm, 0.003625 *
cm, 0.00335813 *
cm, 0.00303474 *
cm, 0.00264672 *
cm,
267 0.00226016 *
cm, 0.00185863 *
cm, 0.00146109 *
cm, 0.00116967 *
cm, 0.000901973 *
cm, 0.000721492 *
cm, 0.000559526 *
cm, 0.000463349 *
cm, 0.00034795 *
cm, 0.000317447 *
cm,
268 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm, 0.000317447 *
cm};
281 Tungsten->add(Tung , 0.948);
282 Tungsten->add(Nickel, 0.037);
283 Tungsten->add(Iron , 0.015);
289 Steel->add(Iron , 0.98);
290 Steel->add(Carbon, 0.02);