]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliSHILv3.cxx
Updates to new TOF offline calibration schema
[u/mrichter/AliRoot.git] / STRUCT / AliSHILv3.cxx
index 7b33c96843775327f9cad3f801fb8b9266001f29..e4d04cab7f9c68f85c12b92bdf3d631e46992cf9 100644 (file)
@@ -13,7 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/* $Id $ */
+/* $Id$ */
 
 //-------------------------------------------------------------------------
 // The small angle absorber SAA (beam shield)
@@ -53,9 +53,6 @@ AliSHILv3::AliSHILv3(const char *name, const char *title)
   //
   // Standard constructor for muon shield
   //
-  SetMarkerColor(7);
-  SetMarkerStyle(2);
-  SetMarkerSize(0.4);
 }
  
 //_____________________________________________________________________________
@@ -69,28 +66,31 @@ void AliSHILv3::CreateGeometry()
 // The top volume
 //
     TGeoVolume* top = gGeoManager->GetVolume("ALIC");
-    
-//
-// Translations
-//
-    TGeoTranslation* vec0 = new TGeoTranslation(0., 0., 0.);
 //  Rotations
     TGeoRotation* rot000 = new TGeoRotation("rot000",  90.,   0., 90.,  90., 0., 0.);
     TGeoRotation* rot090 = new TGeoRotation("rot090",  90.,  90., 90., 180., 0., 0.);
     TGeoRotation* rot180 = new TGeoRotation("rot180",  90., 180., 90., 270., 0., 0.);
     TGeoRotation* rot270 = new TGeoRotation("rot270",  90., 270., 90.,   0., 0., 0.);
+    Float_t alhc = 0.794;
+    TGeoRotation* rotxzlhc   = new TGeoRotation("rotxzlhc", 0.,  -alhc, 0.);
+    TGeoRotation* rotlhc     = new TGeoRotation("rotlhc",   0.,   alhc, 0.);
+
 //
 // Media
 //
     TGeoMedium* kMedNiW     = gGeoManager->GetMedium("SHIL_Ni/W0");
     TGeoMedium* kMedNiWsh   = gGeoManager->GetMedium("SHIL_Ni/W3");
+//
     TGeoMedium* kMedSteel   = gGeoManager->GetMedium("SHIL_ST_C0");
     TGeoMedium* kMedSteelSh = gGeoManager->GetMedium("SHIL_ST_C3");
+//
     TGeoMedium* kMedAir     = gGeoManager->GetMedium("SHIL_AIR_C0");
     TGeoMedium* kMedAirMu   = gGeoManager->GetMedium("SHIL_AIR_MUON");
+//
     TGeoMedium* kMedPb      = gGeoManager->GetMedium("SHIL_PB_C0");
     TGeoMedium* kMedPbSh    = gGeoManager->GetMedium("SHIL_PB_C2");
-    TGeoMedium* kMedConc    = gGeoManager->GetMedium("SHIL_CC_C0");
+//
+    TGeoMedium* kMedConcSh  = gGeoManager->GetMedium("SHIL_CC_C2");
 //
     const Float_t kDegRad = TMath::Pi() / 180.;
     const Float_t kAngle02   = TMath::Tan( 2.00   * kDegRad);   
@@ -177,7 +177,7 @@ void AliSHILv3::CreateGeometry()
       z = dzFaWTail;
       shFaWTailI->DefineSection(3, z, rInFaWTailS,  rInFaWTailS + dr);
       TGeoVolume* voFaWTailI = new TGeoVolume("YFaWTailI", shFaWTailI, kMedNiWsh);
-      voFaWTail->AddNode(voFaWTailI, 1, vec0);
+      voFaWTail->AddNode(voFaWTailI, 1, gGeoIdentity);
       
 ///////////////////////////////////
 //                               //
@@ -538,7 +538,7 @@ void AliSHILv3::CreateGeometry()
 // Inner region with higher transport cuts
       TGeoPcon*   shSaa1PbCompI = MakeShapeFromTemplate(shSaa1PbComp, 0., -3.);
       TGeoVolume* voSaa1PbCompI =  new TGeoVolume("YSAA1_PbCompI", shSaa1PbCompI, kMedPbSh);
-      voSaa1PbComp->AddNode(voSaa1PbCompI, 1, vec0);
+      voSaa1PbComp->AddNode(voSaa1PbCompI, 1, gGeoIdentity);
       
 ///////////////////////////////////
 //    SAA1 W-Cone                //
