]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliSHILv3.cxx
ATO-98 - forgotten commit - Getter for regstered correction - to enable change of...
[u/mrichter/AliRoot.git] / STRUCT / AliSHILv3.cxx
index aad0504be49db8b917aa69e5bf717a1708f12f62..68ec4e7556df89c3e66e900da487e080a63ee638 100644 (file)
@@ -91,6 +91,9 @@ void AliSHILv3::CreateGeometry()
     TGeoMedium* kMedPbSh    = gGeoManager->GetMedium("SHIL_PB_C2");
 //
     TGeoMedium* kMedConcSh  = gGeoManager->GetMedium("SHIL_CC_C2");
+//
+    TGeoMedium* kMedCastiron   = gGeoManager->GetMedium("SHIL_CAST_IRON0");
+    TGeoMedium* kMedCastironSh = gGeoManager->GetMedium("SHIL_CAST_IRON2");
 //
     const Float_t kDegRad = TMath::Pi() / 180.;
     const Float_t kAngle02   = TMath::Tan( 2.00   * kDegRad);   
@@ -189,7 +192,7 @@ void AliSHILv3::CreateGeometry()
 //    FA W-Ring 2                //
 //    Drawing ALIP2A__0220       //
 ///////////////////////////////////
-      const Float_t kFaWring2Rinner  = 15.40;
+      const Float_t kFaWring2Rinner  = 15.41;
       const Float_t kFaWring2Router  = 18.40;
       const Float_t kFaWring2HWidth  =  3.75;
       const Float_t kFaWring2Cutoffx =  3.35;
@@ -208,7 +211,7 @@ void AliSHILv3::CreateGeometry()
 //    FA W-Ring 3                //
 //    Drawing ALIP2A__0219       //
 ///////////////////////////////////
-      const Float_t kFaWring3Rinner  = 15.40;
+      const Float_t kFaWring3Rinner  = 15.41;
       const Float_t kFaWring3Router  = 18.40;
       const Float_t kFaWring3HWidth  =  3.75;
       const Float_t kFaWring3Cutoffx =  3.35;
@@ -227,7 +230,7 @@ void AliSHILv3::CreateGeometry()
 //    FA W-Ring 5                //
 //    Drawing ALIP2A__0221       //
 ///////////////////////////////////
-      const Float_t kFaWring5Rinner = 15.40;
+      const Float_t kFaWring5Rinner = 15.41;
       const Float_t kFaWring5Router = 18.67;
       const Float_t kFaWring5HWidth =  1.08;
       TGeoVolume* voFaWring5    = new TGeoVolume("YFA_WRING5", new TGeoTube(kFaWring5Rinner, kFaWring5Router, kFaWring5HWidth), kMedNiW);
@@ -242,25 +245,25 @@ void AliSHILv3::CreateGeometry()
       dz = 0.;
       
       dz +=  kFaWring2HWidth;
-      asFaExtraShield->AddNode(voFaWring2,    1, new TGeoCombiTrans(0., 0., dz, rot090));
-      asFaExtraShield->AddNode(voFaWring2,    2, new TGeoCombiTrans(0., 0., dz, rot270));
+      asFaExtraShield->AddNode(voFaWring2,    1, new TGeoCombiTrans(0., 0., dz, rot180));
+      asFaExtraShield->AddNode(voFaWring2,    2, new TGeoCombiTrans(0., 0., dz, rot000));
       dz +=   kFaWring2HWidth;
       dz +=   kFaDWrings;
       dz +=   kFaWring3HWidth;
-      asFaExtraShield->AddNode(voFaWring3,    1, new TGeoCombiTrans(0., 0., dz, rot000));
-      asFaExtraShield->AddNode(voFaWring3,    2, new TGeoCombiTrans(0., 0., dz, rot180));
+      asFaExtraShield->AddNode(voFaWring3,    1, new TGeoCombiTrans(0., 0., dz, rot090));
+      asFaExtraShield->AddNode(voFaWring3,    2, new TGeoCombiTrans(0., 0., dz, rot270));
       dz +=   kFaWring3HWidth;   
       dz +=   kFaWring5HWidth;   
       asFaExtraShield->AddNode(voFaWring5,    1, new TGeoTranslation(0., 0., dz));
       dz +=   kFaWring5HWidth;   
       dz +=   kFaWring3HWidth;   
