107{
108 if(hole)
109 {
111 const GeoShape* blmWallHole =
new GeoTube(0,
s_hole_r, thick);
112 const GeoShape* blmWallHole1 =
new GeoBox(
s_width/2-3.5, thick, 5.9);
113 const GeoShape* blmWallHole2 =
new GeoBox(
s_width/2-6.1, thick, 4);
114 const GeoShape* blmWallHole3 = new GeoBox(3.89, thick, 3.89);
115 GeoTrf::RotateX3D rm(90.*Gaudi::Units::deg);
116 GeoTrf::RotateY3D rm1(45.*Gaudi::Units::deg);
126 GeoTrf::Transform3D offset1 = pos1*rm;
127 GeoTrf::Transform3D offset2 = pos2*rm;
128 GeoTrf::Transform3D offset3 = pos3*rm;
129 GeoTrf::Transform3D offset4 = pos4*rm;
130 GeoTrf::Transform3D offset7 =
pos7*rm1;
131 GeoTrf::Transform3D offset9 = pos9*rm;
132 GeoTrf::Transform3D offset10 = pos10*rm;
133
134 const GeoShapeSubtraction& blm1 = blmWallBox->subtract(((*blmWallHole3) << offset7));
135 const GeoShapeSubtraction& blm2 = blm1.subtract(((*blmWallHole) << offset2));
136 const GeoShapeSubtraction& blm3 = blm2.subtract(((*blmWallHole) << offset3));
137 const GeoShapeSubtraction& blm4 = blm3.subtract(((*blmWallHole) << offset4));
138 const GeoShapeSubtraction& blm5 = blm4.subtract(((*blmWallHole1) << offset5));
139 const GeoShapeSubtraction& blm6 = blm5.subtract(((*blmWallHole2) << offset6));
140 const GeoShapeSubtraction& blm7 = blm6.subtract(((*blmWallHole) << offset9));
141 const GeoShapeSubtraction& blm8 = blm7.subtract(((*blmWallHole) << offset10));
142 const GeoShapeSubtraction& blmFinal = blm8.subtract(((*blmWallHole) << offset1));
143
144 const GeoLogVol* blmWallLog = new GeoLogVol("blmWallLog", &blmFinal, material);
145 GeoPhysVol* blmWallPhys = new GeoPhysVol(blmWallLog);
146
147 return blmWallPhys;
148 }
149 else
150 {
152 const GeoShape* blmWallHole =
new GeoTube(0,
s_hole_r, thick);
153 GeoTrf::RotateX3D rm(90.*Gaudi::Units::deg);
160 GeoTrf::Transform3D offset1 = pos1*rm;
161 GeoTrf::Transform3D offset2 = pos2*rm;
162 GeoTrf::Transform3D offset3 = pos3*rm;
163 GeoTrf::Transform3D offset4 = pos4*rm;
164 GeoTrf::Transform3D offset5 = pos5*rm;
165 GeoTrf::Transform3D offset6 = pos6*rm;
166 const GeoShapeSubtraction& blm1 = blmWallBox->subtract(((*blmWallHole) << offset1));
167 const GeoShapeSubtraction& blm2 = blm1.subtract(((*blmWallHole) << offset2));
168 const GeoShapeSubtraction& blm3 = blm2.subtract(((*blmWallHole) << offset3));
169 const GeoShapeSubtraction& blm4 = blm3.subtract(((*blmWallHole) << offset4));
170 const GeoShapeSubtraction& blm5 = blm4.subtract(((*blmWallHole) << offset5));
171 const GeoShapeSubtraction& blmFinal = blm5.subtract(((*blmWallHole) << offset6));
172
173 const GeoLogVol* blmWallLog = new GeoLogVol("blmWallLog", &blmFinal, material);
174 GeoPhysVol* blmWallPhys = new GeoPhysVol(blmWallLog);
175
176 return blmWallPhys;
177 }
178}
@ pos7
Difference between the track and the shower positions: sum_{i=i_m-7}^{i=i_m+7}E_i x (i-i_m) / sum_{i=...