]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliHALLv3.cxx
Reference plane invisible.
[u/mrichter/AliRoot.git] / STRUCT / AliHALLv3.cxx
index f5e514d98e71e3e76fc203c590349afde65ef05d..b656fb7a3e9ebe094ea35da59478dc50731204f2 100644 (file)
@@ -83,12 +83,14 @@ void AliHALLv3::CreateGeometry()
   
   // Rotations
   // rotation by 90 deg in the y-z plane
-  TGeoRotation* rot000 = new TGeoRotation("rot000",  90., 0.,  0.,  0., 90., 90.);  
-  TGeoRotation* rot001 = new TGeoRotation("rot001", 270., 0., 90., 90.,  0.,  0.);  
+  TGeoRotation* rot000 = new TGeoRotation("rot000",  90., 0.,180.,  0.,    90., 90.);  
+  TGeoRotation* rot001 = new TGeoRotation("rot001", 270., 0., 90., 90.,   180.,  0.);  
 
   // Materials
   TGeoMedium* kMedCC     = gGeoManager->GetMedium("HALL_CC_C2");
   TGeoMedium* kMedST     = gGeoManager->GetMedium("HALL_STST_C2");
+  TGeoMedium* kMedAir    = gGeoManager->GetMedium("HALL_AIR_C2");
+  
   // Floor thickness 
   Float_t dyFloor  =  190.;
   // Floor width
@@ -138,16 +140,35 @@ void AliHALLv3::CreateGeometry()
                                      new TGeoTrd1(xl +dl, xl, hullen, dh / 2.),
                                      kMedCC);
   r2 = hullen + zHall26;
+  asHall->AddNode(voHUFL, 1, new TGeoCombiTrans(70., -100. - dh / 2., -r2 - 0.755, rot000));
 
-  asHall->AddNode(voHUFL, 1, new TGeoCombiTrans(70., -100. - dh / 2., -r2, rot000));
   //
   // RB24/26 wall 
-  
-  phid     = phi * 57.296;
+  phid     = phi * kRaddeg;
   TGeoVolume* voHUWA = new TGeoVolume("HUWA",
                                      new TGeoTubeSeg(r, r+dr, hullen, phid - 90., 270. - phid),
                                      kMedCC);
   asHall->AddNode(voHUWA, 1, new TGeoTranslation(70., 40., -zHall26 - hullen ));
+  //
+  // Air inside tunnel
+  TGeoTube* shHUWAT1 = new TGeoTube(0., r, hullen);
+  shHUWAT1->SetName("shHUWAT1");
+  //
+  // Space for ZDC
+  TGeoBBox*    shHUWAT2 = new TGeoBBox(70., 110., hullen + 20.);
+  shHUWAT2->SetName("shHUWAT2");
+  TGeoTranslation*   tHUWAT2 = new TGeoTranslation("tHUWAT2", -70., -30., 0.);
+  tHUWAT2->RegisterYourself();
+
+  TGeoBBox*    shHUWAT3 = new TGeoBBox(270., 110., hullen + 20.);
+  shHUWAT3->SetName("shHUWAT3");
+  TGeoTranslation*   tHUWAT3 = new TGeoTranslation("tHUWAT3", 0., -110. - 140., 0.);
+  tHUWAT3->RegisterYourself();
+  
+  TGeoCompositeShape*  shHUWAT = new TGeoCompositeShape("HUWAT", "(shHUWAT1-shHUWAT2:tHUWAT2)-shHUWAT3:tHUWAT3");
+  TGeoVolume* voHUWAT = new TGeoVolume("HUWAT", shHUWAT, kMedAir);
+  asHall->AddNode(voHUWAT, 1, new TGeoTranslation(70., 40., -zHall26 - hullen - 0.755));
+  
   //
   //  Hall floor 
   //  RB26 side
@@ -204,6 +225,7 @@ void AliHALLv3::CreateGeometry()
 
   //
   // Slanted wall close to L3 magnet 
+  //
   phim =  45.;
   hm   = 790.;
   am   = hm * TMath::Tan(phim / 2. * kDegrad);
