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 behavior
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),
50 fhE(0), fhESelected(0),
51 fhEtaPhi(0), fhEtaPhiSelected(0),
52 fhEtaPhiEMCALBC0(0), fhEtaPhiEMCALBC1(0), fhEtaPhiEMCALBCN(0),
53 fhTimeTriggerEMCALBCCluster(0),
54 fhTimeTriggerEMCALBCUMCluster(0),
55 fhEtaPhiTriggerEMCALBCClusterOverTh(0),
56 fhEtaPhiTriggerEMCALBCUMClusterOverTh(0),
57 fhEtaPhiTriggerEMCALBCClusterBelowTh1(0),
58 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1(0),
59 fhEtaPhiTriggerEMCALBCClusterBelowTh2(0),
60 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2(0),
61 fhEtaPhiTriggerEMCALBCExotic(0), fhTimeTriggerEMCALBCExotic(0),
62 fhEtaPhiTriggerEMCALBCUMExotic(0), fhTimeTriggerEMCALBCUMExotic(0),
63 fhEtaPhiTriggerEMCALBCBad(0), fhTimeTriggerEMCALBCBad(0),
64 fhEtaPhiTriggerEMCALBCUMBad(0), fhTimeTriggerEMCALBCUMBad(0),
65 fhEtaPhiTriggerEMCALBCBadExotic(0), fhTimeTriggerEMCALBCBadExotic(0),
66 fhEtaPhiTriggerEMCALBCUMBadExotic(0), fhTimeTriggerEMCALBCUMBadExotic(0),
67 fhEtaPhiTriggerEMCALBCExoticCluster(0), fhTimeTriggerEMCALBCExoticCluster(0),
68 fhEtaPhiTriggerEMCALBCUMExoticCluster(0), fhTimeTriggerEMCALBCUMExoticCluster(0),
69 fhEtaPhiTriggerEMCALBCBadCluster(0), fhTimeTriggerEMCALBCBadCluster(0),
70 fhEtaPhiTriggerEMCALBCUMBadCluster(0), fhTimeTriggerEMCALBCUMBadCluster(0),
71 fhEtaPhiTriggerEMCALBCBadExoticCluster(0), fhTimeTriggerEMCALBCBadExoticCluster(0),
72 fhEtaPhiTriggerEMCALBCUMBadExoticCluster(0), fhTimeTriggerEMCALBCUMBadExoticCluster(0),
73 fhTimeTriggerEMCALBCBadMaxCell(0), fhTimeTriggerEMCALBCUMBadMaxCell(0),
74 fhTimeTriggerEMCALBCBadMaxCellExotic(0), fhTimeTriggerEMCALBCUMBadMaxCellExotic(0),
75 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster (0), fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster(0),
76 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster(0),fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster(0),
77 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster(0), fhTimeTriggerEMCALBCUMReMatchBothCluster(0),
78 fhTimeTriggerEMCALBC0UMReMatchOpenTime(0),
79 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh(0),
80 fhTimeTriggerEMCALBC0UMReMatchBoth(0),
81 fhEtaPhiNoTrigger(0), fhTimeNoTrigger(0),
82 fhEtaPhiSelectedEMCALBC0(0), fhEtaPhiSelectedEMCALBC1(0), fhEtaPhiSelectedEMCALBCN(0),
83 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime(0),
84 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh(0),
85 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth(0)
89 for(Int_t i = 0; i < 11; i++)
91 fhEtaPhiTriggerEMCALBC [i] = 0 ;
92 fhTimeTriggerEMCALBC [i] = 0 ;
93 fhEtaPhiTriggerEMCALBCUM [i] = 0 ;
94 fhTimeTriggerEMCALBCUM [i] = 0 ;
96 fhEtaPhiSelectedTriggerEMCALBC [i] = 0 ;
97 fhTimeSelectedTriggerEMCALBC [i] = 0 ;
98 fhEtaPhiSelectedTriggerEMCALBCUM [i] = 0 ;
99 fhTimeSelectedTriggerEMCALBCUM [i] = 0 ;
101 fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = 0 ;
102 fhTimeTriggerEMCALBCPileUpSPD [i] = 0 ;
104 fhEtaPhiTriggerEMCALBCCluster [i] = 0 ;
105 fhEtaPhiTriggerEMCALBCUMCluster [i] = 0 ;
108 //Initialize parameters
113 //_____________________________________________________________
114 void AliAnaEMCALTriggerClusters::FillBadTriggerEventHistogram()
116 // Fill Bad events histo, study bad/exotic trigger BC
118 Int_t idTrig = GetReader()->GetTriggerClusterIndex();
119 Bool_t exotic = GetReader()->IsExoticEvent();
120 Bool_t bad = GetReader()->IsBadCellTriggerEvent();
123 if(( bad || exotic ) && idTrig >= 0 && !GetReader()->AreBadTriggerEventsRemoved()) ok = kTRUE;
127 // printf("Index %d, Id %d, bad %d, exo %d\n",
128 // GetReader()->GetTriggerClusterIndex(),
129 // GetReader()->GetTriggerClusterId(),
130 // GetReader()->IsBadCellTriggerEvent(),
131 // GetReader()->IsExoticEvent() );
133 TClonesArray * clusterList = 0;
134 TString clusterListName = GetReader()->GetEMCALClusterListName();
135 if (GetReader()->GetInputEvent()->FindListObject(clusterListName))
136 clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetInputEvent() ->FindListObject(clusterListName));
137 else if(GetReader()->GetOutputEvent())
138 clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetOutputEvent()->FindListObject(clusterListName));
140 AliVCluster * badClusTrig = 0;
141 if(clusterList) badClusTrig = (AliVCluster*) clusterList->At(idTrig);
142 else badClusTrig = GetReader()->GetInputEvent()->GetCaloCluster(idTrig);
146 AliWarning(Form("No cluster (bad-exotic trigger) found with requested index %d \n",idTrig));
150 badClusTrig->GetMomentum(fMomentum,GetVertex(0));
152 Float_t etaclusterBad = fMomentum.Eta();
153 Float_t phiclusterBad = fMomentum.Phi();
154 if( phiclusterBad < 0 ) phiclusterBad+=TMath::TwoPi();
155 Float_t tofclusterBad = badClusTrig->GetTOF()*1.e9;
156 Float_t eclusterBad = badClusTrig->E();
160 if(GetReader()->IsTriggerMatched())
162 fhEtaPhiTriggerEMCALBCBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
163 fhTimeTriggerEMCALBCBadExoticCluster ->Fill(eclusterBad, tofclusterBad);
167 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
168 fhTimeTriggerEMCALBCUMBadExoticCluster ->Fill(eclusterBad, tofclusterBad);
171 else if( bad && !exotic )
173 if(GetReader()->IsTriggerMatched())
175 fhEtaPhiTriggerEMCALBCBadCluster->Fill(etaclusterBad, phiclusterBad);
176 fhTimeTriggerEMCALBCBadCluster ->Fill(eclusterBad, tofclusterBad);
180 fhEtaPhiTriggerEMCALBCUMBadCluster->Fill(etaclusterBad, phiclusterBad);
181 fhTimeTriggerEMCALBCUMBadCluster ->Fill(eclusterBad, tofclusterBad);
183 }// Bad cluster trigger
184 else if( !bad && exotic )
186 if(GetReader()->IsTriggerMatched())
188 fhEtaPhiTriggerEMCALBCExoticCluster->Fill(etaclusterBad, phiclusterBad);
189 fhTimeTriggerEMCALBCExoticCluster ->Fill(eclusterBad, tofclusterBad);
193 fhEtaPhiTriggerEMCALBCUMExoticCluster->Fill(etaclusterBad, phiclusterBad);
194 fhTimeTriggerEMCALBCUMExoticCluster ->Fill(eclusterBad, tofclusterBad);
200 //____________________________________________________________________________________________________________________________
201 void AliAnaEMCALTriggerClusters::FillRawClusterTriggerBCHistograms(Int_t idcalo, Float_t ecluster, Float_t tofcluster,
202 Float_t etacluster, Float_t phicluster)
205 // Fill trigger related histograms
207 Float_t tofclusterUS = TMath::Abs(tofcluster);
211 if (tofclusterUS < 25) fhEtaPhiEMCALBC0->Fill(etacluster, phicluster);
212 else if (tofclusterUS < 75) fhEtaPhiEMCALBC1->Fill(etacluster, phicluster);
213 else fhEtaPhiEMCALBCN->Fill(etacluster, phicluster);
216 Int_t bc = GetReader()->GetTriggerClusterBC();
217 Int_t id = GetReader()->GetTriggerClusterId();
218 Bool_t badMax = GetReader()->IsBadMaxCellTriggerEvent();
220 Int_t histoBC = bc+5;
221 if(GetReader()->AreBadTriggerEventsRemoved()) histoBC=0; // histograms created only for one BC since the others where rejected
225 //printf("AliAnaEMCALTriggerClusters::ClusterSelected() - No trigger found bc=%d\n",bc);
226 fhEtaPhiNoTrigger->Fill(etacluster, phicluster);
227 fhTimeNoTrigger ->Fill(ecluster, tofcluster);
229 else if(TMath::Abs(bc) < 6)
231 if(!GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent() )
233 if(GetReader()->IsTriggerMatched())
235 if(ecluster > 2) fhEtaPhiTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster);
236 fhTimeTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster);
237 if(GetReader()->IsPileUpFromSPD()) fhTimeTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster);
239 if(idcalo == GetReader()->GetTriggerClusterId())
241 fhEtaPhiTriggerEMCALBCCluster[histoBC]->Fill(etacluster, phicluster);
242 fhTimeTriggerEMCALBCCluster ->Fill(ecluster, tofcluster);
246 Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
247 if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
249 if(ecluster > threshold)
250 fhEtaPhiTriggerEMCALBCClusterOverTh->Fill(etacluster, phicluster);
251 else if(ecluster > threshold-1)
252 fhEtaPhiTriggerEMCALBCClusterBelowTh1->Fill(etacluster, phicluster);
254 fhEtaPhiTriggerEMCALBCClusterBelowTh2->Fill(etacluster, phicluster);
260 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
261 fhTimeTriggerEMCALBCUM[histoBC]->Fill(ecluster, tofcluster);
265 if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster);
266 if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster);
267 if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster);
270 if(idcalo == GetReader()->GetTriggerClusterId())
272 fhEtaPhiTriggerEMCALBCUMCluster[histoBC]->Fill(etacluster, phicluster);
273 fhTimeTriggerEMCALBCUMCluster->Fill(ecluster, tofcluster);
276 Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
277 if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
279 if(ecluster > threshold)
280 fhEtaPhiTriggerEMCALBCUMClusterOverTh->Fill(etacluster, phicluster);
281 else if(ecluster > threshold-1)
282 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->Fill(etacluster, phicluster);
284 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->Fill(etacluster, phicluster);
286 if(GetReader()->IsTriggerMatchedOpenCuts(0))
288 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->Fill(etacluster, phicluster);
289 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster ->Fill(ecluster, tofcluster);
291 if(GetReader()->IsTriggerMatchedOpenCuts(1))
293 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->Fill(etacluster, phicluster);
294 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster ->Fill(ecluster, tofcluster);
296 if(GetReader()->IsTriggerMatchedOpenCuts(2))
298 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->Fill(etacluster, phicluster);
299 fhTimeTriggerEMCALBCUMReMatchBothCluster ->Fill(ecluster, tofcluster);
305 }// neither bad nor exotic
306 else if(GetReader()->IsBadCellTriggerEvent() && GetReader()->IsExoticEvent())
308 if(GetReader()->IsTriggerMatched())
310 if(ecluster > 2) fhEtaPhiTriggerEMCALBCBadExotic->Fill(etacluster, phicluster);
311 fhTimeTriggerEMCALBCBadExotic->Fill(ecluster, tofcluster);
312 if(badMax) fhTimeTriggerEMCALBCBadMaxCellExotic->Fill(ecluster, tofcluster);
316 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBadExotic->Fill(etacluster, phicluster);
317 fhTimeTriggerEMCALBCUMBadExotic->Fill(ecluster, tofcluster);
318 if(badMax) fhTimeTriggerEMCALBCUMBadMaxCellExotic->Fill(ecluster, tofcluster);
321 }// Bad and exotic cluster trigger
322 else if(GetReader()->IsBadCellTriggerEvent() )
324 if(GetReader()->IsTriggerMatched())
326 if(ecluster > 2) fhEtaPhiTriggerEMCALBCBad->Fill(etacluster, phicluster);
327 fhTimeTriggerEMCALBCBad->Fill(ecluster, tofcluster);
328 if(badMax) fhTimeTriggerEMCALBCBadMaxCell->Fill(ecluster, tofcluster);
332 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBad->Fill(etacluster, phicluster);
333 fhTimeTriggerEMCALBCUMBad->Fill(ecluster, tofcluster);
334 if(badMax) fhTimeTriggerEMCALBCUMBadMaxCell->Fill(ecluster, tofcluster);
336 }// Bad cluster trigger
337 else if(GetReader()->IsExoticEvent() )
339 if(GetReader()->IsTriggerMatched())
341 if(ecluster > 2) fhEtaPhiTriggerEMCALBCExotic->Fill(etacluster, phicluster);
342 fhTimeTriggerEMCALBCExotic->Fill(ecluster, tofcluster);
346 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMExotic->Fill(etacluster, phicluster);
347 fhTimeTriggerEMCALBCUMExotic->Fill(ecluster, tofcluster);
351 else if(TMath::Abs(bc) >= 6) AliWarning(Form("Trigger BC not expected = %d\n",bc));
356 //_________________________________________________________
357 TObjString * AliAnaEMCALTriggerClusters::GetAnalysisCuts()
359 //Save parameters used for analysis
360 TString parList ; //this will be list of parameters used for this analysis.
361 const Int_t buffersize = 255;
362 char onePar[buffersize] ;
364 snprintf(onePar,buffersize,"--- AliAnaEMCALTriggerClusters ---:") ;
366 snprintf(onePar,buffersize,"fRejectTrackMatch: %d;",fRejectTrackMatch) ;
368 snprintf(onePar,buffersize,"fMinM02: %2.2f, fMaxM02: %2.2f;",fMinM02,fMaxM02) ;
370 snprintf(onePar,buffersize,"fNCellsCut: %d;",fNCellsCut) ;
373 //Get parameters set in base class.
374 //parList += GetBaseParametersList() ;
376 return new TObjString(parList) ;
379 //___________________________________________________________
380 TList * AliAnaEMCALTriggerClusters::GetCreateOutputObjects()
382 // Create histograms to be saved in output file and
383 // store them in outputContainer
384 TList * outputContainer = new TList() ;
385 outputContainer->SetName("EMCALTriggerClusters") ;
387 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
388 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
389 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
390 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins(); Float_t timemax = GetHistogramRanges()->GetHistoTimeMax(); Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
394 if(!GetReader()->AreBadTriggerEventsRemoved())
400 fhE = new TH1F("hE","raw cluster #it{E}",nptbins,ptmin,ptmax);
401 fhE->SetYTitle("d#it{N}/d#it{E} ");
402 fhE->SetXTitle("#it{E} (GeV)");
403 outputContainer->Add(fhE) ;
405 fhESelected = new TH1F("hESelected","selected cluster #it{E}",nptbins,ptmin,ptmax);
406 fhESelected->SetYTitle("d#it{N}/d#it{E} ");
407 fhESelected->SetXTitle("#it{E} (GeV)");
408 outputContainer->Add(fhESelected) ;
411 ("hEtaPhi","cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
412 fhEtaPhi->SetYTitle("#phi (rad)");
413 fhEtaPhi->SetXTitle("#eta");
414 outputContainer->Add(fhEtaPhi) ;
416 fhEtaPhiSelected = new TH2F
417 ("hEtaPhiSelected","selected cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
418 fhEtaPhiSelected->SetYTitle("#phi (rad)");
419 fhEtaPhiSelected->SetXTitle("#eta");
420 outputContainer->Add(fhEtaPhiSelected) ;
422 fhEtaPhiEMCALBC0 = new TH2F
423 ("hEtaPhiEMCALBC0","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
424 fhEtaPhiEMCALBC0->SetYTitle("#phi (rad)");
425 fhEtaPhiEMCALBC0->SetXTitle("#eta");
426 outputContainer->Add(fhEtaPhiEMCALBC0) ;
428 fhEtaPhiEMCALBC1 = new TH2F
429 ("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);
430 fhEtaPhiEMCALBC1->SetYTitle("#phi (rad)");
431 fhEtaPhiEMCALBC1->SetXTitle("#eta");
432 outputContainer->Add(fhEtaPhiEMCALBC1) ;
434 fhEtaPhiEMCALBCN = new TH2F
435 ("hEtaPhiEMCALBCN","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
436 fhEtaPhiEMCALBCN->SetYTitle("#phi (rad)");
437 fhEtaPhiEMCALBCN->SetXTitle("#eta");
438 outputContainer->Add(fhEtaPhiEMCALBCN) ;
440 for(Int_t i = 0; i < nTrigBC; i++)
442 fhEtaPhiTriggerEMCALBC[i] = new TH2F
443 (Form("hEtaPhiTriggerEMCALBC%d",i-iBCShift),
444 Form("cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift),
445 netabins,etamin,etamax,nphibins,phimin,phimax);
446 fhEtaPhiTriggerEMCALBC[i]->SetYTitle("#phi (rad)");
447 fhEtaPhiTriggerEMCALBC[i]->SetXTitle("#eta");
448 outputContainer->Add(fhEtaPhiTriggerEMCALBC[i]) ;
450 fhTimeTriggerEMCALBC[i] = new TH2F
451 (Form("hTimeTriggerEMCALBC%d",i-iBCShift),
452 Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift),
453 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
454 fhTimeTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)");
455 fhTimeTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)");
456 outputContainer->Add(fhTimeTriggerEMCALBC[i]);
458 fhTimeTriggerEMCALBCPileUpSPD[i] = new TH2F
459 (Form("hTimeTriggerEMCALBC%dPileUpSPD",i-iBCShift),
460 Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift),
461 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
462 fhTimeTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)");
463 fhTimeTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)");
464 outputContainer->Add(fhTimeTriggerEMCALBCPileUpSPD[i]);
466 fhEtaPhiTriggerEMCALBCUM[i] = new TH2F
467 (Form("hEtaPhiTriggerEMCALBC%d_UnMatch",i-iBCShift),
468 Form("cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
469 netabins,etamin,etamax,nphibins,phimin,phimax);
470 fhEtaPhiTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)");
471 fhEtaPhiTriggerEMCALBCUM[i]->SetXTitle("#eta");
472 outputContainer->Add(fhEtaPhiTriggerEMCALBCUM[i]) ;
474 fhTimeTriggerEMCALBCUM[i] = new TH2F
475 (Form("hTimeTriggerEMCALBC%d_UnMatch",i-iBCShift),
476 Form("cluster #it{time} vs #it{E} of clusters, unmatched trigger EMCAL-BC=%d",i-iBCShift),
477 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
478 fhTimeTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)");
479 fhTimeTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)");
480 outputContainer->Add(fhTimeTriggerEMCALBCUM[i]);
482 fhEtaPhiTriggerEMCALBCCluster[i] = new TH2F
483 (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger",i-iBCShift),
484 Form("trigger cluster, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift),
485 netabins,etamin,etamax,nphibins,phimin,phimax);
486 fhEtaPhiTriggerEMCALBCCluster[i]->SetYTitle("#phi (rad)");
487 fhEtaPhiTriggerEMCALBCCluster[i]->SetXTitle("#eta");
488 outputContainer->Add(fhEtaPhiTriggerEMCALBCCluster[i]) ;
490 fhEtaPhiTriggerEMCALBCUMCluster[i] = new TH2F
491 (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger_UnMatch",i-iBCShift),
492 Form("trigger cluster, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
493 netabins,etamin,etamax,nphibins,phimin,phimax);
494 fhEtaPhiTriggerEMCALBCUMCluster[i]->SetYTitle("#phi (rad)");
495 fhEtaPhiTriggerEMCALBCUMCluster[i]->SetXTitle("#eta");
496 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMCluster[i]) ;
499 fhTimeTriggerEMCALBCCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger",
500 "trigger cluster #it{time} vs #it{E} of clusters",
501 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
502 fhTimeTriggerEMCALBCCluster->SetXTitle("#it{E} (GeV)");
503 fhTimeTriggerEMCALBCCluster->SetYTitle("#it{time} (ns)");
504 outputContainer->Add(fhTimeTriggerEMCALBCCluster);
506 fhTimeTriggerEMCALBCUMCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger_UnMatch",
507 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger",
508 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
509 fhTimeTriggerEMCALBCUMCluster->SetXTitle("#it{E} (GeV)");
510 fhTimeTriggerEMCALBCUMCluster->SetYTitle("#it{time} (ns)");
511 outputContainer->Add(fhTimeTriggerEMCALBCUMCluster);
513 fhEtaPhiTriggerEMCALBCClusterOverTh = new TH2F
514 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold",
515 "trigger cluster #it{E} > trigger threshold, #eta vs #phi, Trigger EMCAL-BC=0",
516 netabins,etamin,etamax,nphibins,phimin,phimax);
517 fhEtaPhiTriggerEMCALBCClusterOverTh->SetYTitle("#phi (rad)");
518 fhEtaPhiTriggerEMCALBCClusterOverTh->SetXTitle("#eta");
519 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterOverTh) ;
521 fhEtaPhiTriggerEMCALBCUMClusterOverTh = new TH2F
522 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold_UnMatch",
523 "trigger cluster #it{E} > trigger threshold, #eta vs #phi, unmatched trigger EMCAL-BC=0",
524 netabins,etamin,etamax,nphibins,phimin,phimax);
525 fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetYTitle("#phi (rad)");
526 fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetXTitle("#eta");
527 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterOverTh) ;
529 fhEtaPhiTriggerEMCALBCClusterBelowTh1 = new TH2F
530 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1",
531 "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0",
532 netabins,etamin,etamax,nphibins,phimin,phimax);
533 fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetYTitle("#phi (rad)");
534 fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetXTitle("#eta");
535 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh1) ;
537 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1 = new TH2F
538 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1_UnMatch",
539 "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0",
540 netabins,etamin,etamax,nphibins,phimin,phimax);
541 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetYTitle("#phi (rad)");
542 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetXTitle("#eta");
543 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh1) ;
545 fhEtaPhiTriggerEMCALBCClusterBelowTh2 = new TH2F
546 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2",
547 "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0",
548 netabins,etamin,etamax,nphibins,phimin,phimax);
549 fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetYTitle("#phi (rad)");
550 fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetXTitle("#eta");
551 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh2) ;
553 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2 = new TH2F
554 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2_UnMatch",
555 "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0",
556 netabins,etamin,etamax,nphibins,phimin,phimax);
557 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetYTitle("#phi (rad)");
558 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetXTitle("#eta");
559 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh2) ;
561 if(!GetReader()->AreBadTriggerEventsRemoved())
563 fhEtaPhiTriggerEMCALBCExotic = new TH2F
564 ("hEtaPhiTriggerExotic",
565 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic",
566 netabins,etamin,etamax,nphibins,phimin,phimax);
567 fhEtaPhiTriggerEMCALBCExotic->SetYTitle("#phi (rad)");
568 fhEtaPhiTriggerEMCALBCExotic->SetXTitle("#eta");
569 outputContainer->Add(fhEtaPhiTriggerEMCALBCExotic) ;
571 fhTimeTriggerEMCALBCExotic = new TH2F
572 ("hTimeTriggerExotic",
573 "cluster #it{time} vs #it{E} of clusters, Trigger Exotic ",
574 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
575 fhTimeTriggerEMCALBCExotic->SetXTitle("#it{E} (GeV)");
576 fhTimeTriggerEMCALBCExotic->SetYTitle("#it{time} (ns)");
577 outputContainer->Add(fhTimeTriggerEMCALBCExotic);
579 fhEtaPhiTriggerEMCALBCUMExotic = new TH2F
580 ("hEtaPhiTriggerExotic_UnMatch",
581 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic",
582 netabins,etamin,etamax,nphibins,phimin,phimax);
583 fhEtaPhiTriggerEMCALBCUMExotic->SetYTitle("#phi (rad)");
584 fhEtaPhiTriggerEMCALBCUMExotic->SetXTitle("#eta");
585 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExotic) ;
587 fhTimeTriggerEMCALBCUMExotic = new TH2F
588 ("hTimeTriggerExotic_UnMatch",
589 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic",
590 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
591 fhTimeTriggerEMCALBCUMExotic->SetXTitle("#it{E} (GeV)");
592 fhTimeTriggerEMCALBCUMExotic->SetYTitle("#it{time} (ns)");
593 outputContainer->Add(fhTimeTriggerEMCALBCUMExotic);
595 fhEtaPhiTriggerEMCALBCExoticCluster = new TH2F
596 ("hEtaPhiTriggerExotic_OnlyTrigger",
597 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic",
598 netabins,etamin,etamax,nphibins,phimin,phimax);
599 fhEtaPhiTriggerEMCALBCExoticCluster->SetYTitle("#phi (rad)");
600 fhEtaPhiTriggerEMCALBCExoticCluster->SetXTitle("#eta");
601 outputContainer->Add(fhEtaPhiTriggerEMCALBCExoticCluster) ;
603 fhTimeTriggerEMCALBCExoticCluster = new TH2F
604 ("hTimeTriggerExotic_OnlyTrigger",
605 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Exotic",
606 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
607 fhTimeTriggerEMCALBCExoticCluster->SetXTitle("#it{E} (GeV)");
608 fhTimeTriggerEMCALBCExoticCluster->SetYTitle("#it{time} (ns)");
609 outputContainer->Add(fhTimeTriggerEMCALBCExoticCluster);
611 fhEtaPhiTriggerEMCALBCUMExoticCluster = new TH2F
612 ("hEtaPhiTriggerExotic_OnlyTrigger_UnMatch",
613 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic",
614 netabins,etamin,etamax,nphibins,phimin,phimax);
615 fhEtaPhiTriggerEMCALBCUMExoticCluster->SetYTitle("#phi (rad)");
616 fhEtaPhiTriggerEMCALBCUMExoticCluster->SetXTitle("#eta");
617 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExoticCluster) ;
619 fhTimeTriggerEMCALBCUMExoticCluster = new TH2F
620 ("hTimeTriggerExotic_OnlyTrigger_UnMatch",
621 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic",
622 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
623 fhTimeTriggerEMCALBCUMExoticCluster->SetXTitle("#it{E} (GeV)");
624 fhTimeTriggerEMCALBCUMExoticCluster->SetYTitle("#it{time} (ns)");
625 outputContainer->Add(fhTimeTriggerEMCALBCUMExoticCluster);
627 fhEtaPhiTriggerEMCALBCBad = new TH2F
628 ("hEtaPhiTriggerBad",
629 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad",
630 netabins,etamin,etamax,nphibins,phimin,phimax);
631 fhEtaPhiTriggerEMCALBCBad->SetYTitle("#phi (rad)");
632 fhEtaPhiTriggerEMCALBCBad->SetXTitle("#eta");
633 outputContainer->Add(fhEtaPhiTriggerEMCALBCBad) ;
635 fhTimeTriggerEMCALBCBad = new TH2F
637 "cluster #it{time} vs #it{E} of clusters, Trigger Bad ",
638 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
639 fhTimeTriggerEMCALBCBad->SetXTitle("#it{E} (GeV)");
640 fhTimeTriggerEMCALBCBad->SetYTitle("#it{time} (ns)");
641 outputContainer->Add(fhTimeTriggerEMCALBCBad);
643 fhEtaPhiTriggerEMCALBCUMBad = new TH2F
644 ("hEtaPhiTriggerBad_UnMatch",
645 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad",
646 netabins,etamin,etamax,nphibins,phimin,phimax);
647 fhEtaPhiTriggerEMCALBCUMBad->SetYTitle("#phi (rad)");
648 fhEtaPhiTriggerEMCALBCUMBad->SetXTitle("#eta");
649 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBad) ;
651 fhTimeTriggerEMCALBCUMBad = new TH2F
652 ("hTimeTriggerBad_UnMatch",
653 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad",
654 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
655 fhTimeTriggerEMCALBCUMBad->SetXTitle("#it{E} (GeV)");
656 fhTimeTriggerEMCALBCUMBad->SetYTitle("#it{time} (ns)");
657 outputContainer->Add(fhTimeTriggerEMCALBCUMBad);
659 fhEtaPhiTriggerEMCALBCBadCluster = new TH2F
660 ("hEtaPhiTriggerBad_OnlyTrigger",
661 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad",
662 netabins,etamin,etamax,nphibins,phimin,phimax);
663 fhEtaPhiTriggerEMCALBCBadCluster->SetYTitle("#phi (rad)");
664 fhEtaPhiTriggerEMCALBCBadCluster->SetXTitle("#eta");
665 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadCluster) ;
667 fhTimeTriggerEMCALBCBadCluster = new TH2F
668 ("hTimeTriggerBad_OnlyTrigger",
669 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad",
670 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
671 fhTimeTriggerEMCALBCBadCluster->SetXTitle("#it{E} (GeV)");
672 fhTimeTriggerEMCALBCBadCluster->SetYTitle("#it{time} (ns)");
673 outputContainer->Add(fhTimeTriggerEMCALBCBadCluster);
675 fhEtaPhiTriggerEMCALBCUMBadCluster = new TH2F
676 ("hEtaPhiTriggerBad_OnlyTrigger_UnMatch",
677 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad",
678 netabins,etamin,etamax,nphibins,phimin,phimax);
679 fhEtaPhiTriggerEMCALBCUMBadCluster->SetYTitle("#phi (rad)");
680 fhEtaPhiTriggerEMCALBCUMBadCluster->SetXTitle("#eta");
681 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadCluster) ;
683 fhTimeTriggerEMCALBCUMBadCluster = new TH2F
684 ("hTimeTriggerBad_OnlyTrigger_UnMatch",
685 "trigger cluster time vs #it{E} of clusters, unmatched trigger Bad",
686 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
687 fhTimeTriggerEMCALBCUMBadCluster->SetXTitle("#it{E} (GeV)");
688 fhTimeTriggerEMCALBCUMBadCluster->SetYTitle("#it{time} (ns)");
689 outputContainer->Add(fhTimeTriggerEMCALBCUMBadCluster);
691 fhEtaPhiTriggerEMCALBCBadExotic = new TH2F
692 ("hEtaPhiTriggerBadExotic",
693 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic",
694 netabins,etamin,etamax,nphibins,phimin,phimax);
695 fhEtaPhiTriggerEMCALBCBadExotic->SetYTitle("#phi (rad)");
696 fhEtaPhiTriggerEMCALBCBadExotic->SetXTitle("#eta");
697 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExotic) ;
699 fhTimeTriggerEMCALBCBadExotic = new TH2F
700 ("hTimeTriggerBadExotic",
701 "cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic ",
702 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
703 fhTimeTriggerEMCALBCBadExotic->SetXTitle("#it{E} (GeV)");
704 fhTimeTriggerEMCALBCBadExotic->SetYTitle("#it{time} (ns)");
705 outputContainer->Add(fhTimeTriggerEMCALBCBadExotic);
707 fhEtaPhiTriggerEMCALBCUMBadExotic = new TH2F
708 ("hEtaPhiTriggerBadExotic_UnMatch",
709 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic",
710 netabins,etamin,etamax,nphibins,phimin,phimax);
711 fhEtaPhiTriggerEMCALBCUMBadExotic->SetYTitle("#phi (rad)");
712 fhEtaPhiTriggerEMCALBCUMBadExotic->SetXTitle("#eta");
713 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExotic) ;
715 fhTimeTriggerEMCALBCUMBadExotic = new TH2F
716 ("hTimeTriggerBadExotic_UnMatch",
717 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic",
718 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
719 fhTimeTriggerEMCALBCUMBadExotic->SetXTitle("#it{E} (GeV)");
720 fhTimeTriggerEMCALBCUMBadExotic->SetYTitle("#it{time} (ns)");
721 outputContainer->Add(fhTimeTriggerEMCALBCUMBadExotic);
723 fhEtaPhiTriggerEMCALBCBadExoticCluster = new TH2F
724 ("hEtaPhiTriggerBadExotic_OnlyTrigger",
725 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic",
726 netabins,etamin,etamax,nphibins,phimin,phimax);
727 fhEtaPhiTriggerEMCALBCBadExoticCluster->SetYTitle("#phi (rad)");
728 fhEtaPhiTriggerEMCALBCBadExoticCluster->SetXTitle("#eta");
729 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExoticCluster) ;
731 fhTimeTriggerEMCALBCBadExoticCluster = new TH2F
732 ("hTimeTriggerBadExotic_OnlyTrigger",
733 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic",
734 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
735 fhTimeTriggerEMCALBCBadExoticCluster->SetXTitle("#it{E} (GeV)");
736 fhTimeTriggerEMCALBCBadExoticCluster->SetYTitle("#it{time} (ns)");
737 outputContainer->Add(fhTimeTriggerEMCALBCBadExoticCluster);
739 fhEtaPhiTriggerEMCALBCUMBadExoticCluster = new TH2F
740 ("hEtaPhiTriggerBadExotic_OnlyTrigger_UnMatch",
741 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic",
742 netabins,etamin,etamax,nphibins,phimin,phimax);
743 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetYTitle("#phi (rad)");
744 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetXTitle("#eta");
745 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExoticCluster) ;
747 fhTimeTriggerEMCALBCUMBadExoticCluster = new TH2F
748 ("hTimeTriggerBadExotic_OnlyTrigger_UnMatch",
749 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic",
750 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
751 fhTimeTriggerEMCALBCUMBadExoticCluster->SetXTitle("#it{E} (GeV)");
752 fhTimeTriggerEMCALBCUMBadExoticCluster->SetYTitle("#it{time} (ns)");
753 outputContainer->Add(fhTimeTriggerEMCALBCUMBadExoticCluster);
755 fhTimeTriggerEMCALBCBadMaxCell = new TH2F
756 ("hTimeTriggerBadMaxCell",
757 "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell",
758 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
759 fhTimeTriggerEMCALBCBadMaxCell->SetXTitle("#it{E} (GeV)");
760 fhTimeTriggerEMCALBCBadMaxCell->SetYTitle("#it{time} (ns)");
761 outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCell);
763 fhTimeTriggerEMCALBCUMBadMaxCell = new TH2F
764 ("hTimeTriggerBadMaxCell_UnMatch",
765 "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell",
766 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
767 fhTimeTriggerEMCALBCUMBadMaxCell->SetXTitle("#it{E} (GeV)");
768 fhTimeTriggerEMCALBCUMBadMaxCell->SetYTitle("#it{time} (ns)");
769 outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCell);
772 fhTimeTriggerEMCALBCBadMaxCellExotic = new TH2F
773 ("hTimeTriggerBadMaxCellExotic",
774 "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell&Exotic",
775 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
776 fhTimeTriggerEMCALBCBadMaxCellExotic->SetXTitle("#it{E} (GeV)");
777 fhTimeTriggerEMCALBCBadMaxCellExotic->SetYTitle("#it{time} (ns)");
778 outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCellExotic);
780 fhTimeTriggerEMCALBCUMBadMaxCellExotic = new TH2F
781 ("hTimeTriggerBadMaxCellExotic_UnMatch",
782 "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell&Exotic",
783 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
784 fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetXTitle("#it{E} (GeV)");
785 fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetYTitle("#it{time} (ns)");
786 outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCellExotic);
788 fhTimeNoTrigger = new TH2F
790 "events with no foundable trigger, time vs e of clusters",
791 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
792 fhTimeNoTrigger->SetXTitle("#it{E} (GeV)");
793 fhTimeNoTrigger->SetYTitle("#it{time} (ns)");
794 outputContainer->Add(fhTimeNoTrigger);
796 fhEtaPhiNoTrigger = new TH2F
798 "events with no foundable trigger, eta vs phi of clusters",
799 netabins,etamin,etamax,nphibins,phimin,phimax);
800 fhEtaPhiNoTrigger->SetYTitle("#phi (rad)");
801 fhEtaPhiNoTrigger->SetXTitle("#eta");
802 outputContainer->Add(fhEtaPhiNoTrigger) ;
805 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_OpenTime",
806 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time",
807 netabins,etamin,etamax,nphibins,phimin,phimax);
808 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#phi (rad)");
809 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#eta");
810 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster) ;
812 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_OpenTime",
813 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time",
814 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
815 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#it{E} (GeV)");
816 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#it{time} (ns)");
817 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster);
820 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours",
821 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch with neighbour patches",
822 netabins,etamin,etamax,nphibins,phimin,phimax);
823 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#phi (rad)");
824 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#eta");
825 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster) ;
827 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours",
828 "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches",
829 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
830 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#it{E} (GeV)");
831 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#it{time} (ns)");
832 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster);
834 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_Both",
835 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time and neighbour",
836 netabins,etamin,etamax,nphibins,phimin,phimax);
837 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#phi (rad)");
838 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#eta");
839 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchBothCluster) ;
841 fhTimeTriggerEMCALBCUMReMatchBothCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_Both",
842 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour",
843 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
844 fhTimeTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#it{E} (GeV)");
845 fhTimeTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#it{time} (ns)");
846 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchBothCluster);
848 fhTimeTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_OpenTime",
849 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time",
850 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
851 fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)");
852 fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)");
853 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchOpenTime);
856 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_CheckNeighbours",
857 "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches",
858 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
859 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)");
860 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)");
861 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchCheckNeigh);
863 fhTimeTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_Both",
864 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour",
865 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
866 fhTimeTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)");
867 fhTimeTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)");
868 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchBoth);
870 fhEtaPhiSelectedEMCALBC0 = new TH2F
871 ("hEtaPhiSelectedEMCALBC0","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
872 fhEtaPhiSelectedEMCALBC0->SetYTitle("#phi (rad)");
873 fhEtaPhiSelectedEMCALBC0->SetXTitle("#eta");
874 outputContainer->Add(fhEtaPhiSelectedEMCALBC0) ;
876 fhEtaPhiSelectedEMCALBC1 = new TH2F
877 ("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);
878 fhEtaPhiSelectedEMCALBC1->SetYTitle("#phi (rad)");
879 fhEtaPhiSelectedEMCALBC1->SetXTitle("#eta");
880 outputContainer->Add(fhEtaPhiSelectedEMCALBC1) ;
882 fhEtaPhiSelectedEMCALBCN = new TH2F
883 ("hEtaPhiSelectedEMCALBCN","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
884 fhEtaPhiSelectedEMCALBCN->SetYTitle("#phi (rad)");
885 fhEtaPhiSelectedEMCALBCN->SetXTitle("#eta");
886 outputContainer->Add(fhEtaPhiSelectedEMCALBCN) ;
888 for(Int_t i = 0; i < nTrigBC; i++)
890 fhEtaPhiSelectedTriggerEMCALBC[i] = new TH2F
891 (Form("hEtaPhiSelectedTriggerEMCALBC%d",i-iBCShift),
892 Form("photon #it{E} > 2 GeV, #eta vs #phi, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
893 netabins,etamin,etamax,nphibins,phimin,phimax);
894 fhEtaPhiSelectedTriggerEMCALBC[i]->SetYTitle("#phi (rad)");
895 fhEtaPhiSelectedTriggerEMCALBC[i]->SetXTitle("#eta");
896 outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBC[i]) ;
898 fhTimeSelectedTriggerEMCALBC[i] = new TH2F
899 (Form("hTimeSelectedTriggerEMCALBC%d",i-iBCShift),
900 Form("photon #it{time} vs #it{E} of clusters, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
901 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
902 fhTimeSelectedTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)");
903 fhTimeSelectedTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)");
904 outputContainer->Add(fhTimeSelectedTriggerEMCALBC[i]);
906 fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = new TH2F
907 (Form("hTimeSelectedTriggerEMCALBC%dPileUpSPD",i-iBCShift),
908 Form("photon #it{time} vs #it{E}, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
909 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
910 fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)");
911 fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)");
912 outputContainer->Add(fhTimeSelectedTriggerEMCALBCPileUpSPD[i]);
914 fhEtaPhiSelectedTriggerEMCALBCUM[i] = new TH2F
915 (Form("hEtaPhiSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift),
916 Form("photon #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
917 netabins,etamin,etamax,nphibins,phimin,phimax);
918 fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)");
919 fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetXTitle("#eta");
920 outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBCUM[i]) ;
922 fhTimeSelectedTriggerEMCALBCUM[i] = new TH2F
923 (Form("hTimeSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift),
924 Form("photon #it{time} vs #it{E}, unmatched trigger EMCAL-BC=%d",i-iBCShift),
925 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
926 fhTimeSelectedTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)");
927 fhTimeSelectedTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)");
928 outputContainer->Add(fhTimeSelectedTriggerEMCALBCUM[i]);
932 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_OpenTime",
933 "cluster #it{time} vs #it{E} of photons, no match, rematch open time",
934 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
935 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)");
936 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)");
937 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime);
940 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_CheckNeighbours",
941 "cluster #it{time} vs #it{E} of photons, no match, rematch with neigbour parches",
942 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
943 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)");
944 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)");
945 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh);
947 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_Both",
948 "cluster #it{time} vs #it{E} of photons, no match, rematch open time and neigbour",
949 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
950 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)");
951 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)");
952 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchBoth);
954 return outputContainer ;
958 //_____________________________________
959 void AliAnaEMCALTriggerClusters::Init()
964 if(!GetReader()->IsEMCALSwitchedOn() || GetReader()->GetDataType() == AliCaloTrackReader::kMC)
966 AliFatal("You want to use EMCAL real data in analysis but it is not read!! \n!!Check the configuration file!!\n");
971 //_______________________________________________
972 void AliAnaEMCALTriggerClusters::InitParameters()
975 //Initialize the parameters of the analysis.
976 AddToHistogramsName("AnaEMCALTriggerCluster_");
978 fRejectTrackMatch = kTRUE;
985 //____________________________________________________________
986 void AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms()
988 //Do photon analysis and fill aods
990 TObjArray * pl = GetEMCALClusters();
994 AliWarning("TObjArray with clusters is NULL!");
998 FillBadTriggerEventHistogram();
1000 // Loop on raw clusters before filtering in the reader and fill control histogram
1002 Int_t nCaloClusters = pl->GetEntriesFast();
1003 Int_t idTrig = GetReader()->GetTriggerClusterIndex();
1005 AliDebug(1,Form("Input cluster entries %d", nCaloClusters));
1008 for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
1010 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
1011 //printf("calo %d, %f\n",icalo,calo->E());
1013 calo->GetMomentum(fMomentum,GetVertex(0)) ;
1015 Float_t tofcluster = calo->GetTOF()*1.e9;
1016 Float_t ecluster = fMomentum.E();
1017 Float_t etacluster = fMomentum.Eta();
1018 Float_t phicluster = fMomentum.Phi();
1019 if(phicluster < 0) phicluster+=TMath::TwoPi();
1021 FillRawClusterTriggerBCHistograms(calo->GetID(),ecluster,tofcluster,etacluster,phicluster);
1025 if(idTrig < 0) continue;
1027 fhE->Fill(ecluster);
1028 if(ecluster > 0.5) fhEtaPhi->Fill(etacluster, phicluster);
1030 //.......................................
1031 //If too small or big energy, skip it
1032 if(ecluster < GetMinEnergy() || ecluster > GetMaxEnergy() ) continue ;
1034 //.......................................
1035 if(calo->GetNCells() <= fNCellsCut) continue;
1037 //.......................................
1038 //Check acceptance selection
1039 if(IsFiducialCutOn())
1041 Bool_t in = GetFiducialCut()->IsInFiducialCut(fMomentum.Eta(),fMomentum.Phi(),kEMCAL) ;
1042 if(! in ) continue ;
1045 //.......................................
1046 //Skip matched clusters with tracks
1047 if(fRejectTrackMatch && IsTrackMatched(calo,GetReader()->GetInputEvent())) continue;
1049 //.......................................
1050 //Skip matched clusters with Large shower shape
1051 if(calo->GetM02() < fMinM02 || calo->GetM02() > fMaxM02) continue;
1053 fhESelected ->Fill(ecluster);
1054 if(ecluster > 0.5) fhEtaPhiSelected->Fill(etacluster, phicluster);
1056 Float_t tofUS = TMath::Abs(tofcluster);
1060 if (tofUS < 25) fhEtaPhiSelectedEMCALBC0->Fill(etacluster, phicluster);
1061 else if (tofUS < 75) fhEtaPhiSelectedEMCALBC1->Fill(etacluster, phicluster);
1062 else fhEtaPhiSelectedEMCALBCN->Fill(etacluster, phicluster);
1065 Int_t bc = GetReader()->GetTriggerClusterBC();
1066 Int_t histoBC = bc-5;
1067 if(GetReader()->AreBadTriggerEventsRemoved()) histoBC = 0 ; // histograms created only for one BC since the others where rejected
1069 if(TMath::Abs(bc) < 6 && !GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent())
1071 if(GetReader()->IsTriggerMatched())
1073 if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster);
1074 fhTimeSelectedTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster);
1075 if(GetReader()->IsPileUpFromSPD()) fhTimeSelectedTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster);
1079 if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
1080 fhTimeSelectedTriggerEMCALBCUM[histoBC]->Fill(calo->E(), tofcluster);
1084 if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster);
1085 if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster);
1086 if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeSelectedTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster);
1090 else if(TMath::Abs(bc) >= 6)
1091 AliWarning(Form("Trigger BC not expected = %d",bc));
1095 AliDebug(1,"End fill histograms");
1100 //__________________________________________________________________
1101 void AliAnaEMCALTriggerClusters::Print(const Option_t * opt) const
1103 //Print some relevant parameters set for the analysis
1108 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1109 //AliAnaCaloTrackCorrBaseClass::Print(" ");
1110 printf("Reject clusters with a track matched = %d\n", fRejectTrackMatch);
1111 printf("M02 Cut: %2.2f < m02 < %2.2f\n" , fMinM02,fMaxM02);
1112 printf("Number of cells in cluster is > %d \n" , fNCellsCut);