-      asFaExtraShield->AddNode(voFaWring3,    3, new TGeoCombiTrans(0., 0., dz, rot090));
-      asFaExtraShield->AddNode(voFaWring3,    4, new TGeoCombiTrans(0., 0., dz, rot270));
+      asFaExtraShield->AddNode(voFaWring3,    3, new TGeoCombiTrans(0., 0., dz, rot180));
+      asFaExtraShield->AddNode(voFaWring3,    4, new TGeoCombiTrans(0., 0., dz, rot000));
       dz +=   kFaWring3HWidth;   
       dz +=   kFaDWrings;
       dz +=   kFaWring2HWidth;
-      asFaExtraShield->AddNode(voFaWring2,    3, new TGeoCombiTrans(0., 0., dz, rot000));
-      asFaExtraShield->AddNode(voFaWring2,    4, new TGeoCombiTrans(0., 0., dz, rot180));
+      asFaExtraShield->AddNode(voFaWring2,    3, new TGeoCombiTrans(0., 0., dz, rot090));
+      asFaExtraShield->AddNode(voFaWring2,    4, new TGeoCombiTrans(0., 0., dz, rot270));
       dz +=   kFaWring2HWidth;
 
       
@@ -303,7 +306,7 @@ void AliSHILv3::CreateGeometry()
       TGeoPcon* shFaSaa1 = new TGeoPcon(0., 360., 8);
       z = 0;
 // Flange FA side      
-      shFaSaa1->DefineSection( 0, z, rInFaSaa1F1, rOuFaSaa1F1);
+      shFaSaa1->DefineSection( 0, z, rInFaSaa1F1, rOuFaSaa1F1 - 0.01);
       z += dzFaSaa1F1;
       shFaSaa1->DefineSection( 1, z, rInFaSaa1F1, 40.0);
       shFaSaa1->DefineSection( 2, z, rInFaSaa1S1, 40.0);
@@ -319,7 +322,7 @@ void AliSHILv3::CreateGeometry()
       shFaSaa1->DefineSection( 6, z, rInFaSaa1F2, 40.0);
 // Flange SAA1 side
       z = dzFaSaa1;
