Line data Source code
1 : #ifndef AliTPCCALIBTRACKS_H
2 : #define AliTPCCALIBTRACKS_H
3 :
4 :
5 : ///////////////////////////////////////////////////////////////////////////////
6 : // //
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. //
16 : // //
17 : // //
18 : ///////////////////////////////////////////////////////////////////////////////
19 :
20 :
21 :
22 : #include <AliTPCcalibBase.h>
23 : #include "THnSparse.h"
24 :
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;
41 : class AliTPCCalPad;
42 : class TChain;
43 : class TTree;
44 : class TMutex;
45 : class AliESDEvent;
46 :
47 : using namespace std;
48 :
49 : class AliTPCcalibTracks : public AliTPCcalibBase {
50 : public :
51 : AliTPCcalibTracks(); // default constructor
52 : AliTPCcalibTracks(const AliTPCcalibTracks&calibTracks); // copy constructor
53 : AliTPCcalibTracks(const Text_t *name, const Text_t *title, AliTPCClusterParam *clusterParam, AliTPCcalibTracksCuts* cuts, Int_t logLevel = 0);
54 : AliTPCcalibTracks & operator=(const AliTPCcalibTracks& calibTracks);
55 :
56 : virtual ~AliTPCcalibTracks(); // destructor
57 :
58 : virtual void Process(AliTPCseed *track); // to be called by the Selector
59 0 : void Process(AliESDEvent *event) {AliTPCcalibBase::Process(event);};
60 0 : void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
61 : virtual Long64_t Merge(TCollection *li);
62 : void AddHistos(AliTPCcalibTracks* calib);
63 : void MakeResPlotsQTree(Int_t minEntries = 100, const char* pathName = "plots");
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
65 : //
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(...)
68 :
69 :
70 : void SetStyle() const;
71 :
72 0 : TObjArray* GetfArrayQDY() const {return fArrayQDY;}
73 0 : TObjArray* GetfArrayQDZ() const {return fArrayQDZ;}
74 0 : TObjArray* GetfArrayQRMSY() const {return fArrayQRMSY;}
75 0 : TObjArray* GetfArrayQRMSZ() const {return fArrayQRMSZ;}
76 0 : TObjArray* GetfResolY() const {return fResolY;}
77 0 : TObjArray* GetfResolZ() const {return fResolZ;}
78 0 : TObjArray* GetfRMSY() const {return fRMSY;}
79 0 : TObjArray* GetfRMSZ() const {return fRMSZ;}
80 0 : TH1I* GetfRejectedTracksHisto() const {return fRejectedTracksHisto;}
81 0 : TH2I* GetfClusterCutHisto() const {return fClusterCutHisto;}
82 0 : AliTPCCalPad* GetfCalPadClusterPerPad() const {return fCalPadClusterPerPad; }
83 0 : AliTPCCalPad* GetfCalPadClusterPerPadRaw() const {return fCalPadClusterPerPadRaw;}
84 0 : AliTPCcalibTracksCuts* GetCuts() {return fCuts;}
85 : void MakeHistos(); //make THnSparse
86 : int UpdateClusterParam( AliTPCClusterParam *cParam, Bool_t MirrorZ=1, Bool_t MirrorPad=1, Bool_t MirrorAngle=1, Int_t MinStat=10 );
87 :
88 : static void MakeSummaryTree(THnSparse *hisInput, TTreeSRedirector *pcstream, Int_t ptype);
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 :
93 0 : static void SetMergeEntriesCut(Double_t entriesCut){fgkMergeEntriesCut = entriesCut;}
94 :
95 : protected:
96 :
97 : private:
98 :
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);
103 : AliTPCClusterParam *fClusterParam; // pointer to cluster parameterization
104 : AliTPCROC *fROC; //!
105 : public:
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 :
113 : private:
114 : Double_t fPtDownscaleRatio; // pt downscaling ratio (use subsample of data)
115 : Double_t fQDownscaleRatio; // Q downscaling ratio (use subsample of dta)
116 :
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
121 :
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
127 : TH1I *fRejectedTracksHisto; // histogram of rejecteced tracks, the number coresponds to the failed cut
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
131 : static Double_t fgkMergeEntriesCut;//maximal number of entries for merging -can be modified via setter
132 :
133 6 : ClassDef(AliTPCcalibTracks,2)
134 :
135 : };
136 :
137 : #endif
|