]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Calib/AliTPCcalibTracks.h
Merge branch 'flatdev' of https://git.cern.ch/reps/AliRoot into flatdev
[u/mrichter/AliRoot.git] / TPC / Calib / AliTPCcalibTracks.h
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 class AliVEvent;
47 class AliVTrack;
48
49 using namespace std;
50
51 class AliTPCcalibTracks : public AliTPCcalibBase {
52 public :
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);
57   
58   virtual ~AliTPCcalibTracks();                // destructor
59   
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
69   //   
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(...)
72   
73   
74   void     SetStyle() const;
75   
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 );
91
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 );
96  
97   static void SetMergeEntriesCut(Double_t entriesCut){fgkMergeEntriesCut = entriesCut;}
98
99 protected:         
100   
101 private:
102
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
108    AliTPCROC *fROC;          //!
109 public:
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 
116
117 private:
118   Double_t fPtDownscaleRatio;       // pt downscaling ratio (use subsample of data)
119   Double_t fQDownscaleRatio;        // Q downscaling ratio (use subsample of dta)
120
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 
125
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
136
137   ClassDef(AliTPCcalibTracks,2)
138    
139 };
140
141 #endif