]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliGeomManager.h
Fix fixed-string length bug
[u/mrichter/AliRoot.git] / STEER / AliGeomManager.h
index 935e32ba8db1f3ddb7d0166b21e91931ad29e915..7ae62f2eeaaaa75b7019d4941e783560f28efd4b 100644 (file)
@@ -2,12 +2,16 @@
 #define ALI_GEOM_MANAGER_H
 
 //
-// Class for interfacing to the geometry; it also builds and manages two
-// look-up tables for fast access to volumes :
-// 1) the look-up table mapping unique volume ids to symbolic volume names
-// 2) the look-up table mapping unique volume ids to TGeoPNEntries
-// this allows to access directly the functionality of the physical node
-// associated to a given alignable volume by means of its index
+// Class for interfacing to the geometry; it also builds and manages the
+// look-up tables for fast access to geometry and alignment information
+// for sensitive alignable volumes:
+// 1) the look-up table mapping unique volume ids to TGeoPNEntries
+//    this allows to access directly by means of the unique index
+//    the associated symbolic name and original global matrix
+//    in addition to the functionality of the physical node
+//    associated to a given alignable volume
+// 2) the look-up table of the alignment objects associated to the
+//    indexed alignable volumes
 //
 
 #include <TObject.h>
@@ -15,7 +19,7 @@
 class TGeoManager;
 class TGeoPNEntry;
 class TGeoHMatrix;
-
+class TGeoNode;
 class TObjArray;
 
 class AliAlignObj;
@@ -65,6 +69,8 @@ public:
   static Bool_t GetTranslation(Int_t index, Double_t t[3]);
   static Bool_t GetRotation(Int_t index, Double_t r[9]);
 
+  static Bool_t GetDeltaForBranch(AliAlignObj& aao, TGeoHMatrix &inclusiveD);
+  static Bool_t GetDeltaForBranch(Int_t index, TGeoHMatrix &inclusiveD);
   static TGeoHMatrix* GetOrigGlobalMatrix(Int_t index);
   static Bool_t GetOrigGlobalMatrix(const char *symname, TGeoHMatrix &m);
   static Bool_t GetOrigTranslation(Int_t index, Double_t t[3]);
@@ -75,8 +81,9 @@ public:
 
   static void        LoadGeometry(const char *geomFileName = NULL);
   static void        SetGeometry(TGeoManager *geom);
+  static void        CheckOverlapsOverPNs(Double_t threshold);  
 
-  static Bool_t         ApplyAlignObjsToGeom(TObjArray& alObjArray);
+  static Bool_t         ApplyAlignObjsToGeom(TObjArray& alObjArray, Bool_t ovlpcheck=kFALSE);
 
   static Bool_t         ApplyAlignObjsToGeom(const char* fileName,
                                      const char* clArrayName);
@@ -87,9 +94,10 @@ public:
                                      Int_t sversion);
   static Bool_t         ApplyAlignObjsToGeom(const char* detName, Int_t runnum, Int_t version,
                                      Int_t sversion);
-
   static Bool_t         ApplyAlignObjsFromCDB(const char* AlDetsList);
   static Bool_t         LoadAlignObjsFromCDBSingleDet(const char* detName, TObjArray& alignObjArray);
+  static Bool_t         CheckSymNamesLUT(const char* detsToBeChecked);
+  static Int_t          CheckOverlapsExtrusions(TGeoNode* start, Double_t threshold=0.01);
 
   ~AliGeomManager();
 
@@ -106,17 +114,13 @@ public:
   static TGeoPNEntry* GetPNEntry(ELayerID layerId, Int_t modId);
 
   static void        InitAlignObjFromGeometry();
-  static void        InitSymNamesLUT();
   static void        InitPNEntriesLUT();
-  static void        InitOrigMatricesLUT();
 
   static TGeoManager* fgGeometry;
 
   static Int_t       fgLayerSize[kLastLayer - kFirstLayer]; // Size of layers
   static const char* fgLayerName[kLastLayer - kFirstLayer]; // Name of layers
-  static TString*    fgSymName[kLastLayer - kFirstLayer]; // Symbolic volume names
   static TGeoPNEntry** fgPNEntry[kLastLayer - kFirstLayer]; // TGeoPNEntries
-  static TGeoHMatrix** fgOrigMatrix[kLastLayer - kFirstLayer]; // Original matrices before misalignment
   static AliAlignObj** fgAlignObjs[kLastLayer - kFirstLayer]; // Alignment objects
 
   ClassDef(AliGeomManager, 0);