#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>
class TGeoManager;
class TGeoPNEntry;
class TGeoHMatrix;
-
class TObjArray;
class AliAlignObj;
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]);
static Bool_t GetTrackingMatrix(Int_t index, TGeoHMatrix &m);
static void LoadGeometry(const char *geomFileName = NULL);
- static void SetGeometry(TGeoManager *geom);
+ static void SetGeometry(TGeoManager * const 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);
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 GetNalignable(const char* module);
~AliGeomManager();
AliGeomManager(const AliGeomManager&);
AliGeomManager& operator=(const AliGeomManager&);
- static TGeoHMatrix* GetMatrix(TGeoPNEntry* pne);
- static TGeoHMatrix* GetOrigGlobalMatrix(TGeoPNEntry* pne);
+ static TGeoHMatrix* GetMatrix(TGeoPNEntry * const pne);
+ static TGeoHMatrix* GetOrigGlobalMatrix(TGeoPNEntry * const pne);
static Bool_t GetOrigGlobalMatrixFromPath(const char *path, TGeoHMatrix &m);
static TGeoPNEntry* GetPNEntry(Int_t index);
static TGeoPNEntry* GetPNEntry(ELayerID layerId, Int_t modId);
static void InitAlignObjFromGeometry();
- static void InitSymNamesLUT();
static void InitPNEntriesLUT();
- static void InitOrigMatricesLUT();
+ static void InitNalignable();
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
+ static const Int_t fgkNDetectors = 15; // number of detectors
+ static const char * fgkDetectorName[fgkNDetectors] ; // name of detectors
+ static Int_t fgNalignable[fgkNDetectors];
ClassDef(AliGeomManager, 0);
};