AliPhysics  d497547 (d497547)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskMultiparticleFemtoscopy.h
Go to the documentation of this file.
1 /*
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.
3  * See cxx source for full Copyright notice
4  * $Id$
5  */
6 
7  /********************************
8  * femtoscopy with multiparticle *
9  * technology *
10  * *
11  * author: Ante Bilandzic *
12  * (abilandzic@gmail.com) *
13  ********************************/
14 
15 #ifndef ALIANALYSISTASKMULTIPARTICLEFEMTOSCOPY_H
16 #define ALIANALYSISTASKMULTIPARTICLEFEMTOSCOPY_H
17 
18 #include "AliAnalysisTaskSE.h"
19 #include "AliPIDResponse.h"
20 #include "AliAODTrack.h"
21 #include "AliAODEvent.h"
22 #include "AliVEvent.h"
23 #include "AliESDEvent.h"
24 #include "AliMCEvent.h"
25 #include "AliAODMCParticle.h"
26 #include "TExMap.h"
27 #include "TProfile.h"
28 #include "TProfile2D.h"
29 #include "TH1F.h"
30 #include "TH1I.h"
31 
32 //================================================================================================================
33 
35  public:
37  AliAnalysisTaskMultiparticleFemtoscopy(const char *name, Bool_t useParticleWeights=kFALSE);
39  virtual void UserCreateOutputObjects();
40  virtual void UserExec(Option_t *);
41  virtual void Terminate(Option_t *);
42 
43  // 0.) Methods called in the constructor:
44  virtual void InitializeArrays(); // use this method temporarily for all objects not classified yet
46  virtual void InitializeArraysForEBEObjects();
48  virtual void InitializeArraysForBackground();
49  virtual void InitializeArraysForBuffers();
50  virtual void InitializeArraysForQA();
53  virtual void InitializeArraysForBackgroundTEST();
54  virtual void InitializeArraysForHybridApproach();
55 
56  // 1.) Methods called in UserCreateOutputObjects():
57  // 2a) Directly:
59  virtual void BookAndNestAllLists();
60  virtual void BookEverything(); // use this to book all un-classified objects
62  virtual void BookEverythingForEBEObjects();
64  virtual void BookEverythingForBackground();
65  virtual void BookEverythingForBuffers();
66  virtual void BookEverythingForQA();
67  virtual void BookEverythingForGlobalTrackCuts();
69  virtual void BookEverythingForBackgroundTEST();
70  virtual void BookEverythingForHybridApproach();
71  // 2b) Indirectly:
72  Int_t InsanityChecksForGlobalTrackCuts(); // insanity checks for global track cuts
73 
74  // 2.) Methods called in UserExec(Option_t *):
75  // 2a) Directly:
76  virtual void InsanityChecksUserExec();
77  virtual void QA(AliVEvent *ave);
78  virtual void MC(AliMCEvent *aMC);
79  virtual void ESD(AliESDEvent *aESD);
80  virtual void AOD(AliAODEvent *aAOD);
81  virtual void OnlineMonitoring();
82  // 2b) Indirectly:
83  virtual void EstimateBackground(AliVEvent *ave);
84  virtual void EstimateBackgroundTEST(AliVEvent *ave);
85  virtual void DoHybridApproach(AliVEvent *ave);
86  virtual void FillControlHistogramsEvent(AliVEvent *ave);
87  virtual void FillControlHistogramsParticle(AliVEvent *ave);
88  virtual void FillControlHistogramsNonIdentifiedParticles(AliAODTrack *atrack);
89  virtual void FillControlHistogramsNonIdentifiedParticles(AliAODMCParticle *amcparticle);
90  virtual void FillControlHistogramsNonIdentifiedParticlesFTSF(AliAODTrack *atrack);
91  virtual void FillControlHistogramsIdentifiedParticles(AliAODTrack *atrack, AliAODTrack *gtrack);
92  virtual void FillControlHistogramsIdentifiedParticles(AliAODMCParticle *amcparticle);
93  virtual void V0s(AliVEvent *ave);
94  Int_t InsanityChecksForTracks(AliAODTrack *atrack); // insanity checks for each track ('atrack') in AOD
95  Int_t InsanityChecksForGlobalTracks(AliAODTrack *gtrack); // insanity checks only for global tracks ('gtrack') in AOD
96  Bool_t Pion(AliAODTrack *atrack, Int_t charge = 1, Bool_t bPrimary = kTRUE);
97  Bool_t Kaon(AliAODTrack *atrack, Int_t charge = 1, Bool_t bPrimary = kTRUE);
98  Bool_t Proton(AliAODTrack *atrack, Int_t charge = 1, Bool_t bPrimary = kTRUE);
99  Bool_t PassesCommonEventCuts(AliVEvent *ave);
100  Bool_t PassesMixedEventCuts(AliVEvent *ave);
101  Bool_t PassesGlobalTrackCuts(AliAODTrack *gtrack); // common cuts for global tracks TBI make it uniform with MC
102  Bool_t PassesCommonTrackCuts(AliAODTrack *atrack); // common cuts for analysis specific tracks (e.g. TPC-only) TBI make it uniform with MC
103  Bool_t PassesCommonTrackCuts(AliAODMCParticle *amcparticle); // common cuts for analysis specific tracks TBI see above two lines
104  virtual void GlobalTracksAOD(AliAODEvent *aAOD, Int_t index); // fill fGlobalTracksAOD in e-b-e . For the meaning of 'index', see declaration of fGlobalTracksAOD
105  virtual void GlobalTracksAODTEST(AliAODEvent *aAOD, Int_t index); // fill fGlobalTracksAODTEST in e-b-e . For the meaning of 'index', see declaration of fGlobalTracksAODTEST
106  virtual void GlobalTracksAODHA(AliAODEvent *aAOD, Int_t index); // fill fGlobalTracksAODHA in e-b-e . For the meaning of 'index', see declaration of fGlobalTracksAODHA
107  virtual void GlobalTracksAOD(AliAODEvent *aAOD, Int_t indexX, Int_t indexY); // fill TExMap *fGlobalTracksAOD1[10][5];
108  Double_t RelativeMomenta(AliAODTrack *agtrack1, AliAODTrack *agtrack2);
109  Double_t RelativeMomentaComponent(AliAODTrack *agtrack1, AliAODTrack *agtrack2, const char *component);
110  Double_t PairVectorComponent(AliAODTrack *agtrack1, AliAODTrack *agtrack2, const char *component);
111  Double_t RelativeMomenta(AliAODMCParticle *amcparticle1, AliAODMCParticle *amcparticle2);
112  Double_t Q2(AliAODTrack *agtrack1, AliAODTrack *agtrack2);
113  Double_t Q3(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3);
114  Double_t Q4(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3, AliAODTrack *agtrack4);
115 
116  virtual void ResetEBEObjects();
117  Bool_t SpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period);
119  virtual void DoSomeDebugging(AliVEvent *ave);
120  virtual void CalculateCorrelationFunctions(AliAODEvent *aAOD);
121  virtual void Calculate3pCorrelationFunctions(AliAODEvent *aAOD);
122  virtual void Calculate4pCorrelationFunctions(AliAODEvent *aAOD);
123  virtual void CalculateCorrelationFunctions(AliMCEvent *aMC);
125  virtual void Calculate2pBackground(TClonesArray *ca1, TClonesArray *ca2); // TBI soon will become obsolete
126  virtual void Calculate2pBackground(TClonesArray *ca1, TClonesArray *ca2, TExMap *em1, TExMap *em2);
127  virtual void Calculate2pBackgroundTEST(TClonesArray *ca1, TClonesArray *ca2, TExMap *em1, TExMap *em2);
128  virtual void Calculate3pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3); // TBI soon will become obsolete
129  virtual void Calculate3pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TExMap *em1, TExMap *em2, TExMap *em3);
130  virtual void Calculate3pBackgroundTEST(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TExMap *em1, TExMap *em2, TExMap *em3);
131  virtual void Calculate4pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TClonesArray *ca4);
132  virtual void Calculate2pBackground(TClonesArray *ca1, TClonesArray *ca2, Bool_t bMC); // TBI unify with the previous function
133  virtual void HybridApproach1stTerm(AliAODEvent *aAOD);
134  virtual void HybridApproach2ndTerm(AliAODEvent *aAOD, TClonesArray *ca3, TExMap *em3);
135  //virtual void HybridApproach3rdTerm(AliAODEvent *aAOD); // TBI not needed for the time being
136  //virtual void HybridApproach4thTerm(AliAODEvent *aAOD); // TBI not needed for the time being
137  virtual void HybridApproach5thTerm(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TExMap *em1, TExMap *em2, TExMap *em3);
138 
139  // 3.) Methods called in Terminate(Option_t *):
140  virtual void GetOutputHistograms(TList *histList);
141  // TBI implement the rest as well
142  virtual void GetPointersForCorrelationFunctions();
143  virtual void GetPointersForBackground();
144  virtual void GetPointersForBuffers();
145  virtual void NormalizeCorrelationFunctions();
146  // 4.) Utility:
147  Int_t BinNoForSpecifiedValue(TH1F *hist, Double_t value);
148  Int_t BinNoForSpecifiedValue(TProfile *pro, Double_t value);
149 
150  // Setters and getters:
151  // 0.) Not classified yet;
152  // 1.) Control histograms;
153  // 2.) Event-by-event histograms;
154  // 3.) Correlation functions;
155  // 4.) Background;
156  // 5.) Buffers;
157  // 6.) QA;
158  // 7.) ...
159  // *.) Debugging
160 
161  // 0.) Not classified yet:
166  void SetProcessOnlyKine(Bool_t pok) {this->fProcessOnlyKine = pok;};
167  Bool_t GetProcessOnlyKine() const {return this->fProcessOnlyKine;};
168  void SetProcessOnlyReco(Bool_t por) {this->fProcessOnlyReco = por;};
169  Bool_t GetProcessOnlyReco() const {return this->fProcessOnlyReco;};
170  void SetRejectFakeTracks(Bool_t rft) {this->fRejectFakeTracks = rft;};
172 
173  // 1.) Control histograms:
174  void SetControlHistogramsList(TList* const chl) {this->fControlHistogramsList = chl;};
176  void SetControlHistogramsFlagsPro(TProfile* const chfp) {this->fControlHistogramsFlagsPro = chfp;};
177  TProfile* GetControlHistogramsFlagsPro() const {return this->fControlHistogramsFlagsPro;};
178  //void SetFillControlHistograms(Bool_t fch) {this->fFillControlHistograms = fch;}; // TBI remove eventually
179  //Bool_t GetFillControlHistograms() const {return this->fFillControlHistograms;}; // TBI remove eventually
186  void SetFilterBitFTSF(Int_t fbFTSF) {this->fFilterBitFTSF = fbFTSF;};
187  Int_t GetFilterBitFTSF() const {return this->fFilterBitFTSF;};
194  // 1d) Identified particles:
195  void SetInclusiveSigmaCuts(Int_t pidFunction, Double_t sigmaValue)
196  {
197  // pidFunction: [0=Electron(...),1=Muon(...),2=Pion(...),3=Kaon(...),4=Proton(...)]
198  // Example: SetInclusiveSigmaCuts(2,3.); sets in function Pion() inclusive cuts for pions to 3.0 sigmas
200  this->fInclusiveSigmaCuts[pidFunction] = sigmaValue;
201  };
202  void SetExclusiveSigmaCuts(Int_t pidFunction, Int_t pidExclusive, Double_t sigmaValue)
203  {
204  // pidFunction: [0=Electron(...),1=Muon(...),2=Pion(...),3=Kaon(...),4=Proton(...)]
205  // Example: SetExclusiveSigmaCuts(3,4,4.); sets in function Kaon() exclusive cuts for protons to 4.0 sigmas
207  this->fExclusiveSigmaCuts[pidFunction][pidExclusive] = sigmaValue;
208  };
209 
210  // 2.) Event-by-event histograms:
211  void SetEBEHistogramsList(TList* const ehl) {this->fEBEHistogramsList = ehl;};
213  void SetEBEObjectsFlagsPro(TProfile* const ehfp) {this->fEBEObjectsFlagsPro = ehfp;};
214  TProfile* GetEBEObjectsFlagsPro() const {return this->fEBEObjectsFlagsPro;};
215  //void SetFillEBEHistograms(Bool_t feh) {this->fFillEBEHistograms = feh;}; // TBI rethink
216  //Bool_t GetFillEBEHistograms() const {return this->fFillEBEHistograms;};
217 
218  // 3.) Correlation functions:
221  void SetCorrelationFunctionsFlagsPro(TProfile* const cffp) {this->fCorrelationFunctionsFlagsPro = cffp;};
223  void Set2pCorrelationFunctionsFlagsPro(TProfile* const cffp2p) {this->f2pCorrelationFunctionsFlagsPro = cffp2p;};
225  void Set3pCorrelationFunctionsFlagsPro(TProfile* const cffp3p) {this->f3pCorrelationFunctionsFlagsPro = cffp3p;};
227  void Set4pCorrelationFunctionsFlagsPro(TProfile* const cffp4p) {this->f4pCorrelationFunctionsFlagsPro = cffp4p;};
240  {
241  this->fNormalizeCorrelationFunctions = kTRUE;
242  this->fNormalizationOption = 1;
243  this->fNormalizationInterval[0] = min;
244  this->fNormalizationInterval[1] = max;
245  };
246  void SetnMergedBins(Int_t fnmb) {this->fnMergedBins = fnmb;};
247  Int_t GetnMergedBins() const {return this->fnMergedBins;};
248 
249  // 4.) Background:
250  void SetBackgroundList(TList* const bl) {this->fBackgroundList = bl;};
251  TList* GetBackgroundList() const {return this->fBackgroundList;}
252  void SetBackgroundFlagsPro(TProfile* const bfp) {this->fBackgroundFlagsPro = bfp;};
253  TProfile* GetBackgroundFlagsPro() const {return this->fBackgroundFlagsPro;};
254  void Set2pBackgroundFlagsPro(TProfile* const bfp2p) {this->f2pBackgroundFlagsPro = bfp2p;};
255  TProfile* Get2pBackgroundFlagsPro() const {return this->f2pBackgroundFlagsPro;};
256  void Set3pBackgroundFlagsPro(TProfile* const bfp3p) {this->f3pBackgroundFlagsPro = bfp3p;};
257  TProfile* Get3pBackgroundFlagsPro() const {return this->f3pBackgroundFlagsPro;};
258  void Set4pBackgroundFlagsPro(TProfile* const bfp4p) {this->f4pBackgroundFlagsPro = bfp4p;};
259  TProfile* Get4pBackgroundFlagsPro() const {return this->f4pBackgroundFlagsPro;};
261  Int_t GetBackgroundOption() const {return this->fBackgroundOption;};
268  void SetMaxBufferSize1(Int_t mbs1) {this->fMaxBufferSize1 = mbs1;};
269  Int_t GetMaxBufferSize1() const {return this->fMaxBufferSize1;};
270 
271  // 5.) Buffers:
272  void SetBuffersList(TList* const bl) {this->fBuffersList = bl;};
273  TList* GetBuffersList() const {return this->fBuffersList;}
274  void SetBuffersFlagsPro(TProfile* const bfp) {this->fBuffersFlagsPro = bfp;};
275  TProfile* GetBuffersFlagsPro() const {return this->fBuffersFlagsPro;};
276  void SetFillBuffers(Int_t mb) {this->fFillBuffers = kTRUE; this->fMaxBuffer = mb;};
277 
278  // 6.) QA:
279  void SetQAList(TList* const qal) {this->fQAList = qal;};
280  TList* GetQAList() const {return this->fQAList;}
281  void SetQAFlagsPro(TProfile* const qafp) {this->fQAFlagsPro = qafp;};
282  TProfile* GetQAlagsPro() const {return this->fQAFlagsPro;};
283  void SetBailOutAfterQA(Bool_t boaqa) {this->fBailOutAfterQA = boaqa;};
284  Bool_t GetBailOutAfterQA() const {return this->fBailOutAfterQA;};
285  void SetFillQAEvents(Bool_t ffqae) {this->fFillQAEvents = ffqae;};
286  Bool_t GetFillQAEvents() const {return this->fFillQAEvents;};
287  void SetFillQAParticles(Bool_t ffqap) {this->fFillQAParticles = ffqap;};
288  Bool_t GetFillQAParticles() const {return this->fFillQAParticles;};
289  void SetQAEventsList(TList* const qael) {this->fQAEventsList = qael;};
290  TList* GetQAEventsList() const {return this->fQAEventsList;}
291  void SetQAParticlesList(TList* const qapl) {this->fQAParticlesList = qapl;};
292  TList* GetQAParticlesList() const {return this->fQAParticlesList;}
293 
294  // 7.) Common event cuts:
299  void SetNumberOfTracks(Int_t minnoft, Int_t maxnoft)
300  {
301  fCutOnNumberOfTracks = kTRUE;
302  this->fMinNumberOfTracks = minnoft;
303  this->fMaxNumberOfTracks = maxnoft;
304  };
305  void SetNumberOfGlobalTracks(Int_t minnofgt, Int_t maxnofgt)
306  {
308  this->fMinNumberOfGlobalTracks = minnofgt;
309  this->fMaxNumberOfGlobalTracks = maxnofgt;
310  };
311  void SetNumberOfV0s(Int_t minnofV0s, Int_t maxnofV0s)
312  {
313  fCutOnNumberOfV0s = kTRUE;
314  this->fMinNumberOfV0s = minnofV0s;
315  this->fMaxNumberOfV0s = maxnofV0s;
316  };
317  void SetNumberOfCascades(Int_t minnofc, Int_t maxnofc)
318  {
319  fCutOnNumberOfCascades = kTRUE;
320  this->fMinNumberOfCascades = minnofc;
321  this->fMaxNumberOfCascades = maxnofc;
322  };
323  void SetVertexX(Float_t minvX, Float_t maxvX)
324  {
325  fCutOnVertexX = kTRUE;
326  this->fMinVertexX = minvX;
327  this->fMaxVertexX = maxvX;
328  };
329  void SetVertexY(Float_t minvY, Float_t maxvY)
330  {
331  fCutOnVertexY = kTRUE;
332  this->fMinVertexY = minvY;
333  this->fMaxVertexY = maxvY;
334  };
335  void SetVertexZ(Float_t minvZ, Float_t maxvZ)
336  {
337  fCutOnVertexZ = kTRUE;
338  this->fMinVertexZ = minvZ;
339  this->fMaxVertexZ = maxvZ;
340  };
341  void SetNContributors(Int_t minNc, Int_t maxNc)
342  {
343  fCutOnNContributors = kTRUE;
344  this->fMinNContributors = minNc;
345  this->fMaxNContributors = maxNc;
346  };
347 
348  // 8.) Common global track cuts: // TBI at the moment, they are applied both to 'atracks' and 'gtracks', decouple eventually
350  {
351  fApplyGlobalTrackCuts = kTRUE;
352  this->fPtRange[0] = ptMin;
353  this->fPtRange[1] = ptMax;
354  };
355  void SetEtaRange(Float_t etaMin, Float_t etaMax)
356  {
357  fApplyGlobalTrackCuts = kTRUE;
358  this->fEtaRange[0] = etaMin;
359  this->fEtaRange[1] = etaMax;
360  };
361  void SetPhiRange(Float_t phiMin, Float_t phiMax)
362  {
363  fApplyGlobalTrackCuts = kTRUE;
364  this->fPhiRange[0] = phiMin;
365  this->fPhiRange[1] = phiMax;
366  };
367 
368  // *.) Testing new ways to calculate correlation functions:
371  void SetCorrelationFunctionsTESTFlagsPro(TProfile* const cfTfp) {this->fCorrelationFunctionsTESTFlagsPro = cfTfp;};
373  void SetBoostVelocity(const Double_t vx, const Double_t vy, const Double_t vz)
374  {
375  fBoost = kTRUE;
376  fBoostVelocity = TVector3(vx,vy,vz);
377  }
378 
379  void SetQ2binning(const Int_t nBins, const Double_t min, const Double_t max)
380  {
381  this->fnQ2bins = nBins;
382  this->fnQ2min = min;
383  this->fnQ2max = max;
384  };
385  void SetQ3binning(const Int_t nBins, const Double_t min, const Double_t max)
386  {
387  this->fnQ3bins = nBins;
388  this->fnQ3min = min;
389  this->fnQ3max = max;
390  };
391  void SetFillCorrelationFunctionsTEST(Int_t const testNO, Bool_t bDoTest) {this->fFillCorrelationFunctionsTEST[testNO] = bDoTest;};
392 
393  // *.) Testing new ways to calculate background:
394  void SetBackgroundTESTList(TList* const bTl) {this->fBackgroundTESTList = bTl;};
396  void SetBackgroundTESTFlagsPro(TProfile* const bTfp) {this->fBackgroundTESTFlagsPro = bTfp;};
397  TProfile* GetBackgroundTESTFlagsPro() const {return this->fBackgroundTESTFlagsPro;};
398  void SetFillBackgroundTEST(Int_t const testNO, Bool_t bDoTest) {this->fFillBackgroundTEST[testNO] = bDoTest;};
399 
400  // *) 'hybrid approach':
401  void SetHybridApproachList(TList* const hal) {this->fHybridApproachList = hal;};
403  void SetHybridApproachFlagsPro(TProfile* const hafp) {this->fHybridApproachFlagsPro = hafp;};
404  TProfile* GetHybridApproachFlagsPro() const {return this->fHybridApproachFlagsPro;};
405  void SetDoHybridApproach(Bool_t bhap) {this->fDoHybridApproach = bhap;};
406 
407  // *.) Online monitoring:
408  void SetUpdateOutputFile(const Int_t uf, const char *uqof)
409  {
410  // Example usage: taskMPF->SetUpdateOutputFile(44,"AnalysisResults.root");
411  this->fOnlineMonitoring = kTRUE;
412  this->fUpdateOutputFile = kTRUE;
413  this->fUpdateFrequency = uf;
414  this->fUpdateWhichOutputFile = new TString(uqof);
415  };
416  void SetMaxNumberOfEvents(const Int_t mnof, const char *uqof)
417  {
418  // Example usage: taskMPF->SetMaxNumberOfEvents(44,"AnalysisResults.root");
419  this->fOnlineMonitoring = kTRUE;
420  this->fMaxNumberOfEvents = mnof;
421  this->fUpdateWhichOutputFile = new TString(uqof);
422  };
423 
424  // *.) Debugging:
425  void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
426  {
427  this->fDoSomeDebugging = kTRUE;
428  this->fWaitForSpecifiedEvent = kTRUE;
429  this->fRun = run;
430  this->fBunchCross = bunchCross;
431  this->fOrbit = orbit;
432  this->fPeriod = period;
433  }; // void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
434 
435  private:
438 
439  TList *fHistList; // base list to hold all output object (a.k.a. grandmother of all lists)
441 
442  AliPIDResponse *fPIDResponse;
443 
444  Int_t fMaxNoGlobalTracksAOD; // maximum # of TExMap *fGlobalTracksAOD objects to be booked. Default is 3, one for default analysis, and two for event mixing
445  TExMap *fGlobalTracksAOD[10];
446  Bool_t fProcessBothKineAndReco; // process both aMC and aAOD, or aMC and aESD, typically to get purities (TBI: add support for ESD)
447  Bool_t fProcessOnlyKine; // process only aMC
448  Bool_t fProcessOnlyReco; // process only aAOD or aESD (i.e. disregard aMC even if available)
449  Bool_t fRejectFakeTracks; // if set to kFALSE, and if fMC is available, get the corresponding MC particle by taking absolute value of label
450  AliMCEvent *fMC; // placeholder for MC info
451 
452  // 1.) Control histograms:
453  TList *fControlHistogramsList; // list to hold all 'control histograms' objects
454  TProfile *fControlHistogramsFlagsPro; // profile to hold all flags for control histograms
455  Bool_t fFillControlHistograms; // not set directly, but instead via: fFillControlHistogramsEvent || fFillControlHistogramsNonIdentifiedParticles || ...
456  // 1a) Event (a.k.a. global event observables):
457  TList *fControlHistogramsEventList; // list to hold all 'control histograms' for events TBI
458  TProfile *fControlHistogramsEventFlagsPro; // profile to hold all flags for control histograms for events TBI
459  Bool_t fFillControlHistogramsEvent; // fill or not control histograms for global event observables
460  TH1I *fGetNumberOfTracksHist; // a{AOD,MC}->GetNumberOfTracks()
462  TH1I *fGetNumberOfV0sHist; // aAOD->GetNumberOfV0s()
463  TH1I *fGetNumberOfCascadesHist; // aAOD->GetNumberOfCascades()
464  TH1D *fGetMagneticFieldHist; // aAOD->GetMagneticField()
465  TH1I *fGetEventTypeHist; // aAOD->GetEventType()
466  TH1D *fGetCentralityHist; // aAOD->GetCentrality()
467  TH1F *fVertexXYZ[3];
468  TH1I *fGetNContributorsHist; // avtx->GetNContributors()
469  TH1F *fGetChi2perNDFHist; // avtx->GetChi2perNDF();
470  TH1I *fGetNDaughtersHist; // avtx->GetNDaughters();
471 
472  // 1b) Non-identified particles (for AOD these are "normal global" tracks, i.e. the ones which satisfy atrack->GetID()>=0 ):
473  TList *fControlHistogramsNonIdentifiedParticlesList; // list to hold all 'control histograms' for non-identified particles
474  TProfile *fControlHistogramsNonIdentifiedParticlesFlagsPro; // profile to hold all flags for control histograms for non-identified particles
475  Bool_t fFillControlHistogramsNonIdentifiedParticles; // fill or not control histograms for non-identified particles
476  TH1I *fChargeHist; // atrack->Charge()
477  TH1I *fGetTPCNclsHist; // atrack->GetTPCNcls()
478  TH1I *fGetTPCsignalNHist; // atrack->GetTPCsignalN()
479  TH1I *fGetITSNclsHist; // atrack->GetITSNcls()
480  TH2F *fdEdxVsPtHist; // atrack->GetTPCmomentum(),atrack->GetTPCsignal()
481  TH1F *fPtHist; // atrack->Pt()
482  TH1F *fEtaHist; // atrack->Eta()
483  TH1F *fPhiHist; // atrack->Phi()
484  TH1F *fMassHist; // atrack->M()
485  TH1I *fGetFilterMap; // atrack->GetFilterMap()
486  TH1I *fGetPdgCode; // atrack->GetPdgCode()
487 
488  // 1c) Non-identified particles for the specified filterbit (f.t.s.f.) (by default TPC-only):
489  TList *fControlHistogramsNonIdentifiedParticlesFTSFList; // list to hold all 'control histograms' for non-identified particles
490  TProfile *fControlHistogramsNonIdentifiedParticlesFTSFFlagsPro; // profile to hold all flags for control histograms for non-identified particles
491  Bool_t fFillControlHistogramsNonIdentifiedParticlesFTSF; // fill or not control histograms for non-identified particles
492  Int_t fFilterBitFTSF; // filter bit, relevant only for these group of control histos. For the particle selection, there is another flag
493  TH1I *fChargeFTSFHist; // atrack->Charge()
494  TH1I *fGetTPCNclsFTSFHist; // atrack->GetTPCNcls()
495  TH1I *fGetTPCsignalNFTSFHist; // atrack->GetTPCsignalN()
496  TH1I *fGetITSNclsFTSFHist; // atrack->GetITSNcls()
497  TH2F *fdEdxVsPtFTSFHist; // atrack->GetTPCmomentum(),atrack->GetTPCsignal()
498  TH1F *fPtFTSFHist; // atrack->Pt()
499  TH1F *fEtaFTSFHist; // atrack->Eta()
500  TH1F *fPhiFTSFHist; // atrack->Phi()
501  TH1F *fMassFTSFHist; // atrack->M()
502  TH1I *fGetFilterMapFTSF; // atrack->GetFilterMap()
503  TH1I *fGetPdgCodeFTSF; // atrack->GetPdgCode()
504 
505  // 1d) Identified particles:
506  TList *fControlHistogramsIdentifiedParticlesList; // list to hold all 'control histograms' for identified particles
507  TProfile *fControlHistogramsIdentifiedParticlesFlagsPro; // profile to hold all flags for control histograms for identified particles
508  Bool_t fFillControlHistogramsIdentifiedParticles; // fill or not control histograms for identified particles (by default they are not filled)
509  Bool_t fFillControlHistogramsWithGlobalTrackInfo; // by default, control histograms are filled with info from 'atrack'. If this flag is TRUE, then instead info from 'gtrack' is used. This then also applies to info used to get correlation functions and background as well
512  TH1F *fMassPIDHist[5][2][2];
513  TH1F *fPtPIDHist[5][2][2];
514  TH1F *fPPIDHist[5][2][2][3];
515  TH1F *fEtaPIDHist[5][2][2];
516  TH1F *fPhiPIDHist[5][2][2];
517  Bool_t fUseDefaultInclusiveSigmaCuts; // if the setter SetInclusiveSigmaCuts(...) (see above) is not called explicitly, the default hardwired values will be used
518  Bool_t fUseDefaultExclusiveSigmaCuts; // if the setter SetExclusiveSigmaCuts(...) (see above) is not called explicitly, the default hardwired values will be used
519  Double_t fInclusiveSigmaCuts[5]; // [PID function] see .cxx for detailed documentation
520  Double_t fExclusiveSigmaCuts[5][5]; // [PID function][PID exclusive] see .cxx for detailed documentation
521 
522  // ...
523  // 1e) V0s:
524  TList *fControlHistogramsV0sList; // list to hold all 'control histograms' for V0s
525  TProfile *fControlHistogramsV0sFlagsPro; // profile to hold all flags for control histograms for V0s
526  Bool_t fFillControlHistogramsV0s; // fill or not control histograms for V0s (by default they are not filled)
527  TH1I *fGetNProngsHist; // aAODv0->GetNProngs()
528  TH1F *fMassK0ShortHist; // aAODv0->MassK0Short()
529  TH1F *fMassLambdaHist; // aAODv0->MassLambda()
530  TH1F *fMassAntiLambdaHist; // aAODv0->MassAntiLambda()
531  TH1F *fOpenAngleV0Hist; // aAODv0->OpenAngleV0() // same as aAODv0->ProngsRelAngle()
532  TH1F *fRadiusV0Hist; // aAODv0->RadiusV0()
533  TH1F *fDcaV0ToPrimVertexHist; // aAODv0->DcaV0ToPrimVertex()
534  TH1F *fMomV0XHist; // aAODv0->MomV0X()
535  TH1F *fMomV0YHist; // aAODv0->MomV0Y()
536  TH1F *fMomV0ZHist; // aAODv0->MomV0Z()
537  TH1F *fPtV0Hist; // pow(aAODv0->Pt2V0(),0.5)
538  TH1F *fPseudoRapV0Hist; // aAODv0->PseudoRapV0()
539  TH2F *fPAHist; // Pod.-Arm.
540 
541  // ...
542  // 1d) Cascades:
543  // ...
544 
545  // 2.) Event-by-event objects:
546  TList *fEBEHistogramsList; // list to hold all stuff from e-b-e histograms
547  TProfile *fEBEObjectsFlagsPro; // profile to hold all flags for e-b-e histograms for V0s
548  //Bool_t fFillEBEHistograms; // fill or not e-b-e histograms TBI do I really need this?
549  TH1I *fUniqueIDHistEBE; // filled with aAODv0->GetPosID() and aAODv0->GetNegID(). If the bin corresponding to that ID is already filled, two V0s share the same daughter
550  TClonesArray *fPIDCA[5][2][2];
551  TClonesArray *fPIDV0sCA[1];
552 
553  // 3.) Correlation functions:
554  TList *fCorrelationFunctionsList; // list to hold all correlation functions for primary particle
555  TProfile *fCorrelationFunctionsFlagsPro; // profile to hold all flags for correlation functions
560  Bool_t fFillCorrelationFunctions; // fill or not correlation functions (by default they are not filled)
561  Bool_t fNormalizeCorrelationFunctions; // normalize correlation functions with the background
563  TH1F *fCorrelationFunctions[10][10];
564  Bool_t fFill3pCorrelationFunctions; // fill 3-p correlation functions
565  TH1F *f3pCorrelationFunctions[10][10][10];
566  Bool_t fFill4pCorrelationFunctions; // fill 4-p correlation functions
567  TH1F *f4pCorrelationFunctions[10][10][10][10];
568  Int_t fNormalizationOption; // set here how to normalize the correlation function: 0 = "just scale", 1 = "use concrete interval", 2 = ...
569  Float_t fNormalizationInterval[2]; // concrete example: 0.15 < q < 0.175 GeV/c. Then, fNormalizationInterval[0] is the low edge, etc. See the relevant setter SetNormalizationInterval
570  Int_t fnMergedBins; // before normalization, both signal and background will be rebinned with this value
571 
572  // 4.) Background:
573  TList *fBackgroundList; // list to hold all background objects primary particle
574  TProfile *fBackgroundFlagsPro; // profile to hold all flags for background
579  Int_t fBackgroundOption; // set how to estimate background: 0 = "shifting", 1 = "permutations", etc. (see .cxx for further explanation). By default, it is "shifting"
580  Bool_t fEstimate2pBackground; // enable or not 2p background estimation
581  Bool_t fEstimate3pBackground; // enable or not 3p background estimation
582  Bool_t fEstimate4pBackground; // enable or not 4p background estimation
583  TH1F *f2pBackground[10][10];
584  TH1F *f3pBackground[10][10][10];
585  TH1F *f4pBackground[10][10][10][10];
586  TClonesArray *fMixedEvents0[3];
587  Int_t fMaxBufferSize1; // the second index in fMixedEvents1[10][50]; and fGlobalTracksAOD1[10][50]; is booked only up to this number. When this number is reached, calculation is done, and buffer is cleaned. max = 50. defaulted to 10
588  TClonesArray *fMixedEvents1[10][50];
589  TExMap *fGlobalTracksAOD1[10][50];
590 
591  // 5.) Buffers:
592  TList *fBuffersList; // list to hold all objects for buffers
593  TProfile *fBuffersFlagsPro; // profile to hold all flags for buffers
594  Bool_t fFillBuffers; // hold some thingies for bunch of events in memories
595  Int_t fMaxBuffer; // max buffer size (e.g. for 3-p correlations it is 3, etc.) TBI there is a problem apparently, re-think
596  TClonesArray *fChargedParticlesCA[2][10][10000];
597  TExMap *fChargedParticlesEM[10];
598 
599  // 6.) QA:
600  TList *fQAList; // list to holds all QA objects. It is nested in: a) "QA events"; b) "QA particles"; c) ...
601  TProfile *fQAFlagsPro; // list to holds all flags for QA objects
602  Bool_t fFillQA; // fill QA objects. Not set directly, but instead via: fFillQA = fFillQAEvents || fFillQAParticles || ...
603  Bool_t fBailOutAfterQA; // fill QA objects and bail out, i.e. do not do the actual analysis
604  Bool_t fFillQAEvents; // fill two sets of histograms, before and after event cuts
605  Bool_t fFillQAParticles; // fill two sets of histograms, before and after particle cuts
606  TList *fQAEventsList; // list to holds all objects for "QA events"
607  TList *fQAParticlesList; // list to holds all objects for "QA particles"
608  TH1I *fQAFilterBitScan; // for each track in AOD, dump it's filterbits
609  TH2I *fQAIDvsFilterBit; // atrack->ID() vs. filterbit
610  TH1F *fQAParticleHist[2][10][10];
611 
612  // 7.) Common event cuts (TBI validated only for AOD analysis, for the time being...):
613  // a) Cuts on AliAODEvent:
614  Bool_t fRejectEventsWithoutPrimaryVertex; // as the name says it, by default set to kTRUE. has a setter
615  Float_t fMinMagneticField; // defaulted to 0.001, compared to aAOD->GetMagneticField()
616  Bool_t fCutOnNumberOfTracks; // cut on the total number of tracks in AOD, i.e. on aAOD->GetNumberOfTracks(). This is NOT multiplicity, since some tracks are stored multiple times in AOD
617  Int_t fMinNumberOfTracks; // default values never in effect; if aAOD->GetNumberOfTracks() < fMinNumberOfTracks, event is rejected
618  Int_t fMaxNumberOfTracks; // default values never in effect; if aAOD->GetNumberOfTracks() > fMaxNumberOfTracks, event is rejected
619  Bool_t fCutOnNumberOfGlobalTracks; // cut on the total number of 'normal' global tracks in AOD, i.e. on fGlobalTracksAOD[0]->GetSize()
620  Int_t fMinNumberOfGlobalTracks; // default values never in effect; if fGlobalTracksAOD[0]->GetSize() < fMinNumberOfGlobalTracks, event is rejected
621  Int_t fMaxNumberOfGlobalTracks; // default values never in effect; if fGlobalTracksAOD[0]->GetSize() > fMaxNumberOfGlobalTracks, event is rejected
622  Bool_t fCutOnNumberOfV0s; // cut on the total number of V0s in AOD, i.e. on aAOD->GetNumberOfV0s()
623  Int_t fMinNumberOfV0s; // default values never in effect; if aAOD->GetNumberOfV0s() < fMinNumberOfV0s, event is rejected
624  Int_t fMaxNumberOfV0s; // default values never in effect; if aAOD->GetNumberOfV0s() > fMaxNumberOfV0s, event is rejected
625  Bool_t fCutOnNumberOfCascades; // cut on the total number of cascades in AOD, i.e. on aAOD->GetNumberOfCascades()
626  Int_t fMinNumberOfCascades; // default values never in effect; if aAOD->GetNumberOfCascades() < fMinNumberOfCascades, event is rejected
627  Int_t fMaxNumberOfCascades; // default values never in effect; if aAOD->GetNumberOfCascades() > fMaxNumberOfCascades, event is rejected
628 
629  // b) Cuts on AliAODVertex:
630  Bool_t fCutOnVertexX; // cut on the x position of vertex, i.e. on avtx->GetX()
631  Float_t fMinVertexX; // default values never in effect; if avtx->GetX() < fMinVertexX, event is rejected
632  Float_t fMaxVertexX; // default values never in effect; if avtx->GetX() > fMaxVertexX, event is rejected
633  Bool_t fCutOnVertexY; // cut on the y position of vertex, i.e. on avtx->GetY()
634  Float_t fMinVertexY; // default values never in effect; if avtx->GetY() < fMinVertexY, event is rejected
635  Float_t fMaxVertexY; // default values never in effect; if avtx->GetY() > fMaxVertexY, event is rejected
636  Bool_t fCutOnVertexZ; // cut on the z position of vertex, i.e. on avtx->GetZ()
637  Float_t fMinVertexZ; // default values never in effect; if avtx->GetZ() < fMinVertexZ, event is rejected
638  Float_t fMaxVertexZ; // default values never in effect; if avtx->GetZ() > fMaxVertexZ, event is rejected
639  Bool_t fCutOnNContributors; // cut on avtx->GetNContributors()
640  Int_t fMinNContributors; // default values never in effect; if avtx->GetNContributors() < fMinNContributors, event is rejected
641  Int_t fMaxNContributors; // default values never in effect; if avtx->GetNContributors() > fMaxNContributors, event is rejected
642 
643  // 8.) Common global track cuts (applied only on "normal" global tracks in AOD):
644  TList *fGlobalTrackCutsList; // list to hold all objects for common global track cuts
645  TProfile *fGlobalTrackCutsFlagsPro; // profile to hold all flags
646  Bool_t fApplyGlobalTrackCuts; // if set to kFALSE, the default hardwired cuts will be used. TBI doesn't do anything at the moment in .cxx
647  Float_t fPtRange[2]; // ptMin = fPtRange[0], ptMax = fPtRange[1]
648  Float_t fEtaRange[2]; // etaMin = etaRange[0], etaMax = etaRange[1]
649  Float_t fPhiRange[2]; // phiMin = phiRange[0], phiMax = phiRange[1]
650 
651  // *.) Testing new ways to calculate correlation functions and cumulants:
652  TList *fCorrelationFunctionsTESTList; // list to hold all TEST correlation functions for primary particle
653  TProfile *fCorrelationFunctionsTESTFlagsPro; // profile to hold all flags for TEST correlation functions
654  Bool_t fBoost; // boost or not
655  TVector3 fBoostVelocity; // boost everything in the system mocing with relative velocity fBoostVelocity
656  Int_t fnQ2bins; // number of bins for all histos and profiles vs. Q2 (both for signal and background)
657  Double_t fnQ2min; // min bin for all histos and profiles vs. Q2 (both for signal and background)
658  Double_t fnQ2max; // max bin for all histos and profiles vs. Q2 (both for signal and background)
659  Int_t fnQ3bins; // number of bins for all histos and profiles vs. Q3 (both for signal and background)
660  Double_t fnQ3min; // min bin for all histos and profiles vs. Q3 (both for signal and background)
661  Double_t fnQ3max; // max bin for all histos and profiles vs. Q3 (both for signal and background)
663  Bool_t fFillCorrelationFunctionsTEST[10]; // fill or not particular TEST correlation functions, they are enumerated in .cxx file (by default all are set to FALSE)
664  TProfile *fCorrelationFunctionsTEST[10][2][7][10];
665  TProfile *fSignalCumulantsTEST[10][2][4][10];
666  TH1F *fSignalYieldTEST[2];
667  TH1F *fEab_TEST6[2];
668 
669  // *.) Testing new ways to calculate background functions:
670  TList *fBackgroundTESTList; // list to hold all TEST background for primary particle
671  TProfile *fBackgroundTESTFlagsPro; // profile to hold all flags for TEST background
673  Bool_t fFillBackgroundTEST[10]; // fill or not particular TEST background, they are enumerated in .cxx file (by default all are set to FALSE)
674  TProfile *fBackgroundTEST[10][2][7][10];
675  TProfile *fBackgroundCumulantsTEST[10][2][4][10];
676  TClonesArray *fMixedEventsTEST[3];
677  TExMap *fGlobalTracksAODTEST[3];
679 
680  // *.) 'hybrid approach':
681  TList *fHybridApproachList; // list to hold all histos for 'hybrid approach' a la UH
682  TProfile *fHybridApproachFlagsPro; // profile to hold all flags for 'hybrid approach' a la UH
683  Bool_t fDoHybridApproach; // do or not the correlations via the 'hybrid approach' a la UH
685  TClonesArray *fMixedEventsHA[3];
686  TExMap *fGlobalTracksAODHA[3];
687 
688  // *.) Online monitoring:
689  Bool_t fOnlineMonitoring; // enable online monitoring (not set excplicitly!), the flags below just refine it
690  Bool_t fUpdateOutputFile; // update the output file after certain number of analysed events
691  Int_t fUpdateFrequency; // after how many events the output file will be updated
692  TString *fUpdateWhichOutputFile; // which file will be regularly updated
693  Int_t fMaxNumberOfEvents; // if this number of events is reached, write to external file and bail out
694 
695  // *.) Debugging:
696  Bool_t fDoSomeDebugging; // enable call to function within which debugging is done. Set indirectly.
697  Bool_t fWaitForSpecifiedEvent; // do something only for the specified event
698  UInt_t fRun; // do something only for the specified event
699  UShort_t fBunchCross; // do something only for the specified event
700  UInt_t fOrbit; // do something only for the specified event
701  UInt_t fPeriod; // do something only for the specified event
702 
704 
705 };
706 
707 //================================================================================================================
708 
709 #endif
710 
711 
712 
713 
714 
715 
716 
717 
718 
719 
720 
Int_t charge
Bool_t fUseDefaultInclusiveSigmaCuts
[0=e,1=mu,2=pi,3=K,4=p][particle(+q)/antiparticle(-q)][kPrimary/kFromDecayVtx]
virtual void GlobalTracksAODHA(AliAODEvent *aAOD, Int_t index)
TList * fHybridApproachList
[0=for <X1X2> and Q2, 1=for <X1X2X3> and Q3]
double Double_t
Definition: External.C:58
virtual void Calculate2pBackground(TClonesArray *ca1, TClonesArray *ca2)
Definition: External.C:236
Bool_t fFillCorrelationFunctions
lists to hold all correlation functions, for 2p [0], 3p [1], 4p [2], etc., separately ...
TList * fCorrelationFunctionsList
holds AliAODv0 candidates for each event [0=Lambda,1=...]
TH1F * fPtPIDHist[5][2][2]
[0=e,1=mu,2=pi,3=K,4=p][particle(+q)/antiparticle(-q)][kPrimary/kFromDecayVtx]
TH1F * fPhiPIDHist[5][2][2]
[0=e,1=mu,2=pi,3=K,4=p][particle(+q)/antiparticle(-q)][kPrimary/kFromDecayVtx]
virtual void HybridApproach5thTerm(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TExMap *em1, TExMap *em2, TExMap *em3)
AliAnalysisTaskMultiparticleFemtoscopy & operator=(const AliAnalysisTaskMultiparticleFemtoscopy &aatmpf)
TH1F * fEtaPIDHist[5][2][2]
[0=e,1=mu,2=pi,3=K,4=p][particle(+q)/antiparticle(-q)][kPrimary/kFromDecayVtx][xyz] ...
void SetNumberOfGlobalTracks(Int_t minnofgt, Int_t maxnofgt)
void SetQ3binning(const Int_t nBins, const Double_t min, const Double_t max)
TH1F * fPPIDHist[5][2][2][3]
[0=e,1=mu,2=pi,3=K,4=p][particle(+q)/antiparticle(-q)][kPrimary/kFromDecayVtx]
virtual void HybridApproach2ndTerm(AliAODEvent *aAOD, TClonesArray *ca3, TExMap *em3)
void SetFillBackgroundTEST(Int_t const testNO, Bool_t bDoTest)
Bool_t SpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
Double_t ptMin
Double_t Q2(AliAODTrack *agtrack1, AliAODTrack *agtrack2)
TH1I * fGetNumberOfV0sHist
fGlobalTracksAOD[0]->GetSize() this is then my multiplicity...
Bool_t fFillCorrelationFunctionsTEST[10]
lists to hold all TEST correlation functions, they are enumerated in .cxx file
void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
Bool_t fFillBackgroundTEST[10]
lists to hold all TEST background, they are enumerated in .cxx file
Bool_t Proton(AliAODTrack *atrack, Int_t charge=1, Bool_t bPrimary=kTRUE)
TExMap * fGlobalTracksAODTEST[3]
tracks for mixed events, using just 'shifting' for simplicity TBI make it it more sophisticated later...
TH1F * fEab_TEST6[2]
[0=for <X1X2> and Q2, 1=for <X1X2X3> and Q3]
TProfile * f4pBackgroundFlagsPro
profile to hold all flags for 3p background (placed in fBackgroundSublist[1])
Double_t RelativeMomentaComponent(AliAODTrack *agtrack1, AliAODTrack *agtrack2, const char *component)
TList * fCorrelationFunctionsSublist[3]
profile to hold all flags for 4p correlation functions (placed in fCorrelationFunctionsSublist[2]) ...
void SetMaxNumberOfEvents(const Int_t mnof, const char *uqof)
TProfile * f3pCorrelationFunctionsFlagsPro
profile to hold all flags for 2p correlation functions (placed in fCorrelationFunctionsSublist[0]) ...
virtual void Calculate3pBackgroundTEST(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TExMap *em1, TExMap *em2, TExMap *em3)
TList * fBuffersList
global tracks in AOD. Used only for fBackgroundOption = 1. Indices must be the same as in TClonesArra...
void SetUpdateOutputFile(const Int_t uf, const char *uqof)
int Int_t
Definition: External.C:63
void SetExclusiveSigmaCuts(Int_t pidFunction, Int_t pidExclusive, Double_t sigmaValue)
Definition: External.C:204
unsigned int UInt_t
Definition: External.C:33
TExMap * fChargedParticlesEM[10]
[0=AOD||ESD,1=MC][#events,max=10][particles]
float Float_t
Definition: External.C:68
TList * fQAList
[#events,max=10,has to correspond to 2nd entry above] this is standard mapping, nothing more nor less...
TClonesArray * fPIDV0sCA[1]
holds AliAODTrack candidates for each event [0=e,1=mu,2=pi,3=K,4=p][particle(+q)/antiparticle(-q)][kP...
Double_t RelativeMomenta(AliAODTrack *agtrack1, AliAODTrack *agtrack2)
Definition: External.C:212
TClonesArray * fMixedEventsHA[3]
five distinct distributions in the numerator of Eq. (18)
Bool_t Pion(AliAODTrack *atrack, Int_t charge=1, Bool_t bPrimary=kTRUE)
Double_t Q4(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3, AliAODTrack *agtrack4)
Int_t fBackgroundOption
lists to hold all background correlations, for 2p [0], 3p [1], 4p [2], etc., separately ...
TProfile * fBackgroundCumulantsTEST[10][2][4][10]
[testNo][0=vs Q2, 1=vs Q3][correlation][differential index, e.g. for test 0 [0=Cx][1=Cy][2=Cz]] ...
virtual void Calculate2pBackgroundTEST(TClonesArray *ca1, TClonesArray *ca2, TExMap *em1, TExMap *em2)
TH1F * fSignalYieldTEST[2]
[testNo][0=vs Q2, 1=vs Q3][[0=<x1x2>_c][1=<x1x3>_c][2=<x2x3>_c][3=<x1x2x3>_c]][differential index...
Bool_t fRejectEventsWithoutPrimaryVertex
[0="before rain",1="after rain"][distribution_index][cut_index]
virtual void GlobalTracksAODTEST(AliAODEvent *aAOD, Int_t index)
Bool_t Kaon(AliAODTrack *atrack, Int_t charge=1, Bool_t bPrimary=kTRUE)
Bool_t fFill4pCorrelationFunctions
[particle(+q): 0=e,1=mu,2=pi,3=K,4=p, anti-particle(-q): 5=e,6=mu,7=pi,8=K,9=p] x [same] x [same]...
virtual void GlobalTracksAOD(AliAODEvent *aAOD, Int_t index)
AliPIDResponse * fPIDResponse
MC, AOD, ESD, MC_AOD or MC_ESD.
TH1F * f4pBackground[10][10][10][10]
[particle(+q): 0=e,1=mu,2=pi,3=K,4=p, anti-particle(-q): 0=e,1=mu,2=pi,3=K,4=p] x [same] x [same] ...
virtual void Calculate4pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TClonesArray *ca4)
TH1F * fMassPIDHist[5][2][2]
holds the values of fExclusiveSigmaCuts[5][5];
virtual void Calculate3pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3)
Double_t PairVectorComponent(AliAODTrack *agtrack1, AliAODTrack *agtrack2, const char *component)
virtual void FillControlHistogramsNonIdentifiedParticles(AliAODTrack *atrack)
TList * fBackgroundSublist[3]
profile to hold all flags for 4p background (placed in fBackgroundSublist[2])
void SetQ2binning(const Int_t nBins, const Double_t min, const Double_t max)
TList * fBackgroundTESTList
[0=for signal "Test 6", 1=for background "Test 6"]
TProfile * f3pBackgroundFlagsPro
profile to hold all flags for 2p background (placed in fBackgroundSublist[0])
Double_t Q3(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3)
TProfile * fSignalCumulantsTEST[10][2][4][10]
[testNo][0=vs Q2, 1=vs Q3][example [0=<x1>][1=<x2>], ...,[6=<x1x2x3>]][differential index...
TExMap * fGlobalTracksAODHA[3]
tracks for mixed events, using just 'shifting' for simplicity TBI make it it more sophisticated later...
Bool_t fProcessBothKineAndReco
global tracks in AOD. [0] is used in the default analysis, [1] and [2] for event mixing, etc.
TExMap * fGlobalTracksAOD1[10][50]
tracks for mixed events. 10 vertex z-ranges. Keep at maximum 5 events in the buffer. Used only for fBackgroundOption = 1
TClonesArray * fMixedEvents0[3]
[particle(+q): 0=e,1=mu,2=pi,3=K,4=p, anti-particle(-q): 0=e,1=mu,2=pi,3=K,4=p] x [same] x [same] ...
void SetBoostVelocity(const Double_t vx, const Double_t vy, const Double_t vz)
TProfile * f4pCorrelationFunctionsFlagsPro
profile to hold all flags for 3p correlation functions (placed in fCorrelationFunctionsSublist[1]) ...
Int_t fMaxBufferSize1
tracks for mixed events (supporting up to 3-mixed events at the moment). Used only for fBackgroundOpt...
virtual void FillControlHistogramsIdentifiedParticles(AliAODTrack *atrack, AliAODTrack *gtrack)
Bool_t fFill3pCorrelationFunctions
[particle(+q): 0=e,1=mu,2=pi,3=K,4=p, anti-particle(-q): 5=e,6=mu,7=pi,8=K,9=p] x [same]...
unsigned short UShort_t
Definition: External.C:28
const char Option_t
Definition: External.C:48
bool Bool_t
Definition: External.C:53
void SetInclusiveSigmaCuts(Int_t pidFunction, Double_t sigmaValue)
TClonesArray * fMixedEventsTEST[3]
[testNo][0=vs Q2, 1=vs Q3][[0=<x1x2>_c][1=<x1x3>_c][2=<x2x3>_c][3=<x1x2x3>_c]][differential index...
Double_t ptMax
Int_t fNormalizationOption
[particle(+q): 0=e,1=mu,2=pi,3=K,4=p, anti-particle(-q): 5=e,6=mu,7=pi,8=K,9=p] x [same] x [same] x [...
TH1F * f3pBackground[10][10][10]
[particle(+q): 0=e,1=mu,2=pi,3=K,4=p, anti-particle(-q): 0=e,1=mu,2=pi,3=K,4=p] x [same]...
void SetFillCorrelationFunctionsTEST(Int_t const testNO, Bool_t bDoTest)
TProfile2D * fExclusiveSigmaCutsPro
holds the values of fInclusiveSigmaCuts[5];
TH1I * fGetNContributorsHist
[avtx->GetX(),avtx->GetY(),avtx->GetZ()]
TH1F * fCorrelationFunctions[10][10]
associates pdg code to index of correlation function
virtual void FillControlHistogramsNonIdentifiedParticlesFTSF(AliAODTrack *atrack)