@@ -249,10 +271,10 @@ void AliHALLv3::CreateGeometry()
   
   
   TGeoVolume* voHHF2 = new TGeoVolume("HHF2", 
-                                     new TGeoTrd1(dx1FloorL3, dx2FloorL3, dzL3/2., dyFloorL3/2.), 
+                                     new TGeoTrd1(dx1FloorL3 - 0.5, dx2FloorL3 - 0.5, dzL3/2., dyFloorL3/2.), 
                                      kMedCC);
 
-  asHall->AddNode(voHHF2, 1, new TGeoCombiTrans(0., yFloor - dyFloor / 2. + dyFloorL3 / 2.,0., rot000));
+  asHall->AddNode(voHHF2, 1, new TGeoCombiTrans(0., yFloor - dyFloor / 2. + dyFloorL3 / 2. - 0.5,0., rot000));
   //
   // Tunnel roof and pit
   // Roof
@@ -278,6 +300,7 @@ void AliHALLv3::CreateGeometry()
 
   //
   // Pit wall ground level
+  dy = yFloor + 1206. / 2. + dyFloor/2.;
   TGeoTube* shHHCPW1 = new TGeoTube(rPit, rPit + 100., 1206./2.);
   shHHCPW1->SetName("shHHCPW1");
   TGeoCombiTrans* trHHCPW1 = new TGeoCombiTrans("trHHCPW1", 0., 0., 0., rot000);
@@ -285,14 +308,21 @@ void AliHALLv3::CreateGeometry()
 
   TGeoBBox* shHHCPW2 = new TGeoBBox(rPit + 100., 1206./ 2. + 20., rPit + 100.);
   shHHCPW2->SetName("shHHCPW2");
+  
+  TGeoTube* shHHCPW3 = new TGeoTube(0., 60., 60.);
+  shHHCPW3->SetName("shHHCPW3");
 
   
   TGeoTranslation* trHHCPW2 = new TGeoTranslation("trHHCPW2", 0., 0., -(rPit + 100.) - oPit);
   trHHCPW2->RegisterYourself();
 
-  TGeoCompositeShape*  shHHCPW = new TGeoCompositeShape("HHCPW", "shHHCPW1:trHHCPW1-shHHCPW2:trHHCPW2");
+  TGeoTranslation* trHHCPW3 = new TGeoTranslation("trHHCPW3", 0., -dy, rPit + 50.);
+  trHHCPW3->RegisterYourself();
+
+  TGeoCompositeShape*  shHHCPW 
+      = new TGeoCompositeShape("HHCPW", "shHHCPW1:trHHCPW1-(shHHCPW2:trHHCPW2+shHHCPW3:trHHCPW3)");
   TGeoVolume* voHHCPW = new TGeoVolume("HHCPW", shHHCPW, kMedCC);
-  dy = yFloor + 1206. / 2. + dyFloor/2.;
+
   asHall->AddNode(voHHCPW, 1, new TGeoTranslation(0., dy, 2300.));
   // 
   // Foundations of the Muon Spectrometer
@@ -311,9 +341,9 @@ void AliHALLv3::CreateGeometry()
   //
   // Transverse bars
   ys += dy;
-  dy = 126.46/2.;
+  dy = 91.32/2.;
   ys += dy;
-  TGeoVolume* voFmsMfTb1 = new TGeoVolume("FmsMfTb1", new TGeoBBox(330., dy,  90.), kMedCC);
+  TGeoVolume* voFmsMfTb1 = new TGeoVolume("FmsMfTb1", new TGeoBBox(330., dy,  60.), kMedCC);
   asFMS->AddNode(voFmsMfTb1, 1, new TGeoTranslation(0., ys, zFil));
   ys += dy;
   dy = 41.14/2.;
@@ -323,7 +353,7 @@ void AliHALLv3::CreateGeometry()
   //
   // Dipole foundation
   ys = yFloor + dyFloor / 2.;
-  dy = 263.54/2;
+  dy = (263.54 - 6.2)/2.;
   ys += dy;
   TGeoVolume* voFmsDf1 = new TGeoVolume("FmsDf1", new TGeoBBox(370., dy,  448.0 / 2.), kMedCC);
   asFMS->AddNode(voFmsDf1, 1, new TGeoTranslation(0., ys, zFil + 240. + 224.));