Source code for tf_pwa.generator.breit_wigner

import numpy as np

from tf_pwa.generator import BaseGenerator


[docs] class BWGenerator(BaseGenerator): DataType = np.ndarray def __init__(self, m0, gamma0, m_min, m_max): self.m0 = m0 self.gamma0 = gamma0 self.m_min = m_min self.m_max = m_max self.k = self.gamma0 / 2 self.int_all = self.integral(m_max) - self.integral(m_min) self.kxmin = np.arctan((self.m_min - self.m0) / self.k) def __call__(self, x): return 1 / ((x - self.m0) ** 2 + self.gamma0**2 / 4)
[docs] def integral(self, x): k = 1 / self.k return k * np.arctan(k * (x - self.m0))
[docs] def solve(self, x): x = x * self.int_all y = self.k * np.tan(self.k * x + self.kxmin) + self.m0 return y
[docs] def generate(self, N): x = np.random.random(N) return self.solve(x)