@@ -658,7 +658,8 @@ void AliSHILv3::CreateGeometry()
       }
 
       TGeoVolume* voSaa1M  =  new TGeoVolume("YSAA1M", shSaa1M, kMedAir);
-
+      voSaa1M->SetVisibility(0);
+      
 
 ///////////////////////////////////
 //                               //
@@ -772,14 +773,14 @@ void AliSHILv3::CreateGeometry()
       const Float_t saa1ExtraShieldL = 48;
 //
 // Assemble SAA1
-      voSaa1M->AddNode(voSaa1StEnv,     1, vec0);
-      voSaa1M->AddNode(voSaa1WPipe,     1, vec0);
-      voSaa1M->AddNode(voSaa1PbComp,    1, vec0);
-      voSaa1M->AddNode(voSaa1WCone,     1, vec0);
-      voSaa1M->AddNode(voSaa1StRing,    1, vec0);
+      voSaa1M->AddNode(voSaa1StEnv,     1, gGeoIdentity);
+      voSaa1M->AddNode(voSaa1WPipe,     1, gGeoIdentity);
+      voSaa1M->AddNode(voSaa1PbComp,    1, gGeoIdentity);
+      voSaa1M->AddNode(voSaa1WCone,     1, gGeoIdentity);
+      voSaa1M->AddNode(voSaa1StRing,    1, gGeoIdentity);
       voSaa1M->AddNode(voSaa1InnerTube, 1, new TGeoTranslation(0., 0., dzSaa1InnerTube + 0.9));                      
       TGeoVolumeAssembly* voSaa1 = new TGeoVolumeAssembly("YSAA1");
-      voSaa1->AddNode(voSaa1M, 1, vec0);
+      voSaa1->AddNode(voSaa1M, 1, gGeoIdentity);
       
 ///////////////////////////////////////
 //          SAA1/SAA2  Pb Joint      //
@@ -831,13 +832,13 @@ void AliSHILv3::CreateGeometry()
       
       TGeoPcon* shSaa1Saa2 = MakeShapeFromTemplate(shSaa1Saa2Pb, 0., rOuSaa1Saa2Steel-rOuSaa1Saa2);
       TGeoVolume* voSaa1Saa2 = new TGeoVolume("YSAA1SAA2", shSaa1Saa2, kMedSteel);
-      voSaa1Saa2->AddNode(voSaa1Saa2Pb, 1, vec0);
+      voSaa1Saa2->AddNode(voSaa1Saa2Pb, 1, gGeoIdentity);
 //
 //    Inner region with higher transport cuts
 //
       TGeoPcon*   shSaa1Saa2I = MakeShapeFromTemplate(shSaa1Saa2Pb, 0., -3.);
       TGeoVolume* voSaa1Saa2I = new TGeoVolume("YSAA1_SAA2I", shSaa1Saa2I, kMedPbSh);
-      voSaa1Saa2Pb->AddNode(voSaa1Saa2I, 1, vec0);
+      voSaa1Saa2Pb->AddNode(voSaa1Saa2I, 1, gGeoIdentity);
       
 
 
@@ -855,7 +856,7 @@ void AliSHILv3::CreateGeometry()
       Float_t dzSaa2StEnv1  = 163.15;
       Float_t rInSaa2StEnv1 = 65.8/2.;
       // Length of the second section
-      Float_t dzSaa2StEnv2  = 340.35;
+      Float_t dzSaa2StEnv2  = 340.35 - 4.;
       Float_t rInSaa2StEnv2 = 87.2/2.;
       // Rel. starting position 
       Float_t zSaa2StEnv = 3.;
@@ -985,9 +986,9 @@ void AliSHILv3::CreateGeometry()
       // Section 1
       z += dzSaa2PbComp1;
       shSaa2PbComp->DefineSection(  6,  z, rInSaa2PbComp1, rOuSaa2PbComp1);
+      shSaa2PbComp->DefineSection(  7,  z, rInSaa2PbComp1, rOuSaa2PbComp2);
       //
       // Section 2
-      shSaa2PbComp->DefineSection(  7,  z, rInSaa2PbComp2, rOuSaa2PbComp2);
       z += dzSaa2PbComp2;
       shSaa2PbComp->DefineSection(  8,  z, rInSaa2PbComp2, rOuSaa2PbComp2);
       //
@@ -1009,7 +1010,7 @@ void AliSHILv3::CreateGeometry()
       z += dzSaa2PbCompE5;
       shSaa2PbComp->DefineSection( 15,  z, rInSaa2PbCompE3, rOuSaa2PbCompE4);
 
