Updates to Trains. create a job-script to help
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / IdentifiedHighPt / lib / AliHighPtDeDxCalib.h
1 #ifndef ALIHIGHPTDEDXCALIB_H
2 #define ALIHIGHPTDEDXCALIB_H
3
4 #include <TCanvas.h>
5 #include <TH1.h>
6 #include <TH2.h>
7 #include <TProfile.h>
8
9 #include "AliHighPtDeDxBase.h"
10
11 class AliHighPtDeDxCalib : public AliHighPtDeDxBase {
12  public:
13   AliHighPtDeDxCalib(); // default constructor  
14   AliHighPtDeDxCalib(const char* name, const char* title); // named constructor  
15   virtual ~AliHighPtDeDxCalib(); // default destructor
16
17   virtual void Init(Int_t nPtBins, Double_t* ptBins);
18   virtual void Init(Int_t step, Int_t nPtBins, Double_t* ptBins);
19   virtual void FillTrackInfo(Float_t weight);
20   virtual void PerformEtaCal();
21   virtual void PerformNclCal();
22
23   TCanvas* DrawNclCal();
24   TCanvas* DrawEta(Bool_t forMIP);
25   TCanvas* DrawEtaCalibrated(Bool_t forMIP);
26   TCanvas* DrawSelectionHistograms(Int_t step=3);
27   
28   virtual void SetStep(Int_t value) { fStep = value; }
29
30   virtual void SetPMIPMin(Double_t value)    { fPMIPMin    = value; }
31   virtual void SetPMIPMax(Double_t value)    { fPMIPMax    = value; }
32   virtual void SetDeDxMIPMin(Double_t value) { fDeDxMIPMin = value; }
33   virtual void SetDeDxMIPMax(Double_t value) { fDeDxMIPMax = value; }
34   virtual void SetDeltaBeta(Double_t value)  { fDeltaBeta  = value; }
35
36   TF1*  GetDeDxVsEtaNeg()  {return fDeDxVsEtaNeg;}
37   TF1*  GetDeDxVsEtaPos()  {return fDeDxVsEtaPos;} 
38   TF1*  GetDeDxVsNcl()     {return fDeDxVsNcl;}
39   TProfile* GetHistMeanP() {return hMeanP;}
40   TH1D* GetHistDeDx(Bool_t forMIP, Int_t etaBin);
41   TH2D* GetHistDeDxVsNcl(Bool_t forMIP, Int_t etaBin);
42   TH2D* GetHistDeDxVsP(Int_t pid);
43
44   //  virtual void Init(Int_t nPtBins, Double_t* ptBins);
45   //  virtual void FillTrackInfo(Double_t weight=1);
46   
47  private:
48
49   Bool_t IsMIP();
50   Bool_t IsElectron();
51
52   Int_t fStep;             // Step 1 = Eta calibration, step 2 = dE/dx calibration
53   Int_t fInit;             // Step 1 = Eta calibration, step 2 = dE/dx calibration
54   
55   Double_t fPMIPMin;       // Min P for MIP pion
56   Double_t fPMIPMax;       // Max P for MIP pion
57   Double_t fDeDxMIPMin;    // Min dE/dx for MIP pion
58   Double_t fDeDxMIPMax;    // Max dE/dx for MIP pion
59   Double_t fDeltaBeta;     // delta beta cut for electrons 
60
61   TF1*   fDeDxPi;          // dE/dx vs p for pions
62   TF1*   fSigmaDeDx;       // sigma dE/dx vs ncl
63
64   // functions
65   TF1* fDeDxVsEtaNeg;      // eta < 0 dE/dx calib
66   TF1* fDeDxVsEtaPos;      // eta > 0 dE/dx calib
67   TF1* fDeDxVsNcl;         // ncl dE/dx calib
68   
69   // histograms - step 0
70   TH2D* hSelection1;            // selected region in p and dE/dx for pion MIPs
71   TH2D* hSelection2;            // selected region in p and dE/dx for pion MIPs
72   TH2D* hSelection3;            // selected region in p and dE/dx for pion MIPs
73   TH2D* hSelectionElectrons2;   // selected region in p and dE/dx for electrons
74   TH2D* hSelectionElectrons3;   // selected region in p and dE/dx for electrons
75   TH2D* hDeDxVsEta;             // dE/dx vs eta uncalibrated (pion MIPs)
76   TH2D* hDeDxVsEtaElectrons;    // dE/dx vs eta uncalibrated (electrons)
77   TH2D* hNclVsEta;              // Ncl vs eta (pion MIPs)
78   TH2D* hNclVsEtaElectrons;     // Ncl vs eta (electrons)
79
80   // histograms - step 1
81   TH2D* hDeDxVsEtaCal;          // dE/dx vs eta calibrated (pion MIPs)
82   TH2D* hDeDxVsEtaCalElectrons; // dE/dx vs eta calibrated (electrons)
83   TProfile* hMeanEta;           // <eta> in the 4 eta interval (pion MIPs)
84   TProfile* hMeanEtaElectrons;  // <eta> in the 4 eta interval (electrons)
85
86   TH1D* hDeDx;                  // dE/dx no eta cut    (pion MIPs)
87   TH1D* hDeDx1;                 // dE/dx 0.0<|eta|<0.2 (pion MIPs)
88   TH1D* hDeDx2;                 // dE/dx 0.2<|eta|<0.4 (pion MIPs)
89   TH1D* hDeDx3;                 // dE/dx 0.4<|eta|<0.6 (pion MIPs)
90   TH1D* hDeDx4;                 // dE/dx 0.6<|eta|<0.8 (pion MIPs)
91   TH1D* hDeDxElectrons;         // dE/dx no eta cut    (electrons)
92   TH1D* hDeDxElectrons1;        // dE/dx 0.0<|eta|<0.2 (electrons)
93   TH1D* hDeDxElectrons2;        // dE/dx 0.2<|eta|<0.4 (electrons)
94   TH1D* hDeDxElectrons3;        // dE/dx 0.4<|eta|<0.6 (electrons)
95   TH1D* hDeDxElectrons4;        // dE/dx 0.6<|eta|<0.8 (electrons)
96   
97   TH2D* hDeDxVsNclBefore;       // dE/dx vs ncl for calib (step 2)
98
99   TH2D* hDeDxVsNcl;             // dE/dx vs ncl no eta cut    (pion MIPs)
100   TH2D* hDeDxVsNcl1;            // dE/dx vs ncl 0.0<|eta|<0.2 (pion MIPs)
101   TH2D* hDeDxVsNcl2;            // dE/dx vs ncl 0.2<|eta|<0.4 (pion MIPs)
102   TH2D* hDeDxVsNcl3;            // dE/dx vs ncl 0.4<|eta|<0.6 (pion MIPs)
103   TH2D* hDeDxVsNcl4;            // dE/dx vs ncl 0.6<|eta|<0.8 (pion MIPs)
104   TH2D* hDeDxVsNclElectrons;    // dE/dx vs ncl no eta cut    (electrons)
105   TH2D* hDeDxVsNclElectrons1;   // dE/dx vs ncl 0.0<|eta|<0.2 (electrons)
106   TH2D* hDeDxVsNclElectrons2;   // dE/dx vs ncl 0.2<|eta|<0.4 (electrons)
107   TH2D* hDeDxVsNclElectrons3;   // dE/dx vs ncl 0.4<|eta|<0.6 (electrons)
108   TH2D* hDeDxVsNclElectrons4;   // dE/dx vs ncl 0.6<|eta|<0.8 (electrons)
109   
110   /* TH1D* GetHistDeDx(Int_t bin = 0) { */
111     
112
113   /* } */
114
115   // histograms - step 1 dE/dx
116
117   TProfile* hMeanP;    // <p> vs p
118
119   TH2D* hDeDxVsP;      // dE/dx vs p 
120   TH2D* hDeDxVsPPiMc;  // dE/dx vs p for MC pions
121   TH2D* hDeDxVsPKMc;   // dE/dx vs p for MC Kaons
122   TH2D* hDeDxVsPPMc;   // dE/dx vs p for MC protons
123   TH2D* hDeDxVsPEMc;   // dE/dx vs p for MC electrons
124   TH2D* hDeDxVsPMuMc;  // dE/dx vs p for MC muons
125   
126   //  void Print(Option_t* option) const;
127   
128   ClassDef(AliHighPtDeDxCalib, 1)  // AliHighPtDeDxCalib information
129     };
130
131 #endif
132