1 #ifndef AliTPCCALIBTRACKS_H
2 #define AliTPCCALIBTRACKS_H
5 ///////////////////////////////////////////////////////////////////////////////
7 // Class to analyse tracks for calibration //
8 // to be used as a component in AliTPCSelectorTracks //
9 // In the constructor you have to specify name and title //
10 // to get the Object out of a file. //
11 // The parameter 'clusterParam', a AliTPCClusterParam object //
12 // (needed for TPC cluster error and shape parameterization) //
13 // Normally you get this object out of the file 'TPCClusterParam.root' //
14 // In the parameter 'cuts' the cuts are specified, that decide //
15 // weather a track will be accepted for calibration or not. //
18 ///////////////////////////////////////////////////////////////////////////////
22 #include <AliTPCcalibBase.h>
23 #include "THnSparse.h"
32 class TTreeSRedirector;
34 class AliTPCClusterParam;
35 class TTreeSRedirector;
39 class AliTPCclusterMI;
40 class AliTPCcalibTracksCuts;
51 class AliTPCcalibTracks : public AliTPCcalibBase {
53 AliTPCcalibTracks(); // default constructor
54 AliTPCcalibTracks(const AliTPCcalibTracks&calibTracks); // copy constructor
55 AliTPCcalibTracks(const Text_t *name, const Text_t *title, AliTPCClusterParam *clusterParam, AliTPCcalibTracksCuts* cuts, Int_t logLevel = 0);
56 AliTPCcalibTracks & operator=(const AliTPCcalibTracks& calibTracks);
58 virtual ~AliTPCcalibTracks(); // destructor
60 virtual void Process(AliTPCseed *track); // to be called by the Selector
61 //void Process(AliESDEvent *event) {AliTPCcalibBase::Process(event);}
62 void Process(AliVEvent *event) {AliTPCcalibBase::Process(event);}
63 //void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);}
64 void Process(AliVTrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);}
65 virtual Long64_t Merge(TCollection *li);
66 void AddHistos(AliTPCcalibTracks* calib);
67 void MakeResPlotsQTree(Int_t minEntries = 100, const char* pathName = "plots");
68 void MakeReport(Int_t stat, const char* pathName = "plots"); // calls all functions that procude pictures, results are written to pathName, stat is the minimal statistic threshold
70 Int_t AcceptTrack(AliTPCseed * track);
71 void FillResolutionHistoLocal(AliTPCseed * track); // the MAIN-FUNCTION, called for each track to fill the histograms, called by Process(...)
74 void SetStyle() const;
76 TObjArray* GetfArrayQDY() const {return fArrayQDY;}
77 TObjArray* GetfArrayQDZ() const {return fArrayQDZ;}
78 TObjArray* GetfArrayQRMSY() const {return fArrayQRMSY;}
79 TObjArray* GetfArrayQRMSZ() const {return fArrayQRMSZ;}
80 TObjArray* GetfResolY() const {return fResolY;}
81 TObjArray* GetfResolZ() const {return fResolZ;}
82 TObjArray* GetfRMSY() const {return fRMSY;}
83 TObjArray* GetfRMSZ() const {return fRMSZ;}
84 TH1I* GetfRejectedTracksHisto() const {return fRejectedTracksHisto;}
85 TH2I* GetfClusterCutHisto() const {return fClusterCutHisto;}
86 AliTPCCalPad* GetfCalPadClusterPerPad() const {return fCalPadClusterPerPad; }
87 AliTPCCalPad* GetfCalPadClusterPerPadRaw() const {return fCalPadClusterPerPadRaw;}
88 AliTPCcalibTracksCuts* GetCuts() {return fCuts;}
89 void MakeHistos(); //make THnSparse
90 int UpdateClusterParam( AliTPCClusterParam *cParam, Bool_t MirrorZ=1, Bool_t MirrorPad=1, Bool_t MirrorAngle=1, Int_t MinStat=10 );
92 static void MakeSummaryTree(THnSparse *hisInput, TTreeSRedirector *pcstream, Int_t ptype);
93 static int GetTHnStat( const THnBase *H, THnBase *&Mean, THnBase *&Sigma, THnBase *&Entr );
94 static int CreateWaveCorrection( const THnBase *DeltaY, THnBase *&MeanY, THnBase *&SigmaY, THnBase *&EntrY,
95 Bool_t MirrorZ=1, Bool_t MirrorPad=1, Bool_t MirrorAngle=1, Int_t MinStat=10 );
97 static void SetMergeEntriesCut(Double_t entriesCut){fgkMergeEntriesCut = entriesCut;}
103 static Int_t GetBin(Float_t q, Int_t pad);
104 static Int_t GetBin(Int_t iq, Int_t pad);
105 static Float_t GetQ(Int_t bin);
106 static Float_t GetPad(Int_t bin);
107 AliTPCClusterParam *fClusterParam; // pointer to cluster parameterization
110 THnSparse *fHisDeltaY; // THnSparse - delta Y
111 THnSparse *fHisDeltaZ; // THnSparse - delta Z
112 THnSparse *fHisRMSY; // THnSparse - rms Y
113 THnSparse *fHisRMSZ; // THnSparse - rms Z
114 THnSparse *fHisQmax; // THnSparse - qmax
115 THnSparse *fHisQtot; // THnSparse - qtot
118 Double_t fPtDownscaleRatio; // pt downscaling ratio (use subsample of data)
119 Double_t fQDownscaleRatio; // Q downscaling ratio (use subsample of dta)
121 TObjArray *fArrayQDY; // q binned delta Y histograms
122 TObjArray *fArrayQDZ; // q binned delta Z histograms
123 TObjArray *fArrayQRMSY; // q binned delta Y histograms
124 TObjArray *fArrayQRMSZ; // q binned delta Z histograms
126 TObjArray *fResolY; // array of resolution histograms Y
127 TObjArray *fResolZ; // array of resolution histograms Z
128 TObjArray *fRMSY; // array of RMS histograms Y
129 TObjArray *fRMSZ; // array of RMS histograms Z
130 AliTPCcalibTracksCuts *fCuts; // object with cuts, that is passed to the constructor
131 TH1I *fRejectedTracksHisto; // histogram of rejecteced tracks, the number coresponds to the failed cut
132 TH2I *fClusterCutHisto; // histogram showing in which padRow the clusters were cutted by which criterium
133 AliTPCCalPad *fCalPadClusterPerPad; // AliTPCCalPad showing the number of clusters per Pad
134 AliTPCCalPad *fCalPadClusterPerPadRaw; // AliTPCCalPad showing the number of clusters per Pad before cuts on clusters are applied
135 static Double_t fgkMergeEntriesCut;//maximal number of entries for merging -can be modified via setter
137 ClassDef(AliTPCcalibTracks,2)