+//
+// [Pos 4] Left Welding Tube
+//
+ TGeoPcon* shRB26s3CompLeftTube = new TGeoPcon(0., 360., 5);
+ z0 = 0.;
+ shRB26s3CompLeftTube->DefineSection(0, z0, kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
+ z0 += kRB26s3WeldingTubeLeftL1;
+ shRB26s3CompLeftTube->DefineSection(1, z0, kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
+ z0 += kRB26s3WeldingTubeT1;
+ shRB26s3CompLeftTube->DefineSection(2, z0, kRB26s3CompTubeInnerR2, kRB26s3CompTubeOuterR2);
+ z0 += kRB26s3WeldingTubeLeftL2;
+ shRB26s3CompLeftTube->DefineSection(3, z0, kRB26s3CompTubeInnerR2, kRB26s3CompTubeOuterR2);
+ z0 += kRB26s3WeldingTubeT2;
+ shRB26s3CompLeftTube->DefineSection(4, z0, kRB26s3CompTubeInnerR3, kRB26s3CompTubeOuterR3);
+
+ TGeoVolume* voRB26s3CompLeftTube =
+ new TGeoVolume("RB26s3CompLeftTube", shRB26s3CompLeftTube, kMedSteel);
+ voRB26s3Compensator->AddNode(voRB26s3CompLeftTube, 1, gGeoIdentity);
+//
+// [Pos 5] Ring
+//
+ TGeoTube* shRB26s3CompRing = new TGeoTube(kRB26s3CompTubeOuterR2, kRB26s3RingOuterR, kRB26s3RingL);
+ TGeoVolume* voRB26s3CompRing =
+ new TGeoVolume("RB26s3CompRing", shRB26s3CompRing, kMedSteel);
+ voRB26s3Compensator->AddNode(voRB26s3CompRing, 1, new TGeoTranslation(0., 0., kRB26s3RingZ + kRB26s3RingL));
+
+
+
+///////////////////////////////////////////
+// //
+// RB26/4-5 //
+// Drawing LHCV2a_0012 [as installed] //
+////////////////////////////////////////////
+// Pos1 Vacuum Tubes LHCVC2A__0014
+// Pos2 Compensator LHCVC2A__0066
+// Pos3 Fixed Point Section LHCVC2A__0016
+// Pos4 Split Flange LHCVFX___0005
+// Pos5 RotableFlange LHCVFX___0009
+////////////////////////////////////////////
+
+///////////////////////////////////
+// RB26/4-5 Vacuum Tubes //
+// Drawing LHCVC2a_0014 //
+///////////////////////////////////
+ const Float_t kRB26s45TubeL = 593.12 + 0.3; // 0.3 cm added for welding
+
+ TGeoPcon* shRB26s45Tube = new TGeoPcon(0., 360., 11);
+ // Section 1: straight section
+ shRB26s45Tube->DefineSection( 0, 0.00, 30.00/2., 30.60/2.);
+ shRB26s45Tube->DefineSection( 1, 1.20, 30.00/2., 30.60/2.);
+ shRB26s45Tube->DefineSection( 2, 1.20, 30.00/2., 30.80/2.);
+ shRB26s45Tube->DefineSection( 3, 25.10, 30.00/2., 30.80/2.);
+ // Section 2: 0.932 deg opening cone
+ shRB26s45Tube->DefineSection( 4, 486.10, 45.00/2., 45.80/2.);
+ // Section 3: straight section 4 mm
+ shRB26s45Tube->DefineSection( 5, 512.10, 45.00/2., 45.80/2.);
+ // Section 4: straight section 3 mm
+ shRB26s45Tube->DefineSection( 6, 512.10, 45.00/2., 45.60/2.);
+ shRB26s45Tube->DefineSection( 7, 527.70, 45.00/2., 45.60/2.);
+ // Section 4: closing cone
+ shRB26s45Tube->DefineSection( 8, 591.30, 10.00/2., 10.60/2.);
+ shRB26s45Tube->DefineSection( 9, 591.89, 10.00/2., 10.30/2.);
+
+ shRB26s45Tube->DefineSection(10, kRB26s45TubeL, 10.00/2., 10.30/2.);
+ TGeoVolume* voRB26s45Tube =
+ new TGeoVolume("RB26s45Tube", shRB26s45Tube, kMedSteel);
+
+ TGeoVolume* voRB26s45TubeM = new TGeoVolume("RB26s45TubeM", MakeMotherFromTemplate(shRB26s45Tube), kMedVac);
+ voRB26s45TubeM->AddNode(voRB26s45Tube, 1, gGeoIdentity);
+
+
+
+///////////////////////////////////
+// RB26/5 Axial Compensator //
+// Drawing LHCVC2a_0066 //
+///////////////////////////////////
+ const Float_t kRB26s5CompL = 27.60; // Length of the compensator (0.30 cm added for welding)
+ const Float_t kRB26s5BellowRo = 12.48/2.; // Bellow outer radius [Pos 1]
+ const Float_t kRB26s5BellowRi = 10.32/2.; // Bellow inner radius [Pos 1]
+ const Int_t kRB26s5NumberOfPlies = 15; // Number of plies [Pos 1]
+ const Float_t kRB26s5BellowUndL = 10.50; // Length of undulated region [Pos 1]
+ const Float_t kRB26s5PlieThickness = 0.025; // Plie thickness [Pos 1]
+ const Float_t kRB26s5ConnectionPlieR = 0.21; // Connection plie radius [Pos 1]
+ const Float_t kRB26s5ConnectionR = 11.2/2.; // Bellow connection radius [Pos 1]
+// Plie radius
+ const Float_t kRB26s5PlieR =
+ (kRB26s5BellowUndL - 4. * kRB26s5ConnectionPlieR +
+ 2. * kRB26s5NumberOfPlies * kRB26s5PlieThickness) / (4. * kRB26s5NumberOfPlies);
+ const Float_t kRB26s5CompTubeInnerR = 10.00/2.; // Connection tubes inner radius [Pos 2 + 3]
+ const Float_t kRB26s5CompTubeOuterR = 10.30/2.; // Connection tubes outer radius [Pos 2 + 3]
+ const Float_t kRB26s5WeldingTubeLeftL = 3.70/2.; // Left connection tube half length [Pos 2]
+ const Float_t kRB26s5WeldingTubeRightL = 13.40/2.; // Right connection tube half length [Pos 3] (0.3 cm added for welding)
+ const Float_t kRB26s5RingInnerR = 11.2/2.; // Ring inner radius [Pos 4]
+ const Float_t kRB26s5RingOuterR = 16.0/2.; // Ring inner radius [Pos 4]
+ const Float_t kRB26s5RingL = 0.4/2.; // Ring half length [Pos 4]
+ const Float_t kRB26s5RingZ = 14.97; // Ring z-position [Pos 4]
+ const Float_t kRB26s5ProtOuterR = 16.2/2.; // Protection tube outer radius [Pos 5]
+ const Float_t kRB26s5ProtL = 13.0/2.; // Protection tube half length [Pos 5]
+ const Float_t kRB26s5ProtZ = 2.17; // Protection tube z-position [Pos 5]
+ const Float_t kRB26s5DetailZR = 11.3/2.; // Detail Z max radius
+
+
+// Mother volume
+//
+ TGeoPcon* shRB26s5Compensator = new TGeoPcon(0., 360., 8);
+ shRB26s5Compensator->DefineSection( 0, 0.0, 0., kRB26s5CompTubeOuterR);
+ shRB26s5Compensator->DefineSection( 1, kRB26s5ProtZ, 0., kRB26s5CompTubeOuterR);
+ shRB26s5Compensator->DefineSection( 2, kRB26s5ProtZ, 0., kRB26s5ProtOuterR);
+ shRB26s5Compensator->DefineSection( 3, kRB26s5ProtZ + 2. * kRB26s5ProtL + 2. * kRB26s5RingL, 0., kRB26s5ProtOuterR);
+ shRB26s5Compensator->DefineSection( 4, kRB26s5ProtZ + 2. * kRB26s5ProtL + 2. * kRB26s5RingL, 0., kRB26s5DetailZR);
+ shRB26s5Compensator->DefineSection( 5, kRB26s5CompL - 8., 0., kRB26s5DetailZR);
+ shRB26s5Compensator->DefineSection( 6, kRB26s5CompL - 8., 0., kRB26s5CompTubeOuterR);
+ shRB26s5Compensator->DefineSection( 7, kRB26s5CompL, 0., kRB26s5CompTubeOuterR);
+ TGeoVolume* voRB26s5Compensator = new TGeoVolume("RB26s5Compensator", shRB26s5Compensator, kMedVac);
+
+//
+// [Pos 1] Bellow
+//
+//
+ TGeoVolume* voRB26s5Bellow = new TGeoVolume("RB26s5Bellow",
+ new TGeoTube(kRB26s5BellowRi, kRB26s5BellowRo, kRB26s5BellowUndL/2.), kMedVac);
+//
+// Upper part of the undulation
+//
+ TGeoTorus* shRB26s5PlieTorusU = new TGeoTorus(kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieR - kRB26s5PlieThickness, kRB26s5PlieR);
+ shRB26s5PlieTorusU->SetName("RB26s5TorusU");
+ TGeoTube* shRB26s5PlieTubeU = new TGeoTube (kRB26s5BellowRo - kRB26s5PlieR, kRB26s5BellowRo, kRB26s5PlieR);
+ shRB26s5PlieTubeU->SetName("RB26s5TubeU");
+ TGeoCompositeShape* shRB26s5UpperPlie = new TGeoCompositeShape("RB26s5UpperPlie", "RB26s5TorusU*RB26s5TubeU");
+
+ TGeoVolume* voRB26s5WiggleU = new TGeoVolume("RB26s5UpperPlie", shRB26s5UpperPlie, kMedSteel);
+//
+// Lower part of the undulation
+ TGeoTorus* shRB26s5PlieTorusL = new TGeoTorus(kRB26s5BellowRi + kRB26s5PlieR, kRB26s5PlieR - kRB26s5PlieThickness, kRB26s5PlieR);
+ shRB26s5PlieTorusL->SetName("RB26s5TorusL");
+ TGeoTube* shRB26s5PlieTubeL = new TGeoTube (kRB26s5BellowRi, kRB26s5BellowRi + kRB26s5PlieR, kRB26s5PlieR);
+ shRB26s5PlieTubeL->SetName("RB26s5TubeL");
+ TGeoCompositeShape* shRB26s5LowerPlie = new TGeoCompositeShape("RB26s5LowerPlie", "RB26s5TorusL*RB26s5TubeL");
+
+ TGeoVolume* voRB26s5WiggleL = new TGeoVolume("RB26s5LowerPlie", shRB26s5LowerPlie, kMedSteel);
+
+//
+// Connection between upper and lower part of undulation
+ TGeoVolume* voRB26s5WiggleC1 = new TGeoVolume("RB26s5PlieConn1",
+ new TGeoTube(kRB26s5BellowRi + kRB26s5PlieR,
+ kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieThickness / 2.), kMedSteel);
+//
+// One wiggle
+ TGeoVolumeAssembly* voRB26s5Wiggle = new TGeoVolumeAssembly("RB26s5Wiggle");
+ z0 = - kRB26s5PlieThickness / 2.;
+ voRB26s5Wiggle->AddNode(voRB26s5WiggleC1, 1 , new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s5PlieR - kRB26s5PlieThickness / 2.;
+ voRB26s5Wiggle->AddNode(voRB26s5WiggleU, 1 , new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s5PlieR - kRB26s5PlieThickness / 2.;
+ voRB26s5Wiggle->AddNode(voRB26s5WiggleC1, 2 , new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s5PlieR - kRB26s5PlieThickness;
+ voRB26s5Wiggle->AddNode(voRB26s5WiggleL , 1 , new TGeoTranslation(0., 0., z0));
+// Positioning of the volumes
+ z0 = - kRB26s5BellowUndL/2.+ kRB26s5ConnectionPlieR;
+ voRB26s5Bellow->AddNode(voRB26s5WiggleL, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s5ConnectionPlieR;
+ zsh = 4. * kRB26s5PlieR - 2. * kRB26s5PlieThickness;
+ for (Int_t iw = 0; iw < kRB26s5NumberOfPlies; iw++) {
+ Float_t zpos = z0 + iw * zsh;
+ voRB26s5Bellow->AddNode(voRB26s5Wiggle, iw + 1, new TGeoTranslation(0., 0., zpos - kRB26s5PlieThickness));
+ }
+
+ voRB26s5Compensator->AddNode(voRB26s5Bellow, 1, new TGeoTranslation(0., 0., 2. * kRB26s5WeldingTubeLeftL + kRB26s5BellowUndL/2.));
+
+//
+// [Pos 2] Left Welding Tube
+//
+ TGeoPcon* shRB26s5CompLeftTube = new TGeoPcon(0., 360., 3);
+ z0 = 0;
+ shRB26s5CompLeftTube->DefineSection(0, z0, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
+ z0 += 2 * kRB26s5WeldingTubeLeftL - ( kRB26s5ConnectionR - kRB26s5CompTubeOuterR);
+ shRB26s5CompLeftTube->DefineSection(1, z0, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
+ z0 += ( kRB26s5ConnectionR - kRB26s5CompTubeOuterR);
+ shRB26s5CompLeftTube->DefineSection(2, z0, kRB26s5ConnectionR - 0.15, kRB26s5ConnectionR);
+ TGeoVolume* voRB26s5CompLeftTube = new TGeoVolume("RB26s5CompLeftTube", shRB26s5CompLeftTube, kMedSteel);
+ voRB26s5Compensator->AddNode(voRB26s5CompLeftTube, 1, gGeoIdentity);
+//
+// [Pos 3] Right Welding Tube
+//
+ TGeoPcon* shRB26s5CompRightTube = new TGeoPcon(0., 360., 11);
+ // Detail Z
+ shRB26s5CompRightTube->DefineSection( 0, 0. , kRB26s5CompTubeInnerR + 0.22, 11.2/2.);
+ shRB26s5CompRightTube->DefineSection( 1, 0.05, kRB26s5CompTubeInnerR + 0.18, 11.2/2.);
+ shRB26s5CompRightTube->DefineSection( 2, 0.22, kRB26s5CompTubeInnerR , 11.2/2. - 0.22);
+ shRB26s5CompRightTube->DefineSection( 3, 0.44, kRB26s5CompTubeInnerR , 11.2/2.);
+ shRB26s5CompRightTube->DefineSection( 4, 1.70, kRB26s5CompTubeInnerR , 11.2/2.);
+ shRB26s5CompRightTube->DefineSection( 5, 2.10, kRB26s5CompTubeInnerR , kRB26s5CompTubeOuterR);
+ shRB26s5CompRightTube->DefineSection( 6, 2.80, kRB26s5CompTubeInnerR , kRB26s5CompTubeOuterR);
+ shRB26s5CompRightTube->DefineSection( 7, 2.80, kRB26s5CompTubeInnerR , 11.3/2.);
+ shRB26s5CompRightTube->DefineSection( 8, 3.40, kRB26s5CompTubeInnerR , 11.3/2.);
+ // Normal pipe
+ shRB26s5CompRightTube->DefineSection( 9, 3.50, kRB26s5CompTubeInnerR , kRB26s5CompTubeOuterR);
+ shRB26s5CompRightTube->DefineSection(10, 2. * kRB26s5WeldingTubeRightL, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
+
+ TGeoVolume* voRB26s5CompRightTube =
+ new TGeoVolume("RB26s5CompRightTube", shRB26s5CompRightTube, kMedSteel);
+ voRB26s5Compensator->AddNode(voRB26s5CompRightTube, 1,
+ new TGeoTranslation(0., 0., kRB26s5CompL - 2. * kRB26s5WeldingTubeRightL));
+//
+// [Pos 4] Ring
+//
+ TGeoTube* shRB26s5CompRing = new TGeoTube(kRB26s5RingInnerR, kRB26s5RingOuterR, kRB26s5RingL);
+ TGeoVolume* voRB26s5CompRing =
+ new TGeoVolume("RB26s5CompRing", shRB26s5CompRing, kMedSteel);
+ voRB26s5Compensator->AddNode(voRB26s5CompRing, 1, new TGeoTranslation(0., 0., kRB26s5RingZ + kRB26s5RingL));
+
+//
+// [Pos 5] Outer Protecting Tube
+//
+ TGeoTube* shRB26s5CompProtTube = new TGeoTube(kRB26s5RingOuterR, kRB26s5ProtOuterR, kRB26s5ProtL);
+ TGeoVolume* voRB26s5CompProtTube =
+ new TGeoVolume("RB26s5CompProtTube", shRB26s5CompProtTube, kMedSteel);
+ voRB26s5Compensator->AddNode(voRB26s5CompProtTube, 1, new TGeoTranslation(0., 0., kRB26s5ProtZ + kRB26s5ProtL));
+
+///////////////////////////////////////
+// RB26/4 Fixed Point Section //
+// Drawing LHCVC2a_0016 //
+///////////////////////////////////////
+ const Float_t kRB26s4TubeRi = 30.30/2. ; // Tube inner radius (0.3 cm added for welding)
+ const Float_t kRB26s4TubeRo = 30.60/2. ; // Tube outer radius
+ const Float_t kRB26s4FixedPointL = 12.63 ; // Length of the fixed point section
+ const Float_t kRB26s4FixedPointZ = 10.53 ; // Position of the ring (0.15 added for welding)
+ const Float_t kRB26s4FixedPointD = 0.595 ; // Width of the ring
+ const Float_t kRB26s4FixedPointR = 31.60/2. ; // Radius of the ring
+
+ TGeoPcon* shRB26s4FixedPoint = new TGeoPcon(0., 360., 6);
+ z0 = 0.;
+ shRB26s4FixedPoint->DefineSection(0, z0, kRB26s4TubeRi, kRB26s4TubeRo);
+ z0 += kRB26s4FixedPointZ;
+ shRB26s4FixedPoint->DefineSection(1, z0, kRB26s4TubeRi, kRB26s4TubeRo);
+ shRB26s4FixedPoint->DefineSection(2, z0, kRB26s4TubeRi, kRB26s4FixedPointR);
+ z0 += kRB26s4FixedPointD;
+ shRB26s4FixedPoint->DefineSection(3, z0, kRB26s4TubeRi, kRB26s4FixedPointR);
+ shRB26s4FixedPoint->DefineSection(4, z0, kRB26s4TubeRi, kRB26s4TubeRo);
+ z0 = kRB26s4FixedPointL;
+ shRB26s4FixedPoint->DefineSection(5, z0, kRB26s4TubeRi, kRB26s4TubeRo);
+ TGeoVolume* voRB26s4FixedPoint = new TGeoVolume("RB26s4FixedPoint", shRB26s4FixedPoint, kMedSteel);
+
+ TGeoVolume* voRB26s4FixedPointM = new TGeoVolume("RB26s4FixedPointM", MakeMotherFromTemplate(shRB26s4FixedPoint), kMedVac);
+ voRB26s4FixedPointM->AddNode(voRB26s4FixedPoint, 1, gGeoIdentity);
+
+
+///////////////////////////////////////
+// RB26/4 Split Flange //
+// Drawing LHCVFX__0005 //
+///////////////////////////////////////
+ const Float_t kRB26s4SFlangeL = 2.99; // Length of the flange
+ const Float_t kRB26s4SFlangeD1 = 0.85; // Length of section 1
+ const Float_t kRB26s4SFlangeD2 = 0.36; // Length of section 2
+ const Float_t kRB26s4SFlangeD3 = 0.73 + 1.05; // Length of section 3
+ const Float_t kRB26s4SFlangeRo = 36.20/2.; // Flange outer radius
+ const Float_t kRB26s4SFlangeRi1 = 30.60/2.; // Flange inner radius section 1
+ const Float_t kRB26s4SFlangeRi2 = 30.00/2.; // Flange inner radius section 2
+ const Float_t kRB26s4SFlangeRi3 = 30.60/2.; // Flange inner radius section 3
+ z0 = 0;
+ TGeoPcon* shRB26s4SFlange = new TGeoPcon(0., 360., 6);
+ z0 = 0.;
+ shRB26s4SFlange->DefineSection(0, z0, kRB26s4SFlangeRi1, kRB26s4SFlangeRo);
+ z0 += kRB26s4SFlangeD1;
+ shRB26s4SFlange->DefineSection(1, z0, kRB26s4SFlangeRi1, kRB26s4SFlangeRo);
+ shRB26s4SFlange->DefineSection(2, z0, kRB26s4SFlangeRi2, kRB26s4SFlangeRo);
+ z0 += kRB26s4SFlangeD2;
+ shRB26s4SFlange->DefineSection(3, z0, kRB26s4SFlangeRi2, kRB26s4SFlangeRo);
+ shRB26s4SFlange->DefineSection(4, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
+ z0 += kRB26s4SFlangeD3;
+ shRB26s4SFlange->DefineSection(5, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
+ TGeoVolume* voRB26s4SFlange = new TGeoVolume("RB26s4SFlange", shRB26s4SFlange, kMedSteel);
+
+ TGeoVolume* voRB26s4SFlangeM = new TGeoVolume("RB26s4SFlangeM", MakeMotherFromTemplate(shRB26s4SFlange, 0, 3), kMedVac);
+ voRB26s4SFlangeM->AddNode(voRB26s4SFlange, 1, gGeoIdentity);
+
+///////////////////////////////////////
+// RB26/5 Rotable Flange //
+// Drawing LHCVFX__0009 //
+///////////////////////////////////////
+ const Float_t kRB26s5RFlangeL = 1.86; // Length of the flange
+ const Float_t kRB26s5RFlangeD1 = 0.61; // Length of section 1
+ const Float_t kRB26s5RFlangeD2 = 0.15; // Length of section 2
+ const Float_t kRB26s5RFlangeD3 = 0.60; // Length of section 3
+ const Float_t kRB26s5RFlangeD4 = 0.50; // Length of section 4
+ const Float_t kRB26s5RFlangeRo = 15.20/2.; // Flange outer radius
+ const Float_t kRB26s5RFlangeRi1 = 10.30/2.; // Flange inner radius section 1
+ const Float_t kRB26s5RFlangeRi2 = 10.00/2.; // Flange inner radius section 2
+ const Float_t kRB26s5RFlangeRi3 = 10.30/2.; // Flange inner radius section 3
+ const Float_t kRB26s5RFlangeRi4 = 10.50/2.; // Flange inner radius section 4
+
+ z0 = 0;
+ TGeoPcon* shRB26s5RFlange = new TGeoPcon(0., 360., 8);
+ z0 = 0.;
+ shRB26s5RFlange->DefineSection(0, z0, kRB26s5RFlangeRi4, kRB26s5RFlangeRo);
+ z0 += kRB26s5RFlangeD4;
+ shRB26s5RFlange->DefineSection(1, z0, kRB26s5RFlangeRi4, kRB26s5RFlangeRo);
+ shRB26s5RFlange->DefineSection(2, z0, kRB26s5RFlangeRi3, kRB26s5RFlangeRo);
+ z0 += kRB26s5RFlangeD3;
+ shRB26s5RFlange->DefineSection(3, z0, kRB26s5RFlangeRi3, kRB26s5RFlangeRo);
+ shRB26s5RFlange->DefineSection(4, z0, kRB26s5RFlangeRi2, kRB26s5RFlangeRo);
+ z0 += kRB26s5RFlangeD2;
+ shRB26s5RFlange->DefineSection(5, z0, kRB26s5RFlangeRi2, kRB26s5RFlangeRo);
+ shRB26s5RFlange->DefineSection(6, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
+ z0 += kRB26s5RFlangeD1;
+ shRB26s5RFlange->DefineSection(7, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
+ TGeoVolume* voRB26s5RFlange = new TGeoVolume("RB26s5RFlange", shRB26s5RFlange, kMedSteel);
+
+ TGeoVolume* voRB26s5RFlangeM = new TGeoVolume("RB26s5RFlangeM", MakeMotherFromTemplate(shRB26s5RFlange, 4, 7), kMedVac);
+ voRB26s5RFlangeM->AddNode(voRB26s5RFlange, 1, gGeoIdentity);
+
+//
+// Assemble RB26/1-2
+//
+ TGeoVolumeAssembly* asRB26s12 = new TGeoVolumeAssembly("RB26s12");
+ z0 = 0.;
+ asRB26s12->AddNode(voRB26s1RFlange, 1, gGeoIdentity);
+ z0 += kRB26s1RFlangeIsL + kRB26s1RFlangeFpL;
+ asRB26s12->AddNode(voRB26s12TubeM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s12TubeL;
+ asRB26s12->AddNode(voRB26s2Compensator, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s2CompL;
+ z0 -= kRB26s2FFlangeD1;
+ asRB26s12->AddNode(voRB26s2FFlangeM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s2FFlangeL;
+ const Float_t kRB26s12L = z0;
+
+//
+// Assemble RB26/3
+//
+ TGeoVolumeAssembly* asRB26s3 = new TGeoVolumeAssembly("RB26s3");
+ z0 = 0.;
+ asRB26s3->AddNode(voRB26s3SFlangeM, 1, gGeoIdentity);
+ z0 += kRB26s3SFlangeL;
+ z0 -= kRB26s3SFlangeD3;
+ asRB26s3->AddNode(voRB26s3FixedPointM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s3FixedPointL;
+ asRB26s3->AddNode(voRB26s3TubeM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s3TubeL;
+ asRB26s3->AddNode(voRB26s3Compensator, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s3CompL;
+ z0 -= kRB26s3FFlangeD1;
+ asRB26s3->AddNode(voRB26s3FFlangeM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s3FFlangeL;
+ const Float_t kRB26s3L = z0;
+
+
+//
+// Assemble RB26/4-5
+//
+ TGeoVolumeAssembly* asRB26s45 = new TGeoVolumeAssembly("RB26s45");
+ z0 = 0.;
+ asRB26s45->AddNode(voRB26s4SFlangeM, 1, gGeoIdentity);
+ z0 += kRB26s4SFlangeL;
+ z0 -= kRB26s4SFlangeD3;
+ asRB26s45->AddNode(voRB26s4FixedPointM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s4FixedPointL;
+ asRB26s45->AddNode(voRB26s45TubeM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s45TubeL;
+ asRB26s45->AddNode(voRB26s5Compensator, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s5CompL;
+ z0 -= kRB26s5RFlangeD3;
+ z0 -= kRB26s5RFlangeD4;
+ asRB26s45->AddNode(voRB26s5RFlangeM, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s5RFlangeL;
+ const Float_t kRB26s45L = z0;
+
+//
+// Assemble RB26
+//
+ TGeoVolumeAssembly* asRB26Pipe = new TGeoVolumeAssembly("RB26Pipe");
+ z0 = 0.;
+ asRB26Pipe->AddNode(asRB26s12, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s12L;
+ asRB26Pipe->AddNode(asRB26s3, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s3L;
+ asRB26Pipe->AddNode(asRB26s45, 1, new TGeoTranslation(0., 0., z0));
+ z0 += kRB26s45L;
+ top->AddNode(asRB26Pipe, 1, new TGeoCombiTrans(0., 0., -82., rot180));