]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/TPCbase/AliTPCCalibGlobalMisalignment.h
CMake: Retrieve Git information
[u/mrichter/AliRoot.git] / TPC / TPCbase / AliTPCCalibGlobalMisalignment.h
1 #ifndef ALI_TPC_CALIB_GLOBAL_MISALIGNMENT_H
2 #define ALI_TPC_CALIB_GLOBAL_MISALIGNMENT_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /// \class AliTPCCalibGlobalMisalignment
8 ///
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)
13 ///
14 /// \author Stefan Rossegger, Jim Thomas, Magnus Mager
15 /// \date 06/05/2010
16
17 #include "AliTPCCorrection.h"
18 #include "TVectorD.h"
19 class TGeoMatrix;
20 class TObjArray;
21 class TTreeSRedirector;
22
23
24 class AliTPCCalibGlobalMisalignment : public AliTPCCorrection {
25 public:
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;}
41   
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);
51   // 
52   // Alignment manipulation using TGeoMatrix
53   
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;}
60   //
61   static AliTPCCalibGlobalMisalignment*  CreateOCDBAlign();
62   static AliTPCCalibGlobalMisalignment*  CreateMeanAlign(const AliTPCCalibGlobalMisalignment *alignIn);
63   static void DumpAlignment( AliTPCCalibGlobalMisalignment* align, TTreeSRedirector *pcstream, const char *name);
64   //
65 protected:
66   virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
67
68 private:
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]
72
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!
77   //
78   // Quadrant alignment
79   //
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
86   // 
87   //
88   // Global alignment - use native ROOT representation
89   //
90   TGeoMatrix * fMatrixGlobal; ///< global Alignment common
91   TGeoMatrix * fMatrixGlobalDelta; ///< global Alignment common A side-C side
92   TObjArray   * fArraySector; ///< local Alignmnet Sector
93   //
94   AliTPCCalibGlobalMisalignment& operator=(const AliTPCCalibGlobalMisalignment&);
95   AliTPCCalibGlobalMisalignment(const AliTPCCalibGlobalMisalignment&);
96   /// \cond CLASSIMP
97   ClassDef(AliTPCCalibGlobalMisalignment,3);
98   /// \endcond
99 };
100
101 #endif