+ TGeoPcon* shRB24B1RFlange = new TGeoPcon(0., 360., 10);
+ z = 0.;
+ shRB24B1RFlange->DefineSection(0, z, 10.30/2., kRB24B1RFlangeRou);
+ z += 0.55; // 5.5 mm added for outer ring
+ z += 0.43;
+ shRB24B1RFlange->DefineSection(1, z, 10.30/2., kRB24B1RFlangeRou);
+ shRB24B1RFlange->DefineSection(2, z, 10.06/2., kRB24B1RFlangeRou);
+ z += 0.15;
+ shRB24B1RFlange->DefineSection(3, z, 10.06/2., kRB24B1RFlangeRou);
+ // In reality this part is rounded
+ shRB24B1RFlange->DefineSection(4, z, 10.91/2., kRB24B1RFlangeRou);
+ z += 0.15;
+ shRB24B1RFlange->DefineSection(5, z, 10.91/2., kRB24B1RFlangeRou);
+ shRB24B1RFlange->DefineSection(6, z, 10.06/2., kRB24B1RFlangeRou);
+ z += 0.32;
+ shRB24B1RFlange->DefineSection(7, z, 10.06/2., kRB24B1RFlangeRou);
+ shRB24B1RFlange->DefineSection(8, z, kRB24B1RFlangeRO, kRB24B1RFlangeRou);
+ z += kRB24B1RFlangeLO;
+ shRB24B1RFlange->DefineSection(9, z, kRB24B1RFlangeRO, kRB24B1RFlangeRou);
+
+ TGeoVolume* voRB24B1RFlange = new TGeoVolume("RB24B1RFlange", shRB24B1RFlange, kMedSteel);
+
+
+ z = kRB24B1L - kRB24B1RFlangeL;
+ voRB24B1BellowM->AddNode(voRB24B1RFlange, 1, new TGeoTranslation(0., 0., z));
+ z = kRB24B1RFlangeL;
+ voRB24B1BellowM->AddNode(voRB24B1RFlange, 2, new TGeoCombiTrans(0., 0., z, rot180));
+//
+// Pos 2 RF Contact D80 LHCVSR__0005
+//
+// Pos 2.1 RF Contact Flange LHCVSR__0003
+//
+ TGeoPcon* shRB24B1RCTFlange = new TGeoPcon(0., 360., 6);
+ const Float_t kRB24B1RCTFlangeRin = 8.06/2. + 0.05; // Inner radius
+ const Float_t kRB24B1RCTFlangeL = 1.45; // Length
+
+ z = 0.;
+ shRB24B1RCTFlange->DefineSection(0, z, kRB24B1RCTFlangeRin, 8.20/2.);
+ z += 0.15;
+ shRB24B1RCTFlange->DefineSection(1, z, kRB24B1RCTFlangeRin, 8.20/2.);
+ shRB24B1RCTFlange->DefineSection(2, z, kRB24B1RCTFlangeRin, 8.60/2.);
+ z += 1.05;
+ shRB24B1RCTFlange->DefineSection(3, z, kRB24B1RCTFlangeRin, 8.60/2.);
+ shRB24B1RCTFlange->DefineSection(4, z, kRB24B1RCTFlangeRin, 11.16/2.);
+ z += 0.25;
+ shRB24B1RCTFlange->DefineSection(5, z, kRB24B1RCTFlangeRin, 11.16/2.);
+ TGeoVolume* voRB24B1RCTFlange = new TGeoVolume("RB24B1RCTFlange", shRB24B1RCTFlange, kMedCu);
+ z = kRB24B1L - kRB24B1RCTFlangeL;
+
+ voRB24B1BellowM->AddNode(voRB24B1RCTFlange, 1, new TGeoTranslation(0., 0., z));
+//
+// Pos 2.2 RF-Contact LHCVSR__0004
+//
+ TGeoPcon* shRB24B1RCT = new TGeoPcon(0., 360., 3);
+ const Float_t kRB24B1RCTRin = 8.00/2.; // Inner radius
+ const Float_t kRB24B1RCTCRin = 8.99/2.; // Max. inner radius conical section
+ const Float_t kRB24B1RCTL = 11.78; // Length
+ const Float_t kRB24B1RCTSL = 10.48; // Length of straight section
+ const Float_t kRB24B1RCTd = 0.03; // Thickness
+
+ z = 0;
+ shRB24B1RCT->DefineSection(0, z, kRB24B1RCTCRin, kRB24B1RCTCRin + kRB24B1RCTd);
+ z = kRB24B1RCTL - kRB24B1RCTSL;
+ // In the (VSR0004) this section is straight in (LHCVC2U_0001) it is conical ????
+ shRB24B1RCT->DefineSection(1, z, kRB24B1RCTRin + 0.35, kRB24B1RCTRin + 0.35 + kRB24B1RCTd);
+ z = kRB24B1RCTL - 0.03;
+ shRB24B1RCT->DefineSection(2, z, kRB24B1RCTRin, kRB24B1RCTRin + kRB24B1RCTd);
+
+ TGeoVolume* voRB24B1RCT = new TGeoVolume("RB24B1RCT", shRB24B1RCT, kMedCu);
+ z = kRB24B1L - kRB24B1RCTL - 0.45;
+ voRB24B1BellowM->AddNode(voRB24B1RCT, 1, new TGeoTranslation(0., 0., z));
+
+//
+// Pos 3 Trans. Tube Flange LHCVSR__0065
+//
+// Pos 3.1 Transition Tube D53 LHCVSR__0064
+// Pos 3.2 Transition Flange LHCVSR__0060
+// Pos 3.3 Transition Tube LHCVSR__0058
+ TGeoPcon* shRB24B1TTF = new TGeoPcon(0., 360., 7);
+ // Flange
+ z = 0.;
+ shRB24B1TTF->DefineSection(0, z, 6.30/2., 11.16/2.);
+ z += 0.25;
+ shRB24B1TTF->DefineSection(1, z, 6.30/2., 11.16/2.);
+ shRB24B1TTF->DefineSection(2, z, 6.30/2., 9.3/2.);
+ z += 0.55;
+ shRB24B1TTF->DefineSection(3, z, 6.30/2., 9.3/2.);
+ // Tube
+ shRB24B1TTF->DefineSection(4, z, 6.30/2., 6.7/2.);
+ z += 5.80;
+ shRB24B1TTF->DefineSection(5, z, 6.30/2., 6.7/2.);
+ // Transition Tube
+ z += 3.75;
+ shRB24B1TTF->DefineSection(6, z, 8.05/2., 8.45/2.);
+ TGeoVolume* voRB24B1TTF = new TGeoVolume("RB24B1TTF", shRB24B1TTF, kMedSteel);
+ z = 0.;
+ voRB24B1BellowM->AddNode(voRB24B1TTF, 1, new TGeoTranslation(0., 0., z));
+
+// Annular Ion Pump
+// LHCVC2U_0003
+//
+// Pos 1 Rotable Flange LHCVFX__0031
+// Pos 2 RF Screen Tube LHCVC2U_0005
+// Pos 3 Shell LHCVC2U_0007
+// Pos 4 Extruded Shell LHCVC2U_0006
+// Pos 5 Feedthrough Tube LHCVC2U_0004
+// Pos 6 Tubulated Flange STDVFUHV0021
+// Pos 7 Fixed Flange LHCVFX__0032
+// Pos 8 Pumping Elements
+
+//
+// Pos 1 Rotable Flange LHCVFX__0031
+// pos 7 Fixed Flange LHCVFX__0032
+//
+// Mother volume
+ const Float_t kRB24AIpML = 35.;
+
+ TGeoVolume* voRB24AIpM = new TGeoVolume("voRB24AIpM", new TGeoTube(0., 10., kRB24AIpML/2.), kMedAir);
+ voRB24AIpM->SetVisibility(0);
+
+ //
+ // Length 35 cm
+ // Flange 2 x 1.98 = 3.96
+ // Tube = 32.84
+ //==========================
+ // 36.80
+ // Overlap 2 * 0.90 = 1.80
+
+ const Float_t kRB24IpRFD1 = 0.68; // Length of section 1
+ const Float_t kRB24IpRFD2 = 0.30; // Length of section 2
+ const Float_t kRB24IpRFD3 = 0.10; // Length of section 3
+ const Float_t kRB24IpRFD4 = 0.35; // Length of section 4
+ const Float_t kRB24IpRFD5 = 0.55; // Length of section 5
+
+ const Float_t kRB24IpRFRo = 15.20/2.; // Flange outer radius
+ const Float_t kRB24IpRFRi1 = 6.30/2.; // Flange inner radius section 1
+ const Float_t kRB24IpRFRi2 = 6.00/2.; // Flange inner radius section 2
+ const Float_t kRB24IpRFRi3 = 5.84/2.; // Flange inner radius section 3
+ const Float_t kRB24IpRFRi4 = 6.00/2.; // Flange inner radius section 1
+ const Float_t kRB24IpRFRi5 = 10.50/2.; // Flange inner radius section 2
+
+ TGeoPcon* shRB24IpRF = new TGeoPcon(0., 360., 9);
+ z0 = 0.;
+ shRB24IpRF->DefineSection(0, z0, kRB24IpRFRi1, kRB24IpRFRo);
+ z0 += kRB24IpRFD1;
+ shRB24IpRF->DefineSection(1, z0, kRB24IpRFRi2, kRB24IpRFRo);
+ z0 += kRB24IpRFD2;
+ shRB24IpRF->DefineSection(2, z0, kRB24IpRFRi2, kRB24IpRFRo);
+ shRB24IpRF->DefineSection(3, z0, kRB24IpRFRi3, kRB24IpRFRo);
+ z0 += kRB24IpRFD3;
+ shRB24IpRF->DefineSection(4, z0, kRB24IpRFRi3, kRB24IpRFRo);
+ shRB24IpRF->DefineSection(5, z0, kRB24IpRFRi4, kRB24IpRFRo);
+ z0 += kRB24IpRFD4;
+ shRB24IpRF->DefineSection(6, z0, kRB24IpRFRi4, kRB24IpRFRo);
+ shRB24IpRF->DefineSection(7, z0, kRB24IpRFRi5, kRB24IpRFRo);
+ z0 += kRB24IpRFD5;
+ shRB24IpRF->DefineSection(8, z0, kRB24IpRFRi5, kRB24IpRFRo);
+
+ TGeoVolume* voRB24IpRF = new TGeoVolume("RB24IpRF", shRB24IpRF, kMedSteel);
+
+//
+// Pos 2 RF Screen Tube LHCVC2U_0005
+//
+
+//
+// Tube
+ Float_t kRB24IpSTTL = 32.84; // Total length of the tube
+ Float_t kRB24IpSTTRi = 5.80/2.; // Inner Radius
+ Float_t kRB24IpSTTRo = 6.00/2.; // Outer Radius
+ TGeoVolume* voRB24IpSTT = new TGeoVolume("RB24IpSTT", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTTL/2.), kMedSteel);
+// Screen
+ Float_t kRB24IpSTCL = 0.4; // Lenth of the crochet detail
+ // Length of the screen
+ Float_t kRB24IpSTSL = 9.00 - 2. * kRB24IpSTCL;
+ // Rel. position of the screen
+ Float_t kRB24IpSTSZ = 7.00 + kRB24IpSTCL;
+ TGeoVolume* voRB24IpSTS = new TGeoVolume("RB24IpSTS", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTSL/2.), kMedSteel);
+ // Vacuum
+ TGeoVolume* voRB24IpSTV = new TGeoVolume("RB24IpSTV", new TGeoTube(0., kRB24IpSTTRi, kRB24AIpML/2.), kMedVac);
+ //
+ voRB24IpSTT->AddNode(voRB24IpSTS, 1, new TGeoTranslation(0., 0., kRB24IpSTSZ - kRB24IpSTTL/2. + kRB24IpSTSL/2.));
+
+// Crochets
+ // Inner radius
+ Float_t kRB24IpSTCRi = kRB24IpSTTRo + 0.25;
+ // Outer radius
+ Float_t kRB24IpSTCRo = kRB24IpSTTRo + 0.35;
+ // Length of 1stsection
+ Float_t kRB24IpSTCL1 = 0.15;
+ // Length of 2nd section
+ Float_t kRB24IpSTCL2 = 0.15;
+ // Length of 3rd section
+ Float_t kRB24IpSTCL3 = 0.10;
+ // Rel. position of 1st Crochet
+
+
+ TGeoPcon* shRB24IpSTC = new TGeoPcon(0., 360., 5);
+ z0 = 0;
+ shRB24IpSTC->DefineSection(0, z0, kRB24IpSTCRi, kRB24IpSTCRo);
+ z0 += kRB24IpSTCL1;
+ shRB24IpSTC->DefineSection(1, z0, kRB24IpSTCRi, kRB24IpSTCRo);
+ shRB24IpSTC->DefineSection(2, z0, kRB24IpSTTRo, kRB24IpSTCRo);
+ z0 += kRB24IpSTCL2;
+ shRB24IpSTC->DefineSection(3, z0, kRB24IpSTTRo, kRB24IpSTCRo);
+ z0 += kRB24IpSTCL3;
+ shRB24IpSTC->DefineSection(4, z0, kRB24IpSTTRo, kRB24IpSTTRo + 0.001);
+ TGeoVolume* voRB24IpSTC = new TGeoVolume("RB24IpSTC", shRB24IpSTC, kMedSteel);
+
+// Pos 3 Shell LHCVC2U_0007
+// Pos 4 Extruded Shell LHCVC2U_0006
+ Float_t kRB24IpShellL = 4.45; // Length of the Shell
+ Float_t kRB24IpShellD = 0.10; // Wall thickness of the shell
+ Float_t kRB24IpShellCTRi = 6.70/2.; // Inner radius of the connection tube
+ Float_t kRB24IpShellCTL = 1.56; // Length of the connection tube
+ Float_t kRB24IpShellCARi = 17.80/2.; // Inner radius of the cavity
+ Float_t kRB24IpShellCCRo = 18.20/2.; // Inner radius at the centre
+
+ TGeoPcon* shRB24IpShell = new TGeoPcon(0., 360., 7);
+ z0 = 0;
+ shRB24IpShell->DefineSection(0, z0, kRB24IpShellCTRi, kRB24IpShellCTRi + kRB24IpShellD);
+ z0 += kRB24IpShellCTL;
+ shRB24IpShell->DefineSection(1, z0, kRB24IpShellCTRi, kRB24IpShellCTRi + kRB24IpShellD);
+ shRB24IpShell->DefineSection(2, z0, kRB24IpShellCTRi, kRB24IpShellCARi + kRB24IpShellD);
+ z0 += kRB24IpShellD;
+ shRB24IpShell->DefineSection(3, z0, kRB24IpShellCARi, kRB24IpShellCARi + kRB24IpShellD);
+ z0 = kRB24IpShellL - kRB24IpShellD;
+ shRB24IpShell->DefineSection(4, z0, kRB24IpShellCARi, kRB24IpShellCARi + kRB24IpShellD);
+ shRB24IpShell->DefineSection(5, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
+ z0 = kRB24IpShellL;
+ shRB24IpShell->DefineSection(6, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
+ TGeoVolume* voRB24IpShell = new TGeoVolume("RB24IpShell", shRB24IpShell, kMedSteel);
+
+ TGeoPcon* shRB24IpShellM = MakeMotherFromTemplate(shRB24IpShell, 0, 6, kRB24IpShellCTRi , 13);
+
+
+ for (Int_t i = 0; i < 6; i++) {
+ z = 2. * kRB24IpShellL - shRB24IpShellM->GetZ(5-i);
+ Float_t rmin = shRB24IpShellM->GetRmin(5-i);
+ Float_t rmax = shRB24IpShellM->GetRmax(5-i);
+ shRB24IpShellM->DefineSection(7+i, z, rmin, rmax);
+ }
+
+ TGeoVolume* voRB24IpShellM = new TGeoVolume("RB24IpShellM", shRB24IpShellM, kMedVac);
+ voRB24IpShellM->SetVisibility(0);
+ voRB24IpShellM->AddNode(voRB24IpShell, 1, gGeoIdentity);
+ voRB24IpShellM->AddNode(voRB24IpShell, 2, new TGeoCombiTrans(0., 0., 2. * kRB24IpShellL, rot180));
+//
+// Pos 8 Pumping Elements
+//
+// Anode array
+ TGeoVolume* voRB24IpPE = new TGeoVolume("voRB24IpPE", new TGeoTube(0.9, 1., 2.54/2.), kMedSteel);
+ Float_t kRB24IpPEAR = 5.5;
+
+ for (Int_t i = 0; i < 15; i++) {
+ Float_t phi = Float_t(i) * 24.;
+ Float_t x = kRB24IpPEAR * TMath::Cos(kDegRad * phi);
+ Float_t y = kRB24IpPEAR * TMath::Sin(kDegRad * phi);
+ voRB24IpShellM->AddNode(voRB24IpPE, i+1, new TGeoTranslation(x, y, kRB24IpShellL));
+ }
+
+
+//
+// Cathodes
+//
+// Here we could add some Ti strips
+
+// Postioning of elements
+ voRB24AIpM->AddNode(voRB24IpRF, 1, new TGeoTranslation(0., 0., -kRB24AIpML/2.));
+ voRB24AIpM->AddNode(voRB24IpRF, 2, new TGeoCombiTrans (0., 0., +kRB24AIpML/2., rot180));
+ voRB24AIpM->AddNode(voRB24IpSTT, 1, new TGeoTranslation(0., 0., 0.));
+ voRB24AIpM->AddNode(voRB24IpSTV, 1, new TGeoTranslation(0., 0., 0.));
+ voRB24AIpM->AddNode(voRB24IpShellM, 1, new TGeoTranslation(0., 0., -kRB24AIpML/2. + 8.13));
+ voRB24AIpM->AddNode(voRB24IpSTC, 1, new TGeoTranslation(0., 0., 8.13 - kRB24AIpML/2.));
+ voRB24AIpM->AddNode(voRB24IpSTC, 2, new TGeoCombiTrans (0., 0., 8.14 + 8.9 - kRB24AIpML/2., rot180));
+
+//
+// Valve
+// VAC Series 47 DN 63 with manual actuator
+//
+ const Float_t kRB24ValveWz = 7.5;
+ const Float_t kRB24ValveDN = 10.0/2.;
+//
+// Body containing the valve plate
+//
+ const Float_t kRB24ValveBoWx = 15.6;
+ const Float_t kRB24ValveBoWy = (21.5 + 23.1 - 5.);
+ const Float_t kRB24ValveBoWz = 4.6;
+ const Float_t kRB24ValveBoD = 0.5;
+
+ TGeoVolume* voRB24ValveBoM =
+ new TGeoVolume("RB24ValveBoM",
+ new TGeoBBox( kRB24ValveBoWx/2., kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedAir);
+ voRB24ValveBoM->SetVisibility(0);
+ TGeoVolume* voRB24ValveBo =
+ new TGeoVolume("RB24ValveBo",
+ new TGeoBBox( kRB24ValveBoWx/2., kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedSteel);
+ voRB24ValveBoM->AddNode(voRB24ValveBo, 1, gGeoIdentity);
+ //
+ // Inner volume
+ //
+ TGeoVolume* voRB24ValveBoI = new TGeoVolume("RB24ValveBoI",
+ new TGeoBBox( kRB24ValveBoWx/2. - kRB24ValveBoD,
+ kRB24ValveBoWy/2. - kRB24ValveBoD/2.,
+ kRB24ValveBoWz/2. - kRB24ValveBoD),
+ kMedVac);
+ voRB24ValveBo->AddNode(voRB24ValveBoI, 1, new TGeoTranslation(0., kRB24ValveBoD/2., 0.));
+ //
+ // Opening and Flanges
+ const Float_t kRB24ValveFlRo = 18./2.;
+ const Float_t kRB24ValveFlD = 1.45;
+ TGeoVolume* voRB24ValveBoA = new TGeoVolume("RB24ValveBoA",
+ new TGeoTube(0., kRB24ValveDN/2., kRB24ValveBoD/2.), kMedVac);
+ voRB24ValveBo->AddNode(voRB24ValveBoA, 1, new TGeoTranslation(0., - kRB24ValveBoWy/2. + 21.5, -kRB24ValveBoWz/2. + kRB24ValveBoD/2.));
+ voRB24ValveBo->AddNode(voRB24ValveBoA, 2, new TGeoTranslation(0., - kRB24ValveBoWy/2. + 21.5, +kRB24ValveBoWz/2. - kRB24ValveBoD/2.));
+
+ TGeoVolume* voRB24ValveFl = new TGeoVolume("RB24ValveFl", new TGeoTube(kRB24ValveDN/2., kRB24ValveFlRo, kRB24ValveFlD/2.), kMedSteel);
+ TGeoVolume* voRB24ValveFlI = new TGeoVolume("RB24ValveFlI", new TGeoTube(0., kRB24ValveFlRo, kRB24ValveFlD/2.), kMedVac);
+ voRB24ValveFlI->AddNode(voRB24ValveFl, 1, gGeoIdentity);
+
+ //
+ // Actuator Flange
+ const Float_t kRB24ValveAFlWx = 18.9;
+ const Float_t kRB24ValveAFlWy = 5.0;
+ const Float_t kRB24ValveAFlWz = 7.7;
+ TGeoVolume* voRB24ValveAFl = new TGeoVolume("RB24ValveAFl", new TGeoBBox(kRB24ValveAFlWx/2., kRB24ValveAFlWy/2., kRB24ValveAFlWz/2.), kMedSteel);
+ //
+ // Actuator Tube
+ const Float_t kRB24ValveATRo = 9.7/2.;
+ const Float_t kRB24ValveATH = 16.6;
+ TGeoVolume* voRB24ValveAT = new TGeoVolume("RB24ValveAT", new TGeoTube(kRB24ValveATRo - 2. * kRB24ValveBoD,kRB24ValveATRo, kRB24ValveATH/2.),
+ kMedSteel);
+ //
+ // Manual Actuator (my best guess)
+ TGeoVolume* voRB24ValveMA1 = new TGeoVolume("RB24ValveMA1", new TGeoCone(2.5/2., 0., 0.5, 4.5, 5.), kMedSteel);
+ TGeoVolume* voRB24ValveMA2 = new TGeoVolume("RB24ValveMA2", new TGeoTorus(5., 0., 1.25), kMedSteel);
+ TGeoVolume* voRB24ValveMA3 = new TGeoVolume("RB24ValveMA3", new TGeoTube (0., 1.25, 2.5), kMedSteel);
+
+
+ //
+ // Position all volumes
+ Float_t y0;
+ TGeoVolumeAssembly* voRB24ValveMo = new TGeoVolumeAssembly("RB24ValveMo");
+ voRB24ValveMo->AddNode(voRB24ValveFl, 1, new TGeoTranslation(0., 0., - 7.5/2. + kRB24ValveFlD/2.));
+ voRB24ValveMo->AddNode(voRB24ValveFl, 2, new TGeoTranslation(0., 0., + 7.5/2. - kRB24ValveFlD/2.));
+ y0 = -21.5;
+ voRB24ValveMo->AddNode(voRB24ValveBoM, 1, new TGeoTranslation(0., y0 + kRB24ValveBoWy/2., 0.));
+ y0 += kRB24ValveBoWy;
+ voRB24ValveMo->AddNode(voRB24ValveAFl, 1, new TGeoTranslation(0., y0 + kRB24ValveAFlWy/2., 0.));
+ y0 += kRB24ValveAFlWy;
+ voRB24ValveMo->AddNode(voRB24ValveAT, 1, new TGeoCombiTrans(0., y0 + kRB24ValveATH/2., 0., rotyz));
+ y0 += kRB24ValveATH;
+ voRB24ValveMo->AddNode(voRB24ValveMA1, 1, new TGeoCombiTrans(0., y0 + 2.5/2., 0., rotyz));
+ y0 += 2.5;
+ voRB24ValveMo->AddNode(voRB24ValveMA2, 1, new TGeoCombiTrans(0., y0 + 2.5/2., 0., rotyz));
+ y0 += 2.5;
+ voRB24ValveMo->AddNode(voRB24ValveMA3, 1, new TGeoCombiTrans(5./TMath::Sqrt(2.), y0 + 5.0/2., 5./TMath::Sqrt(2.), rotyz));
+//
+// Warm Module Type VMABC
+// LHCVMABC_0002
+//
+//
+//
+// Flange 1.00
+// Central Piece 11.50
+// Bellow 14.50
+// End Flange 1.00
+//===================================
+// Total 28.00
+//
+// Pos 1 Warm Bellows DN100 LHCVBU__0016
+// Pos 2 Trans. Tube Flange LHCVSR__0062
+// Pos 3 RF Contact D63 LHCVSR__0057
+// [Pos 4 Hex. Countersunk Screw Bossard BN4719]
+// [Pos 5 Tension spring LHCVSR__00239]
+//
+
+// Pos 1 Warm Bellows DN100 LHCVBU__0016
+// Pos 1.1 Right Body 2 Ports with Support LHCVBU__0014
+ //
+ // Tube 1
+ const Float_t kRB24VMABCRBT1Ri = 10.0/2.;
+ const Float_t kRB24VMABCRBT1Ro = 10.3/2.;
+ const Float_t kRB24VMABCRBT1L = 11.5;
+ const Float_t kRB24VMABCRBT1L2 = 8.;
+ const Float_t kRB24VMABCL = 28.;
+
+ TGeoTube* shRB24VMABCRBT1 = new TGeoTube(kRB24VMABCRBT1Ri, kRB24VMABCRBT1Ro, kRB24VMABCRBT1L/2.);
+ shRB24VMABCRBT1->SetName("RB24VMABCRBT1");
+ TGeoTube* shRB24VMABCRBT1o = new TGeoTube(0., kRB24VMABCRBT1Ro, kRB24VMABCRBT1L/2.);
+ shRB24VMABCRBT1o->SetName("RB24VMABCRBT1o");
+ TGeoTube* shRB24VMABCRBT1o2 = new TGeoTube(0., kRB24VMABCRBT1Ro + 0.3, kRB24VMABCRBT1L/2.);
+ shRB24VMABCRBT1o2->SetName("RB24VMABCRBT1o2");
+ // Lower inforcement
+ TGeoVolume* voRB24VMABCRBT12 = new TGeoVolume("RB24VMABCRBT12",
+ new TGeoTubeSeg(kRB24VMABCRBT1Ro, kRB24VMABCRBT1Ro + 0.3, kRB24VMABCRBT1L2/2., 220., 320.)
+ , kMedSteel);
+ //
+ // Tube 2
+ const Float_t kRB24VMABCRBT2Ri = 6.0/2.;
+ const Float_t kRB24VMABCRBT2Ro = 6.3/2.;
+ const Float_t kRB24VMABCRBF2Ro = 11.4/2.;
+ const Float_t kRB24VMABCRBT2L = 5.95 + 2.; // 2. cm added for welding
+ const Float_t kRB24VMABCRBF2L = 1.75;
+ TGeoTube* shRB24VMABCRBT2 = new TGeoTube(kRB24VMABCRBT2Ri, kRB24VMABCRBT2Ro, kRB24VMABCRBT2L/2.);
+ shRB24VMABCRBT2->SetName("RB24VMABCRBT2");
+ TGeoTube* shRB24VMABCRBT2i = new TGeoTube(0., kRB24VMABCRBT2Ri, kRB24VMABCRBT2L/2. + 2.);
+ shRB24VMABCRBT2i->SetName("RB24VMABCRBT2i");
+ TGeoCombiTrans* tRBT2 = new TGeoCombiTrans(-11.5 + kRB24VMABCRBT2L/2., 0., 7.2 - kRB24VMABCRBT1L/2. , rotxz);
+ tRBT2->SetName("tRBT2");
+ tRBT2->RegisterYourself();
+ TGeoCompositeShape* shRB24VMABCRBT2c = new TGeoCompositeShape("shRB24VMABCRBT2c","RB24VMABCRBT2:tRBT2-RB24VMABCRBT1o");
+ TGeoVolume* voRB24VMABCRBT2 = new TGeoVolume("shRB24VMABCRBT2", shRB24VMABCRBT2c, kMedSteel);
+ // Flange
+ // Pos 1.4 Flange DN63 LHCVBU__0008
+ TGeoVolume* voRB24VMABCRBF2 = new TGeoVolume("RB24VMABCRBF2",
+ new TGeoTube(kRB24VMABCRBT2Ro, kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteel);
+ // DN63 Blank Flange (my best guess)
+ TGeoVolume* voRB24VMABCRBF2B = new TGeoVolume("RB24VMABCRBF2B",
+ new TGeoTube(0., kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteel);
+ //
+ // Tube 3
+ const Float_t kRB24VMABCRBT3Ri = 3.5/2.;
+ const Float_t kRB24VMABCRBT3Ro = 3.8/2.;
+ const Float_t kRB24VMABCRBF3Ro = 7.0/2.;
+ const Float_t kRB24VMABCRBT3L = 4.95 + 2.; // 2. cm added for welding
+ const Float_t kRB24VMABCRBF3L = 1.27;
+ TGeoTube* shRB24VMABCRBT3 = new TGeoTube(kRB24VMABCRBT3Ri, kRB24VMABCRBT3Ro, kRB24VMABCRBT3L/2);
+ shRB24VMABCRBT3->SetName("RB24VMABCRBT3");
+ TGeoTube* shRB24VMABCRBT3i = new TGeoTube(0., kRB24VMABCRBT3Ri, kRB24VMABCRBT3L/2. + 2.);
+ shRB24VMABCRBT3i->SetName("RB24VMABCRBT3i");
+ TGeoCombiTrans* tRBT3 = new TGeoCombiTrans(0., 10.5 - kRB24VMABCRBT3L/2., 7.2 - kRB24VMABCRBT1L/2. , rotyz);
+ tRBT3->SetName("tRBT3");
+ tRBT3->RegisterYourself();
+ TGeoCompositeShape* shRB24VMABCRBT3c = new TGeoCompositeShape("shRB24VMABCRBT3c","RB24VMABCRBT3:tRBT3-RB24VMABCRBT1o");
+ TGeoVolume* voRB24VMABCRBT3 = new TGeoVolume("shRB24VMABCRBT3", shRB24VMABCRBT3c, kMedSteel);
+ // Flange
+ // Pos 1.4 Flange DN35 LHCVBU__0007
+ TGeoVolume* voRB24VMABCRBF3 = new TGeoVolume("RB24VMABCRBF3",
+ new TGeoTube(kRB24VMABCRBT3Ro, kRB24VMABCRBF3Ro, kRB24VMABCRBF3L/2.), kMedSteel);
+ //
+ // Tube 4
+ const Float_t kRB24VMABCRBT4Ri = 6.0/2.;
+ const Float_t kRB24VMABCRBT4Ro = 6.4/2.;
+ const Float_t kRB24VMABCRBT4L = 6.6;
+ TGeoTube* shRB24VMABCRBT4 = new TGeoTube(kRB24VMABCRBT4Ri, kRB24VMABCRBT4Ro, kRB24VMABCRBT4L/2.);
+ shRB24VMABCRBT4->SetName("RB24VMABCRBT4");
+ TGeoCombiTrans* tRBT4 = new TGeoCombiTrans(0.,-11.+kRB24VMABCRBT4L/2., 7.2 - kRB24VMABCRBT1L/2. , rotyz);
+ tRBT4->SetName("tRBT4");
+ tRBT4->RegisterYourself();
+ TGeoCompositeShape* shRB24VMABCRBT4c = new TGeoCompositeShape("shRB24VMABCRBT4c","RB24VMABCRBT4:tRBT4-RB24VMABCRBT1o2");
+ TGeoVolume* voRB24VMABCRBT4 = new TGeoVolume("shRB24VMABCRBT4", shRB24VMABCRBT4c, kMedSteel);
+ TGeoCompositeShape* shRB24VMABCRB = new TGeoCompositeShape("shRB24VMABCRB", "RB24VMABCRBT1-(RB24VMABCRBT2i:tRBT2+RB24VMABCRBT3i:tRBT3)");
+ TGeoVolume* voRB24VMABCRBI = new TGeoVolume("RB24VMABCRBI", shRB24VMABCRB, kMedSteel);
+ //
+ // Plate
+ const Float_t kRB24VMABCRBBx = 16.0;
+ const Float_t kRB24VMABCRBBy = 1.5;
+ const Float_t kRB24VMABCRBBz = 15.0;
+
+ // Relative position of tubes
+ const Float_t kRB24VMABCTz = 7.2;
+ // Relative position of plate
+ const Float_t kRB24VMABCPz = 3.6;
+ const Float_t kRB24VMABCPy = -12.5;
+
+ TGeoVolume* voRB24VMABCRBP = new TGeoVolume("RB24VMABCRBP", new TGeoBBox(kRB24VMABCRBBx/2., kRB24VMABCRBBy/2., kRB24VMABCRBBz/2.), kMedSteel);
+ //
+ // Pirani Gauge (my best guess)
+ //
+ TGeoPcon* shRB24VMABCPirani = new TGeoPcon(0., 360., 15);
+ // DN35/16 Coupling
+ z = 0;
+ shRB24VMABCPirani->DefineSection( 0, z, 0.8 , kRB24VMABCRBF3Ro);
+ z += kRB24VMABCRBF3L; // 1.3
+ shRB24VMABCPirani->DefineSection( 1, z, 0.8 , kRB24VMABCRBF3Ro);
+ shRB24VMABCPirani->DefineSection( 2, z, 0.8 , 1.0);
+ // Pipe
+ z += 2.8;
+ shRB24VMABCPirani->DefineSection( 3, z, 0.8 , 1.0);
+ // Flange
+ shRB24VMABCPirani->DefineSection( 4, z, 0.8 , 1.75);
+ z += 1.6;
+ shRB24VMABCPirani->DefineSection( 5, z, 0.8 , 1.75);
+ shRB24VMABCPirani->DefineSection( 6, z, 0.8 , 1.0);
+ z += 5.2;
+ shRB24VMABCPirani->DefineSection( 7, z, 0.8 , 1.0);
+ shRB24VMABCPirani->DefineSection( 8, z, 0.8 , 2.5);
+ z += 2.0;
+ shRB24VMABCPirani->DefineSection( 9, z, 0.80, 2.50);
+ shRB24VMABCPirani->DefineSection(10, z, 1.55, 1.75);
+ z += 5.7;
+ shRB24VMABCPirani->DefineSection(11, z, 1.55, 1.75);
+ shRB24VMABCPirani->DefineSection(11, z, 0.00, 1.75);
+ z += 0.2;
+ shRB24VMABCPirani->DefineSection(12, z, 0.00, 1.75);
+ shRB24VMABCPirani->DefineSection(13, z, 0.00, 0.75);
+ z += 0.5;
+ shRB24VMABCPirani->DefineSection(14, z, 0.00, 0.75);
+ TGeoVolume* voRB24VMABCPirani = new TGeoVolume("RB24VMABCPirani", shRB24VMABCPirani, kMedSteel);
+ //
+ //
+ //
+
+
+ //
+ // Positioning of elements
+ TGeoVolumeAssembly* voRB24VMABCRB = new TGeoVolumeAssembly("RB24VMABCRB");
+ //
+ voRB24VMABCRB->AddNode(voRB24VMABCRBI, 1, gGeoIdentity);
+ // Plate
+ voRB24VMABCRB->AddNode(voRB24VMABCRBP, 1, new TGeoTranslation(0., kRB24VMABCPy + kRB24VMABCRBBy /2.,
+ kRB24VMABCRBBz/2. - kRB24VMABCRBT1L/2. + kRB24VMABCPz));
+ // Tube 2
+ voRB24VMABCRB->AddNode(voRB24VMABCRBT2, 1, gGeoIdentity);
+ // Flange Tube 2
+ voRB24VMABCRB->AddNode(voRB24VMABCRBF2, 1, new TGeoCombiTrans(kRB24VMABCPy + kRB24VMABCRBF2L/2., 0., kRB24VMABCTz - kRB24VMABCRBT1L/2., rotxz));
+ // Blank Flange Tube 2
+ voRB24VMABCRB->AddNode(voRB24VMABCRBF2B, 1, new TGeoCombiTrans(kRB24VMABCPy- kRB24VMABCRBF2L/2., 0., kRB24VMABCTz - kRB24VMABCRBT1L/2., rotxz));
+ // Tube 3
+ voRB24VMABCRB->AddNode(voRB24VMABCRBT3, 1, gGeoIdentity);
+ // Flange Tube 3
+ voRB24VMABCRB->AddNode(voRB24VMABCRBF3, 1, new TGeoCombiTrans(0., 11.2 - kRB24VMABCRBF3L/2., kRB24VMABCTz - kRB24VMABCRBT1L/2., rotyz));
+ // Pirani Gauge
+ voRB24VMABCRB->AddNode(voRB24VMABCPirani, 1, new TGeoCombiTrans(0., 11.2, kRB24VMABCTz - kRB24VMABCRBT1L/2., rotyz));
+ // Tube 4
+ voRB24VMABCRB->AddNode(voRB24VMABCRBT4, 1, gGeoIdentity);
+ // Inforcement
+ voRB24VMABCRB->AddNode(voRB24VMABCRBT12, 1, new TGeoTranslation(0., 0., kRB24VMABCRBT1L2/2. - kRB24VMABCRBT1L/2. + 2.8));
+
+
+// Pos 1.3 Bellows with end part LHCVBU__0002
+//
+// Connection Tube
+// Connection tube inner r
+ const Float_t kRB24VMABBEConTubeRin = 10.0/2.;
+// Connection tube outer r
+ const Float_t kRB24VMABBEConTubeRou = 10.3/2.;
+// Connection tube length
+ const Float_t kRB24VMABBEConTubeL1 = 0.9;
+ const Float_t kRB24VMABBEConTubeL2 = 2.6;
+// const Float_t RB24VMABBEBellowL = kRB24VMABBEConTubeL1 + kRB24VMABBEConTubeL2 + kRB24B1BellowUndL;
+
+// Mother volume
+ TGeoPcon* shRB24VMABBEBellowM = new TGeoPcon(0., 360., 6);
+ // Connection Tube and Flange
+ z = 0.;
+ shRB24VMABBEBellowM->DefineSection( 0, z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
+ z += kRB24VMABBEConTubeL1;
+ shRB24VMABBEBellowM->DefineSection( 1, z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
+ shRB24VMABBEBellowM->DefineSection( 2, z, kRB24B1BellowRi, kRB24B1BellowRo + kRB24B1ProtTubeThickness);
+ z += kRB24B1BellowUndL;
+ shRB24VMABBEBellowM->DefineSection( 3, z, kRB24B1BellowRi, kRB24B1BellowRo + kRB24B1ProtTubeThickness);
+ shRB24VMABBEBellowM->DefineSection( 4, z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
+ z += kRB24VMABBEConTubeL2;
+ shRB24VMABBEBellowM->DefineSection( 5, z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
+ TGeoVolume* voRB24VMABBEBellowM = new TGeoVolume("RB24VMABBEBellowM", shRB24VMABBEBellowM, kMedVac);
+ voRB24VMABBEBellowM->SetVisibility(0);
+
+// Connection tube left
+ TGeoVolume* voRB24VMABBECT1 = new TGeoVolume("RB24VMABBECT1",
+ new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou,kRB24VMABBEConTubeL1/2.),
+ kMedSteel);
+// Connection tube right
+ TGeoVolume* voRB24VMABBECT2 = new TGeoVolume("RB24VMABBECT2",
+ new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou,kRB24VMABBEConTubeL2/2.),
+ kMedSteel);
+ z = kRB24VMABBEConTubeL1/2.;
+ voRB24VMABBEBellowM->AddNode(voRB24VMABBECT1, 1, new TGeoTranslation(0., 0., z));
+ z += kRB24VMABBEConTubeL1/2.;
+ z += kRB24B1BellowUndL/2.;
+ voRB24VMABBEBellowM->AddNode(voRB24B1Bellow, 2, new TGeoTranslation(0., 0., z));
+ z += kRB24B1BellowUndL/2.;
+ z += kRB24VMABBEConTubeL2/2.;
+ voRB24VMABBEBellowM->AddNode(voRB24VMABBECT2, 1, new TGeoTranslation(0., 0., z));
+ z += kRB24VMABBEConTubeL2/2.;
+
+ voRB24VMABCRB->AddNode(voRB24VMABBEBellowM, 1, new TGeoTranslation(0., 0., kRB24VMABCRBT1L/2.));
+
+// Pos 1.2 Rotable flange LHCVBU__0013[*]
+// Front
+ voRB24VMABCRB->AddNode(voRB24B1RFlange, 3, new TGeoCombiTrans(0., 0., - kRB24VMABCRBT1L/2. + 0.86, rot180));
+// End
+ z = kRB24VMABCRBT1L/2. + kRB24B1BellowUndL +kRB24VMABBEConTubeL1 + kRB24VMABBEConTubeL2;
+ voRB24VMABCRB->AddNode(voRB24B1RFlange, 4, new TGeoTranslation(0., 0., z - 0.86));
+
+
+// Pos 2 Trans. Tube Flange LHCVSR__0062
+// Pos 2.1 Transition Tube LHCVSR__0063
+// Pos 2.2 Transition Flange LHCVSR__0060
+//
+// Transition Tube with Flange
+ TGeoPcon* shRB24VMABCTT = new TGeoPcon(0., 360., 7);
+ z = 0.;
+ shRB24VMABCTT->DefineSection(0, z, 6.3/2., 11.16/2.);
+ z += 0.25;
+ shRB24VMABCTT->DefineSection(1, z, 6.3/2., 11.16/2.);
+ shRB24VMABCTT->DefineSection(2, z, 6.3/2., 9.30/2.);
+ z += 0.25;
+ shRB24VMABCTT->DefineSection(3, z, 6.3/2., 9.30/2.);
+ shRB24VMABCTT->DefineSection(4, z, 6.3/2., 6.70/2.);
+ z += (20.35 - 0.63);
+ shRB24VMABCTT->DefineSection(5, z, 6.3/2., 6.7/2.);
+ z += 0.63;
+ shRB24VMABCTT->DefineSection(6, z, 6.3/2., 6.7/2.);
+ TGeoVolume* voRB24VMABCTT = new TGeoVolume("RB24VMABCTT", shRB24VMABCTT, kMedSteel);
+ voRB24VMABCRB->AddNode(voRB24VMABCTT, 1, new TGeoTranslation(0., 0., - kRB24VMABCRBT1L/2.-1.));
+
+// Pos 3 RF Contact D63 LHCVSR__0057
+// Pos 3.1 RF Contact Flange LHCVSR__0017
+//
+ TGeoPcon* shRB24VMABCCTFlange = new TGeoPcon(0., 360., 6);
+ const Float_t kRB24VMABCCTFlangeRin = 6.36/2.; // Inner radius
+ const Float_t kRB24VMABCCTFlangeL = 1.30; // Length
+
+ z = 0.;
+ shRB24VMABCCTFlange->DefineSection(0, z, kRB24VMABCCTFlangeRin, 6.5/2.);
+ z += 0.15;
+ shRB24VMABCCTFlange->DefineSection(1, z, kRB24VMABCCTFlangeRin, 6.5/2.);
+ shRB24VMABCCTFlange->DefineSection(2, z, kRB24VMABCCTFlangeRin, 6.9/2.);
+ z += 0.9;
+ shRB24VMABCCTFlange->DefineSection(3, z, kRB24VMABCCTFlangeRin, 6.9/2.);
+ shRB24VMABCCTFlange->DefineSection(4, z, kRB24VMABCCTFlangeRin, 11.16/2.);
+ z += 0.25;
+ shRB24VMABCCTFlange->DefineSection(5, z, kRB24VMABCCTFlangeRin, 11.16/2.);
+ TGeoVolume* voRB24VMABCCTFlange = new TGeoVolume("RB24VMABCCTFlange", shRB24VMABCCTFlange, kMedCu);
+//
+// Pos 3.2 RF-Contact LHCVSR__0056
+//
+ TGeoPcon* shRB24VMABCCT = new TGeoPcon(0., 360., 4);
+ const Float_t kRB24VMABCCTRin = 6.30/2.; // Inner radius
+ const Float_t kRB24VMABCCTCRin = 7.29/2.; // Max. inner radius conical section
+ const Float_t kRB24VMABCCTL = 11.88; // Length
+ const Float_t kRB24VMABCCTSL = 10.48; // Length of straight section
+ const Float_t kRB24VMABCCTd = 0.03; // Thickness
+ z = 0;
+ shRB24VMABCCT->DefineSection(0, z, kRB24VMABCCTCRin, kRB24VMABCCTCRin + kRB24VMABCCTd);
+ z = kRB24VMABCCTL - kRB24VMABCCTSL;
+ shRB24VMABCCT->DefineSection(1, z, kRB24VMABCCTRin + 0.35, kRB24VMABCCTRin + 0.35 + kRB24VMABCCTd);
+ z = kRB24VMABCCTL - kRB24VMABCCTFlangeL;
+ shRB24VMABCCT->DefineSection(2, z, kRB24VMABCCTRin, kRB24VMABCCTRin + kRB24VMABCCTd);
+ z = kRB24VMABCCTL;
+ shRB24VMABCCT->DefineSection(3, z, kRB24VMABCCTRin, kRB24VMABCCTRin + kRB24VMABCCTd);
+
+ TGeoVolume* voRB24VMABCCT = new TGeoVolume("RB24VMABCCT", shRB24VMABCCT, kMedCu);
+
+ TGeoVolumeAssembly* voRB24VMABRFCT = new TGeoVolumeAssembly("RB24VMABRFCT");
+ voRB24VMABRFCT->AddNode(voRB24VMABCCT, 1, gGeoIdentity);
+ voRB24VMABRFCT->AddNode( voRB24VMABCCTFlange, 1, new TGeoTranslation(0., 0., kRB24VMABCCTL - kRB24VMABCCTFlangeL));
+
+ z = kRB24VMABCRBT1L/2. + kRB24B1BellowUndL + kRB24VMABBEConTubeL1 + kRB24VMABBEConTubeL2 - kRB24VMABCCTL + 1.;
+ voRB24VMABCRB->AddNode(voRB24VMABRFCT, 1, new TGeoTranslation(0., 0., z));
+
+
+//
+// Assembling RB24/1
+//
+ TGeoVolumeAssembly* voRB24 = new TGeoVolumeAssembly("RB24");
+ // Cu Tube with two simplified flanges
+ voRB24->AddNode(voRB24CuTubeM, 1, gGeoIdentity);
+ voRB24->AddNode(voRB24CuTubeA, 1, gGeoIdentity);
+ z = - kRB24CuTubeL/2 + kRB24CuTubeFL/2.;
+ voRB24->AddNode(voRB24CuTubeF, 1, new TGeoTranslation(0., 0., z));
+ z = + kRB24CuTubeL/2 - kRB24CuTubeFL/2.;
+ voRB24->AddNode(voRB24CuTubeF, 2, new TGeoTranslation(0., 0., z));
+ // VMABC close to compensator magnet
+ z = - kRB24CuTubeL/2. - (kRB24VMABCL - kRB24VMABCRBT1L/2) + 1.;
+
+ voRB24->AddNode(voRB24VMABCRB, 2, new TGeoTranslation(0., 0., z));
+ // Bellow
+ z = kRB24CuTubeL/2;
+ voRB24->AddNode(voRB24B1BellowM, 1, new TGeoTranslation(0., 0., z));
+ z += (kRB24B1L + kRB24AIpML/2.);
+ // Annular ion pump
+ voRB24->AddNode(voRB24AIpM, 1, new TGeoTranslation(0., 0., z));
+ z += (kRB24AIpML/2. + kRB24ValveWz/2.);
+ // Valve
+ voRB24->AddNode(voRB24ValveMo, 1, new TGeoTranslation(0., 0., z));
+ z += (kRB24ValveWz/2.+ kRB24VMABCRBT1L/2. + 1.);
+ // VMABC close to forward detectors
+ voRB24->AddNode(voRB24VMABCRB, 3, new TGeoTranslation(0., 0., z));
+//
+// RB24/2
+//
+// Copper Tube RB24/2
+//
+// This is the part inside the compensator magnet
+ const Float_t kRB242CuTubeL = 330.0;
+
+ TGeoVolume* voRB242CuTubeM = new TGeoVolume("voRB242CuTubeM",
+ new TGeoTube(0., kRB24CuTubeRo, kRB242CuTubeL/2.), kMedVacM);
+ voRB242CuTubeM->SetVisibility(0);
+ TGeoVolume* voRB242CuTube = new TGeoVolume("voRB242CuTube",
+ new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB242CuTubeL/2.), kMedCu);
+ voRB242CuTubeM->AddNode(voRB242CuTube, 1, gGeoIdentity);
+
+
+ TGeoVolumeAssembly* voRB242 = new TGeoVolumeAssembly("RB242");
+ voRB242->AddNode(voRB242CuTubeM, 1, gGeoIdentity);
+ z = - kRB242CuTubeL/2 + kRB24CuTubeFL/2.;
+ voRB242->AddNode(voRB24CuTubeF, 3, new TGeoTranslation(0., 0., z));
+ z = + kRB242CuTubeL/2 - kRB24CuTubeFL/2.;
+ voRB242->AddNode(voRB24CuTubeF, 4, new TGeoTranslation(0., 0., z));
+ z = - kRB24CuTubeL/2 - kRB24VMABCL - kRB242CuTubeL/2.;
+ voRB24->AddNode(voRB242, 1, new TGeoTranslation(0., 0., z));
+//
+// RB24/3
+//
+// Copper Tube RB24/3
+ const Float_t kRB243CuTubeL = 303.35;
+
+ TGeoVolume* voRB243CuTubeM = new TGeoVolume("voRB243CuTubeM",
+ new TGeoTube(0., kRB24CuTubeRo, kRB243CuTubeL/2.), kMedVac);
+ voRB24CuTubeM->SetVisibility(0);
+ TGeoVolume* voRB243CuTube = new TGeoVolume("voRB243CuTube",
+ new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB243CuTubeL/2.), kMedCu);
+ voRB243CuTubeM->AddNode(voRB243CuTube, 1, gGeoIdentity);
+
+
+ TGeoVolumeAssembly* voRB243 = new TGeoVolumeAssembly("RB243");
+ TGeoVolumeAssembly* voRB243A = new TGeoVolumeAssembly("RB243A");
+
+ voRB243A->AddNode(voRB243CuTubeM, 1, gGeoIdentity);
+ z = - kRB243CuTubeL/2 + kRB24CuTubeFL/2.;
+ voRB243A->AddNode(voRB24CuTubeF, 5, new TGeoTranslation(0., 0., z));
+ z = + kRB243CuTubeL/2 - kRB24CuTubeFL/2.;
+ voRB243A->AddNode(voRB24CuTubeF, 6, new TGeoTranslation(0., 0., z));
+ z = + kRB243CuTubeL/2;
+ voRB243A->AddNode(voRB24B1BellowM, 2, new TGeoTranslation(0., 0., z));
+
+ z = - kRB243CuTubeL/2. - kRB24B1L;
+ voRB243->AddNode(voRB243A, 1, new TGeoTranslation(0., 0., z));
+ z = - (1.5 * kRB243CuTubeL + 2. * kRB24B1L);
+ voRB243->AddNode(voRB243A, 2, new TGeoTranslation(0., 0., z));
+
+ z = - 2. * (kRB243CuTubeL + kRB24B1L) - (kRB24VMABCL - kRB24VMABCRBT1L/2) + 1.;
+ voRB243->AddNode(voRB24VMABCRB, 3, new TGeoTranslation(0., 0., z));
+
+ z = - kRB24CuTubeL/2 - kRB24VMABCL - kRB242CuTubeL;
+ voRB24->AddNode(voRB243, 1, new TGeoTranslation(0., 0., z));
+
+
+//
+//
+ top->AddNode(voRB24, 1, new TGeoCombiTrans(0., 0., kRB24CuTubeL/2 + 88.5 + 400., rot180));
+
+
+//
+////////////////////////////////////////////////////////////////////////////////
+// //
+// The Absorber Vacuum system //
+// //
+////////////////////////////////////////////////////////////////////////////////
+//
+// Rotable Flange starts at: 82.00 cm from IP
+// Length of rotable flange section: 10.68 cm
+// Weld 0.08 cm
+// Length of straight section 207.21 cm
+// =======================================================================
+// 299.97 cm [0.03 cm missing ?]
+// Length of opening cone 252.09 cm
+// Weld 0.15 cm
+// Length of compensator 30.54 cm
+// Weld 0.15 cm
+// Length of fixed flange 2.13 - 0.97 1.16 cm
+// =======================================================================
+// 584.06 cm [584.80 installed] [0.74 cm missing]
+// RB26/3
+// Length of split flange 2.13 - 1.2 0.93 cm
+// Weld 0.15 cm
+// Length of fixed point section 16.07 cm
+// Weld 0.15 cm
+// Length of opening cone 629.20 cm
+// Weld 0.30 cm
+// Kength of the compensator 41.70 cm
+// Weld 0.30 cm
+// Length of fixed flange 2.99 - 1.72 1.27 cm
+// =================================================
+// Length of RB26/3 690.07 cm [689.20 installed] [0.87 cm too much]
+//
+// RB26/4-5
+// Length of split flange 2.13 - 1.2 0.93 cm
+// Weld 0.15 cm
+// Length of fixed point section 16.07 cm
+// Weld 0.15 cm
+// Length of opening cone 629.20 cm
+// Weld 0.30 cm
+// Length of closing cone
+// Weld
+// Lenth of straight section
+// Kength of the compensator 41.70 cm
+// Weld 0.30 cm
+// Length of fixed flange 2.99 - 1.72 1.27 cm
+// =================================================
+// Length of RB26/3 690.07 cm [689.20 installed] [0.87 cm too much]
+
+///////////////////////////////////////////
+// //
+// RB26/1-2 //
+// Drawing LHCV2a_0050 [as installed] //
+// Drawing LHCV2a_0008 //
+// Drawing LHCV2a_0001 //
+///////////////////////////////////////////
+// Pos1 Vacuum Tubes LHCVC2A__0010
+// Pos2 Compensator LHCVC2A__0064
+// Pos3 Rotable Flange LHCVFX___0016
+// Pos4 Fixed Flange LHCVFX___0006
+// Pos5 Bellow Tooling LHCVFX___0003
+//
+//
+//
+///////////////////////////////////
+// RB26/1-2 Vacuum Tubes //
+// Drawing LHCVC2a_0010 //
+///////////////////////////////////
+ const Float_t kRB26s12TubeL = 459.45; // 0.15 cm added for welding
+ //
+ // Add 1 cm on outer diameter for insulation
+ //
+ TGeoPcon* shRB26s12Tube = new TGeoPcon(0., 360., 5);
+ // Section 1: straight section
+ shRB26s12Tube->DefineSection(0, 0.00, 5.84/2., 6.00/2.);
+ shRB26s12Tube->DefineSection(1, 207.21, 5.84/2., 6.00/2.);
+ // Section 2: 0.72 deg opening cone
+ shRB26s12Tube->DefineSection(2, 207.21, 5.84/2., 6.14/2.);
+ shRB26s12Tube->DefineSection(3, 452.30, 12.00/2., 12.30/2.);
+ shRB26s12Tube->DefineSection(4, kRB26s12TubeL, 12.00/2., 12.30/2.);
+ TGeoVolume* voRB26s12Tube = new TGeoVolume("RB26s12Tube", shRB26s12Tube, kMedSteel);
+ // Add the insulation layer
+ TGeoVolume* voRB26s12TubeIns = new TGeoVolume("RB26s12TubeIns", MakeInsulationFromTemplate(shRB26s12Tube), kMedInsu);
+ voRB26s12Tube->AddNode(voRB26s12TubeIns, 1, gGeoIdentity);
+
+
+ TGeoVolume* voRB26s12TubeM = new TGeoVolume("RB26s12TubeM", MakeMotherFromTemplate(shRB26s12Tube), kMedVac);
+ voRB26s12TubeM->AddNode(voRB26s12Tube, 1, gGeoIdentity);
+