diff --git a/Control/AthenaMonitoring/share/hist_file_dump.py b/Control/AthenaMonitoring/share/hist_file_dump.py index 19ca96707f4d88ca7d7d23727740db3a502bcd40..0ab7bcaaa5e6fbdc5fec09af8f275f4f9c9c48f1 100755 --- a/Control/AthenaMonitoring/share/hist_file_dump.py +++ b/Control/AthenaMonitoring/share/hist_file_dump.py @@ -8,6 +8,14 @@ import argparse import zlib import json +def fixprecision(x): + import math + if not isinstance(x, float): + return x + else: + mantissa, exponent = math.frexp(x) + return float(str(mantissa)[:16]) * 2**exponent + def jsonfixup(instr): instr = instr.Data() j=json.loads(instr) @@ -15,9 +23,11 @@ def jsonfixup(instr): for badkey in ('fTsumw', 'fTsumwx', 'fTsumw2', 'fTsumwx2', 'fTsumwy', 'fTsumwy2', 'fTsumwxy', 'fTsumwz', 'fTsumwz2', 'fTsumwxz', 'fTsumwyz' ): if badkey in j: - if isinstance(j[badkey], float): - j[badkey] = float(str(j[badkey])[:8]) + j[badkey] = fixprecision(j[badkey]) #print(type(j["fTsumwx"])) + for badkey in ('fSumw2',): + if badkey in j: + j[badkey] = [fixprecision(_) for _ in j[badkey]] # the following ignores small layout fluctuations in TTrees if 'fBranches' in j: for branch in j['fBranches']['arr']: