CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
hgcalPlots.py
Go to the documentation of this file.
1 from __future__ import print_function
2 import os
3 import sys
4 import copy
5 import collections
6 
7 import ROOT
8 from ROOT import TFile, TString
9 from ROOT import gDirectory
10 ROOT.gROOT.SetBatch(True)
11 ROOT.PyConfig.IgnoreCommandLineOptions = True
12 
13 from Validation.RecoTrack.plotting.plotting import Plot, PlotGroup, PlotFolder, Plotter, PlotOnSideGroup
14 from Validation.RecoTrack.plotting.html import PlotPurpose
15 import Validation.RecoTrack.plotting.plotting as plotting
16 import Validation.RecoTrack.plotting.validation as validation
17 import Validation.RecoTrack.plotting.html as html
18 
19 from Validation.HGCalValidation.HGCalValidator_cfi import hgcalValidator
20 from Validation.HGCalValidation.PostProcessorHGCAL_cfi import tsToCP_linking, lcToCP_linking
21 
22 #To be able to spot any issues both in -z and +z a layer id was introduced
23 #that spans from 0 to 103 for hgcal_v9 geometry. The mapping for hgcal_v9 is:
24 #-z: 0->51
25 #+z: 52->103
26 #while for V10 is:
27 #-z: 0->49
28 #+z: 50->99
29 '''
30 layerscheme = { 'lastLayerEEzm': 0, 'lastLayerFHzm': 0, 'maxlayerzm': 0, 'lastLayerEEzp': 0, 'lastLayerFHzp': 0, 'maxlayerzp': 0 }
31 
32 #Let's take the relevant values of layerscheme from the dqm file.
33 theDQMfile = "DQM_V0001_R000000001__Global__CMSSW_X_Y_Z__RECO.root"
34 if not os.path.isfile(theDQMfile):
35  print("Error: file", theDQMfile, "not found, exit")
36  sys.exit(0)
37 
38 
39 #Take general info from the first file is sufficient.
40 thefile = TFile( theDQMfile )
41 GeneralInfoDirectory = 'DQMData/Run 1/HGCAL/Run summary/HGCalValidator/GeneralInfo'
42 
43 if not gDirectory.GetDirectory( GeneralInfoDirectory ):
44  print("Error: GeneralInfo directory not found in DQM file, exit")
45  sys.exit(0)
46 
47 keys = gDirectory.GetDirectory( GeneralInfoDirectory ).GetListOfKeys()
48 key = keys[0]
49 layvalue = 0
50 while key:
51  obj = key.ReadObj()
52  for laykey in layerscheme.keys():
53  if laykey in obj.GetName():
54  layvalue = obj.GetName()[len("<"+laykey+">i="):-len("</"+laykey+">")]
55  layerscheme[laykey] = layvalue
56  #print(layvalue)
57  key = keys.After(key)
58 
59 thefile.Close()
60 
61 print(layerscheme)
62 #TODO: Anticipating the fine/coarse layer information in CMSSW we overwrite values from DQM file
63 #For now values returned for
64 # 'lastLayerFHzp': '104', 'lastLayerFHzm': '52'
65 #are not the one expected. Will come back to this when there will be info in CMSSW to put in DQM file.
66 #For V9:
67 #layerscheme = { 'lastLayerEEzm': 28, 'lastLayerFHzm': 40, 'maxlayerzm': 52, 'lastLayerEEzp': 80, 'lastLayerFHzp': 92, 'maxlayerzp': 104 }
68 #For V10:
69 '''
70 layerscheme = { 'lastLayerEEzm': 28, 'lastLayerFHzm': 40, 'maxlayerzm': 50, 'lastLayerEEzp': 78, 'lastLayerFHzp': 90, 'maxlayerzp': 100 }
71 #print(layerscheme)
72 
73 lastLayerEEzm = layerscheme['lastLayerEEzm'] # last layer of EE -z
74 lastLayerFHzm = layerscheme['lastLayerFHzm'] # last layer of FH -z
75 maxlayerzm = layerscheme['maxlayerzm'] # last layer of BH -z
76 lastLayerEEzp = layerscheme['lastLayerEEzp'] # last layer of EE +z
77 lastLayerFHzp = layerscheme['lastLayerFHzp'] # last layer of FH +z
78 maxlayerzp = layerscheme['maxlayerzp'] # last layer of BH +z
79 
80 hitlayerscheme = { 'EE_min': 1,'EE_max': 28, 'HESilicon_min': 1, 'HESilicon_max': 22, 'HEScintillator_min': 9 , 'HEScintillator_max': 22 }
81 #print(hitlayerscheme)
82 
83 EE_min = hitlayerscheme['EE_min']
84 EE_max = hitlayerscheme['EE_max']
85 HESilicon_min = hitlayerscheme['HESilicon_min']
86 HESilicon_max = hitlayerscheme['HESilicon_max']
87 HEScintillator_min = hitlayerscheme['HEScintillator_min']
88 HEScintillator_max = hitlayerscheme['HEScintillator_max']
89 
90 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
91 _legend_common = {"legendDx": -0.3,
92  "legendDy": -0.05,
93  "legendDw": 0.1}
94 
95 _SelectedCaloParticles = PlotGroup("SelectedCaloParticles", [
96  Plot("num_caloparticle_eta", xtitle="", **_common),
97  Plot("caloparticle_energy", xtitle="", **_common),
98  Plot("caloparticle_pt", xtitle="", **_common),
99  Plot("caloparticle_phi", xtitle="", **_common),
100  Plot("Eta vs Zorigin", xtitle="", **_common),
101  ])
102 
103 #Need to adjust the statbox to see better the plot
104 _common = {"stat": True, "drawStyle": "hist", "statx": 0.38, "staty": 0.68 }
105 _num_reco_cluster_eta = PlotGroup("num_reco_cluster_eta", [
106  Plot("num_reco_cluster_eta", xtitle="", **_common),
107 ],ncols=1)
108 #Back to normal
109 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
110 
111 _mixedhitsclusters = PlotGroup("mixedhitsclusters", [
112  Plot("mixedhitscluster_zminus", xtitle="", **_common),
113  Plot("mixedhitscluster_zplus", xtitle="", **_common),
114 ],ncols=2)
115 
116 _mixedhitssimclusters = PlotGroup("mixedhitssimclusters", [
117  Plot("mixedhitssimcluster_zminus", xtitle="", **_common),
118  Plot("mixedhitssimcluster_zplus", xtitle="", **_common),
119 ],ncols=2)
120 
121 #Just to prevent the stabox covering the plot
122 _common = {"stat": True, "drawStyle": "hist", "statx": 0.45, "staty": 0.65 }
123 
124 _energyclustered = PlotGroup("energyclustered", [
125  Plot("energyclustered_zminus", xtitle="", **_common),
126  Plot("energyclustered_zplus", xtitle="", **_common),
127 ],ncols=2)
128 
129 #Coming back to the usual box definition
130 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
131 
132 _longdepthbarycentre = PlotGroup("longdepthbarycentre", [
133  Plot("longdepthbarycentre_zminus", xtitle="", **_common),
134  Plot("longdepthbarycentre_zplus", xtitle="", **_common),
135 ],ncols=2)
136 
137 _common_layerperthickness = {}
138 _common_layerperthickness.update(_common)
139 _common_layerperthickness['xmin'] = 0.
140 _common_layerperthickness['xmax'] = 100
141 
142 _totclusternum_thick = PlotGroup("totclusternum_thick", [
143  Plot("totclusternum_thick_120", xtitle="", **_common_layerperthickness),
144  Plot("totclusternum_thick_200", xtitle="", **_common_layerperthickness),
145  Plot("totclusternum_thick_300", xtitle="", **_common_layerperthickness),
146  Plot("totclusternum_thick_-1", xtitle="", **_common_layerperthickness),
147  Plot("mixedhitscluster", xtitle="", **_common_layerperthickness),
148 ])
149 
150 _totsimclusternum_thick = PlotGroup("totsimclusternum_thick", [
151  Plot("totsimclusternum_thick_120", xtitle="", **_common_layerperthickness),
152  Plot("totsimclusternum_thick_200", xtitle="", **_common_layerperthickness),
153  Plot("totsimclusternum_thick_300", xtitle="", **_common_layerperthickness),
154  Plot("totsimclusternum_thick_-1", xtitle="", **_common_layerperthickness),
155  Plot("mixedhitssimcluster", xtitle="", **_common_layerperthickness),
156 ])
157 
158 #We will plot the density in logy scale.
159 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ylog": True}
160 
161 _cellsenedens_thick = PlotGroup("cellsenedens_thick", [
162  Plot("cellsenedens_thick_120", xtitle="", **_common),
163  Plot("cellsenedens_thick_200", xtitle="", **_common),
164  Plot("cellsenedens_thick_300", xtitle="", **_common),
165  Plot("cellsenedens_thick_-1", xtitle="", **_common),
166 ])
167 
168 #Coming back to the usual box definition
169 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
170 
171 
172 #--------------------------------------------------------------------------------------------
173 # z-
174 #--------------------------------------------------------------------------------------------
175 _totclusternum_layer_EE_zminus = PlotGroup("totclusternum_layer_EE", [
176  Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
177 ], ncols=7)
178 
179 _totclusternum_layer_FH_zminus = PlotGroup("totclusternum_layer_FH", [
180  Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
181 ], ncols=7)
182 
183 _totclusternum_layer_BH_zminus = PlotGroup("totclusternum_layer_BH", [
184  Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
185 ], ncols=7)
186 
187 _totsimclusternum_layer_EE_zminus = PlotGroup("totsimclusternum_layer_EE_zminus", [
188  Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
189 ], ncols=4)
190 
191 _totsimclusternum_layer_FH_zminus = PlotGroup("totsimclusternum_layer_FH_zminus", [
192  Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
193 ], ncols=4)
194 
195 _totsimclusternum_layer_BH_zminus = PlotGroup("totsimclusternum_layer_BH_zminus", [
196  Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
197 ], ncols=4)
198 
199 _energyclustered_perlayer_EE_zminus = PlotGroup("energyclustered_perlayer_EE", [
200  Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
201 ], ncols=7)
202 
203 _energyclustered_perlayer_FH_zminus = PlotGroup("energyclustered_perlayer_FH", [
204  Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
205 ], ncols=7)
206 
207 _energyclustered_perlayer_BH_zminus = PlotGroup("energyclustered_perlayer_BH", [
208  Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
209 ], ncols=7)
210 
211 #----------------------------------------------------------------------------------------------------------------
212 #120 um
213 _common_cells = {}
214 _common_cells.update(_common)
215 _common_cells["xmin"] = 0
216 _common_cells["xmax"] = 50
217 _common_cells["ymin"] = 0.1
218 _common_cells["ymax"] = 10000
219 _common_cells["ylog"] = True
220 _cellsnum_perthick_perlayer_120_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_120_EE", [
221  Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
222 ], ncols=7)
223 
224 _cellsnum_perthick_perlayer_120_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_120_FH", [
225  Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
226 ], ncols=7)
227 
228 _cellsnum_perthick_perlayer_120_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_120_BH", [
229  Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
230 ], ncols=7)
231 
232 #200 um
233 _cellsnum_perthick_perlayer_200_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_200_EE", [
234  Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
235 ], ncols=7)
236 
237 _cellsnum_perthick_perlayer_200_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_200_FH", [
238  Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
239 ], ncols=7)
240 
241 _cellsnum_perthick_perlayer_200_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_200_BH", [
242  Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
243 ], ncols=7)
244 
245 #300 um
246 _cellsnum_perthick_perlayer_300_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_300_EE", [
247  Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
248 ], ncols=7)
249 
250 _cellsnum_perthick_perlayer_300_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_300_FH", [
251  Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
252 ], ncols=7)
253 
254 _cellsnum_perthick_perlayer_300_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_300_BH", [
255  Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
256 ], ncols=7)
257 
258 #scint um
259 _cellsnum_perthick_perlayer_scint_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_Sci_EE", [
260  Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
261 ], ncols=7)
262 
263 _cellsnum_perthick_perlayer_scint_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_Sci_FH", [
264  Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
265 ], ncols=7)
266 
267 _cellsnum_perthick_perlayer_scint_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_Sci_BH", [
268  Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
269 ], ncols=7)
270 
271 #----------------------------------------------------------------------------------------------------------------
272 #120 um
273 _common_distance = {}
274 _common_distance.update(_common)
275 _common_distance.update(_legend_common)
276 _common_distance["xmax"] = 150
277 _common_distance["stat"] = False
278 _common_distance["ymin"] = 1e-3
279 _common_distance["ymax"] = 10000
280 _common_distance["ylog"] = True
281 
282 _distancetomaxcell_perthickperlayer_120_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_120_EE", [
283  Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
284 ], ncols=7)
285 
286 _distancetomaxcell_perthickperlayer_120_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_120_FH", [
287  Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
288 ], ncols=7)
289 
290 _distancetomaxcell_perthickperlayer_120_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_120_BH", [
291  Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
292 ], ncols=7)
293 
294 #200 um
295 _distancetomaxcell_perthickperlayer_200_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_200_EE", [
296  Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
297 ], ncols=7)
298 
299 _distancetomaxcell_perthickperlayer_200_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_200_FH", [
300  Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
301 ], ncols=7)
302 
303 _distancetomaxcell_perthickperlayer_200_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_200_BH", [
304  Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
305 ], ncols=7)
306 
307 #300 um
308 _distancetomaxcell_perthickperlayer_300_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_300_EE", [
309  Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
310 ], ncols=7)
311 
312 _distancetomaxcell_perthickperlayer_300_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_300_FH", [
313  Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
314 ], ncols=7)
315 
316 _distancetomaxcell_perthickperlayer_300_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_300_BH", [
317  Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
318 ], ncols=7)
319 
320 #scint um
321 _distancetomaxcell_perthickperlayer_scint_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_EE", [
322  Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
323 ], ncols=7)
324 
325 _distancetomaxcell_perthickperlayer_scint_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_FH", [
326  Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
327 ], ncols=7)
328 
329 _distancetomaxcell_perthickperlayer_scint_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_BH", [
330  Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
331 ], ncols=7)
332 
333 #----------------------------------------------------------------------------------------------------------------
334 #120 um
335 _distancebetseedandmaxcell_perthickperlayer_120_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_EE", [
336  Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
337 ], ncols=7)
338 
339 _distancebetseedandmaxcell_perthickperlayer_120_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_FH", [
340  Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
341 ], ncols=7)
342 
343 _distancebetseedandmaxcell_perthickperlayer_120_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_BH", [
344  Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
345 ], ncols=7)
346 
347 #200 um
348 _distancebetseedandmaxcell_perthickperlayer_200_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_EE", [
349  Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
350 ], ncols=7)
351 
352 _distancebetseedandmaxcell_perthickperlayer_200_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_FH", [
353  Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
354 ], ncols=7)
355 
356 _distancebetseedandmaxcell_perthickperlayer_200_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_BH", [
357  Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
358 ], ncols=7)
359 
360 #300 um
361 _distancebetseedandmaxcell_perthickperlayer_300_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_EE", [
362  Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
363 ], ncols=7)
364 
365 _distancebetseedandmaxcell_perthickperlayer_300_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_FH", [
366  Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
367 ], ncols=7)
368 
369 _distancebetseedandmaxcell_perthickperlayer_300_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_BH", [
370  Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
371 ], ncols=7)
372 
373 #scint um
374 _distancebetseedandmaxcell_perthickperlayer_scint_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_EE", [
375  Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
376 ], ncols=7)
377 
378 _distancebetseedandmaxcell_perthickperlayer_scint_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_FH", [
379  Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
380 ], ncols=7)
381 
382 _distancebetseedandmaxcell_perthickperlayer_scint_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_BH", [
383  Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
384 ], ncols=7)
385 
386 #----------------------------------------------------------------------------------------------------------------
387 #120 um
388 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE", [
389  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
390 ], ncols=7)
391 
392 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH", [
393  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
394 ], ncols=7)
395 
396 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH", [
397  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
398 ], ncols=7)
399 
400 #200 um
401 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE", [
402  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
403 ], ncols=7)
404 
405 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH", [
406  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
407 ], ncols=7)
408 
409 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH", [
410  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
411 ], ncols=7)
412 
413 #300 um
414 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE", [
415  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
416 ], ncols=7)
417 
418 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH", [
419  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
420 ], ncols=7)
421 
422 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH", [
423  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
424 ], ncols=7)
425 
426 #scint um
427 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_EE", [
428  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
429 ], ncols=7)
430 
431 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_FH", [
432  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
433 ], ncols=7)
434 
435 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_BH", [
436  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
437 ], ncols=7)
438 
439 #----------------------------------------------------------------------------------------------------------------
440 #120 um
441 _distancetoseedcell_perthickperlayer_120_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_120_EE", [
442  Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
443 ], ncols=7)
444 
445 _distancetoseedcell_perthickperlayer_120_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_120_FH", [
446  Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
447 ], ncols=7)
448 
449 _distancetoseedcell_perthickperlayer_120_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_120_BH", [
450  Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
451 ], ncols=7)
452 
453 #200 um
454 _distancetoseedcell_perthickperlayer_200_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_200_EE", [
455  Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
456 ], ncols=7)
457 
458 _distancetoseedcell_perthickperlayer_200_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_200_FH", [
459  Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
460 ], ncols=7)
461 
462 _distancetoseedcell_perthickperlayer_200_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_200_BH", [
463  Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
464 ], ncols=7)
465 
466 #300 um
467 _distancetoseedcell_perthickperlayer_300_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_300_EE", [
468  Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
469 ], ncols=7)
470 
471 _distancetoseedcell_perthickperlayer_300_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_300_FH", [
472  Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
473 ], ncols=7)
474 
475 _distancetoseedcell_perthickperlayer_300_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_300_BH", [
476  Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
477 ], ncols=7)
478 
479 #scint um
480 _distancetoseedcell_perthickperlayer_scint_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_EE", [
481  Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
482 ], ncols=7)
483 
484 _distancetoseedcell_perthickperlayer_scint_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_FH", [
485  Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
486 ], ncols=7)
487 
488 _distancetoseedcell_perthickperlayer_scint_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_BH", [
489  Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
490 ], ncols=7)
491 
492 #=====================================================================================================================
493 #----------------------------------------------------------------------------------------------------------------
494 #We need points for the weighted plots
495 _common = {"stat": True, "drawStyle": "EP", "staty": 0.65 }
496 #120 um
497 _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_EE", [
498  Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
499 ], ncols=7)
500 
501 _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_FH", [
502  Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
503 ], ncols=7)
504 
505 _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_BH", [
506  Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
507 ], ncols=7)
508 
509 #200 um
510 _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_EE", [
511  Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
512 ], ncols=7)
513 
514 _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_FH", [
515  Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
516 ], ncols=7)
517 
518 _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_BH", [
519  Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
520 ], ncols=7)
521 
522 #300 um
523 _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_EE", [
524  Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
525 ], ncols=7)
526 
527 _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_FH", [
528  Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
529 ], ncols=7)
530 
531 _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_BH", [
532  Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
533 ], ncols=7)
534 #scint um
535 _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_EE", [
536  Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
537 ], ncols=7)
538 
539 _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_FH", [
540  Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
541 ], ncols=7)
542 
543 _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_BH", [
544  Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
545 ], ncols=7)
546 
547 
548 #----------------------------------------------------------------------------------------------------------------
549 #120 um
550 _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_EE", [
551  Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
552 ], ncols=7)
553 
554 _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_FH", [
555  Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
556 ], ncols=7)
557 
558 _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_BH", [
559  Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
560 ], ncols=7)
561 
562 #200 um
563 _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_EE", [
564  Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
565 ], ncols=7)
566 
567 _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_FH", [
568  Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
569 ], ncols=7)
570 
571 _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_BH", [
572  Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
573 ], ncols=7)
574 
575 #300 um
576 _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_EE", [
577  Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
578 ], ncols=7)
579 
580 _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_FH", [
581  Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
582 ], ncols=7)
583 
584 _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_BH", [
585  Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
586 ], ncols=7)
587 
588 #scint um
589 _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_EE", [
590  Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
591 ], ncols=7)
592 
593 _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_FH", [
594  Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
595 ], ncols=7)
596 
597 _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_BH", [
598  Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
599 ], ncols=7)
600 
601 #Coming back to the usual definition
602 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
603 
604 #--------------------------------------------------------------------------------------------
605 # z+
606 #--------------------------------------------------------------------------------------------
607 _totclusternum_layer_EE_zplus = PlotGroup("totclusternum_layer_EE", [
608  Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
609 ], ncols=7)
610 
611 _totclusternum_layer_FH_zplus = PlotGroup("totclusternum_layer_FH", [
612  Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
613 ], ncols=7)
614 
615 _totclusternum_layer_BH_zplus = PlotGroup("totclusternum_layer_BH", [
616  Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
617 ], ncols=7)
618 
619 _totsimclusternum_layer_EE_zplus = PlotGroup("totsimclusternum_layer_EE_zplus", [
620  Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
621 ], ncols=4)
622 
623 _totsimclusternum_layer_FH_zplus = PlotGroup("totsimclusternum_layer_FH_zplus", [
624  Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
625 ], ncols=4)
626 
627 _totsimclusternum_layer_BH_zplus = PlotGroup("totsimclusternum_layer_BH_zplus", [
628  Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
629 ], ncols=4)
630 
631 _energyclustered_perlayer_EE_zplus = PlotGroup("energyclustered_perlayer_EE", [
632  Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
633 ], ncols=7)
634 
635 _energyclustered_perlayer_FH_zplus = PlotGroup("energyclustered_perlayer_FH", [
636  Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
637 ], ncols=7)
638 
639 _energyclustered_perlayer_BH_zplus = PlotGroup("energyclustered_perlayer_BH", [
640  Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
641 ], ncols=7)
642 
643 #----------------------------------------------------------------------------------------------------------------
644 #120 um
645 _cellsnum_perthick_perlayer_120_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_120_EE", [
646  Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
647 ], ncols=7)
648 
649 _cellsnum_perthick_perlayer_120_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_120_FH", [
650  Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
651 ], ncols=7)
652 _cellsnum_perthick_perlayer_120_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_120_BH", [
653  Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
654 ], ncols=7)
655 
656 #200 um
657 _cellsnum_perthick_perlayer_200_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_200_EE", [
658  Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
659 ], ncols=7)
660 
661 _cellsnum_perthick_perlayer_200_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_200_FH", [
662  Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
663 ], ncols=7)
664 
665 _cellsnum_perthick_perlayer_200_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_200_BH", [
666  Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
667 ], ncols=7)
668 #300 um
669 _cellsnum_perthick_perlayer_300_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_300_EE", [
670  Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
671 ], ncols=7)
672 
673 _cellsnum_perthick_perlayer_300_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_300_FH", [
674  Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
675 ], ncols=7)
676 _cellsnum_perthick_perlayer_300_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_300_BH", [
677  Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
678 ], ncols=7)
679 
680 #scint um
681 _cellsnum_perthick_perlayer_scint_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_Sci_EE", [
682  Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
683 ], ncols=7)
684 
685 _cellsnum_perthick_perlayer_scint_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_Sci_FH", [
686  Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
687 ], ncols=7)
688 
689 _cellsnum_perthick_perlayer_scint_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_Sci_BH", [
690  Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
691 ], ncols=7)
692 
693 #----------------------------------------------------------------------------------------------------------------
694 #120 um
695 _common_distance = {}
696 _common_distance.update(_common)
697 _common_distance.update(_legend_common)
698 _common_distance["xmax"] = 150
699 _common_distance["stat"] = False
700 _common_distance["ymin"] = 1e-3
701 _common_distance["ymax"] = 10000
702 _common_distance["ylog"] = True
703 
704 _distancetomaxcell_perthickperlayer_120_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_120_EE", [
705  Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
706 ], ncols=7)
707 
708 _distancetomaxcell_perthickperlayer_120_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_120_FH", [
709  Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
710 ], ncols=7)
711 
712 _distancetomaxcell_perthickperlayer_120_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_120_BH", [
713  Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
714 ], ncols=7)
715 
716 #200 um
717 _distancetomaxcell_perthickperlayer_200_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_200_EE", [
718  Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
719 ], ncols=7)
720 
721 _distancetomaxcell_perthickperlayer_200_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_200_FH", [
722  Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
723 ], ncols=7)
724 
725 _distancetomaxcell_perthickperlayer_200_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_200_BH", [
726  Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
727 ], ncols=7)
728 
729 #300 um
730 _distancetomaxcell_perthickperlayer_300_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_300_EE", [
731  Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
732 ], ncols=7)
733 
734 _distancetomaxcell_perthickperlayer_300_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_300_FH", [
735  Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
736 ], ncols=7)
737 
738 _distancetomaxcell_perthickperlayer_300_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_300_BH", [
739  Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
740 ], ncols=7)
741 
742 #scint um
743 _distancetomaxcell_perthickperlayer_scint_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_EE", [
744  Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
745 ], ncols=7)
746 
747 _distancetomaxcell_perthickperlayer_scint_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_FH", [
748  Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
749 ], ncols=7)
750 
751 _distancetomaxcell_perthickperlayer_scint_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_BH", [
752  Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
753 ], ncols=7)
754 
755 #----------------------------------------------------------------------------------------------------------------
756 #120 um
757 _distancebetseedandmaxcell_perthickperlayer_120_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_EE", [
758  Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
759 ], ncols=7)
760 
761 _distancebetseedandmaxcell_perthickperlayer_120_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_FH", [
762  Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
763 ], ncols=7)
764 
765 _distancebetseedandmaxcell_perthickperlayer_120_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_BH", [
766  Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
767 ], ncols=7)
768 
769 #200 um
770 _distancebetseedandmaxcell_perthickperlayer_200_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_EE", [
771  Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
772 ], ncols=7)
773 
774 _distancebetseedandmaxcell_perthickperlayer_200_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_FH", [
775  Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
776 ], ncols=7)
777 
778 _distancebetseedandmaxcell_perthickperlayer_200_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_BH", [
779  Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
780 ], ncols=7)
781 
782 #300 um
783 _distancebetseedandmaxcell_perthickperlayer_300_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_EE", [
784  Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
785 ], ncols=7)
786 
787 _distancebetseedandmaxcell_perthickperlayer_300_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_FH", [
788  Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
789 ], ncols=7)
790 
791 _distancebetseedandmaxcell_perthickperlayer_300_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_BH", [
792  Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
793 ], ncols=7)
794 
795 #scint um
796 _distancebetseedandmaxcell_perthickperlayer_scint_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_EE", [
797  Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
798 ], ncols=7)
799 
800 _distancebetseedandmaxcell_perthickperlayer_scint_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_FH", [
801  Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
802 ], ncols=7)
803 
804 _distancebetseedandmaxcell_perthickperlayer_scint_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_BH", [
805  Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
806 ], ncols=7)
807 
808 #----------------------------------------------------------------------------------------------------------------
809 #120 um
810 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE", [
811  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
812 ], ncols=7)
813 
814 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH", [
815  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
816 ], ncols=7)
817 
818 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH", [
819  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
820 ], ncols=7)
821 
822 #200 um
823 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE", [
824  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
825 ], ncols=7)
826 
827 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH", [
828  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
829 ], ncols=7)
830 
831 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH", [
832  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
833 ], ncols=7)
834 
835 #300 um
836 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE", [
837  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
838 ], ncols=7)
839 
840 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH", [
841  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
842 ], ncols=7)
843 
844 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH", [
845  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
846 ], ncols=7)
847 
848 #scint um
849 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_EE", [
850  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
851 ], ncols=7)
852 
853 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_FH", [
854  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
855 ], ncols=7)
856 
857 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_BH", [
858  Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
859 ], ncols=7)
860 
861 
862 #----------------------------------------------------------------------------------------------------------------
863 #120 um
864 _distancetoseedcell_perthickperlayer_120_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_120_EE", [
865  Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
866 ], ncols=7)
867 
868 _distancetoseedcell_perthickperlayer_120_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_120_FH", [
869  Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
870 ], ncols=7)
871 
872 _distancetoseedcell_perthickperlayer_120_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_120_BH", [
873  Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
874 ], ncols=7)
875 
876 #200 um
877 _distancetoseedcell_perthickperlayer_200_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_200_EE", [
878  Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
879 ], ncols=7)
880 
881 _distancetoseedcell_perthickperlayer_200_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_200_FH", [
882  Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
883 ], ncols=7)
884 
885 _distancetoseedcell_perthickperlayer_200_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_200_BH", [
886  Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
887 ], ncols=7)
888 
889 #300 um
890 _distancetoseedcell_perthickperlayer_300_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_300_EE", [
891  Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
892 ], ncols=7)
893 
894 _distancetoseedcell_perthickperlayer_300_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_300_FH", [
895  Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
896 ], ncols=7)
897 
898 _distancetoseedcell_perthickperlayer_300_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_300_BH", [
899  Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
900 ], ncols=7)
901 
902 #scint um
903 _distancetoseedcell_perthickperlayer_scint_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_EE", [
904  Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
905 ], ncols=7)
906 
907 _distancetoseedcell_perthickperlayer_scint_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_FH", [
908  Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
909 ], ncols=7)
910 
911 _distancetoseedcell_perthickperlayer_scint_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_BH", [
912  Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
913 ], ncols=7)
914 
915 #=====================================================================================================================
916 #----------------------------------------------------------------------------------------------------------------
917 #We need points for the weighted plots
918 _common = {"stat": True, "drawStyle": "EP", "staty": 0.65 }
919 
920 #120 um
921 _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_EE", [
922  Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
923 ], ncols=7)
924 
925 _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_FH", [
926  Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
927 ], ncols=7)
928 
929 _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_BH", [
930  Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
931 ], ncols=7)
932 
933 #200 um
934 _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_EE", [
935  Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
936 ], ncols=7)
937 _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_FH", [
938  Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
939 ], ncols=7)
940 
941 _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_BH", [
942  Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
943 ], ncols=7)
944 
945 #300 um
946 _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_EE", [
947  Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
948 ], ncols=7)
949 
950 _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_FH", [
951  Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
952 ], ncols=7)
953 
954 _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_BH", [
955  Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
956 ], ncols=7)
957 
958 #scint um
959 _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_EE", [
960  Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
961 ], ncols=7)
962 
963 _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_FH", [
964  Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
965 ], ncols=7)
966 
967 _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_BH", [
968  Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
969 ], ncols=7)
970 
971 #----------------------------------------------------------------------------------------------------------------
972 #120 um
973 _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_EE", [
974  Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
975 ], ncols=7)
976 
977 _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_FH", [
978  Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
979 ], ncols=7)
980 
981 _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_BH", [
982  Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
983 ], ncols=7)
984 
985 #200 um
986 _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_EE", [
987  Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
988 ], ncols=7)
989 
990 _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_FH", [
991  Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
992 ], ncols=7)
993 
994 _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_BH", [
995  Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
996 ], ncols=7)
997 
998 #300 um
999 _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_EE", [
1000  Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
1001 ], ncols=7)
1002 
1003 _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_FH", [
1004  Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
1005 ], ncols=7)
1006 
1007 _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_BH", [
1008  Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
1009 ], ncols=7)
1010 
1011 #scint um
1012 _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_EE", [
1013  Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
1014 ], ncols=7)
1015 
1016 _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_FH", [
1017  Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
1018 ], ncols=7)
1019 
1020 _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_BH", [
1021  Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
1022 ], ncols=7)
1023 #Just in case we add some plots below to be on the safe side.
1024 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
1025 
1026 #--------------------------------------------------------------------------------------------
1027 # z-
1028 #--------------------------------------------------------------------------------------------
1029 
1030 _common_score = {"title": "Score CaloParticle to LayerClusters in z-",
1031  "stat": False,
1032  "ymin": 0.1,
1033  "ymax": 1000,
1034  "xmin": 0,
1035  "xmax": 1,
1036  "drawStyle": "hist",
1037  "lineWidth": 1,
1038  "ylog": True
1039  }
1040 _common_score.update(_legend_common)
1041 _score_caloparticle_to_layerclusters_zminus = PlotGroup("score_caloparticle_to_layercluster", [
1042  Plot("Score_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(0,maxlayerzm)
1043  ], ncols=10 )
1044 
1045 _common_score = {"title": "Score LayerCluster to CaloParticles in z-",
1046  "stat": False,
1047  "ymin": 0.1,
1048  "ymax": 1000,
1049  "xmin": 0,
1050  "xmax": 1,
1051  "drawStyle": "hist",
1052  "lineWidth": 1,
1053  "ylog": True
1054  }
1055 _common_score.update(_legend_common)
1056 _score_layercluster_to_caloparticles_zminus = PlotGroup("score_layercluster_to_caloparticle", [
1057  Plot("Score_layercl2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(0,maxlayerzm)
1058  ], ncols=8 )
1059 
1060 _common_shared= {"title": "Shared Energy CaloParticle To Layer Cluster in z-",
1061  "stat": False,
1062  "legend": False,
1063  }
1064 _common_shared.update(_legend_common)
1065 _shared_plots_zminus = [Plot("SharedEnergy_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)]
1066 _shared_plots_zminus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1067 _shared_plots_zminus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1068 _sharedEnergy_caloparticle_to_layercluster_zminus = PlotGroup("sharedEnergy_caloparticle_to_layercluster", _shared_plots_zminus, ncols=8)
1069 
1070 _common_shared= {"title": "Shared Energy Layer Cluster To CaloParticle in z-",
1071  "stat": False,
1072  "legend": False,
1073  }
1074 _common_shared.update(_legend_common)
1075 _shared_plots2_zminus = [Plot("SharedEnergy_layercluster2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)]
1076 _common_shared= {"title": "Shared Energy Layer Cluster To Best CaloParticle in z-",
1077  "stat": False,
1078  "legend": False,
1079  "ymin": 0,
1080  "ymax": 1
1081  }
1082 _common_shared.update(_legend_common)
1083 _shared_plots2_zminus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1084 _shared_plots2_zminus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1085 _sharedEnergy_layercluster_to_caloparticle_zminus = PlotGroup("sharedEnergy_layercluster_to_caloparticle", _shared_plots2_zminus, ncols=8)
1086 
1087 
1088 _common_assoc = {#"title": "Cell Association Table in z-",
1089  "stat": False,
1090  "legend": False,
1091  "xbinlabels": ["", "TN(pur)", "FN(ineff.)", "FP(fake)", "TP(eff)"],
1092  "xbinlabeloption": "h",
1093  "drawStyle": "hist",
1094  "ymin": 0.1,
1095  "ymax": 10000,
1096  "ylog": True}
1097 _common_assoc.update(_legend_common)
1098 _cell_association_table_zminus = PlotGroup("cellAssociation_table", [
1099  Plot("cellAssociation_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_assoc) for i in range(0,maxlayerzm)
1100  ], ncols=8 )
1101 
1102 _bin_count = 0
1103 _xbinlabels = [ "{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1104 _xtitle = "Layer Numbers in z-"
1105 _common_eff = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1, "xbinlabeloption": "d"}
1106 _effplots_zminus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1107 _effplots_zminus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1108 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1109 _common_eff["xmin"] = _bin_count
1110 _common_eff["xmax"] = maxlayerzm
1111 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1112 _effplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Efficiency", **_common_eff)]
1113 _efficiencies_zminus_eta = PlotGroup("Efficiencies_vs_eta", _effplots_zminus_eta, ncols=10)
1114 _efficiencies_zminus_phi = PlotGroup("Efficiencies_vs_phi", _effplots_zminus_phi, ncols=10)
1115 _efficiencies_zminus = PlotGroup("Efficiencies_vs_layer", _effplots_zminus, ncols=1)
1116 
1117 _common_dup = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1118 _dupplots_zminus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1119 _dupplots_zminus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1120 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1121 _common_dup["xmin"] = _bin_count
1122 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1123 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1124 _dupplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Duplicates", **_common_dup)]
1125 _duplicates_zminus_eta = PlotGroup("Duplicates_vs_eta", _dupplots_zminus_eta, ncols=10)
1126 _duplicates_zminus_phi = PlotGroup("Duplicates_vs_phi", _dupplots_zminus_phi, ncols=10)
1127 _duplicates_zminus = PlotGroup("Duplicates_vs_layer", _dupplots_zminus, ncols=1)
1128 
1129 _common_fake = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1130 _fakeplots_zminus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1131 _fakeplots_zminus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1132 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1133 _common_fake["xmin"] = _bin_count
1134 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1135 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1136 _common_fake["xbinlabelsize"] = 10.
1137 _fakeplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Fake Rate", **_common_fake)]
1138 _fakes_zminus_eta = PlotGroup("FakeRate_vs_eta", _fakeplots_zminus_eta, ncols=10)
1139 _fakes_zminus_phi = PlotGroup("FakeRate_vs_phi", _fakeplots_zminus_phi, ncols=10)
1140 _fakes_zminus = PlotGroup("FakeRate_vs_layer", _fakeplots_zminus, ncols=1)
1141 
1142 _common_merge = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1143 _mergeplots_zminus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1144 _mergeplots_zminus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1145 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1146 _common_merge["xmin"] = _bin_count
1147 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1148 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1149 _common_merge["xbinlabelsize"] = 10.
1150 _mergeplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Merge Rate", **_common_merge)]
1151 _merges_zminus_eta = PlotGroup("MergeRate_vs_eta", _mergeplots_zminus_eta, ncols=10)
1152 _merges_zminus_phi = PlotGroup("MergeRate_vs_phi", _mergeplots_zminus_phi, ncols=10)
1153 _merges_zminus = PlotGroup("MergeRate_vs_layer", _mergeplots_zminus, ncols=1)
1154 
1155 
1156 _common_energy_score = dict(removeEmptyBins=False, xbinlabelsize=10,
1157  stat=True,
1158  xbinlabeloption="d",
1159  ncols=1,
1160  xmin=0.001,
1161  xmax=1.,
1162  ymin=0.01,
1163  ymax=1.)
1164 _energyscore_cp2lc_zminus = PlotGroup("Energy_vs_Score_CP2LC", [Plot("Energy_vs_Score_caloparticle2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_CP2LC",
1165  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1166  ], ncols=10)
1167 
1168 _energyscore_cp2lc_zplus = PlotGroup("Energy_vs_Score_CP2LC", [Plot("Energy_vs_Score_caloparticle2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_CP2LC",
1169  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1170  ], ncols=10)
1171 _common_energy_score["xmin"]=-0.1
1172 _energyscore_lc2cp_zminus = PlotGroup("Energy_vs_Score_LC2CP", [Plot("Energy_vs_Score_layer2caloparticle_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2CP",
1173  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1174  ], ncols=10)
1175 _energyscore_lc2cp_zplus = PlotGroup("Energy_vs_Score_LC2CP", [Plot("Energy_vs_Score_layer2caloparticle_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2CP",
1176  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1177  ], ncols=10)
1178 
1179 #--------------------------------------------------------------------------------------------
1180 # z+
1181 #--------------------------------------------------------------------------------------------
1182 _common_score = {"title": "Score CaloParticle to LayerClusters in z+",
1183  "stat": False,
1184  "ymin": 0.1,
1185  "ymax": 1000,
1186  "xmin": 0,
1187  "xmax": 1,
1188  "drawStyle": "hist",
1189  "lineWidth": 1,
1190  "ylog": True
1191  }
1192 _common_score.update(_legend_common)
1193 _score_caloparticle_to_layerclusters_zplus = PlotGroup("score_caloparticle_to_layercluster", [
1194  Plot("Score_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(maxlayerzm,maxlayerzp)
1195  ], ncols=10 )
1196 
1197 _common_score = {"title": "Score LayerCluster to CaloParticles in z+",
1198  "stat": False,
1199  "ymin": 0.1,
1200  "ymax": 1000,
1201  "xmin": 0,
1202  "xmax": 1,
1203  "drawStyle": "hist",
1204  "lineWidth": 1,
1205  "ylog": True
1206  }
1207 _common_score.update(_legend_common)
1208 _score_layercluster_to_caloparticles_zplus = PlotGroup("score_layercluster_to_caloparticle", [
1209  Plot("Score_layercl2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(maxlayerzm,maxlayerzp)
1210  ], ncols=8 )
1211 
1212 _common_shared= {"title": "Shared Energy CaloParticle To Layer Cluster in z+",
1213  "stat": False,
1214  "legend": False,
1215  }
1216 _common_shared.update(_legend_common)
1217 _shared_plots_zplus = [Plot("SharedEnergy_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)]
1218 _shared_plots_zplus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1219 _shared_plots_zplus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1220 _sharedEnergy_caloparticle_to_layercluster_zplus = PlotGroup("sharedEnergy_caloparticle_to_layercluster", _shared_plots_zplus, ncols=8)
1221 
1222 _common_shared= {"title": "Shared Energy Layer Cluster To CaloParticle in z+",
1223  "stat": False,
1224  "legend": False,
1225  }
1226 _common_shared.update(_legend_common)
1227 _shared_plots2_zplus = [Plot("SharedEnergy_layercluster2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)]
1228 _common_shared= {"title": "Shared Energy Layer Cluster To Best CaloParticle in z+",
1229  "stat": False,
1230  "legend": False,
1231  "ymin": 0,
1232  "ymax": 1,
1233  }
1234 _common_shared.update(_legend_common)
1235 _shared_plots2_zplus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1236 _shared_plots2_zplus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1237 _sharedEnergy_layercluster_to_caloparticle_zplus = PlotGroup("sharedEnergy_layercluster_to_caloparticle", _shared_plots2_zplus, ncols=8)
1238 
1239 
1240 _common_assoc = {#"title": "Cell Association Table in z+",
1241  "stat": False,
1242  "legend": False,
1243  "xbinlabels": ["", "TN(pur)", "FN(ineff.)", "FP(fake)", "TP(eff)"],
1244  "xbinlabeloption": "h",
1245  "drawStyle": "hist",
1246  "ymin": 0.1,
1247  "ymax": 10000,
1248  "ylog": True}
1249 _common_assoc.update(_legend_common)
1250 _cell_association_table_zplus = PlotGroup("cellAssociation_table", [
1251  Plot("cellAssociation_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_assoc) for i in range(maxlayerzm,maxlayerzp)
1252  ], ncols=8 )
1253 
1254 
1255 _bin_count = 50
1256 _xtitle = "Layer Numbers in z+"
1257 _common_eff = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1258 _effplots_zplus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1259 _effplots_zplus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1260 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1261 _common_eff["xmin"] = _bin_count
1262 _common_eff["xmax"] = _common_eff["xmin"] + maxlayerzm
1263 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1264 _effplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Efficiency", **_common_eff)]
1265 _efficiencies_zplus_eta = PlotGroup("Efficiencies_vs_eta", _effplots_zplus_eta, ncols=10)
1266 _efficiencies_zplus_phi = PlotGroup("Efficiencies_vs_phi", _effplots_zplus_phi, ncols=10)
1267 _efficiencies_zplus = PlotGroup("Efficiencies_vs_layer", _effplots_zplus, ncols=1)
1268 
1269 _common_dup = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1}
1270 _dupplots_zplus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1271 _dupplots_zplus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1272 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1273 _common_dup["xmin"] = _bin_count
1274 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1275 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1276 _dupplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Duplicates", **_common_dup)]
1277 _duplicates_zplus_eta = PlotGroup("Duplicates_vs_eta", _dupplots_zplus_eta, ncols=10)
1278 _duplicates_zplus_phi = PlotGroup("Duplicates_vs_phi", _dupplots_zplus_phi, ncols=10)
1279 _duplicates_zplus = PlotGroup("Duplicates_vs_layer", _dupplots_zplus, ncols=1)
1280 
1281 _common_fake = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1}
1282 _fakeplots_zplus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1283 _fakeplots_zplus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1284 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1285 _common_fake["xmin"] = _bin_count
1286 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1287 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1288 _fakeplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Fake Rate", **_common_fake)]
1289 _fakes_zplus_eta = PlotGroup("FakeRate_vs_eta", _fakeplots_zplus_eta, ncols=10)
1290 _fakes_zplus_phi = PlotGroup("FakeRate_vs_phi", _fakeplots_zplus_phi, ncols=10)
1291 _fakes_zplus = PlotGroup("FakeRate_vs_layer", _fakeplots_zplus, ncols=1)
1292 
1293 _common_merge = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1}
1294 _mergeplots_zplus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1295 _mergeplots_zplus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1296 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1297 _common_merge["xmin"] = _bin_count
1298 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1299 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1300 _mergeplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Merge Rate", **_common_merge)]
1301 _merges_zplus_eta = PlotGroup("MergeRate_vs_eta", _mergeplots_zplus_eta, ncols=10)
1302 _merges_zplus_phi = PlotGroup("MergeRate_vs_phi", _mergeplots_zplus_phi, ncols=10)
1303 _merges_zplus = PlotGroup("MergeRate_vs_layer", _mergeplots_zplus, ncols=1)
1304 
1305 #--------------------------------------------------------------------------------------------
1306 # SimClusters
1307 #--------------------------------------------------------------------------------------------
1308 
1309 _common_sc_score = {"title": "Score SimCluster to LayerClusters in z-",
1310  "stat": False,
1311  "ymin": 0.1,
1312  "ymax": 10**6,
1313  "xmin": 0,
1314  "xmax": 1,
1315  "drawStyle": "hist",
1316  "lineWidth": 1,
1317  "ylog": True
1318  }
1319 _common_sc_score.update(_legend_common)
1320 _score_simcluster_to_layerclusters_zminus = PlotGroup("score_simcluster_to_layercluster_zminus", [
1321  Plot("Score_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(0,maxlayerzm)
1322  ], ncols=10 )
1323 
1324 _common_sc_score = {"title": "Score LayerCluster to SimClusters in z-",
1325  "stat": False,
1326  "ymin": 0.1,
1327  "ymax": 10**6,
1328  "xmin": 0,
1329  "xmax": 1,
1330  "drawStyle": "hist",
1331  "lineWidth": 1,
1332  "ylog": True
1333  }
1334 _common_sc_score.update(_legend_common)
1335 _score_layercluster_to_simclusters_zminus = PlotGroup("score_layercluster_to_simcluster_zminus", [
1336  Plot("Score_layercl2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(0,maxlayerzm)
1337  ], ncols=8 )
1338 
1339 _common_sc_shared= {"title": "Shared Energy SimCluster To Layer Cluster in z-",
1340  "stat": False,
1341  "legend": False,
1342  }
1343 _common_sc_shared.update(_legend_common)
1344 _shared_sc_plots_zminus = [Plot("SharedEnergy_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)]
1345 _shared_sc_plots_zminus.extend([Plot("SharedEnergy_simcluster2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1346 _shared_sc_plots_zminus.extend([Plot("SharedEnergy_simcluster2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1347 _sharedEnergy_simcluster_to_layercluster_zminus = PlotGroup("sharedEnergy_simcluster_to_layercluster_zminus", _shared_sc_plots_zminus, ncols=8)
1348 
1349 _common_sc_shared= {"title": "Shared Energy Layer Cluster To SimCluster in z-",
1350  "stat": False,
1351  "legend": False,
1352  }
1353 _common_sc_shared.update(_legend_common)
1354 _shared_plots2_sc_zminus = [Plot("SharedEnergy_layercluster2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)]
1355 _common_sc_shared= {"title": "Shared Energy Layer Cluster To Best SimCluster in z-",
1356  "stat": False,
1357  "legend": False,
1358  "ymin": 0,
1359  "ymax": 1
1360  }
1361 _common_sc_shared.update(_legend_common)
1362 _shared_plots2_sc_zminus.extend([Plot("SharedEnergy_layercl2simcluster_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1363 _shared_plots2_sc_zminus.extend([Plot("SharedEnergy_layercl2simcluster_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1364 _sharedEnergy_layercluster_to_simcluster_zminus = PlotGroup("sharedEnergy_layercluster_to_simcluster_zminus", _shared_plots2_sc_zminus, ncols=8)
1365 
1366 _bin_count = 0
1367 _xbinlabels = [ "L{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1368 _common_eff = {"stat": False, "legend": False}
1369 _effplots_sc_zminus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1370 _effplots_sc_zminus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1371 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1372 _common_eff["xmin"] = _bin_count
1373 _common_eff["xmax"] = maxlayerzm
1374 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1375 _effplots_sc_zminus = [Plot("globalEfficiencies_zminus", xtitle="Global Efficiencies in z-", **_common_eff)]
1376 _efficiencies_sc_zminus_eta = PlotGroup("Efficiencies_vs_eta_zminus", _effplots_sc_zminus_eta, ncols=10)
1377 _efficiencies_sc_zminus_phi = PlotGroup("Efficiencies_vs_phi_zminus", _effplots_sc_zminus_phi, ncols=10)
1378 _efficiencies_sc_zminus = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _effplots_sc_zminus, ncols=4)
1379 
1380 _common_dup = {"stat": False, "legend": False}
1381 _dupplots_sc_zminus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1382 _dupplots_sc_zminus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1383 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1384 _common_dup["xmin"] = _bin_count
1385 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1386 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1387 _dupplots_sc_zminus = [Plot("globalDublicates_zminus", xtitle="Global Duplicates in z-", **_common_dup)]
1388 _duplicates_sc_zminus_eta = PlotGroup("Duplicates_vs_eta_zminus", _dupplots_sc_zminus_eta, ncols=10)
1389 _duplicates_sc_zminus_phi = PlotGroup("Duplicates_vs_phi_zminus", _dupplots_sc_zminus_phi, ncols=10)
1390 _duplicates_sc_zminus = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _dupplots_sc_zminus, ncols=4)
1391 
1392 _common_fake = {"stat": False, "legend": False}
1393 _fakeplots_sc_zminus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1394 _fakeplots_sc_zminus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1395 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1396 _common_fake["xmin"] = _bin_count
1397 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1398 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1399 _common_fake["xbinlabels"] = [ "L{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1400 _common_fake["xbinlabelsize"] = 10.
1401 _fakeplots_sc_zminus = [Plot("globalFakes_zminus", xtitle="Global Fake Rate in z-", **_common_fake)]
1402 _fakes_sc_zminus_eta = PlotGroup("FakeRate_vs_eta_zminus", _fakeplots_sc_zminus_eta, ncols=10)
1403 _fakes_sc_zminus_phi = PlotGroup("FakeRate_vs_phi_zminus", _fakeplots_sc_zminus_phi, ncols=10)
1404 _fakes_sc_zminus = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _fakeplots_sc_zminus, ncols=4)
1405 
1406 _common_merge = {"stat": False, "legend": False}
1407 _mergeplots_sc_zminus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1408 _mergeplots_sc_zminus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1409 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1410 _common_merge["xmin"] = _bin_count
1411 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1412 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1413 _common_merge["xbinlabels"] = [ "L{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1414 _common_merge["xbinlabelsize"] = 10.
1415 _mergeplots_sc_zminus = [Plot("globalMergeRate_zminus", xtitle="Global merge Rate in z-", **_common_merge)]
1416 _merges_sc_zminus_eta = PlotGroup("MergeRate_vs_eta_zminus", _mergeplots_sc_zminus_eta, ncols=10)
1417 _merges_sc_zminus_phi = PlotGroup("MergeRate_vs_phi_zminus", _mergeplots_sc_zminus_phi, ncols=10)
1418 _merges_sc_zminus = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _mergeplots_sc_zminus, ncols=4)
1419 
1420 _common_energy_score = dict(removeEmptyBins=False, xbinlabelsize=10,
1421  stat=True,
1422  xbinlabeloption="d",
1423  ncols=1,
1424  ylog=True,
1425  xlog=True,
1426  xmin=0.001,
1427  xmax=1.,
1428  ymin=0.01,
1429  ymax=1.)
1430 _energyscore_sc2lc_zminus = PlotGroup("Energy_vs_Score_SC2LC_zminus", [Plot("Energy_vs_Score_simcluster2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_SC2LC",
1431  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1432  ], ncols=10)
1433 
1434 _energyscore_sc2lc_zplus = PlotGroup("Energy_vs_Score_SC2LC_zplus", [Plot("Energy_vs_Score_simcluster2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_SC2LC",
1435  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1436  ], ncols=10)
1437 
1438 _common_energy_score["xlog"]=False
1439 _common_energy_score["ylog"]=False
1440 _common_energy_score["xmin"]=-0.1
1441 _energyscore_lc2sc_zminus = PlotGroup("Energy_vs_Score_LC2SC_zminus", [Plot("Energy_vs_Score_layer2simcluster_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2SC",
1442  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1443  ], ncols=10)
1444 _energyscore_lc2sc_zplus = PlotGroup("Energy_vs_Score_LC2SC_zplus", [Plot("Energy_vs_Score_layer2simcluster_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2SC",
1445  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1446  ], ncols=10)
1447 
1448 #--------------------------------------------------------------------------------------------
1449 # z+
1450 #--------------------------------------------------------------------------------------------
1451 _common_sc_score = {"title": "Score SimCluster to LayerClusters in z+",
1452  "stat": False,
1453  "ymin": 0.1,
1454  "ymax": 1000,
1455  "xmin": 0,
1456  "xmax": 1,
1457  "drawStyle": "hist",
1458  "lineWidth": 1,
1459  "ylog": True
1460  }
1461 _common_sc_score.update(_legend_common)
1462 _score_simcluster_to_layerclusters_zplus = PlotGroup("score_simcluster_to_layercluster_zplus", [
1463  Plot("Score_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(maxlayerzm,maxlayerzp)
1464  ], ncols=10 )
1465 
1466 _common_sc_score = {"title": "Score LayerCluster to SimClusters in z+",
1467  "stat": False,
1468  "ymin": 0.1,
1469  "ymax": 1000,
1470  "xmin": 0,
1471  "xmax": 1,
1472  "drawStyle": "hist",
1473  "lineWidth": 1,
1474  "ylog": True
1475  }
1476 _common_sc_score.update(_legend_common)
1477 _score_layercluster_to_simclusters_zplus = PlotGroup("score_layercluster_to_simcluster_zplus", [
1478  Plot("Score_layercl2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(maxlayerzm,maxlayerzp)
1479  ], ncols=8 )
1480 
1481 _common_sc_shared= {"title": "Shared Energy SimCluster To Layer Cluster in z+",
1482  "stat": False,
1483  "legend": False,
1484  }
1485 _common_sc_shared.update(_legend_common)
1486 _shared_sc_plots_zplus = [Plot("SharedEnergy_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)]
1487 _shared_sc_plots_zplus.extend([Plot("SharedEnergy_simcluster2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1488 _shared_sc_plots_zplus.extend([Plot("SharedEnergy_simcluster2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1489 _sharedEnergy_simcluster_to_layercluster_zplus = PlotGroup("sharedEnergy_simcluster_to_layercluster_zplus", _shared_sc_plots_zplus, ncols=8)
1490 
1491 _common_sc_shared= {"title": "Shared Energy Layer Cluster To SimCluster in z+",
1492  "stat": False,
1493  "legend": False,
1494  }
1495 _common_sc_shared.update(_legend_common)
1496 _shared_plots2_sc_zplus = [Plot("SharedEnergy_layercluster2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)]
1497 _common_sc_shared= {"title": "Shared Energy Layer Cluster To Best SimCluster in z+",
1498  "stat": False,
1499  "legend": False,
1500  "ymin": 0,
1501  "ymax": 1,
1502  }
1503 _common_sc_shared.update(_legend_common)
1504 _shared_plots2_sc_zplus.extend([Plot("SharedEnergy_layercl2simcluster_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1505 _shared_plots2_sc_zplus.extend([Plot("SharedEnergy_layercl2simcluster_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1506 _sharedEnergy_layercluster_to_simcluster_zplus = PlotGroup("sharedEnergy_layercluster_to_simcluster_zplus", _shared_plots2_sc_zplus, ncols=8)
1507 
1508 
1509 _bin_count = 50
1510 _common_eff = {"stat": False, "legend": False}
1511 _effplots_sc_zplus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1512 _effplots_sc_zplus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1513 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1514 _common_eff["xmin"] = _bin_count
1515 _common_eff["xmax"] = _common_eff["xmin"] + maxlayerzm
1516 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1517 _effplots_sc_zplus = [Plot("globalEfficiencies_zplus", xtitle="Global Efficiencies in z+", **_common_eff)]
1518 _efficiencies_sc_zplus_eta = PlotGroup("Efficiencies_vs_eta_zplus", _effplots_sc_zplus_eta, ncols=10)
1519 _efficiencies_sc_zplus_phi = PlotGroup("Efficiencies_vs_phi_zplus", _effplots_sc_zplus_phi, ncols=10)
1520 _efficiencies_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _effplots_sc_zplus, ncols=4)
1521 
1522 _common_dup = {"stat": False, "legend": False}
1523 _dupplots_sc_zplus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1524 _dupplots_sc_zplus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1525 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1526 _common_dup["xmin"] = _bin_count
1527 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1528 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1529 _dupplots_sc_zplus = [Plot("globalDuplicates_zplus", xtitle="Global Duplicates in z+", **_common_dup)]
1530 _duplicates_sc_zplus_eta = PlotGroup("Duplicates_vs_eta_zplus", _dupplots_sc_zplus_eta, ncols=10)
1531 _duplicates_sc_zplus_phi = PlotGroup("Duplicates_vs_phi_zplus", _dupplots_sc_zplus_phi, ncols=10)
1532 _duplicates_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _dupplots_sc_zplus, ncols=4)
1533 
1534 _common_fake = {"stat": False, "legend": False}
1535 _fakeplots_sc_zplus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1536 _fakeplots_sc_zplus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1537 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1538 _common_fake["xmin"] = _bin_count
1539 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1540 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1541 _fakeplots_sc_zplus = [Plot("globalFakeRate_zplus", xtitle="Global Fake Rate in z+", **_common_fake)]
1542 _fakes_sc_zplus_eta = PlotGroup("FakeRate_vs_eta_zplus", _fakeplots_sc_zplus_eta, ncols=10)
1543 _fakes_sc_zplus_phi = PlotGroup("FakeRate_vs_phi_zplus", _fakeplots_sc_zplus_phi, ncols=10)
1544 _fakes_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _fakeplots_sc_zplus, ncols=4)
1545 
1546 _common_merge = {"stat": False, "legend": False}
1547 _mergeplots_sc_zplus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1548 _mergeplots_sc_zplus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1549 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1550 _common_merge["xmin"] = _bin_count
1551 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1552 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1553 _mergeplots_sc_zplus = [Plot("globalMergeRate_zplus", xtitle="Global merge Rate in z+", **_common_merge)]
1554 _merges_sc_zplus_eta = PlotGroup("MergeRate_vs_eta_zplus", _mergeplots_sc_zplus_eta, ncols=10)
1555 _merges_sc_zplus_phi = PlotGroup("MergeRate_vs_phi_zplus", _mergeplots_sc_zplus_phi, ncols=10)
1556 _merges_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _mergeplots_sc_zplus, ncols=4)
1557 
1558 #Just in case we add some plots below to be on the safe side.
1559 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
1560 
1561 #--------------------------------------------------------------------------------------------
1562 # MULTICLUSTERS
1563 #--------------------------------------------------------------------------------------------
1564 _common_score = {#"title": "Score CaloParticle to Tracksters",
1565  "stat": False,
1566  "ymin": 0.1,
1567  "ymax": 100000,
1568  "xmin": 0,
1569  "xmax": 1.0,
1570  "drawStyle": "hist",
1571  "lineWidth": 1,
1572  "ylog": True
1573  }
1574 _common_score.update(_legend_common)
1575 _score_caloparticle_to_tracksters = PlotGroup("ScoreCaloParticlesToTracksters", [
1576  Plot("Score_caloparticle2trackster", **_common_score)
1577  ], ncols=1)
1578 
1579 _common_score = {#"title": "Score Trackster to CaloParticles",
1580  "stat": False,
1581  "ymin": 0.1,
1582  "ymax": 100000,
1583  "xmin": 0,
1584  "xmax": 1.0,
1585  "drawStyle": "hist",
1586  "lineWidth": 1,
1587  "ylog": True
1588  }
1589 _common_score.update(_legend_common)
1590 _score_trackster_to_caloparticles = PlotGroup("ScoreTrackstersToCaloParticles", [
1591  Plot("Score_trackster2caloparticle", **_common_score)
1592  ], ncols=1)
1593 
1594 _common_shared= {"title": "Shared Energy CaloParticle To Trackster ",
1595  "stat": False,
1596  "legend": True,
1597  "xmin": 0,
1598  "xmax": 1.0,
1599  }
1600 _common_shared.update(_legend_common)
1601 _shared_plots = [ Plot("SharedEnergy_caloparticle2trackster", **_common_shared) ]
1602 _common_shared["xmin"] = -4.0
1603 _common_shared["xmax"] = 4.0
1604 _shared_plots.extend([Plot("SharedEnergy_caloparticle2trackster_vs_eta", xtitle="CaloParticle #eta", **_common_shared)])
1605 _shared_plots.extend([Plot("SharedEnergy_caloparticle2trackster_vs_phi", xtitle="CaloParticle #phi", **_common_shared)])
1606 _sharedEnergy_caloparticle_to_trackster = PlotGroup("SharedEnergy_CaloParticleToTrackster", _shared_plots, ncols=3)
1607 
1608 _common_shared= {"title": "Shared Energy Trackster To CaloParticle ",
1609  "stat": False,
1610  "legend": True,
1611  "xmin": 0,
1612  "xmax": 1.0,
1613  }
1614 _common_shared.update(_legend_common)
1615 _shared_plots2 = [Plot("SharedEnergy_trackster2caloparticle", **_common_shared)]
1616 _common_shared["xmin"] = -4.0
1617 _common_shared["xmax"] = 4.0
1618 _shared_plots2.extend([Plot("SharedEnergy_trackster2caloparticle_vs_eta", xtitle="Trackster #eta", **_common_shared)])
1619 _shared_plots2.extend([Plot("SharedEnergy_trackster2caloparticle_vs_phi", xtitle="Trackster #phi", **_common_shared)])
1620 _sharedEnergy_trackster_to_caloparticle = PlotGroup("SharedEnergy_TracksterToCaloParticle", _shared_plots2, ncols=3)
1621 
1622 
1623 _common_assoc = {#"title": "Cell Association Table",
1624  "stat": False,
1625  "legend": False,
1626  "xbinlabels": ["", "TN(pur)", "FN(ineff.)", "FP(fake)", "TP(eff)"],
1627  "xbinlabeloption": "h",
1628  "drawStyle": "hist",
1629  "ymin": 0.1,
1630  "ymax": 10000000,
1631  "ylog": True}
1632 _common_assoc.update(_legend_common)
1633 _cell_association_table = PlotGroup("cellAssociation_table", [
1634  Plot("cellAssociation_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_assoc) for i in range(0,maxlayerzm)
1635  ], ncols=8 )
1636 
1637 _common_eff = {"stat": False, "legend": False, "xbinlabelsize": 14, "xbinlabeloption": "d", "ymin": 0.0, "ymax": 1.1}
1638 _effplots = [Plot("effic_eta", xtitle="", **_common_eff)]
1639 _effplots.extend([Plot("effic_phi", xtitle="", **_common_eff)])
1640 _effplots.extend([Plot("globalEfficiencies", xtitle="", **_common_eff)])
1641 _efficiencies = PlotGroup("Efficiencies", _effplots, ncols=3)
1642 
1643 _common_purity = {"stat": False, "legend": False, "xbinlabelsize": 14, "xbinlabeloption": "d", "ymin": 0.0, "ymax": 1.1}
1644 _purityplots = [Plot("purity_eta", xtitle="", **_common_purity)]
1645 _purityplots.extend([Plot("purity_phi", xtitle="", **_common_purity)])
1646 _purityplots.extend([Plot("globalEfficiencies", xtitle="", **_common_purity)])
1647 _purities = PlotGroup("Purities", _purityplots, ncols=3)
1648 
1649 _common_dup = {"stat": False, "legend": False, "xbinlabelsize": 14, "xbinlabeloption": "d", "ymin": 0.0, "ymax": 1.1}
1650 _dupplots = [Plot("duplicate_eta", xtitle="", **_common_dup)]
1651 _dupplots.extend([Plot("duplicate_phi", xtitle="", **_common_dup)])
1652 _dupplots.extend([Plot("globalEfficiencies", xtitle="", **_common_dup)])
1653 _duplicates = PlotGroup("Duplicates", _dupplots, ncols=3)
1654 
1655 _common_fake = {"stat": False, "legend": False, "xbinlabelsize": 14, "xbinlabeloption": "d", "ymin": 0.0, "ymax": 1.1}
1656 _fakeplots = [Plot("fake_eta", xtitle="", **_common_fake)]
1657 _fakeplots.extend([Plot("fake_phi", xtitle="", **_common_fake)])
1658 _fakeplots.extend([Plot("globalEfficiencies", xtitle="", **_common_fake)])
1659 _fakes = PlotGroup("FakeRate", _fakeplots, ncols=3)
1660 
1661 _common_merge = {"stat": False, "legend": False, "xbinlabelsize": 14, "xbinlabeloption": "d", "ymin": 0.0, "ymax": 1.1}
1662 _mergeplots = [Plot("merge_eta", xtitle="", **_common_merge)]
1663 _mergeplots.extend([Plot("merge_phi", xtitle="", **_common_merge)])
1664 _mergeplots.extend([Plot("globalEfficiencies", xtitle="", **_common_merge)])
1665 _merges = PlotGroup("MergeRate", _mergeplots, ncols=3)
1666 
1667 _common_energy_score = dict(removeEmptyBins=True, xbinlabelsize=10, xbinlabeloption="d")
1668 _common_energy_score["ymax"] = 1.
1669 _common_energy_score["xmax"] = 1.0
1670 _energyscore_cp2ts = PlotOnSideGroup("Energy_vs_Score_CaloParticlesToTracksters", Plot("Energy_vs_Score_caloparticle2trackster", drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score), ncols=1)
1671 _common_energy_score["ymax"] = 1.
1672 _common_energy_score["xmax"] = 1.0
1673 _energyscore_ts2cp = PlotOnSideGroup("Energy_vs_Score_TrackstersToCaloParticles", Plot("Energy_vs_Score_trackster2caloparticle", drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score), ncols=1)
1674 
1675 #Coming back to the usual box definition
1676 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
1677 
1678 _tottracksternum = PlotGroup("TotalNumberofTracksters", [
1679  Plot("tottracksternum", xtitle="", **_common)
1680 ],ncols=1)
1681 
1682 _trackster_layernum_plots = [Plot("trackster_firstlayer", xtitle="Trackster First Layer", **_common)]
1683 _trackster_layernum_plots.extend([Plot("trackster_lastlayer", xtitle="Trackster Last Layer", **_common)])
1684 _trackster_layernum_plots.extend([Plot("trackster_layersnum", xtitle="Trackster Number of Layers", **_common)])
1685 _trackster_layernum = PlotGroup("LayerNumbersOfTrackster", _trackster_layernum_plots, ncols=3)
1686 
1687 _common["xmax"] = 50
1688 _clusternum_in_trackster = PlotGroup("NumberofLayerClustersinTrackster",[
1689  Plot("clusternum_in_trackster", xtitle="", **_common)
1690 ],ncols=1)
1691 
1692 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1693 _common = {"stat": True, "drawStyle": "pcolz", "staty": 0.65}
1694 
1695 _clusternum_in_trackster_vs_layer = PlotGroup("NumberofLayerClustersinTracksterPerLayer",[
1696  Plot("clusternum_in_trackster_vs_layer", xtitle="Layer number", ytitle = "<2d Layer Clusters in Trackster>", **_common)
1697 ],ncols=1)
1698 
1699 _common["scale"] = 100.
1700 #, ztitle = "% of clusters" normalizeToUnitArea=True
1701 _multiplicity_numberOfEventsHistogram = "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/ticlTrackstersMerge/multiplicity_numberOfEventsHistogram"
1702 _multiplicity_zminus_numberOfEventsHistogram = "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/ticlTrackstersMerge/multiplicity_zminus_numberOfEventsHistogram"
1703 _multiplicity_zplus_numberOfEventsHistogram = "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/ticlTrackstersMerge/multiplicity_zplus_numberOfEventsHistogram"
1704 
1705 _multiplicityOfLCinTST_plots = [Plot("multiplicityOfLCinTST", xtitle="Layer Cluster multiplicity in Tracksters", ytitle = "Cluster size (n_{hit})",
1706  drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)]
1707 _multiplicityOfLCinTST_plots.extend([Plot("multiplicityOfLCinTST_vs_layerclusterenergy", xtitle="Layer Cluster multiplicity in Tracksters", ytitle = "Cluster Energy (GeV)",
1708  drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)])
1709 _multiplicityOfLCinTST_plots.extend([Plot("multiplicityOfLCinTST_vs_layercluster_zplus", xtitle="Layer Cluster multiplicity in Tracksters", ytitle = "Layer Number",
1710  drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)])
1711 _multiplicityOfLCinTST_plots.extend([Plot("multiplicityOfLCinTST_vs_layercluster_zminus", xtitle="Layer Cluster multiplicity in Tracksters", ytitle = "Layer Number",
1712  drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)])
1713 _multiplicityOfLCinTST = PlotGroup("MultiplicityofLCinTST", _multiplicityOfLCinTST_plots, ncols=2)
1714 
1715 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1716 #--------------------------------------------------------------------------------------------
1717 # z-
1718 #--------------------------------------------------------------------------------------------
1719 _clusternum_in_trackster_perlayer_zminus_EE = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zminus_EE", [
1720  Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
1721 ], ncols=7)
1722 
1723 _clusternum_in_trackster_perlayer_zminus_FH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zminus_FH", [
1724  Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
1725 ], ncols=7)
1726 
1727 _clusternum_in_trackster_perlayer_zminus_BH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zminus_BH", [
1728  Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
1729 ], ncols=7)
1730 
1731 #--------------------------------------------------------------------------------------------
1732 # z+
1733 #--------------------------------------------------------------------------------------------
1734 _clusternum_in_trackster_perlayer_zplus_EE = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zplus_EE", [
1735  Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
1736 ], ncols=7)
1737 
1738 _clusternum_in_trackster_perlayer_zplus_FH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zplus_FH", [
1739  Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
1740 ], ncols=7)
1741 
1742 _clusternum_in_trackster_perlayer_zplus_BH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zplus_BH", [
1743  Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
1744 ], ncols=7)
1745 
1746 #Coming back to the usual box definition
1747 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
1748 
1749 #Some tracksters quantities
1750 _trackster_eppe_plots = [Plot("trackster_eta", xtitle="Trackster #eta", **_common)]
1751 _trackster_eppe_plots.extend([Plot("trackster_phi", xtitle="Trackster #phi", **_common)])
1752 _trackster_eppe_plots.extend([Plot("trackster_pt", xtitle="Trackster p_{T}", **_common)])
1753 _trackster_eppe_plots.extend([Plot("trackster_energy", xtitle="Trackster Energy", **_common)])
1754 _trackster_eppe = PlotGroup("EtaPhiPtEnergy", _trackster_eppe_plots, ncols=2)
1755 
1756 _trackster_xyz_plots = [Plot("trackster_x", xtitle="Trackster x", **_common)]
1757 _trackster_xyz_plots.extend([Plot("trackster_y", xtitle="Trackster y", **_common)])
1758 _trackster_xyz_plots.extend([Plot("trackster_z", xtitle="Trackster z", **_common)])
1759 _trackster_xyz = PlotGroup("XYZ", _trackster_xyz_plots, ncols=3)
1760 
1761 #--------------------------------------------------------------------------------------------
1762 # SIMHITS, DIGIS, RECHITS
1763 #--------------------------------------------------------------------------------------------
1764 
1765 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1766 
1767 _HitValidation = PlotGroup("HitValidation", [
1768  Plot("heeEnSim", title="SimHits_EE_Energy", **_common),
1769  Plot("hebEnSim", title="SimHits_HE_Silicon_Energy", **_common),
1770  Plot("hefEnSim", title="SimHits_HE_Scintillator_Energy", **_common),
1771  ])
1772 
1773 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1774 
1775 _Occupancy_EE_zplus = PlotGroup("Occupancy_EE_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_EE_zplus",
1776  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1777  ], ncols=7)
1778 
1779 _Occupancy_HE_Silicon_zplus = PlotGroup("Occupancy_HE_Silicon_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_HE_zplus",
1780  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1781  ], ncols=7)
1782 
1783 _Occupancy_HE_Scintillator_zplus = PlotGroup("Occupancy_HE_Scintillator_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_HE_Scintillator_zplus",
1784  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1785  ], ncols=7)
1786 
1787 _Occupancy_EE_zminus = PlotGroup("Occupancy_EE_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_EE_zminus",
1788  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1789  ], ncols=7)
1790 
1791 _Occupancy_HE_Silicon_zminus = PlotGroup("Occupancy_HE_Silicon_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_HE_Silicon_zminus",
1792  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1793  ], ncols=7)
1794 
1795 _Occupancy_HE_Scintillator_zminus = PlotGroup("Occupancy_HE_Scintillator_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_HE_Scintillator_zminus",
1796  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1797  ], ncols=7)
1798 
1799 _common_etaphi = dict(removeEmptyBins=False, xbinlabelsize=10, xbinlabeloption="d", ymin=None)
1800 
1801 _EtaPhi_EE_zplus = PlotGroup("EtaPhi_EE_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_EE_zplus",
1802  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(EE_min,EE_max+1)
1803  ], ncols=7)
1804 
1805 _EtaPhi_HE_Silicon_zplus = PlotGroup("EtaPhi_HE_Silicon_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_HE_Silicon_zplus",
1806  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HESilicon_min,HESilicon_max+1)
1807  ], ncols=7)
1808 
1809 _EtaPhi_HE_Scintillator_zplus = PlotGroup("EtaPhi_HE_Scintillator_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_HE_Scintillator_zplus",
1810  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HEScintillator_min,HEScintillator_max+1)
1811  ], ncols=7)
1812 
1813 _EtaPhi_EE_zminus = PlotGroup("EtaPhi_EE_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_EE_zminus",
1814  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(EE_min,EE_max+1)
1815  ], ncols=7)
1816 
1817 _EtaPhi_HE_Silicon_zminus = PlotGroup("EtaPhi_HE_Silicon_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_HE_Silicon_zminus",
1818  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HESilicon_min,HESilicon_max+1)
1819  ], ncols=7)
1820 
1821 _EtaPhi_HE_Scintillator_zminus = PlotGroup("EtaPhi_HE_Scintillator_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_HE_Scintillator_zminus",
1822  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HEScintillator_min,HEScintillator_max+1)
1823  ], ncols=7)
1824 
1825 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1826 
1827 _Energy_EE_0 = PlotGroup("Energy_Time_0_EE", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_EE",
1828  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1829  ], ncols=7)
1830 
1831 _Energy_HE_Silicon_0 = PlotGroup("Energy_Time_0_HE_Silicon", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_HE_Silicon",
1832  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1833  ], ncols=7)
1834 
1835 _Energy_HE_Scintillator_0 = PlotGroup("Energy_Time_0_HE_Scintillator", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_HE_Scintillator",
1836  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1837  ], ncols=7)
1838 
1839 _Energy_EE_1 = PlotGroup("Energy_Time_1_EE", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_EE",
1840  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1841  ], ncols=7)
1842 
1843 _Energy_HE_Silicon_1 = PlotGroup("Energy_Time_1_HE_Silicon", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_HE_Silicon",
1844  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1845  ], ncols=7)
1846 
1847 _Energy_HE_Scintillator_1 = PlotGroup("Energy_Time_1_HE_Scintillator", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_HE_Scintillator",
1848  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1849  ], ncols=7)
1850 
1851 _Energy_EE = PlotGroup("Energy_EE", [Plot("energy_layer_{:02d}".format(i), title="Energy_EE",
1852  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1853  ], ncols=7)
1854 
1855 _Energy_HE_Silicon = PlotGroup("Energy_HE_Silicon", [Plot("energy_layer_{:02d}".format(i), title="Energy_HE_Silicon",
1856  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1857  ], ncols=7)
1858 
1859 _Energy_HE_Scintillator = PlotGroup("Energy_HE_Scintillator", [Plot("energy_layer_{:02d}".format(i), title="Energy_HE_Scintillator",
1860  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1861  ], ncols=7)
1862 
1863 _DigiHits_ADC_EE = PlotGroup("ADC_EE", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_EE",
1864  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1865  ], ncols=7)
1866 
1867 _DigiHits_ADC_HE_Silicon = PlotGroup("ADC_HE_Silicon", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_HE_Silicon",
1868  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1869  ], ncols=7)
1870 
1871 _DigiHits_ADC_HE_Scintillator = PlotGroup("ADC_HE_Scintillator", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_HE_Scintillator",
1872  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1873  ], ncols=7)
1874 
1875 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1876 
1877 _DigiHits_Occupancy_EE_zplus = PlotGroup("Occupancy_EE_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_EE_zplus",
1878  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1879  ], ncols=7)
1880 
1881 _DigiHits_Occupancy_HE_Silicon_zplus = PlotGroup("Occupancy_HE_Silicon_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Silicon_zplus",
1882  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1883  ], ncols=7)
1884 
1885 _DigiHits_Occupancy_HE_Scintillator_zplus = PlotGroup("Occupancy_HE_Scintillator_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Scintillator_zplus",
1886  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1887  ], ncols=7)
1888 
1889 _DigiHits_Occupancy_EE_zminus = PlotGroup("Occupancy_EE_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_EE_zminus",
1890  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1891  ], ncols=7)
1892 
1893 _DigiHits_Occupancy_HE_Silicon_zminus = PlotGroup("Occupancy_HE_Silicon_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Silicon_zminus",
1894  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1895  ], ncols=7)
1896 
1897 _DigiHits_Occupancy_HE_Scintillator_zminus = PlotGroup("Occupancy_HE_Scintillator_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Scintillator_zminus",
1898  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1899  ], ncols=7)
1900 
1901 _common_XY = dict(removeEmptyBins=True, xbinlabelsize=10, xbinlabeloption="d", ymin=None)
1902 
1903 _DigiHits_Occupancy_XY_EE = PlotGroup("Occupancy_XY_EE", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_EE",
1904  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(EE_min,EE_max+1)
1905  ], ncols=7)
1906 
1907 _DigiHits_Occupancy_XY_HE_Silicon = PlotGroup("Occupancy_XY_HE_Silicon", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_HE_Silicon",
1908  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(HESilicon_min,HESilicon_max+1)
1909  ], ncols=7)
1910 
1911 _DigiHits_Occupancy_XY_HE_Scintillator = PlotGroup("Occupancy_XY_HE_Scintillator", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_HE_Scintillator",
1912  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(HEScintillator_min,HEScintillator_max+1)
1913  ], ncols=7)
1914 
1915 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1916 
1917 _DigiHits_TOA_EE = PlotGroup("TOA_EE", [
1918  Plot("TOA_layer_{:02d}".format(i), title="TOA_EE", xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1919  ], ncols=7)
1920 
1921 _DigiHits_TOA_HE_Silicon = PlotGroup("TOA_HE_Silicon", [
1922  Plot("TOA_layer_{:02d}".format(i), title="TOA_HE_Silicon", xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1923  ], ncols=7)
1924 
1925 _DigiHits_TOA_HE_Scintillator = PlotGroup("TOA_HE_Scintillator", [
1926  Plot("TOA_layer_{:02d}".format(i), title="TOA_HE_Scintillator", xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1927  ], ncols=7)
1928 
1929 _DigiHits_TOT_EE = PlotGroup("TOT_EE", [
1930  Plot("TOT_layer_{:02d}".format(i), title="TOT_EE", xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1931  ], ncols=7)
1932 
1933 _DigiHits_TOT_HE_Silicon = PlotGroup("TOT_HE_Silicon", [
1934  Plot("TOT_layer_{:02d}".format(i), title="TOT_HE_Silicon", xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1935  ], ncols=7)
1936 
1937 _DigiHits_TOT_HE_Scintillator = PlotGroup("TOT_HE_Scintillator", [
1938  Plot("TOT_layer_{:02d}".format(i), title="TOT_HE_Scintillator", xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1939  ], ncols=7)
1940 
1941 #===================================================================================================================
1942 #Plot definition for HitCalibration
1943 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": False}
1944 
1945 _LayerOccupancy = PlotGroup("LayerOccupancy", [
1946  Plot("LayerOccupancy", title="LayerOccupancy", **_common)], ncols=1)
1947 
1948 _ReconstructableEnergyOverCPenergy = PlotGroup("ReconstructableEnergyOverCPenergy", [
1949  Plot("h_EoP_CPene_100_calib_fraction", title="EoP_CPene_100_calib_fraction", **_common),
1950  Plot("h_EoP_CPene_200_calib_fraction", title="EoP_CPene_200_calib_fraction", **_common),
1951  Plot("h_EoP_CPene_300_calib_fraction", title="EoP_CPene_300_calib_fraction", **_common),
1952  Plot("h_EoP_CPene_scint_calib_fraction", title="EoP_CPene_scint_calib_fraction", **_common),
1953 ])
1954 
1955 _ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy = PlotGroup("ParticleFlowClusterHGCalFromTrackster", [
1956  Plot("hgcal_EoP_CPene_100_calib_fraction", title="hgcal_EoP_CPene_100_calib_fraction", **_common),
1957  Plot("hgcal_EoP_CPene_200_calib_fraction", title="hgcal_EoP_CPene_200_calib_fraction", **_common),
1958  Plot("hgcal_EoP_CPene_300_calib_fraction", title="hgcal_EoP_CPene_300_calib_fraction", **_common),
1959  Plot("hgcal_EoP_CPene_scint_calib_fraction", title="hgcal_EoP_CPene_scint_calib_fraction", **_common),
1960 ])
1961 
1962 _EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy = PlotGroup("EcalDrivenGsfElectronsFromTrackster", [
1963  Plot("hgcal_ele_EoP_CPene_100_calib_fraction", title="hgcal_ele_EoP_CPene_100_calib_fraction", **_common),
1964  Plot("hgcal_ele_EoP_CPene_200_calib_fraction", title="hgcal_ele_EoP_CPene_200_calib_fraction", **_common),
1965  Plot("hgcal_ele_EoP_CPene_300_calib_fraction", title="hgcal_ele_EoP_CPene_300_calib_fraction", **_common),
1966  Plot("hgcal_ele_EoP_CPene_scint_calib_fraction", title="hgcal_ele_EoP_CPene_scint_calib_fraction", **_common),
1967 ])
1968 
1969 _PhotonsFromTrackster_Closest_EoverCPenergy = PlotGroup("PhotonsFromTrackster", [
1970  Plot("hgcal_photon_EoP_CPene_100_calib_fraction", title="hgcal_photon_EoP_CPene_100_calib_fraction", **_common),
1971  Plot("hgcal_photon_EoP_CPene_200_calib_fraction", title="hgcal_photon_EoP_CPene_200_calib_fraction", **_common),
1972  Plot("hgcal_photon_EoP_CPene_300_calib_fraction", title="hgcal_photon_EoP_CPene_300_calib_fraction", **_common),
1973  Plot("hgcal_photon_EoP_CPene_scint_calib_fraction", title="hgcal_photon_EoP_CPene_scint_calib_fraction", **_common),
1974 ])
1975 
1976 #=================================================================================================
1977 hgcalLayerClustersPlotter = Plotter()
1978 layerClustersLabel = 'Layer Clusters'
1979 
1980 lc_general_clusterlevel = [
1981  # number of layer clusters per event in a) 120um, b) 200um, c) 300um, d) scint
1982  # (one entry per event in each of the four histos)
1983  _totclusternum_thick,
1984  # Miscellaneous plots:
1985  # longdepthbarycentre: The longitudinal depth barycentre. One entry per event.
1986  # mixedhitscluster: Number of clusters per event with hits in different thicknesses.
1987  # num_reco_cluster_eta: Number of reco clusters vs eta
1988  _num_reco_cluster_eta,
1989  _energyclustered,
1990  _mixedhitsclusters,
1991  _longdepthbarycentre,
1992  # calculated "energy density" for cells in a) 120um, b) 200um, c) 300um, d) scint
1993  # (one entry per rechit, in the appropriate histo)
1994  _cellsenedens_thick
1995 ]
1996 
1997 lc_clusterlevel_zminus = [
1998  # number of layer clusters per layer (one entry per event in each histo)
1999  _totclusternum_layer_EE_zminus,
2000  _totclusternum_layer_FH_zminus,
2001  _totclusternum_layer_BH_zminus,
2002  # Looking at the fraction of true energy that has been clustered; by layer and overall
2003  _energyclustered_perlayer_EE_zminus,
2004  _energyclustered_perlayer_FH_zminus,
2005  _energyclustered_perlayer_BH_zminus
2006 ]
2007 
2008 lc_cellevel_zminus = [
2009  # For each layer cluster:
2010  # number of cells in layer cluster, by layer - separate histos in each layer for 120um Si, 200/300um Si, Scint
2011  # NB: not all combinations exist; e.g. no 120um Si in layers with scint.
2012  # (One entry in the appropriate histo per layer cluster).
2013  _cellsnum_perthick_perlayer_120_EE_zminus,
2014  _cellsnum_perthick_perlayer_120_FH_zminus,
2015  _cellsnum_perthick_perlayer_120_BH_zminus,
2016  _cellsnum_perthick_perlayer_200_EE_zminus,
2017  _cellsnum_perthick_perlayer_200_FH_zminus,
2018  _cellsnum_perthick_perlayer_200_BH_zminus,
2019  _cellsnum_perthick_perlayer_300_EE_zminus,
2020  _cellsnum_perthick_perlayer_300_FH_zminus,
2021  _cellsnum_perthick_perlayer_300_BH_zminus,
2022  _cellsnum_perthick_perlayer_scint_EE_zminus,
2023  _cellsnum_perthick_perlayer_scint_FH_zminus,
2024  _cellsnum_perthick_perlayer_scint_BH_zminus,
2025  # Cell Association per Layer
2026  _cell_association_table_zminus
2027 ]
2028 
2029 lc_cp_association_zminus = [
2030  # Efficiency Plots
2031  _efficiencies_zminus,
2032  _efficiencies_zminus_eta,
2033  _efficiencies_zminus_phi,
2034  # Duplicate Plots
2035  _duplicates_zminus,
2036  _duplicates_zminus_eta,
2037  _duplicates_zminus_phi,
2038  # Fake Rate Plots
2039  _fakes_zminus,
2040  _fakes_zminus_eta,
2041  _fakes_zminus_phi,
2042  # Merge Rate Plots
2043  _merges_zminus,
2044  _merges_zminus_eta,
2045  _merges_zminus_phi,
2046  # Score of CaloParticles wrt Layer Clusters
2047  _score_caloparticle_to_layerclusters_zminus,
2048  # Score of LayerClusters wrt CaloParticles
2049  _score_layercluster_to_caloparticles_zminus,
2050  # Shared Energy between CaloParticle and LayerClusters
2051  _sharedEnergy_caloparticle_to_layercluster_zminus,
2052  # Shared Energy between LayerClusters and CaloParticle
2053  _sharedEnergy_layercluster_to_caloparticle_zminus,
2054  # Energy vs Score 2D plots CP to LC
2055  _energyscore_cp2lc_zminus,
2056  # Energy vs Score 2D plots LC to CP
2057  _energyscore_lc2cp_zminus
2058 ]
2059 
2060 lc_zminus_extended = [
2061  # For each layer cluster:
2062  # distance of cells from a) seed cell, b) max cell; and c), d): same with entries weighted by cell energy
2063  # separate histos in each layer for 120um Si, 200/300um Si, Scint
2064  # NB: not all combinations exist; e.g. no 120um Si in layers with scint.
2065  # (One entry in each of the four appropriate histos per cell in a layer cluster)
2066  _distancetomaxcell_perthickperlayer_120_EE_zminus,
2067  _distancetomaxcell_perthickperlayer_120_FH_zminus,
2068  _distancetomaxcell_perthickperlayer_120_BH_zminus,
2069  _distancetomaxcell_perthickperlayer_200_EE_zminus,
2070  _distancetomaxcell_perthickperlayer_200_FH_zminus,
2071  _distancetomaxcell_perthickperlayer_200_BH_zminus,
2072  _distancetomaxcell_perthickperlayer_300_EE_zminus,
2073  _distancetomaxcell_perthickperlayer_300_FH_zminus,
2074  _distancetomaxcell_perthickperlayer_300_BH_zminus,
2075  _distancetomaxcell_perthickperlayer_scint_EE_zminus,
2076  _distancetomaxcell_perthickperlayer_scint_FH_zminus,
2077  _distancetomaxcell_perthickperlayer_scint_BH_zminus,
2078  _distancetoseedcell_perthickperlayer_120_EE_zminus,
2079  _distancetoseedcell_perthickperlayer_120_FH_zminus,
2080  _distancetoseedcell_perthickperlayer_120_BH_zminus,
2081  _distancetoseedcell_perthickperlayer_200_EE_zminus,
2082  _distancetoseedcell_perthickperlayer_200_FH_zminus,
2083  _distancetoseedcell_perthickperlayer_200_BH_zminus,
2084  _distancetoseedcell_perthickperlayer_300_EE_zminus,
2085  _distancetoseedcell_perthickperlayer_300_FH_zminus,
2086  _distancetoseedcell_perthickperlayer_300_BH_zminus,
2087  _distancetoseedcell_perthickperlayer_scint_EE_zminus,
2088  _distancetoseedcell_perthickperlayer_scint_FH_zminus,
2089  _distancetoseedcell_perthickperlayer_scint_BH_zminus,
2090  _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zminus,
2091  _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zminus,
2092  _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zminus,
2093  _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zminus,
2094  _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zminus,
2095  _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zminus,
2096  _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zminus,
2097  _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zminus,
2098  _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zminus,
2099  _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zminus,
2100  _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zminus,
2101  _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zminus,
2102  _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zminus,
2103  _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zminus,
2104  _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zminus,
2105  _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zminus,
2106  _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zminus,
2107  _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zminus,
2108  _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zminus,
2109  _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zminus,
2110  _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zminus,
2111  _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zminus,
2112  _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zminus,
2113  _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zminus,
2114  _distancebetseedandmaxcell_perthickperlayer_120_EE_zminus,
2115  _distancebetseedandmaxcell_perthickperlayer_120_FH_zminus,
2116  _distancebetseedandmaxcell_perthickperlayer_120_BH_zminus,
2117  _distancebetseedandmaxcell_perthickperlayer_200_EE_zminus,
2118  _distancebetseedandmaxcell_perthickperlayer_200_FH_zminus,
2119  _distancebetseedandmaxcell_perthickperlayer_200_BH_zminus,
2120  _distancebetseedandmaxcell_perthickperlayer_300_EE_zminus,
2121  _distancebetseedandmaxcell_perthickperlayer_300_FH_zminus,
2122  _distancebetseedandmaxcell_perthickperlayer_300_BH_zminus,
2123  _distancebetseedandmaxcell_perthickperlayer_scint_EE_zminus,
2124  _distancebetseedandmaxcell_perthickperlayer_scint_FH_zminus,
2125  _distancebetseedandmaxcell_perthickperlayer_scint_BH_zminus,
2126  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zminus,
2127  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zminus,
2128  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zminus,
2129  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zminus,
2130  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zminus,
2131  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zminus,
2132  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zminus,
2133  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zminus,
2134  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zminus,
2135  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zminus,
2136  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zminus,
2137  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zminus
2138 ]
2139 
2140 lc_clusterlevel_zplus = [
2141  # number of layer clusters per layer (one entry per event in each histo)
2142  _totclusternum_layer_EE_zplus,
2143  _totclusternum_layer_FH_zplus,
2144  _totclusternum_layer_BH_zplus,
2145  # Looking at the fraction of true energy that has been clustered; by layer and overall
2146  _energyclustered_perlayer_EE_zplus,
2147  _energyclustered_perlayer_FH_zplus,
2148  _energyclustered_perlayer_BH_zplus
2149 ]
2150 
2151 lc_cellevel_zplus = [
2152  # number of cells in layer cluster, by layer - separate histos in each layer for 120um Si, 200/300um Si, Scint
2153  _cellsnum_perthick_perlayer_120_EE_zplus,
2154  _cellsnum_perthick_perlayer_120_FH_zplus,
2155  _cellsnum_perthick_perlayer_120_BH_zplus,
2156  _cellsnum_perthick_perlayer_200_EE_zplus,
2157  _cellsnum_perthick_perlayer_200_FH_zplus,
2158  _cellsnum_perthick_perlayer_200_BH_zplus,
2159  _cellsnum_perthick_perlayer_300_EE_zplus,
2160  _cellsnum_perthick_perlayer_300_FH_zplus,
2161  _cellsnum_perthick_perlayer_300_BH_zplus,
2162  _cellsnum_perthick_perlayer_scint_EE_zplus,
2163  _cellsnum_perthick_perlayer_scint_FH_zplus,
2164  _cellsnum_perthick_perlayer_scint_BH_zplus,
2165  # Cell Association per Layer
2166  _cell_association_table_zplus
2167 ]
2168 
2169 lc_cp_association_zplus = [
2170  # Efficiency Plots
2171  _efficiencies_zplus,
2172  _efficiencies_zplus_eta,
2173  _efficiencies_zplus_phi,
2174  # Duplicate Plots
2175  _duplicates_zplus,
2176  _duplicates_zplus_eta,
2177  _duplicates_zplus_phi,
2178  # Fake Rate Plots
2179  _fakes_zplus,
2180  _fakes_zplus_eta,
2181  _fakes_zplus_phi,
2182  # Merge Rate Plots
2183  _merges_zplus,
2184  _merges_zplus_eta,
2185  _merges_zplus_phi,
2186  # Score of CaloParticles wrt Layer Clusters
2187  _score_caloparticle_to_layerclusters_zplus,
2188  # Score of LayerClusters wrt CaloParticles
2189  _score_layercluster_to_caloparticles_zplus,
2190  # Shared Energy between CaloParticle and LayerClusters
2191  _sharedEnergy_caloparticle_to_layercluster_zplus,
2192  # Shared Energy between LayerClusters and CaloParticle
2193  _sharedEnergy_layercluster_to_caloparticle_zplus,
2194  _energyscore_cp2lc_zplus,
2195  _energyscore_lc2cp_zplus
2196 ]
2197 
2198 lc_zplus_extended = [
2199  # distance of cells from a) seed cell, b) max cell; and c), d): same with entries weighted by cell energy
2200  _distancetomaxcell_perthickperlayer_120_EE_zplus,
2201  _distancetomaxcell_perthickperlayer_120_FH_zplus,
2202  _distancetomaxcell_perthickperlayer_120_BH_zplus,
2203  _distancetomaxcell_perthickperlayer_200_EE_zplus,
2204  _distancetomaxcell_perthickperlayer_200_FH_zplus,
2205  _distancetomaxcell_perthickperlayer_200_BH_zplus,
2206  _distancetomaxcell_perthickperlayer_300_EE_zplus,
2207  _distancetomaxcell_perthickperlayer_300_FH_zplus,
2208  _distancetomaxcell_perthickperlayer_300_BH_zplus,
2209  _distancetomaxcell_perthickperlayer_scint_EE_zplus,
2210  _distancetomaxcell_perthickperlayer_scint_FH_zplus,
2211  _distancetomaxcell_perthickperlayer_scint_BH_zplus,
2212  _distancetoseedcell_perthickperlayer_120_EE_zplus,
2213  _distancetoseedcell_perthickperlayer_120_FH_zplus,
2214  _distancetoseedcell_perthickperlayer_120_BH_zplus,
2215  _distancetoseedcell_perthickperlayer_200_EE_zplus,
2216  _distancetoseedcell_perthickperlayer_200_FH_zplus,
2217  _distancetoseedcell_perthickperlayer_200_BH_zplus,
2218  _distancetoseedcell_perthickperlayer_300_EE_zplus,
2219  _distancetoseedcell_perthickperlayer_300_FH_zplus,
2220  _distancetoseedcell_perthickperlayer_300_BH_zplus,
2221  _distancetoseedcell_perthickperlayer_scint_EE_zplus,
2222  _distancetoseedcell_perthickperlayer_scint_FH_zplus,
2223  _distancetoseedcell_perthickperlayer_scint_BH_zplus,
2224  _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zplus,
2225  _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zplus,
2226  _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zplus,
2227  _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zplus,
2228  _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zplus,
2229  _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zplus,
2230  _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zplus,
2231  _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zplus,
2232  _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zplus,
2233  _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zplus,
2234  _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zplus,
2235  _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zplus,
2236  _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zplus,
2237  _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zplus,
2238  _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zplus,
2239  _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zplus,
2240  _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zplus,
2241  _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zplus,
2242  _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zplus,
2243  _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zplus,
2244  _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zplus,
2245  _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zplus,
2246  _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zplus,
2247  _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zplus,
2248  _distancebetseedandmaxcell_perthickperlayer_120_EE_zplus,
2249  _distancebetseedandmaxcell_perthickperlayer_120_FH_zplus,
2250  _distancebetseedandmaxcell_perthickperlayer_120_BH_zplus,
2251  _distancebetseedandmaxcell_perthickperlayer_200_EE_zplus,
2252  _distancebetseedandmaxcell_perthickperlayer_200_FH_zplus,
2253  _distancebetseedandmaxcell_perthickperlayer_200_BH_zplus,
2254  _distancebetseedandmaxcell_perthickperlayer_300_EE_zplus,
2255  _distancebetseedandmaxcell_perthickperlayer_300_FH_zplus,
2256  _distancebetseedandmaxcell_perthickperlayer_300_BH_zplus,
2257  _distancebetseedandmaxcell_perthickperlayer_scint_EE_zplus,
2258  _distancebetseedandmaxcell_perthickperlayer_scint_FH_zplus,
2259  _distancebetseedandmaxcell_perthickperlayer_scint_BH_zplus,
2260  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zplus,
2261  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zplus,
2262  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zplus,
2263  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zplus,
2264  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zplus,
2265  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zplus,
2266  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zplus,
2267  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zplus,
2268  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zplus,
2269  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zplus,
2270  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zplus,
2271  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zplus
2272 ]
2273 
2274 def append_hgcalLayerClustersPlots(collection = hgcalValidator.label_layerClusterPlots._InputTag__moduleLabel, name_collection = layerClustersLabel, extended = False):
2275  print('extended : ',extended)
2276  regions_ClusterLevel = ["General: Cluster Level", "Z-minus: Cluster Level", "Z-plus: Cluster Level"]
2277  regions_CellLevel = ["Z-minus: Cell Level", "Z-plus: Cell Level"]
2278  regions_LCtoCP_association = ["Z-minus: LC_CP association", "Z-plus: LC_CP association"]
2279 
2280  plots_lc_general_clusterlevel = lc_general_clusterlevel
2281  plots_lc_clusterlevel_zminus = lc_clusterlevel_zminus
2282  plots_lc_cellevel_zminus = lc_cellevel_zminus
2283  plots_lc_clusterlevel_zplus = lc_clusterlevel_zplus
2284  plots_lc_cellevel_zplus = lc_cellevel_zplus
2285  plots_lc_cp_association_zminus = lc_cp_association_zminus
2286  plots_lc_cp_association_zplus = lc_cp_association_zplus
2287 
2288  if extended :
2289  #plots_lc_clusterlevel_zminus = lc_clusterlevel_zminus
2290  #plots_lc_clusterlevel_zplus = lc_clusterlevel_zplus
2291  plots_lc_cellevel_zminus = lc_cellevel_zminus + lc_zminus_extended
2292  plots_lc_cellevel_zplus = lc_cellevel_zplus + lc_zplus_extended
2293  #plots_lc_cp_association_zminus = lc_cp_association_zminus
2294  #plots_lc_cp_association_zplus = lc_cp_association_zplus
2295 
2296  setPlots_ClusterLevel = [plots_lc_general_clusterlevel, plots_lc_clusterlevel_zminus, plots_lc_clusterlevel_zplus]
2297  setPlots_CellLevel = [plots_lc_cellevel_zminus, plots_lc_cellevel_zplus]
2298  setPlots_LCtoCP_association = [plots_lc_cp_association_zminus, plots_lc_cp_association_zplus]
2299  for reg, setPlot in zip(regions_ClusterLevel, setPlots_ClusterLevel):
2300  hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2301  _hgcalFolders(collection + "/ClusterLevel")
2302  ], PlotFolder(
2303  *setPlot,
2304  loopSubFolders=False,
2305  purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2306  for reg, setPlot in zip(regions_CellLevel, setPlots_CellLevel):
2307  hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2308  _hgcalFolders(collection + "/CellLevel")
2309  ], PlotFolder(
2310  *setPlot,
2311  loopSubFolders=False,
2312  purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2313  for reg, setPlot in zip(regions_LCtoCP_association, setPlots_LCtoCP_association):
2314  hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2315  _hgcalFolders(collection + "/" + lcToCP_linking)
2316  ], PlotFolder(
2317  *setPlot,
2318  loopSubFolders=False,
2319  purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2320 
2321 #=================================================================================================
2322 def _hgcalsimClustersFolders(lastDirName):
2323  return "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/" + hgcalValidator.label_SimClusters._InputTag__moduleLabel + "/"+lastDirName
2324 
2325 sc_clusterlevel = [
2326  # number of layer clusters per event in a) 120um, b) 200um, c) 300um, d) scint
2327  # (one entry per event in each of the four histos) ([B] above)
2328  _totsimclusternum_thick,
2329  # number of simclusters per layer (one entry per event in each histo) ([C] above)
2330  # z-
2331  _totsimclusternum_layer_EE_zminus,
2332  _totsimclusternum_layer_FH_zminus,
2333  _totsimclusternum_layer_BH_zminus,
2334  # z+
2335  _totsimclusternum_layer_EE_zplus,
2336  _totsimclusternum_layer_FH_zplus,
2337  _totsimclusternum_layer_BH_zplus,
2338  # Miscellaneous plots ([G] above):
2339  # mixedhitscluster: Number of clusters per event with hits in different thicknesses.
2340  _mixedhitssimclusters,
2341 ]
2342 
2343 sc_ticltracksters = [
2344  # Score of SimClusters wrt Layer Clusters
2345  # z-
2346  _score_simcluster_to_layerclusters_zminus,
2347  # z+
2348  _score_simcluster_to_layerclusters_zplus,
2349  # Score of LayerClusters wrt SimClusters
2350  # z-
2351  _score_layercluster_to_simclusters_zminus,
2352  # z+
2353  _score_layercluster_to_simclusters_zplus,
2354  # Shared Energy between SimCluster and LayerClusters
2355  # z-
2356  _sharedEnergy_simcluster_to_layercluster_zminus,
2357  # z+
2358  _sharedEnergy_simcluster_to_layercluster_zplus,
2359  # Shared Energy between LayerClusters and SimCluster
2360  # z-
2361  _sharedEnergy_layercluster_to_simcluster_zminus,
2362  # z+
2363  _sharedEnergy_layercluster_to_simcluster_zplus,
2364  # Efficiency Plots
2365  # z-
2366  _efficiencies_sc_zminus,
2367  _duplicates_sc_zminus,
2368  _fakes_sc_zminus,
2369  _merges_sc_zminus,
2370  _efficiencies_sc_zminus_eta,
2371  _efficiencies_sc_zminus_phi,
2372  # z+
2373  _efficiencies_sc_zplus,
2374  _duplicates_sc_zplus,
2375  _fakes_sc_zplus,
2376  _merges_sc_zplus,
2377  _efficiencies_sc_zplus_eta,
2378  _efficiencies_sc_zplus_phi,
2379  # Duplicate Plots
2380  # z-
2381  _duplicates_sc_zminus_eta,
2382  _duplicates_sc_zminus_phi,
2383  # z+
2384  _duplicates_sc_zplus_eta,
2385  _duplicates_sc_zplus_phi,
2386  # Fake Rate Plots
2387  # z-
2388  _fakes_sc_zminus_eta,
2389  _fakes_sc_zminus_phi,
2390  # z+
2391  _fakes_sc_zplus_eta,
2392  _fakes_sc_zplus_phi,
2393  # Merge Rate Plots
2394  # z-
2395  _merges_sc_zminus_eta,
2396  _merges_sc_zminus_phi,
2397  # z+
2398  _merges_sc_zplus_eta,
2399  _merges_sc_zplus_phi,
2400  # Energy vs Score 2D plots SC to LC
2401  # z-
2402  _energyscore_sc2lc_zminus,
2403  # z+
2404  _energyscore_sc2lc_zplus,
2405  # Energy vs Score 2D plots LC to SC
2406  # z-
2407  _energyscore_lc2sc_zminus,
2408  # z+
2409  _energyscore_lc2sc_zplus
2410 ]
2411 
2412 hgcalSimClustersPlotter = Plotter()
2413 
2414 def append_hgcalSimClustersPlots(collection, name_collection):
2415  if collection == hgcalValidator.label_SimClustersLevel._InputTag__moduleLabel:
2416  hgcalSimClustersPlotter.append(collection, [
2417  _hgcalsimClustersFolders(collection)
2418  ], PlotFolder(
2419  *sc_clusterlevel,
2420  loopSubFolders=False,
2421  purpose=PlotPurpose.Timing, page="SimClusters", section=name_collection))
2422  else:
2423  hgcalSimClustersPlotter.append(collection, [
2424  _hgcalsimClustersFolders(collection)
2425  ], PlotFolder(
2426  *sc_ticltracksters,
2427  loopSubFolders=False,
2428  purpose=PlotPurpose.Timing, page="SimClusters", section=name_collection))
2429 
2430 
2431 #=================================================================================================
2432 def _hgcalFolders(lastDirName="hgcalLayerClusters"):
2433  return "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/"+lastDirName
2434 
2435 _trackstersPlots = [
2436  _trackster_eppe,
2437  _trackster_xyz,
2438  _tottracksternum,
2439  _clusternum_in_trackster,
2440  _clusternum_in_trackster_vs_layer,
2441  _clusternum_in_trackster_perlayer_zminus_EE,
2442  _clusternum_in_trackster_perlayer_zminus_FH,
2443  _clusternum_in_trackster_perlayer_zminus_BH,
2444  _clusternum_in_trackster_perlayer_zplus_EE,
2445  _clusternum_in_trackster_perlayer_zplus_FH,
2446  _clusternum_in_trackster_perlayer_zplus_BH,
2447  _trackster_layernum,
2448  _multiplicityOfLCinTST,
2449 ]
2450 
2451 _trackstersToCPLinkPlots = [
2452  _efficiencies,
2453  _purities,
2454  _duplicates,
2455  _fakes,
2456  _merges,
2457  _score_caloparticle_to_tracksters,
2458  _score_trackster_to_caloparticles,
2459  _sharedEnergy_caloparticle_to_trackster,
2460  _sharedEnergy_trackster_to_caloparticle,
2461  _energyscore_cp2ts,
2462  _energyscore_ts2cp,
2463 ]
2464 
2465 hgcalTrackstersPlotter = Plotter()
2466 def append_hgcalTrackstersPlots(collection = 'ticlTrackstersMerge', name_collection = "TrackstersMerge"):
2467  # Appending generic plots for Tracksters
2468  hgcalTrackstersPlotter.append(collection, [
2469  _hgcalFolders(collection)
2470  ], PlotFolder(
2471  *_trackstersPlots,
2472  loopSubFolders=False,
2473  purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection))
2474 
2475  # Appending plots for Tracksters to CP linking
2476  hgcalTrackstersPlotter.append(collection, [
2477  _hgcalFolders(collection + "/" + tsToCP_linking)
2478  ], PlotFolder(
2479  *_trackstersToCPLinkPlots,
2480  loopSubFolders=False,
2481  purpose=PlotPurpose.Timing, page=tsToCP_linking.replace('TSToCP_','TICL-'), section=name_collection))
2482 
2483  #We append here two PlotFolder because we want the text to be in percent
2484  #and the number of events are different in zplus and zminus
2485  #hgcalTrackstersPlotter.append("Multiplicity", [
2486  # dqmfolder
2487  # ], PlotFolder(
2488  # _multiplicityOfLCinTST_vs_layercluster_zminus,
2489  # loopSubFolders=False,
2490  # purpose=PlotPurpose.Timing, page=collection,
2491  # numberOfEventsHistogram=_multiplicity_zminus_numberOfEventsHistogram
2492  # ))
2493  #
2494  #hgcalTrackstersPlotter.append("Multiplicity", [
2495  # dqmfolder
2496  # ], PlotFolder(
2497  # _multiplicityOfLCinTST_vs_layercluster_zplus,
2498  # loopSubFolders=False,
2499  # purpose=PlotPurpose.Timing, page=collection,
2500  # numberOfEventsHistogram=_multiplicity_zplus_numberOfEventsHistogram
2501  # ))
2502 
2503 #=================================================================================================
2504 _common_Calo = {"stat": False, "drawStyle": "hist", "staty": 0.65, "ymin": 0.0, "ylog": False}
2505 
2506 hgcalCaloParticlesPlotter = Plotter()
2507 def append_hgcalCaloParticlesPlots(files, collection = '-211', name_collection = "pion-"):
2508 
2509  list_2D_histos = ["Energy of Rec-matched Hits vs layer",
2510  "Energy of Rec-matched Hits vs layer (1SC)",
2511  "Rec-matched Hits Sum Energy vs layer"]
2512 
2513  dqmfolder = "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/SelectedCaloParticles/" + collection
2514  templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2515  if not gDirectory.GetDirectory(dqmfolder):
2516  print("Error: GeneralInfo directory %s not found in DQM file, exit"%dqmfolder)
2517  return hgcalTrackstersPlotter
2518 
2519  keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2520  key = keys[0]
2521  while key:
2522  obj = key.ReadObj()
2523  name = obj.GetName()
2524  fileName = TString(name)
2525  fileName.ReplaceAll(" ","_")
2526  pg = PlotGroup(fileName.Data(),[
2527  Plot(name,
2528  xtitle=obj.GetXaxis().GetTitle(), ytitle=obj.GetYaxis().GetTitle(),
2529  drawCommand = "",
2530  normalizeToNumberOfEvents = True, **_common_Calo)
2531  ],
2532  ncols=1)
2533 
2534  if name in list_2D_histos :
2535  pg = PlotOnSideGroup(plotName.Data(),
2536  Plot(name,
2537  xtitle=obj.GetXaxis().GetTitle(), ytitle=obj.GetYaxis().GetTitle(),
2538  drawCommand = "COLZ",
2539  normalizeToNumberOfEvents = True, **_common_Calo)
2540  ,
2541  ncols=1)
2542 
2543  hgcalCaloParticlesPlotter.append("CaloParticles_"+name_collection, [
2544  dqmfolder
2545  ], PlotFolder(
2546  pg,
2547  loopSubFolders=False,
2548  purpose=PlotPurpose.Timing, page="CaloParticles", section=name_collection)
2549  )
2550 
2551  key = keys.After(key)
2552 
2553  templateFile.Close()
2554 
2555  return hgcalCaloParticlesPlotter
2556 
2557 #=================================================================================================
2558 def create_hgcalTrackstersPlotter(files, collection = 'ticlTrackstersMerge', name_collection = "TrackstersMerge"):
2559  grouped = {"cosAngle Beta": PlotGroup("cosAngle_Beta_per_layer",[],ncols=10), "cosAngle Beta Weighted": PlotGroup("cosAngle_Beta_Weighted_per_layer",[],ncols=10)}
2560  groupingFlag = " on Layer "
2561 
2562  hgcalTrackstersPlotter = Plotter()
2563  dqmfolder = "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/" + collection
2564  #_multiplicity_tracksters_numberOfEventsHistogram = dqmfolder+"/Number of Trackster per Event"
2565 
2566  _common["ymin"] = 0.0
2567  _common["staty"] = 0.85
2568  templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2569  if not gDirectory.GetDirectory(dqmfolder):
2570  print("Error: GeneralInfo directory %s not found in DQM file, exit"%dqmfolder)
2571  return hgcalTrackstersPlotter
2572 
2573  keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2574  key = keys[0]
2575  while key:
2576  obj = key.ReadObj()
2577  name = obj.GetName()
2578  plotName = TString(name)
2579  plotName.ReplaceAll(" ","_")
2580 
2581  if groupingFlag in name:
2582  for group in grouped:
2583  if group+groupingFlag in name:
2584  grouped[group].append(Plot(name,
2585  xtitle=obj.GetXaxis().GetTitle(), ytitle=obj.GetYaxis().GetTitle(),
2586  **_common)
2587  )
2588  else:
2589  pg = None
2590  if obj.InheritsFrom("TH2"):
2591  pg = PlotOnSideGroup(plotName.Data(),
2592  Plot(name,
2593  xtitle=obj.GetXaxis().GetTitle(), ytitle=obj.GetYaxis().GetTitle(),
2594  drawCommand = "COLZ",
2595  **_common),
2596  ncols=1)
2597  elif obj.InheritsFrom("TH1"):
2598  pg = PlotGroup(plotName.Data(),
2599  [Plot(name,
2600  xtitle=obj.GetXaxis().GetTitle(), ytitle=obj.GetYaxis().GetTitle(),
2601  drawCommand = "COLZ", # ineffective for TH1
2602  **_common)
2603  ],
2604  ncols=1, legendDh=-0.03 * len(files))
2605 
2606  if (pg is not None):
2607  hgcalTrackstersPlotter.append(name_collection+"_TICLDebugger",
2608  [dqmfolder], PlotFolder(pg,
2609  loopSubFolders=False,
2610  purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection)
2611  #numberOfEventsHistogram=_multiplicity_tracksters_numberOfEventsHistogram)
2612  )
2613 
2614  key = keys.After(key)
2615 
2616  for group in grouped:
2617  hgcalTrackstersPlotter.append(name_collection+"_TICLDebugger",
2618  [dqmfolder], PlotFolder(grouped[group],
2619  loopSubFolders=False,
2620  purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection)
2621  #numberOfEventsHistogram=_multiplicity_tracksters_numberOfEventsHistogram)
2622  )
2623 
2624  templateFile.Close()
2625 
2626  return hgcalTrackstersPlotter
2627 
2628 #=================================================================================================
2629 _common_Calo = {"stat": False, "drawStyle": "hist", "staty": 0.65, "ymin": 0.0, "ylog": False}
2630 
2631 hgcalCaloParticlesPlotter = Plotter()
2632 
2633 def append_hgcalCaloParticlesPlots(files, collection = '-211', name_collection = "pion-"):
2634  dqmfolder = "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/SelectedCaloParticles/" + collection
2635  print(dqmfolder)
2636 # _common["ymin"] = 0.0
2637  templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2638  keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2639  key = keys[0]
2640  while key:
2641  obj = key.ReadObj()
2642  name = obj.GetName()
2643  plotName = TString(name)
2644  plotName.ReplaceAll(" ","_")
2645 
2646  pg = None
2647  if obj.InheritsFrom("TH2"):
2648  pg = PlotOnSideGroup(plotName.Data(),
2649  Plot(name,
2650  xtitle=obj.GetXaxis().GetTitle(), ytitle=obj.GetYaxis().GetTitle(),
2651  drawCommand = "COLZ",
2652  normalizeToNumberOfEvents = True, **_common_Calo),
2653  ncols=1)
2654  elif obj.InheritsFrom("TH1"):
2655  pg = PlotGroup(plotName.Data(),[
2656  Plot(name,
2657  xtitle=obj.GetXaxis().GetTitle(), ytitle=obj.GetYaxis().GetTitle(),
2658  drawCommand = "", # may want to customize for TH2 (colz, etc.)
2659  normalizeToNumberOfEvents = True, **_common_Calo)
2660  ],
2661  ncols=1)
2662 
2663  if (pg is not None):
2664  hgcalCaloParticlesPlotter.append("CaloParticles_"+name_collection, [
2665  dqmfolder
2666  ], PlotFolder(
2667  pg,
2668  loopSubFolders=False,
2669  purpose=PlotPurpose.Timing, page="CaloParticles", section=name_collection)
2670  )
2671 
2672  key = keys.After(key)
2673 
2674  templateFile.Close()
2675 
2676  return hgcalCaloParticlesPlotter
2677 
2678 #=================================================================================================
2679 # hitValidation
2680 def _hgcalHitFolders(dirName="HGCalSimHitsV/HGCalEESensitive"):
2681  return "DQMData/Run 1/HGCAL/Run summary/"+dirName
2682 
2683 hgcalHitPlotter = Plotter()
2684 hitsLabel = 'Hits'
2685 simHitsLabel = 'Simulated Hits'
2686 
2687 hgcalHitPlotter.append("SimHits_Validation", [
2688  "DQMData/Run 1/HGCAL/Run summary/HGCalSimHitsV/HitValidation",
2689  ], PlotFolder(
2690  _HitValidation,
2691  loopSubFolders=False,
2692  purpose=PlotPurpose.Timing, page=hitsLabel, section=simHitsLabel
2693  ))
2694 
2695 def append_hgcalHitsPlots(collection = "HGCalSimHitsV", name_collection = "Simulated Hits"):
2696  _hitsCommonPlots_EE = [
2697  _Occupancy_EE_zplus,
2698  _Occupancy_EE_zminus,
2699  _EtaPhi_EE_zminus,
2700  _EtaPhi_EE_zplus
2701  ]
2702  _hitsCommonPlots_HE_Sil = [
2703  _Occupancy_HE_Silicon_zplus,
2704  _Occupancy_HE_Silicon_zminus,
2705  _EtaPhi_HE_Silicon_zminus,
2706  _EtaPhi_HE_Silicon_zplus
2707  ]
2708  _hitsCommonPlots_HE_Sci = [
2709  _Occupancy_HE_Scintillator_zplus,
2710  _Occupancy_HE_Scintillator_zminus,
2711  _EtaPhi_HE_Scintillator_zminus,
2712  _EtaPhi_HE_Scintillator_zplus
2713  ]
2714 
2715  regions = ["HGCalEESensitive", "HGCalHESiliconSensitive", "HGCalHEScintillatorSensitive"]
2716  setPlots = [_hitsCommonPlots_EE, _hitsCommonPlots_HE_Sil, _hitsCommonPlots_HE_Sci]
2717  if "SimHits" in collection :
2718  _hitsCommonPlots_EE.append(_Energy_EE_0)
2719  _hitsCommonPlots_EE.append(_Energy_EE_1)
2720  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Silicon_0)
2721  _hitsCommonPlots_HE_Sil.append( _Energy_HE_Silicon_1)
2722  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator_0)
2723  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator_1)
2724  if "RecHits" in collection :
2725  _hitsCommonPlots_EE.append(_Energy_EE)
2726  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Silicon)
2727  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator)
2728 
2729  for reg, setPlot in zip(regions, setPlots):
2730  dirName = collection+"/"+reg
2731  print(dirName)
2732  hgcalHitPlotter.append(collection, [
2733  _hgcalHitFolders(dirName)
2734  ], PlotFolder(
2735  *setPlot,
2736  loopSubFolders=False,
2737  purpose=PlotPurpose.Timing, page=hitsLabel, section=name_collection))
2738 
2739 _digisCommonPlots_EE = [
2740  _DigiHits_Occupancy_EE_zplus,
2741  _DigiHits_Occupancy_EE_zminus,
2742  _DigiHits_Occupancy_XY_EE,
2743  _DigiHits_ADC_EE,
2744  _DigiHits_TOA_EE,
2745  _DigiHits_TOT_EE,
2746 ]
2747 _digisCommonPlots_HE_Sil = [
2748  _DigiHits_Occupancy_HE_Silicon_zplus,
2749  _DigiHits_Occupancy_HE_Silicon_zminus,
2750  _DigiHits_Occupancy_XY_HE_Silicon,
2751  _DigiHits_ADC_HE_Silicon,
2752  _DigiHits_TOA_HE_Silicon,
2753  _DigiHits_TOT_HE_Silicon,
2754 ]
2755 _digisCommonPlots_HE_Sci = [
2756  _DigiHits_Occupancy_HE_Scintillator_zplus,
2757  _DigiHits_Occupancy_HE_Scintillator_zminus,
2758  _DigiHits_Occupancy_XY_HE_Scintillator,
2759  _DigiHits_ADC_HE_Scintillator,
2760  _DigiHits_TOA_HE_Scintillator,
2761  _DigiHits_TOT_HE_Scintillator,
2762 ]
2763 
2764 def append_hgcalDigisPlots(collection = "HGCalDigisV", name_collection = "Digis"):
2765  regions = ["HGCalEESensitive", "HGCalHESiliconSensitive", "HGCalHEScintillatorSensitive"]
2766  setPlots = [_digisCommonPlots_EE, _digisCommonPlots_HE_Sil, _digisCommonPlots_HE_Sci]
2767  for reg, setPlot in zip(regions, setPlots):
2768  dirName = collection+"/"+reg
2769  print(dirName)
2770  hgcalHitPlotter.append(name_collection, [
2771  _hgcalHitFolders(dirName)
2772  ], PlotFolder(
2773  *setPlot,
2774  loopSubFolders=False,
2775  purpose=PlotPurpose.Timing, page=hitsLabel, section=name_collection))
2776 
2777 #=================================================================================================
2778 # hitCalibration
2779 hgcalHitCalibPlotter = Plotter()
2780 hitCalibrationLabel = 'Calibrated RecHits'
2781 
2782 hgcalHitCalibPlotter.append("Layer_Occupancy", [
2783  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2784  ], PlotFolder(
2785  _LayerOccupancy,
2786  loopSubFolders=False,
2787  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2788  ))
2789 hgcalHitCalibPlotter.append("ReconstructableEnergyOverCPenergy", [
2790  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2791  ], PlotFolder(
2792  _ReconstructableEnergyOverCPenergy,
2793  loopSubFolders=False,
2794  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2795  ))
2796 
2797 hgcalHitCalibPlotter.append("ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy", [
2798  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2799  ], PlotFolder(
2800  _ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy,
2801  loopSubFolders=False,
2802  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2803  ))
2804 
2805 hgcalHitCalibPlotter.append("PhotonsFromTrackster_Closest_EoverCPenergy", [
2806  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2807  ], PlotFolder(
2808  _PhotonsFromTrackster_Closest_EoverCPenergy,
2809  loopSubFolders=False,
2810  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2811  ))
2812 
2813 hgcalHitCalibPlotter.append("EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy", [
2814  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2815  ], PlotFolder(
2816  _EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy,
2817  loopSubFolders=False,
2818  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2819  ))
def append_hgcalSimClustersPlots
Definition: hgcalPlots.py:2414
boost::dynamic_bitset append(const boost::dynamic_bitset<> &bs1, const boost::dynamic_bitset<> &bs2)
this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1 ...
def append_hgcalDigisPlots
Definition: hgcalPlots.py:2764
const uint16_t range(const Frame &aFrame)
def append_hgcalCaloParticlesPlots
Definition: hgcalPlots.py:2507
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def append_hgcalTrackstersPlots
Definition: hgcalPlots.py:2466
def _hgcalFolders
Definition: hgcalPlots.py:2432
def create_hgcalTrackstersPlotter
Definition: hgcalPlots.py:2558
def append_hgcalHitsPlots
Definition: hgcalPlots.py:2695
def _hgcalsimClustersFolders
Definition: hgcalPlots.py:2322
def append_hgcalLayerClustersPlots
Definition: hgcalPlots.py:2274
def _hgcalHitFolders
Definition: hgcalPlots.py:2680