]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCcalibTracks.h
Sorting graphs
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibTracks.h
CommitLineData
10757ee9 1#ifndef AliTPCCALIBTRACKS_H
2#define AliTPCCALIBTRACKS_H
3
4
5///////////////////////////////////////////////////////////////////////////////
6// //
7// Class to analyse tracks for calibration //
46e89793 8// to be used as a component in AliTPCSelectorTracks //
10757ee9 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. //
16// //
17// //
18///////////////////////////////////////////////////////////////////////////////
19
20
21
c32da879 22#include <AliTPCcalibBase.h>
7d14c1c1 23#include "THnSparse.h"
24
10757ee9 25class TF2;
26class TH3F;
27class TH1F;
28class TH1I;
29class TH2I;
30class TH2D;
31class TCollection;
32class TTreeSRedirector;
33class TLinearFitter;
34class AliTPCClusterParam;
35class TTreeSRedirector;
36class AliTPCROC;
37class AliTPCseed;
38class AliESDtrack;
39class AliTPCclusterMI;
40class AliTPCcalibTracksCuts;
10757ee9 41class AliTPCCalPad;
42class TChain;
9c171b96 43class TTree;
10757ee9 44class TMutex;
d11c5a19 45class AliESDEvent;
10757ee9 46
47using namespace std;
48
c32da879 49class AliTPCcalibTracks : public AliTPCcalibBase {
10757ee9 50public :
51 AliTPCcalibTracks(); // default constructor
b42cf9ed 52 AliTPCcalibTracks(const AliTPCcalibTracks&calibTracks); // copy constructor
9c171b96 53 AliTPCcalibTracks(const Text_t *name, const Text_t *title, AliTPCClusterParam *clusterParam, AliTPCcalibTracksCuts* cuts, Int_t logLevel = 0);
b42cf9ed 54 AliTPCcalibTracks & operator=(const AliTPCcalibTracks& calibTracks);
9c171b96 55
56 virtual ~AliTPCcalibTracks(); // destructor
57
0ffd2ae1 58 virtual void Process(AliTPCseed *track); // to be called by the Selector
d11c5a19 59 void Process(AliESDEvent *event) {AliTPCcalibBase::Process(event);};
60 void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
9c171b96 61 virtual Long64_t Merge(TCollection *li);
af6a50bb 62 void AddHistos(AliTPCcalibTracks* calib);
f78da5ae 63 void MakeResPlotsQTree(Int_t minEntries = 100, const char* pathName = "plots");
f78da5ae 64 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
46e89793 65 //
9c171b96 66 Int_t AcceptTrack(AliTPCseed * track);
67 void FillResolutionHistoLocal(AliTPCseed * track); // the MAIN-FUNCTION, called for each track to fill the histograms, called by Process(...)
9c171b96 68
9c171b96 69
70 void SetStyle() const;
9c171b96 71
c416172f 72 TObjArray* GetfArrayQDY() const {return fArrayQDY;}
73 TObjArray* GetfArrayQDZ() const {return fArrayQDZ;}
74 TObjArray* GetfArrayQRMSY() const {return fArrayQRMSY;}
75 TObjArray* GetfArrayQRMSZ() const {return fArrayQRMSZ;}
c416172f 76 TObjArray* GetfResolY() const {return fResolY;}
77 TObjArray* GetfResolZ() const {return fResolZ;}
78 TObjArray* GetfRMSY() const {return fRMSY;}
79 TObjArray* GetfRMSZ() const {return fRMSZ;}
c416172f 80 TH1I* GetfRejectedTracksHisto() const {return fRejectedTracksHisto;}
c416172f 81 TH2I* GetfClusterCutHisto() const {return fClusterCutHisto;}
82 AliTPCCalPad* GetfCalPadClusterPerPad() const {return fCalPadClusterPerPad; }
83 AliTPCCalPad* GetfCalPadClusterPerPadRaw() const {return fCalPadClusterPerPadRaw;}
9c171b96 84 AliTPCcalibTracksCuts* GetCuts() {return fCuts;}
af6a50bb 85 void MakeHistos(); //make THnSparse
7d14c1c1 86 int UpdateClusterParam( AliTPCClusterParam *cParam, Bool_t MirrorZ=1, Bool_t MirrorPad=1, Bool_t MirrorAngle=1, Int_t MinStat=10 );
87
46e89793 88 static void MakeSummaryTree(THnSparse *hisInput, TTreeSRedirector *pcstream, Int_t ptype);
7d14c1c1 89 static int GetTHnStat( const THnBase *H, THnBase *&Mean, THnBase *&Sigma, THnBase *&Entr );
90 static int CreateWaveCorrection( const THnBase *DeltaY, THnBase *&MeanY, THnBase *&SigmaY, THnBase *&EntrY,
91 Bool_t MirrorZ=1, Bool_t MirrorPad=1, Bool_t MirrorAngle=1, Int_t MinStat=10 );
92
3828da48 93 static void SetMergeEntriesCut(Double_t entriesCut){fgkMergeEntriesCut = entriesCut;}
94
10757ee9 95protected:
10757ee9 96
10757ee9 97private:
d11c5a19 98
10757ee9 99 static Int_t GetBin(Float_t q, Int_t pad);
100 static Int_t GetBin(Int_t iq, Int_t pad);
101 static Float_t GetQ(Int_t bin);
102 static Float_t GetPad(Int_t bin);
9f0beaf7 103 AliTPCClusterParam *fClusterParam; // pointer to cluster parameterization
10757ee9 104 AliTPCROC *fROC; //!
46e89793 105public:
af6a50bb 106 THnSparse *fHisDeltaY; // THnSparse - delta Y
107 THnSparse *fHisDeltaZ; // THnSparse - delta Z
108 THnSparse *fHisRMSY; // THnSparse - rms Y
109 THnSparse *fHisRMSZ; // THnSparse - rms Z
110 THnSparse *fHisQmax; // THnSparse - qmax
111 THnSparse *fHisQtot; // THnSparse - qtot
112
46e89793 113private:
42d30447 114 Double_t fPtDownscaleRatio; // pt downscaling ratio (use subsample of data)
115 Double_t fQDownscaleRatio; // Q downscaling ratio (use subsample of dta)
116
10757ee9 117 TObjArray *fArrayQDY; // q binned delta Y histograms
118 TObjArray *fArrayQDZ; // q binned delta Z histograms
119 TObjArray *fArrayQRMSY; // q binned delta Y histograms
120 TObjArray *fArrayQRMSZ; // q binned delta Z histograms
af6a50bb 121
10757ee9 122 TObjArray *fResolY; // array of resolution histograms Y
123 TObjArray *fResolZ; // array of resolution histograms Z
124 TObjArray *fRMSY; // array of RMS histograms Y
125 TObjArray *fRMSZ; // array of RMS histograms Z
126 AliTPCcalibTracksCuts *fCuts; // object with cuts, that is passed to the constructor
10757ee9 127 TH1I *fRejectedTracksHisto; // histogram of rejecteced tracks, the number coresponds to the failed cut
10757ee9 128 TH2I *fClusterCutHisto; // histogram showing in which padRow the clusters were cutted by which criterium
129 AliTPCCalPad *fCalPadClusterPerPad; // AliTPCCalPad showing the number of clusters per Pad
130 AliTPCCalPad *fCalPadClusterPerPadRaw; // AliTPCCalPad showing the number of clusters per Pad before cuts on clusters are applied
3828da48 131 static Double_t fgkMergeEntriesCut;//maximal number of entries for merging -can be modified via setter
132
133 ClassDef(AliTPCcalibTracks,2)
10757ee9 134
10757ee9 135};
136
137#endif