8 #include "GeoModelKernel/GeoBox.h"
9 #include "GeoModelKernel/GeoDefinitions.h"
10 #include "GeoModelKernel/GeoLogVol.h"
11 #include "GeoModelKernel/GeoMaterial.h"
12 #include "GeoModelKernel/GeoPhysVol.h"
13 #include "GeoModelKernel/GeoShapeShift.h"
14 #include "GeoModelKernel/GeoShapeSubtraction.h"
15 #include "GeoModelKernel/GeoVPhysVol.h"
31 std::string_view componentType = std::string_view(
s->name).substr(0, 3);
41 if (componentType ==
"CRO" || componentType ==
"CMI" || componentType ==
"CHV") {
51 if (componentType ==
"CHV") {
57 }
else if (componentType ==
"CRO") {
63 }
else if (componentType ==
"CMI") {
69 }
else if (componentType.substr(0, 2) ==
"LB") {
82 return build(matManager, cutoutson, is_barrel);
86 int ,
bool is_barrel) {
87 GeoPhysVol *pvol =
nullptr;
88 GeoLogVol *lvol =
nullptr;
90 if (
name.compare(0, 3,
"CHV") == 0 ||
name.compare(0, 3,
"CRO") == 0 ||
name.compare(0, 3,
"CMI") == 0) {
94 if ((
name.compare(0, 3,
"CHV") == 0 ||
name.compare(0, 3,
"CRO") == 0) && !is_barrel) {
96 sinexc = std::abs(
excent) / ltemp;
104 const GeoShape *IBeamShape =
new GeoBox(
height / 2, volumelargeness / 2,
length / 2);
106 double yshift = volumelargeness / 4. +
thickness / 2.;
107 IBeamShape = &(IBeamShape->subtract((*sideBox) << GeoTrf::TranslateY3D(yshift)));
108 IBeamShape = &(IBeamShape->subtract((*sideBox) << GeoTrf::TranslateY3D(-yshift)));
112 IBeamShape = &(IBeamShape->subtract((*holeBox) << GeoTrf::TranslateZ3D(
m_hole_pos1 / cosexc)));
113 IBeamShape = &(IBeamShape->subtract((*holeBox) << GeoTrf::TranslateZ3D(
m_hole_pos2 / cosexc)));
114 lvol =
new GeoLogVol(
name, IBeamShape,
mat);
115 pvol =
new GeoPhysVol(lvol);
120 volumelargeness =
width;
121 const GeoBox *Cbox =
new GeoBox(
height / 2, volumelargeness / 2,
length / 2);
122 lvol =
new GeoLogVol(
name, Cbox,
mat);
123 pvol =
new GeoPhysVol(lvol);
127 }
else if (
name.compare(0, 2,
"LB") == 0) {
131 LBbox = &(LBbox->subtract((*innerBox)));
132 lvol =
new GeoLogVol(
name, LBbox,
mat);
133 pvol =
new GeoPhysVol(lvol);
143 log << MSG::INFO <<
" SpacerBeam " <<
name <<
" :" <<
endmsg;