// 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 {
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);
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();}
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;
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;
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);}
// 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