1 #ifndef ALITPCCALIBLASER_H
2 #define ALITPCCALIBLASER_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
12 #include "TObjArray.h"
13 #include "TLinearFitter.h"
14 #include "AliTPCcalibBase.h"
19 class AliExternalTrackParam;
26 class AliTPCLaserTrack;
29 class AliTPCcalibLaser:public AliTPCcalibBase {
32 AliTPCcalibLaser(const Text_t *name, const Text_t *title, Bool_t full=kTRUE);
33 AliTPCcalibLaser(const AliTPCcalibLaser& laser);
34 AliTPCcalibLaser & operator=(const AliTPCcalibLaser& calibLaser);
35 virtual ~AliTPCcalibLaser();
36 virtual void Process(AliESDEvent *event);
37 Int_t GetNtracks(){return fNtracks;}
38 virtual void Analyze();
39 virtual Long64_t Merge(TCollection *li);
40 virtual void DumpMeanInfo(Float_t bfield, Int_t run=-1);
41 static void DumpScanInfo(TTree * tree, const char * cutUser="entries>300&&(gz2<0.15&&gphi2<0.1&&gp42<0.02&&abs(gp41)<0.03)");
42 static void DumpFitInfo(TTree * chainFit, Int_t id);
43 static TH1* GetLaserProjection(TH2F* his, Int_t laser){return his->ProjectionY("aaa",laser+1,laser+1);}
46 virtual void DumpLaser(Int_t id);
47 virtual void RefitLaserJW(Int_t id);
49 void MakeDistHisto(Int_t id);
50 void AddCut(Double_t xcut, Double_t ycut, Double_t ncl){fEdgeXcuts[fNcuts]=xcut; fEdgeYcuts[fNcuts]=ycut; fNClCuts[fNcuts]=ncl; fNcuts++;}
52 Int_t FindMirror(AliESDtrack *track, AliTPCseed *seed);
53 Bool_t AcceptLaser(Int_t id);
54 Float_t GetDistance(AliExternalTrackParam *track, AliTPCLaserTrack *ltrp);
56 void MergeFitHistos(AliTPCcalibLaser * add);
57 void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
58 void Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);}
61 AliESDEvent * fESD; //! ESD event - not OWNER
62 AliESDfriend * fESDfriend; //! ESD event - not OWNER
63 Int_t fNtracks; //! counter of associated laser tracks
65 TObjArray fTracksMirror; //! tracks with mirror information
66 TObjArray fTracksEsd; //! tracks with reconstructed information -
68 TObjArray fTracksEsdParam; //! tracks with reconstructed information -
69 // is owner ESD at mirror
70 TObjArray fTracksTPC; //! tracks with reconstructed information - TPC
71 Int_t fCounter[336]; //! counter of usage
72 Float_t fClusterCounter[336]; //!couter of clusters in "sensitive are"
73 Float_t fClusterSatur[336]; //!couter of saturated clusters in "sensitive are"
74 Bool_t fFullCalib; // do full calibrration
75 Float_t fFitZ[336]; //fitted z position
77 TObjArray fDeltaZ; //-> array of histograms of delta z for each track
78 TObjArray fDeltaP3; //-> array of histograms of P3 for each track
79 TObjArray fDeltaP4; //-> array of histograms of P4 for each track
80 TObjArray fDeltaPhi; //-> array of histograms of delta Phi for each track
81 TObjArray fDeltaPhiP; //-> array of histograms of delta Phi direction for each track
82 TObjArray fSignals; //->Array of dedx signals
84 // Refit residuals histogram
86 TH2F *fHisNclIn; //->Number of clusters inner
87 TH2F *fHisNclOut; //->Number of clusters outer
88 TH2F *fHisNclIO; //->Number of cluster inner outer
89 TH2F *fHisLclIn; //->Level arm inner
90 TH2F *fHisLclOut; //->Level arm outer
91 TH2F *fHisLclIO; //->Level aram inner outer
93 TH2F *fHisdEdx; //->dEdx histo
94 TH2F *fHisdZfit; //->distance to the mirror after linear fit
97 TH2F *fHisChi2YIn1; //->chi2 y inner - line
98 TH2F *fHisChi2YOut1; //->chi2 y inner - line
99 TH2F *fHisChi2YIn2; //->chi2 y inner - parabola
100 TH2F *fHisChi2YOut2; //->chi2 y inner - parabola
101 TH2F *fHisChi2YIO1; //->chi2 y IO - common
102 TH2F *fHisChi2ZIn1; //->chi2 z inner - line
103 TH2F *fHisChi2ZOut1; //->chi2 z inner - line
104 TH2F *fHisChi2ZIn2; //->chi2 z inner - parabola
105 TH2F *fHisChi2ZOut2; //->chi2 z inner - parabola
106 TH2F *fHisChi2ZIO1; //->chi2 z IO - common
109 TH2F *fHisPy1vP0; //-> delta y P0outer-P0inner - line
110 TH2F *fHisPy2vP0; //-> delta y P0outer-P0inner - parabola
111 TH2F *fHisPy3vP0; //-> delta y P0outer-P0inner - common parabola
112 TH2F *fHisPy1vP1; //-> delta ky P1outer-P1inner - line
113 TH2F *fHisPy2vP1; //-> delta ky P1outer-P1inner - parabola
114 TH2F *fHisPy3vP1; //-> delta ky P1outer-P1inner - common parabola
115 TH2F *fHisPy2vP2In; //-> Curv P2inner - parabola
116 TH2F *fHisPy2vP2Out; //-> Curv P2outer - parabola
117 TH2F *fHisPy3vP2IO; //-> Curv P2outerinner - common parabola
120 TH2F *fHisPz1vP0; //-> delta z P0outer-P0inner - line
121 TH2F *fHisPz2vP0; //-> delta z P0outer-P0inner - parabola
122 TH2F *fHisPz3vP0; //-> delta z P0outer-P0inner - common parabola
123 TH2F *fHisPz1vP1; //-> delta kz P1outer-P1inner - line
124 TH2F *fHisPz2vP1; //-> delta kz P1outer-P1inner - parabola
125 TH2F *fHisPz3vP1; //-> delta kz P1outer-P1inner - common parabola
126 TH2F *fHisPz2vP2In; //-> Curv P2inner - parabola
127 TH2F *fHisPz2vP2Out; //-> Curv P2outer - parabola
128 TH2F *fHisPz3vP2IO; //-> Curv P2outerinner - common parabola
130 // Residual histograms
132 TObjArray fDeltaYres; //-> array of histograms of delta y residuals for each track
133 TObjArray fDeltaZres; //-> array of histograms of delta z residuals for each track
134 TObjArray fDeltaYres2; //-> array of histograms of delta y residuals for each track
135 TObjArray fDeltaZres2; //-> array of histograms of delta z residuals for each track
136 // TObjArray fDeltaYres3; //-> array of histograms of delta y residuals for each track
137 //TObjArray fDeltaZres3; //-> array of histograms of delta z residuals for each track
140 TVectorD* fFitAside; //! drift fit - A side
141 TVectorD* fFitCside; //! drift fit - C- side
142 TVectorD* fFitACside; //! drift fit - A+C- side
144 TVectorD fEdgeXcuts; //! cuts in local x direction; used in the refit of the laser tracks
145 TVectorD fEdgeYcuts; //! cuts in local y direction; used in the refit of the laser tracks
146 TVectorD fNClCuts; //! cuts on the number of clusters per tracklet; used in the refit of the laser tracks
147 Int_t fNcuts; //! number of cuts
150 ClassDef(AliTPCcalibLaser,3)