9 #include "GeoModelKernel/GeoBox.h"
10 #include "GeoModelKernel/GeoLogVol.h"
11 #include "GeoModelKernel/GeoTransform.h"
12 #include "GeoModelKernel/GeoNameTag.h"
13 #include "GeoModelKernel/GeoIdentifierTag.h"
15 #include "GeoModelKernel/Units.h"
16 #include "GaudiKernel/SystemOfUnits.h"
17 #include "GaudiKernel/MsgStream.h"
24 double CuThick = 0.015;
25 double LamelThick15 = 1;
26 double LamelThick234 = 1.4;
32 double diamondThick = 0.5;
33 double diamondSize = 8;
36 const GeoMaterial* air = mat_mgr->
getMaterial(
"std::Air");
37 const GeoMaterial* copper = mat_mgr->
getMaterial(
"std::Copper");
38 const GeoMaterial* g10 = mat_mgr->
getMaterial(
"std::G10");
39 const GeoMaterial* diamond = mat_mgr->
getMaterial(
"pix::Diamond");
40 if(diamond ==
nullptr){
44 const GeoMaterial* stainless_steel = mat_mgr->
getMaterial(
"std::Iron");
45 const GeoMaterial* peek = mat_mgr->
getMaterial(
"pix::Peek");
47 if(
msg) (*msg) <<
"BLM _ PEEK _ MISSING." <<
endmsg;
49 GeoElement* hydrogen =
new GeoElement(
"Hydrogen",
"H", 1.0, 1.010);
50 GeoElement* oxygen =
new GeoElement(
"Oxygen",
"O", 8.0, 16.000);
51 GeoElement* carbon =
new GeoElement(
"Carbon",
"C", 6.0, 12.010);
52 peektmp->add(hydrogen, 0.042);
53 peektmp->add(oxygen, 0.167);
54 peektmp->add(carbon, 0.791);
60 const GeoBox* blmModBox =
new GeoBox(ModWidth/2, ModHeight/2, ModLength/2);
61 const GeoLogVol* blmModLog=
new GeoLogVol(
"blmModLog", blmModBox, air);
62 GeoPhysVol* blmModPhys =
new GeoPhysVol(blmModLog);
70 GeoNameTag*
tag =
new GeoNameTag(
"Holder");
72 blmModPhys->add(xform);
73 blmModPhys->add(holder);
76 GeoPhysVol* layer1a = wall.
BuildLayerI(CuThick, copper,
false);
77 GeoPhysVol* layer1b = wall.
BuildLayerI(LamelThick15, g10,
false);
78 GeoPhysVol* layer1c = wall.
BuildLayerI(CuThick, copper,
true);
85 tag =
new GeoNameTag(
"Layer1");
87 blmModPhys->add(yforma);
88 blmModPhys->add(layer1a);
90 blmModPhys->add(yformb);
91 blmModPhys->add(layer1b);
93 blmModPhys->add(yformc);
94 blmModPhys->add(layer1c);
97 GeoPhysVol* layer2a = wall.
BuildLayerII(CuThick, copper);
98 GeoPhysVol* layer2b = wall.
BuildLayerII(LamelThick234, g10);
99 GeoPhysVol* layer2c = wall.
BuildLayerII(CuThick, copper);
106 tag =
new GeoNameTag(
"Layer2");
107 blmModPhys->add(
tag);
108 blmModPhys->add(yforma);
109 blmModPhys->add(layer2a);
110 blmModPhys->add(
tag);
111 blmModPhys->add(yformb);
112 blmModPhys->add(layer2b);
113 blmModPhys->add(
tag);
114 blmModPhys->add(yformc);
115 blmModPhys->add(layer2c);
119 GeoPhysVol* layer3b = wall.
BuildLayerIII(LamelThick234, g10);
127 tag =
new GeoNameTag(
"Layer3");
128 blmModPhys->add(
tag);
129 blmModPhys->add(yforma);
130 blmModPhys->add(layer3a);
131 blmModPhys->add(
tag);
132 blmModPhys->add(yformb);
133 blmModPhys->add(layer3b);
134 blmModPhys->add(
tag);
135 blmModPhys->add(yformc);
136 blmModPhys->add(layer3c);
139 GeoPhysVol* layer4a = wall.
BuildLayerIV(CuThick, copper);
140 GeoPhysVol* layer4b = wall.
BuildLayerIV(LamelThick234, g10);
141 GeoPhysVol* layer4c = wall.
BuildLayerIV(CuThick, copper);
148 tag =
new GeoNameTag(
"Layer4");
149 blmModPhys->add(
tag);
150 blmModPhys->add(yforma);
151 blmModPhys->add(layer4a);
152 blmModPhys->add(
tag);
153 blmModPhys->add(yformb);
154 blmModPhys->add(layer4b);
155 blmModPhys->add(
tag);
156 blmModPhys->add(yformc);
157 blmModPhys->add(layer4c);
160 GeoPhysVol* layer5a = wall.
BuildLayerV(CuThick, copper);
161 GeoPhysVol* layer5b = wall.
BuildLayerV(LamelThick15, g10);
162 GeoPhysVol* layer5c = wall.
BuildLayerV(CuThick, copper);
169 tag =
new GeoNameTag(
"Layer5");
170 blmModPhys->add(
tag);
171 blmModPhys->add(yforma);
172 blmModPhys->add(layer5a);
173 blmModPhys->add(
tag);
174 blmModPhys->add(yformb);
175 blmModPhys->add(layer5b);
176 blmModPhys->add(
tag);
177 blmModPhys->add(yformc);
178 blmModPhys->add(layer5c);
181 GeoPhysVol* screw1 = wall.
BuildScrew(10, stainless_steel);
182 GeoPhysVol* screw2 = wall.
BuildScrew(10, stainless_steel);
183 GeoPhysVol* screw3 = wall.
BuildScrew(10, stainless_steel);
184 GeoPhysVol* screw4 = wall.
BuildScrew(10, stainless_steel);
185 GeoPhysVol* screw5 = wall.
BuildScrew(10, stainless_steel);
186 GeoPhysVol* screw6 = wall.
BuildScrew(10, stainless_steel);
207 tag =
new GeoNameTag(
"Screw");
208 blmModPhys->add(
tag);
209 blmModPhys->add(xform1);
210 blmModPhys->add(screw1);
211 blmModPhys->add(
tag);
212 blmModPhys->add(xform2);
213 blmModPhys->add(screw2);
214 blmModPhys->add(
tag);
215 blmModPhys->add(xform3);
216 blmModPhys->add(screw3);
217 blmModPhys->add(
tag);
218 blmModPhys->add(xform4);
219 blmModPhys->add(screw4);
220 blmModPhys->add(
tag);
221 blmModPhys->add(xform5);
222 blmModPhys->add(screw5);
223 blmModPhys->add(
tag);
224 blmModPhys->add(xform6);
225 blmModPhys->add(screw6);
226 blmModPhys->add(
tag);
227 blmModPhys->add(xform7);
228 blmModPhys->add(screw7);
229 blmModPhys->add(
tag);
230 blmModPhys->add(xform8);
231 blmModPhys->add(screw8);
237 tag =
new GeoNameTag(
"Clamp");
238 blmModPhys->add(
tag);
239 blmModPhys->add(yforma);
240 blmModPhys->add(clamp);
243 GeoPhysVol* DiamondVol = wall.
BuildBlock(8, diamondThick, diamondSize,
"blmDiamondLog", diamond);
246 tag =
new GeoNameTag(
"Diamond");
247 blmModPhys->add(
tag);
248 blmModPhys->add(
new GeoIdentifierTag(2009));
249 blmModPhys->add(xform);
250 blmModPhys->add(DiamondVol);