]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliSHILv3.cxx
Add 2015 cosmic classes
[u/mrichter/AliRoot.git] / STRUCT / AliSHILv3.cxx
index 22bd528a12685aae087563f59b3c32fe4ddac558..aa6f539b988fa6e1f2ab0c8a7d3b4309a13ad9da 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);   
@@ -139,7 +142,7 @@ void AliSHILv3::CreateGeometry()
 //    Outer radius at the end of the tail 
       Float_t rOuFaWTailE  = 31.6/2.;
 //    Total length of the tail
-      Float_t dzFaWTail    = 70.7;
+      const Float_t dzFaWTail    = 70.7;
 
       TGeoPcon* shFaWTail = new TGeoPcon(0., 360., 10);
       z    = 0.;
@@ -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;
 
       
@@ -295,7 +298,7 @@ void AliSHILv3::CreateGeometry()
 // Inner radius of flange FA side
       Float_t rInFaSaa1F2 = 25.2/2.;
 // Length of joint
-      Float_t dzFaSaa1    = 34.8;
+      const Float_t dzFaSaa1    = 34.8;
 // Outer Radius at the end of the joint
       Float_t rOuFaSaa1E  = 41.93/2.;
       
@@ -606,7 +609,7 @@ void AliSHILv3::CreateGeometry()
 //    Drawing ALIP2A__0107       //
 ///////////////////////////////////
       // Total length 
-      Float_t dzSaa1 = 659.2;
+      const Float_t dzSaa1 = 659.2;
       //
       TGeoPcon* shSaa1M  = new TGeoPcon(0., 360., 20);
       Float_t kSec = 0.2; // security distance to avoid trivial extrusions
@@ -683,8 +686,8 @@ void AliSHILv3::CreateGeometry()
       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);
@@ -704,7 +707,7 @@ void AliSHILv3::CreateGeometry()
       Float_t saa1Wring3Router  = 23.40;
       Float_t saa1Wring3HWidth  =  3.75;
       Float_t saa1Wring3Cutoffx =  4.50;
-      Float_t saa1Wring3Cutoffy =  4.40;
+      Float_t saa1Wring3Cutoffy =  4.50;
       TGeoTubeSeg* shSaa1Wring3a  = new TGeoTubeSeg(saa1Wring3Rinner, saa1Wring3Router, saa1Wring3HWidth, 0., 90.);
       shSaa1Wring3a->SetName("shSaa1Wring3a");
       TGeoBBox* shSaa1Wring3b  = new TGeoBBox(saa1Wring3Router / 2., saa1Wring3Router / 2., saa1Wring3HWidth);
@@ -804,7 +807,7 @@ void AliSHILv3::CreateGeometry()
       Float_t dzSaa1Saa2F2     =  3.1;
       Float_t rInSaa1Saa2F2    = 54.1/2.;
 // Total length
-      Float_t dzSaa1Saa2       = 34.9;
+      const Float_t dzSaa1Saa2       = 34.9;
       
       
       TGeoPcon* shSaa1Saa2Pb = new TGeoPcon(0., 360., 8);
@@ -912,7 +915,7 @@ void AliSHILv3::CreateGeometry()
       tanAlpha = TMath::Tan(1.89 / 2. * kDegRad);
       TGeoPcon* shSaa2PbComp  = new TGeoPcon(0., 360., 16);
       // Total length 
-      Float_t dzSaa2PbComp    = 512.;
+      const Float_t dzSaa2PbComp    = 512.;
       // Length of 1st bellow recess
       Float_t dzSaa2PbCompB1  =  24.;
       // Length of 2nd bellow recess
@@ -1121,61 +1124,63 @@ void AliSHILv3::CreateGeometry()
 //    SAA3 Outer Shape           //
 //    Drawing ALIP2A__0288       //
 ///////////////////////////////////
-      
       TGeoVolumeAssembly* voSaa3  = new TGeoVolumeAssembly("YSAA3");
-      
 ///////////////////////////////////
 //    SAA3 Concrete cone         //
 //    Drawing ALIP2A__0284       //
 ///////////////////////////////////
 //    Block
