]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliProtonAnalysis.h
1.The QA data created on demand according to the event species at filling time. 2...
[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   virtual ~AliProtonAnalysis();
43
44   void SetBaseAnalysis(AliProtonAnalysisBase * const baseAnalysis) {
45     fProtonAnalysisBase = baseAnalysis;}
46   AliProtonAnalysisBase *GetProtonAnalysisBaseObject() const {
47     return fProtonAnalysisBase;}
48
49   void InitAnalysisHistograms(Int_t nbinsY, Float_t fLowY, Float_t fHighY,
50                               Int_t nbinsPt, Float_t fLowPt, Float_t fHighPt);
51   Bool_t ReadFromFile(const char* filename);
52   void Analyze(AliESDEvent *fESD, 
53                const AliESDVertex *vertex);
54   void Analyze(AliAODEvent *fAOD);
55   void Analyze(AliStack *stack, Bool_t iInclusive);
56   
57   AliCFContainer *GetProtonContainer() const {return fProtonContainer;}
58   AliCFContainer *GetAntiProtonContainer() const {return fAntiProtonContainer;}
59
60   TH2D *GetProtonYPtHistogram() const {return fHistYPtProtons;}
61   TH2D *GetAntiProtonYPtHistogram() const {return fHistYPtAntiProtons;}
62   TH1D *GetProtonYHistogram();
63   TH1D *GetAntiProtonYHistogram();
64   TH1D *GetProtonPtHistogram();
65   TH1D *GetAntiProtonPtHistogram();
66   TH1D *GetProtonCorrectedYHistogram();
67   TH1D *GetAntiProtonCorrectedYHistogram();
68   TH1D *GetProtonCorrectedPtHistogram();
69   TH1D *GetAntiProtonCorrectedPtHistogram();
70   
71   TH1D *GetYRatioHistogram();
72   TH1D *GetYRatioCorrectedHistogram(TH2D *gCorrectionMapProtons,
73                                     TH2D *gCorrectionMapAntiProtons);
74   TH1D *GetPtRatioHistogram();
75   TH1D *GetPtRatioCorrectedHistogram(TH2D *gCorrectionMapProtons,
76                                      TH2D *gCorrectionMapAntiProtons);
77   TH1D *GetYAsymmetryHistogram();
78   TH1D *GetPtAsymmetryHistogram();
79
80   TH1I *GetEventHistogram() const {return fHistEvents;}
81
82   Int_t   GetNumberOfAnalyzedEvents() {return (Int_t)fHistEvents->GetEntries();} 
83   Bool_t  PrintMean(TH1 *hist, Double_t edge);
84   Bool_t  PrintYields(TH1 *hist, Double_t edge); 
85
86   //interface to the correction framework
87   void Correct(Int_t step);
88   Bool_t ReadCorrectionContainer(const char* filename);
89   TList *GetCorrectionListProtons2D() const {return fCorrectionListProtons2D;} 
90   TList *GetEfficiencyListProtons1D() const {return fEfficiencyListProtons1D;} 
91   TList *GetCorrectionListProtons1D() const {return fCorrectionListProtons1D;} 
92   TList *GetCorrectionListAntiProtons2D() const {return fCorrectionListAntiProtons2D;} 
93   TList *GetEfficiencyListAntiProtons1D() const {return fEfficiencyListAntiProtons1D;} 
94   TList *GetCorrectionListAntiProtons1D() const {return fCorrectionListAntiProtons1D;} 
95   
96   //iStep=0->MC - iStep=1->Acceptance - iStep=2->Reconstruction - iStep=3->PID
97   TH1D  *GetUncorrectedProtonYHistogram(Int_t iStep) {return fProtonContainer->ShowProjection(0, iStep);}
98   TH1D  *GetUncorrectedProtonPtHistogram(Int_t iStep) {return fProtonContainer->ShowProjection(1, iStep);}
99   TH1D  *GetUncorrectedAntiProtonYHistogram(Int_t iStep) {return fAntiProtonContainer->ShowProjection(0, iStep);}
100   TH1D  *GetUncorrectedAntiProtonPtHistogram(Int_t iStep) {return fAntiProtonContainer->ShowProjection(1, iStep);}
101
102  private:
103   AliProtonAnalysis(const AliProtonAnalysis&); // Not implemented
104   AliProtonAnalysis& operator=(const AliProtonAnalysis&); // Not implemented
105   
106   AliProtonAnalysisBase *fProtonAnalysisBase;//base analysis object
107
108   Int_t fNBinsY; //number of bins in y or eta
109   Double_t fMinY, fMaxY; //min & max value of y or eta
110   Int_t fNBinsPt;  //number of bins in pT
111   Double_t fMinPt, fMaxPt; //min & max value of pT
112   
113   //Analysis containers
114   AliCFContainer *fProtonContainer; //container for protons
115   AliCFContainer *fAntiProtonContainer; //container for antiprotons
116   TH1I *fHistEvents; //event counter
117   TH2D *fHistYPtProtons; //Y-Pt of Protons
118   TH2D *fHistYPtAntiProtons; // Y-Pt of Antiprotons
119
120   //Corrections
121   TList *fEffGridListProtons; //list for the efficiency grid - protons 
122   TList *fCorrectionListProtons2D; //list for the 2d corrections 
123   TList *fEfficiencyListProtons1D; //list for the 1d efficiencies
124   TList *fCorrectionListProtons1D; //list for the 1d corrections 
125   TList *fEffGridListAntiProtons; //list for the efficiency grid - antiprotons 
126   TList *fCorrectionListAntiProtons2D; //list for the 2d corrections 
127   TList *fEfficiencyListAntiProtons1D; //list for the 1d efficiencies
128   TList *fCorrectionListAntiProtons1D; //list for the 1d corrections 
129   AliCFDataGrid *fCorrectProtons; //corrected data grid for protons
130   AliCFDataGrid *fCorrectAntiProtons; //corrected data grid for antiprotons
131
132   ClassDef(AliProtonAnalysis,1);
133 };
134
135 #endif