]>
Commit | Line | Data |
---|---|---|
c6914c83 | 1 | #ifndef ALITPCCALIBLASER_H |
2 | #define ALITPCCALIBLASER_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | //// | |
8 | //// | |
9 | //// | |
10 | ||
11 | #include "TObject.h" | |
12 | #include "TObjArray.h" | |
13 | #include "TLinearFitter.h" | |
14 | #include "AliTPCcalibBase.h" | |
15 | #include "TH1.h" | |
be113f6e | 16 | #include "TH2F.h" |
d3ce44cb | 17 | #include "THnSparse.h" |
c6914c83 | 18 | |
c18f4385 | 19 | |
c6914c83 | 20 | class AliExternalTrackParam; |
21 | class AliESDtrack; | |
e9f38a4b | 22 | class AliESDEvent; |
23 | class AliESDfriend; | |
c6914c83 | 24 | class TGraphErrors; |
1fd56785 | 25 | class TTree; |
be113f6e | 26 | class TH2F; |
27 | class AliTPCLaserTrack; | |
592a0c8f | 28 | class TCut; |
c18f4385 | 29 | |
c6914c83 | 30 | class AliTPCcalibLaser:public AliTPCcalibBase { |
31 | public: | |
32 | AliTPCcalibLaser(); | |
3ac724f0 | 33 | AliTPCcalibLaser(const Text_t *name, const Text_t *title, Bool_t full=kTRUE); |
be113f6e | 34 | AliTPCcalibLaser(const AliTPCcalibLaser& laser); |
35 | AliTPCcalibLaser & operator=(const AliTPCcalibLaser& calibLaser); | |
c6914c83 | 36 | virtual ~AliTPCcalibLaser(); |
e9f38a4b | 37 | virtual void Process(AliESDEvent *event); |
592a0c8f | 38 | Int_t GetNtracks(){return fNtracks;} |
c6914c83 | 39 | virtual void Analyze(); |
76c58ee2 | 40 | static void DumpLaser(const char *finput, Int_t run); |
41 | static void FitLaserClusters(Int_t run); | |
c03e3250 | 42 | virtual Long64_t Merge(TCollection *li); |
cc65e4f5 | 43 | virtual void DumpMeanInfo(Int_t run=-1); |
592a0c8f | 44 | static void DumpScanInfo(TTree * tree, const char * cutUser="entries>300&&(gz2<0.15&&gphi2<0.1&&gp42<0.02&&abs(gp41)<0.03)"); |
e5c59218 | 45 | static void DumpFitInfo(TTree * chainFit, Int_t id); |
be113f6e | 46 | static TH1* GetLaserProjection(TH2F* his, Int_t laser){return his->ProjectionY("aaa",laser+1,laser+1);} |
e9f38a4b | 47 | // |
48 | // | |
49 | virtual void DumpLaser(Int_t id); | |
61ae0623 | 50 | virtual void RefitLaserJW(Int_t id); |
c18f4385 | 51 | void FitDriftV(); |
f6220766 | 52 | Bool_t FitDriftV(Float_t minFraction); |
53 | // | |
be113f6e | 54 | void MakeDistHisto(Int_t id); |
61ae0623 | 55 | void AddCut(Double_t xcut, Double_t ycut, Double_t ncl){fEdgeXcuts[fNcuts]=xcut; fEdgeYcuts[fNcuts]=ycut; fNClCuts[fNcuts]=ncl; fNcuts++;} |
56 | ||
e9f38a4b | 57 | Int_t FindMirror(AliESDtrack *track, AliTPCseed *seed); |
c18f4385 | 58 | Bool_t AcceptLaser(Int_t id); |
be113f6e | 59 | Float_t GetDistance(AliExternalTrackParam *track, AliTPCLaserTrack *ltrp); |
60 | void MakeFitHistos(); | |
994c9f5b | 61 | void UpdateFitHistos(); |
be113f6e | 62 | void MergeFitHistos(AliTPCcalibLaser * add); |
1aa15e8d | 63 | void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);}; |
64 | void Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);} | |
65 | // | |
7af539c6 | 66 | void SetBeamParameters(TVectorD& meanOffset, TVectorD& meanSlope, |
67 | TVectorD& sectorArray, Int_t option); | |
41a1f702 | 68 | void SetFixedDriftVConstant(Double_t aside0, Double_t aside1, |
69 | Double_t cside0, Double_t cside1) | |
70 | {fUseFixedDriftV = 1; fFixedFitAside0=aside0; fFixedFitAside1=aside1; | |
71 | fFixedFitCside0=cside0; fFixedFitCside1=cside1;} | |
be113f6e | 72 | |
e9f38a4b | 73 | AliESDEvent * fESD; //! ESD event - not OWNER |
74 | AliESDfriend * fESDfriend; //! ESD event - not OWNER | |
592a0c8f | 75 | Int_t fNtracks; //! counter of associated laser tracks |
76 | // | |
e9f38a4b | 77 | TObjArray fTracksMirror; //! tracks with mirror information |
78 | TObjArray fTracksEsd; //! tracks with reconstructed information - | |
79 | // not owner ESD | |
80 | TObjArray fTracksEsdParam; //! tracks with reconstructed information - | |
81 | // is owner ESD at mirror | |
82 | TObjArray fTracksTPC; //! tracks with reconstructed information - TPC | |
be113f6e | 83 | Int_t fCounter[336]; //! counter of usage |
84 | Float_t fClusterCounter[336]; //!couter of clusters in "sensitive are" | |
85 | Float_t fClusterSatur[336]; //!couter of saturated clusters in "sensitive are" | |
3ac724f0 | 86 | Bool_t fFullCalib; // do full calibrration |
be113f6e | 87 | Float_t fFitZ[336]; //fitted z position |
c18f4385 | 88 | // |
2b35e8e6 | 89 | TObjArray fDeltaZ; //-> array of histograms of delta z for each track |
be113f6e | 90 | TObjArray fDeltaP3; //-> array of histograms of P3 for each track |
91 | TObjArray fDeltaP4; //-> array of histograms of P4 for each track | |
592a0c8f | 92 | TObjArray fDeltaPhi; //-> array of histograms of delta Phi for each track |
93 | TObjArray fDeltaPhiP; //-> array of histograms of delta Phi direction for each track | |
2b35e8e6 | 94 | TObjArray fSignals; //->Array of dedx signals |
7af539c6 | 95 | |
95a0e09b | 96 | // |
be113f6e | 97 | // Refit residuals histogram |
98 | // | |
d3ce44cb | 99 | THnSparseS *fHisLaser; // N dim histogram of laser |
76c58ee2 | 100 | THnSparseS *fHisLaserPad; // N dim histogram of laser |
101 | THnSparseS *fHisLaserTime; // N dim histogram of laser | |
102 | // | |
be113f6e | 103 | TH2F *fHisNclIn; //->Number of clusters inner |
104 | TH2F *fHisNclOut; //->Number of clusters outer | |
105 | TH2F *fHisNclIO; //->Number of cluster inner outer | |
106 | TH2F *fHisLclIn; //->Level arm inner | |
107 | TH2F *fHisLclOut; //->Level arm outer | |
108 | TH2F *fHisLclIO; //->Level aram inner outer | |
109 | ||
110 | TH2F *fHisdEdx; //->dEdx histo | |
111 | TH2F *fHisdZfit; //->distance to the mirror after linear fit | |
112 | // | |
113 | // | |
114 | TH2F *fHisChi2YIn1; //->chi2 y inner - line | |
115 | TH2F *fHisChi2YOut1; //->chi2 y inner - line | |
116 | TH2F *fHisChi2YIn2; //->chi2 y inner - parabola | |
117 | TH2F *fHisChi2YOut2; //->chi2 y inner - parabola | |
118 | TH2F *fHisChi2YIO1; //->chi2 y IO - common | |
119 | TH2F *fHisChi2ZIn1; //->chi2 z inner - line | |
120 | TH2F *fHisChi2ZOut1; //->chi2 z inner - line | |
121 | TH2F *fHisChi2ZIn2; //->chi2 z inner - parabola | |
122 | TH2F *fHisChi2ZOut2; //->chi2 z inner - parabola | |
123 | TH2F *fHisChi2ZIO1; //->chi2 z IO - common | |
124 | // | |
125 | // | |
126 | TH2F *fHisPy1vP0; //-> delta y P0outer-P0inner - line | |
127 | TH2F *fHisPy2vP0; //-> delta y P0outer-P0inner - parabola | |
128 | TH2F *fHisPy3vP0; //-> delta y P0outer-P0inner - common parabola | |
129 | TH2F *fHisPy1vP1; //-> delta ky P1outer-P1inner - line | |
130 | TH2F *fHisPy2vP1; //-> delta ky P1outer-P1inner - parabola | |
131 | TH2F *fHisPy3vP1; //-> delta ky P1outer-P1inner - common parabola | |
132 | TH2F *fHisPy2vP2In; //-> Curv P2inner - parabola | |
133 | TH2F *fHisPy2vP2Out; //-> Curv P2outer - parabola | |
134 | TH2F *fHisPy3vP2IO; //-> Curv P2outerinner - common parabola | |
135 | // | |
136 | // | |
137 | TH2F *fHisPz1vP0; //-> delta z P0outer-P0inner - line | |
138 | TH2F *fHisPz2vP0; //-> delta z P0outer-P0inner - parabola | |
139 | TH2F *fHisPz3vP0; //-> delta z P0outer-P0inner - common parabola | |
140 | TH2F *fHisPz1vP1; //-> delta kz P1outer-P1inner - line | |
141 | TH2F *fHisPz2vP1; //-> delta kz P1outer-P1inner - parabola | |
142 | TH2F *fHisPz3vP1; //-> delta kz P1outer-P1inner - common parabola | |
143 | TH2F *fHisPz2vP2In; //-> Curv P2inner - parabola | |
144 | TH2F *fHisPz2vP2Out; //-> Curv P2outer - parabola | |
145 | TH2F *fHisPz3vP2IO; //-> Curv P2outerinner - common parabola | |
146 | // | |
95a0e09b | 147 | // Residual histograms |
148 | // | |
149 | TObjArray fDeltaYres; //-> array of histograms of delta y residuals for each track | |
150 | TObjArray fDeltaZres; //-> array of histograms of delta z residuals for each track | |
108953e9 | 151 | TObjArray fDeltaYres2; //-> array of histograms of delta y residuals for each track |
152 | TObjArray fDeltaZres2; //-> array of histograms of delta z residuals for each track | |
7af539c6 | 153 | TObjArray fDeltaYresAbs; //-> array of histograms of absolute delta y residuals for each track |
41a1f702 | 154 | TH1F *fHisYAbsErrors; //-> Number of errors (wrongly assigned tracks) per beam |
7af539c6 | 155 | TObjArray fDeltaZresAbs; //-> array of histograms of absolute delta z residuals for each track |
41a1f702 | 156 | TH1F *fHisZAbsErrors; //-> Number of errors (wrongly assigned tracks or missing drift velocity) per beam |
108953e9 | 157 | // TObjArray fDeltaYres3; //-> array of histograms of delta y residuals for each track |
158 | //TObjArray fDeltaZres3; //-> array of histograms of delta z residuals for each track | |
159 | ||
95a0e09b | 160 | // |
c18f4385 | 161 | TVectorD* fFitAside; //! drift fit - A side |
162 | TVectorD* fFitCside; //! drift fit - C- side | |
108953e9 | 163 | TVectorD* fFitACside; //! drift fit - A+C- side |
c18f4385 | 164 | // |
61ae0623 | 165 | TVectorD fEdgeXcuts; //! cuts in local x direction; used in the refit of the laser tracks |
166 | TVectorD fEdgeYcuts; //! cuts in local y direction; used in the refit of the laser tracks | |
167 | TVectorD fNClCuts; //! cuts on the number of clusters per tracklet; used in the refit of the laser tracks | |
168 | Int_t fNcuts; //! number of cuts | |
7af539c6 | 169 | TVectorD fBeamSectorOuter; //! sector map for beams in outer sector |
170 | TVectorD fBeamSectorInner; //! sector map for beams in inner sector | |
171 | TVectorD fBeamOffsetYOuter; //! absolute y beam offset in outer sector | |
172 | TVectorD fBeamSlopeYOuter; //! absolute y beam slope in outer sector | |
173 | TVectorD fBeamOffsetYInner; //! absolute y beam offset in inner sector | |
174 | TVectorD fBeamSlopeYInner; //! absolute y beam slope in inner sector | |
175 | TVectorD fBeamOffsetZOuter; //! absolute z beam offset in outer sectror | |
176 | TVectorD fBeamSlopeZOuter; //! absolute z beam slope in outer sector | |
177 | TVectorD fBeamOffsetZInner; //! absolute z beam offset in inner sectror | |
178 | TVectorD fBeamSlopeZInner; //! absolute z beam slope in inner sector | |
179 | Bool_t fInverseSlopeZ; //! invert slope in z - mismatch between database and lasers | |
41a1f702 | 180 | Int_t fUseFixedDriftV; // flag for fixed drift velocity for abs res |
181 | Double_t fFixedFitAside0; // Fixed drift v constant 0 - A side | |
182 | Double_t fFixedFitAside1; // Fixed drift v constant 1 - A side | |
183 | Double_t fFixedFitCside0; // Fixed drift v constant 0 - C side | |
184 | Double_t fFixedFitCside1; // Fixed drift v constant 1 - C side | |
61ae0623 | 185 | // |
c18f4385 | 186 | private: |
76c58ee2 | 187 | ClassDef(AliTPCcalibLaser,6) |
c6914c83 | 188 | }; |
189 | ||
190 | ||
191 | ||
192 | ||
193 | ||
194 | #endif |