From 950a07a0dd6355c84a234270857356e264f067db Mon Sep 17 00:00:00 2001 From: gubaidulinvadim <gubaidulinvadim@gmail.com> Date: Sun, 28 Jul 2024 14:49:21 +0200 Subject: [PATCH] Slight improvements for SynchrotronRadiation performance - np.random.normal -> np.random.standard_normal, 10% faster - N = len(bunch) to compute the number of particles only once --- mbtrack2/tracking/element.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mbtrack2/tracking/element.py b/mbtrack2/tracking/element.py index 752c044..a46c6b8 100644 --- a/mbtrack2/tracking/element.py +++ b/mbtrack2/tracking/element.py @@ -166,20 +166,21 @@ class SynchrotronRadiation(Element): ---------- bunch : Bunch or Beam object """ + N = len(bunch) if self.switch[0] == True: - rand = np.random.normal(size=len(bunch)) + rand = np.random.standard_normal(size=N) bunch["delta"] = (1 - 2 * self.ring.T0 / self.ring.tau[2]) * bunch[ "delta"] + 2 * self.ring.sigma_delta * ( self.ring.T0 / self.ring.tau[2])**0.5 * rand if self.switch[1] == True: - rand = np.random.normal(size=len(bunch)) + rand = np.random.standard_normal(size=N) bunch["xp"] = (1 - 2 * self.ring.T0 / self.ring.tau[0] ) * bunch["xp"] + 2 * self.ring.sigma()[1] * ( self.ring.T0 / self.ring.tau[0])**0.5 * rand if self.switch[2] == True: - rand = np.random.normal(size=len(bunch)) + rand = np.random.standard_normal(size=N) bunch["yp"] = (1 - 2 * self.ring.T0 / self.ring.tau[1] ) * bunch["yp"] + 2 * self.ring.sigma()[3] * ( self.ring.T0 / self.ring.tau[1])**0.5 * rand -- GitLab