◆ __init__()
def python.physvalPostProcessingTools.EfficiencyComputation.__init__ |
( |
|
self, |
|
|
|
numerator, |
|
|
|
denominator, |
|
|
|
output |
|
) |
| |
◆ __call__()
def python.physvalPostProcessingTools.EfficiencyComputation.__call__ |
( |
|
self, |
|
|
|
root_file |
|
) |
| |
Definition at line 115 of file physvalPostProcessingTools.py.
115 def __call__(self, root_file):
118 if not num
or not den:
120 raise RuntimeError(f
"Missing histogram: {self.numerator} or {self.denominator}")
122 logging.error(f
"Missing histogram: {self.numerator} or {self.denominator}")
125 if not ROOT.TEfficiency.CheckConsistency(num, den):
126 logging.warning(
"Inconsistency detected between numerator and denominator histograms.")
127 logging.info(
"Attempting to fix...")
128 for i
in range(1, num.GetNbinsX() + 1):
129 num_val = num.GetBinContent(i)
130 den_val = den.GetBinContent(i)
132 den.SetBinContent(i, 1e-6)
134 logging.info(f
"Setting denominator to a smaller value for bin {i} as it is zero. Any other options?")
135 if num_val > den_val:
136 logging.info(f
"For Bin {i}: Num ({num_val}) > Den ({den_val})! Adjusting by setting Den to Num. Any other options?")
137 den.SetBinContent(i, num_val)
138 if not ROOT.TEfficiency.CheckConsistency(num, den):
139 logging.error(
"Unable to fix histogram inconsistencies. Aborting efficiency calculation.")
142 eff = ROOT.TEfficiency(num, den)
143 path_parts = self.output.strip(
"/").
split(
"/")
144 *dir_path, obj_name = path_parts
145 directory_path =
"/".
join(dir_path)
146 eff.SetName(obj_name)
147 eff.SetTitle(f
"{self.numerator}/{self.denominator};{num.GetXaxis().GetTitle()};Efficiency")
149 root_file.cd(directory_path)
151 logging.info(f
"Saved efficiency '{obj_name}' in '{directory_path}'.")
◆ from_yaml()
def python.physvalPostProcessingTools.EfficiencyComputation.from_yaml |
( |
|
fragment | ) |
|
|
static |
Definition at line 154 of file physvalPostProcessingTools.py.
154 def from_yaml(fragment):
155 return EfficiencyComputation(
156 numerator=fragment[
"numerator"],
157 denominator=fragment[
"denominator"],
158 output=fragment[
"output"]
◆ denominator
python.physvalPostProcessingTools.EfficiencyComputation.denominator |
◆ numerator
python.physvalPostProcessingTools.EfficiencyComputation.numerator |
◆ output
python.physvalPostProcessingTools.EfficiencyComputation.output |
The documentation for this class was generated from the following file: