AliPhysics  e46d415 (e46d415)
AliAnalysisTaskFlowModes.h
Go to the documentation of this file.
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
2 /* See cxx source for full Copyright notice */
3 /* $Id$ */
4 
5 #ifndef AliAnalysisTaskFlowModes_H
6 #define AliAnalysisTaskFlowModes_H
7 
8 #include <vector>
9 
10 #include "AliAnalysisTaskSE.h"
11 #include "AliAODVertex.h"
12 #include "AliAODTrack.h"
13 #include "AliPIDResponse.h"
14 #include "AliPIDCombined.h"
15 #include "AliESDpid.h"
16 #include "AliFlowBayesianPID.h"
17 
18 #include "TComplex.h"
19 #include "TFile.h"
20 #include "TList.h"
21 #include "TH1D.h"
22 #include "TH2D.h"
23 #include "TH3D.h"
24 #include "TProfile.h"
25 #include "TProfile2D.h"
26 
27 
28 
30 {
31  public:
32  enum RunMode {kTest, kFillWeights, kFull}; // task running mode (NOT GRID MODE)
33  enum AnalType {kAOD, kESD}; // tag for analysis type
34  enum PartSpecies {kUnknown, kCharged, kPion, kKaon, kProton}; // list of all particle species of interest
35  enum ColSystem {kPP, kPbPb};
36  struct FlowPart // representation of selected particle (species independent) storing only basic properties for flow calculations
37  {
38  FlowPart(Double_t dPt = 0, Double_t dPhi = 0, Double_t dEta = 0, Short_t iCharge = 0, PartSpecies sSpecies = kUnknown, Double_t dMass = 0, Double_t dPx = 0, Double_t dPy = 0, Double_t dPz = 0) :
39  pt(dPt), px(dPx), py(dPy), pz(dPz), phi(dPhi), eta(dEta), mass(dMass), charge(iCharge), species(sSpecies) {} // constructor
40 
41  void PrintPart() const { printf("pt %g | px %g | py %g| pz %g | phi %g | eta %g | mass %g | charge %d | species %d \n",pt,px,py,pz,phi,eta,mass,charge,species); } // print struct members
42 
46  };
47  AliAnalysisTaskFlowModes(); // constructor
48  AliAnalysisTaskFlowModes(const char *name); // named (primary) constructor
49  virtual ~AliAnalysisTaskFlowModes(); // destructor
50 
51  virtual void UserCreateOutputObjects(); //
52  virtual void UserExec(Option_t* option); // main methond - called for each event
53  virtual void Terminate(Option_t* option); // called after all events are processed
54  // analysis setters
55  void SetColisionSystem(ColSystem colSystem = kPbPb) {fColSystem = colSystem; }
56  void SetRunMode(RunMode mode = kFull) { fRunMode = mode; }
58  void SetAnalysisType(AnalType type = kAOD) { fAnalType = type; }
59  void SetSampling(Bool_t sample = kTRUE) { fSampling = sample; }
60  void SetFillQAhistos(Bool_t fill = kTRUE) { fFillQA = fill; }
61  void SetProcessCharged(Bool_t filter = kTRUE) { fProcessCharged = filter; }
62  void SetProcessPID(Bool_t filter = kTRUE, Bool_t PIDbayesian = kFALSE) {
63  fProcessPID = filter;
64  if(PIDbayesian){fPIDbayesian = PIDbayesian; fPIDnsigma = kFALSE;}else{fPIDbayesian = kFALSE; fPIDnsigma = kTRUE;}
65  }
66  // flow related setters
71  void SetFlowFillWeights(Bool_t weights = kTRUE) { fFlowFillWeights = weights; }
74 
75  // events setters
76  void SetMultEstimator(const char* mult = "CHARGED") { fMultEstimator = mult; }
77  void SetTrigger(Short_t trigger = 0) { fTrigger = trigger; }
78  void SetPVtxZMax(Double_t z) { fPVtxCutZ = z; }
79  void SetCentralityRange(Bool_t kCentRange){fFullCentralityRange = kCentRange;}
80  // track setters
87  void SetMaxChi2perTPCcls(Double_t MaxChi2 = 4){ fMaxChi2perTPCcls = MaxChi2;}
89  // PID (pi,K,p) setters
90 
92  void SetPIDNumSigmasPionMax(Double_t numSigmas) { fCutPIDnSigmaPionMax = numSigmas; }
93  void SetPIDNumSigmasKaonMax(Double_t numSigmas) { fCutPIDnSigmaKaonMax = numSigmas; }
94  void SetPIDNumSigmasProtonMax(Double_t numSigmas) { fCutPIDnSigmaProtonMax = numSigmas; }
103  void SetPriors(Float_t centr = 0); // set Noferini's favourite priors for Bayesian PID (requested if Bayesian PID is used)
104  AliESDpid& GetESDpid() {return fESDpid;}
105  Bool_t TPCTOFagree(const AliVTrack *track);
106 
107  private:
108 
109  // properties
111  AliPIDResponse* fPIDResponse;
112  AliPIDCombined* fPIDCombined;
115  Bool_t fInit; // initialization check
116  Short_t fIndexSampling; // sampling index (randomly generated)
117  Short_t fIndexCentrality; // centrality bin index (based on centrality est. or number of selected tracks)
118  Short_t fEventCounter; // event counter (used for local test runmode purpose)
119  Short_t fNumEventsAnalyse; // [50] number of events to be analysed / after passing selection (only in test mode)
120  Int_t fRunNumber; // [-1] run number obtained from AliVHeader
121  Bool_t fExtraPileUp; // extra pile-up cuts
122  // array lenghts & constants
123  const Double_t fPDGMassPion; // [DPGMass] DPG mass of charged pion
124  const Double_t fPDGMassKaon; // [DPGMass] DPG mass of charged kaon
125  const Double_t fPDGMassProton; // [DPGMass] DPG mass of proton
126 
127  // selected POIs containers
128  std::vector<FlowPart>* fVectorCharged;
129  std::vector<FlowPart>* fVectorPion;
130  std::vector<FlowPart>* fVectorKaon;
131  std::vector<FlowPart>* fVectorProton;
132 
133  //cuts & selection: analysis
134  RunMode fRunMode; // running mode (not grid related)
135  AnalType fAnalType; // analysis type: AOD / ESD
136  Bool_t fSampling; // Do random sampling ? (estimation of vn stat. uncertanity)
137  Bool_t fFillQA; //[kTRUE] flag for filling the QA plots
138  Bool_t fProcessCharged; // flag for processing charged tracks (both RPF and POIs)
139  Bool_t fProcessPID; // flag for processing PID tracks (pi,K,p)
141 
142  // cuts & selection: flow related
143  Float_t fCutFlowRFPsPtMin; // [0] (GeV/c) min pT threshold for RFPs particle for reference flow
144  Float_t fCutFlowRFPsPtMax; // [0] (GeV/c) max pT threshold for RFPs particle for reference flow
145  const Float_t fFlowPOIsPtMin; // [0] (GeV/c) min pT treshold for POIs for differential flow
146  const Float_t fFlowPOIsPtMax; // [20] (GeV/c) max pT treshold for POIs for differential flow
147  const Int_t fFlowCentMin; // [0] min range for centrality/multiplicity histos
148  const Int_t fFlowCentMax; // [150] min range for centrality/multiplicity histos
149  const Int_t fFlowCentNumBins; // [150] min range for centrality/multiplicity histos
150  Bool_t fCutFlowDoFourCorrelations; // [kTRUE] flag for processing <4>
151  Bool_t fDoOnlyMixedCorrelations; // [kTRUE] flag if I only want to analyse mixed harmonics
152  Bool_t fFlowFillWeights; //[kFALSE] flag for filling weights
153  Bool_t fFlowUseNUAWeights; //[kFALSE] flag for using the previously filled NUA weights (NOTE: this is turned on only when path to file is applied via fFlowWeightsPath)
154  Bool_t fFlowUseNUEWeights; //[kFALSE] flag for using the previously filled NUE weights (NOTE: this is turned on only when path to file is applied via fFlowWeightsPath)
155  TString fFlowNUAWeightsPath;//[] path to source root file with weigthts (if empty unit weights are applied) "alice/cern.ch/user/n/nmohamma/CorrectionMaps/fb96/NUACorrectionMap.root"
156 
157  TString fFlowNUEWeightsPath; //[] path to source root file with weigthts (if empty unit weights are applied) e.g. "alice/cern.ch/user/k/kgajdoso/EfficienciesWeights/2016/PhiWeight_LHC16kl.root"
158  Bool_t fPositivelyChargedRef; //for same charged reference particle studies
159  Bool_t fNegativelyChargedRef; //for same charged reference particle studies
160  Bool_t fPositivelyChargedPOI; //for like sign reference particles and POIs studies
161  Bool_t fNegativelyChargedPOI; //for unlike sign reference particle and POIs studies
162 
163 
164  //cuts & selection: events
165  Float_t fPVtxCutZ; // (cm) PV z cut
166  ColSystem fColSystem; // collision system: pp or PbPb both with Run2 data (2016 data for pp and 2015 for PbPb)
167  TString fMultEstimator; // [''] multiplicity estimator (suported: ''/Charged,VOA,V0C,V0M,CL0,CL1,ZNA,ZNC)
168  Short_t fTrigger; // physics selection trigger
169  Bool_t fFullCentralityRange; // flag for running over the full centrality range (0-100%). Otherwise runs from 50-100%
170 
171  //cuts & selection: tracks
172  Float_t fCutChargedEtaMax; // (-) Maximum pseudorapidity range
173  Float_t fCutChargedPtMax; // (GeV/c) Maximal track pT
174  Float_t fCutChargedPtMin; // (GeV/c) Minimal track pT
175  Float_t fCutChargedDCAzMax; // (cm) Maximal DCA-z cuts for tracks (pile-up rejection suggested for LHC16)
176  Float_t fCutChargedDCAxyMax; // (cm) Maximal DCA-xy cuts for tracks (pile-up rejection suggested for LHC16)
177  UInt_t fCutChargedTrackFilterBit; // (-) tracks filter bit
178  UShort_t fCutChargedNumTPCclsMin; // (-) Minimal number of TPC clusters used for track reconstruction
179  Double_t fMaxChi2perTPCcls; // max chi2 per TPC clusters
180 
181  // cuts & selection: PID selection
182  AliESDpid fESDpid;
183  Bool_t fCutPIDUseAntiProtonOnly; // [kFALSE] check proton PID charge to select AntiProtons only
184  Bool_t fPIDnsigma; // [kTRUE] default pid method
185  Int_t fPIDnsigmaCombination; // 1,2,3 for PID nsigma combinations 1,2,3
186  Bool_t fPIDbayesian; // [kFALSE] bayesian pid method
187  Double_t fCutPIDnSigmaPionMax; // [3] maximum of nSigmas (TPC or TPC & TOF combined) for pion candidates
188  Double_t fCutPIDnSigmaKaonMax; // [3] maximum of nSigmas (TPC or TPC & TOF combined) for kaon candidates
189  Double_t fCutPIDnSigmaProtonMax; // [3] maximum of nSigmas (TPC or TPC & TOF combined) for proton candidates
190  Double_t fCutPIDnSigmaTPCRejectElectron; // [3] number of TPC nSigma for electron rejection
191  Bool_t fCutPIDnSigmaCombinedNoTOFrejection; // [kFALSE] flag for rejection candidates in TPC+TOF pt region if TOF is not available (if true and no TOF, only TPC is used)
192  Float_t fCurrCentr; // current centrality used for set the priors
193  Double_t fParticleProbability; // Minimum Bayesian probability
194 
195  static const Int_t fNumCentralities = 7; // number of centrality ranges for NUE maps (for now...)
196  static const Int_t fgkPIDptBin = 32; // pT bins for priors
197  Float_t fC[fgkPIDptBin][5],fBinLimitPID[fgkPIDptBin]; // pt bin limit and priors
198  static const Short_t fFlowNumHarmonicsMax = 10; // maximum harmonics length of flow vector array
199  static const Short_t fFlowNumWeightPowersMax = 10; // maximum weight power length of flow vector array
200  static const Short_t fFlowPOIsPtNumBins = 100; // number of pT bins for POIs
201 
202  static const Short_t fiNumIndexQA = 2; // QA indexes: 0: before cuts // 1: after cuts
203 
204  const static Short_t fNumSamples = 10; // overall number of samples (from random sampling) used
205  const static Int_t fNumHarmonics = 5; // number of harmonics
206  const static Int_t fNumMixedHarmonics = 4; // number of mixed harmonics: 4{psi2}, 6{psi3} and 5{psi2,3}
207  static Int_t fHarmonics[fNumHarmonics]; // values of used harmonics
208  static Int_t fMixedHarmonics[fNumMixedHarmonics]; // values of used harmonics
209  const static Int_t fNumEtaGap = 3; // number of harmonics
210  static Double_t fEtaGap[fNumEtaGap]; // values of used harmonics
211 
212 
213  // output lists
221 
222  // histograms & profiles
223 
224  // Flow
230 
236 
242 
248 
254 
260 
261  // Events
266  // Charged
272  // PID
278 
284 
290 
293 
296 
299 
318 
321 
324 
327 
330 
333 
334  TComplex fFlowVecQpos[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]; // flow vector array for flow calculation
335  TComplex fFlowVecQneg[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]; // flow vector array for flow calculation
336  TComplex fFlowVecPpos[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]; // flow vector array for flow calculation
337  TComplex fFlowVecPneg[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]; // flow vector array for flow calculation
338  TComplex fFlowVecS[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]; // flow vector array for flow calculation
339 
340 
341  // histograms & profiles
342 
347 
357 
358  //TProfile* fpRefsCor4[fNumSamples][fNumHarmonics]; //! <4> correlations for RFPs
359  //TProfile2D* fp2ChargedCor4[fNumSamples][fNumHarmonics]; //! <4'> correlations for Charged tracks POIs
360  //TProfile2D* fp2PionCor4[fNumSamples][fNumHarmonics]; //! <4'> correlations for pion POIs
361  //TProfile2D* fp2KaonCor4[fNumSamples][fNumHarmonics]; //! <4'> correlations for kaon POIs
362  //TProfile2D* fp2ProtonCor4[fNumSamples][fNumHarmonics]; //! <4'> correlations for proton POIs
363 
364  //Mixed harmonics:
383 
384  // QA: events
393  // QA: charged tracks
403  // QA: PID tracks
408 
412 
416 
420 
421 
422  // functions:
423  Bool_t InitializeTask(); // called once on beginning of task (within CreateUserObjects method)
424  void ListParameters(); // list all task parameters
425 
426  Bool_t EventSelection(); // main method for event selection (specific event selection is applied within)
427  Bool_t IsEventSelected_PbPb(); // event selection for LHC2015 PbPb data
428  Bool_t IsEventSelected_pp(); // event selection for LHC2016 MB pp data
429  void FillEventsQA(const Short_t iQAindex); // filling QA plots related to event selection
430  Short_t GetSamplingIndex(); // returns sampling index based on sampling selection (number of samples)
431  Short_t GetCentralityIndex(); // returns centrality index based centrality estimator or number of selected tracks
432  Double_t GetWDist(const AliAODVertex* v0, const AliAODVertex* v1); // gets the distance between the two vertices
433  Bool_t ProcessEvent(); // main (envelope) method for processing events passing selection
434 
435  Bool_t Filtering(); // main (envelope) method for filtering all POIs in event
436  void FilterCharged(); // charged tracks filtering
437  Bool_t IsChargedSelected(const AliAODTrack* track = 0x0); // charged track selection
438  void FillQARefs(const Short_t iQAindex, const AliAODTrack* track = 0x0); // filling QA plots for RFPs selection
439  void FillQACharged(const Short_t iQAindex, const AliAODTrack* track = 0x0); // filling QA plots for charged track selection
440  void FilterPID(); // pi,K,p filtering
441  PartSpecies IsPIDSelected(const AliAODTrack* track); // PID tracks selections
442  void FillPIDQA(const Short_t iQAindex, const AliAODTrack* track = 0x0, const PartSpecies species = kUnknown); // filling pi,K,p QA histograms
443  // Flow related methods
444  void DoFlowRefs(const Short_t iEtaGapIndex = 0); // Estimate <2> for reference flow
445  void DoFlowCharged(const Short_t iEtaGapIndex = 0); // Estimate <2'> for pt diff. flow of charged hadrons
446  void DoFlowPID(const Short_t iEtaGapIndex = 0, const PartSpecies species = kUnknown); // Estimate <2'> for pt diff. flow of PID (pi,K,p) hadrons
447  void FillRefsVectors(const Short_t iEtaGapIndex = 0); // fill flow vector Q with RFPs for reference flow
448  void FillPOIsVectors(const Short_t iEtaGapIndex = 0, const PartSpecies species = kUnknown, const Short_t iMassIndex = 0); // fill flow vectors p,q and s with POIs (for given species) for differential flow calculations
449  Short_t GetPOIsPtBinIndex(const Double_t pt); // return pT bin index based on momenta value
450  void ResetRFPsVector(TComplex (&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]); // set values to TComplex(0,0,0) for given array
451  void ResetPOIsVector(TComplex (&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]); // set values to TComplex(0,0,0) for given array
452  void ListFlowVector(TComplex (&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]); // printf all values of given Flow vector array
453 
454  TComplex Q(const Short_t n, const Short_t p);
455  TComplex QGapPos(const Short_t n, const Short_t p);
456  TComplex QGapNeg(const Short_t n, const Short_t p);
457  TComplex P(const Short_t n, const Short_t p, const Short_t pt);
458  TComplex PGapPos(const Short_t n, const Short_t p, const Short_t pt);
459  TComplex PGapNeg(const Short_t n, const Short_t p, const Short_t pt);
460  TComplex S(const Short_t n, const Short_t p, const Short_t pt);
461 
462  TComplex Two(const Short_t n1, const Short_t n2); // Two particle reference correlation calculations (no eta gap)
463  TComplex TwoGap(const Short_t n1, const Short_t n2); // Two particle reference correlation calculations (with eta gap)
464  TComplex TwoDiff(const Short_t n1, const Short_t n2, const Short_t pt); // Two particle diff. correlation calculations (no eta gap)
465  TComplex TwoDiffGapPos(const Short_t n1, const Short_t n2, const Short_t pt); // Two particle diff. correlation calculations (with eta gap)
466  TComplex TwoDiffGapNeg(const Short_t n1, const Short_t n2, const Short_t pt); // Two particle diff. correlation calculations (with eta gap)
467 
468  TComplex ThreeDiffGapPos(const Short_t n1, const Short_t n2, const Short_t n3,const Short_t pt); // Three particle diff. correlation calculations (with eta gap);
469  TComplex ThreeDiffGapNeg(const Short_t n1, const Short_t n2, const Short_t n3,const Short_t pt); // Three particle diff. correlation calculations (with eta gap);
470 
471  TComplex Four(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4); // Four particle reference correlation calculations (no eta gap)
472  TComplex FourDiff(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t pt); // Four particle reference correlation calculations (no eta gap)
473  TComplex FourGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4); // Four particle reference correlation calculations (with eta gap); n1+n2 = n3+n4; n1, n2 from P & n3, n4 from M
474  TComplex FourGapNeg(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4); // Four particle reference correlation calculations (with eta gap); n1+n2 = n3+n4; n1, n2 from M & n3, n4 from P
475  TComplex Four13DiffGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t pt); // Four particle diff. correlation calculations (with eta gap); n1 = n2+n3+n4; n1 from P & n2, n3, n4 from M
476  TComplex Four13DiffGapNeg(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t pt); // Four particle diff. correlation calculations (with eta gap); n1 = n2+n3+n4; n1 from M & n2, n3, n4 from P
477  TComplex SixGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t n5, const Short_t n6); // Six particle reference correlation calculations (with eta gap); n1 + n2 + n3 = n4 + n5 + n6 ;n1, n2, n3 from P and n4, n5 and n6 from M
478  TComplex SixGapNeg(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t n5, const Short_t n6); // Six particle reference correlation calculations (with eta gap); n1 + n2 + n3 = n4 + n5 + n6; n1, n2, n3 from M and n4, n5 and n6 from P
479 
480 
481  AliAnalysisTaskFlowModes(const AliAnalysisTaskFlowModes&); // not implemented
482  AliAnalysisTaskFlowModes& operator=(const AliAnalysisTaskFlowModes&); // not implemented
483 
484  ClassDef(AliAnalysisTaskFlowModes, 4);
485 };
486 
487 #endif
TProfile2D * fp2ChargedCor2Neg[fNumSamples][fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for Charged tracks POIs: POIs in Eta>0
TH3D * fh3PIDPionTPCTOFnSigmaProton[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected pions (kaon hypothesis)
TH1F * fhNUEWeightKaonMinus
container for loading weights for given run
TH3D * fh3PIDKaonTPCTOFnSigmaKaon[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected kaons (pion hypothesis)
TH2D * fhQAPIDTPCdEdx[fiNumIndexQA]
based on AliPIDResponse::CheckPIDStatus();
TH3D * fh3NUAWeightRefsMinus
container for loading weights for given run
TH1D * fhQAChargedNumTPCcls[fiNumIndexQA]
filter bit distribution of charged tracks
TH1F * fhNUEWeightProtonPlus
container for loading weights for given run
TH1F * fhNUEWeightPionMinus
container for loading weights for given run
void SetMultEstimator(const char *mult="CHARGED")
void SetFlowFillWeights(Bool_t weights=kTRUE)
TH1D * fhQAEventsSPDresol[fiNumIndexQA]
double Double_t
Definition: External.C:58
std::vector< FlowPart > * fVectorPion
container for selected charged particles
TProfile2D * fpMixedChargedCor4Pos[fNumSamples][fNumEtaGap]
<3&#39;> correlations for proton POIs: POIs in Eta<0
void ListFlowVector(TComplex(&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax])
TProfile2D * fpMixedPionCor3Pos[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for Charged tracks POIs: POIs in Eta<0
TH3D * fh3NUAWeightProtonPlus
container for loading weights for given run
TH2D * fh2PIDKaonTPCnSigmaKaon
TOF nSigma vs pT for selected kaons (pion hypothesis)
void SetChargedDCAxyMax(Double_t dcaxy)
void SetAnalysisType(AnalType type=kAOD)
TH3D * fh3PIDProtonTPCTOFnSigmaPion[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected kaons (proton hypothesis)
TH2D * fh2PIDKaonTPCnSigmaProton
TOF nSigma vs pT for selected kaons (kaon hypothesis)
TComplex FourDiff(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t pt)
TProfile2D * fpMixedPionCor4Neg[fNumSamples][fNumEtaGap]
<4&#39;> correlations for pion POIs: POIs in Eta>0
TH2D * fh2PIDPionTOFbeta
TPC dEdx response of selected pions.
AliPIDResponse * fPIDResponse
AOD event countainer.
TComplex fFlowVecS[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]
TComplex SixGapNeg(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t n5, const Short_t n6)
void FillPIDQA(const Short_t iQAindex, const AliAODTrack *track=0x0, const PartSpecies species=kUnknown)
TH1D * fhQAPIDTPCstatus[fiNumIndexQA]
dist of charged DCA in z coordinate
TH1D * fhQAChargedPt[fiNumIndexQA]
number of AOD charged tracks distribution
TH1D * fhQAEventsNumContrPV[fiNumIndexQA]
TH3D * fh3PIDProtonTPCTOFnSigmaProton[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected protons (kaon hypothesis)
TH2D * fh2PIDProtonTPCnSigmaPion
TOF nSigma vs pT for selected kaons (proton hypothesis)
void SetFillQAhistos(Bool_t fill=kTRUE)
TH3D * fh3PIDProtonTPCTOFnSigmaKaon[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected protons (pion hypothesis)
TH3D * fh3BeforeNUAWeightsRefs
list for flow of PID (pi,K,p) particles
TProfile * fpRefsCor2[fNumSamples][fNumEtaGap][fNumHarmonics]
average of Qy (vs. centrality) for Refs
void SetPIDUseAntiProtonOnly(Bool_t use=kTRUE)
TComplex S(const Short_t n, const Short_t p, const Short_t pt)
std::vector< FlowPart > * fVectorKaon
container for selected pion candidates
void FillEventsQA(const Short_t iQAindex)
TComplex P(const Short_t n, const Short_t p, const Short_t pt)
TProfile2D * fpMixedProtonCor4Pos[fNumSamples][fNumEtaGap]
<4&#39;> correlations for kaon POIs: POIs in Eta<0
TProfile * fpMeanQxRefsPos[fNumEtaGap][fNumHarmonics]
void SetChargedNumTPCclsMin(UShort_t tpcCls)
TComplex Four(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4)
void SetNegativelyChargedRef(Bool_t Neg=kFALSE)
void SetPositivelyChargedPOI(Bool_t Pos=kFALSE)
TProfile2D * fpMixedProtonCor3Pos[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for kaon POIs: POIs in Eta<0
TH2D * fh2RefsPhi
pt distribution of selected RFPs
static Int_t fHarmonics[fNumHarmonics]
static Double_t fEtaGap[fNumEtaGap]
TComplex PGapPos(const Short_t n, const Short_t p, const Short_t pt)
TH1D * fhQAChargedFilterBit[fiNumIndexQA]
charge dist of charged tracks
TH1F * fhNUEWeightChargedMinus
container for loading weights for given run
TProfile * fpMixedRefsCor6[fNumSamples][fNumEtaGap]
<4> correlations for RFPs
TProfile * fpMixedRefsCor4[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<2&#39;> correlations for proton POIs: POIs in Eta>0
TH2D * fh2PIDProtonPhi
pt distribution of selected protons
TProfile2D * fp2KaonCor2Neg[fNumSamples][fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for kaon POIs: POIs in Eta>0
TProfile2D * fp2KaonCor2Pos[fNumSamples][fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for pion POIs: POIs in Eta>0
TH3D * fh3NUAWeightPionPlus
container for loading weights for given run
TH1D * fhPIDPionCharge
eta distribution of selected pions
TList * fFlowRefs
list for flow weights
void FillRefsVectors(const Short_t iEtaGapIndex=0)
TH1D * fhBeforeNUEWeightsProton
distribution of Kaon POIs particles for estimating weight purpose (pt)
TProfile2D * fp2ChargedCor2Pos[fNumSamples][fNumEtaGap][fNumHarmonics]
<2> correlations for RFPs
static Int_t fMixedHarmonics[fNumMixedHarmonics]
TH2D * fh2PIDProtonTOFnSigmaKaon
TPC nSigma vs pT for selected protons (kaon hypothesis)
TH2D * fh2PIDPionTPCnSigmaProton
TOF nSigma vs pT for selected pions (kaon hypothesis)
Bool_t fInit
source file containing weights
TH1D * fhQAChargedPhi[fiNumIndexQA]
eta dist of charged tracks
TH2D * fh2PIDKaonTPCdEdx
TOF beta of selected pions.
TH1D * fhAfterNUEWeightsCharged
distribution of Refs particles after applying the weights (pt)
TProfile2D * fpMixedProtonCor4Neg[fNumSamples][fNumEtaGap]
<4&#39;> correlations for proton POIs: POIs in Eta>0
TComplex FourGapNeg(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4)
TComplex fFlowVecQneg[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]
void SetFlowDoOnlyMixedCorrelations(Bool_t b=kFALSE)
TH2D * fh2PIDKaonMult
charge distribution of selected pions
TComplex QGapPos(const Short_t n, const Short_t p)
void DoFlowPID(const Short_t iEtaGapIndex=0, const PartSpecies species=kUnknown)
TComplex TwoDiff(const Short_t n1, const Short_t n2, const Short_t pt)
TH1D * fhPIDProtonCharge
eta distribution of selected protons
TH2D * fh2PIDPionPt
multiplicity distribution of selected pions
TComplex Four13DiffGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t pt)
TH1D * fhEventCounter
distribution of event centrality vs number of selected charged tracks
Bool_t TPCTOFagree(const AliVTrack *track)
TH1D * fhChargedCounter
pt distribution of selected RFPs
void SetSampling(Bool_t sample=kTRUE)
TH1D * fhBeforeNUEWeightsCharged
distribution of Refs particles for estimating weight purpose (pt)
TH2D * fh2RefsMult
counter following event selection
TProfile * fpMeanQyRefsNeg[fNumEtaGap][fNumHarmonics]
average of Qy (vs. centrality) for Refs
TH1F * fhNUEWeightChargedPlus
container for loading weights for given run
TH2D * fh2PIDProtonTOFnSigmaProton
TPC nSigma vs pT for selected protons (proton hypothesis)
void SetProcessPID(Bool_t filter=kTRUE, Bool_t PIDbayesian=kFALSE)
TProfile2D * fp2ProtonCor2Pos[fNumSamples][fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for kaon POIs: POIs in Eta>0
PartSpecies IsPIDSelected(const AliAODTrack *track)
TProfile * fpMeanQyRefsPos[fNumEtaGap][fNumHarmonics]
average of Qx (vs. centrality) for Refs
TH2D * fh2PIDProtonMult
charge distribution of selected pions
TH3D * fh3AfterNUAWeightsRefs
distribution of Proton POIs particles for estimating weight purpose (phi,eta,vtx_z) ...
TH3D * fh3PIDPionTPCTOFnSigmaKaon[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected pions (pion hypothesis)
AliPIDCombined * fPIDCombined
AliPIDResponse container.
TH2D * fh2PIDPionTPCnSigmaKaon
TOF nSigma vs pT for selected pions (pion hypothesis)
TH2D * fhQAPIDTOFbeta[fiNumIndexQA]
TPC PID information.
TH1D * fhAfterNUEWeightsKaon
distribution of Pion POIs particles after applying the weights (pt)
TH1D * fhQAEventsPVz[fiNumIndexQA]
<4&#39;> correlations for proton POIs: POIs in Eta<0
TH3D * fh3PIDPionTPCTOFnSigmaPion[fiNumIndexQA]
TOF PID information.
AliAnalysisTaskFlowModes & operator=(const AliAnalysisTaskFlowModes &)
std::vector< FlowPart > * fVectorCharged
Double_t GetWDist(const AliAODVertex *v0, const AliAODVertex *v1)
int Int_t
Definition: External.C:63
TProfile2D * fpMixedChargedCor3Pos[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<6> correlations for RFPs
void SetChargedTrackFilterBit(UInt_t filter)
void SetProcessCharged(Bool_t filter=kTRUE)
Bool_t IsChargedSelected(const AliAODTrack *track=0x0)
void SetCentralityRange(Bool_t kCentRange)
unsigned int UInt_t
Definition: External.C:33
TH3D * fh3BeforeNUAWeightsPion
distribution of Charged POIs particles for estimating weight purpose (phi,eta,vtx_z) ...
TH1D * fhEventCentrality
distribution of sampled events (based on randomly generated numbers)
TH1D * fhQAChargedDCAz[fiNumIndexQA]
dist of Charged DCA in transverse plane
TProfile2D * fp2ProtonCor2Neg[fNumSamples][fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for proton POIs: POIs in Eta>0
float Float_t
Definition: External.C:68
TH2D * fh2PIDKaonPt
multiplicity distribution of selected pions
void DoFlowRefs(const Short_t iEtaGapIndex=0)
TH3D * fh3BeforeNUAWeightsKaon
distribution of Pion POIs particles for estimating weight purpose (phi,eta,vtx_z) ...
void SetFlowDoFourCorrelations(Bool_t four=kTRUE)
TH2D * fhQAEventsCentralityOutliers[fiNumIndexQA]
std::vector< FlowPart > * fVectorProton
container for selected kaon candidates
TH3D * fh3NUAWeightPionMinus
container for loading weights for given run
TH2D * fh2PIDProtonTOFbeta
TPC dEdx response of selected pions.
TH3D * fh3PIDKaonTPCTOFnSigmaProton[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected kaons (kaon hypothesis)
void SetPIDNumSigmasPionMax(Double_t numSigmas)
TProfile * fpMeanQxRefsNeg[fNumEtaGap][fNumHarmonics]
average of Qx (vs. centrality) for Refs
Bool_t InitializeTask()
TPC nSigma vs TOF nSigma vs pT for selected protons (proton hypothesis)
TH1D * fhAfterNUEWeightsProton
distribution of Kaon POIs particles after applying the weights (pt)
TH1D * fhBeforeNUEWeightsKaon
distribution of Pion POIs particles for estimating weight purpose (pt)
TH2D * fh2PIDProtonTOFnSigmaPion
TPC nSigma vs pT for selected protons (pion hypothesis)
void SetBayesianProbability(Double_t prob=0.9)
Definition: External.C:252
static const Short_t fFlowPOIsPtNumBins
TComplex QGapNeg(const Short_t n, const Short_t p)
TH2D * fh2PIDProtonEta
phi distribution of selected protons
TH2D * fh2EventCentralityNumSelCharged
distribution of event centrality
TH2D * fh2PIDPionTOFnSigmaPion
TPC nSigma vs pT for selected pions (pion hypothesis)
Definition: External.C:228
Definition: External.C:212
TComplex fFlowVecQpos[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]
container for loading weights for given run
TH2D * fh2PIDPionTOFnSigmaKaon
TPC nSigma vs pT for selected pions (kaon hypothesis)
TH2D * fh2PIDPionTPCdEdx
charge distribution of selected pions
void SetRunMode(RunMode mode=kFull)
TH3D * fh3NUAWeightKaonMinus
container for loading weights for given run
Float_t fCutFlowRFPsPtMin
Baysian response with all the TOF tuning (using fESDpid)
TH1D * fhQAEventsNumSPDContrPV[fiNumIndexQA]
TH1D * fhBeforeNUEWeightsPion
distribution of Charged POIs particles for estimating weight purpose (pt)
TH2D * fh2PIDProtonTPCdEdx
TOF beta of selected pions.
TH2D * fhEventSampling
container for loading weights for given run
TH2D * fh2PIDPionMult
counter following charged track selection
TH1F * fhNUEWeightRefsPlus
TOF nSigma vs pT for selected protons (proton hypothesis)
TComplex fFlowVecPpos[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]
Int_t mode
Definition: anaM.C:41
TH2D * fh2PIDKaonTPCnSigmaPion
TOF nSigma vs pT for selected pions (proton hypothesis)
TH3D * fh3NUAWeightKaonPlus
container for loading weights for given run
TH3D * fh3PIDKaonTPCTOFnSigmaPion[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected pions (proton hypothesis)
TProfile2D * fpMixedPionCor4Pos[fNumSamples][fNumEtaGap]
<4&#39;> correlations for Charged tracks POIs: POIs in Eta<0
TList * fFlowPID
list for flow of charged particles
RunMode fRunMode
container for selected proton candidates
TH1D * fhQAEventsDistPVSPD[fiNumIndexQA]
FlowPart(Double_t dPt=0, Double_t dPhi=0, Double_t dEta=0, Short_t iCharge=0, PartSpecies sSpecies=kUnknown, Double_t dMass=0, Double_t dPx=0, Double_t dPy=0, Double_t dPz=0)
TProfile2D * fpMixedKaonCor3Neg[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for kaon POIs: POIs in Eta>0
TH1D * fhQAChargedEta[fiNumIndexQA]
pT dist of charged tracks
TComplex TwoGap(const Short_t n1, const Short_t n2)
void FillPOIsVectors(const Short_t iEtaGapIndex=0, const PartSpecies species=kUnknown, const Short_t iMassIndex=0)
TProfile2D * fpMixedChargedCor4Neg[fNumSamples][fNumEtaGap]
<4&#39;> correlations for Charged tracks POIs: POIs in Eta>0
TH2D * fhQAEventsPileUp[fiNumIndexQA]
TH2D * fh2PIDKaonTOFnSigmaPion
TPC nSigma vs pT for selected kaons (pion hypothesis)
TH3D * fh3NUAWeightRefsPlus
distribution of Proton POIs particles after applying the weights (pt)
short Short_t
Definition: External.C:23
TH1D * fhQAPIDTOFstatus[fiNumIndexQA]
based on AliPIDResponse::CheckPIDStatus();
TH2D * fh2PIDKaonPhi
pt distribution of selected kaons
TH2D * fh2PIDKaonTOFnSigmaProton
TPC nSigma vs pT for selected kaons (proton hypothesis)
TComplex fFlowVecPneg[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]
AliFlowBayesianPID * fBayesianResponse
void SetColisionSystem(ColSystem colSystem=kPbPb)
void SetUseNUEWeigthsFile(const char *file)
TH1D * fhBeforeNUEWeightsRefs
distribution of Proton POIs particles after applying the weights (phi,eta,vtx_z)
TComplex Two(const Short_t n1, const Short_t n2)
static const Short_t fFlowNumHarmonicsMax
TComplex TwoDiffGapPos(const Short_t n1, const Short_t n2, const Short_t pt)
TFile * fFlowNUEWeightsFile
source file containing weights
TH1D * fhAfterNUEWeightsPion
distribution of Charged POIs particles after applying the weights (pt)
void FillQACharged(const Short_t iQAindex, const AliAODTrack *track=0x0)
TH2D * fh2PIDPionEta
phi distribution of selected pions
TH2D * fh2PIDPionPhi
pt distribution of selected pions
TH2D * fh2PIDPionTOFnSigmaProton
TPC nSigma vs pT for selected pions (proton hypothesis)
TH1F * fhNUEWeightProtonMinus
container for loading weights for given run
void ResetRFPsVector(TComplex(&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax])
TH3D * fh3AfterNUAWeightsKaon
distribution of Pion POIs particles after applying the weights (phi,eta,vtx_z)
void SetMaxChi2perTPCcls(Double_t MaxChi2=4)
TH1F * fhNUEWeightRefsMinus
containers for loading weights for given run
TH2D * fh2PIDProtonTPCnSigmaKaon
TOF nSigma vs pT for selected protons (pion hypothesis)
TH1F * fhNUEWeightPionPlus
container for loading weights for given run
TProfile2D * fpMixedProtonCor3Neg[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for proton POIs: POIs in Eta>0
TH3D * fh3NUAWeightProtonMinus
container for loading weights for given run
TH3D * fh3NUAWeightChargedPlus
container for loading weights for given run
TH3D * fh3AfterNUAWeightsCharged
distribution of Refs particles after applying the weights (phi,eta,vtx_z)
TComplex PGapNeg(const Short_t n, const Short_t p, const Short_t pt)
TH1F * fhNUEWeightKaonPlus
container for loading weights for given run
TH1D * fhQAChargedDCAxy[fiNumIndexQA]
dist of track number of TPC clusters
TH3D * fh3AfterNUAWeightsProton
distribution of Kaon POIs particles after applying the weights (phi,eta,vtx_z)
TProfile2D * fpMixedPionCor3Neg[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for pion POIs: POIs in Eta>0
TProfile2D * fp2PionCor2Neg[fNumSamples][fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for pion POIs: POIs in Eta>0
TComplex Q(const Short_t n, const Short_t p)
TFile * file
TList with histograms for a given trigger.
TH2D * fh2PIDProtonTPCnSigmaProton
TOF nSigma vs pT for selected protons (kaon hypothesis)
TH3D * fh3NUAWeightChargedMinus
container for loading weights for given run
TH2D * fh2RefsEta
pt distribution of selected RFPs
void SetPositivelyChargedRef(Bool_t Pos=kFALSE)
void ResetPOIsVector(TComplex(&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins])
TH3D * fh3BeforeNUAWeightsCharged
distribution of Refs particles for estimating weight purpose (phi,eta,vtx_z)
void FillQARefs(const Short_t iQAindex, const AliAODTrack *track=0x0)
virtual void Terminate(Option_t *option)
TComplex ThreeDiffGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t pt)
TProfile2D * fpMixedKaonCor4Neg[fNumSamples][fNumEtaGap]
<4&#39;> correlations for kaon POIs: POIs in Eta>0
TH2D * fh2PIDKaonTOFnSigmaKaon
TPC nSigma vs pT for selected kaons (kaon hypothesis)
unsigned short UShort_t
Definition: External.C:28
TH2D * fh2RefsPt
multiplicity distribution of selected RFPs
TH3D * fh3BeforeNUAWeightsProton
distribution of Kaon POIs particles for estimating weight purpose (phi,eta,vtx_z) ...
void SetTrigger(Short_t trigger=0)
const char Option_t
Definition: External.C:48
TComplex SixGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t n5, const Short_t n6)
TComplex Four13DiffGapNeg(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4, const Short_t pt)
TH2D * fhEventsMultTOFFilterbit32[fiNumIndexQA]
TProfile2D * fpMixedKaonCor4Pos[fNumSamples][fNumEtaGap]
<4&#39;> correlations for pion POIs: POIs in Eta<0
TH1D * fhQAChargedCharge[fiNumIndexQA]
phi dist of charged tracks
TComplex TwoDiffGapNeg(const Short_t n1, const Short_t n2, const Short_t pt)
bool Bool_t
Definition: External.C:53
TProfile2D * fp2PionCor2Pos[fNumSamples][fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for Charged tracks POIs: POIs in Eta<0
TH1D * fhPIDKaonCharge
eta distribution of selected kaons
void SetPIDnsigmaCombination(Int_t Comb=2)
TList * fQAPID
charged tracks list
Short_t GetPOIsPtBinIndex(const Double_t pt)
TFile * fFlowNUAWeightsFile
AliPIDCombined container.
TH2D * fh2PIDProtonPt
multiplicity distribution of selected pions
TComplex ThreeDiffGapNeg(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t pt)
TH2D * fh2PIDPionTPCnSigmaPion
TOF beta of selected pions.
void SetChargedDCAzMax(Double_t dcaz)
void SetPIDNumSigmasCombinedNoTOFrejection(Bool_t reject=kTRUE)
TComplex FourGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t n4)
void SetPIDNumSigmasProtonMax(Double_t numSigmas)
static const Short_t fFlowNumWeightPowersMax
TH2D * fh2PIDKaonTOFbeta
TPC dEdx response of selected pions.
void SetUseNUAWeigthsFile(const char *file)
TH1D * fhAfterNUEWeightsRefs
distribution of Proton POIs particles for estimating weight purpose (pt)
void SetNegativelyChargedPOI(Bool_t Neg=kFALSE)
TH3D * fh3AfterNUAWeightsPion
distribution of Charged POIs particles after applying the weights (phi,eta,vtx_z) ...
void SetPIDNumSigmasKaonMax(Double_t numSigmas)
void DoFlowCharged(const Short_t iEtaGapIndex=0)
TProfile2D * fpMixedChargedCor3Neg[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for Charged tracks POIs: POIs in Eta>0
TH2D * fh2PIDKaonEta
phi distribution of selected kaons
Bool_t reject
TH1D * fhQAChargedMult[fiNumIndexQA]
virtual void UserExec(Option_t *option)
TProfile2D * fpMixedKaonCor3Pos[fNumSamples][fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for pion POIs: POIs in Eta<0
TList * fFlowCharged
list for flow of reference particles