Clean-up configuration for ActionProcessSystematics
By now, several methods exist to prune & manipulate the systematics in a model. As a consequence, the configuration for the action ProcessSystematics
can become confusing. Instead of calling the action once with multiple tags that configure systematics for different processing steps, it would be cleaner to call ProcessSystematics multiple times with only one tag that selects a set of systs. This would come with the additional benefit that the user can decide on the order in which the different processing steps should be applied.
See an example of how the suggested changes can look like from the configuration perspective below.
Process Systematics Config - Now
+ProcessSystematics.internal {
+HWWVBF {
<verbose=false>
# Which systematics should be considered for pruning?
# --> all experimental systematics, all bkg theory systematics except ggWW, and all signal theory systematics
<filters={"*"}>
<systblacklist = {"theo_ggww*", "theo_vgamma*", "theo_nonww*"}>
# Pruning for norm uncertainties based on impact w.r.t. event yield in each region
<SysRelThreshold = 0.001> # minimum threshold
<SysRelCutoff = 0.8> # maximum cutoff
<SysSigMin = 0.2, SysSigMin.select.tag="isP4Sys"> # minimum significance
# Systematics symmetrization. Zero symmetrizes only one-sided systematics.
<SysAsymLimit = 0.5> # only works for overall systs currently
# # Pruning for shape systematics based on varied histograms
<histoSys.prune = true>
<histoSys.flatChi2pValMin = 0.05>
# WARNING: Use the following tags with caution
# You could amplify large statistical fluctuations in the variational templates
# if you don't know what you do.
<histoSys.symmetrizeMaxBinsPrintWarnings = true>
<histoSys.systsToSymmetrizeMaxBins = {"*"}>
<histoSys.systsToForceSymmetrizeMaxBins = {"ATLAS_JES_Flavor_Comp_top", "ATLAS_JES_PU_Rho_top"}>
<histoSys.systsToCutOff = {"theo_VBF*", "theo_ggf*"}>
<histoSys.cutOffHigh = 3> # maximum relative variation in bin (default is 2)
<histoSys.cutOffLow = 0.3> # minimum relative variation in bin (default is 0.3)
# Pruning (shape and norm) based on contribution of uncertainty of sample in each region
# systs and samples need to have the same length and are processed pair-wise
<pruneNegligibles.systematics = {"theo_VBF_shower", "theo_VBF_matching", "theo_ggf_shower", "theo_ggf_matching"}>
<pruneNegligibles.samples = {"VBF_*", "VBF_*", "ggF_*", "ggF_*"}>
<pruneNegligibles.threshold = 0.01>
}
}
Process Systematics Config - Suggested
## => Manipulate & Prune Norm
+ProcessSystematics.pruneNorm {
+HWWVBF {
<select.Systematics={"*"}>
<select.SystematicsTypes={"OverallSys"}> # default = {"OverallSys", "HistoSys"}
<SysRelThreshold = 0.001>
<SysRelCutoff = 0.8>
<SysSigMin = 0.2, SysSigMin.select.tag="isP4Sys">
<SysAsymLimit = 0.5>
}
}
## => Manipulate Shapes
# +ProcessSystematics.smooth {
# +HWWVBF {
# # Smoothing settings:
# <histoSys.smooth = true>
# <select.Systematics = {"theo_ww_CKKW*"}>
# <histoSys.smoothingMethod = "smoothRebinParabolic">
# }
# }
+ProcessSystematics.symmetrizeSyst {
+HWWVBF {
<histoSys.symmetrizeMaxBinsPrintWarnings = true>
<select.Systematics={"*"}>
<histoSys.symmetrizeMaxBins = true>
}
}
+ProcessSystematics.forceSymmetrizeSyst {
+HWWVBF {
<select.Systematics={"ATLAS_JES_Flavor_Comp_top", "ATLAS_JES_PU_Rho_top"}>
<histoSys.forceSymmetrizeMaxBins = true>
}
}
## => Prune shapes
+ProcessSystematics.pruneShapes {
+HWWVBF {
<histoSys.prune = true>
<histoSys.flatChi2pValMin = 0.05>
}
}
+ProcessSystematics.cutOffShapes {
+HWWVBF {
<histoSys.pruneBasedOnCutOff = true>
<select.Systematics = {"theo_VBF*", "theo_ggf*"}>
<histoSys.cutOffHigh = 3> # maximum relative variation in bin (default is 2)
<histoSys.cutOffLow = 0.3> # minimum relative variation in bin (default is 0.3)
}
}
## => Prune Entire Syst
+ProcessSystematics.pruneNeglibiglesVBF {
+HWWVBF {
<select.Systematics={"theo_VBF_shower", "theo_VBF_matching"}>
<pruneNegligibles=true>
<pruneNegligibles.Samples={"VBF_*"}>
<pruneNegligibles.threshold = 0.01>
}
}
+ProcessSystematics.pruneNeglibiglesggF {
+HWWVBF {
<select.Systematics={"theo_ggf_shower", "theo_ggf_matching"}>
<pruneNegligibles=true>
<pruneNegligibles.Samples={"ggF_*"}>
<pruneNegligibles.threshold = 0.01>
}
}
@ProcessSystematics.*/? {
<except.Systematics = {"theo_ggww*", "theo_vgamma*", "theo_nonww*"}>
}
Edited by Benjamin Paul Jaeger