]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaEMCALTriggerClusters.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaEMCALTriggerClusters.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes hereby granted      *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 //_________________________________________________________________________
17 //
18 // Class for study of EMCAL trigger behavior
19 //
20 // -- Author: Gustavo Conesa (CNRS-LPSC-Grenoble)
21 //////////////////////////////////////////////////////////////////////////////
22
23
24 // --- ROOT system ---
25 #include <TH2F.h>
26 #include <TClonesArray.h>
27 #include <TObjString.h>
28
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"
37
38 // --- Detectors ---
39 #include "AliEMCALGeometry.h"
40
41 ClassImp(AliAnaEMCALTriggerClusters)
42
43 //______________________________________________________
44 AliAnaEMCALTriggerClusters::AliAnaEMCALTriggerClusters() :
45 AliAnaCaloTrackCorrBaseClass(),
46 fRejectTrackMatch(0),         fNCellsCut(0),
47 fMinM02(0),                   fMaxM02(0),
48 fMomentum(),
49 // Histograms
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)
86 {
87   //default ctor
88   
89   for(Int_t i = 0; i < 11; i++)
90   {
91     fhEtaPhiTriggerEMCALBC             [i] = 0 ;
92     fhTimeTriggerEMCALBC               [i] = 0 ;
93     fhEtaPhiTriggerEMCALBCUM           [i] = 0 ;
94     fhTimeTriggerEMCALBCUM             [i] = 0 ;
95     
96     fhEtaPhiSelectedTriggerEMCALBC       [i] = 0 ;
97     fhTimeSelectedTriggerEMCALBC         [i] = 0 ;
98     fhEtaPhiSelectedTriggerEMCALBCUM     [i] = 0 ;
99     fhTimeSelectedTriggerEMCALBCUM       [i] = 0 ;
100     
101     fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = 0 ;
102     fhTimeTriggerEMCALBCPileUpSPD      [i] = 0 ;
103     
104     fhEtaPhiTriggerEMCALBCCluster      [i] = 0 ;
105     fhEtaPhiTriggerEMCALBCUMCluster    [i] = 0 ;    
106   }
107   
108   //Initialize parameters
109   InitParameters();
110   
111 }
112
113 //_____________________________________________________________
114 void AliAnaEMCALTriggerClusters::FillBadTriggerEventHistogram()
115 {
116   // Fill Bad events histo, study bad/exotic trigger BC
117   
118   Int_t  idTrig = GetReader()->GetTriggerClusterIndex();
119   Bool_t exotic = GetReader()->IsExoticEvent();
120   Bool_t bad    = GetReader()->IsBadCellTriggerEvent();
121   
122   Bool_t ok = kFALSE;
123   if(( bad || exotic )  && idTrig >= 0 && !GetReader()->AreBadTriggerEventsRemoved()) ok = kTRUE;
124   
125   if(!ok) return;
126   
127   //    printf("Index %d, Id %d,  bad %d, exo %d\n",
128   //           GetReader()->GetTriggerClusterIndex(),
129   //           GetReader()->GetTriggerClusterId(),
130   //           GetReader()->IsBadCellTriggerEvent(),
131   //           GetReader()->IsExoticEvent() );
132   
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));
139   
140   AliVCluster  *  badClusTrig = 0;
141   if(clusterList) badClusTrig = (AliVCluster*) clusterList->At(idTrig);
142   else            badClusTrig = GetReader()->GetInputEvent()->GetCaloCluster(idTrig);
143   
144   if(!badClusTrig)
145   {
146     AliWarning(Form("No cluster (bad-exotic trigger) found with requested index %d \n",idTrig));
147     return;
148   }
149   
150   badClusTrig->GetMomentum(fMomentum,GetVertex(0));
151   
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();
157   
158   if( bad && exotic )
159   {
160     if(GetReader()->IsTriggerMatched())
161     {
162       fhEtaPhiTriggerEMCALBCBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
163       fhTimeTriggerEMCALBCBadExoticCluster  ->Fill(eclusterBad,   tofclusterBad);
164     }
165     else
166     {
167       fhEtaPhiTriggerEMCALBCUMBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
168       fhTimeTriggerEMCALBCUMBadExoticCluster  ->Fill(eclusterBad,   tofclusterBad);
169     }
170   }
171   else if( bad && !exotic )
172   {
173     if(GetReader()->IsTriggerMatched())
174     {
175       fhEtaPhiTriggerEMCALBCBadCluster->Fill(etaclusterBad, phiclusterBad);
176       fhTimeTriggerEMCALBCBadCluster  ->Fill(eclusterBad,   tofclusterBad);
177     }
178     else
179     {
180       fhEtaPhiTriggerEMCALBCUMBadCluster->Fill(etaclusterBad, phiclusterBad);
181       fhTimeTriggerEMCALBCUMBadCluster  ->Fill(eclusterBad,   tofclusterBad);
182     }
183   }// Bad cluster trigger
184   else if( !bad && exotic )
185   {
186     if(GetReader()->IsTriggerMatched())
187     {
188       fhEtaPhiTriggerEMCALBCExoticCluster->Fill(etaclusterBad, phiclusterBad);
189       fhTimeTriggerEMCALBCExoticCluster  ->Fill(eclusterBad, tofclusterBad);
190     }
191     else
192     {
193       fhEtaPhiTriggerEMCALBCUMExoticCluster->Fill(etaclusterBad, phiclusterBad);
194       fhTimeTriggerEMCALBCUMExoticCluster  ->Fill(eclusterBad, tofclusterBad);
195     }
196   }
197   
198 }
199
200 //____________________________________________________________________________________________________________________________
201 void  AliAnaEMCALTriggerClusters::FillRawClusterTriggerBCHistograms(Int_t idcalo,       Float_t ecluster,  Float_t tofcluster,
202                                                                     Float_t etacluster, Float_t phicluster)
203
204 {
205   // Fill trigger related histograms
206   
207   Float_t tofclusterUS = TMath::Abs(tofcluster);
208   
209   if(ecluster > 2)
210   {
211     if      (tofclusterUS < 25) fhEtaPhiEMCALBC0->Fill(etacluster, phicluster);
212     else if (tofclusterUS < 75) fhEtaPhiEMCALBC1->Fill(etacluster, phicluster);
213     else                        fhEtaPhiEMCALBCN->Fill(etacluster, phicluster);
214   }
215   
216   Int_t  bc     = GetReader()->GetTriggerClusterBC();
217   Int_t  id     = GetReader()->GetTriggerClusterId();
218   Bool_t badMax = GetReader()->IsBadMaxCellTriggerEvent();
219   
220   Int_t histoBC = bc+5;
221   if(GetReader()->AreBadTriggerEventsRemoved()) histoBC=0; // histograms created only for one BC since the others where rejected
222   
223   if(id==-2)
224   {
225     //printf("AliAnaEMCALTriggerClusters::ClusterSelected() - No trigger found bc=%d\n",bc);
226     fhEtaPhiNoTrigger->Fill(etacluster, phicluster);
227     fhTimeNoTrigger  ->Fill(ecluster, tofcluster);
228   }
229   else if(TMath::Abs(bc) < 6)
230   {
231     if(!GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent() )
232     {
233       if(GetReader()->IsTriggerMatched())
234       {
235         if(ecluster > 2) fhEtaPhiTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster);
236         fhTimeTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster);
237         if(GetReader()->IsPileUpFromSPD()) fhTimeTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster);
238         
239         if(idcalo ==  GetReader()->GetTriggerClusterId())
240         {
241           fhEtaPhiTriggerEMCALBCCluster[histoBC]->Fill(etacluster, phicluster);
242           fhTimeTriggerEMCALBCCluster        ->Fill(ecluster, tofcluster);
243           
244           if(bc==0)
245           {
246             Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
247             if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
248             
249             if(ecluster > threshold)
250               fhEtaPhiTriggerEMCALBCClusterOverTh->Fill(etacluster, phicluster);
251             else if(ecluster > threshold-1)
252               fhEtaPhiTriggerEMCALBCClusterBelowTh1->Fill(etacluster, phicluster);
253             else
254               fhEtaPhiTriggerEMCALBCClusterBelowTh2->Fill(etacluster, phicluster);
255           }
256         }
257       }
258       else
259       {
260         if(ecluster > 2) fhEtaPhiTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
261         fhTimeTriggerEMCALBCUM[histoBC]->Fill(ecluster, tofcluster);
262         
263         if(bc==0)
264         {
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);
268         }
269         
270         if(idcalo ==  GetReader()->GetTriggerClusterId())
271         {
272           fhEtaPhiTriggerEMCALBCUMCluster[histoBC]->Fill(etacluster, phicluster);
273           fhTimeTriggerEMCALBCUMCluster->Fill(ecluster, tofcluster);
274           if(bc==0)
275           {
276             Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
277             if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
278             
279             if(ecluster > threshold)
280               fhEtaPhiTriggerEMCALBCUMClusterOverTh->Fill(etacluster, phicluster);
281             else if(ecluster > threshold-1)
282               fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->Fill(etacluster, phicluster);
283             else
284               fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->Fill(etacluster, phicluster);
285             
286             if(GetReader()->IsTriggerMatchedOpenCuts(0))
287             {
288               fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->Fill(etacluster, phicluster);
289               fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster  ->Fill(ecluster, tofcluster);
290             }
291             if(GetReader()->IsTriggerMatchedOpenCuts(1))
292             {
293               fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->Fill(etacluster, phicluster);
294               fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster  ->Fill(ecluster, tofcluster);
295             }
296             if(GetReader()->IsTriggerMatchedOpenCuts(2))
297             {
298               fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->Fill(etacluster, phicluster);
299               fhTimeTriggerEMCALBCUMReMatchBothCluster  ->Fill(ecluster, tofcluster);
300             }
301             
302           }
303         }
304       }
305     }// neither bad nor exotic
306     else if(GetReader()->IsBadCellTriggerEvent() && GetReader()->IsExoticEvent())
307     {
308       if(GetReader()->IsTriggerMatched())
309       {
310         if(ecluster > 2) fhEtaPhiTriggerEMCALBCBadExotic->Fill(etacluster, phicluster);
311         fhTimeTriggerEMCALBCBadExotic->Fill(ecluster, tofcluster);
312         if(badMax)  fhTimeTriggerEMCALBCBadMaxCellExotic->Fill(ecluster, tofcluster);
313       }
314       else
315       {
316         if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBadExotic->Fill(etacluster, phicluster);
317         fhTimeTriggerEMCALBCUMBadExotic->Fill(ecluster, tofcluster);
318         if(badMax)  fhTimeTriggerEMCALBCUMBadMaxCellExotic->Fill(ecluster, tofcluster);
319         
320       }
321     }// Bad and exotic cluster trigger
322     else if(GetReader()->IsBadCellTriggerEvent() )
323     {
324       if(GetReader()->IsTriggerMatched())
325       {
326         if(ecluster > 2) fhEtaPhiTriggerEMCALBCBad->Fill(etacluster, phicluster);
327         fhTimeTriggerEMCALBCBad->Fill(ecluster, tofcluster);
328         if(badMax)  fhTimeTriggerEMCALBCBadMaxCell->Fill(ecluster, tofcluster);
329       }
330       else
331       {
332         if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBad->Fill(etacluster, phicluster);
333         fhTimeTriggerEMCALBCUMBad->Fill(ecluster, tofcluster);
334         if(badMax)  fhTimeTriggerEMCALBCUMBadMaxCell->Fill(ecluster, tofcluster);
335       }
336     }// Bad cluster trigger
337     else if(GetReader()->IsExoticEvent() )
338     {
339       if(GetReader()->IsTriggerMatched())
340       {
341         if(ecluster > 2) fhEtaPhiTriggerEMCALBCExotic->Fill(etacluster, phicluster);
342         fhTimeTriggerEMCALBCExotic->Fill(ecluster, tofcluster);
343       }
344       else
345       {
346         if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMExotic->Fill(etacluster, phicluster);
347         fhTimeTriggerEMCALBCUMExotic->Fill(ecluster, tofcluster);
348       }
349     }
350   }
351   else if(TMath::Abs(bc) >= 6) AliWarning(Form("Trigger BC not expected = %d\n",bc));
352   
353 }
354
355
356 //_________________________________________________________
357 TObjString *  AliAnaEMCALTriggerClusters::GetAnalysisCuts()
358 {
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] ;
363   
364   snprintf(onePar,buffersize,"--- AliAnaEMCALTriggerClusters ---:") ;
365   parList+=onePar ;
366   snprintf(onePar,buffersize,"fRejectTrackMatch: %d;",fRejectTrackMatch) ;
367   parList+=onePar ;
368   snprintf(onePar,buffersize,"fMinM02: %2.2f, fMaxM02: %2.2f;",fMinM02,fMaxM02) ;
369   parList+=onePar ;
370   snprintf(onePar,buffersize,"fNCellsCut: %d;",fNCellsCut) ;
371   parList+=onePar ;
372   
373   //Get parameters set in base class.
374   //parList += GetBaseParametersList() ;
375   
376   return new TObjString(parList) ;
377 }
378
379 //___________________________________________________________
380 TList *  AliAnaEMCALTriggerClusters::GetCreateOutputObjects()
381 {
382   // Create histograms to be saved in output file and
383   // store them in outputContainer
384   TList * outputContainer = new TList() ;
385   outputContainer->SetName("EMCALTriggerClusters") ;
386         
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();
391   
392   Int_t nTrigBC  = 1;
393   Int_t iBCShift = 0;
394   if(!GetReader()->AreBadTriggerEventsRemoved())
395   {
396     nTrigBC = 11;
397     iBCShift = 5;
398   }
399   
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) ;
404   
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) ;
409
410   fhEtaPhi  = new TH2F
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) ;
415
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) ;
421   
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) ;
427   
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) ;
433   
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) ;
439   
440   for(Int_t i = 0; i < nTrigBC; i++)
441   {
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]) ;
449     
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]);
457     
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]);
465     
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]) ;
473     
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]);
481     
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]) ;
489     
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]) ;
497   }
498   
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);
505   
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);
512   
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) ;
520   
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) ;
528   
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) ;
536   
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) ;
544   
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) ;
552   
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) ;
560   
561   if(!GetReader()->AreBadTriggerEventsRemoved())
562   {
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) ;
570     
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);
578     
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) ;
586     
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);
594     
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) ;
602     
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);
610     
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) ;
618     
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);
626     
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) ;
634     
635     fhTimeTriggerEMCALBCBad = new TH2F
636     ("hTimeTriggerBad",
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);
642     
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) ;
650     
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);
658     
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) ;
666     
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);
674     
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) ;
682     
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);
690     
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) ;
698     
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);
706     
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) ;
714     
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);
722     
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) ;
730     
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);
738     
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) ;
746     
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);
754     
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);
762     
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);
770     
771     
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);
779     
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);
787     
788     fhTimeNoTrigger = new TH2F
789     ("hTimeNoTrigger",
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);
795     
796     fhEtaPhiNoTrigger = new TH2F
797     ("hEtaPhiNoTrigger",
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) ;
803   }
804   
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) ;
811   
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);
818   
819   
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) ;
826   
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);
833   
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) ;
840   
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);
847   
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);
854   
855   
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);
862   
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);
869   
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) ;
875   
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) ;
881   
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) ;
887   
888   for(Int_t i = 0; i < nTrigBC; i++)
889   {
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]) ;
897     
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]);
905     
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]);
913     
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]) ;
921     
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]);
929     
930   }
931   
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);
938   
939   
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);
946   
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);
953   
954   return outputContainer ;
955   
956 }
957
958 //_____________________________________
959 void AliAnaEMCALTriggerClusters::Init()
960 {
961   
962   //Init
963   //Do some checks
964   if(!GetReader()->IsEMCALSwitchedOn() || GetReader()->GetDataType() == AliCaloTrackReader::kMC)
965   {
966     AliFatal("You want to use EMCAL real data in analysis but it is not read!! \n!!Check the configuration file!!\n");
967   }
968   
969 }
970
971 //_______________________________________________
972 void AliAnaEMCALTriggerClusters::InitParameters()
973 {
974   
975   //Initialize the parameters of the analysis.
976   AddToHistogramsName("AnaEMCALTriggerCluster_");
977         
978   fRejectTrackMatch = kTRUE;
979   fMinM02           = 0.1;
980   fMaxM02           = 0.3;
981   fNCellsCut        = 2;
982   
983 }
984
985 //____________________________________________________________
986 void  AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms()
987 {
988   //Do photon analysis and fill aods
989   
990   TObjArray * pl = GetEMCALClusters();
991   
992   if(!pl)
993   {
994     AliWarning("TObjArray with clusters is NULL!");
995     return;
996   }
997   
998   FillBadTriggerEventHistogram();
999
1000   // Loop on raw clusters before filtering in the reader and fill control histogram
1001   
1002   Int_t nCaloClusters = pl->GetEntriesFast();
1003   Int_t idTrig        = GetReader()->GetTriggerClusterIndex();
1004
1005   AliDebug(1,Form("Input cluster entries %d", nCaloClusters));
1006   
1007   // Loop on clusters
1008   for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
1009   {
1010           AliVCluster * calo =  (AliVCluster*) (pl->At(icalo));
1011     //printf("calo %d, %f\n",icalo,calo->E());
1012     
1013     calo->GetMomentum(fMomentum,GetVertex(0)) ;
1014     
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();
1020     
1021     FillRawClusterTriggerBCHistograms(calo->GetID(),ecluster,tofcluster,etacluster,phicluster);
1022
1023     // Select clusters
1024     
1025     if(idTrig < 0) continue;
1026     
1027     fhE->Fill(ecluster);
1028     if(ecluster > 0.5) fhEtaPhi->Fill(etacluster, phicluster);
1029     
1030     //.......................................
1031     //If too small or big energy, skip it
1032     if(ecluster < GetMinEnergy() || ecluster > GetMaxEnergy() ) continue ;
1033     
1034     //.......................................
1035     if(calo->GetNCells() <= fNCellsCut) continue;
1036     
1037     //.......................................
1038     //Check acceptance selection
1039     if(IsFiducialCutOn())
1040     {
1041       Bool_t in = GetFiducialCut()->IsInFiducialCut(fMomentum.Eta(),fMomentum.Phi(),kEMCAL) ;
1042       if(! in ) continue ;
1043     }
1044     
1045     //.......................................
1046     //Skip matched clusters with tracks
1047     if(fRejectTrackMatch && IsTrackMatched(calo,GetReader()->GetInputEvent())) continue;
1048     
1049     //.......................................
1050     //Skip matched clusters with Large shower shape
1051     if(calo->GetM02() < fMinM02 || calo->GetM02() > fMaxM02) continue;
1052     
1053     fhESelected ->Fill(ecluster);
1054     if(ecluster > 0.5) fhEtaPhiSelected->Fill(etacluster, phicluster);
1055     
1056     Float_t  tofUS = TMath::Abs(tofcluster);
1057     
1058     if(calo->E() > 2)
1059     {
1060       if      (tofUS < 25) fhEtaPhiSelectedEMCALBC0->Fill(etacluster, phicluster);
1061       else if (tofUS < 75) fhEtaPhiSelectedEMCALBC1->Fill(etacluster, phicluster);
1062       else                 fhEtaPhiSelectedEMCALBCN->Fill(etacluster, phicluster);
1063     }
1064     
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
1068     
1069     if(TMath::Abs(bc) < 6 && !GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent())
1070     {
1071       if(GetReader()->IsTriggerMatched())
1072       {
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);
1076       }
1077       else
1078       {
1079         if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
1080         fhTimeSelectedTriggerEMCALBCUM[histoBC]->Fill(calo->E(), tofcluster);
1081         
1082         if(bc==0)
1083         {
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);
1087         }
1088       }
1089     }
1090     else if(TMath::Abs(bc) >= 6)
1091       AliWarning(Form("Trigger BC not expected = %d",bc));
1092     
1093   }// cluster loop
1094   
1095   AliDebug(1,"End fill histograms");
1096   
1097 }
1098
1099
1100 //__________________________________________________________________
1101 void AliAnaEMCALTriggerClusters::Print(const Option_t * opt) const
1102 {
1103   //Print some relevant parameters set for the analysis
1104   
1105   if(! opt)
1106     return;
1107   
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);
1113 }