]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskEventMixingBF.h
end-of-line normalization
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskEventMixingBF.h
CommitLineData
7fac8669 1#ifndef ALIANALYSISTASKEVENTMIXINGBF_CXX
2#define ALIANALYSISTASKEVENTMIXINGBF_CXX
3
4// Analysis task for the EventMixingBF code
5// Authors: Panos Cristakoglou@cern.ch, m.weber@cern.ch
6
7class TList;
8class TH1F;
9class TH2F;
10class TF1;
11
12class AliMixInputEventHandler;
13class AliBalanceEventMixing;
14class AliESDtrackCuts;
15
16#include "AliAnalysisTaskSE.h"
17#include "AliBalanceEventMixing.h"
18
19#include "AliPID.h"
20#include "AliPIDResponse.h"
21#include "AliPIDCombined.h"
22
23
24class AliAnalysisTaskEventMixingBF : public AliAnalysisTaskSE {
25 public:
26 AliAnalysisTaskEventMixingBF(const char *name = "AliAnalysisTaskEventMixingBF");
27 virtual ~AliAnalysisTaskEventMixingBF();
28
29
30 virtual void UserCreateOutputObjects();
31 virtual void UserExec(Option_t *option);
32 virtual void UserExecMix(Option_t*);
33 virtual void FinishTaskOutput();
34 virtual void Terminate(Option_t *);
35
36 void SetAnalysisObject(AliBalanceEventMixing *const analysis) {
37 fBalance = analysis;
38 }
39 void SetShufflingObject(AliBalanceEventMixing *const analysisShuffled) {
40 fRunShuffling = kTRUE;
41 fShuffledBalance = analysisShuffled;
42 }
43 void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {
44 fESDtrackCuts = trackCuts;}
45 void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {
46 fVxMax = vx;
47 fVyMax = vy;
48 fVzMax = vz;
49 }
50
51 //==============AOD analysis==============//
52 void SetAODtrackCutBit(Int_t bit){
53 nAODtrackCutBit = bit;
54 }
55
56 void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){
57 fPtMin = ptmin; fPtMax = ptmax;
58 fEtaMin = etamin; fEtaMax = etamax;
59
60 }
61
62 void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){
63 fDCAxyCut = DCAxy;
64 fDCAzCut = DCAz;
65 }
66
67 void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){
68 fTPCchi2Cut = maxTPCchi2;
69 fNClustersTPCCut = minNClustersTPC;
70 }
71
72 //==============MC analysis==============//
73 void SetKinematicsCutsMC(Double_t ptmin, Double_t ptmax,
74 Double_t etamin, Double_t etamax){
75 fPtMin = ptmin; fPtMax = ptmax;
76 fEtaMin = etamin; fEtaMax = etamax;
77 }
78 void UseFlowAfterBurner(TF1 *gDifferentialV2) {
79 fDifferentialV2 = gDifferentialV2;
80 fUseFlowAfterBurner = kTRUE;
81 }
82 void ExcludeResonancesInMC() {fExcludeResonancesInMC = kTRUE;}
83
84 void SetPDGCode(Int_t gPdgCode) {
85 fUseMCPdgCode = kTRUE;
86 fPDGCodeToBeAnalyzed = gPdgCode;
87 }
88
89 //Centrality
90 void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}
91 const char* GetCentralityEstimator(void) const {return fCentralityEstimator;}
92 void SetCentralityPercentileRange(Double_t min, Double_t max) {
93 fUseCentrality = kTRUE;
94 fCentralityPercentileMin=min;
95 fCentralityPercentileMax=max;
96 }
97 void SetImpactParameterRange(Double_t min, Double_t max) {
98 fUseCentrality = kTRUE;
99 fImpactParameterMin=min;
100 fImpactParameterMax=max;
101 }
102
103 //multiplicity
104 void SetMultiplicityRange(Int_t min, Int_t max) {
105 fUseMultiplicity = kTRUE;
106 fNumberOfAcceptedTracksMin = min;
107 fNumberOfAcceptedTracksMax = max;}
108
109 void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}
110
111 //Acceptance filter
112 void SetAcceptanceParameterization(TF1 *parameterization) {
113 fAcceptanceParameterization = parameterization;}
114
115 //pid
116 enum kDetectorUsedForPID { kTPCpid, kTOFpid, kTPCTOF }; // default TPC & TOF pid (via GetTPCpid & GetTOFpid)
117 enum kParticleOfInterest { kMuon, kElectron, kPion, kKaon, kProton };
118
119 void SetUseBayesianPID(Double_t gMinProbabilityValue) {
120 fUsePID = kTRUE; fUsePIDnSigma = kFALSE; fUsePIDPropabilities = kTRUE;
121 fMinAcceptedPIDProbability = gMinProbabilityValue; }
122
123 void SetUseNSigmaPID(Double_t gMaxNSigma) {
124 fUsePID = kTRUE; fUsePIDPropabilities = kFALSE; fUsePIDnSigma = kTRUE;
125 fPIDNSigma = gMaxNSigma; }
126
127 void SetParticleOfInterest(kParticleOfInterest poi) {
128 fParticleOfInterest = poi;}
129 void SetDetectorUsedForPID(kDetectorUsedForPID detConfig) {
130 fPidDetectorConfig = detConfig;}
131
132 private:
133 AliBalanceEventMixing *fBalance; //EventMixingBF object
134 Bool_t fRunShuffling;//run shuffling or not
135 AliBalanceEventMixing *fShuffledBalance; //EventMixingBF object (shuffled)
136 TList *fList; //fList object
137 TList *fListEventMixingBF; //fList object
138 TList *fListEventMixingBFS; //fList object
139 TList *fHistListPIDQA; //! list of histograms
140
141 TH1F *fHistEventStats; //event stats
142 TH2F *fHistCentStats; //centrality stats
143 TH1F *fHistTriggerStats; //trigger stats
144 TH1F *fHistTrackStats; //Track filter bit stats
145 TH1F *fHistVx; //x coordinate of the primary vertex
146 TH1F *fHistVy; //y coordinate of the primary vertex
147 TH1F *fHistVz; //z coordinate of the primary vertex
148
149 TH2F *fHistClus;//number of clusters (QA histogram)
150 TH2F *fHistDCA;//DCA (QA histogram)
151 TH1F *fHistChi2;//track chi2 (QA histogram)
152 TH1F *fHistPt;//transverse momentum (QA histogram)
153 TH1F *fHistEta;//pseudorapidity (QA histogram)
154 TH1F *fHistPhi;//phi (QA histogram)
155 TH1F *fHistPhiBefore;//phi before v2 afterburner (QA histogram)
156 TH1F *fHistPhiAfter;//phi after v2 afterburner (QA histogram)
157 TH2F *fHistV0M;//V0 multiplicities (QA histogram)
158 TH2F *fHistRefTracks;//reference track multiplicities (QA histogram)
159
160 //============PID============//
161 TH2D *fHistdEdxVsPTPCbeforePID;//TPC dEdx vs momentum before PID cuts (QA histogram)
162 TH2D *fHistBetavsPTOFbeforePID;//beta vs momentum before PID cuts (QA histogram)
163 TH2D *fHistProbTPCvsPtbeforePID; //TPC probability vs pT before PID cuts (QA histogram)
164 TH2D *fHistProbTOFvsPtbeforePID;//TOF probability vs pT before PID cuts (QA histogram)
165 TH2D *fHistProbTPCTOFvsPtbeforePID;//TOF/TPC probability vs pT before PID cuts (QA histogram)
166 TH2D *fHistNSigmaTPCvsPtbeforePID;//TPC nsigma vs pT before PID cuts (QA histogram)
167 TH2D *fHistNSigmaTOFvsPtbeforePID;//TOF nsigma vs pT before PID cuts (QA histogram)
168 TH2D *fHistdEdxVsPTPCafterPID;//TPC dEdx vs momentum after PID cuts (QA histogram)
169 TH2D *fHistBetavsPTOFafterPID;//beta vs momentum after PID cuts (QA histogram)
170 TH2D *fHistProbTPCvsPtafterPID; //TPC probability vs pT after PID cuts (QA histogram)
171 TH2D *fHistProbTOFvsPtafterPID;//TOF probability vs pT after PID cuts (QA histogram)
172 TH2D *fHistProbTPCTOFvsPtafterPID;//TOF/TPC probability vs pT after PID cuts (QA histogram)
173 TH2D *fHistNSigmaTPCvsPtafterPID;//TPC nsigma vs pT after PID cuts (QA histogram)
174 TH2D *fHistNSigmaTOFvsPtafterPID;//TOF nsigma vs pT after PID cuts (QA histogram)
175
176 AliPIDResponse *fPIDResponse; //! PID response object
177 AliPIDCombined *fPIDCombined; //! combined PID object
178
179 kParticleOfInterest fParticleOfInterest;//analyzed particle
180 kDetectorUsedForPID fPidDetectorConfig;//used detector for PID
181
182 Bool_t fUsePID; //flag to use PID
183 Bool_t fUsePIDnSigma;//flag to use nsigma method for PID
184 Bool_t fUsePIDPropabilities;//flag to use probability method for PID
185 Double_t fPIDNSigma;//nsigma cut for PID
186 Double_t fMinAcceptedPIDProbability;//probability cut for PID
187 //============PID============//
188
189 AliESDtrackCuts *fESDtrackCuts; //ESD track cuts
190
191 TString fCentralityEstimator; //"V0M","TRK","TKL","ZDC","FMD"
192 Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)
193 Double_t fCentralityPercentileMin;//centrality percentile min
194 Double_t fCentralityPercentileMax;//centrality percentile max
195 Double_t fImpactParameterMin;//impact parameter min (used for MC)
196 Double_t fImpactParameterMax;//impact parameter max (used for MC)
197
198 Bool_t fUseMultiplicity;//use the multiplicity cuts
199 Int_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)
200 Int_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)
201 TH1F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks
202
203 Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection
204
205 Double_t fVxMax;//vxmax
206 Double_t fVyMax;//vymax
207 Double_t fVzMax;//vzmax
208
209 Int_t nAODtrackCutBit;//track cut bit from track selection (only used for AODs)
210
211 Double_t fPtMin;//only used for AODs
212 Double_t fPtMax;//only used for AODs
213 Double_t fEtaMin;//only used for AODs
214 Double_t fEtaMax;//only used for AODs
215
216 Double_t fDCAxyCut;//only used for AODs
217 Double_t fDCAzCut;//only used for AODs
218
219 Double_t fTPCchi2Cut;//only used for AODs
220 Int_t fNClustersTPCCut;//only used for AODs
221
222 TF1 *fAcceptanceParameterization;//acceptance filter used for MC
223
224 TF1 *fDifferentialV2;//pt-differential v2 (from real data)
225 Bool_t fUseFlowAfterBurner;//Usage of a flow after burner
226
227 Bool_t fExcludeResonancesInMC;//flag to exclude the resonances' decay products from the MC analysis
228 Bool_t fUseMCPdgCode; //Boolean to analyze a set of particles in MC
229 Int_t fPDGCodeToBeAnalyzed; //Analyze a set of particles in MC
230
231 // Event Mixing
232 AliVEvent *fMainEvent;//main event in the event mixing loop
233 AliVEvent *fMixEvent;//second event in the event mixing loop
234
235 AliMixInputEventHandler *SetupEventsForMixing();
236
237 AliAnalysisTaskEventMixingBF(const AliAnalysisTaskEventMixingBF&); // not implemented
238 AliAnalysisTaskEventMixingBF& operator=(const AliAnalysisTaskEventMixingBF&); // not implemented
239
240 ClassDef(AliAnalysisTaskEventMixingBF, 1); // example of analysis
241};
242
243#endif