Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-06-13 03:24:16

0001 from __future__ import print_function
0002 import os
0003 import sys
0004 import copy
0005 import collections
0006 
0007 import ROOT
0008 from ROOT import TFile, TString
0009 from ROOT import gDirectory
0010 ROOT.gROOT.SetBatch(True)
0011 ROOT.PyConfig.IgnoreCommandLineOptions = True
0012 
0013 from Validation.RecoTrack.plotting.plotting import Plot, PlotGroup, PlotFolder, Plotter, PlotOnSideGroup
0014 from Validation.RecoTrack.plotting.html import PlotPurpose
0015 import Validation.RecoTrack.plotting.plotting as plotting
0016 import Validation.RecoTrack.plotting.validation as validation
0017 import Validation.RecoTrack.plotting.html as html
0018 
0019 from Validation.HGCalValidation.HGCalValidator_cfi import hgcalValidator
0020 from Validation.HGCalValidation.PostProcessorHGCAL_cfi import lcToCP_linking, simDict, tsToCP_linking, tsToSTS_patternRec, variables
0021 
0022 hgcVal_dqm = "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/"
0023 #The number of layers per endcap in the current default geometry scenario.
0024 geometryscenario = 47
0025 
0026 #To be able to spot any issues both in -z and +z a layer id was introduced
0027 #that spans from 0 to 103 for hgcal_v9 geometry. The mapping for hgcal_v9 is:
0028 #-z: 0->51
0029 #+z: 52->103
0030 #while for V10 is:
0031 #-z: 0->49
0032 #+z: 50->99
0033 '''
0034 layerscheme = { 'lastLayerEEzm': 0, 'lastLayerFHzm': 0, 'maxlayerzm': 0, 'lastLayerEEzp': 0, 'lastLayerFHzp': 0, 'maxlayerzp': 0 }
0035 
0036 #Let's take the relevant values of layerscheme from the dqm file.
0037 theDQMfile =  "DQM_V0001_R000000001__Global__CMSSW_X_Y_Z__RECO.root"
0038 if not os.path.isfile(theDQMfile):
0039     print("Error: file", theDQMfile, "not found, exit")
0040     sys.exit(0)
0041 
0042 
0043 #Take general info from the first file is sufficient.
0044 thefile = TFile( theDQMfile )
0045 GeneralInfoDirectory = hgcVal_dqm + 'GeneralInfo'
0046 
0047 if not gDirectory.GetDirectory( GeneralInfoDirectory ):
0048   print("Error: GeneralInfo directory not found in DQM file, exit")
0049   sys.exit(0)
0050 
0051 keys = gDirectory.GetDirectory( GeneralInfoDirectory ).GetListOfKeys()
0052 key = keys[0]
0053 layvalue = 0
0054 while key:
0055     obj = key.ReadObj()
0056     for laykey in layerscheme.keys():
0057       if laykey in obj.GetName():
0058         layvalue = obj.GetName()[len("<"+laykey+">i="):-len("</"+laykey+">")]
0059         layerscheme[laykey] = layvalue
0060         #print(layvalue)
0061     key = keys.After(key)
0062 
0063 thefile.Close()
0064 
0065 print(layerscheme)
0066 #TODO: Anticipating the fine/coarse layer information in CMSSW we overwrite values from DQM file
0067 #For now values returned for
0068 # 'lastLayerFHzp': '104', 'lastLayerFHzm': '52'
0069 #are not the one expected. Will come back to this when there will be info in CMSSW to put in DQM file.
0070 #For V9:
0071 #layerscheme = { 'lastLayerEEzm': 28, 'lastLayerFHzm': 40, 'maxlayerzm': 52, 'lastLayerEEzp': 80, 'lastLayerFHzp': 92, 'maxlayerzp': 104 }
0072 #For V10:
0073 layerscheme = { 'lastLayerEEzm': 28, 'lastLayerFHzm': 40, 'maxlayerzm': 50, 'lastLayerEEzp': 78, 'lastLayerFHzp': 90, 'maxlayerzp': 100 }
0074 #For V16
0075 layerscheme = { 'lastLayerEEzm': 26, 'lastLayerFHzm': 37, 'maxlayerzm': 47, 'lastLayerEEzp': 73, 'lastLayerFHzp': 84, 'maxlayerzp': 94 }
0076 '''
0077 #print(layerscheme)
0078 
0079 layerscheme = {}
0080 
0081 if geometryscenario == 52:
0082    layerscheme = { 'lastLayerEEzm': 28, 'lastLayerFHzm': 40, 'maxlayerzm': 52, 'lastLayerEEzp': 80, 'lastLayerFHzp': 92, 'maxlayerzp': 104 }
0083 elif geometryscenario == 50:
0084    layerscheme = { 'lastLayerEEzm': 28, 'lastLayerFHzm': 40, 'maxlayerzm': 50, 'lastLayerEEzp': 78, 'lastLayerFHzp': 90, 'maxlayerzp': 100 }
0085 elif geometryscenario == 47:
0086    layerscheme = { 'lastLayerEEzm': 26, 'lastLayerFHzm': 37, 'maxlayerzm': 47, 'lastLayerEEzp': 73, 'lastLayerFHzp': 84, 'maxlayerzp': 94 }
0087 #print(layerscheme)
0088 
0089 lastLayerEEzm = layerscheme['lastLayerEEzm']  # last layer of EE -z
0090 lastLayerFHzm = layerscheme['lastLayerFHzm']  # last layer of FH -z
0091 maxlayerzm = layerscheme['maxlayerzm'] # last layer of BH -z
0092 lastLayerEEzp = layerscheme['lastLayerEEzp']  # last layer of EE +z
0093 lastLayerFHzp = layerscheme['lastLayerFHzp']  # last layer of FH +z
0094 maxlayerzp = layerscheme['maxlayerzp'] # last layer of BH +z
0095 
0096 hitlayerscheme = { 'EE_min': 1,'EE_max': 28, 'HESilicon_min': 1, 'HESilicon_max': 22, 'HEScintillator_min': 9 , 'HEScintillator_max': 22 }
0097 #print(hitlayerscheme)
0098 
0099 EE_min = hitlayerscheme['EE_min']
0100 EE_max = hitlayerscheme['EE_max']
0101 HESilicon_min = hitlayerscheme['HESilicon_min']
0102 HESilicon_max = hitlayerscheme['HESilicon_max']
0103 HEScintillator_min = hitlayerscheme['HEScintillator_min']
0104 HEScintillator_max = hitlayerscheme['HEScintillator_max']
0105 
0106 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
0107 _legend_common = {"legendDx": -0.3,
0108                   "legendDy": -0.05,
0109                   "legendDw": 0.1}
0110 
0111 _SelectedCaloParticles = PlotGroup("SelectedCaloParticles", [
0112         Plot("num_caloparticle_eta", xtitle="", **_common),
0113         Plot("caloparticle_energy", xtitle="", **_common),
0114         Plot("caloparticle_pt", xtitle="", **_common),
0115         Plot("caloparticle_phi", xtitle="", **_common),
0116         Plot("Eta vs Zorigin", xtitle="", **_common),
0117        ])
0118 
0119 #Need to adjust the statbox to see better the plot
0120 _common = {"stat": True, "drawStyle": "hist", "statx": 0.38, "staty": 0.68 }
0121 _num_reco_cluster_eta = PlotGroup("num_reco_cluster_eta", [
0122   Plot("num_reco_cluster_eta", xtitle="", **_common),
0123 ],ncols=1)
0124 #Back to normal
0125 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
0126 
0127 _mixedhitsclusters = PlotGroup("mixedhitsclusters", [
0128   Plot("mixedhitscluster_zminus", xtitle="", **_common),
0129   Plot("mixedhitscluster_zplus", xtitle="", **_common),
0130 ],ncols=2)
0131 
0132 _mixedhitssimclusters = PlotGroup("mixedhitssimclusters", [
0133   Plot("mixedhitssimcluster_zminus", xtitle="", **_common),
0134   Plot("mixedhitssimcluster_zplus", xtitle="", **_common),
0135 ],ncols=2)
0136 
0137 #Just to prevent the stabox covering the plot
0138 _common = {"stat": True, "drawStyle": "hist", "statx": 0.45, "staty": 0.65 }
0139 
0140 _energyclustered = PlotGroup("energyclustered", [
0141   Plot("energyclustered_zminus", xtitle="", **_common),
0142   Plot("energyclustered_zplus", xtitle="", **_common),
0143 ],ncols=2)
0144 
0145 #Coming back to the usual box definition
0146 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
0147 
0148 _longdepthbarycentre = PlotGroup("longdepthbarycentre", [
0149   Plot("longdepthbarycentre_zminus", xtitle="", **_common),
0150   Plot("longdepthbarycentre_zplus", xtitle="", **_common),
0151 ],ncols=2)
0152 
0153 _common_layerperthickness = {}
0154 _common_layerperthickness.update(_common)
0155 _common_layerperthickness['xmin'] = 0.
0156 _common_layerperthickness['xmax'] = 100
0157 
0158 _totclusternum_thick = PlotGroup("totclusternum_thick", [
0159   Plot("totclusternum_thick_120", xtitle="", **_common_layerperthickness),
0160   Plot("totclusternum_thick_200", xtitle="", **_common_layerperthickness),
0161   Plot("totclusternum_thick_300", xtitle="", **_common_layerperthickness),
0162   Plot("totclusternum_thick_-1", xtitle="", **_common_layerperthickness),
0163   Plot("mixedhitscluster", xtitle="", **_common_layerperthickness),
0164 ])
0165 
0166 _totsimclusternum_thick = PlotGroup("totsimclusternum_thick", [
0167   Plot("totsimclusternum_thick_120", xtitle="", **_common_layerperthickness),
0168   Plot("totsimclusternum_thick_200", xtitle="", **_common_layerperthickness),
0169   Plot("totsimclusternum_thick_300", xtitle="", **_common_layerperthickness),
0170   Plot("totsimclusternum_thick_-1", xtitle="", **_common_layerperthickness),
0171   Plot("mixedhitssimcluster", xtitle="", **_common_layerperthickness),
0172 ])
0173 
0174 #We will plot the density in logy scale.
0175 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ylog": True}
0176 
0177 _cellsenedens_thick =  PlotGroup("cellsenedens_thick", [
0178   Plot("cellsenedens_thick_120", xtitle="", **_common),
0179   Plot("cellsenedens_thick_200", xtitle="", **_common),
0180   Plot("cellsenedens_thick_300", xtitle="", **_common),
0181   Plot("cellsenedens_thick_-1", xtitle="", **_common),
0182 ])
0183 
0184 #Coming back to the usual box definition
0185 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
0186 
0187 
0188 #--------------------------------------------------------------------------------------------
0189 # z-
0190 #--------------------------------------------------------------------------------------------
0191 _totclusternum_layer_EE_zminus = PlotGroup("totclusternum_layer_EE", [
0192   Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0193 ], ncols=7)
0194 
0195 _totclusternum_layer_FH_zminus = PlotGroup("totclusternum_layer_FH", [
0196   Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0197 ], ncols=7)
0198 
0199 _totclusternum_layer_BH_zminus = PlotGroup("totclusternum_layer_BH", [
0200   Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0201 ], ncols=7)
0202 
0203 _totsimclusternum_layer_EE_zminus = PlotGroup("totsimclusternum_layer_EE_zminus", [
0204   Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0205 ], ncols=4)
0206 
0207 _totsimclusternum_layer_FH_zminus = PlotGroup("totsimclusternum_layer_FH_zminus", [
0208   Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0209 ], ncols=4)
0210 
0211 _totsimclusternum_layer_BH_zminus = PlotGroup("totsimclusternum_layer_BH_zminus", [
0212   Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0213 ], ncols=4)
0214 
0215 _energyclustered_perlayer_EE_zminus = PlotGroup("energyclustered_perlayer_EE", [
0216   Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0217 ], ncols=7)
0218 
0219 _energyclustered_perlayer_FH_zminus = PlotGroup("energyclustered_perlayer_FH", [
0220   Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0221 ], ncols=7)
0222 
0223 _energyclustered_perlayer_BH_zminus = PlotGroup("energyclustered_perlayer_BH", [
0224   Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0225 ], ncols=7)
0226 
0227 #----------------------------------------------------------------------------------------------------------------
0228 #120 um
0229 _common_cells = {}
0230 _common_cells.update(_common)
0231 _common_cells["xmin"] = 0
0232 _common_cells["xmax"] = 50
0233 _common_cells["ymin"] = 0.1
0234 _common_cells["ymax"] = 10000
0235 _common_cells["ylog"] = True
0236 _cellsnum_perthick_perlayer_120_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_120_EE", [
0237   Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
0238 ], ncols=7)
0239 
0240 _cellsnum_perthick_perlayer_120_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_120_FH", [
0241   Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
0242 ], ncols=7)
0243 
0244 _cellsnum_perthick_perlayer_120_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_120_BH", [
0245   Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
0246 ], ncols=7)
0247 
0248 #200 um
0249 _cellsnum_perthick_perlayer_200_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_200_EE", [
0250   Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
0251 ], ncols=7)
0252 
0253 _cellsnum_perthick_perlayer_200_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_200_FH", [
0254   Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
0255 ], ncols=7)
0256 
0257 _cellsnum_perthick_perlayer_200_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_200_BH", [
0258   Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
0259 ], ncols=7)
0260 
0261 #300 um
0262 _cellsnum_perthick_perlayer_300_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_300_EE", [
0263   Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
0264 ], ncols=7)
0265 
0266 _cellsnum_perthick_perlayer_300_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_300_FH", [
0267   Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
0268 ], ncols=7)
0269 
0270 _cellsnum_perthick_perlayer_300_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_300_BH", [
0271   Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
0272 ], ncols=7)
0273 
0274 #scint um
0275 _cellsnum_perthick_perlayer_scint_EE_zminus = PlotGroup("cellsnum_perthick_perlayer_Sci_EE", [
0276   Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm)
0277 ], ncols=7)
0278 
0279 _cellsnum_perthick_perlayer_scint_FH_zminus = PlotGroup("cellsnum_perthick_perlayer_Sci_FH", [
0280   Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzm,lastLayerFHzm)
0281 ], ncols=7)
0282 
0283 _cellsnum_perthick_perlayer_scint_BH_zminus = PlotGroup("cellsnum_perthick_perlayer_Sci_BH", [
0284   Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzm,maxlayerzm)
0285 ], ncols=7)
0286 
0287 #----------------------------------------------------------------------------------------------------------------
0288 #120 um
0289 _common_distance = {}
0290 _common_distance.update(_common)
0291 _common_distance.update(_legend_common)
0292 _common_distance["xmax"] = 150
0293 _common_distance["stat"] = False
0294 _common_distance["ymin"] = 1e-3
0295 _common_distance["ymax"] = 10000
0296 _common_distance["ylog"] = True
0297 
0298 _distancetomaxcell_perthickperlayer_120_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_120_EE", [
0299   Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0300 ], ncols=7)
0301 
0302 _distancetomaxcell_perthickperlayer_120_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_120_FH", [
0303   Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0304 ], ncols=7)
0305 
0306 _distancetomaxcell_perthickperlayer_120_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_120_BH", [
0307   Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0308 ], ncols=7)
0309 
0310 #200 um
0311 _distancetomaxcell_perthickperlayer_200_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_200_EE", [
0312   Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0313 ], ncols=7)
0314 
0315 _distancetomaxcell_perthickperlayer_200_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_200_FH", [
0316   Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0317 ], ncols=7)
0318 
0319 _distancetomaxcell_perthickperlayer_200_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_200_BH", [
0320   Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0321 ], ncols=7)
0322 
0323 #300 um
0324 _distancetomaxcell_perthickperlayer_300_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_300_EE", [
0325   Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0326 ], ncols=7)
0327 
0328 _distancetomaxcell_perthickperlayer_300_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_300_FH", [
0329   Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0330 ], ncols=7)
0331 
0332 _distancetomaxcell_perthickperlayer_300_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_300_BH", [
0333   Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0334 ], ncols=7)
0335 
0336 #scint um
0337 _distancetomaxcell_perthickperlayer_scint_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_EE", [
0338   Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0339 ], ncols=7)
0340 
0341 _distancetomaxcell_perthickperlayer_scint_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_FH", [
0342   Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0343 ], ncols=7)
0344 
0345 _distancetomaxcell_perthickperlayer_scint_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_BH", [
0346   Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0347 ], ncols=7)
0348 
0349 #----------------------------------------------------------------------------------------------------------------
0350 #120 um
0351 _distancebetseedandmaxcell_perthickperlayer_120_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_EE", [
0352   Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0353 ], ncols=7)
0354 
0355 _distancebetseedandmaxcell_perthickperlayer_120_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_FH", [
0356   Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0357 ], ncols=7)
0358 
0359 _distancebetseedandmaxcell_perthickperlayer_120_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_BH", [
0360   Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0361 ], ncols=7)
0362 
0363 #200 um
0364 _distancebetseedandmaxcell_perthickperlayer_200_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_EE", [
0365   Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0366 ], ncols=7)
0367 
0368 _distancebetseedandmaxcell_perthickperlayer_200_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_FH", [
0369   Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0370 ], ncols=7)
0371 
0372 _distancebetseedandmaxcell_perthickperlayer_200_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_BH", [
0373   Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0374 ], ncols=7)
0375 
0376 #300 um
0377 _distancebetseedandmaxcell_perthickperlayer_300_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_EE", [
0378   Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0379 ], ncols=7)
0380 
0381 _distancebetseedandmaxcell_perthickperlayer_300_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_FH", [
0382   Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0383 ], ncols=7)
0384 
0385 _distancebetseedandmaxcell_perthickperlayer_300_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_BH", [
0386   Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0387 ], ncols=7)
0388 
0389 #scint um
0390 _distancebetseedandmaxcell_perthickperlayer_scint_EE_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_EE", [
0391   Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0392 ], ncols=7)
0393 
0394 _distancebetseedandmaxcell_perthickperlayer_scint_FH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_FH", [
0395   Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0396 ], ncols=7)
0397 
0398 _distancebetseedandmaxcell_perthickperlayer_scint_BH_zminus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_BH", [
0399   Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0400 ], ncols=7)
0401 
0402 #----------------------------------------------------------------------------------------------------------------
0403 #120 um
0404 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE", [
0405   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0406 ], ncols=7)
0407 
0408 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH", [
0409   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0410 ], ncols=7)
0411 
0412 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH", [
0413   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0414 ], ncols=7)
0415 
0416 #200 um
0417 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE", [
0418   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0419 ], ncols=7)
0420 
0421 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH", [
0422   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0423 ], ncols=7)
0424 
0425 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH", [
0426   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0427 ], ncols=7)
0428 
0429 #300 um
0430 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE", [
0431   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0432 ], ncols=7)
0433 
0434 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH", [
0435   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0436 ], ncols=7)
0437 
0438 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH", [
0439   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0440 ], ncols=7)
0441 
0442 #scint um
0443 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_EE", [
0444   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0445 ], ncols=7)
0446 
0447 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_FH", [
0448   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0449 ], ncols=7)
0450 
0451 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zminus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_BH", [
0452   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0453 ], ncols=7)
0454 
0455 #----------------------------------------------------------------------------------------------------------------
0456 #120 um
0457 _distancetoseedcell_perthickperlayer_120_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_120_EE", [
0458   Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0459 ], ncols=7)
0460 
0461 _distancetoseedcell_perthickperlayer_120_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_120_FH", [
0462   Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0463 ], ncols=7)
0464 
0465 _distancetoseedcell_perthickperlayer_120_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_120_BH", [
0466   Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0467 ], ncols=7)
0468 
0469 #200 um
0470 _distancetoseedcell_perthickperlayer_200_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_200_EE", [
0471   Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0472 ], ncols=7)
0473 
0474 _distancetoseedcell_perthickperlayer_200_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_200_FH", [
0475   Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0476 ], ncols=7)
0477 
0478 _distancetoseedcell_perthickperlayer_200_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_200_BH", [
0479   Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0480 ], ncols=7)
0481 
0482 #300 um
0483 _distancetoseedcell_perthickperlayer_300_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_300_EE", [
0484   Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0485 ], ncols=7)
0486 
0487 _distancetoseedcell_perthickperlayer_300_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_300_FH", [
0488   Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0489 ], ncols=7)
0490 
0491 _distancetoseedcell_perthickperlayer_300_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_300_BH", [
0492   Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0493 ], ncols=7)
0494 
0495 #scint um
0496 _distancetoseedcell_perthickperlayer_scint_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_EE", [
0497   Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0498 ], ncols=7)
0499 
0500 _distancetoseedcell_perthickperlayer_scint_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_FH", [
0501   Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0502 ], ncols=7)
0503 
0504 _distancetoseedcell_perthickperlayer_scint_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_BH", [
0505   Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0506 ], ncols=7)
0507 
0508 #=====================================================================================================================
0509 #----------------------------------------------------------------------------------------------------------------
0510 #We need points for the weighted plots
0511 _common = {"stat": True, "drawStyle": "EP", "staty": 0.65 }
0512 #120 um
0513 _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_EE", [
0514   Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0515 ], ncols=7)
0516 
0517 _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_FH", [
0518   Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0519 ], ncols=7)
0520 
0521 _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_BH", [
0522   Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0523 ], ncols=7)
0524 
0525 #200 um
0526 _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_EE", [
0527   Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0528 ], ncols=7)
0529 
0530 _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_FH", [
0531   Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0532 ], ncols=7)
0533 
0534 _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_BH", [
0535   Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0536 ], ncols=7)
0537 
0538 #300 um
0539 _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_EE", [
0540   Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0541 ], ncols=7)
0542 
0543 _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_FH", [
0544   Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0545 ], ncols=7)
0546 
0547 _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_BH", [
0548   Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0549 ], ncols=7)
0550 #scint um
0551 _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_EE", [
0552   Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0553 ], ncols=7)
0554 
0555 _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_FH", [
0556   Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0557 ], ncols=7)
0558 
0559 _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zminus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_BH", [
0560   Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0561 ], ncols=7)
0562 
0563 
0564 #----------------------------------------------------------------------------------------------------------------
0565 #120 um
0566 _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_EE", [
0567   Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0568 ], ncols=7)
0569 
0570 _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_FH", [
0571   Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0572 ], ncols=7)
0573 
0574 _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_BH", [
0575   Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0576 ], ncols=7)
0577 
0578 #200 um
0579 _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_EE", [
0580   Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0581 ], ncols=7)
0582 
0583 _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_FH", [
0584   Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0585 ], ncols=7)
0586 
0587 _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_BH", [
0588   Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0589 ], ncols=7)
0590 
0591 #300 um
0592 _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_EE", [
0593   Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0594 ], ncols=7)
0595 
0596 _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_FH", [
0597   Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0598 ], ncols=7)
0599 
0600 _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_BH", [
0601   Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0602 ], ncols=7)
0603 
0604 #scint um
0605 _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_EE", [
0606   Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
0607 ], ncols=7)
0608 
0609 _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_FH", [
0610   Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
0611 ], ncols=7)
0612 
0613 _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zminus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_BH", [
0614   Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
0615 ], ncols=7)
0616 
0617 #Coming back to the usual definition
0618 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
0619 
0620 #--------------------------------------------------------------------------------------------
0621 # z+
0622 #--------------------------------------------------------------------------------------------
0623 _totclusternum_layer_EE_zplus = PlotGroup("totclusternum_layer_EE", [
0624   Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0625 ], ncols=7)
0626 
0627 _totclusternum_layer_FH_zplus = PlotGroup("totclusternum_layer_FH", [
0628   Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0629 ], ncols=7)
0630 
0631 _totclusternum_layer_BH_zplus = PlotGroup("totclusternum_layer_BH", [
0632   Plot("totclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0633 ], ncols=7)
0634 
0635 _totsimclusternum_layer_EE_zplus = PlotGroup("totsimclusternum_layer_EE_zplus", [
0636   Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0637 ], ncols=4)
0638 
0639 _totsimclusternum_layer_FH_zplus = PlotGroup("totsimclusternum_layer_FH_zplus", [
0640   Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0641 ], ncols=4)
0642 
0643 _totsimclusternum_layer_BH_zplus = PlotGroup("totsimclusternum_layer_BH_zplus", [
0644   Plot("totsimclusternum_layer_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0645 ], ncols=4)
0646 
0647 _energyclustered_perlayer_EE_zplus = PlotGroup("energyclustered_perlayer_EE", [
0648   Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0649 ], ncols=7)
0650 
0651 _energyclustered_perlayer_FH_zplus = PlotGroup("energyclustered_perlayer_FH", [
0652   Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0653 ], ncols=7)
0654 
0655 _energyclustered_perlayer_BH_zplus = PlotGroup("energyclustered_perlayer_BH", [
0656   Plot("energyclustered_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0657 ], ncols=7)
0658 
0659 #----------------------------------------------------------------------------------------------------------------
0660 #120 um
0661 _cellsnum_perthick_perlayer_120_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_120_EE", [
0662   Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
0663 ], ncols=7)
0664 
0665 _cellsnum_perthick_perlayer_120_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_120_FH", [
0666   Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
0667 ], ncols=7)
0668 _cellsnum_perthick_perlayer_120_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_120_BH", [
0669   Plot("cellsnum_perthick_perlayer_120_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
0670 ], ncols=7)
0671 
0672 #200 um
0673 _cellsnum_perthick_perlayer_200_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_200_EE", [
0674   Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
0675 ], ncols=7)
0676 
0677 _cellsnum_perthick_perlayer_200_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_200_FH", [
0678   Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
0679 ], ncols=7)
0680 
0681 _cellsnum_perthick_perlayer_200_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_200_BH", [
0682   Plot("cellsnum_perthick_perlayer_200_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
0683 ], ncols=7)
0684 #300 um
0685 _cellsnum_perthick_perlayer_300_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_300_EE", [
0686   Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
0687 ], ncols=7)
0688 
0689 _cellsnum_perthick_perlayer_300_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_300_FH", [
0690   Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
0691 ], ncols=7)
0692 _cellsnum_perthick_perlayer_300_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_300_BH", [
0693   Plot("cellsnum_perthick_perlayer_300_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
0694 ], ncols=7)
0695 
0696 #scint um
0697 _cellsnum_perthick_perlayer_scint_EE_zplus = PlotGroup("cellsnum_perthick_perlayer_Sci_EE", [
0698   Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(maxlayerzm,lastLayerEEzp)
0699 ], ncols=7)
0700 
0701 _cellsnum_perthick_perlayer_scint_FH_zplus = PlotGroup("cellsnum_perthick_perlayer_Sci_FH", [
0702   Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerEEzp,lastLayerFHzp)
0703 ], ncols=7)
0704 
0705 _cellsnum_perthick_perlayer_scint_BH_zplus = PlotGroup("cellsnum_perthick_perlayer_Sci_BH", [
0706   Plot("cellsnum_perthick_perlayer_-1_{:02d}".format(i), xtitle="", **_common_cells) for i in range(lastLayerFHzp,maxlayerzp)
0707 ], ncols=7)
0708 
0709 #----------------------------------------------------------------------------------------------------------------
0710 #120 um
0711 _common_distance = {}
0712 _common_distance.update(_common)
0713 _common_distance.update(_legend_common)
0714 _common_distance["xmax"] = 150
0715 _common_distance["stat"] = False
0716 _common_distance["ymin"] = 1e-3
0717 _common_distance["ymax"] = 10000
0718 _common_distance["ylog"] = True
0719 
0720 _distancetomaxcell_perthickperlayer_120_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_120_EE", [
0721   Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0722 ], ncols=7)
0723 
0724 _distancetomaxcell_perthickperlayer_120_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_120_FH", [
0725   Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0726 ], ncols=7)
0727 
0728 _distancetomaxcell_perthickperlayer_120_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_120_BH", [
0729   Plot("distancetomaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0730 ], ncols=7)
0731 
0732 #200 um
0733 _distancetomaxcell_perthickperlayer_200_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_200_EE", [
0734   Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0735 ], ncols=7)
0736 
0737 _distancetomaxcell_perthickperlayer_200_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_200_FH", [
0738   Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0739 ], ncols=7)
0740 
0741 _distancetomaxcell_perthickperlayer_200_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_200_BH", [
0742   Plot("distancetomaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0743 ], ncols=7)
0744 
0745 #300 um
0746 _distancetomaxcell_perthickperlayer_300_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_300_EE", [
0747   Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0748 ], ncols=7)
0749 
0750 _distancetomaxcell_perthickperlayer_300_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_300_FH", [
0751   Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0752 ], ncols=7)
0753 
0754 _distancetomaxcell_perthickperlayer_300_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_300_BH", [
0755   Plot("distancetomaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0756 ], ncols=7)
0757 
0758 #scint um
0759 _distancetomaxcell_perthickperlayer_scint_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_EE", [
0760   Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0761 ], ncols=7)
0762 
0763 _distancetomaxcell_perthickperlayer_scint_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_FH", [
0764   Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0765 ], ncols=7)
0766 
0767 _distancetomaxcell_perthickperlayer_scint_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_Sci_BH", [
0768   Plot("distancetomaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0769 ], ncols=7)
0770 
0771 #----------------------------------------------------------------------------------------------------------------
0772 #120 um
0773 _distancebetseedandmaxcell_perthickperlayer_120_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_EE", [
0774   Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0775 ], ncols=7)
0776 
0777 _distancebetseedandmaxcell_perthickperlayer_120_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_FH", [
0778   Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0779 ], ncols=7)
0780 
0781 _distancebetseedandmaxcell_perthickperlayer_120_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_120_BH", [
0782   Plot("distancebetseedandmaxcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0783 ], ncols=7)
0784 
0785 #200 um
0786 _distancebetseedandmaxcell_perthickperlayer_200_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_EE", [
0787   Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0788 ], ncols=7)
0789 
0790 _distancebetseedandmaxcell_perthickperlayer_200_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_FH", [
0791   Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0792 ], ncols=7)
0793 
0794 _distancebetseedandmaxcell_perthickperlayer_200_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_200_BH", [
0795   Plot("distancebetseedandmaxcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0796 ], ncols=7)
0797 
0798 #300 um
0799 _distancebetseedandmaxcell_perthickperlayer_300_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_EE", [
0800   Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0801 ], ncols=7)
0802 
0803 _distancebetseedandmaxcell_perthickperlayer_300_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_FH", [
0804   Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0805 ], ncols=7)
0806 
0807 _distancebetseedandmaxcell_perthickperlayer_300_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_300_BH", [
0808   Plot("distancebetseedandmaxcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0809 ], ncols=7)
0810 
0811 #scint um
0812 _distancebetseedandmaxcell_perthickperlayer_scint_EE_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_EE", [
0813   Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0814 ], ncols=7)
0815 
0816 _distancebetseedandmaxcell_perthickperlayer_scint_FH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_FH", [
0817   Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0818 ], ncols=7)
0819 
0820 _distancebetseedandmaxcell_perthickperlayer_scint_BH_zplus = PlotGroup("distancebetseedandmaxcell_perthickperlayer_Sci_BH", [
0821   Plot("distancebetseedandmaxcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0822 ], ncols=7)
0823 
0824 #----------------------------------------------------------------------------------------------------------------
0825 #120 um
0826 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE", [
0827   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0828 ], ncols=7)
0829 
0830 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH", [
0831   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0832 ], ncols=7)
0833 
0834 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH", [
0835   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0836 ], ncols=7)
0837 
0838 #200 um
0839 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE", [
0840   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0841 ], ncols=7)
0842 
0843 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH", [
0844   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0845 ], ncols=7)
0846 
0847 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH", [
0848   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0849 ], ncols=7)
0850 
0851 #300 um
0852 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE", [
0853   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0854 ], ncols=7)
0855 
0856 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH", [
0857   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0858 ], ncols=7)
0859 
0860 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH", [
0861   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0862 ], ncols=7)
0863 
0864 #scint um
0865 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_EE", [
0866   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0867 ], ncols=7)
0868 
0869 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_FH", [
0870   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0871 ], ncols=7)
0872 
0873 _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zplus = PlotGroup("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_Sci_BH", [
0874   Plot("distancebetseedandmaxcellvsclusterenergy_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0875 ], ncols=7)
0876 
0877 
0878 #----------------------------------------------------------------------------------------------------------------
0879 #120 um
0880 _distancetoseedcell_perthickperlayer_120_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_120_EE", [
0881   Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0882 ], ncols=7)
0883 
0884 _distancetoseedcell_perthickperlayer_120_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_120_FH", [
0885   Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0886 ], ncols=7)
0887 
0888 _distancetoseedcell_perthickperlayer_120_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_120_BH", [
0889   Plot("distancetoseedcell_perthickperlayer_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0890 ], ncols=7)
0891 
0892 #200 um
0893 _distancetoseedcell_perthickperlayer_200_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_200_EE", [
0894   Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0895 ], ncols=7)
0896 
0897 _distancetoseedcell_perthickperlayer_200_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_200_FH", [
0898   Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0899 ], ncols=7)
0900 
0901 _distancetoseedcell_perthickperlayer_200_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_200_BH", [
0902   Plot("distancetoseedcell_perthickperlayer_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0903 ], ncols=7)
0904 
0905 #300 um
0906 _distancetoseedcell_perthickperlayer_300_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_300_EE", [
0907   Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0908 ], ncols=7)
0909 
0910 _distancetoseedcell_perthickperlayer_300_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_300_FH", [
0911   Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0912 ], ncols=7)
0913 
0914 _distancetoseedcell_perthickperlayer_300_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_300_BH", [
0915   Plot("distancetoseedcell_perthickperlayer_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0916 ], ncols=7)
0917 
0918 #scint um
0919 _distancetoseedcell_perthickperlayer_scint_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_EE", [
0920   Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0921 ], ncols=7)
0922 
0923 _distancetoseedcell_perthickperlayer_scint_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_FH", [
0924   Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0925 ], ncols=7)
0926 
0927 _distancetoseedcell_perthickperlayer_scint_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_Sci_BH", [
0928   Plot("distancetoseedcell_perthickperlayer_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0929 ], ncols=7)
0930 
0931 #=====================================================================================================================
0932 #----------------------------------------------------------------------------------------------------------------
0933 #We need points for the weighted plots
0934 _common = {"stat": True, "drawStyle": "EP", "staty": 0.65 }
0935 
0936 #120 um
0937 _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_EE", [
0938   Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0939 ], ncols=7)
0940 
0941 _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_FH", [
0942   Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0943 ], ncols=7)
0944 
0945 _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_120_BH", [
0946   Plot("distancetomaxcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0947 ], ncols=7)
0948 
0949 #200 um
0950 _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_EE", [
0951   Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0952 ], ncols=7)
0953 _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_FH", [
0954   Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0955 ], ncols=7)
0956 
0957 _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_200_BH", [
0958   Plot("distancetomaxcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0959 ], ncols=7)
0960 
0961 #300 um
0962 _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_EE", [
0963   Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0964 ], ncols=7)
0965 
0966 _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_FH", [
0967   Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0968 ], ncols=7)
0969 
0970 _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_300_BH", [
0971   Plot("distancetomaxcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0972 ], ncols=7)
0973 
0974 #scint um
0975 _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_EE", [
0976   Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0977 ], ncols=7)
0978 
0979 _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_FH", [
0980   Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0981 ], ncols=7)
0982 
0983 _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zplus = PlotGroup("distancetomaxcell_perthickperlayer_eneweighted_Sci_BH", [
0984   Plot("distancetomaxcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0985 ], ncols=7)
0986 
0987 #----------------------------------------------------------------------------------------------------------------
0988 #120 um
0989 _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_EE", [
0990   Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
0991 ], ncols=7)
0992 
0993 _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_FH", [
0994   Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
0995 ], ncols=7)
0996 
0997 _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_120_BH", [
0998   Plot("distancetoseedcell_perthickperlayer_eneweighted_120_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
0999 ], ncols=7)
1000 
1001 #200 um
1002 _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_EE", [
1003   Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
1004 ], ncols=7)
1005 
1006 _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_FH", [
1007   Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
1008 ], ncols=7)
1009 
1010 _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_200_BH", [
1011   Plot("distancetoseedcell_perthickperlayer_eneweighted_200_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
1012 ], ncols=7)
1013 
1014 #300 um
1015 _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_EE", [
1016   Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
1017 ], ncols=7)
1018 
1019 _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_FH", [
1020   Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
1021 ], ncols=7)
1022 
1023 _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_300_BH", [
1024   Plot("distancetoseedcell_perthickperlayer_eneweighted_300_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
1025 ], ncols=7)
1026 
1027 #scint um
1028 _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_EE", [
1029   Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
1030 ], ncols=7)
1031 
1032 _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_FH", [
1033   Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
1034 ], ncols=7)
1035 
1036 _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zplus = PlotGroup("distancetoseedcell_perthickperlayer_eneweighted_Sci_BH", [
1037   Plot("distancetoseedcell_perthickperlayer_eneweighted_-1_{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
1038 ], ncols=7)
1039 #Just in case we add some plots below to be on the safe side.
1040 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
1041 
1042 #--------------------------------------------------------------------------------------------
1043 # z-
1044 #--------------------------------------------------------------------------------------------
1045 
1046 _common_score = {"title": "Score CaloParticle to LayerClusters in z-",
1047                  "stat": False,
1048                  "ymin": 0.1,
1049                  "ymax": 1000,
1050                  "xmin": 0,
1051                  "xmax": 1,
1052                  "drawStyle": "hist",
1053                  "lineWidth": 1,
1054                  "ylog": True
1055                 }
1056 _common_score.update(_legend_common)
1057 _score_caloparticle_to_layerclusters_zminus = PlotGroup("score_caloparticle_to_layercluster", [
1058         Plot("Score_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(0,maxlayerzm)
1059         ], ncols=10 )
1060 
1061 _common_score = {"title": "Score LayerCluster to CaloParticles in z-",
1062                  "stat": False,
1063                  "ymin": 0.1,
1064                  "ymax": 1000,
1065                  "xmin": 0,
1066                  "xmax": 1,
1067                  "drawStyle": "hist",
1068                  "lineWidth": 1,
1069                  "ylog": True
1070                 }
1071 _common_score.update(_legend_common)
1072 _score_layercluster_to_caloparticles_zminus = PlotGroup("score_layercluster_to_caloparticle", [
1073         Plot("Score_layercl2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(0,maxlayerzm)
1074         ], ncols=8 )
1075 
1076 _common_shared= {"title": "Shared Energy CaloParticle To Layer Cluster in z-",
1077                  "stat": False,
1078                  "legend": False,
1079                 }
1080 _common_shared.update(_legend_common)
1081 _shared_plots_zminus = [Plot("SharedEnergy_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)]
1082 _shared_plots_zminus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1083 _shared_plots_zminus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1084 _sharedEnergy_caloparticle_to_layercluster_zminus = PlotGroup("sharedEnergy_caloparticle_to_layercluster", _shared_plots_zminus, ncols=8)
1085 
1086 _common_shared= {"title": "Shared Energy Layer Cluster To CaloParticle in z-",
1087                  "stat": False,
1088                  "legend": False,
1089                 }
1090 _common_shared.update(_legend_common)
1091 _shared_plots2_zminus = [Plot("SharedEnergy_layercluster2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)]
1092 _common_shared= {"title": "Shared Energy Layer Cluster To Best CaloParticle in z-",
1093                  "stat": False,
1094                  "legend": False,
1095                  "ymin": 0,
1096                  "ymax": 1
1097                 }
1098 _common_shared.update(_legend_common)
1099 _shared_plots2_zminus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1100 _shared_plots2_zminus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(0,maxlayerzm)])
1101 _sharedEnergy_layercluster_to_caloparticle_zminus = PlotGroup("sharedEnergy_layercluster_to_caloparticle", _shared_plots2_zminus, ncols=8)
1102 
1103 
1104 _common_assoc = {#"title": "Cell Association Table in z-",
1105                  "stat": False,
1106                  "legend": False,
1107                  "xbinlabels": ["", "TN(pur)", "FN(ineff.)", "FP(fake)", "TP(eff)"],
1108                  "xbinlabeloption": "h",
1109                  "drawStyle": "hist",
1110                  "ymin": 0.1,
1111                  "ymax": 10000,
1112                  "ylog": True}
1113 _common_assoc.update(_legend_common)
1114 _cell_association_table_zminus = PlotGroup("cellAssociation_table", [
1115         Plot("cellAssociation_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_assoc) for i in range(0,maxlayerzm)
1116         ], ncols=8 )
1117 
1118 _bin_count = 0
1119 _xbinlabels = [ "{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1120 _xtitle = "Layer Numbers in z-"
1121 _common_eff = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1, "xbinlabeloption": "d"}
1122 _effplots_zminus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1123 _effplots_zminus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1124 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1125 _common_eff["xmin"] = _bin_count
1126 _common_eff["xmax"] = maxlayerzm
1127 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1128 _effplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Efficiency", **_common_eff)]
1129 _efficiencies_zminus_eta = PlotGroup("Efficiencies_vs_eta", _effplots_zminus_eta, ncols=10)
1130 _efficiencies_zminus_phi = PlotGroup("Efficiencies_vs_phi", _effplots_zminus_phi, ncols=10)
1131 _efficiencies_zminus     = PlotGroup("Efficiencies_vs_layer", _effplots_zminus, ncols=1)
1132 
1133 _common_dup = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1134 _dupplots_zminus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1135 _dupplots_zminus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1136 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1137 _common_dup["xmin"] = _bin_count
1138 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1139 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1140 _dupplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Duplicates", **_common_dup)]
1141 _duplicates_zminus_eta = PlotGroup("Duplicates_vs_eta", _dupplots_zminus_eta, ncols=10)
1142 _duplicates_zminus_phi = PlotGroup("Duplicates_vs_phi", _dupplots_zminus_phi, ncols=10)
1143 _duplicates_zminus     = PlotGroup("Duplicates_vs_layer", _dupplots_zminus, ncols=1)
1144 
1145 _common_fake = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1146 _fakeplots_zminus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1147 _fakeplots_zminus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1148 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1149 _common_fake["xmin"] = _bin_count
1150 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1151 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1152 _common_fake["xbinlabelsize"] = 10.
1153 _fakeplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Fake Rate", **_common_fake)]
1154 _fakes_zminus_eta = PlotGroup("FakeRate_vs_eta", _fakeplots_zminus_eta, ncols=10)
1155 _fakes_zminus_phi = PlotGroup("FakeRate_vs_phi", _fakeplots_zminus_phi, ncols=10)
1156 _fakes_zminus     = PlotGroup("FakeRate_vs_layer", _fakeplots_zminus, ncols=1)
1157 
1158 _common_merge = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1159 _mergeplots_zminus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1160 _mergeplots_zminus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1161 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1162 _common_merge["xmin"] = _bin_count
1163 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1164 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1165 _common_merge["xbinlabelsize"] = 10.
1166 _mergeplots_zminus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Merge Rate", **_common_merge)]
1167 _merges_zminus_eta = PlotGroup("MergeRate_vs_eta", _mergeplots_zminus_eta, ncols=10)
1168 _merges_zminus_phi = PlotGroup("MergeRate_vs_phi", _mergeplots_zminus_phi, ncols=10)
1169 _merges_zminus     = PlotGroup("MergeRate_vs_layer", _mergeplots_zminus, ncols=1)
1170 
1171 
1172 _common_energy_score = dict(removeEmptyBins=False, xbinlabelsize=10,
1173     stat=True,
1174     xbinlabeloption="d",
1175     ncols=1,
1176     xmin=0.001,
1177     xmax=1.,
1178     ymin=0.01,
1179     ymax=1.)
1180 _energyscore_cp2lc_zminus = PlotGroup("Energy_vs_Score_CP2LC", [Plot("Energy_vs_Score_caloparticle2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_CP2LC",
1181                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1182                                                      ], ncols=10)
1183 
1184 _energyscore_cp2lc_zplus = PlotGroup("Energy_vs_Score_CP2LC", [Plot("Energy_vs_Score_caloparticle2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_CP2LC",
1185                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1186                                                      ], ncols=10)
1187 _common_energy_score["xmin"]=-0.1
1188 _energyscore_lc2cp_zminus = PlotGroup("Energy_vs_Score_LC2CP", [Plot("Energy_vs_Score_layer2caloparticle_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2CP",
1189                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1190                                                      ], ncols=10)
1191 _energyscore_lc2cp_zplus = PlotGroup("Energy_vs_Score_LC2CP", [Plot("Energy_vs_Score_layer2caloparticle_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2CP",
1192                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1193                                                      ], ncols=10)
1194 
1195 #--------------------------------------------------------------------------------------------
1196 # z+
1197 #--------------------------------------------------------------------------------------------
1198 _common_score = {"title": "Score CaloParticle to LayerClusters in z+",
1199                  "stat": False,
1200                  "ymin": 0.1,
1201                  "ymax": 1000,
1202                  "xmin": 0,
1203                  "xmax": 1,
1204                  "drawStyle": "hist",
1205                  "lineWidth": 1,
1206                  "ylog": True
1207                 }
1208 _common_score.update(_legend_common)
1209 _score_caloparticle_to_layerclusters_zplus = PlotGroup("score_caloparticle_to_layercluster", [
1210         Plot("Score_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(maxlayerzm,maxlayerzp)
1211         ], ncols=10 )
1212 
1213 _common_score = {"title": "Score LayerCluster to CaloParticles in z+",
1214                  "stat": False,
1215                  "ymin": 0.1,
1216                  "ymax": 1000,
1217                  "xmin": 0,
1218                  "xmax": 1,
1219                  "drawStyle": "hist",
1220                  "lineWidth": 1,
1221                  "ylog": True
1222                 }
1223 _common_score.update(_legend_common)
1224 _score_layercluster_to_caloparticles_zplus = PlotGroup("score_layercluster_to_caloparticle", [
1225         Plot("Score_layercl2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_score) for i in range(maxlayerzm,maxlayerzp)
1226         ], ncols=8 )
1227 
1228 _common_shared= {"title": "Shared Energy CaloParticle To Layer Cluster in z+",
1229                  "stat": False,
1230                  "legend": False,
1231                 }
1232 _common_shared.update(_legend_common)
1233 _shared_plots_zplus = [Plot("SharedEnergy_caloparticle2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)]
1234 _shared_plots_zplus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1235 _shared_plots_zplus.extend([Plot("SharedEnergy_caloparticle2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1236 _sharedEnergy_caloparticle_to_layercluster_zplus = PlotGroup("sharedEnergy_caloparticle_to_layercluster", _shared_plots_zplus, ncols=8)
1237 
1238 _common_shared= {"title": "Shared Energy Layer Cluster To CaloParticle in z+",
1239                  "stat": False,
1240                  "legend": False,
1241                 }
1242 _common_shared.update(_legend_common)
1243 _shared_plots2_zplus = [Plot("SharedEnergy_layercluster2caloparticle_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)]
1244 _common_shared= {"title": "Shared Energy Layer Cluster To Best CaloParticle in z+",
1245                  "stat": False,
1246                  "legend": False,
1247                  "ymin": 0,
1248                  "ymax": 1,
1249                 }
1250 _common_shared.update(_legend_common)
1251 _shared_plots2_zplus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1252 _shared_plots2_zplus.extend([Plot("SharedEnergy_layercl2caloparticle_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_shared) for i in range(maxlayerzm,maxlayerzp)])
1253 _sharedEnergy_layercluster_to_caloparticle_zplus = PlotGroup("sharedEnergy_layercluster_to_caloparticle", _shared_plots2_zplus, ncols=8)
1254 
1255 
1256 _common_assoc = {#"title": "Cell Association Table in z+",
1257                  "stat": False,
1258                  "legend": False,
1259                  "xbinlabels": ["", "TN(pur)", "FN(ineff.)", "FP(fake)", "TP(eff)"],
1260                  "xbinlabeloption": "h",
1261                  "drawStyle": "hist",
1262                  "ymin": 0.1,
1263                  "ymax": 10000,
1264                  "ylog": True}
1265 _common_assoc.update(_legend_common)
1266 _cell_association_table_zplus = PlotGroup("cellAssociation_table", [
1267         Plot("cellAssociation_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_assoc) for i in range(maxlayerzm,maxlayerzp)
1268         ], ncols=8 )
1269 
1270 
1271 _bin_count = maxlayerzm
1272 _xtitle = "Layer Numbers in z+"
1273 _common_eff = {"stat": False, "legend": False, "ymin":0.0, "ymax":1.1}
1274 _effplots_zplus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1275 _effplots_zplus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1276 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1277 _common_eff["xmin"] = _bin_count
1278 _common_eff["xmax"] = _common_eff["xmin"] + maxlayerzm
1279 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1280 _effplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Efficiency", **_common_eff)]
1281 _efficiencies_zplus_eta = PlotGroup("Efficiencies_vs_eta", _effplots_zplus_eta, ncols=10)
1282 _efficiencies_zplus_phi = PlotGroup("Efficiencies_vs_phi", _effplots_zplus_phi, ncols=10)
1283 _efficiencies_zplus = PlotGroup("Efficiencies_vs_layer", _effplots_zplus, ncols=1)
1284 
1285 _common_dup = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1}
1286 _dupplots_zplus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1287 _dupplots_zplus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1288 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1289 _common_dup["xmin"] = _bin_count
1290 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1291 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1292 _dupplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Duplicates", **_common_dup)]
1293 _duplicates_zplus_eta = PlotGroup("Duplicates_vs_eta", _dupplots_zplus_eta, ncols=10)
1294 _duplicates_zplus_phi = PlotGroup("Duplicates_vs_phi", _dupplots_zplus_phi, ncols=10)
1295 _duplicates_zplus = PlotGroup("Duplicates_vs_layer", _dupplots_zplus, ncols=1)
1296 
1297 _common_fake = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1}
1298 _fakeplots_zplus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1299 _fakeplots_zplus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1300 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1301 _common_fake["xmin"] = _bin_count
1302 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1303 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1304 _fakeplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Fake Rate", **_common_fake)]
1305 _fakes_zplus_eta = PlotGroup("FakeRate_vs_eta", _fakeplots_zplus_eta, ncols=10)
1306 _fakes_zplus_phi = PlotGroup("FakeRate_vs_phi", _fakeplots_zplus_phi, ncols=10)
1307 _fakes_zplus = PlotGroup("FakeRate_vs_layer", _fakeplots_zplus, ncols=1)
1308 
1309 _common_merge = {"stat": False, "legend": False, "ymin": 0.0, "ymax": 1.1}
1310 _mergeplots_zplus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1311 _mergeplots_zplus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1312 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloption": "v", "ymin": 0.0, "ymax": 1.1}
1313 _common_merge["xmin"] = _bin_count
1314 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1315 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1316 _mergeplots_zplus = [Plot("globalEfficiencies", xtitle=_xtitle, ytitle="Merge Rate", **_common_merge)]
1317 _merges_zplus_eta = PlotGroup("MergeRate_vs_eta", _mergeplots_zplus_eta, ncols=10)
1318 _merges_zplus_phi = PlotGroup("MergeRate_vs_phi", _mergeplots_zplus_phi, ncols=10)
1319 _merges_zplus = PlotGroup("MergeRate_vs_layer", _mergeplots_zplus, ncols=1)
1320 
1321 #--------------------------------------------------------------------------------------------
1322 # SimClusters
1323 #--------------------------------------------------------------------------------------------
1324 
1325 _common_sc_score = {"title": "Score SimCluster to LayerClusters in z-",
1326                  "stat": False,
1327                  "ymin": 0.1,
1328                  "ymax": 10**6,
1329                  "xmin": 0,
1330                  "xmax": 1,
1331                  "drawStyle": "hist",
1332                  "lineWidth": 1,
1333                  "ylog": True
1334                 }
1335 _common_sc_score.update(_legend_common)
1336 _score_simcluster_to_layerclusters_zminus = PlotGroup("score_simcluster_to_layercluster_zminus", [
1337         Plot("Score_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(0,maxlayerzm)
1338         ], ncols=10 )
1339 
1340 _common_sc_score = {"title": "Score LayerCluster to SimClusters in z-",
1341                  "stat": False,
1342                  "ymin": 0.1,
1343                  "ymax": 10**6,
1344                  "xmin": 0,
1345                  "xmax": 1,
1346                  "drawStyle": "hist",
1347                  "lineWidth": 1,
1348                  "ylog": True
1349                 }
1350 _common_sc_score.update(_legend_common)
1351 _score_layercluster_to_simclusters_zminus = PlotGroup("score_layercluster_to_simcluster_zminus", [
1352         Plot("Score_layercl2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(0,maxlayerzm)
1353         ], ncols=8 )
1354 
1355 _common_sc_shared= {"title": "Shared Energy SimCluster To Layer Cluster in z-",
1356                  "stat": False,
1357                  "legend": False,
1358                 }
1359 _common_sc_shared.update(_legend_common)
1360 _shared_sc_plots_zminus = [Plot("SharedEnergy_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)]
1361 _shared_sc_plots_zminus.extend([Plot("SharedEnergy_simcluster2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1362 _shared_sc_plots_zminus.extend([Plot("SharedEnergy_simcluster2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1363 _sharedEnergy_simcluster_to_layercluster_zminus = PlotGroup("sharedEnergy_simcluster_to_layercluster_zminus", _shared_sc_plots_zminus, ncols=8)
1364 
1365 _common_sc_shared= {"title": "Shared Energy Layer Cluster To SimCluster in z-",
1366                  "stat": False,
1367                  "legend": False,
1368                 }
1369 _common_sc_shared.update(_legend_common)
1370 _shared_plots2_sc_zminus = [Plot("SharedEnergy_layercluster2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)]
1371 _common_sc_shared= {"title": "Shared Energy Layer Cluster To Best SimCluster in z-",
1372                  "stat": False,
1373                  "legend": False,
1374                  "ymin": 0,
1375                  "ymax": 1
1376                 }
1377 _common_sc_shared.update(_legend_common)
1378 _shared_plots2_sc_zminus.extend([Plot("SharedEnergy_layercl2simcluster_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1379 _shared_plots2_sc_zminus.extend([Plot("SharedEnergy_layercl2simcluster_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(0,maxlayerzm)])
1380 _sharedEnergy_layercluster_to_simcluster_zminus = PlotGroup("sharedEnergy_layercluster_to_simcluster_zminus", _shared_plots2_sc_zminus, ncols=8)
1381 
1382 _bin_count = 0
1383 _xbinlabels = [ "L{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1384 _common_eff = {"stat": False, "legend": False}
1385 _effplots_sc_zminus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1386 _effplots_sc_zminus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(0,maxlayerzm)]
1387 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1388 _common_eff["xmin"] = _bin_count
1389 _common_eff["xmax"] = maxlayerzm
1390 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1391 _effplots_sc_zminus = [Plot("globalEfficiencies_zminus", xtitle="Global Efficiencies in z-", **_common_eff)]
1392 _efficiencies_sc_zminus_eta = PlotGroup("Efficiencies_vs_eta_zminus", _effplots_sc_zminus_eta, ncols=10)
1393 _efficiencies_sc_zminus_phi = PlotGroup("Efficiencies_vs_phi_zminus", _effplots_sc_zminus_phi, ncols=10)
1394 _efficiencies_sc_zminus     = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _effplots_sc_zminus, ncols=4)
1395 
1396 _common_dup = {"stat": False, "legend": False}
1397 _dupplots_sc_zminus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1398 _dupplots_sc_zminus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(0,maxlayerzm)]
1399 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1400 _common_dup["xmin"] = _bin_count
1401 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1402 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1403 _dupplots_sc_zminus = [Plot("globalDublicates_zminus", xtitle="Global Duplicates in z-", **_common_dup)]
1404 _duplicates_sc_zminus_eta = PlotGroup("Duplicates_vs_eta_zminus", _dupplots_sc_zminus_eta, ncols=10)
1405 _duplicates_sc_zminus_phi = PlotGroup("Duplicates_vs_phi_zminus", _dupplots_sc_zminus_phi, ncols=10)
1406 _duplicates_sc_zminus     = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _dupplots_sc_zminus, ncols=4)
1407 
1408 _common_fake = {"stat": False, "legend": False}
1409 _fakeplots_sc_zminus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1410 _fakeplots_sc_zminus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(0,maxlayerzm)]
1411 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1412 _common_fake["xmin"] = _bin_count
1413 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1414 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1415 _common_fake["xbinlabels"] = [ "L{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1416 _common_fake["xbinlabelsize"] = 10.
1417 _fakeplots_sc_zminus = [Plot("globalFakes_zminus", xtitle="Global Fake Rate in z-", **_common_fake)]
1418 _fakes_sc_zminus_eta = PlotGroup("FakeRate_vs_eta_zminus", _fakeplots_sc_zminus_eta, ncols=10)
1419 _fakes_sc_zminus_phi = PlotGroup("FakeRate_vs_phi_zminus", _fakeplots_sc_zminus_phi, ncols=10)
1420 _fakes_sc_zminus     = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _fakeplots_sc_zminus, ncols=4)
1421 
1422 _common_merge = {"stat": False, "legend": False}
1423 _mergeplots_sc_zminus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1424 _mergeplots_sc_zminus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(0,maxlayerzm)]
1425 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z-", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1426 _common_merge["xmin"] = _bin_count
1427 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1428 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1429 _common_merge["xbinlabels"] = [ "L{:02d}".format(i+1) for i in range(0,maxlayerzm) ]
1430 _common_merge["xbinlabelsize"] = 10.
1431 _mergeplots_sc_zminus = [Plot("globalMergeRate_zminus", xtitle="Global merge Rate in z-", **_common_merge)]
1432 _merges_sc_zminus_eta = PlotGroup("MergeRate_vs_eta_zminus", _mergeplots_sc_zminus_eta, ncols=10)
1433 _merges_sc_zminus_phi = PlotGroup("MergeRate_vs_phi_zminus", _mergeplots_sc_zminus_phi, ncols=10)
1434 _merges_sc_zminus     = PlotGroup("Eff_Dup_Fake_Merge_Global_zminus", _mergeplots_sc_zminus, ncols=4)
1435 
1436 _common_energy_score = dict(removeEmptyBins=False, xbinlabelsize=10,
1437     stat=True,
1438     xbinlabeloption="d",
1439     ncols=1,
1440     ylog=True,
1441     xlog=True,
1442     xmin=0.001,
1443     xmax=1.,
1444     ymin=0.01,
1445     ymax=1.)
1446 _energyscore_sc2lc_zminus = PlotGroup("Energy_vs_Score_SC2LC_zminus", [Plot("Energy_vs_Score_simcluster2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_SC2LC",
1447                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1448                                                      ], ncols=10)
1449 
1450 _energyscore_sc2lc_zplus = PlotGroup("Energy_vs_Score_SC2LC_zplus", [Plot("Energy_vs_Score_simcluster2layer_perlayer{:02d}".format(i), title="Energy_vs_Score_SC2LC",
1451                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1452                                                      ], ncols=10)
1453 
1454 _common_energy_score["xlog"]=False
1455 _common_energy_score["ylog"]=False
1456 _common_energy_score["xmin"]=-0.1
1457 _energyscore_lc2sc_zminus = PlotGroup("Energy_vs_Score_LC2SC_zminus", [Plot("Energy_vs_Score_layer2simcluster_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2SC",
1458                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(0, maxlayerzm)
1459                                                      ], ncols=10)
1460 _energyscore_lc2sc_zplus = PlotGroup("Energy_vs_Score_LC2SC_zplus", [Plot("Energy_vs_Score_layer2simcluster_perlayer{:02d}".format(i), title="Energy_vs_Score_LC2SC",
1461                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_energy_score) for i in range(maxlayerzm,maxlayerzp)
1462                                                      ], ncols=10)
1463 
1464 #--------------------------------------------------------------------------------------------
1465 # z+
1466 #--------------------------------------------------------------------------------------------
1467 _common_sc_score = {"title": "Score SimCluster to LayerClusters in z+",
1468                  "stat": False,
1469                  "ymin": 0.1,
1470                  "ymax": 1000,
1471                  "xmin": 0,
1472                  "xmax": 1,
1473                  "drawStyle": "hist",
1474                  "lineWidth": 1,
1475                  "ylog": True
1476                 }
1477 _common_sc_score.update(_legend_common)
1478 _score_simcluster_to_layerclusters_zplus = PlotGroup("score_simcluster_to_layercluster_zplus", [
1479         Plot("Score_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(maxlayerzm,maxlayerzp)
1480         ], ncols=10 )
1481 
1482 _common_sc_score = {"title": "Score LayerCluster to SimClusters in z+",
1483                  "stat": False,
1484                  "ymin": 0.1,
1485                  "ymax": 1000,
1486                  "xmin": 0,
1487                  "xmax": 1,
1488                  "drawStyle": "hist",
1489                  "lineWidth": 1,
1490                  "ylog": True
1491                 }
1492 _common_sc_score.update(_legend_common)
1493 _score_layercluster_to_simclusters_zplus = PlotGroup("score_layercluster_to_simcluster_zplus", [
1494         Plot("Score_layercl2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_score) for i in range(maxlayerzm,maxlayerzp)
1495         ], ncols=8 )
1496 
1497 _common_sc_shared= {"title": "Shared Energy SimCluster To Layer Cluster in z+",
1498                  "stat": False,
1499                  "legend": False,
1500                 }
1501 _common_sc_shared.update(_legend_common)
1502 _shared_sc_plots_zplus = [Plot("SharedEnergy_simcluster2layercl_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)]
1503 _shared_sc_plots_zplus.extend([Plot("SharedEnergy_simcluster2layercl_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1504 _shared_sc_plots_zplus.extend([Plot("SharedEnergy_simcluster2layercl_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1505 _sharedEnergy_simcluster_to_layercluster_zplus = PlotGroup("sharedEnergy_simcluster_to_layercluster_zplus", _shared_sc_plots_zplus, ncols=8)
1506 
1507 _common_sc_shared= {"title": "Shared Energy Layer Cluster To SimCluster in z+",
1508                  "stat": False,
1509                  "legend": False,
1510                 }
1511 _common_sc_shared.update(_legend_common)
1512 _shared_plots2_sc_zplus = [Plot("SharedEnergy_layercluster2simcluster_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)]
1513 _common_sc_shared= {"title": "Shared Energy Layer Cluster To Best SimCluster in z+",
1514                  "stat": False,
1515                  "legend": False,
1516                  "ymin": 0,
1517                  "ymax": 1,
1518                 }
1519 _common_sc_shared.update(_legend_common)
1520 _shared_plots2_sc_zplus.extend([Plot("SharedEnergy_layercl2simcluster_vs_eta_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1521 _shared_plots2_sc_zplus.extend([Plot("SharedEnergy_layercl2simcluster_vs_phi_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_sc_shared) for i in range(maxlayerzm,maxlayerzp)])
1522 _sharedEnergy_layercluster_to_simcluster_zplus = PlotGroup("sharedEnergy_layercluster_to_simcluster_zplus", _shared_plots2_sc_zplus, ncols=8)
1523 
1524 
1525 _bin_count = maxlayerzm
1526 _common_eff = {"stat": False, "legend": False}
1527 _effplots_sc_zplus_eta = [Plot("effic_eta_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1528 _effplots_sc_zplus_phi = [Plot("effic_phi_layer{:02d}".format(i), xtitle="", **_common_eff) for i in range(maxlayerzm,maxlayerzp)]
1529 _common_eff = {"stat": False, "legend": False, "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1530 _common_eff["xmin"] = _bin_count
1531 _common_eff["xmax"] = _common_eff["xmin"] + maxlayerzm
1532 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1533 _effplots_sc_zplus = [Plot("globalEfficiencies_zplus", xtitle="Global Efficiencies in z+", **_common_eff)]
1534 _efficiencies_sc_zplus_eta = PlotGroup("Efficiencies_vs_eta_zplus", _effplots_sc_zplus_eta, ncols=10)
1535 _efficiencies_sc_zplus_phi = PlotGroup("Efficiencies_vs_phi_zplus", _effplots_sc_zplus_phi, ncols=10)
1536 _efficiencies_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _effplots_sc_zplus, ncols=4)
1537 
1538 _common_dup = {"stat": False, "legend": False}
1539 _dupplots_sc_zplus_eta = [Plot("duplicate_eta_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1540 _dupplots_sc_zplus_phi = [Plot("duplicate_phi_layer{:02d}".format(i), xtitle="", **_common_dup) for i in range(maxlayerzm,maxlayerzp)]
1541 _common_dup = {"stat": False, "legend": False, "title": "Global Duplicates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1542 _common_dup["xmin"] = _bin_count
1543 _common_dup["xmax"] = _common_dup["xmin"] + maxlayerzm
1544 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1545 _dupplots_sc_zplus = [Plot("globalDuplicates_zplus", xtitle="Global Duplicates in z+", **_common_dup)]
1546 _duplicates_sc_zplus_eta = PlotGroup("Duplicates_vs_eta_zplus", _dupplots_sc_zplus_eta, ncols=10)
1547 _duplicates_sc_zplus_phi = PlotGroup("Duplicates_vs_phi_zplus", _dupplots_sc_zplus_phi, ncols=10)
1548 _duplicates_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _dupplots_sc_zplus, ncols=4)
1549 
1550 _common_fake = {"stat": False, "legend": False}
1551 _fakeplots_sc_zplus_eta = [Plot("fake_eta_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1552 _fakeplots_sc_zplus_phi = [Plot("fake_phi_layer{:02d}".format(i), xtitle="", **_common_fake) for i in range(maxlayerzm,maxlayerzp)]
1553 _common_fake = {"stat": False, "legend": False, "title": "Global Fake Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1554 _common_fake["xmin"] = _bin_count
1555 _common_fake["xmax"] = _common_fake["xmin"] + maxlayerzm
1556 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1557 _fakeplots_sc_zplus = [Plot("globalFakeRate_zplus", xtitle="Global Fake Rate in z+", **_common_fake)]
1558 _fakes_sc_zplus_eta = PlotGroup("FakeRate_vs_eta_zplus", _fakeplots_sc_zplus_eta, ncols=10)
1559 _fakes_sc_zplus_phi = PlotGroup("FakeRate_vs_phi_zplus", _fakeplots_sc_zplus_phi, ncols=10)
1560 _fakes_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _fakeplots_sc_zplus, ncols=4)
1561 
1562 _common_merge = {"stat": False, "legend": False}
1563 _mergeplots_sc_zplus_eta = [Plot("merge_eta_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1564 _mergeplots_sc_zplus_phi = [Plot("merge_phi_layer{:02d}".format(i), xtitle="", **_common_merge) for i in range(maxlayerzm,maxlayerzp)]
1565 _common_merge = {"stat": False, "legend": False, "title": "Global Merge Rates in z+", "xbinlabels": _xbinlabels, "xbinlabelsize": 12, "xbinlabeloptions": "v"}
1566 _common_merge["xmin"] = _bin_count
1567 _common_merge["xmax"] = _common_merge["xmin"] + maxlayerzm
1568 _bin_count += 4*maxlayerzm # 2 for the eta{-,+} and 2 for phi{+,-}
1569 _mergeplots_sc_zplus = [Plot("globalMergeRate_zplus", xtitle="Global merge Rate in z+", **_common_merge)]
1570 _merges_sc_zplus_eta = PlotGroup("MergeRate_vs_eta_zplus", _mergeplots_sc_zplus_eta, ncols=10)
1571 _merges_sc_zplus_phi = PlotGroup("MergeRate_vs_phi_zplus", _mergeplots_sc_zplus_phi, ncols=10)
1572 _merges_sc_zplus = PlotGroup("Eff_Dup_Fake_Merge_Global_zplus", _mergeplots_sc_zplus, ncols=4)
1573 
1574 #Just in case we add some plots below to be on the safe side.
1575 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65 }
1576 
1577 #--------------------------------------------------------------------------------------------
1578 # TRACKSTERS
1579 #--------------------------------------------------------------------------------------------
1580 _common_score = {"stat": False, "legend": False
1581                  ,"ymin": 0.1
1582                  ,"ymax": 100000
1583                  ,"xmin": 0
1584                  #,"xmax": 1.0
1585                  ,"drawStyle": "hist"
1586                  ,"lineWidth": 1
1587                  ,"ylog": True
1588                  ,"xlog": True
1589                  ,"xtitle": "Default"
1590                 }
1591 _common_score.update(_legend_common)
1592 
1593 score_to_trackster = ["","Pur","Dupl"]
1594 _score_caloparticle_to_tracksters = PlotGroup("ScoreCaloParticlesToTracksters", [], ncols=len(score_to_trackster))
1595 _score_simtrackster_to_tracksters = PlotGroup("ScoreSimTrackstersToTracksters", [], ncols=len(score_to_trackster))
1596 for score in score_to_trackster:
1597     _score_caloparticle_to_tracksters.append(Plot("Score"+score+"_caloparticle2trackster", **_common_score))
1598     _score_simtrackster_to_tracksters.append(Plot("Score"+score+"_simtrackster2trackster", **_common_score))
1599 
1600 score_trackster_to = ["","Fake","Merge"]
1601 _score_trackster_to_caloparticles = PlotGroup("ScoreTrackstersToCaloParticles", [], ncols=len(score_trackster_to))
1602 _score_trackster_to_simtracksters = PlotGroup("ScoreTrackstersToSimTracksters", [], ncols=len(score_trackster_to))
1603 for score in score_trackster_to:
1604     _score_trackster_to_caloparticles.append(Plot("Score"+score+"_trackster2caloparticle", **_common_score))
1605     _score_trackster_to_simtracksters.append(Plot("Score"+score+"_trackster2simtrackster", **_common_score))
1606 
1607 
1608 _common_shared = {"stat": False, "legend": False, "xtitle": 'Default', "ytitle": 'Default'}
1609 _common_shared.update(_legend_common)
1610 _common_energy_score = dict(removeEmptyBins=True, xbinlabelsize=10, xbinlabeloption="d", drawStyle="COLZ", adjustMarginRight=0.1, legend=False, xtitle='Default', ytitle='Default')
1611 #_common_energy_score["ymax"] = 1.
1612 #_common_energy_score["xmax"] = 1.0
1613 
1614 _sharedEnergy_to_trackster = []
1615 _sharedEnergy_trackster_to = []
1616 versions = ["", "_assoc", "_assoc_vs_eta", "_assoc_vs_phi"]
1617 
1618 _energyscore_to_trackster = []
1619 _energyscore_trackster_to = []
1620 en_vs_score = ["","best","secBest"]
1621 for val in simDict:
1622     _sharedEnergy_to_trackster.append(PlotGroup("SharedEnergy_"+val+"ToTrackster", [], ncols=2))
1623     _sharedEnergy_trackster_to.append(PlotGroup("SharedEnergy_TracksterTo"+val, [], ncols=2))
1624     for ver in versions:
1625         _sharedEnergy_to_trackster[-1].append(Plot("SharedEnergy_"+val.lower()+"2trackster"+ver, **_common_shared))
1626         _sharedEnergy_trackster_to[-1].append(Plot("SharedEnergy_trackster2"+val.lower()+ver, **_common_shared))
1627 
1628     _energyscore_to_trackster.append(PlotGroup("Energy_vs_Score_"+val+"ToTracksters", [], ncols=len(en_vs_score)))
1629     _energyscore_trackster_to.append(PlotGroup("Energy_vs_Score_TrackstersTo"+val, [], ncols=len(en_vs_score)))
1630     for ver in en_vs_score:
1631         _energyscore_to_trackster[-1].append(Plot("Energy_vs_Score_"+val.lower()+"2"+ver+"Trackster", **_common_energy_score))
1632         _energyscore_trackster_to[-1].append(Plot("Energy_vs_Score_trackster2"+ver+val, **_common_energy_score))
1633 
1634 _common_assoc = {#"title": "Cell Association Table",
1635                  "stat": False,
1636                  "legend": False,
1637                  "xbinlabels": ["", "TN(pur)", "FN(ineff.)", "FP(fake)", "TP(eff)"],
1638                  "xbinlabeloption": "h",
1639                  "drawStyle": "hist",
1640                  "ymin": 0.1,
1641                  "ymax": 10000000,
1642                  "ylog": True}
1643 _common_assoc.update(_legend_common)
1644 _cell_association_table = PlotGroup("cellAssociation_table", [
1645         Plot("cellAssociation_perlayer{:02d}".format(i), xtitle="Layer {:02d} in z-".format(i%maxlayerzm+1) if (i<maxlayerzm) else "Layer {:02d} in z+".format(i%maxlayerzm+1), **_common_assoc) for i in range(0,maxlayerzm)
1646         ], ncols=8 )
1647 
1648 # Trackster plots
1649 _common_metric = {"stat": False, "legend": False, "xbinlabelsize": 14, "xbinlabeloption": "d", "ymin": 0.0, "ymax": 1.1}
1650 _common_metric_logx = _common_metric.copy()
1651 _common_metric_logx["xlog"] = True
1652 
1653 _efficiencies = []
1654 _purities = []
1655 _duplicates = []
1656 _fakes = []
1657 _merges = []
1658 for val in simDict:
1659     _effplots = [Plot("globalEfficiencies", xtitle="", **_common_metric)]
1660     _purityplots = [Plot("globalEfficiencies", xtitle="", **_common_metric)]
1661     _dupplots = [Plot("globalEfficiencies", xtitle="", **_common_metric)]
1662     _fakeplots = [Plot("globalEfficiencies", xtitle="", **_common_metric)]
1663     _mergeplots = [Plot("globalEfficiencies", xtitle="", **_common_metric)]
1664 
1665     for v in variables:
1666         kwargs = _common_metric_logx if v in ["energy","pt"] else _common_metric
1667         _effplots.extend([Plot("effic_"+v+simDict[val], xtitle = variables[v][0]+variables[v][1], **kwargs)])
1668         _purityplots.extend([Plot("purity_"+v+simDict[val], xtitle = variables[v][0]+variables[v][1], **kwargs)])
1669         _dupplots.extend([Plot("duplicate_"+v+simDict[val], xtitle = variables[v][0]+variables[v][1], **kwargs)])
1670         _fakeplots.extend([Plot("fake_"+v+simDict[val], xtitle = variables[v][0]+variables[v][1], **kwargs)])
1671         _mergeplots.extend([Plot("merge_"+v+simDict[val], xtitle = variables[v][0]+variables[v][1], **kwargs)])
1672 
1673     _efficiencies.append(PlotGroup("Efficiencies"+simDict[val], _effplots, ncols=3))
1674     _purities.append(PlotGroup("Purities"+simDict[val], _purityplots, ncols=3))
1675     _duplicates.append(PlotGroup("Duplicates"+simDict[val], _dupplots, ncols=3))
1676     _fakes.append(PlotGroup("FakeRate"+simDict[val], _fakeplots, ncols=3))
1677     _merges.append(PlotGroup("MergeRate"+simDict[val], _mergeplots, ncols=3))
1678 
1679 
1680 #Coming back to the usual box definition
1681 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "xtitle": "Default"}
1682 
1683 _tottracksternum = PlotGroup("TotalNumberofTracksters", [
1684   Plot("tottracksternum", **_common)
1685 ],ncols=1)
1686 
1687 _trackster_layernum_plots = [Plot("trackster_firstlayer", **_common)]
1688 _trackster_layernum_plots.extend([Plot("trackster_lastlayer", **_common)])
1689 _trackster_layernum_plots.extend([Plot("trackster_layersnum", **_common)])
1690 _trackster_layernum = PlotGroup("LayerNumbersOfTrackster", _trackster_layernum_plots, ncols=3)
1691 
1692 _common["xmax"] = 50
1693 _clusternum_in_trackster = PlotGroup("NumberofLayerClustersinTrackster",[
1694   Plot("clusternum_in_trackster", **_common)
1695 ],ncols=1)
1696 
1697 _common = {"stat": True, "drawStyle": "pcolz", "staty": 0.65, "xtitle": "Default", "ytitle": "Default"}
1698 
1699 _clusternum_in_trackster_vs_layer = PlotGroup("NumberofLayerClustersinTracksterPerLayer",[
1700   Plot("clusternum_in_trackster_vs_layer", **_common)
1701 ],ncols=1)
1702 
1703 _common["scale"] = 100.
1704 #, ztitle = "% of clusters" normalizeToUnitArea=True
1705 _multiplicity_numberOfEventsHistogram = hgcVal_dqm + "ticlTrackstersMerge/multiplicity_numberOfEventsHistogram"
1706 _multiplicity_zminus_numberOfEventsHistogram = hgcVal_dqm + "ticlTrackstersMerge/multiplicity_zminus_numberOfEventsHistogram"
1707 _multiplicity_zplus_numberOfEventsHistogram = hgcVal_dqm + "ticlTrackstersMerge/multiplicity_zplus_numberOfEventsHistogram"
1708 
1709 _multiplicityOfLCinTST_plots = [Plot("multiplicityOfLCinTST",
1710                                 drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)]
1711 _multiplicityOfLCinTST_plots.extend([Plot("multiplicityOfLCinTST_vs_layerclusterenergy",
1712                                 drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)])
1713 _multiplicityOfLCinTST_plots.extend([Plot("multiplicityOfLCinTST_vs_layercluster_zplus",
1714                                 drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)])
1715 _multiplicityOfLCinTST_plots.extend([Plot("multiplicityOfLCinTST_vs_layercluster_zminus",
1716                                 drawCommand = "colz text45", normalizeToNumberOfEvents = True, **_common)])
1717 _multiplicityOfLCinTST = PlotGroup("MultiplicityofLCinTST", _multiplicityOfLCinTST_plots, ncols=2)
1718 
1719 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1720 #--------------------------------------------------------------------------------------------
1721 # z-
1722 #--------------------------------------------------------------------------------------------
1723 _clusternum_in_trackster_perlayer_zminus_EE = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zminus_EE", [
1724   Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm)
1725 ], ncols=7)
1726 
1727 _clusternum_in_trackster_perlayer_zminus_FH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zminus_FH", [
1728   Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzm,lastLayerFHzm)
1729 ], ncols=7)
1730 
1731 _clusternum_in_trackster_perlayer_zminus_BH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zminus_BH", [
1732   Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzm,maxlayerzm)
1733 ], ncols=7)
1734 
1735 #--------------------------------------------------------------------------------------------
1736 # z+
1737 #--------------------------------------------------------------------------------------------
1738 _clusternum_in_trackster_perlayer_zplus_EE = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zplus_EE", [
1739   Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(maxlayerzm,lastLayerEEzp)
1740 ], ncols=7)
1741 
1742 _clusternum_in_trackster_perlayer_zplus_FH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zplus_FH", [
1743   Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerEEzp,lastLayerFHzp)
1744 ], ncols=7)
1745 
1746 _clusternum_in_trackster_perlayer_zplus_BH = PlotGroup("NumberofLayerClustersinTracksterPerLayer_zplus_BH", [
1747   Plot("clusternum_in_trackster_perlayer{:02d}".format(i), xtitle="", **_common) for i in range(lastLayerFHzp,maxlayerzp)
1748 ], ncols=7)
1749 
1750 # Coming back to the usual box definition
1751 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "xtitle": "Default"}
1752 
1753 # Some tracksters quantities
1754 _trackster_eppe_plots = [Plot("trackster_eta", **_common)]
1755 _trackster_eppe_plots.extend([Plot("trackster_phi", **_common)])
1756 _trackster_eppe_plots.extend([Plot("trackster_pt", **_common)])
1757 _trackster_eppe_plots.extend([Plot("trackster_energy", **_common)])
1758 _trackster_eppe = PlotGroup("EtaPhiPtEnergy", _trackster_eppe_plots, ncols=2)
1759 
1760 _trackster_xyz_plots = [Plot("trackster_x", **_common)]
1761 _trackster_xyz_plots.extend([Plot("trackster_y", **_common)])
1762 _trackster_xyz_plots.extend([Plot("trackster_z", **_common)])
1763 _trackster_xyz = PlotGroup("XYZ", _trackster_xyz_plots, ncols=3)
1764 
1765 #--------------------------------------------------------------------------------------------
1766 # CANDIDATES
1767 #--------------------------------------------------------------------------------------------
1768 
1769 # all candidates
1770 cand_plots_names = ["N of tracksters in candidate", "Candidates PDG Id", "Candidates charge", "Candidates type"]
1771 _candidate_nts_plots = []
1772 for name in cand_plots_names:
1773     _candidate_nts_plots.extend([Plot(name, **_common)])
1774 _candidatesPlots1 = PlotGroup("General_plots_pid_type", _candidate_nts_plots, ncols=2)
1775 
1776 cand_plots_names = ["Candidates pT", "Candidates raw energy", "Candidates regressed energy"]
1777 _candidate_nts_plots = []
1778 for name in cand_plots_names:
1779     _candidate_nts_plots.extend([Plot(name, **_common)])
1780 _candidatesPlots2 = PlotGroup("General_plots_pt_energy", _candidate_nts_plots, ncols=3)
1781 
1782 _candidatesPlots = [_candidatesPlots1, _candidatesPlots2]
1783 
1784 # divided by candidate's type
1785 cand_type = ["charged_hadrons", "electrons", "muons", "neutral_hadrons", "neutral_pions", "photons"]
1786 cand_plots_names = [" candidates PDG Id", " candidates charge", " candidates type"]
1787 cand_plots_names_den = ["den_fake_cand_vs_energy_", "den_fake_cand_vs_eta_", "den_fake_cand_vs_phi_", "den_fake_cand_vs_pt_"]
1788 
1789 _all_cand_type_plots = []
1790 for ct in cand_type:
1791     cand_type_plots = [Plot("N of tracksters in candidate for "+ct, title="N of tracksters in candidate for "+ct.replace("_", " "), **_common)]
1792     for name in cand_plots_names:
1793         cand_type_plots.extend([Plot(ct+name, title=ct.replace("_", " ")+name, **_common)])
1794     _all_cand_type_plots.append(cand_type_plots)
1795 
1796 _all_cand_ene_plots = []
1797 for ct in cand_type:
1798     name = "candidates regressed energy"
1799     cand_type_plots = [Plot(ct+name, title=ct.replace("_", " ")+" "+name, **_common)]
1800     for name in cand_plots_names_den:
1801         cand_type_plots.extend([Plot(name+ct, title=ct.replace("_", " ")+" candidates "+name.replace("den_fake_cand_vs_", "").replace("_", ""), **_common)])
1802     _all_cand_ene_plots.append(cand_type_plots)
1803 
1804 #efficiency and fake
1805 _common_eff_fake = {"stat": False, "legend": False, "xbinlabelsize": 14, "xtitle": "Default", "xbinlabeloption": "d", "ymin": 0.0, "ymax": 1.1}
1806 _all_cand_eff_plots = []
1807 for ct in cand_type:
1808     cand_eff_plots = []
1809     for var in ["pt", "energy", "eta", "phi"]:
1810         for cut in ["track", "pid", "energy"]:
1811             cand_eff_plots.extend([Plot("eff_"+ct+"_"+cut+"_"+var, title=cut + " efficiency for "+ct.replace("_", " ")+" vs "+var, ytitle="Efficiency", **_common_eff_fake)])
1812     _all_cand_eff_plots.append(cand_eff_plots)
1813 
1814 _all_cand_fake_plots = []
1815 for ct in cand_type:
1816     cand_fake_plots = []
1817     for var in ["pt", "energy", "eta", "phi"]:
1818         for cut in ["track", "pid", "energy"]:
1819             cand_fake_plots.extend([Plot("fake_"+ct+"_"+cut+"_"+var, title=cut + " fake rate for "+ct.replace("_", " ")+" vs "+var, ytitle="Fake rate", **_common_eff_fake)])
1820     _all_cand_fake_plots.append(cand_fake_plots)
1821 
1822 _allCandidatesPlots = [[],[],[],[],[],[]]
1823 for i in range(6):
1824     _allCandidatesPlots[i].extend([PlotGroup(cand_type[i]+"_type", _all_cand_type_plots[i], ncols=2), PlotGroup(cand_type[i]+"_kin", _all_cand_ene_plots[i], ncols=3), PlotGroup(cand_type[i]+"_eff", _all_cand_eff_plots[i], ncols=3), PlotGroup(cand_type[i]+"_fake", _all_cand_fake_plots[i], ncols=3)])
1825 
1826 #--------------------------------------------------------------------------------------------
1827 # SIMHITS, DIGIS, RECHITS
1828 #--------------------------------------------------------------------------------------------
1829 
1830 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1831 
1832 _HitValidation = PlotGroup("HitValidation", [
1833                                              Plot("heeEnSim", title="SimHits_EE_Energy", **_common),
1834                                              Plot("hebEnSim", title="SimHits_HE_Silicon_Energy", **_common),
1835                                              Plot("hefEnSim", title="SimHits_HE_Scintillator_Energy", **_common),
1836                                              ])
1837 
1838 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1839 
1840 _Occupancy_EE_zplus = PlotGroup("Occupancy_EE_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_EE_zplus",
1841                                                         xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1842                                                         ], ncols=7)
1843 
1844 _Occupancy_HE_Silicon_zplus = PlotGroup("Occupancy_HE_Silicon_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_HE_zplus",
1845                                                                        xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1846                                                                        ], ncols=7)
1847 
1848 _Occupancy_HE_Scintillator_zplus = PlotGroup("Occupancy_HE_Scintillator_zplus", [Plot("HitOccupancy_Plus_layer_{:02d}".format(i), title="Occupancy_HE_Scintillator_zplus",
1849                                                                                          xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1850                                                                                          ], ncols=7)
1851 
1852 _Occupancy_EE_zminus = PlotGroup("Occupancy_EE_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_EE_zminus",
1853                                                          xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1854                                                          ], ncols=7)
1855 
1856 _Occupancy_HE_Silicon_zminus = PlotGroup("Occupancy_HE_Silicon_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_HE_Silicon_zminus",
1857                                                                          xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1858                                                                          ], ncols=7)
1859 
1860 _Occupancy_HE_Scintillator_zminus = PlotGroup("Occupancy_HE_Scintillator_zminus", [Plot("HitOccupancy_Minus_layer_{:02d}".format(i), title="Occupancy_HE_Scintillator_zminus",
1861                                                                                    xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1862                                                                                    ], ncols=7)
1863 
1864 _common_etaphi = dict(removeEmptyBins=False, xbinlabelsize=10, xbinlabeloption="d", ymin=None)
1865 
1866 _EtaPhi_EE_zplus = PlotGroup("EtaPhi_EE_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_EE_zplus",
1867                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(EE_min,EE_max+1)
1868                                                      ], ncols=7)
1869 
1870 _EtaPhi_HE_Silicon_zplus = PlotGroup("EtaPhi_HE_Silicon_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_HE_Silicon_zplus",
1871                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HESilicon_min,HESilicon_max+1)
1872                                                      ], ncols=7)
1873 
1874 _EtaPhi_HE_Scintillator_zplus = PlotGroup("EtaPhi_HE_Scintillator_zplus", [Plot("EtaPhi_Plus_layer_{:02d}".format(i), title="EtaPhi_HE_Scintillator_zplus",
1875                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HEScintillator_min,HEScintillator_max+1)
1876                                                      ], ncols=7)
1877 
1878 _EtaPhi_EE_zminus = PlotGroup("EtaPhi_EE_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_EE_zminus",
1879                                                       xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(EE_min,EE_max+1)
1880                                                       ], ncols=7)
1881 
1882 _EtaPhi_HE_Silicon_zminus = PlotGroup("EtaPhi_HE_Silicon_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_HE_Silicon_zminus",
1883                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HESilicon_min,HESilicon_max+1)
1884                                                      ], ncols=7)
1885 
1886 _EtaPhi_HE_Scintillator_zminus = PlotGroup("EtaPhi_HE_Scintillator_zminus", [Plot("EtaPhi_Minus_layer_{:02d}".format(i), title="EtaPhi_HE_Scintillator_zminus",
1887                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_etaphi) for i in range(HEScintillator_min,HEScintillator_max+1)
1888                                                      ], ncols=7)
1889 
1890 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1891 
1892 _Energy_EE_0 = PlotGroup("Energy_Time_0_EE", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_EE",
1893                                               xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1894                                               ], ncols=7)
1895 
1896 _Energy_HE_Silicon_0 = PlotGroup("Energy_Time_0_HE_Silicon", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_HE_Silicon",
1897                                                               xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1898                                                               ], ncols=7)
1899 
1900 _Energy_HE_Scintillator_0 = PlotGroup("Energy_Time_0_HE_Scintillator", [Plot("energy_time_0_layer_{:02d}".format(i), title="Energy_Time_0_HE_Scintillator",
1901                                                                         xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1902                                                                         ], ncols=7)
1903 
1904 _Energy_EE_1 = PlotGroup("Energy_Time_1_EE", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_EE",
1905                                               xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1906                                               ], ncols=7)
1907 
1908 _Energy_HE_Silicon_1 = PlotGroup("Energy_Time_1_HE_Silicon", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_HE_Silicon",
1909                                                               xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1910                                                               ], ncols=7)
1911 
1912 _Energy_HE_Scintillator_1 = PlotGroup("Energy_Time_1_HE_Scintillator", [Plot("energy_time_1_layer_{:02d}".format(i), title="Energy_Time_1_HE_Scintillator",
1913                                                                         xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1914                                                                         ], ncols=7)
1915 
1916 _Energy_EE = PlotGroup("Energy_EE", [Plot("energy_layer_{:02d}".format(i), title="Energy_EE",
1917                                              xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1918                                              ], ncols=7)
1919 
1920 _Energy_HE_Silicon = PlotGroup("Energy_HE_Silicon", [Plot("energy_layer_{:02d}".format(i), title="Energy_HE_Silicon",
1921                                                              xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1922                                                              ], ncols=7)
1923 
1924 _Energy_HE_Scintillator = PlotGroup("Energy_HE_Scintillator", [Plot("energy_layer_{:02d}".format(i), title="Energy_HE_Scintillator",
1925                                                                                xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1926                                                                                ], ncols=7)
1927 
1928 _DigiHits_ADC_EE = PlotGroup("ADC_EE", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_EE",
1929                                         xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1930                                         ], ncols=7)
1931 
1932 _DigiHits_ADC_HE_Silicon = PlotGroup("ADC_HE_Silicon", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_HE_Silicon",
1933                                                        xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1934                                                        ], ncols=7)
1935 
1936 _DigiHits_ADC_HE_Scintillator = PlotGroup("ADC_HE_Scintillator", [Plot("ADC_layer_{:02d}".format(i), title="DigiHits_ADC_HE_Scintillator",
1937                                                                   xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1938                                                                   ], ncols=7)
1939 
1940 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65}
1941 
1942 _DigiHits_Occupancy_EE_zplus = PlotGroup("Occupancy_EE_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_EE_zplus",
1943                                                                 xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1944                                                                 ], ncols=7)
1945 
1946 _DigiHits_Occupancy_HE_Silicon_zplus = PlotGroup("Occupancy_HE_Silicon_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Silicon_zplus",
1947                                                                                  xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1948                                                                                  ], ncols=7)
1949 
1950 _DigiHits_Occupancy_HE_Scintillator_zplus = PlotGroup("Occupancy_HE_Scintillator_zplus", [Plot("DigiOccupancy_Plus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Scintillator_zplus",
1951                                                                                           xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1952                                                                                            ], ncols=7)
1953 
1954 _DigiHits_Occupancy_EE_zminus = PlotGroup("Occupancy_EE_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_EE_zminus",
1955                                                                   xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1956                                                                   ], ncols=7)
1957 
1958 _DigiHits_Occupancy_HE_Silicon_zminus = PlotGroup("Occupancy_HE_Silicon_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Silicon_zminus",
1959                                                                                   xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1960                                                                                   ], ncols=7)
1961 
1962 _DigiHits_Occupancy_HE_Scintillator_zminus = PlotGroup("Occupancy_HE_Scintillator_zminus", [Plot("DigiOccupancy_Minus_layer_{:02d}".format(i), title="DigiHits_Occupancy_HE_Scintillator_zminus",
1963                                                                                             xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1964                                                                                             ], ncols=7)
1965 
1966 _common_XY = dict(removeEmptyBins=True, xbinlabelsize=10, xbinlabeloption="d", ymin=None)
1967 
1968 _DigiHits_Occupancy_XY_EE = PlotGroup("Occupancy_XY_EE", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_EE",
1969                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(EE_min,EE_max+1)
1970                                                      ], ncols=7)
1971 
1972 _DigiHits_Occupancy_XY_HE_Silicon = PlotGroup("Occupancy_XY_HE_Silicon", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_HE_Silicon",
1973                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(HESilicon_min,HESilicon_max+1)
1974                                                      ], ncols=7)
1975 
1976 _DigiHits_Occupancy_XY_HE_Scintillator = PlotGroup("Occupancy_XY_HE_Scintillator", [Plot("DigiOccupancy_XY_layer_{:02d}".format(i), title="DigiHits_Occupancy_XY_HE_Scintillator",
1977                                                      xtitle="Layer {}".format(i), drawStyle="COLZ", adjustMarginRight=0.1, **_common_XY) for i in range(HEScintillator_min,HEScintillator_max+1)
1978                                                      ], ncols=7)
1979 
1980 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": True}
1981 
1982 _DigiHits_TOA_EE = PlotGroup("TOA_EE", [
1983                                                  Plot("TOA_layer_{:02d}".format(i), title="TOA_EE", xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1984                                                  ], ncols=7)
1985 
1986 _DigiHits_TOA_HE_Silicon = PlotGroup("TOA_HE_Silicon", [
1987                                                                  Plot("TOA_layer_{:02d}".format(i), title="TOA_HE_Silicon", xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
1988                                                                  ], ncols=7)
1989 
1990 _DigiHits_TOA_HE_Scintillator = PlotGroup("TOA_HE_Scintillator", [
1991                                                                            Plot("TOA_layer_{:02d}".format(i), title="TOA_HE_Scintillator", xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
1992                                                                            ], ncols=7)
1993 
1994 _DigiHits_TOT_EE = PlotGroup("TOT_EE", [
1995                                                  Plot("TOT_layer_{:02d}".format(i), title="TOT_EE", xtitle="Layer {}".format(i), **_common) for i in range(EE_min,EE_max+1)
1996                                                  ], ncols=7)
1997 
1998 _DigiHits_TOT_HE_Silicon = PlotGroup("TOT_HE_Silicon", [
1999                                                                  Plot("TOT_layer_{:02d}".format(i), title="TOT_HE_Silicon", xtitle="Layer {}".format(i), **_common) for i in range(HESilicon_min,HESilicon_max+1)
2000                                                                  ], ncols=7)
2001 
2002 _DigiHits_TOT_HE_Scintillator = PlotGroup("TOT_HE_Scintillator", [
2003                                                                            Plot("TOT_layer_{:02d}".format(i), title="TOT_HE_Scintillator", xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
2004                                                                            ], ncols=7)
2005 
2006 #===================================================================================================================
2007 #Plot definition for HitCalibration
2008 _common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": False}
2009 
2010 _LayerOccupancy = PlotGroup("LayerOccupancy", [
2011                                                Plot("LayerOccupancy", title="LayerOccupancy", **_common)], ncols=1)
2012 
2013 _ReconstructableEnergyOverCPenergy = PlotGroup("ReconstructableEnergyOverCPenergy", [
2014   Plot("h_EoP_CPene_100_calib_fraction", title="EoP_CPene_100_calib_fraction", **_common),
2015   Plot("h_EoP_CPene_200_calib_fraction", title="EoP_CPene_200_calib_fraction", **_common),
2016   Plot("h_EoP_CPene_300_calib_fraction", title="EoP_CPene_300_calib_fraction", **_common),
2017   Plot("h_EoP_CPene_scint_calib_fraction", title="EoP_CPene_scint_calib_fraction", **_common),
2018 ])
2019 
2020 _ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy = PlotGroup("ParticleFlowClusterHGCalFromTrackster", [
2021   Plot("hgcal_EoP_CPene_100_calib_fraction", title="hgcal_EoP_CPene_100_calib_fraction", **_common),
2022   Plot("hgcal_EoP_CPene_200_calib_fraction", title="hgcal_EoP_CPene_200_calib_fraction", **_common),
2023   Plot("hgcal_EoP_CPene_300_calib_fraction", title="hgcal_EoP_CPene_300_calib_fraction", **_common),
2024   Plot("hgcal_EoP_CPene_scint_calib_fraction", title="hgcal_EoP_CPene_scint_calib_fraction", **_common),
2025 ])
2026 
2027 _EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy = PlotGroup("EcalDrivenGsfElectronsFromTrackster", [
2028   Plot("hgcal_ele_EoP_CPene_100_calib_fraction", title="hgcal_ele_EoP_CPene_100_calib_fraction", **_common),
2029   Plot("hgcal_ele_EoP_CPene_200_calib_fraction", title="hgcal_ele_EoP_CPene_200_calib_fraction", **_common),
2030   Plot("hgcal_ele_EoP_CPene_300_calib_fraction", title="hgcal_ele_EoP_CPene_300_calib_fraction", **_common),
2031   Plot("hgcal_ele_EoP_CPene_scint_calib_fraction", title="hgcal_ele_EoP_CPene_scint_calib_fraction", **_common),
2032 ])
2033 
2034 _PhotonsFromTrackster_Closest_EoverCPenergy = PlotGroup("PhotonsFromTrackster", [
2035   Plot("hgcal_photon_EoP_CPene_100_calib_fraction", title="hgcal_photon_EoP_CPene_100_calib_fraction", **_common),
2036   Plot("hgcal_photon_EoP_CPene_200_calib_fraction", title="hgcal_photon_EoP_CPene_200_calib_fraction", **_common),
2037   Plot("hgcal_photon_EoP_CPene_300_calib_fraction", title="hgcal_photon_EoP_CPene_300_calib_fraction", **_common),
2038   Plot("hgcal_photon_EoP_CPene_scint_calib_fraction", title="hgcal_photon_EoP_CPene_scint_calib_fraction", **_common),
2039 ])
2040 
2041 #=================================================================================================
2042 hgcalLayerClustersPlotter = Plotter()
2043 layerClustersLabel = 'Layer Clusters'
2044 
2045 lc_general_clusterlevel = [
2046   # number of layer clusters per event in a) 120um, b) 200um, c) 300um, d) scint
2047   # (one entry per event in each of the four histos)
2048   _totclusternum_thick,
2049   # Miscellaneous plots:
2050   # longdepthbarycentre: The longitudinal depth barycentre. One entry per event.
2051   # mixedhitscluster: Number of clusters per event with hits in different thicknesses.
2052   # num_reco_cluster_eta: Number of reco clusters vs eta
2053   _num_reco_cluster_eta,
2054   _energyclustered,
2055   _mixedhitsclusters,
2056   _longdepthbarycentre,
2057   # calculated "energy density" for cells in a) 120um, b) 200um, c) 300um, d) scint
2058   # (one entry per rechit, in the appropriate histo)
2059   _cellsenedens_thick
2060 ]
2061 
2062 lc_clusterlevel_zminus = [
2063   # number of layer clusters per layer (one entry per event in each histo)
2064   _totclusternum_layer_EE_zminus,
2065   _totclusternum_layer_FH_zminus,
2066   _totclusternum_layer_BH_zminus,
2067   # Looking at the fraction of true energy that has been clustered; by layer and overall
2068   _energyclustered_perlayer_EE_zminus,
2069   _energyclustered_perlayer_FH_zminus,
2070   _energyclustered_perlayer_BH_zminus
2071 ]
2072 
2073 lc_cellevel_zminus = [
2074   # For each layer cluster:
2075   # number of cells in layer cluster, by layer - separate histos in each layer for 120um Si, 200/300um Si, Scint
2076   # NB: not all combinations exist; e.g. no 120um Si in layers with scint.
2077   # (One entry in the appropriate histo per layer cluster).
2078   _cellsnum_perthick_perlayer_120_EE_zminus,
2079   _cellsnum_perthick_perlayer_120_FH_zminus,
2080   _cellsnum_perthick_perlayer_120_BH_zminus,
2081   _cellsnum_perthick_perlayer_200_EE_zminus,
2082   _cellsnum_perthick_perlayer_200_FH_zminus,
2083   _cellsnum_perthick_perlayer_200_BH_zminus,
2084   _cellsnum_perthick_perlayer_300_EE_zminus,
2085   _cellsnum_perthick_perlayer_300_FH_zminus,
2086   _cellsnum_perthick_perlayer_300_BH_zminus,
2087   _cellsnum_perthick_perlayer_scint_EE_zminus,
2088   _cellsnum_perthick_perlayer_scint_FH_zminus,
2089   _cellsnum_perthick_perlayer_scint_BH_zminus,
2090   # Cell Association per Layer
2091   _cell_association_table_zminus
2092 ]
2093 
2094 lc_cp_association_zminus = [
2095   # Efficiency Plots
2096   _efficiencies_zminus,
2097   _efficiencies_zminus_eta,
2098   _efficiencies_zminus_phi,
2099   # Duplicate Plots
2100   _duplicates_zminus,
2101   _duplicates_zminus_eta,
2102   _duplicates_zminus_phi,
2103   # Fake Rate Plots
2104   _fakes_zminus,
2105   _fakes_zminus_eta,
2106   _fakes_zminus_phi,
2107   # Merge Rate Plots
2108   _merges_zminus,
2109   _merges_zminus_eta,
2110   _merges_zminus_phi,
2111   # Score of CaloParticles wrt Layer Clusters
2112   _score_caloparticle_to_layerclusters_zminus,
2113   # Score of LayerClusters wrt CaloParticles
2114   _score_layercluster_to_caloparticles_zminus,
2115   # Shared Energy between CaloParticle and LayerClusters
2116   _sharedEnergy_caloparticle_to_layercluster_zminus,
2117   # Shared Energy between LayerClusters and CaloParticle
2118   _sharedEnergy_layercluster_to_caloparticle_zminus,
2119   # Energy vs Score 2D plots CP to LC
2120   _energyscore_cp2lc_zminus,
2121   # Energy vs Score 2D plots LC to CP
2122   _energyscore_lc2cp_zminus
2123 ]
2124 
2125 lc_zminus_extended = [
2126   # For each layer cluster:
2127   # distance of cells from a) seed cell, b) max cell; and c), d): same with entries weighted by cell energy
2128   # separate histos in each layer for 120um Si, 200/300um Si, Scint
2129   # NB: not all combinations exist; e.g. no 120um Si in layers with scint.
2130   # (One entry in each of the four appropriate histos per cell in a layer cluster)
2131   _distancetomaxcell_perthickperlayer_120_EE_zminus,
2132   _distancetomaxcell_perthickperlayer_120_FH_zminus,
2133   _distancetomaxcell_perthickperlayer_120_BH_zminus,
2134   _distancetomaxcell_perthickperlayer_200_EE_zminus,
2135   _distancetomaxcell_perthickperlayer_200_FH_zminus,
2136   _distancetomaxcell_perthickperlayer_200_BH_zminus,
2137   _distancetomaxcell_perthickperlayer_300_EE_zminus,
2138   _distancetomaxcell_perthickperlayer_300_FH_zminus,
2139   _distancetomaxcell_perthickperlayer_300_BH_zminus,
2140   _distancetomaxcell_perthickperlayer_scint_EE_zminus,
2141   _distancetomaxcell_perthickperlayer_scint_FH_zminus,
2142   _distancetomaxcell_perthickperlayer_scint_BH_zminus,
2143   _distancetoseedcell_perthickperlayer_120_EE_zminus,
2144   _distancetoseedcell_perthickperlayer_120_FH_zminus,
2145   _distancetoseedcell_perthickperlayer_120_BH_zminus,
2146   _distancetoseedcell_perthickperlayer_200_EE_zminus,
2147   _distancetoseedcell_perthickperlayer_200_FH_zminus,
2148   _distancetoseedcell_perthickperlayer_200_BH_zminus,
2149   _distancetoseedcell_perthickperlayer_300_EE_zminus,
2150   _distancetoseedcell_perthickperlayer_300_FH_zminus,
2151   _distancetoseedcell_perthickperlayer_300_BH_zminus,
2152   _distancetoseedcell_perthickperlayer_scint_EE_zminus,
2153   _distancetoseedcell_perthickperlayer_scint_FH_zminus,
2154   _distancetoseedcell_perthickperlayer_scint_BH_zminus,
2155   _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zminus,
2156   _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zminus,
2157   _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zminus,
2158   _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zminus,
2159   _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zminus,
2160   _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zminus,
2161   _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zminus,
2162   _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zminus,
2163   _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zminus,
2164   _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zminus,
2165   _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zminus,
2166   _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zminus,
2167   _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zminus,
2168   _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zminus,
2169   _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zminus,
2170   _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zminus,
2171   _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zminus,
2172   _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zminus,
2173   _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zminus,
2174   _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zminus,
2175   _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zminus,
2176   _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zminus,
2177   _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zminus,
2178   _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zminus,
2179   _distancebetseedandmaxcell_perthickperlayer_120_EE_zminus,
2180   _distancebetseedandmaxcell_perthickperlayer_120_FH_zminus,
2181   _distancebetseedandmaxcell_perthickperlayer_120_BH_zminus,
2182   _distancebetseedandmaxcell_perthickperlayer_200_EE_zminus,
2183   _distancebetseedandmaxcell_perthickperlayer_200_FH_zminus,
2184   _distancebetseedandmaxcell_perthickperlayer_200_BH_zminus,
2185   _distancebetseedandmaxcell_perthickperlayer_300_EE_zminus,
2186   _distancebetseedandmaxcell_perthickperlayer_300_FH_zminus,
2187   _distancebetseedandmaxcell_perthickperlayer_300_BH_zminus,
2188   _distancebetseedandmaxcell_perthickperlayer_scint_EE_zminus,
2189   _distancebetseedandmaxcell_perthickperlayer_scint_FH_zminus,
2190   _distancebetseedandmaxcell_perthickperlayer_scint_BH_zminus,
2191   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zminus,
2192   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zminus,
2193   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zminus,
2194   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zminus,
2195   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zminus,
2196   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zminus,
2197   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zminus,
2198   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zminus,
2199   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zminus,
2200   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zminus,
2201   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zminus,
2202   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zminus
2203 ]
2204 
2205 lc_clusterlevel_zplus = [
2206   # number of layer clusters per layer (one entry per event in each histo)
2207   _totclusternum_layer_EE_zplus,
2208   _totclusternum_layer_FH_zplus,
2209   _totclusternum_layer_BH_zplus,
2210   # Looking at the fraction of true energy that has been clustered; by layer and overall
2211   _energyclustered_perlayer_EE_zplus,
2212   _energyclustered_perlayer_FH_zplus,
2213   _energyclustered_perlayer_BH_zplus
2214 ]
2215 
2216 lc_cellevel_zplus = [
2217   # number of cells in layer cluster, by layer - separate histos in each layer for 120um Si, 200/300um Si, Scint
2218   _cellsnum_perthick_perlayer_120_EE_zplus,
2219   _cellsnum_perthick_perlayer_120_FH_zplus,
2220   _cellsnum_perthick_perlayer_120_BH_zplus,
2221   _cellsnum_perthick_perlayer_200_EE_zplus,
2222   _cellsnum_perthick_perlayer_200_FH_zplus,
2223   _cellsnum_perthick_perlayer_200_BH_zplus,
2224   _cellsnum_perthick_perlayer_300_EE_zplus,
2225   _cellsnum_perthick_perlayer_300_FH_zplus,
2226   _cellsnum_perthick_perlayer_300_BH_zplus,
2227   _cellsnum_perthick_perlayer_scint_EE_zplus,
2228   _cellsnum_perthick_perlayer_scint_FH_zplus,
2229   _cellsnum_perthick_perlayer_scint_BH_zplus,
2230   # Cell Association per Layer
2231   _cell_association_table_zplus
2232 ]
2233 
2234 lc_cp_association_zplus = [
2235   # Efficiency Plots
2236   _efficiencies_zplus,
2237   _efficiencies_zplus_eta,
2238   _efficiencies_zplus_phi,
2239   # Duplicate Plots
2240   _duplicates_zplus,
2241   _duplicates_zplus_eta,
2242   _duplicates_zplus_phi,
2243   # Fake Rate Plots
2244   _fakes_zplus,
2245   _fakes_zplus_eta,
2246   _fakes_zplus_phi,
2247   # Merge Rate Plots
2248   _merges_zplus,
2249   _merges_zplus_eta,
2250   _merges_zplus_phi,
2251   # Score of CaloParticles wrt Layer Clusters
2252   _score_caloparticle_to_layerclusters_zplus,
2253   # Score of LayerClusters wrt CaloParticles
2254   _score_layercluster_to_caloparticles_zplus,
2255   # Shared Energy between CaloParticle and LayerClusters
2256   _sharedEnergy_caloparticle_to_layercluster_zplus,
2257   # Shared Energy between LayerClusters and CaloParticle
2258   _sharedEnergy_layercluster_to_caloparticle_zplus,
2259   _energyscore_cp2lc_zplus,
2260   _energyscore_lc2cp_zplus
2261 ]
2262 
2263 lc_zplus_extended = [
2264   # distance of cells from a) seed cell, b) max cell; and c), d): same with entries weighted by cell energy
2265   _distancetomaxcell_perthickperlayer_120_EE_zplus,
2266   _distancetomaxcell_perthickperlayer_120_FH_zplus,
2267   _distancetomaxcell_perthickperlayer_120_BH_zplus,
2268   _distancetomaxcell_perthickperlayer_200_EE_zplus,
2269   _distancetomaxcell_perthickperlayer_200_FH_zplus,
2270   _distancetomaxcell_perthickperlayer_200_BH_zplus,
2271   _distancetomaxcell_perthickperlayer_300_EE_zplus,
2272   _distancetomaxcell_perthickperlayer_300_FH_zplus,
2273   _distancetomaxcell_perthickperlayer_300_BH_zplus,
2274   _distancetomaxcell_perthickperlayer_scint_EE_zplus,
2275   _distancetomaxcell_perthickperlayer_scint_FH_zplus,
2276   _distancetomaxcell_perthickperlayer_scint_BH_zplus,
2277   _distancetoseedcell_perthickperlayer_120_EE_zplus,
2278   _distancetoseedcell_perthickperlayer_120_FH_zplus,
2279   _distancetoseedcell_perthickperlayer_120_BH_zplus,
2280   _distancetoseedcell_perthickperlayer_200_EE_zplus,
2281   _distancetoseedcell_perthickperlayer_200_FH_zplus,
2282   _distancetoseedcell_perthickperlayer_200_BH_zplus,
2283   _distancetoseedcell_perthickperlayer_300_EE_zplus,
2284   _distancetoseedcell_perthickperlayer_300_FH_zplus,
2285   _distancetoseedcell_perthickperlayer_300_BH_zplus,
2286   _distancetoseedcell_perthickperlayer_scint_EE_zplus,
2287   _distancetoseedcell_perthickperlayer_scint_FH_zplus,
2288   _distancetoseedcell_perthickperlayer_scint_BH_zplus,
2289   _distancetomaxcell_perthickperlayer_eneweighted_120_EE_zplus,
2290   _distancetomaxcell_perthickperlayer_eneweighted_120_FH_zplus,
2291   _distancetomaxcell_perthickperlayer_eneweighted_120_BH_zplus,
2292   _distancetomaxcell_perthickperlayer_eneweighted_200_EE_zplus,
2293   _distancetomaxcell_perthickperlayer_eneweighted_200_FH_zplus,
2294   _distancetomaxcell_perthickperlayer_eneweighted_200_BH_zplus,
2295   _distancetomaxcell_perthickperlayer_eneweighted_300_EE_zplus,
2296   _distancetomaxcell_perthickperlayer_eneweighted_300_FH_zplus,
2297   _distancetomaxcell_perthickperlayer_eneweighted_300_BH_zplus,
2298   _distancetomaxcell_perthickperlayer_eneweighted_scint_EE_zplus,
2299   _distancetomaxcell_perthickperlayer_eneweighted_scint_FH_zplus,
2300   _distancetomaxcell_perthickperlayer_eneweighted_scint_BH_zplus,
2301   _distancetoseedcell_perthickperlayer_eneweighted_120_EE_zplus,
2302   _distancetoseedcell_perthickperlayer_eneweighted_120_FH_zplus,
2303   _distancetoseedcell_perthickperlayer_eneweighted_120_BH_zplus,
2304   _distancetoseedcell_perthickperlayer_eneweighted_200_EE_zplus,
2305   _distancetoseedcell_perthickperlayer_eneweighted_200_FH_zplus,
2306   _distancetoseedcell_perthickperlayer_eneweighted_200_BH_zplus,
2307   _distancetoseedcell_perthickperlayer_eneweighted_300_EE_zplus,
2308   _distancetoseedcell_perthickperlayer_eneweighted_300_FH_zplus,
2309   _distancetoseedcell_perthickperlayer_eneweighted_300_BH_zplus,
2310   _distancetoseedcell_perthickperlayer_eneweighted_scint_EE_zplus,
2311   _distancetoseedcell_perthickperlayer_eneweighted_scint_FH_zplus,
2312   _distancetoseedcell_perthickperlayer_eneweighted_scint_BH_zplus,
2313   _distancebetseedandmaxcell_perthickperlayer_120_EE_zplus,
2314   _distancebetseedandmaxcell_perthickperlayer_120_FH_zplus,
2315   _distancebetseedandmaxcell_perthickperlayer_120_BH_zplus,
2316   _distancebetseedandmaxcell_perthickperlayer_200_EE_zplus,
2317   _distancebetseedandmaxcell_perthickperlayer_200_FH_zplus,
2318   _distancebetseedandmaxcell_perthickperlayer_200_BH_zplus,
2319   _distancebetseedandmaxcell_perthickperlayer_300_EE_zplus,
2320   _distancebetseedandmaxcell_perthickperlayer_300_FH_zplus,
2321   _distancebetseedandmaxcell_perthickperlayer_300_BH_zplus,
2322   _distancebetseedandmaxcell_perthickperlayer_scint_EE_zplus,
2323   _distancebetseedandmaxcell_perthickperlayer_scint_FH_zplus,
2324   _distancebetseedandmaxcell_perthickperlayer_scint_BH_zplus,
2325   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_EE_zplus,
2326   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_FH_zplus,
2327   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_120_BH_zplus,
2328   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_EE_zplus,
2329   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_FH_zplus,
2330   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_200_BH_zplus,
2331   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_EE_zplus,
2332   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_FH_zplus,
2333   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_300_BH_zplus,
2334   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_EE_zplus,
2335   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_FH_zplus,
2336   _distancebetseedandmaxcellvsclusterenergy_perthickperlayer_scint_BH_zplus
2337 ]
2338 
2339 def append_hgcalLayerClustersPlots(collection = hgcalValidator.label_layerClusterPlots._InputTag__moduleLabel, name_collection = layerClustersLabel, extended = False):
2340   print('extended : ',extended)
2341   regions_ClusterLevel       = ["General: Cluster Level", "Z-minus: Cluster Level", "Z-plus: Cluster Level"]
2342   regions_CellLevel          = ["Z-minus: Cell Level", "Z-plus: Cell Level"]
2343   regions_LCtoCP_association = ["Z-minus: LC_CP association", "Z-plus: LC_CP association"]
2344 
2345   plots_lc_general_clusterlevel  = lc_general_clusterlevel
2346   plots_lc_clusterlevel_zminus   = lc_clusterlevel_zminus
2347   plots_lc_cellevel_zminus       = lc_cellevel_zminus
2348   plots_lc_clusterlevel_zplus    = lc_clusterlevel_zplus
2349   plots_lc_cellevel_zplus        = lc_cellevel_zplus
2350   plots_lc_cp_association_zminus = lc_cp_association_zminus
2351   plots_lc_cp_association_zplus  = lc_cp_association_zplus
2352 
2353   if extended :
2354     #plots_lc_clusterlevel_zminus   = lc_clusterlevel_zminus
2355     #plots_lc_clusterlevel_zplus    = lc_clusterlevel_zplus
2356     plots_lc_cellevel_zminus       = lc_cellevel_zminus + lc_zminus_extended
2357     plots_lc_cellevel_zplus        = lc_cellevel_zplus + lc_zplus_extended
2358     #plots_lc_cp_association_zminus = lc_cp_association_zminus
2359     #plots_lc_cp_association_zplus  = lc_cp_association_zplus
2360 
2361   setPlots_ClusterLevel       = [plots_lc_general_clusterlevel, plots_lc_clusterlevel_zminus, plots_lc_clusterlevel_zplus]
2362   setPlots_CellLevel          = [plots_lc_cellevel_zminus, plots_lc_cellevel_zplus]
2363   setPlots_LCtoCP_association = [plots_lc_cp_association_zminus, plots_lc_cp_association_zplus]
2364   for reg, setPlot in zip(regions_ClusterLevel, setPlots_ClusterLevel):
2365     hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2366                 _hgcalFolders(collection + "/ClusterLevel")
2367                 ], PlotFolder(
2368                 *setPlot,
2369                 loopSubFolders=False,
2370                 purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2371   for reg, setPlot in zip(regions_CellLevel, setPlots_CellLevel):
2372     hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2373                 _hgcalFolders(collection + "/CellLevel")
2374                 ], PlotFolder(
2375                 *setPlot,
2376                 loopSubFolders=False,
2377                 purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2378   for reg, setPlot in zip(regions_LCtoCP_association, setPlots_LCtoCP_association):
2379     hgcalLayerClustersPlotter.append(collection+"_"+reg, [
2380                 _hgcalFolders(collection + "/" + lcToCP_linking)
2381                 ], PlotFolder(
2382                 *setPlot,
2383                 loopSubFolders=False,
2384                 purpose=PlotPurpose.Timing, page=layerClustersLabel, section=reg))
2385 
2386 #=================================================================================================
2387 
2388 sc_clusterlevel = [
2389   # number of layer clusters per event in a) 120um, b) 200um, c) 300um, d) scint
2390   # (one entry per event in each of the four histos) ([B] above)
2391   _totsimclusternum_thick,
2392   # number of simclusters per layer (one entry per event in each histo) ([C] above)
2393   # z-
2394   _totsimclusternum_layer_EE_zminus,
2395   _totsimclusternum_layer_FH_zminus,
2396   _totsimclusternum_layer_BH_zminus,
2397   # z+
2398   _totsimclusternum_layer_EE_zplus,
2399   _totsimclusternum_layer_FH_zplus,
2400   _totsimclusternum_layer_BH_zplus,
2401   # Miscellaneous plots ([G] above):
2402   # mixedhitscluster: Number of clusters per event with hits in different thicknesses.
2403   _mixedhitssimclusters,
2404 ]
2405 
2406 sc_ticltracksters = [
2407   # Score of SimClusters wrt Layer Clusters
2408   # z-
2409   _score_simcluster_to_layerclusters_zminus,
2410   # z+
2411   _score_simcluster_to_layerclusters_zplus,
2412   # Score of LayerClusters wrt SimClusters
2413   # z-
2414   _score_layercluster_to_simclusters_zminus,
2415   # z+
2416   _score_layercluster_to_simclusters_zplus,
2417   # Shared Energy between SimCluster and LayerClusters
2418   # z-
2419   _sharedEnergy_simcluster_to_layercluster_zminus,
2420   # z+
2421   _sharedEnergy_simcluster_to_layercluster_zplus,
2422   # Shared Energy between LayerClusters and SimCluster
2423   # z-
2424   _sharedEnergy_layercluster_to_simcluster_zminus,
2425   # z+
2426   _sharedEnergy_layercluster_to_simcluster_zplus,
2427   # Efficiency Plots
2428   # z-
2429   _efficiencies_sc_zminus,
2430   _duplicates_sc_zminus,
2431   _fakes_sc_zminus,
2432   _merges_sc_zminus,
2433   _efficiencies_sc_zminus_eta,
2434   _efficiencies_sc_zminus_phi,
2435   # z+
2436   _efficiencies_sc_zplus,
2437   _duplicates_sc_zplus,
2438   _fakes_sc_zplus,
2439   _merges_sc_zplus,
2440   _efficiencies_sc_zplus_eta,
2441   _efficiencies_sc_zplus_phi,
2442    # Duplicate Plots
2443   # z-
2444   _duplicates_sc_zminus_eta,
2445   _duplicates_sc_zminus_phi,
2446    # z+
2447   _duplicates_sc_zplus_eta,
2448   _duplicates_sc_zplus_phi,
2449   # Fake Rate Plots
2450   # z-
2451   _fakes_sc_zminus_eta,
2452   _fakes_sc_zminus_phi,
2453   # z+
2454   _fakes_sc_zplus_eta,
2455   _fakes_sc_zplus_phi,
2456   # Merge Rate Plots
2457   # z-
2458   _merges_sc_zminus_eta,
2459   _merges_sc_zminus_phi,
2460   # z+
2461   _merges_sc_zplus_eta,
2462   _merges_sc_zplus_phi,
2463   # Energy vs Score 2D plots SC to LC
2464   # z-
2465   _energyscore_sc2lc_zminus,
2466   # z+
2467   _energyscore_sc2lc_zplus,
2468   # Energy vs Score 2D plots LC to SC
2469   # z-
2470   _energyscore_lc2sc_zminus,
2471   # z+
2472   _energyscore_lc2sc_zplus
2473 ]
2474 
2475 hgcalSimClustersPlotter = Plotter()
2476 
2477 def append_hgcalSimClustersPlots(collection, name_collection):
2478   if collection == hgcalValidator.label_SimClustersLevel._InputTag__moduleLabel:
2479       hgcalSimClustersPlotter.append(collection, [
2480                   _hgcalFolders(hgcalValidator.label_SimClusters._InputTag__moduleLabel +"/"+ collection)
2481                   ], PlotFolder(
2482                   *sc_clusterlevel,
2483                   loopSubFolders=False,
2484                   purpose=PlotPurpose.Timing, page="SimClusters", section=name_collection))
2485   else:
2486       hgcalSimClustersPlotter.append(collection, [
2487                   _hgcalFolders(hgcalValidator.label_SimClusters._InputTag__moduleLabel +"/"+collection)
2488                   ], PlotFolder(
2489                   *sc_ticltracksters,
2490                   loopSubFolders=False,
2491                   purpose=PlotPurpose.Timing, page="SimClusters", section=name_collection))
2492 
2493 
2494 #=================================================================================================
2495 def _hgcalFolders(lastDirName="hgcalLayerClusters"):
2496     return hgcVal_dqm + lastDirName
2497 
2498 _trackstersPlots = [
2499   _trackster_eppe,
2500   _trackster_xyz,
2501   _tottracksternum,
2502   _clusternum_in_trackster,
2503   _clusternum_in_trackster_vs_layer,
2504   _clusternum_in_trackster_perlayer_zminus_EE,
2505   _clusternum_in_trackster_perlayer_zminus_FH,
2506   _clusternum_in_trackster_perlayer_zminus_BH,
2507   _clusternum_in_trackster_perlayer_zplus_EE,
2508   _clusternum_in_trackster_perlayer_zplus_FH,
2509   _clusternum_in_trackster_perlayer_zplus_BH,
2510   _trackster_layernum,
2511   _multiplicityOfLCinTST,
2512 ]
2513 
2514 _trackstersToCPLinkPlots = [
2515   _efficiencies[0],
2516   _purities[0],
2517   _duplicates[0],
2518   _fakes[0],
2519   _merges[0],
2520   _score_caloparticle_to_tracksters,
2521   _score_trackster_to_caloparticles,
2522   _sharedEnergy_to_trackster[0],
2523   _sharedEnergy_trackster_to[0],
2524   _energyscore_to_trackster[0],
2525   _energyscore_trackster_to[0],
2526 ]
2527 
2528 _trackstersToSTSPRPlots = [
2529   _efficiencies[1],
2530   _purities[1],
2531   _duplicates[1],
2532   _fakes[1],
2533   _merges[1],
2534   _score_simtrackster_to_tracksters,
2535   _score_trackster_to_simtracksters,
2536   _sharedEnergy_to_trackster[1],
2537   _sharedEnergy_trackster_to[1],
2538   _energyscore_to_trackster[1],
2539   _energyscore_trackster_to[1],
2540 ]
2541 hgcalTrackstersPlotter = Plotter()
2542 def append_hgcalTrackstersPlots(collection = 'ticlTrackstersMerge', name_collection = "TrackstersMerge"):
2543   # Appending generic plots for Tracksters
2544   hgcalTrackstersPlotter.append(collection, [
2545               _hgcalFolders(collection+ "/" + hgcalValidator.label_TS.value())
2546               ], PlotFolder(
2547               *_trackstersPlots,
2548               loopSubFolders=False,
2549               purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection))
2550 
2551   # Appending plots for Tracksters-CP linking
2552   hgcalTrackstersPlotter.append(collection, [
2553               _hgcalFolders(collection + "/" + tsToCP_linking)
2554               ], PlotFolder(
2555               *_trackstersToCPLinkPlots,
2556               loopSubFolders=False,
2557               purpose=PlotPurpose.Timing
2558               #,page=tsToCP_linking.replace('TSToCP_','TICL-')
2559               ,page=tsToCP_linking.replace('TSToCP_','TICL-linking').replace('linking','')
2560               ,section=name_collection)
2561               )
2562 
2563   # Appending plots for Tracksters Pattern Recognition
2564   hgcalTrackstersPlotter.append(collection, [
2565               _hgcalFolders(collection + "/" + tsToSTS_patternRec)
2566               ], PlotFolder(
2567               *_trackstersToSTSPRPlots,
2568               loopSubFolders=False,
2569               purpose=PlotPurpose.Timing, page=tsToSTS_patternRec.replace('TSToSTS_','TICL-'), section=name_collection))
2570 
2571   #We append here two PlotFolder because we want the text to be in percent
2572   #and the number of events are different in zplus and zminus
2573   #hgcalTrackstersPlotter.append("Multiplicity", [
2574   #            dqmfolder
2575   #            ], PlotFolder(
2576   #            _multiplicityOfLCinTST_vs_layercluster_zminus,
2577   #            loopSubFolders=False,
2578   #            purpose=PlotPurpose.Timing, page=collection,
2579   #            numberOfEventsHistogram=_multiplicity_zminus_numberOfEventsHistogram
2580   #            ))
2581   #
2582   #hgcalTrackstersPlotter.append("Multiplicity", [
2583   #            dqmfolder
2584   #            ], PlotFolder(
2585   #            _multiplicityOfLCinTST_vs_layercluster_zplus,
2586   #            loopSubFolders=False,
2587   #            purpose=PlotPurpose.Timing, page=collection,
2588   #            numberOfEventsHistogram=_multiplicity_zplus_numberOfEventsHistogram
2589   #            ))
2590 
2591 #=================================================================================================
2592 _common_Calo = {"stat": False, "drawStyle": "hist", "staty": 0.65, "ymin": 0.0, "ylog": False, "xtitle": "Default", "ytitle": "Default"}
2593 
2594 hgcalCaloParticlesPlotter = Plotter()
2595 def append_hgcalCaloParticlesPlots(files, collection = '-211', name_collection = "pion-"):
2596 
2597   list_2D_histos = ["Energy of Rec-matched Hits vs layer",
2598                     "Energy of Rec-matched Hits vs layer (1SC)",
2599                     "Rec-matched Hits Sum Energy vs layer"]
2600 
2601   dqmfolder = hgcVal_dqm + "SelectedCaloParticles/" + collection
2602   templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2603   if not gDirectory.GetDirectory(dqmfolder):
2604     print("Error: GeneralInfo directory %s not found in DQM file, exit"%dqmfolder)
2605     return hgcalTrackstersPlotter
2606 
2607   keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2608   key = keys[0]
2609   while key:
2610     obj = key.ReadObj()
2611     name = obj.GetName()
2612     fileName = TString(name)
2613     fileName.ReplaceAll(" ","_")
2614     pg = PlotGroup(fileName.Data(),[
2615                   Plot(name,
2616                        drawCommand = "",
2617                        normalizeToNumberOfEvents = True, **_common_Calo)
2618                   ],
2619                   ncols=1)
2620 
2621     if name in list_2D_histos :
2622         pg = PlotOnSideGroup(plotName.Data(),
2623                       Plot(name,
2624                            drawCommand = "COLZ",
2625                            normalizeToNumberOfEvents = True, **_common_Calo)
2626                       ,
2627                       ncols=1)
2628 
2629     hgcalCaloParticlesPlotter.append("CaloParticles_"+name_collection, [
2630               dqmfolder
2631               ], PlotFolder(
2632                 pg,
2633                 loopSubFolders=False,
2634                 purpose=PlotPurpose.Timing, page="CaloParticles", section=name_collection)
2635               )
2636 
2637     key = keys.After(key)
2638 
2639   templateFile.Close()
2640 
2641   return hgcalCaloParticlesPlotter
2642 
2643 #=================================================================================================
2644 def create_hgcalTrackstersPlotter(files, collection = 'ticlTrackstersMerge', name_collection = "TrackstersMerge"):
2645   grouped = {"cosAngle Beta": PlotGroup("cosAngle_Beta_per_layer",[],ncols=10), "cosAngle Beta Weighted": PlotGroup("cosAngle_Beta_Weighted_per_layer",[],ncols=10)}
2646   groupingFlag = " on Layer "
2647 
2648   hgcalTrackstersPlotter = Plotter()
2649   dqmfolder = hgcVal_dqm + collection
2650   #_multiplicity_tracksters_numberOfEventsHistogram = dqmfolder+"/Number of Trackster per Event"
2651 
2652   _common["ymin"] = 0.0
2653   _common["staty"] = 0.85
2654   templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2655   if not gDirectory.GetDirectory(dqmfolder):
2656     print("Error: GeneralInfo directory %s not found in DQM file, exit"%dqmfolder)
2657     return hgcalTrackstersPlotter
2658 
2659   keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2660   key = keys[0]
2661   while key:
2662     obj = key.ReadObj()
2663     name = obj.GetName()
2664     plotName = TString(name)
2665     plotName.ReplaceAll(" ","_")
2666 
2667     if groupingFlag in name:
2668         for group in grouped:
2669             if group+groupingFlag in name:
2670                 grouped[group].append(Plot(name,
2671                                            xtitle="Default", ytitle="Default",
2672                                            **_common)
2673                                      )
2674     else:
2675         pg = None
2676         if obj.InheritsFrom("TH2"):
2677             pg = PlotOnSideGroup(plotName.Data(),
2678                                  Plot(name,
2679                                       xtitle="Default", ytitle="Default",
2680                                       drawCommand = "COLZ",
2681                                       **_common),
2682                                  ncols=1)
2683         elif obj.InheritsFrom("TH1"):
2684             pg = PlotGroup(plotName.Data(),
2685                            [Plot(name,
2686                                  xtitle="Default", ytitle="Default",
2687                                  drawCommand = "COLZ", # ineffective for TH1
2688                                  **_common)
2689                            ],
2690                            ncols=1, legendDh=-0.03 * len(files))
2691 
2692         if (pg is not None):
2693             hgcalTrackstersPlotter.append(name_collection+"_TICLDebugger",
2694                 [dqmfolder], PlotFolder(pg,
2695                                         loopSubFolders=False,
2696                                         purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection)
2697                 #numberOfEventsHistogram=_multiplicity_tracksters_numberOfEventsHistogram)
2698                 )
2699 
2700     key = keys.After(key)
2701 
2702   for group in grouped:
2703       hgcalTrackstersPlotter.append(name_collection+"_TICLDebugger",
2704           [dqmfolder], PlotFolder(grouped[group],
2705                                   loopSubFolders=False,
2706                                   purpose=PlotPurpose.Timing, page="Tracksters", section=name_collection)
2707           #numberOfEventsHistogram=_multiplicity_tracksters_numberOfEventsHistogram)
2708           )
2709 
2710   templateFile.Close()
2711 
2712   return hgcalTrackstersPlotter
2713 
2714 #=================================================================================================
2715 _common_Calo = {"stat": False, "drawStyle": "hist", "staty": 0.65, "ymin": 0.0, "ylog": False, "xtitle": "Default", "ytitle": "Default"}
2716 
2717 hgcalCaloParticlesPlotter = Plotter()
2718 
2719 def append_hgcalCaloParticlesPlots(files, collection = '-211', name_collection = "pion-"):
2720   dqmfolder = hgcVal_dqm + "SelectedCaloParticles/" + collection
2721   print(dqmfolder)
2722 #  _common["ymin"] = 0.0
2723   templateFile = ROOT.TFile.Open(files[0]) # assuming all files have same structure
2724   keys = gDirectory.GetDirectory(dqmfolder,True).GetListOfKeys()
2725   key = keys[0]
2726   while key:
2727     obj = key.ReadObj()
2728     name = obj.GetName()
2729     plotName = TString(name)
2730     plotName.ReplaceAll(" ","_")
2731 
2732     pg = None
2733     if obj.InheritsFrom("TH2"):
2734         pg = PlotOnSideGroup(plotName.Data(),
2735                       Plot(name,
2736                            drawCommand = "COLZ",
2737                            normalizeToNumberOfEvents = True, **_common_Calo),
2738                       ncols=1)
2739     elif obj.InheritsFrom("TH1"):
2740         pg = PlotGroup(plotName.Data(),[
2741                       Plot(name,
2742                            drawCommand = "", # may want to customize for TH2 (colz, etc.)
2743                            normalizeToNumberOfEvents = True, **_common_Calo)
2744                       ],
2745                       ncols=1)
2746 
2747     if (pg is not None):
2748         hgcalCaloParticlesPlotter.append("CaloParticles_"+name_collection, [
2749                   dqmfolder
2750                   ], PlotFolder(
2751                     pg,
2752                     loopSubFolders=False,
2753                     purpose=PlotPurpose.Timing, page="CaloParticles", section=name_collection)
2754                   )
2755 
2756     key = keys.After(key)
2757 
2758   templateFile.Close()
2759 
2760   return hgcalCaloParticlesPlotter
2761 
2762 #=================================================================================================
2763 # hitValidation
2764 def _hgcalHitFolders(dirName="HGCalSimHitsV/HGCalEESensitive"):
2765     return "DQMData/Run 1/HGCAL/Run summary/"+dirName
2766 
2767 hgcalHitPlotter = Plotter()
2768 hitsLabel = 'Hits'
2769 simHitsLabel = 'Simulated Hits'
2770 
2771 hgcalHitPlotter.append("SimHits_Validation", [
2772                                               "DQMData/Run 1/HGCAL/Run summary/HGCalSimHitsV/HitValidation",
2773                                               ], PlotFolder(
2774                                                             _HitValidation,
2775                                                             loopSubFolders=False,
2776                                                             purpose=PlotPurpose.Timing, page=hitsLabel, section=simHitsLabel
2777                                                             ))
2778 
2779 def append_hgcalHitsPlots(collection = "HGCalSimHitsV", name_collection = "Simulated Hits"):
2780   _hitsCommonPlots_EE = [
2781     _Occupancy_EE_zplus,
2782     _Occupancy_EE_zminus,
2783     _EtaPhi_EE_zminus,
2784     _EtaPhi_EE_zplus
2785   ]
2786   _hitsCommonPlots_HE_Sil = [
2787     _Occupancy_HE_Silicon_zplus,
2788     _Occupancy_HE_Silicon_zminus,
2789     _EtaPhi_HE_Silicon_zminus,
2790     _EtaPhi_HE_Silicon_zplus
2791   ]
2792   _hitsCommonPlots_HE_Sci = [
2793     _Occupancy_HE_Scintillator_zplus,
2794     _Occupancy_HE_Scintillator_zminus,
2795     _EtaPhi_HE_Scintillator_zminus,
2796     _EtaPhi_HE_Scintillator_zplus
2797   ]
2798 
2799   regions = ["HGCalEESensitive", "HGCalHESiliconSensitive", "HGCalHEScintillatorSensitive"]
2800   setPlots = [_hitsCommonPlots_EE, _hitsCommonPlots_HE_Sil, _hitsCommonPlots_HE_Sci]
2801   if "SimHits" in collection :
2802     _hitsCommonPlots_EE.append(_Energy_EE_0)
2803     _hitsCommonPlots_EE.append(_Energy_EE_1)
2804     _hitsCommonPlots_HE_Sil.append(_Energy_HE_Silicon_0)
2805     _hitsCommonPlots_HE_Sil.append( _Energy_HE_Silicon_1)
2806     _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator_0)
2807     _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator_1)
2808   if "RecHits" in collection :
2809     _hitsCommonPlots_EE.append(_Energy_EE)
2810     _hitsCommonPlots_HE_Sil.append(_Energy_HE_Silicon)
2811     _hitsCommonPlots_HE_Sil.append(_Energy_HE_Scintillator)
2812 
2813   for reg, setPlot in zip(regions, setPlots):
2814     dirName = collection+"/"+reg
2815     print(dirName)
2816     hgcalHitPlotter.append(collection, [
2817                 _hgcalHitFolders(dirName)
2818                 ], PlotFolder(
2819                 *setPlot,
2820                 loopSubFolders=False,
2821                 purpose=PlotPurpose.Timing, page=hitsLabel, section=name_collection))
2822 
2823 _digisCommonPlots_EE = [
2824   _DigiHits_Occupancy_EE_zplus,
2825   _DigiHits_Occupancy_EE_zminus,
2826   _DigiHits_Occupancy_XY_EE,
2827   _DigiHits_ADC_EE,
2828   _DigiHits_TOA_EE,
2829   _DigiHits_TOT_EE,
2830 ]
2831 _digisCommonPlots_HE_Sil = [
2832   _DigiHits_Occupancy_HE_Silicon_zplus,
2833   _DigiHits_Occupancy_HE_Silicon_zminus,
2834   _DigiHits_Occupancy_XY_HE_Silicon,
2835   _DigiHits_ADC_HE_Silicon,
2836   _DigiHits_TOA_HE_Silicon,
2837   _DigiHits_TOT_HE_Silicon,
2838 ]
2839 _digisCommonPlots_HE_Sci = [
2840   _DigiHits_Occupancy_HE_Scintillator_zplus,
2841   _DigiHits_Occupancy_HE_Scintillator_zminus,
2842   _DigiHits_Occupancy_XY_HE_Scintillator,
2843   _DigiHits_ADC_HE_Scintillator,
2844   _DigiHits_TOA_HE_Scintillator,
2845   _DigiHits_TOT_HE_Scintillator,
2846 ]
2847 
2848 def append_hgcalDigisPlots(collection = "HGCalDigisV", name_collection = "Digis"):
2849   regions = ["HGCalEESensitive", "HGCalHESiliconSensitive", "HGCalHEScintillatorSensitive"]
2850   setPlots = [_digisCommonPlots_EE, _digisCommonPlots_HE_Sil, _digisCommonPlots_HE_Sci]
2851   for reg, setPlot in zip(regions, setPlots):
2852     dirName = collection+"/"+reg
2853     print(dirName)
2854     hgcalHitPlotter.append(name_collection, [
2855                 _hgcalHitFolders(dirName)
2856                 ], PlotFolder(
2857                 *setPlot,
2858                 loopSubFolders=False,
2859                 purpose=PlotPurpose.Timing, page=hitsLabel, section=name_collection))
2860 
2861 #=================================================================================================
2862 # hitCalibration
2863 hgcalHitCalibPlotter = Plotter()
2864 hitCalibrationLabel = 'Calibrated RecHits'
2865 
2866 hgcalHitCalibPlotter.append("Layer_Occupancy", [
2867                                                 "DQMData/Run 1/HGCalHitCalibration/Run summary",
2868                                                 ], PlotFolder(
2869                                                               _LayerOccupancy,
2870                                                               loopSubFolders=False,
2871                                                               purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2872                                                               ))
2873 hgcalHitCalibPlotter.append("ReconstructableEnergyOverCPenergy", [
2874         "DQMData/Run 1/HGCalHitCalibration/Run summary",
2875         ], PlotFolder(
2876         _ReconstructableEnergyOverCPenergy,
2877         loopSubFolders=False,
2878         purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2879         ))
2880 
2881 hgcalHitCalibPlotter.append("ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy", [
2882         "DQMData/Run 1/HGCalHitCalibration/Run summary",
2883         ], PlotFolder(
2884         _ParticleFlowClusterHGCalFromTrackster_Closest_EoverCPenergy,
2885         loopSubFolders=False,
2886         purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2887         ))
2888 
2889 hgcalHitCalibPlotter.append("PhotonsFromTrackster_Closest_EoverCPenergy", [
2890         "DQMData/Run 1/HGCalHitCalibration/Run summary",
2891         ], PlotFolder(
2892         _PhotonsFromTrackster_Closest_EoverCPenergy,
2893         loopSubFolders=False,
2894         purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2895         ))
2896 
2897 hgcalHitCalibPlotter.append("EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy", [
2898         "DQMData/Run 1/HGCalHitCalibration/Run summary",
2899         ], PlotFolder(
2900         _EcalDrivenGsfElectronsFromTrackster_Closest_EoverCPenergy,
2901         loopSubFolders=False,
2902         purpose=PlotPurpose.Timing, page=hitCalibrationLabel, section=hitCalibrationLabel
2903         ))
2904 
2905 hgcalTICLCandPlotter = Plotter()
2906 
2907 hgcalTICLCandPlotter.append('ticlCandidates', [
2908              "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/"+hgcalValidator.ticlCandidates.value(),
2909             ], PlotFolder(
2910             *_candidatesPlots,
2911             loopSubFolders=False,
2912             purpose=PlotPurpose.Timing, page="General", section="Candidates"))
2913 
2914 for i in range(6):
2915     hgcalTICLCandPlotter.append('ticlCandidates', [
2916              "DQMData/Run 1/HGCAL/Run summary/HGCalValidator/"+hgcalValidator.ticlCandidates.value()+"/"+cand_type[i],
2917             ], PlotFolder(
2918             *_allCandidatesPlots[i],
2919             loopSubFolders=False,
2920             purpose=PlotPurpose.Timing, page=cand_type[i], section="Candidates"))