]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Calib/AliTPCcalibTime.h
make the update of the period level QA safe (by running in a temp location and only...
[u/mrichter/AliRoot.git] / TPC / Calib / AliTPCcalibTime.h
1 #ifndef ALITPCCALIBTIME_H
2 #define ALITPCCALIBTIME_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6 /*
7 Comments to be written here:
8 What do we calibrate.
9   Time dependence of gain and drift velocity in order to account for changes in: temperature, pressure, gas composition.
10 */
11
12
13 #include "AliTPCcalibBase.h"
14 #include "THnSparse.h"
15 //#include "TH1D.h"                // Temporary make code compiling for HLT in the 
16
17 class TObjArray;
18 class TH1F;
19 class TH3F;
20 class TH2F;
21 class TH1D;
22 class TList;
23 class AliESDEvent;
24 class AliESDtrack;
25 class AliTPCcalibLaser;
26 class TGraphErrors;
27 class AliSplineFit;
28 class AliESDfriendTrack;
29
30 class AliTPCcalibTime:public AliTPCcalibBase {
31 public:
32   AliTPCcalibTime(); 
33   AliTPCcalibTime(const Text_t *name, const Text_t *title, UInt_t StartTime, UInt_t EndTime, Int_t deltaIntegrationTimeVdrift, Int_t memoryMode=2);
34   virtual ~AliTPCcalibTime();
35   
36   virtual void           Process(AliESDEvent *event);
37   virtual Long64_t       Merge(TCollection *const li);
38   virtual void           Analyze();
39   //static Bool_t          IsLaser      (const AliESDEvent *const event) const;
40   //static Bool_t          IsCosmics    (const AliESDEvent *const event) const;
41   //static Bool_t          IsBeam       (const AliESDEvent *const event) const;
42   void                   ProcessLaser (AliESDEvent *event);
43   void                   ProcessCosmic(const AliESDEvent *const event);
44   void                   ProcessBeam  (const AliESDEvent *const event);
45   Bool_t                 IsPair(const AliExternalTrackParam *tr0, const AliExternalTrackParam *tr1);
46   Bool_t                 IsCross(const AliESDtrack *const tr0, const AliESDtrack *const tr1);
47   Bool_t                 IsSame (const AliESDtrack *const tr0, const AliESDtrack *const tr1);
48   void                   ProcessSame(const AliESDtrack *const track, AliESDfriendTrack *const friendTrack, const AliESDEvent *const event);
49   void                   ProcessAlignITS(AliESDtrack *const track, const AliESDfriendTrack *const friendTrack, const AliESDEvent *const event, AliESDfriend *const ESDfriend);
50   void                   ProcessAlignTRD(AliESDtrack* const track, const AliESDfriendTrack *const friendTrack);
51   void                   ProcessAlignTOF(AliESDtrack* const track, const AliESDfriendTrack *const friendTrack);
52
53   THnSparse*    GetHistVdriftLaserA(Int_t index=1) const {return fHistVdriftLaserA[index];};
54   THnSparse*    GetHistVdriftLaserC(Int_t index=1) const {return fHistVdriftLaserC[index];};
55   THnSparse*    GetHistoDrift(const char* name) const;
56   TObjArray*    GetHistoDrift() const;
57   TGraphErrors* GetGraphDrift(const char* name);
58   TObjArray*    GetGraphDrift();
59   AliSplineFit* GetFitDrift(const char* name);
60 //  TObjArray*    GetFitDrift();
61   TH1F*         GetCosmiMatchingHisto(Int_t index=0) const {return fCosmiMatchingHisto[index];};
62   void     Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
63   void     Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);}
64   TObjArray* GetAlignITSTPC() const {return fAlignITSTPC;}              // alignemnt array ITS TPC match
65   TObjArray* GetAlignTRDTPC() const {return fAlignTRDTPC;}              // alignemnt array TRD TPC match
66   TObjArray* GetAlignTOFTPC() const {return fAlignTOFTPC;}              // alignemnt array TOF TPC match
67
68   THnSparse * GetTPCVertexHisto(Int_t index) const { return fTPCVertex[index%12];}
69   THnSparse * GetTPCVertexHistoCorrelation(Int_t index) const { return fTPCVertexCorrelation[index%5];}
70
71   THnSparse*  GetResHistoTPCCE(Int_t index) const { return (index<5) ? fResHistoTPCCE[index]:0;}        //TPC-CE    matching map
72   THnSparse*  GetResHistoTPCITS(Int_t index) const { return (index<5) ? fResHistoTPCITS[index]:0;}        //TPC-ITS    matching map
73   THnSparse*  GetResHistoTPCvertex(Int_t index)      const { return (index<5) ? fResHistoTPCvertex[index]   :0;}        //TPC vertex matching map
74   THnSparse*  GetResHistoTPCTRD(Int_t index)   const { return (index<5) ? fResHistoTPCTRD[index]:0;}        //TPC-TRD    matching map
75   THnSparse*  GetResHistoTPCTOF(Int_t index)   const { return (index<5) ? fResHistoTPCTOF[index]:0;}        //TPC-TOF    matching map
76
77   void        BookDistortionMaps();      // book histograms
78   void        FillResHistoTPCCE(const AliExternalTrackParam * pTPCIn, const AliExternalTrackParam * pTPCOut );       // fill residual histo
79   void        FillResHistoTPCITS(const AliExternalTrackParam * pTPCIn, const AliExternalTrackParam * pITSOut );       // fill residual histo
80   void        FillResHistoTPC(const AliESDtrack * pTrack);
81   void        FillResHistoTPCTRD(const AliExternalTrackParam * pTPCOut, const AliExternalTrackParam * pTRDIn );
82   void        FillResHistoTPCTOF(const AliExternalTrackParam * pTPCOut, const AliExternalTrackParam * pTOFIn );
83
84   TObjArray * GetLaserArrayA() const { return fArrayLaserA;}
85   TObjArray * GetLaserArrayC() const { return fArrayLaserC;}
86
87   Int_t GetEntries() const {if (fResHistoTPCTOF[0]) return fResHistoTPCITS[0]->GetEntries(); else return 0;}
88
89   void   SetCutTracks(Int_t maxTracks)  { fCutTracks = maxTracks; }  // set maximal number of tracks
90   Int_t  GetCutTracks() const { return fCutTracks; }    // retun maximal number of tracks
91
92   static Double_t fgResHistoMergeCut;
93   static void SetResHistoMergeCut(Double_t d) {fgResHistoMergeCut=d;}
94
95 protected:
96   void ResetCurrent();                  // reset current values
97   Int_t              fMemoryMode;       // 0 -do not fill THnSparse with residuals  1- fill only important QA THn 2 - Fill all THnsparse for calibration
98   AliTPCcalibLaser * fLaser;            //! laser calibration
99   //
100   // current information
101   //
102   Float_t fDz;          //! current delta z
103   
104   // cuts
105   //
106   Float_t fCutMaxD;     // maximal distance in rfi ditection
107   Float_t fCutMaxDz;    // maximal distance in z ditection
108   Float_t fCutTheta;    // maximal distance in theta ditection
109   Float_t fCutMinDir;   // direction vector products
110   Int_t   fCutTracks;   // maximal number of tracks
111  
112
113   TH1F* fCosmiMatchingHisto[10];        // cosmic matching histogram
114   //
115   // distortion maps
116   //
117   THnSparse*  fResHistoTPCCE[5];        //TPC-TPCE matching map
118   THnSparse*  fResHistoTPCITS[5];        //TPC-ITS    matching map
119   THnSparse*  fResHistoTPCvertex[5];           //TPC-ITS    vertex matching map
120   THnSparse*  fResHistoTPCTRD[5];        //TPC-TRD    matching map
121   THnSparse*  fResHistoTPCTOF[5];        //TPC-TRD    matching map
122   // laser histo
123   THnSparse * fHistVdriftLaserA[3];     //Histograms for V drift from laser
124   THnSparse * fHistVdriftLaserC[3];     //Histograms for V drift from laser
125   TObjArray *fArrayLaserA;              //Object array of driftvelocity laserA
126   TObjArray *fArrayLaserC;              //Object array of driftvelocity laserC
127   //
128   // TPC vertex A side C side histo
129   //
130   THnSparse * fTPCVertex[12];           // TPC vertex histograms A side c side - A+C -ESD
131   THnSparse * fTPCVertexCorrelation[5];       // TPC vertex correlation A side C side with TPC vertex and ITS vertex     
132   // DELTA Z histo
133   TObjArray* fArrayDz;                  // array of DZ histograms for different triggers
134   TObjArray* fAlignITSTPC;              // alignemnt array ITS TPC match
135   TObjArray* fAlignTRDTPC;              // alignemnt array TRD TPC match
136   TObjArray* fAlignTOFTPC;              // alignemnt array TOF TPC match
137   Int_t      fTimeKalmanBin;            // width of Kalman bin - time in seconds
138   Int_t    fTimeBins;                   //Bins time
139   Double_t fTimeStart;                  //Start time
140   Double_t fTimeEnd;                    //End time
141   Int_t    fPtBins;                     //Bins pt
142   Double_t fPtStart;                    //Start pt
143   Double_t fPtEnd;                      //End pt
144   Int_t    fVdriftBins;                 //Bins vdrift
145   Double_t fVdriftStart;                //Start vdrift
146   Double_t fVdriftEnd;                  //End vdrift
147   Int_t    fRunBins;                    //Bins run
148   Double_t fRunStart;                   //Start run
149   Double_t fRunEnd;                     //End run
150   Int_t    fBinsVdrift[4];              //Bins for vdrift
151   Double_t fXminVdrift[4];              //Xmax for vdrift
152   Double_t fXmaxVdrift[4];              //Xmin for vdrift
153
154 private:
155   AliTPCcalibTime(const AliTPCcalibTime&); 
156   AliTPCcalibTime& operator=(const AliTPCcalibTime&); 
157
158   ClassDef(AliTPCcalibTime, 10); 
159 };
160
161 #endif
162
163