]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSv11Hybrid.cxx
Correct formula for phi, in case of current local X <0, in GetLocalXat and GetPhiZat
[u/mrichter/AliRoot.git] / ITS / AliITSv11Hybrid.cxx
index 9f72cb41d1aa0dade326478d6897ddcfca5fde72..fe19fdbf0418409d8e9b04c72c8bcec9061fe9e6 100644 (file)
 // Updates concerning the geometry: versioning system, new V11hybrid version, bug fixes (B.Nilsend and L. Gaudichet
 //
 
-
 #include <TClonesArray.h>
-#include <TGeometry.h>
-#include <TLorentzVector.h>
+#include <TGeoGlobalMagField.h>
+#include <TGeoManager.h>
 #include <TGeoMatrix.h>
 #include <TGeoPhysicalNode.h>
-#include <TString.h>
-#include <TNode.h>
-#include <TTUBE.h>
-#include <TGeoManager.h>
 #include <TGeoVolume.h>
 #include <TGeoXtru.h>
+#include <TLorentzVector.h>
+#include <TString.h>
 #include <TVirtualMC.h>
 
 #include "AliITS.h"
@@ -110,9 +107,6 @@ ClassImp(AliITSv11Hybrid)
 
 //______________________________________________________________________
 AliITSv11Hybrid::AliITSv11Hybrid():
-  AliITS(),
-  fGeomDetOut(kFALSE),
-  fGeomDetIn(kFALSE),
   fByThick(kTRUE),
   fMajorVersion(IsVersion()),
   fMinorVersion(-1),
@@ -141,8 +135,6 @@ AliITSv11Hybrid::AliITSv11Hybrid():
 //______________________________________________________________________
 AliITSv11Hybrid::AliITSv11Hybrid(const char *title) 
   : AliITS("ITS", title),
-    fGeomDetOut(kFALSE),
-    fGeomDetIn(kFALSE),
     fByThick(kTRUE),
     fMajorVersion(IsVersion()),
     fMinorVersion(1),
@@ -208,18 +200,11 @@ AliITSv11Hybrid::AliITSv11Hybrid(const char *title)
   SetThicknessChip2();
   SetDensityServicesByThickness();
   
-  fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
-  strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
-  strncpy(fRead,fEuclidGeomDet,60);
-  strncpy(fWrite,fEuclidGeomDet,60);
-  strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
 }
 
 //______________________________________________________________________
 AliITSv11Hybrid::AliITSv11Hybrid(const char *name, const char *title) 
   : AliITS("ITS", title),
-    fGeomDetOut(kFALSE),
-    fGeomDetIn(kFALSE),
     fByThick(kTRUE),
     fMajorVersion(IsVersion()),
     fMinorVersion(1),
@@ -288,11 +273,6 @@ AliITSv11Hybrid::AliITSv11Hybrid(const char *name, const char *title)
   SetThicknessChip2();
   SetDensityServicesByThickness();
   
-  fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
-  strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
-  strncpy(fRead,fEuclidGeomDet,60);
-  strncpy(fWrite,fEuclidGeomDet,60);
-  strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
 }
 
 //______________________________________________________________________
@@ -685,9 +665,8 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{
     modnum = 0;
     TString str0 = "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_"; // SDD layer1
     TString str1 = "/ITSsddSensor3_";
-    TString str2 = "/ITSsddWafer3_1";
     TString ladder;
-    TString wafer;
+    TString sensor;
 
     for(Int_t c1 = 0; c1<14; c1++) {
 
@@ -705,17 +684,16 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{
       for(Int_t c2 =0; c2<6; c2++) {
 
        modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
-       wafer = ladder;
-       wafer += str1;
-       wafer += c2;
-       wafer += str2;    // one wafer
+       sensor = ladder;
+       sensor += str1;
+       sensor += c2;
        strEntryName2 = strEntryName1;
        strEntryName2 += strSensor;
        strEntryName2 += c2;
        //printf("%s    ==    %s\n",strEntryName2.Data(),wafer.Data());
-       if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
+       if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID))
          AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
-                   strEntryName2.Data(),wafer.Data()));
+                   strEntryName2.Data(),sensor.Data()));
 
        if(c1 != 2) { 
        SetT2Lmatrix(modUID, 0, kFALSE, c2>=3);
@@ -729,7 +707,6 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{
     modnum = 0;
     str0 = "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_"; // SDD layer2
     str1 = "/ITSsddSensor4_";
-    str2 = "/ITSsddWafer4_1";
     
     for(Int_t c1 = 0; c1<22; c1++) {
 
@@ -747,17 +724,16 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{
       for(Int_t c2 =0; c2<8; c2++) {
 
        modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
-       wafer = ladder;
-       wafer += str1;
-       wafer += c2;
-       wafer += str2;    // one wafer
+       sensor = ladder;
+       sensor += str1;
+       sensor += c2;
        strEntryName2 = strEntryName1;
        strEntryName2 += strSensor;
        strEntryName2 += c2;
        //printf("%s    ==    %s\n",strEntryName2.Data(),wafer.Data());
-       if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
+       if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID))
          AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
-                   strEntryName2.Data(),wafer.Data()));
+                   strEntryName2.Data(),sensor.Data()));
 
        SetT2Lmatrix(modUID, 0, kFALSE, c2>=4);
       }
