CMS 3D CMS Logo

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