-      shFaSaa1->DefineSection( 7, z, rInFaSaa1F2, rOuFaSaa1E);
+      shFaSaa1->DefineSection( 7, z, rInFaSaa1F2, rOuFaSaa1E - 0.01);
 
 // Outer 2 deg line
       for (Int_t i  = 1; i < 7; i++) {
@@ -331,7 +334,7 @@ void AliSHILv3::CreateGeometry()
       TGeoVolume* voFaSaa1 = new TGeoVolume("YFASAA1", shFaSaa1, kMedNiWsh);
 //
 // Outer region with lower transport cuts
-      TGeoCone* shFaSaa1O   = new TGeoCone(dzFaSaa1/2., rOuFaSaa1F1 - 3.5, rOuFaSaa1F1, rOuFaSaa1E - 3.5, rOuFaSaa1E);
+      TGeoCone* shFaSaa1O   = new TGeoCone(dzFaSaa1/2., rOuFaSaa1F1 - 3.5, rOuFaSaa1F1 - 0.01, rOuFaSaa1E - 3.5, rOuFaSaa1E - 0.01);
       TGeoVolume* voFaSaa1O = new TGeoVolume("YFASAA1O", shFaSaa1O, kMedNiW);
       voFaSaa1->AddNode(voFaSaa1O, 1, new TGeoTranslation(0., 0., dzFaSaa1/2.));
       
@@ -350,19 +353,19 @@ void AliSHILv3::CreateGeometry()
 // Radii
 // 1
       Float_t rOuSaa1StEnv1 = 40.4/2.;
-      Float_t rInSaa1StEnv1 = rOuSaa1StEnv1 - dSt;
+      Float_t rInSaa1StEnv1 = rOuSaa1StEnv1 - dSt - 0.05;
 // 2  
       Float_t rInSaa1StEnv2 = 41.7/2.;
-      Float_t rOuSaa1StEnv2 = rInSaa1StEnv2 + dSt / TMath::Cos(2.0 * kDegRad);
+      Float_t rOuSaa1StEnv2 = rInSaa1StEnv2 + dSt / TMath::Cos(2.0 * kDegRad) - 0.05;
 // 3         
-      Float_t rOuSaa1StEnv3 = 57.6/2.;
-      Float_t rInSaa1StEnv3 = rOuSaa1StEnv3 - dSt;
+      Float_t rOuSaa1StEnv3 = 57.6/2.; 
+      Float_t rInSaa1StEnv3 = rOuSaa1StEnv3 - dSt + 0.05;
 // 4
       Float_t rInSaa1StEnv4 = 63.4/2.;
-      Float_t rOuSaa1StEnv4 = rInSaa1StEnv4 + dSt / TMath::Cos(1.6 * kDegRad);
+      Float_t rOuSaa1StEnv4 = rInSaa1StEnv4 + dSt / TMath::Cos(1.6 * kDegRad) - 0.05;
 // end         
       Float_t rInSaa1StEnv5 = 74.28/2.;
-      Float_t rOuSaa1StEnv5 = rInSaa1StEnv5 + dSt / TMath::Cos(1.6 * kDegRad);
+      Float_t rOuSaa1StEnv5 = rInSaa1StEnv5 + dSt / TMath::Cos(1.6 * kDegRad) - 0.05;
 // Relative starting position
       Float_t zSaa1StEnvS = 3.;
       
@@ -609,7 +612,7 @@ void AliSHILv3::CreateGeometry()
       Float_t dzSaa1 = 659.2;
       //
       TGeoPcon* shSaa1M  = new TGeoPcon(0., 360., 20);
-      Float_t kSec = 0.01; // security distance to avoid trivial extrusions
+      Float_t kSec = 0.2; // security distance to avoid trivial extrusions
       Float_t rmin = rInSaa1InnerTube - dSaa1InnerTube - kSec;
       rmax = rOuSaa1InnerTube - dSaa1InnerTube - kSec;
       z = 0.;
@@ -641,19 +644,19 @@ void AliSHILv3::CreateGeometry()
       shSaa1M->DefineSection(14, z, 0.,    rmaxSaa1);
       shSaa1M->DefineSection(15, z, rmax,  rmaxSaa1);
       z = zSaa1StRing;     
-      shSaa1M->DefineSection(16, z, rmax, rOuSaa1String);
+      shSaa1M->DefineSection(16, z, rmax + 0.4, rOuSaa1String);
       z += dzSaa1PbCompF1;
-      shSaa1M->DefineSection(17, z, rmax, rOuSaa1String);
-      shSaa1M->DefineSection(18, z, rmax, rOuSaa1PbCompF3);
+      shSaa1M->DefineSection(17, z, rmax + 0.4, rOuSaa1String);
+      shSaa1M->DefineSection(18, z, rmax + 0.4, rOuSaa1PbCompF3);
       z += dzSaa1PbCompF2;
-      shSaa1M->DefineSection(19, z, rmax, rOuSaa1PbCompF3);
+      shSaa1M->DefineSection(19, z, rmax + 0.4, rOuSaa1PbCompF3);
 
 //
 //    Inner 1.69deg line
       for (Int_t i  = 2; i < 15; i++) {
          Double_t zp = shSaa1M->GetZ(i);
          Double_t r2 = shSaa1M->GetRmax(i);     
-         Double_t r1 = rmin + (zp - 0.9) * TMath::Tan(1.69 / 2. * kDegRad) - kSec;
+         Double_t r1 = rmin + (zp - 0.9) * TMath::Tan(1.686 / 2. * kDegRad) - kSec;
          shSaa1M->DefineSection(i, zp, r1, r2);
       }
 
@@ -672,19 +675,19 @@ void AliSHILv3::CreateGeometry()
 ///////////////////////////////////
       Float_t saa1Wring1Width  =  5.85;
       TGeoPcon* shSaa1Wring1    = new TGeoPcon(0., 360., 2);
-      shSaa1Wring1->DefineSection(0, 0.00           , 20.30, 23.175);
-      shSaa1Wring1->DefineSection(1, saa1Wring1Width, 20.30, 23.400);
+      shSaa1Wring1->DefineSection(0, 0.00           , 20.31, 23.175);
+      shSaa1Wring1->DefineSection(1, saa1Wring1Width, 20.31, 23.400);
       TGeoVolume* voSaa1Wring1  =  new TGeoVolume("YSAA1_WRING1", shSaa1Wring1, kMedNiW);
 
 ///////////////////////////////////
 //    SAA1 W-Ring 2              //
 //    Drawing ALIP2A__0055       //
 ///////////////////////////////////
-      Float_t saa1Wring2Rinner  = 20.30;
+      Float_t saa1Wring2Rinner  = 20.31;
       Float_t saa1Wring2Router  = 23.40;
       Float_t saa1Wring2HWidth  =  3.75;
-      Float_t saa1Wring2Cutoffx =  4.45;
-      Float_t saa1Wring2Cutoffy =  4.45;
+      Float_t saa1Wring2Cutoffx =  4.9;
+      Float_t saa1Wring2Cutoffy =  4.9;
       TGeoTubeSeg* shSaa1Wring2a  = new TGeoTubeSeg(saa1Wring2Rinner, saa1Wring2Router, saa1Wring2HWidth, 0., 90.);
       shSaa1Wring2a->SetName("shSaa1Wring2a");
       TGeoBBox* shSaa1Wring2b  = new TGeoBBox(saa1Wring2Router / 2., saa1Wring2Router / 2., saa1Wring2HWidth);
@@ -700,11 +703,11 @@ void AliSHILv3::CreateGeometry()
 //    Drawing ALIP2A__0216       //
 ///////////////////////////////////
 
-      Float_t saa1Wring3Rinner  = 20.30;
+      Float_t saa1Wring3Rinner  = 20.31;
       Float_t saa1Wring3Router  = 23.40;
       Float_t saa1Wring3HWidth  =  3.75;
-      Float_t saa1Wring3Cutoffx =  4.50;
-      Float_t saa1Wring3Cutoffy =  4.40;
+      Float_t saa1Wring3Cutoffx =  4.80;
+      Float_t saa1Wring3Cutoffy =  4.80;
       TGeoTubeSeg* shSaa1Wring3a  = new TGeoTubeSeg(saa1Wring3Rinner, saa1Wring3Router, saa1Wring3HWidth, 0., 90.);
       shSaa1Wring3a->SetName("shSaa1Wring3a");
       TGeoBBox* shSaa1Wring3b  = new TGeoBBox(saa1Wring3Router / 2., saa1Wring3Router / 2., saa1Wring3HWidth);
@@ -721,10 +724,10 @@ void AliSHILv3::CreateGeometry()
 ///////////////////////////////////
       Float_t saa1Wring4Width  =  5.85;
       TGeoPcon* shSaa1Wring4  = new TGeoPcon(0., 360., 5);
-      shSaa1Wring4->DefineSection(0, 0.00, 20.30, 23.40);
-      shSaa1Wring4->DefineSection(1, 1.00, 20.30, 23.40);
-      shSaa1Wring4->DefineSection(2, 1.00, 20.30, 24.50);      
-      shSaa1Wring4->DefineSection(3, 4.85, 20.30, 24.80);
+      shSaa1Wring4->DefineSection(0, 0.00, 20.31, 23.40);
+      shSaa1Wring4->DefineSection(1, 1.00, 20.31, 23.40);
+      shSaa1Wring4->DefineSection(2, 1.00, 20.31, 24.50);      
+      shSaa1Wring4->DefineSection(3, 4.85, 20.31, 24.80);
       shSaa1Wring4->DefineSection(4, 5.85, 24.10, 24.80);
       TGeoVolume* voSaa1Wring4  =  new TGeoVolume("YSAA1_WRING4", shSaa1Wring4, kMedNiW);
 
@@ -732,7 +735,7 @@ void AliSHILv3::CreateGeometry()
 //    SAA1 W-Ring 5              //
 //    Drawing ALIP2A__0218       //
 ///////////////////////////////////
-      Float_t saa1Wring5Rinner = 20.30;
+      Float_t saa1Wring5Rinner = 20.31;
       Float_t saa1Wring5Router = 23.40;
       Float_t saa1Wring5HWidth =  0.85;
       TGeoVolume* voSaa1Wring5    = new TGeoVolume("YSAA1_WRING5", 
@@ -1121,9 +1124,7 @@ void AliSHILv3::CreateGeometry()
 //    SAA3 Outer Shape           //
 //    Drawing ALIP2A__0288       //
 ///////////////////////////////////
-      
       TGeoVolumeAssembly* voSaa3  = new TGeoVolumeAssembly("YSAA3");
-      
 ///////////////////////////////////
 //    SAA3 Concrete cone         //
 //    Drawing ALIP2A__0284       //
@@ -1142,7 +1143,7 @@ void AliSHILv3::CreateGeometry()
       TGeoCompositeShape* shSaa3CCBlock = new TGeoCompositeShape("Saa3CCBlock", "Saa3CCBlockO-Saa3InnerRegion");
       TGeoVolume* voSaa3CCBlock         = new TGeoVolume("YSAA3CCBlock", shSaa3CCBlock, kMedConcSh);     
 
-
+      
       voSaa3->AddNode(voSaa3CCBlock, 1, gGeoIdentity);
       
 //    Plate 1: 240 cm x 80 cm x 100 cm (x 2)
@@ -1186,7 +1187,7 @@ void AliSHILv3::CreateGeometry()
       TGeoCompositeShape* shMuonFilter = new TGeoCompositeShape("MuonFilter", "FilterO-FilterI:trFilter");
       //
       // !!!!! Needs to be inclined
-      TGeoVolume* voMuonFilter = new TGeoVolume("YMuonFilter", shMuonFilter, kMedSteel);
+      TGeoVolume* voMuonFilter = new TGeoVolume("YMuonFilter", shMuonFilter, kMedCastiron);
 
       // Inner part with higher transport cuts
       Float_t dzMuonFilterH = 50.;
@@ -1195,7 +1196,7 @@ void AliSHILv3::CreateGeometry()
       TGeoTube*   shMuonFilterIH  = new TGeoTube(0., 50., dzMuonFilterH + 5.);
       shMuonFilterIH->SetName("FilterIH");
       TGeoCompositeShape* shMuonFilterH = new TGeoCompositeShape("MuonFilterH", "FilterOH-FilterIH:trFilter");
-      TGeoVolume* voMuonFilterH = new TGeoVolume("YMuonFilterH", shMuonFilterH, kMedSteelSh);
+      TGeoVolume* voMuonFilterH = new TGeoVolume("YMuonFilterH", shMuonFilterH, kMedCastironSh);
       voMuonFilter->AddNode(voMuonFilterH, 1, gGeoIdentity);
       
 //  
@@ -1235,7 +1236,7 @@ void AliSHILv3::CreateGeometry()
       voSaa->AddNode(voFaWTail,    1, new TGeoTranslation(0., 0., ziFaWTail));
       voSaa->AddNode(voFaSaa1,     1, new TGeoTranslation(0., 0., ziFaSaa1));
       voSaa->AddNode(voSaa1 ,      1, new TGeoTranslation(0., 0., ziSaa1));
-      voSaa->AddNode(voSaa1Saa2,   1, new TGeoTranslation(0., 0., ziSaa1Saa2));
+      voSaa->AddNode(voSaa1Saa2,   1, new TGeoTranslation(0., 0., ziSaa1Saa2 - 0.1));
       voSaa->AddNode(voSaa2 ,      1, new TGeoTranslation(0., 0., ziSaa2));
       voSaa->AddNode(voSaa3,       1, new TGeoTranslation(0., 0., zcSaa3));
       
@@ -1277,7 +1278,7 @@ void AliSHILv3::CreateGeometry()
       voYOUT1->SetVisibility(0);
 
       voYOUT1->AddNode(asSaa1ExtraShield, 1, new TGeoCombiTrans(0., 0., - (100.7 + 62.2 + saa1ExtraShieldL / 2. + ziFaWTail), rotxz));
-      voYOUT1->AddNode(asFaExtraShield,   1, new TGeoCombiTrans(0., 0., - (16.41 + kFaWring2HWidth + ziFaWTail), rotxz));
+      voYOUT1->AddNode(asFaExtraShield,   1, new TGeoCombiTrans(0., 0., - (16.41 - 1.46 + kFaWring2HWidth + ziFaWTail), rotxz));
       top->AddNode(voYOUT1, 1, gGeoIdentity);
 //
 //  Mother volume for muon stations 4+5 and trigger stations.
@@ -1316,7 +1317,7 @@ void AliSHILv3::CreateGeometry()
       InvertPcon(shYOUT21);
       shYOUT21->SetName("shYOUT21");
 
-      TGeoBBox* shYOUT22 = new TGeoBBox(460. , 200., 65.);
+      TGeoBBox* shYOUT22 = new TGeoBBox(460. , 200., 65. - 1.5);
       shYOUT22->SetName("shYOUT22");
       
       TGeoTranslation* tYOUT22 = new TGeoTranslation(0., -310. - 200., -zcFilter);
@@ -1382,7 +1383,7 @@ void AliSHILv3::InvertPcon(TGeoPcon* pcon)
     delete[] rmax;
 }
 
-TGeoPcon* AliSHILv3::MakeShapeFromTemplate(TGeoPcon* pcon, Float_t drMin, Float_t drMax)
+TGeoPcon* AliSHILv3::MakeShapeFromTemplate(const TGeoPcon* pcon, Float_t drMin, Float_t drMax)
 {
     // 
     // Returns new shape based on a template changing