@@ -993,63 +969,6 @@ void AliITSv11Hybrid::AddAlignableVolumes() const{
   } // end SSD geometry 
 }
 
-//______________________________________________________________________
-void AliITSv11Hybrid::BuildGeometry(){
-    //    Geometry builder for the ITS version 10. Event Display geometry.
-    // Inputs:
-    //   none.
-    // Outputs:
-    //   none.
-    // Return:
-    //   none.
-
-    TNode *node, *top;
-    
-    const Int_t kColorITS=kYellow;
-    //
-    top = gAlice->GetGeometry()->GetNode("alice");
-
-
-    new TTUBE("S_layer1","Layer1 of ITS","void",
-             3.8095,3.8095+1.03*9.36/100.,14.35);
-    top->cd();
-    node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
-    top->cd();
-    node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
-    top->cd();
-    node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
-    top->cd();
-    node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer5","Layer5 of ITS","void",
-             38.5,38.5+0.91*9.36/100.,49.405);
-    top->cd();
-    node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer6","Layer6 of ITS","void",
-             43.5765,43.5765+0.87*9.36/100.,55.27);
-    top->cd();
-    node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-}
-
 //______________________________________________________________________
 void AliITSv11Hybrid::CreateGeometry() {
 
@@ -4701,56 +4620,100 @@ void AliITSv11Hybrid::CreateOldGeometry(){
   
   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
   //     THE ABSORBER - COPPER PART - UPPER PART
-  
+
   dgh[0] = 46.;      
   dgh[1] = 46.+1.0;  
-  dgh[2] = (ztpc-97.5+1.5-2.5)/2.;
+//  dgh[2] = (ztpc-97.5+1.5-2.5)/2.;
+  dgh[2] = (186.6 - 101.1)/2.;
   dgh[3] = 12.;
   dgh[4] = 168.;
   gMC->Gsvolu("ICU5", "TUBS", idtmed[213], dgh, 5);   
   //  gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");  
-  gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -(-97.5-dgh[2]), idrotm[199], "ONLY");  
-  
+  gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY");  
+
+  dgh[0] = (ztpc - 1.0 - 186.6)/2.;
+  dgh[1] = 64.0;
+  dgh[2] = 64.0+1.0;
+  dgh[3] = 46.;
+  dgh[4] = 46.+1.0;
+  dgh[5] = 12.;
+  dgh[6] = 168.;
+  gMC->Gsvolu("ICU9", "CONS", idtmed[213], dgh, 7);   
+  gMC->Gspos("ICU9", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY");
+
   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
   //     THE ABSORBER - COPPER PART - LOWER PART
   
   dgh[0] = 46.;  
   dgh[1] = 46.+1.0;  
-  dgh[2] = (ztpc-97.5+1.5-2.5)/2.;
+//  dgh[2] = (ztpc-97.5+1.5-2.5)/2.;
+  dgh[2] = (186.6 - 101.1)/2.;
   dgh[3] = 192.;
   dgh[4] = 348.;  
   gMC->Gsvolu("ICU6", "TUBS", idtmed[213], dgh, 5);   
   //  gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); 
-  gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -(-97.5-dgh[2]), idrotm[199], "ONLY");    
-  
+  gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY");    
+
+  dgh[0] = (ztpc - 1.0 - 186.6)/2.;
+  dgh[1] = 64.0;
+  dgh[2] = 64.0+1.0;
+  dgh[3] = 46.;
+  dgh[4] = 46.+1.0;
+  dgh[5] = 192.;
+  dgh[6] = 348.;
+  gMC->Gsvolu("ICU0", "CONS", idtmed[213], dgh, 7);   
+  gMC->Gspos("ICU0", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY");
+
   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
   //     THE ABSORBER - CARBON PART - UPPER PART
   
   dgh[0] = 46.+1.0;  
   dgh[1] = 46.+1.0+1.5; 
-  dgh[2] = (ztpc-97.5)/2.;
+//  dgh[2] = (ztpc-97.5)/2.;
+  dgh[2] = (186.6 - 101.1)/2.;
   dgh[3] = 12.;
   dgh[4] = 168.;  
   gMC->Gsvolu("ICC5", "TUBS", idtmed[225], dgh, 5);   
   //  gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");
-  gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -(-97.5-dgh[2]), idrotm[199], "ONLY");   
-  
+  gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY");   
+  
+  dgh[0] = (ztpc - 1.0 - 186.6)/2.;
+  dgh[1] = 64.0+1.0;
+  dgh[2] = 64.0+1.0+1.5;
+  dgh[3] = 46.+1.0;
+  dgh[4] = 46.+1.0+1.5;
+  dgh[5] = 12.;
+  dgh[6] = 168.;
+  gMC->Gsvolu("ICC9", "CONS", idtmed[225], dgh, 7);   
+  gMC->Gspos("ICC9", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY");
+
   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
   //     THE ABSORBER - CARBON PART - LOWER PART
   
   dgh[0] = 46.+1.0;   
   dgh[1] = 46.+1.0+1.5;  
-  dgh[2] = (ztpc-97.5)/2.;
+//  dgh[2] = (ztpc-97.5)/2.;
+  dgh[2] = (186.6 - 101.1)/2.;
   dgh[3] = 192.;
   dgh[4] = 348.;  
   gMC->Gsvolu("ICC6", "TUBS", idtmed[225], dgh, 5);   
   //  gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY"); 
-  gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -(-97.5-dgh[2]), idrotm[199], "ONLY");      
+  gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -(-101.1-dgh[2]), idrotm[199], "ONLY");      
+
+  dgh[0] = (ztpc - 1.0 - 186.6)/2.;
+  dgh[1] = 64.0+1.0;
+  dgh[2] = 64.0+1.0+1.5;
+  dgh[3] = 46.+1.0;
+  dgh[4] = 46.+1.0+1.5;
+  dgh[5] = 192.;
+  dgh[6] = 348.;
+  gMC->Gsvolu("ICC0", "CONS", idtmed[225], dgh, 7);   
+  gMC->Gspos("ICC0", 1, "ITSV", 0., 0., -(-186.6-dgh[0]), idrotm[199], "ONLY");
 
   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
   //     COPPER PART - UPPER PART
     
