]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliGeomManager.cxx
Restored functionality
[u/mrichter/AliRoot.git] / STEER / AliGeomManager.cxx
index 27ed3faa9dd9928ddde32b84ddd8a970519b9ffb..0978dce018b12602a1497d491f76ea0152c6808f 100644 (file)
@@ -32,7 +32,7 @@
 #include "AliGeomManager.h"
 #include "AliLog.h"
 #include "AliAlignObj.h"
-#include "AliAlignObjAngles.h"
+#include "AliAlignObjParams.h"
 #include "AliCDBManager.h"
 #include "AliCDBStorage.h"
 #include "AliCDBEntry.h"
@@ -121,7 +121,9 @@ TGeoManager* AliGeomManager::fgGeometry = 0x0;
 //_____________________________________________________________________________
 void AliGeomManager::LoadGeometry(const char *geomFileName)
 {
-// initialization
+  // initialization
+  // Load geometry either from a file
+  // or from the corresponding CDB entry
 
   fgGeometry = NULL;
   if (geomFileName && (!gSystem->AccessPathName(geomFileName))) { // gemotry.root exists
@@ -147,6 +149,19 @@ void AliGeomManager::LoadGeometry(const char *geomFileName)
   InitOrigMatricesLUT();
 }
 
+//_____________________________________________________________________________
+void AliGeomManager::SetGeometry(TGeoManager *geom)
+{
+  // Load already active geometry
+  if (!geom) AliFatalClass("Pointer to the active geometry is 0x0!");
+
+  fgGeometry = geom;
+
+  InitSymNamesLUT();
+  InitPNEntriesLUT();
+  InitOrigMatricesLUT();
+}
+
 //_____________________________________________________________________________
 AliGeomManager::AliGeomManager():
   TObject()
@@ -399,7 +414,7 @@ void  AliGeomManager::InitAlignObjFromGeometry()
     fgAlignObjs[iLayer-kFirstLayer] = new AliAlignObj*[LayerSize(iLayer)];
     for (Int_t iModule = 0; iModule < LayerSize(iLayer); iModule++) {
       UShort_t volid = LayerToVolUID(iLayer,iModule);
-      fgAlignObjs[iLayer-kFirstLayer][iModule] = new AliAlignObjAngles("",volid,0,0,0,0,0,0,kTRUE);
+      fgAlignObjs[iLayer-kFirstLayer][iModule] = new AliAlignObjParams("",volid,0,0,0,0,0,0,kTRUE);
       const char *symname = SymName(volid);
       if (!GetFromGeometry(symname, *fgAlignObjs[iLayer-kFirstLayer][iModule]))
        AliErrorClass(Form("Failed to extract the alignment object for the volume (ID=%d and path=%s) !",volid,symname));
@@ -479,32 +494,41 @@ void AliGeomManager::InitSymNamesLUT()
   TString strSDD = "ITS/SDD";
   TString strSSD = "ITS/SSD";
   TString strStave = "/Stave";
+  TString strHalfStave = "/HalfStave";
   TString strLadder = "/Ladder";
   TString strSector = "/Sector";
   TString strSensor = "/Sensor";
   TString strEntryName1;
   TString strEntryName2;
-
+  TString strEntryName3;
 
   /*********************       SPD layer1  ***********************/
   {
     modnum = 0;
-
-    for(Int_t c1 = 1; c1<=10; c1++){
+    
+    for(Int_t cSect = 0; cSect<10; cSect++){
       strEntryName1 = strSPD;
       strEntryName1 += 0;
       strEntryName1 += strSector;
-      strEntryName1 += (c1-1);
-      for(Int_t c2 =1; c2<=2; c2++){
+      strEntryName1 += cSect;
+      
+      for(Int_t cStave =0; cStave<2; cStave++){
        strEntryName2 = strEntryName1;
        strEntryName2 += strStave;
-       strEntryName2 += (c2-1);
-       for(Int_t c3 =1; c3<=4; c3++){
-         symname = strEntryName2;
-         symname += strLadder;
-         symname += (c3-1);
-         fgSymName[kSPD1-kFirstLayer][modnum] = symname.Data();
-         modnum++;
+       strEntryName2 += cStave;
+
+       for (Int_t cHS=0; cHS<2; cHS++) {
+         strEntryName3 = strEntryName2;
+         strEntryName3 += strHalfStave;
+         strEntryName3 += cHS;
+         
+         for(Int_t cLad =0; cLad<2; cLad++){
+           symname = strEntryName3;
+           symname += strLadder;
+           symname += cLad+cHS*2;
+           fgSymName[kSPD1-kFirstLayer][modnum] = symname.Data();
+           modnum++;
+         }
        }
       }
     }
@@ -514,26 +538,90 @@ void AliGeomManager::InitSymNamesLUT()
   {
     modnum = 0;
 
-    for(Int_t c1 = 1; c1<=10; c1++){
+    for(Int_t cSect = 0; cSect<10; cSect++){
       strEntryName1 = strSPD;
       strEntryName1 += 1;
       strEntryName1 += strSector;
-      strEntryName1 += (c1-1);
-      for(Int_t c2 =1; c2<=4; c2++){
+      strEntryName1 += cSect;
+
+      for(Int_t cStave =0; cStave<4; cStave++){
        strEntryName2 = strEntryName1;
        strEntryName2 += strStave;
-       strEntryName2 += (c2-1);
-       for(Int_t c3 =1; c3<=4; c3++){
-         symname = strEntryName2;
-         symname += strLadder;
-         symname += (c3-1);
-         fgSymName[kSPD2-kFirstLayer][modnum] = symname.Data();
-         modnum++;
+       strEntryName2 += cStave;
+
+       for (Int_t cHS=0; cHS<2; cHS++) {
+         strEntryName3 = strEntryName2;
+         strEntryName3 += strHalfStave;
+         strEntryName3 += cHS;
+
+         for(Int_t cLad =0; cLad<2; cLad++){
+           symname = strEntryName3;
+           symname += strLadder;
+           symname += cLad+cHS*2;
+           fgSymName[kSPD2-kFirstLayer][modnum] = symname.Data();
+           modnum++;
+         }
        }
       }
     }
   }
 
+//   /*********************       SPD layer1  ***********************/
+//   {
+//     modnum = 0;
+
+//     for(Int_t c1 = 1; c1<=10; c1++){
+//       strEntryName1 = strSPD;
+//       strEntryName1 += 0;
+//       strEntryName1 += strSector;
+//       strEntryName1 += (c1-1);
+//       for(Int_t c2 =1; c2<=2; c2++){
+//     strEntryName2 = strEntryName1;
+//     strEntryName2 += strStave;
+//     strEntryName2 += (c2-1);
+//     for(Int_t c3 =1; c3<=4; c3++){
+//       symname = strEntryName2;
+//       symname += strLadder;
+//       symname += (c3-1);
+//       fgSymName[kSPD1-kFirstLayer][modnum] = symname.Data();
+//       modnum++;
+//     }
+//       }
+//     }
+//   }
+  
+//   /*********************       SPD layer2  ***********************/
+//   {
+//     modnum = 0;
+
+//     for(Int_t c1 = 1; c1<=10; c1++){
+//       strEntryName1 = strSPD;
+//       strEntryName1 += 1;
+//       strEntryName1 += strSector;
+//       strEntryName1 += (c1-1);
+//       for(Int_t c2 =1; c2<=4; c2++){
+//     strEntryName2 = strEntryName1;
+//     strEntryName2 += strStave;
+//     strEntryName2 += (c2-1);
+//     for(Int_t c3 =1; c3<=4; c3++){
+//       symname = strEntryName2;
+//       symname += strLadder;
+//       symname += (c3-1);
+//       fgSymName[kSPD2-kFirstLayer][modnum] = symname.Data();
+//       modnum++;
+//     }
+//       }
+//     }
+//   }
+
+
+
+
+
+
+
+
+
   /*********************       SDD layer1  ***********************/
   {
     modnum=0;