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 # SIMHITS, DIGIS, RECHITS
1767 #--------------------------------------------------------------------------------------------
1768 
1769 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1770 
1771 _HitValidation = PlotGroup("HitValidation", [
1772  Plot("heeEnSim", title="SimHits_EE_Energy", **_common),
1773  Plot("hebEnSim", title="SimHits_HE_Silicon_Energy", **_common),
1774  Plot("hefEnSim", title="SimHits_HE_Scintillator_Energy", **_common),
1775  ])
1776 
1777 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1778 
1779 _Occupancy_EE_zplus = PlotGroup("Occupancy_EE_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_EE_zplus",
1780  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1781  ], ncols=7)
1782 
1783 _Occupancy_HE_Silicon_zplus = PlotGroup("Occupancy_HE_Silicon_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_HE_zplus",
1784  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1785  ], ncols=7)
1786 
1787 _Occupancy_HE_Scintillator_zplus = PlotGroup("Occupancy_HE_Scintillator_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_HE_Scintillator_zplus",
1788  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1789  ], ncols=7)
1790 
1791 _Occupancy_EE_zminus = PlotGroup("Occupancy_EE_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_EE_zminus",
1792  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1793  ], ncols=7)
1794 
1795 _Occupancy_HE_Silicon_zminus = PlotGroup("Occupancy_HE_Silicon_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_HE_Silicon_zminus",
1796  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1797  ], ncols=7)
1798 
1799 _Occupancy_HE_Scintillator_zminus = PlotGroup("Occupancy_HE_Scintillator_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_HE_Scintillator_zminus",
1800  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1801  ], ncols=7)
1802 
1803 _common_etaphi = dict(removeEmptyBins=False, xbinlabelsize=10, xbinlabeloption="d", ymin=None)
1804 
1805 _EtaPhi_EE_zplus = PlotGroup("EtaPhi_EE_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_EE_zplus",
1806  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(EE_min,EE_max+1)
1807  ], ncols=7)
1808 
1809 _EtaPhi_HE_Silicon_zplus = PlotGroup("EtaPhi_HE_Silicon_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_HE_Silicon_zplus",
1810  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HESilicon_min,HESilicon_max+1)
1811  ], ncols=7)
1812 
1813 _EtaPhi_HE_Scintillator_zplus = PlotGroup("EtaPhi_HE_Scintillator_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_HE_Scintillator_zplus",
1814  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HEScintillator_min,HEScintillator_max+1)
1815  ], ncols=7)
1816 
1817 _EtaPhi_EE_zminus = PlotGroup("EtaPhi_EE_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_EE_zminus",
1818  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(EE_min,EE_max+1)
1819  ], ncols=7)
1820 
1821 _EtaPhi_HE_Silicon_zminus = PlotGroup("EtaPhi_HE_Silicon_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_HE_Silicon_zminus",
1822  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HESilicon_min,HESilicon_max+1)
1823  ], ncols=7)
1824 
1825 _EtaPhi_HE_Scintillator_zminus = PlotGroup("EtaPhi_HE_Scintillator_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_HE_Scintillator_zminus",
1826  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HEScintillator_min,HEScintillator_max+1)
1827  ], ncols=7)
1828 
1829 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1830 
1831 _Energy_EE_0 = PlotGroup("Energy_Time_0_EE", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_EE",
1832  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1833  ], ncols=7)
1834 
1835 _Energy_HE_Silicon_0 = PlotGroup("Energy_Time_0_HE_Silicon", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_HE_Silicon",
1836  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1837  ], ncols=7)
1838 
1839 _Energy_HE_Scintillator_0 = PlotGroup("Energy_Time_0_HE_Scintillator", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_HE_Scintillator",
1840  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1841  ], ncols=7)
1842 
1843 _Energy_EE_1 = PlotGroup("Energy_Time_1_EE", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_EE",
1844  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1845  ], ncols=7)
1846 
1847 _Energy_HE_Silicon_1 = PlotGroup("Energy_Time_1_HE_Silicon", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_HE_Silicon",
1848  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1849  ], ncols=7)
1850 
1851 _Energy_HE_Scintillator_1 = PlotGroup("Energy_Time_1_HE_Scintillator", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_HE_Scintillator",
1852  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1853  ], ncols=7)
1854 
1855 _Energy_EE = PlotGroup("Energy_EE", [Plot("energy_layer_{:02d}".format(i), title="Energy_EE",
1856  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1857  ], ncols=7)
1858 
1859 _Energy_HE_Silicon = PlotGroup("Energy_HE_Silicon", [Plot("energy_layer_{:02d}".format(i), title="Energy_HE_Silicon",
1860  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1861  ], ncols=7)
1862 
1863 _Energy_HE_Scintillator = PlotGroup("Energy_HE_Scintillator", [Plot("energy_layer_{:02d}".format(i), title="Energy_HE_Scintillator",
1864  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1865  ], ncols=7)
1866 
1867 _DigiHits_ADC_EE = PlotGroup("ADC_EE", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_EE",
1868  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1869  ], ncols=7)
1870 
1871 _DigiHits_ADC_HE_Silicon = PlotGroup("ADC_HE_Silicon", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_HE_Silicon",
1872  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1873  ], ncols=7)
1874 
1875 _DigiHits_ADC_HE_Scintillator = PlotGroup("ADC_HE_Scintillator", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_HE_Scintillator",
1876  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1877  ], ncols=7)
1878 
1879 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1880 
1881 _DigiHits_Occupancy_EE_zplus = PlotGroup("Occupancy_EE_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_EE_zplus",
1882  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1883  ], ncols=7)
1884 
1885 _DigiHits_Occupancy_HE_Silicon_zplus = PlotGroup("Occupancy_HE_Silicon_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Silicon_zplus",
1886  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1887  ], ncols=7)
1888 
1889 _DigiHits_Occupancy_HE_Scintillator_zplus = PlotGroup("Occupancy_HE_Scintillator_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Scintillator_zplus",
1890  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1891  ], ncols=7)
1892 
1893 _DigiHits_Occupancy_EE_zminus = PlotGroup("Occupancy_EE_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_EE_zminus",
1894  xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1895  ], ncols=7)
1896 
1897 _DigiHits_Occupancy_HE_Silicon_zminus = PlotGroup("Occupancy_HE_Silicon_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Silicon_zminus",
1898  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1899  ], ncols=7)
1900 
1901 _DigiHits_Occupancy_HE_Scintillator_zminus = PlotGroup("Occupancy_HE_Scintillator_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Scintillator_zminus",
1902  xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1903  ], ncols=7)
1904 
1905 _common_XY = dict(removeEmptyBins=True, xbinlabelsize=10, xbinlabeloption="d", ymin=None)
1906 
1907 _DigiHits_Occupancy_XY_EE = PlotGroup("Occupancy_XY_EE", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_EE",
1908  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(EE_min,EE_max+1)
1909  ], ncols=7)
1910 
1911 _DigiHits_Occupancy_XY_HE_Silicon = PlotGroup("Occupancy_XY_HE_Silicon", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_HE_Silicon",
1912  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(HESilicon_min,HESilicon_max+1)
1913  ], ncols=7)
1914 
1915 _DigiHits_Occupancy_XY_HE_Scintillator = PlotGroup("Occupancy_XY_HE_Scintillator", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_HE_Scintillator",
1916  xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(HEScintillator_min,HEScintillator_max+1)
1917  ], ncols=7)
1918 
1919 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1920 
1921 _DigiHits_TOA_EE = PlotGroup("TOA_EE", [
1922  Plot("TOA_layer_{:02d}".format(i), title="TOA_EE", xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1923  ], ncols=7)
1924 
1925 _DigiHits_TOA_HE_Silicon = PlotGroup("TOA_HE_Silicon", [
1926  Plot("TOA_layer_{:02d}".format(i), title="TOA_HE_Silicon", xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1927  ], ncols=7)
1928 
1929 _DigiHits_TOA_HE_Scintillator = PlotGroup("TOA_HE_Scintillator", [
1930  Plot("TOA_layer_{:02d}".format(i), title="TOA_HE_Scintillator", xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1931  ], ncols=7)
1932 
1933 _DigiHits_TOT_EE = PlotGroup("TOT_EE", [
1934  Plot("TOT_layer_{:02d}".format(i), title="TOT_EE", xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1935  ], ncols=7)
1936 
1937 _DigiHits_TOT_HE_Silicon = PlotGroup("TOT_HE_Silicon", [
1938  Plot("TOT_layer_{:02d}".format(i), title="TOT_HE_Silicon", xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1939  ], ncols=7)
1940 
1941 _DigiHits_TOT_HE_Scintillator = PlotGroup("TOT_HE_Scintillator", [
1942  Plot("TOT_layer_{:02d}".format(i), title="TOT_HE_Scintillator", xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1943  ], ncols=7)
1944 
1945 #===================================================================================================================
1946 #Plot definition for HitCalibration
1947 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": False}
1948 
1949 _LayerOccupancy = PlotGroup("LayerOccupancy", [
1950  Plot("LayerOccupancy", title="LayerOccupancy", **_common)], ncols=1)
1951 
1952 _ReconstructableEnergyOverCPenergy = PlotGroup("ReconstructableEnergyOverCPenergy", [
1953  Plot("h_EoP_CPene_100_calib_fraction", title="EoP_CPene_100_calib_fraction", **_common),
1954  Plot("h_EoP_CPene_200_calib_fraction", title="EoP_CPene_200_calib_fraction", **_common),
1955  Plot("h_EoP_CPene_300_calib_fraction", title="EoP_CPene_300_calib_fraction", **_common),
1956  Plot("h_EoP_CPene_scint_calib_fraction", title="EoP_CPene_scint_calib_fraction", **_common),
1957 ])
1958 
1959 _ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy = PlotGroup("ParticleFlowClusterHGCalFromTrackster", [
1960  Plot("hgcal_EoP_CPene_100_calib_fraction", title="hgcal_EoP_CPene_100_calib_fraction", **_common),
1961  Plot("hgcal_EoP_CPene_200_calib_fraction", title="hgcal_EoP_CPene_200_calib_fraction", **_common),
1962  Plot("hgcal_EoP_CPene_300_calib_fraction", title="hgcal_EoP_CPene_300_calib_fraction", **_common),
1963  Plot("hgcal_EoP_CPene_scint_calib_fraction", title="hgcal_EoP_CPene_scint_calib_fraction", **_common),
1964 ])
1965 
1966 _EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy = PlotGroup("EcalDrivenGsfElectronsFromTrackster", [
1967  Plot("hgcal_ele_EoP_CPene_100_calib_fraction", title="hgcal_ele_EoP_CPene_100_calib_fraction", **_common),
1968  Plot("hgcal_ele_EoP_CPene_200_calib_fraction", title="hgcal_ele_EoP_CPene_200_calib_fraction", **_common),
1969  Plot("hgcal_ele_EoP_CPene_300_calib_fraction", title="hgcal_ele_EoP_CPene_300_calib_fraction", **_common),
1970  Plot("hgcal_ele_EoP_CPene_scint_calib_fraction", title="hgcal_ele_EoP_CPene_scint_calib_fraction", **_common),
1971 ])
1972 
1973 _PhotonsFromTrackster_Closest_EoverCPenergy = PlotGroup("PhotonsFromTrackster", [
1974  Plot("hgcal_photon_EoP_CPene_100_calib_fraction", title="hgcal_photon_EoP_CPene_100_calib_fraction", **_common),
1975  Plot("hgcal_photon_EoP_CPene_200_calib_fraction", title="hgcal_photon_EoP_CPene_200_calib_fraction", **_common),
1976  Plot("hgcal_photon_EoP_CPene_300_calib_fraction", title="hgcal_photon_EoP_CPene_300_calib_fraction", **_common),
1977  Plot("hgcal_photon_EoP_CPene_scint_calib_fraction", title="hgcal_photon_EoP_CPene_scint_calib_fraction", **_common),
1978 ])
1979 
1980 #=================================================================================================
1981 hgcalLayerClustersPlotter = Plotter()
1982 layerClustersLabel = 'Layer Clusters'
1983 
1984 lc_general_clusterlevel = [
1985  # number of layer clusters per event in a) 120um, b) 200um, c) 300um, d) scint
1986  # (one entry per event in each of the four histos)
1987  _totclusternum_thick,
1988  # Miscellaneous plots:
1989  # longdepthbarycentre: The longitudinal depth barycentre. One entry per event.
1990  # mixedhitscluster: Number of clusters per event with hits in different thicknesses.
1991  # num_reco_cluster_eta: Number of reco clusters vs eta
1992  _num_reco_cluster_eta,
1993  _energyclustered,
1994  _mixedhitsclusters,
1995  _longdepthbarycentre,
1996  # calculated "energy density" for cells in a) 120um, b) 200um, c) 300um, d) scint
1997  # (one entry per rechit, in the appropriate histo)
1998  _cellsenedens_thick
1999 ]
2000 
2001 lc_clusterlevel_zminus = [
2002  # number of layer clusters per layer (one entry per event in each histo)
2003  _totclusternum_layer_EE_zminus,
2004  _totclusternum_layer_FH_zminus,
2005  _totclusternum_layer_BH_zminus,
2006  # Looking at the fraction of true energy that has been clustered; by layer and overall
2007  _energyclustered_perlayer_EE_zminus,
2008  _energyclustered_perlayer_FH_zminus,
2009  _energyclustered_perlayer_BH_zminus
2010 ]
2011 
2012 lc_cellevel_zminus = [
2013  # For each layer cluster:
2014  # number of cells in layer cluster, by layer - separate histos in each layer for 120um Si, 200/300um Si, Scint
2015  # NB: not all combinations exist; e.g. no 120um Si in layers with scint.
2016  # (One entry in the appropriate histo per layer cluster).
2017  _cellsnum_perthick_perlayer_120_EE_zminus,
2018  _cellsnum_perthick_perlayer_120_FH_zminus,
2019  _cellsnum_perthick_perlayer_120_BH_zminus,
2020  _cellsnum_perthick_perlayer_200_EE_zminus,
2021  _cellsnum_perthick_perlayer_200_FH_zminus,
2022  _cellsnum_perthick_perlayer_200_BH_zminus,
2023  _cellsnum_perthick_perlayer_300_EE_zminus,
2024  _cellsnum_perthick_perlayer_300_FH_zminus,
2025  _cellsnum_perthick_perlayer_300_BH_zminus,
2026  _cellsnum_perthick_perlayer_scint_EE_zminus,
2027  _cellsnum_perthick_perlayer_scint_FH_zminus,
2028  _cellsnum_perthick_perlayer_scint_BH_zminus,
2029  # Cell Association per Layer
2030  _cell_association_table_zminus
2031 ]
2032 
2033 lc_cp_association_zminus = [
2034  # Efficiency Plots
2035  _efficiencies_zminus,
2036  _efficiencies_zminus_eta,
2037  _efficiencies_zminus_phi,
2038  # Duplicate Plots
2039  _duplicates_zminus,
2040  _duplicates_zminus_eta,
2041  _duplicates_zminus_phi,
2042  # Fake Rate Plots
2043  _fakes_zminus,
2044  _fakes_zminus_eta,
2045  _fakes_zminus_phi,
2046  # Merge Rate Plots
2047  _merges_zminus,
2048  _merges_zminus_eta,
2049  _merges_zminus_phi,
2050  # Score of CaloParticles wrt Layer Clusters
2051  _score_caloparticle_to_layerclusters_zminus,
2052  # Score of LayerClusters wrt CaloParticles
2053  _score_layercluster_to_caloparticles_zminus,
2054  # Shared Energy between CaloParticle and LayerClusters
2055  _sharedEnergy_caloparticle_to_layercluster_zminus,
2056  # Shared Energy between LayerClusters and CaloParticle
2057  _sharedEnergy_layercluster_to_caloparticle_zminus,
2058  # Energy vs Score 2D plots CP to LC
2059  _energyscore_cp2lc_zminus,
2060  # Energy vs Score 2D plots LC to CP
2061  _energyscore_lc2cp_zminus
2062 ]
2063 
2064 lc_zminus_extended = [
2065  # For each layer cluster:
2066  # distance of cells from a) seed cell, b) max cell; and c), d): same with entries weighted by cell energy
2067  # separate histos in each layer for 120um Si, 200/300um Si, Scint
2068  # NB: not all combinations exist; e.g. no 120um Si in layers with scint.
2069  # (One entry in each of the four appropriate histos per cell in a layer cluster)
2070  _distancetomaxcell_perthickperlayer_120_EE_zminus,
2071  _distancetomaxcell_perthickperlayer_120_FH_zminus,
2072  _distancetomaxcell_perthickperlayer_120_BH_zminus,
2073  _distancetomaxcell_perthickperlayer_200_EE_zminus,
2074  _distancetomaxcell_perthickperlayer_200_FH_zminus,
2075  _distancetomaxcell_perthickperlayer_200_BH_zminus,
2076  _distancetomaxcell_perthickperlayer_300_EE_zminus,
2077  _distancetomaxcell_perthickperlayer_300_FH_zminus,
2078  _distancetomaxcell_perthickperlayer_300_BH_zminus,
2079  _distancetomaxcell_perthickperlayer_scint_EE_zminus,
2080  _distancetomaxcell_perthickperlayer_scint_FH_zminus,
2081  _distancetomaxcell_perthickperlayer_scint_BH_zminus,
2082  _distancetoseedcell_perthickperlayer_120_EE_zminus,
2083  _distancetoseedcell_perthickperlayer_120_FH_zminus,
2084  _distancetoseedcell_perthickperlayer_120_BH_zminus,
2085  _distancetoseedcell_perthickperlayer_200_EE_zminus,
2086  _distancetoseedcell_perthickperlayer_200_FH_zminus,
2087  _distancetoseedcell_perthickperlayer_200_BH_zminus,
2088  _distancetoseedcell_perthickperlayer_300_EE_zminus,
2089  _distancetoseedcell_perthickperlayer_300_FH_zminus,
2090  _distancetoseedcell_perthickperlayer_300_BH_zminus,
2091  _distancetoseedcell_perthickperlayer_scint_EE_zminus,
2092  _distancetoseedcell_perthickperlayer_scint_FH_zminus,
2093  _distancetoseedcell_perthickperlayer_scint_BH_zminus,
2094  _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zminus,
2095  _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zminus,
2096  _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zminus,
2097  _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zminus,
2098  _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zminus,
2099  _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zminus,
2100  _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zminus,
2101  _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zminus,
2102  _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zminus,
2103  _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zminus,
2104  _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zminus,
2105  _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zminus,
2106  _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zminus,
2107  _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zminus,
2108  _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zminus,
2109  _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zminus,
2110  _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zminus,
2111  _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zminus,
2112  _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zminus,
2113  _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zminus,
2114  _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zminus,
2115  _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zminus,
2116  _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zminus,
2117  _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zminus,
2118  _distancebetseedandmaxcell_perthickperlayer_120_EE_zminus,
2119  _distancebetseedandmaxcell_perthickperlayer_120_FH_zminus,
2120  _distancebetseedandmaxcell_perthickperlayer_120_BH_zminus,
2121  _distancebetseedandmaxcell_perthickperlayer_200_EE_zminus,
2122  _distancebetseedandmaxcell_perthickperlayer_200_FH_zminus,
2123  _distancebetseedandmaxcell_perthickperlayer_200_BH_zminus,
2124  _distancebetseedandmaxcell_perthickperlayer_300_EE_zminus,
2125  _distancebetseedandmaxcell_perthickperlayer_300_FH_zminus,
2126  _distancebetseedandmaxcell_perthickperlayer_300_BH_zminus,
2127  _distancebetseedandmaxcell_perthickperlayer_scint_EE_zminus,
2128  _distancebetseedandmaxcell_perthickperlayer_scint_FH_zminus,
2129  _distancebetseedandmaxcell_perthickperlayer_scint_BH_zminus,
2130  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zminus,
2131  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zminus,
2132  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zminus,
2133  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zminus,
2134  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zminus,
2135  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zminus,
2136  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zminus,
2137  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zminus,
2138  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zminus,
2139  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zminus,
2140  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zminus,
2141  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zminus
2142 ]
2143 
2144 lc_clusterlevel_zplus = [
2145  # number of layer clusters per layer (one entry per event in each histo)
2146  _totclusternum_layer_EE_zplus,
2147  _totclusternum_layer_FH_zplus,
2148  _totclusternum_layer_BH_zplus,
2149  # Looking at the fraction of true energy that has been clustered; by layer and overall
2150  _energyclustered_perlayer_EE_zplus,
2151  _energyclustered_perlayer_FH_zplus,
2152  _energyclustered_perlayer_BH_zplus
2153 ]
2154 
2155 lc_cellevel_zplus = [
2156  # number of cells in layer cluster, by layer - separate histos in each layer for 120um Si, 200/300um Si, Scint
2157  _cellsnum_perthick_perlayer_120_EE_zplus,
2158  _cellsnum_perthick_perlayer_120_FH_zplus,
2159  _cellsnum_perthick_perlayer_120_BH_zplus,
2160  _cellsnum_perthick_perlayer_200_EE_zplus,
2161  _cellsnum_perthick_perlayer_200_FH_zplus,
2162  _cellsnum_perthick_perlayer_200_BH_zplus,
2163  _cellsnum_perthick_perlayer_300_EE_zplus,
2164  _cellsnum_perthick_perlayer_300_FH_zplus,
2165  _cellsnum_perthick_perlayer_300_BH_zplus,
2166  _cellsnum_perthick_perlayer_scint_EE_zplus,
2167  _cellsnum_perthick_perlayer_scint_FH_zplus,
2168  _cellsnum_perthick_perlayer_scint_BH_zplus,
2169  # Cell Association per Layer
2170  _cell_association_table_zplus
2171 ]
2172 
2173 lc_cp_association_zplus = [
2174  # Efficiency Plots
2175  _efficiencies_zplus,
2176  _efficiencies_zplus_eta,
2177  _efficiencies_zplus_phi,
2178  # Duplicate Plots
2179  _duplicates_zplus,
2180  _duplicates_zplus_eta,
2181  _duplicates_zplus_phi,
2182  # Fake Rate Plots
2183  _fakes_zplus,
2184  _fakes_zplus_eta,
2185  _fakes_zplus_phi,
2186  # Merge Rate Plots
2187  _merges_zplus,
2188  _merges_zplus_eta,
2189  _merges_zplus_phi,
2190  # Score of CaloParticles wrt Layer Clusters
2191  _score_caloparticle_to_layerclusters_zplus,
2192  # Score of LayerClusters wrt CaloParticles
2193  _score_layercluster_to_caloparticles_zplus,
2194  # Shared Energy between CaloParticle and LayerClusters
2195  _sharedEnergy_caloparticle_to_layercluster_zplus,
2196  # Shared Energy between LayerClusters and CaloParticle
2197  _sharedEnergy_layercluster_to_caloparticle_zplus,
2198  _energyscore_cp2lc_zplus,
2199  _energyscore_lc2cp_zplus
2200 ]
2201 
2202 lc_zplus_extended = [
2203  # distance of cells from a) seed cell, b) max cell; and c), d): same with entries weighted by cell energy
2204  _distancetomaxcell_perthickperlayer_120_EE_zplus,
2205  _distancetomaxcell_perthickperlayer_120_FH_zplus,
2206  _distancetomaxcell_perthickperlayer_120_BH_zplus,
2207  _distancetomaxcell_perthickperlayer_200_EE_zplus,
2208  _distancetomaxcell_perthickperlayer_200_FH_zplus,
2209  _distancetomaxcell_perthickperlayer_200_BH_zplus,
2210  _distancetomaxcell_perthickperlayer_300_EE_zplus,
2211  _distancetomaxcell_perthickperlayer_300_FH_zplus,
2212  _distancetomaxcell_perthickperlayer_300_BH_zplus,
2213  _distancetomaxcell_perthickperlayer_scint_EE_zplus,
2214  _distancetomaxcell_perthickperlayer_scint_FH_zplus,
2215  _distancetomaxcell_perthickperlayer_scint_BH_zplus,
2216  _distancetoseedcell_perthickperlayer_120_EE_zplus,
2217  _distancetoseedcell_perthickperlayer_120_FH_zplus,
2218  _distancetoseedcell_perthickperlayer_120_BH_zplus,
2219  _distancetoseedcell_perthickperlayer_200_EE_zplus,
2220  _distancetoseedcell_perthickperlayer_200_FH_zplus,
2221  _distancetoseedcell_perthickperlayer_200_BH_zplus,
2222  _distancetoseedcell_perthickperlayer_300_EE_zplus,
2223  _distancetoseedcell_perthickperlayer_300_FH_zplus,
2224  _distancetoseedcell_perthickperlayer_300_BH_zplus,
2225  _distancetoseedcell_perthickperlayer_scint_EE_zplus,
2226  _distancetoseedcell_perthickperlayer_scint_FH_zplus,
2227  _distancetoseedcell_perthickperlayer_scint_BH_zplus,
2228  _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zplus,
2229  _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zplus,
2230  _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zplus,
2231  _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zplus,
2232  _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zplus,
2233  _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zplus,
2234  _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zplus,
2235  _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zplus,
2236  _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zplus,
2237  _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zplus,
2238  _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zplus,
2239  _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zplus,
2240  _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zplus,
2241  _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zplus,
2242  _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zplus,
2243  _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zplus,
2244  _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zplus,
2245  _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zplus,
2246  _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zplus,
2247  _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zplus,
2248  _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zplus,
2249  _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zplus,
2250  _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zplus,
2251  _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zplus,
2252  _distancebetseedandmaxcell_perthickperlayer_120_EE_zplus,
2253  _distancebetseedandmaxcell_perthickperlayer_120_FH_zplus,
2254  _distancebetseedandmaxcell_perthickperlayer_120_BH_zplus,
2255  _distancebetseedandmaxcell_perthickperlayer_200_EE_zplus,
2256  _distancebetseedandmaxcell_perthickperlayer_200_FH_zplus,
2257  _distancebetseedandmaxcell_perthickperlayer_200_BH_zplus,
2258  _distancebetseedandmaxcell_perthickperlayer_300_EE_zplus,
2259  _distancebetseedandmaxcell_perthickperlayer_300_FH_zplus,
2260  _distancebetseedandmaxcell_perthickperlayer_300_BH_zplus,
2261  _distancebetseedandmaxcell_perthickperlayer_scint_EE_zplus,
2262  _distancebetseedandmaxcell_perthickperlayer_scint_FH_zplus,
2263  _distancebetseedandmaxcell_perthickperlayer_scint_BH_zplus,
2264  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zplus,
2265  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zplus,
2266  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zplus,
2267  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zplus,
2268  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zplus,
2269  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zplus,
2270  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zplus,
2271  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zplus,
2272  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zplus,
2273  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zplus,
2274  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zplus,
2275  _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zplus
2276 ]
2277 
2278 def append_hgcalLayerClustersPlots(collection = hgcalValidator.label_layerClusterPlots._InputTag__moduleLabel, name_collection = layerClustersLabel, extended = False):
2279  print('extended : ',extended)
2280  regions_ClusterLevel = ["General: Cluster Level", "Z-minus: Cluster Level", "Z-plus: Cluster Level"]
2281  regions_CellLevel = ["Z-minus: Cell Level", "Z-plus: Cell Level"]
2282  regions_LCtoCP_association = ["Z-minus: LC_CP association", "Z-plus: LC_CP association"]
2283 
2284  plots_lc_general_clusterlevel = lc_general_clusterlevel
2285  plots_lc_clusterlevel_zminus = lc_clusterlevel_zminus
2286  plots_lc_cellevel_zminus = lc_cellevel_zminus
2287  plots_lc_clusterlevel_zplus = lc_clusterlevel_zplus
2288  plots_lc_cellevel_zplus = lc_cellevel_zplus
2289  plots_lc_cp_association_zminus = lc_cp_association_zminus
2290  plots_lc_cp_association_zplus = lc_cp_association_zplus
2291 
2292  if extended :
2293  #plots_lc_clusterlevel_zminus = lc_clusterlevel_zminus
2294  #plots_lc_clusterlevel_zplus = lc_clusterlevel_zplus
2295  plots_lc_cellevel_zminus = lc_cellevel_zminus + lc_zminus_extended
2296  plots_lc_cellevel_zplus = lc_cellevel_zplus + lc_zplus_extended
2297  #plots_lc_cp_association_zminus = lc_cp_association_zminus
2298  #plots_lc_cp_association_zplus = lc_cp_association_zplus
2299 
2300  setPlots_ClusterLevel = [plots_lc_general_clusterlevel, plots_lc_clusterlevel_zminus, plots_lc_clusterlevel_zplus]
2301  setPlots_CellLevel = [plots_lc_cellevel_zminus, plots_lc_cellevel_zplus]
2302  setPlots_LCtoCP_association = [plots_lc_cp_association_zminus, plots_lc_cp_association_zplus]
2303  for reg, setPlot in zip(regions_ClusterLevel, setPlots_ClusterLevel):
2304  hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2305  _hgcalFolders(collection + "/ClusterLevel")
2306  ], PlotFolder(
2307  *setPlot,
2308  loopSubFolders=False,
2309  purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2310  for reg, setPlot in zip(regions_CellLevel, setPlots_CellLevel):
2311  hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2312  _hgcalFolders(collection + "/CellLevel")
2313  ], PlotFolder(
2314  *setPlot,
2315  loopSubFolders=False,
2316  purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2317  for reg, setPlot in zip(regions_LCtoCP_association, setPlots_LCtoCP_association):
2318  hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2319  _hgcalFolders(collection + "/" + lcToCP_linking)
2320  ], PlotFolder(
2321  *setPlot,
2322  loopSubFolders=False,
2323  purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2324 
2325 #=================================================================================================
2326 
2327 sc_clusterlevel = [
2328  # number of layer clusters per event in a) 120um, b) 200um, c) 300um, d) scint
2329  # (one entry per event in each of the four histos) ([B] above)
2330  _totsimclusternum_thick,
2331  # number of simclusters per layer (one entry per event in each histo) ([C] above)
2332  # z-
2333  _totsimclusternum_layer_EE_zminus,
2334  _totsimclusternum_layer_FH_zminus,
2335  _totsimclusternum_layer_BH_zminus,
2336  # z+
2337  _totsimclusternum_layer_EE_zplus,
2338  _totsimclusternum_layer_FH_zplus,
2339  _totsimclusternum_layer_BH_zplus,
2340  # Miscellaneous plots ([G] above):
2341  # mixedhitscluster: Number of clusters per event with hits in different thicknesses.
2342  _mixedhitssimclusters,
2343 ]
2344 
2345 sc_ticltracksters = [
2346  # Score of SimClusters wrt Layer Clusters
2347  # z-
2348  _score_simcluster_to_layerclusters_zminus,
2349  # z+
2350  _score_simcluster_to_layerclusters_zplus,
2351  # Score of LayerClusters wrt SimClusters
2352  # z-
2353  _score_layercluster_to_simclusters_zminus,
2354  # z+
2355  _score_layercluster_to_simclusters_zplus,
2356  # Shared Energy between SimCluster and LayerClusters
2357  # z-
2358  _sharedEnergy_simcluster_to_layercluster_zminus,
2359  # z+
2360  _sharedEnergy_simcluster_to_layercluster_zplus,
2361  # Shared Energy between LayerClusters and SimCluster
2362  # z-
2363  _sharedEnergy_layercluster_to_simcluster_zminus,
2364  # z+
2365  _sharedEnergy_layercluster_to_simcluster_zplus,
2366  # Efficiency Plots
2367  # z-
2368  _efficiencies_sc_zminus,
2369  _duplicates_sc_zminus,
2370  _fakes_sc_zminus,
2371  _merges_sc_zminus,
2372  _efficiencies_sc_zminus_eta,
2373  _efficiencies_sc_zminus_phi,
2374  # z+
2375  _efficiencies_sc_zplus,
2376  _duplicates_sc_zplus,
2377  _fakes_sc_zplus,
2378  _merges_sc_zplus,
2379  _efficiencies_sc_zplus_eta,
2380  _efficiencies_sc_zplus_phi,
2381  # Duplicate Plots
2382  # z-
2383  _duplicates_sc_zminus_eta,
2384  _duplicates_sc_zminus_phi,
2385  # z+
2386  _duplicates_sc_zplus_eta,
2387  _duplicates_sc_zplus_phi,
2388  # Fake Rate Plots
2389  # z-
2390  _fakes_sc_zminus_eta,
2391  _fakes_sc_zminus_phi,
2392  # z+
2393  _fakes_sc_zplus_eta,
2394  _fakes_sc_zplus_phi,
2395  # Merge Rate Plots
2396  # z-
2397  _merges_sc_zminus_eta,
2398  _merges_sc_zminus_phi,
2399  # z+
2400  _merges_sc_zplus_eta,
2401  _merges_sc_zplus_phi,
2402  # Energy vs Score 2D plots SC to LC
2403  # z-
2404  _energyscore_sc2lc_zminus,
2405  # z+
2406  _energyscore_sc2lc_zplus,
2407  # Energy vs Score 2D plots LC to SC
2408  # z-
2409  _energyscore_lc2sc_zminus,
2410  # z+
2411  _energyscore_lc2sc_zplus
2412 ]
2413 
2414 hgcalSimClustersPlotter = Plotter()
2415 
2416 def append_hgcalSimClustersPlots(collection, name_collection):
2417  if collection == hgcalValidator.label_SimClustersLevel._InputTag__moduleLabel:
2418  hgcalSimClustersPlotter.append(collection, [
2419  _hgcalFolders(hgcalValidator.label_SimClusters._InputTag__moduleLabel +"/"+ collection)
2420  ], PlotFolder(
2421  *sc_clusterlevel,
2422  loopSubFolders=False,
2423  purpose=PlotPurpose.Timing, page="SimClusters", section=name_collection))
2424  else:
2425  hgcalSimClustersPlotter.append(collection, [
2426  _hgcalFolders(hgcalValidator.label_SimClusters._InputTag__moduleLabel +"/"+collection)
2427  ], PlotFolder(
2428  *sc_ticltracksters,
2429  loopSubFolders=False,
2430  purpose=PlotPurpose.Timing, page="SimClusters", section=name_collection))
2431 
2432 
2433 #=================================================================================================
2434 def _hgcalFolders(lastDirName="hgcalLayerClusters"):
2435  return hgcVal_dqm + lastDirName
2436 
2437 _trackstersPlots = [
2438  _trackster_eppe,
2439  _trackster_xyz,
2440  _tottracksternum,
2441  _clusternum_in_trackster,
2442  _clusternum_in_trackster_vs_layer,
2443  _clusternum_in_trackster_perlayer_zminus_EE,
2444  _clusternum_in_trackster_perlayer_zminus_FH,
2445  _clusternum_in_trackster_perlayer_zminus_BH,
2446  _clusternum_in_trackster_perlayer_zplus_EE,
2447  _clusternum_in_trackster_perlayer_zplus_FH,
2448  _clusternum_in_trackster_perlayer_zplus_BH,
2449  _trackster_layernum,
2450  _multiplicityOfLCinTST,
2451 ]
2452 
2453 _trackstersToCPLinkPlots = [
2454  _efficiencies[0],
2455  _purities[0],
2456  _duplicates[0],
2457  _fakes[0],
2458  _merges[0],
2459  _score_caloparticle_to_tracksters,
2460  _score_trackster_to_caloparticles,
2461  _sharedEnergy_to_trackster[0],
2462  _sharedEnergy_trackster_to[0],
2463  _energyscore_to_trackster[0],
2464  _energyscore_trackster_to[0],
2465 ]
2466 
2467 _trackstersToSTSPRPlots = [
2468  _efficiencies[1],
2469  _purities[1],
2470  _duplicates[1],
2471  _fakes[1],
2472  _merges[1],
2473  _score_simtrackster_to_tracksters,
2474  _score_trackster_to_simtracksters,
2475  _sharedEnergy_to_trackster[1],
2476  _sharedEnergy_trackster_to[1],
2477  _energyscore_to_trackster[1],
2478  _energyscore_trackster_to[1],
2479 ]
2480 hgcalTrackstersPlotter = Plotter()
2481 def append_hgcalTrackstersPlots(collection = 'ticlTrackstersMerge', name_collection = "TrackstersMerge"):
2482  # Appending generic plots for Tracksters
2483  hgcalTrackstersPlotter.append(collection, [
2484  _hgcalFolders(collection+ "/" + hgcalValidator.label_TS.value())
2485  ], PlotFolder(
2486  *_trackstersPlots,
2487  loopSubFolders=False,
2488  purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection))
2489 
2490  # Appending plots for Tracksters-CP linking
2491  hgcalTrackstersPlotter.append(collection, [
2492  _hgcalFolders(collection + "/" + tsToCP_linking)
2493  ], PlotFolder(
2494  *_trackstersToCPLinkPlots,
2495  loopSubFolders=False,
2496  purpose=PlotPurpose.Timing
2497  #,page=tsToCP_linking.replace('TSToCP_','TICL-')
2498  ,page=tsToCP_linking.replace('TSToCP_','TICL-linking').replace('linking','')
2499  ,section=name_collection)
2500  )
2501 
2502  # Appending plots for Tracksters Pattern Recognition
2503  hgcalTrackstersPlotter.append(collection, [
2504  _hgcalFolders(collection + "/" + tsToSTS_patternRec)
2505  ], PlotFolder(
2506  *_trackstersToSTSPRPlots,
2507  loopSubFolders=False,
2508  purpose=PlotPurpose.Timing, page=tsToSTS_patternRec.replace('TSToSTS_','TICL-'), section=name_collection))
2509 
2510  #We append here two PlotFolder because we want the text to be in percent
2511  #and the number of events are different in zplus and zminus
2512  #hgcalTrackstersPlotter.append("Multiplicity", [
2513  # dqmfolder
2514  # ], PlotFolder(
2515  # _multiplicityOfLCinTST_vs_layercluster_zminus,
2516  # loopSubFolders=False,
2517  # purpose=PlotPurpose.Timing, page=collection,
2518  # numberOfEventsHistogram=_multiplicity_zminus_numberOfEventsHistogram
2519  # ))
2520  #
2521  #hgcalTrackstersPlotter.append("Multiplicity", [
2522  # dqmfolder
2523  # ], PlotFolder(
2524  # _multiplicityOfLCinTST_vs_layercluster_zplus,
2525  # loopSubFolders=False,
2526  # purpose=PlotPurpose.Timing, page=collection,
2527  # numberOfEventsHistogram=_multiplicity_zplus_numberOfEventsHistogram
2528  # ))
2529 
2530 #=================================================================================================
2531 _common_Calo = {"stat": False, "drawStyle": "hist", "staty": 0.65, "ymin": 0.0, "ylog": False, "xtitle": "Default", "ytitle": "Default"}
2532 
2533 hgcalCaloParticlesPlotter = Plotter()
2534 def append_hgcalCaloParticlesPlots(files, collection = '-211', name_collection = "pion-"):
2535 
2536  list_2D_histos = ["Energy of Rec-matched Hits vs layer",
2537  "Energy of Rec-matched Hits vs layer (1SC)",
2538  "Rec-matched Hits Sum Energy vs layer"]
2539 
2540  dqmfolder = hgcVal_dqm + "SelectedCaloParticles/" + collection
2541  templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2542  if not gDirectory.GetDirectory(dqmfolder):
2543  print("Error: GeneralInfo directory %s not found in DQM file, exit"%dqmfolder)
2544  return hgcalTrackstersPlotter
2545 
2546  keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2547  key = keys[0]
2548  while key:
2549  obj = key.ReadObj()
2550  name = obj.GetName()
2551  fileName = TString(name)
2552  fileName.ReplaceAll(" ","_")
2553  pg = PlotGroup(fileName.Data(),[
2554  Plot(name,
2555  drawCommand = "",
2556  normalizeToNumberOfEvents = True, **_common_Calo)
2557  ],
2558  ncols=1)
2559 
2560  if name in list_2D_histos :
2561  pg = PlotOnSideGroup(plotName.Data(),
2562  Plot(name,
2563  drawCommand = "COLZ",
2564  normalizeToNumberOfEvents = True, **_common_Calo)
2565  ,
2566  ncols=1)
2567 
2568  hgcalCaloParticlesPlotter.append("CaloParticles_"+name_collection, [
2569  dqmfolder
2570  ], PlotFolder(
2571  pg,
2572  loopSubFolders=False,
2573  purpose=PlotPurpose.Timing, page="CaloParticles", section=name_collection)
2574  )
2575 
2576  key = keys.After(key)
2577 
2578  templateFile.Close()
2579 
2580  return hgcalCaloParticlesPlotter
2581 
2582 #=================================================================================================
2583 def create_hgcalTrackstersPlotter(files, collection = 'ticlTrackstersMerge', name_collection = "TrackstersMerge"):
2584  grouped = {"cosAngle Beta": PlotGroup("cosAngle_Beta_per_layer",[],ncols=10), "cosAngle Beta Weighted": PlotGroup("cosAngle_Beta_Weighted_per_layer",[],ncols=10)}
2585  groupingFlag = " on Layer "
2586 
2587  hgcalTrackstersPlotter = Plotter()
2588  dqmfolder = hgcVal_dqm + collection
2589  #_multiplicity_tracksters_numberOfEventsHistogram = dqmfolder+"/Number of Trackster per Event"
2590 
2591  _common["ymin"] = 0.0
2592  _common["staty"] = 0.85
2593  templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2594  if not gDirectory.GetDirectory(dqmfolder):
2595  print("Error: GeneralInfo directory %s not found in DQM file, exit"%dqmfolder)
2596  return hgcalTrackstersPlotter
2597 
2598  keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2599  key = keys[0]
2600  while key:
2601  obj = key.ReadObj()
2602  name = obj.GetName()
2603  plotName = TString(name)
2604  plotName.ReplaceAll(" ","_")
2605 
2606  if groupingFlag in name:
2607  for group in grouped:
2608  if group+groupingFlag in name:
2609  grouped[group].append(Plot(name,
2610  xtitle="Default", ytitle="Default",
2611  **_common)
2612  )
2613  else:
2614  pg = None
2615  if obj.InheritsFrom("TH2"):
2616  pg = PlotOnSideGroup(plotName.Data(),
2617  Plot(name,
2618  xtitle="Default", ytitle="Default",
2619  drawCommand = "COLZ",
2620  **_common),
2621  ncols=1)
2622  elif obj.InheritsFrom("TH1"):
2623  pg = PlotGroup(plotName.Data(),
2624  [Plot(name,
2625  xtitle="Default", ytitle="Default",
2626  drawCommand = "COLZ", # ineffective for TH1
2627  **_common)
2628  ],
2629  ncols=1, legendDh=-0.03 * len(files))
2630 
2631  if (pg is not None):
2632  hgcalTrackstersPlotter.append(name_collection+"_TICLDebugger",
2633  [dqmfolder], PlotFolder(pg,
2634  loopSubFolders=False,
2635  purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection)
2636  #numberOfEventsHistogram=_multiplicity_tracksters_numberOfEventsHistogram)
2637  )
2638 
2639  key = keys.After(key)
2640 
2641  for group in grouped:
2642  hgcalTrackstersPlotter.append(name_collection+"_TICLDebugger",
2643  [dqmfolder], PlotFolder(grouped[group],
2644  loopSubFolders=False,
2645  purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection)
2646  #numberOfEventsHistogram=_multiplicity_tracksters_numberOfEventsHistogram)
2647  )
2648 
2649  templateFile.Close()
2650 
2651  return hgcalTrackstersPlotter
2652 
2653 #=================================================================================================
2654 _common_Calo = {"stat": False, "drawStyle": "hist", "staty": 0.65, "ymin": 0.0, "ylog": False, "xtitle": "Default", "ytitle": "Default"}
2655 
2656 hgcalCaloParticlesPlotter = Plotter()
2657 
2658 def append_hgcalCaloParticlesPlots(files, collection = '-211', name_collection = "pion-"):
2659  dqmfolder = hgcVal_dqm + "SelectedCaloParticles/" + collection
2660  print(dqmfolder)
2661 # _common["ymin"] = 0.0
2662  templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2663  keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2664  key = keys[0]
2665  while key:
2666  obj = key.ReadObj()
2667  name = obj.GetName()
2668  plotName = TString(name)
2669  plotName.ReplaceAll(" ","_")
2670 
2671  pg = None
2672  if obj.InheritsFrom("TH2"):
2673  pg = PlotOnSideGroup(plotName.Data(),
2674  Plot(name,
2675  drawCommand = "COLZ",
2676  normalizeToNumberOfEvents = True, **_common_Calo),
2677  ncols=1)
2678  elif obj.InheritsFrom("TH1"):
2679  pg = PlotGroup(plotName.Data(),[
2680  Plot(name,
2681  drawCommand = "", # may want to customize for TH2 (colz, etc.)
2682  normalizeToNumberOfEvents = True, **_common_Calo)
2683  ],
2684  ncols=1)
2685 
2686  if (pg is not None):
2687  hgcalCaloParticlesPlotter.append("CaloParticles_"+name_collection, [
2688  dqmfolder
2689  ], PlotFolder(
2690  pg,
2691  loopSubFolders=False,
2692  purpose=PlotPurpose.Timing, page="CaloParticles", section=name_collection)
2693  )
2694 
2695  key = keys.After(key)
2696 
2697  templateFile.Close()
2698 
2699  return hgcalCaloParticlesPlotter
2700 
2701 #=================================================================================================
2702 # hitValidation
2703 def _hgcalHitFolders(dirName="HGCalSimHitsV/HGCalEESensitive"):
2704  return "DQMData/Run 1/HGCAL/Run summary/"+dirName
2705 
2706 hgcalHitPlotter = Plotter()
2707 hitsLabel = 'Hits'
2708 simHitsLabel = 'Simulated Hits'
2709 
2710 hgcalHitPlotter.append("SimHits_Validation", [
2711  "DQMData/Run 1/HGCAL/Run summary/HGCalSimHitsV/HitValidation",
2712  ], PlotFolder(
2713  _HitValidation,
2714  loopSubFolders=False,
2715  purpose=PlotPurpose.Timing, page=hitsLabel, section=simHitsLabel
2716  ))
2717 
2718 def append_hgcalHitsPlots(collection = "HGCalSimHitsV", name_collection = "Simulated Hits"):
2719  _hitsCommonPlots_EE = [
2720  _Occupancy_EE_zplus,
2721  _Occupancy_EE_zminus,
2722  _EtaPhi_EE_zminus,
2723  _EtaPhi_EE_zplus
2724  ]
2725  _hitsCommonPlots_HE_Sil = [
2726  _Occupancy_HE_Silicon_zplus,
2727  _Occupancy_HE_Silicon_zminus,
2728  _EtaPhi_HE_Silicon_zminus,
2729  _EtaPhi_HE_Silicon_zplus
2730  ]
2731  _hitsCommonPlots_HE_Sci = [
2732  _Occupancy_HE_Scintillator_zplus,
2733  _Occupancy_HE_Scintillator_zminus,
2734  _EtaPhi_HE_Scintillator_zminus,
2735  _EtaPhi_HE_Scintillator_zplus
2736  ]
2737 
2738  regions = ["HGCalEESensitive", "HGCalHESiliconSensitive", "HGCalHEScintillatorSensitive"]
2739  setPlots = [_hitsCommonPlots_EE, _hitsCommonPlots_HE_Sil, _hitsCommonPlots_HE_Sci]
2740  if "SimHits" in collection :
2741  _hitsCommonPlots_EE.append(_Energy_EE_0)
2742  _hitsCommonPlots_EE.append(_Energy_EE_1)
2743  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Silicon_0)
2744  _hitsCommonPlots_HE_Sil.append( _Energy_HE_Silicon_1)
2745  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator_0)
2746  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator_1)
2747  if "RecHits" in collection :
2748  _hitsCommonPlots_EE.append(_Energy_EE)
2749  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Silicon)
2750  _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator)
2751 
2752  for reg, setPlot in zip(regions, setPlots):
2753  dirName = collection+"/"+reg
2754  print(dirName)
2755  hgcalHitPlotter.append(collection, [
2756  _hgcalHitFolders(dirName)
2757  ], PlotFolder(
2758  *setPlot,
2759  loopSubFolders=False,
2760  purpose=PlotPurpose.Timing, page=hitsLabel, section=name_collection))
2761 
2762 _digisCommonPlots_EE = [
2763  _DigiHits_Occupancy_EE_zplus,
2764  _DigiHits_Occupancy_EE_zminus,
2765  _DigiHits_Occupancy_XY_EE,
2766  _DigiHits_ADC_EE,
2767  _DigiHits_TOA_EE,
2768  _DigiHits_TOT_EE,
2769 ]
2770 _digisCommonPlots_HE_Sil = [
2771  _DigiHits_Occupancy_HE_Silicon_zplus,
2772  _DigiHits_Occupancy_HE_Silicon_zminus,
2773  _DigiHits_Occupancy_XY_HE_Silicon,
2774  _DigiHits_ADC_HE_Silicon,
2775  _DigiHits_TOA_HE_Silicon,
2776  _DigiHits_TOT_HE_Silicon,
2777 ]
2778 _digisCommonPlots_HE_Sci = [
2779  _DigiHits_Occupancy_HE_Scintillator_zplus,
2780  _DigiHits_Occupancy_HE_Scintillator_zminus,
2781  _DigiHits_Occupancy_XY_HE_Scintillator,
2782  _DigiHits_ADC_HE_Scintillator,
2783  _DigiHits_TOA_HE_Scintillator,
2784  _DigiHits_TOT_HE_Scintillator,
2785 ]
2786 
2787 def append_hgcalDigisPlots(collection = "HGCalDigisV", name_collection = "Digis"):
2788  regions = ["HGCalEESensitive", "HGCalHESiliconSensitive", "HGCalHEScintillatorSensitive"]
2789  setPlots = [_digisCommonPlots_EE, _digisCommonPlots_HE_Sil, _digisCommonPlots_HE_Sci]
2790  for reg, setPlot in zip(regions, setPlots):
2791  dirName = collection+"/"+reg
2792  print(dirName)
2793  hgcalHitPlotter.append(name_collection, [
2794  _hgcalHitFolders(dirName)
2795  ], PlotFolder(
2796  *setPlot,
2797  loopSubFolders=False,
2798  purpose=PlotPurpose.Timing, page=hitsLabel, section=name_collection))
2799 
2800 #=================================================================================================
2801 # hitCalibration
2802 hgcalHitCalibPlotter = Plotter()
2803 hitCalibrationLabel = 'Calibrated RecHits'
2804 
2805 hgcalHitCalibPlotter.append("Layer_Occupancy", [
2806  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2807  ], PlotFolder(
2808  _LayerOccupancy,
2809  loopSubFolders=False,
2810  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2811  ))
2812 hgcalHitCalibPlotter.append("ReconstructableEnergyOverCPenergy", [
2813  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2814  ], PlotFolder(
2815  _ReconstructableEnergyOverCPenergy,
2816  loopSubFolders=False,
2817  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2818  ))
2819 
2820 hgcalHitCalibPlotter.append("ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy", [
2821  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2822  ], PlotFolder(
2823  _ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy,
2824  loopSubFolders=False,
2825  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2826  ))
2827 
2828 hgcalHitCalibPlotter.append("PhotonsFromTrackster_Closest_EoverCPenergy", [
2829  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2830  ], PlotFolder(
2831  _PhotonsFromTrackster_Closest_EoverCPenergy,
2832  loopSubFolders=False,
2833  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2834  ))
2835 
2836 hgcalHitCalibPlotter.append("EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy", [
2837  "DQMData/Run 1/HGCalHitCalibration/Run summary",
2838  ], PlotFolder(
2839  _EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy,
2840  loopSubFolders=False,
2841  purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2842  ))
def append_hgcalHitsPlots(collection="HGCalSimHitsV", name_collection="Simulated Hits")
Definition: hgcalPlots.py:2718
def append_hgcalTrackstersPlots(collection='ticlTrackstersMerge', name_collection="TrackstersMerge")
Definition: hgcalPlots.py:2481
def create_hgcalTrackstersPlotter(files, collection='ticlTrackstersMerge', name_collection="TrackstersMerge")
Definition: hgcalPlots.py:2583
def replace(string, replacements)
def append_hgcalDigisPlots(collection="HGCalDigisV", name_collection="Digis")
Definition: hgcalPlots.py:2787
def _hgcalFolders(lastDirName="hgcalLayerClusters")
Definition: hgcalPlots.py:2434
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def append_hgcalCaloParticlesPlots(files, collection='-211', name_collection="pion-")
Definition: hgcalPlots.py:2534
def _hgcalHitFolders(dirName="HGCalSimHitsV/HGCalEESensitive")
Definition: hgcalPlots.py:2703
def append_hgcalSimClustersPlots(collection, name_collection)
Definition: hgcalPlots.py:2416
def append_hgcalLayerClustersPlots(collection=hgcalValidator.label_layerClusterPlots._InputTag__moduleLabel, name_collection=layerClustersLabel, extended=False)
Definition: hgcalPlots.py:2278