-  dgh[0] = 46.;   
+  dgh[0] = 64.0;   
   dgh[1] = 74.5;
   dgh[2] = 0.5;
   dgh[3] = 12.;
@@ -4761,7 +4724,7 @@ void AliITSv11Hybrid::CreateOldGeometry(){
   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
   //     COPPER PART - LOWER PART
     
-  dgh[0] = 46.
+  dgh[0] = 64.0
   dgh[1] = 74.5;
   dgh[2] = 0.5;
   dgh[3] = 192.;
@@ -4772,7 +4735,7 @@ void AliITSv11Hybrid::CreateOldGeometry(){
   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
   //     CARBON PART - UPPER PART
   
-  dgh[0] = 46.+1.0;  
+  dgh[0] = 64.0+1.0;  
   dgh[1] = 74.5;
   dgh[2] = 0.75;
   dgh[3] = 12.;
@@ -4783,7 +4746,7 @@ void AliITSv11Hybrid::CreateOldGeometry(){
   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
   //     CARBON PART - LOWER PART
   
-  dgh[0] = 46.+1.0;  
+  dgh[0] = 64.0+1.0;  
   dgh[1] = 74.5;
   dgh[2] = 0.75;
   dgh[3] = 192.;
@@ -4845,8 +4808,8 @@ void AliITSv11Hybrid::CreateOldGeometry(){
   dgh[1] = 59.;
   dgh[2] = 0.6;    
   gMC->Gsvolu("ICYL", "TUBE", idtmed[210], dgh, 3);   
-  gMC->Gspos("ICYL", 1, "ALIC", 0., 0., -74.1,idrotm[199], "ONLY");   
-  gMC->Gspos("ICYL", 2, "ALIC", 0., 0., 74.1, 0, "ONLY"); 
+  gMC->Gspos("ICYL", 1, "ITSV", 0., 0., -74.1,idrotm[199], "ONLY");   
+  gMC->Gspos("ICYL", 2, "ITSV", 0., 0., 74.1, 0, "ONLY"); 
 
   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
 
@@ -4893,14 +4856,6 @@ void AliITSv11Hybrid::CreateOldGeometry(){
 
   }
 
-
-  // --- Outputs the geometry tree in the EUCLID/CAD format 
-  
-  if (fEuclidOut) {
-    gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
-  }
-
-
   {
     if (!gGeoManager) {
       AliError("TGeoManager doesn't exist !");
@@ -5132,8 +5087,8 @@ void AliITSv11Hybrid::CreateMaterials(){
     // Return:
     //   none.
 
-    Int_t   ifield = gAlice->Field()->Integ();
-    Float_t fieldm = gAlice->Field()->Max();
+    Int_t   ifield = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+    Float_t fieldm = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
     Float_t tmaxfd = 0.1; // 1.0; // Degree
     Float_t stemax = 1.0; // cm
@@ -5776,7 +5731,6 @@ void AliITSv11Hybrid::Init(){
                 fMinorVersion));
     UpdateInternalGeometry();
     AliITS::Init();
-    if(fGeomDetOut) GetITSgeom()->WriteNewFile(fWrite);
 
     fIDMother = gMC->VolId("ITSV"); // ITS Mother Volume ID.
 }
@@ -5880,8 +5834,8 @@ void AliITSv11Hybrid::StepManager(){
     Int_t copy, lay = 0;
     Int_t id = gMC->CurrentVolID(copy);
 
-    Bool_t notSens;
-    while ((notSens = id != fIdSens[lay]) && (lay<fIdN)) ++lay;
+    Bool_t notSens = kFALSE;
+    while ((lay<fIdN)  && (notSens = id != fIdSens[lay])) ++lay;
     if (notSens) return;
 
     if(gMC->IsTrackExiting()) {