AliPhysics  fde8a9f (fde8a9f)
 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 "TH1F.h"
29 #include "TH1I.h"
30 
31 //================================================================================================================
32 
34  public:
36  AliAnalysisTaskMultiparticleFemtoscopy(const char *name, Bool_t useParticleWeights=kFALSE);
38  virtual void UserCreateOutputObjects();
39  virtual void UserExec(Option_t *);
40  virtual void Terminate(Option_t *);
41 
42  // 0.) Methods called in the constructor:
43  virtual void InitializeArrays(); // use this method temporarily for all objects not classified yet
45  virtual void InitializeArraysForEBEObjects();
47  virtual void InitializeArraysForBackground();
48  virtual void InitializeArraysForBuffers();
49  virtual void InitializeArraysForQA();
50 
51  // 1.) Methods called in UserCreateOutputObjects():
53  virtual void BookAndNestAllLists();
54  virtual void BookEverything(); // use this to book all un-classified objects
56  virtual void BookEverythingForEBEObjects();
58  virtual void BookEverythingForBackground();
59  virtual void BookEverythingForBuffers();
60  virtual void BookEverythingForQA();
61 
62  // 2.) Methods called in UserExec(Option_t *):
63  // 2a) Directly:
64  virtual void InsanityChecksUserExec();
65  virtual void QA(AliVEvent *ave);
66  virtual void MC(AliMCEvent *aMC);
67  virtual void ESD(AliESDEvent *aESD);
68  virtual void AOD(AliAODEvent *aAOD);
69  virtual void OnlineMonitoring();
70  // 2b) Indirectly:
71  virtual void EstimateBackground(AliVEvent *ave);
72  virtual void FillControlHistogramsEvent(AliVEvent *ave);
73  virtual void FillControlHistogramsParticle(AliVEvent *ave);
74  virtual void FillControlHistogramsNonIdentifiedParticles(AliAODTrack *atrack);
75  virtual void FillControlHistogramsNonIdentifiedParticles(AliAODMCParticle *amcparticle);
76  virtual void FillControlHistogramsNonIdentifiedParticlesFTSF(AliAODTrack *atrack);
77  virtual void FillControlHistogramsIdentifiedParticles(AliAODTrack *atrack, AliAODTrack *gtrack);
78  virtual void FillControlHistogramsIdentifiedParticles(AliAODMCParticle *amcparticle);
79  virtual void V0s(AliVEvent *ave);
80  Int_t InsanityChecksForTracks(AliAODTrack *atrack); // insanity checks for each track ('atrack') in AOD
81  Int_t InsanityChecksForGlobalTracks(AliAODTrack *gtrack); // insanity checks only for global tracks ('gtrack') in AOD
82  Bool_t Pion(AliAODTrack *atrack, Int_t charge = 1, Bool_t bPrimary = kTRUE);
83  Bool_t Kaon(AliAODTrack *atrack, Int_t charge = 1, Bool_t bPrimary = kTRUE);
84  Bool_t Proton(AliAODTrack *atrack, Int_t charge = 1, Bool_t bPrimary = kTRUE);
85  Bool_t PassesCommonEventCuts(AliVEvent *ave);
86  Bool_t PassesMixedEventCuts(AliVEvent *ave);
87  Bool_t PassesCommonGlobalTrackCuts(AliAODTrack *gtrack); // common cuts for global tracks TBI make it uniform with MC
88  Bool_t PassesCommonTrackCuts(AliAODTrack *atrack); // common cuts for analysis specific tracks (e.g. TPC-only) TBI make it uniform with MC
89  Bool_t PassesCommonTrackCuts(AliAODMCParticle *amcparticle); // common cuts for analysis specific tracks TBI see above two lines
90  virtual void GlobalTracksAOD(AliAODEvent *aAOD, Int_t index); // fill fGlobalTracksAOD in e-b-e . For the meaning of 'index', see declaration of fGlobalTracksAOD
91  Double_t RelativeMomenta(AliAODTrack *agtrack1, AliAODTrack *agtrack2);
92  Double_t RelativeMomenta(AliAODMCParticle *amcparticle1, AliAODMCParticle *amcparticle2);
93  Double_t Q3(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3);
94  Double_t Q4(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3, AliAODTrack *agtrack4);
95 
96  virtual void ResetEBEObjects();
97  Bool_t SpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period);
99  virtual void DoSomeDebugging(AliVEvent *ave);
100  virtual void CalculateCorrelationFunctions(AliAODEvent *aAOD);
101  virtual void Calculate3pCorrelationFunctions(AliAODEvent *aAOD);
102  virtual void Calculate4pCorrelationFunctions(AliAODEvent *aAOD);
103  virtual void CalculateCorrelationFunctions(AliMCEvent *aMC);
104  virtual void CalculateBackground(TClonesArray *ca1, TClonesArray *ca2);
105  virtual void Calculate3pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3);
106  virtual void Calculate4pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3, TClonesArray *ca4);
107  virtual void CalculateBackground(TClonesArray *ca1, TClonesArray *ca2, Bool_t bMC); // TBI unify with the previous function
108  // 3.) Methods called in Terminate(Option_t *):
109  virtual void GetOutputHistograms(TList *histList);
110  // TBI implement the rest as well
111  virtual void GetPointersForCorrelationFunctions();
112  virtual void GetPointersForBackground();
113  virtual void GetPointersForBuffers();
114  virtual void NormalizeCorrelationFunctions();
115 
116  // Setters and getters:
117  // 0.) Not classified yet;
118  // 1.) Control histograms;
119  // 2.) Event-by-event histograms;
120  // 3.) Correlation functions;
121  // 4.) Background;
122  // 5.) Buffers;
123  // 6.) QA;
124  // 7.) ...
125  // *.) Debugging
126 
127  // 0.) Not classified yet:
132  void SetProcessOnlyKine(Bool_t pok) {this->fProcessOnlyKine = pok;};
133  Bool_t GetProcessOnlyKine() const {return this->fProcessOnlyKine;};
134  void SetProcessOnlyReco(Bool_t por) {this->fProcessOnlyReco = por;};
135  Bool_t GetProcessOnlyReco() const {return this->fProcessOnlyReco;};
136  void SetRejectFakeTracks(Bool_t rft) {this->fRejectFakeTracks = rft;};
138 
139  // 1.) Control histograms:
140  void SetControlHistogramsList(TList* const chl) {this->fControlHistogramsList = chl;};
142  void SetControlHistogramsFlagsPro(TProfile* const chfp) {this->fControlHistogramsFlagsPro = chfp;};
143  TProfile* GetControlHistogramsFlagsPro() const {return this->fControlHistogramsFlagsPro;};
144  //void SetFillControlHistograms(Bool_t fch) {this->fFillControlHistograms = fch;}; // TBI remove eventually
145  //Bool_t GetFillControlHistograms() const {return this->fFillControlHistograms;}; // TBI remove eventually
152  void SetFilterBitFTSF(Int_t fbFTSF) {this->fFilterBitFTSF = fbFTSF;};
153  Int_t GetFilterBitFTSF() const {return this->fFilterBitFTSF;};
158  // 2.) Event-by-event histograms:
159  void SetEBEHistogramsList(TList* const ehl) {this->fEBEHistogramsList = ehl;};
161  void SetEBEObjectsFlagsPro(TProfile* const ehfp) {this->fEBEObjectsFlagsPro = ehfp;};
162  TProfile* GetEBEObjectsFlagsPro() const {return this->fEBEObjectsFlagsPro;};
163  //void SetFillEBEHistograms(Bool_t feh) {this->fFillEBEHistograms = feh;}; // TBI rethink
164  //Bool_t GetFillEBEHistograms() const {return this->fFillEBEHistograms;};
165  // 3.) Correlation functions:
168  void SetCorrelationFunctionsFlagsPro(TProfile* const cffp) {this->fCorrelationFunctionsFlagsPro = cffp;};
178 
179  // 4.) Background:
180  void SetBackgroundList(TList* const bl) {this->fBackgroundList = bl;};
181  TList* GetBackgroundList() const {return this->fBackgroundList;}
182  void SetBackgroundFlagsPro(TProfile* const bfp) {this->fBackgroundFlagsPro = bfp;};
183  TProfile* GetBackgroundFlagsPro() const {return this->fBackgroundFlagsPro;};
190 
191  // 5.) Buffers:
192  void SetBuffersList(TList* const bl) {this->fBuffersList = bl;};
193  TList* GetBuffersList() const {return this->fBuffersList;}
194  void SetBuffersFlagsPro(TProfile* const bfp) {this->fBuffersFlagsPro = bfp;};
195  TProfile* GetBuffersFlagsPro() const {return this->fBuffersFlagsPro;};
196  void SetFillBuffers(Int_t mb) {this->fFillBuffers = kTRUE; this->fMaxBuffer = mb;};
197 
198  // 6.) QA:
199  void SetQAList(TList* const qal) {this->fQAList = qal;};
200  TList* GetQAList() const {return this->fQAList;}
201  void SetQAFlagsPro(TProfile* const qafp) {this->fQAFlagsPro = qafp;};
202  TProfile* GetQAlagsPro() const {return this->fQAFlagsPro;};
203  void SetBailOutAfterQA(Bool_t boaqa) {this->fBailOutAfterQA = boaqa;};
204  Bool_t GetBailOutAfterQA() const {return this->fBailOutAfterQA;};
205  void SetFillQAEvents(Bool_t ffqae) {this->fFillQAEvents = ffqae;};
206  Bool_t GetFillQAEvents() const {return this->fFillQAEvents;};
207  void SetFillQAParticles(Bool_t ffqap) {this->fFillQAParticles = ffqap;};
208  Bool_t GetFillQAParticles() const {return this->fFillQAParticles;};
209  void SetQAEventsList(TList* const qael) {this->fQAEventsList = qael;};
210  TList* GetQAEventsList() const {return this->fQAEventsList;}
211  void SetQAParticlesList(TList* const qapl) {this->fQAParticlesList = qapl;};
212  TList* GetQAParticlesList() const {return this->fQAParticlesList;}
213 
214  // 7.) Common event cuts:
219  void SetNumberOfTracks(Int_t minnoft, Int_t maxnoft)
220  {
221  fCutOnNumberOfTracks = kTRUE;
222  this->fMinNumberOfTracks = minnoft;
223  this->fMaxNumberOfTracks = maxnoft;
224  };
225  void SetNumberOfGlobalTracks(Int_t minnofgt, Int_t maxnofgt)
226  {
228  this->fMinNumberOfGlobalTracks = minnofgt;
229  this->fMaxNumberOfGlobalTracks = maxnofgt;
230  };
231  void SetNumberOfV0s(Int_t minnofV0s, Int_t maxnofV0s)
232  {
233  fCutOnNumberOfV0s = kTRUE;
234  this->fMinNumberOfV0s = minnofV0s;
235  this->fMaxNumberOfV0s = maxnofV0s;
236  };
237  void SetNumberOfCascades(Int_t minnofc, Int_t maxnofc)
238  {
239  fCutOnNumberOfCascades = kTRUE;
240  this->fMinNumberOfCascades = minnofc;
241  this->fMaxNumberOfCascades = maxnofc;
242  };
243  void SetVertexX(Float_t minvX, Float_t maxvX)
244  {
245  fCutOnVertexX = kTRUE;
246  this->fMinVertexX = minvX;
247  this->fMaxVertexX = maxvX;
248  };
249  void SetVertexY(Float_t minvY, Float_t maxvY)
250  {
251  fCutOnVertexY = kTRUE;
252  this->fMinVertexY = minvY;
253  this->fMaxVertexY = maxvY;
254  };
255  void SetVertexZ(Float_t minvZ, Float_t maxvZ)
256  {
257  fCutOnVertexZ = kTRUE;
258  this->fMinVertexZ = minvZ;
259  this->fMaxVertexZ = maxvZ;
260  };
261  void SetNContributors(Int_t minNc, Int_t maxNc)
262  {
263  fCutOnNContributors = kTRUE;
264  this->fMinNContributors = minNc;
265  this->fMaxNContributors = maxNc;
266  };
267 
268  // *.) Online monitoring:
269  void SetUpdateOutputFile(const Int_t uf, const char *uqof)
270  {
271  // Example usage: taskMPF->SetUpdateOutputFile(44,"AnalysisResults.root");
272  this->fOnlineMonitoring = kTRUE;
273  this->fUpdateOutputFile = kTRUE;
274  this->fUpdateFrequency = uf;
275  this->fUpdateWhichOutputFile = new TString(uqof);
276  };
277  void SetMaxNumberOfEvents(const Int_t mnof, const char *uqof)
278  {
279  // Example usage: taskMPF->SetMaxNumberOfEvents(44,"AnalysisResults.root");
280  this->fOnlineMonitoring = kTRUE;
281  this->fMaxNumberOfEvents = mnof;
282  this->fUpdateWhichOutputFile = new TString(uqof);
283  };
284 
285  // *.) Debugging:
286  void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
287  {
288  this->fDoSomeDebugging = kTRUE;
289  this->fWaitForSpecifiedEvent = kTRUE;
290  this->fRun = run;
291  this->fBunchCross = bunchCross;
292  this->fOrbit = orbit;
293  this->fPeriod = period;
294  }; // void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
295 
296  private:
299 
300  TList *fHistList; // base list to hold all output object (a.k.a. grandmother of all lists)
302 
303  AliPIDResponse *fPIDResponse;
304 
305  Int_t fMaxNoGlobalTracksAOD; // maximum # of TExMap *fGlobalTracksAOD objects to be booked. Default is 3, one for default analysis, and two for event mixing
306  TExMap *fGlobalTracksAOD[10];
307  Bool_t fProcessBothKineAndReco; // process both aMC and aAOD, or aMC and aESD, typically to get purities (TBI: add support for ESD)
308  Bool_t fProcessOnlyKine; // process only aMC
309  Bool_t fProcessOnlyReco; // process only aAOD or aESD (i.e. disregard aMC even if available)
310  Bool_t fRejectFakeTracks; // if set to kFALSE, and if fMC is available, get the corresponding MC particle by taking absolute value of label
311  AliMCEvent *fMC; // placeholder for MC info
312 
313  // 1.) Control histograms:
314  TList *fControlHistogramsList; // list to hold all 'control histograms' objects
315  TProfile *fControlHistogramsFlagsPro; // profile to hold all flags for control histograms
316  Bool_t fFillControlHistograms; // not set directly, but instead via: fFillControlHistogramsEvent || fFillControlHistogramsNonIdentifiedParticles || ...
317  // 1a) Event (a.k.a. global event observables):
318  TList *fControlHistogramsEventList; // list to hold all 'control histograms' for events TBI
319  TProfile *fControlHistogramsEventFlagsPro; // profile to hold all flags for control histograms for events TBI
320  Bool_t fFillControlHistogramsEvent; // fill or not control histograms for global event observables
321  TH1I *fGetNumberOfTracksHist; // a{AOD,MC}->GetNumberOfTracks()
322  TH1I *fGetNumberOfGlobalTracksHist; // fGlobalTracksAOD[0]->GetSize() this is then my multiplicity...
323  TH1I *fGetNumberOfV0sHist; // aAOD->GetNumberOfV0s()
324  TH1I *fGetNumberOfCascadesHist; // aAOD->GetNumberOfCascades()
325  TH1D *fGetMagneticFieldHist; // aAOD->GetMagneticField()
326  TH1I *fGetEventTypeHist; // aAOD->GetEventType()
327  TH1D *fGetCentralityHist; // aAOD->GetCentrality()
328 
329  TH1F *fVertexXYZ[3];
330  TH1I *fGetNContributorsHist; // avtx->GetNContributors()
331  TH1F *fGetChi2perNDFHist; // avtx->GetChi2perNDF();
332  TH1I *fGetNDaughtersHist; // avtx->GetNDaughters();
333 
334  // 1b) Non-identified particles (for AOD these are "normal global" tracks, i.e. the ones which satisfy atrack->GetID()>=0 ):
335  TList *fControlHistogramsNonIdentifiedParticlesList; // list to hold all 'control histograms' for non-identified particles
336  TProfile *fControlHistogramsNonIdentifiedParticlesFlagsPro; // profile to hold all flags for control histograms for non-identified particles
337  Bool_t fFillControlHistogramsNonIdentifiedParticles; // fill or not control histograms for non-identified particles
338  TH1I *fChargeHist; // atrack->Charge()
339  TH1I *fGetTPCNclsHist; // atrack->GetTPCNcls()
340  TH1I *fGetTPCsignalNHist; // atrack->GetTPCsignalN()
341  TH1I *fGetITSNclsHist; // atrack->GetITSNcls()
342  TH2F *fdEdxVsPtHist; // atrack->GetTPCmomentum(),atrack->GetTPCsignal()
343  TH1F *fPtHist; // atrack->Pt()
344  TH1F *fEtaHist; // atrack->Eta()
345  TH1F *fPhiHist; // atrack->Phi()
346  TH1F *fMassHist; // atrack->M()
347  TH1I *fGetFilterMap; // atrack->GetFilterMap()
348  TH1I *fGetPdgCode; // atrack->GetPdgCode()
349 
350  // 1c) Non-identified particles for the specified filterbit (f.t.s.f.) (by default TPC-only):
351  TList *fControlHistogramsNonIdentifiedParticlesFTSFList; // list to hold all 'control histograms' for non-identified particles
352  TProfile *fControlHistogramsNonIdentifiedParticlesFTSFFlagsPro; // profile to hold all flags for control histograms for non-identified particles
353  Bool_t fFillControlHistogramsNonIdentifiedParticlesFTSF; // fill or not control histograms for non-identified particles
354  Int_t fFilterBitFTSF; // filter bit, relevant only for these group of control histos. For the particle selection, there is another flag
355  TH1I *fChargeFTSFHist; // atrack->Charge()
356  TH1I *fGetTPCNclsFTSFHist; // atrack->GetTPCNcls()
357  TH1I *fGetTPCsignalNFTSFHist; // atrack->GetTPCsignalN()
358  TH1I *fGetITSNclsFTSFHist; // atrack->GetITSNcls()
359  TH2F *fdEdxVsPtFTSFHist; // atrack->GetTPCmomentum(),atrack->GetTPCsignal()
360  TH1F *fPtFTSFHist; // atrack->Pt()
361  TH1F *fEtaFTSFHist; // atrack->Eta()
362  TH1F *fPhiFTSFHist; // atrack->Phi()
363  TH1F *fMassFTSFHist; // atrack->M()
364  TH1I *fGetFilterMapFTSF; // atrack->GetFilterMap()
365  TH1I *fGetPdgCodeFTSF; // atrack->GetPdgCode()
366 
367  // 1d) Identified particles:
368  TList *fControlHistogramsIdentifiedParticlesList; // list to hold all 'control histograms' for identified particles
369  TProfile *fControlHistogramsIdentifiedParticlesFlagsPro; // profile to hold all flags for control histograms for identified particles
370  Bool_t fFillControlHistogramsIdentifiedParticles; // fill or not control histograms for identified particles (by default they are not filled)
371  TH1F *fMassPIDHist[5][2][2];
372  TH1F *fPtPIDHist[5][2][2];
373  TH1F *fEtaPIDHist[5][2][2];
374  TH1F *fPhiPIDHist[5][2][2];
377 
378  // ...
379  // 1e) V0s:
380  TList *fControlHistogramsV0sList; // list to hold all 'control histograms' for V0s
381  TProfile *fControlHistogramsV0sFlagsPro; // profile to hold all flags for control histograms for V0s
382  Bool_t fFillControlHistogramsV0s; // fill or not control histograms for V0s (by default they are not filled)
383  TH1I *fGetNProngsHist; // aAODv0->GetNProngs()
384  TH1F *fMassK0ShortHist; // aAODv0->MassK0Short()
385  TH1F *fMassLambdaHist; // aAODv0->MassLambda()
386  TH1F *fMassAntiLambdaHist; // aAODv0->MassAntiLambda()
387  TH1F *fOpenAngleV0Hist; // aAODv0->OpenAngleV0() // same as aAODv0->ProngsRelAngle()
388  TH1F *fRadiusV0Hist; // aAODv0->RadiusV0()
389  TH1F *fDcaV0ToPrimVertexHist; // aAODv0->DcaV0ToPrimVertex()
390  TH1F *fMomV0XHist; // aAODv0->MomV0X()
391  TH1F *fMomV0YHist; // aAODv0->MomV0Y()
392  TH1F *fMomV0ZHist; // aAODv0->MomV0Z()
393  TH1F *fPtV0Hist; // pow(aAODv0->Pt2V0(),0.5)
394  TH1F *fPseudoRapV0Hist; // aAODv0->PseudoRapV0()
395  TH2F *fPAHist; // Pod.-Arm.
396 
397  // ...
398  // 1d) Cascades:
399  // ...
400 
401 
402  // 2.) Event-by-event objects:
403  TList *fEBEHistogramsList; // list to hold all stuff from e-b-e histograms
404  TProfile *fEBEObjectsFlagsPro; // profile to hold all flags for e-b-e histograms for V0s
405  //Bool_t fFillEBEHistograms; // fill or not e-b-e histograms TBI do I really need this?
406  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
407  TClonesArray *fPIDCA[5][2][2];
408  TClonesArray *fPIDV0sCA[1];
409 
410  // 3.) Correlation functions:
411  TList *fCorrelationFunctionsList; // list to hold all correlation functions for primary particle
412  TProfile *fCorrelationFunctionsFlagsPro; // profile to hold all flags for correlation functions
413  Bool_t fFillCorrelationFunctions; // fill or not correlation functions (by default they are not filled)
414  Bool_t fNormalizeCorrelationFunctions; // normalize correlation functions with the background
415  TExMap *fCorrelationFunctionsIndices; // associates pdg code to index of correlation function
416  TH1F *fCorrelationFunctions[10][10];
417  Bool_t fFill3pCorrelationFunctions; // fill 3-p correlation functions
418  TH1F *f3pCorrelationFunctions[10][10][10];
419  Bool_t fFill4pCorrelationFunctions; // fill 4-p correlation functions
420  TH1F *f4pCorrelationFunctions[10][10][10][10];
421 
422  // 4.) Background:
423  TList *fBackgroundList; // list to hold all correlation functions for primary particle
424  TProfile *fBackgroundFlagsPro; // profile to hold all flags for correlation functions
425  Bool_t fEstimate2pBackground; // enable or not 2p background estimation
426  Bool_t fEstimate3pBackground; // enable or not 3p background estimation
427  Bool_t fEstimate4pBackground; // enable or not 4p background estimation
428  TH1F *fBackground[10][10];
429  TH1F *f3pBackground[10][10][10];
430  TH1F *f4pBackground[10][10][10][10];
431  TClonesArray *fMixedEvents[4];
432 
433  // 5.) Buffers:
434  TList *fBuffersList; // list to hold all objects for buffers
435  TProfile *fBuffersFlagsPro; // profile to hold all flags for buffers
436  Bool_t fFillBuffers; // hold some thingies for bunch of events in memories
437  Int_t fMaxBuffer; // max buffer size (e.g. for 3-p correlations it is 3, etc.)
438  TClonesArray *fChargedParticlesCA[2][10][10000]; // [0=AOD||ESD,1=MC][#events,max=10][particles]
439  TExMap *fChargedParticlesEM[10]; // [#events,max=10,has to correspond to 2nd entry above] this is standard mapping, nothing more nor less than that...
440 
441  // 6.) QA:
442  TList *fQAList; // list to holds all QA objects. It is nested in: a) "QA events"; b) "QA particles"; c) ...
443  TProfile *fQAFlagsPro; // list to holds all flags for QA objects
444  Bool_t fFillQA; // fill QA objects. Not set directly, but instead via: fFillQA = fFillQAEvents || fFillQAParticles || ...
445  Bool_t fBailOutAfterQA; // fill QA objects and bail out, i.e. do not do the actual analysis
446  Bool_t fFillQAEvents; // fill two sets of histograms, before and after event cuts
447  Bool_t fFillQAParticles; // fill two sets of histograms, before and after particle cuts
448  TList *fQAEventsList; // list to holds all objects for "QA events"
449  TList *fQAParticlesList; // list to holds all objects for "QA particles"
450  TH1I *fQAFilterBitScan; // for each track in AOD, dump it's filterbits
451  TH2I *fQAIDvsFilterBit; // atrack->ID() vs. filterbit
452  TH1F *fQAParticleHist[2][10][10]; // [0="before rain",1="after rain"][distribution_index][cut_index]
453 
454  // 7.) Common event cuts (TBI validated only for AOD analysis, for the time being...):
455  // a) Cuts on AliAODEvent:
456  Bool_t fRejectEventsWithoutPrimaryVertex; // as the name says it, by default set to kTRUE. has a setter
457  Float_t fMinMagneticField; // defaulted to 0.001, compared to aAOD->GetMagneticField()
458  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
459  Int_t fMinNumberOfTracks; // default values never in effect; if aAOD->GetNumberOfTracks() < fMinNumberOfTracks, event is rejected
460  Int_t fMaxNumberOfTracks; // default values never in effect; if aAOD->GetNumberOfTracks() > fMaxNumberOfTracks, event is rejected
461  Bool_t fCutOnNumberOfGlobalTracks; // cut on the total number of 'normal' global tracks in AOD, i.e. on fGlobalTracksAOD[0]->GetSize()
462  Int_t fMinNumberOfGlobalTracks; // default values never in effect; if fGlobalTracksAOD[0]->GetSize() < fMinNumberOfGlobalTracks, event is rejected
463  Int_t fMaxNumberOfGlobalTracks; // default values never in effect; if fGlobalTracksAOD[0]->GetSize() > fMaxNumberOfGlobalTracks, event is rejected
464  Bool_t fCutOnNumberOfV0s; // cut on the total number of V0s in AOD, i.e. on aAOD->GetNumberOfV0s()
465  Int_t fMinNumberOfV0s; // default values never in effect; if aAOD->GetNumberOfV0s() < fMinNumberOfV0s, event is rejected
466  Int_t fMaxNumberOfV0s; // default values never in effect; if aAOD->GetNumberOfV0s() > fMaxNumberOfV0s, event is rejected
467  Bool_t fCutOnNumberOfCascades; // cut on the total number of cascades in AOD, i.e. on aAOD->GetNumberOfCascades()
468  Int_t fMinNumberOfCascades; // default values never in effect; if aAOD->GetNumberOfCascades() < fMinNumberOfCascades, event is rejected
469  Int_t fMaxNumberOfCascades; // default values never in effect; if aAOD->GetNumberOfCascades() > fMaxNumberOfCascades, event is rejected
470 
471  // b) Cuts on AliAODVertex:
472  Bool_t fCutOnVertexX; // cut on the x position of vertex, i.e. on avtx->GetX()
473  Float_t fMinVertexX; // default values never in effect; if avtx->GetX() < fMinVertexX, event is rejected
474  Float_t fMaxVertexX; // default values never in effect; if avtx->GetX() > fMaxVertexX, event is rejected
475  Bool_t fCutOnVertexY; // cut on the y position of vertex, i.e. on avtx->GetY()
476  Float_t fMinVertexY; // default values never in effect; if avtx->GetY() < fMinVertexY, event is rejected
477  Float_t fMaxVertexY; // default values never in effect; if avtx->GetY() > fMaxVertexY, event is rejected
478  Bool_t fCutOnVertexZ; // cut on the z position of vertex, i.e. on avtx->GetZ()
479  Float_t fMinVertexZ; // default values never in effect; if avtx->GetZ() < fMinVertexZ, event is rejected
480  Float_t fMaxVertexZ; // default values never in effect; if avtx->GetZ() > fMaxVertexZ, event is rejected
481  Bool_t fCutOnNContributors; // cut on avtx->GetNContributors()
482  Int_t fMinNContributors; // default values never in effect; if avtx->GetNContributors() < fMinNContributors, event is rejected
483  Int_t fMaxNContributors; // default values never in effect; if avtx->GetNContributors() > fMaxNContributors, event is rejected
484 
485  // *.) Online monitoring:
486  Bool_t fOnlineMonitoring; // enable online monitoring (not set excplicitly!), the flags below just refine it
487  Bool_t fUpdateOutputFile; // update the output file after certain number of analysed events
488  Int_t fUpdateFrequency; // after how many events the output file will be updated
489  TString *fUpdateWhichOutputFile; // which file will be regularly updated
490  Int_t fMaxNumberOfEvents; // if this number of events is reached, write to external file and bail out
491 
492  // *.) Debugging:
499 
501 
502 };
503 
504 //================================================================================================================
505 
506 #endif
507 
508 
509 
510 
511 
512 
513 
514 
515 
516 
517 
Int_t charge
double Double_t
Definition: External.C:58
ClassDef(AliAnalysisTaskMultiparticleFemtoscopy, 8)
do something only for the specified event
Definition: External.C:236
TList * fCorrelationFunctionsList
holds AliAODv0 candidates for each event [0=Lambda,1=...]
UInt_t fOrbit
do something only for the specified event
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]
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]
void SetNumberOfGlobalTracks(Int_t minnofgt, Int_t maxnofgt)
Bool_t SpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
void SetWaitForSpecifiedEvent(UInt_t run, UShort_t bunchCross, UInt_t orbit, UInt_t period)
Bool_t Proton(AliAODTrack *atrack, Int_t charge=1, Bool_t bPrimary=kTRUE)
virtual void CalculateBackground(TClonesArray *ca1, TClonesArray *ca2)
UInt_t fRun
do something only for the specified event
void SetMaxNumberOfEvents(const Int_t mnof, const char *uqof)
TList * fBuffersList
tracks for mixed events (supporting up to 4-mixed events at the moment)
void SetUpdateOutputFile(const Int_t uf, const char *uqof)
int Int_t
Definition: External.C:63
Definition: External.C:204
unsigned int UInt_t
Definition: External.C:33
float Float_t
Definition: External.C:68
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)
TList * fBackgroundList
[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 [...
Definition: External.C:212
Bool_t Pion(AliAODTrack *atrack, Int_t charge=1, Bool_t bPrimary=kTRUE)
Double_t Q4(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3, AliAODTrack *agtrack4)
UShort_t fBunchCross
do something only for the specified event
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)
virtual void Calculate3pBackground(TClonesArray *ca1, TClonesArray *ca2, TClonesArray *ca3)
TClonesArray * fMixedEvents[4]
[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 FillControlHistogramsNonIdentifiedParticles(AliAODTrack *atrack)
Double_t Q3(AliAODTrack *agtrack1, AliAODTrack *agtrack2, AliAODTrack *agtrack3)
Bool_t fProcessBothKineAndReco
global tracks in AOD. [0] is used in the default analysis, [1] and [2] for event mixing, etc.
UInt_t fPeriod
do something only for the specified event
Double_t fInclusiveSigmaCuts[5]
[0=e,1=mu,2=pi,3=K,4=p][particle(+q)/antiparticle(-q)][kPrimary/kFromDecayVtx]
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
TList * fControlHistogramsV0sList
[PID function][PID exclusive] see .cxx for detailed documentation
const char Option_t
Definition: External.C:48
Bool_t fWaitForSpecifiedEvent
enable call to function within which debugging is done. Set indirectly.
bool Bool_t
Definition: External.C:53
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]...
TH1I * fGetNContributorsHist
[avtx->GetX(),avtx->GetY(),avtx->GetZ()]
Double_t fExclusiveSigmaCuts[5][5]
[PID function] see .cxx for detailed documentation
virtual void FillControlHistogramsNonIdentifiedParticlesFTSF(AliAODTrack *atrack)