Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HGCal] HGCalValidation: added hitCalibration for web page #28337

Merged
merged 3 commits into from Nov 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
73 changes: 73 additions & 0 deletions Validation/HGCalValidation/python/hgcalPlots.py
Expand Up @@ -1738,6 +1738,37 @@
Plot("TOT_layer_{:02d}".format(i), title="DigiHits_TOT_HE_Scintillator", xtitle="Layer {}".format(i), **_common) for i in range(HEScintillator_min,HEScintillator_max+1)
], ncols=4)

#===================================================================================================================
#Plot definition for HitCalibration
_common = {"stat": True, "drawStyle": "hist", "staty": 0.65, "ymin": 0.1, "ylog": False}

_LayerOccupancy = PlotGroup("LayerOccupancy", [
Plot("LayerOccupancy", title="LayerOccupancy", **_common)], ncols=1)

_ReconstructableEnergyOverCPenergy = PlotGroup("ReconstructableEnergyOverCPenergy", [
Plot("h_EoP_CPene_100_calib_fraction", title="EoP_CPene_100_calib_fraction", **_common),
Plot("h_EoP_CPene_200_calib_fraction", title="EoP_CPene_200_calib_fraction", **_common),
Plot("h_EoP_CPene_300_calib_fraction", title="EoP_CPene_300_calib_fraction", **_common),
])

_ParticleFlowClusterHGCalFromMultiCl_Closest_EoverCPenergy = PlotGroup("ParticleFlowClusterHGCalFromMultiCl", [
Plot("hgcal_EoP_CPene_100_calib_fraction", title="hgcal_EoP_CPene_100_calib_fraction", **_common),
Plot("hgcal_EoP_CPene_200_calib_fraction", title="hgcal_EoP_CPene_200_calib_fraction", **_common),
Plot("hgcal_EoP_CPene_300_calib_fraction", title="hgcal_EoP_CPene_300_calib_fraction", **_common),
])

_EcalDrivenGsfElectronsFromMultiCl_Closest_EoverCPenergy = PlotGroup("EcalDrivenGsfElectronsFromMultiCl", [
Plot("hgcal_ele_EoP_CPene_100_calib_fraction", title="hgcal_ele_EoP_CPene_100_calib_fraction", **_common),
Plot("hgcal_ele_EoP_CPene_200_calib_fraction", title="hgcal_ele_EoP_CPene_200_calib_fraction", **_common),
Plot("hgcal_ele_EoP_CPene_300_calib_fraction", title="hgcal_ele_EoP_CPene_300_calib_fraction", **_common),
])

_PhotonsFromMultiCl_Closest_EoverCPenergy = PlotGroup("PhotonsFromMultiCl", [
Plot("hgcal_photon_EoP_CPene_100_calib_fraction", title="hgcal_photon_EoP_CPene_100_calib_fraction", **_common),
Plot("hgcal_photon_EoP_CPene_200_calib_fraction", title="hgcal_photon_EoP_CPene_200_calib_fraction", **_common),
Plot("hgcal_photon_EoP_CPene_300_calib_fraction", title="hgcal_photon_EoP_CPene_300_calib_fraction", **_common),
])

#=================================================================================================
hgcalLayerClustersPlotter = Plotter()
#We follow Chris categories in folders
Expand Down Expand Up @@ -2921,3 +2952,45 @@
loopSubFolders=False,
purpose=PlotPurpose.Timing, page="DigiHits_TOT"
))
#=================================================================================================
# hitCalibration
hgcalHitCalibPlotter = Plotter()

hgcalHitCalibPlotter.append("Layer_Occupancy", [
"DQMData/Run 1/HGCalHitCalibration/Run summary",
], PlotFolder(
_LayerOccupancy,
loopSubFolders=False,
purpose=PlotPurpose.Timing, page="Layer_Occupancy"
))
hgcalHitCalibPlotter.append("ReconstructableEnergyOverCPenergy", [
"DQMData/Run 1/HGCalHitCalibration/Run summary",
], PlotFolder(
_ReconstructableEnergyOverCPenergy,
loopSubFolders=False,
purpose=PlotPurpose.Timing, page="ReconstructableEnergyOverCPenergy"
))

hgcalHitCalibPlotter.append("ParticleFlowClusterHGCalFromMultiCl_Closest_EoverCPenergy", [
"DQMData/Run 1/HGCalHitCalibration/Run summary",
], PlotFolder(
_ParticleFlowClusterHGCalFromMultiCl_Closest_EoverCPenergy,
loopSubFolders=False,
purpose=PlotPurpose.Timing, page="ParticleFlowClusterHGCalFromMultiCl_Closest_EoverCPenergy"
))

