Source code for fitlistreader.fitintegral

#!.venv/bin/python3
import xml.etree.cElementTree as ET

# TODO this could be a dataclass, maybe try some standard implementation with decorators for easier readability
[docs] class FitIntegral: """" Represents an individual integral, saved in the <integral> tag in a fitlist. """ __slots__ = ('pos', 'dpos', 'width', 'dwidth', 'vol', 'dvol', 'skew', 'dskew') def __init__(self, fint, use_val="cal"): xint = fint.find(use_val) or fint.find("uncal") self.pos = float(xint.find('pos').find('value').text) self.dpos = float(xint.find('pos').find('error').text) self.vol = float(xint.find('vol').find('value').text) self.dvol = float(xint.find('vol').find('error').text) self.width = float(xint.find('width').find('value').text) self.dwidth = float(xint.find('width').find('error').text) if not fint.find(use_val): # skew is only saved for uncalibrated Integrals, idk why... self.skew = float(xint.find('skew').find('value').text) self.dskew = float(xint.find('skew').find('error').text) else: self.skew = float('nan') self.dskew = float('nan')
[docs] def __repr__(self): return f"FitIntegral at {self.pos: 4.0f} with V={self.vol:2.1e}, w={self.width:2.1e}, s={self.skew:2.1e}"
[docs] @classmethod def is_valid_fitintegral(cls, obj): return type(obj) is FitIntegral