]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliHALLv3.cxx
Modificaions from Stefan Rossegger :
[u/mrichter/AliRoot.git] / STRUCT / AliHALLv3.cxx
index 5e5e19fec3975fc1871b9f85291c392c2c5a84bf..becb3e911a6a00f6bffe27cbe4660774548d85f5 100644 (file)
@@ -146,9 +146,9 @@ void AliHALLv3::CreateGeometry()
   // RB24/26 wall 
   phid     = phi * kRaddeg;
   TGeoVolume* voHUWA = new TGeoVolume("HUWA",
-                                     new TGeoTubeSeg(r, r+dr, hullen, phid - 90., 270. - phid),
+                                     new TGeoTubeSeg(r, r+dr, hullen, phid - 90. + 0.002, 270. - phid - 0.002),
                                      kMedCC);
-  asHall->AddNode(voHUWA, 1, new TGeoTranslation(70., 40., -zHall26 - hullen ));
+  asHall->AddNode(voHUWA, 1, new TGeoTranslation(70., 40., -zHall26 - hullen + 0.002 ));
   //
   // Air inside tunnel
   TGeoTube* shHUWAT1 = new TGeoTube(0., r, hullen);
@@ -174,7 +174,7 @@ void AliHALLv3::CreateGeometry()
   //  RB26 side
   phid      = 16.197;
   Float_t dzFloor26 = zHall26 - dzL3/2.;
-  TGeoBBox* shHHF1 = new TGeoBBox(dxFloor/2. + 470., dyFloor/2., dzFloor26/2.);
+  TGeoBBox* shHHF1 = new TGeoBBox(dxFloor/2. + 470., dyFloor/2., dzFloor26/2. - 0.002);
   shHHF1->SetName("shHHF1");
   TGeoVolume* voHHF1 = new TGeoVolume("HHF1", shHHF1, kMedCC);
   asHall->AddNode(voHHF1, 2, new TGeoTranslation(0., yFloor, -(dzL3/2. + dzFloor26/2.)));
@@ -200,7 +200,7 @@ void AliHALLv3::CreateGeometry()
   Float_t trALP1 = TMath::ATan((trBL1 - trTL1) / 2. / trH1) * kRaddeg;
   dx = 1.5 * trBL1 - 0.5 * trTL1 + dxFloor/2. + dyFloor * TMath::Tan(phid * kDegrad);
   TGeoVolume* voHHW11 = new TGeoVolume("HHW11",
-                                      new TGeoTrap(dzFloor26/2., 0., 0., 
+                                      new TGeoTrap(dzFloor26/2. - 0.002, 0., 0., 
                                                    trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1),
                                       kMedCC);
   TGeoVolume* voHHW12 = new TGeoVolume("HHW12",
@@ -212,13 +212,13 @@ void AliHALLv3::CreateGeometry()
   
   asHall->AddNode(voHHW12, 1, new TGeoTranslation( dx, dy,  (dzL3/2. + dzFloor24/2.)));
   asHall->AddNode(voHHW12, 2, new TGeoCombiTrans (-dx, dy,  (dzL3/2. + dzFloor24/2.), rot001));
-  asHall->AddNode(voHHW11, 3, new TGeoTranslation( dx, dy, -(dzL3/2. + dzFloor26/2.)));
-  asHall->AddNode(voHHW11, 4, new TGeoCombiTrans (-dx, dy, -(dzL3/2. + dzFloor26/2.), rot001));
+  asHall->AddNode(voHHW11, 1, new TGeoTranslation( dx, dy, -(dzL3/2. + dzFloor26/2.)));
+  asHall->AddNode(voHHW11, 2, new TGeoCombiTrans (-dx, dy, -(dzL3/2. + dzFloor26/2.), rot001));
 
   Float_t boDY =  (yHall - (yFloor + dyFloor/2.) - 2. * trH1)/ 2.;
   Float_t dzHall = zHall26 + zHall24;
 
-  TGeoVolume* voHBW1 = new TGeoVolume("HBW1", new TGeoBBox(50., boDY, dzHall / 2.), kMedCC);
+  TGeoVolume* voHBW1 = new TGeoVolume("HBW1", new TGeoBBox(50., boDY, dzHall / 2. - 0.05), kMedCC);
 
   asHall->AddNode(voHBW1, 1,  new TGeoTranslation( 1120., yHall - boDY, (zHall24-zHall26)/2.));
   asHall->AddNode(voHBW1, 2,  new TGeoTranslation(-1120., yHall - boDY, (zHall24-zHall26)/2.));
@@ -231,7 +231,7 @@ void AliHALLv3::CreateGeometry()
   am   = hm * TMath::Tan(phim / 2. * kDegrad);
   bm   = (hm + 76.) / hm * am;
   cm   = bm * 2. / TMath::Sqrt(2.);
-  trH1   =  (1273.78 - cm) / 2.;
+  trH1   =  (1273.78 - cm) / 2. - 0.002;
   trBL1  =  235. - cm * TMath::Tan(phid * kDegrad) / 2.;
   trTL1  =   50.;
   trALP1 = TMath::ATan((trBL1 - trTL1) / 2. / trH1) * kRaddeg;
@@ -240,7 +240,7 @@ void AliHALLv3::CreateGeometry()
   dx = cm * TMath::Tan(phid * kDegrad) + dxFloor/2. + trBL1 * 1.5 - trTL1 * .5;
 
   TGeoVolume* voHHW2 = new TGeoVolume("HHW2",
-                                     new TGeoTrap(dzL3/2., 0., 0., 
+                                     new TGeoTrap(dzL3/2. - 0.002, 0., 0., 
                                                   trH1, trBL1, trTL1, trALP1, trH1, trBL1, trTL1, trALP1),
                                      kMedCC);
 
@@ -300,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);
@@ -307,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
@@ -420,7 +428,10 @@ void AliHALLv3::CreateGeometry()
   // Opening for beam pipe
   TGeoBBox* shShPx24Pl2 = new TGeoBBox(15., 20., 60.);
   shShPx24Pl2->SetName("ShPx24Pl2");
-  TGeoCompositeShape*  shPx24Pl = new TGeoCompositeShape("Px24Pl", "ShPx24Pl1-ShPx24Pl2");
+  TGeoTranslation* trPl2 = new TGeoTranslation("trPl2", -55., 0., 0.);
+  trPl2->RegisterYourself();
+
+  TGeoCompositeShape*  shPx24Pl = new TGeoCompositeShape("Px24Pl", "ShPx24Pl1-ShPx24Pl2:trPl2");
   TGeoVolume* voPx24Pl = new TGeoVolume("Px24Pl", shPx24Pl, kMedST);
   asShPx24->AddNode(voPx24Pl, 1, new TGeoTranslation(55., 0., -1205./2. + 40.));
   asHall->AddNode(asFMS, 1, new TGeoTranslation(0.,  0., 0.));