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));