Line data Source code
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"
16 : #include "TH2F.h"
17 : #include "THnSparse.h"
18 :
19 :
20 : class AliExternalTrackParam;
21 : class AliESDtrack;
22 : class AliESDEvent;
23 : class AliESDfriend;
24 : class TGraphErrors;
25 : class TTree;
26 : class TH2F;
27 : class AliTPCLaserTrack;
28 : class TCut;
29 :
30 : class AliTPCcalibLaser:public AliTPCcalibBase {
31 : public:
32 : AliTPCcalibLaser();
33 : AliTPCcalibLaser(const Text_t *name, const Text_t *title, Bool_t full=kTRUE);
34 : AliTPCcalibLaser(const AliTPCcalibLaser& laser);
35 : AliTPCcalibLaser & operator=(const AliTPCcalibLaser& calibLaser);
36 : virtual ~AliTPCcalibLaser();
37 : virtual void Process(AliESDEvent *event);
38 0 : Int_t GetNtracks(){return fNtracks;}
39 : virtual void Analyze();
40 : static void DumpLaser(const char *finput, Int_t run);
41 : static void FitLaserClusters(Int_t run);
42 : virtual Long64_t Merge(TCollection *li);
43 : virtual void DumpMeanInfo(Int_t run=-1);
44 : static void DumpScanInfo(TTree * tree, const char * cutUser="entries>300&&(gz2<0.15&&gphi2<0.1&&gp42<0.02&&abs(gp41)<0.03)");
45 : static void DumpFitInfo(TTree * chainFit, Int_t id);
46 0 : static TH1* GetLaserProjection(TH2F* his, Int_t laser){return his->ProjectionY("aaa",laser+1,laser+1);}
47 : //
48 : //
49 : virtual void DumpLaser(Int_t id);
50 : virtual void RefitLaserJW(Int_t id);
51 : void FitDriftV();
52 : Bool_t FitDriftV(Float_t minFraction);
53 : //
54 : void MakeDistHisto(Int_t id);
55 0 : void AddCut(Double_t xcut, Double_t ycut, Double_t ncl){fEdgeXcuts[fNcuts]=xcut; fEdgeYcuts[fNcuts]=ycut; fNClCuts[fNcuts]=ncl; fNcuts++;}
56 :
57 : Int_t FindMirror(AliESDtrack *track, AliTPCseed *seed);
58 : Bool_t AcceptLaser(Int_t id);
59 : Float_t GetDistance(AliExternalTrackParam *track, AliTPCLaserTrack *ltrp);
60 : void MakeFitHistos();
61 : void UpdateFitHistos();
62 : void MergeFitHistos(AliTPCcalibLaser * add);
63 0 : void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
64 0 : void Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);}
65 : //
66 : void SetBeamParameters(TVectorD& meanOffset, TVectorD& meanSlope,
67 : TVectorD& sectorArray, Int_t option);
68 : void SetFixedDriftVConstant(Double_t aside0, Double_t aside1,
69 : Double_t cside0, Double_t cside1)
70 0 : {fUseFixedDriftV = 1; fFixedFitAside0=aside0; fFixedFitAside1=aside1;
71 0 : fFixedFitCside0=cside0; fFixedFitCside1=cside1;}
72 :
73 : AliESDEvent * fESD; //! ESD event - not OWNER
74 : AliESDfriend * fESDfriend; //! ESD event - not OWNER
75 : Int_t fNtracks; //! counter of associated laser tracks
76 : //
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
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"
86 : Bool_t fFullCalib; // do full calibrration
87 : Float_t fFitZ[336]; //fitted z position
88 : //
89 : TObjArray fDeltaZ; //-> array of histograms of delta z for each track
90 : TObjArray fDeltaP3; //-> array of histograms of P3 for each track
91 : TObjArray fDeltaP4; //-> array of histograms of P4 for each track
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
94 : TObjArray fSignals; //->Array of dedx signals
95 :
96 : //
97 : // Refit residuals histogram
98 : //
99 : THnSparseS *fHisLaser; // N dim histogram of laser
100 : THnSparseS *fHisLaserPad; // N dim histogram of laser
101 : THnSparseS *fHisLaserTime; // N dim histogram of laser
102 : //
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 : //
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
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
153 : TObjArray fDeltaYresAbs; //-> array of histograms of absolute delta y residuals for each track
154 : TH1F *fHisYAbsErrors; //-> Number of errors (wrongly assigned tracks) per beam
155 : TObjArray fDeltaZresAbs; //-> array of histograms of absolute delta z residuals for each track
156 : TH1F *fHisZAbsErrors; //-> Number of errors (wrongly assigned tracks or missing drift velocity) per beam
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 :
160 : //
161 : TVectorD* fFitAside; //! drift fit - A side
162 : TVectorD* fFitCside; //! drift fit - C- side
163 : TVectorD* fFitACside; //! drift fit - A+C- side
164 : //
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
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
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
185 : //
186 : private:
187 6 : ClassDef(AliTPCcalibLaser,6)
188 : };
189 :
190 :
191 :
192 :
193 :
194 : #endif
|