]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliSHILv3.cxx
Some small overlaps corrected.
[u/mrichter/AliRoot.git] / STRUCT / AliSHILv3.cxx
index c6ea36d63288963c9c39c1c489cf2b1bf221105c..f5df0c586f032cc1db2d8c53c1126e3b7f94529d 100644 (file)
@@ -189,7 +189,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 +208,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 +227,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);
@@ -303,7 +303,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,19 +319,19 @@ 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++) {
-         Double_t z    = shFaSaa1->GetZ(i);
+         Double_t zp   = shFaSaa1->GetZ(i);
          Double_t r1   = shFaSaa1->GetRmin(i);  
-         Double_t r2 = 39.5/2. + z * TMath::Tan(2. * kDegRad) - 0.01;
-         shFaSaa1->DefineSection(i, z, r1, r2);
+         Double_t r2 = 39.5/2. + zp * TMath::Tan(2. * kDegRad) - 0.01;
+         shFaSaa1->DefineSection(i, zp, r1, r2);
       }
       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 +350,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 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 +609,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.;
@@ -651,10 +651,10 @@ void AliSHILv3::CreateGeometry()
 //
 //    Inner 1.69deg line
       for (Int_t i  = 2; i < 15; i++) {
-         Double_t z    = shSaa1M->GetZ(i);
+         Double_t zp = shSaa1M->GetZ(i);
          Double_t r2 = shSaa1M->GetRmax(i);     
-         Double_t r1 = rmin + (z - 0.9) * TMath::Tan(1.69 / 2. * kDegRad) - kSec;
-         shSaa1M->DefineSection(i, z, r1, r2);
+         Double_t r1 = rmin + (zp - 0.9) * TMath::Tan(1.686 / 2. * kDegRad) - kSec;
+         shSaa1M->DefineSection(i, zp, r1, r2);
       }
 
       TGeoVolume* voSaa1M  =  new TGeoVolume("YSAA1M", shSaa1M, kMedAir);
@@ -672,15 +672,15 @@ 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;
@@ -700,7 +700,7 @@ 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;
@@ -721,10 +721,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 +732,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", 
@@ -1093,10 +1093,10 @@ void AliSHILv3::CreateGeometry()
 // Inner 1.89/2 deg line
       Double_t zref   = dzSaa2PbCompA1 + dzSaa2PbCompA2 + dzSaa2PbCompA3;
       for (Int_t i  = 4; i < 10; i++) {
-         Double_t z    = shSaa2->GetZ(i);
+         Double_t zp = shSaa2->GetZ(i);
          Double_t r2 = shSaa2->GetRmax(i);      
-         Double_t r1 = rmin + (z -  zref) * TMath::Tan(1.89 / 2. * kDegRad) - kSec;
-         shSaa2->DefineSection(i, z, r1, r2);
+         Double_t r1 = rmin + (zp -  zref) * TMath::Tan(1.89 / 2. * kDegRad) - kSec;
+         shSaa2->DefineSection(i, zp, r1, r2);
       }
 
 //
@@ -1235,7 +1235,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));
       
@@ -1284,38 +1284,50 @@ void AliSHILv3::CreateGeometry()
 //
       Float_t zoDipole = 1249.;
       
-      TGeoPcon* shYOUT2 = new TGeoPcon(0., 360., 14);
+      TGeoPcon* shYOUT21 = new TGeoPcon(0., 360., 14);
       z =  zoDipole;
-      shYOUT2->DefineSection(0, z,             rOuSaa1String,       252.);
+      shYOUT21->DefineSection(0, z,             rOuSaa1String,       375.);
 //    Start of SAA1-SAA2
       z = ziSaa1Saa2;
-      shYOUT2->DefineSection(1, z,             rOuSaa1String,       252.);
-      shYOUT2->DefineSection(2, z,             rOuSaa1Saa2Steel,    252.);
+      shYOUT21->DefineSection(1, z,             rOuSaa1String,       375.);
+      shYOUT21->DefineSection(2, z,             rOuSaa1Saa2Steel,    375.);
 //    End of SAA1-SAA2
       z = ziSaa2;
