]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/EMCALTasks/AliAnalysisTaskEMCALTriggerQA.cxx
Fixing minor typo
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALTriggerQA.cxx
CommitLineData
bce9493b 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16//------------------------------------------------------------------------//
17// Fill histograms with basic QA information for EMCAL offline trigger //
e395081d 18// Author: Nicolas Arbor (LPSC-Grenoble), Rachid Guernane (LPSC-Grenoble)//
bce9493b 19// Gustavo Conesa Balbastre (LPSC-Grenoble) //
20// //
cd231d42 21// $Id$ //
bce9493b 22//------------------------------------------------------------------------//
23
bce9493b 24#include <TList.h>
bce9493b 25#include <TH2F.h>
26#include <TF1.h>
0d896539 27#include <TProfile2D.h>
bce9493b 28
29#include "AliLog.h"
30#include "AliVCluster.h"
31#include "AliVCaloCells.h"
32#include "AliVEvent.h"
ec77a234 33#include "AliCentrality.h"
34
bce9493b 35#include "AliESDEvent.h"
36#include "AliESDVZERO.h"
37#include "AliESDCaloTrigger.h"
38#include "AliEMCALGeometry.h"
6bfd1538 39#include "AliEMCALRecoUtils.h"
2b4e1cc5 40#include "AliOADBContainer.h"
bce9493b 41
42#include "AliAnalysisTaskEMCALTriggerQA.h"
43
44ClassImp(AliAnalysisTaskEMCALTriggerQA)
45
85196c29 46//______________________________________________________________
bce9493b 47AliAnalysisTaskEMCALTriggerQA::AliAnalysisTaskEMCALTriggerQA() :
48AliAnalysisTaskSE(),
ec77a234 49fOutputList(0), fRecoUtils(0x0),
2b4e1cc5 50fGeoSet(0), fGeometry(0), fGeoName(""),
51fOADBSet(kFALSE), fAccessOADB(kTRUE), fOADBFilePath(""),
ec77a234 52fhNEvents(0), fhFORAmp(0),
53fhFORAmpL1G(0), fhFORAmpL1J(0),
54fhL0Amp(0), fhL0AmpL1G(0), fhL0AmpL1J(0),
55fhL1Amp(0), fhL1GAmp(0), fhL1JAmp(0),
56fhL0Patch(0), fhL1GPatch(0), fhL1JPatch(0),
57fhFEESTU(0), fhTRUSTU(0), fhV0STU(0),
58fhGPMaxVV0TT(0), fhJPMaxVV0TT(0),
59fhFORMeanAmp(0), fhL0MeanAmp(0), fhL1MeanAmp(0),
60fhV0MB(0), fhV0L1G(0), fhV0L1J(0),
61fhL1GPatchMax(0), fhL1JPatchMax(0),
62
63fhClusMB(0), fhClusMBPure(0), fhClusL0(0),
64fhClusL1G(0), fhClusL1J(0),
65fhClusL1GOnly(0), fhClusL1JOnly(0),
66fhClusMaxMB(0), fhClusMaxMBPure(0), fhClusMaxL0(0),
67fhClusMaxL1G(0), fhClusMaxL1J(0),
68fhClusMaxL1GOnly(0), fhClusMaxL1JOnly(0),
69
70fhClusCenMB(0), fhClusCenL0(0),
71fhClusCenL1G(0), fhClusCenL1J(0),
72fhClusCenL1GOnly(0), fhClusCenL1JOnly(0),
73fhClusCenMaxMB(0), fhClusCenMaxL0(0),
74fhClusCenMaxL1G(0), fhClusCenMaxL1J(0),
75fhClusCenMaxL1GOnly(0), fhClusCenMaxL1JOnly(0),
76
77fhClusV0MB(0), fhClusV0L0(0),
78fhClusV0L1G(0), fhClusV0L1J(0),
79fhClusV0L1GOnly(0), fhClusV0L1JOnly(0),
80fhClusV0MaxMB(0), fhClusV0MaxL0(0),
81fhClusV0MaxL1G(0), fhClusV0MaxL1J(0),
82fhClusV0MaxL1GOnly(0), fhClusV0MaxL1JOnly(0),
83
84fhClusEtaMB(0), fhClusEtaL0(0),
85fhClusEtaL1G(0), fhClusEtaL1J(0),
86fhClusEtaL1GOnly(0), fhClusEtaL1JOnly(0),
87fhClusEtaMaxMB(0), fhClusEtaMaxL0(0),
88fhClusEtaMaxL1G(0), fhClusEtaMaxL1J(0),
89fhClusEtaMaxL1GOnly(0), fhClusEtaMaxL1JOnly(0),
90
91fhClusPhiMB(0), fhClusPhiL0(0),
92fhClusPhiL1G(0), fhClusPhiL1J(0),
93fhClusPhiL1GOnly(0), fhClusPhiL1JOnly(0),
94fhClusPhiMaxMB(0), fhClusPhiMaxL0(0),
95fhClusPhiMaxL1G(0), fhClusPhiMaxL1J(0),
96fhClusPhiMaxL1GOnly(0), fhClusPhiMaxL1JOnly(0),
97
98fhClusEtaPhiHighMB(0), fhClusEtaPhiHighL0(0),
99fhClusEtaPhiHighL1G(0), fhClusEtaPhiHighL1J(0),
100fhClusEtaPhiHighL1GOnly(0), fhClusEtaPhiHighL1JOnly(0),
101fhClusEtaPhiHighCluMaxMB(0), fhClusEtaPhiHighCluMaxL0(0),
102fhClusEtaPhiHighCluMaxL1G(0), fhClusEtaPhiHighCluMaxL1J(0),
103fhClusEtaPhiHighCluMaxL1GOnly(0), fhClusEtaPhiHighCluMaxL1JOnly(0),
104
105fhClusEtaPhiHighCellMaxMB(0), fhClusEtaPhiHighCellMaxL0(0),
106fhClusEtaPhiHighCellMaxL1G(0), fhClusEtaPhiHighCellMaxL1J(0),
107fhClusEtaPhiHighCellMaxL1GOnly(0), fhClusEtaPhiHighCellMaxL1JOnly(0),
108fhClusEtaPhiHighCellMaxCluMaxMB(0), fhClusEtaPhiHighCellMaxCluMaxL0(0),
109fhClusEtaPhiHighCellMaxCluMaxL1G(0), fhClusEtaPhiHighCellMaxCluMaxL1J(0),
110fhClusEtaPhiHighCellMaxCluMaxL1GOnly(0), fhClusEtaPhiHighCellMaxCluMaxL1JOnly(0),
111
112fhClusEtaPhiLowMB(0), fhClusEtaPhiLowL0(0),
113fhClusEtaPhiLowL1G(0), fhClusEtaPhiLowL1J(0),
114fhClusEtaPhiLowL1GOnly(0), fhClusEtaPhiLowL1JOnly(0),
115fhClusEtaPhiLowCluMaxMB(0), fhClusEtaPhiLowCluMaxL0(0),
116fhClusEtaPhiLowCluMaxL1G(0), fhClusEtaPhiLowCluMaxL1J(0),
117fhClusEtaPhiLowCluMaxL1GOnly(0), fhClusEtaPhiLowCluMaxL1JOnly(0),
118
119fhClusEtaPhiLowCellMaxMB(0), fhClusEtaPhiLowCellMaxL0(0),
120fhClusEtaPhiLowCellMaxL1G(0), fhClusEtaPhiLowCellMaxL1J(0),
121fhClusEtaPhiLowCellMaxL1GOnly(0), fhClusEtaPhiLowCellMaxL1JOnly(0),
122fhClusEtaPhiLowCellMaxCluMaxMB(0), fhClusEtaPhiLowCellMaxCluMaxL0(0),
123fhClusEtaPhiLowCellMaxCluMaxL1G(0), fhClusEtaPhiLowCellMaxCluMaxL1J(0),
124fhClusEtaPhiLowCellMaxCluMaxL1GOnly(0), fhClusEtaPhiLowCellMaxCluMaxL1JOnly(0),
125
126//Histogram settings
127fNBinsSTUSignal (2000), fMaxSTUSignal (200000),
128fNBinsTRUSignal (2000), fMaxTRUSignal (200000),
129fNBinsV0Signal (5000), fMaxV0Signal (100000),
130fNBinsSTUFEERatio(1000), fMaxSTUFEERatio(100),
131fNBinsSTUTRURatio(1000), fMaxSTUTRURatio(100),
132fNBinsClusterE (500), fMaxClusterE (200)
bce9493b 133
134{
135 // Constructor
2b4e1cc5 136
ec77a234 137 DefineOutput(1, TList::Class());
138
bce9493b 139}
140
85196c29 141//______________________________________________________________________________
bce9493b 142AliAnalysisTaskEMCALTriggerQA::AliAnalysisTaskEMCALTriggerQA(const char *name) :
143AliAnalysisTaskSE(name),
ec77a234 144fOutputList(0), fRecoUtils(0x0),
2b4e1cc5 145fGeoSet(0), fGeometry(0), fGeoName(""),
146fOADBSet(kFALSE), fAccessOADB(kTRUE), fOADBFilePath(""),
ec77a234 147fhNEvents(0), fhFORAmp(0),
148fhFORAmpL1G(0), fhFORAmpL1J(0),
149fhL0Amp(0), fhL0AmpL1G(0), fhL0AmpL1J(0),
150fhL1Amp(0), fhL1GAmp(0), fhL1JAmp(0),
151fhL0Patch(0), fhL1GPatch(0), fhL1JPatch(0),
152fhFEESTU(0), fhTRUSTU(0), fhV0STU(0),
153fhGPMaxVV0TT(0), fhJPMaxVV0TT(0),
154fhFORMeanAmp(0), fhL0MeanAmp(0), fhL1MeanAmp(0),
155fhV0MB(0), fhV0L1G(0), fhV0L1J(0),
156fhL1GPatchMax(0), fhL1JPatchMax(0),
157
158fhClusMB(0), fhClusMBPure(0), fhClusL0(0),
159fhClusL1G(0), fhClusL1J(0),
160fhClusL1GOnly(0), fhClusL1JOnly(0),
161fhClusMaxMB(0), fhClusMaxMBPure(0), fhClusMaxL0(0),
162fhClusMaxL1G(0), fhClusMaxL1J(0),
163fhClusMaxL1GOnly(0), fhClusMaxL1JOnly(0),
164
165fhClusCenMB(0), fhClusCenL0(0),
166fhClusCenL1G(0), fhClusCenL1J(0),
167fhClusCenL1GOnly(0), fhClusCenL1JOnly(0),
168fhClusCenMaxMB(0), fhClusCenMaxL0(0),
169fhClusCenMaxL1G(0), fhClusCenMaxL1J(0),
170fhClusCenMaxL1GOnly(0), fhClusCenMaxL1JOnly(0),
171
172fhClusV0MB(0), fhClusV0L0(0),
173fhClusV0L1G(0), fhClusV0L1J(0),
174fhClusV0L1GOnly(0), fhClusV0L1JOnly(0),
175fhClusV0MaxMB(0), fhClusV0MaxL0(0),
176fhClusV0MaxL1G(0), fhClusV0MaxL1J(0),
177fhClusV0MaxL1GOnly(0), fhClusV0MaxL1JOnly(0),
178
179fhClusEtaMB(0), fhClusEtaL0(0),
180fhClusEtaL1G(0), fhClusEtaL1J(0),
181fhClusEtaL1GOnly(0), fhClusEtaL1JOnly(0),
182fhClusEtaMaxMB(0), fhClusEtaMaxL0(0),
183fhClusEtaMaxL1G(0), fhClusEtaMaxL1J(0),
184fhClusEtaMaxL1GOnly(0), fhClusEtaMaxL1JOnly(0),
185
186fhClusPhiMB(0), fhClusPhiL0(0),
187fhClusPhiL1G(0), fhClusPhiL1J(0),
188fhClusPhiL1GOnly(0), fhClusPhiL1JOnly(0),
189fhClusPhiMaxMB(0), fhClusPhiMaxL0(0),
190fhClusPhiMaxL1G(0), fhClusPhiMaxL1J(0),
191fhClusPhiMaxL1GOnly(0), fhClusPhiMaxL1JOnly(0),
192
193fhClusEtaPhiHighMB(0), fhClusEtaPhiHighL0(0),
194fhClusEtaPhiHighL1G(0), fhClusEtaPhiHighL1J(0),
195fhClusEtaPhiHighL1GOnly(0), fhClusEtaPhiHighL1JOnly(0),
196fhClusEtaPhiHighCluMaxMB(0), fhClusEtaPhiHighCluMaxL0(0),
197fhClusEtaPhiHighCluMaxL1G(0), fhClusEtaPhiHighCluMaxL1J(0),
198fhClusEtaPhiHighCluMaxL1GOnly(0), fhClusEtaPhiHighCluMaxL1JOnly(0),
199
200fhClusEtaPhiHighCellMaxMB(0), fhClusEtaPhiHighCellMaxL0(0),
201fhClusEtaPhiHighCellMaxL1G(0), fhClusEtaPhiHighCellMaxL1J(0),
202fhClusEtaPhiHighCellMaxL1GOnly(0), fhClusEtaPhiHighCellMaxL1JOnly(0),
203fhClusEtaPhiHighCellMaxCluMaxMB(0), fhClusEtaPhiHighCellMaxCluMaxL0(0),
204fhClusEtaPhiHighCellMaxCluMaxL1G(0), fhClusEtaPhiHighCellMaxCluMaxL1J(0),
205fhClusEtaPhiHighCellMaxCluMaxL1GOnly(0), fhClusEtaPhiHighCellMaxCluMaxL1JOnly(0),
206
207fhClusEtaPhiLowMB(0), fhClusEtaPhiLowL0(0),
208fhClusEtaPhiLowL1G(0), fhClusEtaPhiLowL1J(0),
209fhClusEtaPhiLowL1GOnly(0), fhClusEtaPhiLowL1JOnly(0),
210fhClusEtaPhiLowCluMaxMB(0), fhClusEtaPhiLowCluMaxL0(0),
211fhClusEtaPhiLowCluMaxL1G(0), fhClusEtaPhiLowCluMaxL1J(0),
212fhClusEtaPhiLowCluMaxL1GOnly(0), fhClusEtaPhiLowCluMaxL1JOnly(0),
213
214fhClusEtaPhiLowCellMaxMB(0), fhClusEtaPhiLowCellMaxL0(0),
215fhClusEtaPhiLowCellMaxL1G(0), fhClusEtaPhiLowCellMaxL1J(0),
216fhClusEtaPhiLowCellMaxL1GOnly(0), fhClusEtaPhiLowCellMaxL1JOnly(0),
217fhClusEtaPhiLowCellMaxCluMaxMB(0), fhClusEtaPhiLowCellMaxCluMaxL0(0),
218fhClusEtaPhiLowCellMaxCluMaxL1G(0), fhClusEtaPhiLowCellMaxCluMaxL1J(0),
219fhClusEtaPhiLowCellMaxCluMaxL1GOnly(0), fhClusEtaPhiLowCellMaxCluMaxL1JOnly(0),
220
221//Histogram settings
222fNBinsSTUSignal (2000), fMaxSTUSignal (200000),
223fNBinsTRUSignal (2000), fMaxTRUSignal (200000),
224fNBinsV0Signal (5000), fMaxV0Signal (100000),
225fNBinsSTUFEERatio(1000), fMaxSTUFEERatio(100),
226fNBinsSTUTRURatio(1000), fMaxSTUTRURatio(100),
227fNBinsClusterE (500), fMaxClusterE (200)
228
bce9493b 229{
230 // Constructor
2b4e1cc5 231
232 DefineOutput(1, TList::Class());
bce9493b 233
2b4e1cc5 234}
235
236
237//______________________________________________
238void AliAnalysisTaskEMCALTriggerQA::AccessOADB()
239{
240 // Set the AODB bad channels at least once
ec77a234 241
2b4e1cc5 242 //Set it only once
243 if(fOADBSet) return ;
66bdaa44 244
2b4e1cc5 245 if(fOADBFilePath == "") fOADBFilePath = "$ALICE_ROOT/OADB/EMCAL" ;
246
247 Int_t runnumber = InputEvent()->GetRunNumber() ;
248
249 if(DebugLevel() > 0)
250 printf("AliAnalysisTaskEMCALClusterize::SetOADBParameters() - Get AODB parameters from EMCAL in %s for run %d\n",fOADBFilePath.Data(),runnumber);
251
252 Int_t nSM = fGeometry->GetNumberOfSuperModules();
253
254 // Bad map
255 if(fRecoUtils->IsBadChannelsRemovalSwitchedOn())
256 {
257 AliOADBContainer *contBC=new AliOADBContainer("");
258 contBC->InitFromFile(Form("%s/EMCALBadChannels.root",fOADBFilePath.Data()),"AliEMCALBadChannels");
259
260 TObjArray *arrayBC=(TObjArray*)contBC->GetObject(runnumber);
261
262 if(arrayBC)
263 {
264 if(DebugLevel() > 0)
265 printf("AliAnalysisTaskEMCALClusterize::SetOADBParameters() - Remove EMCAL bad cells \n");
266
267 for (Int_t i=0; i<nSM; ++i)
268 {
269 TH2I *hbm = fRecoUtils->GetEMCALChannelStatusMap(i);
270
271 if (hbm)
272 delete hbm;
273
274 hbm=(TH2I*)arrayBC->FindObject(Form("EMCALBadChannelMap_Mod%d",i));
275
276 if (!hbm)
277 {
278 AliError(Form("Can not get EMCALBadChannelMap_Mod%d",i));
279 continue;
280 }
281
282 hbm->SetDirectory(0);
283 fRecoUtils->SetEMCALChannelStatusMap(i,hbm);
284
285 } // loop
286 } else if(DebugLevel() > 0)
287 printf("AliAnalysisTaskEMCALClusterize::SetOADBParameters() - Do NOT remove EMCAL bad channels\n"); // run array
288 } // Remove bad
66bdaa44 289
290 fOADBSet = kTRUE;
291
2b4e1cc5 292}
293
294//_________________________________________
295void AliAnalysisTaskEMCALTriggerQA::Init()
296{
297 //Init analysis parameters not set before
298
299
300 if(!fRecoUtils)
301 {
302 fRecoUtils = new AliEMCALRecoUtils ;
303 fRecoUtils->SwitchOnBadChannelsRemoval();
304 }
305
306}
307
308//_________________________________________________
309void AliAnalysisTaskEMCALTriggerQA::InitGeometry()
310{
311 // Init geometry and set the geometry matrix, for the first event, skip the rest
312 // Also set once the run dependent calibrations
313
314 if(fGeoSet) return;
315
316 Int_t runnumber = InputEvent()->GetRunNumber() ;
317
318 if (!fGeometry)
319 {
320 if(fGeoName=="")
321 {
322 if (runnumber < 140000) fGeoName = "EMCAL_FIRSTYEARV1";
323 else if(runnumber < 171000) fGeoName = "EMCAL_COMPLETEV1";
324 else fGeoName = "EMCAL_COMPLETE12SMV1";
325 if(DebugLevel() > 0)
326 printf("AliAnalysisTaskEMCALTriggerQA::InitGeometry() - Set EMCAL geometry name to <%s> for run %d\n",fGeoName.Data(),runnumber);
327 }
328
329 fGeometry = AliEMCALGeometry::GetInstance(fGeoName);
330 }
bce9493b 331
66bdaa44 332 fGeoSet = kTRUE;
333
bce9493b 334}
335
336
85196c29 337//___________________________________________________________
bce9493b 338void AliAnalysisTaskEMCALTriggerQA::UserCreateOutputObjects()
339{
340 // Init histograms and geometry
2b4e1cc5 341
85196c29 342 fOutputList = new TList;
343 fOutputList ->SetOwner(kTRUE);
bce9493b 344
0d896539 345 fhNEvents = new TH1F("hNEvents","Number of selected events",12,0,12);
85196c29 346 fhNEvents ->SetYTitle("N events");
77626b4a 347 fhNEvents ->GetXaxis()->SetBinLabel(1 ,"All");
0d896539 348 fhNEvents ->GetXaxis()->SetBinLabel(2 ,"MB");
77626b4a 349 fhNEvents ->GetXaxis()->SetBinLabel(3 ,"L0");
350 fhNEvents ->GetXaxis()->SetBinLabel(4 ,"L1-G");
351 fhNEvents ->GetXaxis()->SetBinLabel(5 ,"L1-J");
0d896539 352 fhNEvents ->GetXaxis()->SetBinLabel(6 ,"L1-G & !L1-J");
353 fhNEvents ->GetXaxis()->SetBinLabel(7 ,"L1-J & !L1-G");
354 fhNEvents ->GetXaxis()->SetBinLabel(8 ,"L1-J & L1-G");
355 fhNEvents ->GetXaxis()->SetBinLabel(9 ,"MB & !L1 & !L0");
356 fhNEvents ->GetXaxis()->SetBinLabel(10,"L0 & !MB");
357 fhNEvents ->GetXaxis()->SetBinLabel(11,"L1-G & !MB");
358 fhNEvents ->GetXaxis()->SetBinLabel(12,"L1-J & !MB");
359
bce9493b 360
75e10d6a 361 fhFORAmp = new TH2F("hFORAmp", "FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column",
362 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
363 fhFORAmp ->SetXTitle("Index #eta (columnns)");
e022364d 364 fhFORAmp ->SetYTitle("Index #phi (rows)");
365 fhFORAmp ->SetZTitle("Amplitude");
e395081d 366
75e10d6a 367 fhFORAmpL1G = new TH2F("hFORAmpL1G", "FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1G trigger condition",
368 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
369 fhFORAmpL1G ->SetXTitle("Index #eta (columnns)");
a40222c8 370 fhFORAmpL1G ->SetYTitle("Index #phi (rows)");
371 fhFORAmpL1G ->SetZTitle("Amplitude");
e395081d 372
75e10d6a 373 fhFORAmpL1J = new TH2F("hFORAmpL1J", "FEE cells deposited energy, grouped like FastOR 2x2 per Row and Column, with L1J trigger condition",
374 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
375 fhFORAmpL1J ->SetXTitle("Index #eta (columnns)");
a40222c8 376 fhFORAmpL1J ->SetYTitle("Index #phi (rows)");
377 fhFORAmpL1J ->SetZTitle("Amplitude");
aff917ac 378
75e10d6a 379 fhL0Amp = new TH2F("hL0Amp","FALTRO signal per Row and Column",
380 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
381 fhL0Amp ->SetXTitle("Index #eta (columnns)");
e022364d 382 fhL0Amp ->SetYTitle("Index #phi (rows)");
383 fhL0Amp ->SetZTitle("Amplitude");
e395081d 384
75e10d6a 385 fhL0AmpL1G = new TH2F("hL0AmpL1G","FALTRO signal per Row and Column, with L1G trigger condition",
386 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
387 fhL0AmpL1G ->SetXTitle("Index #eta (columnns)");
a40222c8 388 fhL0AmpL1G ->SetYTitle("Index #phi (rows)");
389 fhL0AmpL1G ->SetZTitle("Amplitude");
e395081d 390
75e10d6a 391 fhL0AmpL1J = new TH2F("hL0AmpL1J","FALTRO signal per Row and Column, with L1j trigger condition",
392 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
393 fhL0AmpL1J ->SetXTitle("Index #eta (columnns)");
a40222c8 394 fhL0AmpL1J ->SetYTitle("Index #phi (rows)");
395 fhL0AmpL1J ->SetZTitle("Amplitude");
aff917ac 396
75e10d6a 397 fhL1Amp = new TH2F("hL1Amp","STU signal per Row and Column",
398 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
399 fhL1Amp ->SetXTitle("Index #eta (columnns)");
aff917ac 400 fhL1Amp ->SetYTitle("Index #phi (rows)");
401 fhL1Amp ->SetZTitle("Amplitude");
402
75e10d6a 403 fhL1GAmp = new TH2F("hL1GAmp","STU signal per Row and Column for L1 Gamma",
404 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
405 fhL1GAmp ->SetXTitle("Index #eta (columnns)");
e022364d 406 fhL1GAmp ->SetYTitle("Index #phi (rows)");
407 fhL1GAmp ->SetZTitle("Amplitude");
aff917ac 408
75e10d6a 409 fhL1JAmp = new TH2F("hL1JAmp","STU signal per Row and Column for L1 Jet",
77626b4a 410 fgkFALTROCols/4,0,fgkFALTROCols,fgkFALTRORows/4,0,fgkFALTRORows);
75e10d6a 411 fhL1JAmp ->SetXTitle("Index #eta (columnns)");
e022364d 412 fhL1JAmp ->SetYTitle("Index #phi (rows)");
413 fhL1JAmp ->SetZTitle("Amplitude");
aff917ac 414
75e10d6a 415 fhL0Patch = new TH2F("hL0Patch","FOR with associated L0 Patch",
416 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
417 fhL0Patch ->SetXTitle("Index #eta (columnns)");
85196c29 418 fhL0Patch ->SetYTitle("Index #phi (rows)");
e022364d 419 fhL0Patch ->SetZTitle("counts");
aff917ac 420
75e10d6a 421 fhL1GPatch = new TH2F("hL1GPatch","FOR with associated L1 Gamma Patch",
422 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
423 fhL1GPatch ->SetXTitle("Index #eta (columnns)");
85196c29 424 fhL1GPatch ->SetYTitle("Index #phi (rows)");
e022364d 425 fhL1GPatch ->SetZTitle("counts");
aff917ac 426
75e10d6a 427 fhL1JPatch = new TH2F("hL1JPatch","FOR with associated L1 Jet Patch",
77626b4a 428 fgkFALTROCols/4,0,fgkFALTROCols,fgkFALTRORows/4,0,fgkFALTRORows);
75e10d6a 429 fhL1JPatch ->SetXTitle("Index #eta (columnns)");
85196c29 430 fhL1JPatch ->SetYTitle("Index #phi (rows)");
e022364d 431 fhL1JPatch ->SetZTitle("counts");
aff917ac 432
75e10d6a 433 fhV0STU = new TH2I("hV0STU","Total signal STU vs V0C+V0S",
434 fNBinsV0Signal,0,fMaxV0Signal,fNBinsSTUSignal,0,fMaxSTUSignal);
85196c29 435 fhV0STU ->SetXTitle("Signal V0C+V0A");
436 fhV0STU ->SetYTitle("Total signal STU");
e022364d 437 fhV0STU ->SetZTitle("counts");
aff917ac 438
480b9db0 439
85196c29 440 fhFEESTU = new TH2F("hFEESTU","STU / FEE vs channel", fNBinsSTUFEERatio,0,fMaxSTUFEERatio,30,0,30);
441 fhFEESTU ->SetXTitle("STU/FEE signal");
442 fhFEESTU ->SetYTitle("channel");
e022364d 443 fhFEESTU ->SetZTitle("counts");
aff917ac 444
85196c29 445 fhTRUSTU = new TH2F("hTRUSTU","STU / TRU vs channel", fNBinsSTUTRURatio,0,fMaxSTUTRURatio,30,0,30);
446 fhTRUSTU ->SetXTitle("STU/TRU signal");
447 fhTRUSTU ->SetYTitle("channel");
e022364d 448 fhTRUSTU ->SetZTitle("counts");
aff917ac 449
0d896539 450 fhGPMaxVV0TT = new TH2F("hGPMaxVV0TT","Maximum patch of L1-Gamma vs V0 signal in STU",fNBinsV0Signal,0,fMaxV0Signal,1000,0,1000);
451 fhGPMaxVV0TT ->SetXTitle("V0 from STU");
faa45c63 452 fhGPMaxVV0TT ->SetYTitle("Patch Max");
4ee53435 453
0d896539 454 fhJPMaxVV0TT = new TH2F("hJPMaxVV0TT","Maximum patch of L1-Jet vs V0 signal in STU",fNBinsV0Signal,0,fMaxV0Signal,1000,0,1000);
455 fhJPMaxVV0TT ->SetXTitle("V0 from STU");
faa45c63 456 fhJPMaxVV0TT ->SetYTitle("Patch Max");
ec77a234 457
0d896539 458 fhFORMeanAmp = new TProfile2D("hFORMeanAmp", "Mean FastOR(FEE) signal per Row and Column", fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
459 fhFORMeanAmp->SetXTitle("Index #eta");
460 fhFORMeanAmp->SetYTitle("Index #phi");
461
462 fhL0MeanAmp = new TProfile2D("hL0MeanAmp", "Mean FastOR(TRU) signal per Row and Column", fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
463 fhL0MeanAmp->SetXTitle("Index #eta");
464 fhL0MeanAmp->SetYTitle("Index #phi");
4ee53435 465
0d896539 466 fhL1MeanAmp = new TProfile2D("hL1MeanAmp", "Mean FastOR(STU) signal per Row and Column", fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
467 fhL1MeanAmp->SetXTitle("Index #eta");
468 fhL1MeanAmp->SetYTitle("Index #phi");
ec77a234 469
0d896539 470 fhV0MB = new TH1F("hV0MB","V0 distribution for MB triggered event",fNBinsV0Signal,0,fMaxV0Signal);
471 fhV0MB->SetXTitle("V0");
ec77a234 472
0d896539 473 fhV0L1G = new TH1F("hV0L1G","V0 distribution for L1G triggered event",fNBinsV0Signal,0,fMaxV0Signal);
474 fhV0L1G->SetXTitle("V0");
ec77a234 475
0d896539 476 fhV0L1J = new TH1F("hV0L1J","V0 distribution for L1J triggered event",fNBinsV0Signal,0,fMaxV0Signal);
477 fhV0L1J->SetXTitle("V0");
ec77a234 478
0d896539 479 fhL1GPatchMax = new TH2F("hL1GPatchMax","FOR of max amplitude patch with associated L1 Gamma Patch",
ec77a234 480 fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
0d896539 481 fhL1GPatchMax ->SetXTitle("Index #eta (columnns)");
482 fhL1GPatchMax ->SetYTitle("Index #phi (rows)");
483 fhL1GPatchMax ->SetZTitle("counts");
484
485 fhL1JPatchMax = new TH2F("hL1JPatchMax","FOR of max amplitude patch with associated L1 Jet Patch",
ec77a234 486 fgkFALTROCols/4,0,fgkFALTROCols,fgkFALTRORows/4,0,fgkFALTRORows);
0d896539 487 fhL1JPatchMax ->SetXTitle("Index #eta (columnns)");
488 fhL1JPatchMax ->SetYTitle("Index #phi (rows)");
489 fhL1JPatchMax ->SetZTitle("counts");
490
bce9493b 491 fOutputList->Add(fhNEvents);
492 fOutputList->Add(fhV0STU);
e022364d 493 fOutputList->Add(fhFORAmp);
a40222c8 494 fOutputList->Add(fhFORAmpL1G);
495 fOutputList->Add(fhFORAmpL1J);
e022364d 496 fOutputList->Add(fhL0Amp);
a40222c8 497 fOutputList->Add(fhL0AmpL1G);
498 fOutputList->Add(fhL0AmpL1J);
aff917ac 499 fOutputList->Add(fhL1Amp);
e022364d 500 fOutputList->Add(fhL1GAmp);
501 fOutputList->Add(fhL1JAmp);
bce9493b 502 fOutputList->Add(fhL0Patch);
503 fOutputList->Add(fhL1GPatch);
504 fOutputList->Add(fhL1JPatch);
ec77a234 505 fOutputList->Add(fhFEESTU);
506 fOutputList->Add(fhTRUSTU);
507
508 fOutputList->Add(fhGPMaxVV0TT);
509 fOutputList->Add(fhJPMaxVV0TT);
510
511 fOutputList->Add(fhFORMeanAmp);
512 fOutputList->Add(fhL0MeanAmp);
513 fOutputList->Add(fhL1MeanAmp);
514
515 fOutputList->Add(fhV0MB );
516 fOutputList->Add(fhV0L1G);
517 fOutputList->Add(fhV0L1J);
518
519 fOutputList->Add(fhL1GPatchMax);
520 fOutputList->Add(fhL1JPatchMax);
521
522 // Cluster histograms, E
523
524 fhClusMB = new TH1F("hClusMB","clusters E distribution for MB trigger",fNBinsClusterE,0,fMaxClusterE);
525 fhClusMB ->SetXTitle("Energy (GeV)");
526
527 fhClusMBPure = new TH1F("hClusMBPure","clusters E distribution for MB trigger, no other EMCAL trigger on",fNBinsClusterE,0,fMaxClusterE);
528 fhClusMBPure ->SetXTitle("Energy (GeV)");
529
530 fhClusL0 = new TH1F("hClusL0","clusters E distribution for L0 trigger",fNBinsClusterE,0,fMaxClusterE);
531 fhClusL0 ->SetXTitle("Energy (GeV)");
532
533 fhClusL1G = new TH1F("hClusL1G","clusters E distribution for L1G trigger",fNBinsClusterE,0,fMaxClusterE);
534 fhClusL1G ->SetXTitle("Energy (GeV)");
535
536 fhClusL1J = new TH1F("hClusL1J","clusters E distribution for L1J trigger",fNBinsClusterE,0,fMaxClusterE);
537 fhClusL1J ->SetXTitle("Energy (GeV)");
538
539 fhClusL1GOnly = new TH1F("hClusL1GOnly","clusters E distribution for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE);
540 fhClusL1GOnly->SetXTitle("Energy (GeV)");
541
542 fhClusL1JOnly = new TH1F("hClusL1JOnly","clusters E distribution for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE);
543 fhClusL1JOnly->SetXTitle("Energy (GeV)");
544
545 fhClusMaxMB = new TH1F("hClusMaxMB","maximum energy cluster per event for MB trigger",fNBinsClusterE,0,fMaxClusterE);
546 fhClusMaxMB ->SetXTitle("Energy (GeV)");
547
548 fhClusMaxMBPure = new TH1F("hClusMaxMBPure","maximum energy cluster per event for MB trigger, no other EMCAL trigger on",fNBinsClusterE,0,fMaxClusterE);
549 fhClusMaxMBPure ->SetXTitle("Energy (GeV)");
550
551 fhClusMaxL0 = new TH1F("hClusMaxL0","maximum energy cluster per event for L0 trigger",fNBinsClusterE,0,fMaxClusterE);
552 fhClusMaxL0 ->SetXTitle("Energy (GeV)");
553
554 fhClusMaxL1G = new TH1F("hClusMaxL1G","maximum energy cluster per event for L1G trigger",fNBinsClusterE,0,fMaxClusterE);
555 fhClusMaxL1G->SetXTitle("Energy (GeV)");
556
557 fhClusMaxL1J = new TH1F("hClusMaxL1J","maximum energy cluster per event for L1J trigger",fNBinsClusterE,0,fMaxClusterE);
558 fhClusMaxL1J->SetXTitle("Energy (GeV)");
559
560 fhClusMaxL1GOnly = new TH1F("hClusMaxL1GOnly","maximum energy cluster per event for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE);
561 fhClusMaxL1GOnly->SetXTitle("Energy (GeV)");
562
563 fhClusMaxL1JOnly = new TH1F("hClusMaxL1JOnly","maximum energy cluster per event for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE);
564 fhClusMaxL1JOnly->SetXTitle("Energy (GeV)");
565
480b9db0 566
75e10d6a 567 fOutputList->Add(fhClusMB);
0d896539 568 fOutputList->Add(fhClusMBPure);
75e10d6a 569 fOutputList->Add(fhClusL0);
570 fOutputList->Add(fhClusL1G);
571 fOutputList->Add(fhClusL1J);
480b9db0 572 fOutputList->Add(fhClusL1GOnly);
573 fOutputList->Add(fhClusL1JOnly);
574
575 fOutputList->Add(fhClusMaxMB);
0d896539 576 fOutputList->Add(fhClusMaxMBPure);
480b9db0 577 fOutputList->Add(fhClusMaxL0);
578 fOutputList->Add(fhClusMaxL1G);
579 fOutputList->Add(fhClusMaxL1J);
580 fOutputList->Add(fhClusMaxL1GOnly);
581 fOutputList->Add(fhClusMaxL1JOnly);
582
ec77a234 583 // Cluster histograms, E vs Cen
584
585 fhClusCenMB = new TH2F("hClusCenMB","clusters E distribution vs centrality for MB trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
586 fhClusCenMB ->SetXTitle("Energy (GeV)");
587 fhClusCenMB ->SetYTitle("Centrality");
e395081d 588
ec77a234 589 fhClusCenL0 = new TH2F("hClusCenL0","clusters E distribution vs centrality for L0 trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
590 fhClusCenL0 ->SetXTitle("Energy (GeV)");
591 fhClusCenL0 ->SetYTitle("Centrality");
0d896539 592
ec77a234 593 fhClusCenL1G = new TH2F("hClusCenL1G","clusters E distribution vs centrality for L1G trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
594 fhClusCenL1G ->SetXTitle("Energy (GeV)");
595
596 fhClusCenL1J = new TH2F("hClusCenL1J","clusters E distribution vs centrality for L1J trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
597 fhClusCenL1J ->SetXTitle("Energy (GeV)");
598 fhClusCenL1J ->SetYTitle("Centrality");
0d896539 599
ec77a234 600 fhClusCenL1GOnly = new TH2F("hClusCenL1GOnly","clusters E distribution vs centrality for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
601 fhClusCenL1GOnly->SetXTitle("Energy (GeV)");
602 fhClusCenL1GOnly->SetYTitle("Centrality");
0d896539 603
ec77a234 604 fhClusCenL1JOnly = new TH2F("hClusCenL1JOnly","clusters E distribution vs centrality for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
605 fhClusCenL1JOnly->SetXTitle("Energy (GeV)");
606 fhClusCenL1JOnly->SetYTitle("Centrality");
607
608 fhClusCenMaxMB = new TH2F("hClusCenMaxMB","maximum energy cluster per event vs centrality for MB trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
609 fhClusCenMaxMB ->SetXTitle("Energy (GeV)");
610 fhClusCenMaxMB ->SetYTitle("Centrality");
611
612 fhClusCenMaxL0 = new TH2F("hClusCenMaxL0","maximum energy cluster per event vs centrality for L0 trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
613 fhClusCenMaxL0 ->SetXTitle("Energy (GeV)");
614 fhClusCenMaxL0 ->SetYTitle("Centrality");
615
616 fhClusCenMaxL1G = new TH2F("hClusCenMaxL1G","maximum energy cluster per event vs centrality for L1G trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
617 fhClusCenMaxL1G->SetXTitle("Energy (GeV)");
618 fhClusCenMaxL1G->SetYTitle("Centrality");
619
620 fhClusCenMaxL1J = new TH2F("hClusCenMaxL1J","maximum energy cluster per event vs centrality for L1J trigger",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
621 fhClusCenMaxL1J->SetXTitle("Energy (GeV)");
622 fhClusCenMaxL1J->SetYTitle("Centrality");
623
624 fhClusCenMaxL1GOnly = new TH2F("hClusCenMaxL1GOnly","maximum energy cluster per event vs centrality for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
625 fhClusCenMaxL1GOnly->SetXTitle("Energy (GeV)");
626 fhClusCenMaxL1GOnly->SetYTitle("Centrality");
627
628 fhClusCenMaxL1JOnly = new TH2F("hClusCenMaxL1JOnly","maximum energy cluster per event vs centrality for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,100, 0, 100);
629 fhClusCenMaxL1JOnly->SetXTitle("Energy (GeV)");
630 fhClusCenMaxL1JOnly->SetYTitle("Centrality");
631
632
633 fOutputList->Add(fhClusCenMB);
634 fOutputList->Add(fhClusCenL0);
635 fOutputList->Add(fhClusCenL1G);
636 fOutputList->Add(fhClusCenL1J);
637 fOutputList->Add(fhClusCenL1GOnly);
638 fOutputList->Add(fhClusCenL1JOnly);
639
640 fOutputList->Add(fhClusCenMaxMB);
641 fOutputList->Add(fhClusCenMaxL0);
642 fOutputList->Add(fhClusCenMaxL1G);
643 fOutputList->Add(fhClusCenMaxL1J);
644 fOutputList->Add(fhClusCenMaxL1GOnly);
645 fOutputList->Add(fhClusCenMaxL1JOnly);
646
647
648 // Cluster histograms, E vs V0
649
650 fhClusV0MB = new TH2F("hClusV0MB","clusters E distribution vs V0 for MB trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
651 fhClusV0MB ->SetXTitle("Energy (GeV)");
652 fhClusV0MB ->SetYTitle("V0");
653
654 fhClusV0L0 = new TH2F("hClusV0L0","clusters E distribution vs V0 for L0 trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
655 fhClusV0L0 ->SetXTitle("Energy (GeV)");
656 fhClusV0L0 ->SetYTitle("V0");
657
658 fhClusV0L1G = new TH2F("hClusV0L1G","clusters E distribution vs V0 for L1G trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
659 fhClusV0L1G ->SetXTitle("Energy (GeV)");
660
661 fhClusV0L1J = new TH2F("hClusV0L1J","clusters E distribution vs V0 for L1J trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
662 fhClusV0L1J ->SetXTitle("Energy (GeV)");
663 fhClusV0L1J ->SetYTitle("V0");
664
665 fhClusV0L1GOnly = new TH2F("hClusV0L1GOnly","clusters E distribution vs V0 for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
666 fhClusV0L1GOnly->SetXTitle("Energy (GeV)");
667 fhClusV0L1GOnly->SetYTitle("V0");
668
669 fhClusV0L1JOnly = new TH2F("hClusV0L1JOnly","clusters E distribution vs V0 for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
670 fhClusV0L1JOnly->SetXTitle("Energy (GeV)");
671 fhClusV0L1JOnly->SetYTitle("V0");
672
673 fhClusV0MaxMB = new TH2F("hClusV0MaxMB","maximum energy cluster per event vs V0 for MB trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
674 fhClusV0MaxMB ->SetXTitle("Energy (GeV)");
675 fhClusV0MaxMB ->SetYTitle("V0");
676
677 fhClusV0MaxL0 = new TH2F("hClusV0MaxL0","maximum energy cluster per event vs V0 for L0 trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
678 fhClusV0MaxL0 ->SetXTitle("Energy (GeV)");
679 fhClusV0MaxL0 ->SetYTitle("V0");
680
681 fhClusV0MaxL1G = new TH2F("hClusV0MaxL1G","maximum energy cluster per event vs V0 for L1G trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
682 fhClusV0MaxL1G->SetXTitle("Energy (GeV)");
683 fhClusV0MaxL1G->SetYTitle("V0");
684
685 fhClusV0MaxL1J = new TH2F("hClusV0MaxL1J","maximum energy cluster per event vs V0 for L1J trigger",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
686 fhClusV0MaxL1J->SetXTitle("Energy (GeV)");
687 fhClusV0MaxL1J->SetYTitle("V0");
688
689 fhClusV0MaxL1GOnly = new TH2F("hClusV0MaxL1GOnly","maximum energy cluster per event vs V0 for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
690 fhClusV0MaxL1GOnly->SetXTitle("Energy (GeV)");
691 fhClusV0MaxL1GOnly->SetYTitle("V0");
692
693 fhClusV0MaxL1JOnly = new TH2F("hClusV0MaxL1JOnly","maximum energy cluster per event vs V0 for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,fNBinsV0Signal,0,fMaxV0Signal);
694 fhClusV0MaxL1JOnly->SetXTitle("Energy (GeV)");
695 fhClusV0MaxL1JOnly->SetYTitle("V0");
696
697
698 fOutputList->Add(fhClusV0MB);
699 fOutputList->Add(fhClusV0L0);
700 fOutputList->Add(fhClusV0L1G);
701 fOutputList->Add(fhClusV0L1J);
702 fOutputList->Add(fhClusV0L1GOnly);
703 fOutputList->Add(fhClusV0L1JOnly);
704
705 fOutputList->Add(fhClusV0MaxMB);
706 fOutputList->Add(fhClusV0MaxL0);
707 fOutputList->Add(fhClusV0MaxL1G);
708 fOutputList->Add(fhClusV0MaxL1J);
709 fOutputList->Add(fhClusV0MaxL1GOnly);
710 fOutputList->Add(fhClusV0MaxL1JOnly);
711
712 // Cluster histograms, E vs Pseudorapidity
713 Float_t etamin =-0.8;
714 Float_t etamax = 0.8;
715 Int_t neta = 160;
716 fhClusEtaMB = new TH2F("hClusEtaMB","clusters distribution vs #eta for MB trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
717 fhClusEtaMB ->SetXTitle("Energy (GeV)");
718 fhClusEtaMB ->SetYTitle("#eta");
719
720 fhClusEtaL0 = new TH2F("hClusEtaL0","clusters distribution vs #eta for L0 trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
721 fhClusEtaL0 ->SetXTitle("Energy (GeV)");
722 fhClusEtaL0 ->SetYTitle("#eta");
723
724 fhClusEtaL1G = new TH2F("hClusEtaL1G","clusters distribution vs #eta for L1G trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
725 fhClusEtaL1G ->SetXTitle("Energy (GeV)");
726
727 fhClusEtaL1J = new TH2F("hClusEtaL1J","clusters distribution vs #eta for L1J trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
728 fhClusEtaL1J ->SetXTitle("Energy (GeV)");
729 fhClusEtaL1J ->SetYTitle("#eta");
730
731 fhClusEtaL1GOnly = new TH2F("hClusEtaL1GOnly","clusters distribution vs #eta for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
732 fhClusEtaL1GOnly->SetXTitle("Energy (GeV)");
733 fhClusEtaL1GOnly->SetYTitle("#eta");
734
735 fhClusEtaL1JOnly = new TH2F("hClusEtaL1JOnly","clusters distribution vs #eta for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
736 fhClusEtaL1JOnly->SetXTitle("Energy (GeV)");
737 fhClusEtaL1JOnly->SetYTitle("#eta");
738
739 fhClusEtaMaxMB = new TH2F("hClusEtaMaxMB","maximum energy cluster per event vs #eta for MB trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
740 fhClusEtaMaxMB ->SetXTitle("Energy (GeV)");
741 fhClusEtaMaxMB ->SetYTitle("#eta");
742
743 fhClusEtaMaxL0 = new TH2F("hClusEtaMaxL0","maximum energy cluster per event vs #eta for L0 trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
744 fhClusEtaMaxL0 ->SetXTitle("Energy (GeV)");
745 fhClusEtaMaxL0 ->SetYTitle("#eta");
746
747 fhClusEtaMaxL1G = new TH2F("hClusEtaMaxL1G","maximum energy cluster per event vs #eta for L1G trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
748 fhClusEtaMaxL1G->SetXTitle("Energy (GeV)");
749 fhClusEtaMaxL1G->SetYTitle("#eta");
750
751 fhClusEtaMaxL1J = new TH2F("hClusEtaMaxL1J","maximum energy cluster per event vs #eta for L1J trigger",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
752 fhClusEtaMaxL1J->SetXTitle("Energy (GeV)");
753 fhClusEtaMaxL1J->SetYTitle("#eta");
754
755 fhClusEtaMaxL1GOnly = new TH2F("hClusEtaMaxL1GOnly","maximum energy cluster per event vs #eta for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
756 fhClusEtaMaxL1GOnly->SetXTitle("Energy (GeV)");
757 fhClusEtaMaxL1GOnly->SetYTitle("#eta");
758
759 fhClusEtaMaxL1JOnly = new TH2F("hClusEtaMaxL1JOnly","maximum energy cluster per event vs #eta for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,neta, etamin, etamax);
760 fhClusEtaMaxL1JOnly->SetXTitle("Energy (GeV)");
761 fhClusEtaMaxL1JOnly->SetYTitle("#eta");
762
763
764 fOutputList->Add(fhClusEtaMB);
765 fOutputList->Add(fhClusEtaL0);
766 fOutputList->Add(fhClusEtaL1G);
767 fOutputList->Add(fhClusEtaL1J);
768 fOutputList->Add(fhClusEtaL1GOnly);
769 fOutputList->Add(fhClusEtaL1JOnly);
770
771 fOutputList->Add(fhClusEtaMaxMB);
772 fOutputList->Add(fhClusEtaMaxL0);
773 fOutputList->Add(fhClusEtaMaxL1G);
774 fOutputList->Add(fhClusEtaMaxL1J);
775 fOutputList->Add(fhClusEtaMaxL1GOnly);
776 fOutputList->Add(fhClusEtaMaxL1JOnly);
777
778
779 // Cluster histograms, E vs Azimuthal angle
780 Float_t phimin = 80. *TMath::DegToRad();
781 Float_t phimax = 190.*TMath::DegToRad();
782 Int_t nphi = 110;
783
784 fhClusPhiMB = new TH2F("hClusPhiMB","clusters distribution vs #phi for MB trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
785 fhClusPhiMB ->SetXTitle("Energy (GeV)");
786 fhClusPhiMB ->SetYTitle("#phi (rad)");
787
788 fhClusPhiL0 = new TH2F("hClusPhiL0","clusters distribution vs #phi for L0 trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
789 fhClusPhiL0 ->SetXTitle("Energy (GeV)");
790 fhClusPhiL0 ->SetYTitle("#phi (rad)");
791
792 fhClusPhiL1G = new TH2F("hClusPhiL1G","clusters distribution vs #phi for L1G trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
793 fhClusPhiL1G ->SetXTitle("Energy (GeV)");
794
795 fhClusPhiL1J = new TH2F("hClusPhiL1J","clusters distribution vs #phi for L1J trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
796 fhClusPhiL1J ->SetXTitle("Energy (GeV)");
797 fhClusPhiL1J ->SetYTitle("#phi (rad)");
798
799 fhClusPhiL1GOnly = new TH2F("hClusPhiL1GOnly","clusters distribution vs #phi for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
800 fhClusPhiL1GOnly->SetXTitle("Energy (GeV)");
801 fhClusPhiL1GOnly->SetYTitle("#phi (rad)");
802
803 fhClusPhiL1JOnly = new TH2F("hClusPhiL1JOnly","clusters distribution vs #phi for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
804 fhClusPhiL1JOnly->SetXTitle("Energy (GeV)");
805 fhClusPhiL1JOnly->SetYTitle("#phi (rad)");
806
807 fhClusPhiMaxMB = new TH2F("hClusPhiMaxMB","maximum energy cluster per event vs #phi for MB trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
808 fhClusPhiMaxMB ->SetXTitle("Energy (GeV)");
809 fhClusPhiMaxMB ->SetYTitle("#phi (rad)");
810
811 fhClusPhiMaxL0 = new TH2F("hClusPhiMaxL0","maximum energy cluster per event vs #phi for L0 trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
812 fhClusPhiMaxL0 ->SetXTitle("Energy (GeV)");
813 fhClusPhiMaxL0 ->SetYTitle("#phi (rad)");
814
815 fhClusPhiMaxL1G = new TH2F("hClusPhiMaxL1G","maximum energy cluster per event vs #phi for L1G trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
816 fhClusPhiMaxL1G->SetXTitle("Energy (GeV)");
817 fhClusPhiMaxL1G->SetYTitle("#phi (rad)");
818
819 fhClusPhiMaxL1J = new TH2F("hClusPhiMaxL1J","maximum energy cluster per event vs #phi for L1J trigger",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
820 fhClusPhiMaxL1J->SetXTitle("Energy (GeV)");
821 fhClusPhiMaxL1J->SetYTitle("#phi (rad)");
822
823 fhClusPhiMaxL1GOnly = new TH2F("hClusPhiMaxL1GOnly","maximum energy cluster per event vs #phi for L1G trigger and not L1J",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
824 fhClusPhiMaxL1GOnly->SetXTitle("Energy (GeV)");
825 fhClusPhiMaxL1GOnly->SetYTitle("#phi (rad)");
826
827 fhClusPhiMaxL1JOnly = new TH2F("hClusPhiMaxL1JOnly","maximum energy cluster per event vs #phi for L1J trigger and not L1G",fNBinsClusterE,0,fMaxClusterE,nphi, phimin, phimax);
828 fhClusPhiMaxL1JOnly->SetXTitle("Energy (GeV)");
829 fhClusPhiMaxL1JOnly->SetYTitle("#phi (rad)");
830
831
832 fOutputList->Add(fhClusPhiMB);
833 fOutputList->Add(fhClusPhiL0);
834 fOutputList->Add(fhClusPhiL1G);
835 fOutputList->Add(fhClusPhiL1J);
836 fOutputList->Add(fhClusPhiL1GOnly);
837 fOutputList->Add(fhClusPhiL1JOnly);
838
839 fOutputList->Add(fhClusPhiMaxMB);
840 fOutputList->Add(fhClusPhiMaxL0);
841 fOutputList->Add(fhClusPhiMaxL1G);
842 fOutputList->Add(fhClusPhiMaxL1J);
843 fOutputList->Add(fhClusPhiMaxL1GOnly);
844 fOutputList->Add(fhClusPhiMaxL1JOnly);
845
846 // Cluster histograms, Pseudorapidity vs Azimuthal angle
847
848 fhClusEtaPhiHighMB = new TH2F("hClusEtaPhiHighMB","clusters distribution #eta vs #phi for MB trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
849 fhClusEtaPhiHighMB ->SetXTitle("#eta");
850 fhClusEtaPhiHighMB ->SetYTitle("#phi (rad)");
851
852 fhClusEtaPhiHighL0 = new TH2F("hClusEtaPhiHighL0","clusters distribution #eta vs #phi for L0 trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
853 fhClusEtaPhiHighL0 ->SetXTitle("#eta");
854 fhClusEtaPhiHighL0 ->SetYTitle("#phi (rad)");
855
856 fhClusEtaPhiHighL1G = new TH2F("hClusEtaPhiHighL1G","clusters distribution #eta vs #phi for L1G trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
857 fhClusEtaPhiHighL1G ->SetXTitle("#eta");
858
859 fhClusEtaPhiHighL1J = new TH2F("hClusEtaPhiHighL1J","clusters distribution #eta vs #phi for L1J trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
860 fhClusEtaPhiHighL1J ->SetXTitle("#eta");
861 fhClusEtaPhiHighL1J ->SetYTitle("#phi (rad)");
862
863 fhClusEtaPhiHighL1GOnly = new TH2F("hClusEtaPhiHighL1GOnly","clusters distribution #eta vs #phi for L1G trigger and not L1J, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
864 fhClusEtaPhiHighL1GOnly->SetXTitle("#eta");
865 fhClusEtaPhiHighL1GOnly->SetYTitle("#phi (rad)");
866
867 fhClusEtaPhiHighL1JOnly = new TH2F("hClusEtaPhiHighL1JOnly","clusters distribution #eta vs #phi for L1J trigger and not L1G, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
868 fhClusEtaPhiHighL1JOnly->SetXTitle("#eta");
869 fhClusEtaPhiHighL1JOnly->SetYTitle("#phi (rad)");
870
871 fhClusEtaPhiHighCluMaxMB = new TH2F("hClusEtaPhiHighCluMaxMB","maximum energy cluster per event #eta vs #phi for MB trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
872 fhClusEtaPhiHighCluMaxMB ->SetXTitle("#eta");
873 fhClusEtaPhiHighCluMaxMB ->SetYTitle("#phi (rad)");
874
875 fhClusEtaPhiHighCluMaxL0 = new TH2F("hClusEtaPhiHighCluMaxL0","maximum energy cluster per event #eta vs #phi for L0 trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
876 fhClusEtaPhiHighCluMaxL0 ->SetXTitle("#eta");
877 fhClusEtaPhiHighCluMaxL0 ->SetYTitle("#phi (rad)");
878
879 fhClusEtaPhiHighCluMaxL1G = new TH2F("hClusEtaPhiHighCluMaxL1G","maximum energy cluster per event #eta vs #phi for L1G trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
880 fhClusEtaPhiHighCluMaxL1G->SetXTitle("#eta");
881 fhClusEtaPhiHighCluMaxL1G->SetYTitle("#phi (rad)");
882
883 fhClusEtaPhiHighCluMaxL1J = new TH2F("hClusEtaPhiHighCluMaxL1J","maximum energy cluster per event #eta vs #phi for L1J trigger, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
884 fhClusEtaPhiHighCluMaxL1J->SetXTitle("#eta");
885 fhClusEtaPhiHighCluMaxL1J->SetYTitle("#phi (rad)");
886
887 fhClusEtaPhiHighCluMaxL1GOnly = new TH2F("hClusEtaPhiHighCluMaxL1GOnly","maximum energy cluster per event #eta vs #phi for L1G trigger and not L1J, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
888 fhClusEtaPhiHighCluMaxL1GOnly->SetXTitle("#eta");
889 fhClusEtaPhiHighCluMaxL1GOnly->SetYTitle("#phi (rad)");
890
891 fhClusEtaPhiHighCluMaxL1JOnly = new TH2F("hClusEtaPhiHighCluMaxL1JOnly","maximum energy cluster per event #eta vs #phi for L1J trigger and not L1G, E > 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
892 fhClusEtaPhiHighCluMaxL1JOnly->SetXTitle("#eta");
893 fhClusEtaPhiHighCluMaxL1JOnly->SetYTitle("#phi (rad)");
894
895
896 fOutputList->Add(fhClusEtaPhiHighMB);
897 fOutputList->Add(fhClusEtaPhiHighL0);
898 fOutputList->Add(fhClusEtaPhiHighL1G);
899 fOutputList->Add(fhClusEtaPhiHighL1J);
900 fOutputList->Add(fhClusEtaPhiHighL1GOnly);
901 fOutputList->Add(fhClusEtaPhiHighL1JOnly);
902
903 fOutputList->Add(fhClusEtaPhiHighCluMaxMB);
904 fOutputList->Add(fhClusEtaPhiHighCluMaxL0);
905 fOutputList->Add(fhClusEtaPhiHighCluMaxL1G);
906 fOutputList->Add(fhClusEtaPhiHighCluMaxL1J);
907 fOutputList->Add(fhClusEtaPhiHighCluMaxL1GOnly);
908 fOutputList->Add(fhClusEtaPhiHighCluMaxL1JOnly);
909
910 fhClusEtaPhiLowMB = new TH2F("hClusEtaPhiLowMB","clusters distribution #eta vs #phi for MB trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
911 fhClusEtaPhiLowMB ->SetXTitle("#eta");
912 fhClusEtaPhiLowMB ->SetYTitle("#phi (rad)");
913
914 fhClusEtaPhiLowL0 = new TH2F("hClusEtaPhiLowL0","clusters distribution #eta vs #phi for L0 trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
915 fhClusEtaPhiLowL0 ->SetXTitle("#eta");
916 fhClusEtaPhiLowL0 ->SetYTitle("#phi (rad)");
917
918 fhClusEtaPhiLowL1G = new TH2F("hClusEtaPhiLowL1G","clusters distribution #eta vs #phi for L1G trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
919 fhClusEtaPhiLowL1G ->SetXTitle("#eta");
920
921 fhClusEtaPhiLowL1J = new TH2F("hClusEtaPhiLowL1J","clusters distribution #eta vs #phi for L1J trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
922 fhClusEtaPhiLowL1J ->SetXTitle("#eta");
923 fhClusEtaPhiLowL1J ->SetYTitle("#phi (rad)");
924
925 fhClusEtaPhiLowL1GOnly = new TH2F("hClusEtaPhiLowL1GOnly","clusters distribution #eta vs #phi for L1G trigger and not L1J, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
926 fhClusEtaPhiLowL1GOnly->SetXTitle("#eta");
927 fhClusEtaPhiLowL1GOnly->SetYTitle("#phi (rad)");
928
929 fhClusEtaPhiLowL1JOnly = new TH2F("hClusEtaPhiLowL1JOnly","clusters distribution #eta vs #phi for L1J trigger and not L1G, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
930 fhClusEtaPhiLowL1JOnly->SetXTitle("#eta");
931 fhClusEtaPhiLowL1JOnly->SetYTitle("#phi (rad)");
932
933 fhClusEtaPhiLowCluMaxMB = new TH2F("hClusEtaPhiLowCluMaxMB","maximum energy cluster per event #eta vs #phi for MB trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
934 fhClusEtaPhiLowCluMaxMB ->SetXTitle("#eta");
935 fhClusEtaPhiLowCluMaxMB ->SetYTitle("#phi (rad)");
936
937 fhClusEtaPhiLowCluMaxL0 = new TH2F("hClusEtaPhiLowCluMaxL0","maximum energy cluster per event #eta vs #phi for L0 trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
938 fhClusEtaPhiLowCluMaxL0 ->SetXTitle("#eta");
939 fhClusEtaPhiLowCluMaxL0 ->SetYTitle("#phi (rad)");
940
941 fhClusEtaPhiLowCluMaxL1G = new TH2F("hClusEtaPhiLowCluMaxL1G","maximum energy cluster per event #eta vs #phi for L1G trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
942 fhClusEtaPhiLowCluMaxL1G->SetXTitle("#eta");
943 fhClusEtaPhiLowCluMaxL1G->SetYTitle("#phi (rad)");
944
945 fhClusEtaPhiLowCluMaxL1J = new TH2F("hClusEtaPhiLowCluMaxL1J","maximum energy cluster per event #eta vs #phi for L1J trigger, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
946 fhClusEtaPhiLowCluMaxL1J->SetXTitle("#eta");
947 fhClusEtaPhiLowCluMaxL1J->SetYTitle("#phi (rad)");
948
949 fhClusEtaPhiLowCluMaxL1GOnly = new TH2F("hClusEtaPhiLowCluMaxL1GOnly","maximum energy cluster per event #eta vs #phi for L1G trigger and not L1J, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
950 fhClusEtaPhiLowCluMaxL1GOnly->SetXTitle("#eta");
951 fhClusEtaPhiLowCluMaxL1GOnly->SetYTitle("#phi (rad)");
952
953 fhClusEtaPhiLowCluMaxL1JOnly = new TH2F("hClusEtaPhiLowCluMaxL1JOnly","maximum energy cluster per event #eta vs #phi for L1J trigger and not L1G, E < 10 GeV",neta, etamin, etamax,nphi, phimin, phimax);
954 fhClusEtaPhiLowCluMaxL1JOnly->SetXTitle("#eta");
955 fhClusEtaPhiLowCluMaxL1JOnly->SetYTitle("#phi (rad)");
956
957
958 fOutputList->Add(fhClusEtaPhiLowMB);
959 fOutputList->Add(fhClusEtaPhiLowL0);
960 fOutputList->Add(fhClusEtaPhiLowL1G);
961 fOutputList->Add(fhClusEtaPhiLowL1J);
962 fOutputList->Add(fhClusEtaPhiLowL1GOnly);
963 fOutputList->Add(fhClusEtaPhiLowL1JOnly);
964
965 fOutputList->Add(fhClusEtaPhiLowCluMaxMB);
966 fOutputList->Add(fhClusEtaPhiLowCluMaxL0);
967 fOutputList->Add(fhClusEtaPhiLowCluMaxL1G);
968 fOutputList->Add(fhClusEtaPhiLowCluMaxL1J);
969 fOutputList->Add(fhClusEtaPhiLowCluMaxL1GOnly);
970 fOutputList->Add(fhClusEtaPhiLowCluMaxL1JOnly);
971
972
973 fhClusEtaPhiHighCellMaxMB = new TH2F("hClusEtaPhiHighCellMaxMB","Cluster hit map in calorimeter (max cell), column vs row for MB trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
974 fhClusEtaPhiHighCellMaxMB ->SetXTitle("Index #eta (columnns)");
975 fhClusEtaPhiHighCellMaxMB ->SetYTitle("Index #phi (rows)");
976
977 fhClusEtaPhiHighCellMaxL0 = new TH2F("hClusEtaPhiHighCellMaxL0","Cluster hit map in calorimeter (max cell), column vs row for L0 trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
978 fhClusEtaPhiHighCellMaxL0 ->SetXTitle("Index #eta (columnns)");
979 fhClusEtaPhiHighCellMaxL0 ->SetYTitle("Index #phi (rows)");
980
981 fhClusEtaPhiHighCellMaxL1G = new TH2F("hClusEtaPhiHighCellMaxL1G","Cluster hit map in calorimeter (max cell), column vs row for L1G trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
982 fhClusEtaPhiHighCellMaxL1G ->SetXTitle("Index #eta (columnns)");
983
984 fhClusEtaPhiHighCellMaxL1J = new TH2F("hClusEtaPhiHighCellMaxL1J","Cluster hit map in calorimeter (max cell), column vs row for L1J trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
985 fhClusEtaPhiHighCellMaxL1J ->SetXTitle("Index #eta (columnns)");
986 fhClusEtaPhiHighCellMaxL1J ->SetYTitle("Index #phi (rows)");
987
988 fhClusEtaPhiHighCellMaxL1GOnly = new TH2F("hClusEtaPhiHighCellMaxL1GOnly","Cluster hit map in calorimeter (max cell), column vs row for L1G trigger and not L1J, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
989 fhClusEtaPhiHighCellMaxL1GOnly->SetXTitle("Index #eta (columnns)");
990 fhClusEtaPhiHighCellMaxL1GOnly->SetYTitle("Index #phi (rows)");
991
992 fhClusEtaPhiHighCellMaxL1JOnly = new TH2F("hClusEtaPhiHighCellMaxL1JOnly","Cluster hit map in calorimeter (max cell), column vs row for L1J trigger and not L1G, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
993 fhClusEtaPhiHighCellMaxL1JOnly->SetXTitle("Index #eta (columnns)");
994 fhClusEtaPhiHighCellMaxL1JOnly->SetYTitle("Index #phi (rows)");
995
996 fhClusEtaPhiHighCellMaxCluMaxMB = new TH2F("hClusEtaPhiHighCellMaxCluMaxMB","Max E cluster hit map in calorimeter (max cell), column vs row for MB trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
997 fhClusEtaPhiHighCellMaxCluMaxMB ->SetXTitle("Index #eta (columnns)");
998 fhClusEtaPhiHighCellMaxCluMaxMB ->SetYTitle("Index #phi (rows)");
999
1000 fhClusEtaPhiHighCellMaxCluMaxL0 = new TH2F("hClusEtaPhiHighCellMaxCluMaxL0","Max E cluster hit map in calorimeter (max cell), column vs row for L0 trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1001 fhClusEtaPhiHighCellMaxCluMaxL0 ->SetXTitle("Index #eta (columnns)");
1002 fhClusEtaPhiHighCellMaxCluMaxL0 ->SetYTitle("Index #phi (rows)");
1003
1004 fhClusEtaPhiHighCellMaxCluMaxL1G = new TH2F("hClusEtaPhiHighCellMaxCluMaxL1G","Max E cluster hit map in calorimeter (max cell), column vs row for L1G trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1005 fhClusEtaPhiHighCellMaxCluMaxL1G->SetXTitle("Index #eta (columnns)");
1006 fhClusEtaPhiHighCellMaxCluMaxL1G->SetYTitle("Index #phi (rows)");
1007
1008 fhClusEtaPhiHighCellMaxCluMaxL1J = new TH2F("hClusEtaPhiHighCellMaxCluMaxL1J","Max E cluster hit map in calorimeter (max cell), column vs row for L1J trigger, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1009 fhClusEtaPhiHighCellMaxCluMaxL1J->SetXTitle("Index #eta (columnns)");
1010 fhClusEtaPhiHighCellMaxCluMaxL1J->SetYTitle("Index #phi (rows)");
1011
1012 fhClusEtaPhiHighCellMaxCluMaxL1GOnly = new TH2F("hClusEtaPhiHighCellMaxCluMaxL1GOnly","Max E cluster hit map in calorimeter (max cell), column vs row for L1G trigger and not L1J, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1013 fhClusEtaPhiHighCellMaxCluMaxL1GOnly->SetXTitle("Index #eta (columnns)");
1014 fhClusEtaPhiHighCellMaxCluMaxL1GOnly->SetYTitle("Index #phi (rows)");
1015
1016 fhClusEtaPhiHighCellMaxCluMaxL1JOnly = new TH2F("hClusEtaPhiHighCellMaxCluMaxL1JOnly","Max E cluster hit map in calorimeter (max cell), column vs row for L1J trigger and not L1G, E > 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1017 fhClusEtaPhiHighCellMaxCluMaxL1JOnly->SetXTitle("Index #eta (columnns)");
1018 fhClusEtaPhiHighCellMaxCluMaxL1JOnly->SetYTitle("Index #phi (rows)");
1019
1020
1021 fOutputList->Add(fhClusEtaPhiHighCellMaxMB);
1022 fOutputList->Add(fhClusEtaPhiHighCellMaxL0);
1023 fOutputList->Add(fhClusEtaPhiHighCellMaxL1G);
1024 fOutputList->Add(fhClusEtaPhiHighCellMaxL1J);
1025 fOutputList->Add(fhClusEtaPhiHighCellMaxL1GOnly);
1026 fOutputList->Add(fhClusEtaPhiHighCellMaxL1JOnly);
1027
1028 fOutputList->Add(fhClusEtaPhiHighCellMaxCluMaxMB);
1029 fOutputList->Add(fhClusEtaPhiHighCellMaxCluMaxL0);
1030 fOutputList->Add(fhClusEtaPhiHighCellMaxCluMaxL1G);
1031 fOutputList->Add(fhClusEtaPhiHighCellMaxCluMaxL1J);
1032 fOutputList->Add(fhClusEtaPhiHighCellMaxCluMaxL1GOnly);
1033 fOutputList->Add(fhClusEtaPhiHighCellMaxCluMaxL1JOnly);
1034
1035 fhClusEtaPhiLowCellMaxMB = new TH2F("hClusEtaPhiLowCellMaxMB","Cluster hit map in calorimeter (max cell), column vs row for MB trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1036 fhClusEtaPhiLowCellMaxMB ->SetXTitle("Index #eta (columnns)");
1037 fhClusEtaPhiLowCellMaxMB ->SetYTitle("#phi (rad)");
1038
1039 fhClusEtaPhiLowCellMaxL0 = new TH2F("hClusEtaPhiLowCellMaxL0","Cluster hit map in calorimeter (max cell), column vs row for L0 trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1040 fhClusEtaPhiLowCellMaxL0 ->SetXTitle("Index #eta (columnns)");
1041 fhClusEtaPhiLowCellMaxL0 ->SetYTitle("#phi (rad)");
1042
1043 fhClusEtaPhiLowCellMaxL1G = new TH2F("hClusEtaPhiLowCellMaxL1G","Cluster hit map in calorimeter (max cell), column vs row for L1G trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1044 fhClusEtaPhiLowCellMaxL1G ->SetXTitle("Index #eta (columnns)");
1045
1046 fhClusEtaPhiLowCellMaxL1J = new TH2F("hClusEtaPhiLowCellMaxL1J","Cluster hit map in calorimeter (max cell), column vs row for L1J trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1047 fhClusEtaPhiLowCellMaxL1J ->SetXTitle("Index #eta (columnns)");
1048 fhClusEtaPhiLowCellMaxL1J ->SetYTitle("#phi (rad)");
1049
1050 fhClusEtaPhiLowCellMaxL1GOnly = new TH2F("hClusEtaPhiLowCellMaxL1GOnly","Cluster hit map in calorimeter (max cell), column vs row for L1G trigger and not L1J, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1051 fhClusEtaPhiLowCellMaxL1GOnly->SetXTitle("Index #eta (columnns)");
1052 fhClusEtaPhiLowCellMaxL1GOnly->SetYTitle("#phi (rad)");
1053
1054 fhClusEtaPhiLowCellMaxL1JOnly = new TH2F("hClusEtaPhiLowCellMaxL1JOnly","Cluster hit map in calorimeter (max cell), column vs row for L1J trigger and not L1G, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1055 fhClusEtaPhiLowCellMaxL1JOnly->SetXTitle("Index #eta (columnns)");
1056 fhClusEtaPhiLowCellMaxL1JOnly->SetYTitle("#phi (rad)");
1057
1058 fhClusEtaPhiLowCellMaxCluMaxMB = new TH2F("hClusEtaPhiLowCellMaxCluMaxMB","Max E cluster hit map in calorimeter (max cell), column vs row for MB trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1059 fhClusEtaPhiLowCellMaxCluMaxMB ->SetXTitle("Index #eta (columnns)");
1060 fhClusEtaPhiLowCellMaxCluMaxMB ->SetYTitle("#phi (rad)");
1061
1062 fhClusEtaPhiLowCellMaxCluMaxL0 = new TH2F("hClusEtaPhiLowCellMaxCluMaxL0","Max E cluster hit map in calorimeter (max cell), column vs row for L0 trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1063 fhClusEtaPhiLowCellMaxCluMaxL0 ->SetXTitle("Index #eta (columnns)");
1064 fhClusEtaPhiLowCellMaxCluMaxL0 ->SetYTitle("#phi (rad)");
1065
1066 fhClusEtaPhiLowCellMaxCluMaxL1G = new TH2F("hClusEtaPhiLowCellMaxCluMaxL1G","Max E cluster hit map in calorimeter (max cell), column vs row for L1G trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1067 fhClusEtaPhiLowCellMaxCluMaxL1G->SetXTitle("Index #eta (columnns)");
1068 fhClusEtaPhiLowCellMaxCluMaxL1G->SetYTitle("#phi (rad)");
1069
1070 fhClusEtaPhiLowCellMaxCluMaxL1J = new TH2F("hClusEtaPhiLowCellMaxCluMaxL1J","Max E cluster hit map in calorimeter (max cell), column vs row for L1J trigger, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1071 fhClusEtaPhiLowCellMaxCluMaxL1J->SetXTitle("Index #eta (columnns)");
1072 fhClusEtaPhiLowCellMaxCluMaxL1J->SetYTitle("#phi (rad)");
1073
1074 fhClusEtaPhiLowCellMaxCluMaxL1GOnly = new TH2F("hClusEtaPhiLowCellMaxCluMaxL1GOnly","Max E cluster hit map in calorimeter (max cell), column vs row for L1G trigger and not L1J, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1075 fhClusEtaPhiLowCellMaxCluMaxL1GOnly->SetXTitle("Index #eta (columnns)");
1076 fhClusEtaPhiLowCellMaxCluMaxL1GOnly->SetYTitle("#phi (rad)");
1077
1078 fhClusEtaPhiLowCellMaxCluMaxL1JOnly = new TH2F("hClusEtaPhiLowCellMaxCluMaxL1JOnly","Max E cluster hit map in calorimeter (max cell), column vs row for L1J trigger and not L1G, E < 10 GeV",fgkFALTROCols,0,fgkFALTROCols,fgkFALTRORows,0,fgkFALTRORows);
1079 fhClusEtaPhiLowCellMaxCluMaxL1JOnly->SetXTitle("Index #eta (columnns)");
1080 fhClusEtaPhiLowCellMaxCluMaxL1JOnly->SetYTitle("#phi (rad)");
0d896539 1081
bce9493b 1082
ec77a234 1083 fOutputList->Add(fhClusEtaPhiLowCellMaxMB);
1084 fOutputList->Add(fhClusEtaPhiLowCellMaxL0);
1085 fOutputList->Add(fhClusEtaPhiLowCellMaxL1G);
1086 fOutputList->Add(fhClusEtaPhiLowCellMaxL1J);
1087 fOutputList->Add(fhClusEtaPhiLowCellMaxL1GOnly);
1088 fOutputList->Add(fhClusEtaPhiLowCellMaxL1JOnly);
1089
1090 fOutputList->Add(fhClusEtaPhiLowCellMaxCluMaxMB);
1091 fOutputList->Add(fhClusEtaPhiLowCellMaxCluMaxL0);
1092 fOutputList->Add(fhClusEtaPhiLowCellMaxCluMaxL1G);
1093 fOutputList->Add(fhClusEtaPhiLowCellMaxCluMaxL1J);
1094 fOutputList->Add(fhClusEtaPhiLowCellMaxCluMaxL1GOnly);
1095 fOutputList->Add(fhClusEtaPhiLowCellMaxCluMaxL1JOnly);
1096
bce9493b 1097 PostData(1, fOutputList);
1098
1099}
85196c29 1100//______________________________________________________
bce9493b 1101void AliAnalysisTaskEMCALTriggerQA::UserExec(Option_t *)
1102{
1103 // Main loop
bce9493b 1104
1105 AliVEvent* event = InputEvent();
1106
1107 //Remove next lines when AODs ready
1108 AliESDEvent *esdEvent = dynamic_cast<AliESDEvent*>(event);
1109
1110 if (!esdEvent)
1111 {
1112 AliError("Work only with ESDs, not available, exit");
1113 return;
1114 }
1115
2b4e1cc5 1116 InitGeometry(); // only once, must be done before OADB, geo OADB accessed here
1117
1118 if(fAccessOADB) AccessOADB(); // only once
1119
a40222c8 1120 //trigger configuration
1121 TString triggerclasses = esdEvent->GetFiredTriggerClasses();
77626b4a 1122
6b4638cc 1123 Int_t eventType = ((AliVHeader*)InputEvent()->GetHeader())->GetEventType();
1124 // physics events eventType=7, select only those
77626b4a 1125
6b4638cc 1126 if(triggerclasses=="" || eventType != 7) return;
0d896539 1127
1128 // Check trigger
1129 Bool_t bMB = kFALSE;
1130 Bool_t bL0 = kFALSE;
1131 Bool_t bL1G = kFALSE;
1132 Bool_t bL1J = kFALSE;
1133
6bfd1538 1134 if(triggerclasses.Contains("CINT7-B-NOPF-ALLNOTRD") ||
1135 triggerclasses.Contains("CINT7-I-NOPF-ALLNOTRD") ||
1136 triggerclasses.Contains("CINT1-I-NOPF-ALLNOTRD") ||
8a50a36c 1137 triggerclasses.Contains("CINT1-B-NOPF-ALLNOTRD") ||
0d896539 1138 triggerclasses.Contains("CPBI2_B1-B-NOPF-ALLNOTRD") ) bMB = kTRUE;
1139
de782324 1140 if(triggerclasses.Contains("CEMC7-B") ||
1141 triggerclasses.Contains("CEMC1-B") ) bL0 = kTRUE;
0d896539 1142
de782324 1143 if(triggerclasses.Contains("CEMC7EGA-B") ||
1144 triggerclasses.Contains("CPBI2EGA-B") ) bL1G = kTRUE;
0d896539 1145
de782324 1146 if(triggerclasses.Contains("CEMC7EJE-B") ||
1147 triggerclasses.Contains("CPBI2EJE-B") ) bL1J = kTRUE;
0d896539 1148
1149 // Fill event histo
1150 fhNEvents->Fill(0.5); // All physics events
77626b4a 1151
0d896539 1152 if( bMB )
1153 {
1154 fhNEvents->Fill(1.5);
1155 if( !bL1G && !bL1J && !bL0 ) fhNEvents->Fill(8.5);
1156 }
1157 else
1158 {
1159 if( bL0 ) fhNEvents->Fill( 9.5);
1160 if( bL1G ) fhNEvents->Fill(10.5);
1161 if( bL1J ) fhNEvents->Fill(11.5);
1162 }
1163
1164 if( bL0 ) fhNEvents->Fill(2.5);
1165
1166 if( bL1G )
1167 {
1168 fhNEvents->Fill(3.5);
1169 if(!bL1J) fhNEvents->Fill(5.5);
1170 }
1171
1172 if( bL1J )
1173 {
1174 fhNEvents->Fill(4.5);
1175 if(!bL1G) fhNEvents->Fill(6.5);
1176 }
1177
1178 if(bL1J && bL1G) fhNEvents->Fill(7.5);
1179
1180
e395081d 1181 //std::cout << "trigger = " << triggerclasses << std::endl;
bce9493b 1182
bce9493b 1183 //map for cells and patches
1184
75e10d6a 1185 Double_t emcalCell [fgkFALTRORows][fgkFALTROCols], emcalCellL1G [fgkFALTRORows][fgkFALTROCols];
1186 Double_t emcalCellL1J [fgkFALTRORows][fgkFALTROCols], emcalTrigL0 [fgkFALTRORows][fgkFALTROCols];
1187 Double_t emcalTrigL0L1G[fgkFALTRORows][fgkFALTROCols], emcalTrigL0L1J[fgkFALTRORows][fgkFALTROCols];
1188 Double_t emcalTrigL1G [fgkFALTRORows][fgkFALTROCols], emcalTrigL1J [fgkFALTRORows][fgkFALTROCols], emcalTrigL1 [fgkFALTRORows][fgkFALTROCols];
1189 Double_t emcalPatchL0 [fgkFALTRORows][fgkFALTROCols], emcalPatchL1G [fgkFALTRORows][fgkFALTROCols], emcalPatchL1J[fgkFALTRORows][fgkFALTROCols];
bce9493b 1190
1191 for (Int_t i = 0; i < fgkFALTRORows; i++)
1192 {
1193 for (Int_t j = 0; j < fgkFALTROCols; j++)
1194 {
85196c29 1195 emcalTrigL0[i][j] = 0.;
a40222c8 1196 emcalTrigL0L1G[i][j]= 0.;
1197 emcalTrigL0L1J[i][j]= 0.;
e022364d 1198 emcalTrigL1G[i][j] = 0.;
1199 emcalTrigL1J[i][j] = 0.;
85196c29 1200 emcalTrigL1[i][j] = 0.;
1201 emcalCell[i][j] = 0.;
a40222c8 1202 emcalCellL1G[i][j] = 0.;
1203 emcalCellL1J[i][j] = 0.;
85196c29 1204 emcalPatchL0[i][j] = 0.;
bce9493b 1205 emcalPatchL1G[i][j] = 0.;
1206 emcalPatchL1J[i][j] = 0.;
1207 }
1208 }
1209
1210 // ---------------------------------
1211 // Cells analysis
1212 // Fill FEE energy per channel array
1213 // ---------------------------------
1214
1215 Int_t posX = -1, posY = -1;
1216 Int_t nSupMod = -1, ieta = -1, iphi = -1, nModule = -1, nIphi = -1, nIeta = -1;
1217 Short_t absId = -1;
1218 Int_t nCells = 0;
1219
1220 AliVCaloCells& cells= *(event->GetEMCALCells());
1221
1222 if (cells.IsEMCAL())
1223 {
1224 for (Int_t icell = 0; icell < cells.GetNumberOfCells(); icell++)
1225 {
1226 nCells ++;
1227
77e93dc2 1228 Double_t amp =0., time = 0., efrac = 0;
1229 Short_t mclabel = -1;
bce9493b 1230
77e93dc2 1231 cells.GetCell(icell, absId, amp, time,mclabel,efrac);
bce9493b 1232
1233 fGeometry->GetCellIndex(absId, nSupMod, nModule, nIphi, nIeta);
1234 fGeometry->GetCellPhiEtaIndexInSModule(nSupMod, nModule, nIphi, nIeta, iphi, ieta);
1235
1236 posX = (nSupMod % 2) ? ieta + AliEMCALGeoParams::fgkEMCALCols : ieta;
1237 posY = iphi + AliEMCALGeoParams::fgkEMCALRows * int(nSupMod / 2);
bce9493b 1238
85196c29 1239 if(int(posX/2) > fgkFALTROCols || int(posY/2) > fgkFALTRORows ) {
e395081d 1240 if(DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Wrong Position (x,y) = (%d,%d)\n",posX,posY);
85196c29 1241 continue;
1242 }
1243
1244 emcalCell[int(posY/2)][int(posX/2)] += amp;
e395081d 1245
0e91f259 1246 if(triggerclasses.Contains("CEMC7EGA-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EGA")) emcalCellL1G[int(posY/2)][int(posX/2)] += amp;
1247 if(triggerclasses.Contains("CEMC7EJE-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EJE")) emcalCellL1J[int(posY/2)][int(posX/2)] += amp;
85196c29 1248
bce9493b 1249 }
1250 }
1251
85196c29 1252 //-------------------------------------
1253 // Trigger analysis, fill L0, L1 arrays
1254 //-------------------------------------
bce9493b 1255
1256 AliESDCaloTrigger& trg= * (esdEvent->GetCaloTrigger("EMCAL"));
1257
1614ab69 1258 int kBitEGA = 4, kBitEJE = 5;
1259
1260 if (trg.IsA()->GetClassVersion() >= 5) {
1261 kBitEGA = 6;
1262 kBitEJE = 8;
1263 }
1264
bce9493b 1265 Int_t nL0Patch = 0 ;
1266 Int_t nL1Patch = 0 ;
1267 Double_t totSTU = 0.;
1268 Double_t totTRU = 0.;
1269
1270 trg.Reset();
1271 while (trg.Next())
1272 {
1273 trg.GetPosition(posX,posY);
1274
1275
1276 if (posX > -1 && posY > -1)
1277 {
1278 //L0 analysis
1279 Int_t nTimes = 0;
1280 trg.GetNL0Times(nTimes);
de782324 1281 Int_t l0Times[10];
1282 trg.GetL0Times(l0Times);
1283
aff917ac 1284 Float_t ampL0 = 0.;
1285 trg.GetAmplitude(ampL0);
0d896539 1286 if (ampL0 > 0) emcalTrigL0[posY][posX] = ampL0;
0e91f259 1287 if(triggerclasses.Contains("CEMC7EGA-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EGA")) emcalTrigL0L1G[posY][posX] += ampL0;
1288 if(triggerclasses.Contains("CEMC7EJE-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EJE")) emcalTrigL0L1J[posY][posX] += ampL0;
aff917ac 1289 totTRU += ampL0;
1290
de782324 1291 int l0fired = 0;
1292 for (int itime = 0; itime < nTimes; itime++) {
1293 if (l0Times[itime] > 7 && l0Times[itime] < 10) l0fired = 1;
1294 }
1295
1296 if (l0fired)
bce9493b 1297 {
1298 nL0Patch += nTimes;
bce9493b 1299 emcalPatchL0[posY][posX] = 1.;
e395081d 1300 fhL0Patch->Fill(posX,posY);
bce9493b 1301 }
de782324 1302
bce9493b 1303 //L1 analysis
1304 Int_t bit = 0;
1305 trg.GetTriggerBits(bit);
1306
aff917ac 1307 Int_t ts = 0;
1308 trg.GetL1TimeSum(ts);
0d896539 1309 if (ts > 0) emcalTrigL1[posY][posX] = ts;
aff917ac 1310 totSTU += ts;
1311
bce9493b 1312 //L1-Gamma
1614ab69 1313 if (bit >> kBitEGA & 0x1)
bce9493b 1314 {
1315 nL1Patch ++;
0d896539 1316 emcalPatchL1G[posY][posX] += 1.;
e395081d 1317 fhL1GPatch->Fill(posX,posY);
aff917ac 1318
0d896539 1319 if (ts > 0) emcalTrigL1G[posY][posX] = ts;
bce9493b 1320
85196c29 1321 //printf("Gamma STU patch %d, time sum %d, posX %d , posY %d\n",nL1Patch,ts,posX, posY);
bce9493b 1322 }
1323
1324 //L1-Jet
1614ab69 1325 if (bit >> kBitEJE & 0x1)
bce9493b 1326 {
1327 nL1Patch ++;
0d896539 1328 emcalPatchL1J[posY][posX] += 1.;
e395081d 1329 fhL1JPatch->Fill(posX,posY);
aff917ac 1330
0d896539 1331 if (ts > 0) emcalTrigL1J[posY][posX] = ts;
bce9493b 1332
85196c29 1333 //printf("Jet STU patch %d, time sum %d, posX %d , posY %d\n",nL1Patch,ts,posX, posY);
aff917ac 1334
bce9493b 1335 }
1336
1337 }
1338 }
de782324 1339
1340 if (!nL0Patch) {
1341 bL0 = kFALSE;
1342 if (!triggerclasses.Contains("CPBI2")) bL1G = bL1J = kFALSE; // pp running
1343 }
1344
e395081d 1345 if(totTRU > fMaxTRUSignal && DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large totTRU %f\n",totTRU);
1346 if(totSTU > fMaxSTUSignal && DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large totSTU %f\n",totSTU);
0d896539 1347
bce9493b 1348 //V0 analysis
1349 AliESDVZERO* eventV0 = esdEvent->GetVZEROData();
1350
e98e49c3 1351 Float_t v0C = 0, v0A = 0, v0TT = trg.GetL1V0(0)+trg.GetL1V0(1);
bce9493b 1352
1353 if (eventV0)
1354 {
1355 for (Int_t i = 0; i < 32; i++)
1356 {
1357 v0C += eventV0->GetAdcV0C(i);
1358 v0A += eventV0->GetAdcV0A(i);
1359 }
1360 }
e395081d 1361
bce9493b 1362 if (totSTU != 0) {
1363 fhV0STU->Fill(v0A+v0C,totSTU);
e395081d 1364 if( v0A+v0C > fMaxV0Signal && DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large v0A+v0C %f\n",v0A+v0C);
bce9493b 1365 }
1366
0d896539 1367 if( bL1G ) fhV0L1G->Fill(v0A+v0C); ;
1368 if( bL1J ) fhV0L1J->Fill(v0A+v0C);
1369 if( bMB ) fhV0MB ->Fill(v0A+v0C);
1370
85196c29 1371 //if(nL0Patch!=0 || nL1Patch!=0) printf("total TRU %f, total STU %f, V0C+V0A %f; nL0 %d, nL1 %d \n",
1372 // totTRU,totSTU,v0A+v0C,nL0Patch,nL1Patch);
1373
0d896539 1374 //Maximum amplitude patch analysis
e98e49c3 1375 Int_t patchMax = 0;
0d896539 1376 Int_t colMax = -1;
1377 Int_t rowMax = -1;
1378 Int_t col = 0;
1379 Int_t row = 0;
e395081d 1380
e98e49c3 1381 for (Int_t i = 0; i < 47; i++)
e395081d 1382 {
1383 for (Int_t j = 0; j < 59; j++)
1384 {
1385 Int_t patchG = 0;
0d896539 1386 col = i;
1387 row = j;
e395081d 1388
1389 for (Int_t k = 0; k < 2; k++)
e98e49c3 1390 {
1391 for (Int_t l = 0; l < 2; l++)
e395081d 1392 {
0d896539 1393 patchG += int(emcalTrigL1[j + l][i + k]);
e395081d 1394 }
e98e49c3 1395 }
e395081d 1396
0d896539 1397 if (patchG > patchMax)
1398 {
1399 patchMax = patchG;
1400 colMax = col;
1401 rowMax = row;
1402 }
e98e49c3 1403 }
e395081d 1404 }
e98e49c3 1405
1406 fhGPMaxVV0TT->Fill(v0TT, patchMax);
0d896539 1407 if( bL1G ) fhL1GPatchMax->Fill(colMax,rowMax);
e98e49c3 1408
1409 patchMax = 0;
0d896539 1410 colMax = -1;
1411 rowMax = -1;
e98e49c3 1412
1413 for (Int_t i = 0; i < 9; i++)
e395081d 1414 {
1415 for (Int_t j = 0; j < 12; j++)
e98e49c3 1416 {
e395081d 1417 Int_t patchJ = 0;
0d896539 1418 col = i;
1419 row = j;
e395081d 1420
1421 for (Int_t k = 0; k < 16; k++)
e98e49c3 1422 {
1423 for (Int_t l = 0; l < 16; l++)
e395081d 1424 {
0d896539 1425 patchJ += int(emcalTrigL1[4*j + l][4*i + k]);
e395081d 1426 }
e98e49c3 1427 }
e395081d 1428
0d896539 1429 if (patchJ > patchMax)
1430 {
1431 patchMax = patchJ;
1432 colMax = 4*col;
1433 rowMax = 4*row;
1434 }
e98e49c3 1435 }
e395081d 1436 }
e98e49c3 1437
1438 fhJPMaxVV0TT->Fill(v0TT, patchMax);
0d896539 1439 if( bL1J ) fhL1JPatchMax->Fill(colMax,rowMax);
e395081d 1440
bce9493b 1441 //Matrix with signal per channel
e022364d 1442 for (Int_t i = 0; i < fgkFALTRORows; i++)
bce9493b 1443 {
e022364d 1444 for (Int_t j = 0; j < fgkFALTROCols; j++) //check x,y direction for reading FOR ((0,0) = top left);
bce9493b 1445 {
0d896539 1446 fhFORAmp ->Fill( j, i, emcalCell [i][j]);
1447 fhFORAmpL1G ->Fill( j, i, emcalCellL1G [i][j]);
1448 fhFORAmpL1J ->Fill( j, i, emcalCellL1J [i][j]);
1449 fhL0Amp ->Fill( j, i, emcalTrigL0 [i][j]);
1450 fhL0AmpL1G ->Fill( j, i, emcalTrigL0L1G[i][j]);
1451 fhL0AmpL1J ->Fill( j, i, emcalTrigL0L1J[i][j]);
1452 fhL1Amp ->Fill( j, i, emcalTrigL1 [i][j]);
1453 fhL1GAmp ->Fill( j, i, emcalTrigL1G [i][j]);
1454 fhL1JAmp ->Fill( j, i, emcalTrigL1J [i][j]);
1455 fhFORMeanAmp->Fill( j, i, emcalCell [i][j]);
1456 fhL0MeanAmp ->Fill( j, i, emcalTrigL0 [i][j]);
1457 fhL1MeanAmp ->Fill( j, i, emcalTrigL1 [i][j]);
bce9493b 1458 }
1459 }
1460
aff917ac 1461 //FEE-TRU-STU correlation checks
bce9493b 1462 Double_t ampFOR[30] = {0.}, ampL0[30] = {0.}, ampL1[30] = {0.};
e022364d 1463 for (Int_t i = 0; i < fgkFALTRORows; i++)
bce9493b 1464 {
e022364d 1465 for (Int_t j = 0; j < fgkFALTROCols; j++)
bce9493b 1466 {
1467
1468 //method to get TRU number
85196c29 1469 Int_t idFOR = -1;
1470 fGeometry->GetAbsFastORIndexFromPositionInEMCAL(j,i,idFOR);
1471 Int_t iTRU = -1;
1472 Int_t iADC = -1;
1473 fGeometry->GetTRUFromAbsFastORIndex(idFOR,iTRU,iADC);
e395081d 1474
85196c29 1475 //printf("i %d, j %d, iTRU %d, iADC %d, idFOR %d; cell %f, L0 %f, L1 %f\n",
1476 // i,j,iTRU,iADC,idFOR, emcalCell [i][j],emcalTrigL0[i][j],emcalTrigL1[i][j]);
e395081d 1477
bce9493b 1478 if (iTRU >= 0)
1479 {
1480 ampFOR[iTRU] += emcalCell [i][j];
1481 ampL0[iTRU] += emcalTrigL0[i][j];
1482 ampL1[iTRU] += emcalTrigL1[i][j];
1483 }
1484 }
1485 }
1486
85196c29 1487 // FEE vs STU and TRU vs STU ratios
bce9493b 1488 for (Int_t i = 0; i < 30; i++)
1489 {
85196c29 1490
1491 if (ampFOR[i] != 0 && ampL1[i] != 0) {
1492 fhFEESTU->Fill(ampL1[i]/ampFOR[i],i);
e395081d 1493 if(ampL1[i]/ampFOR[i] > fMaxSTUFEERatio && DebugLevel() > 0 ) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large STU/FEE ratio %f\n",ampL1[i]/ampFOR[i]);
85196c29 1494 }
1495
1496 if (ampL0[i] != 0 && ampL1[i] != 0) {
1497 fhTRUSTU->Fill(ampL1[i]/ampL0[i] ,i);
e395081d 1498 if(ampL1[i]/ampL0[i] > fMaxSTUTRURatio && DebugLevel() > 0 ) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large STU/TRU ratio %f\n",ampL1[i]/ampL0[i]);
85196c29 1499 }
1500
bce9493b 1501 }
1502
e395081d 1503 //Get Vertex
75e10d6a 1504 Double_t v[3] = {0,0,0};
1505 esdEvent->GetVertex()->GetXYZ(v);
1506
1507 //clusters distribution
1508 TRefArray* caloClus = new TRefArray();
1509 esdEvent->GetEMCALClusters(caloClus);
1510
1511 Int_t nCaloClusters = caloClus->GetEntriesFast();
ec77a234 1512
1513 Float_t emax = 0;
1514 Float_t etamax = 0;
1515 Float_t phimax = 0;
1516 Float_t ietamax=-1;
1517 Float_t iphimax=-1;
1518
1519 Float_t e = 0;
1520 Float_t eta = 0;
1521 Float_t phi = 0;
1522
1523 //Energy threshold to fill Eta vs Phi histograms
1524 Float_t etaphiEnMin = 10.;
1525
1526 TLorentzVector mom;
1527
1528 //Get vertex for momentum calculation
1529 Double_t vertex[] = {0.0,0.0,0.0};
1530 //InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1531
1532 Float_t centrality = -1;
1533 if(InputEvent()->GetCentrality()) centrality = InputEvent()->GetCentrality()->GetCentralityPercentile("V0M");
1534
75e10d6a 1535 for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
e395081d 1536 {
1537 AliESDCaloCluster *clus = (AliESDCaloCluster*) (caloClus->At(icalo));
75e10d6a 1538
e395081d 1539 if(!clus->IsEMCAL()) continue;
1540
ec77a234 1541 if(!fRecoUtils->IsGoodCluster(clus,fGeometry,InputEvent()->GetEMCALCells(),InputEvent()->GetBunchCrossNumber()))
1542 {
e395081d 1543 continue;
75e10d6a 1544 }
e395081d 1545
0d896539 1546 if(clus->GetNCells() < 2) continue ; // Avoid 1 cell clusters, noisy, exotic.
e395081d 1547
ec77a234 1548 clus->GetMomentum(mom, vertex);
1549
1550 Bool_t shared = kFALSE;
1551 Int_t idAbs = -1, iphi0 = -1, ieta0 = -1;
1552 fRecoUtils->GetMaxEnergyCell(fGeometry, InputEvent()->GetEMCALCells(),clus,
1553 idAbs,nSupMod,ieta0,iphi0,shared);
1554 //Change index to be continuous over SM
1555 ieta = (nSupMod % 2) ? ieta0 + AliEMCALGeoParams::fgkEMCALCols : ieta0;
1556 iphi = iphi0 + AliEMCALGeoParams::fgkEMCALRows * int(nSupMod / 2);
1557 ieta/=2;
1558 iphi/=2;
1559
1560 if(ieta > fgkFALTROCols || iphi > fgkFALTRORows ) {
1561 printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Wrong Position (x,y) = (%d,%d)\n",ieta,iphi);
1562 }
1563
1564 e = clus->E();
1565 eta = mom.Eta();
1566 phi = mom.Phi();
1567
1568 if(e > emax)
1569 {
1570 emax = e;
1571 etamax = eta;
1572 phimax = phi;
1573 ietamax = ieta;
1574 iphimax = iphi;
1575 }
1576
1577 if( bMB )
1578 {
1579 fhClusMB ->Fill(e);
1580 fhClusCenMB ->Fill(e,centrality);
1581 fhClusV0MB ->Fill(e,v0A+v0C);
1582 fhClusEtaMB ->Fill(e,eta);
1583 fhClusPhiMB ->Fill(e,phi);
1584 if(e > etaphiEnMin)
1585 {
1586 fhClusEtaPhiHighMB ->Fill( eta, phi);
1587 fhClusEtaPhiHighCellMaxMB ->Fill(ieta,iphi);
1588 }
1589 else {
1590 fhClusEtaPhiLowMB ->Fill( eta, phi);
1591 fhClusEtaPhiLowCellMaxMB ->Fill(ieta,iphi);
1592 }
1593 }
1594
1595 if( bL0 ) {
1596 fhClusL0 ->Fill(e);
1597 fhClusCenL0 ->Fill(e,centrality);
1598 fhClusV0L0 ->Fill(e,v0A+v0C);
1599 fhClusEtaL0 ->Fill(e,eta);
1600 fhClusPhiL0 ->Fill(e,phi);
1601 if(e > etaphiEnMin)
1602 {
1603 fhClusEtaPhiHighL0 ->Fill( eta, phi);
1604 fhClusEtaPhiHighCellMaxL0 ->Fill(ieta,iphi);
1605 }
1606 else {
1607 fhClusEtaPhiLowL0 ->Fill( eta, phi);
1608 fhClusEtaPhiLowCellMaxL0 ->Fill(ieta,iphi);
1609 }
1610 }
e395081d 1611
ec77a234 1612 if( bL1G ) {
1613 fhClusL1G ->Fill(e);
1614 fhClusCenL1G ->Fill(e,centrality);
1615 fhClusV0L1G ->Fill(e,v0A+v0C);
1616 fhClusEtaL1G ->Fill(e,eta);
1617 fhClusPhiL1G ->Fill(e,phi);
1618 if(e > etaphiEnMin)
1619 {
1620 fhClusEtaPhiHighL1G ->Fill( eta, phi);
1621 fhClusEtaPhiHighCellMaxL1G ->Fill(ieta,iphi);
1622 }
1623 else {
1624 fhClusEtaPhiLowL1G ->Fill( eta, phi);
1625 fhClusEtaPhiLowCellMaxL1G ->Fill(ieta,iphi);
1626 }
1627 }
0d896539 1628
ec77a234 1629 if( bL1J ) {
1630 fhClusL1J ->Fill(e);
1631 fhClusCenL1J ->Fill(e,centrality);
1632 fhClusV0L1J ->Fill(e,v0A+v0C);
1633 fhClusEtaL1J ->Fill(e,eta);
1634 fhClusPhiL1J ->Fill(e,phi);
1635 if(e > etaphiEnMin)
1636 {
1637 fhClusEtaPhiHighL1J ->Fill( eta, phi);
1638 fhClusEtaPhiHighCellMaxL1J ->Fill(ieta,iphi);
1639 }
1640 else {
1641 fhClusEtaPhiLowL1J ->Fill( eta, phi);
1642 fhClusEtaPhiLowCellMaxL1J ->Fill(ieta,iphi);
1643 }
1644 }
e395081d 1645
ec77a234 1646 if( bL1G && !bL1J )
1647 {
1648 fhClusL1GOnly ->Fill(e);
1649 fhClusCenL1GOnly ->Fill(e,centrality);
1650 fhClusV0L1GOnly ->Fill(e,v0A+v0C);
1651 fhClusEtaL1GOnly ->Fill(e,eta);
1652 fhClusPhiL1GOnly ->Fill(e,phi);
1653 if(e > etaphiEnMin)
1654 {
1655 fhClusEtaPhiHighL1GOnly ->Fill( eta, phi);
1656 fhClusEtaPhiHighCellMaxL1GOnly ->Fill(ieta,iphi);
1657 }
1658 else {
1659 fhClusEtaPhiLowL1GOnly ->Fill( eta, phi);
1660 fhClusEtaPhiLowCellMaxL1GOnly ->Fill(ieta,iphi);
1661 }
1662 }
1663
1664 if( bL1J && !bL1G )
1665 {
1666 fhClusL1JOnly ->Fill(e);
1667 fhClusCenL1JOnly ->Fill(e,centrality);
1668 fhClusV0L1JOnly ->Fill(e,v0A+v0C);
1669 fhClusEtaL1JOnly ->Fill(e,eta);
1670 fhClusPhiL1JOnly ->Fill(e,phi);
1671 if(e > etaphiEnMin)
1672 {
1673 fhClusEtaPhiHighL1JOnly ->Fill( eta, phi);
1674 fhClusEtaPhiHighCellMaxL1JOnly ->Fill(ieta,iphi);
1675 }
1676 else {
1677 fhClusEtaPhiLowL1JOnly ->Fill( eta, phi);
1678 fhClusEtaPhiLowCellMaxL1JOnly ->Fill(ieta,iphi);
1679 }
1680 }
1681
1682 if( bMB && !bL1G && !bL1J && !bL0 ) fhClusMBPure ->Fill(e);
0d896539 1683
e395081d 1684 }
480b9db0 1685
0d896539 1686 // Maximum energy cluster per event histograms
bce9493b 1687
ec77a234 1688 if( bMB )
1689 {
1690 fhClusMaxMB ->Fill(emax);
1691 fhClusCenMaxMB ->Fill(emax,centrality);
1692 fhClusV0MaxMB ->Fill(emax,v0A+v0C);
1693 fhClusEtaMaxMB ->Fill(emax,etamax);
1694 fhClusPhiMaxMB ->Fill(emax,phimax);
1695 if(emax > etaphiEnMin)
1696 {
1697 fhClusEtaPhiHighCluMaxMB ->Fill( etamax, phimax);
1698 fhClusEtaPhiHighCellMaxCluMaxMB ->Fill(ietamax,iphimax);
1699 }
1700 else {
1701 fhClusEtaPhiLowCluMaxMB ->Fill( etamax, phimax);
1702 fhClusEtaPhiLowCellMaxCluMaxMB ->Fill(ietamax,iphimax);
1703 }
1704 }
85196c29 1705
ec77a234 1706 if( bL0 ) {
1707 fhClusMaxL0 ->Fill(emax);
1708 fhClusCenMaxL0 ->Fill(emax,centrality);
1709 fhClusV0MaxL0 ->Fill(emax,v0A+v0C);
1710 fhClusEtaMaxL0 ->Fill(emax,etamax);
1711 fhClusPhiMaxL0 ->Fill(emax,phimax);
1712 if(emax > etaphiEnMin)
1713 {
1714 fhClusEtaPhiHighCluMaxL0 ->Fill( etamax, phimax);
1715 fhClusEtaPhiHighCellMaxCluMaxL0 ->Fill(ietamax,iphimax);
1716 }
1717 else {
1718 fhClusEtaPhiLowCluMaxL0 ->Fill( etamax, phimax);
1719 fhClusEtaPhiLowCellMaxCluMaxL0 ->Fill(ietamax,iphimax);
1720 }
1721 }
85196c29 1722
ec77a234 1723 if( bL1G ) {
1724 fhClusMaxL1G ->Fill(emax);
1725 fhClusCenMaxL1G ->Fill(emax,centrality);
1726 fhClusV0MaxL1G ->Fill(emax,v0A+v0C);
1727 fhClusEtaMaxL1G ->Fill(emax,etamax);
1728 fhClusPhiMaxL1G ->Fill(emax,phimax);
1729 if(emax > etaphiEnMin)
1730 {
1731 fhClusEtaPhiHighCluMaxL1G ->Fill( etamax, phimax);
1732 fhClusEtaPhiHighCellMaxCluMaxL1G ->Fill(ietamax,iphimax);
1733 }
1734 else {
1735 fhClusEtaPhiLowCluMaxL1G ->Fill( etamax, phimax);
1736 fhClusEtaPhiLowCellMaxCluMaxL1G ->Fill(ietamax,iphimax);
1737 }
1738 }
1739
1740 if( bL1J ) {
1741 fhClusMaxL1J ->Fill(emax);
1742 fhClusCenMaxL1J ->Fill(emax,centrality);
1743 fhClusV0MaxL1J ->Fill(emax,v0A+v0C);
1744 fhClusEtaMaxL1J ->Fill(emax,etamax);
1745 fhClusPhiMaxL1J ->Fill(emax,phimax);
1746 if(emax > etaphiEnMin)
1747 {
1748 fhClusEtaPhiHighCluMaxL1J ->Fill( etamax, phimax);
1749 fhClusEtaPhiHighCellMaxCluMaxL1J ->Fill(ietamax,iphimax);
1750 }
1751 else {
1752 fhClusEtaPhiLowCluMaxL1J ->Fill( etamax, phimax);
1753 fhClusEtaPhiLowCellMaxCluMaxL1J ->Fill(ietamax,iphimax);
1754 }
1755 }
1756
1757 if( bL1G && !bL1J )
1758 {
1759 fhClusMaxL1GOnly ->Fill(emax);
1760 fhClusCenMaxL1GOnly ->Fill(emax,centrality);
1761 fhClusV0MaxL1GOnly ->Fill(emax,v0A+v0C);
1762 fhClusEtaMaxL1GOnly ->Fill(emax,etamax);
1763 fhClusPhiMaxL1GOnly ->Fill(emax,phimax);
1764 if(emax > etaphiEnMin)
1765 {
1766 fhClusEtaPhiHighCluMaxL1GOnly ->Fill( etamax, phimax);
1767 fhClusEtaPhiHighCellMaxCluMaxL1GOnly ->Fill(ietamax,iphimax);
1768 }
1769 else {
1770 fhClusEtaPhiLowCluMaxL1GOnly ->Fill( etamax, phimax);
1771 fhClusEtaPhiLowCellMaxCluMaxL1GOnly ->Fill(ietamax,iphimax);
1772 }
1773 }
1774
1775 if( bL1J && !bL1G )
1776 {
1777 fhClusMaxL1JOnly ->Fill(emax);
1778 fhClusCenMaxL1JOnly ->Fill(emax,centrality);
1779 fhClusV0MaxL1JOnly ->Fill(emax,v0A+v0C);
1780 fhClusEtaMaxL1JOnly ->Fill(emax,etamax);
1781 fhClusPhiMaxL1JOnly ->Fill(emax,phimax);
1782 if(emax > etaphiEnMin)
1783 {
1784 fhClusEtaPhiHighCluMaxL1JOnly ->Fill( etamax, phimax);
1785 fhClusEtaPhiHighCellMaxCluMaxL1JOnly ->Fill(ietamax,iphimax);
1786 }
1787 else {
1788 fhClusEtaPhiLowCluMaxL1JOnly ->Fill( etamax, phimax);
1789 fhClusEtaPhiLowCellMaxCluMaxL1JOnly ->Fill(ietamax,iphimax);
1790 }
1791 }
1792
1793 if( bMB && !bL1G && !bL1J && !bL0 ) fhClusMaxMBPure ->Fill(emax);
0d896539 1794
1795 PostData(1, fOutputList);
85196c29 1796
1797}
de782324 1798