]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALTasks/AliAnalysisTaskEMCALTriggerQA.cxx
changes in AddAnalysisTaskPIDFluctuation.C for only one output file in analysis train...
[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 //------------------------------------------------------------------------//
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.;
1130       
1131       cells.GetCell(icell, absId, amp, time);   
1132       
1133       fGeometry->GetCellIndex(absId, nSupMod, nModule, nIphi, nIeta);
1134       fGeometry->GetCellPhiEtaIndexInSModule(nSupMod, nModule, nIphi, nIeta, iphi, ieta); 
1135       
1136       posX = (nSupMod % 2) ? ieta + AliEMCALGeoParams::fgkEMCALCols : ieta;                             
1137       posY = iphi + AliEMCALGeoParams::fgkEMCALRows * int(nSupMod / 2);
1138       
1139       if(int(posX/2) > fgkFALTROCols || int(posY/2) > fgkFALTRORows ) {
1140         if(DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Wrong Position (x,y) = (%d,%d)\n",posX,posY);
1141         continue;
1142       }
1143       
1144       emcalCell[int(posY/2)][int(posX/2)] += amp; 
1145       
1146       if(triggerclasses.Contains("CEMC7EGA-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EGA")) emcalCellL1G[int(posY/2)][int(posX/2)] += amp;
1147       if(triggerclasses.Contains("CEMC7EJE-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EJE")) emcalCellL1J[int(posY/2)][int(posX/2)] += amp;
1148       
1149     }
1150   }
1151   
1152   //-------------------------------------  
1153   // Trigger analysis, fill L0, L1 arrays
1154   //------------------------------------- 
1155   
1156   AliESDCaloTrigger& trg= * (esdEvent->GetCaloTrigger("EMCAL"));
1157   
1158   Int_t    nL0Patch = 0 ;
1159   Int_t    nL1Patch = 0 ;
1160   Double_t totSTU   = 0.;
1161   Double_t totTRU   = 0.;
1162   
1163   trg.Reset();
1164   while (trg.Next())
1165   {
1166     trg.GetPosition(posX,posY);
1167     
1168     
1169     if (posX > -1 && posY > -1) 
1170     {
1171       //L0 analysis  
1172       Int_t nTimes = 0;
1173       trg.GetNL0Times(nTimes);
1174       
1175       Float_t ampL0 = 0.;
1176       trg.GetAmplitude(ampL0);
1177       if (ampL0 > 0) emcalTrigL0[posY][posX] = ampL0;
1178       if(triggerclasses.Contains("CEMC7EGA-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EGA")) emcalTrigL0L1G[posY][posX] += ampL0;
1179       if(triggerclasses.Contains("CEMC7EJE-B-NOPF-CENTNOTRD") || triggerclasses.Contains("CPBI2EJE")) emcalTrigL0L1J[posY][posX] += ampL0;
1180       totTRU += ampL0;
1181       
1182       if (nTimes) 
1183             {
1184               nL0Patch += nTimes;
1185               emcalPatchL0[posY][posX] = 1.;
1186               fhL0Patch->Fill(posX,posY);
1187             }
1188       
1189       //L1 analysis
1190       Int_t bit = 0;
1191       trg.GetTriggerBits(bit);
1192       
1193       Int_t ts = 0;
1194       trg.GetL1TimeSum(ts);
1195       if (ts > 0) emcalTrigL1[posY][posX] = ts;
1196       totSTU += ts;
1197       
1198       //L1-Gamma
1199       if (bit >> 4 & 0x1) 
1200       {
1201         nL1Patch ++;
1202         emcalPatchL1G[posY][posX] += 1.;
1203         fhL1GPatch->Fill(posX,posY);
1204         
1205         if (ts > 0) emcalTrigL1G[posY][posX] = ts;
1206         
1207         //printf("Gamma STU patch %d, time sum %d, posX %d , posY %d\n",nL1Patch,ts,posX, posY);
1208       }
1209       
1210       //L1-Jet
1211       if (bit >> 5 & 0x1) 
1212       {
1213         nL1Patch ++;
1214         emcalPatchL1J[posY][posX] += 1.;
1215         fhL1JPatch->Fill(posX,posY);
1216         
1217         if (ts > 0) emcalTrigL1J[posY][posX] = ts;
1218         
1219         //printf("Jet STU patch %d, time sum %d, posX %d , posY %d\n",nL1Patch,ts,posX, posY);
1220         
1221       }
1222       
1223     }
1224   }
1225   
1226   if(totTRU > fMaxTRUSignal && DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large totTRU %f\n",totTRU);
1227   if(totSTU > fMaxSTUSignal && DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large totSTU %f\n",totSTU);
1228  
1229   //V0 analysis 
1230   AliESDVZERO* eventV0 = esdEvent->GetVZEROData(); 
1231         
1232   Float_t v0C = 0, v0A = 0, v0TT = trg.GetL1V0(0)+trg.GetL1V0(1);
1233         
1234   if (eventV0) 
1235   {
1236     for (Int_t i = 0; i < 32; i++)
1237     {
1238       v0C += eventV0->GetAdcV0C(i);
1239       v0A += eventV0->GetAdcV0A(i);
1240     }
1241   }
1242   
1243   if (totSTU != 0) {
1244     fhV0STU->Fill(v0A+v0C,totSTU);
1245     if( v0A+v0C > fMaxV0Signal && DebugLevel() > 0) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large v0A+v0C %f\n",v0A+v0C);
1246   }
1247   
1248   if( bL1G ) fhV0L1G->Fill(v0A+v0C);                              ;
1249   if( bL1J ) fhV0L1J->Fill(v0A+v0C);
1250   if( bMB  ) fhV0MB ->Fill(v0A+v0C);
1251   
1252   //if(nL0Patch!=0 || nL1Patch!=0) printf("total TRU %f, total STU %f, V0C+V0A %f; nL0 %d, nL1 %d \n",
1253   //       totTRU,totSTU,v0A+v0C,nL0Patch,nL1Patch);
1254   
1255   //Maximum amplitude patch analysis
1256   Int_t patchMax = 0;
1257   Int_t colMax = -1;
1258   Int_t rowMax = -1;
1259   Int_t col = 0;
1260   Int_t row = 0;
1261   
1262   for (Int_t i = 0; i < 47; i++)
1263   {
1264     for (Int_t j = 0; j < 59; j++)
1265     {                           
1266       Int_t patchG = 0;
1267       col = i;
1268       row = j;
1269       
1270       for (Int_t k = 0; k < 2; k++) 
1271             {
1272               for (Int_t l = 0; l < 2; l++) 
1273         {
1274           patchG += int(emcalTrigL1[j + l][i + k]);
1275         }
1276             }
1277       
1278       if (patchG > patchMax) 
1279       {
1280         patchMax = patchG;
1281         colMax = col;
1282         rowMax = row;
1283       }
1284     }
1285   }
1286   
1287   fhGPMaxVV0TT->Fill(v0TT, patchMax);
1288   if( bL1G ) fhL1GPatchMax->Fill(colMax,rowMax);
1289   
1290   patchMax = 0;
1291   colMax = -1;
1292   rowMax = -1;
1293   
1294   for (Int_t i = 0; i < 9; i++)
1295   {
1296     for (Int_t j = 0; j < 12; j++)
1297     {
1298       Int_t patchJ = 0;
1299       col = i;
1300       row = j;
1301       
1302       for (Int_t k = 0; k < 16; k++)
1303             {
1304               for (Int_t l = 0; l < 16; l++)
1305         {
1306           patchJ += int(emcalTrigL1[4*j + l][4*i + k]);
1307         }
1308             }
1309       
1310       if (patchJ > patchMax) 
1311       {
1312         patchMax = patchJ;
1313         colMax = 4*col;
1314         rowMax = 4*row;
1315       }
1316     }
1317   }
1318   
1319   fhJPMaxVV0TT->Fill(v0TT, patchMax);
1320   if( bL1J ) fhL1JPatchMax->Fill(colMax,rowMax);
1321   
1322   //Matrix with signal per channel
1323   for (Int_t i = 0; i < fgkFALTRORows; i++) 
1324   {
1325     for (Int_t j = 0; j < fgkFALTROCols; j++) //check x,y direction for reading FOR ((0,0) = top left);
1326     {
1327       fhFORAmp    ->Fill( j, i, emcalCell     [i][j]);
1328       fhFORAmpL1G ->Fill( j, i, emcalCellL1G  [i][j]);
1329       fhFORAmpL1J ->Fill( j, i, emcalCellL1J  [i][j]);
1330       fhL0Amp     ->Fill( j, i, emcalTrigL0   [i][j]);
1331       fhL0AmpL1G  ->Fill( j, i, emcalTrigL0L1G[i][j]);
1332       fhL0AmpL1J  ->Fill( j, i, emcalTrigL0L1J[i][j]);
1333       fhL1Amp     ->Fill( j, i, emcalTrigL1   [i][j]);
1334       fhL1GAmp    ->Fill( j, i, emcalTrigL1G  [i][j]);
1335       fhL1JAmp    ->Fill( j, i, emcalTrigL1J  [i][j]);
1336       fhFORMeanAmp->Fill( j, i, emcalCell     [i][j]);
1337       fhL0MeanAmp ->Fill( j, i, emcalTrigL0   [i][j]);
1338       fhL1MeanAmp ->Fill( j, i, emcalTrigL1   [i][j]);
1339     }
1340   }
1341   
1342   //FEE-TRU-STU correlation checks
1343   Double_t ampFOR[30] = {0.}, ampL0[30] = {0.}, ampL1[30] = {0.};
1344   for (Int_t i = 0; i < fgkFALTRORows; i++) 
1345   {
1346     for (Int_t j = 0; j < fgkFALTROCols; j++) 
1347     {
1348       
1349       //method to get TRU number
1350       Int_t idFOR = -1;
1351       fGeometry->GetAbsFastORIndexFromPositionInEMCAL(j,i,idFOR);
1352       Int_t iTRU  = -1;
1353       Int_t iADC  = -1;
1354       fGeometry->GetTRUFromAbsFastORIndex(idFOR,iTRU,iADC);     
1355       
1356       //printf("i %d, j %d, iTRU %d, iADC %d, idFOR %d; cell %f, L0 %f, L1 %f\n", 
1357       //       i,j,iTRU,iADC,idFOR, emcalCell  [i][j],emcalTrigL0[i][j],emcalTrigL1[i][j]);
1358       
1359       if (iTRU >= 0)
1360       {
1361         ampFOR[iTRU] += emcalCell  [i][j];
1362         ampL0[iTRU]  += emcalTrigL0[i][j];
1363         ampL1[iTRU]  += emcalTrigL1[i][j];
1364       }
1365     }
1366   }
1367   
1368   // FEE vs STU and TRU vs STU ratios  
1369   for (Int_t i = 0; i < 30; i++)
1370   {
1371     
1372     if (ampFOR[i] != 0 && ampL1[i] != 0) { 
1373       fhFEESTU->Fill(ampL1[i]/ampFOR[i],i);
1374       if(ampL1[i]/ampFOR[i] > fMaxSTUFEERatio  && DebugLevel() > 0 ) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large STU/FEE ratio %f\n",ampL1[i]/ampFOR[i]);
1375     }
1376     
1377     if (ampL0[i]  != 0 && ampL1[i] != 0) {
1378       fhTRUSTU->Fill(ampL1[i]/ampL0[i] ,i);
1379       if(ampL1[i]/ampL0[i] > fMaxSTUTRURatio  && DebugLevel() > 0 ) printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Large STU/TRU ratio %f\n",ampL1[i]/ampL0[i]);
1380     }
1381     
1382   }
1383   
1384   //Get Vertex
1385   Double_t v[3] = {0,0,0};
1386   esdEvent->GetVertex()->GetXYZ(v);
1387   
1388   //clusters distribution
1389   TRefArray* caloClus = new TRefArray();
1390   esdEvent->GetEMCALClusters(caloClus);
1391   
1392   Int_t nCaloClusters = caloClus->GetEntriesFast();
1393   
1394   Float_t emax   = 0;
1395   Float_t etamax = 0;
1396   Float_t phimax = 0;
1397   Float_t ietamax=-1;
1398   Float_t iphimax=-1;
1399
1400   Float_t e      = 0;
1401   Float_t eta    = 0;
1402   Float_t phi    = 0;
1403
1404   //Energy threshold to fill Eta vs Phi histograms
1405   Float_t etaphiEnMin = 10.;
1406   
1407   TLorentzVector mom;
1408   
1409   //Get vertex for momentum calculation
1410   Double_t vertex[] = {0.0,0.0,0.0};
1411   //InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
1412   
1413   Float_t centrality = -1;
1414   if(InputEvent()->GetCentrality()) centrality = InputEvent()->GetCentrality()->GetCentralityPercentile("V0M");
1415     
1416   for(Int_t icalo = 0; icalo < nCaloClusters; icalo++)
1417   {
1418     AliESDCaloCluster *clus = (AliESDCaloCluster*) (caloClus->At(icalo));
1419                 
1420     if(!clus->IsEMCAL()) continue;
1421     
1422     if(!fRecoUtils->IsGoodCluster(clus,fGeometry,InputEvent()->GetEMCALCells(),InputEvent()->GetBunchCrossNumber()))
1423     { 
1424       continue;
1425     }
1426     
1427     if(clus->GetNCells() < 2) continue ; // Avoid 1 cell clusters, noisy, exotic.
1428     
1429     clus->GetMomentum(mom, vertex); 
1430     
1431     Bool_t shared = kFALSE;
1432     Int_t  idAbs  = -1, iphi0 = -1, ieta0 = -1;
1433     fRecoUtils->GetMaxEnergyCell(fGeometry, InputEvent()->GetEMCALCells(),clus,
1434                                  idAbs,nSupMod,ieta0,iphi0,shared);
1435     //Change index to be continuous over SM
1436     ieta = (nSupMod % 2) ? ieta0 + AliEMCALGeoParams::fgkEMCALCols : ieta0;                             
1437     iphi = iphi0 + AliEMCALGeoParams::fgkEMCALRows * int(nSupMod / 2);
1438     ieta/=2;
1439     iphi/=2;
1440
1441     if(ieta > fgkFALTROCols || iphi > fgkFALTRORows ) {
1442       printf("AliAnalysisTaskEMCALTriggerQA::UserExec() - Wrong Position (x,y) = (%d,%d)\n",ieta,iphi);
1443     }
1444            
1445     e   = clus->E();
1446     eta = mom.Eta();
1447     phi = mom.Phi();
1448     
1449     if(e > emax)
1450     {
1451       emax    = e;
1452       etamax  = eta;
1453       phimax  = phi;
1454       ietamax = ieta;
1455       iphimax = iphi;
1456     }
1457     
1458     if( bMB  ) 
1459     { 
1460       fhClusMB      ->Fill(e); 
1461       fhClusCenMB   ->Fill(e,centrality); 
1462       fhClusV0MB    ->Fill(e,v0A+v0C);
1463       fhClusEtaMB   ->Fill(e,eta);
1464       fhClusPhiMB   ->Fill(e,phi);
1465       if(e > etaphiEnMin) 
1466       {
1467         fhClusEtaPhiHighMB        ->Fill( eta, phi);
1468         fhClusEtaPhiHighCellMaxMB ->Fill(ieta,iphi);
1469       }
1470       else {
1471         fhClusEtaPhiLowMB         ->Fill( eta, phi);
1472         fhClusEtaPhiLowCellMaxMB  ->Fill(ieta,iphi);
1473       }
1474     }
1475     
1476     if( bL0  )    { 
1477       fhClusL0      ->Fill(e); 
1478       fhClusCenL0   ->Fill(e,centrality); 
1479       fhClusV0L0    ->Fill(e,v0A+v0C);
1480       fhClusEtaL0   ->Fill(e,eta);
1481       fhClusPhiL0   ->Fill(e,phi);
1482       if(e > etaphiEnMin) 
1483       {
1484         fhClusEtaPhiHighL0        ->Fill( eta, phi);
1485         fhClusEtaPhiHighCellMaxL0 ->Fill(ieta,iphi);
1486       }
1487       else {
1488         fhClusEtaPhiLowL0         ->Fill( eta, phi);
1489         fhClusEtaPhiLowCellMaxL0  ->Fill(ieta,iphi);
1490       }
1491     }
1492     
1493     if( bL1G )    { 
1494       fhClusL1G      ->Fill(e); 
1495       fhClusCenL1G   ->Fill(e,centrality); 
1496       fhClusV0L1G    ->Fill(e,v0A+v0C);
1497       fhClusEtaL1G   ->Fill(e,eta);
1498       fhClusPhiL1G   ->Fill(e,phi);
1499       if(e > etaphiEnMin) 
1500       {
1501         fhClusEtaPhiHighL1G        ->Fill( eta, phi);
1502         fhClusEtaPhiHighCellMaxL1G ->Fill(ieta,iphi);
1503       }
1504       else {
1505         fhClusEtaPhiLowL1G         ->Fill( eta, phi);
1506         fhClusEtaPhiLowCellMaxL1G  ->Fill(ieta,iphi);
1507       }
1508     }
1509     
1510     if( bL1J )    { 
1511       fhClusL1J      ->Fill(e); 
1512       fhClusCenL1J   ->Fill(e,centrality); 
1513       fhClusV0L1J    ->Fill(e,v0A+v0C);
1514       fhClusEtaL1J   ->Fill(e,eta);
1515       fhClusPhiL1J   ->Fill(e,phi);
1516       if(e > etaphiEnMin) 
1517       {
1518         fhClusEtaPhiHighL1J        ->Fill( eta, phi);
1519         fhClusEtaPhiHighCellMaxL1J ->Fill(ieta,iphi);
1520       }
1521       else {
1522         fhClusEtaPhiLowL1J         ->Fill( eta, phi);
1523         fhClusEtaPhiLowCellMaxL1J  ->Fill(ieta,iphi);
1524       }
1525     }   
1526     
1527     if( bL1G && !bL1J )    
1528     { 
1529       fhClusL1GOnly      ->Fill(e); 
1530       fhClusCenL1GOnly   ->Fill(e,centrality); 
1531       fhClusV0L1GOnly    ->Fill(e,v0A+v0C);
1532       fhClusEtaL1GOnly   ->Fill(e,eta);
1533       fhClusPhiL1GOnly   ->Fill(e,phi);
1534       if(e > etaphiEnMin) 
1535       {
1536         fhClusEtaPhiHighL1GOnly        ->Fill( eta, phi);
1537         fhClusEtaPhiHighCellMaxL1GOnly ->Fill(ieta,iphi);
1538       }
1539       else {
1540         fhClusEtaPhiLowL1GOnly         ->Fill( eta, phi);
1541         fhClusEtaPhiLowCellMaxL1GOnly  ->Fill(ieta,iphi);
1542       }
1543     }    
1544     
1545     if( bL1J && !bL1G ) 
1546     { 
1547       fhClusL1JOnly      ->Fill(e); 
1548       fhClusCenL1JOnly   ->Fill(e,centrality); 
1549       fhClusV0L1JOnly    ->Fill(e,v0A+v0C);
1550       fhClusEtaL1JOnly   ->Fill(e,eta);
1551       fhClusPhiL1JOnly   ->Fill(e,phi);
1552       if(e > etaphiEnMin) 
1553       {
1554         fhClusEtaPhiHighL1JOnly        ->Fill( eta, phi);
1555         fhClusEtaPhiHighCellMaxL1JOnly ->Fill(ieta,iphi);
1556       }
1557       else {
1558         fhClusEtaPhiLowL1JOnly         ->Fill( eta, phi);
1559         fhClusEtaPhiLowCellMaxL1JOnly  ->Fill(ieta,iphi);
1560       }
1561     } 
1562     
1563     if( bMB && !bL1G && !bL1J && !bL0  ) fhClusMBPure  ->Fill(e);
1564
1565   }
1566   
1567   // Maximum energy cluster per event histograms
1568
1569   if( bMB  ) 
1570   { 
1571     fhClusMaxMB      ->Fill(emax); 
1572     fhClusCenMaxMB   ->Fill(emax,centrality); 
1573     fhClusV0MaxMB    ->Fill(emax,v0A+v0C);
1574     fhClusEtaMaxMB   ->Fill(emax,etamax);
1575     fhClusPhiMaxMB   ->Fill(emax,phimax);
1576     if(emax > etaphiEnMin) 
1577     {
1578       fhClusEtaPhiHighCluMaxMB        ->Fill( etamax, phimax);
1579       fhClusEtaPhiHighCellMaxCluMaxMB ->Fill(ietamax,iphimax);
1580     }
1581     else {
1582       fhClusEtaPhiLowCluMaxMB         ->Fill( etamax, phimax);
1583       fhClusEtaPhiLowCellMaxCluMaxMB  ->Fill(ietamax,iphimax);
1584     }
1585   }
1586   
1587   if( bL0  )    { 
1588     fhClusMaxL0      ->Fill(emax); 
1589     fhClusCenMaxL0   ->Fill(emax,centrality); 
1590     fhClusV0MaxL0    ->Fill(emax,v0A+v0C);
1591     fhClusEtaMaxL0   ->Fill(emax,etamax);
1592     fhClusPhiMaxL0   ->Fill(emax,phimax);
1593     if(emax > etaphiEnMin) 
1594     {
1595       fhClusEtaPhiHighCluMaxL0        ->Fill( etamax, phimax);
1596       fhClusEtaPhiHighCellMaxCluMaxL0 ->Fill(ietamax,iphimax);
1597     }
1598     else {
1599       fhClusEtaPhiLowCluMaxL0         ->Fill( etamax, phimax);
1600       fhClusEtaPhiLowCellMaxCluMaxL0  ->Fill(ietamax,iphimax);
1601     }
1602   }
1603   
1604   if( bL1G )    { 
1605     fhClusMaxL1G      ->Fill(emax); 
1606     fhClusCenMaxL1G   ->Fill(emax,centrality); 
1607     fhClusV0MaxL1G    ->Fill(emax,v0A+v0C);
1608     fhClusEtaMaxL1G   ->Fill(emax,etamax);
1609     fhClusPhiMaxL1G   ->Fill(emax,phimax);
1610     if(emax > etaphiEnMin) 
1611     {
1612       fhClusEtaPhiHighCluMaxL1G        ->Fill( etamax, phimax);
1613       fhClusEtaPhiHighCellMaxCluMaxL1G ->Fill(ietamax,iphimax);
1614     }
1615     else {
1616       fhClusEtaPhiLowCluMaxL1G         ->Fill( etamax, phimax);
1617       fhClusEtaPhiLowCellMaxCluMaxL1G  ->Fill(ietamax,iphimax);
1618     }
1619   }
1620   
1621   if( bL1J )    { 
1622     fhClusMaxL1J      ->Fill(emax); 
1623     fhClusCenMaxL1J   ->Fill(emax,centrality); 
1624     fhClusV0MaxL1J    ->Fill(emax,v0A+v0C);
1625     fhClusEtaMaxL1J   ->Fill(emax,etamax);
1626     fhClusPhiMaxL1J   ->Fill(emax,phimax);
1627     if(emax > etaphiEnMin) 
1628     {
1629       fhClusEtaPhiHighCluMaxL1J        ->Fill( etamax, phimax);
1630       fhClusEtaPhiHighCellMaxCluMaxL1J ->Fill(ietamax,iphimax);
1631     }
1632     else {
1633       fhClusEtaPhiLowCluMaxL1J         ->Fill( etamax, phimax);
1634       fhClusEtaPhiLowCellMaxCluMaxL1J  ->Fill(ietamax,iphimax);
1635     }
1636   }   
1637   
1638   if( bL1G && !bL1J )    
1639   { 
1640     fhClusMaxL1GOnly      ->Fill(emax); 
1641     fhClusCenMaxL1GOnly   ->Fill(emax,centrality);
1642     fhClusV0MaxL1GOnly    ->Fill(emax,v0A+v0C);
1643     fhClusEtaMaxL1GOnly   ->Fill(emax,etamax);
1644     fhClusPhiMaxL1GOnly   ->Fill(emax,phimax);
1645     if(emax > etaphiEnMin) 
1646     {
1647       fhClusEtaPhiHighCluMaxL1GOnly        ->Fill( etamax, phimax);
1648       fhClusEtaPhiHighCellMaxCluMaxL1GOnly ->Fill(ietamax,iphimax);
1649     }
1650     else {
1651       fhClusEtaPhiLowCluMaxL1GOnly         ->Fill( etamax, phimax);
1652       fhClusEtaPhiLowCellMaxCluMaxL1GOnly  ->Fill(ietamax,iphimax);
1653     }
1654   }    
1655   
1656   if( bL1J && !bL1G ) 
1657   { 
1658     fhClusMaxL1JOnly      ->Fill(emax); 
1659     fhClusCenMaxL1JOnly   ->Fill(emax,centrality); 
1660     fhClusV0MaxL1JOnly    ->Fill(emax,v0A+v0C);
1661     fhClusEtaMaxL1JOnly   ->Fill(emax,etamax);
1662     fhClusPhiMaxL1JOnly   ->Fill(emax,phimax);
1663     if(emax > etaphiEnMin) 
1664     {
1665       fhClusEtaPhiHighCluMaxL1JOnly        ->Fill( etamax, phimax);
1666       fhClusEtaPhiHighCellMaxCluMaxL1JOnly ->Fill(ietamax,iphimax);
1667     }
1668     else {
1669       fhClusEtaPhiLowCluMaxL1JOnly         ->Fill( etamax, phimax);
1670       fhClusEtaPhiLowCellMaxCluMaxL1JOnly  ->Fill(ietamax,iphimax);
1671     }
1672   } 
1673     
1674   if( bMB && !bL1G && !bL1J && !bL0 ) fhClusMaxMBPure  ->Fill(emax);
1675   
1676   PostData(1, fOutputList);  
1677   
1678 }