8 #include "GaudiKernel/MsgStream.h"
9 #include "GaudiKernel/SystemOfUnits.h"
10 #include "GeoModelKernel/GeoDefinitions.h"
11 #include "GeoModelKernel/GeoLogVol.h"
12 #include "GeoModelKernel/GeoMaterial.h"
13 #include "GeoModelKernel/GeoNameTag.h"
14 #include "GeoModelKernel/GeoPhysVol.h"
15 #include "GeoModelKernel/GeoSerialDenominator.h"
16 #include "GeoModelKernel/GeoSerialIdentifier.h"
17 #include "GeoModelKernel/GeoShapeShift.h"
18 #include "GeoModelKernel/GeoShapeUnion.h"
19 #include "GeoModelKernel/GeoTransform.h"
20 #include "GeoModelKernel/GeoTrd.h"
21 #include "GeoModelKernel/GeoTube.h"
22 #include "GeoModelKernel/GeoVPhysVol.h"
28 #include "GeoModelKernel/GeoShapeSubtraction.h"
30 #define skip_spacer false
45 return build(matManager, cutoutson);
49 if (
name ==
"SPA06" ||
name ==
"SPA01") {
62 strd = &((strd->add((*upTrd) << GeoTrf::TranslateZ3D(
length / 2.))) << GeoTrf::TranslateZ3D((maxwLength -
length) / 2.));
65 const GeoMaterial *mtrd = matManager.
getMaterial(
"std::Aluminium");
66 const GeoLogVol *lspa =
new GeoLogVol(
"CSCspacer", strd, mtrd);
67 GeoPhysVol *pspa =
new GeoPhysVol(lspa);
72 const GeoMaterial *mtrd = matManager.
getMaterial(
"std::Air");
73 GeoLogVol *ltrd =
new GeoLogVol(
"Spacer", strd, mtrd);
74 GeoPhysVol *ptrd =
new GeoPhysVol(ltrd);
78 double dy = 3. * tckibeam;
80 GeoVPhysVol *ptrdtemp =
nullptr;
82 GeoTrd *strd1 =
new GeoTrd(
dx / 2,
dx / 2,
dy / 2,
dy / 2,
length / 2);
83 const GeoMaterial *mtrd1 = matManager.
getMaterial(
"std::Aluminium");
84 GeoLogVol *ltrd1 =
new GeoLogVol(
"ibeam1", strd1, mtrd1);
85 GeoPhysVol *ptrd1 =
new GeoPhysVol(ltrd1);
87 GeoTrd *strd2 =
new GeoTrd(
dy / 2,
dy / 2,
dx / 2,
dx / 2,
length / 2);
88 const GeoMaterial *mtrd2 = matManager.
getMaterial(
"std::Aluminium");
89 GeoLogVol *ltrd2 =
new GeoLogVol(
"ibeam2", strd2, mtrd2);
90 GeoPhysVol *ptrd2 =
new GeoPhysVol(ltrd2);
92 GeoSerialDenominator *
sd =
new GeoSerialDenominator(
name +
" ibeam");
95 ptrd->add(
new GeoSerialIdentifier(0));
99 double wherepos = newpos;
100 double wherewidth = -
width / 2.;
101 for (
int j = 0; j < 3; j++) {
102 for (
int i = 0;
i < 3;
i++) {
108 GeoTransform *xf =
new GeoTransform(GeoTrf::Translate3D(wherepos + tckibeam / 2, wherewidth +
dy / 2, 0));
113 wherepos += tckibeam;
117 wherewidth += (
width / 2. -
dy / 2.);
120 double vtubl = (
width - 5 * tckibeam) / 2.;
122 GeoSerialDenominator *ntube =
new GeoSerialDenominator(
name +
" vbeam");
125 ptrd->add(
new GeoSerialIdentifier(0));
128 for (
int k1 = 0; k1 < 2; k1++) {
129 for (
int k = 0;
k < 2;
k++) {
130 GeoTransform *ttube =
new GeoTransform(GeoTrf::RotateX3D(-90 *
Gaudi::Units::deg) *
131 GeoTrf::Translate3D(0., -(vtubl + tckibeam) / 2. - (
k - 1) * (vtubl + tckibeam), -
length / 4. - (k1 - 1) *
length / 2));