1 #ifndef ALIPROTONANALYSIS_H
2 #define ALIPROTONANALYSIS_H
4 /* See cxx source for full Copyright notice */
9 //-------------------------------------------------------------------------
10 // Class AliProtonAnalysis
11 // This is the class for the baryon (proton) analysis
13 // Origin: Panos Christakoglou | Panos.Christakoglou@cern.ch
14 //-------------------------------------------------------------------------
26 #include "AliCFContainer.h"
32 class AliExternalTrackParam;
35 class AliProtonAnalysisBase;
37 class AliProtonAnalysis : public TObject {
43 kStepInPhaseSpace = 3,
47 AliProtonAnalysis(Int_t nbinsY, Float_t fLowY, Float_t fHighY,
48 Int_t nbinsPt, Float_t fLowPt, Float_t fHighPt);
49 AliProtonAnalysis(Int_t nbinsY, Double_t *gY,
50 Int_t nbinsPt, Double_t *gPt);
51 virtual ~AliProtonAnalysis();
53 void SetBaseAnalysis(AliProtonAnalysisBase * const baseAnalysis) {
54 fProtonAnalysisBase = baseAnalysis;}
55 AliProtonAnalysisBase *GetProtonAnalysisBaseObject() const {
56 return fProtonAnalysisBase;}
58 void InitAnalysisHistograms(Int_t nbinsY, Float_t fLowY, Float_t fHighY,
59 Int_t nbinsPt, Float_t fLowPt, Float_t fHighPt);
60 void InitAnalysisHistograms(Int_t nbinsY, Double_t *gY,
61 Int_t nbinsPt, Double_t *gPt);
62 Bool_t ReadFromFile(const char* filename);
63 void Analyze(AliESDEvent *fESD,
64 const AliESDVertex *vertex);
65 void Analyze(AliAODEvent *fAOD);
66 void Analyze(AliStack *stack, Bool_t iInclusive);
70 void FillQA(AliESDEvent *esd,
71 const AliESDVertex *vertex,
73 TList *GetQAList() {return fGlobalQAList;}
75 AliCFContainer *GetProtonContainer() const {return fProtonContainer;}
76 AliCFContainer *GetAntiProtonContainer() const {return fAntiProtonContainer;}
78 //TH2D *GetProtonYPtHistogram() const {return fHistYPtProtons;}
79 //TH2D *GetAntiProtonYPtHistogram() const {return fHistYPtAntiProtons;}
80 TH2D *GetProtonYPtHistogram() const {
81 return fProtonContainer->ShowProjection(0,1,kStepInPhaseSpace);}
82 TH2D *GetAntiProtonYPtHistogram() const {
83 return fAntiProtonContainer->ShowProjection(0,1,kStepInPhaseSpace);}
84 TH1D *GetProtonYHistogram();
85 TH1D *GetAntiProtonYHistogram();
86 TH1D *GetProtonPtHistogram();
87 TH1D *GetAntiProtonPtHistogram();
88 TH1D *GetProtonCorrectedYHistogram();
89 TH1D *GetAntiProtonCorrectedYHistogram();
90 TH1D *GetProtonCorrectedPtHistogram();
91 TH1D *GetAntiProtonCorrectedPtHistogram();
93 TH1F *GetEventStatistics() {return fHistEventStats;}
95 TH1D *GetYRatioHistogram();
96 TH1D *GetYRatioCorrectedHistogram(TH2D *gCorrectionMapProtons,
97 TH2D *gCorrectionMapAntiProtons);
98 TH1D *GetPtRatioHistogram();
99 TH1D *GetPtRatioCorrectedHistogram(TH2D *gCorrectionMapProtons,
100 TH2D *gCorrectionMapAntiProtons);
101 TH1D *GetYAsymmetryHistogram();
102 TH1D *GetPtAsymmetryHistogram();
104 TH1I *GetEventHistogram() const {return fHistEvents;}
106 Int_t GetNumberOfAnalyzedEvents() {return (Int_t)fHistEvents->GetEntries();}
107 Bool_t PrintMean(TH1 *hist, Double_t edge);
108 Bool_t PrintYields(TH1 *hist, Double_t edge);
110 //interface to the correction framework
111 void Correct(Int_t step);
112 Bool_t ReadCorrectionContainer(const char* filename);
113 TList *GetCorrectionListProtons2D() const {return fCorrectionListProtons2D;}
114 TList *GetEfficiencyListProtons1D() const {return fEfficiencyListProtons1D;}
115 TList *GetCorrectionListProtons1D() const {return fCorrectionListProtons1D;}
116 TList *GetCorrectionListAntiProtons2D() const {return fCorrectionListAntiProtons2D;}
117 TList *GetEfficiencyListAntiProtons1D() const {return fEfficiencyListAntiProtons1D;}
118 TList *GetCorrectionListAntiProtons1D() const {return fCorrectionListAntiProtons1D;}
120 //iStep=0->MC - iStep=1->Acceptance - iStep=2->Reconstruction - iStep=3->PID
121 TH1D *GetUncorrectedProtonYHistogram(Int_t iStep) {return fProtonContainer->ShowProjection(0, iStep);}
122 TH1D *GetUncorrectedProtonPtHistogram(Int_t iStep) {return fProtonContainer->ShowProjection(1, iStep);}
123 TH1D *GetUncorrectedAntiProtonYHistogram(Int_t iStep) {return fAntiProtonContainer->ShowProjection(0, iStep);}
124 TH1D *GetUncorrectedAntiProtonPtHistogram(Int_t iStep) {return fAntiProtonContainer->ShowProjection(1, iStep);}
127 AliProtonAnalysis(const AliProtonAnalysis&); // Not implemented
128 AliProtonAnalysis& operator=(const AliProtonAnalysis&); // Not implemented
130 AliProtonAnalysisBase *fProtonAnalysisBase;//base analysis object
132 Int_t fNBinsY; //number of bins in y or eta
133 Double_t fMinY, fMaxY; //min & max value of y or eta
134 Int_t fNBinsPt; //number of bins in pT
135 Double_t fMinPt, fMaxPt; //min & max value of pT
137 //Analysis containers
138 AliCFContainer *fProtonContainer; //container for protons
139 AliCFContainer *fAntiProtonContainer; //container for antiprotons
140 TH1I *fHistEvents; //event counter
141 TH2D *fHistYPtProtons; //Y-Pt of Protons
142 TH2D *fHistYPtAntiProtons; // Y-Pt of Antiprotons
143 TH1F *fHistEventStats;//Event statistics
146 TList *fEffGridListProtons; //list for the efficiency grid - protons
147 TList *fCorrectionListProtons2D; //list for the 2d corrections
148 TList *fEfficiencyListProtons1D; //list for the 1d efficiencies
149 TList *fCorrectionListProtons1D; //list for the 1d corrections
150 TList *fEffGridListAntiProtons; //list for the efficiency grid - antiprotons
151 TList *fCorrectionListAntiProtons2D; //list for the 2d corrections
152 TList *fEfficiencyListAntiProtons1D; //list for the 1d efficiencies
153 TList *fCorrectionListAntiProtons1D; //list for the 1d corrections
154 AliCFDataGrid *fCorrectProtons; //corrected data grid for protons
155 AliCFDataGrid *fCorrectAntiProtons; //corrected data grid for antiprotons
158 TList *fGlobalQAList; //global list
159 TList *fQA2DList; //QA 2D list
160 TList *fQAProtonsAcceptedList; //accepted protons
161 TList *fQAProtonsRejectedList; //rejected protons
162 TList *fQAAntiProtonsAcceptedList; //accepted antiprotons
163 TList *fQAAntiProtonsRejectedList; //rejected antiprotons
164 Bool_t fInitQAFlag;//Init flag
166 ClassDef(AliProtonAnalysis,1);