]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliPIPEv3.cxx
2 small overlaps in bellows corrected.
[u/mrichter/AliRoot.git] / STRUCT / AliPIPEv3.cxx
index d2db3298a2bbfab5602535bf20c5292d8473e335..6fb6a0cae8b9a3bff4c0119703d2364310af8e53 100644 (file)
@@ -27,6 +27,7 @@
 #include <TSystem.h>
 #include <TVirtualMC.h>
 #include <TGeoManager.h>
+#include <TGeoMatrix.h>
 #include <TGeoVolume.h>
 #include <TGeoTorus.h>
 #include <TGeoTube.h>
@@ -90,6 +91,8 @@ void AliPIPEv3::CreateGeometry()
     const TGeoMedium* kMedCu      =  gGeoManager->GetMedium("PIPE_CU");        
     const TGeoMedium* kMedKapton  =  gGeoManager->GetMedium("PIPE_KAPTON");        
     const TGeoMedium* kMedAco     =  gGeoManager->GetMedium("PIPE_ANTICORODAL");        
+    const TGeoMedium* kMedNEG     =  gGeoManager->GetMedium("PIPE_NEG COATING"); 
+       
 // Top volume
     TGeoVolume* top    = gGeoManager->GetVolume("ALIC");
 //
@@ -137,6 +140,7 @@ void AliPIPEv3::CreateGeometry()
 //      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;    
@@ -167,7 +171,7 @@ void AliPIPEv3::CreateGeometry()
 // 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.), 
@@ -176,9 +180,14 @@ void AliPIPEv3::CreateGeometry()
     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);
 
 /////////////////////////////////////////////
@@ -187,24 +196,26 @@ void AliPIPEv3::CreateGeometry()
     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));
@@ -360,7 +371,7 @@ void AliPIPEv3::CreateGeometry()
 //  Central beam pipe support collars
 //  LHCVC2C_0019
 //  Position at z = -46., 40., 150.
-    TGeoVolume* voCpSupC = new TGeoVolume("CpSupC", new TGeoTube(3.0, 4.0, 0.35), kMedAco);
+    TGeoVolume* voCpSupC = new TGeoVolume("CpSupC", new TGeoTube(3.051, 4.0, 0.35), kMedAco);
     voCp1->AddNode(voCpSupC, 1, new TGeoTranslation(0., 0.,  kCP1Length / 2. - 81.5));
     voCp1->AddNode(voCpSupC, 2, new TGeoTranslation(0., 0.,  kCP1Length / 2.- 191.5));
 //  Beam Pipe Protection Tube
@@ -977,8 +988,8 @@ void AliPIPEv3::CreateGeometry()
 // 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.);
@@ -1009,7 +1020,7 @@ void AliPIPEv3::CreateGeometry()
     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);
@@ -1037,7 +1048,7 @@ void AliPIPEv3::CreateGeometry()
     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.);
+    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));    
@@ -1547,7 +1558,7 @@ void AliPIPEv3::CreateGeometry()
     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.);
+    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.));
 
@@ -2383,7 +2394,7 @@ void AliPIPEv3::CreateGeometry()
       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]
@@ -2727,7 +2738,14 @@ void AliPIPEv3::CreateMaterials()
   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);
@@ -2764,12 +2782,17 @@ void AliPIPEv3::CreateMaterials()
   AliMixture(23, "KAPTON", aKapton, zKapton, dKapton, 4, wKapton);
   // Anticorodal 
   AliMixture(24, "ANTICORODAL", 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 COATING", aNEG, zNEG, dNEG, -3, wNEG);
+   
+   
    // **************** 
    //     Defines tracking media parameters. 
    //
@@ -2819,6 +2842,10 @@ void AliPIPEv3::CreateMaterials()
   //
   //   KAPTON
   AliMedium(23, "KAPTON", 23, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+
+  //
+  //   NEG
+  AliMedium(25, "NEG COATING", 25, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
 }