]>
Commit | Line | Data |
---|---|---|
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 | 25 | class TF2; |
26 | class TH3F; | |
27 | class TH1F; | |
28 | class TH1I; | |
29 | class TH2I; | |
30 | class TH2D; | |
31 | class TCollection; | |
32 | class TTreeSRedirector; | |
33 | class TLinearFitter; | |
34 | class AliTPCClusterParam; | |
35 | class TTreeSRedirector; | |
36 | class AliTPCROC; | |
37 | class AliTPCseed; | |
38 | class AliESDtrack; | |
39 | class AliTPCclusterMI; | |
40 | class AliTPCcalibTracksCuts; | |
10757ee9 | 41 | class AliTPCCalPad; |
42 | class TChain; | |
9c171b96 | 43 | class TTree; |
10757ee9 | 44 | class TMutex; |
d11c5a19 | 45 | class AliESDEvent; |
10757ee9 | 46 | |
47 | using namespace std; | |
48 | ||
c32da879 | 49 | class AliTPCcalibTracks : public AliTPCcalibBase { |
10757ee9 | 50 | public : |
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 | 95 | protected: |
10757ee9 | 96 | |
10757ee9 | 97 | private: |
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 | 105 | public: |
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 | 113 | private: |
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 |