AliPhysics  f6e6b3f (f6e6b3f)
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 SetFillQAhistos(Bool_t fill = kTRUE) { fFillQA = fill; }
60  void SetProcessCharged(Bool_t filter = kTRUE) { fProcessCharged = filter; }
61  void SetProcessPID(Bool_t filter = kTRUE, Bool_t PIDbayesian = kFALSE) {
62  fProcessPID = filter;
63  if(PIDbayesian){fPIDbayesian = PIDbayesian; fPIDnsigma = kFALSE;}else{fPIDbayesian = kFALSE; fPIDnsigma = kTRUE;}
64  }
65  // flow related setters
70  void SetFlowFillWeights(Bool_t weights = kTRUE) { fFlowFillWeights = weights; }
73 
74  // events setters
75  void SetMultEstimator(const char* mult = "CHARGED") { fMultEstimator = mult; }
76  void SetTrigger(Short_t trigger = 0) { fTrigger = trigger; }
77  void SetPVtxZMax(Double_t z) { fPVtxCutZ = z; }
78  void SetCentralityRange(Bool_t kCentRange){fFullCentralityRange = kCentRange;}
79  // track setters
86  void SetMaxChi2perTPCcls(Double_t MaxChi2 = 4){ fMaxChi2perTPCcls = MaxChi2;}
88  // PID (pi,K,p) setters
89 
91  void SetPIDNumSigmasPionMax(Double_t numSigmas) { fCutPIDnSigmaPionMax = numSigmas; }
92  void SetPIDNumSigmasKaonMax(Double_t numSigmas) { fCutPIDnSigmaKaonMax = numSigmas; }
93  void SetPIDNumSigmasProtonMax(Double_t numSigmas) { fCutPIDnSigmaProtonMax = numSigmas; }
102  void SetPriors(Float_t centr = 0); // set Noferini's favourite priors for Bayesian PID (requested if Bayesian PID is used)
103  AliESDpid& GetESDpid() {return fESDpid;}
104  Bool_t TPCTOFagree(const AliVTrack *track);
105 
106  private:
107 
108  // properties
110  AliPIDResponse* fPIDResponse;
111  AliPIDCombined* fPIDCombined;
114  Bool_t fInit; // initialization check
115  Short_t fIndexCentrality; // centrality bin index (based on centrality est. or number of selected tracks)
116  Short_t fEventCounter; // event counter (used for local test runmode purpose)
117  Short_t fNumEventsAnalyse; // [50] number of events to be analysed / after passing selection (only in test mode)
118  Int_t fRunNumber; // [-1] run number obtained from AliVHeader
119  Bool_t fExtraPileUp; // extra pile-up cuts
120  // array lenghts & constants
121  const Double_t fPDGMassPion; // [DPGMass] DPG mass of charged pion
122  const Double_t fPDGMassKaon; // [DPGMass] DPG mass of charged kaon
123  const Double_t fPDGMassProton; // [DPGMass] DPG mass of proton
124 
125  // selected POIs containers
126  std::vector<FlowPart>* fVectorCharged;
127  std::vector<FlowPart>* fVectorPion;
128  std::vector<FlowPart>* fVectorKaon;
129  std::vector<FlowPart>* fVectorProton;
130 
131  //cuts & selection: analysis
132  RunMode fRunMode; // running mode (not grid related)
133  AnalType fAnalType; // analysis type: AOD / ESD
134  Bool_t fFillQA; //[kTRUE] flag for filling the QA plots
135  Bool_t fProcessCharged; // flag for processing charged tracks (both RPF and POIs)
136  Bool_t fProcessPID; // flag for processing PID tracks (pi,K,p)
138 
139  // cuts & selection: flow related
140  Float_t fCutFlowRFPsPtMin; // [0] (GeV/c) min pT threshold for RFPs particle for reference flow
141  Float_t fCutFlowRFPsPtMax; // [0] (GeV/c) max pT threshold for RFPs particle for reference flow
142  const Float_t fFlowPOIsPtMin; // [0] (GeV/c) min pT treshold for POIs for differential flow
143  const Float_t fFlowPOIsPtMax; // [20] (GeV/c) max pT treshold for POIs for differential flow
144  const Int_t fFlowCentMin; // [0] min range for centrality/multiplicity histos
145  const Int_t fFlowCentMax; // [150] min range for centrality/multiplicity histos
146  const Int_t fFlowCentNumBins; // [150] min range for centrality/multiplicity histos
147  Bool_t fCutFlowDoFourCorrelations; // [kTRUE] flag for processing <4>
148  Bool_t fDoOnlyMixedCorrelations; // [kTRUE] flag if I only want to analyse mixed harmonics
149  Bool_t fFlowFillWeights; //[kFALSE] flag for filling weights
150  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)
151  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)
152  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"
153 
154  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"
155  Bool_t fPositivelyChargedRef; //for same charged reference particle studies
156  Bool_t fNegativelyChargedRef; //for same charged reference particle studies
157  Bool_t fPositivelyChargedPOI; //for like sign reference particles and POIs studies
158  Bool_t fNegativelyChargedPOI; //for unlike sign reference particle and POIs studies
159 
160 
161  //cuts & selection: events
162  Float_t fPVtxCutZ; // (cm) PV z cut
163  ColSystem fColSystem; // collision system: pp or PbPb both with Run2 data (2016 data for pp and 2015 for PbPb)
164  TString fMultEstimator; // [''] multiplicity estimator (suported: ''/Charged,VOA,V0C,V0M,CL0,CL1,ZNA,ZNC)
165  Short_t fTrigger; // physics selection trigger
166  Bool_t fFullCentralityRange; // flag for running over the full centrality range (0-100%). Otherwise runs from 50-100%
167 
168  //cuts & selection: tracks
169  Float_t fCutChargedEtaMax; // (-) Maximum pseudorapidity range
170  Float_t fCutChargedPtMax; // (GeV/c) Maximal track pT
171  Float_t fCutChargedPtMin; // (GeV/c) Minimal track pT
172  Float_t fCutChargedDCAzMax; // (cm) Maximal DCA-z cuts for tracks (pile-up rejection suggested for LHC16)
173  Float_t fCutChargedDCAxyMax; // (cm) Maximal DCA-xy cuts for tracks (pile-up rejection suggested for LHC16)
174  UInt_t fCutChargedTrackFilterBit; // (-) tracks filter bit
175  UShort_t fCutChargedNumTPCclsMin; // (-) Minimal number of TPC clusters used for track reconstruction
176  Double_t fMaxChi2perTPCcls; // max chi2 per TPC clusters
177 
178  // cuts & selection: PID selection
179  AliESDpid fESDpid;
180  Bool_t fCutPIDUseAntiProtonOnly; // [kFALSE] check proton PID charge to select AntiProtons only
181  Bool_t fPIDnsigma; // [kTRUE] default pid method
182  Int_t fPIDnsigmaCombination; // 1,2,3 for PID nsigma combinations 1,2,3
183  Bool_t fPIDbayesian; // [kFALSE] bayesian pid method
184  Double_t fCutPIDnSigmaPionMax; // [3] maximum of nSigmas (TPC or TPC & TOF combined) for pion candidates
185  Double_t fCutPIDnSigmaKaonMax; // [3] maximum of nSigmas (TPC or TPC & TOF combined) for kaon candidates
186  Double_t fCutPIDnSigmaProtonMax; // [3] maximum of nSigmas (TPC or TPC & TOF combined) for proton candidates
187  Double_t fCutPIDnSigmaTPCRejectElectron; // [3] number of TPC nSigma for electron rejection
188  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)
189  Float_t fCurrCentr; // current centrality used for set the priors
190  Double_t fParticleProbability; // Minimum Bayesian probability
191 
192  static const Int_t fgkPIDptBin = 32; // pT bins for priors
193  Float_t fC[fgkPIDptBin][5],fBinLimitPID[fgkPIDptBin]; // pt bin limit and priors
194  static const Short_t fFlowNumHarmonicsMax = 10; // maximum harmonics length of flow vector array
195  static const Short_t fFlowNumWeightPowersMax = 10; // maximum weight power length of flow vector array
196  static const Short_t fFlowPOIsPtNumBins = 200; // number of pT bins for POIs
197 
198  static const Short_t fiNumIndexQA = 2; // QA indexes: 0: before cuts // 1: after cuts
199 
200  const static Int_t fNumHarmonics = 5; // number of harmonics
201  const static Int_t fNumMixedHarmonics = 4; // number of mixed harmonics: 4{psi2}, 6{psi3} and 5{psi2,3}
202  static Int_t fHarmonics[fNumHarmonics]; // values of used harmonics
203  static Int_t fMixedHarmonics[fNumMixedHarmonics]; // values of used harmonics
204  const static Int_t fNumEtaGap = 3; // number of harmonics
205  static Double_t fEtaGap[fNumEtaGap]; // values of used harmonics
206 
207 
208  // output lists
216 
217  // histograms & profiles
218 
219  // Flow
225 
231 
237 
243 
249 
255 
261 
267 
268  // Events
272  // Charged
278  // PID
284 
290 
296 
299 
302 
305 
324 
325 
326  TComplex fFlowVecQpos[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]; // flow vector array for flow calculation
327  TComplex fFlowVecQneg[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]; // flow vector array for flow calculation
328  TComplex fFlowVecPpos[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]; // flow vector array for flow calculation
329  TComplex fFlowVecPneg[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]; // flow vector array for flow calculation
330  TComplex fFlowVecS[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]; // flow vector array for flow calculation
331 
332 
333  // histograms & profiles
334 
339 
349 
350  //TProfile* fpRefsCor4[fNumHarmonics]; //! <4> correlations for RFPs
351  //TProfile2D* fp2ChargedCor4[fNumHarmonics]; //! <4'> correlations for Charged tracks POIs
352  //TProfile2D* fp2PionCor4[fNumHarmonics]; //! <4'> correlations for pion POIs
353  //TProfile2D* fp2KaonCor4[fNumHarmonics]; //! <4'> correlations for kaon POIs
354  //TProfile2D* fp2ProtonCor4[fNumHarmonics]; //! <4'> correlations for proton POIs
355 
356  //Mixed harmonics:
375 
376  // QA: events
385  // QA: charged tracks
395  // QA: PID tracks
400 
404 
408 
412 
413 
414  // functions:
415  Bool_t InitializeTask(); // called once on beginning of task (within CreateUserObjects method)
416  void ListParameters(); // list all task parameters
417 
418  Bool_t EventSelection(); // main method for event selection (specific event selection is applied within)
419  Bool_t IsEventSelected_PbPb(); // event selection for LHC2015 PbPb data
420  Bool_t IsEventSelected_pp(); // event selection for LHC2016 MB pp data
421  void FillEventsQA(const Short_t iQAindex); // filling QA plots related to event selection
422  Short_t GetCentralityIndex(); // returns centrality index based centrality estimator or number of selected tracks
423  Double_t GetWDist(const AliAODVertex* v0, const AliAODVertex* v1); // gets the distance between the two vertices
424  Bool_t ProcessEvent(); // main (envelope) method for processing events passing selection
425 
426  Bool_t Filtering(); // main (envelope) method for filtering all POIs in event
427  void FilterCharged(); // charged tracks filtering
428  Bool_t IsChargedSelected(const AliAODTrack* track = 0x0); // charged track selection
429  void FillQARefs(const Short_t iQAindex, const AliAODTrack* track = 0x0); // filling QA plots for RFPs selection
430  void FillQACharged(const Short_t iQAindex, const AliAODTrack* track = 0x0); // filling QA plots for charged track selection
431  void FilterPID(); // pi,K,p filtering
432  PartSpecies IsPIDSelected(const AliAODTrack* track); // PID tracks selections
433  void FillPIDQA(const Short_t iQAindex, const AliAODTrack* track = 0x0, const PartSpecies species = kUnknown); // filling pi,K,p QA histograms
434  // Flow related methods
435  void DoFlowRefs(const Short_t iEtaGapIndex = 0); // Estimate <2> for reference flow
436  void DoFlowCharged(const Short_t iEtaGapIndex = 0); // Estimate <2'> for pt diff. flow of charged hadrons
437  void DoFlowPID(const Short_t iEtaGapIndex = 0, const PartSpecies species = kUnknown); // Estimate <2'> for pt diff. flow of PID (pi,K,p) hadrons
438  void FillRefsVectors(const Short_t iEtaGapIndex = 0); // fill flow vector Q with RFPs for reference flow
439  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
440  Short_t GetPOIsPtBinIndex(const Double_t pt); // return pT bin index based on momenta value
441  void ResetRFPsVector(TComplex (&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]); // set values to TComplex(0,0,0) for given array
442  void ResetPOIsVector(TComplex (&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax][fFlowPOIsPtNumBins]); // set values to TComplex(0,0,0) for given array
443  void ListFlowVector(TComplex (&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax]); // printf all values of given Flow vector array
444 
445  TComplex Q(const Short_t n, const Short_t p);
446  TComplex QGapPos(const Short_t n, const Short_t p);
447  TComplex QGapNeg(const Short_t n, const Short_t p);
448  TComplex P(const Short_t n, const Short_t p, const Short_t pt);
449  TComplex PGapPos(const Short_t n, const Short_t p, const Short_t pt);
450  TComplex PGapNeg(const Short_t n, const Short_t p, const Short_t pt);
451  TComplex S(const Short_t n, const Short_t p, const Short_t pt);
452 
453  TComplex Two(const Short_t n1, const Short_t n2); // Two particle reference correlation calculations (no eta gap)
454  TComplex TwoGap(const Short_t n1, const Short_t n2); // Two particle reference correlation calculations (with eta gap)
455  TComplex TwoDiff(const Short_t n1, const Short_t n2, const Short_t pt); // Two particle diff. correlation calculations (no eta gap)
456  TComplex TwoDiffGapPos(const Short_t n1, const Short_t n2, const Short_t pt); // Two particle diff. correlation calculations (with eta gap)
457  TComplex TwoDiffGapNeg(const Short_t n1, const Short_t n2, const Short_t pt); // Two particle diff. correlation calculations (with eta gap)
458 
459  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);
460  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);
461 
462  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)
463  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)
464  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
465  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
466  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
467  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
468  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
469  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
470 
471 
472  AliAnalysisTaskFlowModes(const AliAnalysisTaskFlowModes&); // not implemented
473  AliAnalysisTaskFlowModes& operator=(const AliAnalysisTaskFlowModes&); // not implemented
474 
475  ClassDef(AliAnalysisTaskFlowModes, 4);
476 };
477 
478 #endif
TProfile2D * fpMixedProtonCor3Pos[fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for kaon POIs: POIs in Eta<0
TH3D * fh3PIDPionTPCTOFnSigmaProton[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected pions (kaon hypothesis)
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
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
void ListFlowVector(TComplex(&array)[fFlowNumHarmonicsMax][fFlowNumWeightPowersMax])
TH1D * fhNUEWeightChargedPlus
container for loading weights for given run
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)
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 * fhNUEWeightKaonMinus
container for loading weights for given run
TH1D * fhQAPIDTPCstatus[fiNumIndexQA]
dist of charged DCA in z coordinate
TH1D * fhQAChargedPt[fiNumIndexQA]
number of AOD charged tracks distribution
TH1D * fhNUEWeightPionPlus
container for loading weights for given run
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
TProfile2D * fpMixedChargedCor4Pos[fNumEtaGap]
<3&#39;> correlations for proton POIs: POIs in Eta<0
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)
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)
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
TProfile2D * fpMixedProtonCor4Pos[fNumEtaGap]
<4&#39;> correlations for kaon POIs: POIs in Eta<0
TProfile2D * fpMixedPionCor4Pos[fNumEtaGap]
<4&#39;> correlations for Charged tracks POIs: POIs in Eta<0
TH2D * fh2PIDProtonPhi
pt distribution of selected protons
TH1D * fhNUEWeightRefsMinus
container for loading weights for given run
TH3D * fh3NUAWeightPionPlus
container for loading weights for given run
TH1D * fhPIDPionCharge
eta distribution of selected pions
TList * fFlowRefs
list for flow weights
TProfile2D * fpMixedProtonCor3Neg[fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for proton POIs: POIs in Eta>0
void FillRefsVectors(const Short_t iEtaGapIndex=0)
TH1D * fhBeforeNUEWeightsProton
distribution of Kaon POIs particles for estimating weight purpose (pt)
TProfile2D * fpMixedProtonCor4Neg[fNumEtaGap]
<4&#39;> correlations for proton POIs: POIs in Eta>0
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
TProfile2D * fp2PionCor2Pos[fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for Charged tracks POIs: POIs in Eta<0
TH2D * fh2PIDKaonTPCdEdx
TOF beta of selected pions.
TH1D * fhAfterNUEWeightsCharged
distribution of Refs particles after applying the weights (pt)
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
TProfile2D * fpMixedKaonCor3Neg[fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for kaon POIs: POIs in Eta>0
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)
TProfile * fpRefsCor2[fNumEtaGap][fNumHarmonics]
average of Qy (vs. centrality) for Refs
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
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
TH2D * fh2PIDProtonTOFnSigmaProton
TPC nSigma vs pT for selected protons (proton hypothesis)
void SetProcessPID(Bool_t filter=kTRUE, Bool_t PIDbayesian=kFALSE)
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) ...
TProfile2D * fp2ProtonCor2Pos[fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for kaon POIs: POIs in Eta>0
TH3D * fh3PIDPionTPCTOFnSigmaKaon[fiNumIndexQA]
TPC nSigma vs TOF nSigma vs pT for selected pions (pion hypothesis)
TProfile2D * fp2ChargedCor2Pos[fNumEtaGap][fNumHarmonics]
<2> correlations for RFPs
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.
TProfile2D * fpMixedKaonCor4Pos[fNumEtaGap]
<4&#39;> correlations for pion POIs: POIs in Eta<0
AliAnalysisTaskFlowModes & operator=(const AliAnalysisTaskFlowModes &)
std::vector< FlowPart > * fVectorCharged
Double_t GetWDist(const AliAODVertex *v0, const AliAODVertex *v1)
int Int_t
Definition: External.C:63
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
TH1D * fhNUEWeightChargedMinus
container for loading weights for given run
TH3D * fh3BeforeNUAWeightsPion
distribution of Charged POIs particles for estimating weight purpose (phi,eta,vtx_z) ...
TH1D * fhEventCentrality
container for loading weights for given run
TH1D * fhQAChargedDCAz[fiNumIndexQA]
dist of Charged DCA in transverse plane
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]
TOF nSigma vs pT for selected protons (proton hypothesis)
TH1D * fhNUEWeightPionMinus
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
TProfile2D * fpMixedChargedCor4Neg[fNumEtaGap]
<4&#39;> correlations for Charged tracks POIs: POIs in Eta>0
void SetRunMode(RunMode mode=kFull)
TProfile2D * fpMixedChargedCor3Neg[fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for Charged tracks POIs: POIs in Eta>0
TProfile2D * fpMixedPionCor3Neg[fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for pion POIs: POIs in Eta>0
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 * fh2PIDPionMult
counter following charged track selection
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 * fp2ChargedCor2Neg[fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for Charged tracks POIs: POIs in Eta>0
TProfile2D * fp2ProtonCor2Neg[fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for proton 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)
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)
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
TProfile2D * fpMixedKaonCor4Neg[fNumEtaGap]
<4&#39;> correlations for kaon POIs: POIs in Eta>0
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)
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)
TH2D * fh2PIDProtonTPCnSigmaKaon
TOF nSigma vs pT for selected protons (pion hypothesis)
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)
TProfile2D * fpMixedChargedCor3Pos[fNumEtaGap][fNumMixedHarmonics]
<6> correlations for RFPs
TComplex PGapNeg(const Short_t n, const Short_t p, const Short_t pt)
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)
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])
TProfile2D * fp2KaonCor2Pos[fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for pion POIs: POIs in Eta>0
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)
TH1D * fhNUEWeightProtonMinus
container for loading weights for given run
TProfile2D * fpMixedPionCor3Pos[fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for Charged tracks POIs: POIs in Eta<0
TComplex ThreeDiffGapPos(const Short_t n1, const Short_t n2, const Short_t n3, const Short_t pt)
TProfile * fpMixedRefsCor6[fNumEtaGap]
<4> correlations for RFPs
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]
TH1D * fhNUEWeightKaonPlus
container for loading weights for given run
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
TH1D * fhPIDKaonCharge
eta distribution of selected kaons
TH1D * fhNUEWeightProtonPlus
container for loading weights for given run
TH1D * fhNUEWeightRefsPlus
container for loading weights for given run
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
TProfile2D * fp2PionCor2Neg[fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for pion POIs: POIs in Eta>0
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)
TProfile2D * fpMixedPionCor4Neg[fNumEtaGap]
<4&#39;> correlations for pion POIs: POIs in Eta>0
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)
TProfile * fpMixedRefsCor4[fNumEtaGap][fNumMixedHarmonics]
<2&#39;> correlations for proton POIs: POIs in Eta>0
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 * fp2KaonCor2Neg[fNumEtaGap][fNumHarmonics]
<2&#39;> correlations for kaon POIs: POIs in Eta>0
TH2D * fh2PIDKaonEta
phi distribution of selected kaons
Bool_t reject
TProfile2D * fpMixedKaonCor3Pos[fNumEtaGap][fNumMixedHarmonics]
<3&#39;> correlations for pion POIs: POIs in Eta<0
TH1D * fhQAChargedMult[fiNumIndexQA]
virtual void UserExec(Option_t *option)
TList * fFlowCharged
list for flow of reference particles