AliPhysics  v5-06-11-01 (156c7f3)
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
AliAnaCaloTrackCorrMaker.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, 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 #include <cstdlib>
17 
18 // --- ROOT system ---
19 #include <TClonesArray.h>
20 #include <TList.h>
21 #include <TH1F.h>
22 //#include <TObjectTable.h>
23 #include <TGeoGlobalMagField.h>
24 
25 //---- AliRoot system ----
26 #include "AliAnalysisManager.h"
27 #include "AliInputEventHandler.h"
28 #include "AliESDEvent.h"
29 #include "AliAODEvent.h"
32 #include "AliLog.h"
33 
37 
38 //__________________________________________________
41 //__________________________________________________
43 TObject(),
44 fReader(0), fCaloUtils(0),
45 fOutputContainer(new TList ), fAnalysisContainer(new TList ),
46 fMakeHisto(kFALSE), fMakeAOD(kFALSE),
47 fAnaDebug(0), fCuts(new TList),
48 fScaleFactor(-1),
49 fFillDataControlHisto(kTRUE),
50 // Control histograms
51 fhNEventsIn(0), fhNEvents(0),
52 fhNExoticEvents(0), fhNEventsNoTriggerFound(0),
53 fhNPileUpEvents(0), fhNPileUpEventsTriggerBC0(0),
54 fhXVertex(0), fhYVertex(0), fhZVertex(0),
55 fhXVertexExotic(0), fhYVertexExotic(0), fhZVertexExotic(0),
56 fhPileUpClusterMult(0), fhPileUpClusterMultAndSPDPileUp(0),
57 fhTrackMult(0),
58 fhCentrality(0), fhEventPlaneAngle(0),
59 fhNMergedFiles(0), fhScaleFactor(0),
60 fhEMCalBCEvent(0), fhEMCalBCEventCut(0),
61 fhTrackBCEvent(0), fhTrackBCEventCut(0),
62 fhPrimaryVertexBC(0), fhTimeStampFraction(0),
63 fhNPileUpVertSPD(0), fhNPileUpVertTracks(0),
64 // EMCal trigger control histograms
65 fhClusterTriggerBC(0), fhClusterTriggerBCExotic(0),
66 fhClusterTriggerBCBadCell(0), fhClusterTriggerBCBadCellExotic(0),
67 fhClusterTriggerBCBadCluster(0), fhClusterTriggerBCBadClusterExotic(0),
68 fhClusterTriggerBCUnMatch(0), fhClusterTriggerBCExoticUnMatch(0),
69 fhClusterTriggerBCBadCellUnMatch(0), fhClusterTriggerBCBadCellExoticUnMatch(0),
70 fhClusterTriggerBCBadClusterUnMatch(0), fhClusterTriggerBCBadClusterExoticUnMatch(0),
71 fhClusterTriggerBCEventBC(0), fhClusterTriggerBCEventBCUnMatch(0),
72 fhClusterTriggerBCExoticEventBC(0), fhClusterTriggerBCExoticEventBCUnMatch(0)
73 {
74  AliDebug(1,"*** Analysis Maker Constructor ***");
75 
76  for(Int_t i = 0; i < 3; i++)
77  {
80  }
81 
83 }
84 
85 //________________________________________________________________________________________
87 //________________________________________________________________________________________
89 TObject(),
90 fReader(), //(new AliCaloTrackReader(*maker.fReader)),
91 fCaloUtils(),//(new AliCalorimeterUtils(*maker.fCaloUtils)),
92 fOutputContainer(new TList()), fAnalysisContainer(new TList()),
93 fMakeHisto(maker.fMakeHisto), fMakeAOD(maker.fMakeAOD),
94 fAnaDebug(maker.fAnaDebug), fCuts(new TList()),
95 fScaleFactor(maker.fScaleFactor),
96 fFillDataControlHisto(maker.fFillDataControlHisto),
97 fhNEventsIn(maker.fhNEventsIn),
98 fhNEvents(maker.fhNEvents),
99 fhNExoticEvents(maker.fhNExoticEvents),
100 fhNEventsNoTriggerFound(maker.fhNEventsNoTriggerFound),
101 fhNPileUpEvents(maker.fhNPileUpEvents),
102 fhNPileUpEventsTriggerBC0(maker.fhNPileUpEventsTriggerBC0),
103 fhXVertex(maker.fhXVertex),
104 fhYVertex(maker.fhYVertex),
105 fhZVertex(maker.fhZVertex),
106 fhXVertexExotic(maker.fhXVertexExotic),
107 fhYVertexExotic(maker.fhYVertexExotic),
108 fhZVertexExotic(maker.fhZVertexExotic),
109 fhPileUpClusterMult(maker.fhPileUpClusterMult),
110 fhPileUpClusterMultAndSPDPileUp(maker.fhPileUpClusterMultAndSPDPileUp),
111 fhTrackMult(maker.fhTrackMult),
112 fhCentrality(maker.fhCentrality),
113 fhEventPlaneAngle(maker.fhEventPlaneAngle),
114 fhNMergedFiles(maker.fhNMergedFiles),
115 fhScaleFactor(maker.fhScaleFactor),
116 fhEMCalBCEvent(maker.fhEMCalBCEvent),
117 fhEMCalBCEventCut(maker.fhEMCalBCEventCut),
118 fhTrackBCEvent(maker.fhTrackBCEvent),
119 fhTrackBCEventCut(maker.fhTrackBCEventCut),
120 fhPrimaryVertexBC(maker.fhPrimaryVertexBC),
121 fhTimeStampFraction(maker.fhTimeStampFraction),
122 fhNPileUpVertSPD(maker.fhNPileUpVertSPD),
123 fhNPileUpVertTracks(maker.fhNPileUpVertTracks),
124 fhClusterTriggerBC(maker.fhClusterTriggerBC),
125 fhClusterTriggerBCExotic(maker.fhClusterTriggerBCExotic),
126 fhClusterTriggerBCBadCell(maker.fhClusterTriggerBCBadCell),
127 fhClusterTriggerBCBadCellExotic(maker.fhClusterTriggerBCBadCellExotic),
128 fhClusterTriggerBCBadCluster(maker.fhClusterTriggerBCBadCluster),
129 fhClusterTriggerBCBadClusterExotic(maker.fhClusterTriggerBCBadClusterExotic),
130 fhClusterTriggerBCUnMatch(maker.fhClusterTriggerBCUnMatch),
131 fhClusterTriggerBCExoticUnMatch(maker.fhClusterTriggerBCExoticUnMatch),
132 fhClusterTriggerBCBadCellUnMatch(maker.fhClusterTriggerBCBadCellUnMatch),
133 fhClusterTriggerBCBadCellExoticUnMatch(maker.fhClusterTriggerBCBadCellExoticUnMatch),
134 fhClusterTriggerBCBadClusterUnMatch(maker.fhClusterTriggerBCBadClusterUnMatch),
135 fhClusterTriggerBCBadClusterExoticUnMatch(maker.fhClusterTriggerBCBadClusterExoticUnMatch),
136 fhClusterTriggerBCEventBC(maker.fhClusterTriggerBCEventBC),
137 fhClusterTriggerBCEventBCUnMatch(maker.fhClusterTriggerBCEventBCUnMatch),
138 fhClusterTriggerBCExoticEventBC(maker.fhClusterTriggerBCExoticEventBC),
139 fhClusterTriggerBCExoticEventBCUnMatch(maker.fhClusterTriggerBCExoticEventBCUnMatch)
140 {
141  for(Int_t i = 0; i < 3; i++)
142  {
145  }
146 }
147 
148 //___________________________________________________
150 //___________________________________________________
152 {
153  // Do not delete it here, already done somewhere else, need to understand where.
154  // if (fOutputContainer) {
155  // fOutputContainer->Clear();
156  // delete fOutputContainer ;
157  // }
158 
159  if (fAnalysisContainer)
160  {
161  fAnalysisContainer->Delete();
162  delete fAnalysisContainer ;
163  }
164 
165  if (fReader) delete fReader ;
166  if (fCaloUtils) delete fCaloUtils ;
167 
168  if(fCuts)
169  {
170  fCuts->Delete();
171  delete fCuts;
172  }
173 }
174 
175 //__________________________________________________________________
177 //__________________________________________________________________
178 void AliAnaCaloTrackCorrMaker::AddAnalysis(TObject* ana, Int_t n)
179 {
180  if ( fAnalysisContainer)
181  {
182  fAnalysisContainer->AddAt(ana,n);
183  }
184  else
185  {
186  AliFatal("AnalysisContainer not initialized");
187  }
188 }
189 
190 //_________________________________________________________
194 //_________________________________________________________
196 {
197  TList *aodBranchList = fReader->GetAODBranchList() ;
198 
199  for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++)
200  {
202  if(ana->NewOutputAOD()) aodBranchList->Add(ana->GetCreateOutputAODBranch());
203  }
204 
205  return aodBranchList ;
206 }
207 
208 //____________________________________________________
210 //____________________________________________________
212 {
213  AliVEvent* event = fReader->GetInputEvent();
214  AliESDEvent* esdevent = dynamic_cast<AliESDEvent*> (event);
215  AliAODEvent* aodevent = dynamic_cast<AliAODEvent*> (event);
216 
217  fhNEvents ->Fill(0); // Number of events analyzed
218 
219  Double_t v[3];
220  event->GetPrimaryVertex()->GetXYZ(v) ;
221  fhXVertex->Fill(v[0]);
222  fhYVertex->Fill(v[1]);
223  fhZVertex->Fill(v[2]);
224 
228 
230  {
231  if( fReader->IsPileUpFromSPD())
232  fhNPileUpEvents->Fill(0.5);
233  //if( event->IsPileupFromSPDInMultBins())
234  // fhNPileUpEvents->Fill(1.5);
235  if( fReader->IsPileUpFromEMCal())
236  fhNPileUpEvents->Fill(2.5);
238  fhNPileUpEvents->Fill(3.5);
240  fhNPileUpEvents->Fill(4.5);
242  fhNPileUpEvents->Fill(5.5);
244  fhNPileUpEvents->Fill(6.5);
246  fhNPileUpEvents->Fill(7.5);
247 
248  Int_t triggerBC = fReader->GetTriggerClusterBC() ;
249  if( triggerBC == 0 &&
250  !fReader->IsExoticEvent() &&
252  {
253  if( fReader->IsPileUpFromSPD())
254  fhNPileUpEventsTriggerBC0->Fill(0.5);
255  //if( event->IsPileupFromSPDInMultBins())
256  // fhNPileUpEventsTriggerBC0->Fill(1.5);
257  if( fReader->IsPileUpFromEMCal())
258  fhNPileUpEventsTriggerBC0->Fill(2.5);
260  fhNPileUpEventsTriggerBC0->Fill(3.5);
262  fhNPileUpEventsTriggerBC0->Fill(4.5);
264  fhNPileUpEventsTriggerBC0->Fill(5.5);
266  fhNPileUpEventsTriggerBC0->Fill(6.5);
268  fhNPileUpEventsTriggerBC0->Fill(7.5);
269  }
270 
271  if(fReader->IsPileUpFromSPD())
273 
275 
276  for(Int_t i = 0; i < 19; i++)
277  {
279  {
280  if(fReader->GetTrackEventBC(i)) fhTrackBCEvent ->Fill(i);
282  }
283  if(fReader->GetEMCalEventBC(i)) fhEMCalBCEvent ->Fill(i);
285  }
286 
287  Int_t bc = fReader->GetVertexBC();
288  if(bc!=AliVTrack::kTOFBCNA) fhPrimaryVertexBC->Fill(bc);
289 
290  // N pile up vertices
291  Int_t nVerticesSPD = -1;
292  Int_t nVerticesTracks = -1;
293 
294  if (esdevent)
295  {
296  nVerticesSPD = esdevent->GetNumberOfPileupVerticesSPD();
297  nVerticesTracks = esdevent->GetNumberOfPileupVerticesTracks();
298 
299  }//ESD
300  else if (aodevent)
301  {
302  nVerticesSPD = aodevent->GetNumberOfPileupVerticesSPD();
303  nVerticesTracks = aodevent->GetNumberOfPileupVerticesTracks();
304  }//AOD
305 
306  fhNPileUpVertSPD ->Fill(nVerticesSPD);
307  fhNPileUpVertTracks->Fill(nVerticesTracks);
308 
309  // Time stamp
310  if(fReader->IsSelectEventTimeStampOn() && esdevent)
311  {
312  Int_t timeStamp = esdevent->GetTimeStamp();
313  Float_t timeStampFrac = 1.*(timeStamp-fReader->GetRunTimeStampMin()) /
315 
316  //printf("stamp %d, min %d, max %d, frac %f\n", timeStamp, fReader->GetRunTimeStampMin(), fReader->GetRunTimeStampMax(), timeStampFrac);
317 
318  fhTimeStampFraction->Fill(timeStampFrac);
319  }
320  }
321 }
322 
323 //___________________________________________________________
325 //___________________________________________________________
327 {
328  if(!fFillDataControlHisto) return;
329 
330  Int_t triggerBC = fReader->GetTriggerClusterBC() ;
331  Bool_t exotic = fReader->IsExoticEvent();
332  Bool_t badCluster = fReader->IsBadCellTriggerEvent();
333  Bool_t badCell = fReader->IsBadMaxCellTriggerEvent();
334  Bool_t triggerMatch= fReader->IsTriggerMatched();
335  Bool_t triggerBCOK = kTRUE;
336  Int_t triggerId = fReader->GetTriggerClusterId() ;
337 
338  Bool_t reMatchOpenTime = fReader->IsTriggerMatchedOpenCuts(0);
339  Bool_t reMatchNeigbour = fReader->IsTriggerMatchedOpenCuts(1);
340  Bool_t reMatchBoth = fReader->IsTriggerMatchedOpenCuts(2);
341 
342  if(triggerId < 0)
343  {
344  //printf("Trigger id %d\n",triggerId);
345  if(triggerId == -2) fhNEventsNoTriggerFound->Fill(0);
346  triggerBCOK = kFALSE;
347  }
348 
349  if(exotic)
350  {
351  fhNExoticEvents->Fill(0) ;
352  Double_t v[3];
353  fReader->GetInputEvent()->GetPrimaryVertex()->GetXYZ(v) ;
354  fhXVertexExotic->Fill(v[0]);
355  fhYVertexExotic->Fill(v[1]);
356  fhZVertexExotic->Fill(v[2]);
357  }
358  //if(fReader->IsExoticEvent()) printf("Maker: EXOTIC Cluster trigger\n");
359 
360  if(!triggerBCOK) return;
361 
362  Int_t eventBC = fReader->GetInputEvent()->GetBunchCrossNumber();
363  if(eventBC%4 < 0 || eventBC%4 > 3 )
364  AliWarning(Form("STRANGE: Trigger BC %d - Event BC %d, modulo4 %d",triggerBC,eventBC,eventBC%4));
365 
366  if(triggerMatch)
367  {
368  if (!exotic && !badCluster) fhClusterTriggerBC->Fill(triggerBC);
369  else if( exotic && badCluster)
370  {
371  fhClusterTriggerBCBadClusterExotic->Fill(triggerBC);
372  if(badCell) fhClusterTriggerBCBadCellExotic->Fill(triggerBC);
373  }
374  else if( exotic && !badCluster) fhClusterTriggerBCExotic->Fill(triggerBC);
375  else if( badCluster && !exotic )
376  {
377  fhClusterTriggerBCBadCluster ->Fill(triggerBC);
378  if(badCell) fhClusterTriggerBCBadCell->Fill(triggerBC);
379  }
380 
381  if(!exotic) fhClusterTriggerBCEventBC ->Fill(triggerBC,eventBC%4);
382  else fhClusterTriggerBCExoticEventBC->Fill(triggerBC,eventBC%4);
383  }
384  else
385  {
386  if (!exotic && !badCluster)
387  {
388  fhClusterTriggerBCUnMatch->Fill(triggerBC);
389  if(reMatchOpenTime) fhClusterTriggerBCUnMatchReMatch[0]->Fill(triggerBC);
390  if(reMatchNeigbour) fhClusterTriggerBCUnMatchReMatch[1]->Fill(triggerBC);
391  if(reMatchBoth) fhClusterTriggerBCUnMatchReMatch[2]->Fill(triggerBC);
392  }
393  else if( exotic && badCluster)
394  {
396  if(badCell) fhClusterTriggerBCBadCellExoticUnMatch ->Fill(triggerBC);
397  }
398  else if( exotic && !badCluster)
399  {
400  fhClusterTriggerBCExoticUnMatch->Fill(triggerBC);
401  if(reMatchOpenTime) fhClusterTriggerBCExoticUnMatchReMatch[0]->Fill(triggerBC);
402  if(reMatchNeigbour) fhClusterTriggerBCExoticUnMatchReMatch[1]->Fill(triggerBC);
403  if(reMatchBoth) fhClusterTriggerBCExoticUnMatchReMatch[2]->Fill(triggerBC);
404  }
405  else if( badCluster && !exotic )
406  {
407  fhClusterTriggerBCBadClusterUnMatch->Fill(triggerBC);
408  if(badCell)fhClusterTriggerBCBadCellUnMatch->Fill(triggerBC);
409  }
410 
411  if(!exotic) fhClusterTriggerBCEventBCUnMatch ->Fill(triggerBC,eventBC%4);
412  else fhClusterTriggerBCExoticEventBCUnMatch->Fill(triggerBC,eventBC%4);
413  }
414 }
415 
416 //_______________________________________________________
419 //_______________________________________________________
421 {
422  for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++)
423  {
425  TObjString * objstring = ana->GetAnalysisCuts();
426 
427  if(objstring)fCuts->Add(objstring);
428  }
429 
430  return fCuts ;
431 }
432 
433 //___________________________________________________
437 //___________________________________________________
439 {
440  //Initialize calorimeters geometry pointers
441  //GetCaloUtils()->InitPHOSGeometry();
442  //GetCaloUtils()->InitEMCALGeometry();
443 
444  //General event histograms
445 
446  fhNEventsIn = new TH1F("hNEventsIn", "Number of input events" , 1 , 0 , 1 ) ;
447  fhNEventsIn->SetYTitle("# events");
449 
450  fhNEvents = new TH1F("hNEvents", "Number of analyzed events" , 1 , 0 , 1 ) ;
451  fhNEvents->SetYTitle("# events");
453 
454  fhXVertex = new TH1F("hXVertex", " X vertex distribution" , 200 , -4 , 4 ) ;
455  fhXVertex->SetXTitle("v_{x} (cm)");
457 
458  fhYVertex = new TH1F("hYVertex", " Y vertex distribution" , 200 , -4 , 4 ) ;
459  fhYVertex->SetXTitle("v_{y} (cm)");
461 
462  fhZVertex = new TH1F("hZVertex", " Z vertex distribution" , 200 , -50 , 50 ) ;
463  fhZVertex->SetXTitle("v_{z} (cm)");
465 
466  fhCentrality = new TH1F("hCentrality","Number of events in centrality bin",100,0.,100) ;
467  fhCentrality->SetXTitle("Centrality bin");
469 
470  fhEventPlaneAngle=new TH1F("hEventPlaneAngle","Number of events in event plane",100,0.,TMath::Pi()) ;
471  fhEventPlaneAngle->SetXTitle("EP angle (rad)");
473 
474  fhTrackMult = new TH1F("hTrackMult", "Number of tracks per events" , 2000 , 0 , 2000 ) ;
475  fhTrackMult->SetXTitle("# tracks");
477 
479  {
480  fhNExoticEvents = new TH1F("hNExoticEvents", "Number of analyzed events triggered by exotic cluster" , 1 , 0 , 1 ) ;
481  fhNExoticEvents->SetYTitle("# exotic events");
483 
484  fhNEventsNoTriggerFound = new TH1F("hNEventsNoTriggerFound", "Number of analyzed events triggered but no trigger found" , 1 , 0 , 1 ) ;
485  fhNEventsNoTriggerFound->SetYTitle("# exotic events");
487 
488 
489  Int_t nbin = 11;
490  Float_t minbin =-5.5;
491  Float_t maxbin = 5.5;
492  Int_t labelshift = 6;
493 
494  fhClusterTriggerBCEventBC = new TH2F("hClusterTriggerBCEventBC", "Found trigger BC and Event BC",
495  nbin , minbin ,maxbin,4,0, 4) ;
496  fhClusterTriggerBCEventBC->SetXTitle("cluster trigger BC");
497  for(Int_t i = 0; i < 4; i++)
498  fhClusterTriggerBCEventBC->GetYaxis()->SetBinLabel(i+1 ,Form("BC/4=%d",i));
499  fhClusterTriggerBCEventBC->SetXTitle("cluster trigger BC");
500  for(Int_t i = 1; i < 12; i++)
501  fhClusterTriggerBCEventBC->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
502  fhClusterTriggerBCEventBC->SetYTitle("Event BC%4");
504 
505  fhClusterTriggerBCExoticEventBC = new TH2F("hClusterTriggerBCExoticEventBC", "Found exotic trigger BC and Event BC",
506  nbin , minbin ,maxbin,4,1, 4) ;
507  for(Int_t i = 0; i < 4; i++)
508  fhClusterTriggerBCExoticEventBC->GetYaxis()->SetBinLabel(i+1 ,Form("BC/4=%d",i));
509  fhClusterTriggerBCExoticEventBC->SetXTitle("cluster trigger BC");
510  for(Int_t i = 1; i < 12; i++)
511  fhClusterTriggerBCExoticEventBC->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
512  fhClusterTriggerBCExoticEventBC->SetYTitle("Event BC%4");
514 
515  fhClusterTriggerBCEventBCUnMatch = new TH2F("hClusterTriggerBCEventBCUnMatch", "Found unmatched trigger BC and Event BC",
516  nbin , minbin ,maxbin,4,1, 4) ;
517  for(Int_t i = 0; i < 4; i++)
518  fhClusterTriggerBCEventBCUnMatch->GetYaxis()->SetBinLabel(i+1 ,Form("BC/4=%d",i));
519  fhClusterTriggerBCEventBCUnMatch->SetXTitle("cluster trigger BC");
520  for(Int_t i = 1; i < 12; i++)
521  fhClusterTriggerBCEventBCUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
522  fhClusterTriggerBCEventBCUnMatch->SetYTitle("Event BC%4");
524 
525  fhClusterTriggerBCExoticEventBCUnMatch = new TH2F("hClusterTriggerExoticBCEventBCUnMatch", "Found unmatched trigger BC and Event BC",
526  nbin , minbin ,maxbin,4,1, 4) ;
527  for(Int_t i = 0; i < 4; i++)
528  fhClusterTriggerBCExoticEventBCUnMatch->GetYaxis()->SetBinLabel(i+1 ,Form("BC/4=%d",i));
529  fhClusterTriggerBCExoticEventBCUnMatch->SetXTitle("cluster trigger BC");
530  for(Int_t i = 1; i < 12; i++)
531  fhClusterTriggerBCExoticEventBCUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
532  fhClusterTriggerBCExoticEventBCUnMatch->SetYTitle("Event BC%4");
534 
535  fhClusterTriggerBC = new TH1F("hClusterTriggerBC",
536  "Number of analyzed events triggered by a cluster in a given BC",
537  nbin , minbin ,maxbin) ;
538  fhClusterTriggerBC->SetYTitle("# events");
539  for(Int_t i = 1; i < 12; i++)
540  fhClusterTriggerBC->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
542 
543  fhClusterTriggerBCExotic = new TH1F("hClusterTriggerBCExotic",
544  "Number of analyzed events triggered by a exotic cluster in a given BC",
545  nbin , minbin ,maxbin) ;
546  fhClusterTriggerBCExotic->SetYTitle("# events");
547  for(Int_t i = 1; i < 12; i++)
548  fhClusterTriggerBCExotic->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
550 
551 
552  fhClusterTriggerBCBadCell = new TH1F("hClusterTriggerBCBadCell",
553  "Number of analyzed events triggered by a bad cell in a given BC",
554  nbin , minbin ,maxbin) ;
555 
556  fhClusterTriggerBCBadCell->SetYTitle("# events");
557  for(Int_t i = 1; i < 12; i++)
558  fhClusterTriggerBCBadCell->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
560 
561  fhClusterTriggerBCBadCellExotic = new TH1F("hClusterTriggerBCBadCellExotic",
562  "Number of analyzed events triggered by a bad cell & exotic cluster in a given BC",
563  nbin , minbin ,maxbin) ;
564  fhClusterTriggerBCBadCellExotic->SetYTitle("# events");
565  for(Int_t i = 1; i < 12; i++)
566  fhClusterTriggerBCBadCellExotic->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
568 
569  fhClusterTriggerBCBadCluster = new TH1F("hClusterTriggerBCBadCluster",
570  "Number of analyzed events triggered by a bad cluster in a given BC",
571  nbin , minbin ,maxbin) ;
572 
573  fhClusterTriggerBCBadCluster->SetYTitle("# events");
574  for(Int_t i = 1; i < 12; i++)
575  fhClusterTriggerBCBadCluster->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
577 
578 
579  fhClusterTriggerBCBadClusterExotic = new TH1F("hClusterTriggerBCBadClusterExotic",
580  "Number of analyzed events triggered by a bad cluster & exotic cluster in a given BC",
581  nbin , minbin ,maxbin) ;
582 
583  fhClusterTriggerBCBadClusterExotic->SetYTitle("# events");
584  for(Int_t i = 1; i < 12; i++)
585  fhClusterTriggerBCBadClusterExotic->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
587 
588  fhClusterTriggerBCUnMatch = new TH1F("hClusterTriggerBCUnMatch",
589  "Number of analyzed events triggered by a cluster (no trigger patch match) in a given BC",
590  nbin , minbin ,maxbin) ;
591  fhClusterTriggerBCUnMatch->SetYTitle("# events");
592  for(Int_t i = 1; i < 12; i++)
593  fhClusterTriggerBCUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
595 
596  fhClusterTriggerBCExoticUnMatch = new TH1F("hClusterTriggerBCExoticUnMatch",
597  "Number of analyzed events triggered by a exotic cluster (no trigger patch match) in a given BC",
598  nbin , minbin ,maxbin) ;
599  fhClusterTriggerBCExoticUnMatch->SetYTitle("# events");
600  for(Int_t i = 1; i < 12; i++)
601  fhClusterTriggerBCExoticUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
603 
604 
605  fhClusterTriggerBCBadCellUnMatch = new TH1F("hClusterTriggerBCBadCellUnMatch",
606  "Number of analyzed events triggered by a bad cluster (no trigger patch match) in a given BC",
607  nbin , minbin ,maxbin) ;
608  fhClusterTriggerBCBadCellUnMatch->SetYTitle("# events");
609  for(Int_t i = 1; i < 12; i++)
610  fhClusterTriggerBCBadCellUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
612 
613 
614  fhClusterTriggerBCBadCellExoticUnMatch = new TH1F("hClusterTriggerBCBadCellExoticUnMatch",
615  "Number of analyzed events triggered by a bad&exotic cluster (no trigger patch match) in a given BC",
616  nbin , minbin ,maxbin) ;
617  fhClusterTriggerBCBadCellExoticUnMatch->SetYTitle("# events");
618  for(Int_t i = 1; i < 12; i++)
619  fhClusterTriggerBCBadCellExoticUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
621 
622 
623  fhClusterTriggerBCBadClusterUnMatch = new TH1F("hClusterTriggerBCBadClusterUnMatch",
624  "Number of analyzed events triggered by a bad cluster (no trigger patch match) in a given BC",
625  nbin , minbin ,maxbin) ;
626  fhClusterTriggerBCBadClusterUnMatch->SetYTitle("# events");
627  for(Int_t i = 1; i < 12; i++)
628  fhClusterTriggerBCBadClusterUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
630 
631 
632  fhClusterTriggerBCBadClusterExoticUnMatch = new TH1F("hClusterTriggerBCBadClusterExoticUnMatch",
633  "Number of analyzed events triggered by a bad&exotic cluster (no trigger patch match) in a given BC",
634  nbin , minbin ,maxbin) ;
635  fhClusterTriggerBCBadClusterExoticUnMatch->SetYTitle("# events");
636  for(Int_t i = 1; i < 12; i++)
637  fhClusterTriggerBCBadClusterExoticUnMatch->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
639 
640  TString rematch[] = {"OpenTime","CheckNeighbours","Both"};
641  for(Int_t j = 0; j < 3; j++)
642  {
643  fhClusterTriggerBCUnMatchReMatch[j] = new TH1F(Form("hClusterTriggerBCUnMatch_ReMatch_%s",rematch[j].Data()),
644  Form("Number of analyzed events triggered by a cluster (no trigger patch match) in a given BC, re-match %s",rematch[j].Data()),
645  nbin , minbin ,maxbin) ;
646  fhClusterTriggerBCUnMatchReMatch[j]->SetYTitle("# events");
647  for(Int_t i = 1; i < 12; i++)
648  fhClusterTriggerBCUnMatchReMatch[j]->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
650 
651  fhClusterTriggerBCExoticUnMatchReMatch[j] = new TH1F(Form("hClusterTriggerBCExoticUnMatch_ReMatch_%s",rematch[j].Data()),
652  Form("Number of analyzed events triggered by a exotic cluster (no trigger patch match) in a given BC, re-match %s",rematch[j].Data()),
653  nbin , minbin ,maxbin) ;
654  fhClusterTriggerBCExoticUnMatchReMatch[j]->SetYTitle("# events");
655  for(Int_t i = 1; i < 12; i++)
656  fhClusterTriggerBCExoticUnMatchReMatch[j]->GetXaxis()->SetBinLabel(i ,Form("BC%d",i-labelshift));
658  }
659 
660  fhNPileUpEvents = new TH1F("hNPileUpEvents", "Number of events considered as pile-up", 8 , 0 , 8 ) ;
661  fhNPileUpEvents->SetYTitle("# events");
662  fhNPileUpEvents->GetXaxis()->SetBinLabel(1 ,"SPD");
663  fhNPileUpEvents->GetXaxis()->SetBinLabel(2 ,"Multi SPD");
664  fhNPileUpEvents->GetXaxis()->SetBinLabel(3 ,"EMCal");
665  fhNPileUpEvents->GetXaxis()->SetBinLabel(4 ,"EMCal || SPD");
666  fhNPileUpEvents->GetXaxis()->SetBinLabel(5 ,"EMCal && SPD");
667  fhNPileUpEvents->GetXaxis()->SetBinLabel(6 ,"!EMCal && SPD");
668  fhNPileUpEvents->GetXaxis()->SetBinLabel(7 ,"EMCal && !SPD");
669  fhNPileUpEvents->GetXaxis()->SetBinLabel(8 ,"!EMCal && !SPD");
671 
672  fhNPileUpEventsTriggerBC0 = new TH1F("hNPileUpEventsTriggerBC0","Number of events considered as pile-up, trigger cluster in BC=0", 8 , 0 , 8 ) ;
673  fhNPileUpEventsTriggerBC0->SetYTitle("# events");
674  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(1 ,"SPD");
675  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(2 ,"Multi SPD");
676  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(3 ,"EMCal");
677  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(4 ,"EMCal || SPD");
678  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(5 ,"EMCal && SPD");
679  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(6 ,"!EMCal && SPD");
680  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(7 ,"EMCal && !SPD");
681  fhNPileUpEventsTriggerBC0->GetXaxis()->SetBinLabel(8 ,"!EMCal && !SPD");
683 
685  {
686  fhTrackBCEvent = new TH1F("hTrackBCEvent", "Number of events with at least 1 track in a bunch crossing ", 19 , 0 , 19 ) ;
687  fhTrackBCEvent->SetYTitle("# events");
688  fhTrackBCEvent->SetXTitle("Bunch crossing");
689  for(Int_t i = 1; i < 20; i++)
690  fhTrackBCEvent->GetXaxis()->SetBinLabel(i ,Form("%d",i-10));
692 
693  fhTrackBCEventCut = new TH1F("hTrackBCEventCut", "Number of events with at least 1 track in a bunch crossing ", 19 , 0 , 19 ) ;
694  fhTrackBCEventCut->SetYTitle("# events");
695  fhTrackBCEventCut->SetXTitle("Bunch crossing");
696  for(Int_t i = 1; i < 20; i++)
697  fhTrackBCEventCut->GetXaxis()->SetBinLabel(i ,Form("%d",i-10));
699  }
700 
701  fhPrimaryVertexBC = new TH1F("hPrimaryVertexBC", "Number of primary vertex per bunch crossing ", 41 , -20 , 20 ) ;
702  fhPrimaryVertexBC->SetYTitle("# events");
703  fhPrimaryVertexBC->SetXTitle("Bunch crossing");
705 
706  fhEMCalBCEvent = new TH1F("hEMCalBCEvent", "Number of events with at least 1 cluster in a bunch crossing ", 19 , 0 , 19 ) ;
707  fhEMCalBCEvent->SetYTitle("# events");
708  fhEMCalBCEvent->SetXTitle("Bunch crossing");
709  for(Int_t i = 1; i < 20; i++)
710  fhEMCalBCEvent->GetXaxis()->SetBinLabel(i ,Form("%d",i-10));
712 
713  fhEMCalBCEventCut = new TH1F("hEMCalBCEventCut", "Number of events with at least 1 cluster in a bunch crossing", 19 , 0 , 19 ) ;
714  fhEMCalBCEventCut->SetYTitle("# events");
715  fhEMCalBCEventCut->SetXTitle("Bunch crossing");
716  for(Int_t i = 1; i < 20; i++)
717  fhEMCalBCEventCut->GetXaxis()->SetBinLabel(i ,Form("%d",i-10));
719 
720  fhXVertexExotic = new TH1F("hXVertexExotic", " X vertex distribution in exotic events" , 200 , -4 , 4 ) ;
721  fhXVertexExotic->SetXTitle("v_{x} (cm)");
723 
724  fhYVertexExotic = new TH1F("hYVertexExotic", " Y vertex distribution in exotic events" , 200 , -4 , 4 ) ;
725  fhYVertexExotic->SetXTitle("v_{y} (cm)");
727 
728  fhZVertexExotic = new TH1F("hZVertexExotic", " Z vertex distribution in exotic events" , 200 , -50 , 50 ) ;
729  fhZVertexExotic->SetXTitle("v_{z} (cm)");
731 
732  fhPileUpClusterMult = new TH1F("hPileUpClusterMult", "Number of clusters per event with large time (|t| > 20 ns)" , 100 , 0 , 100 ) ;
733  fhPileUpClusterMult->SetXTitle("# clusters");
735 
736  fhPileUpClusterMultAndSPDPileUp = new TH1F("hPileUpClusterMultAndSPDPileUp", "Number of clusters per event with large time (|t| > 20 ns, events tagged as pile-up by SPD)" , 100 , 0 , 100 ) ;
737  fhPileUpClusterMultAndSPDPileUp->SetXTitle("# clusters");
739 
740  fhNPileUpVertSPD = new TH1F ("hNPileUpVertSPD","N pile-up SPD vertex", 50,0,50);
741  fhNPileUpVertSPD->SetYTitle("# vertex ");
743 
744  fhNPileUpVertTracks = new TH1F ("hNPileUpVertTracks","N pile-up Tracks vertex", 50,0,50);
745  fhNPileUpVertTracks->SetYTitle("# vertex ");
747 
749  {
750  fhTimeStampFraction = new TH1F("hTimeStampFraction","Fraction of events within a given time stamp range",150, -1, 2) ;
751  fhTimeStampFraction->SetXTitle("fraction");
753  }
754  }
755 
756  if(fScaleFactor > 0)
757  {
758  fhNMergedFiles = new TH1F("hNMergedFiles", "Number of merged output files" , 1 , 0 , 1 ) ;
759  fhNMergedFiles->SetYTitle("# files");
760  fhNMergedFiles->Fill(1); // Fill here with one entry, while merging it will count the rest
762 
763  fhScaleFactor = new TH1F("hScaleFactor", "Number of merged output files" , 1 , 0 , 1 ) ;
764  fhScaleFactor->SetYTitle("scale factor");
765  fhScaleFactor->SetBinContent(1,fScaleFactor); // Fill here
767  }
768 
769  if(!fAnalysisContainer || fAnalysisContainer->GetEntries()==0)
770  {
771  AliWarning("Analysis job list not initialized!!!");
772  return fOutputContainer;
773  }
774 
775  const Int_t buffersize = 255;
776  char newname[buffersize];
777  for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++)
778  {
779 
781 
782  if(fMakeHisto) // Analysis with histograms as output on
783  {
784 
785  //Fill container with appropriate histograms
786  TList * templist = ana ->GetCreateOutputObjects();
787  templist->SetOwner(kFALSE); //Owner is fOutputContainer.
788 
789  for(Int_t i = 0; i < templist->GetEntries(); i++)
790  {
791 
792  //Add only to the histogram name the name of the task
793  if( strcmp((templist->At(i))->ClassName(),"TObjString") )
794  {
795  snprintf(newname,buffersize, "%s%s", (ana->GetAddedHistogramsStringToName()).Data(), (templist->At(i))->GetName());
796  //printf("name %s, new name %s\n",(templist->At(i))->GetName(),newname);
797  ((TH1*) templist->At(i))->SetName(newname);
798  }
799 
800  //Add histogram to general container
801  fOutputContainer->Add(templist->At(i)) ;
802 
803  }
804 
805  delete templist;
806 
807  }// Analysis with histograms as output on
808 
809  }//Loop on analysis defined
810 
811  return fOutputContainer;
812 
813 }
814 
815 //___________________________________
820 //___________________________________
822 {
823  // Activate debug level in maker
824  if( fAnaDebug >= 0 )
825  (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(this->ClassName(),fAnaDebug);
826 
827  //Initialize reader
828  GetReader()->Init();
829  GetReader()->SetCaloUtils(GetCaloUtils()); // pass the calo utils pointer to the reader
830 
831  // Activate debug level in reader
832  if( fReader->GetDebug() >= 0 )
833  (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(fReader->ClassName(), fReader->GetDebug());
834 
835  // Activate debug level in calo utils
836  if( fCaloUtils->GetDebug() >= 0 )
837  (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(fCaloUtils->ClassName(), fCaloUtils->GetDebug());
838 
839  if(!fAnalysisContainer || fAnalysisContainer->GetEntries()==0)
840  {
841  AliWarning("Analysis job list not initialized");
842  return;
843  }
844 
845  for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++)
846  {
848 
849  ana->SetReader(fReader); // Set Reader for each analysis
850  ana->SetCaloUtils(fCaloUtils); // Set CaloUtils for each analysis
851 
852  ana->Init();
853  ana->InitDebug();
854  }//Loop on analysis defined
855 }
856 
857 //_____________________________________________
859 //_____________________________________________
861 {
862  fMakeHisto = kTRUE;
863  fMakeAOD = kTRUE;
864  fAnaDebug = 0; // No debugging info displayed by default
865 }
866 
867 //______________________________________________________________
869 //______________________________________________________________
870 void AliAnaCaloTrackCorrMaker::Print(const Option_t * opt) const
871 {
872  if(! opt)
873  return;
874 
875  printf("***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
876  printf("Debug level = %d\n", fAnaDebug ) ;
877  printf("Produce Histo = %d\n", fMakeHisto ) ;
878  printf("Produce AOD = %d\n", fMakeAOD ) ;
879  printf("Number of analysis tasks = %d\n", fAnalysisContainer->GetEntries()) ;
880 
881  if(!strcmp("all",opt))
882  {
883  printf("Print analysis Tasks settings :\n") ;
884  for(Int_t iana = 0; iana<fAnalysisContainer->GetEntries(); iana++)
885  {
887  }
888 
889  printf("Print analysis Reader settings :\n") ;
890  fReader->Print("");
891  printf("Print analysis Calorimeter Utils settings :\n") ;
892  fCaloUtils->Print("");
893  }
894 }
895 
896 //_____________________________________________________________________________________
906 //_____________________________________________________________________________________
907 void AliAnaCaloTrackCorrMaker::ProcessEvent(Int_t iEntry, const char * currentFileName)
908 {
910  AliFatal("Histograms not initialized");
911 
912  AliDebug(1,Form("*** AliAnaCaloTrackCorrMaker::ProcessEvent() Event %d ***",iEntry));
913  AliDebug(2,Form("Current File Name : %s", currentFileName));
914  //printf("fAODBranchList %p, entries %d\n",fAODBranchList,fAODBranchList->GetEntries());
915 
916  // Each event needs an empty branch
917  TList * aodList = fReader->GetAODBranchList();
918  Int_t nAODBranches = aodList->GetEntries();
919  for(Int_t iaod = 0; iaod < nAODBranches; iaod++)
920  {
921  TClonesArray *tca = dynamic_cast<TClonesArray*> (aodList->At(iaod));
922  if(tca) tca->Clear("C");
923  }
924 
925  // Set geometry matrices before filling arrays, in case recalibration/position calculation etc is needed
927 
928  // Set the AODB calibration, bad channels etc. parameters at least once
930 
931  // Tell the reader to fill the data in the 3 detector lists
932  Bool_t ok = fReader->FillInputEvent(iEntry, currentFileName);
933 
934  // Access pointers, and trigger mask check needed in mixing case
935  AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
936  AliInputEventHandler *inputHandler = dynamic_cast<AliInputEventHandler*>(manager->GetInputEventHandler());
937 
938  UInt_t isMBTrigger = kFALSE;
939  UInt_t isTrigger = kFALSE;
940  if(inputHandler)
941  {
942  isMBTrigger = inputHandler->IsEventSelected() & fReader->GetMixEventTriggerMask();
943  isTrigger = inputHandler->IsEventSelected() & fReader->GetEventTriggerMask();
944  }
945 
946  //Fill trigger control histograms, make sure it is only for triggered events and
947  // not the MB events used for mixing
948  if(fReader->IsEventTriggerAtSEOn() || isTrigger)
949  {
950  fhNEventsIn->Fill(0);
952  }
953 
954  if(!ok)
955  {
956  AliDebug(1,Form("*** Skip event *** %d",iEntry));
957  fReader->ResetLists();
958  return ;
959  }
960 
961  // Magic line to write events to file
962  if(fReader->WriteDeltaAODToFile())AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
963 
964  //printf(">>>>>>>>>> BEFORE >>>>>>>>>>>\n");
965  //gObjectTable->Print();
966 
967  // Init mag field for tracks in case of ESDs, not really necessary
968  if ( !TGeoGlobalMagField::Instance()->GetField() && fReader->GetInputEvent() )
969  (fReader->GetInputEvent())->InitMagneticField();
970 
971  // Loop on analysis algorithms
972 
973  AliDebug(1,"*** Begin analysis ***");
974 
975  Int_t nana = fAnalysisContainer->GetEntries() ;
976  for(Int_t iana = 0; iana < nana; iana++)
977  {
979 
980  ana->ConnectInputOutputAODBranches(); // Sets branches for each analysis
981 
982  //Fill pool for mixed event for the analysis that need it
983  if(!fReader->IsEventTriggerAtSEOn() && isMBTrigger)
984  {
985  ana->FillEventMixPool();
986  if(!isTrigger) continue; // pool filled do not try to fill AODs or histograms if trigger is not MB
987  }
988 
989  //Make analysis, create aods in aod branch and in some cases fill histograms
990  if(fMakeAOD ) ana->MakeAnalysisFillAOD() ;
991 
992  //Make further analysis with aod branch and fill histograms
994 
995  }
996 
997  fReader->ResetLists();
998 
999  // In case of mixing analysis, non triggered events are used,
1000  // do not fill control histograms for a non requested triggered event
1001  if(!fReader->IsEventTriggerAtSEOn() && !isTrigger)
1002  {
1003  AliDebug(1,"*** End analysis, MB for mixing ***");
1004  return;
1005  }
1006 
1008 
1009  //printf(">>>>>>>>>> AFTER >>>>>>>>>>>\n");
1010  //gObjectTable->Print();
1011 
1012  AliDebug(1,"*** End analysis ***");
1013 }
1014 
1015 //__________________________________________________________
1018 //__________________________________________________________
1019 void AliAnaCaloTrackCorrMaker::Terminate(TList * outputList)
1020 {
1021  if (!outputList)
1022  {
1023  AliError("No output list");
1024  return;
1025  }
1026 
1027  for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++)
1028  {
1030  if(ana->MakePlotsOn())ana->Terminate(outputList);
1031  } // Loop on analysis defined
1032 }
1033 
1034 
1035 
TH2F * fhClusterTriggerBCExoticEventBCUnMatch
! Correlate the found BC in the exotic trigger and the event BC, when there was no match with the tri...
Bool_t IsPileUpFromSPD() const
TH1F * fhTimeStampFraction
! event fraction depending on Time Stamp, only if activated on reader.
TH1F * fhNEvents
! Number of acepted events counter histogram.
virtual void SetCaloUtils(AliCalorimeterUtils *caloutils)
virtual Int_t GetDebug() const
Bool_t IsBadMaxCellTriggerEvent() const
TH2F * fhClusterTriggerBCEventBC
! Correlate the found BC in the trigger and the event BC.
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TH1F * fhEMCalBCEventCut
! N events depending on the existence of a cluster above acceptance and E cut in a given bunch crossi...
TH1F * fhClusterTriggerBCUnMatchReMatch[3]
! Number of events triggered, depending on BC of the cluster, not matched, open cuts and rematch...
TH2F * fhClusterTriggerBCExoticEventBC
! Correlate the found BC in the exotic trigger and the event BC.
TList * fCuts
! List with analysis cuts.
TH1F * fhClusterTriggerBCBadClusterUnMatch
! Number of events triggered, depending on BC of the cluster.
TH1F * fhZVertexExotic
! Z Vertex distribution of exotic event.
TH1F * fhNPileUpVertTracks
! Number of pile-up vertices from tracks.
TH1F * fhClusterTriggerBCBadCell
! Number of events triggered, depending on BC of the cluster.
TH1F * fhNEventsIn
! Number of input events counter histogram.
void InitParameters()
Init data members.
TH1F * fhClusterTriggerBCBadCluster
! Number of events triggered, depending on BC of the cluster.
AliCalorimeterUtils * fCaloUtils
Pointer to AliCalorimeterUtils.
Bool_t WriteDeltaAODToFile() const
Int_t GetVertexBC(const AliVVertex *vtx)
TH1F * fhScaleFactor
! Factor to scale histograms.
virtual AliVEvent * GetInputEvent() const
TH1F * fhTrackBCEventCut
! N events depending on the existence of a track above acceptance and pt cut in a given bunch crossin...
Bool_t IsPileUpFromSPDAndNotEMCal() const
Check if event is from pile-up determined by SPD and not by EMCal.
void AddAnalysis(TObject *ana, Int_t n)
Add analysis depending on AliAnaCaloTrackCorrBaseClass to list.
TH1F * fhClusterTriggerBCBadCellExoticUnMatch
! Number of events triggered, depending on BC of the cluster.
TH1F * fhEMCalBCEvent
! N events depending on the existence of a cluster in a given bunch crossing.
Double_t GetRunTimeStampMin() const
Double_t fScaleFactor
Scaling factor needed for normalization.
TH1F * fhXVertexExotic
! X Vertex distribution of exotic event.
TH2F * fhClusterTriggerBCEventBCUnMatch
! Correlate the found BC in the trigger and the event BC, when there was no match with the trigger BC...
virtual Int_t GetEventCentrality() const
Bool_t IsTriggerMatchedOpenCuts(Int_t i) const
Bool_t IsPileUpFromNotSPDAndNotEMCal() const
Check if event not from pile-up determined neither by SPD nor by EMCal.
void FillTriggerControlHistograms()
Fill here EMCal triggered events control histograms.
TH1F * fhTrackBCEvent
! N events depending on the existence of a track in a given bunch crossing.
TH1F * fhNPileUpEventsTriggerBC0
! N events pasing pile up cut.
TH1F * fhNMergedFiles
! Number of files merged.
virtual Bool_t FillInputEvent(Int_t iEntry, const char *currentFileName)
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH1F * fhXVertex
! X Vertex distribution of accepted event.
Bool_t IsPileUpFromSPDOrEMCal() const
Check if event is from pile-up determined by SPD or EMCal.
Bool_t IsPileUpFromEMCalAndNotSPD() const
Check if event is from pile-up determined by EMCal, not by SPD.
Double_t GetRunTimeStampMax() const
TH1F * fhClusterTriggerBC
! Number of events triggered, depending on BC of the cluster.
Base class for CaloTrackCorr analysis algorithms.
TH1F * fhClusterTriggerBCBadClusterExoticUnMatch
! Number of events triggered, depending on BC of the cluster.
virtual TList * GetAODBranchList() const
Bool_t IsTriggerMatched() const
virtual Int_t GetDebug() const
Bool_t fMakeHisto
If true makes final analysis with histograms as output.
TH1F * fhNExoticEvents
! Number of events triggered by exotic, counter histogram.
TH1F * fhClusterTriggerBCExoticUnMatch
! Number of events triggered, depending on BC of the cluster.
Int_t GetTriggerClusterBC() const
UInt_t GetEventTriggerMask() const
Bool_t fFillDataControlHisto
Fill histograms only interesting with data.
TH1F * fhYVertex
! Y Vertex distribution of accepted event.
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
virtual TString GetAddedHistogramsStringToName() const
TH1F * fhPileUpClusterMult
! N clusters with high time.
TH1F * fhTrackMult
! Number of tracks per event histogram.
Int_t GetEMCalEventBC(Int_t bc) const
void ProcessEvent(Int_t iEntry, const char *currentFileName)
TH1F * fhClusterTriggerBCBadCellExotic
! Number of events triggered, depending on BC of the cluster.
TH1F * fhNPileUpEvents
! N events pasing pile up cut.
void SetCaloUtils(AliCalorimeterUtils *caloutils)
Bool_t IsAccessToTrackTimeOn() const
TH1F * fhClusterTriggerBCBadCellUnMatch
! Number of events triggered, depending on BC of the cluster.
TH1F * fhNEventsNoTriggerFound
! Number of events where whatever was done, no trigger is found.
virtual ~AliAnaCaloTrackCorrMaker()
Destructor. Remove only owned pointers.
TH1F * fhEventPlaneAngle
! Histogram with Event plane angle.
virtual void SetReader(AliCaloTrackReader *reader)
UInt_t GetMixEventTriggerMask() const
virtual void ResetLists()
Reset lists, called in AliAnaCaloTrackCorrMaker.
Bool_t IsExoticEvent() const
TH1F * fhClusterTriggerBCExotic
! Number of events triggered, depending on BC of the cluster.
virtual TClonesArray * GetCreateOutputAODBranch()
Create AOD branch filled in the analysis.
Bool_t IsEventTriggerAtSEOn() const
TH1F * fhCentrality
! Histogram with centrality bins.
TH1F * fhZVertex
! Z Vertex distribution of accepted event.
virtual Double_t GetEventPlaneAngle() const
TH1F * fhClusterTriggerBCExoticUnMatchReMatch[3]
! Number of events triggered by exotic, depending on BC of the clusterm not matched, open cuts and rematch.
Int_t GetTrackEventBC(Int_t bc) const
Bool_t IsPileUpFromEMCal() const
Check if event is from pile-up determined by EMCal.
TH1F * fhClusterTriggerBCBadClusterExotic
! Number of events triggered, depending on BC of the cluster.
void FillControlHistograms()
Fill here event control histograms.
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH1F * fhYVertexExotic
! Y Vertex distribution of exotic event.
AliCaloTrackReader * GetReader()
void AccessGeometry(AliVEvent *inputEvent)
Int_t GetTrackMultiplicity() const
AliCalorimeterUtils * GetCaloUtils()
Bool_t fMakeAOD
If true makes analysis generating AODs.
void AccessOADB(AliVEvent *event)
TH1F * fhPrimaryVertexBC
! Primary vertex BC.
TList * fOutputContainer
! Output histograms container.
Int_t GetEMCalEventBCcut(Int_t bc) const
TH1F * fhPileUpClusterMultAndSPDPileUp
! N clusters with high time in events tagged as pile-up by SPD.
Bool_t IsBadCellTriggerEvent() const
AliCaloTrackReader * fReader
Pointer to AliCaloTrackReader.
TList * fAnalysisContainer
List with analysis pointers.
TH1F * fhNPileUpVertSPD
! Number of pile-up vertices from SPD.
Int_t GetTrackEventBCcut(Int_t bc) const
Bool_t IsPileUpFromSPDAndEMCal() const
Check if event is from pile-up determined by SPD and EMCal.
TH1F * fhClusterTriggerBCUnMatch
! Number of events triggered, depending on BC of the cluster.
Int_t GetTriggerClusterId() const
Steering class of package CaloTrackCorrelartions.