-      TGeoVolume* voSaa2PbComp  =  new TGeoVolume("YSAA2_PbComp", shSaa2PbComp, kMedPb);
+      TGeoVolume* voSaa2PbComp  =  new TGeoVolume("YSAA2_PbComp", shSaa2PbComp, kMedPbSh);
 
 
 ///////////////////////////////////
@@ -1038,7 +1039,7 @@ void AliSHILv3::CreateGeometry()
       shSaa2InnerTube->DefineSection( 2, z, kSaa2InnerTubeRmax - kSaa2InnerTubeD, kSaa2InnerTubeRmax);
       z =  kSaa2InnerTubeL;
       shSaa2InnerTube->DefineSection( 3, z, kSaa2InnerTubeRmax - kSaa2InnerTubeD, kSaa2InnerTubeRmax);
-      TGeoVolume* voSaa2InnerTube = new TGeoVolume("YSAA2_InnerTube", shSaa2InnerTube, kMedSteel);
+      TGeoVolume* voSaa2InnerTube = new TGeoVolume("YSAA2_InnerTube", shSaa2InnerTube, kMedSteelSh);
       
 ///////////////////////////////////
 //    SAA2 Steel Ring            //
@@ -1088,6 +1089,7 @@ void AliSHILv3::CreateGeometry()
       shSaa2->DefineSection(15, z, rInSaa2PbCompE3, rOuSaa2PbCompE4);
 
       TGeoVolume* voSaa2  =  new TGeoVolume("YSAA2", shSaa2, kMedAir);
+      voSaa2->SetVisibility(0);
 // Inner 1.89/2 deg line
       Double_t zref   = dzSaa2PbCompA1 + dzSaa2PbCompA2 + dzSaa2PbCompA3;
       for (Int_t i  = 4; i < 10; i++) {
@@ -1099,9 +1101,9 @@ void AliSHILv3::CreateGeometry()
 
 //
 //    Assemble SAA2
-      voSaa2->AddNode(voSaa2StEnv,     1, vec0);
-      voSaa2->AddNode(voSaa2PbRing,    1, vec0);
-      voSaa2->AddNode(voSaa2PbComp,    1, vec0);
+      voSaa2->AddNode(voSaa2StEnv,     1, gGeoIdentity);
+      voSaa2->AddNode(voSaa2PbRing,    1, gGeoIdentity);
+      voSaa2->AddNode(voSaa2PbComp,    1, gGeoIdentity);
       voSaa2->AddNode(voSaa2InnerTube, 1, new TGeoTranslation(0., 0., dzSaa2PbCompA1));
       z = (dzSaa2PbComp - dzSaa2PbCompE4 - dzSaa2PbCompE5) + dzSaa2SteelRing;
       voSaa2->AddNode(voSaa2SteelRing, 1, new TGeoTranslation(0., 0., z));
@@ -1117,85 +1119,56 @@ void AliSHILv3::CreateGeometry()
 //
 ///////////////////////////////////
 //    SAA3 Outer Shape           //
-//    Drawing ALIP2A__0xxx       //
+//    Drawing ALIP2A__0288       //
 ///////////////////////////////////
       
       TGeoVolumeAssembly* voSaa3  = new TGeoVolumeAssembly("YSAA3");
       
 ///////////////////////////////////
-//    SAA3 Steel Components      //
-//    Drawing ALIP2A__0xxx       //
+//    SAA3 Concrete cone         //
+//    Drawing ALIP2A__0284       //
 ///////////////////////////////////
 //    Block
-      TGeoBBox* shSaa3SteelBlockO   = new TGeoBBox(220./2., 80./2., 100./2.);
-      shSaa3SteelBlockO->SetName("Saa3SteelBlockO");
-
-      TGeoPcon* shSaa3InnerRegion  = new TGeoPcon(0., 360., 6);
-      shSaa3InnerRegion->DefineSection( 0, -52.0, 0., 56.6/2.);
-      shSaa3InnerRegion->DefineSection( 1, -45.0, 0., 56.6/2.);
-      shSaa3InnerRegion->DefineSection( 2, -42.0, 0., 50.6/2.);
-      shSaa3InnerRegion->DefineSection( 3, -30.0, 0., 50.6/2.);
-      shSaa3InnerRegion->DefineSection( 4,  30.5, 0., 16.8/2.);
-      shSaa3InnerRegion->DefineSection( 5,  52.0, 0., 16.8/2.);
+      TGeoBBox* shSaa3CCBlockO   = new TGeoBBox(80./2., 80./2., 100./2.);
+      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);
       shSaa3InnerRegion->SetName("Saa3InnerRegion");
 
