]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliAnalysisTaskChargedHadronSpectra.h
4f8720fb2f7a5b3f2badb2a134d7037007586982
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisTaskChargedHadronSpectra.h
1 #ifndef ALIANALYSISTASKCHARGEDHADRONSPECTRA_H
2 #define ALIANALYSISTASKCHARGEDHADRONSPECTRA_H
3
4 //////////////////////////////////////////////////////////////////////////////
5 //                                                                          //
6 // This analysis extracts pT-spectra of charged kaons, protons, and pions.  //
7 // It is based on particles identifation via the dE/dx signal of the TPC.   //
8 //                                                                          //
9 //////////////////////////////////////////////////////////////////////////////
10
11 class TH1;
12 class TH1F;
13 class TH2F;
14 class TH3F;
15 class TList;
16 class TObjArray;
17 class AliESDEvent;
18 class AliESDtrack;
19 class AliESDtrackCuts;
20 class AliHeader;
21 class AliESDpid;
22
23
24 #include "AliAnalysisTaskSE.h"
25
26 class AliAnalysisTaskChargedHadronSpectra : public AliAnalysisTaskSE {
27  public:
28   AliAnalysisTaskChargedHadronSpectra(const char *name);
29   AliAnalysisTaskChargedHadronSpectra();
30   virtual ~AliAnalysisTaskChargedHadronSpectra() {}
31   //
32   virtual void   UserCreateOutputObjects();
33   virtual void   UserExec(Option_t *option);
34   virtual void   Terminate(Option_t *);
35   //
36   void           SetESDtrackCuts(AliESDtrackCuts * trackCuts){fESDtrackCuts = trackCuts;};
37   void           SetAlephParameters(const Double_t * parameters){for(Int_t j=0;j<5;j++) fAlephParameters[j] = parameters[j];};
38   void           SetIsMCtrue(Bool_t isMCdata = kTRUE){fMCtrue = isMCdata;};
39   //
40   static TH1D *  AnalyseClassicProton(const TH3F * input, Int_t EtaBin, const Double_t * AlephParams);
41   static TH1D *  AnalyseClassicPion(const TH3F * input, Int_t EtaBin, const Double_t * AlephParams);
42   static TH1D *  AnalyseClassicKaon(const TH3F * input, Int_t EtaBin, const Double_t * AlephParams);
43   //
44   static void    Postprocess(const TList * ListOfHistogramsMC,const  TList * ListOfHistogramsData, const Char_t *filename);
45
46  private:
47   //
48   void  BinLogX(const TH1 *h);
49   Int_t GetPythiaEventProcessType(const AliHeader* aHeader, const Bool_t adebug = kFALSE) const;
50   //
51   AliESDEvent *fESD;                  //! ESD object
52   TList       *fListHist;             //! list for histograms
53   //
54   AliESDtrackCuts  * fESDtrackCuts;   // basic cut variables
55   AliESDpid *     fESDpid;            // basic TPC object for n-sigma cuts
56   Bool_t        fMCtrue;              // flag if real data or MC is processed
57   Double_t      fAlephParameters[5];  // Aleph Parameters for Bethe-Bloch
58   //
59   // MC histogram
60   //
61   TH3F        *fHistPtMCKaon;        //! (mult,eta,pT) for Kaons MC truth; neg. x-axis for neg. particles, pos. x-axis for pos. particles
62   TH3F        *fHistPtMCProton;      //! (mult,eta,pT) for Protons MC truth; neg. x-axis for neg. particles, pos. x-axis for pos. particles
63   TH3F        *fHistPtMCPion;        //! (mult,eta,pT) for Pions MC truth; neg. x-axis for neg. particles, pos. x-axis for pos. particles
64   TH3F        *fHistPtMCElectron;    //! (mult,eta,pT) for Electrons MC truth; neg. x-axis for neg. particles, pos. x-axis for pos. particles
65   TH3F        *fHistPtMCMuon;        //! (mult,eta,pT) for Muons MC truth; neg. x-axis for neg. particles, pos. x-axis for pos. particles
66
67   // reconstructed particle histograms
68   TH3F        *fHistPtEtaKaon;       //!  (mult,eta,pT) for Kaons; neg. x-axis for neg. particles, pos. x-axis for pos. particles
69   TH3F        *fHistPtEtaKaonNoKink; //!  (mult,eta,pT) for Kaons withou accepting the Kink mother; neg. x-axis for neg. particles, pos. x-axis for pos. particles
70   TH3F        *fHistPtEtaProton;     //!  (mult,eta,pT) for Protons; neg. x-axis for neg. particles, pos. x-axis for pos. particles
71   TH3F        *fHistPtEtaProtonDCA;  //!  (DCA,eta,pT) for Protons; neg. x-axis for neg. particles, pos. x-axis for pos. particles; special histogram for protons
72   TH3F        *fHistPtEtaPion;       //!  (mult,eta,pT) for Pions; neg. x-axis for neg. particles, pos. x-axis for pos. particles
73   TH3F        *fHistPtEtaElectron;   //!  (mult,eta,pT) for Electrons; neg. x-axis for neg. particles, pos. x-axis for pos. particles
74   //
75   TH3F        *fHistClassicKaon;     //! (Pt,eta,delta dEdx) for Kaons for different eta; neg. x-axis for neg. particles, pos. x-axis for pos. particles
76   TH3F        *fHistClassicProton;   //! (Pt,eta,delta dEdx) for Protons for different eta; neg. x-axis for neg. particles, pos. x-axis for pos. particles
77   TH3F        *fHistClassicPion;     //! (Pt,eta,delta dEdx) for Pions for different eta; neg. x-axis for neg. particles, pos. x-axis for pos. particles
78   TH3F        *fHistClassicElectron; //! (Pt,eta,delta dEdx) for Electrons for different eta; neg. x-axis for neg. particles, pos. x-axis for pos. particles
79    
80   // histograms of general interest
81   TH2F        *fDeDx;                 //! dEdx spectrum
82   TH1F        *fHistTrackPerEvent;    //! tracks per event for multiplicity studies
83   TH2F        *fHistTrackPerEventMC;  //! (code, TrackPerEvent) MC tracks per event, codes represent different event types (non-diffractive,..)
84   TH2F        *fSecProtons;           //! control histogram for secondary interactions
85   TH1F        *fVertexZ;              //! control histogram for the z-position of the vertex
86   //
87   TH2F        *fHistEtaNcls;          //! 2d histogram (eta, nTPCclusters) which will define our acceptance
88   TH2F        *fHistEtaPhi;           //! 2d histogram (eta, phi) which will show dead regions
89
90   // histograms for efficiency studies
91   TH3F        *fHistEffProton;       //! (code,eta,pT) special hist. for eff. studies; code 0: true primary p, 1: true sec. p, 2: misidentified, 3: weak decay sec.
92   TH3F        *fHistEffProtonDCA;    //! (code,dca,pT) special hist. for eff. studies; code 0: true primary p, 1: true sec. p, 2: misidentified, 3: weak decay sec.
93   TH3F        *fHistEffPion;         //! (code,eta,pT) special hist. for eff. studies; code 0: true primary pi, 1: true sec. pi, 2: misidentified, 3: weak decay sec., 4: muons
94   TH3F        *fHistEffKaon;         //! (code,eta,pT) special hist. for eff. studies; code 0: true primary K, 1: true sec. K, 2: misidentified, 3: weak decay sec.
95
96   // two more histograms for the electron background in the dN/dpT paper
97   TH1F        *fHighPtElectrons;      //! histogram for the electrons at high pT for background estimation in Jacek's paper
98   TH1F        *fHighPtHadrons;        //! histogram for the hardrons at high pT for background estimation in Jacek's paper
99   
100
101   AliAnalysisTaskChargedHadronSpectra(const AliAnalysisTaskChargedHadronSpectra&); 
102   AliAnalysisTaskChargedHadronSpectra& operator=(const AliAnalysisTaskChargedHadronSpectra&); 
103
104   ClassDef(AliAnalysisTaskChargedHadronSpectra, 2); 
105 };
106
107 #endif