-      shYOUT2->DefineSection(3, z,             rOuSaa1Saa2Steel,    252.);
+      shYOUT21->DefineSection(3, z,             rOuSaa1Saa2Steel,    375.);
 //    SAA2
-      shYOUT2->DefineSection( 4, z,            rInSaa2StEnv1 + dSt, 252.);
+      shYOUT21->DefineSection( 4, z,            rInSaa2StEnv1 + dSt, 375.);
       z = ziSaa2 + zSaa2PbRing;
-      shYOUT2->DefineSection( 5, z,            rInSaa2StEnv1 + dSt, 252.);
+      shYOUT21->DefineSection( 5, z,            rInSaa2StEnv1 + dSt, 375.);
 //    Pb Cone
-      shYOUT2->DefineSection( 6, z,            rOuSaa2PbRingF,      252.);
+      shYOUT21->DefineSection( 6, z,            rOuSaa2PbRingF,      375.);
       rmin = rOuSaa2PbRingF + (1380. - z) * TMath::Tan(1.6 * kDegRad);
-      shYOUT2->DefineSection( 7, 1380., rmin, 252.);
-      shYOUT2->DefineSection( 8, 1380., rmin, 304.);
+      shYOUT21->DefineSection( 7, 1380., rmin, 375.);
+      shYOUT21->DefineSection( 8, 1380., rmin, 375.);
       z = ziSaa2 + zSaa2PbRing + dzSaa2PbRing;
-      shYOUT2->DefineSection( 9, z,            rOuSaa2PbRingR,      304.);
+      shYOUT21->DefineSection( 9, z,            rOuSaa2PbRingR,      375.);
 //    Straight Sections
-      shYOUT2->DefineSection(10, z,            rInSaa2StEnv1 + dSt, 460.);
+      shYOUT21->DefineSection(10, z,            rInSaa2StEnv1 + dSt, 460.);
       z = ziSaa2 + dzSaa2StEnv1;
-      shYOUT2->DefineSection(11, z,            rInSaa2StEnv1 + dSt, 460.);
-      shYOUT2->DefineSection(12, z,            rInSaa2StEnv2 + dSt, 460.);
+      shYOUT21->DefineSection(11, z,            rInSaa2StEnv1 + dSt, 460.);
+      shYOUT21->DefineSection(12, z,            rInSaa2StEnv2 + dSt, 460.);
       z += dzSaa2StEnv2;
-      shYOUT2->DefineSection(13, z,            rInSaa2StEnv2 + dSt, 460.);
+      shYOUT21->DefineSection(13, z,            rInSaa2StEnv2 + dSt, 460.);
+            
+      InvertPcon(shYOUT21);
+      shYOUT21->SetName("shYOUT21");
+
+      TGeoBBox* shYOUT22 = new TGeoBBox(460. , 200., 65.);
+      shYOUT22->SetName("shYOUT22");
+      
+      TGeoTranslation* tYOUT22 = new TGeoTranslation(0., -310. - 200., -zcFilter);
+      tYOUT22->SetName("tYOUT22");
+      tYOUT22->RegisterYourself();
+      
+
+      TGeoCompositeShape* shYOUT2 = new TGeoCompositeShape("shYOUT2", "shYOUT21-shYOUT22:tYOUT22");
       
-      InvertPcon(shYOUT2);
       TGeoVolume* voYOUT2 = new TGeoVolume("YOUT2", shYOUT2, kMedAirMu);
-      voYOUT2->SetVisibility(0);
+      voYOUT2->SetVisibility(1);
       voYOUT2->AddNode(voMuonFilter, 1, new TGeoCombiTrans(0., dzMuonFilter * TMath::Tan(alhc * kDegrad), -zcFilter, rotxzlhc));
       top->AddNode(voYOUT2, 1, gGeoIdentity);
 }