-      TGeoCompositeShape* shSaa3SteelBlock = new TGeoCompositeShape("Saa3SteelBlock", "Saa3SteelBlockO-Saa3InnerRegion");
-      TGeoVolume* voSaa3SteelBlock         = new TGeoVolume("YSAA3SteelBlock", shSaa3SteelBlock, kMedSteel);     
-
-
-      voSaa3->AddNode(voSaa3SteelBlock, 1, vec0);
-//    Plate 1: 220 cm x 100 cm x 10 cm (x 1)
-      TGeoBBox* shSaa3SteelPlate1   = new TGeoBBox(220./2., 10./2., 100./2.);
-      TGeoVolume* voSaa3SteelPlate1  =  new TGeoVolume("YSAA3SteelPlate1", shSaa3SteelPlate1, kMedSteel);
-      voSaa3->AddNode(voSaa3SteelPlate1, 1, new TGeoTranslation(0., -80./2. - 10./2., 0.));
-//    Plate 2: 200 cm x 100 cm x 10 cm (x 6)
-      TGeoBBox* shSaa3SteelPlate2   = new TGeoBBox(200./2., 60./2., 100./2.);
-      TGeoVolume* voSaa3SteelPlate2  =  new TGeoVolume("YSAA3SteelPlate2", shSaa3SteelPlate2, kMedSteel);
-      voSaa3->AddNode(voSaa3SteelPlate2, 1, new TGeoTranslation(0., -80./2. - 10. - 60./2., 0.));
-//    Plate 3: 200 cm x 100 cm x 10 cm (x 4)
-      TGeoBBox* shSaa3SteelPlate3   = new TGeoBBox(200./2., 40./2., 100./2.);
-      TGeoVolume* voSaa3SteelPlate3  =  new TGeoVolume("YSAA3SteelPlate3", shSaa3SteelPlate3, kMedSteel);
-      voSaa3->AddNode(voSaa3SteelPlate3, 1, new TGeoTranslation(0., +80./2. + 40/2., 0.));
-//    Plate 4: 180 cm x 100 cm x 10 cm (x 1)
-      TGeoBBox* shSaa3SteelPlate4   = new TGeoBBox(180./2., 10./2., 100./2.);
-      TGeoVolume* voSaa3SteelPlate4  =  new TGeoVolume("YSAA3SteelPlate4", shSaa3SteelPlate4, kMedSteel);
-      voSaa3->AddNode(voSaa3SteelPlate4, 1, new TGeoTranslation(0., +80./2. + 40. + 10/2., 0.));
-//    Plate 5: 150 cm x 100 cm x 10 cm (x 1)
-      TGeoBBox* shSaa3SteelPlate5   = new TGeoBBox(150./2., 10./2., 100./2.);
-      TGeoVolume* voSaa3SteelPlate5  =  new TGeoVolume("YSAA3SteelPlate5", shSaa3SteelPlate5, kMedSteel);
-      voSaa3->AddNode(voSaa3SteelPlate5, 1, new TGeoTranslation(0., +80./2. + 50. + 10/2., 0.));
-//    Plate 6: 100 cm x 100 cm x 10 cm (x 1)
-      TGeoBBox* shSaa3SteelPlate6   = new TGeoBBox(100./2., 10./2., 100./2.);
-      TGeoVolume* voSaa3SteelPlate6  =  new TGeoVolume("YSAA3SteelPlate6", shSaa3SteelPlate6, kMedSteel);
-      voSaa3->AddNode(voSaa3SteelPlate6, 1, new TGeoTranslation(0., +80./2. + 60. + 10/2., 0.));
+      TGeoCompositeShape* shSaa3CCBlock = new TGeoCompositeShape("Saa3CCBlock", "Saa3CCBlockO-Saa3InnerRegion");
+      TGeoVolume* voSaa3CCBlock         = new TGeoVolume("YSAA3CCBlock", shSaa3CCBlock, kMedConcSh);     
 
