77 const float kDegRad = TMath::Pi() / 180.;
79 TGeoRotation* rot180 =
new TGeoRotation(
"rot180", 90., 180., 90., 90., 180., 0.);
80 TGeoRotation* rotyz =
new TGeoRotation(
"rotyz", 90., 180., 0., 180., 90., 90.);
81 TGeoRotation* rotxz =
new TGeoRotation(
"rotxz", 0., 0., 90., 90., 90., 180.);
86 const TGeoMedium* kMedAir = matmgr.getTGeoMedium(
"PIPE_AIR");
87 const TGeoMedium* kMedAirNF = matmgr.getTGeoMedium(
"PIPE_AIR_NF");
88 const TGeoMedium* kMedAirHigh = matmgr.getTGeoMedium(
"PIPE_AIR_HIGH");
90 const TGeoMedium* kMedVac = matmgr.getTGeoMedium(
"PIPE_VACUUM");
91 const TGeoMedium* kMedVacNF = matmgr.getTGeoMedium(
"PIPE_VACUUM_NF");
92 const TGeoMedium* kMedVacHC = matmgr.getTGeoMedium(
"PIPE_VACUUM_HC");
93 const TGeoMedium* kMedVacNFHC = matmgr.getTGeoMedium(
"PIPE_VACUUM_NFHC");
95 const TGeoMedium* kMedInsu = matmgr.getTGeoMedium(
"PIPE_INS_C0");
97 const TGeoMedium* kMedSteel = matmgr.getTGeoMedium(
"PIPE_INOX");
98 const TGeoMedium* kMedSteelNF = matmgr.getTGeoMedium(
"PIPE_INOX_NF");
99 const TGeoMedium* kMedSteelHC = matmgr.getTGeoMedium(
"PIPE_INOX_HC");
100 const TGeoMedium* kMedSteelNFHC = matmgr.getTGeoMedium(
"PIPE_INOX_NFHC");
102 const TGeoMedium* kMedBe = matmgr.getTGeoMedium(
"PIPE_BE");
104 const TGeoMedium* kMedCu = matmgr.getTGeoMedium(
"PIPE_CU");
105 const TGeoMedium* kMedCuNF = matmgr.getTGeoMedium(
"PIPE_CU_NF");
106 const TGeoMedium* kMedCuHC = matmgr.getTGeoMedium(
"PIPE_CU_HC");
107 const TGeoMedium* kMedCuNFHC = matmgr.getTGeoMedium(
"PIPE_CU_NFHC");
109 const TGeoMedium* kMedAlu2219 = matmgr.getTGeoMedium(
"PIPE_AA2219");
110 const TGeoMedium* kMedRohacell = matmgr.getTGeoMedium(
"PIPE_ROHACELL");
111 const TGeoMedium* kMedPolyimide = matmgr.getTGeoMedium(
"PIPE_POLYIMIDE");
112 const TGeoMedium* kMedAlBe = matmgr.getTGeoMedium(
"PIPE_AlBe");
113 const TGeoMedium* kMedCarbonFiber = matmgr.getTGeoMedium(
"PIPE_M55J6K");
114 const TGeoMedium* kMedTitanium = matmgr.getTGeoMedium(
"PIPE_TITANIUM");
115 const TGeoMedium* kMedAlu7075 = matmgr.getTGeoMedium(
"PIPE_AA7075");
118 TGeoVolume*
top = gGeoManager->GetVolume(
"cave");
119 TGeoVolume* barrel = gGeoManager->GetVolume(
"barrel");
120 TGeoVolume* caveRB24 = gGeoManager->GetVolume(
"caveRB24");
168 TGeoVolumeAssembly* beamPipeCsideSection =
new TGeoVolumeAssembly(
"BeamPipeCsideSection");
170 const float kBeryliumSectionOuterRadius = (mBePipeRmax > 0.) ? mBePipeRmax : 1.65;
171 const float kBeryliumSectionThickness = (mBePipeThick > 0.) ? mBePipeThick : 0.05;
172 float kBeryliumSectionZmax = 25.0;
173 float kBeryliumSectionZmin = -25.0;
175 const float kBellowSectionOuterRadius = 2.15;
176 const float kCSideBPSOuterRadius = 2.22;
177 const float kCSideBPSWallThickness = 0.15;
178 const float kBellowSectionZmax = -55.35;
179 const float kBellowOuterRadius = 2.8;
180 const float kFirstConeAngle = 15. * TMath::DegToRad();
181 const float kChangeThicknessAngle = 45. * TMath::DegToRad();
182 const float kCSideBPSLength = 3.53;
183 const float kDzFirstCone = (kCSideBPSOuterRadius - kBeryliumSectionOuterRadius) / TMath::Tan(kFirstConeAngle);
184 const float kReduceThicknessPartAfterBPSLength = 1.52;
185 const float kThinPartBeforeBellowLength = 1.025;
187 const float kDistanceBetweenBellows = 2.5;
189 const float kAdaptConeZmax = -77.43;
190 const float kAdaptConeZmin = -80.6;
191 const float kAdaptConeRmax = 3.0;
192 const float kFlangeRmax = 4.3;
193 const float kFlangeLength = 1.4;
195 const float kBellowPlieRadius = 0.17;
196 const float kBellowPlieThickness = 0.03;
197 const int kNBellowConvolutions = 7;
199 const float kZ1 = kBeryliumSectionZmin;
200 const float kZ2 = kBellowSectionZmax + kDzFirstCone;
201 const float kZ3 = kBellowSectionZmax + (kCSideBPSOuterRadius - kBellowSectionOuterRadius) / TMath::Tan(kFirstConeAngle);
202 const float kZ4 = kBellowSectionZmax;
203 const float kZ5 = kBellowSectionZmax - kCSideBPSLength;
204 const float kZ6 = kBellowSectionZmax - kCSideBPSLength - (kCSideBPSOuterRadius - kBellowSectionOuterRadius) / TMath::Tan(kChangeThicknessAngle);
205 const float kZ7 = kZ6 - kReduceThicknessPartAfterBPSLength;
206 const float kZ8 = kZ7 - (kBeryliumSectionThickness - kBellowPlieThickness) / TMath::Tan(kChangeThicknessAngle);
207 const float kZ9 = kZ7 - kThinPartBeforeBellowLength;
208 const float kFirstBellowZmax = kZ9;
211 TGeoTube* berylliumTube =
212 new TGeoTube(
"IP_PIPEsh", kBeryliumSectionOuterRadius - kBeryliumSectionThickness, kBeryliumSectionOuterRadius,
213 (kBeryliumSectionZmax - kBeryliumSectionZmin) / 2);
214 TGeoVolume* voberylliumTube =
new TGeoVolume(
"IP_PIPE", berylliumTube, kMedBe);
215 voberylliumTube->SetLineColor(kRed);
217 TGeoTube* berylliumTubeVacuum =
218 new TGeoTube(
"IP_PIPEVACUUMsh", 0., kBeryliumSectionOuterRadius, (kBeryliumSectionZmax - kBeryliumSectionZmin) / 2);
219 TGeoVolume* voberylliumTubeVacuum =
new TGeoVolume(
"IP_PIPEMOTHER", berylliumTubeVacuum, kMedVac);
220 voberylliumTubeVacuum->AddNode(voberylliumTube, 1, gGeoIdentity);
221 voberylliumTubeVacuum->SetVisibility(0);
222 voberylliumTubeVacuum->SetLineColor(kGreen);
224 beamPipeCsideSection->AddNode(voberylliumTubeVacuum, 1,
225 new TGeoTranslation(0., 0., (kBeryliumSectionZmax + kBeryliumSectionZmin) / 2));
228 TGeoPcon* aluBeforeBellows =
new TGeoPcon(0., 360., 9);
229 aluBeforeBellows->DefineSection(0, kZ9, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
230 aluBeforeBellows->DefineSection(1, kZ8, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
231 aluBeforeBellows->DefineSection(2, kZ7, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius);
232 aluBeforeBellows->DefineSection(3, kZ6, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius);
233 aluBeforeBellows->DefineSection(4, kZ5, kCSideBPSOuterRadius - kCSideBPSWallThickness, kCSideBPSOuterRadius);
234 aluBeforeBellows->DefineSection(5, kZ4, kCSideBPSOuterRadius - kCSideBPSWallThickness, kCSideBPSOuterRadius);
235 aluBeforeBellows->DefineSection(6, kZ3, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius);
236 aluBeforeBellows->DefineSection(7, kZ2, kBeryliumSectionOuterRadius - kBeryliumSectionThickness, kBeryliumSectionOuterRadius);
237 aluBeforeBellows->DefineSection(8, kZ1, kBeryliumSectionOuterRadius - kBeryliumSectionThickness, kBeryliumSectionOuterRadius);
238 TGeoVolume* voaluBeforeBellows =
new TGeoVolume(
"aluBeforeBellows", aluBeforeBellows, kMedAlu2219);
239 voaluBeforeBellows->SetLineColor(kBlue);
240 beamPipeCsideSection->AddNode(voaluBeforeBellows, 1, gGeoIdentity);
242 TGeoPcon* aluBeforeBellowsVacuum =
new TGeoPcon(0., 360., 7);
243 aluBeforeBellowsVacuum->DefineSection(0, kZ9, 0., kBellowSectionOuterRadius - kBeryliumSectionThickness);
244 aluBeforeBellowsVacuum->DefineSection(1, kZ6, 0., kBellowSectionOuterRadius - kBeryliumSectionThickness);
245 aluBeforeBellowsVacuum->DefineSection(2, kZ5, 0., kCSideBPSOuterRadius - kCSideBPSWallThickness);
246 aluBeforeBellowsVacuum->DefineSection(3, kZ4, 0., kCSideBPSOuterRadius - kCSideBPSWallThickness);
247 aluBeforeBellowsVacuum->DefineSection(4, kZ3, 0., kBellowSectionOuterRadius - kBeryliumSectionThickness);
248 aluBeforeBellowsVacuum->DefineSection(5, kZ2, 0., kBeryliumSectionOuterRadius - kBeryliumSectionThickness);
249 aluBeforeBellowsVacuum->DefineSection(6, kZ1, 0., kBeryliumSectionOuterRadius - kBeryliumSectionThickness);
250 TGeoVolume* voaluBeforeBellowsVacuum =
new TGeoVolume(
"aluBeforeBellowsVacuum", aluBeforeBellowsVacuum, kMedVac);
251 voaluBeforeBellowsVacuum->SetVisibility(1);
252 voaluBeforeBellowsVacuum->SetLineColor(kGreen);
253 voaluBeforeBellows->AddNode(voaluBeforeBellowsVacuum, 1, gGeoIdentity);
256 float kBellowLength = kNBellowConvolutions * (4. * kBellowPlieRadius - 2. * kBellowPlieThickness);
258 TGeoVolume* vobellows1 =
259 makeBellowCside(
"bellows1", kNBellowConvolutions, kBellowSectionOuterRadius - kBeryliumSectionThickness,
260 kBellowOuterRadius, kBellowPlieRadius, kBellowPlieThickness);
261 beamPipeCsideSection->AddNode(
262 vobellows1, 1,
new TGeoTranslation(0., 0., kFirstBellowZmax - kBellowLength / 2. - 2. * kBellowPlieRadius));
265 const float kZ10 = kFirstBellowZmax - kBellowLength;
266 const float kZ12 = kZ10 - kThinPartBeforeBellowLength;
267 const float kZ11 = kZ12 +
268 (kBeryliumSectionThickness - kBellowPlieThickness) /
269 TMath::Tan(kChangeThicknessAngle);
270 const float kZ13 = kZ12 - kDistanceBetweenBellows;
271 const float kZ14 = kZ13 - (kBeryliumSectionThickness - kBellowPlieThickness) / TMath::Tan(kChangeThicknessAngle);
272 const float kZ15 = kZ14 - kThinPartBeforeBellowLength;
273 const float kSecondBellowZmax = kZ15;
276 TGeoPcon* tube4 =
new TGeoPcon(0., 360., 6);
277 tube4->DefineSection(0, kZ10, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
278 tube4->DefineSection(1, kZ11, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
279 tube4->DefineSection(2, kZ12, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius);
280 tube4->DefineSection(3, kZ13, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius);
281 tube4->DefineSection(4, kZ14, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
282 tube4->DefineSection(5, kZ15, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
283 TGeoVolume* votube4 =
new TGeoVolume(
"votube4", tube4, kMedAlu2219);
284 votube4->SetLineColor(kBlue);
285 beamPipeCsideSection->AddNode(votube4, 1, gGeoIdentity);
287 TGeoTube* tube4Vacuum =
new TGeoTube(0., kBellowSectionOuterRadius - kBeryliumSectionThickness, -(kZ15 - kZ10) / 2.);
288 TGeoVolume* votube4Vacuum =
new TGeoVolume(
"tube4Vacuum", tube4Vacuum, kMedVac);
289 votube4Vacuum->SetVisibility(1);
290 votube4->AddNode(votube4Vacuum, 1,
new TGeoTranslation(0., 0., (kZ10 + kZ15) / 2.));
293 TGeoVolume* vobellows2 =
294 makeBellowCside(
"bellows2", kNBellowConvolutions, kBellowSectionOuterRadius - kBeryliumSectionThickness,
295 kBellowOuterRadius, kBellowPlieRadius, kBellowPlieThickness);
296 beamPipeCsideSection->AddNode(
297 vobellows2, 1,
new TGeoTranslation(0., 0., kSecondBellowZmax - kBellowLength / 2. - 2. * kBellowPlieRadius));
300 const float kZ16 = kSecondBellowZmax - kBellowLength;
301 const float kZ18 = kZ16 - kThinPartBeforeBellowLength;
302 const float kZ17 = kZ18 +
303 (kBeryliumSectionThickness - kBellowPlieThickness) /
304 TMath::Tan(kChangeThicknessAngle);
305 const float kZ19 = kAdaptConeZmax;
306 const float kZ20 = kAdaptConeZmin;
307 const float kZ21 = kAdaptConeZmin - kFlangeLength;
310 TGeoPcon* adaptator =
new TGeoPcon(0., 360., 7);
311 adaptator->DefineSection(0, kZ16, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
312 adaptator->DefineSection(1, kZ17, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius - kBeryliumSectionThickness + kBellowPlieThickness);
313 adaptator->DefineSection(2, kZ18, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius);
314 adaptator->DefineSection(3, kZ19, kBellowSectionOuterRadius - kBeryliumSectionThickness, kBellowSectionOuterRadius);
315 adaptator->DefineSection(4, kZ20, kBellowSectionOuterRadius - kBeryliumSectionThickness, kAdaptConeRmax);
316 adaptator->DefineSection(5, kZ20, kBellowSectionOuterRadius - kBeryliumSectionThickness, kFlangeRmax);
317 adaptator->DefineSection(6, kZ21, kBellowSectionOuterRadius - kBeryliumSectionThickness, kFlangeRmax);
318 TGeoVolume* voadaptator =
new TGeoVolume(
"voadaptator", adaptator, kMedAlu2219);
319 voadaptator->SetLineColor(kBlue);
320 beamPipeCsideSection->AddNode(voadaptator, 1, gGeoIdentity);
322 TGeoPcon* adaptatorvide =
new TGeoPcon(0., 360., 4);
323 adaptatorvide->DefineSection(0, kZ16, 0., kBellowSectionOuterRadius - kBeryliumSectionThickness);
324 adaptatorvide->DefineSection(1, kZ19, 0., kBellowSectionOuterRadius - kBeryliumSectionThickness);
325 adaptatorvide->DefineSection(2, kZ20, 0., kAdaptConeRmax - kBeryliumSectionThickness);
326 adaptatorvide->DefineSection(3, kZ21, 0., kAdaptConeRmax - kBeryliumSectionThickness);
327 TGeoVolume* voadaptatorvide =
new TGeoVolume(
"voadaptatorvide", adaptatorvide, kMedVac);
328 voadaptatorvide->SetVisibility(1);
330 voadaptator->AddNode(voadaptatorvide, 1, gGeoIdentity);
333 barrel->AddNode(beamPipeCsideSection, 1,
new TGeoTranslation(0., 30., 0.));
340 TGeoVolume* beamPipeSupport =
new TGeoVolumeAssembly(
"BeamPipeSupport");
341 const float kBeamPipesupportZpos = kZ5;
344 const float kSupportXdim = 20.67;
345 const float kBeamPipeRingZdim = 3.6;
346 const float kVespelRmax = 2.3;
347 const float kVespelRmin = 2.22;
348 const float kBeampipeCarbonCollarRmin = 2.5;
349 const float kBeampipeCarbonCollarRmax = 2.7;
350 const float kFixationCarbonCollarRmin = 1.5;
351 const float kFixationCarbonCollarRmax = 1.7;
352 const float kFixationCarbonCollarDZ = 2.5;
353 const float kSkinThickness = 0.3;
354 const float kSkinXdim = 14.2;
355 const float kSkinYdim = 1.4;
356 const float kSkinZdim = kFixationCarbonCollarDZ;
357 const float kCarbonEarsXdim = 2.8;
358 const float kCarbonEarsYdimIn = 1.1;
359 const float kCarbonEarsYdimOut = 0.6;
360 const float kCarbonEarsZdim = kFixationCarbonCollarDZ;
361 const float kScrewDiameter = 0.4;
362 const float kScrewHeadHeight = 0.2;
363 const float kScrewHeadDiameter = 0.6;
364 const float kScrewPositionIn = 3.25;
365 const float kScrewPositionOut = 21.80;
366 const float kScrewThreadLength = 1.0;
367 const float holeSightDiameterOut = 0.60;
368 const float holeSightDiameterIn = 0.25;
371 TGeoVolumeAssembly* supportBar =
new TGeoVolumeAssembly(
"BPS_SupportBar");
372 TGeoBBox* carbonSkinBPS =
new TGeoBBox(
"carbonSkinBPS", kSkinXdim / 2., kSkinYdim / 2., kSkinZdim / 2.);
373 TGeoBBox* foambarBPS =
new TGeoBBox(
"foambarBPS", kSkinXdim / 2. - kSkinThickness, kSkinYdim / 2. - kSkinThickness,
374 kSkinZdim / 2. - kSkinThickness / 2.);
375 TGeoBBox* carbonEarsBPSin =
new TGeoBBox(
"carbonEarsBPSin", kCarbonEarsXdim / 2., kCarbonEarsYdimIn / 2., kCarbonEarsZdim / 2.);
376 TGeoBBox* carbonEarsBPSout =
new TGeoBBox(
"carbonEarsBPSout", kCarbonEarsXdim / 2., kCarbonEarsYdimOut / 2., kCarbonEarsZdim / 2.);
379 TGeoTranslation* tBP1 =
new TGeoTranslation(
"tBP1", (kSkinXdim + kCarbonEarsXdim) / 2., -(kSkinYdim - kCarbonEarsYdimIn) / 2., 0.);
380 TGeoTranslation* tBP2 =
new TGeoTranslation(
"tBP2", -(kSkinXdim + kCarbonEarsXdim) / 2., 0., 0.);
381 tBP1->RegisterYourself();
382 tBP2->RegisterYourself();
384 TGeoRotation* rotScrew =
new TGeoRotation(
"rotScrew", 0., 90., 0.);
385 rotScrew->RegisterYourself();
387 TGeoTube* holeScrew =
new TGeoTube(
"holeScrew", 0., kScrewDiameter / 2., kCarbonEarsYdimIn / 2. + 0.001);
388 TGeoTube* holeSight =
new TGeoTube(
"holeSight", 0., holeSightDiameterOut / 2., kSkinZdim / 2. + 0.001);
389 TGeoTranslation* tHoleSight =
new TGeoTranslation(
"tHoleSight", kSkinXdim / 2. + kCarbonEarsXdim + kBeampipeCarbonCollarRmax - 6.55, 0., 0.);
390 tHoleSight->RegisterYourself();
391 double kXHoleIn = kSkinXdim / 2. + kCarbonEarsXdim + kBeampipeCarbonCollarRmax - kScrewPositionIn;
392 double kXHoleOut = kSkinXdim / 2. + kCarbonEarsXdim + kBeampipeCarbonCollarRmax - kScrewPositionOut;
393 TGeoCombiTrans* tHoleScrew1 =
new TGeoCombiTrans(
"tHoleScrew1", kXHoleIn, -(kSkinYdim - kCarbonEarsYdimIn) / 2., -0.7, rotScrew);
394 TGeoCombiTrans* tHoleScrew2 =
new TGeoCombiTrans(
"tHoleScrew2", kXHoleIn, -(kSkinYdim - kCarbonEarsYdimIn) / 2., 0.7, rotScrew);
395 TGeoCombiTrans* tHoleScrew3 =
new TGeoCombiTrans(
"tHoleScrew3", kXHoleOut, -(kSkinYdim - kCarbonEarsYdimIn) / 2., -0.7, rotScrew);
396 TGeoCombiTrans* tHoleScrew4 =
new TGeoCombiTrans(
"tHoleScrew4", kXHoleOut, -(kSkinYdim - kCarbonEarsYdimIn) / 2., 0.7, rotScrew);
397 tHoleScrew1->RegisterYourself();
398 tHoleScrew2->RegisterYourself();
399 tHoleScrew3->RegisterYourself();
400 tHoleScrew4->RegisterYourself();
402 TGeoCompositeShape* supportBarCarbon =
new TGeoCompositeShape(
"BPS_supportBarCarbon",
"(carbonSkinBPS-foambarBPS)+carbonEarsBPSin:tBP1-holeScrew:tHoleScrew1-holeScrew:tHoleScrew2+carbonEarsBPSout:tBP2-holeSight:tHoleSight-holeScrew:tHoleScrew3-holeScrew:tHoleScrew4");
403 TGeoVolume* supportBarCarbonVol =
new TGeoVolume(
"BPS_supportBarCarbon", supportBarCarbon, kMedCarbonFiber);
404 supportBarCarbonVol->SetLineColor(kGray + 2);
405 supportBar->AddNode(supportBarCarbonVol, 1,
new TGeoTranslation(-(kSkinXdim / 2. + kCarbonEarsXdim + kBeampipeCarbonCollarRmax), 0, 0));
406 TGeoRotation* rotBar1 =
new TGeoRotation(
"rotBar1", 0., 180., 180.);
407 rotBar1->RegisterYourself();
408 TGeoCombiTrans* transBar1 =
new TGeoCombiTrans(
"transBar1", kSkinXdim / 2. + kCarbonEarsXdim + kBeampipeCarbonCollarRmax, 0, 0, rotBar1);
409 transBar1->RegisterYourself();
410 supportBar->AddNode(supportBarCarbonVol, 2, transBar1);
414 TGeoCompositeShape* foamVolume =
new TGeoCompositeShape(
"foamVolume",
"foambarBPS-holeSight:tHoleSight");
415 TGeoVolume* FoamVolume =
new TGeoVolume(
"supportBarFoam", foamVolume, kMedRohacell);
416 FoamVolume->SetLineColor(kGreen);
417 TGeoRotation* rotBar2 =
new TGeoRotation(
"rotBar2", 0., 0., 180.);
418 rotBar2->RegisterYourself();
419 TGeoCombiTrans* transBar2 =
new TGeoCombiTrans(
"transBar2", kSkinXdim / 2. + kCarbonEarsXdim + kBeampipeCarbonCollarRmax, 0, 0, rotBar2);
420 transBar2->RegisterYourself();
421 supportBar->AddNode(FoamVolume, 1, transBar1);
422 supportBar->AddNode(FoamVolume, 2,
new TGeoTranslation(-(kSkinXdim / 2. + kCarbonEarsXdim + kBeampipeCarbonCollarRmax), 0, 0));
426 TGeoVolumeAssembly* screw =
new TGeoVolumeAssembly(
"screw");
427 TGeoTube* headScrew =
new TGeoTube(
"headScrew", 0., kScrewHeadDiameter / 2., kScrewHeadHeight / 2.);
428 TGeoVolume* HeadScrew =
new TGeoVolume(
"HeadScrew", headScrew, kMedTitanium);
429 HeadScrew->SetLineColor(kRed);
430 TGeoTube* threadScrew =
new TGeoTube(
"threadScrew", 0., kScrewDiameter / 2., kCarbonEarsYdimIn / 2.);
431 TGeoVolume* ThreadScrew =
new TGeoVolume(
"ThreadScrew", threadScrew, kMedTitanium);
432 ThreadScrew->SetLineColor(kRed);
433 screw->AddNode(HeadScrew, 1,
new TGeoTranslation(0., 0., -(kCarbonEarsYdimIn + kScrewHeadHeight) / 2.));
434 screw->AddNode(ThreadScrew, 1);
435 TGeoCombiTrans* tScrew1 =
new TGeoCombiTrans(
"transScrew1", kScrewPositionIn, (kCarbonEarsYdimIn - kSkinYdim) / 2., -0.7, rotScrew);
436 TGeoCombiTrans* tScrew2 =
new TGeoCombiTrans(
"transScrew2", kScrewPositionIn, (kCarbonEarsYdimIn - kSkinYdim) / 2., 0.7, rotScrew);
437 TGeoCombiTrans* tScrew3 =
new TGeoCombiTrans(
"transScrew3", -kScrewPositionIn, (kCarbonEarsYdimIn - kSkinYdim) / 2., -0.7, rotScrew);
438 TGeoCombiTrans* tScrew4 =
new TGeoCombiTrans(
"transScrew4", -kScrewPositionIn, (kCarbonEarsYdimIn - kSkinYdim) / 2., 0.7, rotScrew);
439 tScrew1->RegisterYourself();
440 tScrew2->RegisterYourself();
441 tScrew3->RegisterYourself();
442 tScrew4->RegisterYourself();
443 supportBar->AddNode(screw, 1, tScrew1);
444 supportBar->AddNode(screw, 2, tScrew2);
445 supportBar->AddNode(screw, 3, tScrew3);
446 supportBar->AddNode(screw, 4, tScrew4);
450 TGeoVolumeAssembly* fixationSight =
new TGeoVolumeAssembly(
"fixationSight");
451 TGeoTube* screwSight =
new TGeoTube(
"screwSight", holeSightDiameterIn / 2., holeSightDiameterOut / 2., kScrewThreadLength / 2.);
452 TGeoVolume* ScrewSight =
new TGeoVolume(
"ScrewSight", screwSight, kMedSteel);
453 ScrewSight->SetLineColor(kBlue);
454 double supportSightLength = 0.5;
455 TGeoTube* supportSight =
new TGeoTube(
"supportSight", holeSightDiameterIn / 2., 1.4 / 2., supportSightLength / 2.);
456 TGeoVolume* SupportSight =
new TGeoVolume(
"SupportSight", supportSight, kMedSteel);
457 SupportSight->SetLineColor(kBlue);
458 fixationSight->AddNode(ScrewSight, 1);
459 fixationSight->AddNode(SupportSight, 1,
new TGeoTranslation(0., 0., (kScrewThreadLength + supportSightLength) / 2.));
460 SupportSight->SetVisibility(kTRUE);
461 fixationSight->SetVisibility(kTRUE);
462 TGeoTranslation* tSight1 =
new TGeoTranslation(
"tSight1", 6.55, 0., (kSkinZdim - kScrewThreadLength) / 2.);
463 TGeoTranslation* tSight2 =
new TGeoTranslation(
"tSight2", -6.55, 0., (kSkinZdim - kScrewThreadLength) / 2.);
464 tSight1->RegisterYourself();
465 tSight2->RegisterYourself();
466 supportBar->AddNode(fixationSight, 1, tSight1);
467 supportBar->AddNode(fixationSight, 2, tSight2);
470 beamPipeSupport->AddNode(supportBar, 1);
473 TGeoTube* pipeSupportTubeCarbon =
new TGeoTube(kBeampipeCarbonCollarRmin, kBeampipeCarbonCollarRmax, kFixationCarbonCollarDZ / 2.);
474 TGeoVolume* FixationToPipeVol =
new TGeoVolume(
"FixationToPipe", pipeSupportTubeCarbon, kMedCarbonFiber);
475 FixationToPipeVol->SetLineColor(kGray + 2);
476 beamPipeSupport->AddNode(FixationToPipeVol, 1);
480 TGeoVolumeAssembly* beamPipeRing =
new TGeoVolumeAssembly(
"beamPipeRing");
481 TGeoTube* beamPipeRingCarbon =
new TGeoTube(kVespelRmax, kBeampipeCarbonCollarRmin, kBeamPipeRingZdim / 2.);
482 TGeoVolume* beamPipeRingCarbonVol =
new TGeoVolume(
"beamPipeRingCarbon", beamPipeRingCarbon, kMedCarbonFiber);
483 beamPipeRingCarbonVol->SetLineColor(kGray + 2);
484 beamPipeRing->AddNode(beamPipeRingCarbonVol, 1,
485 new TGeoTranslation(0., 0, (kBeamPipeRingZdim - kFixationCarbonCollarDZ) / 2.));
486 TGeoTube* beamPipeRingVespel =
new TGeoTube(kVespelRmin, kVespelRmax, (kBeamPipeRingZdim + 0.4) / 2.);
487 TGeoVolume* beamPipeRingVespelVol =
new TGeoVolume(
"beamPipeRingVespel", beamPipeRingVespel, kMedPolyimide);
488 beamPipeRingVespelVol->SetLineColor(kGreen + 2);
489 beamPipeRing->AddNode(beamPipeRingVespelVol, 1,
490 new TGeoTranslation(0., 0, (kBeamPipeRingZdim - kFixationCarbonCollarDZ) / 2.));
491 beamPipeSupport->AddNode(beamPipeRing, 1);
492 beamPipeSupport->SetVisibility(1);
493 beamPipeSupport->IsVisible();
497 TGeoVolumeAssembly* Wing =
new TGeoVolumeAssembly(
"Wing");
500 double lengthRod = 28.7 - 1.0 - 1.0 - 1.9;
501 double diameterRod = 1.815;
503 TGeoTube* Rod =
new TGeoTube(0., diameterRod / 2., lengthRod / 2.);
504 TGeoVolume* rod =
new TGeoVolume(
"rod", Rod, kMedAlu7075);
505 rod->SetLineColor(kGray);
508 double lengthFixRod = 4.0;
509 double diameterFixRod = 3.0;
511 TGeoTube* RodBracket =
new TGeoTube(
"RodBracket", 0., diameterFixRod / 2., lengthFixRod / 2.);
512 TGeoBBox* BracketPlane =
new TGeoBBox(
"BracketPlane", 3., 3., 3.);
513 TGeoTranslation* tBracketPlane =
new TGeoTranslation(
"tBracketPlane", 0., 3. - kCarbonEarsYdimOut / 2., (lengthFixRod + 6.) / 2. - 2.6);
514 tBracketPlane->RegisterYourself();
515 TGeoCompositeShape* Bracket =
new TGeoCompositeShape(
"Bracket",
"RodBracket-BracketPlane:tBracketPlane");
516 TGeoVolume* bracket =
new TGeoVolume(
"bracket", Bracket, kMedAlu7075);
520 TGeoVolumeAssembly* carbonBox =
new TGeoVolumeAssembly(
"carbonBox");
521 double eCarbonBox = 0.1;
522 double trdWidth = 8.6;
523 double trdLength = 11.05 - 1.0 - 0.6;
524 TGeoTrd1* trdOut =
new TGeoTrd1(
"trdOut", 1.405 / 2, 6.632 / 2, trdLength / 2, trdWidth / 2);
525 TGeoTrd1* trdIn =
new TGeoTrd1(
"trdIn", 1.405 / 2 - eCarbonBox, 6.632 / 2 - eCarbonBox, trdLength / 2 + eCarbonBox, trdWidth / 2 - eCarbonBox);
526 TGeoCompositeShape* trd =
new TGeoCompositeShape(
"trd",
"trdOut-trdIn");
527 TGeoVolume* TRD =
new TGeoVolume(
"TRD", trd, kMedCarbonFiber);
528 TRD->SetLineColor(kGray);
531 TGeoTrd1* trdPlate =
new TGeoTrd1(
"trdPlate", 1.405 / 2, 6.632 / 2, 1.0 / 2, trdWidth / 2);
532 TGeoVolume* TRDPlate =
new TGeoVolume(
"TDRPlate", trdPlate, kMedAlu7075);
535 TGeoBBox* plateBox =
new TGeoBBox(
"plateBox", 7.5 / 2., 9.5 / 2., 1.9 / 2.);
536 TGeoBBox* removeBox =
new TGeoBBox(
"removeBox", 2.1 / 2 + 0.0001, 2.5 / 2. + 0.0001, 1.9 / 2. + 0.0001);
537 TGeoTranslation* tRemove1 =
new TGeoTranslation(
"tRemove1", (7.5 - 2.1) / 2, -(9.5 - 2.5) / 2, 0.);
538 TGeoTranslation* tRemove2 =
new TGeoTranslation(
"tRemove2", -(7.5 - 2.1) / 2, -(9.5 - 2.5) / 2, 0.);
539 tRemove1->RegisterYourself();
540 tRemove2->RegisterYourself();
543 TGeoCompositeShape* PlateBox =
new TGeoCompositeShape(
"PlateBox",
"plateBox-removeBox:tRemove1-removeBox:tRemove2");
544 TGeoVolume* PLATEBox =
new TGeoVolume(
"PLATEBox", PlateBox, kMedAlu7075);
546 TGeoRotation* PlateRot =
new TGeoRotation(
"PlateRot", 0., 0., 0.);
547 TGeoRotation* FrontRot =
new TGeoRotation(
"FrontRot", 180., 90., 0.);
548 TGeoCombiTrans* tFrontCarbonBox =
new TGeoCombiTrans(
"tFrontCarbonBox", 0., 0., 0., FrontRot);
549 PlateRot->RegisterYourself();
550 FrontRot->RegisterYourself();
551 tFrontCarbonBox->RegisterYourself();
552 TGeoCombiTrans* tTRDPlate =
new TGeoCombiTrans(
"tTRDPlate", 0., 0., -(trdLength + 1.0) / 2, FrontRot);
553 tTRDPlate->RegisterYourself();
554 TRDPlate->SetLineColor(kGray + 2);
555 TGeoCombiTrans* tPlateBox =
new TGeoCombiTrans(
"tPlateBox", 0., 0., -(trdLength + 1.9) / 2 - 1.0, PlateRot);
556 tPlateBox->RegisterYourself();
557 PLATEBox->SetLineColor(kGray);
559 double xyOut[16] = {0};
563 xyOut[3] = -xyOut[1];
564 xyOut[4] = -xyOut[2];
565 xyOut[5] = -xyOut[1];
566 xyOut[6] = -xyOut[0];
570 xyOut[9] = 1.3 - xyOut[1] + xyOut[8];
571 xyOut[10] = xyOut[8];
572 xyOut[11] = -xyOut[8] - xyOut[1] + xyOut[8];
573 xyOut[12] = -xyOut[8];
574 xyOut[13] = -xyOut[8] - xyOut[1] + xyOut[8];
575 xyOut[14] = -xyOut[8];
576 xyOut[15] = xyOut[8] - xyOut[1] + xyOut[8];
577 double ARB8Length = 15.35;
578 TGeoArb8* ARB8Out =
new TGeoArb8(
"ARB8Out", ARB8Length / 2, xyOut);
580 double xyIn[16] = {0};
581 xyIn[0] = xyOut[0] - eCarbonBox;
582 xyIn[1] = xyOut[1] - eCarbonBox;
583 xyIn[2] = 0.7025 - eCarbonBox;
590 xyIn[8] = xyOut[8] - eCarbonBox;
591 xyIn[9] = xyOut[8] - xyIn[1] + xyIn[8] - eCarbonBox;
593 xyIn[11] = -xyIn[8] - xyOut[1] + xyOut[8];
595 xyIn[13] = -xyIn[8] - xyOut[1] + xyOut[8];
597 xyIn[15] = xyIn[8] - xyOut[1] + xyOut[8];
598 TGeoArb8* ARB8In =
new TGeoArb8(
"ARB8In", ARB8Length / 2 + 0.0001, xyIn);
600 TGeoCompositeShape* arb8 =
new TGeoCompositeShape(
"arb8",
"ARB8Out-ARB8In");
601 TGeoVolume* ARB8 =
new TGeoVolume(
"ARB8", arb8, kMedCarbonFiber);
602 ARB8->SetLineColor(kGray);
603 TGeoRotation* RearRot =
new TGeoRotation(
"RearRot", 0., 0., 0.);
604 TGeoCombiTrans* tRearCarbonBox =
new TGeoCombiTrans(
"tRearCarbonBox", 0., 0., (ARB8Length + trdLength) / 2, RearRot);
605 RearRot->RegisterYourself();
606 tRearCarbonBox->RegisterYourself();
609 carbonBox->AddNode(TRD, 1, tFrontCarbonBox);
610 carbonBox->AddNode(ARB8, 1, tRearCarbonBox);
611 carbonBox->AddNode(TRDPlate, 1, tTRDPlate);
612 carbonBox->AddNode(PLATEBox, 1, tPlateBox);
614 TGeoRotation* CarbonBoxRot1 =
new TGeoRotation(
"CarbonBoxRot1", 90., 0., 0.);
615 double xCarbonBox = xRod + trdWidth / 2 - xyOut[8];
616 double zCarbonBox = -trdLength / 2 - ARB8Length - lengthFixRod + 1.3;
617 TGeoCombiTrans* tCarbonBox1 =
new TGeoCombiTrans(
"tCarbonBox1", -xCarbonBox, 0., zCarbonBox, CarbonBoxRot1);
618 CarbonBoxRot1->RegisterYourself();
619 tCarbonBox1->RegisterYourself();
620 TGeoRotation* CarbonBoxRot2 =
new TGeoRotation(
"CarbonBoxRot2", 270., 0., 0.);
621 TGeoCombiTrans* tCarbonBox2 =
new TGeoCombiTrans(
"tCarbonBox2", xCarbonBox, 0., zCarbonBox, CarbonBoxRot2);
622 CarbonBoxRot2->RegisterYourself();
623 tCarbonBox2->RegisterYourself();
625 Wing->AddNode(rod, 1,
new TGeoTranslation(xRod, 0., -(lengthRod / 2. + lengthFixRod) + 1.3));
626 Wing->AddNode(rod, 2,
new TGeoTranslation(-xRod, 0., -(lengthRod / 2. + lengthFixRod) + 1.3));
627 bracket->SetLineColor(kGray);
628 Wing->AddNode(bracket, 1,
new TGeoTranslation(xRod, 0., -lengthFixRod / 2. + 1.3));
629 Wing->AddNode(bracket, 2,
new TGeoTranslation(-xRod, 0., -lengthFixRod / 2. + 1.3));
630 Wing->AddNode(carbonBox, 1, tCarbonBox1);
631 Wing->AddNode(carbonBox, 2, tCarbonBox2);
633 beamPipeSupport->AddNode(Wing, 1);
634 double mGlobalShift = 2.45;
635 barrel->AddNode(beamPipeSupport, 1,
new TGeoTranslation(0., 30, kBeamPipesupportZpos + kFixationCarbonCollarDZ / 2. - mGlobalShift));
646 float kConicalBerilliumMinThickness = 0.08;
647 float kConicalBerilliumMaxThickness = 0.1;
648 float kFlangeZ = 483.75;
649 float kFlangeWidth = 2.74;
650 float kFlangeThickness = 4.3;
651 float kConicalBerylliumEnd = 473.3;
652 float kSupport1 = 178.6;
653 float kSupport2 = 471.3;
654 float kSupportWidth = 5.25;
655 float kPipeRadiusAtSupport1 = 2.2;
656 float kConicalBePipeEndOuterRadius = 3.0;
658 TGeoPcon* tube0 =
new TGeoPcon(0., 360., 5);
659 tube0->DefineSection(0, kFlangeZ - kFlangeWidth / 2, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness, kConicalBePipeEndOuterRadius);
660 tube0->DefineSection(1, kConicalBerylliumEnd, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness, kConicalBePipeEndOuterRadius);
661 tube0->DefineSection(2, kSupport1 + kSupportWidth, kPipeRadiusAtSupport1 - kConicalBerilliumMinThickness, kPipeRadiusAtSupport1);
662 tube0->DefineSection(3, kSupport1, kPipeRadiusAtSupport1 - kConicalBerilliumMinThickness, kPipeRadiusAtSupport1);
663 tube0->DefineSection(4, kBeryliumSectionZmax, kBeryliumSectionOuterRadius - kConicalBerilliumMinThickness, kBeryliumSectionOuterRadius);
665 TGeoPcon* tube0vide =
new TGeoPcon(0., 360., 5);
666 tube0vide->DefineSection(0, kFlangeZ - kFlangeWidth / 2, 0., kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness - 0.01);
667 tube0vide->DefineSection(1, kConicalBerylliumEnd, 0., kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness - 0.01);
668 tube0vide->DefineSection(2, kSupport1 + kSupportWidth, 0, kPipeRadiusAtSupport1 - kConicalBerilliumMinThickness - 0.01);
669 tube0vide->DefineSection(3, kSupport1, 0, kPipeRadiusAtSupport1 - kConicalBerilliumMinThickness - 0.01);
670 tube0vide->DefineSection(4, kBeryliumSectionZmax, 0., kBeryliumSectionOuterRadius - kConicalBerilliumMinThickness - 0.01);
672 TGeoVolume* votube0 =
new TGeoVolume(
"votube0", tube0, kMedBe);
673 votube0->SetLineColor(kRed);
674 TGeoVolume* votube0vide =
new TGeoVolume(
"votube0vide", tube0vide, kMedVac);
675 votube0vide->SetLineColor(kGreen);
677 barrel->AddNode(votube0, 1,
new TGeoTranslation(0., 30., 0.));
678 barrel->AddNode(votube0vide, 1,
new TGeoTranslation(0., 30., 0.));
680 TGeoVolume* beampipeSupportA1 = makeSupportBar(
"A1", kPipeRadiusAtSupport1 + 0.01, kPipeRadiusAtSupport1 + 0.38, 20.67, 14.25);
681 barrel->AddNode(beampipeSupportA1, 1,
new TGeoTranslation(0., 30, kSupport1 + kSupportWidth / 2.));
684 TGeoVolume* beampipeSupportA2 = makeSupportBar(
"A2", kConicalBePipeEndOuterRadius, kConicalBePipeEndOuterRadius + 0.38, 44, 37.5);
685 barrel->AddNode(beampipeSupportA2, 1,
new TGeoTranslation(0., 30, kConicalBerylliumEnd + kSupportWidth / 2.));
687 TGeoPcon* Bolt1 =
new TGeoPcon(0., 360, 8);
688 Bolt1->DefineSection(0, 0, 0, 0.5);
689 Bolt1->DefineSection(1, 0.515 - 0.01, 0, 0.5);
690 Bolt1->DefineSection(2, 0.515 - 0.01, 0, 0.25);
691 Bolt1->DefineSection(3, kFlangeWidth + 0.515 + 0.01, 0, 0.25);
692 Bolt1->DefineSection(4, kFlangeWidth + 0.515 + 0.01, 0, 0.5);
693 Bolt1->DefineSection(5, kFlangeWidth + 0.515 + 0.55, 0, 0.5);
694 Bolt1->DefineSection(6, kFlangeWidth + 0.515 + 0.55, 0, 0.25);
695 Bolt1->DefineSection(7, kFlangeWidth + 0.515 + 0.55 + 0.5, 0, 0.25);
696 Bolt1->SetName(
"BOLT");
698 TGeoVolume* volBolt1 =
new TGeoVolume(
"volBolt1", Bolt1, kMedTitanium);
699 volBolt1->SetLineWidth(2);
700 volBolt1->SetLineColor(kRed);
702 TGeoTranslation*
t1 =
new TGeoTranslation((kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), (kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
704 t1->RegisterYourself();
705 TGeoTranslation* t2 =
new TGeoTranslation((kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), (kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
707 t2->RegisterYourself();
708 TGeoTranslation* t3 =
new TGeoTranslation(-(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), (kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
710 t3->RegisterYourself();
711 TGeoTranslation* t4 =
new TGeoTranslation(-(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), (kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
713 t4->RegisterYourself();
714 TGeoTranslation* t5 =
new TGeoTranslation(-(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), -(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
716 t5->RegisterYourself();
717 TGeoTranslation* t6 =
new TGeoTranslation(-(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), -(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
719 t6->RegisterYourself();
720 TGeoTranslation* t7 =
new TGeoTranslation((kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), -(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
722 t7->RegisterYourself();
723 TGeoTranslation* t8 =
new TGeoTranslation((kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Cos(TMath::Pi() / 8), -(kConicalBePipeEndOuterRadius + (kFlangeThickness - kConicalBePipeEndOuterRadius) / 2) * TMath::Sin(TMath::Pi() / 8), kFlangeZ - kFlangeWidth / 2 - 0.515);
725 t8->RegisterYourself();
727 TGeoVolumeAssembly* Bolts =
new TGeoVolumeAssembly(
"Bolts");
728 Bolts->AddNode(volBolt1, 1,
t1);
729 Bolts->AddNode(volBolt1, 2, t2);
730 Bolts->AddNode(volBolt1, 3, t3);
731 Bolts->AddNode(volBolt1, 4, t4);
732 Bolts->AddNode(volBolt1, 5, t5);
733 Bolts->AddNode(volBolt1, 6, t6);
734 Bolts->AddNode(volBolt1, 7, t7);
735 Bolts->AddNode(volBolt1, 8, t8);
737 barrel->AddNode(Bolts, 1,
new TGeoTranslation(0., 30., 0.));
739 TGeoTranslation* Tflange =
new TGeoTranslation(0, 0, kFlangeZ);
740 Tflange->SetName(
"Tflange");
741 Tflange->RegisterYourself();
744 TGeoTube* flange =
new TGeoTube(
"voFlangeA1", kConicalBePipeEndOuterRadius + 0.01, kFlangeThickness, kFlangeWidth / 2.);
746 TGeoPcon* HoleF =
new TGeoPcon(
"HoleF", 0., 360., 2);
747 HoleF->DefineSection(0, 0., 0, 0.25 + 0.01);
748 HoleF->DefineSection(1, 4.305, 0, 0.25 + 0.01);
751 TGeoCompositeShape* FlangeWithHoles =
new TGeoCompositeShape(
"voFlangeWithHoles",
"((voFlangeA1:Tflange)-((voFlangeA1:Tflange)*(HoleF:t1+HoleF:t2+HoleF:t3+HoleF:t4+HoleF:t5+HoleF:t6+HoleF:t7+HoleF:t8)))");
753 TGeoVolume* volflange =
new TGeoVolume(
"voFlangeHoles", FlangeWithHoles, kMedAlBe);
754 volflange->SetLineWidth(2);
755 volflange->SetLineColor(kGray);
757 barrel->AddNode(volflange, 1,
new TGeoTranslation(0., 30., 0.));
759 TGeoPcon* pipeSamell =
new TGeoPcon(0., 360., 2);
760 pipeSamell->DefineSection(0, kFlangeZ + kFlangeWidth / 2, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness, kConicalBePipeEndOuterRadius);
761 pipeSamell->DefineSection(1, kFlangeZ + 5.13 + 0.435 + 0.4 + 0.08, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness, kConicalBePipeEndOuterRadius);
762 pipeSamell->SetName(
"pipeSamell");
764 TGeoVolume* VolpipeSmall =
new TGeoVolume(
"voPipeSmallVac", pipeSamell, kMedAlu2219);
765 VolpipeSmall->SetLineWidth(2);
766 barrel->AddNode(VolpipeSmall, 1,
new TGeoTranslation(0., 30., 0.));
768 TGeoPcon* pipeSmallVac =
new TGeoPcon(0., 360., 2);
769 pipeSmallVac->DefineSection(0, kFlangeZ + kFlangeWidth / 2, 0, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness - 0.01);
770 pipeSmallVac->DefineSection(1, kFlangeZ + 5.13 + 0.435 + 0.4 + 0.08, 0, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness - 0.01);
771 TGeoVolume* vopipeSmallVac =
new TGeoVolume(
"voPipeSmallVac", pipeSmallVac, kMedVac);
772 vopipeSmallVac->SetLineColor(kGreen);
774 barrel->AddNode(vopipeSmallVac, 1,
new TGeoTranslation(0., 30., 0.));
778 float plieradiusA = 0.2;
783 TGeoVolume* vobellows1A = makeBellow(
"bellows1A", 10, 3.0, 3.97, 8.47, plieradiusA, 0.03);
785 barrel->AddNode(vobellows1A, 1,
new TGeoTranslation(0., 30., kFlangeZ + 10));
789 TGeoPcon* pipeOut =
new TGeoPcon(0., 360., 2);
790 pipeOut->DefineSection(0, kFlangeZ + 13.6 - 0.08, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness, kConicalBePipeEndOuterRadius);
791 pipeOut->DefineSection(1, 714.6, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness, kConicalBePipeEndOuterRadius);
793 TGeoVolume* OuterPIPE =
new TGeoVolume(
"pipeOut", pipeOut, kMedAlu2219);
794 barrel->AddNode(OuterPIPE, 1,
new TGeoTranslation(0., 30., 0.));
797 TGeoPcon* pipeOutVac =
new TGeoPcon(0., 360., 2);
798 pipeOutVac->DefineSection(0, kFlangeZ + 13.6 - 0.08, 0, kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness);
799 pipeOutVac->DefineSection(1, 714.6, 0., kConicalBePipeEndOuterRadius - kConicalBerilliumMaxThickness);
801 TGeoVolume* OuterPIPEVac =
new TGeoVolume(
"pipeOutVac", pipeOutVac, kMedAlu2219);
802 barrel->AddNode(OuterPIPEVac, 1,
new TGeoTranslation(0., 30., 0.));
824 const float kRB24CuTubeL = 381.5;
825 const float kRB24cCuTubeL = 155.775 + (28.375 - 18.135);
826 const float kRB24bCuTubeL = kRB24CuTubeL - kRB24cCuTubeL;
827 const float kRB24CuTubeRi = 5.8 / 2.;
828 const float kRB24CuTubeRo = 6.0 / 2.;
829 const float kRB24CuTubeFRo = 7.6;
830 const float kRB24CuTubeFL = 1.86;
831 const float kRB24CL = 2. * 597.9;
837 TGeoVolume* voRB24cCuTubeM =
new TGeoVolume(
"voRB24cCuTubeM",
new TGeoTube(0., kRB24CuTubeRi, kRB24cCuTubeL / 2.), kMedVacNFHC);
838 TGeoVolume* voRB24cCuTube =
new TGeoVolume(
"voRB24cCuTube",
new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB24cCuTubeL / 2.), kMedAlu2219);
839 voRB24cCuTubeM->AddNode(voRB24cCuTube, 1, gGeoIdentity);
842 TGeoVolume* voRB24CuTubeA =
new TGeoVolume(
"voRB24CuTubeA",
new TGeoTube(80., 81., kRB24bCuTubeL / 2.), kMedAirHigh);
843 voRB24CuTubeA->SetVisibility(0);
846 TGeoVolume* voRB24CuTubeF =
new TGeoVolume(
"voRB24CuTubeF",
new TGeoTube(kRB24CuTubeRo, kRB24CuTubeFRo, kRB24CuTubeFL / 2.), kMedSteelNF);
865 const float kRB24B1ConTubeRin = 10.0 / 2.;
867 const float kRB24B1ConTubeRou = 10.3 / 2.;
869 const float kRB24B1ConTubeL = 2.5;
871 const float kRB24B1CompL = 16.375;
872 const float kRB24B1BellowRi = 10.25 / 2.;
873 const float kRB24B1BellowRo = 11.40 / 2.;
874 const int kRB24B1NumberOfPlies = 27;
875 const float kRB24B1BellowUndL = 11.00;
876 const float kRB24B1PlieThickness = 0.015;
878 const float kRB24B1PlieRadius =
879 (kRB24B1BellowUndL + (2. * kRB24B1NumberOfPlies - 2.) * kRB24B1PlieThickness) / (4. * kRB24B1NumberOfPlies);
881 const float kRB24B1ProtTubeThickness = 0.02;
882 const float kRB24B1ProtTubeLength = 4.2;
884 const float kRB24B1RFlangeL = 1.86;
885 const float kRB24B1RFlangeLO = 0.26;
886 const float kRB24B1RFlangeRO = 11.18 / 2;
887 const float kRB24B1RFlangeRou = 15.20 / 2.;
888 const float kRB24B1RFlangeRecess = 0.98;
889 const float kRB24B1L = kRB24B1CompL + 2. * (kRB24B1RFlangeL - kRB24B1RFlangeRecess);
894 TGeoVolume* voRB24B1Bellow = makeBellow(
"RB24B1", kRB24B1NumberOfPlies, kRB24B1BellowRi, kRB24B1BellowRo,
895 kRB24B1BellowUndL, kRB24B1PlieRadius, kRB24B1PlieThickness);
896 voRB24B1Bellow->SetVisibility(0);
897 float newRB24B1BellowUndL = 2 * (
static_cast<TGeoTube*
>(voRB24B1Bellow->GetShape()))->GetDz();
901 TGeoPcon* shRB24B1BellowM =
new TGeoPcon(0., 360., 12);
904 shRB24B1BellowM->DefineSection(0,
z, 0., kRB24B1RFlangeRou);
905 z += kRB24B1RFlangeLO;
906 shRB24B1BellowM->DefineSection(1,
z, 0., kRB24B1RFlangeRou);
908 shRB24B1BellowM->DefineSection(2,
z, 0., kRB24B1RFlangeRou);
909 shRB24B1BellowM->DefineSection(3,
z, 0., kRB24B1ConTubeRou);
910 z = kRB24B1ConTubeL + kRB24B1RFlangeL - kRB24B1RFlangeRecess;
911 shRB24B1BellowM->DefineSection(4,
z, 0., kRB24B1ConTubeRou);
913 shRB24B1BellowM->DefineSection(5,
z, 0., kRB24B1BellowRo + kRB24B1ProtTubeThickness);
914 z += newRB24B1BellowUndL;
915 shRB24B1BellowM->DefineSection(6,
z, 0., kRB24B1BellowRo + kRB24B1ProtTubeThickness);
916 shRB24B1BellowM->DefineSection(7,
z, 0., kRB24B1ConTubeRou);
918 z = kRB24B1L - shRB24B1BellowM->GetZ(3);
919 shRB24B1BellowM->DefineSection(8,
z, 0., kRB24B1ConTubeRou);
920 shRB24B1BellowM->DefineSection(9,
z, 0., kRB24B1RFlangeRou);
921 z = kRB24B1L - shRB24B1BellowM->GetZ(1);
922 shRB24B1BellowM->DefineSection(10,
z, 0., kRB24B1RFlangeRou);
923 z = kRB24B1L - shRB24B1BellowM->GetZ(0);
924 shRB24B1BellowM->DefineSection(11,
z, 0., kRB24B1RFlangeRou);
926 TGeoVolume* voRB24B1BellowM =
new TGeoVolume(
"RB24B1BellowM", shRB24B1BellowM, kMedVacNF);
927 voRB24B1BellowM->SetVisibility(0);
930 TGeoVolume* voRB24B1CT =
new TGeoVolume(
"RB24B1CT",
new TGeoTube(kRB24B1ConTubeRin, kRB24B1ConTubeRou, kRB24B1ConTubeL / 2.), kMedSteelNF);
933 TGeoVolume* voRB24B1PT =
new TGeoVolume(
934 "RB24B1PT",
new TGeoTube(kRB24B1BellowRo, kRB24B1BellowRo + kRB24B1ProtTubeThickness, kRB24B1ProtTubeLength / 2.),
937 z = kRB24B1ConTubeL / 2. + (kRB24B1RFlangeL - kRB24B1RFlangeRecess);
939 voRB24B1BellowM->AddNode(voRB24B1CT, 1,
new TGeoTranslation(0., 0.,
z));
940 z += (kRB24B1ConTubeL / 2. + newRB24B1BellowUndL / 2.);
941 voRB24B1BellowM->AddNode(voRB24B1Bellow, 1,
new TGeoTranslation(0., 0.,
z));
942 z += (newRB24B1BellowUndL / 2. + kRB24B1ConTubeL / 2);
943 voRB24B1BellowM->AddNode(voRB24B1CT, 2,
new TGeoTranslation(0., 0.,
z));
944 z = kRB24B1ConTubeL + kRB24B1ProtTubeLength / 2. + 1. + kRB24B1RFlangeLO;
945 voRB24B1BellowM->AddNode(voRB24B1PT, 1,
new TGeoTranslation(0., 0.,
z));
946 z += kRB24B1ProtTubeLength + 0.6;
947 voRB24B1BellowM->AddNode(voRB24B1PT, 2,
new TGeoTranslation(0., 0.,
z));
955 TGeoPcon* shRB24B1RFlange =
new TGeoPcon(0., 360., 10);
957 shRB24B1RFlange->DefineSection(0,
z, 10.30 / 2., kRB24B1RFlangeRou);
960 shRB24B1RFlange->DefineSection(1,
z, 10.30 / 2., kRB24B1RFlangeRou);
961 shRB24B1RFlange->DefineSection(2,
z, 10.06 / 2., kRB24B1RFlangeRou);
963 shRB24B1RFlange->DefineSection(3,
z, 10.06 / 2., kRB24B1RFlangeRou);
965 shRB24B1RFlange->DefineSection(4,
z, 10.91 / 2., kRB24B1RFlangeRou);
967 shRB24B1RFlange->DefineSection(5,
z, 10.91 / 2., kRB24B1RFlangeRou);
968 shRB24B1RFlange->DefineSection(6,
z, 10.06 / 2., kRB24B1RFlangeRou);
970 shRB24B1RFlange->DefineSection(7,
z, 10.06 / 2., kRB24B1RFlangeRou);
971 shRB24B1RFlange->DefineSection(8,
z, kRB24B1RFlangeRO, kRB24B1RFlangeRou);
972 z += kRB24B1RFlangeLO;
973 shRB24B1RFlange->DefineSection(9,
z, kRB24B1RFlangeRO, kRB24B1RFlangeRou);
975 TGeoVolume* voRB24B1RFlange =
new TGeoVolume(
"RB24B1RFlange", shRB24B1RFlange, kMedSteelNF);
977 z = kRB24B1L - kRB24B1RFlangeL;
978 voRB24B1BellowM->AddNode(voRB24B1RFlange, 1,
new TGeoTranslation(0., 0.,
z));
980 voRB24B1BellowM->AddNode(voRB24B1RFlange, 2,
new TGeoCombiTrans(0., 0.,
z, rot180));
986 TGeoPcon* shRB24B1RCTFlange =
new TGeoPcon(0., 360., 6);
987 const float kRB24B1RCTFlangeRin = 8.06 / 2. + 0.05;
988 const float kRB24B1RCTFlangeL = 1.45;
991 shRB24B1RCTFlange->DefineSection(0,
z, kRB24B1RCTFlangeRin, 8.20 / 2.);
993 shRB24B1RCTFlange->DefineSection(1,
z, kRB24B1RCTFlangeRin, 8.20 / 2.);
994 shRB24B1RCTFlange->DefineSection(2,
z, kRB24B1RCTFlangeRin, 8.60 / 2.);
996 shRB24B1RCTFlange->DefineSection(3,
z, kRB24B1RCTFlangeRin, 8.60 / 2.);
997 shRB24B1RCTFlange->DefineSection(4,
z, kRB24B1RCTFlangeRin, 11.16 / 2.);
999 shRB24B1RCTFlange->DefineSection(5,
z, kRB24B1RCTFlangeRin, 11.16 / 2.);
1000 TGeoVolume* voRB24B1RCTFlange =
new TGeoVolume(
"RB24B1RCTFlange", shRB24B1RCTFlange, kMedCuNF);
1001 z = kRB24B1L - kRB24B1RCTFlangeL;
1003 voRB24B1BellowM->AddNode(voRB24B1RCTFlange, 1,
new TGeoTranslation(0., 0.,
z));
1007 TGeoPcon* shRB24B1RCT =
new TGeoPcon(0., 360., 3);
1008 const float kRB24B1RCTRin = 8.00 / 2.;
1009 const float kRB24B1RCTCRin = 8.99 / 2.;
1010 const float kRB24B1RCTL = 11.78;
1011 const float kRB24B1RCTSL = 10.48;
1012 const float kRB24B1RCTd = 0.03;
1015 shRB24B1RCT->DefineSection(0,
z, kRB24B1RCTCRin, kRB24B1RCTCRin + kRB24B1RCTd);
1016 z = kRB24B1RCTL - kRB24B1RCTSL;
1018 shRB24B1RCT->DefineSection(1,
z, kRB24B1RCTRin + 0.35, kRB24B1RCTRin + 0.35 + kRB24B1RCTd);
1019 z = kRB24B1RCTL - 0.03;
1020 shRB24B1RCT->DefineSection(2,
z, kRB24B1RCTRin, kRB24B1RCTRin + kRB24B1RCTd);
1022 TGeoVolume* voRB24B1RCT =
new TGeoVolume(
"RB24B1RCT", shRB24B1RCT, kMedCuNF);
1023 z = kRB24B1L - kRB24B1RCTL - 0.45;
1024 voRB24B1BellowM->AddNode(voRB24B1RCT, 1,
new TGeoTranslation(0., 0.,
z));
1032 TGeoPcon* shRB24B1TTF =
new TGeoPcon(0., 360., 7);
1035 shRB24B1TTF->DefineSection(0,
z, 6.30 / 2., 11.16 / 2.);
1037 shRB24B1TTF->DefineSection(1,
z, 6.30 / 2., 11.16 / 2.);
1038 shRB24B1TTF->DefineSection(2,
z, 6.30 / 2., 9.3 / 2.);
1040 shRB24B1TTF->DefineSection(3,
z, 6.30 / 2., 9.3 / 2.);
1042 shRB24B1TTF->DefineSection(4,
z, 6.30 / 2., 6.7 / 2.);
1044 shRB24B1TTF->DefineSection(5,
z, 6.30 / 2., 6.7 / 2.);
1047 shRB24B1TTF->DefineSection(6,
z, 8.05 / 2., 8.45 / 2.);
1048 TGeoVolume* voRB24B1TTF =
new TGeoVolume(
"RB24B1TTF", shRB24B1TTF, kMedSteelNF);
1050 voRB24B1BellowM->AddNode(voRB24B1TTF, 1,
new TGeoTranslation(0., 0.,
z));
1078 const float kRB24IpRFD1 = 0.68;
1079 const float kRB24IpRFD2 = 0.30;
1080 const float kRB24IpRFD3 = 0.10;
1081 const float kRB24IpRFD4 = 0.35;
1082 const float kRB24IpRFD5 = 0.55;
1084 const float kRB24IpRFRo = 15.20 / 2.;
1085 const float kRB24IpRFRi1 = 6.30 / 2.;
1086 const float kRB24IpRFRi2 = 6.00 / 2.;
1087 const float kRB24IpRFRi3 = 5.84 / 2.;
1088 const float kRB24IpRFRi4 = 6.00 / 2.;
1089 const float kRB24IpRFRi5 = 10.50 / 2.;
1091 TGeoPcon* shRB24IpRF =
new TGeoPcon(0., 360., 9);
1093 shRB24IpRF->DefineSection(0, z0, kRB24IpRFRi1, kRB24IpRFRo);
1095 shRB24IpRF->DefineSection(1, z0, kRB24IpRFRi2, kRB24IpRFRo);
1097 shRB24IpRF->DefineSection(2, z0, kRB24IpRFRi2, kRB24IpRFRo);
1098 shRB24IpRF->DefineSection(3, z0, kRB24IpRFRi3, kRB24IpRFRo);
1100 shRB24IpRF->DefineSection(4, z0, kRB24IpRFRi3, kRB24IpRFRo);
1101 shRB24IpRF->DefineSection(5, z0, kRB24IpRFRi4, kRB24IpRFRo);
1103 shRB24IpRF->DefineSection(6, z0, kRB24IpRFRi4, kRB24IpRFRo);
1104 shRB24IpRF->DefineSection(7, z0, kRB24IpRFRi5, kRB24IpRFRo);
1106 shRB24IpRF->DefineSection(8, z0, kRB24IpRFRi5, kRB24IpRFRo);
1108 TGeoVolume* voRB24IpRF =
new TGeoVolume(
"RB24IpRF", shRB24IpRF, kMedSteel);
1116 float kRB24IpSTTL = 32.84;
1117 float kRB24IpSTTRi = 5.80 / 2.;
1118 float kRB24IpSTTRo = 6.00 / 2.;
1119 TGeoVolume* voRB24IpSTT =
new TGeoVolume(
"RB24IpSTT",
new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTTL / 2.), kMedSteelNF);
1121 float kRB24IpSTCL = 0.4;
1123 float kRB24IpSTSL = 9.00 - 2. * kRB24IpSTCL;
1125 float kRB24IpSTSZ = 7.00 + kRB24IpSTCL;
1126 TGeoVolume* voRB24IpSTS =
new TGeoVolume(
"RB24IpSTS",
new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTSL / 2.), kMedSteelNF);
1128 voRB24IpSTT->AddNode(voRB24IpSTS, 1,
new TGeoTranslation(0., 0., kRB24IpSTSZ - kRB24IpSTTL / 2. + kRB24IpSTSL / 2.));
1132 float kRB24IpSTCRi = kRB24IpSTTRo + 0.25;
1134 float kRB24IpSTCRo = kRB24IpSTTRo + 0.35;
1136 float kRB24IpSTCL1 = 0.15;
1138 float kRB24IpSTCL2 = 0.15;
1140 float kRB24IpSTCL3 = 0.10;
1143 TGeoPcon* shRB24IpSTC =
new TGeoPcon(0., 360., 5);
1145 shRB24IpSTC->DefineSection(0, z0, kRB24IpSTCRi, kRB24IpSTCRo);
1147 shRB24IpSTC->DefineSection(1, z0, kRB24IpSTCRi, kRB24IpSTCRo);
1148 shRB24IpSTC->DefineSection(2, z0, kRB24IpSTTRo, kRB24IpSTCRo);
1150 shRB24IpSTC->DefineSection(3, z0, kRB24IpSTTRo, kRB24IpSTCRo);
1152 shRB24IpSTC->DefineSection(4, z0, kRB24IpSTTRo, kRB24IpSTTRo + 0.001);
1153 TGeoVolume* voRB24IpSTC =
new TGeoVolume(
"RB24IpSTC", shRB24IpSTC, kMedSteel);
1157 float kRB24IpShellL = 4.45;
1158 float kRB24IpShellD = 0.10;
1159 float kRB24IpShellCTRi = 6.70 / 2.;
1160 float kRB24IpShellCTL = 1.56;
1161 float kRB24IpShellCARi = 17.80 / 2.;
1162 float kRB24IpShellCCRo = 18.20 / 2.;
1164 TGeoPcon* shRB24IpShell =
new TGeoPcon(0., 360., 7);
1166 shRB24IpShell->DefineSection(0, z0, kRB24IpShellCTRi, kRB24IpShellCTRi + kRB24IpShellD);
1167 z0 += kRB24IpShellCTL;
1168 shRB24IpShell->DefineSection(1, z0, kRB24IpShellCTRi, kRB24IpShellCTRi + kRB24IpShellD);
1169 shRB24IpShell->DefineSection(2, z0, kRB24IpShellCTRi, kRB24IpShellCARi + kRB24IpShellD);
1170 z0 += kRB24IpShellD;
1171 shRB24IpShell->DefineSection(3, z0, kRB24IpShellCARi, kRB24IpShellCARi + kRB24IpShellD);
1172 z0 = kRB24IpShellL - kRB24IpShellD;
1173 shRB24IpShell->DefineSection(4, z0, kRB24IpShellCARi, kRB24IpShellCARi + kRB24IpShellD);
1174 shRB24IpShell->DefineSection(5, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
1176 shRB24IpShell->DefineSection(6, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
1177 TGeoVolume* voRB24IpShell =
new TGeoVolume(
"RB24IpShell", shRB24IpShell, kMedSteel);
1179 TGeoPcon* shRB24IpShellM = makeMotherFromTemplate(shRB24IpShell, 0, 6, kRB24IpShellCTRi, 13);
1181 for (
int i = 0;
i < 6;
i++) {
1182 z = 2. * kRB24IpShellL - shRB24IpShellM->GetZ(5 -
i);
1183 float rmin = shRB24IpShellM->GetRmin(5 -
i);
1184 float rmax = shRB24IpShellM->GetRmax(5 -
i);
1185 shRB24IpShellM->DefineSection(7 +
i,
z, rmin, rmax);
1188 TGeoVolume* voRB24IpShellM =
new TGeoVolume(
"RB24IpShellM", shRB24IpShellM, kMedVac);
1189 voRB24IpShellM->SetVisibility(0);
1190 voRB24IpShellM->AddNode(voRB24IpShell, 1, gGeoIdentity);
1191 voRB24IpShellM->AddNode(voRB24IpShell, 2,
new TGeoCombiTrans(0., 0., 2. * kRB24IpShellL, rot180));
1196 TGeoVolume* voRB24IpPE =
new TGeoVolume(
"voRB24IpPE",
new TGeoTube(0.9, 1., 2.54 / 2.), kMedSteel);
1197 float kRB24IpPEAR = 5.5;
1199 for (
int i = 0;
i < 15;
i++) {
1200 float phi = float(
i) * 24.;
1201 float x = kRB24IpPEAR * TMath::Cos(kDegRad * phi);
1202 float y = kRB24IpPEAR * TMath::Sin(kDegRad * phi);
1203 voRB24IpShellM->AddNode(voRB24IpPE,
i + 1,
new TGeoTranslation(
x,
y, kRB24IpShellL));
1230 const float kRB24VMABCRBT1Ri = 10.0 / 2.;
1231 const float kRB24VMABCRBT1Ro = 10.3 / 2.;
1232 const float kRB24VMABCRBT1L = 11.5;
1233 const float kRB24VMABCRBT1L2 = 8.;
1234 const float kRB24VMABCL = 28.375;
1236 TGeoTube* shRB24VMABCRBT1 =
new TGeoTube(kRB24VMABCRBT1Ri, kRB24VMABCRBT1Ro, kRB24VMABCRBT1L / 2.);
1237 shRB24VMABCRBT1->SetName(
"RB24VMABCRBT1");
1238 TGeoTube* shRB24VMABCRBT1o =
new TGeoTube(0., kRB24VMABCRBT1Ro, kRB24VMABCRBT1L / 2.);
1239 shRB24VMABCRBT1o->SetName(
"RB24VMABCRBT1o");
1240 TGeoTube* shRB24VMABCRBT1o2 =
new TGeoTube(0., kRB24VMABCRBT1Ro + 0.3, kRB24VMABCRBT1L / 2.);
1241 shRB24VMABCRBT1o2->SetName(
"RB24VMABCRBT1o2");
1243 TGeoVolume* voRB24VMABCRBT12 =
new TGeoVolume(
1244 "RB24VMABCRBT12",
new TGeoTubeSeg(kRB24VMABCRBT1Ro, kRB24VMABCRBT1Ro + 0.3, kRB24VMABCRBT1L2 / 2., 220., 320.),
1248 const float kRB24VMABCRBT2Ri = 6.0 / 2.;
1249 const float kRB24VMABCRBT2Ro = 6.3 / 2.;
1250 const float kRB24VMABCRBF2Ro = 11.4 / 2.;
1251 const float kRB24VMABCRBT2L = 5.95 + 2.;
1252 const float kRB24VMABCRBF2L = 1.75;
1253 TGeoTube* shRB24VMABCRBT2 =
new TGeoTube(kRB24VMABCRBT2Ri, kRB24VMABCRBT2Ro, kRB24VMABCRBT2L / 2.);
1254 shRB24VMABCRBT2->SetName(
"RB24VMABCRBT2");
1255 TGeoTube* shRB24VMABCRBT2i =
new TGeoTube(0., kRB24VMABCRBT2Ri, kRB24VMABCRBT2L / 2. + 2.);
1256 shRB24VMABCRBT2i->SetName(
"RB24VMABCRBT2i");
1257 TGeoCombiTrans* tRBT2 =
new TGeoCombiTrans(-11.5 + kRB24VMABCRBT2L / 2., 0., 7.2 - kRB24VMABCRBT1L / 2., rotxz);
1258 tRBT2->SetName(
"tRBT2");
1259 tRBT2->RegisterYourself();
1260 TGeoCompositeShape* shRB24VMABCRBT2c =
new TGeoCompositeShape(
"shRB24VMABCRBT2c",
"RB24VMABCRBT2:tRBT2-RB24VMABCRBT1o");
1261 TGeoVolume* voRB24VMABCRBT2 =
new TGeoVolume(
"shRB24VMABCRBT2", shRB24VMABCRBT2c, kMedSteelNF);
1264 TGeoVolume* voRB24VMABCRBF2 =
1265 new TGeoVolume(
"RB24VMABCRBF2",
new TGeoTube(kRB24VMABCRBT2Ro, kRB24VMABCRBF2Ro, kRB24VMABCRBF2L / 2.), kMedSteelNF);
1267 TGeoVolume* voRB24VMABCRBF2B =
new TGeoVolume(
"RB24VMABCRBF2B",
new TGeoTube(0., kRB24VMABCRBF2Ro, kRB24VMABCRBF2L / 2.), kMedSteelNF);
1270 const float kRB24VMABCRBT3Ri = 3.5 / 2.;
1271 const float kRB24VMABCRBT3Ro = 3.8 / 2.;
1272 const float kRB24VMABCRBF3Ro = 7.0 / 2.;
1273 const float kRB24VMABCRBT3L = 4.95 + 2.;
1274 const float kRB24VMABCRBF3L = 1.27;
1275 TGeoTube* shRB24VMABCRBT3 =
new TGeoTube(kRB24VMABCRBT3Ri, kRB24VMABCRBT3Ro, kRB24VMABCRBT3L / 2);
1276 shRB24VMABCRBT3->SetName(
"RB24VMABCRBT3");
1277 TGeoTube* shRB24VMABCRBT3i =
new TGeoTube(0., kRB24VMABCRBT3Ri, kRB24VMABCRBT3L / 2. + 2.);
1278 shRB24VMABCRBT3i->SetName(
"RB24VMABCRBT3i");
1279 TGeoCombiTrans* tRBT3 =
new TGeoCombiTrans(0., 10.5 - kRB24VMABCRBT3L / 2., 7.2 - kRB24VMABCRBT1L / 2., rotyz);
1280 tRBT3->SetName(
"tRBT3");
1281 tRBT3->RegisterYourself();
1282 TGeoCompositeShape* shRB24VMABCRBT3c =
1283 new TGeoCompositeShape(
"shRB24VMABCRBT3c",
"RB24VMABCRBT3:tRBT3-RB24VMABCRBT1o");
1284 TGeoVolume* voRB24VMABCRBT3 =
new TGeoVolume(
"shRB24VMABCRBT3", shRB24VMABCRBT3c, kMedSteel);
1287 TGeoVolume* voRB24VMABCRBF3 =
new TGeoVolume(
"RB24VMABCRBF3",
new TGeoTube(kRB24VMABCRBT3Ro, kRB24VMABCRBF3Ro, kRB24VMABCRBF3L / 2.), kMedSteelNF);
1290 const float kRB24VMABCRBT4Ri = 6.0 / 2.;
1291 const float kRB24VMABCRBT4Ro = 6.4 / 2.;
1292 const float kRB24VMABCRBT4L = 6.6;
1293 TGeoTube* shRB24VMABCRBT4 =
new TGeoTube(kRB24VMABCRBT4Ri, kRB24VMABCRBT4Ro, kRB24VMABCRBT4L / 2.);
1294 shRB24VMABCRBT4->SetName(
"RB24VMABCRBT4");
1295 TGeoCombiTrans* tRBT4 =
new TGeoCombiTrans(0., -11. + kRB24VMABCRBT4L / 2., 7.2 - kRB24VMABCRBT1L / 2., rotyz);
1296 tRBT4->SetName(
"tRBT4");
1297 tRBT4->RegisterYourself();
1298 TGeoCompositeShape* shRB24VMABCRBT4c =
1299 new TGeoCompositeShape(
"shRB24VMABCRBT4c",
"RB24VMABCRBT4:tRBT4-RB24VMABCRBT1o2");
1300 TGeoVolume* voRB24VMABCRBT4 =
new TGeoVolume(
"shRB24VMABCRBT4", shRB24VMABCRBT4c, kMedSteelNF);
1301 TGeoCompositeShape* shRB24VMABCRB =
1302 new TGeoCompositeShape(
"shRB24VMABCRB",
"RB24VMABCRBT1-(RB24VMABCRBT2i:tRBT2+RB24VMABCRBT3i:tRBT3)");
1303 TGeoVolume* voRB24VMABCRBI =
new TGeoVolume(
"RB24VMABCRBI", shRB24VMABCRB, kMedSteelNF);
1306 const float kRB24VMABCRBBx = 16.0;
1307 const float kRB24VMABCRBBy = 1.5;
1308 const float kRB24VMABCRBBz = 15.0;
1311 const float kRB24VMABCTz = 7.2;
1313 const float kRB24VMABCPz = 3.6;
1314 const float kRB24VMABCPy = -12.5;
1316 TGeoVolume* voRB24VMABCRBP =
new TGeoVolume(
1317 "RB24VMABCRBP",
new TGeoBBox(kRB24VMABCRBBx / 2., kRB24VMABCRBBy / 2., kRB24VMABCRBBz / 2.), kMedSteelNF);
1321 TGeoPcon* shRB24VMABCPirani =
new TGeoPcon(0., 360., 15);
1324 shRB24VMABCPirani->DefineSection(0,
z, 0.8, kRB24VMABCRBF3Ro);
1325 z += kRB24VMABCRBF3L;
1326 shRB24VMABCPirani->DefineSection(1,
z, 0.8, kRB24VMABCRBF3Ro);
1327 shRB24VMABCPirani->DefineSection(2,
z, 0.8, 1.0);
1330 shRB24VMABCPirani->DefineSection(3,
z, 0.8, 1.0);
1332 shRB24VMABCPirani->DefineSection(4,
z, 0.8, 1.75);
1334 shRB24VMABCPirani->DefineSection(5,
z, 0.8, 1.75);
1335 shRB24VMABCPirani->DefineSection(6,
z, 0.8, 1.0);
1337 shRB24VMABCPirani->DefineSection(7,
z, 0.8, 1.0);
1338 shRB24VMABCPirani->DefineSection(8,
z, 0.8, 2.5);
1340 shRB24VMABCPirani->DefineSection(9,
z, 0.80, 2.50);
1341 shRB24VMABCPirani->DefineSection(10,
z, 1.55, 1.75);
1343 shRB24VMABCPirani->DefineSection(11,
z, 1.55, 1.75);
1344 shRB24VMABCPirani->DefineSection(11,
z, 0.00, 1.75);
1346 shRB24VMABCPirani->DefineSection(12,
z, 0.00, 1.75);
1347 shRB24VMABCPirani->DefineSection(13,
z, 0.00, 0.75);
1349 shRB24VMABCPirani->DefineSection(14,
z, 0.00, 0.75);
1350 TGeoVolume* voRB24VMABCPirani =
new TGeoVolume(
"RB24VMABCPirani", shRB24VMABCPirani, kMedSteelNF);
1357 TGeoVolumeAssembly* voRB24VMABCRB =
new TGeoVolumeAssembly(
"RB24VMABCRB");
1359 voRB24VMABCRB->AddNode(voRB24VMABCRBI, 1, gGeoIdentity);
1361 voRB24VMABCRB->AddNode(voRB24VMABCRBP, 1,
1362 new TGeoTranslation(0., kRB24VMABCPy + kRB24VMABCRBBy / 2.,
1363 kRB24VMABCRBBz / 2. - kRB24VMABCRBT1L / 2. + kRB24VMABCPz));
1365 voRB24VMABCRB->AddNode(voRB24VMABCRBT2, 1, gGeoIdentity);
1367 voRB24VMABCRB->AddNode(voRB24VMABCRBF2, 1,
new TGeoCombiTrans(kRB24VMABCPy + kRB24VMABCRBF2L / 2., 0., kRB24VMABCTz - kRB24VMABCRBT1L / 2., rotxz));
1369 voRB24VMABCRB->AddNode(voRB24VMABCRBF2B, 1,
new TGeoCombiTrans(kRB24VMABCPy - kRB24VMABCRBF2L / 2., 0., kRB24VMABCTz - kRB24VMABCRBT1L / 2., rotxz));
1371 voRB24VMABCRB->AddNode(voRB24VMABCRBT3, 1, gGeoIdentity);
1373 voRB24VMABCRB->AddNode(voRB24VMABCRBF3, 1,
new TGeoCombiTrans(0., 11.2 - kRB24VMABCRBF3L / 2., kRB24VMABCTz - kRB24VMABCRBT1L / 2., rotyz));
1375 voRB24VMABCRB->AddNode(voRB24VMABCPirani, 1,
new TGeoCombiTrans(0., 11.2, kRB24VMABCTz - kRB24VMABCRBT1L / 2., rotyz));
1377 voRB24VMABCRB->AddNode(voRB24VMABCRBT4, 1, gGeoIdentity);
1379 voRB24VMABCRB->AddNode(voRB24VMABCRBT12, 1,
new TGeoTranslation(0., 0., kRB24VMABCRBT1L2 / 2. - kRB24VMABCRBT1L / 2. + 2.8));
1385 const float kRB24VMABBEConTubeRin = 10.0 / 2.;
1387 const float kRB24VMABBEConTubeRou = 10.3 / 2.;
1389 const float kRB24VMABBEConTubeL1 = 0.9;
1390 const float kRB24VMABBEConTubeL2 = 2.6;
1393 TGeoPcon* shRB24VMABBEBellowM =
new TGeoPcon(0., 360., 6);
1396 shRB24VMABBEBellowM->DefineSection(0,
z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
1397 z += kRB24VMABBEConTubeL1;
1398 shRB24VMABBEBellowM->DefineSection(1,
z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
1399 shRB24VMABBEBellowM->DefineSection(2,
z, kRB24B1BellowRi, kRB24B1BellowRo + kRB24B1ProtTubeThickness);
1400 z += newRB24B1BellowUndL;
1401 shRB24VMABBEBellowM->DefineSection(3,
z, kRB24B1BellowRi, kRB24B1BellowRo + kRB24B1ProtTubeThickness);
1402 shRB24VMABBEBellowM->DefineSection(4,
z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
1403 z += kRB24VMABBEConTubeL2;
1404 shRB24VMABBEBellowM->DefineSection(5,
z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
1405 TGeoVolume* voRB24VMABBEBellowM =
new TGeoVolume(
"RB24VMABBEBellowM", shRB24VMABBEBellowM, kMedVacNF);
1406 voRB24VMABBEBellowM->SetVisibility(0);
1409 TGeoVolume* voRB24VMABBECT1 =
new TGeoVolume(
1410 "RB24VMABBECT1",
new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou, kRB24VMABBEConTubeL1 / 2.), kMedSteelNF);
1412 TGeoVolume* voRB24VMABBECT2 =
new TGeoVolume(
1413 "RB24VMABBECT2",
new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou, kRB24VMABBEConTubeL2 / 2.), kMedSteelNF);
1414 z = kRB24VMABBEConTubeL1 / 2.;
1415 voRB24VMABBEBellowM->AddNode(voRB24VMABBECT1, 1,
new TGeoTranslation(0., 0.,
z));
1416 z += kRB24VMABBEConTubeL1 / 2.;
1417 z += newRB24B1BellowUndL / 2.;
1418 voRB24VMABBEBellowM->AddNode(voRB24B1Bellow, 2,
new TGeoTranslation(0., 0.,
z));
1419 z += newRB24B1BellowUndL / 2.;
1420 z += kRB24VMABBEConTubeL2 / 2.;
1421 voRB24VMABBEBellowM->AddNode(voRB24VMABBECT2, 1,
new TGeoTranslation(0., 0.,
z));
1422 z += kRB24VMABBEConTubeL2 / 2.;
1424 voRB24VMABCRB->AddNode(voRB24VMABBEBellowM, 1,
new TGeoTranslation(0., 0., kRB24VMABCRBT1L / 2.));
1428 voRB24VMABCRB->AddNode(voRB24B1RFlange, 3,
new TGeoCombiTrans(0., 0., -kRB24VMABCRBT1L / 2. + 0.86, rot180));
1430 z = kRB24VMABCRBT1L / 2. + newRB24B1BellowUndL + kRB24VMABBEConTubeL1 + kRB24VMABBEConTubeL2;
1431 voRB24VMABCRB->AddNode(voRB24B1RFlange, 4,
new TGeoTranslation(0., 0.,
z - 0.86));
1438 TGeoPcon* shRB24VMABCTT =
new TGeoPcon(0., 360., 7);
1440 shRB24VMABCTT->DefineSection(0,
z, 6.3 / 2., 11.16 / 2.);
1442 shRB24VMABCTT->DefineSection(1,
z, 6.3 / 2., 11.16 / 2.);
1443 shRB24VMABCTT->DefineSection(2,
z, 6.3 / 2., 9.30 / 2.);
1445 shRB24VMABCTT->DefineSection(3,
z, 6.3 / 2., 9.30 / 2.);
1446 shRB24VMABCTT->DefineSection(4,
z, 6.3 / 2., 6.70 / 2.);
1447 z += (20.35 - 0.63);
1448 shRB24VMABCTT->DefineSection(5,
z, 6.3 / 2., 6.7 / 2.);
1450 shRB24VMABCTT->DefineSection(6,
z, 6.3 / 2., 6.7 / 2.);
1451 TGeoVolume* voRB24VMABCTT =
new TGeoVolume(
"RB24VMABCTT", shRB24VMABCTT, kMedSteelNF);
1452 voRB24VMABCRB->AddNode(voRB24VMABCTT, 1,
new TGeoTranslation(0., 0., -kRB24VMABCRBT1L / 2. - 1.));
1457 TGeoPcon* shRB24VMABCCTFlange =
new TGeoPcon(0., 360., 6);
1458 const float kRB24VMABCCTFlangeRin = 6.36 / 2.;
1459 const float kRB24VMABCCTFlangeL = 1.30;
1462 shRB24VMABCCTFlange->DefineSection(0,
z, kRB24VMABCCTFlangeRin, 6.5 / 2.);
1464 shRB24VMABCCTFlange->DefineSection(1,
z, kRB24VMABCCTFlangeRin, 6.5 / 2.);
1465 shRB24VMABCCTFlange->DefineSection(2,
z, kRB24VMABCCTFlangeRin, 6.9 / 2.);
1467 shRB24VMABCCTFlange->DefineSection(3,
z, kRB24VMABCCTFlangeRin, 6.9 / 2.);
1468 shRB24VMABCCTFlange->DefineSection(4,
z, kRB24VMABCCTFlangeRin, 11.16 / 2.);
1470 shRB24VMABCCTFlange->DefineSection(5,
z, kRB24VMABCCTFlangeRin, 11.16 / 2.);
1471 TGeoVolume* voRB24VMABCCTFlange =
new TGeoVolume(
"RB24VMABCCTFlange", shRB24VMABCCTFlange, kMedCuNF);
1475 TGeoPcon* shRB24VMABCCT =
new TGeoPcon(0., 360., 4);
1476 const float kRB24VMABCCTRin = 6.30 / 2.;
1477 const float kRB24VMABCCTCRin = 7.29 / 2.;
1478 const float kRB24VMABCCTL = 11.88;
1479 const float kRB24VMABCCTSL = 10.48;
1480 const float kRB24VMABCCTd = 0.03;
1482 shRB24VMABCCT->DefineSection(0,
z, kRB24VMABCCTCRin, kRB24VMABCCTCRin + kRB24VMABCCTd);
1483 z = kRB24VMABCCTL - kRB24VMABCCTSL;
1484 shRB24VMABCCT->DefineSection(1,
z, kRB24VMABCCTRin + 0.35, kRB24VMABCCTRin + 0.35 + kRB24VMABCCTd);
1485 z = kRB24VMABCCTL - kRB24VMABCCTFlangeL;
1486 shRB24VMABCCT->DefineSection(2,
z, kRB24VMABCCTRin, kRB24VMABCCTRin + kRB24VMABCCTd);
1488 shRB24VMABCCT->DefineSection(3,
z, kRB24VMABCCTRin, kRB24VMABCCTRin + kRB24VMABCCTd);
1490 TGeoVolume* voRB24VMABCCT =
new TGeoVolume(
"RB24VMABCCT", shRB24VMABCCT, kMedCuNF);
1492 TGeoVolumeAssembly* voRB24VMABRFCT =
new TGeoVolumeAssembly(
"RB24VMABRFCT");
1493 voRB24VMABRFCT->AddNode(voRB24VMABCCT, 1, gGeoIdentity);
1494 voRB24VMABRFCT->AddNode(voRB24VMABCCTFlange, 1,
new TGeoTranslation(0., 0., kRB24VMABCCTL - kRB24VMABCCTFlangeL));
1496 z = kRB24VMABCRBT1L / 2. + newRB24B1BellowUndL + kRB24VMABBEConTubeL1 + kRB24VMABBEConTubeL2 - kRB24VMABCCTL + 1.;
1497 voRB24VMABCRB->AddNode(voRB24VMABRFCT, 1,
new TGeoTranslation(0., 0.,
z));
1505 TGeoVolumeAssembly* voRB24C =
new TGeoVolumeAssembly(
"RB24C");
1506 voRB24C->AddNode(voRB24cCuTubeM, 1, gGeoIdentity);
1507 z = -kRB24cCuTubeL / 2 + kRB24CuTubeFL / 2.;
1508 voRB24C->AddNode(voRB24CuTubeF, 1,
new TGeoTranslation(0., 0.,
z));
1512 z = -kRB24cCuTubeL / 2. - kRB24B1L;
1513 voRB24C->AddNode(voRB24B1BellowM, 2,
new TGeoTranslation(0., 0.,
z));
1522 const float kRB242CuTubeL = 350.0;
1526 TGeoVolume* voRB242CuOvTransMo =
new TGeoVolume(
"voRB24CuOvTransMo",
new TGeoTube(0., 4.75, 10.), kMedAir);
1527 const int nTrans = 10;
1528 TGeoVolume* voRB242CuOvTransV[nTrans];
1529 TGeoVolume* voRB242CuOvTransI[nTrans];
1533 for (
int i = 0;
i < nTrans;
i++) {
1537 snprintf(vname, 20,
"voRB242CuOvTransV%d",
i);
1538 voRB242CuOvTransV[
i] =
new TGeoVolume(vname,
new TGeoEltu(dovX, dovY, 1.0), kMedCuHC);
1539 snprintf(vname, 20,
"voRB242CuOvTransI%d",
i);
1540 voRB242CuOvTransI[
i] =
new TGeoVolume(vname,
new TGeoEltu(dovX - 0.2, dovY - 0.2, 1.0), kMedVacHC);
1541 voRB242CuOvTransV[
i]->AddNode(voRB242CuOvTransI[
i], 1, gGeoIdentity);
1542 voRB242CuOvTransMo->AddNode(voRB242CuOvTransV[
i], 1,
new TGeoTranslation(0., 0., dovZ));
1546 TGeoVolume* voRB242CuTubeM =
new TGeoVolume(
"voRB242CuTubeM",
new TGeoTube(0., kRB24CuTubeRo, 10.), kMedVacHC);
1547 TGeoVolume* voRB242CuTube =
new TGeoVolume(
"voRB242CuTube",
new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, 10.), kMedCuHC);
1548 voRB242CuTubeM->AddNode(voRB242CuTube, 1, gGeoIdentity);
1549 TGeoVolume* voRB242CuOvalM =
new TGeoVolume(
"voRB242CuOvalM",
new TGeoEltu(3.375, 4.75, 135.), kMedCuHC);
1550 TGeoVolume* voRB242CuOval =
new TGeoVolume(
"voRB242CuOval",
new TGeoEltu(3.175, 4.55, 135.), kMedVacHC);
1551 voRB242CuOvalM->AddNode(voRB242CuOval, 1, gGeoIdentity);
1553 TGeoVolumeAssembly* voRB242 =
new TGeoVolumeAssembly(
"RB242");
1554 voRB242->AddNode(voRB242CuOvalM, 1, gGeoIdentity);
1555 z = -kRB242CuTubeL / 2 + kRB24CuTubeFL / 2.;
1556 voRB242->AddNode(voRB24CuTubeF, 3,
new TGeoTranslation(0., 0.,
z));
1557 z = +kRB242CuTubeL / 2 - kRB24CuTubeFL / 2.;
1558 voRB242->AddNode(voRB24CuTubeF, 4,
new TGeoTranslation(0., 0.,
z));
1560 voRB242->AddNode(voRB242CuOvTransMo, 1,
new TGeoCombiTrans(0., 0.,
z, rot180));
1562 voRB242->AddNode(voRB242CuOvTransMo, 2,
new TGeoTranslation(0., 0.,
z));
1564 voRB242->AddNode(voRB242CuTubeM, 1,
new TGeoTranslation(0., 0.,
z));
1566 voRB242->AddNode(voRB242CuTubeM, 2,
new TGeoTranslation(0., 0.,
z));
1567 z = -kRB24cCuTubeL / 2 - kRB24B1L - kRB242CuTubeL / 2.;
1568 voRB24C->AddNode(voRB242, 1,
new TGeoTranslation(0., 0.,
z));
1574 const float kRB243CuTubeL = 297.85 - (kRB24VMABCL - kRB24B1L);
1576 TGeoVolume* voRB243CuTubeM =
new TGeoVolume(
"voRB243CuTubeM",
new TGeoTube(0., kRB24CuTubeRo, (kRB243CuTubeL) / 2.), kMedVacNF);
1577 TGeoVolume* voRB243CuTube =
new TGeoVolume(
"voRB243CuTube",
new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, (kRB243CuTubeL) / 2.), kMedCuNF);
1578 voRB243CuTubeM->AddNode(voRB243CuTube, 1, gGeoIdentity);
1580 TGeoVolumeAssembly* voRB243 =
new TGeoVolumeAssembly(
"RB243");
1581 TGeoVolumeAssembly* voRB243A =
new TGeoVolumeAssembly(
"RB243A");
1583 voRB243A->AddNode(voRB243CuTube, 1, gGeoIdentity);
1584 z = -kRB243CuTubeL / 2 + kRB24CuTubeFL / 2.;
1585 voRB243A->AddNode(voRB24CuTubeF, 5,
new TGeoTranslation(0., 0.,
z));
1586 z = +kRB243CuTubeL / 2 - kRB24CuTubeFL / 2.;
1587 voRB243A->AddNode(voRB24CuTubeF, 6,
new TGeoTranslation(0., 0.,
z));
1589 z = +kRB243CuTubeL / 2 + (kRB24VMABCRBT1L / 2) + 1;
1590 voRB243A->AddNode(voRB24VMABCRB, 2,
new TGeoTranslation(0., 0.,
z));
1592 z = -kRB243CuTubeL / 2. - kRB24VMABCL;
1593 voRB243->AddNode(voRB243A, 1,
new TGeoTranslation(0., 0.,
z));
1594 z = -(1.5 * kRB243CuTubeL + 2. * kRB24VMABCL);
1595 voRB243->AddNode(voRB243A, 2,
new TGeoTranslation(0., 0.,
z));
1597 z = -2. * (kRB243CuTubeL + kRB24VMABCL) - (kRB24VMABCL - kRB24VMABCRBT1L / 2) + 1.;
1598 voRB243->AddNode(voRB24VMABCRB, 3,
new TGeoTranslation(0., 0.,
z));
1600 z = -kRB24cCuTubeL / 2 - kRB24B1L - kRB242CuTubeL;
1601 voRB24C->AddNode(voRB243, 1,
new TGeoTranslation(0., 0.,
z));
1605 caveRB24->AddNode(voRB24C, 1,
new TGeoCombiTrans(0., 0., -kRB24CL / 2 + kRB24cCuTubeL / 2, rot180));
1675 const float kRB26s12TubeL0 = 459.45;
1676 const float kRB26s12TubeL2 = 47.21;
1677 const float kRB26s12TubeL = kRB26s12TubeL0 - kRB26s12TubeL2;
1685 TGeoPcon* shRB26s12Tube =
new TGeoPcon(0., 360., 4);
1687 shRB26s12Tube->DefineSection(0, 0.00, 5.84 / 2., 6.00 / 2.);
1688 shRB26s12Tube->DefineSection(1, 207.21, 5.84 / 2., 6.00 / 2.);
1690 shRB26s12Tube->DefineSection(2, 207.21, 5.84 / 2., 6.14 / 2.);
1691 shRB26s12Tube->DefineSection(3, kRB26s12TubeL, 5.84 / 2 + 2.576, 6.14 / 2. + 2.576);
1694 TGeoPcon* shRB26s12msTube =
new TGeoPcon(0., 360., 3);
1696 shRB26s12msTube->DefineSection(0, 0.00, shRB26s12Tube->GetRmin(3), shRB26s12Tube->GetRmax(3));
1697 shRB26s12msTube->DefineSection(1, 452.30 - kRB26s12TubeL, 12.0 / 2., 12.3 / 2.);
1699 shRB26s12msTube->DefineSection(2, kRB26s12TubeL2, 12.0 / 2., 12.3 / 2.);
1701 TGeoVolume* voRB26s12Tube =
new TGeoVolume(
"RB26s12Tube", shRB26s12Tube, kMedSteelHC);
1702 TGeoVolume* voRB26s12msTube =
new TGeoVolume(
"RB26s12msTube", shRB26s12msTube, kMedSteelHC);
1704 TGeoVolume* voRB26s12TubeIns =
new TGeoVolume(
"RB26s12TubeIns", makeInsulationFromTemplate(shRB26s12Tube), kMedInsu);
1705 TGeoVolume* voRB26s12msTubeIns =
new TGeoVolume(
"RB26s12msTubeIns", makeInsulationFromTemplate(shRB26s12msTube), kMedInsu);
1706 voRB26s12Tube->AddNode(voRB26s12TubeIns, 1, gGeoIdentity);
1707 voRB26s12msTube->AddNode(voRB26s12msTubeIns, 1, gGeoIdentity);
1709 TGeoVolume* voRB26s12TubeM =
new TGeoVolume(
"RB26s12TubeM", makeMotherFromTemplate(shRB26s12Tube), kMedVacHC);
1710 voRB26s12TubeM->AddNode(voRB26s12Tube, 1, gGeoIdentity);
1711 TGeoVolume* voRB26s12msTubeM =
new TGeoVolume(
"RB26s12msTubeM", makeMotherFromTemplate(shRB26s12msTube), kMedVacHC);
1712 voRB26s12msTubeM->AddNode(voRB26s12msTube, 1, gGeoIdentity);
1718 const float kRB26s2CompL = 30.65;
1719 const float kRB26s2BellowRo = 14.38 / 2.;
1720 const float kRB26s2BellowRi = 12.12 / 2.;
1721 const int kRB26s2NumberOfPlies = 14;
1722 const float kRB26s2BellowUndL = 10.00;
1723 const float kRB26s2PlieThickness = 0.025;
1724 const float kRB26s2ConnectionPlieR = 0.21;
1726 const float kRB26s2PlieR = (kRB26s2BellowUndL - 4. * kRB26s2ConnectionPlieR + 2. * kRB26s2PlieThickness +
1727 (2. * kRB26s2NumberOfPlies - 2.) * kRB26s2PlieThickness) /
1728 (4. * kRB26s2NumberOfPlies - 2.);
1729 const float kRB26s2CompTubeInnerR = 12.00 / 2.;
1730 const float kRB26s2CompTubeOuterR = 12.30 / 2.;
1731 const float kRB26s2WeldingTubeLeftL = 9.00 / 2.;
1732 const float kRB26s2WeldingTubeRightL = 11.65 / 2.;
1733 const float kRB26s2RingOuterR = 18.10 / 2.;
1734 const float kRB26s2RingL = 0.40 / 2.;
1735 const float kRB26s2RingZ = 6.50;
1736 const float kRB26s2ProtOuterR = 18.20 / 2.;
1737 const float kRB26s2ProtL = 15.00 / 2.;
1738 const float kRB26s2ProtZ = 6.70;
1742 TGeoPcon* shRB26s2Compensator =
new TGeoPcon(0., 360., 6);
1743 shRB26s2Compensator->DefineSection(0, 0.0, 0., kRB26s2CompTubeOuterR);
1744 shRB26s2Compensator->DefineSection(1, kRB26s2RingZ, 0., kRB26s2CompTubeOuterR);
1745 shRB26s2Compensator->DefineSection(2, kRB26s2RingZ, 0., kRB26s2ProtOuterR);
1746 shRB26s2Compensator->DefineSection(3, kRB26s2ProtZ + 2. * kRB26s2ProtL, 0., kRB26s2ProtOuterR);
1747 shRB26s2Compensator->DefineSection(4, kRB26s2ProtZ + 2. * kRB26s2ProtL, 0., kRB26s2CompTubeOuterR);
1748 shRB26s2Compensator->DefineSection(5, kRB26s2CompL, 0., kRB26s2CompTubeOuterR);
1749 TGeoVolume* voRB26s2Compensator =
new TGeoVolume(
"RB26s2Compensator", shRB26s2Compensator, kMedVacHC);
1755 TGeoVolume* voRB26s2Bellow =
1756 new TGeoVolume(
"RB26s2Bellow",
new TGeoTube(kRB26s2BellowRi, kRB26s2BellowRo, kRB26s2BellowUndL / 2.), kMedVacHC);
1760 TGeoTorus* shRB26s2PlieTorusU =
new TGeoTorus(kRB26s2BellowRo - kRB26s2PlieR, kRB26s2PlieR - kRB26s2PlieThickness, kRB26s2PlieR);
1761 shRB26s2PlieTorusU->SetName(
"RB26s2TorusU");
1762 TGeoTube* shRB26s2PlieTubeU =
new TGeoTube(kRB26s2BellowRo - kRB26s2PlieR, kRB26s2BellowRo, kRB26s2PlieR);
1763 shRB26s2PlieTubeU->SetName(
"RB26s2TubeU");
1764 TGeoCompositeShape* shRB26s2UpperPlie =
new TGeoCompositeShape(
"RB26s2UpperPlie",
"RB26s2TorusU*RB26s2TubeU");
1766 TGeoVolume* voRB26s2WiggleU =
new TGeoVolume(
"RB26s2UpperPlie", shRB26s2UpperPlie, kMedSteelHC);
1769 TGeoTorus* shRB26s2PlieTorusL =
new TGeoTorus(kRB26s2BellowRi + kRB26s2PlieR, kRB26s2PlieR - kRB26s2PlieThickness, kRB26s2PlieR);
1770 shRB26s2PlieTorusL->SetName(
"RB26s2TorusL");
1771 TGeoTube* shRB26s2PlieTubeL =
new TGeoTube(kRB26s2BellowRi, kRB26s2BellowRi + kRB26s2PlieR, kRB26s2PlieR);
1772 shRB26s2PlieTubeL->SetName(
"RB26s2TubeL");
1773 TGeoCompositeShape* shRB26s2LowerPlie =
new TGeoCompositeShape(
"RB26s2LowerPlie",
"RB26s2TorusL*RB26s2TubeL");
1775 TGeoVolume* voRB26s2WiggleL =
new TGeoVolume(
"RB26s2LowerPlie", shRB26s2LowerPlie, kMedSteelHC);
1779 TGeoVolume* voRB26s2WiggleC1 =
new TGeoVolume(
1781 new TGeoTube(kRB26s2BellowRi + kRB26s2PlieR, kRB26s2BellowRo - kRB26s2PlieR, kRB26s2PlieThickness / 2.), kMedSteelHC);
1784 TGeoVolumeAssembly* voRB26s2Wiggle =
new TGeoVolumeAssembly(
"RB26s2Wiggle");
1785 z0 = -kRB26s2PlieThickness / 2.;
1786 voRB26s2Wiggle->AddNode(voRB26s2WiggleC1, 1,
new TGeoTranslation(0., 0., z0));
1787 z0 += kRB26s2PlieR - kRB26s2PlieThickness / 2.;
1788 voRB26s2Wiggle->AddNode(voRB26s2WiggleU, 1,
new TGeoTranslation(0., 0., z0));
1789 z0 += kRB26s2PlieR - kRB26s2PlieThickness / 2.;
1790 voRB26s2Wiggle->AddNode(voRB26s2WiggleC1, 2,
new TGeoTranslation(0., 0., z0));
1791 z0 += kRB26s2PlieR - kRB26s2PlieThickness;
1792 voRB26s2Wiggle->AddNode(voRB26s2WiggleL, 1,
new TGeoTranslation(0., 0., z0));
1794 z0 = -kRB26s2BellowUndL / 2. + kRB26s2ConnectionPlieR;
1795 voRB26s2Bellow->AddNode(voRB26s2WiggleL, 1,
new TGeoTranslation(0., 0., z0));
1796 z0 += kRB26s2ConnectionPlieR;
1797 zsh = 4. * kRB26s2PlieR - 2. * kRB26s2PlieThickness;
1798 for (
int iw = 0; iw < kRB26s2NumberOfPlies; iw++) {
1799 float zpos = z0 + iw * zsh;
1800 voRB26s2Bellow->AddNode(voRB26s2Wiggle, iw + 1,
new TGeoTranslation(0., 0., zpos - kRB26s2PlieThickness));
1803 voRB26s2Compensator->AddNode(voRB26s2Bellow, 1,
new TGeoTranslation(0., 0., 2. * kRB26s2WeldingTubeLeftL + kRB26s2BellowUndL / 2.));
1808 TGeoTube* shRB26s2CompLeftTube =
new TGeoTube(kRB26s2CompTubeInnerR, kRB26s2CompTubeOuterR, kRB26s2WeldingTubeLeftL);
1809 TGeoVolume* voRB26s2CompLeftTube =
new TGeoVolume(
"RB26s2CompLeftTube", shRB26s2CompLeftTube, kMedSteelHC);
1810 voRB26s2Compensator->AddNode(voRB26s2CompLeftTube, 1,
new TGeoTranslation(0., 0., kRB26s2WeldingTubeLeftL));
1814 TGeoTube* shRB26s2CompRightTube =
1815 new TGeoTube(kRB26s2CompTubeInnerR, kRB26s2CompTubeOuterR, kRB26s2WeldingTubeRightL);
1816 TGeoVolume* voRB26s2CompRightTube =
new TGeoVolume(
"RB26s2CompRightTube", shRB26s2CompRightTube, kMedSteelHC);
1817 voRB26s2Compensator->AddNode(voRB26s2CompRightTube, 1,
new TGeoTranslation(0., 0., kRB26s2CompL - kRB26s2WeldingTubeRightL));
1821 TGeoTube* shRB26s2CompRing =
new TGeoTube(kRB26s2CompTubeOuterR, kRB26s2RingOuterR, kRB26s2RingL);
1822 TGeoVolume* voRB26s2CompRing =
new TGeoVolume(
"RB26s2CompRing", shRB26s2CompRing, kMedSteelHC);
1823 voRB26s2Compensator->AddNode(voRB26s2CompRing, 1,
new TGeoTranslation(0., 0., kRB26s2RingZ + kRB26s2RingL));
1828 TGeoTube* shRB26s2CompProtTube =
new TGeoTube(kRB26s2RingOuterR, kRB26s2ProtOuterR, kRB26s2ProtL);
1829 TGeoVolume* voRB26s2CompProtTube =
new TGeoVolume(
"RB26s2CompProtTube", shRB26s2CompProtTube, kMedSteelHC);
1830 voRB26s2Compensator->AddNode(voRB26s2CompProtTube, 1,
new TGeoTranslation(0., 0., kRB26s2ProtZ + kRB26s2ProtL));
1836 const float kRB26s1RFlangeTubeRi = 5.84 / 2.;
1837 const float kRB26s1RFlangeTubeRo = 6.00 / 2.;
1840 const float kRB26s1RFlangeCrL = 1.40;
1841 const float kRB26s1RFlangeCrRi1 = 6.72 / 2.;
1842 const float kRB26s1RFlangeCrRi2 = 6.06 / 2.;
1843 const float kRB26s1RFlangeCrRo = 8.60 / 2.;
1844 const float kRB26s1RFlangeCrD = 0.800;
1846 TGeoPcon* shRB26s1RFlangeCr =
new TGeoPcon(0., 360., 4);
1848 shRB26s1RFlangeCr->DefineSection(0, z0, kRB26s1RFlangeCrRi1, kRB26s1RFlangeCrRo);
1849 z0 += kRB26s1RFlangeCrD;
1850 shRB26s1RFlangeCr->DefineSection(1, z0, kRB26s1RFlangeCrRi1, kRB26s1RFlangeCrRo);
1851 shRB26s1RFlangeCr->DefineSection(2, z0, kRB26s1RFlangeCrRi2, kRB26s1RFlangeCrRo);
1852 z0 = kRB26s1RFlangeCrL;
1853 shRB26s1RFlangeCr->DefineSection(3, z0, kRB26s1RFlangeCrRi2, kRB26s1RFlangeCrRo);
1854 TGeoVolume* voRB26s1RFlangeCr =
new TGeoVolume(
"RB26s1RFlangeCr", shRB26s1RFlangeCr, kMedSteelHC);
1857 const float kRB26s1RFlangeIsL = 4.88;
1858 const float kRB26s1RFlangeIsR = 6.70 / 2.;
1859 const float kRB26s1RFlangeIsD = 0.80;
1861 TGeoPcon* shRB26s1RFlangeIs =
new TGeoPcon(0., 360., 4);
1863 shRB26s1RFlangeIs->DefineSection(0, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeIsR);
1864 z0 += kRB26s1RFlangeIsD;
1865 shRB26s1RFlangeIs->DefineSection(1, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeIsR);
1866 shRB26s1RFlangeIs->DefineSection(2, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
1867 z0 = kRB26s1RFlangeIsL;
1868 shRB26s1RFlangeIs->DefineSection(3, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
1869 TGeoVolume* voRB26s1RFlangeIs =
new TGeoVolume(
"RB26s1RFlangeIs", shRB26s1RFlangeIs, kMedSteelHC);
1872 const float kRB26s1RFlangeFpL = 5.88;
1873 const float kRB26s1RFlangeFpZ = 3.82;
1874 const float kRB26s1RFlangeFpD = 0.59;
1875 const float kRB26s1RFlangeFpR = 7.00 / 2.;
1877 TGeoPcon* shRB26s1RFlangeFp =
new TGeoPcon(0., 360., 6);
1879 shRB26s1RFlangeFp->DefineSection(0, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
1880 z0 += kRB26s1RFlangeFpZ;
1881 shRB26s1RFlangeFp->DefineSection(1, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
1882 shRB26s1RFlangeFp->DefineSection(2, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeFpR);
1883 z0 += kRB26s1RFlangeFpD;
1884 shRB26s1RFlangeFp->DefineSection(3, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeFpR);
1885 shRB26s1RFlangeFp->DefineSection(4, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
1886 z0 = kRB26s1RFlangeFpL;
1887 shRB26s1RFlangeFp->DefineSection(5, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
1888 TGeoVolume* voRB26s1RFlangeFp =
new TGeoVolume(
"RB26s1RFlangeFp", shRB26s1RFlangeFp, kMedSteelHC);
1891 TGeoPcon* shRB26s1RFlange =
new TGeoPcon(0., 360., 8);
1893 shRB26s1RFlange->DefineSection(0, z0, 0., kRB26s1RFlangeCrRo);
1894 z0 += kRB26s1RFlangeCrL;
1895 shRB26s1RFlange->DefineSection(1, z0, 0., kRB26s1RFlangeCrRo);
1896 shRB26s1RFlange->DefineSection(2, z0, 0., kRB26s1RFlangeTubeRo);
1897 z0 = kRB26s1RFlangeIsL + kRB26s1RFlangeFpZ;
1898 shRB26s1RFlange->DefineSection(3, z0, 0., kRB26s1RFlangeTubeRo);
1899 shRB26s1RFlange->DefineSection(4, z0, 0., kRB26s1RFlangeFpR);
1900 z0 += kRB26s1RFlangeFpD;
1901 shRB26s1RFlange->DefineSection(5, z0, 0., kRB26s1RFlangeFpR);
1902 shRB26s1RFlange->DefineSection(6, z0, 0., kRB26s1RFlangeTubeRo);
1903 z0 = kRB26s1RFlangeIsL + kRB26s1RFlangeFpL;
1904 shRB26s1RFlange->DefineSection(7, z0, 0., kRB26s1RFlangeTubeRo);
1905 TGeoVolume* voRB26s1RFlange =
new TGeoVolume(
"RB26s1RFlange", shRB26s1RFlange, kMedVacHC);
1907 voRB26s1RFlange->AddNode(voRB26s1RFlangeIs, 1, gGeoIdentity);
1908 voRB26s1RFlange->AddNode(voRB26s1RFlangeCr, 1, gGeoIdentity);
1909 voRB26s1RFlange->AddNode(voRB26s1RFlangeFp, 1,
new TGeoTranslation(0., 0., kRB26s1RFlangeIsL));
1915 const float kRB26s2FFlangeL = 2.13;
1916 const float kRB26s2FFlangeD1 = 0.97;
1917 const float kRB26s2FFlangeD2 = 0.29;
1918 const float kRB26s2FFlangeD3 = 0.87;
1919 const float kRB26s2FFlangeRo = 17.15 / 2.;
1920 const float kRB26s2FFlangeRi1 = 12.30 / 2.;
1921 const float kRB26s2FFlangeRi2 = 12.00 / 2.;
1922 const float kRB26s2FFlangeRi3 = 12.30 / 2.;
1924 TGeoPcon* shRB26s2FFlange =
new TGeoPcon(0., 360., 6);
1926 shRB26s2FFlange->DefineSection(0, z0, kRB26s2FFlangeRi1, kRB26s2FFlangeRo);
1927 z0 += kRB26s2FFlangeD1;
1928 shRB26s2FFlange->DefineSection(1, z0, kRB26s2FFlangeRi1, kRB26s2FFlangeRo);
1929 shRB26s2FFlange->DefineSection(2, z0, kRB26s2FFlangeRi2, kRB26s2FFlangeRo);
1930 z0 += kRB26s2FFlangeD2;
1931 shRB26s2FFlange->DefineSection(3, z0, kRB26s2FFlangeRi2, kRB26s2FFlangeRo);
1932 shRB26s2FFlange->DefineSection(4, z0, kRB26s2FFlangeRi3, kRB26s2FFlangeRo);
1933 z0 += kRB26s2FFlangeD3;
1934 shRB26s2FFlange->DefineSection(5, z0, kRB26s2FFlangeRi3, kRB26s2FFlangeRo);
1935 TGeoVolume* voRB26s2FFlange =
new TGeoVolume(
"RB26s2FFlange", shRB26s2FFlange, kMedSteelHC);
1937 TGeoVolume* voRB26s2FFlangeM =
new TGeoVolume(
"RB26s2FFlangeM", makeMotherFromTemplate(shRB26s2FFlange, 2, 5), kMedVacHC);
1938 voRB26s2FFlangeM->AddNode(voRB26s2FFlange, 1, gGeoIdentity);
1960 const float kRB26s3TubeL = 629.35 + 0.3;
1961 const float kRB26s3TubeR1 = 12. / 2.;
1962 const float kRB26s3TubeR2 = kRB26s3TubeR1 + 215.8 * TMath::Tan(0.829 / 180. * TMath::Pi());
1964 TGeoPcon* shRB26s3Tube =
new TGeoPcon(0., 360., 7);
1966 shRB26s3Tube->DefineSection(0, 0.00, kRB26s3TubeR1, kRB26s3TubeR1 + 0.15);
1967 shRB26s3Tube->DefineSection(1, 2.00, kRB26s3TubeR1, kRB26s3TubeR1 + 0.15);
1969 shRB26s3Tube->DefineSection(2, 2.00, kRB26s3TubeR1, kRB26s3TubeR1 + 0.20);
1971 shRB26s3Tube->DefineSection(3, 217.80, kRB26s3TubeR2, kRB26s3TubeR2 + 0.20);
1972 shRB26s3Tube->DefineSection(4, 217.80, kRB26s3TubeR2, kRB26s3TubeR2 + 0.30);
1974 shRB26s3Tube->DefineSection(5, 622.20, 30.00 / 2., 30.60 / 2.);
1975 shRB26s3Tube->DefineSection(6, kRB26s3TubeL, 30.00 / 2., 30.60 / 2.);
1977 TGeoVolume* voRB26s3Tube =
new TGeoVolume(
"RB26s3Tube", shRB26s3Tube, kMedSteelHC);
1979 TGeoVolume* voRB26s3TubeIns =
new TGeoVolume(
"RB26s3TubeIns", makeInsulationFromTemplate(shRB26s3Tube), kMedInsu);
1980 voRB26s3Tube->AddNode(voRB26s3TubeIns, 1, gGeoIdentity);
1982 TGeoVolume* voRB26s3TubeM =
new TGeoVolume(
"RB26s3TubeM", makeMotherFromTemplate(shRB26s3Tube), kMedVacHC);
1983 voRB26s3TubeM->AddNode(voRB26s3Tube, 1, gGeoIdentity);
1989 const float kRB26s3FixedPointL = 16.37;
1990 const float kRB26s3FixedPointZ = 9.72;
1991 const float kRB26s3FixedPointD = 0.595;
1992 const float kRB26s3FixedPointR = 13.30 / 2.;
1993 const float kRB26s3FixedPointRi = 12.00 / 2.;
1994 const float kRB26s3FixedPointRo1 = 12.30 / 2.;
1995 const float kRB26s3FixedPointRo2 = 12.40 / 2.;
1996 const float kRB26s3FixedPointDs = 1.5;
1997 const float kRB26s3FixedPointDc = 3.15;
1999 TGeoPcon* shRB26s3FixedPoint =
new TGeoPcon(0., 360., 8);
2001 shRB26s3FixedPoint->DefineSection(0, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo1);
2002 z0 += kRB26s3FixedPointZ;
2003 shRB26s3FixedPoint->DefineSection(1, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo1);
2004 shRB26s3FixedPoint->DefineSection(2, z0, kRB26s3FixedPointRi, kRB26s3FixedPointR);
2005 z0 += kRB26s3FixedPointD;
2006 shRB26s3FixedPoint->DefineSection(3, z0, kRB26s3FixedPointRi, kRB26s3FixedPointR);
2007 shRB26s3FixedPoint->DefineSection(4, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo1);
2008 z0 += kRB26s3FixedPointDs;
2009 shRB26s3FixedPoint->DefineSection(5, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo1);
2010 z0 += kRB26s3FixedPointDc;
2011 shRB26s3FixedPoint->DefineSection(6, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo2);
2012 z0 = kRB26s3FixedPointL;
2013 shRB26s3FixedPoint->DefineSection(7, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo2);
2014 TGeoVolume* voRB26s3FixedPoint =
new TGeoVolume(
"RB26s3FixedPoint", shRB26s3FixedPoint, kMedSteelHC);
2016 TGeoVolume* voRB26s3FixedPointM =
new TGeoVolume(
"RB26s3FixedPointM", makeMotherFromTemplate(shRB26s3FixedPoint), kMedVacHC);
2017 voRB26s3FixedPointM->AddNode(voRB26s3FixedPoint, 1, gGeoIdentity);
2023 const float kRB26s3SFlangeL = 2.13;
2024 const float kRB26s3SFlangeD1 = 0.57;
2025 const float kRB26s3SFlangeD2 = 0.36;
2026 const float kRB26s3SFlangeD3 = 0.50 + 0.70;
2027 const float kRB26s3SFlangeRo = 17.15 / 2.;
2028 const float kRB26s3SFlangeRi1 = 12.30 / 2.;
2029 const float kRB26s3SFlangeRi2 = 12.00 / 2.;
2030 const float kRB26s3SFlangeRi3 = 12.30 / 2.;
2032 TGeoPcon* shRB26s3SFlange =
new TGeoPcon(0., 360., 6);
2034 shRB26s3SFlange->DefineSection(0, z0, kRB26s3SFlangeRi1, kRB26s3SFlangeRo);
2035 z0 += kRB26s3SFlangeD1;
2036 shRB26s3SFlange->DefineSection(1, z0, kRB26s3SFlangeRi1, kRB26s3SFlangeRo);
2037 shRB26s3SFlange->DefineSection(2, z0, kRB26s3SFlangeRi2, kRB26s3SFlangeRo);
2038 z0 += kRB26s3SFlangeD2;
2039 shRB26s3SFlange->DefineSection(3, z0, kRB26s3SFlangeRi2, kRB26s3SFlangeRo);
2040 shRB26s3SFlange->DefineSection(4, z0, kRB26s3SFlangeRi3, kRB26s3SFlangeRo);
2041 z0 += kRB26s3SFlangeD3;
2042 shRB26s3SFlange->DefineSection(5, z0, kRB26s3SFlangeRi3, kRB26s3SFlangeRo);
2043 TGeoVolume* voRB26s3SFlange =
new TGeoVolume(
"RB26s3SFlange", shRB26s3SFlange, kMedSteelHC);
2045 TGeoVolume* voRB26s3SFlangeM =
new TGeoVolume(
"RB26s3SFlangeM", makeMotherFromTemplate(shRB26s3SFlange, 0, 3), kMedVacHC);
2046 voRB26s3SFlangeM->AddNode(voRB26s3SFlange, 1, gGeoIdentity);
2052 const float kRB26s3FFlangeL = 2.99;
2053 const float kRB26s3FFlangeD1 = 1.72;
2054 const float kRB26s3FFlangeD2 = 0.30;
2055 const float kRB26s3FFlangeD3 = 0.97;
2056 const float kRB26s3FFlangeRo = 36.20 / 2.;
2057 const float kRB26s3FFlangeRi1 = 30.60 / 2.;
2058 const float kRB26s3FFlangeRi2 = 30.00 / 2.;
2059 const float kRB26s3FFlangeRi3 = 30.60 / 2.;
2061 TGeoPcon* shRB26s3FFlange =
new TGeoPcon(0., 360., 6);
2063 shRB26s3FFlange->DefineSection(0, z0, kRB26s3FFlangeRi1, kRB26s3FFlangeRo);
2064 z0 += kRB26s3FFlangeD1;
2065 shRB26s3FFlange->DefineSection(1, z0, kRB26s3FFlangeRi1, kRB26s3FFlangeRo);
2066 shRB26s3FFlange->DefineSection(2, z0, kRB26s3FFlangeRi2, kRB26s3FFlangeRo);
2067 z0 += kRB26s3FFlangeD2;
2068 shRB26s3FFlange->DefineSection(3, z0, kRB26s3FFlangeRi2, kRB26s3FFlangeRo);
2069 shRB26s3FFlange->DefineSection(4, z0, kRB26s3FFlangeRi3, kRB26s3FFlangeRo);
2070 z0 += kRB26s3FFlangeD3;
2071 shRB26s3FFlange->DefineSection(5, z0, kRB26s3FFlangeRi3, kRB26s3FFlangeRo);
2072 TGeoVolume* voRB26s3FFlange =
new TGeoVolume(
"RB26s3FFlange", shRB26s3FFlange, kMedSteelHC);
2074 TGeoVolume* voRB26s3FFlangeM =
new TGeoVolume(
"RB26s3FFlangeM", makeMotherFromTemplate(shRB26s3FFlange, 2, 5), kMedVacHC);
2075 voRB26s3FFlangeM->AddNode(voRB26s3FFlange, 1, gGeoIdentity);
2081 const float kRB26s3CompL = 42.3;
2082 const float kRB26s3BellowRo = 34.00 / 2.;
2083 const float kRB26s3BellowRi = 30.10 / 2.;
2084 const int kRB26s3NumberOfPlies = 13;
2085 const float kRB26s3BellowUndL = 17.70;
2086 const float kRB26s3PlieThickness = 0.06;
2087 const float kRB26s3ConnectionPlieR = 0.21;
2089 const float kRB26s3PlieR = (kRB26s3BellowUndL - 4. * kRB26s3ConnectionPlieR + 2. * kRB26s3PlieThickness +
2090 (2. * kRB26s3NumberOfPlies - 2.) * kRB26s3PlieThickness) /
2091 (4. * kRB26s3NumberOfPlies - 2.);
2098 const float kRB26s3CompTubeInnerR1 = 30.0 / 2.;
2099 const float kRB26s3CompTubeOuterR1 = 30.6 / 2.;
2100 const float kRB26s3CompTubeInnerR2 = 29.4 / 2.;
2101 const float kRB26s3CompTubeOuterR2 = 30.0 / 2.;
2102 const float kRB26s3CompTubeInnerR3 = 30.6 / 2.;
2103 const float kRB26s3CompTubeOuterR3 = 32.2 / 2.;
2105 const float kRB26s3WeldingTubeLeftL1 = 2.0;
2106 const float kRB26s3WeldingTubeLeftL2 = 3.4;
2107 const float kRB26s3WeldingTubeLeftL = 7.0;
2108 const float kRB26s3WeldingTubeRightL1 = 2.3;
2109 const float kRB26s3WeldingTubeRightL2 = 13.4;
2111 const float kRB26s3WeldingTubeT1 = 0.6;
2112 const float kRB26s3WeldingTubeT2 = 1.0;
2114 const float kRB26s3RingOuterR = 36.1 / 2.;
2115 const float kRB26s3RingL = 0.8 / 2.;
2116 const float kRB26s3RingZ = 3.7;
2117 const float kRB26s3ProtOuterR = 36.2 / 2.;
2118 const float kRB26s3ProtL = 27.0 / 2.;
2119 const float kRB26s3ProtZ = 4.0;
2123 TGeoPcon* shRB26s3Compensator =
new TGeoPcon(0., 360., 6);
2124 shRB26s3Compensator->DefineSection(0, 0.0, 0., kRB26s3CompTubeOuterR1);
2125 shRB26s3Compensator->DefineSection(1, kRB26s3RingZ, 0., kRB26s3CompTubeOuterR1);
2126 shRB26s3Compensator->DefineSection(2, kRB26s3RingZ, 0., kRB26s3ProtOuterR);
2127 shRB26s3Compensator->DefineSection(3, kRB26s3ProtZ + 2. * kRB26s3ProtL, 0., kRB26s3ProtOuterR);
2128 shRB26s3Compensator->DefineSection(4, kRB26s3ProtZ + 2. * kRB26s3ProtL, 0., kRB26s3CompTubeOuterR1);
2129 shRB26s3Compensator->DefineSection(5, kRB26s3CompL, 0., kRB26s3CompTubeOuterR1);
2130 TGeoVolume* voRB26s3Compensator =
new TGeoVolume(
"RB26s3Compensator", shRB26s3Compensator, kMedVacHC);
2140 TGeoTorus* shRB26s3PlieTorusU =
new TGeoTorus(kRB26s3BellowRo - kRB26s3PlieR, kRB26s3PlieR - kRB26s3PlieThickness, kRB26s3PlieR);
2141 shRB26s3PlieTorusU->SetName(
"RB26s3TorusU");
2142 TGeoTube* shRB26s3PlieTubeU =
new TGeoTube(kRB26s3BellowRo - kRB26s3PlieR, kRB26s3BellowRo, kRB26s3PlieR);
2143 shRB26s3PlieTubeU->SetName(
"RB26s3TubeU");
2144 TGeoCompositeShape* shRB26s3UpperPlie =
new TGeoCompositeShape(
"RB26s3UpperPlie",
"RB26s3TorusU*RB26s3TubeU");
2146 TGeoVolume* voRB26s3WiggleU =
new TGeoVolume(
"RB26s3UpperPlie", shRB26s3UpperPlie, kMedSteelHC);
2149 TGeoTorus* shRB26s3PlieTorusL =
new TGeoTorus(kRB26s3BellowRi + kRB26s3PlieR, kRB26s3PlieR - kRB26s3PlieThickness, kRB26s3PlieR);
2150 shRB26s3PlieTorusL->SetName(
"RB26s3TorusL");
2151 TGeoTube* shRB26s3PlieTubeL =
new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRi + kRB26s3PlieR, kRB26s3PlieR);
2152 shRB26s3PlieTubeL->SetName(
"RB26s3TubeL");
2153 TGeoCompositeShape* shRB26s3LowerPlie =
new TGeoCompositeShape(
"RB26s3LowerPlie",
"RB26s3TorusL*RB26s3TubeL");
2155 TGeoVolume* voRB26s3WiggleL =
new TGeoVolume(
"RB26s3LowerPlie", shRB26s3LowerPlie, kMedSteelHC);
2159 TGeoVolume* voRB26s3WiggleC1 =
new TGeoVolume(
2161 new TGeoTube(kRB26s3BellowRi + kRB26s3PlieR, kRB26s3BellowRo - kRB26s3PlieR, kRB26s3PlieThickness / 2.), kMedSteelHC);
2164 TGeoVolumeAssembly* voRB26s3Wiggle =
new TGeoVolumeAssembly(
"RB26s3Wiggle");
2165 z0 = -kRB26s3PlieThickness / 2.;
2166 voRB26s3Wiggle->AddNode(voRB26s3WiggleC1, 1,
new TGeoTranslation(0., 0., z0));
2167 z0 += kRB26s3PlieR - kRB26s3PlieThickness / 2.;
2168 voRB26s3Wiggle->AddNode(voRB26s3WiggleU, 1,
new TGeoTranslation(0., 0., z0));
2169 z0 += kRB26s3PlieR - kRB26s3PlieThickness / 2.;
2170 voRB26s3Wiggle->AddNode(voRB26s3WiggleC1, 2,
new TGeoTranslation(0., 0., z0));
2171 z0 += kRB26s3PlieR - kRB26s3PlieThickness;
2172 voRB26s3Wiggle->AddNode(voRB26s3WiggleL, 1,
new TGeoTranslation(0., 0., z0));
2173 voRB26s3Wiggle->GetShape()->ComputeBBox();
2177 float zBellowTot = kRB26s3NumberOfPlies * (
static_cast<TGeoBBox*
>(voRB26s3Wiggle->GetShape()))->GetDZ();
2178 TGeoVolume* voRB26s3Bellow =
new TGeoVolume(
"RB26s3Bellow",
new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRo, zBellowTot), kMedVacHC);
2181 z0 = -kRB26s2BellowUndL / 2. + kRB26s2ConnectionPlieR;
2182 voRB26s2Bellow->AddNode(voRB26s2WiggleL, 1,
new TGeoTranslation(0., 0., z0));
2183 z0 += kRB26s2ConnectionPlieR;
2184 zsh = 4. * kRB26s2PlieR - 2. * kRB26s2PlieThickness;
2185 for (
int iw = 0; iw < kRB26s2NumberOfPlies; iw++) {
2186 float zpos = z0 + iw * zsh;
2187 voRB26s2Bellow->AddNode(voRB26s2Wiggle, iw + 1,
new TGeoTranslation(0., 0., zpos - kRB26s2PlieThickness));
2190 voRB26s3Compensator->AddNode(voRB26s3Bellow, 1,
new TGeoTranslation(0., 0., kRB26s3WeldingTubeLeftL + zBellowTot));
2195 TGeoTube* shRB26s3CompProtTube =
new TGeoTube(kRB26s3RingOuterR, kRB26s3ProtOuterR, kRB26s3ProtL);
2196 TGeoVolume* voRB26s3CompProtTube =
new TGeoVolume(
"RB26s3CompProtTube", shRB26s3CompProtTube, kMedSteelHC);
2197 voRB26s3Compensator->AddNode(voRB26s3CompProtTube, 1,
new TGeoTranslation(0., 0., kRB26s3ProtZ + kRB26s3ProtL));
2202 TGeoPcon* shRB26s3CompRightTube =
new TGeoPcon(0., 360., 5);
2204 shRB26s3CompRightTube->DefineSection(0, z0, kRB26s3CompTubeInnerR3, kRB26s3CompTubeOuterR3);
2205 z0 += kRB26s3WeldingTubeT2;
2206 shRB26s3CompRightTube->DefineSection(1, z0, kRB26s3CompTubeInnerR2, kRB26s3CompTubeOuterR2);
2207 z0 += kRB26s3WeldingTubeRightL2;
2208 shRB26s3CompRightTube->DefineSection(2, z0, kRB26s3CompTubeInnerR2, kRB26s3CompTubeOuterR2);
2209 z0 += kRB26s3WeldingTubeT1;
2210 shRB26s3CompRightTube->DefineSection(3, z0, kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
2211 z0 += kRB26s3WeldingTubeRightL1;
2212 shRB26s3CompRightTube->DefineSection(4, z0, kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
2214 TGeoVolume* voRB26s3CompRightTube =
new TGeoVolume(
"RB26s3CompRightTube", shRB26s3CompRightTube, kMedSteelHC);
2215 voRB26s3Compensator->AddNode(voRB26s3CompRightTube, 1,
new TGeoTranslation(0., 0., kRB26s3CompL - z0));
2220 TGeoPcon* shRB26s3CompLeftTube =
new TGeoPcon(0., 360., 5);
2222 shRB26s3CompLeftTube->DefineSection(0, z0, kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
2223 z0 += kRB26s3WeldingTubeLeftL1;
2224 shRB26s3CompLeftTube->DefineSection(1, z0, kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
2225 z0 += kRB26s3WeldingTubeT1;
2226 shRB26s3CompLeftTube->DefineSection(2, z0, kRB26s3CompTubeInnerR2, kRB26s3CompTubeOuterR2);
2227 z0 += kRB26s3WeldingTubeLeftL2;
2228 shRB26s3CompLeftTube->DefineSection(3, z0, kRB26s3CompTubeInnerR2, kRB26s3CompTubeOuterR2);
2229 z0 += kRB26s3WeldingTubeT2;
2230 shRB26s3CompLeftTube->DefineSection(4, z0, kRB26s3CompTubeInnerR3, kRB26s3CompTubeOuterR3);
2232 TGeoVolume* voRB26s3CompLeftTube =
new TGeoVolume(
"RB26s3CompLeftTube", shRB26s3CompLeftTube, kMedSteelHC);
2233 voRB26s3Compensator->AddNode(voRB26s3CompLeftTube, 1, gGeoIdentity);
2237 TGeoTube* shRB26s3CompRing =
new TGeoTube(kRB26s3CompTubeOuterR2, kRB26s3RingOuterR, kRB26s3RingL);
2238 TGeoVolume* voRB26s3CompRing =
new TGeoVolume(
"RB26s3CompRing", shRB26s3CompRing, kMedSteelHC);
2239 voRB26s3Compensator->AddNode(voRB26s3CompRing, 1,
new TGeoTranslation(0., 0., kRB26s3RingZ + kRB26s3RingL));
2257 const float kRB26s45TubeL = 593.12 + 0.3;
2259 TGeoPcon* shRB26s45Tube =
new TGeoPcon(0., 360., 11);
2261 shRB26s45Tube->DefineSection(0, 0.00, 30.00 / 2., 30.60 / 2.);
2262 shRB26s45Tube->DefineSection(1, 1.20, 30.00 / 2., 30.60 / 2.);
2263 shRB26s45Tube->DefineSection(2, 1.20, 30.00 / 2., 30.80 / 2.);
2264 shRB26s45Tube->DefineSection(3, 25.10, 30.00 / 2., 30.80 / 2.);
2266 shRB26s45Tube->DefineSection(4, 486.10, 45.00 / 2., 45.80 / 2.);
2268 shRB26s45Tube->DefineSection(5, 512.10, 45.00 / 2., 45.80 / 2.);
2270 shRB26s45Tube->DefineSection(6, 512.10, 45.00 / 2., 45.60 / 2.);
2271 shRB26s45Tube->DefineSection(7, 527.70, 45.00 / 2., 45.60 / 2.);
2273 shRB26s45Tube->DefineSection(8, 591.30, 10.00 / 2., 10.60 / 2.);
2274 shRB26s45Tube->DefineSection(9, 591.89, 10.00 / 2., 10.30 / 2.);
2276 shRB26s45Tube->DefineSection(10, kRB26s45TubeL, 10.00 / 2., 10.30 / 2.);
2277 TGeoVolume* voRB26s45Tube =
new TGeoVolume(
"RB26s45Tube", shRB26s45Tube, kMedSteelHC);
2279 TGeoVolume* voRB26s45TubeM =
new TGeoVolume(
"RB26s45TubeM", makeMotherFromTemplate(shRB26s45Tube), kMedVacHC);
2280 voRB26s45TubeM->AddNode(voRB26s45Tube, 1, gGeoIdentity);
2286 const float kRB26s5CompL = 27.60;
2287 const float kRB26s5BellowRo = 12.48 / 2.;
2288 const float kRB26s5BellowRi = 10.32 / 2.;
2289 const int kRB26s5NumberOfPlies = 15;
2290 const float kRB26s5BellowUndL = 10.50;
2291 const float kRB26s5PlieThickness = 0.025;
2292 const float kRB26s5ConnectionPlieR = 0.21;
2293 const float kRB26s5ConnectionR = 11.2 / 2.;
2295 const float kRB26s5PlieR = (kRB26s5BellowUndL - 4. * kRB26s5ConnectionPlieR + 2. * kRB26s5PlieThickness +
2296 (2. * kRB26s5NumberOfPlies - 2.) * kRB26s5PlieThickness) /
2297 (4. * kRB26s5NumberOfPlies - 2.);
2298 const float kRB26s5CompTubeInnerR = 10.00 / 2.;
2299 const float kRB26s5CompTubeOuterR = 10.30 / 2.;
2300 const float kRB26s5WeldingTubeLeftL = 3.70 / 2.;
2301 const float kRB26s5WeldingTubeRightL = 13.40 / 2.;
2302 const float kRB26s5RingInnerR = 11.2 / 2.;
2303 const float kRB26s5RingOuterR = 16.0 / 2.;
2304 const float kRB26s5RingL = 0.4 / 2.;
2305 const float kRB26s5RingZ = 14.97;
2306 const float kRB26s5ProtOuterR = 16.2 / 2.;
2307 const float kRB26s5ProtL = 13.0 / 2.;
2308 const float kRB26s5ProtZ = 2.17;
2309 const float kRB26s5DetailZR = 11.3 / 2.;
2313 TGeoPcon* shRB26s5Compensator =
new TGeoPcon(0., 360., 8);
2314 shRB26s5Compensator->DefineSection(0, 0.0, 0., kRB26s5CompTubeOuterR);
2315 shRB26s5Compensator->DefineSection(1, kRB26s5ProtZ, 0., kRB26s5CompTubeOuterR);
2316 shRB26s5Compensator->DefineSection(2, kRB26s5ProtZ, 0., kRB26s5ProtOuterR);
2317 shRB26s5Compensator->DefineSection(3, kRB26s5ProtZ + 2. * kRB26s5ProtL + 2. * kRB26s5RingL, 0., kRB26s5ProtOuterR);
2318 shRB26s5Compensator->DefineSection(4, kRB26s5ProtZ + 2. * kRB26s5ProtL + 2. * kRB26s5RingL, 0., kRB26s5DetailZR);
2319 shRB26s5Compensator->DefineSection(5, kRB26s5CompL - 8., 0., kRB26s5DetailZR);
2320 shRB26s5Compensator->DefineSection(6, kRB26s5CompL - 8., 0., kRB26s5CompTubeOuterR);
2321 shRB26s5Compensator->DefineSection(7, kRB26s5CompL, 0., kRB26s5CompTubeOuterR);
2322 TGeoVolume* voRB26s5Compensator =
new TGeoVolume(
"RB26s5Compensator", shRB26s5Compensator, kMedVacHC);
2328 TGeoVolume* voRB26s5Bellow =
2329 new TGeoVolume(
"RB26s5Bellow",
new TGeoTube(kRB26s5BellowRi, kRB26s5BellowRo, kRB26s5BellowUndL / 2.), kMedVacHC);
2333 TGeoTorus* shRB26s5PlieTorusU =
new TGeoTorus(kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieR - kRB26s5PlieThickness, kRB26s5PlieR);
2334 shRB26s5PlieTorusU->SetName(
"RB26s5TorusU");
2335 TGeoTube* shRB26s5PlieTubeU =
new TGeoTube(kRB26s5BellowRo - kRB26s5PlieR, kRB26s5BellowRo, kRB26s5PlieR);
2336 shRB26s5PlieTubeU->SetName(
"RB26s5TubeU");
2337 TGeoCompositeShape* shRB26s5UpperPlie =
new TGeoCompositeShape(
"RB26s5UpperPlie",
"RB26s5TorusU*RB26s5TubeU");
2339 TGeoVolume* voRB26s5WiggleU =
new TGeoVolume(
"RB26s5UpperPlie", shRB26s5UpperPlie, kMedSteelHC);
2342 TGeoTorus* shRB26s5PlieTorusL =
new TGeoTorus(kRB26s5BellowRi + kRB26s5PlieR, kRB26s5PlieR - kRB26s5PlieThickness, kRB26s5PlieR);
2343 shRB26s5PlieTorusL->SetName(
"RB26s5TorusL");
2344 TGeoTube* shRB26s5PlieTubeL =
new TGeoTube(kRB26s5BellowRi, kRB26s5BellowRi + kRB26s5PlieR, kRB26s5PlieR);
2345 shRB26s5PlieTubeL->SetName(
"RB26s5TubeL");
2346 TGeoCompositeShape* shRB26s5LowerPlie =
new TGeoCompositeShape(
"RB26s5LowerPlie",
"RB26s5TorusL*RB26s5TubeL");
2348 TGeoVolume* voRB26s5WiggleL =
new TGeoVolume(
"RB26s5LowerPlie", shRB26s5LowerPlie, kMedSteelHC);
2352 TGeoVolume* voRB26s5WiggleC1 =
new TGeoVolume(
"RB26s5PlieConn1",
2353 new TGeoTube(kRB26s5BellowRi + kRB26s5PlieR, kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieThickness / 2.), kMedSteelHC);
2356 TGeoVolumeAssembly* voRB26s5Wiggle =
new TGeoVolumeAssembly(
"RB26s5Wiggle");
2357 z0 = -kRB26s5PlieThickness / 2.;
2358 voRB26s5Wiggle->AddNode(voRB26s5WiggleC1, 1,
new TGeoTranslation(0., 0., z0));
2359 z0 += kRB26s5PlieR - kRB26s5PlieThickness / 2.;
2360 voRB26s5Wiggle->AddNode(voRB26s5WiggleU, 1,
new TGeoTranslation(0., 0., z0));
2361 z0 += kRB26s5PlieR - kRB26s5PlieThickness / 2.;
2362 voRB26s5Wiggle->AddNode(voRB26s5WiggleC1, 2,
new TGeoTranslation(0., 0., z0));
2363 z0 += kRB26s5PlieR - kRB26s5PlieThickness;
2364 voRB26s5Wiggle->AddNode(voRB26s5WiggleL, 1,
new TGeoTranslation(0., 0., z0));
2366 z0 = -kRB26s5BellowUndL / 2. + kRB26s5ConnectionPlieR;
2367 voRB26s5Bellow->AddNode(voRB26s5WiggleL, 1,
new TGeoTranslation(0., 0., z0));
2368 z0 += kRB26s5ConnectionPlieR;
2369 zsh = 4. * kRB26s5PlieR - 2. * kRB26s5PlieThickness;
2370 for (
int iw = 0; iw < kRB26s5NumberOfPlies; iw++) {
2371 float zpos = z0 + iw * zsh;
2372 voRB26s5Bellow->AddNode(voRB26s5Wiggle, iw + 1,
new TGeoTranslation(0., 0., zpos - kRB26s5PlieThickness));
2375 voRB26s5Compensator->AddNode(voRB26s5Bellow, 1,
new TGeoTranslation(0., 0., 2. * kRB26s5WeldingTubeLeftL + kRB26s5BellowUndL / 2.));
2380 TGeoPcon* shRB26s5CompLeftTube =
new TGeoPcon(0., 360., 3);
2382 shRB26s5CompLeftTube->DefineSection(0, z0, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
2383 z0 += 2 * kRB26s5WeldingTubeLeftL - (kRB26s5ConnectionR - kRB26s5CompTubeOuterR);
2384 shRB26s5CompLeftTube->DefineSection(1, z0, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
2385 z0 += (kRB26s5ConnectionR - kRB26s5CompTubeOuterR);
2386 shRB26s5CompLeftTube->DefineSection(2, z0, kRB26s5ConnectionR - 0.15, kRB26s5ConnectionR);
2387 TGeoVolume* voRB26s5CompLeftTube =
new TGeoVolume(
"RB26s5CompLeftTube", shRB26s5CompLeftTube, kMedSteelHC);
2388 voRB26s5Compensator->AddNode(voRB26s5CompLeftTube, 1, gGeoIdentity);
2392 TGeoPcon* shRB26s5CompRightTube =
new TGeoPcon(0., 360., 11);
2394 shRB26s5CompRightTube->DefineSection(0, 0., kRB26s5CompTubeInnerR + 0.22, 11.2 / 2.);
2395 shRB26s5CompRightTube->DefineSection(1, 0.05, kRB26s5CompTubeInnerR + 0.18, 11.2 / 2.);
2396 shRB26s5CompRightTube->DefineSection(2, 0.22, kRB26s5CompTubeInnerR, 11.2 / 2. - 0.22);
2397 shRB26s5CompRightTube->DefineSection(3, 0.44, kRB26s5CompTubeInnerR, 11.2 / 2.);
2398 shRB26s5CompRightTube->DefineSection(4, 1.70, kRB26s5CompTubeInnerR, 11.2 / 2.);
2399 shRB26s5CompRightTube->DefineSection(5, 2.10, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
2400 shRB26s5CompRightTube->DefineSection(6, 2.80, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
2401 shRB26s5CompRightTube->DefineSection(7, 2.80, kRB26s5CompTubeInnerR, 11.3 / 2.);
2402 shRB26s5CompRightTube->DefineSection(8, 3.40, kRB26s5CompTubeInnerR, 11.3 / 2.);
2404 shRB26s5CompRightTube->DefineSection(9, 3.50, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
2405 shRB26s5CompRightTube->DefineSection(10, 2. * kRB26s5WeldingTubeRightL, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
2407 TGeoVolume* voRB26s5CompRightTube =
new TGeoVolume(
"RB26s5CompRightTube", shRB26s5CompRightTube, kMedSteelHC);
2408 voRB26s5Compensator->AddNode(voRB26s5CompRightTube, 1,
new TGeoTranslation(0., 0., kRB26s5CompL - 2. * kRB26s5WeldingTubeRightL));
2412 TGeoTube* shRB26s5CompRing =
new TGeoTube(kRB26s5RingInnerR, kRB26s5RingOuterR, kRB26s5RingL);
2413 TGeoVolume* voRB26s5CompRing =
new TGeoVolume(
"RB26s5CompRing", shRB26s5CompRing, kMedSteelHC);
2414 voRB26s5Compensator->AddNode(voRB26s5CompRing, 1,
new TGeoTranslation(0., 0., kRB26s5RingZ + kRB26s5RingL));
2419 TGeoTube* shRB26s5CompProtTube =
new TGeoTube(kRB26s5RingOuterR, kRB26s5ProtOuterR, kRB26s5ProtL);
2420 TGeoVolume* voRB26s5CompProtTube =
new TGeoVolume(
"RB26s5CompProtTube", shRB26s5CompProtTube, kMedSteelHC);
2421 voRB26s5Compensator->AddNode(voRB26s5CompProtTube, 1,
new TGeoTranslation(0., 0., kRB26s5ProtZ + kRB26s5ProtL));
2427 const float kRB26s4TubeRi = 30.30 / 2.;
2428 const float kRB26s4TubeRo = 30.60 / 2.;
2429 const float kRB26s4FixedPointL = 12.63;
2430 const float kRB26s4FixedPointZ = 10.53;
2431 const float kRB26s4FixedPointD = 0.595;
2432 const float kRB26s4FixedPointR = 31.60 / 2.;
2434 TGeoPcon* shRB26s4FixedPoint =
new TGeoPcon(0., 360., 6);
2436 shRB26s4FixedPoint->DefineSection(0, z0, kRB26s4TubeRi, kRB26s4TubeRo);
2437 z0 += kRB26s4FixedPointZ;
2438 shRB26s4FixedPoint->DefineSection(1, z0, kRB26s4TubeRi, kRB26s4TubeRo);
2439 shRB26s4FixedPoint->DefineSection(2, z0, kRB26s4TubeRi, kRB26s4FixedPointR);
2440 z0 += kRB26s4FixedPointD;
2441 shRB26s4FixedPoint->DefineSection(3, z0, kRB26s4TubeRi, kRB26s4FixedPointR);
2442 shRB26s4FixedPoint->DefineSection(4, z0, kRB26s4TubeRi, kRB26s4TubeRo);
2443 z0 = kRB26s4FixedPointL;
2444 shRB26s4FixedPoint->DefineSection(5, z0, kRB26s4TubeRi, kRB26s4TubeRo);
2445 TGeoVolume* voRB26s4FixedPoint =
new TGeoVolume(
"RB26s4FixedPoint", shRB26s4FixedPoint, kMedSteelHC);
2447 TGeoVolume* voRB26s4FixedPointM =
new TGeoVolume(
"RB26s4FixedPointM", makeMotherFromTemplate(shRB26s4FixedPoint), kMedVacHC);
2448 voRB26s4FixedPointM->AddNode(voRB26s4FixedPoint, 1, gGeoIdentity);
2454 const float kRB26s4SFlangeL = 2.99;
2455 const float kRB26s4SFlangeD1 = 0.85;
2456 const float kRB26s4SFlangeD2 = 0.36;
2457 const float kRB26s4SFlangeD3 = 0.73 + 1.05;
2458 const float kRB26s4SFlangeRo = 36.20 / 2.;
2459 const float kRB26s4SFlangeRi1 = 30.60 / 2.;
2460 const float kRB26s4SFlangeRi2 = 30.00 / 2.;
2461 const float kRB26s4SFlangeRi3 = 30.60 / 2.;
2463 TGeoPcon* shRB26s4SFlange =
new TGeoPcon(0., 360., 6);
2465 shRB26s4SFlange->DefineSection(0, z0, kRB26s4SFlangeRi1, kRB26s4SFlangeRo);
2466 z0 += kRB26s4SFlangeD1;
2467 shRB26s4SFlange->DefineSection(1, z0, kRB26s4SFlangeRi1, kRB26s4SFlangeRo);
2468 shRB26s4SFlange->DefineSection(2, z0, kRB26s4SFlangeRi2, kRB26s4SFlangeRo);
2469 z0 += kRB26s4SFlangeD2;
2470 shRB26s4SFlange->DefineSection(3, z0, kRB26s4SFlangeRi2, kRB26s4SFlangeRo);
2471 shRB26s4SFlange->DefineSection(4, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
2472 z0 += kRB26s4SFlangeD3;
2473 shRB26s4SFlange->DefineSection(5, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
2474 TGeoVolume* voRB26s4SFlange =
new TGeoVolume(
"RB26s4SFlange", shRB26s4SFlange, kMedSteelHC);
2476 TGeoVolume* voRB26s4SFlangeM =
new TGeoVolume(
"RB26s4SFlangeM", makeMotherFromTemplate(shRB26s4SFlange, 0, 3), kMedVacHC);
2477 voRB26s4SFlangeM->AddNode(voRB26s4SFlange, 1, gGeoIdentity);
2483 const float kRB26s5RFlangeL = 1.86;
2484 const float kRB26s5RFlangeD1 = 0.61;
2485 const float kRB26s5RFlangeD2 = 0.15;
2486 const float kRB26s5RFlangeD3 = 0.60;
2487 const float kRB26s5RFlangeD4 = 0.50;
2488 const float kRB26s5RFlangeRo = 15.20 / 2.;
2489 const float kRB26s5RFlangeRi1 = 10.30 / 2.;
2490 const float kRB26s5RFlangeRi2 = 10.00 / 2.;
2491 const float kRB26s5RFlangeRi3 = 10.30 / 2.;
2492 const float kRB26s5RFlangeRi4 = 10.50 / 2.;
2495 TGeoPcon* shRB26s5RFlange =
new TGeoPcon(0., 360., 8);
2497 shRB26s5RFlange->DefineSection(0, z0, kRB26s5RFlangeRi4, kRB26s5RFlangeRo);
2498 z0 += kRB26s5RFlangeD4;
2499 shRB26s5RFlange->DefineSection(1, z0, kRB26s5RFlangeRi4, kRB26s5RFlangeRo);
2500 shRB26s5RFlange->DefineSection(2, z0, kRB26s5RFlangeRi3, kRB26s5RFlangeRo);
2501 z0 += kRB26s5RFlangeD3;
2502 shRB26s5RFlange->DefineSection(3, z0, kRB26s5RFlangeRi3, kRB26s5RFlangeRo);
2503 shRB26s5RFlange->DefineSection(4, z0, kRB26s5RFlangeRi2, kRB26s5RFlangeRo);
2504 z0 += kRB26s5RFlangeD2;
2505 shRB26s5RFlange->DefineSection(5, z0, kRB26s5RFlangeRi2, kRB26s5RFlangeRo);
2506 shRB26s5RFlange->DefineSection(6, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
2507 z0 += kRB26s5RFlangeD1;
2508 shRB26s5RFlange->DefineSection(7, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
2509 TGeoVolume* voRB26s5RFlange =
new TGeoVolume(
"RB26s5RFlange", shRB26s5RFlange, kMedSteelHC);
2511 TGeoVolume* voRB26s5RFlangeM =
new TGeoVolume(
"RB26s5RFlangeM", makeMotherFromTemplate(shRB26s5RFlange, 4, 7), kMedVacHC);
2512 voRB26s5RFlangeM->AddNode(voRB26s5RFlange, 1, gGeoIdentity);
2517 TGeoVolumeAssembly* asRB26s12 =
new TGeoVolumeAssembly(
"RB26s12");
2520 barrel->AddNode(voRB26s1RFlange, 1,
new TGeoCombiTrans(0., 30., -82, rot180));
2521 z0 += kRB26s1RFlangeIsL + kRB26s1RFlangeFpL;
2522 barrel->AddNode(voRB26s12TubeM, 1,
new TGeoCombiTrans(0., 30., -82. - z0, rot180));
2523 z0 += kRB26s12TubeL;
2524 asRB26s12->AddNode(voRB26s12msTubeM, 1,
new TGeoTranslation(0., 0., z0));
2525 z0 += kRB26s12TubeL2;
2526 asRB26s12->AddNode(voRB26s2Compensator, 1,
new TGeoTranslation(0., 0., z0));
2528 z0 -= kRB26s2FFlangeD1;
2529 asRB26s12->AddNode(voRB26s2FFlangeM, 1,
new TGeoTranslation(0., 0., z0));
2530 z0 += kRB26s2FFlangeL;
2531 const float kRB26s12L = z0;
2536 TGeoVolumeAssembly* asRB26s3 =
new TGeoVolumeAssembly(
"RB26s3");
2538 asRB26s3->AddNode(voRB26s3SFlangeM, 1, gGeoIdentity);
2539 z0 += kRB26s3SFlangeL;
2540 z0 -= kRB26s3SFlangeD3;
2541 asRB26s3->AddNode(voRB26s3FixedPointM, 1,
new TGeoTranslation(0., 0., z0));
2542 z0 += kRB26s3FixedPointL;
2543 asRB26s3->AddNode(voRB26s3TubeM, 1,
new TGeoTranslation(0., 0., z0));
2545 asRB26s3->AddNode(voRB26s3Compensator, 1,
new TGeoTranslation(0., 0., z0));
2547 z0 -= kRB26s3FFlangeD1;
2548 asRB26s3->AddNode(voRB26s3FFlangeM, 1,
new TGeoTranslation(0., 0., z0));
2549 z0 += kRB26s3FFlangeL;
2550 const float kRB26s3L = z0;
2555 TGeoVolumeAssembly* asRB26s45 =
new TGeoVolumeAssembly(
"RB26s45");
2557 asRB26s45->AddNode(voRB26s4SFlangeM, 1, gGeoIdentity);
2558 z0 += kRB26s4SFlangeL;
2559 z0 -= kRB26s4SFlangeD3;
2560 asRB26s45->AddNode(voRB26s4FixedPointM, 1,
new TGeoTranslation(0., 0., z0));
2561 z0 += kRB26s4FixedPointL;
2562 asRB26s45->AddNode(voRB26s45TubeM, 1,
new TGeoTranslation(0., 0., z0));
2563 z0 += kRB26s45TubeL;
2564 asRB26s45->AddNode(voRB26s5Compensator, 1,
new TGeoTranslation(0., 0., z0));
2566 z0 -= kRB26s5RFlangeD3;
2567 z0 -= kRB26s5RFlangeD4;
2568 asRB26s45->AddNode(voRB26s5RFlangeM, 1,
new TGeoTranslation(0., 0., z0));
2569 z0 += kRB26s5RFlangeL;
2570 const float kRB26s45L = z0;
2575 TGeoVolumeAssembly* asRB26Pipe =
new TGeoVolumeAssembly(
"RB26Pipe");
2577 asRB26Pipe->AddNode(asRB26s12, 1,
new TGeoTranslation(0., 0., z0));
2579 asRB26Pipe->AddNode(asRB26s3, 1,
new TGeoTranslation(0., 0., z0));
2581 asRB26Pipe->AddNode(asRB26s45, 1,
new TGeoTranslation(0., 0., z0));
2583 top->AddNode(asRB26Pipe, 1,
new TGeoCombiTrans(0., 0., -82., rot180));