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