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