#include <Riostream.h>
-#include <TSystem.h>
-#include <TVirtualMC.h>
+#include <TGeoBBox.h>
+#include <TGeoCompositeShape.h>
+#include <TGeoCone.h>
+#include <TGeoGlobalMagField.h>
#include <TGeoManager.h>
-#include <TGeoVolume.h>
+#include <TGeoMatrix.h>
+#include <TGeoPcon.h>
#include <TGeoTorus.h>
#include <TGeoTube.h>
-#include <TGeoCone.h>
-#include <TGeoPcon.h>
-#include <TGeoBBox.h>
+#include <TGeoVolume.h>
#include <TGeoXtru.h>
-#include <TGeoCompositeShape.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
#include "AliConst.h"
#include "AliMagF.h"
#include "AliLog.h"
ClassImp(AliPIPEv3)
+
//_____________________________________________________________________________
-AliPIPEv3::AliPIPEv3()
+AliPIPEv3::AliPIPEv3() : fBeamBackground(0)
{
// Constructor
}
//_____________________________________________________________________________
AliPIPEv3::AliPIPEv3(const char *name, const char *title)
- : AliPIPE(name,title)
+ : AliPIPE(name,title), fBeamBackground(0)
{
// Constructor
}
//___________________________________________
void AliPIPEv3::CreateGeometry()
{
- AliDebug(1,"Create PIPEv3 geometry");
//
-// Class describing the beam pipe geometry
+// Method describing the beam pipe geometry
//
-
+ AliDebug(1,"Create PIPEv3 geometry");
Float_t dz, z, zsh, z0;
//
// Rotation Matrices
TGeoRotation* rot315 = new TGeoRotation("rot315", 90. ,315., 90., 45., 0., 0.);
//
// Media
- const TGeoMedium* kMedAir = gGeoManager->GetMedium("PIPE_AIR");
- const TGeoMedium* kMedVac = gGeoManager->GetMedium("PIPE_VACUUM");
- const TGeoMedium* kMedInsu = gGeoManager->GetMedium("PIPE_INS_C0");
- const TGeoMedium* kMedSteel = gGeoManager->GetMedium("PIPE_INOX");
- const TGeoMedium* kMedBe = gGeoManager->GetMedium("PIPE_BE");
- const TGeoMedium* kMedCu = gGeoManager->GetMedium("PIPE_CU");
- const TGeoMedium* kMedKapton = gGeoManager->GetMedium("PIPE_KAPTON");
+ const TGeoMedium* kMedAir = gGeoManager->GetMedium("PIPE_AIR1");
+ const TGeoMedium* kMedAirH = gGeoManager->GetMedium("PIPE_AIR2");
+ const TGeoMedium* kMedAirHigh = gGeoManager->GetMedium("PIPE_AIR_HIGH");
+
+ const TGeoMedium* kMedVac = gGeoManager->GetMedium("PIPE_VACUUM1");
+ const TGeoMedium* kMedVacH = gGeoManager->GetMedium("PIPE_VACUUM2");
+ const TGeoMedium* kMedVacM = gGeoManager->GetMedium("PIPE_VACUUMM");
+
+ const TGeoMedium* kMedInsu = gGeoManager->GetMedium("PIPE_INS_C0");
+ const TGeoMedium* kMedInsuH = gGeoManager->GetMedium("PIPE_INS_C2");
+
+ const TGeoMedium* kMedSteel = gGeoManager->GetMedium("PIPE_INOX1");
+ const TGeoMedium* kMedSteelH = gGeoManager->GetMedium("PIPE_INOX2");
+
+ const TGeoMedium* kMedBe = gGeoManager->GetMedium("PIPE_BE1");
+ const TGeoMedium* kMedBeH = gGeoManager->GetMedium("PIPE_BE2");
+
+ const TGeoMedium* kMedCu = gGeoManager->GetMedium("PIPE_CU1");
+ const TGeoMedium* kMedCuH = gGeoManager->GetMedium("PIPE_CU2");
+
+ const TGeoMedium* kMedKapton = gGeoManager->GetMedium("PIPE_KAPTON1");
+ const TGeoMedium* kMedKaptonH = gGeoManager->GetMedium("PIPE_KAPTON2");
+
+ const TGeoMedium* kMedAco = gGeoManager->GetMedium("PIPE_ANTICORODAL1");
+ const TGeoMedium* kMedAcoH = gGeoManager->GetMedium("PIPE_ANTICORODAL2");
+
+ const TGeoMedium* kMedNEG = gGeoManager->GetMedium("PIPE_NEG COATING1");
+ const TGeoMedium* kMedNEGH = gGeoManager->GetMedium("PIPE_NEG COATING2");
+
// Top volume
TGeoVolume* top = gGeoManager->GetVolume("ALIC");
//
// CP/1 //
///////////////////
// Inner and outer radii of the Be-section [Pos 1]
+ const Float_t kCP1NegRo = 2.90 + 0.0002;
const Float_t kCP1BeRi = 2.90;
const Float_t kCP1BeRo = 2.98;
const Float_t kCP1KaRo = 2.99;
// CP/1 Be-Section //
/////////////////////////////////////////////
TGeoVolume* voCp1Vac = new TGeoVolume("CP1VAC",
- new TGeoTube(0., kCP1BeRi, kCP1Length / 2.),
+ new TGeoTube(0., kCP1BeRi, kCP1BeLength / 2.),
kMedVac);
TGeoVolume* voCp1Be = new TGeoVolume("CP1BE",
new TGeoTube(0., kCP1BeRo, kCP1BeLength / 2.),
TGeoVolume* voCp1Ka = new TGeoVolume("CP1KA",
new TGeoTube(0., kCP1KaRo, kCP1BeLength / 2.),
kMedKapton);
+ // Inner NEG coating
+ TGeoVolume* voCp1NEG = new TGeoVolume("CP1NEG",
+ new TGeoTube(kCP1BeRi, kCP1NegRo, kCP1BeLength / 2.),
+ kMedNEG);
voCp1Ka->AddNode(voCp1Be, 1, gGeoIdentity);
voCp1Be->AddNode(voCp1Vac, 1, gGeoIdentity);
+ voCp1Be->AddNode(voCp1NEG, 1, gGeoIdentity);
voCp1Mo->AddNode(voCp1Ka, 1, gGeoIdentity);
/////////////////////////////////////////////
TGeoPcon* shCp1At = new TGeoPcon(0., 360., 8);
// First Bulge
z = - kCP1BeStAdaptorLength / 2.;
- shCp1At->DefineSection(0, z, kCP1BeRi, kCP1BeStRo);
+ shCp1At->DefineSection(0, z, 0., kCP1BeStRo);
z += kCP1BulgeLength;
- shCp1At->DefineSection(1, z, kCP1BeRi, kCP1BeStRo);
- shCp1At->DefineSection(2, z, kCP1BeRi, kCP1BeRo);
+ shCp1At->DefineSection(1, z, 0., kCP1BeStRo);
+ shCp1At->DefineSection(2, z, 0., kCP1BeRo);
// Between the bulges
z += kCP1BulgeBulgeDistance;
- shCp1At->DefineSection(3, z, kCP1BeRi, kCP1BeRo);
- shCp1At->DefineSection(4, z, kCP1BeRi, kCP1BeStRo);
+ shCp1At->DefineSection(3, z, 0., kCP1BeRo);
+ shCp1At->DefineSection(4, z, 0., kCP1BeStRo);
// Second bulge
z += kCP1BulgeLength;
- shCp1At->DefineSection(5, z, kCP1BeRi, kCP1BeStRo);
- shCp1At->DefineSection(6, z, kCP1BeRi, kCP1BeRo);
+ shCp1At->DefineSection(5, z, 0., kCP1BeStRo);
+ shCp1At->DefineSection(6, z, 0., kCP1BeRo);
// Straight piece
z = kCP1BeStAdaptorLength / 2.;
- shCp1At->DefineSection(7, z, kCP1BeRi, kCP1BeRo);
+ shCp1At->DefineSection(7, z, 0., kCP1BeRo);
//
- TGeoVolume* voCp1At = new TGeoVolume("CP1AT", shCp1At, kMedSteel);
-
+ TGeoVolume* voCp1At = new TGeoVolume("CP1AT", shCp1At, kMedSteel);
+ TGeoVolume* voCp1AtV = new TGeoVolume("CP1ATV", new TGeoTube(0., kCP1BeRi, kCP1BeStAdaptorLength / 2.), kMedVac);
+ voCp1At->AddNode(voCp1AtV, 1, gGeoIdentity);
+
// Position adaptor tube at both ends
dz = kCP1Length / 2. - kCP1BeStAdaptorLength / 2.;
voCp1Mo->AddNode(voCp1At, 1, new TGeoTranslation(0., 0., -dz));
voCp1Mo->AddNode(voCp1At, 2, new TGeoCombiTrans(0., 0., dz, rot180));
+ TGeoVolumeAssembly* voCp1 = new TGeoVolumeAssembly("Cp1");
+ voCp1->AddNode(voCp1Mo, 1, gGeoIdentity);
//
///////////////////
dz = (kCP2FixedFlangeRecessLengths[0] + kCP2FixedFlangeRecessLengths[1]) / 2.;
voCp2Mo->AddNode(voCp2Pi, 1, new TGeoTranslation(0., 0., dz));
+//
+// Central beam pipe support collars
+// LHCVC2C_0019
+// cp1l = 405.
+// Position at z = -46., 40., 150.
+ TGeoVolume* voCpSupC = new TGeoVolume("CpSupC", new TGeoTube(3.051, 4.00, 0.35), kMedAco);
+ voCp1->AddNode(voCpSupC, 1, new TGeoTranslation(0., 0., kCP1Length / 2. - 98.2 - 34.77 + 0.49));
+// voCp1->AddNode(voCpSupC, 2, new TGeoTranslation(0., 0., kCP1Length / 2.- 191.5));
// Beam Pipe Protection Tube
//
// ALIFWDA_0025
TGeoTube* shFwdaBPPTY = new TGeoTube(0., 8.5, 3.2);
shFwdaBPPTY->SetName("FwdaBPPTY");
TGeoCompositeShape* shFwdaBPPTPC = new TGeoCompositeShape("shFwdaBPPTPC", "FwdaBPPTX-FwdaBPPTY");
- TGeoVolume* voFwdaBPPTPC = new TGeoVolume("FwdaBPPTPC", shFwdaBPPTPC, kMedSteel);
+ TGeoVolume* voFwdaBPPTPC = new TGeoVolume("FwdaBPPTPC", shFwdaBPPTPC, kMedAco);
//
// Tube ALIFWDA_0020
// const Float_t kFwdaBPPTTL = 48.;
const Float_t kFwdaBPPTTL = 35.;
- TGeoVolume* voFwdaBPPTT = new TGeoVolume("FwdaBPPTT", new TGeoTube(8.85, 9.0, kFwdaBPPTTL/2.), kMedSteel);
+ TGeoVolume* voFwdaBPPTT = new TGeoVolume("FwdaBPPTT", new TGeoTube(8.85, 9.0, kFwdaBPPTTL/2.), kMedAco);
TGeoVolumeAssembly* voFwdaBPPT = new TGeoVolumeAssembly("FwdaBPPT");
voFwdaBPPT->AddNode(voFwdaBPPTPC, 1, gGeoIdentity);
voFwdaBPPT->AddNode(voFwdaBPPTT, 1, new TGeoTranslation(0., 0., kFwdaBPPTTL/2. + kFwdaBPPTXL));
shFwdaBPSPY->DefineSection(5, 5.00, 0., 5.5);
shFwdaBPSPY->SetName("FwdaBPSPY");
TGeoCompositeShape* shFwdaBPSP = new TGeoCompositeShape("shFwdaBPSP", "FwdaBPSPX-FwdaBPSPY");
- TGeoVolume* voFwdaBPSP = new TGeoVolume("FwdaBPSP", shFwdaBPSP, kMedSteel);
+ TGeoVolume* voFwdaBPSP = new TGeoVolume("FwdaBPSP", shFwdaBPSP, kMedAco);
//
// Flasque ALIFWDA_00027
z += 1.2;
shFwdaBPSFL->DefineSection(7, z, kFwdaBPSTTRi, kFwdaBPSTTRo2);
- TGeoVolume* voFwdaBPSFL = new TGeoVolume("FwdaBPSFL", shFwdaBPSFL, kMedSteel);
+ TGeoVolume* voFwdaBPSFL = new TGeoVolume("FwdaBPSFL", shFwdaBPSFL, kMedAco);
//
tFwdaBPSCSc->SetName("tFwdaBPSCSc");
tFwdaBPSCSc->RegisterYourself();
TGeoCompositeShape* shFwdaBPSCS = new TGeoCompositeShape("shFwdaBPSCS", "(FwdaBPSCSa-FwdaBPSCSb:tFwdaBPSCSb)+FwdaBPSCSc:tFwdaBPSCSc");
- TGeoVolume* voFwdaBPSCS = new TGeoVolume("FwdaBPSCS", shFwdaBPSCS, kMedSteel);
+ TGeoVolume* voFwdaBPSCS = new TGeoVolume("FwdaBPSCS", shFwdaBPSCS, kMedAco);
// Assembling the beam pipe support
// Plie radius
// const Float_t kCP3PlieR = 0.118286;
const Float_t kCP3PlieR =
- (kCP3BellowUndulatedLength - 4. * kCP3ConnectionPlieR + 2. * kCP3PlieThickness +
- (2. * kCP3NumberOfPlies - 2.) * kCP3PlieThickness) / (4. * kCP3NumberOfPlies - 2.);
+ (kCP3BellowUndulatedLength - 4. * kCP3ConnectionPlieR +
+ 2. * kCP3NumberOfPlies * kCP3PlieThickness) / (4. * kCP3NumberOfPlies - 2.);
// Length of connection pipe
const Float_t kCP3BellowConnectionLength = 2.35;
//
z = -shCp3Mo->GetZ(0);
shCp3Mo->DefineSection(11, z, 0., kCP3FlangeRo);
//
- TGeoVolume* voCp3Mo = new TGeoVolume("CP3MO", shCp3Mo, kMedAir);
+ // TGeoVolume* voCp3Mo = new TGeoVolume("CP3MO", shCp3Mo, kMedAir);
+ TGeoVolume* voCp3Mo = new TGeoVolumeAssembly("CP3MO");
voCp3Mo->SetVisibility(0);
+ TGeoVolumeAssembly* voCp3 = new TGeoVolumeAssembly("Cp3");
+ voCp3->AddNode(voCp3Mo, 1, gGeoIdentity);
+ voCp3->AddNode(voCpSupC, 3, new TGeoTranslation(0., 0., - kCP3Length / 2. + 4.6 - 0.49));
dz = kCP3pos;
//////////////////////////////////////////////
z = 0.;
asCP->AddNode(voCp2, 1, gGeoIdentity);
z += kCP2Length / 2. + kCP1Length / 2.;
- asCP->AddNode(voCp1Mo, 1, new TGeoTranslation(0., 0., z));
+ asCP->AddNode(voCp1, 1, new TGeoTranslation(0., 0., z));
z += kCP1Length / 2. + kCP3Length / 2.;
- asCP->AddNode(voCp3Mo, 1, new TGeoTranslation(0., 0., z));
+ asCP->AddNode(voCp3, 1, new TGeoTranslation(0., 0., z));
top->AddNode(asCP, 1, new TGeoCombiTrans(0., 0., 400. - kCP2Length / 2, rot180));
////////////////////////////////////////////////////////////////////////////////
// //
-// RB24 //
+// RB24/1 //
// //
////////////////////////////////////////////////////////////////////////////////
//
//
// Drawing LHCVC2U_0001
-// Copper Tube 373.5 cm
+// Copper Tube RB24/1 393.5 cm
// Warm module VMACA 18.0 cm
// Annular Ion Pump 35.0 cm
// Valve 7.5 cm
-// Warm module WMABC 28.0 cm
+// Warm module VMABC 28.0 cm
// ================================
// 462.0 cm
//
-// Copper Tube
- const Float_t kRB24CuTubeL = 373.5;
- const Float_t kRB24CuTubeRi = 8.0/2.;
- const Float_t kRB24CuTubeRo = 8.4/2.;
+
+// Copper Tube RB24/1
+ const Float_t kRB24CuTubeL = 393.5;
+ const Float_t kRB24CuTubeRi = 8.0/2.;
+ const Float_t kRB24CuTubeRo = 8.4/2.;
+ const Float_t kRB24CuTubeFRo = 7.6;
+ const Float_t kRB24CuTubeFL = 1.86;
+
TGeoVolume* voRB24CuTubeM = new TGeoVolume("voRB24CuTubeM",
- new TGeoTube(0., kRB24CuTubeRo, kRB24CuTubeL/2.), kMedVac);
+ new TGeoTube(0., kRB24CuTubeRo, kRB24CuTubeL/2.), kMedVacH);
voRB24CuTubeM->SetVisibility(0);
TGeoVolume* voRB24CuTube = new TGeoVolume("voRB24CuTube",
- new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB24CuTubeL/2.), kMedCu);
+ new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB24CuTubeL/2.), kMedCuH);
voRB24CuTubeM->AddNode(voRB24CuTube, 1, gGeoIdentity);
-
-
+ // Air outside tube with higher transport cuts
+ TGeoVolume* voRB24CuTubeA = new TGeoVolume("voRB24CuTubeA",
+ new TGeoTube(25., 100., kRB24CuTubeL/2.), kMedAirHigh);
+ voRB24CuTubeA->SetVisibility(0);
+ // Simplified DN 100 Flange
+ TGeoVolume* voRB24CuTubeF = new TGeoVolume("voRB24CuTubeF",
+ new TGeoTube(kRB24CuTubeRo, kRB24CuTubeFRo, kRB24CuTubeFL/2.), kMedSteelH);
+
// Warm Module Type VMACA
// LHCVMACA_0002
//
const Float_t kRB24B1PlieThickness = 0.015; // Plie thickness
const Float_t kRB24B1PlieRadius =
- (kRB24B1BellowUndL + (2. * kRB24B1NumberOfPlies - 2.) * kRB24B1PlieThickness) / (4. * kRB24B1NumberOfPlies);
+ (kRB24B1BellowUndL + (2. * kRB24B1NumberOfPlies+ 1.) * kRB24B1PlieThickness) / (4. * kRB24B1NumberOfPlies + 2.);
const Float_t kRB24B1ProtTubeThickness = 0.02; // Thickness of the protection tube
const Float_t kRB24B1ProtTubeLength = 4.2; // Length of the protection tube
z = kRB24B1L - shRB24B1BellowM->GetZ(0);
shRB24B1BellowM->DefineSection(13, z, 0., kRB24B1RFlangeRou);
- TGeoVolume* voRB24B1BellowM = new TGeoVolume("RB24B1BellowM", shRB24B1BellowM, kMedVac);
+ TGeoVolume* voRB24B1BellowM = new TGeoVolume("RB24B1BellowM", shRB24B1BellowM, kMedVacH);
voRB24B1BellowM->SetVisibility(0);
//
// Bellow Section
//
// End Parts (connection tube)
- TGeoVolume* voRB24B1CT = new TGeoVolume("RB24B1CT", new TGeoTube(kRB24B1ConTubeRin, kRB24B1ConTubeRou, kRB24B1ConTubeL/2.), kMedSteel);
+ TGeoVolume* voRB24B1CT = new TGeoVolume("RB24B1CT", new TGeoTube(kRB24B1ConTubeRin, kRB24B1ConTubeRou, kRB24B1ConTubeL/2.), kMedSteelH);
//
// Protection Tube
TGeoVolume* voRB24B1PT = new TGeoVolume("RB24B1PT", new TGeoTube(kRB24B1BellowRo, kRB24B1BellowRo + kRB24B1ProtTubeThickness,
- kRB24B1ProtTubeLength / 2.), kMedSteel);
+ kRB24B1ProtTubeLength / 2.), kMedSteelH);
z = kRB24B1ConTubeL/2. + (kRB24B1RFlangeL - kRB24B1RFlangeRecess);
z += kRB24B1RFlangeLO;
shRB24B1RFlange->DefineSection(9, z, kRB24B1RFlangeRO, kRB24B1RFlangeRou);
- TGeoVolume* voRB24B1RFlange = new TGeoVolume("RB24B1RFlange", shRB24B1RFlange, kMedSteel);
+ TGeoVolume* voRB24B1RFlange = new TGeoVolume("RB24B1RFlange", shRB24B1RFlange, kMedSteelH);
z = kRB24B1L - kRB24B1RFlangeL;
// Pos 2.1 RF Contact Flange LHCVSR__0003
//
TGeoPcon* shRB24B1RCTFlange = new TGeoPcon(0., 360., 6);
- const Float_t kRB24B1RCTFlangeRin = 8.06/2.; // Inner radius
- const Float_t kRB24B1RCTFlangeL = 1.45; // Length
+ 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.);
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);
+ TGeoVolume* voRB24B1RCTFlange = new TGeoVolume("RB24B1RCTFlange", shRB24B1RCTFlange, kMedCuH);
z = kRB24B1L - kRB24B1RCTFlangeL;
voRB24B1BellowM->AddNode(voRB24B1RCTFlange, 1, new TGeoTranslation(0., 0., z));
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;
+ z = kRB24B1RCTL - 0.03;
shRB24B1RCT->DefineSection(2, z, kRB24B1RCTRin, kRB24B1RCTRin + kRB24B1RCTd);
- TGeoVolume* voRB24B1RCT = new TGeoVolume("RB24B1RCT", shRB24B1RCT, kMedCu);
+ TGeoVolume* voRB24B1RCT = new TGeoVolume("RB24B1RCT", shRB24B1RCT, kMedCuH);
z = kRB24B1L - kRB24B1RCTL - 0.45;
voRB24B1BellowM->AddNode(voRB24B1RCT, 1, new TGeoTranslation(0., 0., z));
shRB24B1TTF->DefineSection(5, z, 6.30/2., 6.7/2.);
// Transition Tube
z += 3.75;
- shRB24B1TTF->DefineSection(6, z, 8.2/2., 8.6/2.);
- TGeoVolume* voRB24B1TTF = new TGeoVolume("RB24B1TTF", shRB24B1TTF, kMedSteel);
+ shRB24B1TTF->DefineSection(6, z, 8.05/2., 8.45/2.);
+ TGeoVolume* voRB24B1TTF = new TGeoVolume("RB24B1TTF", shRB24B1TTF, kMedSteelH);
z = 0.;
voRB24B1BellowM->AddNode(voRB24B1TTF, 1, new TGeoTranslation(0., 0., z));
// Mother volume
const Float_t kRB24AIpML = 35.;
- TGeoVolume* voRB24AIpM = new TGeoVolume("voRB24AIpM", new TGeoTube(0., 10., kRB24AIpML/2.), kMedAir);
+ TGeoVolume* voRB24AIpM = new TGeoVolume("voRB24AIpM", new TGeoTube(0., 10., kRB24AIpML/2.), kMedAirH);
voRB24AIpM->SetVisibility(0);
//
z0 += kRB24IpRFD5;
shRB24IpRF->DefineSection(8, z0, kRB24IpRFRi5, kRB24IpRFRo);
- TGeoVolume* voRB24IpRF = new TGeoVolume("RB24IpRF", shRB24IpRF, kMedSteel);
+ TGeoVolume* voRB24IpRF = new TGeoVolume("RB24IpRF", shRB24IpRF, kMedSteelH);
//
// Pos 2 RF Screen Tube LHCVC2U_0005
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);
+ TGeoVolume* voRB24IpSTT = new TGeoVolume("RB24IpSTT", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTTL/2.), kMedSteelH);
// 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);
+ TGeoVolume* voRB24IpSTS = new TGeoVolume("RB24IpSTS", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTSL/2.), kMedSteelH);
// Vacuum
- TGeoVolume* voRB24IpSTV = new TGeoVolume("RB24IpSTV", new TGeoTube(0., kRB24IpSTTRi, kRB24AIpML/2.), kMedVac);
+ TGeoVolume* voRB24IpSTV = new TGeoVolume("RB24IpSTV", new TGeoTube(0., kRB24IpSTTRi, kRB24AIpML/2.), kMedVacH);
//
voRB24IpSTT->AddNode(voRB24IpSTS, 1, new TGeoTranslation(0., 0., kRB24IpSTSZ - kRB24IpSTTL/2. + kRB24IpSTSL/2.));
shRB24IpSTC->DefineSection(3, z0, kRB24IpSTTRo, kRB24IpSTCRo);
z0 += kRB24IpSTCL3;
shRB24IpSTC->DefineSection(4, z0, kRB24IpSTTRo, kRB24IpSTTRo + 0.001);
- TGeoVolume* voRB24IpSTC = new TGeoVolume("RB24IpSTC", shRB24IpSTC, kMedSteel);
+ TGeoVolume* voRB24IpSTC = new TGeoVolume("RB24IpSTC", shRB24IpSTC, kMedSteelH);
// Pos 3 Shell LHCVC2U_0007
// Pos 4 Extruded Shell LHCVC2U_0006
shRB24IpShell->DefineSection(5, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
z0 = kRB24IpShellL;
shRB24IpShell->DefineSection(6, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
- TGeoVolume* voRB24IpShell = new TGeoVolume("RB24IpShell", shRB24IpShell, kMedSteel);
+ TGeoVolume* voRB24IpShell = new TGeoVolume("RB24IpShell", shRB24IpShell, kMedSteelH);
TGeoPcon* shRB24IpShellM = MakeMotherFromTemplate(shRB24IpShell, 0, 6, kRB24IpShellCTRi , 13);
shRB24IpShellM->DefineSection(7+i, z, rmin, rmax);
}
- TGeoVolume* voRB24IpShellM = new TGeoVolume("RB24IpShellM", shRB24IpShellM, kMedVac);
+ TGeoVolume* voRB24IpShellM = new TGeoVolume("RB24IpShellM", shRB24IpShellM, kMedVacH);
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);
+ TGeoVolume* voRB24IpPE = new TGeoVolume("voRB24IpPE", new TGeoTube(0.9, 1., 2.54/2.), kMedSteelH);
Float_t kRB24IpPEAR = 5.5;
for (Int_t i = 0; i < 15; i++) {
TGeoVolume* voRB24ValveBoM =
new TGeoVolume("RB24ValveBoM",
- new TGeoBBox( kRB24ValveBoWx/2., kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedAir);
+ new TGeoBBox( kRB24ValveBoWx/2., kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedAirH);
voRB24ValveBoM->SetVisibility(0);
TGeoVolume* voRB24ValveBo =
new TGeoVolume("RB24ValveBo",
- new TGeoBBox( kRB24ValveBoWx/2., kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedSteel);
+ new TGeoBBox( kRB24ValveBoWx/2., kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedSteelH);
voRB24ValveBoM->AddNode(voRB24ValveBo, 1, gGeoIdentity);
//
// Inner volume
new TGeoBBox( kRB24ValveBoWx/2. - kRB24ValveBoD,
kRB24ValveBoWy/2. - kRB24ValveBoD/2.,
kRB24ValveBoWz/2. - kRB24ValveBoD),
- kMedVac);
+ kMedVacH);
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);
+ new TGeoTube(0., kRB24ValveDN/2., kRB24ValveBoD/2.), kMedVacH);
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);
+ TGeoVolume* voRB24ValveFl = new TGeoVolume("RB24ValveFl", new TGeoTube(kRB24ValveDN/2., kRB24ValveFlRo, kRB24ValveFlD/2.), kMedSteelH);
+ TGeoVolume* voRB24ValveFlI = new TGeoVolume("RB24ValveFlI", new TGeoTube(0., kRB24ValveFlRo, kRB24ValveFlD/2.), kMedVacH);
voRB24ValveFlI->AddNode(voRB24ValveFl, 1, gGeoIdentity);
//
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);
+ TGeoVolume* voRB24ValveAFl = new TGeoVolume("RB24ValveAFl", new TGeoBBox(kRB24ValveAFlWx/2., kRB24ValveAFlWy/2., kRB24ValveAFlWz/2.), kMedSteelH);
//
// 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);
+ kMedSteelH);
//
// 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);
+ TGeoVolume* voRB24ValveMA1 = new TGeoVolume("RB24ValveMA1", new TGeoCone(2.5/2., 0., 0.5, 4.5, 5.), kMedSteelH);
+ TGeoVolume* voRB24ValveMA2 = new TGeoVolume("RB24ValveMA2", new TGeoTorus(5., 0., 1.25), kMedSteelH);
+ TGeoVolume* voRB24ValveMA3 = new TGeoVolume("RB24ValveMA3", new TGeoTube (0., 1.25, 2.5), kMedSteelH);
//
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 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.);
// Lower inforcement
TGeoVolume* voRB24VMABCRBT12 = new TGeoVolume("RB24VMABCRBT12",
new TGeoTubeSeg(kRB24VMABCRBT1Ro, kRB24VMABCRBT1Ro + 0.3, kRB24VMABCRBT1L2/2., 220., 320.)
- , kMedSteel);
+ , kMedSteelH);
//
// Tube 2
const Float_t kRB24VMABCRBT2Ri = 6.0/2.;
tRBT2->SetName("tRBT2");
tRBT2->RegisterYourself();
TGeoCompositeShape* shRB24VMABCRBT2c = new TGeoCompositeShape("shRB24VMABCRBT2c","RB24VMABCRBT2:tRBT2-RB24VMABCRBT1o");
- TGeoVolume* voRB24VMABCRBT2 = new TGeoVolume("shRB24VMABCRBT2", shRB24VMABCRBT2c, kMedSteel);
+ TGeoVolume* voRB24VMABCRBT2 = new TGeoVolume("shRB24VMABCRBT2", shRB24VMABCRBT2c, kMedSteelH);
// Flange
// Pos 1.4 Flange DN63 LHCVBU__0008
TGeoVolume* voRB24VMABCRBF2 = new TGeoVolume("RB24VMABCRBF2",
- new TGeoTube(kRB24VMABCRBT2Ro, kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteel);
+ new TGeoTube(kRB24VMABCRBT2Ro, kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteelH);
// DN63 Blank Flange (my best guess)
TGeoVolume* voRB24VMABCRBF2B = new TGeoVolume("RB24VMABCRBF2B",
- new TGeoTube(0., kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteel);
+ new TGeoTube(0., kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteelH);
//
// Tube 3
const Float_t kRB24VMABCRBT3Ri = 3.5/2.;
tRBT3->SetName("tRBT3");
tRBT3->RegisterYourself();
TGeoCompositeShape* shRB24VMABCRBT3c = new TGeoCompositeShape("shRB24VMABCRBT3c","RB24VMABCRBT3:tRBT3-RB24VMABCRBT1o");
- TGeoVolume* voRB24VMABCRBT3 = new TGeoVolume("shRB24VMABCRBT3", shRB24VMABCRBT3c, kMedSteel);
+ TGeoVolume* voRB24VMABCRBT3 = new TGeoVolume("shRB24VMABCRBT3", shRB24VMABCRBT3c, kMedSteelH);
// Flange
// Pos 1.4 Flange DN35 LHCVBU__0007
TGeoVolume* voRB24VMABCRBF3 = new TGeoVolume("RB24VMABCRBF3",
- new TGeoTube(kRB24VMABCRBT3Ro, kRB24VMABCRBF3Ro, kRB24VMABCRBF3L/2.), kMedSteel);
+ new TGeoTube(kRB24VMABCRBT3Ro, kRB24VMABCRBF3Ro, kRB24VMABCRBF3L/2.), kMedSteelH);
//
// Tube 4
const Float_t kRB24VMABCRBT4Ri = 6.0/2.;
tRBT4->SetName("tRBT4");
tRBT4->RegisterYourself();
TGeoCompositeShape* shRB24VMABCRBT4c = new TGeoCompositeShape("shRB24VMABCRBT4c","RB24VMABCRBT4:tRBT4-RB24VMABCRBT1o2");
- TGeoVolume* voRB24VMABCRBT4 = new TGeoVolume("shRB24VMABCRBT4", shRB24VMABCRBT4c, kMedSteel);
+ TGeoVolume* voRB24VMABCRBT4 = new TGeoVolume("shRB24VMABCRBT4", shRB24VMABCRBT4c, kMedSteelH);
TGeoCompositeShape* shRB24VMABCRB = new TGeoCompositeShape("shRB24VMABCRB", "RB24VMABCRBT1-(RB24VMABCRBT2i:tRBT2+RB24VMABCRBT3i:tRBT3)");
- TGeoVolume* voRB24VMABCRBI = new TGeoVolume("RB24VMABCRBI", shRB24VMABCRB, kMedSteel);
+ TGeoVolume* voRB24VMABCRBI = new TGeoVolume("RB24VMABCRBI", shRB24VMABCRB, kMedSteelH);
//
// Plate
const Float_t kRB24VMABCRBBx = 16.0;
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);
+ TGeoVolume* voRB24VMABCRBP = new TGeoVolume("RB24VMABCRBP", new TGeoBBox(kRB24VMABCRBBx/2., kRB24VMABCRBBy/2., kRB24VMABCRBBz/2.), kMedSteelH);
//
// Pirani Gauge (my best guess)
//
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);
+ TGeoVolume* voRB24VMABCPirani = new TGeoVolume("RB24VMABCPirani", shRB24VMABCPirani, kMedSteelH);
//
//
//
// Connection tube length
const Float_t kRB24VMABBEConTubeL1 = 0.9;
const Float_t kRB24VMABBEConTubeL2 = 2.6;
- const Float_t RB24VMABBEBellowL = kRB24VMABBEConTubeL1 + kRB24VMABBEConTubeL2 + kRB24B1BellowUndL;
+// const Float_t RB24VMABBEBellowL = kRB24VMABBEConTubeL1 + kRB24VMABBEConTubeL2 + kRB24B1BellowUndL;
// Mother volume
TGeoPcon* shRB24VMABBEBellowM = new TGeoPcon(0., 360., 6);
shRB24VMABBEBellowM->DefineSection( 4, z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
z += kRB24VMABBEConTubeL2;
shRB24VMABBEBellowM->DefineSection( 5, z, kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou);
- TGeoVolume* voRB24VMABBEBellowM = new TGeoVolume("RB24VMABBEBellowM", shRB24VMABBEBellowM, kMedVac);
+ TGeoVolume* voRB24VMABBEBellowM = new TGeoVolume("RB24VMABBEBellowM", shRB24VMABBEBellowM, kMedVacH);
voRB24VMABBEBellowM->SetVisibility(0);
// Connection tube left
TGeoVolume* voRB24VMABBECT1 = new TGeoVolume("RB24VMABBECT1",
new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou,kRB24VMABBEConTubeL1/2.),
- kMedSteel);
+ kMedSteelH);
// Connection tube right
TGeoVolume* voRB24VMABBECT2 = new TGeoVolume("RB24VMABBECT2",
new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou,kRB24VMABBEConTubeL2/2.),
- kMedSteel);
+ kMedSteelH);
z = kRB24VMABBEConTubeL1/2.;
voRB24VMABBEBellowM->AddNode(voRB24VMABBECT1, 1, new TGeoTranslation(0., 0., z));
z += kRB24VMABBEConTubeL1/2.;
z += (20.35 - 0.63);
shRB24VMABCTT->DefineSection(5, z, 6.3/2., 6.7/2.);
z += 0.63;
- shRB24VMABCTT->DefineSection(6, z, 6.5/2., 6.9/2.);
- TGeoVolume* voRB24VMABCTT = new TGeoVolume("RB24VMABCTT", shRB24VMABCTT, kMedSteel);
+ shRB24VMABCTT->DefineSection(6, z, 6.3/2., 6.7/2.);
+ TGeoVolume* voRB24VMABCTT = new TGeoVolume("RB24VMABCTT", shRB24VMABCTT, kMedSteelH);
voRB24VMABCRB->AddNode(voRB24VMABCTT, 1, new TGeoTranslation(0., 0., - kRB24VMABCRBT1L/2.-1.));
// Pos 3 RF Contact D63 LHCVSR__0057
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);
+ TGeoVolume* voRB24VMABCCTFlange = new TGeoVolume("RB24VMABCCTFlange", shRB24VMABCCTFlange, kMedCuH);
//
// Pos 3.2 RF-Contact LHCVSR__0056
//
z = kRB24VMABCCTL;
shRB24VMABCCT->DefineSection(3, z, kRB24VMABCCTRin, kRB24VMABCCTRin + kRB24VMABCCTd);
- TGeoVolume* voRB24VMABCCT = new TGeoVolume("RB24VMABCCT", shRB24VMABCCT, kMedCu);
+ TGeoVolume* voRB24VMABCCT = new TGeoVolume("RB24VMABCCT", shRB24VMABCCT, kMedCuH);
TGeoVolumeAssembly* voRB24VMABRFCT = new TGeoVolumeAssembly("RB24VMABRFCT");
voRB24VMABRFCT->AddNode(voRB24VMABCCT, 1, gGeoIdentity);
//
-// Assembling RB24
+// Assembling RB24/1
//
TGeoVolumeAssembly* voRB24 = new TGeoVolumeAssembly("RB24");
-
+ // Cu Tube with two simplified flanges
voRB24->AddNode(voRB24CuTubeM, 1, gGeoIdentity);
+ if (!fBeamBackground) 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.), kMedCuH);
+ voRB242CuTubeM->AddNode(voRB242CuTube, 1, gGeoIdentity);
+
- voRB24->AddNode(voRB24VMABCRB, 1, new TGeoTranslation(0., 0., z));
- top->AddNode(voRB24, 1, new TGeoCombiTrans(0., 0., kRB24CuTubeL/2 + 88.5 + 400., rot180));
+ 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.), kMedVacH);
+ voRB24CuTubeM->SetVisibility(0);
+ TGeoVolume* voRB243CuTube = new TGeoVolume("voRB243CuTube",
+ new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB243CuTubeL/2.), kMedCuH);
+ 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));
+
+
//
////////////////////////////////////////////////////////////////////////////////
// //
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);
+ TGeoVolume* voRB26s12Tube = new TGeoVolume("RB26s12Tube", shRB26s12Tube, kMedSteelH);
// Add the insulation layer
- TGeoVolume* voRB26s12TubeIns = new TGeoVolume("RB26s12TubeIns", MakeInsulationFromTemplate(shRB26s12Tube), kMedInsu);
+ TGeoVolume* voRB26s12TubeIns = new TGeoVolume("RB26s12TubeIns", MakeInsulationFromTemplate(shRB26s12Tube), kMedInsuH);
voRB26s12Tube->AddNode(voRB26s12TubeIns, 1, gGeoIdentity);
- TGeoVolume* voRB26s12TubeM = new TGeoVolume("RB26s12TubeM", MakeMotherFromTemplate(shRB26s12Tube), kMedVac);
+ TGeoVolume* voRB26s12TubeM = new TGeoVolume("RB26s12TubeM", MakeMotherFromTemplate(shRB26s12Tube), kMedVacH);
voRB26s12TubeM->AddNode(voRB26s12Tube, 1, gGeoIdentity);
const Float_t kRB26s2ConnectionPlieR = 0.21; // Connection plie radius [Pos 1]
// Plie radius
const Float_t kRB26s2PlieR =
- (kRB26s2BellowUndL - 4. * kRB26s2ConnectionPlieR + 2. * kRB26s2PlieThickness +
- (2. * kRB26s2NumberOfPlies - 2.) * kRB26s2PlieThickness) / (4. * kRB26s2NumberOfPlies - 2.);
+ (kRB26s2BellowUndL - 4. * kRB26s2ConnectionPlieR +
+ 2. * kRB26s2NumberOfPlies * kRB26s2PlieThickness) / (4. * kRB26s2NumberOfPlies);
const Float_t kRB26s2CompTubeInnerR = 12.00/2.; // Connection tubes inner radius [Pos 2 + 3]
const Float_t kRB26s2CompTubeOuterR = 12.30/2.; // Connection tubes outer radius [Pos 2 + 3]
const Float_t kRB26s2WeldingTubeLeftL = 9.00/2.; // Left connection tube half length [Pos 2]
shRB26s2Compensator->DefineSection( 3, kRB26s2ProtZ + 2. * kRB26s2ProtL, 0., kRB26s2ProtOuterR);
shRB26s2Compensator->DefineSection( 4, kRB26s2ProtZ + 2. * kRB26s2ProtL, 0., kRB26s2CompTubeOuterR);
shRB26s2Compensator->DefineSection( 5, kRB26s2CompL , 0., kRB26s2CompTubeOuterR);
- TGeoVolume* voRB26s2Compensator = new TGeoVolume("RB26s2Compensator", shRB26s2Compensator, kMedVac);
+ TGeoVolume* voRB26s2Compensator = new TGeoVolume("RB26s2Compensator", shRB26s2Compensator, kMedVacH);
//
// [Pos 1] Bellow
//
//
- TGeoVolume* voRB26s2Bellow = new TGeoVolume("RB26s2Bellow", new TGeoTube(kRB26s2BellowRi, kRB26s2BellowRo, kRB26s2BellowUndL/2.), kMedVac);
+ TGeoVolume* voRB26s2Bellow = new TGeoVolume("RB26s2Bellow", new TGeoTube(kRB26s2BellowRi, kRB26s2BellowRo, kRB26s2BellowUndL/2.), kMedVacH);
//
// Upper part of the undulation
//
shRB26s2PlieTubeU->SetName("RB26s2TubeU");
TGeoCompositeShape* shRB26s2UpperPlie = new TGeoCompositeShape("RB26s2UpperPlie", "RB26s2TorusU*RB26s2TubeU");
- TGeoVolume* voRB26s2WiggleU = new TGeoVolume("RB26s2UpperPlie", shRB26s2UpperPlie, kMedSteel);
+ TGeoVolume* voRB26s2WiggleU = new TGeoVolume("RB26s2UpperPlie", shRB26s2UpperPlie, kMedSteelH);
//
// Lower part of the undulation
TGeoTorus* shRB26s2PlieTorusL = new TGeoTorus(kRB26s2BellowRi + kRB26s2PlieR, kRB26s2PlieR - kRB26s2PlieThickness, kRB26s2PlieR);
shRB26s2PlieTubeL->SetName("RB26s2TubeL");
TGeoCompositeShape* shRB26s2LowerPlie = new TGeoCompositeShape("RB26s2LowerPlie", "RB26s2TorusL*RB26s2TubeL");
- TGeoVolume* voRB26s2WiggleL = new TGeoVolume("RB26s2LowerPlie", shRB26s2LowerPlie, kMedSteel);
+ TGeoVolume* voRB26s2WiggleL = new TGeoVolume("RB26s2LowerPlie", shRB26s2LowerPlie, kMedSteelH);
//
// Connection between upper and lower part of undulation
TGeoVolume* voRB26s2WiggleC1 = new TGeoVolume("RB26s2PlieConn1",
new TGeoTube(kRB26s2BellowRi + kRB26s2PlieR,
- kRB26s2BellowRo - kRB26s2PlieR, kRB26s2PlieThickness / 2.), kMedSteel);
+ kRB26s2BellowRo - kRB26s2PlieR, kRB26s2PlieThickness / 2.), kMedSteelH);
//
// One wiggle
TGeoVolumeAssembly* voRB26s2Wiggle = new TGeoVolumeAssembly("RB26s2Wiggle");
// [Pos 2] Left Welding Tube
//
TGeoTube* shRB26s2CompLeftTube = new TGeoTube(kRB26s2CompTubeInnerR, kRB26s2CompTubeOuterR, kRB26s2WeldingTubeLeftL);
- TGeoVolume* voRB26s2CompLeftTube = new TGeoVolume("RB26s2CompLeftTube", shRB26s2CompLeftTube, kMedSteel);
+ TGeoVolume* voRB26s2CompLeftTube = new TGeoVolume("RB26s2CompLeftTube", shRB26s2CompLeftTube, kMedSteelH);
voRB26s2Compensator->AddNode(voRB26s2CompLeftTube, 1, new TGeoTranslation(0., 0., kRB26s2WeldingTubeLeftL));
//
// [Pos 3] Right Welding Tube
//
TGeoTube* shRB26s2CompRightTube = new TGeoTube(kRB26s2CompTubeInnerR, kRB26s2CompTubeOuterR, kRB26s2WeldingTubeRightL);
- TGeoVolume* voRB26s2CompRightTube = new TGeoVolume("RB26s2CompRightTube", shRB26s2CompRightTube, kMedSteel);
+ TGeoVolume* voRB26s2CompRightTube = new TGeoVolume("RB26s2CompRightTube", shRB26s2CompRightTube, kMedSteelH);
voRB26s2Compensator->AddNode(voRB26s2CompRightTube, 1, new TGeoTranslation(0., 0., kRB26s2CompL - kRB26s2WeldingTubeRightL));
//
// [Pos 4] Ring
//
TGeoTube* shRB26s2CompRing = new TGeoTube(kRB26s2CompTubeOuterR, kRB26s2RingOuterR, kRB26s2RingL);
- TGeoVolume* voRB26s2CompRing = new TGeoVolume("RB26s2CompRing", shRB26s2CompRing, kMedSteel);
+ TGeoVolume* voRB26s2CompRing = new TGeoVolume("RB26s2CompRing", shRB26s2CompRing, kMedSteelH);
voRB26s2Compensator->AddNode(voRB26s2CompRing, 1, new TGeoTranslation(0., 0., kRB26s2RingZ + kRB26s2RingL));
//
// [Pos 5] Outer Protecting Tube
//
TGeoTube* shRB26s2CompProtTube = new TGeoTube(kRB26s2RingOuterR, kRB26s2ProtOuterR, kRB26s2ProtL);
- TGeoVolume* voRB26s2CompProtTube = new TGeoVolume("RB26s2CompProtTube", shRB26s2CompProtTube, kMedSteel);
+ TGeoVolume* voRB26s2CompProtTube = new TGeoVolume("RB26s2CompProtTube", shRB26s2CompProtTube, kMedSteelH);
voRB26s2Compensator->AddNode(voRB26s2CompProtTube, 1, new TGeoTranslation(0., 0., kRB26s2ProtZ + kRB26s2ProtL));
///////////////////////////////////
z0 = kRB26s1RFlangeCrL;
shRB26s1RFlangeCr->DefineSection(3, z0, kRB26s1RFlangeCrRi2, kRB26s1RFlangeCrRo);
TGeoVolume* voRB26s1RFlangeCr =
- new TGeoVolume("RB26s1RFlangeCr", shRB26s1RFlangeCr, kMedSteel);
+ new TGeoVolume("RB26s1RFlangeCr", shRB26s1RFlangeCr, kMedSteelH);
// Pos 2 Insert LHCVFX__0015
const Float_t kRB26s1RFlangeIsL = 4.88 ; // Lenth of the insert
z0 = kRB26s1RFlangeIsL;
shRB26s1RFlangeIs->DefineSection(3, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
TGeoVolume* voRB26s1RFlangeIs =
- new TGeoVolume("RB26s1RFlangeIs", shRB26s1RFlangeIs, kMedSteel);
+ new TGeoVolume("RB26s1RFlangeIs", shRB26s1RFlangeIs, kMedSteelH);
// 4.88 + 3.7 = 8.58 (8.7 to avoid overlap)
// Pos 3 Fixed Point Section LHCVC2A_0021
const Float_t kRB26s1RFlangeFpL = 5.88 ; // Length of the fixed point section (0.08 cm added for welding)
shRB26s1RFlangeFp->DefineSection(4, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
z0 = kRB26s1RFlangeFpL;
shRB26s1RFlangeFp->DefineSection(5, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
- TGeoVolume* voRB26s1RFlangeFp = new TGeoVolume("RB26s1RFlangeFp", shRB26s1RFlangeFp, kMedSteel);
+ TGeoVolume* voRB26s1RFlangeFp = new TGeoVolume("RB26s1RFlangeFp", shRB26s1RFlangeFp, kMedSteelH);
// Put everything in a mother volume
TGeoPcon* shRB26s1RFlange = new TGeoPcon(0., 360., 8);
shRB26s1RFlange->DefineSection(6, z0, 0., kRB26s1RFlangeTubeRo);
z0 = kRB26s1RFlangeIsL + kRB26s1RFlangeFpL;
shRB26s1RFlange->DefineSection(7, z0, 0., kRB26s1RFlangeTubeRo);
- TGeoVolume* voRB26s1RFlange = new TGeoVolume("RB26s1RFlange", shRB26s1RFlange, kMedVac);
+ TGeoVolume* voRB26s1RFlange = new TGeoVolume("RB26s1RFlange", shRB26s1RFlange, kMedVacH);
voRB26s1RFlange->AddNode(voRB26s1RFlangeIs, 1, gGeoIdentity);
voRB26s1RFlange->AddNode(voRB26s1RFlangeCr, 1, gGeoIdentity);
shRB26s2FFlange->DefineSection(4, z0, kRB26s2FFlangeRi3, kRB26s2FFlangeRo);
z0 += kRB26s2FFlangeD3;
shRB26s2FFlange->DefineSection(5, z0, kRB26s2FFlangeRi3, kRB26s2FFlangeRo);
- TGeoVolume* voRB26s2FFlange = new TGeoVolume("RB26s2FFlange", shRB26s2FFlange, kMedSteel);
+ TGeoVolume* voRB26s2FFlange = new TGeoVolume("RB26s2FFlange", shRB26s2FFlange, kMedSteelH);
- TGeoVolume* voRB26s2FFlangeM = new TGeoVolume("RB26s2FFlangeM", MakeMotherFromTemplate(shRB26s2FFlange, 2, 5), kMedVac);
+ TGeoVolume* voRB26s2FFlangeM = new TGeoVolume("RB26s2FFlangeM", MakeMotherFromTemplate(shRB26s2FFlange, 2, 5), kMedVacH);
voRB26s2FFlangeM->AddNode(voRB26s2FFlange, 1, gGeoIdentity);
// Vacuum Tube //
// Drawing LHCVC2A_0003 //
///////////////////////////////////
- const Float_t kRB26s3TubeL = 629.35 + 0.3; // 0.3 cm added for welding
+ const Float_t kRB26s3TubeL = 629.35 + 0.3; // 0.3 cm added for welding
+ const Float_t kRB26s3TubeR1 = 12./2.;
+ const Float_t kRB26s3TubeR2 = kRB26s3TubeR1 + 215.8 * TMath::Tan(0.829 / 180. * TMath::Pi());
+
TGeoPcon* shRB26s3Tube = new TGeoPcon(0., 360., 7);
// Section 1: straight section
- shRB26s3Tube->DefineSection(0, 0.00, 12.00/2., 12.30/2.);
- shRB26s3Tube->DefineSection(1, 2.00, 12.00/2., 12.30/2.);
+ shRB26s3Tube->DefineSection(0, 0.00, kRB26s3TubeR1, kRB26s3TubeR1 + 0.15);
+ shRB26s3Tube->DefineSection(1, 2.00, kRB26s3TubeR1, kRB26s3TubeR1 + 0.15);
// Section 2: 0.829 deg opening cone
- shRB26s3Tube->DefineSection(2, 2.00, 12.00/2., 12.40/2.);
-
- shRB26s3Tube->DefineSection(3, 217.80, 12.00/2., 12.40/2.);
- shRB26s3Tube->DefineSection(4, 217.80, 12.00/2., 12.40/2.);
+ shRB26s3Tube->DefineSection(2, 2.00, kRB26s3TubeR1, kRB26s3TubeR1 + 0.20);
+
+ shRB26s3Tube->DefineSection(3, 217.80, kRB26s3TubeR2, kRB26s3TubeR2 + 0.20);
+ shRB26s3Tube->DefineSection(4, 217.80, kRB26s3TubeR2, kRB26s3TubeR2 + 0.30);
- shRB26s3Tube->DefineSection(5, 622.20, 30.00/2., 30.60/2.);
+ shRB26s3Tube->DefineSection(5, 622.20, 30.00/2., 30.60/2.);
shRB26s3Tube->DefineSection(6, kRB26s3TubeL, 30.00/2., 30.60/2.);
- TGeoVolume* voRB26s3Tube = new TGeoVolume("RB26s3Tube", shRB26s3Tube, kMedSteel);
+ TGeoVolume* voRB26s3Tube = new TGeoVolume("RB26s3Tube", shRB26s3Tube, kMedSteelH);
// Add the insulation layer
- TGeoVolume* voRB26s3TubeIns = new TGeoVolume("RB26s3TubeIns", MakeInsulationFromTemplate(shRB26s3Tube), kMedInsu);
+ TGeoVolume* voRB26s3TubeIns = new TGeoVolume("RB26s3TubeIns", MakeInsulationFromTemplate(shRB26s3Tube), kMedInsuH);
voRB26s3Tube->AddNode(voRB26s3TubeIns, 1, gGeoIdentity);
- TGeoVolume* voRB26s3TubeM = new TGeoVolume("RB26s3TubeM", MakeMotherFromTemplate(shRB26s3Tube), kMedVac);
+ TGeoVolume* voRB26s3TubeM = new TGeoVolume("RB26s3TubeM", MakeMotherFromTemplate(shRB26s3Tube), kMedVacH);
voRB26s3TubeM->AddNode(voRB26s3Tube, 1, gGeoIdentity);
shRB26s3FixedPoint->DefineSection(6, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo2);
z0 = kRB26s3FixedPointL;
shRB26s3FixedPoint->DefineSection(7, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo2);
- TGeoVolume* voRB26s3FixedPoint = new TGeoVolume("RB26s3FixedPoint", shRB26s3FixedPoint, kMedSteel);
+ TGeoVolume* voRB26s3FixedPoint = new TGeoVolume("RB26s3FixedPoint", shRB26s3FixedPoint, kMedSteelH);
- TGeoVolume* voRB26s3FixedPointM = new TGeoVolume("RB26s3FixedPointM", MakeMotherFromTemplate(shRB26s3FixedPoint), kMedVac);
+ TGeoVolume* voRB26s3FixedPointM = new TGeoVolume("RB26s3FixedPointM", MakeMotherFromTemplate(shRB26s3FixedPoint), kMedVacH);
voRB26s3FixedPointM->AddNode(voRB26s3FixedPoint, 1, gGeoIdentity);
///////////////////////////////////
shRB26s3SFlange->DefineSection(4, z0, kRB26s3SFlangeRi3, kRB26s3SFlangeRo);
z0 += kRB26s3SFlangeD3;
shRB26s3SFlange->DefineSection(5, z0, kRB26s3SFlangeRi3, kRB26s3SFlangeRo);
- TGeoVolume* voRB26s3SFlange = new TGeoVolume("RB26s3SFlange", shRB26s3SFlange, kMedSteel);
+ TGeoVolume* voRB26s3SFlange = new TGeoVolume("RB26s3SFlange", shRB26s3SFlange, kMedSteelH);
- TGeoVolume* voRB26s3SFlangeM = new TGeoVolume("RB26s3SFlange", MakeMotherFromTemplate(shRB26s3SFlange, 0, 3), kMedVac);
+ TGeoVolume* voRB26s3SFlangeM = new TGeoVolume("RB26s3SFlangeM", MakeMotherFromTemplate(shRB26s3SFlange, 0, 3), kMedVacH);
voRB26s3SFlangeM->AddNode(voRB26s3SFlange, 1, gGeoIdentity);
///////////////////////////////////
shRB26s3FFlange->DefineSection(4, z0, kRB26s3FFlangeRi3, kRB26s3FFlangeRo);
z0 += kRB26s3FFlangeD3;
shRB26s3FFlange->DefineSection(5, z0, kRB26s3FFlangeRi3, kRB26s3FFlangeRo);
- TGeoVolume* voRB26s3FFlange = new TGeoVolume("RB26s3FFlange", shRB26s3FFlange, kMedSteel);
+ TGeoVolume* voRB26s3FFlange = new TGeoVolume("RB26s3FFlange", shRB26s3FFlange, kMedSteelH);
- TGeoVolume* voRB26s3FFlangeM = new TGeoVolume("RB26s3FFlange", MakeMotherFromTemplate(shRB26s3FFlange, 2, 5), kMedVac);
+ TGeoVolume* voRB26s3FFlangeM = new TGeoVolume("RB26s3FFlangeM", MakeMotherFromTemplate(shRB26s3FFlange, 2, 5), kMedVacH);
voRB26s3FFlangeM->AddNode(voRB26s3FFlange, 1, gGeoIdentity);
const Float_t kRB26s3ConnectionPlieR = 0.21; // Connection plie radius [Pos 1]
// Plie radius
const Float_t kRB26s3PlieR =
- (kRB26s3BellowUndL - 4. * kRB26s3ConnectionPlieR + 2. * kRB26s3PlieThickness +
- (2. * kRB26s3NumberOfPlies - 2.) * kRB26s3PlieThickness) / (4. * kRB26s3NumberOfPlies - 2.);
+ (kRB26s3BellowUndL - 4. * kRB26s3ConnectionPlieR +
+ 2. * kRB26s3NumberOfPlies * kRB26s3PlieThickness) / (4. * kRB26s3NumberOfPlies);
//
// The welding tubes have 3 sections with different radii and 2 transition regions.
shRB26s3Compensator->DefineSection( 4, kRB26s3ProtZ + 2. * kRB26s3ProtL, 0., kRB26s3CompTubeOuterR1);
shRB26s3Compensator->DefineSection( 5, kRB26s3CompL , 0., kRB26s3CompTubeOuterR1);
TGeoVolume* voRB26s3Compensator =
- new TGeoVolume("RB26s3Compensator", shRB26s3Compensator, kMedVac);
+ new TGeoVolume("RB26s3Compensator", shRB26s3Compensator, kMedVacH);
//
// [Pos 1] Bellow
//
//
TGeoVolume* voRB26s3Bellow = new TGeoVolume("RB26s3Bellow",
- new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRo, kRB26s3BellowUndL/2.), kMedVac);
+ new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRo, kRB26s3BellowUndL/2.), kMedVacH);
//
// Upper part of the undulation
//
shRB26s3PlieTubeU->SetName("RB26s3TubeU");
TGeoCompositeShape* shRB26s3UpperPlie = new TGeoCompositeShape("RB26s3UpperPlie", "RB26s3TorusU*RB26s3TubeU");
- TGeoVolume* voRB26s3WiggleU = new TGeoVolume("RB26s3UpperPlie", shRB26s3UpperPlie, kMedSteel);
+ TGeoVolume* voRB26s3WiggleU = new TGeoVolume("RB26s3UpperPlie", shRB26s3UpperPlie, kMedSteelH);
//
// Lower part of the undulation
TGeoTorus* shRB26s3PlieTorusL = new TGeoTorus(kRB26s3BellowRi + kRB26s3PlieR, kRB26s3PlieR - kRB26s3PlieThickness, kRB26s3PlieR);
shRB26s3PlieTubeL->SetName("RB26s3TubeL");
TGeoCompositeShape* shRB26s3LowerPlie = new TGeoCompositeShape("RB26s3LowerPlie", "RB26s3TorusL*RB26s3TubeL");
- TGeoVolume* voRB26s3WiggleL = new TGeoVolume("RB26s3LowerPlie", shRB26s3LowerPlie, kMedSteel);
+ TGeoVolume* voRB26s3WiggleL = new TGeoVolume("RB26s3LowerPlie", shRB26s3LowerPlie, kMedSteelH);
//
// Connection between upper and lower part of undulation
TGeoVolume* voRB26s3WiggleC1 = new TGeoVolume("RB26s3PlieConn1",
new TGeoTube(kRB26s3BellowRi + kRB26s3PlieR,
- kRB26s3BellowRo - kRB26s3PlieR, kRB26s3PlieThickness / 2.), kMedSteel);
+ kRB26s3BellowRo - kRB26s3PlieR, kRB26s3PlieThickness / 2.), kMedSteelH);
//
// One wiggle
TGeoVolumeAssembly* voRB26s3Wiggle = new TGeoVolumeAssembly("RB26s3Wiggle");
z0 += kRB26s3PlieR - kRB26s3PlieThickness;
voRB26s3Wiggle->AddNode(voRB26s3WiggleL, 1 , new TGeoTranslation(0., 0., z0));
// Positioning of the volumes
- z0 = - kRB26s3BellowUndL/2.+ kRB26s3ConnectionPlieR;
+ z0 = - kRB26s3BellowUndL/2.+ kRB26s3PlieR;
voRB26s3Bellow->AddNode(voRB26s3WiggleL, 1, new TGeoTranslation(0., 0., z0));
- z0 += kRB26s3ConnectionPlieR;
+ z0 += kRB26s3PlieR;
zsh = 4. * kRB26s3PlieR - 2. * kRB26s3PlieThickness;
for (Int_t iw = 0; iw < kRB26s3NumberOfPlies; iw++) {
Float_t zpos = z0 + iw * zsh;
//
TGeoTube* shRB26s3CompProtTube = new TGeoTube(kRB26s3RingOuterR, kRB26s3ProtOuterR, kRB26s3ProtL);
TGeoVolume* voRB26s3CompProtTube =
- new TGeoVolume("RB26s3CompProtTube", shRB26s3CompProtTube, kMedSteel);
+ new TGeoVolume("RB26s3CompProtTube", shRB26s3CompProtTube, kMedSteelH);
voRB26s3Compensator->AddNode(voRB26s3CompProtTube, 1, new TGeoTranslation(0., 0., kRB26s3ProtZ + kRB26s3ProtL));
shRB26s3CompRightTube->DefineSection(4, z0, kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
TGeoVolume* voRB26s3CompRightTube =
- new TGeoVolume("RB26s3CompRightTube", shRB26s3CompRightTube, kMedSteel);
+ new TGeoVolume("RB26s3CompRightTube", shRB26s3CompRightTube, kMedSteelH);
voRB26s3Compensator->AddNode(voRB26s3CompRightTube, 1, new TGeoTranslation(0., 0., kRB26s3CompL - z0));
//
shRB26s3CompLeftTube->DefineSection(4, z0, kRB26s3CompTubeInnerR3, kRB26s3CompTubeOuterR3);
TGeoVolume* voRB26s3CompLeftTube =
- new TGeoVolume("RB26s3CompLeftTube", shRB26s3CompLeftTube, kMedSteel);
+ new TGeoVolume("RB26s3CompLeftTube", shRB26s3CompLeftTube, kMedSteelH);
voRB26s3Compensator->AddNode(voRB26s3CompLeftTube, 1, gGeoIdentity);
//
// [Pos 5] Ring
//
TGeoTube* shRB26s3CompRing = new TGeoTube(kRB26s3CompTubeOuterR2, kRB26s3RingOuterR, kRB26s3RingL);
TGeoVolume* voRB26s3CompRing =
- new TGeoVolume("RB26s3CompRing", shRB26s3CompRing, kMedSteel);
+ new TGeoVolume("RB26s3CompRing", shRB26s3CompRing, kMedSteelH);
voRB26s3Compensator->AddNode(voRB26s3CompRing, 1, new TGeoTranslation(0., 0., kRB26s3RingZ + kRB26s3RingL));
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, 512.10, 45.00/2., 45.80/2.);
+ shRB26s45Tube->DefineSection( 4, 486.10, 45.00/2., 45.80/2.);
// Section 3: straight section 4 mm
- shRB26s45Tube->DefineSection( 5, 538.10, 45.00/2., 45.80/2.);
+ shRB26s45Tube->DefineSection( 5, 512.10, 45.00/2., 45.80/2.);
// Section 4: straight section 3 mm
- shRB26s45Tube->DefineSection( 6, 538.10, 45.00/2., 45.60/2.);
- shRB26s45Tube->DefineSection( 7, 553.70, 45.00/2., 45.60/2.);
+ 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);
+ new TGeoVolume("RB26s45Tube", shRB26s45Tube, kMedSteelH);
- TGeoVolume* voRB26s45TubeM = new TGeoVolume("RB26s45TubeM", MakeMotherFromTemplate(shRB26s45Tube), kMedVac);
+ TGeoVolume* voRB26s45TubeM = new TGeoVolume("RB26s45TubeM", MakeMotherFromTemplate(shRB26s45Tube), kMedVacH);
voRB26s45TubeM->AddNode(voRB26s45Tube, 1, gGeoIdentity);
const Float_t kRB26s5ConnectionR = 11.2/2.; // Bellow connection radius [Pos 1]
// Plie radius
const Float_t kRB26s5PlieR =
- (kRB26s5BellowUndL - 4. * kRB26s5ConnectionPlieR + 2. * kRB26s5PlieThickness +
- (2. * kRB26s5NumberOfPlies - 2.) * kRB26s5PlieThickness) / (4. * kRB26s5NumberOfPlies - 2.);
+ (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.42/2.; // Right connection tube half length [Pos 3] (0.3 cm added for welding)
+ 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]
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);
+ TGeoVolume* voRB26s5Compensator = new TGeoVolume("RB26s5Compensator", shRB26s5Compensator, kMedVacH);
//
// [Pos 1] Bellow
//
//
TGeoVolume* voRB26s5Bellow = new TGeoVolume("RB26s5Bellow",
- new TGeoTube(kRB26s5BellowRi, kRB26s5BellowRo, kRB26s5BellowUndL/2.), kMedVac);
+ new TGeoTube(kRB26s5BellowRi, kRB26s5BellowRo, kRB26s5BellowUndL/2.), kMedVacH);
//
// Upper part of the undulation
//
shRB26s5PlieTubeU->SetName("RB26s5TubeU");
TGeoCompositeShape* shRB26s5UpperPlie = new TGeoCompositeShape("RB26s5UpperPlie", "RB26s5TorusU*RB26s5TubeU");
- TGeoVolume* voRB26s5WiggleU = new TGeoVolume("RB26s5UpperPlie", shRB26s5UpperPlie, kMedSteel);
+ TGeoVolume* voRB26s5WiggleU = new TGeoVolume("RB26s5UpperPlie", shRB26s5UpperPlie, kMedSteelH);
//
// Lower part of the undulation
TGeoTorus* shRB26s5PlieTorusL = new TGeoTorus(kRB26s5BellowRi + kRB26s5PlieR, kRB26s5PlieR - kRB26s5PlieThickness, kRB26s5PlieR);
shRB26s5PlieTubeL->SetName("RB26s5TubeL");
TGeoCompositeShape* shRB26s5LowerPlie = new TGeoCompositeShape("RB26s5LowerPlie", "RB26s5TorusL*RB26s5TubeL");
- TGeoVolume* voRB26s5WiggleL = new TGeoVolume("RB26s5LowerPlie", shRB26s5LowerPlie, kMedSteel);
+ TGeoVolume* voRB26s5WiggleL = new TGeoVolume("RB26s5LowerPlie", shRB26s5LowerPlie, kMedSteelH);
//
// Connection between upper and lower part of undulation
TGeoVolume* voRB26s5WiggleC1 = new TGeoVolume("RB26s5PlieConn1",
new TGeoTube(kRB26s5BellowRi + kRB26s5PlieR,
- kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieThickness / 2.), kMedSteel);
+ kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieThickness / 2.), kMedSteelH);
//
// One wiggle
TGeoVolumeAssembly* voRB26s5Wiggle = new TGeoVolumeAssembly("RB26s5Wiggle");
shRB26s5CompLeftTube->DefineSection(1, z0, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
z0 += ( kRB26s5ConnectionR - kRB26s5CompTubeOuterR);
shRB26s5CompLeftTube->DefineSection(2, z0, kRB26s5ConnectionR - 0.15, kRB26s5ConnectionR);
- TGeoVolume* voRB26s5CompLeftTube = new TGeoVolume("RB26s5CompLeftTube", shRB26s5CompLeftTube, kMedSteel);
+ TGeoVolume* voRB26s5CompLeftTube = new TGeoVolume("RB26s5CompLeftTube", shRB26s5CompLeftTube, kMedSteelH);
voRB26s5Compensator->AddNode(voRB26s5CompLeftTube, 1, gGeoIdentity);
//
// [Pos 3] Right Welding Tube
shRB26s5CompRightTube->DefineSection(10, 2. * kRB26s5WeldingTubeRightL, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
TGeoVolume* voRB26s5CompRightTube =
- new TGeoVolume("RB26s5CompRightTube", shRB26s5CompRightTube, kMedSteel);
+ new TGeoVolume("RB26s5CompRightTube", shRB26s5CompRightTube, kMedSteelH);
voRB26s5Compensator->AddNode(voRB26s5CompRightTube, 1,
new TGeoTranslation(0., 0., kRB26s5CompL - 2. * kRB26s5WeldingTubeRightL));
//
//
TGeoTube* shRB26s5CompRing = new TGeoTube(kRB26s5RingInnerR, kRB26s5RingOuterR, kRB26s5RingL);
TGeoVolume* voRB26s5CompRing =
- new TGeoVolume("RB26s5CompRing", shRB26s5CompRing, kMedSteel);
+ new TGeoVolume("RB26s5CompRing", shRB26s5CompRing, kMedSteelH);
voRB26s5Compensator->AddNode(voRB26s5CompRing, 1, new TGeoTranslation(0., 0., kRB26s5RingZ + kRB26s5RingL));
//
//
TGeoTube* shRB26s5CompProtTube = new TGeoTube(kRB26s5RingOuterR, kRB26s5ProtOuterR, kRB26s5ProtL);
TGeoVolume* voRB26s5CompProtTube =
- new TGeoVolume("RB26s5CompProtTube", shRB26s5CompProtTube, kMedSteel);
+ new TGeoVolume("RB26s5CompProtTube", shRB26s5CompProtTube, kMedSteelH);
voRB26s5Compensator->AddNode(voRB26s5CompProtTube, 1, new TGeoTranslation(0., 0., kRB26s5ProtZ + kRB26s5ProtL));
///////////////////////////////////////
shRB26s4FixedPoint->DefineSection(4, z0, kRB26s4TubeRi, kRB26s4TubeRo);
z0 = kRB26s4FixedPointL;
shRB26s4FixedPoint->DefineSection(5, z0, kRB26s4TubeRi, kRB26s4TubeRo);
- TGeoVolume* voRB26s4FixedPoint = new TGeoVolume("RB26s4FixedPoint", shRB26s4FixedPoint, kMedSteel);
+ TGeoVolume* voRB26s4FixedPoint = new TGeoVolume("RB26s4FixedPoint", shRB26s4FixedPoint, kMedSteelH);
- TGeoVolume* voRB26s4FixedPointM = new TGeoVolume("RB26s4FixedPointM", MakeMotherFromTemplate(shRB26s4FixedPoint), kMedVac);
+ TGeoVolume* voRB26s4FixedPointM = new TGeoVolume("RB26s4FixedPointM", MakeMotherFromTemplate(shRB26s4FixedPoint), kMedVacH);
voRB26s4FixedPointM->AddNode(voRB26s4FixedPoint, 1, gGeoIdentity);
shRB26s4SFlange->DefineSection(4, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
z0 += kRB26s4SFlangeD3;
shRB26s4SFlange->DefineSection(5, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
- TGeoVolume* voRB26s4SFlange = new TGeoVolume("RB26s4SFlange", shRB26s4SFlange, kMedSteel);
+ TGeoVolume* voRB26s4SFlange = new TGeoVolume("RB26s4SFlange", shRB26s4SFlange, kMedSteelH);
- TGeoVolume* voRB26s4SFlangeM = new TGeoVolume("RB26s4SFlangeM", MakeMotherFromTemplate(shRB26s4SFlange, 0, 3), kMedVac);
+ TGeoVolume* voRB26s4SFlangeM = new TGeoVolume("RB26s4SFlangeM", MakeMotherFromTemplate(shRB26s4SFlange, 0, 3), kMedVacH);
voRB26s4SFlangeM->AddNode(voRB26s4SFlange, 1, gGeoIdentity);
///////////////////////////////////////
shRB26s5RFlange->DefineSection(6, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
z0 += kRB26s5RFlangeD1;
shRB26s5RFlange->DefineSection(7, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
- TGeoVolume* voRB26s5RFlange = new TGeoVolume("RB26s5RFlange", shRB26s5RFlange, kMedSteel);
+ TGeoVolume* voRB26s5RFlange = new TGeoVolume("RB26s5RFlange", shRB26s5RFlange, kMedSteelH);
- TGeoVolume* voRB26s5RFlangeM = new TGeoVolume("RB26s5RFlangeM", MakeMotherFromTemplate(shRB26s5RFlange, 4, 7), kMedVac);
+ TGeoVolume* voRB26s5RFlangeM = new TGeoVolume("RB26s5RFlangeM", MakeMotherFromTemplate(shRB26s5RFlange, 4, 7), kMedVacH);
voRB26s5RFlangeM->AddNode(voRB26s5RFlange, 1, gGeoIdentity);
//
//
AliDebugClass(1,"Create PIPEv3 materials");
- Int_t isxfld = gAlice->Field()->Integ();
- Float_t sxmgmx = gAlice->Field()->Max();
+ Int_t isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+ Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
// Steel (Inox)
Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
Float_t zsteel[4] = { 26.,24.,28.,14. };
Float_t zAir[4]={6.,7.,8.,18.};
Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
Float_t dAir = 1.20479E-3;
- Float_t dAir1 = 1.20479E-10;
+ Float_t dAir1 = 1.20479E-11;
//
// Insulation powder
// Si O Ti Al
Float_t ains[4] ={28.0855, 15.9994, 47.867, 26.982};
Float_t zins[4] ={14., 8. , 22. , 13. };
Float_t wins[4] ={ 0.3019, 0.4887, 0.1914, 0.018};
-
+ //
+ //
+ // Anticorodal
+ //
+ // Al Si7 Mg 0.6
+ //
+ Float_t aaco[3] ={26.982, 28.0855, 24.035};
+ Float_t zaco[3] ={13., 14. , 12. };
+ Float_t waco[3] ={ 0.924, 0.07, 0.006};
// Kapton
//
Float_t aKapton[4]={1.00794,12.0107, 14.010,15.9994};
Float_t zKapton[4]={1.,6.,7.,8.};
Float_t wKapton[4]={0.026362,0.69113,0.07327,0.209235};
Float_t dKapton = 1.42;
+ // NEG coating
+ // Ti V Zr
+ Float_t aNEG[4] = {47.87, 50.94, 91.24};
+ Float_t zNEG[4] = {22.00, 23.00, 40.00};
+ Float_t wNEG[4] = {1./3., 1./3., 1./3.};
+ Float_t dNEG = 5.6; // ?
+ //
//
// Berillium
- AliMaterial(5, "BERILLIUM$", 9.01, 4., 1.848, 35.3, 36.7);
+ AliMaterial(12, "BERYLLIUM1 ", 9.01, 4., 1.848, 35.3, 36.7);
+ AliMaterial(32, "BERYLLIUM2 ", 9.01, 4., 1.848, 35.3, 36.7);
//
// Carbon
- AliMaterial(6, "CARBON$ ", 12.01, 6., 2.265, 18.8, 49.9);
+ AliMaterial(13, "CARBON1 ", 12.01, 6., 2.265, 18.8, 49.9);
+ AliMaterial(33, "CARBON2 ", 12.01, 6., 2.265, 18.8, 49.9);
//
// Aluminum
- AliMaterial(9, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
+ AliMaterial(11, "ALUMINIUM1", 26.98, 13., 2.7, 8.9, 37.2);
+ AliMaterial(31, "ALUMINIUM2", 26.98, 13., 2.7, 8.9, 37.2);
//
// Copper
- AliMaterial(10, "COPPER", 63.55, 29, 8.96, 1.43, 85.6/8.96);
+ AliMaterial(10, "COPPER1 ", 63.55, 29, 8.96, 1.43, 85.6/8.96);
+ AliMaterial(30, "COPPER2 ", 63.55, 29, 8.96, 1.43, 85.6/8.96);
//
// Air
- AliMixture(15, "AIR$ ", aAir, zAir, dAir, 4, wAir);
+ AliMixture(15, "AIR1 ", aAir, zAir, dAir, 4, wAir);
+ AliMixture(35, "AIR_HIGH ", aAir, zAir, dAir, 4, wAir);
+ AliMixture(55, "AIR2 ", aAir, zAir, dAir, 4, wAir);
//
// Vacuum
- AliMixture(16, "VACUUM$ ", aAir, zAir, dAir1, 4, wAir);
+ AliMixture(16, "VACUUM1 " , aAir, zAir, dAir1, 4, wAir);
+ AliMixture(17, "VACUUMM ", aAir, zAir, dAir1, 4, wAir);
+ AliMixture(36, "VACUUM2 " , aAir, zAir, dAir1, 4, wAir);
//
// stainless Steel
- AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
+ AliMixture(19, "STAINLESS STEEL1", asteel, zsteel, 7.88, 4, wsteel);
+ AliMixture(39, "STAINLESS STEEL2", asteel, zsteel, 7.88, 4, wsteel);
//
// reduced density steel to approximate pump getter material
- AliMixture(20, "GETTER$", asteel, zsteel, 1.00, 4, wsteel);
+ AliMixture(20, "GETTER1", asteel, zsteel, 1.00, 4, wsteel);
+ AliMixture(40, "GETTER2", asteel, zsteel, 1.00, 4, wsteel);
// Al-Be alloy
//
- AliMixture(21, "AlBe$", aAlBe, zAlBe, 2.07, 2, wAlBe);
+ AliMixture(21, "AlBe1", aAlBe, zAlBe, 2.07, 2, wAlBe);
+ AliMixture(41, "AlBe2", aAlBe, zAlBe, 2.07, 2, wAlBe);
// Polyamid
//
- AliMixture(22, "PA$", aPA, zPA, 1.14, -4, wPA);
+ AliMixture(22, "PA1", aPA, zPA, 1.14, -4, wPA);
+ AliMixture(42, "PA2", aPA, zPA, 1.14, -4, wPA);
//
// Kapton
- AliMixture(23, "KAPTON", aKapton, zKapton, dKapton, 4, wKapton);
-
+ AliMixture(23, "KAPTON1", aKapton, zKapton, dKapton, 4, wKapton);
+ AliMixture(43, "KAPTON2", aKapton, zKapton, dKapton, 4, wKapton);
+ // Anticorodal
+ AliMixture(24, "ANTICORODAL1", aaco, zaco, 2.66, 3, waco);
+ AliMixture(44, "ANTICORODAL2", aaco, zaco, 2.66, 3, waco);
+
//
// Insulation powder
AliMixture(14, "INSULATION0$", ains, zins, 0.41, 4, wins);
AliMixture(34, "INSULATION1$", ains, zins, 0.41, 4, wins);
AliMixture(54, "INSULATION2$", ains, zins, 0.41, 4, wins);
+
+ // NEG
+ AliMixture(25, "NEG COATING1", aNEG, zNEG, dNEG, -3, wNEG);
+ AliMixture(45, "NEG COATING2", aNEG, zNEG, dNEG, -3, wNEG);
+
+
// ****************
// Defines tracking media parameters.
//
//
// Beryllium
- AliMedium(5, "BE", 5, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(12, "BE1", 12, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(32, "BE2", 32, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
// Carbon
- AliMedium(6, "C", 6, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(13, "C1", 13, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(33, "C2", 33, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
//
// Aluminum
- AliMedium(9, "ALU", 9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(11, "ALU1", 11, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(31, "ALU2", 31, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+
// Copper
- AliMedium(10, "CU", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(10, "CU1", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(30, "CU2", 30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
//
// Air
- AliMedium(15, "AIR", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(15, "AIR1", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(55, "AIR2", 55, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(35, "AIR_HIGH", 35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
//
// Vacuum
- AliMedium(16, "VACUUM", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(16, "VACUUM1", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(17, "VACUUMM", 17, 0, isxfld, sxmgmx, 0.1, stemax, deemax, epsil, stmin);
+ AliMedium(36, "VACUUM2", 36, 0, isxfld, sxmgmx, 0.1, stemax, deemax, epsil, stmin);
//
// Steel
- AliMedium(19, "INOX", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(19, "INOX1", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(39, "INOX2", 39, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
//
// Getter
- AliMedium(20, "GETTER", 20, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(20, "GETTER1", 20, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(40, "GETTER2", 40, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
//
// AlBe - Aloy
- AliMedium(21, "AlBe" , 21, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(21, "AlBe1" , 21, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(41, "AlBe2" , 41, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
//
// Polyamid
- AliMedium(22, "PA" , 22, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- //
+ AliMedium(22, "PA1" , 22, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(42, "PA2" , 42, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ // Antocorodal
+ AliMedium(24, "ANTICORODAL1", 24, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(44, "ANTICORODAL2", 44, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
// Insulation Powder
AliMedium(14, "INS_C0 ", 14, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
AliMedium(34, "INS_C1 ", 34, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
AliMedium(54, "INS_C2 ", 54, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
//
// KAPTON
- AliMedium(23, "KAPTON", 23, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(23, "KAPTON1", 23, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(43, "KAPTON2", 43, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+
+ //
+ // NEG
+ AliMedium(25, "NEG COATING1", 25, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+ AliMedium(45, "NEG COATING2", 45, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
}
-TGeoPcon* AliPIPEv3::MakeMotherFromTemplate(TGeoPcon* shape, Int_t imin, Int_t imax, Float_t r0, Int_t nz)
+TGeoPcon* AliPIPEv3::MakeMotherFromTemplate(const TGeoPcon* shape, Int_t imin, Int_t imax, Float_t r0, Int_t nz)
{
//
// Create a mother shape from a template setting some min radii to 0
//
Int_t nz0 = shape->GetNz();
+ // if nz > -1 the number of planes is given by nz
if (nz != -1) nz0 = nz;
-
TGeoPcon* mother = new TGeoPcon(0., 360., nz0);
- nz--;
-
+
if (imin == -1 || imax == -1) {
imin = 0;
imax = shape->GetNz();
- } else if (imax > nz) {
- imax = nz;
- printf("Warning: imax reset to nz \n");
+ } else if (imax >= nz0) {
+ imax = nz0 - 1;
+ printf("Warning: imax reset to nz-1 %5d %5d %5d %5d\n", imin, imax, nz, nz0);
}
}
-TGeoVolume* AliPIPEv3::MakeBellow(char* ext, Int_t nc, Float_t rMin, Float_t rMax, Float_t dU, Float_t rPlie, Float_t dPlie)
+TGeoVolume* AliPIPEv3::MakeBellow(const char* ext, Int_t nc, Float_t rMin, Float_t rMax, Float_t dU, Float_t rPlie, Float_t dPlie)
{
// nc Number of convolution
// rMin Inner radius of the bellow
// dU Undulation length
// rPlie Plie radius
// dPlie Plie thickness
- const TGeoMedium* kMedVac = gGeoManager->GetMedium("PIPE_VACUUM");
- const TGeoMedium* kMedSteel = gGeoManager->GetMedium("PIPE_INOX");
+ const TGeoMedium* kMedVac = gGeoManager->GetMedium("PIPE_VACUUM2");
+ const TGeoMedium* kMedSteel = gGeoManager->GetMedium("PIPE_INOX2");
char name[64], nameA[64], nameB[64], bools[64];
- sprintf(name, "%sBellow", ext);
+ snprintf(name, 64, "%sBellowUS", ext);
TGeoVolume* voBellow = new TGeoVolume(name, new TGeoTube(rMin, rMax, dU/2.), kMedVac);
//
// Upper part of the undulation
//
TGeoTorus* shPlieTorusU = new TGeoTorus(rMax - rPlie, rPlie - dPlie, rPlie);
- sprintf(nameA, "%sTorusU", ext);
+ snprintf(nameA, 64, "%sTorusU", ext);
shPlieTorusU->SetName(nameA);
TGeoTube* shPlieTubeU = new TGeoTube (rMax - rPlie, rMax, rPlie);
- sprintf(nameB, "%sTubeU", ext);
+ snprintf(nameB, 64, "%sTubeU", ext);
shPlieTubeU->SetName(nameB);
- sprintf(name, "%sUpperPlie", ext);
- sprintf(bools, "%s*%s", nameA, nameB);
+ snprintf(name, 64, "%sUpperPlie", ext);
+ snprintf(bools, 64, "%s*%s", nameA, nameB);
TGeoCompositeShape* shUpperPlie = new TGeoCompositeShape(name, bools);
TGeoVolume* voWiggleU = new TGeoVolume(name, shUpperPlie, kMedSteel);
//
// Lower part of the undulation
TGeoTorus* shPlieTorusL = new TGeoTorus(rMin + rPlie, rPlie - dPlie, rPlie);
- sprintf(nameA, "%sTorusL", ext);
+ snprintf(nameA, 64, "%sTorusL", ext);
shPlieTorusL->SetName(nameA);
TGeoTube* shPlieTubeL = new TGeoTube (rMin, rMin + rPlie, rPlie);
- sprintf(nameB, "%sTubeL", ext);
+ snprintf(nameB, 64, "%sTubeL", ext);
shPlieTubeL->SetName(nameB);
- sprintf(name, "%sLowerPlie", ext);
- sprintf(bools, "%s*%s", nameA, nameB);
+ snprintf(name, 64, "%sLowerPlie", ext);
+ snprintf(bools, 64, "%s*%s", nameA, nameB);
TGeoCompositeShape* shLowerPlie = new TGeoCompositeShape(name, bools);
TGeoVolume* voWiggleL = new TGeoVolume(name, shLowerPlie, kMedSteel);
//
// Connection between upper and lower part of undulation
- sprintf(name, "%sPlieConn1", ext);
+ snprintf(name, 64, "%sPlieConn1", ext);
TGeoVolume* voWiggleC1 = new TGeoVolume(name, new TGeoTube(rMin + rPlie, rMax - rPlie, dPlie/2.), kMedSteel);
//
// One wiggle
Float_t dz = rPlie - dPlie / 2.;
Float_t z0 = - dPlie / 2.;
- printf("Bellow %f %f %f %f\n", dz, z0, rPlie, dPlie/2.);
-
- sprintf(name, "%sWiggle", ext);
+ snprintf(name, 64, "%sWiggle", ext);
TGeoVolumeAssembly* asWiggle = new TGeoVolumeAssembly(name);
- printf("z0 %f\n", z0);
asWiggle->AddNode(voWiggleC1, 1 , new TGeoTranslation(0., 0., z0));
z0 += dz;
- printf("z0 %f\n", z0);
asWiggle->AddNode(voWiggleU, 1 , new TGeoTranslation(0., 0., z0));
z0 += dz;
- printf("z0 %f\n", z0);
asWiggle->AddNode(voWiggleC1, 2 , new TGeoTranslation(0., 0., z0));
z0 += dz;
- printf("z0 %f\n", z0);
asWiggle->AddNode(voWiggleL , 1 , new TGeoTranslation(0., 0., z0));
// Positioning of the volumes
z0 = - dU / 2.+ rPlie;
Float_t zpos = z0 + iw * zsh;
voBellow->AddNode(asWiggle, iw + 1, new TGeoTranslation(0., 0., zpos - dPlie));
}
- printf("Bellow end\n");
return voBellow;
}
+//_______________________________________________________________________
+void AliPIPEv3::AddAlignableVolumes() const
+{
+ //
+ AliInfo("Add PIPE alignable volume");
+
+ if (!gGeoManager) {
+ AliFatal("TGeoManager doesn't exist !");
+ return;
+ }
+
+ TString symname("CP1");
+ TString volpath("/ALIC_1/CP_1/Cp1_1");
+ if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data()))
+ AliFatal(Form("Alignable entry %s not created. Volume path %s not valid",
+ symname.Data(),volpath.Data()));
+
+ TString symname2("CP3");
+ TString volpath2("/ALIC_1/CP_1/Cp3_1");
+ if(!gGeoManager->SetAlignableEntry(symname2.Data(),volpath2.Data()))
+ AliFatal(Form("Alignable entry %s not created. Volume path %s not valid",
+ symname2.Data(),volpath2.Data()));
+}
+
+