Taking into account that only 1 or 2 values may be present for the
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliProtonAnalysis.h
1 #ifndef ALIPROTONANALYSIS_H
2 #define ALIPROTONANALYSIS_H
3
4 /*  See cxx source for full Copyright notice */
5
6
7 /* $Id$ */
8
9 //-------------------------------------------------------------------------
10 //                       Class AliProtonAnalysis
11 //   This is the class for the baryon (proton) analysis
12 //
13 //    Origin: Panos Christakoglou | Panos.Christakoglou@cern.ch
14 //-------------------------------------------------------------------------
15
16 #include "TObject.h"
17 #include "TH1I.h"
18
19 class TF1;
20 class TH2D;
21 class TH1F;
22 class TList;
23
24 //#include "AliPID.h"
25 class AliPID;
26 #include "AliCFContainer.h"
27 class AliCFDataGrid;
28 class AliAODEvent;
29 class AliAODtrack;
30 class AliESDEvent;
31 class AliESDtrack;
32 class AliExternalTrackParam;
33 class AliStack;
34 class AliESDVertex;
35 class AliProtonAnalysisBase;
36
37 class AliProtonAnalysis : public TObject {
38  public:
39   AliProtonAnalysis();
40   AliProtonAnalysis(Int_t nbinsY, Float_t fLowY, Float_t fHighY,
41                     Int_t nbinsPt, Float_t fLowPt, Float_t fHighPt);
42   AliProtonAnalysis(Int_t nbinsY, Double_t *gY,
43                     Int_t nbinsPt, Double_t *gPt);
44   virtual ~AliProtonAnalysis();
45
46   void SetBaseAnalysis(AliProtonAnalysisBase * const baseAnalysis) {
47     fProtonAnalysisBase = baseAnalysis;}
48   AliProtonAnalysisBase *GetProtonAnalysisBaseObject() const {
49     return fProtonAnalysisBase;}
50
51   void InitAnalysisHistograms(Int_t nbinsY, Float_t fLowY, Float_t fHighY,
52                               Int_t nbinsPt, Float_t fLowPt, Float_t fHighPt);
53   void InitAnalysisHistograms(Int_t nbinsY, Double_t *gY,
54                               Int_t nbinsPt, Double_t *gPt);
55   Bool_t ReadFromFile(const char* filename);
56   void Analyze(AliESDEvent *fESD, 
57                const AliESDVertex *vertex);
58   void Analyze(AliAODEvent *fAOD);
59   void Analyze(AliStack *stack, Bool_t iInclusive);
60   
61   AliCFContainer *GetProtonContainer() const {return fProtonContainer;}
62   AliCFContainer *GetAntiProtonContainer() const {return fAntiProtonContainer;}
63
64   TH2D *GetProtonYPtHistogram() const {return fHistYPtProtons;}
65   TH2D *GetAntiProtonYPtHistogram() const {return fHistYPtAntiProtons;}
66   TH1D *GetProtonYHistogram();
67   TH1D *GetAntiProtonYHistogram();
68   TH1D *GetProtonPtHistogram();
69   TH1D *GetAntiProtonPtHistogram();
70   TH1D *GetProtonCorrectedYHistogram();
71   TH1D *GetAntiProtonCorrectedYHistogram();
72   TH1D *GetProtonCorrectedPtHistogram();
73   TH1D *GetAntiProtonCorrectedPtHistogram();
74   
75   TH1D *GetYRatioHistogram();
76   TH1D *GetYRatioCorrectedHistogram(TH2D *gCorrectionMapProtons,
77                                     TH2D *gCorrectionMapAntiProtons);
78   TH1D *GetPtRatioHistogram();
79   TH1D *GetPtRatioCorrectedHistogram(TH2D *gCorrectionMapProtons,
80                                      TH2D *gCorrectionMapAntiProtons);
81   TH1D *GetYAsymmetryHistogram();
82   TH1D *GetPtAsymmetryHistogram();
83
84   TH1I *GetEventHistogram() const {return fHistEvents;}
85
86   Int_t   GetNumberOfAnalyzedEvents() {return (Int_t)fHistEvents->GetEntries();} 
87   Bool_t  PrintMean(TH1 *hist, Double_t edge);
88   Bool_t  PrintYields(TH1 *hist, Double_t edge); 
89
90   //interface to the correction framework
91   void Correct(Int_t step);
92   Bool_t ReadCorrectionContainer(const char* filename);
93   TList *GetCorrectionListProtons2D() const {return fCorrectionListProtons2D;} 
94   TList *GetEfficiencyListProtons1D() const {return fEfficiencyListProtons1D;} 
95   TList *GetCorrectionListProtons1D() const {return fCorrectionListProtons1D;} 
96   TList *GetCorrectionListAntiProtons2D() const {return fCorrectionListAntiProtons2D;} 
97   TList *GetEfficiencyListAntiProtons1D() const {return fEfficiencyListAntiProtons1D;} 
98   TList *GetCorrectionListAntiProtons1D() const {return fCorrectionListAntiProtons1D;} 
99   
100   //iStep=0->MC - iStep=1->Acceptance - iStep=2->Reconstruction - iStep=3->PID
101   TH1D  *GetUncorrectedProtonYHistogram(Int_t iStep) {return fProtonContainer->ShowProjection(0, iStep);}
102   TH1D  *GetUncorrectedProtonPtHistogram(Int_t iStep) {return fProtonContainer->ShowProjection(1, iStep);}
103   TH1D  *GetUncorrectedAntiProtonYHistogram(Int_t iStep) {return fAntiProtonContainer->ShowProjection(0, iStep);}
104   TH1D  *GetUncorrectedAntiProtonPtHistogram(Int_t iStep) {return fAntiProtonContainer->ShowProjection(1, iStep);}
105
106  private:
107   AliProtonAnalysis(const AliProtonAnalysis&); // Not implemented
108   AliProtonAnalysis& operator=(const AliProtonAnalysis&); // Not implemented
109   
110   AliProtonAnalysisBase *fProtonAnalysisBase;//base analysis object
111
112   Int_t fNBinsY; //number of bins in y or eta
113   Double_t fMinY, fMaxY; //min & max value of y or eta
114   Int_t fNBinsPt;  //number of bins in pT
115   Double_t fMinPt, fMaxPt; //min & max value of pT
116   
117   //Analysis containers
118   AliCFContainer *fProtonContainer; //container for protons
119   AliCFContainer *fAntiProtonContainer; //container for antiprotons
120   TH1I *fHistEvents; //event counter
121   TH2D *fHistYPtProtons; //Y-Pt of Protons
122   TH2D *fHistYPtAntiProtons; // Y-Pt of Antiprotons
123
124   //Corrections
125   TList *fEffGridListProtons; //list for the efficiency grid - protons 
126   TList *fCorrectionListProtons2D; //list for the 2d corrections 
127   TList *fEfficiencyListProtons1D; //list for the 1d efficiencies
128   TList *fCorrectionListProtons1D; //list for the 1d corrections 
129   TList *fEffGridListAntiProtons; //list for the efficiency grid - antiprotons 
130   TList *fCorrectionListAntiProtons2D; //list for the 2d corrections 
131   TList *fEfficiencyListAntiProtons1D; //list for the 1d efficiencies
132   TList *fCorrectionListAntiProtons1D; //list for the 1d corrections 
133   AliCFDataGrid *fCorrectProtons; //corrected data grid for protons
134   AliCFDataGrid *fCorrectAntiProtons; //corrected data grid for antiprotons
135
136   ClassDef(AliProtonAnalysis,1);
137 };
138
139 #endif