]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliGeomManager.h
- Compute parameter covariances including absorber dispersion effects
[u/mrichter/AliRoot.git] / STEER / AliGeomManager.h
index 89669f133b41cf57b591171eb8f78114e4ca5f71..77636821af4370eecd5a81f4ee983845a950a75f 100644 (file)
 //
 
 #include <TObject.h>
-#include <TGeoManager.h>
+
+class TGeoManager;
+class TGeoPNEntry;
+class TGeoHMatrix;
 
 class TObjArray;
 
@@ -33,8 +36,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);
@@ -50,21 +55,19 @@ public:
   static const char* SymName(UShort_t voluid);
   static const char* SymName(ELayerID layerId, Int_t modId);
 
-  static TGeoPNEntry* GetPNEntry(Int_t index);
-  static TGeoPNEntry* GetPNEntry(UShort_t index);
-  static TGeoPNEntry* GetPNEntry(ELayerID layerId, Int_t modId);
-
   static Bool_t   GetFromGeometry(const char *symname, AliAlignObj &alobj);
   static AliAlignObj* GetAlignObj(UShort_t voluid);
   static AliAlignObj* GetAlignObj(ELayerID layerId, Int_t modId);
 
-  static TGeoHMatrix* GetMatrix(TGeoPNEntry* pne);
+  //to be used making a copy of the returned pointer to TGeoHMatrix!!
   static TGeoHMatrix* GetMatrix(Int_t index);
   static TGeoHMatrix* GetMatrix(const char *symname);
   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 GetOrigGlobalMatrix(Int_t index, TGeoHMatrix &m);
+  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 GetOrigRotation(Int_t index, Double_t r[9]);
@@ -72,54 +75,52 @@ public:
   static const TGeoHMatrix* GetTracking2LocalMatrix(Int_t index);
   static Bool_t GetTrackingMatrix(Int_t index, TGeoHMatrix &m);
 
-  Bool_t         ApplyAlignObjsToGeom(TObjArray* alObjArray);
+  static void        LoadGeometry(const char *geomFileName = NULL);
+  static void        SetGeometry(TGeoManager *geom);
+
+  static Bool_t         ApplyAlignObjsToGeom(TObjArray& alObjArray);
 
-  Bool_t         ApplyAlignObjsToGeom(const char* fileName,
+  static Bool_t         ApplyAlignObjsToGeom(const char* fileName,
                                      const char* clArrayName);
-  Bool_t         ApplyAlignObjsToGeom(AliCDBParam* param,
+  static Bool_t         ApplyAlignObjsToGeom(AliCDBParam* param,
                                      AliCDBId& Id);
-  Bool_t         ApplyAlignObjsToGeom(const char* uri, const char* path,
+  static Bool_t         ApplyAlignObjsToGeom(const char* uri, const char* path,
                                      Int_t runnum, Int_t version,
                                      Int_t sversion);
-  Bool_t         ApplyAlignObjsToGeom(const char* detName, Int_t runnum, Int_t version,
+  static Bool_t         ApplyAlignObjsToGeom(const char* detName, Int_t runnum, Int_t version,
                                      Int_t sversion);
 
-  Bool_t         ApplyAlignObjsFromCDB(const char* AlDetsList);
-  Bool_t         LoadAlignObjsFromCDBSingleDet(const char* detName);
+  static Bool_t         ApplyAlignObjsFromCDB(const char* AlDetsList);
+  static Bool_t         LoadAlignObjsFromCDBSingleDet(const char* detName, TObjArray& alignObjArray);
 
   ~AliGeomManager();
-  static AliGeomManager* Instance();
 
+ private:
+  AliGeomManager();
+  AliGeomManager(const AliGeomManager&);
+  AliGeomManager& operator=(const AliGeomManager&);
+
+  static TGeoHMatrix* GetMatrix(TGeoPNEntry* pne);
+  static TGeoHMatrix* GetOrigGlobalMatrix(TGeoPNEntry* pne);
+  static Bool_t       GetOrigGlobalMatrixFromPath(const char *path, TGeoHMatrix &m);
 
- protected:
+  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 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
 
- private:
-  AliGeomManager();
-  AliGeomManager(const AliGeomManager&);
-  AliGeomManager& operator=(const AliGeomManager&);
-
-  static void        ReactIfChangedGeom();
-  static Bool_t      HasGeomChanged(){return fgGeometry!=gGeoManager;} 
-  static TGeoManager* fgGeometry;
-
-
-
-  static AliGeomManager* fgInstance; // the AliGeomManager singleton instance
-
-  TObjArray*    fAlignObjArray;      // array with the alignment objects to be applied to the geometry
-
-  void Init();
-
   ClassDef(AliGeomManager, 0);
 };