AliPhysics  vAN-20150822 (d56cf94)
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
AliNormalizationCounter.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-2008, 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 AliNormalizationCounter
20 // Class to store the informations relevant for the normalization in the
21 // barrel for each run
22 // Authors: G. Ortona, ortona@to.infn.it
23 // D. Caffarri, davide.caffarri@pd.to.infn.it
24 // with many thanks to P. Pillot
26 
27 #include "AliLog.h"
29 #include <AliESDEvent.h>
30 #include <AliESDtrack.h>
31 #include <AliAODEvent.h>
32 #include <AliAODVZERO.h>
33 #include <AliVParticle.h>
34 #include <AliTriggerAnalysis.h>
35 #include <TH1F.h>
36 #include <TH2F.h>
37 #include <TList.h>
38 #include <TString.h>
39 #include <TCanvas.h>
40 #include <AliPhysicsSelection.h>
41 #include <AliMultiplicity.h>
42 
46 
47 //____________________________________________
49 TNamed(),
50 fCounters(),
51 fESD(kFALSE),
52 fMultiplicity(kFALSE),
53 fMultiplicityEtaRange(1.0),
54 fHistTrackFilterEvMult(0),
55 fHistTrackAnaEvMult(0),
56 fHistTrackFilterSpdMult(0),
57 fHistTrackAnaSpdMult(0)
58 {
59  // empty constructor
60 }
61 
62 //__________________________________________________
64 TNamed(name,name),
65 fCounters(name),
66 fESD(kFALSE),
67 fMultiplicity(kFALSE),
68 fMultiplicityEtaRange(1.0),
69 fHistTrackFilterEvMult(0),
70 fHistTrackAnaEvMult(0),
71 fHistTrackFilterSpdMult(0),
72 fHistTrackAnaSpdMult(0)
73 {
74  ;
75 }
76 
77 //______________________________________________
79 {
80  //destructor
84  }
86  delete fHistTrackAnaEvMult;
88  }
92  }
94  delete fHistTrackAnaSpdMult;
96  }
97 }
98 
99 //______________________________________________
101 {
102  //variables initialization
103  fCounters.AddRubric("Event","triggered/V0AND/PileUp/PbPbC0SMH-B-NOPF-ALLNOTRD/Candles0.3/PrimaryV/countForNorm/noPrimaryV/zvtxGT10/!V0A&Candle03/!V0A&PrimaryV/Candid(Filter)/Candid(Analysis)/NCandid(Filter)/NCandid(Analysis)");
104  if(fMultiplicity) fCounters.AddRubric("Multiplicity", 5000);
105  fCounters.AddRubric("Run", 1000000);
106  fCounters.Init();
107  fHistTrackFilterEvMult=new TH2F("FiltCandidvsTracksinEv","FiltCandidvsTracksinEv",10000,-0.5,9999.5,200,-0.5,199.5);
108  fHistTrackFilterEvMult->GetYaxis()->SetTitle("NCandidates");
109  fHistTrackFilterEvMult->GetXaxis()->SetTitle("NTracksinEvent");
110  fHistTrackAnaEvMult=new TH2F("AnaCandidvsTracksinEv","AnaCandidvsTracksinEv",10000,-0.5,9999.5,100,-0.5,99.5);
111  fHistTrackAnaEvMult->GetYaxis()->SetTitle("NCandidates");
112  fHistTrackAnaEvMult->GetXaxis()->SetTitle("NTracksinEvent");
113  fHistTrackFilterSpdMult=new TH2F("FilterCandidvsSpdMult","FilterCandidvsSpdMult",5000,-0.5,4999.5,200,-0.5,199.5);
114  fHistTrackFilterSpdMult->GetYaxis()->SetTitle("NCandidates");
115  fHistTrackFilterSpdMult->GetXaxis()->SetTitle("NSPDTracklets");
116  fHistTrackAnaSpdMult=new TH2F("AnaCandidvsSpdMult","AnaCandidvsSpdMult",5000,-0.5,4999.5,100,-0.5,99.5);
117  fHistTrackAnaSpdMult->GetYaxis()->SetTitle("NCandidates");
118  fHistTrackAnaSpdMult->GetXaxis()->SetTitle("NSPDTracklets");
119 }
120 
121 //______________________________________________
122 Long64_t AliNormalizationCounter::Merge(TCollection* list){
123  if (!list) return 0;
124  if (list->IsEmpty()) return 0;//(Long64_t)fCounters.Merge(list);
125 
126  TIter next(list);
127  const TObject* obj = 0x0;
128  while ((obj = next())) {
129 
130  // check that "obj" is an object of the class AliNormalizationCounter
131  const AliNormalizationCounter* counter = dynamic_cast<const AliNormalizationCounter*>(obj);
132  if (!counter) {
133  AliError(Form("object named %s is not AliNormalizationCounter! Skipping it.", counter->GetName()));
134  continue;
135  }
136 
137  Add(counter);
138 
139  }
140 
141  return (Long64_t)1;//(Long64_t)fCounters->GetEntries();
142 }
143 //_______________________________________
145  fCounters.Add(&(norm->fCounters));
150 }
151 //_______________________________________
152 /*
153 Stores the variables used for normalization as function of run number
154 returns kTRUE if the event is to be counted for normalization
155 (pass event selection cuts OR has no primary vertex)
156  */
157 void AliNormalizationCounter::StoreEvent(AliVEvent *event,AliRDHFCuts *rdCut,Bool_t mc, Int_t multiplicity){
158  //
159 
160  Bool_t isEventSelected = rdCut->IsEventSelected(event);
161 
162  // events not passing physics selection. do nothing
163  if(rdCut->IsEventRejectedDuePhysicsSelection()) return;
164 
165  Bool_t v0A=kFALSE;
166  Bool_t v0B=kFALSE;
167  Bool_t flag03=kFALSE;
168  Bool_t flagPV=kFALSE;
169 
170  //Run Number
171  Int_t runNumber = event->GetRunNumber();
172 
173  // Evaluate the multiplicity
174  if(multiplicity==-9999) Multiplicity(event);
175 
176  //Find CINT1B
177  AliESDEvent *eventESD = (AliESDEvent*)event;
178  if(!eventESD){AliError("ESD event not available");return;}
179  if(mc&&event->GetEventType() != 0)return;
180  //event must be either physics or MC
181  if(!(event->GetEventType() == 7||event->GetEventType() == 0))return;
182 
183  if(fMultiplicity)
184  fCounters.Count(Form("Event:triggered/Run:%d/Multiplicity:%d",runNumber,multiplicity));
185  else
186  fCounters.Count(Form("Event:triggered/Run:%d",runNumber));
187 
188  //Find V0AND
189  AliTriggerAnalysis trAn;
190  AliAODVZERO* aodV0 = (AliAODVZERO*)event->GetVZEROData();
191  Bool_t isPP2012 = kFALSE;
192  if(runNumber>=176326 && runNumber<=193766) isPP2012=kTRUE;
193  if(aodV0 && !isPP2012){
194  v0B = trAn.IsOfflineTriggerFired(eventESD , AliTriggerAnalysis::kV0C);
195  v0A = trAn.IsOfflineTriggerFired(eventESD , AliTriggerAnalysis::kV0A);
196  }
197  if(v0A&&v0B){
198  if(fMultiplicity)
199  fCounters.Count(Form("Event:V0AND/Run:%d/Multiplicity:%d",runNumber,multiplicity));
200  else
201  fCounters.Count(Form("Event:V0AND/Run:%d",runNumber));
202  }
203 
204  //FindPrimary vertex
205  // AliVVertex *vtrc = (AliVVertex*)event->GetPrimaryVertex();
206  // if(vtrc && vtrc->GetNContributors()>0){
207  // fCounters.Count(Form("Event:PrimaryV/Run:%d",runNumber));
208  // flagPV=kTRUE;
209  // }
210 
211  //trigger
212  AliAODEvent *eventAOD = (AliAODEvent*)event;
213  TString trigclass=eventAOD->GetFiredTriggerClasses();
214  if(trigclass.Contains("C0SMH-B-NOPF-ALLNOTRD")||trigclass.Contains("C0SMH-B-NOPF-ALL")){
215  if(fMultiplicity)
216  fCounters.Count(Form("Event:PbPbC0SMH-B-NOPF-ALLNOTRD/Run:%d/Multiplicity:%d",runNumber,multiplicity));
217  else
218  fCounters.Count(Form("Event:PbPbC0SMH-B-NOPF-ALLNOTRD/Run:%d",runNumber));
219  }
220 
221  //FindPrimary vertex
222  if(isEventSelected){
223  if(fMultiplicity)
224  fCounters.Count(Form("Event:PrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
225  else
226  fCounters.Count(Form("Event:PrimaryV/Run:%d",runNumber));
227  flagPV=kTRUE;
228  }else{
229  if(rdCut->GetWhyRejection()==0){
230  if(fMultiplicity)
231  fCounters.Count(Form("Event:noPrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
232  else
233  fCounters.Count(Form("Event:noPrimaryV/Run:%d",runNumber));
234  }
235  //find good vtx outside range
236  if(rdCut->GetWhyRejection()==6){
237  if(fMultiplicity) {
238  fCounters.Count(Form("Event:zvtxGT10/Run:%d/Multiplicity:%d",runNumber,multiplicity));
239  fCounters.Count(Form("Event:PrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
240  } else {
241  fCounters.Count(Form("Event:zvtxGT10/Run:%d",runNumber));
242  fCounters.Count(Form("Event:PrimaryV/Run:%d",runNumber));
243  }
244  flagPV=kTRUE;
245  }
246  if(rdCut->GetWhyRejection()==1){
247  if(fMultiplicity)
248  fCounters.Count(Form("Event:PileUp/Run:%d/Multiplicity:%d",runNumber,multiplicity));
249  else
250  fCounters.Count(Form("Event:PileUp/Run:%d",runNumber));
251  }
252  }
253  //to be counted for normalization
254  if(rdCut->CountEventForNormalization()){
255  if(fMultiplicity)
256  fCounters.Count(Form("Event:countForNorm/Run:%d/Multiplicity:%d",runNumber,multiplicity));
257  else
258  fCounters.Count(Form("Event:countForNorm/Run:%d",runNumber));
259  }
260 
261 
262  //Find Candle
263  Int_t trkEntries = (Int_t)event->GetNumberOfTracks();
264  for(Int_t i=0;i<trkEntries&&!flag03;i++){
265  AliAODTrack *track=(AliAODTrack*)event->GetTrack(i);
266  if((track->Pt()>0.3)&&(!flag03)){
267  if(fMultiplicity)
268  fCounters.Count(Form("Event:Candles0.3/Run:%d/Multiplicity:%d",runNumber,multiplicity));
269  else
270  fCounters.Count(Form("Event:Candles0.3/Run:%d",runNumber));
271  flag03=kTRUE;
272  break;
273  }
274  }
275 
276  if(!(v0A&&v0B)&&(flag03)){
277  if(fMultiplicity)
278  fCounters.Count(Form("Event:!V0A&Candle03/Run:%d/Multiplicity:%d",runNumber,multiplicity));
279  else
280  fCounters.Count(Form("Event:!V0A&Candle03/Run:%d",runNumber));
281  }
282  if(!(v0A&&v0B)&&flagPV){
283  if(fMultiplicity)
284  fCounters.Count(Form("Event:!V0A&PrimaryV/Run:%d/Multiplicity:%d",runNumber,multiplicity));
285  else
286  fCounters.Count(Form("Event:!V0A&PrimaryV/Run:%d",runNumber));
287  }
288 
289  return;
290 }
291 //_____________________________________________________________________
292 void AliNormalizationCounter::StoreCandidates(AliVEvent *event,Int_t nCand,Bool_t flagFilter){
293 
294  Int_t ntracks=event->GetNumberOfTracks();
295  if(flagFilter)fHistTrackFilterEvMult->Fill(ntracks,nCand);
296  else fHistTrackAnaEvMult->Fill(ntracks,nCand);
297  Int_t nSPD=0;
298  if(fESD){
299  AliESDEvent *ESDevent=(AliESDEvent*)event;
300  const AliMultiplicity *alimult = ESDevent->GetMultiplicity();
301  nSPD = alimult->GetNumberOfTracklets();
302 
303  }else{
304  AliAODEvent *aodEvent =(AliAODEvent*)event;
305  AliAODTracklets *trklets=aodEvent->GetTracklets();
306  nSPD = trklets->GetNumberOfTracklets();
307  }
308  if(flagFilter)fHistTrackFilterSpdMult->Fill(nSPD,nCand);
309  else fHistTrackAnaSpdMult->Fill(nSPD,nCand);
310 
311  Int_t runNumber = event->GetRunNumber();
312  Int_t multiplicity = Multiplicity(event);
313  if(nCand==0)return;
314  if(flagFilter){
315  if(fMultiplicity)
316  fCounters.Count(Form("Event:Candid(Filter)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
317  else
318  fCounters.Count(Form("Event:Candid(Filter)/Run:%d",runNumber));
319  for(Int_t i=0;i<nCand;i++){
320  if(fMultiplicity)
321  fCounters.Count(Form("Event:NCandid(Filter)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
322  else
323  fCounters.Count(Form("Event:NCandid(Filter)/Run:%d",runNumber));
324  }
325  }else{
326  if(fMultiplicity)
327  fCounters.Count(Form("Event:Candid(Analysis)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
328  else
329  fCounters.Count(Form("Event:Candid(Analysis)/Run:%d",runNumber));
330  for(Int_t i=0;i<nCand;i++){
331  if(fMultiplicity)
332  fCounters.Count(Form("Event:NCandid(Analysis)/Run:%d/Multiplicity:%d",runNumber,multiplicity));
333  else
334  fCounters.Count(Form("Event:NCandid(Analysis)/Run:%d",runNumber));
335  }
336  }
337  return;
338 }
339 //_______________________________________________________________________
340 TH1D* AliNormalizationCounter::DrawAgainstRuns(TString candle,Bool_t drawHist){
341  //
342  fCounters.SortRubric("Run");
343  TString selection;
344  selection.Form("event:%s",candle.Data());
345  TH1D* histoneD = fCounters.Get("run",selection.Data());
346 
347  histoneD->Sumw2();
348  if(drawHist)histoneD->DrawClone();
349  return histoneD;
350 }
351 //___________________________________________________________________________
352 TH1D* AliNormalizationCounter::DrawRatio(TString candle1,TString candle2){
353  //
354  fCounters.SortRubric("Run");
355  TString name;
356 
357  name.Form("%s/%s",candle1.Data(),candle2.Data());
358  TH1D* num=DrawAgainstRuns(candle1.Data(),kFALSE);
359  TH1D* den=DrawAgainstRuns(candle2.Data(),kFALSE);
360 
361  den->SetTitle(candle2.Data());
362  den->SetName(candle2.Data());
363  num->Divide(num,den,1,1,"B");
364  num->SetTitle(name.Data());
365  num->SetName(name.Data());
366  num->DrawClone();
367  return num;
368 }
369 //___________________________________________________________________________
371  fCounters.PrintKeyWords();
372 }
373 //___________________________________________________________________________
374 Double_t AliNormalizationCounter::GetSum(TString candle){
375  TString selection="event:";
376  selection.Append(candle);
377  return fCounters.GetSum(selection.Data());
378 }
379 //___________________________________________________________________________
380 TH2F* AliNormalizationCounter::GetHist(Bool_t filtercuts,Bool_t spdtracklets,Bool_t drawHist){
381  if(filtercuts){
382  if(spdtracklets){
383  if(drawHist)fHistTrackFilterSpdMult->DrawCopy("LEGO2Z 0");
385  }else{
386  if(drawHist)fHistTrackFilterEvMult->DrawCopy("LEGO2Z 0");
387  return fHistTrackFilterEvMult;
388  }
389  }else{
390  if(spdtracklets){
391  if(drawHist)fHistTrackAnaSpdMult->DrawCopy("LEGO2Z 0");
392  return fHistTrackAnaSpdMult;
393  }else{
394  if(drawHist)fHistTrackAnaEvMult->DrawCopy("LEGO2Z 0");
395  return fHistTrackAnaEvMult;
396  }
397  }
398 }
399 //___________________________________________________________________________
401  Double_t noVtxzGT10=GetSum("noPrimaryV")*GetSum("zvtxGT10")/GetSum("PrimaryV");
402  return GetSum("countForNorm")-noVtxzGT10;
403 }
404 //___________________________________________________________________________
406  TString listofruns = fCounters.GetKeyWords("RUN");
407  if(!listofruns.Contains(Form("%d",runnumber))){
408  printf("WARNING: %d is not a valid run number\n",runnumber);
409  fCounters.Print("Run","",kTRUE);
410  return 0.;
411  }
412  TString suffix;suffix.Form("/RUN:%d",runnumber);
413  TString zvtx;zvtx.Form("zvtxGT10%s",suffix.Data());
414  TString noPV;noPV.Form("noPrimaryV%s",suffix.Data());
415  TString pV;pV.Form("PrimaryV%s",suffix.Data());
416  TString tbc;tbc.Form("countForNorm%s",suffix.Data());
417  Double_t noVtxzGT10=GetSum(noPV.Data())*GetSum(zvtx.Data())/GetSum(pV.Data());
418  return GetSum(tbc.Data())-noVtxzGT10;
419 }
420 
421 //___________________________________________________________________________
422 Double_t AliNormalizationCounter::GetNEventsForNorm(Int_t minmultiplicity, Int_t maxmultiplicity){
423 
424  if(!fMultiplicity) {
425  AliInfo("Sorry, you didn't activate the multiplicity in the counter!");
426  return 0.;
427  }
428 
429  TString listofruns = fCounters.GetKeyWords("Multiplicity");
430 
431  Int_t nmultbins = maxmultiplicity - minmultiplicity;
432  Double_t sumnoPV=0., sumZvtx=0., sumPv=0., sumEvtNorm=0.;
433  for (Int_t ibin=0; ibin<=nmultbins; ibin++) {
434  // cout << " Looking at bin "<< ibin+minmultiplicity<<endl;
435  if(!listofruns.Contains(Form("%d",ibin+minmultiplicity))){
436  // AliInfo(Form("WARNING: %d is not a valid multiplicity number. \n",ibin+minmultiplicity));
437  continue;
438  }
439  TString suffix;suffix.Form("/Multiplicity:%d",ibin+minmultiplicity);
440  TString zvtx;zvtx.Form("zvtxGT10%s",suffix.Data());
441  TString noPV;noPV.Form("noPrimaryV%s",suffix.Data());
442  TString pV;pV.Form("PrimaryV%s",suffix.Data());
443  TString tbc;tbc.Form("countForNorm%s",suffix.Data());
444  sumnoPV += GetSum(noPV.Data());
445  sumZvtx += GetSum(zvtx.Data());
446  sumPv += GetSum(pV.Data());
447  sumEvtNorm += GetSum(tbc.Data());
448  }
449  Double_t noVtxzGT10 = sumPv>0. ? sumnoPV * sumZvtx / sumPv : 0.;
450  return sumEvtNorm - noVtxzGT10;
451 }
452 
453 //___________________________________________________________________________
454 Double_t AliNormalizationCounter::GetSum(TString candle,Int_t minmultiplicity, Int_t maxmultiplicity){
455  // counts events of given type in a given multiplicity range
456 
457  if(!fMultiplicity) {
458  AliInfo("Sorry, you didn't activate the multiplicity in the counter!");
459  return 0.;
460  }
461 
462  TString listofruns = fCounters.GetKeyWords("Multiplicity");
463  Double_t sum=0.;
464  for (Int_t ibin=minmultiplicity; ibin<=maxmultiplicity; ibin++) {
465  // cout << " Looking at bin "<< ibin+minmultiplicity<<endl;
466  if(!listofruns.Contains(Form("%d",ibin))){
467  // AliInfo(Form("WARNING: %d is not a valid multiplicity number. \n",ibin));
468  continue;
469  }
470  TString suffix=Form("/Multiplicity:%d",ibin);
471  TString name=Form("%s%s",candle.Data(),suffix.Data());
472  sum += GetSum(name.Data());
473  }
474  return sum;
475 }
476 
477 //___________________________________________________________________________
479  //usare algebra histos
480  fCounters.SortRubric("Run");
481  TString selection;
482 
483  selection.Form("event:noPrimaryV");
484  TH1D* hnoPrimV = fCounters.Get("run",selection.Data());
485  hnoPrimV->Sumw2();
486 
487  selection.Form("event:zvtxGT10");
488  TH1D* hzvtx= fCounters.Get("run",selection.Data());
489  hzvtx->Sumw2();
490 
491  selection.Form("event:PrimaryV");
492  TH1D* hPrimV = fCounters.Get("run",selection.Data());
493  hPrimV->Sumw2();
494 
495  hzvtx->Multiply(hnoPrimV);
496  hzvtx->Divide(hPrimV);
497 
498  selection.Form("event:countForNorm");
499  TH1D* hCountForNorm = fCounters.Get("run",selection.Data());
500  hCountForNorm->Sumw2();
501 
502  hCountForNorm->Add(hzvtx,-1.);
503 
504  if(drawRatio){
505  selection.Form("event:triggered");
506  TH1D* htriggered = fCounters.Get("run",selection.Data());
507  htriggered->Sumw2();
508  hCountForNorm->Divide(htriggered);
509  }
510 
511  hCountForNorm->DrawClone();
512  return hCountForNorm;
513 }
514 
515 //___________________________________________________________________________
517 
518  Int_t multiplicity = 0;
519  AliAODEvent *eventAOD = (AliAODEvent*)event;
520  AliAODTracklets * aodTracklets = (AliAODTracklets*)eventAOD->GetTracklets();
521  Int_t ntracklets = (Int_t)aodTracklets->GetNumberOfTracklets();
522  for(Int_t i=0;i<ntracklets; i++){
523  Double_t theta = aodTracklets->GetTheta(i);
524  Double_t eta = -TMath::Log( TMath::Tan(theta/2.) ); // check the formula
525  if(TMath::Abs(eta)<fMultiplicityEtaRange){ // set the proper cut on eta
526  multiplicity++;
527  }
528  }
529 
530  return multiplicity;
531 }
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TH2F * fHistTrackFilterSpdMult
hist to store no of analysis candidates vs no of tracks in the event
void StoreCandidates(AliVEvent *, Int_t nCand=0, Bool_t flagFilter=kTRUE)
Bool_t fESD
internal counter
TH2F * fHistTrackAnaSpdMult
hist to store no of filter candidates vs SPD multiplicity
TList * list
Bool_t fMultiplicity
flag for ESD vs AOD
Int_t GetWhyRejection() const
Definition: AliRDHFCuts.h:293
TH1D * DrawAgainstRuns(TString candle="candid(filter)", Bool_t drawHist=kTRUE)
AliCounterCollection fCounters
void Add(const AliNormalizationCounter *)
TH2F * fHistTrackAnaEvMult
hist to store no of filter candidates vs no of tracks in the event
Int_t Multiplicity(AliVEvent *event)
Bool_t CountEventForNormalization() const
Definition: AliRDHFCuts.h:343
TH1D * DrawNEventsForNorm(Bool_t drawRatio=kFALSE)
TH1D * DrawRatio(TString candle1="candid(filter)", TString candle2="triggered")
Bool_t IsEventRejectedDuePhysicsSelection() const
Definition: AliRDHFCuts.h:319
Long64_t Merge(TCollection *list)
Float_t fMultiplicityEtaRange
flag for multiplicity
Bool_t IsEventSelected(AliVEvent *event)
Double_t GetSum(TString candle="triggered")
TH2F * GetHist(Bool_t filtercuts=kTRUE, Bool_t spdtracklets=kTRUE, Bool_t drawHist=kFALSE)
void StoreEvent(AliVEvent *, AliRDHFCuts *, Bool_t mc=kFALSE, Int_t multiplicity=-9999)