Line data Source code
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 0 : void SetXShift(Float_t xShift) {fXShift=xShift;}
35 0 : void SetYShift(Float_t yShift) {fYShift=yShift;}
36 0 : void SetZShift(Float_t zShift) {fZShift=zShift;}
37 0 : void SetRotPhiA(Float_t rotPhiA) {fRotPhiA=rotPhiA;}
38 0 : void SetRotPhiC(Float_t rotPhiC) {fRotPhiC=rotPhiC;}
39 0 : void SetdRPhiOffsetA(Float_t dRPhiOffsetA) {fdRPhiOffsetA=dRPhiOffsetA;}
40 0 : void SetdRPhiOffsetC(Float_t dRPhiOffsetC) {fdRPhiOffsetC=dRPhiOffsetC;}
41 :
42 0 : Float_t GetXShift() const {return fXShift;}
43 0 : Float_t GetYShift() const {return fYShift;}
44 0 : Float_t GetZShift() const {return fZShift;}
45 0 : Float_t GetRotPhiA() const {return fRotPhiA;}
46 0 : Float_t GetRotPhiC() const {return fRotPhiC;}
47 0 : Float_t GetdRPhiOffsetA() const {return fdRPhiOffsetA;}
48 0 : 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 0 : TGeoMatrix* GetAlignGlobal() const {return fMatrixGlobal;}
58 0 : TGeoMatrix* GetAlignGlobalDelta() const {return fMatrixGlobalDelta;}
59 0 : 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 42 : ClassDef(AliTPCCalibGlobalMisalignment,3);
98 : /// \endcond
99 : };
100 :
101 : #endif
|