AliPhysics  7f2a7c4 (7f2a7c4)
 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 SetQ2binning(const Int_t nBins, const Double_t min, const Double_t max)
374  {
375  this->fnQ2bins = nBins;
376  this->fnQ2min = min;
377  this->fnQ2max = max;
378  };
379  void SetQ3binning(const Int_t nBins, const Double_t min, const Double_t max)
380  {
381  this->fnQ3bins = nBins;
382  this->fnQ3min = min;
383  this->fnQ3max = max;
384  };
385  void SetFillCorrelationFunctionsTEST(Int_t const testNO, Bool_t bDoTest) {this->fFillCorrelationFunctionsTEST[testNO] = bDoTest;};
386 
387  // *.) Testing new ways to calculate background:
388  void SetBackgroundTESTList(TList* const bTl) {this->fBackgroundTESTList = bTl;};
390  void SetBackgroundTESTFlagsPro(TProfile* const bTfp) {this->fBackgroundTESTFlagsPro = bTfp;};
391  TProfile* GetBackgroundTESTFlagsPro() const {return this->fBackgroundTESTFlagsPro;};
392  void SetFillBackgroundTEST(Int_t const testNO, Bool_t bDoTest) {this->fFillBackgroundTEST[testNO] = bDoTest;};
393 
394  // *) 'hybrid approach':
395  void SetHybridApproachList(TList* const hal) {this->fHybridApproachList = hal;};
397  void SetHybridApproachFlagsPro(TProfile* const hafp) {this->fHybridApproachFlagsPro = hafp;};
398  TProfile* GetHybridApproachFlagsPro() const {return this->fHybridApproachFlagsPro;};
399  void SetDoHybridApproach(Bool_t bhap) {this->fDoHybridApproach = bhap;};
400 
401  // *.) Online monitoring:
402  void SetUpdateOutputFile(const Int_t uf, const char *uqof)
403  {
404  // Example usage: taskMPF->SetUpdateOutputFile(44,"AnalysisResults.root");
405  this->fOnlineMonitoring = kTRUE;
406  this->fUpdateOutputFile = kTRUE;
407  this->fUpdateFrequency = uf;
408  this->fUpdateWhichOutputFile = new TString(uqof);
409  };
410  void SetMaxNumberOfEvents(const Int_t mnof, const char *uqof)
411  {
412  // Example usage: taskMPF->SetMaxNumberOfEvents(44,"AnalysisResults.root");
413  this->fOnlineMonitoring = kTRUE;
414  this->fMaxNumberOfEvents = mnof;
415  this->fUpdateWhichOutputFile = new TString(uqof);
416  };
417 
418  // *.) Debugging:
419  void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
420  {
421  this->fDoSomeDebugging = kTRUE;
422  this->fWaitForSpecifiedEvent = kTRUE;
423  this->fRun = run;
424  this->fBunchCross = bunchCross;
425  this->fOrbit = orbit;
426  this->fPeriod = period;
427  }; // void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
428 
429  private:
432 
433  TList *fHistList; // base list to hold all output object (a.k.a. grandmother of all lists)
435 
436  AliPIDResponse *fPIDResponse;
437 
438  Int_t fMaxNoGlobalTracksAOD; // maximum # of TExMap *fGlobalTracksAOD objects to be booked. Default is 3, one for default analysis, and two for event mixing
439  TExMap *fGlobalTracksAOD[10];
440  Bool_t fProcessBothKineAndReco; // process both aMC and aAOD, or aMC and aESD, typically to get purities (TBI: add support for ESD)
441  Bool_t fProcessOnlyKine; // process only aMC
442  Bool_t fProcessOnlyReco; // process only aAOD or aESD (i.e. disregard aMC even if available)
443  Bool_t fRejectFakeTracks; // if set to kFALSE, and if fMC is available, get the corresponding MC particle by taking absolute value of label
444  AliMCEvent *fMC; // placeholder for MC info
445 
446  // 1.) Control histograms:
447  TList *fControlHistogramsList; // list to hold all 'control histograms' objects
448  TProfile *fControlHistogramsFlagsPro; // profile to hold all flags for control histograms
449  Bool_t fFillControlHistograms; // not set directly, but instead via: fFillControlHistogramsEvent || fFillControlHistogramsNonIdentifiedParticles || ...
450  // 1a) Event (a.k.a. global event observables):
451  TList *fControlHistogramsEventList; // list to hold all 'control histograms' for events TBI
452  TProfile *fControlHistogramsEventFlagsPro; // profile to hold all flags for control histograms for events TBI
453  Bool_t fFillControlHistogramsEvent; // fill or not control histograms for global event observables
454  TH1I *fGetNumberOfTracksHist; // a{AOD,MC}->GetNumberOfTracks()
456  TH1I *fGetNumberOfV0sHist; // aAOD->GetNumberOfV0s()
457  TH1I *fGetNumberOfCascadesHist; // aAOD->GetNumberOfCascades()
458  TH1D *fGetMagneticFieldHist; // aAOD->GetMagneticField()
459  TH1I *fGetEventTypeHist; // aAOD->GetEventType()
460  TH1D *fGetCentralityHist; // aAOD->GetCentrality()
461  TH1F *fVertexXYZ[3];
462  TH1I *fGetNContributorsHist; // avtx->GetNContributors()
463  TH1F *fGetChi2perNDFHist; // avtx->GetChi2perNDF();
464  TH1I *fGetNDaughtersHist; // avtx->GetNDaughters();
465 
466  // 1b) Non-identified particles (for AOD these are "normal global" tracks, i.e. the ones which satisfy atrack->GetID()>=0 ):
467  TList *fControlHistogramsNonIdentifiedParticlesList; // list to hold all 'control histograms' for non-identified particles
468  TProfile *fControlHistogramsNonIdentifiedParticlesFlagsPro; // profile to hold all flags for control histograms for non-identified particles
469  Bool_t fFillControlHistogramsNonIdentifiedParticles; // fill or not control histograms for non-identified particles
470  TH1I *fChargeHist; // atrack->Charge()
471  TH1I *fGetTPCNclsHist; // atrack->GetTPCNcls()
472  TH1I *fGetTPCsignalNHist; // atrack->GetTPCsignalN()
473  TH1I *fGetITSNclsHist; // atrack->GetITSNcls()
474  TH2F *fdEdxVsPtHist; // atrack->GetTPCmomentum(),atrack->GetTPCsignal()
475  TH1F *fPtHist; // atrack->Pt()
476  TH1F *fEtaHist; // atrack->Eta()
477  TH1F *fPhiHist; // atrack->Phi()
478  TH1F *fMassHist; // atrack->M()
479  TH1I *fGetFilterMap; // atrack->GetFilterMap()
480  TH1I *fGetPdgCode; // atrack->GetPdgCode()
481 
482  // 1c) Non-identified particles for the specified filterbit (f.t.s.f.) (by default TPC-only):
483  TList *fControlHistogramsNonIdentifiedParticlesFTSFList; // list to hold all 'control histograms' for non-identified particles
484  TProfile *fControlHistogramsNonIdentifiedParticlesFTSFFlagsPro; // profile to hold all flags for control histograms for non-identified particles
485  Bool_t fFillControlHistogramsNonIdentifiedParticlesFTSF; // fill or not control histograms for non-identified particles
486  Int_t fFilterBitFTSF; // filter bit, relevant only for these group of control histos. For the particle selection, there is another flag
487  TH1I *fChargeFTSFHist; // atrack->Charge()
488  TH1I *fGetTPCNclsFTSFHist; // atrack->GetTPCNcls()
489  TH1I *fGetTPCsignalNFTSFHist; // atrack->GetTPCsignalN()
490  TH1I *fGetITSNclsFTSFHist; // atrack->GetITSNcls()
491  TH2F *fdEdxVsPtFTSFHist; // atrack->GetTPCmomentum(),atrack->GetTPCsignal()
492  TH1F *fPtFTSFHist; // atrack->Pt()
493  TH1F *fEtaFTSFHist; // atrack->Eta()
494  TH1F *fPhiFTSFHist; // atrack->Phi()
495  TH1F *fMassFTSFHist; // atrack->M()
496  TH1I *fGetFilterMapFTSF; // atrack->GetFilterMap()
497  TH1I *fGetPdgCodeFTSF; // atrack->GetPdgCode()
498 
499  // 1d) Identified particles:
500  TList *fControlHistogramsIdentifiedParticlesList; // list to hold all 'control histograms' for identified particles
501  TProfile *fControlHistogramsIdentifiedParticlesFlagsPro; // profile to hold all flags for control histograms for identified particles
502  Bool_t fFillControlHistogramsIdentifiedParticles; // fill or not control histograms for identified particles (by default they are not filled)
503  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
506  TH1F *fMassPIDHist[5][2][2];
507  TH1F *fPtPIDHist[5][2][2];
508  TH1F *fPPIDHist[5][2][2][3];
509  TH1F *fEtaPIDHist[5][2][2];
510  TH1F *fPhiPIDHist[5][2][2];
511  Bool_t fUseDefaultInclusiveSigmaCuts; // if the setter SetInclusiveSigmaCuts(...) (see above) is not called explicitly, the default hardwired values will be used
512  Bool_t fUseDefaultExclusiveSigmaCuts; // if the setter SetExclusiveSigmaCuts(...) (see above) is not called explicitly, the default hardwired values will be used
513  Double_t fInclusiveSigmaCuts[5]; // [PID function] see .cxx for detailed documentation
514  Double_t fExclusiveSigmaCuts[5][5]; // [PID function][PID exclusive] see .cxx for detailed documentation
515 
516  // ...
517  // 1e) V0s:
518  TList *fControlHistogramsV0sList; // list to hold all 'control histograms' for V0s
519  TProfile *fControlHistogramsV0sFlagsPro; // profile to hold all flags for control histograms for V0s
520  Bool_t fFillControlHistogramsV0s; // fill or not control histograms for V0s (by default they are not filled)
521  TH1I *fGetNProngsHist; // aAODv0->GetNProngs()
522  TH1F *fMassK0ShortHist; // aAODv0->MassK0Short()
523  TH1F *fMassLambdaHist; // aAODv0->MassLambda()
524  TH1F *fMassAntiLambdaHist; // aAODv0->MassAntiLambda()
525  TH1F *fOpenAngleV0Hist; // aAODv0->OpenAngleV0() // same as aAODv0->ProngsRelAngle()
526  TH1F *fRadiusV0Hist; // aAODv0->RadiusV0()
527  TH1F *fDcaV0ToPrimVertexHist; // aAODv0->DcaV0ToPrimVertex()
528  TH1F *fMomV0XHist; // aAODv0->MomV0X()
529  TH1F *fMomV0YHist; // aAODv0->MomV0Y()
530  TH1F *fMomV0ZHist; // aAODv0->MomV0Z()
531  TH1F *fPtV0Hist; // pow(aAODv0->Pt2V0(),0.5)
532  TH1F *fPseudoRapV0Hist; // aAODv0->PseudoRapV0()
533  TH2F *fPAHist; // Pod.-Arm.
534 
535  // ...
536  // 1d) Cascades:
537  // ...
538 
539  // 2.) Event-by-event objects:
540  TList *fEBEHistogramsList; // list to hold all stuff from e-b-e histograms
541  TProfile *fEBEObjectsFlagsPro; // profile to hold all flags for e-b-e histograms for V0s
542  //Bool_t fFillEBEHistograms; // fill or not e-b-e histograms TBI do I really need this?
543  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
544  TClonesArray *fPIDCA[5][2][2];
545  TClonesArray *fPIDV0sCA[1];
546 
547  // 3.) Correlation functions:
548  TList *fCorrelationFunctionsList; // list to hold all correlation functions for primary particle
549  TProfile *fCorrelationFunctionsFlagsPro; // profile to hold all flags for correlation functions
554  Bool_t fFillCorrelationFunctions; // fill or not correlation functions (by default they are not filled)
555  Bool_t fNormalizeCorrelationFunctions; // normalize correlation functions with the background
557  TH1F *fCorrelationFunctions[10][10];
558  Bool_t fFill3pCorrelationFunctions; // fill 3-p correlation functions
559  TH1F *f3pCorrelationFunctions[10][10][10];
560  Bool_t fFill4pCorrelationFunctions; // fill 4-p correlation functions
561  TH1F *f4pCorrelationFunctions[10][10][10][10];
562  Int_t fNormalizationOption; // set here how to normalize the correlation function: 0 = "just scale", 1 = "use concrete interval", 2 = ...
563  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
564  Int_t fnMergedBins; // before normalization, both signal and background will be rebinned with this value
565 
566  // 4.) Background:
567  TList *fBackgroundList; // list to hold all background objects primary particle
568  TProfile *fBackgroundFlagsPro; // profile to hold all flags for background
573  Int_t fBackgroundOption; // set how to estimate background: 0 = "shifting", 1 = "permutations", etc. (see .cxx for further explanation). By default, it is "shifting"
574  Bool_t fEstimate2pBackground; // enable or not 2p background estimation
575  Bool_t fEstimate3pBackground; // enable or not 3p background estimation
576  Bool_t fEstimate4pBackground; // enable or not 4p background estimation
577  TH1F *f2pBackground[10][10];
578  TH1F *f3pBackground[10][10][10];
579  TH1F *f4pBackground[10][10][10][10];
580  TClonesArray *fMixedEvents0[3];
581  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
582  TClonesArray *fMixedEvents1[10][50];
583  TExMap *fGlobalTracksAOD1[10][50];
584 
585  // 5.) Buffers:
586  TList *fBuffersList; // list to hold all objects for buffers
587  TProfile *fBuffersFlagsPro; // profile to hold all flags for buffers
588  Bool_t fFillBuffers; // hold some thingies for bunch of events in memories
589  Int_t fMaxBuffer; // max buffer size (e.g. for 3-p correlations it is 3, etc.) TBI there is a problem apparently, re-think
590  TClonesArray *fChargedParticlesCA[2][10][10000];
591  TExMap *fChargedParticlesEM[10];
592 
593  // 6.) QA:
594  TList *fQAList; // list to holds all QA objects. It is nested in: a) "QA events"; b) "QA particles"; c) ...
595  TProfile *fQAFlagsPro; // list to holds all flags for QA objects
596  Bool_t fFillQA; // fill QA objects. Not set directly, but instead via: fFillQA = fFillQAEvents || fFillQAParticles || ...
597  Bool_t fBailOutAfterQA; // fill QA objects and bail out, i.e. do not do the actual analysis
598  Bool_t fFillQAEvents; // fill two sets of histograms, before and after event cuts
599  Bool_t fFillQAParticles; // fill two sets of histograms, before and after particle cuts
600  TList *fQAEventsList; // list to holds all objects for "QA events"
601  TList *fQAParticlesList; // list to holds all objects for "QA particles"
602  TH1I *fQAFilterBitScan; // for each track in AOD, dump it's filterbits
603  TH2I *fQAIDvsFilterBit; // atrack->ID() vs. filterbit
604  TH1F *fQAParticleHist[2][10][10];
605 
606  // 7.) Common event cuts (TBI validated only for AOD analysis, for the time being...):
607  // a) Cuts on AliAODEvent:
608  Bool_t fRejectEventsWithoutPrimaryVertex; // as the name says it, by default set to kTRUE. has a setter
609  Float_t fMinMagneticField; // defaulted to 0.001, compared to aAOD->GetMagneticField()
610  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
611  Int_t fMinNumberOfTracks; // default values never in effect; if aAOD->GetNumberOfTracks() < fMinNumberOfTracks, event is rejected
612  Int_t fMaxNumberOfTracks; // default values never in effect; if aAOD->GetNumberOfTracks() > fMaxNumberOfTracks, event is rejected
613  Bool_t fCutOnNumberOfGlobalTracks; // cut on the total number of 'normal' global tracks in AOD, i.e. on fGlobalTracksAOD[0]->GetSize()
614  Int_t fMinNumberOfGlobalTracks; // default values never in effect; if fGlobalTracksAOD[0]->GetSize() < fMinNumberOfGlobalTracks, event is rejected
615  Int_t fMaxNumberOfGlobalTracks; // default values never in effect; if fGlobalTracksAOD[0]->GetSize() > fMaxNumberOfGlobalTracks, event is rejected
616  Bool_t fCutOnNumberOfV0s; // cut on the total number of V0s in AOD, i.e. on aAOD->GetNumberOfV0s()
617  Int_t fMinNumberOfV0s; // default values never in effect; if aAOD->GetNumberOfV0s() < fMinNumberOfV0s, event is rejected
618  Int_t fMaxNumberOfV0s; // default values never in effect; if aAOD->GetNumberOfV0s() > fMaxNumberOfV0s, event is rejected
619  Bool_t fCutOnNumberOfCascades; // cut on the total number of cascades in AOD, i.e. on aAOD->GetNumberOfCascades()
620  Int_t fMinNumberOfCascades; // default values never in effect; if aAOD->GetNumberOfCascades() < fMinNumberOfCascades, event is rejected
621  Int_t fMaxNumberOfCascades; // default values never in effect; if aAOD->GetNumberOfCascades() > fMaxNumberOfCascades, event is rejected
622 
623  // b) Cuts on AliAODVertex:
624  Bool_t fCutOnVertexX; // cut on the x position of vertex, i.e. on avtx->GetX()
625  Float_t fMinVertexX; // default values never in effect; if avtx->GetX() < fMinVertexX, event is rejected
626  Float_t fMaxVertexX; // default values never in effect; if avtx->GetX() > fMaxVertexX, event is rejected
627  Bool_t fCutOnVertexY; // cut on the y position of vertex, i.e. on avtx->GetY()
628  Float_t fMinVertexY; // default values never in effect; if avtx->GetY() < fMinVertexY, event is rejected
629  Float_t fMaxVertexY; // default values never in effect; if avtx->GetY() > fMaxVertexY, event is rejected
630  Bool_t fCutOnVertexZ; // cut on the z position of vertex, i.e. on avtx->GetZ()
631  Float_t fMinVertexZ; // default values never in effect; if avtx->GetZ() < fMinVertexZ, event is rejected
632  Float_t fMaxVertexZ; // default values never in effect; if avtx->GetZ() > fMaxVertexZ, event is rejected
633  Bool_t fCutOnNContributors; // cut on avtx->GetNContributors()
634  Int_t fMinNContributors; // default values never in effect; if avtx->GetNContributors() < fMinNContributors, event is rejected
635  Int_t fMaxNContributors; // default values never in effect; if avtx->GetNContributors() > fMaxNContributors, event is rejected
636 
637  // 8.) Common global track cuts (applied only on "normal" global tracks in AOD):
638  TList *fGlobalTrackCutsList; // list to hold all objects for common global track cuts
639  TProfile *fGlobalTrackCutsFlagsPro; // profile to hold all flags
640  Bool_t fApplyGlobalTrackCuts; // if set to kFALSE, the default hardwired cuts will be used. TBI doesn't do anything at the moment in .cxx
641  Float_t fPtRange[2]; // ptMin = fPtRange[0], ptMax = fPtRange[1]
642  Float_t fEtaRange[2]; // etaMin = etaRange[0], etaMax = etaRange[1]
643  Float_t fPhiRange[2]; // phiMin = phiRange[0], phiMax = phiRange[1]
644 
645  // *.) Testing new ways to calculate correlation functions and cumulants:
646  TList *fCorrelationFunctionsTESTList; // list to hold all TEST correlation functions for primary particle
647  TProfile *fCorrelationFunctionsTESTFlagsPro; // profile to hold all flags for TEST correlation functions
648  Int_t fnQ2bins; // number of bins for all histos and profiles vs. Q2 (both for signal and background)
649  Double_t fnQ2min; // min bin for all histos and profiles vs. Q2 (both for signal and background)
650  Double_t fnQ2max; // max bin for all histos and profiles vs. Q2 (both for signal and background)
651  Int_t fnQ3bins; // number of bins for all histos and profiles vs. Q3 (both for signal and background)
652  Double_t fnQ3min; // min bin for all histos and profiles vs. Q3 (both for signal and background)
653  Double_t fnQ3max; // max bin for all histos and profiles vs. Q3 (both for signal and background)
655  Bool_t fFillCorrelationFunctionsTEST[10]; // fill or not particular TEST correlation functions, they are enumerated in .cxx file (by default all are set to FALSE)
656  TProfile *fCorrelationFunctionsTEST[10][2][7][10];
657  TProfile *fSignalCumulantsTEST[10][2][4][10];
658  TH1F *fSignalYieldTEST[2];
659 
660  // *.) Testing new ways to calculate background functions:
661  TList *fBackgroundTESTList; // list to hold all TEST background for primary particle
662  TProfile *fBackgroundTESTFlagsPro; // profile to hold all flags for TEST background
664  Bool_t fFillBackgroundTEST[10]; // fill or not particular TEST background, they are enumerated in .cxx file (by default all are set to FALSE)
665  TProfile *fBackgroundTEST[10][2][7][10];
666  TProfile *fBackgroundCumulantsTEST[10][2][4][10];
667  TClonesArray *fMixedEventsTEST[3];
668  TExMap *fGlobalTracksAODTEST[3];
670 
671  // *.) 'hybrid approach':
672  TList *fHybridApproachList; // list to hold all histos for 'hybrid approach' a la UH
673  TProfile *fHybridApproachFlagsPro; // profile to hold all flags for 'hybrid approach' a la UH
674  Bool_t fDoHybridApproach; // do or not the correlations via the 'hybrid approach' a la UH
676  TClonesArray *fMixedEventsHA[3];
677  TExMap *fGlobalTracksAODHA[3];
678 
679  // *.) Online monitoring:
680  Bool_t fOnlineMonitoring; // enable online monitoring (not set excplicitly!), the flags below just refine it
681  Bool_t fUpdateOutputFile; // update the output file after certain number of analysed events
682  Int_t fUpdateFrequency; // after how many events the output file will be updated
683  TString *fUpdateWhichOutputFile; // which file will be regularly updated
684  Int_t fMaxNumberOfEvents; // if this number of events is reached, write to external file and bail out
685 
686  // *.) Debugging:
687  Bool_t fDoSomeDebugging; // enable call to function within which debugging is done. Set indirectly.
688  Bool_t fWaitForSpecifiedEvent; // do something only for the specified event
689  UInt_t fRun; // do something only for the specified event
690  UShort_t fBunchCross; // do something only for the specified event
691  UInt_t fOrbit; // do something only for the specified event
692  UInt_t fPeriod; // do something only for the specified event
693 
695 
696 };
697 
698 //================================================================================================================
699 
700 #endif
701 
702 
703 
704 
705 
706 
707 
708 
709 
710 
711 
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...
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)
ClassDef(AliAnalysisTaskMultiparticleFemtoscopy, 18)
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 <X1X2> and Q2, 1=for <X1X2X3> and Q3]
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] ...
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)