1 #ifndef ALIANALYSISTASKBFPSI_CXX
\r
2 #define ALIANALYSISTASKBFPSI_CXX
\r
4 // Analysis task for the BF vs Psi code
\r
5 // Authors: Panos Cristakoglou@cern.ch
\r
12 class AliBalancePsi;
\r
13 class AliESDtrackCuts;
\r
15 #include "AliAnalysisTaskSE.h"
\r
16 #include "AliBalancePsi.h"
\r
18 #include "AliPID.h"
\r
19 #include "AliPIDResponse.h"
\r
20 #include "AliPIDCombined.h"
\r
23 class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
\r
25 AliAnalysisTaskBFPsi(const char *name = "AliAnalysisTaskBFPsi");
\r
26 virtual ~AliAnalysisTaskBFPsi();
\r
29 virtual void UserCreateOutputObjects();
\r
30 virtual void UserExec(Option_t *option);
\r
31 virtual void FinishTaskOutput();
\r
32 virtual void Terminate(Option_t *);
\r
34 void SetAnalysisObject(AliBalancePsi *const analysis) {
\r
35 fBalance = analysis;
\r
37 void SetShufflingObject(AliBalancePsi *const analysisShuffled) {
\r
38 fRunShuffling = kTRUE;
\r
39 fShuffledBalance = analysisShuffled;
\r
41 void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {
\r
42 fESDtrackCuts = trackCuts;}
\r
43 void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {
\r
49 //==============AOD analysis==============//
\r
50 void SetAODtrackCutBit(Int_t bit){
\r
51 nAODtrackCutBit = bit;
\r
54 void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){
\r
62 void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){
\r
67 void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){
\r
68 fTPCchi2Cut = maxTPCchi2;
\r
69 fNClustersTPCCut = minNClustersTPC;
\r
72 //==============MC analysis==============//
\r
73 void SetKinematicsCutsMC(Double_t ptmin, Double_t ptmax,
\r
74 Double_t etamin, Double_t etamax){
\r
75 fPtMin = ptmin; fPtMax = ptmax;
\r
76 fEtaMin = etamin; fEtaMax = etamax;
\r
78 void UseFlowAfterBurner(TF1 *gDifferentialV2) {
\r
79 fDifferentialV2 = gDifferentialV2;
\r
80 fUseFlowAfterBurner = kTRUE;
\r
82 void ExcludeResonancesInMC() {fExcludeResonancesInMC = kTRUE;}
\r
84 void SetPDGCode(Int_t gPdgCode) {
\r
85 fUseMCPdgCode = kTRUE;
\r
86 fPDGCodeToBeAnalyzed = gPdgCode;
\r
90 void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}
\r
91 const char* GetCentralityEstimator(void) {return fCentralityEstimator;}
\r
92 void SetCentralityPercentileRange(Double_t min, Double_t max) {
\r
93 fUseCentrality = kTRUE;
\r
94 fCentralityPercentileMin=min;
\r
95 fCentralityPercentileMax=max;
\r
97 void SetImpactParameterRange(Double_t min, Double_t max) {
\r
98 fUseCentrality = kTRUE;
\r
99 fImpactParameterMin=min;
\r
100 fImpactParameterMax=max;
\r
104 void SetMultiplicityRange(Int_t min, Int_t max) {
\r
105 fUseMultiplicity = kTRUE;
\r
106 fNumberOfAcceptedTracksMin = min;
\r
107 fNumberOfAcceptedTracksMax = max;}
\r
109 void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}
\r
111 //Acceptance filter
\r
112 void SetAcceptanceParameterization(TF1 *parameterization) {
\r
113 fAcceptanceParameterization = parameterization;}
\r
116 enum kDetectorUsedForPID { kTPCpid, kTOFpid, kTPCTOF }; // default TPC & TOF pid (via GetTPCpid & GetTOFpid)
\r
117 enum kParticleOfInterest { kMuon, kElectron, kPion, kKaon, kProton };
\r
119 void SetUseBayesianPID(Double_t gMinProbabilityValue) {
\r
120 fUsePID = kTRUE; fUsePIDnSigma = kFALSE; fUsePIDPropabilities = kTRUE;
\r
121 fMinAcceptedPIDProbability = gMinProbabilityValue; }
\r
123 void SetUseNSigmaPID(Double_t gMaxNSigma) {
\r
124 fUsePID = kTRUE; fUsePIDPropabilities = kFALSE; fUsePIDnSigma = kTRUE;
\r
125 fPIDNSigma = gMaxNSigma; }
\r
127 void SetParticleOfInterest(kParticleOfInterest poi) {
\r
128 fParticleOfInterest = poi;}
\r
129 void SetDetectorUsedForPID(kDetectorUsedForPID detConfig) {
\r
130 fPidDetectorConfig = detConfig;}
\r
133 AliBalancePsi *fBalance; //BF object
\r
134 Bool_t fRunShuffling;//run shuffling or not
\r
135 AliBalancePsi *fShuffledBalance; //BF object (shuffled)
\r
136 TList *fList; //fList object
\r
137 TList *fListBF; //fList object
\r
138 TList *fListBFS; //fList object
\r
139 TList *fHistListPIDQA; //! list of histograms
\r
141 TH2F *fHistEventStats; //event stats
\r
142 TH2F *fHistCentStats; //centrality stats
\r
143 TH1F *fHistTriggerStats; //trigger stats
\r
144 TH1F *fHistTrackStats; //Track filter bit stats
\r
145 TH1F *fHistVx; //x coordinate of the primary vertex
\r
146 TH1F *fHistVy; //y coordinate of the primary vertex
\r
147 TH2F *fHistVz; //z coordinate of the primary vertex
\r
149 TH2F *fHistEventPlane; //event plane distribution
\r
156 TH2F *fHistRapidity;//
\r
158 TH2F *fHistPhiBefore;//
\r
159 TH2F *fHistPhiAfter;//
\r
160 TH2F *fHistPhiPos;//
\r
161 TH2F *fHistPhiNeg;//
\r
163 TH2F *fHistRefTracks;//
\r
165 //============PID============//
\r
166 TH2D *fHistdEdxVsPTPCbeforePID;//
\r
167 TH2D *fHistBetavsPTOFbeforePID;//
\r
168 TH2D *fHistProbTPCvsPtbeforePID; //
\r
169 TH2D *fHistProbTOFvsPtbeforePID;//
\r
170 TH2D *fHistProbTPCTOFvsPtbeforePID;//
\r
171 TH2D *fHistNSigmaTPCvsPtbeforePID;//
\r
172 TH2D *fHistNSigmaTOFvsPtbeforePID;//
\r
173 TH2D *fHistdEdxVsPTPCafterPID;//
\r
174 TH2D *fHistBetavsPTOFafterPID;//
\r
175 TH2D *fHistProbTPCvsPtafterPID;//
\r
176 TH2D *fHistProbTOFvsPtafterPID;//
\r
177 TH2D *fHistProbTPCTOFvsPtafterPID;//
\r
178 TH2D *fHistNSigmaTPCvsPtafterPID;//
\r
179 TH2D *fHistNSigmaTOFvsPtafterPID; //
\r
181 AliPIDResponse *fPIDResponse; //! PID response object
\r
182 AliPIDCombined *fPIDCombined; //! combined PID object
\r
184 kParticleOfInterest fParticleOfInterest;
\r
185 kDetectorUsedForPID fPidDetectorConfig;
\r
188 Bool_t fUsePIDnSigma;//
\r
189 Bool_t fUsePIDPropabilities;//
\r
190 Double_t fPIDNSigma;//
\r
191 Double_t fMinAcceptedPIDProbability;//
\r
192 //============PID============//
\r
194 AliESDtrackCuts *fESDtrackCuts; //ESD track cuts
\r
196 TString fCentralityEstimator; //"V0M","TRK","TKL","ZDC","FMD"
\r
197 Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)
\r
198 Double_t fCentralityPercentileMin;//centrality percentile min
\r
199 Double_t fCentralityPercentileMax;//centrality percentile max
\r
200 Double_t fImpactParameterMin;//impact parameter min (used for MC)
\r
201 Double_t fImpactParameterMax;//impact parameter max (used for MC)
\r
203 Bool_t fUseMultiplicity;//use the multiplicity cuts
\r
204 Int_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)
\r
205 Int_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)
\r
206 TH2F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks
\r
208 Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection
\r
210 Double_t fVxMax;//vxmax
\r
211 Double_t fVyMax;//vymax
\r
212 Double_t fVzMax;//vzmax
\r
214 Int_t nAODtrackCutBit;//track cut bit from track selection (only used for AODs)
\r
216 Double_t fPtMin;//only used for AODs
\r
217 Double_t fPtMax;//only used for AODs
\r
218 Double_t fEtaMin;//only used for AODs
\r
219 Double_t fEtaMax;//only used for AODs
\r
221 Double_t fDCAxyCut;//only used for AODs
\r
222 Double_t fDCAzCut;//only used for AODs
\r
224 Double_t fTPCchi2Cut;//only used for AODs
\r
225 Int_t fNClustersTPCCut;//only used for AODs
\r
227 TF1 *fAcceptanceParameterization;//acceptance filter used for MC
\r
229 TF1 *fDifferentialV2;//pt-differential v2 (from real data)
\r
230 Bool_t fUseFlowAfterBurner;//Usage of a flow after burner
\r
232 Bool_t fExcludeResonancesInMC;//flag to exclude the resonances' decay products from the MC analysis
\r
233 Bool_t fUseMCPdgCode; //Boolean to analyze a set of particles in MC
\r
234 Int_t fPDGCodeToBeAnalyzed; //Analyze a set of particles in MC
\r
238 AliAnalysisTaskBFPsi(const AliAnalysisTaskBFPsi&); // not implemented
\r
239 AliAnalysisTaskBFPsi& operator=(const AliAnalysisTaskBFPsi&); // not implemented
\r
241 ClassDef(AliAnalysisTaskBFPsi, 5); // example of analysis
\r