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