-///////////////////////////////////
-//    SAA3 Concrete Piece        //
-//    Drawing ALIP2A__0xxx       //
-///////////////////////////////////
-      TGeoPcon* shSaa3ConcPiece  = new TGeoPcon(0., 360., 6);
-      shSaa3ConcPiece->DefineSection( 0,   0.0, 57.4/2., 62./2.);
-      shSaa3ConcPiece->DefineSection( 1,   5.0, 57.4/2., 62./2.);
-      shSaa3ConcPiece->DefineSection( 2,   8.0, 51.4/2., 62./2.);
-      shSaa3ConcPiece->DefineSection( 3,  20.0, 51.4/2., 62./2.);
-      shSaa3ConcPiece->DefineSection( 4,  80.5, 17.6/2., 62./2.);
-      shSaa3ConcPiece->DefineSection( 5, 100.0, 17.6/2., 62./2.);
-      TGeoVolume* voSaa3ConcPiece  =  new TGeoVolume("YSAA2_ConcPiece", shSaa3ConcPiece, kMedConc);
-      voSaa3SteelBlock->AddNode(voSaa3ConcPiece, 1, new TGeoTranslation(0., 0., -50.));
 
-///////////////////////////////////
-//    SAA3 InnerTube             //
-//    Drawing ALIP2A__0xxx       //
-///////////////////////////////////
-      TGeoPcon* shSaa3InnerTube  = new TGeoPcon(0., 360., 6);
-      shSaa3InnerTube->DefineSection( 0,   0.0, 56.6/2., 57.0/2.);
-      shSaa3InnerTube->DefineSection( 1,   5.0, 56.6/2., 57.0/2.);
-      shSaa3InnerTube->DefineSection( 2,   8.0, 50.6/2., 51.0/2.);
-      shSaa3InnerTube->DefineSection( 3,  20.0, 50.6/2., 51.0/2.);
-      shSaa3InnerTube->DefineSection( 4,  80.5, 16.8/2., 17.2/2.);
-      shSaa3InnerTube->DefineSection( 5, 100.0, 16.8/2., 17.2/2.);
-      TGeoVolume* voSaa3InnerTube  =  new TGeoVolume("YSAA2_InnerTube", shSaa3InnerTube, kMedSteel);
-      voSaa3SteelBlock->AddNode(voSaa3InnerTube, 1, new TGeoTranslation(0., 0., -50.));
+      voSaa3->AddNode(voSaa3CCBlock, 1, gGeoIdentity);
+      
+//    Plate 1: 240 cm x 80 cm x 100 cm (x 2)
+      TGeoVolume* voSaa3SteelPlate1  =  new TGeoVolume("YSAA3SteelPlate1", 
+                                                      new TGeoBBox(240./2., 80./2., 100./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.));
+      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)
+      TGeoVolume* voSaa3SteelPlate2  =  new TGeoVolume("YSAA3SteelPlate2", 
+                                                      new TGeoBBox( 80./2., 80./2., 100./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.));
+
+      voSaa3->AddNode(voSaa3SteelPlate2, 1, new TGeoTranslation(+80, 0., 0.));
+      voSaa3->AddNode(voSaa3SteelPlate2, 2, new TGeoTranslation(-80, 0., 0.));
+
 
 ///////////////////////////////////
 //    Muon Filter                //
@@ -1206,13 +1179,25 @@ void AliSHILv3::CreateGeometry()
       
       TGeoBBox*   shMuonFilterO  = new TGeoBBox(550./2., 620./2., dzMuonFilter);
       shMuonFilterO->SetName("FilterO");
-      TGeoTube*   shMuonFilterI  = new TGeoTube(0., 50., dzMuonFilter);
+      TGeoCombiTrans* trFilter = new TGeoCombiTrans("trFilter", 0., -dzMuonFilter * TMath::Tan(alhc * kDegrad), 0., rotlhc);
+      trFilter->RegisterYourself();
+      TGeoTube*   shMuonFilterI  = new TGeoTube(0., 48.8, dzMuonFilter + 20.);
       shMuonFilterI->SetName("FilterI");
-      TGeoCompositeShape* shMuonFilter = new TGeoCompositeShape("MuonFilter", "FilterO-FilterI");
+      TGeoCompositeShape* shMuonFilter = new TGeoCompositeShape("MuonFilter", "FilterO-FilterI:trFilter");
       //
       // !!!!! Needs to be inclined
       TGeoVolume* voMuonFilter = new TGeoVolume("YMuonFilter", shMuonFilter, kMedSteel);
 
