////////////////////////////////////////////////////////////////////////////
#include "AliTPCCorrection.h"
+#include "TVectorD.h"
+class TGeoMatrix;
+class TObjArray;
+class TTreeSRedirector;
+
class AliTPCCalibGlobalMisalignment : public AliTPCCorrection {
public:
AliTPCCalibGlobalMisalignment();
virtual ~AliTPCCalibGlobalMisalignment();
-
+
// initialization and update functions
// virtual void Init();
// virtual void Update(const TTimeStamp &timeStamp);
-
+ void AddAlign(const AliTPCCalibGlobalMisalignment & add);
// setters and getters for misalignments
void SetXShift(Float_t xShift) {fXShift=xShift;}
void SetYShift(Float_t yShift) {fYShift=yShift;}
void SetRotPhiC(Float_t rotPhiC) {fRotPhiC=rotPhiC;}
void SetdRPhiOffsetA(Float_t dRPhiOffsetA) {fdRPhiOffsetA=dRPhiOffsetA;}
void SetdRPhiOffsetC(Float_t dRPhiOffsetC) {fdRPhiOffsetC=dRPhiOffsetC;}
-
+
Float_t GetXShift() const {return fXShift;}
Float_t GetYShift() const {return fYShift;}
Float_t GetZShift() const {return fZShift;}
Float_t GetRotPhiC() const {return fRotPhiC;}
Float_t GetdRPhiOffsetA() const {return fdRPhiOffsetA;}
Float_t GetdRPhiOffsetC() const {return fdRPhiOffsetC;}
-
virtual void Print(Option_t* option="") const;
-
+ void SetQuadranAlign(const TVectorD *quadrantQ0, const TVectorD *quadrantRQ0, const TVectorD *quadrantQ1,const TVectorD *quadrantRQ1, const TVectorD *quadrantQ2, const TVectorD *quadrantRQ2);
+ //
+ // Alignment manipulation using TGeoMatrix
+
+ void SetAlignGlobal(const TGeoMatrix * matrixGlobal);
+ void SetAlignGlobalDelta(const TGeoMatrix * matrixGlobalDelta);
+ void SetAlignSectors(const TObjArray *arraySector);
+ TGeoMatrix* GetAlignGlobal() const {return fMatrixGlobal;}
+ TGeoMatrix* GetAlignGlobalDelta() const {return fMatrixGlobalDelta;}
+ TObjArray * GetAlignSectors() const {return fArraySector;}
+ //
+ static AliTPCCalibGlobalMisalignment* CreateOCDBAlign();
+ static AliTPCCalibGlobalMisalignment* CreateMeanAlign(const AliTPCCalibGlobalMisalignment *alignIn);
+ static void DumpAlignment( AliTPCCalibGlobalMisalignment* align, TTreeSRedirector *pcstream, const char *name);
+ //
protected:
virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
Float_t fRotPhiC; // simple rotation of C side read-out plane around the Z axis [rad]
Float_t fdRPhiOffsetA; // add a constant offset of dRPhi (or local Y) in [cm]: purely for calibration purposes!
Float_t fdRPhiOffsetC; // add a constant offset of dRPhi (or local Y) in [cm]: purely for calibration purposes!
-
- ClassDef(AliTPCCalibGlobalMisalignment,1);
+ //
+ // Quadrant alignment
+ //
+ TVectorD *fQuadrantQ0; //OROC medium pads -delta ly+ - ly - shift (cm)
+ TVectorD *fQuadrantRQ0; //OROC medium pads -delta ly+ - ly - rotation (rad)
+ TVectorD *fQuadrantQ1; //OROC long pads -delta ly+ - ly - shift
+ TVectorD *fQuadrantQ2; //OROC long pads -shift
+ TVectorD *fQuadrantRQ1; //OROC long pads -delta ly+ - ly - rotation
+ TVectorD *fQuadrantRQ2; //OROC long pads -rotation
+ //
+ //
+ // Global alignment - use native ROOT representation
+ //
+ TGeoMatrix * fMatrixGlobal; // global Alignment common
+ TGeoMatrix * fMatrixGlobalDelta; // global Alignment common A side-C side
+ TObjArray * fArraySector; // local Alignmnet Sector
+ //
+ AliTPCCalibGlobalMisalignment& operator=(const AliTPCCalibGlobalMisalignment&);
+ AliTPCCalibGlobalMisalignment(const AliTPCCalibGlobalMisalignment&);
+ ClassDef(AliTPCCalibGlobalMisalignment,3);
};
#endif