AliPhysics  7c9d977 (7c9d977)
AliAnalysisTaskCheckEvSel.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-2018, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 /* $Id: $ */
17 
18 //*************************************************************************
19 // Class AliAnalysisTaskCheckEvSel
20 // Task to check event selection with D2H code
21 // Author: Francesco Prino
22 //*************************************************************************
23 
24 
25 #include <TList.h>
26 #include <TH1F.h>
27 #include <TH2F.h>
28 
29 #include "AliAnalysisManager.h"
30 #include "AliInputEventHandler.h"
31 #include "AliPIDResponse.h"
32 #include "AliAODHandler.h"
33 #include "AliAODEvent.h"
34 #include "AliVVertex.h"
35 #include "AliAODTrack.h"
36 #include "AliVertexingHFUtils.h"
38 #include "AliRDHFCutsD0toKpi.h"
40 
42 
43 
44 //________________________________________________________________________
47  fOutput(0x0),
48  fReadMC(kFALSE),
49  fSystem(0),
50  fCutOnzVertexSPD(0),
51  fAODProtection(1),
52  fHistNEvents(0x0),
53  fHistNEventsVsCent(0x0),
54  fHistNEventsVsCL1(0x0),
55  fHistNEventsVsWhyRej(0x0),
56  fHistNTrackletsBeforePileup(0x0),
57  fHistNTrackletsAfterPileup(0x0),
58  fHistNCL1BeforePileup(0x0),
59  fHistNCL1AfterPileup(0x0),
60  fHistCentrality(0x0),
61  fHistNTracksTPCoutVsV0Cent(0x0),
62  fHistNTracksFB4VsV0Cent(0x0),
63  fHistNTracksBC0VsV0Cent(0x0),
64  fHistNTrackletsVsV0Cent(0x0),
65  fHistNTracksTPCoutVsNTracklets(0x0),
66  fHistNTracksFB4VsNTracklets(0x0),
67  fHistNTracksBC0VsNTracksFB4(0x0),
68  fHistZVertexSPDBeforeCuts(0x0),
69  fHistZVertexSPDBeforeSPDCut(0x0),
70  fHistZVertexSPDAfterCuts(0x0),
71  fHistZVertexSPDBadTrackVert(0x0),
72  fNtupleZvtxDistVsWhyRej(0x0),
73  fEnableVertexNtuple(kFALSE),
74  fCounter(0),
75  fAnalysisCuts(0x0)
76 {
77  // default constructor
78  fAnalysisCuts=new AliRDHFCutsD0toKpi("EvSelCuts");
79  fAnalysisCuts->SetTriggerMask(AliVEvent::kMB | AliVEvent::kINT7);
80  fAnalysisCuts->SetTriggerClass("");
81  fAnalysisCuts->SetOptPileup(AliRDHFCuts::kNoPileupSelection);
82 }
83 //________________________________________________________________________
85  AliAnalysisTaskSE("EvSelTask"),
86  fOutput(0x0),
87  fReadMC(readMC),
88  fSystem(system),
89  fCutOnzVertexSPD(0),
90  fAODProtection(1),
91  fHistNEvents(0x0),
92  fHistNEventsVsCent(0x0),
93  fHistNEventsVsCL1(0x0),
94  fHistNEventsVsWhyRej(0x0),
95  fHistNTrackletsBeforePileup(0x0),
96  fHistNTrackletsAfterPileup(0x0),
97  fHistNCL1BeforePileup(0x0),
98  fHistNCL1AfterPileup(0x0),
99  fHistCentrality(0x0),
100  fHistNTracksTPCoutVsV0Cent(0x0),
101  fHistNTracksFB4VsV0Cent(0x0),
102  fHistNTracksBC0VsV0Cent(0x0),
103  fHistNTrackletsVsV0Cent(0x0),
104  fHistNTracksTPCoutVsNTracklets(0x0),
105  fHistNTracksFB4VsNTracklets(0x0),
106  fHistNTracksBC0VsNTracksFB4(0x0),
107  fHistZVertexSPDBeforeCuts(0x0),
108  fHistZVertexSPDBeforeSPDCut(0x0),
109  fHistZVertexSPDAfterCuts(0x0),
110  fHistZVertexSPDBadTrackVert(0x0),
111  fNtupleZvtxDistVsWhyRej(0x0),
112  fEnableVertexNtuple(kFALSE),
113  fCounter(0),
114  fAnalysisCuts(cuts)
115 {
116  // default constructor
117 
118  DefineOutput(1,TList::Class()); //My private output
119  DefineOutput(2,AliNormalizationCounter::Class());
121  // Output slot #3 writes into a TNtuple container
122  DefineOutput(3,TNtuple::Class()); //My private output
123  }
124 }
125 
126 //________________________________________________________________________
128 {
129  //
130  // Destructor
131  //
132  if(fOutput && !fOutput->IsOwner()){
133  delete fHistNEvents;
134  delete fHistNEventsVsCent;
135  delete fHistNEventsVsCL1;
136  delete fHistNEventsVsWhyRej;
139  delete fHistNCL1BeforePileup;
140  delete fHistNCL1AfterPileup;
141  delete fHistCentrality;
151  delete fHistZVertexSPDAfterCuts;
153  }
154  delete fOutput;
155  delete fCounter;
157 }
158 
159 //________________________________________________________________________
161 {
162  // Create the output container
163  //
164  if(fDebug > 1) printf("AnalysisTaskCheckEvSel::UserCreateOutputObjects() \n");
165 
166  Double_t maxMult=200.;
167  if(fSystem==1) maxMult=5000.;
168  else if(fSystem==2) maxMult=500.;
169 
170  fOutput = new TList();
171  fOutput->SetOwner();
172  fOutput->SetName("OutputHistos");
173 
174  fHistNEvents = new TH1F("hNEvents", "number of events ",18,-0.5,17.5);
175  ConfigureEvSelAxis(fHistNEvents->GetXaxis());
176  fHistNEvents->SetMinimum(0);
177  fOutput->Add(fHistNEvents);
178 
179  fHistNEventsVsCent = new TH2F("hNEventsVsCent", " ; ; Centrality ",18,-0.5,17.5,101,0.,101.);
182 
183  fHistNEventsVsCL1 = new TH2F("hNEventsVsCL1", " ; ; N_{CL1}",18,-0.5,17.5,200,-0.5,2*maxMult-0.5);
186 
187  fHistNEventsVsWhyRej = new TH2F("hNEventsVsWhyRej", " ; ; WhyRej ",18,-0.5,17.5,11,-0.5,10.5);
190 
191  fHistNTrackletsBeforePileup = new TH1F("hNTrackletsBeforePileup"," ; N_{tracklets}",200,-0.5,maxMult-0.5);
192  fHistNTrackletsAfterPileup = new TH1F("hNTrackletsAfterPileup"," ; N_{tracklets}",200,-0.5,maxMult-0.5);
193  fHistNCL1BeforePileup = new TH1F("hNCL1BeforePileup"," ; N_{CL1}",200,-0.5,maxMult-0.5);
194  fHistNCL1AfterPileup = new TH1F("hNCL1AfterPileup"," ; N_{CL1}",200,-0.5,maxMult-0.5);
199 
200  fHistCentrality = new TH1F("hCentrality"," ; Centrality ; ",105,0.,105.);
201  fOutput->Add(fHistCentrality);
202 
203  fHistNTracksTPCoutVsV0Cent = new TH2F("hNTracksTPCoutVsV0Cent"," ; Centrality ; N_{tracks, TPCout}",105,0.,105.,200,-0.5,2*maxMult-0.5);
204  fHistNTracksFB4VsV0Cent = new TH2F("hNTracksFB4VsV0Cent"," ; Centrality ; N_{tracks, FiltBit4}",105,0.,105.,200,-0.5,maxMult-0.5);
205  fHistNTracksBC0VsV0Cent = new TH2F("hNTracksBC0VsV0Cent"," ; Centrality ; N_{tracks, TOFBC=0}",105,0.,105.,200,-0.5,maxMult-0.5);
206  fHistNTrackletsVsV0Cent = new TH2F("hNTrackletsVsV0Cent"," ; Centrality ; N_{tracklets}",105,0.,105.,200,-0.5,maxMult-0.5);
207  fHistNTracksTPCoutVsNTracklets = new TH2F("hNTracksTPCoutVsNTracklets"," ; N_{tracklets} ; N_{tracks, TPCout}",200,-0.5,maxMult-0.5,200,-0.5,2*maxMult-0.5);
208  fHistNTracksFB4VsNTracklets = new TH2F("hNTracksFB4VsNTracklets"," ; N_{tracklets} ; N_{tracks, FiltBit4}",200,-0.5,maxMult-0.5,200,-0.5,maxMult-0.5);
209  fHistNTracksBC0VsNTracksFB4 = new TH2F("hNTracksBC0VsNTracksFB4"," ; N_{tracks, FiltBit4}; N_{tracks, TOFBC=0}",200,-0.5,maxMult-0.5,200,-0.5,maxMult-0.5);
217 
218  fHistZVertexSPDBeforeCuts = new TH2F("hZVertexSPDBeforeCuts"," ; z_{SPDvertex} ; z_{TRKvertex}",400,-20.,20.,400,-20.,20.);
220  fHistZVertexSPDBeforeSPDCut = new TH2F("hZVertexSPDBeforeSPDCut"," ; z_{SPDvertex} ; z_{TRKvertex}",400,-20.,20.,400,-20.,20.);
222  fHistZVertexSPDAfterCuts = new TH2F("hZVertexSPDAfterCuts"," ; z_{SPDvertex} ; z_{TRKvertex}",400,-20.,20.,400,-20.,20.);
224  fHistZVertexSPDBadTrackVert =new TH2F("hZVertexSPDBadTrackVert"," ; z_{SPDvertex} ; z_{TRKvertex}",400,-20.,20.,400,-20.,20.);
226 
227  TString normName="NormalizationCounter";
228  AliAnalysisDataContainer *cont = GetOutputSlot(2)->GetContainer();
229  if(cont)normName=(TString)cont->GetName();
230  fCounter = new AliNormalizationCounter(normName.Data());
231  fCounter->Init();
232 
233  PostData(1,fOutput);
234 
235  if(fEnableVertexNtuple) {
236  OpenFile(3); // 3 is the slot number of the ntuple
237 
238  fNtupleZvtxDistVsWhyRej = new TNtuple("fNtupleZvtxDistVsWhyRej","fNtupleZvtxDistVsWhyRej","zSPDvertex:zTRKvertex:NcontributorszSPD:NcontributorszTRK:whyrejection:vtxtype");
239  }
240 }
241 
242 //________________________________________________________________________
246  ax->SetBinLabel(1,"nEvents read");
247  ax->SetBinLabel(2,"Rejected due to mismatch in trees");
248  ax->SetBinLabel(3,"nEvents with good AOD");
249  ax->SetBinLabel(4,"Rejected due to trigger");
250  ax->SetBinLabel(5,"Rejected due to phys sel");
251  ax->SetBinLabel(6,"Rejected due to bad centrality estimator");
252  ax->SetBinLabel(7,"Rejected due to centrality flattening");
253  ax->SetBinLabel(8,"Rejected due to centrality out of range");
254  ax->SetBinLabel(9,"Rejected due to not reco vertex");
255  ax->SetBinLabel(10,"Rejected for contr vertex");
256  ax->SetBinLabel(11,"Rejected for bad track vertex");
257  ax->SetBinLabel(12,"Rejected for vertex out of accept");
258  ax->SetBinLabel(13,"Rejected for pileup events");
259  ax->SetBinLabel(14,"Passing Phys sel + trigger");
260  ax->SetBinLabel(15,"Passing Phys sel + trigger + Pileup");
261  ax->SetBinLabel(16,"Passing Phys sel + trigger + Pileup + zVertex");
262  ax->SetBinLabel(17,"Passing Phys sel + trigger + Pileup + zVertex + Centrality");
263  ax->SetBinLabel(18,"Passing IsEventSelected");
264  ax->SetNdivisions(1,kFALSE);
265 }
266 //________________________________________________________________________
268  //Build the 3-track combinatorics (+-+ and -+-) for D+->Kpipi decays
269 
270  if(fDebug > 1) printf("AnalysisTaskCheckEvSel::UserExec() \n");
271  AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
272 
273  fHistNEvents->Fill(0); // count event
274 
275  if(fAODProtection>=0){
276  // Protection against different number of events in the AOD and deltaAOD
277  // In case of discrepancy the event is rejected.
278  Int_t matchingAODdeltaAODlevel = AliRDHFCuts::CheckMatchingAODdeltaAODevents();
279  if (matchingAODdeltaAODlevel<0 || (matchingAODdeltaAODlevel==0 && fAODProtection==1)) {
280  // AOD/deltaAOD trees have different number of entries || TProcessID do not match while it was required
281  fHistNEvents->Fill(1);
282  return;
283  }
284  }
285 
286  if(!aod && AODEvent() && IsStandardAOD()) {
287  // In case there is an AOD handler writing a standard AOD, use the AOD
288  // event in memory rather than the input (ESD) event.
289  aod = dynamic_cast<AliAODEvent*> (AODEvent());
290  }
291  if(!aod){
292  printf("AliAnalysisTaskCheckEvSel::UserExec: AOD not found!\n");
293  return;
294  }
295 
296  // fix for temporary bug in ESDfilter
297  // the AODs with null vertex pointer didn't pass the PhysSel
298  if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001) return;
299 
300 
301  // Post the data already here
302 
303  Bool_t isEvSel=fAnalysisCuts->IsEventSelected(aod);
306  const AliVVertex *vertex = aod->GetPrimaryVertex();
307  const AliVVertex *vertexSPD = aod->GetPrimaryVertexSPD();
309  Double_t ncl1 = aod->GetNumberOfITSClusters(1);
310  Double_t zvSPD=vertexSPD->GetZ();
311  Double_t zvTRK=vertex->GetZ();
312 
313  if(fEnableVertexNtuple) {
314  Float_t wrej4ntuple = (Float_t)wrej;
315  if(isEvSel) wrej4ntuple = -1;
316  Float_t vertextype=0;
317  if(vertex) {
318  TString vertextitle = vertex->GetTitle();
319  //Vtx tracks
320  if(vertextitle.Contains("VertexerTracks")) vertextype=3;
321  //vtx SPD
322  else if(vertextitle.Contains("Z")) vertextype=1;
323  else if(vertextitle.Contains("3D")) vertextype=2;
324  }
325 
326  Float_t vec4ntuple[6] = {(Float_t)zvSPD,(Float_t)zvTRK,(Float_t)vertexSPD->GetNContributors(),(Float_t)vertex->GetNContributors(),wrej4ntuple,vertextype};
327  fNtupleZvtxDistVsWhyRej->Fill(vec4ntuple);
328  PostData(3,fNtupleZvtxDistVsWhyRej);
329  }
330 
340 
341  fHistZVertexSPDBeforeCuts->Fill(zvSPD,zvTRK);
346  vertexSPD->GetNContributors()>=1){
347  fHistZVertexSPDBeforeSPDCut->Fill(zvSPD,zvTRK);
348  Double_t dz = vertexSPD->GetZ()-vertex->GetZ();
349  Bool_t okSpdTrk=kTRUE;
350  if(fCutOnzVertexSPD==2 && TMath::Abs(dz)>0.5) okSpdTrk=kFALSE;
351  if(okSpdTrk && fCutOnzVertexSPD==3){
352  double covTrc[6],covSPD[6];
353  vertex->GetCovarianceMatrix(covTrc);
354  vertexSPD->GetCovarianceMatrix(covSPD);
355  double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
356  double errTrc = TMath::Sqrt(covTrc[5]);
357  double nsigTot = TMath::Abs(dz)/errTot, nsigTrc = TMath::Abs(dz)/errTrc;
358  if (TMath::Abs(dz)>0.2 || nsigTot>10 || nsigTrc>20) okSpdTrk=kFALSE;
359  }
360  if(!okSpdTrk) fHistZVertexSPDBadTrackVert->Fill(zvSPD,zvTRK);
361  }
362  if(isEvSel) fHistZVertexSPDAfterCuts->Fill(zvSPD,zvTRK);
363 
364  fHistNEvents->Fill(2);
365  fHistNEventsVsCent->Fill(2,centr);
366  fHistNEventsVsCL1->Fill(2,ncl1);
367 
368  Int_t binToFill=-1;
370  if(fAnalysisCuts->IsEventRejectedDueToTrigger()) binToFill=3;
372  }else{
374  if(wrej==3) binToFill=5;
375  else if(wrej==4) binToFill=6;
376  else binToFill=7;
377  }else{
382  }else{
384  else if(fAnalysisCuts->IsEventRejectedDueToPileup()) binToFill=12;
385  }
386  }
387  }
388  if(binToFill>0){
389  fHistNEvents->Fill(binToFill);
390  fHistNEventsVsCent->Fill(binToFill,centr);
391  fHistNEventsVsCL1->Fill(binToFill,ncl1);
392  }
394  fHistNEvents->Fill(13);
395  fHistNEventsVsCent->Fill(13,centr);
396  fHistNEventsVsCL1->Fill(13,ncl1);
397  fHistNEventsVsWhyRej->Fill(13,wrej);
399  fHistNEvents->Fill(14);
400  fHistNEventsVsCent->Fill(14,centr);
401  fHistNEventsVsCL1->Fill(14,ncl1);
402  fHistNEventsVsWhyRej->Fill(14,wrej);
404  fHistNEvents->Fill(15);
405  fHistNEventsVsCent->Fill(15,centr);
406  fHistNEventsVsCL1->Fill(15,ncl1);
407  fHistNEventsVsWhyRej->Fill(15,wrej);
409  fHistNEvents->Fill(16);
410  fHistNEventsVsCent->Fill(16,centr);
411  fHistNEventsVsCL1->Fill(16,ncl1);
412  fHistNEventsVsWhyRej->Fill(16,wrej);
413  }
414  }
415  }
416  }
417  if(isEvSel || (!isEvSel && wrej==1)){
418  fHistNTrackletsBeforePileup->Fill(ntrkl);
419  fHistNCL1BeforePileup->Fill(ncl1);
420  }
421  if(isEvSel){
422  fHistNEvents->Fill(17);
423  fHistNEventsVsCent->Fill(17,centr);
424  fHistNEventsVsCL1->Fill(17,ncl1);
425  fHistNEventsVsWhyRej->Fill(17,wrej);
426  fHistNTrackletsAfterPileup->Fill(ntrkl);
427  fHistNCL1AfterPileup->Fill(ncl1);
428  }
429 
431  // events not passing the centrality selection can be removed immediately. For the others we must count the generated D mesons
433 
434  if(isEvSel){
435 
436  Int_t ntracksTPCout=0;
437  Int_t ntracksFB4=0;
438  Int_t ntracksBC0=0;
439 
440  Double_t magField = aod->GetMagneticField();
441 
442  for(Int_t iTr=0; iTr<aod->GetNumberOfTracks(); iTr++){
443  AliAODTrack* track=dynamic_cast<AliAODTrack*>(aod->GetTrack(iTr));
444 
445  if(track->GetStatus() & AliESDtrack::kTPCout) ntracksTPCout++;
446  if(track->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)){
447  ntracksFB4++;
448  Int_t tofBC=track->GetTOFBunchCrossing(magField);
449  if(tofBC==0) ntracksBC0++;
450  }
451  }
452  fHistCentrality->Fill(centr);
453  fHistNTracksTPCoutVsV0Cent->Fill(centr,ntracksTPCout);
454  fHistNTracksFB4VsV0Cent->Fill(centr,ntracksFB4);
455  fHistNTracksBC0VsV0Cent->Fill(centr,ntracksBC0);
456  fHistNTrackletsVsV0Cent->Fill(centr,ntrkl);
457  fHistNTracksTPCoutVsNTracklets->Fill(ntracksTPCout,ntrkl);
458  fHistNTracksFB4VsNTracklets->Fill(ntracksFB4,ntrkl);
459  fHistNTracksBC0VsNTracksFB4->Fill(ntracksBC0,ntracksFB4);
460  }
461 
462  PostData(1,fOutput);
463  PostData(2,fCounter);
464 
465  return;
466 }
467 
468 //_________________________________________________________________
470 {
471  // Terminate analysis
472  //
473  if(fDebug > 1) printf("AliAnalysisTaskCheckEvSel: Terminate() \n");
474  fOutput = dynamic_cast<TList*> (GetOutputData(1));
475  if (!fOutput) {
476  printf("ERROR: fOutput not available\n");
477  return;
478  }
479  fHistNEvents = dynamic_cast<TH1F*>(fOutput->FindObject("hNEvents"));
480  if(fHistNEvents){
481  printf("Number of analyzed events = %d\n",(Int_t)fHistNEvents->GetBinContent(2));
482  }else{
483  printf("ERROR: fHistNEvents not available\n");
484  return;
485  }
486  return;
487 }
488 
Bool_t IsEventRejectedDueToCentrality() const
Definition: AliRDHFCuts.h:335
Bool_t IsEventRejectedDueToZVertexOutsideFiducialRegion() const
Definition: AliRDHFCuts.h:329
Bool_t IsEventRejectedDueToNotRecoVertex() const
Definition: AliRDHFCuts.h:320
double Double_t
Definition: External.C:58
TH2F * fHistNTracksTPCoutVsV0Cent
! Centrality-multiplicity correl
Definition: External.C:236
TH1F * fHistCentrality
! hist. of centrality distribution
AliNormalizationCounter * fCounter
flag to enable ntuple for primary vertex studies
Int_t IsEventSelectedInCentrality(AliVEvent *event)
TH2F * fHistNTracksBC0VsNTracksFB4
! Centrality-multiplicity correl
static Int_t CheckMatchingAODdeltaAODevents()
Bool_t IsEventRejectedDueToVertexContributors() const
Definition: AliRDHFCuts.h:323
Int_t GetWhyRejection() const
Definition: AliRDHFCuts.h:315
TH2F * fHistNTrackletsVsV0Cent
! Centrality-multiplicity correl
TH2F * fHistNEventsVsCent
! hist. for No. of events
virtual void Terminate(Option_t *option)
TList * fOutput
! list send on output slot 0
TH2F * fHistNTracksTPCoutVsNTracklets
! Centrality-multiplicity correl
static Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent *ev, Double_t mineta, Double_t maxeta)
TH2F * fHistZVertexSPDBadTrackVert
! z-vertex distr.
TH1F * fHistNEvents
! hist. for No. of events
TH2F * fHistNEventsVsWhyRej
! hist. for No. of events
int Int_t
Definition: External.C:63
float Float_t
Definition: External.C:68
TH2F * fHistZVertexSPDAfterCuts
! z-vertex distr.
Bool_t IsEventRejectedDueToBadTrackVertex() const
Definition: AliRDHFCuts.h:344
TH2F * fHistNTracksFB4VsV0Cent
! Centrality-multiplicity correl
virtual void UserExec(Option_t *option)
TNtuple * fNtupleZvtxDistVsWhyRej
! ntuple of ZvtxTRK vs. ZvtxSPD vs. Ncontributors vs. whyrej flag
Float_t GetCentrality(AliAODEvent *aodEvent)
Definition: AliRDHFCuts.h:258
Bool_t IsEventRejectedDueToPileup() const
Definition: AliRDHFCuts.h:332
TH1F * fHistNCL1BeforePileup
! hist. for No. of tracklets
TH2F * fHistNTracksBC0VsV0Cent
! Centrality-multiplicity correl
Bool_t IsEventRejectedDuePhysicsSelection() const
Definition: AliRDHFCuts.h:350
Int_t fAODProtection
cut on zSPD vertex to remove outliers in centrality vs. tracklets (0=no cut, 1= cut at 12 cm...
TH2F * fHistNTracksFB4VsNTracklets
! Centrality-multiplicity correl
Bool_t IsEventSelected(AliVEvent *event)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999, Double_t spherocity=-99.)
TH1F * fHistNTrackletsBeforePileup
! hist. for No. of tracklets
TH2F * fHistZVertexSPDBeforeSPDCut
! z-vertex distr.
TH2F * fHistNEventsVsCL1
! hist. for No. of events
TH1F * fHistNTrackletsAfterPileup
! hist. for No. of tracklets
const char Option_t
Definition: External.C:48
Bool_t IsEventRejectedDueToTrigger() const
Definition: AliRDHFCuts.h:317
bool Bool_t
Definition: External.C:53
TH1F * fHistNCL1AfterPileup
! hist. for No. of tracklets
Int_t GetUseCentrality() const
Definition: AliRDHFCuts.h:280
Int_t fCutOnzVertexSPD
0=pp, 1=Pb-Pb, 2=p-Pb
Bool_t IsEventRejectedDueToCentralityFlattening() const
Definition: AliRDHFCuts.h:338
Double_t maxMult
TList * OpenFile(const char *fname)
Definition: DrawAnaELoss.C:65
TH2F * fHistZVertexSPDBeforeCuts
! z-vertex distr.