+      // Inner part with higher transport cuts
+      Float_t dzMuonFilterH = 50.;
+      TGeoBBox*   shMuonFilterOH  = new TGeoBBox(550./2., 620./2., dzMuonFilterH);
+      shMuonFilterOH->SetName("FilterOH");
+      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);
+      voMuonFilter->AddNode(voMuonFilterH, 1, gGeoIdentity);
+      
 //  
       TGeoVolumeAssembly* voSaa  = new TGeoVolumeAssembly("YSAA");
 //
@@ -1247,18 +1232,13 @@ void AliSHILv3::CreateGeometry()
 //    Position of the Muon Filter
       Float_t zcFilter    = 1465.9 + dzMuonFilter;
 
-      printf("FaSaa1    %f %f \n", ziFaSaa1, zoFaSaa1);
-      printf("Saa1      %f %f \n", ziSaa1, zoSaa1);
-      printf("Saa1/Saa2 %f %f \n", ziSaa1Saa2, zoSaa1Saa2);
-      printf("Saa2      %f %f \n", ziSaa2, zoSaa2);
-      
       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(voSaa2 ,      1, new TGeoTranslation(0., 0., ziSaa2));
       voSaa->AddNode(voSaa3,       1, new TGeoTranslation(0., 0., zcSaa3));
-      voSaa->AddNode(voMuonFilter, 1, new TGeoTranslation(0., 0., zcFilter));      
+      
 
       TGeoRotation* rotxz  = new TGeoRotation("rotxz",   90.,   0., 90.,  90., 180., 0.);
       top->AddNode(voSaa, 1, new TGeoCombiTrans(0., 0., 0., rotxz));
@@ -1266,7 +1246,7 @@ void AliSHILv3::CreateGeometry()
 //  Mother volume for muon stations 1+2 and shielding material placed between the quadrants
 //
       // Position of the dipole
-      Float_t ziDipole = 724.45;
+      Float_t ziDipole = 741.;
       
       TGeoPcon* shYOUT1 = new TGeoPcon(0., 360., 25);
       Float_t eps = 1.e-2;
@@ -1287,21 +1267,22 @@ void AliSHILv3::CreateGeometry()
       for (Int_t iz = 17; iz < 24; iz++) 
          shYOUT1->DefineSection(iz, z + shSaa1M->GetZ(iz-13), shSaa1M->GetRmax(iz-13) + eps, 150.); 
       // Distance between dipole and start of SAA1 2deg opening cone
-      dz   = zSaa1StEnv[0] - dSt + zSaa1StEnvS + ziSaa1 - ziDipole;
+      dz   = ziDipole - (zSaa1StEnv[0] - dSt + zSaa1StEnvS + ziSaa1);
       rOut = rOuSaa1StEnv2 + dz * TMath::Tan(2. * kDegRad);
       
       shYOUT1->DefineSection(24, ziDipole, rOut + eps, 150.);
 
       InvertPcon(shYOUT1);
       TGeoVolume* voYOUT1 = new TGeoVolume("YOUT1", shYOUT1, kMedAirMu);
+      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));
-      top->AddNode(voYOUT1, 1, vec0);
+      top->AddNode(voYOUT1, 1, gGeoIdentity);
 //
 //  Mother volume for muon stations 4+5 and trigger stations.
 //
-      Float_t zoDipole = 1235.55;
+      Float_t zoDipole = 1249.;
       
       TGeoPcon* shYOUT2 = new TGeoPcon(0., 360., 14);
       z =  zoDipole;
@@ -1334,7 +1315,9 @@ void AliSHILv3::CreateGeometry()
       
       InvertPcon(shYOUT2);
       TGeoVolume* voYOUT2 = new TGeoVolume("YOUT2", shYOUT2, kMedAirMu);
-      top->AddNode(voYOUT2, 1, vec0);
+      voYOUT2->SetVisibility(0);
+      voYOUT2->AddNode(voMuonFilter, 1, new TGeoCombiTrans(0., dzMuonFilter * TMath::Tan(alhc * kDegrad), -zcFilter, rotxzlhc));
+      top->AddNode(voYOUT2, 1, gGeoIdentity);
 }
 
 void AliSHILv3::Init()
@@ -1347,7 +1330,7 @@ void AliSHILv3::Init()
   if(AliLog::GetGlobalDebugLevel()>0) {
     printf("\n%s: ",ClassName());
     for(i=0;i<35;i++) printf("*");
-    printf(" SHILvTGeo_INIT ");
+    printf(" SHILv3_INIT ");
     for(i=0;i<35;i++) printf("*");
     printf("\n%s: ",ClassName());
     //