1 #ifndef ALI_TPC_CALIB_GLOBAL_MISALIGNMENT_H
2 #define ALI_TPC_CALIB_GLOBAL_MISALIGNMENT_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 /// \class AliTPCCalibGlobalMisalignment
9 /// AliTPCCalibGlobalMisalignment class
10 /// The class calculates the space point distortions due to simple
11 /// misalignments like shifts in caresian coordinates or a rotation
12 /// of the TPC read out planes (A and C side)
14 /// \author Stefan Rossegger, Jim Thomas, Magnus Mager
17 #include "AliTPCCorrection.h"
21 class TTreeSRedirector;
24 class AliTPCCalibGlobalMisalignment : public AliTPCCorrection {
26 AliTPCCalibGlobalMisalignment();
27 virtual ~AliTPCCalibGlobalMisalignment();
28 virtual Bool_t AddCorrectionCompact(AliTPCCorrection* corr, Double_t weight);
29 // initialization and update functions
30 // virtual void Init();
31 // virtual void Update(const TTimeStamp &timeStamp);
32 void AddAlign(const AliTPCCalibGlobalMisalignment & add);
33 // setters and getters for misalignments
34 void SetXShift(Float_t xShift) {fXShift=xShift;}
35 void SetYShift(Float_t yShift) {fYShift=yShift;}
36 void SetZShift(Float_t zShift) {fZShift=zShift;}
37 void SetRotPhiA(Float_t rotPhiA) {fRotPhiA=rotPhiA;}
38 void SetRotPhiC(Float_t rotPhiC) {fRotPhiC=rotPhiC;}
39 void SetdRPhiOffsetA(Float_t dRPhiOffsetA) {fdRPhiOffsetA=dRPhiOffsetA;}
40 void SetdRPhiOffsetC(Float_t dRPhiOffsetC) {fdRPhiOffsetC=dRPhiOffsetC;}
42 Float_t GetXShift() const {return fXShift;}
43 Float_t GetYShift() const {return fYShift;}
44 Float_t GetZShift() const {return fZShift;}
45 Float_t GetRotPhiA() const {return fRotPhiA;}
46 Float_t GetRotPhiC() const {return fRotPhiC;}
47 Float_t GetdRPhiOffsetA() const {return fdRPhiOffsetA;}
48 Float_t GetdRPhiOffsetC() const {return fdRPhiOffsetC;}
49 virtual void Print(Option_t* option="") const ;
50 void SetQuadranAlign(const TVectorD *quadrantQ0, const TVectorD *quadrantRQ0, const TVectorD *quadrantQ1,const TVectorD *quadrantRQ1, const TVectorD *quadrantQ2, const TVectorD *quadrantRQ2);
52 // Alignment manipulation using TGeoMatrix
54 void SetAlignGlobal(const TGeoMatrix * matrixGlobal);
55 void SetAlignGlobalDelta(const TGeoMatrix * matrixGlobalDelta);
56 void SetAlignSectors(const TObjArray *arraySector);
57 TGeoMatrix* GetAlignGlobal() const {return fMatrixGlobal;}
58 TGeoMatrix* GetAlignGlobalDelta() const {return fMatrixGlobalDelta;}
59 TObjArray * GetAlignSectors() const {return fArraySector;}
61 static AliTPCCalibGlobalMisalignment* CreateOCDBAlign();
62 static AliTPCCalibGlobalMisalignment* CreateMeanAlign(const AliTPCCalibGlobalMisalignment *alignIn);
63 static void DumpAlignment( AliTPCCalibGlobalMisalignment* align, TTreeSRedirector *pcstream, const char *name);
66 virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
69 Float_t fXShift; ///< Shift in global X [cm]
70 Float_t fYShift; ///< Shift in global Y [cm]
71 Float_t fZShift; ///< Shift in global Z [cm]
73 Float_t fRotPhiA; ///< simple rotation of A side read-out plane around the Z axis [rad]
74 Float_t fRotPhiC; ///< simple rotation of C side read-out plane around the Z axis [rad]
75 Float_t fdRPhiOffsetA; ///< add a constant offset of dRPhi (or local Y) in [cm]: purely for calibration purposes!
76 Float_t fdRPhiOffsetC; ///< add a constant offset of dRPhi (or local Y) in [cm]: purely for calibration purposes!
80 TVectorD *fQuadrantQ0; ///< OROC medium pads -delta ly+ - ly - shift (cm)
81 TVectorD *fQuadrantRQ0; ///< OROC medium pads -delta ly+ - ly - rotation (rad)
82 TVectorD *fQuadrantQ1; ///< OROC long pads -delta ly+ - ly - shift
83 TVectorD *fQuadrantQ2; ///< OROC long pads -shift
84 TVectorD *fQuadrantRQ1; ///< OROC long pads -delta ly+ - ly - rotation
85 TVectorD *fQuadrantRQ2; ///< OROC long pads -rotation
88 // Global alignment - use native ROOT representation
90 TGeoMatrix * fMatrixGlobal; ///< global Alignment common
91 TGeoMatrix * fMatrixGlobalDelta; ///< global Alignment common A side-C side
92 TObjArray * fArraySector; ///< local Alignmnet Sector
94 AliTPCCalibGlobalMisalignment& operator=(const AliTPCCalibGlobalMisalignment&);
95 AliTPCCalibGlobalMisalignment(const AliTPCCalibGlobalMisalignment&);
97 ClassDef(AliTPCCalibGlobalMisalignment,3);