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