]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAlignObj.h
updae of the GPU framework
[u/mrichter/AliRoot.git] / STEER / AliAlignObj.h
index ef2a9663085708474a7021e9fbc2843a83a933a4..adb147bf807e2d597ad6bbe69ee30ab4aa7e12aa 100644 (file)
 //      name for alignable volumes, in form of a TGeo path otherwise,    *
 //      and as a unique integer identifier                               *
 //************************************************************************
-#include "TObject.h"
-#include "TString.h"
-#include "TGeoMatrix.h"
+#include <TObject.h>
+#include <TString.h>
+#include <Rtypes.h>
 #include "AliGeomManager.h"
+#include <TMatrixD.h>
+#include <TMatrixDSym.h>
 
 
 class AliTrackPoint;
 class AliTrackPointArray;
+class TGeoMatrix;
 
 class AliAlignObj : public TObject {
 
@@ -26,6 +29,7 @@ class AliAlignObj : public TObject {
 
   AliAlignObj();
   AliAlignObj(const char* symname, UShort_t voluid);
+  AliAlignObj(const char* symname, UShort_t voluid, Double_t* cmat);
   AliAlignObj(const char* symname, AliGeomManager::ELayerID detId, Int_t modId);
   AliAlignObj(const AliAlignObj& theAlignObj);
   AliAlignObj& operator= (const AliAlignObj& theAlignObj);
@@ -50,6 +54,10 @@ class AliAlignObj : public TObject {
   void  SetSymName(const TString& symname) {fVolPath=symname;}
   void  SetVolUID(UShort_t voluid) {fVolUID=voluid;}
   void  SetVolUID(AliGeomManager::ELayerID layerId, Int_t modId);
+  void  SetCorrMatrix(Double_t *cov);
+  void  SetCorrMatrix(TMatrixDSym& mcov);
+  Bool_t SetFromLocalCov(Double_t *lCov);
+  Bool_t SetFromLocalCov(TMatrixDSym& lCov);
 
   //Getters
   const char  *GetSymName()    const {return fVolPath.Data();}
@@ -63,6 +71,11 @@ class AliAlignObj : public TObject {
   virtual Bool_t GetLocalPars(Double_t transl[], Double_t angles[]) const;
   virtual void GetMatrix(TGeoHMatrix& m) const=0;
   virtual Bool_t GetLocalMatrix(TGeoHMatrix& m) const;
+  void  GetCovMatrix(Double_t *cov) const;
+  void  GetCovMatrix(TMatrixDSym& mcov) const;
+  Bool_t  GetJacobian(TMatrixD& mJ) const;
+  Bool_t  GetLocalCovMatrix(Double_t *cov) const;
+  Bool_t  GetLocalCovMatrix(TMatrixDSym& lCov) const;
 
   Bool_t   IsSortable() const {return kTRUE;}
   Int_t         GetLevel() const;
@@ -70,7 +83,7 @@ class AliAlignObj : public TObject {
 
   virtual AliAlignObj& Inverse() const=0;
 
-  void  Transform(AliTrackPoint &p) const;
+  void  Transform(AliTrackPoint &p, Bool_t copycov=kFALSE) const;
   void  Transform(AliTrackPointArray &array) const;
 
   void  Print(Option_t *) const;
@@ -90,7 +103,7 @@ class AliAlignObj : public TObject {
   static const char* SymName(UShort_t voluid) {return AliGeomManager::SymName(voluid);}
   static const char* SymName(AliGeomManager::ELayerID layerId, Int_t modId) {return AliGeomManager::SymName(layerId, modId);}
 
-  Bool_t ApplyToGeometry();
+  Bool_t ApplyToGeometry(Bool_t ovlpcheck=kFALSE);
   static Bool_t   GetFromGeometry(const char *symname, AliAlignObj &alobj) {return AliGeomManager::GetFromGeometry(symname, alobj);}
 
   static AliAlignObj* GetAlignObj(UShort_t voluid) {return AliGeomManager::GetAlignObj(voluid);}
@@ -108,7 +121,10 @@ class AliAlignObj : public TObject {
       // the volume path inside TGeo geometry (for non-alignable volumes)
   UShort_t fVolUID;  // Unique volume ID
 
-  ClassDef(AliAlignObj, 2)
+  Double32_t   fDiag[6];  // diagonal elements of the correlation matrix for shifts and rotations (dx,dy,dz,dpsi,dtheta,dphi)
+  Double32_t   fODia[15]; // [-1, 1,8] off-diagonal elements (in 8 bit precision) of the correlation matrix
+       
+  ClassDef(AliAlignObj, 3)
 };
 
 #endif