hgcalHitCalibPlotter.append("PhotonsFromMultiCl_Closest_EoverCPenergy", [
"DQMData/Run 1/HGCalHitCalibration/Run summary",
], PlotFolder(
_PhotonsFromMultiCl_Closest_EoverCPenergy,
loopSubFolders=False,
purpose=PlotPurpose.Timing, page="PhotonsFromMultiCl_Closest_EoverCPenergy"
))

hgcalHitCalibPlotter.append("EcalDrivenGsfElectronsFromMultiCl_Closest_EoverCPenergy", [
"DQMData/Run 1/HGCalHitCalibration/Run summary",
], PlotFolder(
_EcalDrivenGsfElectronsFromMultiCl_Closest_EoverCPenergy,
loopSubFolders=False,
purpose=PlotPurpose.Timing, page="EcalDrivenGsfElectronsFromMultiCl_Closest_EoverCPenergy"
))
14 changes: 12 additions & 2 deletions Validation/HGCalValidation/scripts/makeHGCalValidationPlots.py
Expand Up @@ -35,6 +35,9 @@ def main(opts):
elif opts.collection=="hitValidation":
hgchit = [hgcalPlots.hgcalHitPlotter]
val.doPlots(hgchit, plotterDrawArgs=drawArgs)
elif opts.collection=="hitCalibration":
hgchitcalib = [hgcalPlots.hgcalHitCalibPlotter]
val.doPlots(hgchitcalib, plotterDrawArgs=drawArgs)
else :
#In case of all you have to keep a specific order in one to one
#correspondance between subdirprefix and collections and validation names
Expand All @@ -53,6 +56,12 @@ def main(opts):
htmlReport_3 = val.createHtmlReport(validationName=opts.html_validation_name[2])
hgchit = [hgcalPlots.hgcalHitPlotter]
val.doPlots(hgchit, plotterDrawArgs=drawArgs)
#calib
sample = SimpleSample(opts.subdirprefix[3], opts.html_sample, filenames)
val = SimpleValidation([sample], opts.outputDir[3])
htmlReport_4 = val.createHtmlReport(validationName=opts.html_validation_name[3])
hgchitcalib = [hgcalPlots.hgcalHitCalibPlotter]
val.doPlots(hgchitcalib, plotterDrawArgs=drawArgs)

if opts.no_html:
print("Plots created into directory '%s'." % opts.outputDir)
Expand All @@ -61,6 +70,7 @@ def main(opts):
if(opts.collection=="all"):
htmlReport_2.write()
htmlReport_3.write()
htmlReport_4.write()

print("Plots and HTML report created into directory '%s'. You can just move it to some www area and access the pages via web browser" % (','.join(opts.outputDir)))

Expand All @@ -87,8 +97,8 @@ def main(opts):
help="Validation name for HTML page generation (enters to <title> element) (default '')")
parser.add_argument("--verbose", action="store_true", default = False,
help="Be verbose")
parser.add_argument("--collection", choices=["hgcalLayerClusters", "hgcalMultiClusters", "multiClustersFromTrackstersMIP", "multiClustersFromTrackstersTrk", "multiClustersFromTrackstersEM", "multiClustersFromTrackstersHAD", "hitValidation", "all"], default="hgcalLayerClusters",
help="Choose output plots collections: hgcalLayerCluster, hgcalMultiClusters, multiClustersFromTrackstersMIP, multiClustersFromTrackstersTrk, multiClustersFromTrackstersEM, multiClustersFromTrackstersHAD, hitValidation, all")
parser.add_argument("--collection", choices=["hgcalLayerClusters", "hgcalMultiClusters", "multiClustersFromTrackstersMIP", "multiClustersFromTrackstersTrk", "multiClustersFromTrackstersEM", "multiClustersFromTrackstersHAD", "hitValidation", "hitCalibration", "all"], default="hgcalLayerClusters",
help="Choose output plots collections: hgcalLayerCluster, hgcalMultiClusters, multiClustersFromTrackstersMIP, multiClustersFromTrackstersTrk, multiClustersFromTrackstersEM, multiClustersFromTrackstersHAD, hitValidation, hitCalibration, all")

opts = parser.parse_args()

Expand Down