X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliGeomManager.h;h=63b62078af15a26e71f15bc16f9ae3d7a8711c1c;hb=8a4430e1cfcacc31e13dc29a471692d787d6d0ac;hp=762e6e1945f54a3261c7808bef0b4b9ccbfee3b1;hpb=36b010bf252ecf937975c1b24bee4837996738dc;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliGeomManager.h b/STEER/AliGeomManager.h index 762e6e1945f..63b62078af1 100644 --- a/STEER/AliGeomManager.h +++ b/STEER/AliGeomManager.h @@ -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 @@ -15,7 +19,6 @@ class TGeoManager; class TGeoPNEntry; class TGeoHMatrix; - class TObjArray; class AliAlignObj; @@ -36,8 +39,10 @@ public: kPHOS1=16, kPHOS2=17, kHMPID=18, kMUON=19, - kLastLayer=20}; + kEMCAL=20, + kLastLayer=21}; + static TGeoManager* GetGeometry() { return fgGeometry; } static Int_t LayerSize(Int_t layerId); static const char* LayerName(Int_t layerId); @@ -63,6 +68,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]); @@ -72,8 +79,10 @@ public: static Bool_t GetTrackingMatrix(Int_t index, TGeoHMatrix &m); static void LoadGeometry(const char *geomFileName = NULL); + 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); @@ -84,9 +93,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 GetNalignable(const char* module); ~AliGeomManager(); @@ -95,28 +105,29 @@ public: 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 ResetPNEntriesLUT(); 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); + ClassDef(AliGeomManager, 0); // Manager of geometry information for alignment }; #endif