]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliProtonQAAnalysis.h
Reco and pid efficiencies in two separate functions
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliProtonQAAnalysis.h
1 #ifndef ALIPROTONQAANALYSIS_H
2 #define ALIPROTONQAANALYSIS_H
3
4 /*  See cxx source for full Copyright notice */
5
6
7 /* $Id: AliProtonQAAnalysis.h 29114 2008-10-03 16:49:02Z pchrist $ */
8
9 //-------------------------------------------------------------------------
10 //                       Class AliProtonQAAnalysis
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 "TList.h"
18 #include "TArrayI.h"
19
20 class TF1;
21 class TH1F;
22 class TH3F;
23
24 class AliPID;
25 class AliESDEvent;
26 class AliESDtrack;
27 class AliStack;
28 class AliGenEventHeader;
29 class AliESDVertex;
30 class AliMCEvent;
31 class AliProtonAnalysisBase;
32
33 class AliProtonQAAnalysis : public TObject {
34  public:
35   AliProtonQAAnalysis();
36   virtual ~AliProtonQAAnalysis();
37
38   void SetBaseAnalysis(AliProtonAnalysisBase *const baseAnalysis) {
39     fProtonAnalysisBase = baseAnalysis;}
40   AliProtonAnalysisBase *GetProtonAnalysisBaseObject() const {
41     return fProtonAnalysisBase;}
42
43   //Vertex QA
44   void RunVertexQA(AliGenEventHeader *header,
45                    AliStack *stack,
46                    AliESDEvent *esd);
47   TList *GetVertexQAList() const {return fQAVertexList;}
48
49   //QA histograms
50   void SetQAYPtBins(Int_t nbinsY, Double_t minY, Double_t maxY,
51                     Int_t nbinsPt, Double_t minPt, Double_t maxPt);
52   void RunQAAnalysis(AliStack *stack, 
53                      AliESDEvent *esd,
54                      const AliESDVertex *vertex);
55   void SetRunQAAnalysis();
56   TList *GetGlobalQAList() const {return fGlobalQAList;}
57
58   //Efficiency plots (reconstruction & PID)
59   void RunReconstructionEfficiencyAnalysis(AliMCEvent *mcEvent, 
60                                            AliESDEvent *esd,
61                                            const AliESDVertex *vertex);
62   void RunPIDEfficiencyAnalysis(AliStack *stack, 
63                                 AliESDEvent *esd);
64   void RunEfficiencyAnalysis(AliStack *stack, 
65                              AliESDEvent *esd,
66                              const AliESDVertex *vertex);
67   void SetRunEfficiencyAnalysis(Bool_t gUseCuts) {
68     fRunEfficiencyAnalysis = kTRUE;
69     fUseCutsInEfficiency = gUseCuts;
70   }
71   TList *GetEfficiencyQAList() const {return fEfficiencyList;}
72
73   //MC analysis
74   void RunMCAnalysis(AliStack* stack);
75   void SetRunMCAnalysis() {fRunMCAnalysis = kTRUE;}
76   void SetMCProcessId(Int_t id) {
77     fMCProcessIdFlag = kTRUE;
78     fMCProcessId = id;
79   }
80   void SetMotherParticlePDGCode(Int_t pdgCode) {
81     fMotherParticlePDGCodeFlag = kTRUE;
82     fMotherParticlePDGCode = pdgCode;
83   }
84   TList *GetPDGList() const {return fPDGList;}
85   TList *GetMCProcessesList() const {return fMCProcessesList;}
86
87   TList *GetAcceptedCutList() const {return fAcceptedCutList;}
88   TList *GetRejectedCutList() const {return fRejectedCutList;}
89   TList *GetAcceptedDCAList() const {return fAcceptedDCAList;}
90   TList *GetRejectedDCAList() const {return fRejectedDCAList;}
91
92  private:
93   AliProtonQAAnalysis(const AliProtonQAAnalysis&); // Not implemented
94   AliProtonQAAnalysis& operator=(const AliProtonQAAnalysis&);// Not implemented
95
96   void     InitVertexQA();
97   void     InitQA();
98   void     InitMCAnalysis();
99   void     InitCutLists();
100   void     InitEfficiencyAnalysis();
101   void     FillQA(AliStack *stack,
102                   AliESDEvent *esd,
103                   const AliESDVertex *vertex, 
104                   AliESDtrack* track);
105  
106   Bool_t   IsLabelUsed(TArrayI array, Int_t label);
107   Int_t    ConvertPDGToInt(Int_t pdgCode) const;
108   
109   AliProtonAnalysisBase *fProtonAnalysisBase;//base analysis object
110
111   Int_t fNBinsY; //number of bins in eta or y
112   Float_t fMinY, fMaxY; //min & max value of eta or y
113   Int_t fNBinsPt;  //number of bins in pT
114   Float_t fMinPt, fMaxPt; //min & max value of pT
115   
116   //QA histograms
117   //Bool_t fQAHistograms; //Boolean to activate the QA histograms
118   TList *fGlobalQAList; //TList storing the directories for the QA histograms
119   TList *fQAVertexList; //TList storing the vertex QA plots
120   TList *fQA2DList; //TList storing the accepted primary/secondary (anti)protons
121   TList *fQAPrimaryProtonsAcceptedList; //list of the QA histos for accepted primary protons
122   TList *fQAPrimaryProtonsRejectedList; //list of the QA histos for rejected primary protons
123   TList *fQASecondaryProtonsAcceptedList; //list of the QA histos for accepted secondary protons
124   TList *fQASecondaryProtonsRejectedList; //list of the QA histos for rejected secondary protons
125   TList *fQAPrimaryAntiProtonsAcceptedList; //list of the QA histos for accepted primary antiprotons
126   TList *fQAPrimaryAntiProtonsRejectedList; //list of the QA histos for rejected primary antiprotons
127   TList *fQASecondaryAntiProtonsAcceptedList; //list of the QA histos for accepted secondary antiprotons
128   TList *fQASecondaryAntiProtonsRejectedList; //list of the QA histos for rejected secondary antiprotons
129
130   //MC analysis
131   TList *fPDGList; //list with the 3D histograms: y-pt-pdg (anti)protons
132   TList *fMCProcessesList; //list with the MC processes for every secondary (anti)proton
133   Bool_t fRunMCAnalysis; //run this part or not
134   Bool_t fMCProcessIdFlag; //flag to see if we should check the process id
135   UInt_t fMCProcessId; //process id based on the TMCProcess
136   Bool_t fMotherParticlePDGCodeFlag; //flag to see if we should check the pdg code of the mother particle
137   Int_t  fMotherParticlePDGCode; //pdg code of the mother particle
138
139   TList *fAcceptedCutList;// list of the cut parameters' histograms
140   TList *fRejectedCutList;// list of the cut parameters' histograms
141   TList *fAcceptedDCAList;// list of the DCA histograms
142   TList *fRejectedDCAList;// list of the DCA histograms
143
144   //Efficiency (reconstruction & PID)
145   Bool_t fRunEfficiencyAnalysis; //run this part or not
146   Bool_t fUseCutsInEfficiency;//use the cuts in the reco and pid efficiency
147
148   TList *fEfficiencyList;// list of the efficiency histograms
149
150   ClassDef(AliProtonQAAnalysis,1);
151 };
152
153 #endif