-      TGeoBBox* shSaa3CCBlockO   = new TGeoBBox(80./2., 80./2., 100./2.);
+      TGeoBBox* shSaa3CCBlockO   = new TGeoBBox(80./2., 80./2., 80./2.);  // modified by ernesto.calvo@pucp.edu.pe
       shSaa3CCBlockO->SetName("Saa3CCBlockO");
 
       TGeoPcon* shSaa3InnerRegion  = new TGeoPcon(0., 360., 4);
-      shSaa3InnerRegion->DefineSection( 0, -60.0, 0., 27.1);
-      shSaa3InnerRegion->DefineSection( 1, -23.0, 0., 27.1);
-      shSaa3InnerRegion->DefineSection( 2,  29.1, 0., 12.3);
-      shSaa3InnerRegion->DefineSection( 3,  60.0, 0., 12.3);
+      // + 10.0 cm // ecv
+      shSaa3InnerRegion->DefineSection( 0, -50.0, 0., 27.1);
+      shSaa3InnerRegion->DefineSection( 1, -13.0, 0., 27.1);
+      shSaa3InnerRegion->DefineSection( 2,  39.1, 0., 12.3);
+      shSaa3InnerRegion->DefineSection( 3,  80.0, 0., 12.3);
       shSaa3InnerRegion->SetName("Saa3InnerRegion");
 
       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)
+//    Plate 1: 240 cm x 80 cm x  80 cm (x 2)
       TGeoVolume* voSaa3SteelPlate1  =  new TGeoVolume("YSAA3SteelPlate1", 
-                                                      new TGeoBBox(240./2., 80./2., 100./2.),
+                                                      new TGeoBBox(240./2., 80./2.,  80./2.),
                                                       kMedSteelSh);
       TGeoVolume* voSaa3SteelPlate11 =  new TGeoVolume("YSAA3SteelPlate11", 
                                                       new TGeoBBox(240./2., 80./2., 10./2.),
                                                       kMedSteel);
-      voSaa3SteelPlate1->AddNode(voSaa3SteelPlate11, 1, new TGeoTranslation(0., 0., -45.));
+      voSaa3SteelPlate11->SetVisContainers(kTRUE);
+      voSaa3SteelPlate1 ->SetVisibility(kTRUE);
+      voSaa3SteelPlate1->AddNode(voSaa3SteelPlate11, 1, new TGeoTranslation(0., 0., -35.));
       voSaa3->AddNode(voSaa3SteelPlate1, 1, new TGeoTranslation(0., +80., 0.));
       voSaa3->AddNode(voSaa3SteelPlate1, 2, new TGeoTranslation(0., -80., 0.));
 
 
-//    Plate 2:  80 cm x 80 cm x 100 cm (x 2)
+//    Plate 2:  80 cm x 80 cm x  80 cm (x 2)
       TGeoVolume* voSaa3SteelPlate2  =  new TGeoVolume("YSAA3SteelPlate2", 
-                                                      new TGeoBBox( 80./2., 80./2., 100./2.),
+                                                      new TGeoBBox( 80./2., 80./2.,  80./2.),
                                                       kMedSteelSh);
       TGeoVolume* voSaa3SteelPlate21 =  new TGeoVolume("YSAA3SteelPlate21", 
                                                       new TGeoBBox( 80./2., 80./2., 10./2.),
                                                       kMedSteel);
-      voSaa3SteelPlate2->AddNode(voSaa3SteelPlate21, 1, new TGeoTranslation(0., 0., -45.));
-
+      voSaa3SteelPlate2->AddNode(voSaa3SteelPlate21, 1, new TGeoTranslation(0., 0., -35.));
       voSaa3->AddNode(voSaa3SteelPlate2, 1, new TGeoTranslation(+80, 0., 0.));
       voSaa3->AddNode(voSaa3SteelPlate2, 2, new TGeoTranslation(-80, 0., 0.));
 
 
+
+
 ///////////////////////////////////
 //    Muon Filter                //
 //    Drawing ALIP2A__0105       //
 ///////////////////////////////////
       // Half Length 
