1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes 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 **************************************************************************/
16 //_________________________________________________________________________
18 // Class for study of EMCAL trigger behaviour
20 // -- Author: Gustavo Conesa (CNRS-LPSC-Grenoble)
21 //////////////////////////////////////////////////////////////////////////////
24 // --- ROOT system ---
26 #include <TClonesArray.h>
27 #include <TObjString.h>
29 // --- Analysis system ---
30 #include "AliAnaEMCALTriggerClusters.h"
31 #include "AliCaloTrackReader.h"
32 #include "AliCaloPID.h"
33 #include "AliFiducialCut.h"
34 #include "AliVCluster.h"
35 #include "AliAODEvent.h"
36 #include "AliESDEvent.h"
39 #include "AliEMCALGeometry.h"
41 ClassImp(AliAnaEMCALTriggerClusters)
43 //____________________________
44 AliAnaEMCALTriggerClusters::AliAnaEMCALTriggerClusters() :
45 AliAnaCaloTrackCorrBaseClass(),
46 fRejectTrackMatch(0), fNCellsCut(0),
47 fMinM02(0), fMaxM02(0),
49 fhE(0), fhESelected(0),
50 fhEtaPhi(0), fhEtaPhiSelected(0),
51 fhEtaPhiEMCALBC0(0), fhEtaPhiEMCALBC1(0), fhEtaPhiEMCALBCN(0),
52 fhTimeTriggerEMCALBCCluster(0),
53 fhTimeTriggerEMCALBCUMCluster(0),
54 fhEtaPhiTriggerEMCALBCClusterOverTh(0),
55 fhEtaPhiTriggerEMCALBCUMClusterOverTh(0),
56 fhEtaPhiTriggerEMCALBCClusterBelowTh1(0),
57 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1(0),
58 fhEtaPhiTriggerEMCALBCClusterBelowTh2(0),
59 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2(0),
60 fhEtaPhiTriggerEMCALBCExotic(0), fhTimeTriggerEMCALBCExotic(0),
61 fhEtaPhiTriggerEMCALBCUMExotic(0), fhTimeTriggerEMCALBCUMExotic(0),
62 fhEtaPhiTriggerEMCALBCBad(0), fhTimeTriggerEMCALBCBad(0),
63 fhEtaPhiTriggerEMCALBCUMBad(0), fhTimeTriggerEMCALBCUMBad(0),
64 fhEtaPhiTriggerEMCALBCBadExotic(0), fhTimeTriggerEMCALBCBadExotic(0),
65 fhEtaPhiTriggerEMCALBCUMBadExotic(0), fhTimeTriggerEMCALBCUMBadExotic(0),
66 fhEtaPhiTriggerEMCALBCExoticCluster(0), fhTimeTriggerEMCALBCExoticCluster(0),
67 fhEtaPhiTriggerEMCALBCUMExoticCluster(0), fhTimeTriggerEMCALBCUMExoticCluster(0),
68 fhEtaPhiTriggerEMCALBCBadCluster(0), fhTimeTriggerEMCALBCBadCluster(0),
69 fhEtaPhiTriggerEMCALBCUMBadCluster(0), fhTimeTriggerEMCALBCUMBadCluster(0),
70 fhEtaPhiTriggerEMCALBCBadExoticCluster(0), fhTimeTriggerEMCALBCBadExoticCluster(0),
71 fhEtaPhiTriggerEMCALBCUMBadExoticCluster(0), fhTimeTriggerEMCALBCUMBadExoticCluster(0),
72 fhTimeTriggerEMCALBCBadMaxCell(0), fhTimeTriggerEMCALBCUMBadMaxCell(0),
73 fhTimeTriggerEMCALBCBadMaxCellExotic(0), fhTimeTriggerEMCALBCUMBadMaxCellExotic(0),
74 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster (0), fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster(0),
75 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster(0),fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster(0),
76 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster(0), fhTimeTriggerEMCALBCUMReMatchBothCluster(0),
77 fhTimeTriggerEMCALBC0UMReMatchOpenTime(0),
78 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh(0),
79 fhTimeTriggerEMCALBC0UMReMatchBoth(0),
80 fhEtaPhiNoTrigger(0), fhTimeNoTrigger(0),
81 fhEtaPhiSelectedEMCALBC0(0), fhEtaPhiSelectedEMCALBC1(0), fhEtaPhiSelectedEMCALBCN(0),
82 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime(0),
83 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh(0),
84 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth(0)
88 for(Int_t i = 0; i < 11; i++)
90 fhEtaPhiTriggerEMCALBC [i] = 0 ;
91 fhTimeTriggerEMCALBC [i] = 0 ;
92 fhEtaPhiTriggerEMCALBCUM [i] = 0 ;
93 fhTimeTriggerEMCALBCUM [i] = 0 ;
95 fhEtaPhiSelectedTriggerEMCALBC [i] = 0 ;
96 fhTimeSelectedTriggerEMCALBC [i] = 0 ;
97 fhEtaPhiSelectedTriggerEMCALBCUM [i] = 0 ;
98 fhTimeSelectedTriggerEMCALBCUM [i] = 0 ;
100 fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = 0 ;
101 fhTimeTriggerEMCALBCPileUpSPD [i] = 0 ;
103 fhEtaPhiTriggerEMCALBCCluster [i] = 0 ;
104 fhEtaPhiTriggerEMCALBCUMCluster [i] = 0 ;
107 //Initialize parameters
112 //_____________________________________________________________
113 void AliAnaEMCALTriggerClusters::FillBadTriggerEventHistogram()
115 // Fill Bad events histo, study bad/exotic trigger BC
117 Int_t idTrig = GetReader()->GetTriggerClusterIndex();
118 Bool_t exotic = GetReader()->IsExoticEvent();
119 Bool_t bad = GetReader()->IsBadCellTriggerEvent();
122 if(( bad || exotic ) && idTrig >= 0 && !GetReader()->AreBadTriggerEventsRemoved()) ok = kTRUE;
126 // printf("Index %d, Id %d, bad %d, exo %d\n",
127 // GetReader()->GetTriggerClusterIndex(),
128 // GetReader()->GetTriggerClusterId(),
129 // GetReader()->IsBadCellTriggerEvent(),
130 // GetReader()->IsExoticEvent() );
132 TClonesArray * clusterList = 0;
133 TString clusterListName = GetReader()->GetEMCALClusterListName();
134 if (GetReader()->GetInputEvent()->FindListObject(clusterListName))
135 clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetInputEvent() ->FindListObject(clusterListName));
136 else if(GetReader()->GetOutputEvent())
137 clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetOutputEvent()->FindListObject(clusterListName));
139 AliVCluster * badClusTrig = 0;
140 if(clusterList) badClusTrig = (AliVCluster*) clusterList->At(idTrig);
141 else badClusTrig = GetReader()->GetInputEvent()->GetCaloCluster(idTrig);
145 printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() - No cluster (bad-exotic trigger) found with requested index %d \n",idTrig);
149 TLorentzVector momBadClus;
151 badClusTrig->GetMomentum(momBadClus,GetVertex(0));
153 Float_t etaclusterBad = momBadClus.Eta();
154 Float_t phiclusterBad = momBadClus.Phi();
155 if( phiclusterBad < 0 ) phiclusterBad+=TMath::TwoPi();
156 Float_t tofclusterBad = badClusTrig->GetTOF()*1.e9;
157 Float_t eclusterBad = badClusTrig->E();
161 if(GetReader()->IsTriggerMatched())
163 fhEtaPhiTriggerEMCALBCBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
164 fhTimeTriggerEMCALBCBadExoticCluster ->Fill(eclusterBad, tofclusterBad);
168 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
169 fhTimeTriggerEMCALBCUMBadExoticCluster ->Fill(eclusterBad, tofclusterBad);
172 else if( bad && !exotic )
174 if(GetReader()->IsTriggerMatched())
176 fhEtaPhiTriggerEMCALBCBadCluster->Fill(etaclusterBad, phiclusterBad);
177 fhTimeTriggerEMCALBCBadCluster ->Fill(eclusterBad, tofclusterBad);
181 fhEtaPhiTriggerEMCALBCUMBadCluster->Fill(etaclusterBad, phiclusterBad);
182 fhTimeTriggerEMCALBCUMBadCluster ->Fill(eclusterBad, tofclusterBad);
184 }// Bad cluster trigger
185 else if( !bad && exotic )
187 if(GetReader()->IsTriggerMatched())
189 fhEtaPhiTriggerEMCALBCExoticCluster->Fill(etaclusterBad, phiclusterBad);
190 fhTimeTriggerEMCALBCExoticCluster ->Fill(eclusterBad, tofclusterBad);
194 fhEtaPhiTriggerEMCALBCUMExoticCluster->Fill(etaclusterBad, phiclusterBad);
195 fhTimeTriggerEMCALBCUMExoticCluster ->Fill(eclusterBad, tofclusterBad);
201 //____________________________________________________________________________________________________________________________
202 void AliAnaEMCALTriggerClusters::FillRawClusterTriggerBCHistograms(Int_t idcalo, Float_t ecluster, Float_t tofcluster,
203 Float_t etacluster, Float_t phicluster)
206 // Fill trigger related histograms
208 Float_t tofclusterUS = TMath::Abs(tofcluster);
212 if (tofclusterUS < 25) fhEtaPhiEMCALBC0->Fill(etacluster, phicluster);
213 else if (tofclusterUS < 75) fhEtaPhiEMCALBC1->Fill(etacluster, phicluster);
214 else fhEtaPhiEMCALBCN->Fill(etacluster, phicluster);
217 Int_t bc = GetReader()->GetTriggerClusterBC();
218 Int_t id = GetReader()->GetTriggerClusterId();
219 Bool_t badMax = GetReader()->IsBadMaxCellTriggerEvent();
221 Int_t histoBC = bc+5;
222 if(GetReader()->AreBadTriggerEventsRemoved()) histoBC=0; // histograms created only for one BC since the others where rejected
226 //printf("AliAnaEMCALTriggerClusters::ClusterSelected() - No trigger found bc=%d\n",bc);
227 fhEtaPhiNoTrigger->Fill(etacluster, phicluster);
228 fhTimeNoTrigger ->Fill(ecluster, tofcluster);
230 else if(TMath::Abs(bc) < 6)
232 if(!GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent() )
234 if(GetReader()->IsTriggerMatched())
236 if(ecluster > 2) fhEtaPhiTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster);
237 fhTimeTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster);
238 if(GetReader()->IsPileUpFromSPD()) fhTimeTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster);
240 if(idcalo == GetReader()->GetTriggerClusterId())
242 fhEtaPhiTriggerEMCALBCCluster[histoBC]->Fill(etacluster, phicluster);
243 fhTimeTriggerEMCALBCCluster ->Fill(ecluster, tofcluster);
247 Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
248 if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
250 if(ecluster > threshold)
251 fhEtaPhiTriggerEMCALBCClusterOverTh->Fill(etacluster, phicluster);
252 else if(ecluster > threshold-1)
253 fhEtaPhiTriggerEMCALBCClusterBelowTh1->Fill(etacluster, phicluster);
255 fhEtaPhiTriggerEMCALBCClusterBelowTh2->Fill(etacluster, phicluster);
261 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
262 fhTimeTriggerEMCALBCUM[histoBC]->Fill(ecluster, tofcluster);
266 if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster);
267 if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster);
268 if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster);
271 if(idcalo == GetReader()->GetTriggerClusterId())
273 fhEtaPhiTriggerEMCALBCUMCluster[histoBC]->Fill(etacluster, phicluster);
274 fhTimeTriggerEMCALBCUMCluster->Fill(ecluster, tofcluster);
277 Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
278 if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
280 if(ecluster > threshold)
281 fhEtaPhiTriggerEMCALBCUMClusterOverTh->Fill(etacluster, phicluster);
282 else if(ecluster > threshold-1)
283 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->Fill(etacluster, phicluster);
285 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->Fill(etacluster, phicluster);
287 if(GetReader()->IsTriggerMatchedOpenCuts(0))
289 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->Fill(etacluster, phicluster);
290 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster ->Fill(ecluster, tofcluster);
292 if(GetReader()->IsTriggerMatchedOpenCuts(1))
294 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->Fill(etacluster, phicluster);
295 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster ->Fill(ecluster, tofcluster);
297 if(GetReader()->IsTriggerMatchedOpenCuts(2))
299 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->Fill(etacluster, phicluster);
300 fhTimeTriggerEMCALBCUMReMatchBothCluster ->Fill(ecluster, tofcluster);
306 }// neither bad nor exotic
307 else if(GetReader()->IsBadCellTriggerEvent() && GetReader()->IsExoticEvent())
309 if(GetReader()->IsTriggerMatched())
311 if(ecluster > 2) fhEtaPhiTriggerEMCALBCBadExotic->Fill(etacluster, phicluster);
312 fhTimeTriggerEMCALBCBadExotic->Fill(ecluster, tofcluster);
313 if(badMax) fhTimeTriggerEMCALBCBadMaxCellExotic->Fill(ecluster, tofcluster);
317 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBadExotic->Fill(etacluster, phicluster);
318 fhTimeTriggerEMCALBCUMBadExotic->Fill(ecluster, tofcluster);
319 if(badMax) fhTimeTriggerEMCALBCUMBadMaxCellExotic->Fill(ecluster, tofcluster);
322 }// Bad and exotic cluster trigger
323 else if(GetReader()->IsBadCellTriggerEvent() )
325 if(GetReader()->IsTriggerMatched())
327 if(ecluster > 2) fhEtaPhiTriggerEMCALBCBad->Fill(etacluster, phicluster);
328 fhTimeTriggerEMCALBCBad->Fill(ecluster, tofcluster);
329 if(badMax) fhTimeTriggerEMCALBCBadMaxCell->Fill(ecluster, tofcluster);
333 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBad->Fill(etacluster, phicluster);
334 fhTimeTriggerEMCALBCUMBad->Fill(ecluster, tofcluster);
335 if(badMax) fhTimeTriggerEMCALBCUMBadMaxCell->Fill(ecluster, tofcluster);
337 }// Bad cluster trigger
338 else if(GetReader()->IsExoticEvent() )
340 if(GetReader()->IsTriggerMatched())
342 if(ecluster > 2) fhEtaPhiTriggerEMCALBCExotic->Fill(etacluster, phicluster);
343 fhTimeTriggerEMCALBCExotic->Fill(ecluster, tofcluster);
347 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMExotic->Fill(etacluster, phicluster);
348 fhTimeTriggerEMCALBCUMExotic->Fill(ecluster, tofcluster);
352 else if(TMath::Abs(bc) >= 6)
353 printf("AliAnaEMCALTriggerClusters::ClusterSelected() - Trigger BC not expected = %d\n",bc);
358 //_________________________________________________________
359 TObjString * AliAnaEMCALTriggerClusters::GetAnalysisCuts()
361 //Save parameters used for analysis
362 TString parList ; //this will be list of parameters used for this analysis.
363 const Int_t buffersize = 255;
364 char onePar[buffersize] ;
366 snprintf(onePar,buffersize,"--- AliAnaEMCALTriggerClusters ---\n") ;
368 snprintf(onePar,buffersize,"fRejectTrackMatch: %d\n",fRejectTrackMatch) ;
370 snprintf(onePar,buffersize,"fMinM02: %2.2f, fMaxM02: %2.2f\n",fMinM02,fMaxM02) ;
372 snprintf(onePar,buffersize,"fNCellsCut: %d\n",fNCellsCut) ;
375 //Get parameters set in base class.
376 //parList += GetBaseParametersList() ;
378 return new TObjString(parList) ;
381 //________________________________________________________________________
382 TList * AliAnaEMCALTriggerClusters::GetCreateOutputObjects()
384 // Create histograms to be saved in output file and
385 // store them in outputContainer
386 TList * outputContainer = new TList() ;
387 outputContainer->SetName("EMCALTriggerClusters") ;
389 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
390 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
391 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
392 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins(); Float_t timemax = GetHistogramRanges()->GetHistoTimeMax(); Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
396 if(!GetReader()->AreBadTriggerEventsRemoved())
402 fhE = new TH1F("hE","raw cluster #it{E}",nptbins,ptmin,ptmax);
403 fhE->SetYTitle("d#it{N}/d#it{E} ");
404 fhE->SetXTitle("#it{E} (GeV)");
405 outputContainer->Add(fhE) ;
407 fhESelected = new TH1F("hESelected","selected cluster #it{E}",nptbins,ptmin,ptmax);
408 fhESelected->SetYTitle("d#it{N}/d#it{E} ");
409 fhESelected->SetXTitle("#it{E} (GeV)");
410 outputContainer->Add(fhESelected) ;
413 ("hEtaPhi","cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
414 fhEtaPhi->SetYTitle("#phi (rad)");
415 fhEtaPhi->SetXTitle("#eta");
416 outputContainer->Add(fhEtaPhi) ;
418 fhEtaPhiSelected = new TH2F
419 ("hEtaPhiSelected","selected cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
420 fhEtaPhiSelected->SetYTitle("#phi (rad)");
421 fhEtaPhiSelected->SetXTitle("#eta");
422 outputContainer->Add(fhEtaPhiSelected) ;
424 fhEtaPhiEMCALBC0 = new TH2F
425 ("hEtaPhiEMCALBC0","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
426 fhEtaPhiEMCALBC0->SetYTitle("#phi (rad)");
427 fhEtaPhiEMCALBC0->SetXTitle("#eta");
428 outputContainer->Add(fhEtaPhiEMCALBC0) ;
430 fhEtaPhiEMCALBC1 = new TH2F
431 ("hEtaPhiEMCALBC1","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax);
432 fhEtaPhiEMCALBC1->SetYTitle("#phi (rad)");
433 fhEtaPhiEMCALBC1->SetXTitle("#eta");
434 outputContainer->Add(fhEtaPhiEMCALBC1) ;
436 fhEtaPhiEMCALBCN = new TH2F
437 ("hEtaPhiEMCALBCN","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
438 fhEtaPhiEMCALBCN->SetYTitle("#phi (rad)");
439 fhEtaPhiEMCALBCN->SetXTitle("#eta");
440 outputContainer->Add(fhEtaPhiEMCALBCN) ;
442 for(Int_t i = 0; i < nTrigBC; i++)
444 fhEtaPhiTriggerEMCALBC[i] = new TH2F
445 (Form("hEtaPhiTriggerEMCALBC%d",i-iBCShift),
446 Form("cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift),
447 netabins,etamin,etamax,nphibins,phimin,phimax);
448 fhEtaPhiTriggerEMCALBC[i]->SetYTitle("#phi (rad)");
449 fhEtaPhiTriggerEMCALBC[i]->SetXTitle("#eta");
450 outputContainer->Add(fhEtaPhiTriggerEMCALBC[i]) ;
452 fhTimeTriggerEMCALBC[i] = new TH2F
453 (Form("hTimeTriggerEMCALBC%d",i-iBCShift),
454 Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift),
455 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
456 fhTimeTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)");
457 fhTimeTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)");
458 outputContainer->Add(fhTimeTriggerEMCALBC[i]);
460 fhTimeTriggerEMCALBCPileUpSPD[i] = new TH2F
461 (Form("hTimeTriggerEMCALBC%dPileUpSPD",i-iBCShift),
462 Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift),
463 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
464 fhTimeTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)");
465 fhTimeTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)");
466 outputContainer->Add(fhTimeTriggerEMCALBCPileUpSPD[i]);
468 fhEtaPhiTriggerEMCALBCUM[i] = new TH2F
469 (Form("hEtaPhiTriggerEMCALBC%d_UnMatch",i-iBCShift),
470 Form("cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
471 netabins,etamin,etamax,nphibins,phimin,phimax);
472 fhEtaPhiTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)");
473 fhEtaPhiTriggerEMCALBCUM[i]->SetXTitle("#eta");
474 outputContainer->Add(fhEtaPhiTriggerEMCALBCUM[i]) ;
476 fhTimeTriggerEMCALBCUM[i] = new TH2F
477 (Form("hTimeTriggerEMCALBC%d_UnMatch",i-iBCShift),
478 Form("cluster #it{time} vs #it{E} of clusters, unmatched trigger EMCAL-BC=%d",i-iBCShift),
479 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
480 fhTimeTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)");
481 fhTimeTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)");
482 outputContainer->Add(fhTimeTriggerEMCALBCUM[i]);
484 fhEtaPhiTriggerEMCALBCCluster[i] = new TH2F
485 (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger",i-iBCShift),
486 Form("trigger cluster, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift),
487 netabins,etamin,etamax,nphibins,phimin,phimax);
488 fhEtaPhiTriggerEMCALBCCluster[i]->SetYTitle("#phi (rad)");
489 fhEtaPhiTriggerEMCALBCCluster[i]->SetXTitle("#eta");
490 outputContainer->Add(fhEtaPhiTriggerEMCALBCCluster[i]) ;
492 fhEtaPhiTriggerEMCALBCUMCluster[i] = new TH2F
493 (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger_UnMatch",i-iBCShift),
494 Form("trigger cluster, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
495 netabins,etamin,etamax,nphibins,phimin,phimax);
496 fhEtaPhiTriggerEMCALBCUMCluster[i]->SetYTitle("#phi (rad)");
497 fhEtaPhiTriggerEMCALBCUMCluster[i]->SetXTitle("#eta");
498 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMCluster[i]) ;
501 fhTimeTriggerEMCALBCCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger",
502 "trigger cluster #it{time} vs #it{E} of clusters",
503 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
504 fhTimeTriggerEMCALBCCluster->SetXTitle("#it{E} (GeV)");
505 fhTimeTriggerEMCALBCCluster->SetYTitle("#it{time} (ns)");
506 outputContainer->Add(fhTimeTriggerEMCALBCCluster);
508 fhTimeTriggerEMCALBCUMCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger_UnMatch",
509 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger",
510 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
511 fhTimeTriggerEMCALBCUMCluster->SetXTitle("#it{E} (GeV)");
512 fhTimeTriggerEMCALBCUMCluster->SetYTitle("#it{time} (ns)");
513 outputContainer->Add(fhTimeTriggerEMCALBCUMCluster);
515 fhEtaPhiTriggerEMCALBCClusterOverTh = new TH2F
516 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold",
517 "trigger cluster #it{E} > trigger threshold, #eta vs #phi, Trigger EMCAL-BC=0",
518 netabins,etamin,etamax,nphibins,phimin,phimax);
519 fhEtaPhiTriggerEMCALBCClusterOverTh->SetYTitle("#phi (rad)");
520 fhEtaPhiTriggerEMCALBCClusterOverTh->SetXTitle("#eta");
521 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterOverTh) ;
523 fhEtaPhiTriggerEMCALBCUMClusterOverTh = new TH2F
524 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold_UnMatch",
525 "trigger cluster #it{E} > trigger threshold, #eta vs #phi, unmatched trigger EMCAL-BC=0",
526 netabins,etamin,etamax,nphibins,phimin,phimax);
527 fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetYTitle("#phi (rad)");
528 fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetXTitle("#eta");
529 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterOverTh) ;
531 fhEtaPhiTriggerEMCALBCClusterBelowTh1 = new TH2F
532 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1",
533 "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0",
534 netabins,etamin,etamax,nphibins,phimin,phimax);
535 fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetYTitle("#phi (rad)");
536 fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetXTitle("#eta");
537 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh1) ;
539 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1 = new TH2F
540 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1_UnMatch",
541 "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0",
542 netabins,etamin,etamax,nphibins,phimin,phimax);
543 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetYTitle("#phi (rad)");
544 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetXTitle("#eta");
545 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh1) ;
547 fhEtaPhiTriggerEMCALBCClusterBelowTh2 = new TH2F
548 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2",
549 "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0",
550 netabins,etamin,etamax,nphibins,phimin,phimax);
551 fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetYTitle("#phi (rad)");
552 fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetXTitle("#eta");
553 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh2) ;
555 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2 = new TH2F
556 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2_UnMatch",
557 "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0",
558 netabins,etamin,etamax,nphibins,phimin,phimax);
559 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetYTitle("#phi (rad)");
560 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetXTitle("#eta");
561 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh2) ;
563 if(!GetReader()->AreBadTriggerEventsRemoved())
565 fhEtaPhiTriggerEMCALBCExotic = new TH2F
566 ("hEtaPhiTriggerExotic",
567 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic",
568 netabins,etamin,etamax,nphibins,phimin,phimax);
569 fhEtaPhiTriggerEMCALBCExotic->SetYTitle("#phi (rad)");
570 fhEtaPhiTriggerEMCALBCExotic->SetXTitle("#eta");
571 outputContainer->Add(fhEtaPhiTriggerEMCALBCExotic) ;
573 fhTimeTriggerEMCALBCExotic = new TH2F
574 ("hTimeTriggerExotic",
575 "cluster #it{time} vs #it{E} of clusters, Trigger Exotic ",
576 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
577 fhTimeTriggerEMCALBCExotic->SetXTitle("#it{E} (GeV)");
578 fhTimeTriggerEMCALBCExotic->SetYTitle("#it{time} (ns)");
579 outputContainer->Add(fhTimeTriggerEMCALBCExotic);
581 fhEtaPhiTriggerEMCALBCUMExotic = new TH2F
582 ("hEtaPhiTriggerExotic_UnMatch",
583 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic",
584 netabins,etamin,etamax,nphibins,phimin,phimax);
585 fhEtaPhiTriggerEMCALBCUMExotic->SetYTitle("#phi (rad)");
586 fhEtaPhiTriggerEMCALBCUMExotic->SetXTitle("#eta");
587 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExotic) ;
589 fhTimeTriggerEMCALBCUMExotic = new TH2F
590 ("hTimeTriggerExotic_UnMatch",
591 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic",
592 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
593 fhTimeTriggerEMCALBCUMExotic->SetXTitle("#it{E} (GeV)");
594 fhTimeTriggerEMCALBCUMExotic->SetYTitle("#it{time} (ns)");
595 outputContainer->Add(fhTimeTriggerEMCALBCUMExotic);
597 fhEtaPhiTriggerEMCALBCExoticCluster = new TH2F
598 ("hEtaPhiTriggerExotic_OnlyTrigger",
599 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic",
600 netabins,etamin,etamax,nphibins,phimin,phimax);
601 fhEtaPhiTriggerEMCALBCExoticCluster->SetYTitle("#phi (rad)");
602 fhEtaPhiTriggerEMCALBCExoticCluster->SetXTitle("#eta");
603 outputContainer->Add(fhEtaPhiTriggerEMCALBCExoticCluster) ;
605 fhTimeTriggerEMCALBCExoticCluster = new TH2F
606 ("hTimeTriggerExotic_OnlyTrigger",
607 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Exotic",
608 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
609 fhTimeTriggerEMCALBCExoticCluster->SetXTitle("#it{E} (GeV)");
610 fhTimeTriggerEMCALBCExoticCluster->SetYTitle("#it{time} (ns)");
611 outputContainer->Add(fhTimeTriggerEMCALBCExoticCluster);
613 fhEtaPhiTriggerEMCALBCUMExoticCluster = new TH2F
614 ("hEtaPhiTriggerExotic_OnlyTrigger_UnMatch",
615 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic",
616 netabins,etamin,etamax,nphibins,phimin,phimax);
617 fhEtaPhiTriggerEMCALBCUMExoticCluster->SetYTitle("#phi (rad)");
618 fhEtaPhiTriggerEMCALBCUMExoticCluster->SetXTitle("#eta");
619 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExoticCluster) ;
621 fhTimeTriggerEMCALBCUMExoticCluster = new TH2F
622 ("hTimeTriggerExotic_OnlyTrigger_UnMatch",
623 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic",
624 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
625 fhTimeTriggerEMCALBCUMExoticCluster->SetXTitle("#it{E} (GeV)");
626 fhTimeTriggerEMCALBCUMExoticCluster->SetYTitle("#it{time} (ns)");
627 outputContainer->Add(fhTimeTriggerEMCALBCUMExoticCluster);
629 fhEtaPhiTriggerEMCALBCBad = new TH2F
630 ("hEtaPhiTriggerBad",
631 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad",
632 netabins,etamin,etamax,nphibins,phimin,phimax);
633 fhEtaPhiTriggerEMCALBCBad->SetYTitle("#phi (rad)");
634 fhEtaPhiTriggerEMCALBCBad->SetXTitle("#eta");
635 outputContainer->Add(fhEtaPhiTriggerEMCALBCBad) ;
637 fhTimeTriggerEMCALBCBad = new TH2F
639 "cluster #it{time} vs #it{E} of clusters, Trigger Bad ",
640 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
641 fhTimeTriggerEMCALBCBad->SetXTitle("#it{E} (GeV)");
642 fhTimeTriggerEMCALBCBad->SetYTitle("#it{time} (ns)");
643 outputContainer->Add(fhTimeTriggerEMCALBCBad);
645 fhEtaPhiTriggerEMCALBCUMBad = new TH2F
646 ("hEtaPhiTriggerBad_UnMatch",
647 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad",
648 netabins,etamin,etamax,nphibins,phimin,phimax);
649 fhEtaPhiTriggerEMCALBCUMBad->SetYTitle("#phi (rad)");
650 fhEtaPhiTriggerEMCALBCUMBad->SetXTitle("#eta");
651 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBad) ;
653 fhTimeTriggerEMCALBCUMBad = new TH2F
654 ("hTimeTriggerBad_UnMatch",
655 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad",
656 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
657 fhTimeTriggerEMCALBCUMBad->SetXTitle("#it{E} (GeV)");
658 fhTimeTriggerEMCALBCUMBad->SetYTitle("#it{time} (ns)");
659 outputContainer->Add(fhTimeTriggerEMCALBCUMBad);
661 fhEtaPhiTriggerEMCALBCBadCluster = new TH2F
662 ("hEtaPhiTriggerBad_OnlyTrigger",
663 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad",
664 netabins,etamin,etamax,nphibins,phimin,phimax);
665 fhEtaPhiTriggerEMCALBCBadCluster->SetYTitle("#phi (rad)");
666 fhEtaPhiTriggerEMCALBCBadCluster->SetXTitle("#eta");
667 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadCluster) ;
669 fhTimeTriggerEMCALBCBadCluster = new TH2F
670 ("hTimeTriggerBad_OnlyTrigger",
671 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad",
672 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
673 fhTimeTriggerEMCALBCBadCluster->SetXTitle("#it{E} (GeV)");
674 fhTimeTriggerEMCALBCBadCluster->SetYTitle("#it{time} (ns)");
675 outputContainer->Add(fhTimeTriggerEMCALBCBadCluster);
677 fhEtaPhiTriggerEMCALBCUMBadCluster = new TH2F
678 ("hEtaPhiTriggerBad_OnlyTrigger_UnMatch",
679 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad",
680 netabins,etamin,etamax,nphibins,phimin,phimax);
681 fhEtaPhiTriggerEMCALBCUMBadCluster->SetYTitle("#phi (rad)");
682 fhEtaPhiTriggerEMCALBCUMBadCluster->SetXTitle("#eta");
683 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadCluster) ;
685 fhTimeTriggerEMCALBCUMBadCluster = new TH2F
686 ("hTimeTriggerBad_OnlyTrigger_UnMatch",
687 "trigger cluster time vs #it{E} of clusters, unmatched trigger Bad",
688 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
689 fhTimeTriggerEMCALBCUMBadCluster->SetXTitle("#it{E} (GeV)");
690 fhTimeTriggerEMCALBCUMBadCluster->SetYTitle("#it{time} (ns)");
691 outputContainer->Add(fhTimeTriggerEMCALBCUMBadCluster);
693 fhEtaPhiTriggerEMCALBCBadExotic = new TH2F
694 ("hEtaPhiTriggerBadExotic",
695 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic",
696 netabins,etamin,etamax,nphibins,phimin,phimax);
697 fhEtaPhiTriggerEMCALBCBadExotic->SetYTitle("#phi (rad)");
698 fhEtaPhiTriggerEMCALBCBadExotic->SetXTitle("#eta");
699 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExotic) ;
701 fhTimeTriggerEMCALBCBadExotic = new TH2F
702 ("hTimeTriggerBadExotic",
703 "cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic ",
704 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
705 fhTimeTriggerEMCALBCBadExotic->SetXTitle("#it{E} (GeV)");
706 fhTimeTriggerEMCALBCBadExotic->SetYTitle("#it{time} (ns)");
707 outputContainer->Add(fhTimeTriggerEMCALBCBadExotic);
709 fhEtaPhiTriggerEMCALBCUMBadExotic = new TH2F
710 ("hEtaPhiTriggerBadExotic_UnMatch",
711 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic",
712 netabins,etamin,etamax,nphibins,phimin,phimax);
713 fhEtaPhiTriggerEMCALBCUMBadExotic->SetYTitle("#phi (rad)");
714 fhEtaPhiTriggerEMCALBCUMBadExotic->SetXTitle("#eta");
715 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExotic) ;
717 fhTimeTriggerEMCALBCUMBadExotic = new TH2F
718 ("hTimeTriggerBadExotic_UnMatch",
719 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic",
720 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
721 fhTimeTriggerEMCALBCUMBadExotic->SetXTitle("#it{E} (GeV)");
722 fhTimeTriggerEMCALBCUMBadExotic->SetYTitle("#it{time} (ns)");
723 outputContainer->Add(fhTimeTriggerEMCALBCUMBadExotic);
725 fhEtaPhiTriggerEMCALBCBadExoticCluster = new TH2F
726 ("hEtaPhiTriggerBadExotic_OnlyTrigger",
727 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic",
728 netabins,etamin,etamax,nphibins,phimin,phimax);
729 fhEtaPhiTriggerEMCALBCBadExoticCluster->SetYTitle("#phi (rad)");
730 fhEtaPhiTriggerEMCALBCBadExoticCluster->SetXTitle("#eta");
731 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExoticCluster) ;
733 fhTimeTriggerEMCALBCBadExoticCluster = new TH2F
734 ("hTimeTriggerBadExotic_OnlyTrigger",
735 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic",
736 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
737 fhTimeTriggerEMCALBCBadExoticCluster->SetXTitle("#it{E} (GeV)");
738 fhTimeTriggerEMCALBCBadExoticCluster->SetYTitle("#it{time} (ns)");
739 outputContainer->Add(fhTimeTriggerEMCALBCBadExoticCluster);
741 fhEtaPhiTriggerEMCALBCUMBadExoticCluster = new TH2F
742 ("hEtaPhiTriggerBadExotic_OnlyTrigger_UnMatch",
743 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic",
744 netabins,etamin,etamax,nphibins,phimin,phimax);
745 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetYTitle("#phi (rad)");
746 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetXTitle("#eta");
747 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExoticCluster) ;
749 fhTimeTriggerEMCALBCUMBadExoticCluster = new TH2F
750 ("hTimeTriggerBadExotic_OnlyTrigger_UnMatch",
751 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic",
752 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
753 fhTimeTriggerEMCALBCUMBadExoticCluster->SetXTitle("#it{E} (GeV)");
754 fhTimeTriggerEMCALBCUMBadExoticCluster->SetYTitle("#it{time} (ns)");
755 outputContainer->Add(fhTimeTriggerEMCALBCUMBadExoticCluster);
757 fhTimeTriggerEMCALBCBadMaxCell = new TH2F
758 ("hTimeTriggerBadMaxCell",
759 "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell",
760 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
761 fhTimeTriggerEMCALBCBadMaxCell->SetXTitle("#it{E} (GeV)");
762 fhTimeTriggerEMCALBCBadMaxCell->SetYTitle("#it{time} (ns)");
763 outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCell);
765 fhTimeTriggerEMCALBCUMBadMaxCell = new TH2F
766 ("hTimeTriggerBadMaxCell_UnMatch",
767 "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell",
768 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
769 fhTimeTriggerEMCALBCUMBadMaxCell->SetXTitle("#it{E} (GeV)");
770 fhTimeTriggerEMCALBCUMBadMaxCell->SetYTitle("#it{time} (ns)");
771 outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCell);
774 fhTimeTriggerEMCALBCBadMaxCellExotic = new TH2F
775 ("hTimeTriggerBadMaxCellExotic",
776 "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell&Exotic",
777 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
778 fhTimeTriggerEMCALBCBadMaxCellExotic->SetXTitle("#it{E} (GeV)");
779 fhTimeTriggerEMCALBCBadMaxCellExotic->SetYTitle("#it{time} (ns)");
780 outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCellExotic);
782 fhTimeTriggerEMCALBCUMBadMaxCellExotic = new TH2F
783 ("hTimeTriggerBadMaxCellExotic_UnMatch",
784 "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell&Exotic",
785 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
786 fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetXTitle("#it{E} (GeV)");
787 fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetYTitle("#it{time} (ns)");
788 outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCellExotic);
790 fhTimeNoTrigger = new TH2F
792 "events with no foundable trigger, time vs e of clusters",
793 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
794 fhTimeNoTrigger->SetXTitle("#it{E} (GeV)");
795 fhTimeNoTrigger->SetYTitle("#it{time} (ns)");
796 outputContainer->Add(fhTimeNoTrigger);
798 fhEtaPhiNoTrigger = new TH2F
800 "events with no foundable trigger, eta vs phi of clusters",
801 netabins,etamin,etamax,nphibins,phimin,phimax);
802 fhEtaPhiNoTrigger->SetYTitle("#phi (rad)");
803 fhEtaPhiNoTrigger->SetXTitle("#eta");
804 outputContainer->Add(fhEtaPhiNoTrigger) ;
807 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_OpenTime",
808 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time",
809 netabins,etamin,etamax,nphibins,phimin,phimax);
810 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#phi (rad)");
811 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#eta");
812 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster) ;
814 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_OpenTime",
815 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time",
816 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
817 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#it{E} (GeV)");
818 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#it{time} (ns)");
819 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster);
822 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours",
823 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch with neighbour patches",
824 netabins,etamin,etamax,nphibins,phimin,phimax);
825 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#phi (rad)");
826 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#eta");
827 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster) ;
829 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours",
830 "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches",
831 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
832 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#it{E} (GeV)");
833 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#it{time} (ns)");
834 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster);
836 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_Both",
837 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time and neighbour",
838 netabins,etamin,etamax,nphibins,phimin,phimax);
839 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#phi (rad)");
840 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#eta");
841 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchBothCluster) ;
843 fhTimeTriggerEMCALBCUMReMatchBothCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_Both",
844 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour",
845 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
846 fhTimeTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#it{E} (GeV)");
847 fhTimeTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#it{time} (ns)");
848 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchBothCluster);
850 fhTimeTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_OpenTime",
851 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time",
852 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
853 fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)");
854 fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)");
855 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchOpenTime);
858 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_CheckNeighbours",
859 "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches",
860 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
861 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)");
862 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)");
863 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchCheckNeigh);
865 fhTimeTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_Both",
866 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour",
867 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
868 fhTimeTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)");
869 fhTimeTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)");
870 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchBoth);
872 fhEtaPhiSelectedEMCALBC0 = new TH2F
873 ("hEtaPhiSelectedEMCALBC0","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
874 fhEtaPhiSelectedEMCALBC0->SetYTitle("#phi (rad)");
875 fhEtaPhiSelectedEMCALBC0->SetXTitle("#eta");
876 outputContainer->Add(fhEtaPhiSelectedEMCALBC0) ;
878 fhEtaPhiSelectedEMCALBC1 = new TH2F
879 ("hEtaPhiSelectedEMCALBC1","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax);
880 fhEtaPhiSelectedEMCALBC1->SetYTitle("#phi (rad)");
881 fhEtaPhiSelectedEMCALBC1->SetXTitle("#eta");
882 outputContainer->Add(fhEtaPhiSelectedEMCALBC1) ;
884 fhEtaPhiSelectedEMCALBCN = new TH2F
885 ("hEtaPhiSelectedEMCALBCN","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
886 fhEtaPhiSelectedEMCALBCN->SetYTitle("#phi (rad)");
887 fhEtaPhiSelectedEMCALBCN->SetXTitle("#eta");
888 outputContainer->Add(fhEtaPhiSelectedEMCALBCN) ;
890 for(Int_t i = 0; i < nTrigBC; i++)
892 fhEtaPhiSelectedTriggerEMCALBC[i] = new TH2F
893 (Form("hEtaPhiSelectedTriggerEMCALBC%d",i-iBCShift),
894 Form("photon #it{E} > 2 GeV, #eta vs #phi, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
895 netabins,etamin,etamax,nphibins,phimin,phimax);
896 fhEtaPhiSelectedTriggerEMCALBC[i]->SetYTitle("#phi (rad)");
897 fhEtaPhiSelectedTriggerEMCALBC[i]->SetXTitle("#eta");
898 outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBC[i]) ;
900 fhTimeSelectedTriggerEMCALBC[i] = new TH2F
901 (Form("hTimeSelectedTriggerEMCALBC%d",i-iBCShift),
902 Form("photon #it{time} vs #it{E} of clusters, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
903 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
904 fhTimeSelectedTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)");
905 fhTimeSelectedTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)");
906 outputContainer->Add(fhTimeSelectedTriggerEMCALBC[i]);
908 fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = new TH2F
909 (Form("hTimeSelectedTriggerEMCALBC%dPileUpSPD",i-iBCShift),
910 Form("photon #it{time} vs #it{E}, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
911 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
912 fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)");
913 fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)");
914 outputContainer->Add(fhTimeSelectedTriggerEMCALBCPileUpSPD[i]);
916 fhEtaPhiSelectedTriggerEMCALBCUM[i] = new TH2F
917 (Form("hEtaPhiSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift),
918 Form("photon #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
919 netabins,etamin,etamax,nphibins,phimin,phimax);
920 fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)");
921 fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetXTitle("#eta");
922 outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBCUM[i]) ;
924 fhTimeSelectedTriggerEMCALBCUM[i] = new TH2F
925 (Form("hTimeSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift),
926 Form("photon #it{time} vs #it{E}, unmatched trigger EMCAL-BC=%d",i-iBCShift),
927 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
928 fhTimeSelectedTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)");
929 fhTimeSelectedTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)");
930 outputContainer->Add(fhTimeSelectedTriggerEMCALBCUM[i]);
934 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_OpenTime",
935 "cluster #it{time} vs #it{E} of photons, no match, rematch open time",
936 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
937 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)");
938 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)");
939 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime);
942 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_CheckNeighbours",
943 "cluster #it{time} vs #it{E} of photons, no match, rematch with neigbour parches",
944 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
945 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)");
946 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)");
947 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh);
949 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_Both",
950 "cluster #it{time} vs #it{E} of photons, no match, rematch open time and neigbour",
951 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
952 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)");
953 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)");
954 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchBoth);
956 return outputContainer ;
960 //_______________________
961 void AliAnaEMCALTriggerClusters::Init()
966 if(!GetReader()->IsEMCALSwitchedOn() || GetReader()->GetDataType() == AliCaloTrackReader::kMC)
968 AliFatal("You want to use EMCAL real data in analysis but it is not read!! \n!!Check the configuration file!!\n");
973 //____________________________________________________________________________
974 void AliAnaEMCALTriggerClusters::InitParameters()
977 //Initialize the parameters of the analysis.
978 AddToHistogramsName("AnaEMCALTriggerCluster_");
980 fRejectTrackMatch = kTRUE;
987 //__________________________________________________________________
988 void AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms()
990 //Do photon analysis and fill aods
992 TObjArray * pl = GetEMCALClusters();
996 Info("MakeAnalysisFillHistograms","TObjArray with clusters is NULL!\n");
1000 FillBadTriggerEventHistogram();
1002 // Loop on raw clusters before filtering in the reader and fill control histogram
1004 Int_t nCaloClusters = pl->GetEntriesFast();
1005 Int_t idTrig = GetReader()->GetTriggerClusterIndex();
1008 if(GetDebug() > 0) printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() - Input cluster entries %d\n", nCaloClusters);
1011 for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
1013 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
1014 //printf("calo %d, %f\n",icalo,calo->E());
1016 calo->GetMomentum(mom,GetVertex(0)) ;
1018 Float_t tofcluster = calo->GetTOF()*1.e9;
1019 Float_t ecluster = mom.E();
1020 Float_t etacluster = mom.Eta();
1021 Float_t phicluster = mom.Phi();
1022 if(phicluster < 0) phicluster+=TMath::TwoPi();
1024 FillRawClusterTriggerBCHistograms(calo->GetID(),ecluster,tofcluster,etacluster,phicluster);
1028 if(idTrig < 0) continue;
1030 fhE->Fill(ecluster);
1031 if(ecluster > 0.5) fhEtaPhi->Fill(etacluster, phicluster);
1033 //.......................................
1034 //If too small or big energy, skip it
1035 if(ecluster < GetMinEnergy() || ecluster > GetMaxEnergy() ) continue ;
1037 //.......................................
1038 if(calo->GetNCells() <= fNCellsCut) continue;
1040 //.......................................
1041 //Check acceptance selection
1042 if(IsFiducialCutOn())
1044 Bool_t in = GetFiducialCut()->IsInFiducialCut(mom,"EMCAL") ;
1045 if(! in ) continue ;
1048 //.......................................
1049 //Skip matched clusters with tracks
1050 if(fRejectTrackMatch && IsTrackMatched(calo,GetReader()->GetInputEvent())) continue;
1052 //.......................................
1053 //Skip matched clusters with Large shower shape
1054 if(calo->GetM02() < fMinM02 || calo->GetM02() > fMaxM02) continue;
1056 fhESelected ->Fill(ecluster);
1057 if(ecluster > 0.5) fhEtaPhiSelected->Fill(etacluster, phicluster);
1059 Float_t tofUS = TMath::Abs(tofcluster);
1063 if (tofUS < 25) fhEtaPhiSelectedEMCALBC0->Fill(etacluster, phicluster);
1064 else if (tofUS < 75) fhEtaPhiSelectedEMCALBC1->Fill(etacluster, phicluster);
1065 else fhEtaPhiSelectedEMCALBCN->Fill(etacluster, phicluster);
1068 Int_t bc = GetReader()->GetTriggerClusterBC();
1069 Int_t histoBC = bc-5;
1070 if(GetReader()->AreBadTriggerEventsRemoved()) histoBC = 0 ; // histograms created only for one BC since the others where rejected
1072 if(TMath::Abs(bc) < 6 && !GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent())
1074 if(GetReader()->IsTriggerMatched())
1076 if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster);
1077 fhTimeSelectedTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster);
1078 if(GetReader()->IsPileUpFromSPD()) fhTimeSelectedTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster);
1082 if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
1083 fhTimeSelectedTriggerEMCALBCUM[histoBC]->Fill(calo->E(), tofcluster);
1087 if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster);
1088 if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster);
1089 if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeSelectedTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster);
1093 else if(TMath::Abs(bc) >= 6)
1094 printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() - Trigger BC not expected = %d\n",bc);
1098 if(GetDebug() > 1) printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() End fill histograms\n");
1103 //__________________________________________________________________
1104 void AliAnaEMCALTriggerClusters::Print(const Option_t * opt) const
1106 //Print some relevant parameters set for the analysis
1111 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1112 //AliAnaCaloTrackCorrBaseClass::Print(" ");
1113 printf("Reject clusters with a track matched = %d\n", fRejectTrackMatch);
1114 printf("M02 Cut: %2.2f < m02 < %2.2f\n" , fMinM02,fMaxM02);
1115 printf("Number of cells in cluster is > %d \n" , fNCellsCut);