Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:27:53

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