-      Float_t dzMuonFilter = 60.;
+      const Float_t dzMuonFilter = 60.;
       
       TGeoBBox*   shMuonFilterO  = new TGeoBBox(550./2., 620./2., dzMuonFilter);
       shMuonFilterO->SetName("FilterO");
@@ -1186,7 +1191,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,53 +1200,56 @@ 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);
       
 //  
       TGeoVolumeAssembly* voSaa  = new TGeoVolumeAssembly("YSAA");
 //
-//    
-//    
-//
-//
 //    Starting position of the FA Flange/Tail 
-      Float_t ziFaWTail   = 499.0;
+      const Float_t ziFaWTail   = 499.0;
 //    End of the FA Flange/Tail
-      Float_t zoFaWTail   = ziFaWTail + dzFaWTail;
+      const Float_t zoFaWTail   = ziFaWTail + dzFaWTail;
 //    Starting position of the FA/SAA1 Joint (2.8 cm overlap with tail)
-      Float_t ozFaSaa1    = 2.8;
-      Float_t ziFaSaa1    = zoFaWTail - ozFaSaa1;
+      const Float_t ozFaSaa1    = 2.8;
+      const Float_t ziFaSaa1    = zoFaWTail - ozFaSaa1;
 //    End of the FA/SAA1 Joint
-      Float_t zoFaSaa1    = ziFaSaa1 +  dzFaSaa1;
+      const Float_t zoFaSaa1    = ziFaSaa1 +  dzFaSaa1;
 //    Starting position of SAA1 (2.0 cm overlap with joint)     
-      Float_t ozSaa1      = 2.;
-      Float_t ziSaa1      = zoFaSaa1 - ozSaa1;
+      const Float_t ozSaa1      = 2.;
+      const Float_t ziSaa1      = zoFaSaa1 - ozSaa1;
 //    End of SAA1
-      Float_t zoSaa1      = ziSaa1 + dzSaa1;
+      const Float_t zoSaa1      = ziSaa1 + dzSaa1;
 //    Starting position of SAA1/SAA2 Joint (1.95 cm overlap with SAA1)
-      Float_t ziSaa1Saa2  = zoSaa1 - 1.95;
+      const Float_t ziSaa1Saa2  = zoSaa1 - 1.95;
 //    End of SAA1/SAA2 Joint
-      Float_t zoSaa1Saa2  = ziSaa1Saa2 + dzSaa1Saa2;
+      const Float_t zoSaa1Saa2  = ziSaa1Saa2 + dzSaa1Saa2;
 //    Starting position of SAA2 (3.1 cm overlap with the joint)
-      Float_t ziSaa2      = zoSaa1Saa2 - 3.1;
+      const Float_t ziSaa2      = zoSaa1Saa2 - 3.1;
 //    End of SAA2
-      Float_t zoSaa2      = ziSaa2 + dzSaa2PbComp;
+      const Float_t zoSaa2      = ziSaa2 + dzSaa2PbComp;
 //    Position of SAA3
-      Float_t zcSaa3      = zoSaa2 + 50.;
+      const Float_t zcSaa3      = zoSaa2 + 40.; // ecv (put the CC block 5cm closer to the Wall)  // <--cancell that!! (cancelled)
 //    Position of the Muon Filter
-      Float_t zcFilter    = 1465.9 + dzMuonFilter;
+      const Float_t zcFilter    = 1465.9 + dzMuonFilter;
 
       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 - 0.1));
       voSaa->AddNode(voSaa2 ,      1, new TGeoTranslation(0., 0., ziSaa2));
+
+//
+//    Add Saa3 to Saa and Saa to top volume
+//
       voSaa->AddNode(voSaa3,       1, new TGeoTranslation(0., 0., zcSaa3));
       
 
       TGeoRotation* rotxz  = new TGeoRotation("rotxz",   90.,   0., 90.,  90., 180., 0.);
       top->AddNode(voSaa, 1, new TGeoCombiTrans(0., 0., 0., rotxz));
+
+
+
 //
 //  Mother volume for muon stations 1+2 and shielding material placed between the quadrants
 //
@@ -1277,7 +1285,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 +1324,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 +1390,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