]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaEMCALTriggerClusters.cxx
use new method to check the fiducial cut
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaEMCALTriggerClusters.cxx
CommitLineData
bc41680b 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 behaviour
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
41ClassImp(AliAnaEMCALTriggerClusters)
42
43//____________________________
44AliAnaEMCALTriggerClusters::AliAnaEMCALTriggerClusters() :
45AliAnaCaloTrackCorrBaseClass(),
46fRejectTrackMatch(0), fNCellsCut(0),
47fMinM02(0), fMaxM02(0),
48// Histograms
49fhE(0), fhESelected(0),
50fhEtaPhi(0), fhEtaPhiSelected(0),
51fhEtaPhiEMCALBC0(0), fhEtaPhiEMCALBC1(0), fhEtaPhiEMCALBCN(0),
52fhTimeTriggerEMCALBCCluster(0),
53fhTimeTriggerEMCALBCUMCluster(0),
54fhEtaPhiTriggerEMCALBCClusterOverTh(0),
55fhEtaPhiTriggerEMCALBCUMClusterOverTh(0),
56fhEtaPhiTriggerEMCALBCClusterBelowTh1(0),
57fhEtaPhiTriggerEMCALBCUMClusterBelowTh1(0),
58fhEtaPhiTriggerEMCALBCClusterBelowTh2(0),
59fhEtaPhiTriggerEMCALBCUMClusterBelowTh2(0),
60fhEtaPhiTriggerEMCALBCExotic(0), fhTimeTriggerEMCALBCExotic(0),
61fhEtaPhiTriggerEMCALBCUMExotic(0), fhTimeTriggerEMCALBCUMExotic(0),
62fhEtaPhiTriggerEMCALBCBad(0), fhTimeTriggerEMCALBCBad(0),
63fhEtaPhiTriggerEMCALBCUMBad(0), fhTimeTriggerEMCALBCUMBad(0),
64fhEtaPhiTriggerEMCALBCBadExotic(0), fhTimeTriggerEMCALBCBadExotic(0),
65fhEtaPhiTriggerEMCALBCUMBadExotic(0), fhTimeTriggerEMCALBCUMBadExotic(0),
66fhEtaPhiTriggerEMCALBCExoticCluster(0), fhTimeTriggerEMCALBCExoticCluster(0),
67fhEtaPhiTriggerEMCALBCUMExoticCluster(0), fhTimeTriggerEMCALBCUMExoticCluster(0),
68fhEtaPhiTriggerEMCALBCBadCluster(0), fhTimeTriggerEMCALBCBadCluster(0),
69fhEtaPhiTriggerEMCALBCUMBadCluster(0), fhTimeTriggerEMCALBCUMBadCluster(0),
70fhEtaPhiTriggerEMCALBCBadExoticCluster(0), fhTimeTriggerEMCALBCBadExoticCluster(0),
71fhEtaPhiTriggerEMCALBCUMBadExoticCluster(0), fhTimeTriggerEMCALBCUMBadExoticCluster(0),
72fhTimeTriggerEMCALBCBadMaxCell(0), fhTimeTriggerEMCALBCUMBadMaxCell(0),
73fhTimeTriggerEMCALBCBadMaxCellExotic(0), fhTimeTriggerEMCALBCUMBadMaxCellExotic(0),
74fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster (0), fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster(0),
75fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster(0),fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster(0),
76fhEtaPhiTriggerEMCALBCUMReMatchBothCluster(0), fhTimeTriggerEMCALBCUMReMatchBothCluster(0),
77fhTimeTriggerEMCALBC0UMReMatchOpenTime(0),
78fhTimeTriggerEMCALBC0UMReMatchCheckNeigh(0),
79fhTimeTriggerEMCALBC0UMReMatchBoth(0),
80fhEtaPhiNoTrigger(0), fhTimeNoTrigger(0),
81fhEtaPhiSelectedEMCALBC0(0), fhEtaPhiSelectedEMCALBC1(0), fhEtaPhiSelectedEMCALBCN(0),
82fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime(0),
83fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh(0),
84fhTimeSelectedTriggerEMCALBC0UMReMatchBoth(0)
85{
86 //default ctor
87
88 for(Int_t i = 0; i < 11; i++)
89 {
90 fhEtaPhiTriggerEMCALBC [i] = 0 ;
91 fhTimeTriggerEMCALBC [i] = 0 ;
92 fhEtaPhiTriggerEMCALBCUM [i] = 0 ;
93 fhTimeTriggerEMCALBCUM [i] = 0 ;
94
95 fhEtaPhiSelectedTriggerEMCALBC [i] = 0 ;
96 fhTimeSelectedTriggerEMCALBC [i] = 0 ;
97 fhEtaPhiSelectedTriggerEMCALBCUM [i] = 0 ;
98 fhTimeSelectedTriggerEMCALBCUM [i] = 0 ;
99
100 fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = 0 ;
101 fhTimeTriggerEMCALBCPileUpSPD [i] = 0 ;
102
103 fhEtaPhiTriggerEMCALBCCluster [i] = 0 ;
104 fhEtaPhiTriggerEMCALBCUMCluster [i] = 0 ;
105 }
106
107 //Initialize parameters
108 InitParameters();
109
110}
111
112//_____________________________________________________________
113void AliAnaEMCALTriggerClusters::FillBadTriggerEventHistogram()
114{
115 // Fill Bad events histo, study bad/exotic trigger BC
116
117 Int_t idTrig = GetReader()->GetTriggerClusterIndex();
118 Bool_t exotic = GetReader()->IsExoticEvent();
119 Bool_t bad = GetReader()->IsBadCellTriggerEvent();
120
121 Bool_t ok = kFALSE;
122 if(( bad || exotic ) && idTrig >= 0 && !GetReader()->AreBadTriggerEventsRemoved()) ok = kTRUE;
123
124 if(!ok) return;
125
126 // printf("Index %d, Id %d, bad %d, exo %d\n",
127 // GetReader()->GetTriggerClusterIndex(),
128 // GetReader()->GetTriggerClusterId(),
129 // GetReader()->IsBadCellTriggerEvent(),
130 // GetReader()->IsExoticEvent() );
131
132 TClonesArray * clusterList = 0;
133 TString clusterListName = GetReader()->GetEMCALClusterListName();
134 if (GetReader()->GetInputEvent()->FindListObject(clusterListName))
135 clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetInputEvent() ->FindListObject(clusterListName));
136 else if(GetReader()->GetOutputEvent())
137 clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetOutputEvent()->FindListObject(clusterListName));
138
139 AliVCluster * badClusTrig = 0;
140 if(clusterList) badClusTrig = (AliVCluster*) clusterList->At(idTrig);
141 else badClusTrig = GetReader()->GetInputEvent()->GetCaloCluster(idTrig);
142
143 if(!badClusTrig)
144 {
145 printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() - No cluster (bad-exotic trigger) found with requested index %d \n",idTrig);
146 return;
147 }
148
149 TLorentzVector momBadClus;
150
151 badClusTrig->GetMomentum(momBadClus,GetVertex(0));
152
153 Float_t etaclusterBad = momBadClus.Eta();
154 Float_t phiclusterBad = momBadClus.Phi();
155 if( phiclusterBad < 0 ) phiclusterBad+=TMath::TwoPi();
156 Float_t tofclusterBad = badClusTrig->GetTOF()*1.e9;
157 Float_t eclusterBad = badClusTrig->E();
158
159 if( bad && exotic )
160 {
161 if(GetReader()->IsTriggerMatched())
162 {
163 fhEtaPhiTriggerEMCALBCBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
164 fhTimeTriggerEMCALBCBadExoticCluster ->Fill(eclusterBad, tofclusterBad);
165 }
166 else
167 {
168 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->Fill(etaclusterBad, phiclusterBad);
169 fhTimeTriggerEMCALBCUMBadExoticCluster ->Fill(eclusterBad, tofclusterBad);
170 }
171 }
172 else if( bad && !exotic )
173 {
174 if(GetReader()->IsTriggerMatched())
175 {
176 fhEtaPhiTriggerEMCALBCBadCluster->Fill(etaclusterBad, phiclusterBad);
177 fhTimeTriggerEMCALBCBadCluster ->Fill(eclusterBad, tofclusterBad);
178 }
179 else
180 {
181 fhEtaPhiTriggerEMCALBCUMBadCluster->Fill(etaclusterBad, phiclusterBad);
182 fhTimeTriggerEMCALBCUMBadCluster ->Fill(eclusterBad, tofclusterBad);
183 }
184 }// Bad cluster trigger
185 else if( !bad && exotic )
186 {
187 if(GetReader()->IsTriggerMatched())
188 {
189 fhEtaPhiTriggerEMCALBCExoticCluster->Fill(etaclusterBad, phiclusterBad);
190 fhTimeTriggerEMCALBCExoticCluster ->Fill(eclusterBad, tofclusterBad);
191 }
192 else
193 {
194 fhEtaPhiTriggerEMCALBCUMExoticCluster->Fill(etaclusterBad, phiclusterBad);
195 fhTimeTriggerEMCALBCUMExoticCluster ->Fill(eclusterBad, tofclusterBad);
196 }
197 }
198
199}
200
201//____________________________________________________________________________________________________________________________
202void AliAnaEMCALTriggerClusters::FillRawClusterTriggerBCHistograms(Int_t idcalo, Float_t ecluster, Float_t tofcluster,
203 Float_t etacluster, Float_t phicluster)
204
205{
206 // Fill trigger related histograms
207
208 Float_t tofclusterUS = TMath::Abs(tofcluster);
209
210 if(ecluster > 2)
211 {
212 if (tofclusterUS < 25) fhEtaPhiEMCALBC0->Fill(etacluster, phicluster);
213 else if (tofclusterUS < 75) fhEtaPhiEMCALBC1->Fill(etacluster, phicluster);
214 else fhEtaPhiEMCALBCN->Fill(etacluster, phicluster);
215 }
216
217 Int_t bc = GetReader()->GetTriggerClusterBC();
218 Int_t id = GetReader()->GetTriggerClusterId();
219 Bool_t badMax = GetReader()->IsBadMaxCellTriggerEvent();
220
221 Int_t histoBC = bc+5;
222 if(GetReader()->AreBadTriggerEventsRemoved()) histoBC=0; // histograms created only for one BC since the others where rejected
223
224 if(id==-2)
225 {
226 //printf("AliAnaEMCALTriggerClusters::ClusterSelected() - No trigger found bc=%d\n",bc);
227 fhEtaPhiNoTrigger->Fill(etacluster, phicluster);
228 fhTimeNoTrigger ->Fill(ecluster, tofcluster);
229 }
230 else if(TMath::Abs(bc) < 6)
231 {
232 if(!GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent() )
233 {
234 if(GetReader()->IsTriggerMatched())
235 {
236 if(ecluster > 2) fhEtaPhiTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster);
237 fhTimeTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster);
238 if(GetReader()->IsPileUpFromSPD()) fhTimeTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster);
239
240 if(idcalo == GetReader()->GetTriggerClusterId())
241 {
242 fhEtaPhiTriggerEMCALBCCluster[histoBC]->Fill(etacluster, phicluster);
243 fhTimeTriggerEMCALBCCluster ->Fill(ecluster, tofcluster);
244
245 if(bc==0)
246 {
247 Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
248 if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
249
250 if(ecluster > threshold)
251 fhEtaPhiTriggerEMCALBCClusterOverTh->Fill(etacluster, phicluster);
252 else if(ecluster > threshold-1)
253 fhEtaPhiTriggerEMCALBCClusterBelowTh1->Fill(etacluster, phicluster);
254 else
255 fhEtaPhiTriggerEMCALBCClusterBelowTh2->Fill(etacluster, phicluster);
256 }
257 }
258 }
259 else
260 {
261 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
262 fhTimeTriggerEMCALBCUM[histoBC]->Fill(ecluster, tofcluster);
263
264 if(bc==0)
265 {
266 if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster);
267 if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster);
268 if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster);
269 }
270
271 if(idcalo == GetReader()->GetTriggerClusterId())
272 {
273 fhEtaPhiTriggerEMCALBCUMCluster[histoBC]->Fill(etacluster, phicluster);
274 fhTimeTriggerEMCALBCUMCluster->Fill(ecluster, tofcluster);
275 if(bc==0)
276 {
277 Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ;
278 if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ;
279
280 if(ecluster > threshold)
281 fhEtaPhiTriggerEMCALBCUMClusterOverTh->Fill(etacluster, phicluster);
282 else if(ecluster > threshold-1)
283 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->Fill(etacluster, phicluster);
284 else
285 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->Fill(etacluster, phicluster);
286
287 if(GetReader()->IsTriggerMatchedOpenCuts(0))
288 {
289 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->Fill(etacluster, phicluster);
290 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster ->Fill(ecluster, tofcluster);
291 }
292 if(GetReader()->IsTriggerMatchedOpenCuts(1))
293 {
294 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->Fill(etacluster, phicluster);
295 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster ->Fill(ecluster, tofcluster);
296 }
297 if(GetReader()->IsTriggerMatchedOpenCuts(2))
298 {
299 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->Fill(etacluster, phicluster);
300 fhTimeTriggerEMCALBCUMReMatchBothCluster ->Fill(ecluster, tofcluster);
301 }
302
303 }
304 }
305 }
306 }// neither bad nor exotic
307 else if(GetReader()->IsBadCellTriggerEvent() && GetReader()->IsExoticEvent())
308 {
309 if(GetReader()->IsTriggerMatched())
310 {
311 if(ecluster > 2) fhEtaPhiTriggerEMCALBCBadExotic->Fill(etacluster, phicluster);
312 fhTimeTriggerEMCALBCBadExotic->Fill(ecluster, tofcluster);
313 if(badMax) fhTimeTriggerEMCALBCBadMaxCellExotic->Fill(ecluster, tofcluster);
314 }
315 else
316 {
317 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBadExotic->Fill(etacluster, phicluster);
318 fhTimeTriggerEMCALBCUMBadExotic->Fill(ecluster, tofcluster);
319 if(badMax) fhTimeTriggerEMCALBCUMBadMaxCellExotic->Fill(ecluster, tofcluster);
320
321 }
322 }// Bad and exotic cluster trigger
323 else if(GetReader()->IsBadCellTriggerEvent() )
324 {
325 if(GetReader()->IsTriggerMatched())
326 {
327 if(ecluster > 2) fhEtaPhiTriggerEMCALBCBad->Fill(etacluster, phicluster);
328 fhTimeTriggerEMCALBCBad->Fill(ecluster, tofcluster);
329 if(badMax) fhTimeTriggerEMCALBCBadMaxCell->Fill(ecluster, tofcluster);
330 }
331 else
332 {
333 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBad->Fill(etacluster, phicluster);
334 fhTimeTriggerEMCALBCUMBad->Fill(ecluster, tofcluster);
335 if(badMax) fhTimeTriggerEMCALBCUMBadMaxCell->Fill(ecluster, tofcluster);
336 }
337 }// Bad cluster trigger
338 else if(GetReader()->IsExoticEvent() )
339 {
340 if(GetReader()->IsTriggerMatched())
341 {
342 if(ecluster > 2) fhEtaPhiTriggerEMCALBCExotic->Fill(etacluster, phicluster);
343 fhTimeTriggerEMCALBCExotic->Fill(ecluster, tofcluster);
344 }
345 else
346 {
347 if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMExotic->Fill(etacluster, phicluster);
348 fhTimeTriggerEMCALBCUMExotic->Fill(ecluster, tofcluster);
349 }
350 }
351 }
352 else if(TMath::Abs(bc) >= 6)
353 printf("AliAnaEMCALTriggerClusters::ClusterSelected() - Trigger BC not expected = %d\n",bc);
354
355}
356
357
358//_________________________________________________________
359TObjString * AliAnaEMCALTriggerClusters::GetAnalysisCuts()
360{
361 //Save parameters used for analysis
362 TString parList ; //this will be list of parameters used for this analysis.
363 const Int_t buffersize = 255;
364 char onePar[buffersize] ;
365
366 snprintf(onePar,buffersize,"--- AliAnaEMCALTriggerClusters ---\n") ;
367 parList+=onePar ;
368 snprintf(onePar,buffersize,"fRejectTrackMatch: %d\n",fRejectTrackMatch) ;
369 parList+=onePar ;
370 snprintf(onePar,buffersize,"fMinM02: %2.2f, fMaxM02: %2.2f\n",fMinM02,fMaxM02) ;
371 parList+=onePar ;
372 snprintf(onePar,buffersize,"fNCellsCut: %d\n",fNCellsCut) ;
373 parList+=onePar ;
374
375 //Get parameters set in base class.
376 //parList += GetBaseParametersList() ;
377
378 return new TObjString(parList) ;
379}
380
381//________________________________________________________________________
382TList * AliAnaEMCALTriggerClusters::GetCreateOutputObjects()
383{
384 // Create histograms to be saved in output file and
385 // store them in outputContainer
386 TList * outputContainer = new TList() ;
387 outputContainer->SetName("EMCALTriggerClusters") ;
388
389 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
390 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
391 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
392 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins(); Float_t timemax = GetHistogramRanges()->GetHistoTimeMax(); Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
393
394 Int_t nTrigBC = 1;
395 Int_t iBCShift = 0;
396 if(!GetReader()->AreBadTriggerEventsRemoved())
397 {
398 nTrigBC = 11;
399 iBCShift = 5;
400 }
401
402 fhE = new TH1F("hE","raw cluster #it{E}",nptbins,ptmin,ptmax);
403 fhE->SetYTitle("d#it{N}/d#it{E} ");
404 fhE->SetXTitle("#it{E} (GeV)");
405 outputContainer->Add(fhE) ;
406
407 fhESelected = new TH1F("hESelected","selected cluster #it{E}",nptbins,ptmin,ptmax);
408 fhESelected->SetYTitle("d#it{N}/d#it{E} ");
409 fhESelected->SetXTitle("#it{E} (GeV)");
410 outputContainer->Add(fhESelected) ;
411
412 fhEtaPhi = new TH2F
413 ("hEtaPhi","cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
414 fhEtaPhi->SetYTitle("#phi (rad)");
415 fhEtaPhi->SetXTitle("#eta");
416 outputContainer->Add(fhEtaPhi) ;
417
418 fhEtaPhiSelected = new TH2F
419 ("hEtaPhiSelected","selected cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax);
420 fhEtaPhiSelected->SetYTitle("#phi (rad)");
421 fhEtaPhiSelected->SetXTitle("#eta");
422 outputContainer->Add(fhEtaPhiSelected) ;
423
424 fhEtaPhiEMCALBC0 = new TH2F
425 ("hEtaPhiEMCALBC0","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
426 fhEtaPhiEMCALBC0->SetYTitle("#phi (rad)");
427 fhEtaPhiEMCALBC0->SetXTitle("#eta");
428 outputContainer->Add(fhEtaPhiEMCALBC0) ;
429
430 fhEtaPhiEMCALBC1 = new TH2F
431 ("hEtaPhiEMCALBC1","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax);
432 fhEtaPhiEMCALBC1->SetYTitle("#phi (rad)");
433 fhEtaPhiEMCALBC1->SetXTitle("#eta");
434 outputContainer->Add(fhEtaPhiEMCALBC1) ;
435
436 fhEtaPhiEMCALBCN = new TH2F
437 ("hEtaPhiEMCALBCN","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
438 fhEtaPhiEMCALBCN->SetYTitle("#phi (rad)");
439 fhEtaPhiEMCALBCN->SetXTitle("#eta");
440 outputContainer->Add(fhEtaPhiEMCALBCN) ;
441
442 for(Int_t i = 0; i < nTrigBC; i++)
443 {
444 fhEtaPhiTriggerEMCALBC[i] = new TH2F
445 (Form("hEtaPhiTriggerEMCALBC%d",i-iBCShift),
446 Form("cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift),
447 netabins,etamin,etamax,nphibins,phimin,phimax);
448 fhEtaPhiTriggerEMCALBC[i]->SetYTitle("#phi (rad)");
449 fhEtaPhiTriggerEMCALBC[i]->SetXTitle("#eta");
450 outputContainer->Add(fhEtaPhiTriggerEMCALBC[i]) ;
451
452 fhTimeTriggerEMCALBC[i] = new TH2F
453 (Form("hTimeTriggerEMCALBC%d",i-iBCShift),
454 Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift),
455 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
456 fhTimeTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)");
457 fhTimeTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)");
458 outputContainer->Add(fhTimeTriggerEMCALBC[i]);
459
460 fhTimeTriggerEMCALBCPileUpSPD[i] = new TH2F
461 (Form("hTimeTriggerEMCALBC%dPileUpSPD",i-iBCShift),
462 Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift),
463 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
464 fhTimeTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)");
465 fhTimeTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)");
466 outputContainer->Add(fhTimeTriggerEMCALBCPileUpSPD[i]);
467
468 fhEtaPhiTriggerEMCALBCUM[i] = new TH2F
469 (Form("hEtaPhiTriggerEMCALBC%d_UnMatch",i-iBCShift),
470 Form("cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
471 netabins,etamin,etamax,nphibins,phimin,phimax);
472 fhEtaPhiTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)");
473 fhEtaPhiTriggerEMCALBCUM[i]->SetXTitle("#eta");
474 outputContainer->Add(fhEtaPhiTriggerEMCALBCUM[i]) ;
475
476 fhTimeTriggerEMCALBCUM[i] = new TH2F
477 (Form("hTimeTriggerEMCALBC%d_UnMatch",i-iBCShift),
478 Form("cluster #it{time} vs #it{E} of clusters, unmatched trigger EMCAL-BC=%d",i-iBCShift),
479 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
480 fhTimeTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)");
481 fhTimeTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)");
482 outputContainer->Add(fhTimeTriggerEMCALBCUM[i]);
483
484 fhEtaPhiTriggerEMCALBCCluster[i] = new TH2F
485 (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger",i-iBCShift),
486 Form("trigger cluster, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift),
487 netabins,etamin,etamax,nphibins,phimin,phimax);
488 fhEtaPhiTriggerEMCALBCCluster[i]->SetYTitle("#phi (rad)");
489 fhEtaPhiTriggerEMCALBCCluster[i]->SetXTitle("#eta");
490 outputContainer->Add(fhEtaPhiTriggerEMCALBCCluster[i]) ;
491
492 fhEtaPhiTriggerEMCALBCUMCluster[i] = new TH2F
493 (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger_UnMatch",i-iBCShift),
494 Form("trigger cluster, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
495 netabins,etamin,etamax,nphibins,phimin,phimax);
496 fhEtaPhiTriggerEMCALBCUMCluster[i]->SetYTitle("#phi (rad)");
497 fhEtaPhiTriggerEMCALBCUMCluster[i]->SetXTitle("#eta");
498 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMCluster[i]) ;
499 }
500
501 fhTimeTriggerEMCALBCCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger",
502 "trigger cluster #it{time} vs #it{E} of clusters",
503 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
504 fhTimeTriggerEMCALBCCluster->SetXTitle("#it{E} (GeV)");
505 fhTimeTriggerEMCALBCCluster->SetYTitle("#it{time} (ns)");
506 outputContainer->Add(fhTimeTriggerEMCALBCCluster);
507
508 fhTimeTriggerEMCALBCUMCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger_UnMatch",
509 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger",
510 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
511 fhTimeTriggerEMCALBCUMCluster->SetXTitle("#it{E} (GeV)");
512 fhTimeTriggerEMCALBCUMCluster->SetYTitle("#it{time} (ns)");
513 outputContainer->Add(fhTimeTriggerEMCALBCUMCluster);
514
515 fhEtaPhiTriggerEMCALBCClusterOverTh = new TH2F
516 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold",
517 "trigger cluster #it{E} > trigger threshold, #eta vs #phi, Trigger EMCAL-BC=0",
518 netabins,etamin,etamax,nphibins,phimin,phimax);
519 fhEtaPhiTriggerEMCALBCClusterOverTh->SetYTitle("#phi (rad)");
520 fhEtaPhiTriggerEMCALBCClusterOverTh->SetXTitle("#eta");
521 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterOverTh) ;
522
523 fhEtaPhiTriggerEMCALBCUMClusterOverTh = new TH2F
524 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold_UnMatch",
525 "trigger cluster #it{E} > trigger threshold, #eta vs #phi, unmatched trigger EMCAL-BC=0",
526 netabins,etamin,etamax,nphibins,phimin,phimax);
527 fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetYTitle("#phi (rad)");
528 fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetXTitle("#eta");
529 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterOverTh) ;
530
531 fhEtaPhiTriggerEMCALBCClusterBelowTh1 = new TH2F
532 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1",
533 "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0",
534 netabins,etamin,etamax,nphibins,phimin,phimax);
535 fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetYTitle("#phi (rad)");
536 fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetXTitle("#eta");
537 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh1) ;
538
539 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1 = new TH2F
540 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1_UnMatch",
541 "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0",
542 netabins,etamin,etamax,nphibins,phimin,phimax);
543 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetYTitle("#phi (rad)");
544 fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetXTitle("#eta");
545 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh1) ;
546
547 fhEtaPhiTriggerEMCALBCClusterBelowTh2 = new TH2F
548 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2",
549 "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0",
550 netabins,etamin,etamax,nphibins,phimin,phimax);
551 fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetYTitle("#phi (rad)");
552 fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetXTitle("#eta");
553 outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh2) ;
554
555 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2 = new TH2F
556 ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2_UnMatch",
557 "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0",
558 netabins,etamin,etamax,nphibins,phimin,phimax);
559 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetYTitle("#phi (rad)");
560 fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetXTitle("#eta");
561 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh2) ;
562
563 if(!GetReader()->AreBadTriggerEventsRemoved())
564 {
565 fhEtaPhiTriggerEMCALBCExotic = new TH2F
566 ("hEtaPhiTriggerExotic",
567 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic",
568 netabins,etamin,etamax,nphibins,phimin,phimax);
569 fhEtaPhiTriggerEMCALBCExotic->SetYTitle("#phi (rad)");
570 fhEtaPhiTriggerEMCALBCExotic->SetXTitle("#eta");
571 outputContainer->Add(fhEtaPhiTriggerEMCALBCExotic) ;
572
573 fhTimeTriggerEMCALBCExotic = new TH2F
574 ("hTimeTriggerExotic",
575 "cluster #it{time} vs #it{E} of clusters, Trigger Exotic ",
576 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
577 fhTimeTriggerEMCALBCExotic->SetXTitle("#it{E} (GeV)");
578 fhTimeTriggerEMCALBCExotic->SetYTitle("#it{time} (ns)");
579 outputContainer->Add(fhTimeTriggerEMCALBCExotic);
580
581 fhEtaPhiTriggerEMCALBCUMExotic = new TH2F
582 ("hEtaPhiTriggerExotic_UnMatch",
583 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic",
584 netabins,etamin,etamax,nphibins,phimin,phimax);
585 fhEtaPhiTriggerEMCALBCUMExotic->SetYTitle("#phi (rad)");
586 fhEtaPhiTriggerEMCALBCUMExotic->SetXTitle("#eta");
587 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExotic) ;
588
589 fhTimeTriggerEMCALBCUMExotic = new TH2F
590 ("hTimeTriggerExotic_UnMatch",
591 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic",
592 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
593 fhTimeTriggerEMCALBCUMExotic->SetXTitle("#it{E} (GeV)");
594 fhTimeTriggerEMCALBCUMExotic->SetYTitle("#it{time} (ns)");
595 outputContainer->Add(fhTimeTriggerEMCALBCUMExotic);
596
597 fhEtaPhiTriggerEMCALBCExoticCluster = new TH2F
598 ("hEtaPhiTriggerExotic_OnlyTrigger",
599 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic",
600 netabins,etamin,etamax,nphibins,phimin,phimax);
601 fhEtaPhiTriggerEMCALBCExoticCluster->SetYTitle("#phi (rad)");
602 fhEtaPhiTriggerEMCALBCExoticCluster->SetXTitle("#eta");
603 outputContainer->Add(fhEtaPhiTriggerEMCALBCExoticCluster) ;
604
605 fhTimeTriggerEMCALBCExoticCluster = new TH2F
606 ("hTimeTriggerExotic_OnlyTrigger",
607 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Exotic",
608 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
609 fhTimeTriggerEMCALBCExoticCluster->SetXTitle("#it{E} (GeV)");
610 fhTimeTriggerEMCALBCExoticCluster->SetYTitle("#it{time} (ns)");
611 outputContainer->Add(fhTimeTriggerEMCALBCExoticCluster);
612
613 fhEtaPhiTriggerEMCALBCUMExoticCluster = new TH2F
614 ("hEtaPhiTriggerExotic_OnlyTrigger_UnMatch",
615 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic",
616 netabins,etamin,etamax,nphibins,phimin,phimax);
617 fhEtaPhiTriggerEMCALBCUMExoticCluster->SetYTitle("#phi (rad)");
618 fhEtaPhiTriggerEMCALBCUMExoticCluster->SetXTitle("#eta");
619 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExoticCluster) ;
620
621 fhTimeTriggerEMCALBCUMExoticCluster = new TH2F
622 ("hTimeTriggerExotic_OnlyTrigger_UnMatch",
623 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic",
624 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
625 fhTimeTriggerEMCALBCUMExoticCluster->SetXTitle("#it{E} (GeV)");
626 fhTimeTriggerEMCALBCUMExoticCluster->SetYTitle("#it{time} (ns)");
627 outputContainer->Add(fhTimeTriggerEMCALBCUMExoticCluster);
628
629 fhEtaPhiTriggerEMCALBCBad = new TH2F
630 ("hEtaPhiTriggerBad",
631 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad",
632 netabins,etamin,etamax,nphibins,phimin,phimax);
633 fhEtaPhiTriggerEMCALBCBad->SetYTitle("#phi (rad)");
634 fhEtaPhiTriggerEMCALBCBad->SetXTitle("#eta");
635 outputContainer->Add(fhEtaPhiTriggerEMCALBCBad) ;
636
637 fhTimeTriggerEMCALBCBad = new TH2F
638 ("hTimeTriggerBad",
639 "cluster #it{time} vs #it{E} of clusters, Trigger Bad ",
640 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
641 fhTimeTriggerEMCALBCBad->SetXTitle("#it{E} (GeV)");
642 fhTimeTriggerEMCALBCBad->SetYTitle("#it{time} (ns)");
643 outputContainer->Add(fhTimeTriggerEMCALBCBad);
644
645 fhEtaPhiTriggerEMCALBCUMBad = new TH2F
646 ("hEtaPhiTriggerBad_UnMatch",
647 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad",
648 netabins,etamin,etamax,nphibins,phimin,phimax);
649 fhEtaPhiTriggerEMCALBCUMBad->SetYTitle("#phi (rad)");
650 fhEtaPhiTriggerEMCALBCUMBad->SetXTitle("#eta");
651 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBad) ;
652
653 fhTimeTriggerEMCALBCUMBad = new TH2F
654 ("hTimeTriggerBad_UnMatch",
655 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad",
656 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
657 fhTimeTriggerEMCALBCUMBad->SetXTitle("#it{E} (GeV)");
658 fhTimeTriggerEMCALBCUMBad->SetYTitle("#it{time} (ns)");
659 outputContainer->Add(fhTimeTriggerEMCALBCUMBad);
660
661 fhEtaPhiTriggerEMCALBCBadCluster = new TH2F
662 ("hEtaPhiTriggerBad_OnlyTrigger",
663 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad",
664 netabins,etamin,etamax,nphibins,phimin,phimax);
665 fhEtaPhiTriggerEMCALBCBadCluster->SetYTitle("#phi (rad)");
666 fhEtaPhiTriggerEMCALBCBadCluster->SetXTitle("#eta");
667 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadCluster) ;
668
669 fhTimeTriggerEMCALBCBadCluster = new TH2F
670 ("hTimeTriggerBad_OnlyTrigger",
671 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad",
672 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
673 fhTimeTriggerEMCALBCBadCluster->SetXTitle("#it{E} (GeV)");
674 fhTimeTriggerEMCALBCBadCluster->SetYTitle("#it{time} (ns)");
675 outputContainer->Add(fhTimeTriggerEMCALBCBadCluster);
676
677 fhEtaPhiTriggerEMCALBCUMBadCluster = new TH2F
678 ("hEtaPhiTriggerBad_OnlyTrigger_UnMatch",
679 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad",
680 netabins,etamin,etamax,nphibins,phimin,phimax);
681 fhEtaPhiTriggerEMCALBCUMBadCluster->SetYTitle("#phi (rad)");
682 fhEtaPhiTriggerEMCALBCUMBadCluster->SetXTitle("#eta");
683 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadCluster) ;
684
685 fhTimeTriggerEMCALBCUMBadCluster = new TH2F
686 ("hTimeTriggerBad_OnlyTrigger_UnMatch",
687 "trigger cluster time vs #it{E} of clusters, unmatched trigger Bad",
688 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
689 fhTimeTriggerEMCALBCUMBadCluster->SetXTitle("#it{E} (GeV)");
690 fhTimeTriggerEMCALBCUMBadCluster->SetYTitle("#it{time} (ns)");
691 outputContainer->Add(fhTimeTriggerEMCALBCUMBadCluster);
692
693 fhEtaPhiTriggerEMCALBCBadExotic = new TH2F
694 ("hEtaPhiTriggerBadExotic",
695 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic",
696 netabins,etamin,etamax,nphibins,phimin,phimax);
697 fhEtaPhiTriggerEMCALBCBadExotic->SetYTitle("#phi (rad)");
698 fhEtaPhiTriggerEMCALBCBadExotic->SetXTitle("#eta");
699 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExotic) ;
700
701 fhTimeTriggerEMCALBCBadExotic = new TH2F
702 ("hTimeTriggerBadExotic",
703 "cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic ",
704 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
705 fhTimeTriggerEMCALBCBadExotic->SetXTitle("#it{E} (GeV)");
706 fhTimeTriggerEMCALBCBadExotic->SetYTitle("#it{time} (ns)");
707 outputContainer->Add(fhTimeTriggerEMCALBCBadExotic);
708
709 fhEtaPhiTriggerEMCALBCUMBadExotic = new TH2F
710 ("hEtaPhiTriggerBadExotic_UnMatch",
711 "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic",
712 netabins,etamin,etamax,nphibins,phimin,phimax);
713 fhEtaPhiTriggerEMCALBCUMBadExotic->SetYTitle("#phi (rad)");
714 fhEtaPhiTriggerEMCALBCUMBadExotic->SetXTitle("#eta");
715 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExotic) ;
716
717 fhTimeTriggerEMCALBCUMBadExotic = new TH2F
718 ("hTimeTriggerBadExotic_UnMatch",
719 "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic",
720 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
721 fhTimeTriggerEMCALBCUMBadExotic->SetXTitle("#it{E} (GeV)");
722 fhTimeTriggerEMCALBCUMBadExotic->SetYTitle("#it{time} (ns)");
723 outputContainer->Add(fhTimeTriggerEMCALBCUMBadExotic);
724
725 fhEtaPhiTriggerEMCALBCBadExoticCluster = new TH2F
726 ("hEtaPhiTriggerBadExotic_OnlyTrigger",
727 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic",
728 netabins,etamin,etamax,nphibins,phimin,phimax);
729 fhEtaPhiTriggerEMCALBCBadExoticCluster->SetYTitle("#phi (rad)");
730 fhEtaPhiTriggerEMCALBCBadExoticCluster->SetXTitle("#eta");
731 outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExoticCluster) ;
732
733 fhTimeTriggerEMCALBCBadExoticCluster = new TH2F
734 ("hTimeTriggerBadExotic_OnlyTrigger",
735 "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic",
736 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
737 fhTimeTriggerEMCALBCBadExoticCluster->SetXTitle("#it{E} (GeV)");
738 fhTimeTriggerEMCALBCBadExoticCluster->SetYTitle("#it{time} (ns)");
739 outputContainer->Add(fhTimeTriggerEMCALBCBadExoticCluster);
740
741 fhEtaPhiTriggerEMCALBCUMBadExoticCluster = new TH2F
742 ("hEtaPhiTriggerBadExotic_OnlyTrigger_UnMatch",
743 "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic",
744 netabins,etamin,etamax,nphibins,phimin,phimax);
745 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetYTitle("#phi (rad)");
746 fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetXTitle("#eta");
747 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExoticCluster) ;
748
749 fhTimeTriggerEMCALBCUMBadExoticCluster = new TH2F
750 ("hTimeTriggerBadExotic_OnlyTrigger_UnMatch",
751 "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic",
752 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
753 fhTimeTriggerEMCALBCUMBadExoticCluster->SetXTitle("#it{E} (GeV)");
754 fhTimeTriggerEMCALBCUMBadExoticCluster->SetYTitle("#it{time} (ns)");
755 outputContainer->Add(fhTimeTriggerEMCALBCUMBadExoticCluster);
756
757 fhTimeTriggerEMCALBCBadMaxCell = new TH2F
758 ("hTimeTriggerBadMaxCell",
759 "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell",
760 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
761 fhTimeTriggerEMCALBCBadMaxCell->SetXTitle("#it{E} (GeV)");
762 fhTimeTriggerEMCALBCBadMaxCell->SetYTitle("#it{time} (ns)");
763 outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCell);
764
765 fhTimeTriggerEMCALBCUMBadMaxCell = new TH2F
766 ("hTimeTriggerBadMaxCell_UnMatch",
767 "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell",
768 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
769 fhTimeTriggerEMCALBCUMBadMaxCell->SetXTitle("#it{E} (GeV)");
770 fhTimeTriggerEMCALBCUMBadMaxCell->SetYTitle("#it{time} (ns)");
771 outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCell);
772
773
774 fhTimeTriggerEMCALBCBadMaxCellExotic = new TH2F
775 ("hTimeTriggerBadMaxCellExotic",
776 "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell&Exotic",
777 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
778 fhTimeTriggerEMCALBCBadMaxCellExotic->SetXTitle("#it{E} (GeV)");
779 fhTimeTriggerEMCALBCBadMaxCellExotic->SetYTitle("#it{time} (ns)");
780 outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCellExotic);
781
782 fhTimeTriggerEMCALBCUMBadMaxCellExotic = new TH2F
783 ("hTimeTriggerBadMaxCellExotic_UnMatch",
784 "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell&Exotic",
785 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
786 fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetXTitle("#it{E} (GeV)");
787 fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetYTitle("#it{time} (ns)");
788 outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCellExotic);
789
790 fhTimeNoTrigger = new TH2F
791 ("hTimeNoTrigger",
792 "events with no foundable trigger, time vs e of clusters",
793 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
794 fhTimeNoTrigger->SetXTitle("#it{E} (GeV)");
795 fhTimeNoTrigger->SetYTitle("#it{time} (ns)");
796 outputContainer->Add(fhTimeNoTrigger);
797
798 fhEtaPhiNoTrigger = new TH2F
799 ("hEtaPhiNoTrigger",
800 "events with no foundable trigger, eta vs phi of clusters",
801 netabins,etamin,etamax,nphibins,phimin,phimax);
802 fhEtaPhiNoTrigger->SetYTitle("#phi (rad)");
803 fhEtaPhiNoTrigger->SetXTitle("#eta");
804 outputContainer->Add(fhEtaPhiNoTrigger) ;
805 }
806
807 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_OpenTime",
808 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time",
809 netabins,etamin,etamax,nphibins,phimin,phimax);
810 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#phi (rad)");
811 fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#eta");
812 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster) ;
813
814 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_OpenTime",
815 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time",
816 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
817 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#it{E} (GeV)");
818 fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#it{time} (ns)");
819 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster);
820
821
822 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours",
823 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch with neighbour patches",
824 netabins,etamin,etamax,nphibins,phimin,phimax);
825 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#phi (rad)");
826 fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#eta");
827 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster) ;
828
829 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours",
830 "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches",
831 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
832 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#it{E} (GeV)");
833 fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#it{time} (ns)");
834 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster);
835
836 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_Both",
837 "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time and neighbour",
838 netabins,etamin,etamax,nphibins,phimin,phimax);
839 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#phi (rad)");
840 fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#eta");
841 outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchBothCluster) ;
842
843 fhTimeTriggerEMCALBCUMReMatchBothCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_Both",
844 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour",
845 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
846 fhTimeTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#it{E} (GeV)");
847 fhTimeTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#it{time} (ns)");
848 outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchBothCluster);
849
850 fhTimeTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_OpenTime",
851 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time",
852 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
853 fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)");
854 fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)");
855 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchOpenTime);
856
857
858 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_CheckNeighbours",
859 "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches",
860 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
861 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)");
862 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)");
863 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchCheckNeigh);
864
865 fhTimeTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_Both",
866 "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour",
867 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
868 fhTimeTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)");
869 fhTimeTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)");
870 outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchBoth);
871
872 fhEtaPhiSelectedEMCALBC0 = new TH2F
873 ("hEtaPhiSelectedEMCALBC0","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
874 fhEtaPhiSelectedEMCALBC0->SetYTitle("#phi (rad)");
875 fhEtaPhiSelectedEMCALBC0->SetXTitle("#eta");
876 outputContainer->Add(fhEtaPhiSelectedEMCALBC0) ;
877
878 fhEtaPhiSelectedEMCALBC1 = new TH2F
879 ("hEtaPhiSelectedEMCALBC1","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax);
880 fhEtaPhiSelectedEMCALBC1->SetYTitle("#phi (rad)");
881 fhEtaPhiSelectedEMCALBC1->SetXTitle("#eta");
882 outputContainer->Add(fhEtaPhiSelectedEMCALBC1) ;
883
884 fhEtaPhiSelectedEMCALBCN = new TH2F
885 ("hEtaPhiSelectedEMCALBCN","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
886 fhEtaPhiSelectedEMCALBCN->SetYTitle("#phi (rad)");
887 fhEtaPhiSelectedEMCALBCN->SetXTitle("#eta");
888 outputContainer->Add(fhEtaPhiSelectedEMCALBCN) ;
889
890 for(Int_t i = 0; i < nTrigBC; i++)
891 {
892 fhEtaPhiSelectedTriggerEMCALBC[i] = new TH2F
893 (Form("hEtaPhiSelectedTriggerEMCALBC%d",i-iBCShift),
894 Form("photon #it{E} > 2 GeV, #eta vs #phi, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
895 netabins,etamin,etamax,nphibins,phimin,phimax);
896 fhEtaPhiSelectedTriggerEMCALBC[i]->SetYTitle("#phi (rad)");
897 fhEtaPhiSelectedTriggerEMCALBC[i]->SetXTitle("#eta");
898 outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBC[i]) ;
899
900 fhTimeSelectedTriggerEMCALBC[i] = new TH2F
901 (Form("hTimeSelectedTriggerEMCALBC%d",i-iBCShift),
902 Form("photon #it{time} vs #it{E} of clusters, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
903 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
904 fhTimeSelectedTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)");
905 fhTimeSelectedTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)");
906 outputContainer->Add(fhTimeSelectedTriggerEMCALBC[i]);
907
908 fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = new TH2F
909 (Form("hTimeSelectedTriggerEMCALBC%dPileUpSPD",i-iBCShift),
910 Form("photon #it{time} vs #it{E}, SelectedTrigger EMCAL-BC=%d",i-iBCShift),
911 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
912 fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)");
913 fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)");
914 outputContainer->Add(fhTimeSelectedTriggerEMCALBCPileUpSPD[i]);
915
916 fhEtaPhiSelectedTriggerEMCALBCUM[i] = new TH2F
917 (Form("hEtaPhiSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift),
918 Form("photon #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift),
919 netabins,etamin,etamax,nphibins,phimin,phimax);
920 fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)");
921 fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetXTitle("#eta");
922 outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBCUM[i]) ;
923
924 fhTimeSelectedTriggerEMCALBCUM[i] = new TH2F
925 (Form("hTimeSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift),
926 Form("photon #it{time} vs #it{E}, unmatched trigger EMCAL-BC=%d",i-iBCShift),
927 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
928 fhTimeSelectedTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)");
929 fhTimeSelectedTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)");
930 outputContainer->Add(fhTimeSelectedTriggerEMCALBCUM[i]);
931
932 }
933
934 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_OpenTime",
935 "cluster #it{time} vs #it{E} of photons, no match, rematch open time",
936 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
937 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)");
938 fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)");
939 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime);
940
941
942 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_CheckNeighbours",
943 "cluster #it{time} vs #it{E} of photons, no match, rematch with neigbour parches",
944 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
945 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)");
946 fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)");
947 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh);
948
949 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_Both",
950 "cluster #it{time} vs #it{E} of photons, no match, rematch open time and neigbour",
951 nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
952 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)");
953 fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)");
954 outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchBoth);
955
956 return outputContainer ;
957
958}
959
960//_______________________
961void AliAnaEMCALTriggerClusters::Init()
962{
963
964 //Init
965 //Do some checks
966 if(!GetReader()->IsEMCALSwitchedOn() || GetReader()->GetDataType() == AliCaloTrackReader::kMC)
967 {
968 AliFatal("You want to use EMCAL real data in analysis but it is not read!! \n!!Check the configuration file!!\n");
969 }
970
971}
972
973//____________________________________________________________________________
974void AliAnaEMCALTriggerClusters::InitParameters()
975{
976
977 //Initialize the parameters of the analysis.
978 AddToHistogramsName("AnaEMCALTriggerCluster_");
979
980 fRejectTrackMatch = kTRUE;
981 fMinM02 = 0.1;
982 fMaxM02 = 0.3;
983 fNCellsCut = 2;
984
985}
986
987//__________________________________________________________________
988void AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms()
989{
990 //Do photon analysis and fill aods
991
992 TObjArray * pl = GetEMCALClusters();
993
994 if(!pl)
995 {
996 Info("MakeAnalysisFillHistograms","TObjArray with clusters is NULL!\n");
997 return;
998 }
999
1000 FillBadTriggerEventHistogram();
1001
1002 // Loop on raw clusters before filtering in the reader and fill control histogram
1003
1004 Int_t nCaloClusters = pl->GetEntriesFast();
1005 Int_t idTrig = GetReader()->GetTriggerClusterIndex();
1006 TLorentzVector mom;
1007
1008 if(GetDebug() > 0) printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() - Input cluster entries %d\n", nCaloClusters);
1009
1010 // Loop on clusters
1011 for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
1012 {
1013 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
1014 //printf("calo %d, %f\n",icalo,calo->E());
1015
1016 calo->GetMomentum(mom,GetVertex(0)) ;
1017
1018 Float_t tofcluster = calo->GetTOF()*1.e9;
1019 Float_t ecluster = mom.E();
1020 Float_t etacluster = mom.Eta();
1021 Float_t phicluster = mom.Phi();
1022 if(phicluster < 0) phicluster+=TMath::TwoPi();
1023
1024 FillRawClusterTriggerBCHistograms(calo->GetID(),ecluster,tofcluster,etacluster,phicluster);
1025
1026 // Select clusters
1027
1028 if(idTrig < 0) continue;
1029
1030 fhE->Fill(ecluster);
1031 if(ecluster > 0.5) fhEtaPhi->Fill(etacluster, phicluster);
1032
1033 //.......................................
1034 //If too small or big energy, skip it
1035 if(ecluster < GetMinEnergy() || ecluster > GetMaxEnergy() ) continue ;
1036
1037 //.......................................
1038 if(calo->GetNCells() <= fNCellsCut) continue;
1039
1040 //.......................................
1041 //Check acceptance selection
1042 if(IsFiducialCutOn())
1043 {
1290eee4 1044 Bool_t in = GetFiducialCut()->IsInFiducialCut(mom.Eta(),mom.Phi(),kEMCAL) ;
bc41680b 1045 if(! in ) continue ;
1046 }
1047
1048 //.......................................
1049 //Skip matched clusters with tracks
1050 if(fRejectTrackMatch && IsTrackMatched(calo,GetReader()->GetInputEvent())) continue;
1051
1052 //.......................................
1053 //Skip matched clusters with Large shower shape
1054 if(calo->GetM02() < fMinM02 || calo->GetM02() > fMaxM02) continue;
1055
1056 fhESelected ->Fill(ecluster);
1057 if(ecluster > 0.5) fhEtaPhiSelected->Fill(etacluster, phicluster);
1058
1059 Float_t tofUS = TMath::Abs(tofcluster);
1060
1061 if(calo->E() > 2)
1062 {
1063 if (tofUS < 25) fhEtaPhiSelectedEMCALBC0->Fill(etacluster, phicluster);
1064 else if (tofUS < 75) fhEtaPhiSelectedEMCALBC1->Fill(etacluster, phicluster);
1065 else fhEtaPhiSelectedEMCALBCN->Fill(etacluster, phicluster);
1066 }
1067
1068 Int_t bc = GetReader()->GetTriggerClusterBC();
1069 Int_t histoBC = bc-5;
1070 if(GetReader()->AreBadTriggerEventsRemoved()) histoBC = 0 ; // histograms created only for one BC since the others where rejected
1071
1072 if(TMath::Abs(bc) < 6 && !GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent())
1073 {
1074 if(GetReader()->IsTriggerMatched())
1075 {
1076 if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster);
1077 fhTimeSelectedTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster);
1078 if(GetReader()->IsPileUpFromSPD()) fhTimeSelectedTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster);
1079 }
1080 else
1081 {
1082 if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster);
1083 fhTimeSelectedTriggerEMCALBCUM[histoBC]->Fill(calo->E(), tofcluster);
1084
1085 if(bc==0)
1086 {
1087 if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster);
1088 if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster);
1089 if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeSelectedTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster);
1090 }
1091 }
1092 }
1093 else if(TMath::Abs(bc) >= 6)
1094 printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() - Trigger BC not expected = %d\n",bc);
1095
1096 }// cluster loop
1097
1098 if(GetDebug() > 1) printf("AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() End fill histograms\n");
1099
1100}
1101
1102
1103//__________________________________________________________________
1104void AliAnaEMCALTriggerClusters::Print(const Option_t * opt) const
1105{
1106 //Print some relevant parameters set for the analysis
1107
1108 if(! opt)
1109 return;
1110
1111 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1112 //AliAnaCaloTrackCorrBaseClass::Print(" ");
1113 printf("Reject clusters with a track matched = %d\n", fRejectTrackMatch);
1114 printf("M02 Cut: %2.2f < m02 < %2.2f\n" , fMinM02,fMaxM02);
1115 printf("Number of cells in cluster is > %d \n" , fNCellsCut);
1116}