From 6cf41629c3c3cde6f5127205bc093db842a9d011 Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Mon, 2 Jan 2023 16:25:55 +0100 Subject: [PATCH 01/11] wip --- src/impy/common.py | 8 +- src/impy/kinematics.py | 217 ++++++++++++--------------------------- src/impy/util.py | 108 ++++++++++++++++++- tests/test_kinematics.py | 95 ++++++++++++----- tests/test_util.py | 18 ++++ 5 files changed, 270 insertions(+), 176 deletions(-) diff --git a/src/impy/common.py b/src/impy/common.py index 99099b6f..c731300c 100644 --- a/src/impy/common.py +++ b/src/impy/common.py @@ -9,7 +9,13 @@ """ from abc import ABC, abstractmethod import numpy as np -from impy.util import classproperty, select_parents, naneq, pdg2name, Nuclei +from impy.util import ( + classproperty, + select_parents, + naneq, + pdg2name, + Nuclei, +) from impy.constants import ( quarks_and_diquarks_and_gluons, long_lived, diff --git a/src/impy/kinematics.py b/src/impy/kinematics.py index bb4050e2..3d437f32 100644 --- a/src/impy/kinematics.py +++ b/src/impy/kinematics.py @@ -1,133 +1,38 @@ """ This module handles transformations between Lorentz frames and different inputs required by the low-level event generator interfaces. - - -@Hans @Sonia: we need to come up with some sort general handling -of different inputs. Hans suggested to mimic a similar behavior as for -colors in matplotlib. That one can initialize with different arguments, like -'pp' 7 TeV would be internally translated to 2212, 2212 and to 4-vectors -[0.,0.,+-3.499999TeV, 3.5TeV]. This assumes that the input interpreted as -center of mass total energy (not momentum) AND that the final state is -defined in center-of-mass as well. - -This was already the initial motivation but I have the impression that -the implementation is very "cooked up". We have to discuss this. - """ - import numpy as np from impy.util import ( TaggedFloat, - AZ2pdg, - is_AZ, energy2momentum, + momentum2energy, elab2ecm, + ecm2elab, mass, - pdg2name, - name2pdg, + process_particle, ) -from impy.constants import nucleon_mass +from impy.constants import nucleon_mass, MeV, GeV, TeV, PeV, EeV +from impy.util import CompositeTarget, EventFrame from particle import PDGID import dataclasses -from typing import Union, Tuple, Collection -from enum import Enum - - -EventFrame = Enum("EventFrame", ["CENTER_OF_MASS", "FIXED_TARGET", "GENERIC"]) - - -@dataclasses.dataclass(init=False) -class CompositeTarget: - """Definition of composite targets made of multiple (atomic) nuclei. - - Examples of such composite targets are Air, CO_2, HCl, C_2H_60. - """ - - label: str - components: Tuple[PDGID] - fractions: np.ndarray - - def __init__( - self, components: Collection[Tuple[Union[str, int], float]], label: str = "" - ): - """ - Parameters - ---------- - components : collection of (str|int, float) - The components of the targets. Each component is given by a string or PDGID - that identifies the element, and its relative amount in the material. - Amounts do not have to add up to 1, fractions are computed automatically. - label : str, optional - Give the target a name. This is purely cosmetic. - """ - - if len(components) == 0: - raise ValueError("components cannot be empty") - fractions = np.empty(len(components)) - c = [] - for i, (particle, amount) in enumerate(components): - fractions[i] = amount - p = _normalize_particle(particle) - if not p.is_nucleus: - raise ValueError(f"component {particle} is not a nucleus") - c.append(p) - self.label = label - self.components = tuple(c) - self.fractions = fractions / np.sum(fractions) - self.fractions.flags["WRITEABLE"] = False - - @property - def Z(self): - """Return maximum charge number.""" - # needed for compatibility with PDGID interface and for dpmjet initialization - return max(p.Z for p in self.components) - - @property - def A(self): - """Return maximum number of nucleons.""" - # needed for compatibility with PDGID interface and for dpmjet initialization - return max(p.A for p in self.components) - - @property - def is_nucleus(self): - return True - - def __int__(self): - """Return PDGID for heaviest of elements.""" - return int(max((c.A, c) for c in self.components)[1]) - - def average_mass(self): - return sum( - f * p.A * nucleon_mass for (f, p) in zip(self.fractions, self.components) - ) - - def __abs__(self): - return abs(int(self)) - - def __repr__(self): - components = [ - (pdg2name(c), amount) - for (c, amount) in zip(self.components, self.fractions) - ] - args = f"{components}" - if self.label: - args += f", label={self.label!r}" - return f"CompositeTarget({args})" - - -def _normalize_particle(x): - if isinstance(x, (PDGID, CompositeTarget)): - return x - if isinstance(x, int): - return PDGID(x) - if isinstance(x, str): - try: - return PDGID(name2pdg(x)) - except KeyError: - raise ValueError(f"particle with name {x} not recognized") - if is_AZ(x): - return PDGID(AZ2pdg(*x)) - raise ValueError(f"{x} is not a valid particle specification") +from typing import Union, Tuple + + +__all__ = ( + "EventFrame", + "CompositeTarget", + "MeV", + "GeV", + "TeV", + "PeV", + "EeV", + "EventKinematics", + "CenterOfMass", + "FixedTarget", + "TotalEnergy", + "KinEnergy", + "Momentum", +) @dataclasses.dataclass @@ -136,28 +41,38 @@ class EventKinematics: There are different ways to specify a particle collision. For instance the projectile and target momenta can be specified in the target rest frame, - the so called 'laboratory' frame, or the nucleon-nucleon center of mass frame + the so called 'laboratory' frame, or the nucleon-nucleon center-of-mass frame where the modulus of the nucleon momenta is the same but the direction inverted. Each event generator expects its arguments to be given in one or the other frame. This class allows the generator to pick itself the correct frame, while the user can specify the kinematics in the preferred form. - Args: - (float) ecm : :math:`\\sqrt{s}`, the center-of-mass energy - (float) plab : projectile momentum in lab frame - (float) elab : projectile energy in lab frame - (float) ekin : projectile kinetic energy in lab frame - (tuple) beam : Specification as tuple of 4-vectors (np.array)s - (tuple) particle1: particle name, PDG ID, or nucleus mass & charge (A, Z) - of the projectile - (tuple) particle2: particle name, PDG ID, or nucleus mass & charge (A, Z), - or CompositeTarget of the target - + Parameters + ---------- + particle1: str or int or (int, int) + Particle name, PDG ID, or nucleus mass & charge (A, Z) of projectile. + particle2: str or int or (int, int) or CompositeTarget + Particle name, PDG ID, nucleus mass & charge (A, Z), or CompositeTarget + of the target + ecm : float, optional + Center-of-mass energy :math:`\\sqrt{s}`. + plab : float, optional + Projectile momentum in lab frame. If the projectile is a nucleus, it is + the momentum per nucleon. + elab : float, optional + Projectile energy in lab frame. If the projectile is a nucleus, it is + the energy per nucleon. + ekin : float, optional + Projectile kinetic energy in lab frame. If the projectile is a nucleus, + it is the kinetic energy per nucleon. + beam : tuple of two floats + Specification as tuple of two momenta. If the projectile or target are + nuclei, it is the momentum per nucleon. """ frame: EventFrame - p1: PDGID - p2: Union[PDGID, CompositeTarget] + p1: Union[PDGID, Tuple[int, int]] + p2: Union[PDGID, Tuple[int, int], CompositeTarget] ecm: float # for ions this is nucleon-nucleon collision system beams: Tuple[np.ndarray, np.ndarray] _gamma_cm: float @@ -185,57 +100,61 @@ def __init__( if particle1 is None or particle2 is None: raise ValueError("particle1 and particle2 must be set") - self.p1 = _normalize_particle(particle1) - self.p2 = _normalize_particle(particle2) + self.p1 = process_particle(particle1) + self.p2 = process_particle(particle2) if isinstance(self.p1, CompositeTarget): raise ValueError("Only 2nd particle can be CompositeTarget") p2_is_composite = isinstance(self.p2, CompositeTarget) - m1 = mass(self.p1) + m1 = nucleon_mass if self.p1.is_nucleus else mass(self.p1) m2 = nucleon_mass if p2_is_composite or self.p2.is_nucleus else mass(self.p2) self.beams = (np.zeros(4), np.zeros(4)) - # Input specification in center of mass frame + # Input specification in center-of-mass frame if ecm is not None: - self.frame = EventFrame.CENTER_OF_MASS if frame is None else frame + self.frame = frame or EventFrame.CENTER_OF_MASS self.ecm = ecm - self.elab = 0.5 * (ecm**2 - m1**2 - m2**2) / m2 + self.elab = ecm2elab(ecm, m1, m2) self.plab = energy2momentum(self.elab, m1) # Input specification as 4-vectors elif beam is not None: if p2_is_composite: raise ValueError("beam cannot be used with CompositeTarget") - self.frame = EventFrame.GENERIC if frame is None else frame + self.frame = frame or EventFrame.GENERIC p1, p2 = beam self.beams[0][2] = p1 self.beams[1][2] = p2 - self.beams[0][3] = np.sqrt(m1**2 + p1**2) - self.beams[1][3] = np.sqrt(m2**2 + p2**2) + self.beams[0][3] = momentum2energy(p1, m1) + self.beams[1][3] = momentum2energy(p2, m2) s = np.sum(self.beams, axis=0) - self.ecm = np.sqrt(s[3] ** 2 - np.sum(s[:3] ** 2)) - self.elab = 0.5 * (self.ecm**2 - m1**2 + m2**2) / m2 + # We compute ecm with energy2momentum. It is not really energy to momentum, + # but energy2momentum(x, y) computes x^2 - y^2, which is what we need. Here, + # I use that px and py are always zero, if we ever change this, many formulas + # have to change in this class, like all the boosts + self.ecm = energy2momentum(s[3], s[2]) + self.elab = ecm2elab(self.ecm, m1, m2) self.plab = energy2momentum(self.elab, m1) # Input specification in lab frame elif elab is not None: if not (elab > m1): raise ValueError("projectile energy > projectile mass required") - self.frame = EventFrame.FIXED_TARGET if frame is None else frame + self.frame = frame or EventFrame.FIXED_TARGET self.elab = elab self.plab = energy2momentum(self.elab, m1) - self.ecm = np.sqrt(2.0 * self.elab * m2 + m2**2 + m1**2) + self.ecm = elab2ecm(self.elab, m1, m2) # self.ecm = np.sqrt((self.elab + m2)**2 - self.plab**2) elif ekin is not None: - self.frame = EventFrame.FIXED_TARGET if frame is None else frame + self.frame = frame or EventFrame.FIXED_TARGET self.elab = ekin + m1 self.plab = energy2momentum(self.elab, m1) self.ecm = elab2ecm(self.elab, m1, m2) elif plab is not None: - self.frame = EventFrame.FIXED_TARGET if frame is None else frame + self.frame = frame or EventFrame.FIXED_TARGET self.plab = plab - self.elab = np.sqrt(self.plab**2 + m1**2) + self.elab = momentum2energy(self.plab, m1) self.ecm = elab2ecm(self.elab, m1, m2) else: assert False # this should never happen @@ -275,7 +194,7 @@ def _fill_beams(self, m1, m2): elif self.frame == EventFrame.FIXED_TARGET: self.beams[0][2] = self.plab self.beams[1][2] = 0 - # set energyies + # set energies for b, m in zip(self.beams, (m1, m2)): b[3] = np.sqrt(m**2 + b[2] ** 2) diff --git a/src/impy/util.py b/src/impy/util.py index 21fdbbe5..0fa6de0b 100644 --- a/src/impy/util.py +++ b/src/impy/util.py @@ -8,9 +8,79 @@ import zipfile import shutil import numpy as np -from typing import Sequence, Set +from typing import Sequence, Set, Tuple, Collection, Union from particle import Particle, PDGID, ParticleNotFound, InvalidParticle from impy.constants import MeV, nucleon_mass +from enum import Enum +import dataclasses + +EventFrame = Enum("EventFrame", ["CENTER_OF_MASS", "FIXED_TARGET", "GENERIC"]) + + +@dataclasses.dataclass(init=False) +class CompositeTarget: + """Definition of composite targets made of multiple (atomic) nuclei. + + Examples of such composite targets are Air, CO_2, HCl, C_2H_60. + """ + + label: str + components: Tuple[PDGID] + fractions: np.ndarray + + def __init__( + self, components: Collection[Tuple[Union[str, int], float]], label: str = "" + ): + """ + Parameters + ---------- + components : collection of (str|int, float) + The components of the targets. Each component is given by a string or PDGID + that identifies the element, and its relative amount in the material. + Amounts do not have to add up to 1, fractions are computed automatically. + label : str, optional + Give the target a name. This is purely cosmetic. + """ + + if len(components) == 0: + raise ValueError("components cannot be empty") + fractions = np.empty(len(components)) + c = [] + for i, (particle, amount) in enumerate(components): + fractions[i] = amount + p = process_particle(particle) + if not p.is_nucleus: + raise ValueError(f"component {particle} is not a nucleus") + c.append(p) + self.label = label + self.components = tuple(c) + self.fractions = fractions / np.sum(fractions) + self.fractions.flags["WRITEABLE"] = False + + @property + def Z(self): + """Return maximum charge number.""" + # needed for compatibility with PDGID interface and for dpmjet initialization + return max(p.Z for p in self.components) + + @property + def A(self): + """Return maximum number of nucleons.""" + # needed for compatibility with PDGID interface and for dpmjet initialization + return max(p.A for p in self.components) + + @property + def is_nucleus(self): + return True + + def __int__(self): + """Return PDGID for heaviest of elements.""" + return int(max((c.A, c) for c in self.components)[1]) + + def average_mass(self): + return sum( + f * p.A * nucleon_mass for (f, p) in zip(self.fractions, self.components) + ) class Singleton(type): @@ -23,11 +93,45 @@ def __call__(cls, *args, **kwargs): def energy2momentum(E, m): + # numerically more stable way to compute E^2 - m^2 return np.sqrt((E + m) * (E - m)) +def momentum2energy(p, m): + # only a minor trick can be used here, add in order + # of increasing scale + a, b = (p, m) if p < m else (m, p) + return np.sqrt(a**2 + b**2) + + def elab2ecm(elab, m1, m2): - return np.sqrt(2.0 * elab * m2 + m2**2 + m1**2) + # ecm^2 = s = ((p1^2 + m1^2)^0.5 + (p2^2 + m2^2)^0.5)^2 - (p1 + p2)^2 + # with elab = (p1^2 + m1^2)^0.5, p2 = 0 + # = (elab + m2)^2 - p1^2 + # = (elab + m2)^2 - (elab^2 - m1^2) + # = elab^2 + 2 elab m2 + m2^2 - elab^2 + m1^2 + # = 2 elab m2 + m1^2 + m2^2 + # sum in order of increasing size to improve numerical accuracy + return np.sqrt(m1**2 + m2**2 + 2.0 * elab * m2) + + +def ecm2elab(ecm, m1, m2): + return 0.5 * (ecm**2 - m1**2 - m2**2) / m2 + + +def process_particle(x): + if isinstance(x, (PDGID, CompositeTarget)): + return x + if isinstance(x, int): + return PDGID(x) + if isinstance(x, str): + try: + return PDGID(name2pdg(x)) + except KeyError: + raise ValueError(f"particle with name {x} not recognized") + if is_AZ(x): + return PDGID(AZ2pdg(*x)) + raise ValueError(f"{x} is not a valid particle specification") def mass(pdgid): diff --git a/tests/test_kinematics.py b/tests/test_kinematics.py index 92266c0f..41b8a9aa 100644 --- a/tests/test_kinematics.py +++ b/tests/test_kinematics.py @@ -5,44 +5,91 @@ Momentum, EventFrame, CompositeTarget, + GeV, + MeV, ) -from impy.constants import GeV, MeV +from impy.constants import nucleon_mass +from impy.util import AZ2pdg, energy2momentum from particle import literals as lp from pytest import approx +import pytest +import numpy as np + + +def test_CompositeTarget_repr(): + t = CompositeTarget([("N", 3), ("O", 1)]) + assert t.A == 16 + assert t.Z == 8 + assert t.components == (1000070140, 1000080160) + assert int(t) == int(t.components[1]) + assert abs(t) == int(t.components[1]) + assert repr(t) == "CompositeTarget([('N14', 0.75), ('O16', 0.25)])" + + t = CompositeTarget([("N", 3), ("O", 1)], label="air") + assert repr(t) == "CompositeTarget([('N14', 0.75), ('O16', 0.25)], label='air')" def test_fixed_target(): - ft = FixedTarget(10, "proton", "proton") - assert ft.elab == 10 * GeV - assert ft.frame == EventFrame.FIXED_TARGET + x = 2 * GeV - ft = FixedTarget(10.0 * GeV, "proton", "proton") - assert ft.elab == 10 * GeV + ft = FixedTarget(TotalEnergy(x), "proton", "proton") + assert ft.plab < x + assert ft.elab == x assert ft.frame == EventFrame.FIXED_TARGET + # default is to interpret x as total energy + assert ft == FixedTarget(x, "proton", "proton") - ft = FixedTarget(TotalEnergy(2 * GeV), "proton", "proton") - assert ft.elab == 2 * GeV + ft = FixedTarget(KinEnergy(x), "proton", "proton") + et = x + (lp.proton.mass * MeV) + assert ft.elab == approx(et, rel=1e-3) assert ft.frame == EventFrame.FIXED_TARGET - ft = FixedTarget(KinEnergy(2 * GeV), "proton", "proton") - et = 2 + (lp.proton.mass * MeV) - assert ft.elab == approx(et) + ft = FixedTarget(Momentum(x), "proton", "proton") + et = (x**2 + (lp.proton.mass * MeV) ** 2) ** 0.5 + assert ft.plab == x + assert ft.elab > x + assert ft.elab == approx(et, rel=1e-3) assert ft.frame == EventFrame.FIXED_TARGET - ft = FixedTarget(Momentum(2 * GeV), "proton", "proton") - et = (2**2 + (lp.proton.mass * MeV) ** 2) ** 0.5 - assert ft.elab == approx(et) - assert ft.frame == EventFrame.FIXED_TARGET + ft = FixedTarget(x, "proton", "He") + assert ft.p1 == lp.proton.pdgid + assert ft.p2 == AZ2pdg(4, 2) + # check that ecm is in nucleon-nucleon collision system + p1 = np.array([energy2momentum(x, lp.proton.mass * MeV), x]) + p2 = np.array([0, nucleon_mass]) + ps = p1 + p2 + ecm = (ps[1] ** 2 - ps[0] ** 2) ** 0.5 + assert ft.ecm == approx(ecm, rel=1e-3) + x = 32 * GeV + ft = FixedTarget(x, "O", "He") + assert ft.p1 == AZ2pdg(16, 8) + assert ft.p2 == AZ2pdg(4, 2) + # check that ecm is in nucleon-nucleon collision system + p1 = np.array([energy2momentum(x, nucleon_mass), x]) + p2 = np.array([0, nucleon_mass]) + ps = p1 + p2 + ecm = (ps[1] ** 2 - ps[0] ** 2) ** 0.5 + assert ft.ecm == approx(ecm, rel=1e-3) + + # air = CompositeTarget([("N", 3), ("O", 1)]) + # ft = FixedTarget(Momentum(2 * GeV), "proton", air) + # assert ft.p1 == lp.proton.pdgid + # assert ft.p2 == air + # assert ft.p2.A == 16 + # # check that ecm is in nucleon-nucleon collision system + # p1 = np.array([(x**2 - nucleon_mass**2) ** 0.5, x]) + # p2 = np.array([0, nucleon_mass]) + # ps = p1 + p2 + # ecm = (ps[1] ** 2 - ps[0] ** 2) ** 0.5 + # assert ft.ecm == approx(ecm, rel=1e-3) + + +def test_fixed_target_bad_input(): + with pytest.raises(ValueError): + FixedTarget(0.1 * GeV, "p", "p") -def test_CompositeTarget_repr(): t = CompositeTarget([("N", 3), ("O", 1)]) - assert t.A == 16 - assert t.Z == 8 - assert t.components == (1000070140, 1000080160) - assert int(t) == int(t.components[1]) - assert abs(t) == int(t.components[1]) - assert repr(t) == "CompositeTarget([('N14', 0.75), ('O16', 0.25)])" - t = CompositeTarget([("N", 3), ("O", 1)], label="air") - assert repr(t) == "CompositeTarget([('N14', 0.75), ('O16', 0.25)], label='air')" + with pytest.raises(ValueError): + FixedTarget(100 * GeV, t, "p") diff --git a/tests/test_util.py b/tests/test_util.py index d8a7e38e..5ea730c6 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -2,6 +2,7 @@ import numpy as np from numpy.testing import assert_equal from particle import literals as lp +from pytest import approx def test_select_parents(): @@ -58,3 +59,20 @@ def test_Nuclei(): assert carbon in d assert lead not in d assert repr(d) == "Nuclei(a_min=1, a_max=20, z_min=0, z_max=1000)" + + +def test_ecm_elab_conversion(): + elab = 2.1 + m1 = 1.1 + m2 = 0.5 + ecm = util.elab2ecm(elab, m1, m2) + elab2 = util.ecm2elab(ecm, m1, m2) + assert elab2 == approx(elab) + + +def test_momentum_energy_conversion(): + p = 2.1 + m = 1.1 + en = util.momentum2energy(p, m) + p2 = util.energy2momentum(en, m) + assert p == approx(p2) From a85ba34768a20123864e2600ed136d00ef01c27e Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Mon, 2 Jan 2023 16:41:02 +0100 Subject: [PATCH 02/11] fix --- src/impy/util.py | 54 +++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/src/impy/util.py b/src/impy/util.py index 0fa6de0b..bc50f611 100644 --- a/src/impy/util.py +++ b/src/impy/util.py @@ -77,19 +77,27 @@ def __int__(self): """Return PDGID for heaviest of elements.""" return int(max((c.A, c) for c in self.components)[1]) + # this allows us to use CompositeTarget in Set[int].__contains__ + def __hash__(self): + return self.__int__().__hash__() + def average_mass(self): return sum( f * p.A * nucleon_mass for (f, p) in zip(self.fractions, self.components) ) + def __abs__(self): + return abs(self.__int__()) -class Singleton(type): - _instances = {} - - def __call__(cls, *args, **kwargs): - if cls not in cls._instances: - cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) - return cls._instances[cls] + def __repr__(self): + components = [ + (pdg2name(c), amount) + for (c, amount) in zip(self.components, self.fractions) + ] + args = f"{components}" + if self.label: + args += f", label={self.label!r}" + return f"CompositeTarget({args})" def energy2momentum(E, m): @@ -119,21 +127,6 @@ def ecm2elab(ecm, m1, m2): return 0.5 * (ecm**2 - m1**2 - m2**2) / m2 -def process_particle(x): - if isinstance(x, (PDGID, CompositeTarget)): - return x - if isinstance(x, int): - return PDGID(x) - if isinstance(x, str): - try: - return PDGID(name2pdg(x)) - except KeyError: - raise ValueError(f"particle with name {x} not recognized") - if is_AZ(x): - return PDGID(AZ2pdg(*x)) - raise ValueError(f"{x} is not a valid particle specification") - - def mass(pdgid): m = Particle.from_pdgid(pdgid).mass if m is None: @@ -236,6 +229,21 @@ def AZ2pdg(A, Z): return PDGID(pdg_id) +def process_particle(x): + if isinstance(x, (PDGID, CompositeTarget)): + return x + if isinstance(x, int): + return PDGID(x) + if isinstance(x, str): + try: + return PDGID(name2pdg(x)) + except KeyError: + raise ValueError(f"particle with name {x} not recognized") + if is_AZ(x): + return PDGID(AZ2pdg(*x)) + raise ValueError(f"{x} is not a valid particle specification") + + def fortran_chars(array_ref, char_seq): """Helper to set fortran character arrays with python strings""" info(10, "Setting fortran array with", char_seq) @@ -626,7 +634,7 @@ def __init__( self._z_max = z_max self._other = set() - def __contains__(self, pdgid: int): + def __contains__(self, pdgid: Union[int, CompositeTarget]): if pdgid in self._other: return True if not isinstance(pdgid, PDGID): From 26c769e9b2b4084b253af658bd92e6a1d2790b0b Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Mon, 2 Jan 2023 16:42:04 +0100 Subject: [PATCH 03/11] cleanup --- tests/test_kinematics.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tests/test_kinematics.py b/tests/test_kinematics.py index 41b8a9aa..450b08c0 100644 --- a/tests/test_kinematics.py +++ b/tests/test_kinematics.py @@ -72,18 +72,6 @@ def test_fixed_target(): ecm = (ps[1] ** 2 - ps[0] ** 2) ** 0.5 assert ft.ecm == approx(ecm, rel=1e-3) - # air = CompositeTarget([("N", 3), ("O", 1)]) - # ft = FixedTarget(Momentum(2 * GeV), "proton", air) - # assert ft.p1 == lp.proton.pdgid - # assert ft.p2 == air - # assert ft.p2.A == 16 - # # check that ecm is in nucleon-nucleon collision system - # p1 = np.array([(x**2 - nucleon_mass**2) ** 0.5, x]) - # p2 = np.array([0, nucleon_mass]) - # ps = p1 + p2 - # ecm = (ps[1] ** 2 - ps[0] ** 2) ** 0.5 - # assert ft.ecm == approx(ecm, rel=1e-3) - def test_fixed_target_bad_input(): with pytest.raises(ValueError): From 9255d40464b347dab87e217809da22b548f8f362 Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Mon, 2 Jan 2023 16:54:57 +0100 Subject: [PATCH 04/11] bug-fix for epos --- src/impy/models/epos.py | 4 +-- .../test_generators/EposLHC_He_air_ft.pkl.gz | Bin 24163 -> 22294 bytes tests/test_generators.py | 27 +++++++++++------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/impy/models/epos.py b/src/impy/models/epos.py index 74cd9eaf..7f2f684f 100644 --- a/src/impy/models/epos.py +++ b/src/impy/models/epos.py @@ -80,9 +80,9 @@ def _cross_section(self, kin=None): ) def _set_kinematics(self, kin): - if self._frame == EventFrame.FIXED_TARGET: + if kin.frame == EventFrame.FIXED_TARGET: iframe = 2 - self._frame = kin.frame + self._frame = EventFrame.FIXED_TARGET else: iframe = 1 self._frame = EventFrame.CENTER_OF_MASS diff --git a/tests/data/test_generators/EposLHC_He_air_ft.pkl.gz b/tests/data/test_generators/EposLHC_He_air_ft.pkl.gz index ad5d4419055f25db4cdd45fc18d42e05a7fb425f..083dfe98e507e50c5ca39de024e3c047bd37e097 100644 GIT binary patch literal 22294 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 APyhe` diff --git a/tests/test_generators.py b/tests/test_generators.py index ef679fe0..9bbd29a9 100644 --- a/tests/test_generators.py +++ b/tests/test_generators.py @@ -11,6 +11,7 @@ import pytest from .util import run_in_separate_process from impy.util import get_all_models, pdg2name +import impy import boost_histogram as bh import gzip import pickle @@ -137,9 +138,9 @@ def draw_comparison(fn, p_value, axes, values, val_ref, cov_ref): @pytest.mark.trylast +@pytest.mark.parametrize("frame", ("cms", "ft", "cms2ft", "ft2cms")) @pytest.mark.parametrize("target", ("p", "air")) @pytest.mark.parametrize("projectile", ("gamma", "pi-", "p", "He")) -@pytest.mark.parametrize("frame", ("cms", "ft", "cms2ft", "ft2cms")) @pytest.mark.parametrize("Model", get_all_models()) def test_generator(projectile, target, frame, Model): p1 = projectile @@ -171,17 +172,19 @@ def test_generator(projectile, target, frame, Model): path_ref = REFERENCE_PATH / fn.with_suffix(".pkl.gz") p_value = None if not path_ref.exists(): - print(f"{fn}: reference does not exist; generating... (but fail test)") - # check plots to see whether reference makes any sense before committing it - p_value = -1 # make sure test fails + # New reference is generated. Check plots to see whether reference makes + # any sense before committing it. values = run_in_separate_process(run_model, Model, kin, 50, timeout=10000) val_ref = np.reshape(np.mean(values, axis=0), -1) cov_ref = np.cov(np.transpose([np.reshape(x, -1) for x in values])) with gzip.open(path_ref, "wb") as f: pickle.dump((val_ref, cov_ref), f) - else: - with gzip.open(path_ref) as f: - val_ref, cov_ref = pickle.load(f) + values = np.reshape(h.values(), -1) + draw_comparison(fn, -1, h.axes, values, val_ref, cov_ref) + pytest.xfail(reason="reference does not exist; generated new one, check it") + + with gzip.open(path_ref) as f: + val_ref, cov_ref = pickle.load(f) # histogram sometimes contains extreme spikes # not reflected in cov, this murky formula @@ -190,9 +193,11 @@ def test_generator(projectile, target, frame, Model): for i, v in enumerate(values): cov_ref[i, i] = 0.5 * (cov_ref[i, i] + v) - if p_value is None: - p_value = compute_p_value(values, val_ref, cov_ref) + p_value = compute_p_value(values, val_ref, cov_ref) + + threshold = 1e-6 - draw_comparison(fn, p_value, h.axes, values, val_ref, cov_ref) + if not (p_value >= threshold) or impy.debug_level > 0: + draw_comparison(fn, p_value, h.axes, values, val_ref, cov_ref) - assert p_value >= 1e-6 + assert p_value >= threshold From f904713ae9a2f830d9ea597b355fdee2f953d2ce Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Mon, 2 Jan 2023 17:11:14 +0100 Subject: [PATCH 05/11] cleanup --- src/impy/kinematics.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/impy/kinematics.py b/src/impy/kinematics.py index 3d437f32..c7882621 100644 --- a/src/impy/kinematics.py +++ b/src/impy/kinematics.py @@ -145,7 +145,6 @@ def __init__( self.elab = elab self.plab = energy2momentum(self.elab, m1) self.ecm = elab2ecm(self.elab, m1, m2) - # self.ecm = np.sqrt((self.elab + m2)**2 - self.plab**2) elif ekin is not None: self.frame = frame or EventFrame.FIXED_TARGET self.elab = ekin + m1 From 8a4d1ffcf8f01eec853660842067e19830c38de6 Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Mon, 2 Jan 2023 19:22:02 +0100 Subject: [PATCH 06/11] update urqmd reference --- .../test_generators/UrQMD34_He_air_cms.pkl.gz | Bin 42092 -> 42931 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/data/test_generators/UrQMD34_He_air_cms.pkl.gz b/tests/data/test_generators/UrQMD34_He_air_cms.pkl.gz index 10bf3895577273d77a0ec2cffaafcb272fbb2c1d..991a28b60266b3f54be308be4c53e225657d8392 100644 GIT binary patch literal 42931 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 literal 42092 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%0DaRkeCK+3tDXvbgFADT})X6}qW+@`98 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 Date: Wed, 4 Jan 2023 13:49:44 +0100 Subject: [PATCH 07/11] fix wrong mass for proton,neutron --- src/impy/kinematics.py | 5 +++-- src/impy/util.py | 19 +++++++++++++++++++ tests/test_util.py | 22 ++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/impy/kinematics.py b/src/impy/kinematics.py index c7882621..9003892c 100644 --- a/src/impy/kinematics.py +++ b/src/impy/kinematics.py @@ -9,6 +9,7 @@ elab2ecm, ecm2elab, mass, + is_real_nucleus, process_particle, ) from impy.constants import nucleon_mass, MeV, GeV, TeV, PeV, EeV @@ -108,8 +109,8 @@ def __init__( p2_is_composite = isinstance(self.p2, CompositeTarget) - m1 = nucleon_mass if self.p1.is_nucleus else mass(self.p1) - m2 = nucleon_mass if p2_is_composite or self.p2.is_nucleus else mass(self.p2) + m1 = nucleon_mass if is_real_nucleus(self.p1) else mass(self.p1) + m2 = nucleon_mass if is_real_nucleus(self.p2) else mass(self.p2) self.beams = (np.zeros(4), np.zeros(4)) diff --git a/src/impy/util.py b/src/impy/util.py index bc50f611..f2a8dc23 100644 --- a/src/impy/util.py +++ b/src/impy/util.py @@ -73,6 +73,10 @@ def A(self): def is_nucleus(self): return True + @property + def is_hadron(self): + return False + def __int__(self): """Return PDGID for heaviest of elements.""" return int(max((c.A, c) for c in self.components)[1]) @@ -100,6 +104,21 @@ def __repr__(self): return f"CompositeTarget({args})" +def is_real_nucleus(pdgid: Union[int, PDGID, CompositeTarget]) -> bool: + """ + Return True if pdgid is a nucleus with A > 1. + + PDGID.is_nucleus is True also for proton and neutrons, + which is correct in some sense, but often we want to + handle only nuclei with A > 1 in the interface. + + Also works for CompositeTarget. + """ + if not isinstance(pdgid, PDGID): + pdgid = PDGID(pdgid) + return pdgid.A and pdgid.A > 1 + + def energy2momentum(E, m): # numerically more stable way to compute E^2 - m^2 return np.sqrt((E + m) * (E - m)) diff --git a/tests/test_util.py b/tests/test_util.py index 5ea730c6..fbe1fca8 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -76,3 +76,25 @@ def test_momentum_energy_conversion(): en = util.momentum2energy(p, m) p2 = util.energy2momentum(en, m) assert p == approx(p2) + + +def test_is_real_nucleus(): + proton = 2212 + neutron = 2112 + + assert not util.is_real_nucleus(proton) + assert not util.is_real_nucleus(neutron) + + proton2 = util.AZ2pdg(1, 1) + neutron2 = util.AZ2pdg(1, 0) + + assert not util.is_real_nucleus(proton2) + assert not util.is_real_nucleus(neutron2) + + deuterium = util.AZ2pdg(2, 1) + + assert util.is_real_nucleus(deuterium) + + mix = util.CompositeTarget([("p", 0.5), ("He", 0.5)]) + + assert util.is_real_nucleus(mix) From 0213fadaef40121f2564ebe8cb24034f1f0cfda2 Mon Sep 17 00:00:00 2001 From: Hans Dembinski Date: Wed, 4 Jan 2023 15:33:24 +0100 Subject: [PATCH 08/11] update urqmd reference --- .../UrQMD34_pi-_p_cms2ft.pkl.gz | Bin 17501 -> 17661 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/data/test_generators/UrQMD34_pi-_p_cms2ft.pkl.gz b/tests/data/test_generators/UrQMD34_pi-_p_cms2ft.pkl.gz index fa78bcd1172788ec16b827cfa6e844b4cacf5f07..beb4bad54e1ffffcbb2e63186507a1bbc57e356e 100644 GIT binary patch literal 17661 zcmdVBc{tSn`v&@Hl?q9y#1v&;%97ob$X0}qFjLm-WEpWpYK^F8PKUDx^R{O2#%^?v4g?&rSm=Y9cVj~(NS|7v%TY4+6k zu9loU*vnZ8>;<-S_mOqVrsSTLH0@+r`0zD0MPw!!%7&9DYcyy|m#6RTp2w{X`PzG_Du+Ay+ z>V^%9^0cW5!Q#h%Rz+$j|F5Sf>0%QpQ}4Pe`^=$pn(1U1kBUa6`;$C#M#+nW6YHtu z{AV7AP^+Uh$jgIRf~E+qfT4glVzAw^s`i-LE<`WE9+KHk(%m!%ce|lKWS^AbJj9hZ zVpEi$fb*3(tx1=%yH{635lH;Tr`#-hK>qy|c?XM1CuY^o(M#5iXm;Wnwe*oo!-=y{ znJci6fegjYbDSfH{zHpUFoATcw3K= zTO^u`uB05`n=UbHdbs;UKk6Ot zQ%hj?6JDlYZ*|GfyHGWH?`W$VQwSXC%eu~QUxK4W;7VwaR$Cx5i}J9jM!o>O633PH zFv1bGNwugjS=*{!f`kMV>W`N!41xn27o)pJvSgyL+Z^~gci{PZ_UoOapMS!^(+@?< zYeMNB-@+=at_KTlNKbm@E@D$G(|1fHJW&~g=lg`(Ms{2#&!Z}P(0Pk26Aa`2n-hz# zrqM27RG*O2)f9!$u|}dzjCO2KTTx1>RY8?Pnns&(u-cXCikF?O2TR8I_zt;No&1H& zAA+p5Tg{HVbT<%MX^mC0v}&}fdWUapS5$Ujto+DtJ%%a3r2CuNtM*YIEZi3j!`phe`h)GiZ?dFc z#XffXg!Yf+?fr3P{kl&a7m#K=UCrIYwStw&X;E;cE^jL5ptJnAU71hs%jehF=C8x_ zT9s#)yR`%O+;&sA#S&#p1_7~S-=3GRLQ6v5eZ4Et@M$jZE)kNvQ%D-G4d>Fza+ESm z0(?okOEuqU7aHTB3S3}*7~;7$gGE_QiOLNl8Pepcl;>y9mIdMRjt{nSp0@zr^yCc$ zx#gk(F4XGWEom+~aJm7%wwby%Eqw0Y9bWBHLkuTy`~BHrk~;W%dA|U9Tjgmk=t@zQ z$El~+9fc<(1IQ&2W5>^9PxF*J|ERUB&)iZxR!}A?9&{l6CMl55wcPtj4~MYF$=|8!G*@Tf}oE-4`YHs>dHY!=I$0ZKuQ?$!8F1$#ZEg% zAVA^#=wV04&;J!#7>M`vPzGjk0+sa@IUbovRma{n%W9~`uJWe#hY+J{_%(e4%SeRM z-1SlS9JS3yRgphb&ASs@jxj7>ZO|&K!P9b|vm{mTOg&0ijoqH&Bc5&4@1A%nvR#4j zkFA52=SV&XV#Is$s3%MRFx3e8x{iw39+1EgzHh_;K8)czx(; ziJW6PUq%Fsyw79dl66}nZ{Faf9I!8V-I))WiEGwzQ(O{Xky5u;yuZN|Y+!P$AGZf{ zJi5m`VuLO?6?ue4`4mNygv!#$7+=pjtpe}jG^?8hYCg(-!kqk5{1 zsQSV?h#(|`UU49pq2bK>tA2~r_#DT$+dV?YB3MbNXLkz-n*&c*kK$qZ^lV!P=2wge z%R+!fH0D^o^moY>PgQBh5e7a_7?|Z~DTYEe6X8jeha-s`h%#t-$y%eS8~;MFke1nS z%8&c7X}t;f3tq@ezq?b6{sLrvYI6m`E)V;?XSb5FV9CU*^Kl>B4y1=HNkaPlsd;;^s~ zPKs@;LwM1@0Xi8|OEF7#YA7wX@!Qo1Ky8g~gyk^0d_rzMPPrM1@l*|zJ`a>x+j^ciwKf(?GUWNRxoc}x($AGu z$|>+w%M)`e&nu2Tug3`AhlO3;4g9Zrmkz(S*)kKb*#QYv z-&_aL-*}Q%0KwOs;9t<7U*E)G9;gjyXXj^Qcc`6#D2mR-r?tD9l*1fxv*VFA-0R0L ztwe;p-sw^8akHmD?1?|**#+IYcKuzl4v|2;zR$sA3=ad+Eh%3oj9Md_Q$b*p838NJ z5Pt_qEK)~9y+NpXraD`VZ287OgJGMX)nYm9WEdp%Hgcg+T?V&48{%87tqxs=P7pmu z{2rhk$O5q;_eo093~OPTjHa0NSpK?erchVvg>hD|0RfIAh4PKlVK8yz2d^OL2}_H> z@#F+8W`R){HgrT6TmFuI-1XtBj zR3SB_{2s8^#r*bGaM@#I2NB|D|X zBiXf9F<_k0F@(V@x|ZTrIqHC7Q6QNS<50hhSagwLOLKnuJEf_4j_c;+bh5`j>l9#X z=-uU4dkq37Anzj>O&ySUrr%^doeu`krglE9GHw$xJ%bYJdRMcP=sKcJlpqIG(y>oK zU4_pP<3i!`@c9rFCQDdSy|a0!wn@MuXF4IiP{VLbb{$pxJl-JHldBuE)zh=rStizH zmTHTPBsgfIs|ZFgO+kHsm>i{XLrr2eHvITbgFO|{=iP$)KG*QN!?da0F?jrHj2*7r z&I!57oTDi0e^f}gf`meV||%%k6!Y*H#yeMziO)GsmEPJ@X=;BT*n!r);(IQJI+9z)a#dHDQFpxO!eKIyxA1)mEd5@ zoj&Z*U1n~t*qTFg>RnzwLg={)udN|5&mXb+-w`XjB1@~7_MdZ)NgU>}?37@%s9`*B ziVdBRCt7OLJFtvr&E9k=Zgo127NNAK@ILJo%JT&>9{Ww(<`%-BDX*t-3mSr_7w4bU zJ*uhbg^M7k7u*o%6)SvUG%vb}I+Wy6+wULoWxQc~JRgCKgel^E83G&@Dia5 zD~7~X0PK1yW0v)e=pdv*`V0Ga)3P}rku+;?<(D5k%c9GYBzXkDEOP^#$R)uSKt^K$ z6g<5&FhlRh;~!#GnVX-eZcNk@DB4LbB!4b}w6|&pu*?W*7r&>HsOD!N@*D{nk1Hfs<@=7+Qhn|D;#_0Vl)4D!@g z#YaOhLejgjB2KjA=zyJ|2dLWwJ--(A=)stTpEGS2vtrHM;${(#?!JTtRlnE7GQ_$Y zQAWdC2Q;c@#aQL`E2hpvV`umy5P+rPNnGnu=4;HAjv z8N=71bnflzYn`nq=567tiIyGuYC+$tv^W`9R7m?v9yOWJXR@?$TF77UTdc!0+9$OQ z+FLuO2>9J&BoywwBMO~3vJyH$^)JCxO!9D{J0sVhKN)#)XV~8&;iae8hF59AZpy%x zjbW?>Wq4D&$l`&F7~EAt%cyV7O1w&lAEMc`1!E{%T=2O&Ejz6Q129LZQThL-LKmyV4B4Yz(s5$hIF zE?I>6mIGY~*`$Q_=3q|5m>`uR_Ku_^Wc~zM;HMJ5F@8_r3*OSt8K%B4KcN7&kUQU| zZ0s|}jp^l=qU@SSSHEy9Kj>ltNKzNrsc1J_Ob4JViryi{dXUGcYkPFKLsFA8*aSP* z2s=sDg>4wkZ`R_($r10+ZP0W-Zi1FI?x@k&#drI`iw*T zfrM#}69T#j#*zVHg(KtS3U(tzb=&JtS=pH{Dq-3cpH$%2<9feQzeB-ilpk%_B^!|Z zno*gvh4xfmq$uKNzBYIuv9rr8^yjjt%~z61WV2##1>rtSspa-5sBn16pm+H|*wb0# zRPOgGD|L{xi|8xfpM_fav18Z9*(W4J8vu= zFrXvtqGYJb*pDjUSD4B#wplfF zHwqfsxq0-x7i3dF!z#pt4Y>QtK)NguCAXCK6K}9u9N0VRjI`LR6OgpRp?1Mb)?Y(s zbojNWjsQE>=leR5{1A=j_T7-~lFQf28;Y70+-iH_Ram-0&G|W+zicdMiA_Y8^TbKK zsw=x3t$nI={Z$RPw56wUiXSP$??d8q^GN}p@yZs<+q+jxq`*_%2)CSZktOGt>Ztforx$~^D^S?Ur(39&_n`Kn&DFNJdtE*XL^HTX4UgC5m9rp31g!;!X zuBVGrgt=T&*YFD8gahoW*-hX~@&31uTzD;6QnNDCM4^`(N85;m+~rArp@Z{R(cfQk z7$pI&D%78Pm*w{0nFMI!3@<|pkrc5=w%j6q^9%)CGrs?+26+;&qMCHaP_LQ}PFa3! zZYkLqAEVLGuPP)kNHzf?aEyFYAvZm85WGHejT^$uE{E`ZT?XG0G@Q$ZSffFpLyO&oP zi2J&R-0Mr*z2u5Z3kZ|3N3~L(O2YO$Fp7lY*}OcMlx-{5snL!AdeQ2rPr@Wc7(8;> z|J}johu6NSZIB?V|sX@(vUZ$$wEZK z^5bSx-Nsq57{Ke*IgVFL1qRb+S{1U!lHg7T!bTYYo(hA?W?Da)GPL8y@|)jEt8PWpKMJrX-i+iMlQDagjEsuGFb%fU4dD z-E6mpBkKkZkoaR_r@%i1A;))CUzDMBMZayvWR4!m8qZWN9)PgG7$R!TCYWj1{rC*oTNt zU;6ul4F?uTn3+slDwMb!?@MLeQ~uR>5tPw!qvk9?K6H4k>#mO#cSt>P((V;WT>1#u zU~Ck1yC(CIVV7R<;WGKlzylQ0Jo5mF>8F+_Y%wJc-9U*eIKIYI;TkdtLKt;_2A>k0EN8~gK zOUUO9zN>QA?fgxkaY7jyN2;Z_eO3ddGhbj+(-l_&Uuf_sBKaXozwGY;b!>VvJ=@3^ z{%rV5)fT>)m5s0Ibg+J8%?Y>4nEJ@(+zXEr&8Oit+t9~ZWZn92S2UiEz$0bdLEF;B zS|raD2rU8DNcwRlCK_qF9fe4qF`dpJO|5eqhHjcQzX9+-pYzo>UtjWpt!74nXjM>4 zWY)nHHzFk5r7DD6f5NHNHV@nM4!M2A7$a_F3Cu;uz;L1f4KVaGPmH33lkcsr%PXXdV_W^ zad*$kLvi3LBgQVh@Ff&1?Zp^TXy#Oc2UMR-Y%Z-(JC7LE5unCm?1H(ajSd%KA5#-7 z>c&1dc4Fo9(Xdm_v%fVu{>cI4W+iledzR`!I;PVo$`DgOZJ z_&#P9!0Ykr?JYAQ@iqKZWttgX@nt|Zn_?zERa`6Ua->Ri@?uKb!=zs8fbC(2V-_%z z?vyXd)f-(z5a*ub7|o9+E>L7cgfk+NWV@-z7cwwkWIiNLk*jDFC! zb|ksBE_^{?tmguTLgO6*&D6fl&QGj$cc%NE`NVcA`_^*`|WcitW7le(69 zn$r;Yxh~PgPcs)DPc*~|-ybcJ-{h^$8F8!J*zOa(87Q$@B z(;|^+d*Ig?M9^U>Q%u%r38h8{Fzk~On_f*FO#nZI`H44CEqm=ot-zpt{okB!Rj5$` zVk^o+1)1669G5bjE7t)P#?UaI2V6@pw91aDurQYU4g#6eE%C}lx zCyfRBK0jZ7t=M3$-JR`Y1J-=R7#LMlN-g~9E|j{Gi|QmU00~$W zttuKT_XM{ny|rhp^dbktR;+x~FcwRqL4?1z!w2SMmP{R(EmU$J;r68@80Bt+kdCJpZW3*;4wunNmMtBn>L!{xn8mbdZB7L<;R_xWE$wIn zl{lAg)>$K13&Sb|V*Bg?^MhNF-z)5u*8p}8QgM7Th;97?#ga)}K0jB{mPs| zrgus$p!M93LZG9_szFUtx?2jAUO_b&`v3B!a>{Tzc`h+8(N7vq^~o9W06y9}ZrEMCFX>kd7?ooN_uBf#2|%qT>D&&}xG}n9Ypz>?*+lgf1fN%(l91(^VeGVDHdWZ2PnvUtYe9_}peiACyg1Ttk*dq4{t&k(ndeeSp z&R63@@^gaZT{~{EFJ8n|-2t*851&!vZ<4owB%!zba)IgpE(8IfP5|pp0{pKxt3a@ zxn0vQ-MNe!#A>x#_`GSQ4q9g1M2B4rfc{#{c?Xlx+O zl~@-PO^o!*BCXD*S$r!7`ld8cB3Mq-y!=B-sXgE1!Z7_QF;Ip2_zzp_O^pXRSpKgX z0cJ@D`I3%g#cj&zxt$@f=3fmjyqtoaP(bm~?8E@Dl(Iu_+l5ofysvBWDm2?Gt(#)4 zXT}Dt{SqNn4c*_JOE5Lx9F0MenSPf)1Vb5E)d2QI<&|Gp?q22S%zVbqiP;NBwt0&0 zsBvB5>9?;6=+()*A98u%a<`+w1&O;MVH~NLHrYOzrht7Z;FuH9VnW!8$dMghg};1J z=b6pPNw{1_sLT3`S;Jb(`*BLG?fOcPR#Km|1nV&vLejr5lILvWK1*ha9zL;QsxLew7w4`(?IV*zmO+BeCC?YC1i z;9scnk|nC-uKpgqsQr%GwaWq`g%5}%K|EvH@K3{wGk?)e&ZK4R)=qe&dJ*St~}fjYf5#Ns?vD@|D;P^p2Zo8Gq{ zEuydigc1VDcI&I7IS?x6M7ewp2z6deQXKpm*9)@k!FBz}JZQb#rc7^_TC#qfi2Xp2 zwRY3s2Zeyw_!q6-S*E|?_-@x3rLud$58&~#-`69W6Ru0?8UG}ZVq6cg5I^TwjSc3E zGaykYJ}t3Tuo4srujG5CkrFX_E(Ecwx;xXvcSPgd=A94B3ydX;TYwXrf4U1cgf_Og zh2#%Z%0SN~&@bRa)_SXuT<*tGij8OHRT@-Fd<+?0(pze66-O?;J$Jo&V^q)a>yw-_ zSmk1xnT+G-78x7n73citF}$)?9E#Pz2~Q(g2|v*xUS)f%hz6iWVd6cF=#wGwDN}DU z0N$!Q_G0!ViBxaN6n<{#Is(u~NJG^EQ;j`OV7{B|TE&uQ`8;{l~s#&G) z5VUjg%sXzLC=v3rlRhq!_L#!wMGpqIOx|Q7Y_9KVqY>CfTLXGPaSf|GamO9!J*eEA z8;pq6lo>7t?oNDLeTDixlE2~(!cRhkfBmLa*$GE>{eOXGev9^k;!BwLy&cI}y)U3d ze(n&30?k(r`ESo86*S#@-=;Sfj1Z>zdUfooX0C3zX|>SUM0Pz-Rns|)=~5_#6^GQN z&Mph%#)iWHQ9j)5ota8?gwF~=R*Xz;vZ#5;V&ElSuXE;Cx_yQZk~e=jbfgw)=^`rL z%E6v^Sh3?(RoH5rAM=Ks;Y`z;qgANcDgD#OJ;85A-?{6ryLyGwF_4JSe7~+jOd;i_ zHWYSZ#<`WtCFIyFezl|7lMR%6O($pdhBhpcOX6~=B!@vuW+{qBxC7=#ioHE?kHv6Oc&>x)o zKUqY`C-*9G+%gjwtXEOBjniBqMp2RJSiUyd)yij_S$d6hLNRsc5{p(#>4$ng9#(VnIei}vX=WSNF zWX2Ojy1}u6Yv1sU`iJUlJ*?4H;hK}8Fr+4iI4gB!-qEiBe zAN;~R-nHm#f%Fcxe+j>jo9=z#0-~m$Zk#~8%G;DMgd)zb&jn}+40vwu{lfsK$#w}h z#1F(O+MzA%JXTzkeq9~(`Sq9lT8<;%cqqJcss+89L;dIh!tU`Q47|J4m~qW;FWIEg z3jMIV@bLr?Wui5J?y~*z!zg`^P8%d$?RI#ith3%Io3qo!e^zD%ID8Ibtng5Q{oBvWuok@0BH$L(0ZAXtQ$eYRBTC%4299fLz zL*ZHWpQOUt#i(Wd=rUEe=b-AW)A0L8K-P|TeU#J=Yf*oy%E7QUg`2+mud>zboogUdt@|JwwK=CC${=P+9E(!uWHg8z`zs|?CWXc-F)&s+ z;u#`$*;Pg8T>UJW?4|NdH6)$85QeSV@T~jxVpWNut&)&eaZiOqnK1ac2$pqZFi0V_ zm6K^0zR#mi06M}ArGt@1xm1m2RTSIISVAxno$K4Lh7MQ~)daJ_q6AL(o^QgigPb-S zn*lVhzmcR5#tz#l{u@ccq9TAR*uRma7fVzrChd9Jx|Zyc_YARLSMj+fi)A^3=xy#9 zo0bPw$|W3=4uwPL?dOD_f~jtx#Z{elt*jQlo#;D>XWDxaRj-dJbyc%!V zvc$j7bBBekO|JzbC8qI(S=eBUR-;vZPkiA?T?B*}C0%YM!%cDNvkBk-{U>Sbzk-i& zT;5;43yX<2_XX&0#qi(F4j)T}-B3663DkwwmOwJ_4A5z$j*Vo=%Bm`1nGhh7W0)^6 z`pD?(V+-1eZG!9_=2bpe5^=Q6c9735LFyrzJgq2^9Q@T-c>-AN86Yqu!UDYLEHdFZ zhZURFwc~KkFe8J0R`Z9%KSXcD;!-3LxD(tD_{AiAGz{fG1%r&;Htu4pdyOkF8+tZk~1B#j(2+f32FW_{8&$ih^f158VQrW9eg}%><8Y z)ZnA;p-!pB{$9V1r^rs>L(m@s*%~P_7L?mrblek=NnS+5$g;(7U3;HFWW3rIyb0LGti15(*v|9tU(dJ*-R=ute4Z8lP-=g`NDq4Th;TU%Z+ z(OQGczaobqfUCm+zuEwtjFAK`ch6{Bo^Q-x6~8eyoc_&atum=V>na@%kMf4StemQf zq&2?fsO9JtHhpgvG|FmtV(fTl;-_f95INeI+SI4Uvn&1!Fa;L$nbT5z2pEaE^1Y2y zYEd6D-*7g2v)vH&sxxYm>s9Z8nQ&v^cc>gj?g=+H^Eur*zE5KqjSp!kBxp8JNW;{4 z3nu=)MZBXY=Lfe01Mrw_pY{uoxbK;4gd>(-`QO3tNA2!X-#-HSh(K==rs^LKU#kw@ z*^|%62oU%MGiT%q=WPNspF?wo`>A)%G9O=?_`p$kI`Gn^UB1t6kVc!ZSjc+L*hxWT z?CFm0fbExl`D&H|JqGK)Sgx;bNlZ@iUkhWXr}_zo#_-n6q5_{_&==l$#yMOOeN1_| zekCi`-utz%@5d!M>Nw8ErbI?go6{~@R4*a1YiLf^B}Ml}Wg%VNSnU{A9o=T^sk@Ny z7n)3jCX~y7H%-&9SpNr|*=oAHxyzv$G`BNbc^JDsV3f4%j!AazG1!vy&HoO4{*6YY zKa%*j-vayNeg5`aekJU?b&JZ&PD6aX7N+W@rRz+=<-@HNY?a^?>?$h1 zl@0IF)n(vUT6R58Yms}{T<*htZ&iM3`Y4XVtprbNZ~1Gu)(zks^2OlH`whSiS4@n6 z{X+iph?e|(%E<&F_EUihn2>i+_C#Horf5vLiQ1-a!S2i@iKlmXt`3|;_WtI9X z%S~XbBN_X4xN16(1^!`E(dfag9;aKrhX->kbKLS7a_@^(UYHu?Z!>Ek#GT~lB0A9` zc}da^HYh1F&!Y>SjE=*DmZ)PuU_)QRl!>_+$u4B z77-h#Y1#jQjQ${F{2xy6TUOBe+kSI`rj`RDc3|*-9R4=j)L>^M!myVz2GYYUKOd5f zyI1}GO8<4cB9&3N79o!BGb^Xfq}^b_%tiej!KvzlJekyVhuMvgpH6Q#e5Ry7?dEt! z=X{sjd0q&a?8lugJuK}DBAoB4dT_9oqrAKbXD*pfz*b3Qp)SUA!S6{1r&1nQr-j%Y zb>~>n%k-I4@2n0+wDB9)NoUbVO#z+UXa>h|gPe01#!3;Yn7*PE5&vqSmTV|0kg_(S zVu2CZ@BNd%_aB&zvA6yV5A7?=z5N#q9Qa=m!@ai+kg&i~uK_d2aaP~S(+awyt;=@1 z_gB|nnfbA}sx)rYlyV&1G`bSHqmHGiSuVGIIicdI@p3yYWh_Ph^`yCC=c+30OyIGz zd>zP9LfpuG4khUolhDigU-bvVj6zl@4cBrwjvV)%J+u-aPpEm7c3%fnKQIHA(WKk8 zHH;1xdhlb(%D$iQ&5zNeV9hO^b6JF2sk?qFt(U+*<~swJCrznX&NBGQ#+%ROYb+fD zFG+4=cD}#fh7hqT@3Bu-vdxYt{ac3S-;(K{GQfVbfCl5=G=TP-1?>D;inOrAoAe8R z4EhM*ADhr(eqBcKozdGF5>;lL@s1c$eKJ90@BPP!$H6b=bL#ehwUUjDUq8AF!PXzc zkWbvRYeXe1LM*~EmcIKBEmmfP&h7}^OYeT4qLhS(Nj??}?JZXWtm7j~NK0yOXVY*8 zGLp-_Ld|Pd5@feRj+RuNY!Qr|z)Tny0ebMXsasn+=g|zG`_SnM*okvTaW5aaiva*z zfRLn^l#rA$z1@vNf^UumghOo3eHsn$EjBNP8WHCPt^-rjm=A6+FVwYr?DawM%>dRQ z$v$T){a>L@R zL7tW#R0F=LJFfKgL`G>lS6vCl+_f^%=w7I7{TSf8PEtZ~o$Y5OLFYrLxYJ$MyMd9I z6Z3VbX&3$PO^RckM)OBsC*dw4C9w@3C@DGGhR4@RqdWI9>nG9z{*5b4iE_*>y_2#C z*~l907pM;MST+w$aboJOq-d-L!oa10XFcjxP_Do^(_SoA*@0qw^}g$Z z_ch?!T%MY*9(;tXw<& zGI5Qu`~1J1uxk047m~Wu79cSFv32glOug;ucw?kwtU}!8bwkF@Exa|aJ_h?2pW^SJ zd}(y`<&&4bo<$Xqo!8Vj2+sDi`K*pGP@kQ|8&PQDmw9*A@FjYkDrKVxa6Npzzi#X9 ze4D7-?y9Uy0PpF+h)_WBfbvi3!6I5oZ$V!TWnFKF@Wz9RRxIL99k^7){?S)hNCD*%USL?qYDi5G4|B6|lJ zbu@3E%7YAmY1|K5)*>rDpPJm86^AvFP14chq>3567OVrVF>W#%BR|i?=zJquG~lUY zN+p16R$CX!_}{?-y9EYG?X}2R-kK|EPqNB5Zxudr+LLo7Y*+j*WQ;k^2A-QIBR!t3 z`=I4qE0vsrvtF zQF`LAL0Kt~b^q2LHu0_XcZ%%}>u-H23l~DRZCim70xr{xm^05Z9SII;z8?MtTfNF; z+In3=<^T`yO8G@SnZ|MWs0rDMM{Gglg-RfQt7ov@cjGCIn7d>dYRxM;`uelOM{3kD z7WepFqp{@l8~DdjPRxt5?y1VR(xa1W?4M z8gj<9kbMd5oF*^X#k!j-!%cTt`t#H89{QiN5)14P5(IaApC~w>mbziYO2wOBK^D!9c&*&pu1-5n z4)=Yd3sneIeOP@#W7F?2T&&v+=KV5{61Q!oT!52lH)+UcStDQgKylUbnF6Y2?F0kf z@A>Z6v$lu75q(Z(<39v2$biC`ndex)YWBw5fXvtZQ#^#-JgWP3qc+$s)rfrMFY3iz ztflyHn|WD-)(!9rmZ5j;h)cwpV;-hU$4v<>XN;{^J5zEY6!{71ie;&cpb?W5Y;U)S z3BPK635?ywz8WOHGyI|cusY9@d<}WR9cj_?zh;7JF1md&Ja834efkh0B{kq}xwo80 zg?0I)<>G-@;SlCS9?igGQSij%iNXVWr5F+OV&= zGAc94A@iI?H{(zE_wK??{z;QV+)hE$uwmsMRY3dz=T5JjzPuP&;6!+;hS#nIxPP~r zf~HLhr7hR^yd_*Dw(Fwzz%tUOprNVng&d*{=drZ~D0;&>^ZDk*D9iXIDp?g7 zXfBzm<_&$&EuD!#f8!Rw^cSyuezvViXtT$*9@n#FTrPXzDZEEYmMNem{_n4Wm#3%%T^-Rgb=V5KhVgfc;zl#Ml45M!A&_x-qJa%?MpRB zr=~^D6Dj9F78~14`_wdSHL+uvQ7;Fpc4cHtKexMUdl85$|E9a&0RP5{us*-jS)K;reA<3l%?ZWy zshLaDw@CP!c5T0evt?S+o^pVg>g8JUR`^?w&+l?&Fb0jFA^x20_uDqdH8gDZz&uXC zGy5lzA@IqMuK@`~&W7S?7tU;`b>a!JdSkAiXvu4W1}dTbP#d8lsx_~I*_8DV;*v=F zrJL)In8|Zs-LYjJ5seJ#1%UMB@=kfq&dt3jRb0gZb2iJWw29|BT)4DB%p1W8Mf2&? zLqB9I4l|P}8>ioa?CX;oHs1IkOZt{2+&+>_|HZxMd-u-Y0&pMp#(VRf_jiBTpGJ5F z{EvfrByc~ylKW@lp|b*P*Y{*##uL=7x=npw_G4vj`0|s9)9rbIH}O{M*sfkJSn=>Y zF7%Dnwdv^DVk$EXjyR`yi4 znL%sp-OZHQ3q`$AKH3ITIy^I-Tm^Vi;1n#m6ixP?bxd(!tY=RMFw_&WoZ`J>Q_y1b)2mhD%62lGkTW(CocO&kW^DFpW?oOeP z(bnfJaw((>Aw!T75d}@y^r=jQqTI;77;UiB(_;Zk_QltqFSHOeSFpzJRdssPzCMHgek*XxX}?Q<|I2 zP<*Bhr+6O#I@6VdM6C`k@G6?0ysVy4@`{VyL!{V|BNs)OMkXDhqc9P*dx9BKHygF-US zLubgxx5-M(h6jxgD2o-@2&{^y0PPx94fK`VyL1GjN?Yb|?tW85hawzZ>eIbOkK=rr zhhImM6-PQb_u|V0*YP+NdaJ}|jb(kRWyyX1cFIfN9Kg%QBBT=-uuF+AcUy;Frkq9* z?%qbd*qh!0>6!1^<;SN*B)L*-oZWA0oZ|n~t~qXc9lkR8ZA4ccF$2F7^dSGYll5E8 z|9_FOp@s1#QHnW1p9Wz{e;f(RHh?vEa&VAg3xR z?tGnn;K|s0=r1?(53aB~qoLkrg&ZOe*9Hir2-(jtpoC|kx5g&omP&p9+O<|4J-7Ik z0AAMR@a=>`KF_3c`Q!?>1Hb_orY`IOTc<4qRaQ_9pA3@U?A!{{Zw47ooJ@C_N&z-np!&||yAwQqYQBG4o^{fHi z7LVw(^GtSF9M_|wlYrj)n5NsDrLg#bEjiJKy5wMG0q4=iBQHHs5P0* z``Pgo#V{dWoh6byuK+af?5EXk;A&9gd5fDTC|EQI#ugDT=(Y9xVnh4(=U{iR?cjeN zab1)x=zRO9|FEbQg7N>!j@vD!gqHu9^BhzP>RQ8{tK^goRqg2y(5K0e3%GIkJ7@;m z{j8}97^qXI?N|~Avt=eW}_{?IR4d}eKzHI{KNbM|GJLrA^ebB`TdB)Zv%EW z_fNzjEQ)WY**p7x)MgZLu~r51y`nY-F)_a?`((TT*7~i@EVrTk@SY8Ny)$>u9l7wS zKX8~D$o%lpte#u?M-i=ot`UQA5ueZvF+Y?#5Ws5Jb4AJ^?miErOifpXe*dl?NVCXr zV?9e+m^&z-x9O9J<>!%fVG>6ML%|F@(LwCE?gzCJy+A=}ZgmQuXpLQ6LVH}&Sj}DI zQpv~JyQ+Z1%kf{kKBqnJhpu@J=O8af!Q8)$To(i^kN@l2Ez7)rIl zP)c_Z#A)Aw7V3HnoEQvWE|~^-4s2-16|~+}bcN9*|E3mX>h&4gWIOOBVG(idnRip=91^_TCorZI=2tFeI61 zwe>8HE$gA;#hD&iNwAD>RPoNKr3Y6k{{%tq+;%o%Hn_a=hp%1*Ei8sEfDCa@gKIij zC3ch+kB)A5GHhmg0$V2hU)(eT$mdF!!;bo@xHH)wFbY)6fGu=~PvnO44V30Hdx%!` zdKJ_p4Ue`=DIq2+VYvIi$zG(wqebZOoJAPY>+2d4b!w@1aVjO*q>CN*cox-Y2EBbg zSo2mNQ?L)7e-(wPYa(Mdc1(!!S}lxFOL?S15z1ypBip?9gc)$AZeP2fYC7Hwf-dcS zS3*Wid!j=VieaYdlo^LlchTK=?5KDGchaUu{up&`)g95&hV*}^j*+5XcR4UFJ?Qq6yT3ihXsKL^>x4$zMTMI9A zkx@CX#n1Kf4pVQzuV$Yt8+>y6rCF1uA-Y66ke_2!zb)gts>yWZdz|ucK)umv_ zEx;!et>I_BJZq3Ay!jN`ejjm_T!uv#HEYSGb8Pea@#d?=n)&6$#TxFmP^~ajQ5DRe ziF$D6O-RM*zL3FZe0*`=38lC)9ip^p-#gr7=krxk`g0kWj(Yw~dF017zNN|mooslK zh8GT^-)$WAAtYU(5a;6Xfx6_pxLkx*kHz&b@ThU=uF=M?Qu0plu*ZK>TB_P+?=db3 zOJ(gDS=qU(a1~kMZ@7@obrrJue0|5ufng*w_!93NF-m<275;yHlmrYXvlhGoij%7d z7TCP%e#$okd82qhXSvS!X%^D{aR*Kp=I0AhC+5&MnqqpLqrHmCU6Ss5QaIr|J4LdP z3+4_l(yEIm(m%}SYfryr1U8k$JQi?6`pp%%ID{F&Q{g<-?e?6#@{b&!>8I;!KW(}# zR8($oj&B8muq))6PMc{V``}3Z3{sxavM#bp)`kh5pXD0*K&a;xkP&n`8lP~1G|*|9 zx8!WvNWZji(M9Z?dLKrv;?wfzMtfEmRwNPUM==;zX11lk8;h7hlV+bSm>)GRvDKn4i6Xo9|On z;zB}YJ|7kIp7k+kR zg#mG2%tXsR86gjFXvoQ?#s`x_&0s#^jzxSG=g`!!@i1phm>J`Of0%psw@+KX$%@sA zl@TDe)mjrjpP8~74eV9C`Sa@9X7$NP231!-)n-EaNM928ySulhO@&LQqI+1XFD$A? zny(WcR^QslELjQ7?xn=w~b zbPz8o3xKH0p>)3lrILzvCiO`ah00`GW@4Edx%IEfOqt43)Vb3MYCo3t&NKR~27_fC z!}@nz4TESJk|6HIh)U;cBj}};r?GLDAfd7)Ri8~Ztdf$(KZZm(hj1&E(%!uA!k=Fc z$HL!ER)PN<@C1UkJB9amdR9R-Rz3-FuKQ-mbP#{_09>ie_ImD|ph=Bo?@BZrZ&!jz zvkF*EkSp!TKXLHDM*3C0nBhpNO}mq(%9LZiVRwdl*iKcx-r7sdLs6{*vw6c3SUGbL zojqRLHhsA8S6TMp&&<7>t%-Z?JlR`U3AQh1z70*uRMpXY3Q-XJCx2k|aTKU$*tD6g z+1vP&pdYxl+B#0LD`z$|a|1%eK?T?*$$*5F#HQ~2w!D!n)TQ|Wy^&?vbDGCs%40#V$HWVxvqCFFEoCbq6f>(mDr5=zmT*A zhBohQn6m75exgGb(l8i3jXwwOM%#_}GROU*Iq@7tecdqg88W^REHEutCy!t+!|Nl*&J zjPYnqCB71Vtl~7M^X$Y7tR|u8EEImyW<8`mS*Khc)H&ZzOh$<^H9uaKHxMM}Dc4kP zSC0$`eBSmllB%b9ZfoS0W9#2dRsG0&H!|^BEWi};X}c{l6&BSpr{2DYWV=NkX^+YE zyTv|!CSMP~=x|g5!(MR)lVF;!PVbSC6-}+E}p) zs9!AafRZfF!sk1eCcJm{`);^pn|ILAA7iRle8Q5mUN_?5;>(Hm*^3vKdWOU^G%9EQtKKV?)d)H?Kl z>rmqHyDsDFL@qA)42?JQ>6#}~EmNd}i=z5mAcK$AGul&Z2Aypac-3I^(q`hvj?EMt zU%9<1ZGVZcm zQ^L*VCZ5{ZRd7+T_X3)^(u_-%8oQfvcF7^C`yRC%M(EOB+Pl?tJY0}#0g3}>D!T_a z`nR-2;&VEUUT^lv3^g($=H??+02j$&%5){<179lj*s${ z&U{m+QKcqR zVk*R@8PWd0LpG){{)R2>N2Y_7z&}t^Kse>szdczj;UTE~nt!j^EW|HT3PzQ3O zf?U)%31aOeufPT;Bs|t+G*BPqu??0Kn#Sq^Tov^d$&r_g8UKY2z1k= z7+b$sTb}6f^pkdwDyudB0lWy?3c!1VDo$z&#AOR-S1itZgfR8S)~T{Kf!{aV^yqux ze_~NBxAqQ|aoT>gy}Xtg^02`SNXs>)RG2YP!Mq^aq~t4q{}#!mcCW)BW^Fl%t+vlw zZmL*dESEfaj4@5wlGIb1{Sp=#cHf!*(P9Y_UHN9o-&I}m zA1c@db9-Utay|c6$;?D;PQ+}<2xRxl!HWSHAcV|L!<#D1&x#u|#x+cx_Z@Y^-Jagw zRYW7Zapep}YVpxXHp4iHE>4jSet(#@YD51P=<#A|0Ue9FML@>06*3#O9a?l$4FkT= z)D}?blJ=6S*B@25v3jH}%g5~nXJ3ePkNt+$WUwUR(P;xjCAsP8A}HD%F{dUH@(w;D zTLC?a>qqP!dv9dV;ueNmc^{6MevHacQ&=d05(=d}eUT%XRPC#!D59e_#Au)dnGwoPcASdO9 zKl8CqCwG2VuJ#@|u~y&5Um^9^05y=HILA6<@X`FOXQsOVOx|PKxq83j^!pS{y>;vZ z6`t1Rd+%|4${pJyNb541{t2`_bcvxFN&03YOm_?hI8`O&5O<}4A zeu+<)XhFU(Pnf<774YNfW`#Yl zOBoQbdBc-I-QRTqTA=T}>jiHUjyHbYl)a0BOS^J517?kD2lV4p z-sR-n7H=JW9+ZopWbnVqN;SSnD;KQz&l&Cbz%1|FnBXMIfugqIgk_V=6a=;dS37rjdT%5$_yWvogVE^suSjyPE?ow zWQd;YwBJ`euXZ>#K9%Z@vy|*nfmX~zcdV5p+o*Rge0rMY@@N*_90NuMe7eg6rM&o) zv_Y-T$YKB1SAoj&K-;k>e1Ruw3moNc{DD70r9`aLka>Ya96T=EzpfQ*>O2 zRXwp%P5Q36Z`agW3njaQ%ZFF_O(gSJo0ii2Mv#vmVGoO^o~jp;kj@HFFMD(@sd}l@ z|7_{Yx0Y7!Ab`Y>Uk+aaWqrejsmEI*Atvl?LyC873BqwIfKVq=CNxSqt z8Pags1Uj&2tv+Ij%&huh)?Ggn&^CyljjP@U42NY7ggDU1n`rue)gcoydyQ(yGi`Gk zBm~g`?0kSOfQ~TuMXm25LQ-LQ);?U*Bsq z^MYH+=WD2Oa+lznE$CS;x+;$o`^;sG^)^3kcS)#AnuU*PV6_sg7=%EIpi^9bNT-i4 zd@m3J<%KAWA0C0-!f*Mn3?`b|y^0cdL@$30{N@VuyU3hj%mgE)gRXsmHz7~+pQiej zPL0ga(oXdFcz5}(|JmOg+L6rSliOnO{jN%kL4W4sF#=1A7o+*c>IIzM&I*V39T^nz zM%&mhL)50(B9rUG7{Q(~37#9*@6tAgS^YRMRJPU?r9Kv;RQoplX<3+95{yi&+`E8N zQ?BcDd7A7&v!8zvDtS86Zyx3DJY?VN;EgKDi_Zj%xW7b38LvR%D=XOq9}+27pNZ#g$@w;)%HsX-^KwTY|s$(WmqQE49GogP8wL^qRd zLO&z$LNTDb(TJng?DBnCC}sfyD=h|WlG!FCfa!9jk#*?4TFqJKSuys`YWp$9s0biRY#U26k~g-(@o_Fl3Q7N)ia$*Be)}*Ni9t_szud#=LM8(rSg|eByhJ;O})Z~!v#IS z+IS4JDG-kz@Hc&Hu3T_Tu8X-+@W4ms%kZ%xkh1_Nd+i!EjTm4l7s+vJ_0$51kYfc}SD=+Y=PtNvoOmsHdi#vU; zrk_C;(wUC6HwB$qkVCIy&&s#=7xSe;dSyO6%|LG8NWS`U^;hV|(Xz)s>2sL}bTeP4 zR_A{`o7;wuZchn&C||7(N?DT>pPcTzd|atdr3;!^(?XPuME8VEI2if^5QN0$i=iN+ z8VsMgMM+R`?1pPr1@T**H5A%sgr1cz)@$#M~&QG~&f)s<)>; z;_Uogm@Ni>4%SagD>iHn@PWy`d(G8^P7@6;HgnQCgv=&r}+mc4}E9i$^6(Xv?^f(aa%oDy){+ef>f(wdlq^N>iz-g{c;zx zvpoxFu+t7@@b(vtZqVw5H7aH$JPS-(5NFIO*AbBVw@DK-(Z&~rNK!b6#NEfplW@_; zwFKw%Qmf|i_gr8gUbHx}4V;)z`D~vE4PTr4W+&6~FlSl#Pt!^K z-G|a&+8iy_7Hfl&NUVn*mJe6Yx(&GXuGScwm1Hh)U`q5M`dcP`NI+$CO}SK$i0Dn* z;v3AbdsjeQ5_UFT%5Ypbg!9(%Vh7xIxVL7jt^ zU=j>u20|h8QzBSn>s0;Gubh_FlNDemvgWMA(RlFV8tHMH*cgFr7B4IE=&>`%0hO^R zHP{cVY3cWi#}_b<09(c-=bv2Ya}J6-YCRcBp73?_wAIw3=oJ{^;tZiTZ}@k zguGxH!k-pbS!5%*sct9MpTK_MGkqG-+vDVodXk{OW4*B$HMyheA-)vK)AfP<(X+_H z5R3O0)b01OV{rO}-kSCOs!dcvmHV|dxst-QNa2)yzR(G$kD5!1=nr#Uw(ve(o7c$I z?aWfCJ(dmoD&7?UK-%go9F&x;i1Qj_bSx*F51^H&c~r}gSjGIFXl~dJ5KqQ z@${pSDhxG}%#D8bKx{HldN4H_dYy>=8p;Ydt;X{mHA6UHS>tf~p94v@c2Q4E0IiQU zJPj&wkV{{~*Y$@GS@sp@PUw`gjr(erRGD)6YETIOx62+*uUy7&8SR=|p4@e?x!J&nH%B>zy)-9QQ`?Uu;*@DU+~e9&5Yhn%l-#H z$2PjVl$piaNqS(|t`rhBgKIk-Cf{+1q7LV-K&tpT%m&iRXuHp=a;MwsP2T?~gjUiNbcnTx!B7g~m;tuu=*&FlD+)H4_??HRrYG6Gz z*LVI;0!3omWSHSGr-=*gei|0zb*{IUc(>(C*M*A!SpmSO{TJv^oBl4A{@pspYi(nS@VfCk2g1(pS2j&zIjj&nY_VaCU_kC{UWxcbu z@XV4Bz1MQtPmfVapH~|~6892oe%z}|3;coFv27&ZZO(_X-x}T72%#HXm#roiGwCNK zxulazy(%r+SrF|{hC{w}>QCKK?Hdf@^7As<3`ROcovuNUUIv4jF;~!k8OS|+A3b5p(#e_m=vP!4LcHAB|weVzn%|%ady(dPnJNngyM+RU(v2JT`gy&8e? zof?Q|n}6(+0lLsm9Atb&xyU>oXq66CwM zNr9akoxvx|V%#i|$nUZXS}odsBEWY5z~eieUu-l+EC?zON7>7*y6_JX>jqHq#AKmn zmGH$k2~ok8?!v2&SP5hWjQBVy+|6Izm-*P_-mps}bvwLf6WBjyqMj#(x`^mG+XRxa z%y}A{_K2bantFI*Qq9f~Lt6WRoqHMAZmq7g@xcuQ(6i0@EWcRNbxZIdA2=D%w+;^0 zwhf4y63!UA5?qFpz6qh)J-i!^veDSMUZ@slS#xMxsdF^>&s(bC=e(bZL4=c6rmm}I z8w%4dnU+SSJa;uf58CCyquiIfYwd4EcP{@FD)x3EiZ~n6SudY(EV=Pg ze@Upoa$Ddx!tr#K*MkwhFdh}opO7a(8GU^esv1=BqwSe^IHf`LfX@6-JbCfzIg zGx%!#Wmp1bczE2>H%#ue80pQcN%0AswUuJ&opV~6RG`MWu$rwpOH?S2s6${#haGLQ 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 G@jn2iu^fQ_ From badc69556fc7502a7d10bc1bb2f2383ac81c0e08 Mon Sep 17 00:00:00 2001 From: afedynitch Date: Fri, 13 Jan 2023 22:49:50 +0800 Subject: [PATCH 09/11] Regenerated UrQMD test --- .../UrQMD34_pi-_p_cms2ft.pkl.gz | Bin 17661 -> 17992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/data/test_generators/UrQMD34_pi-_p_cms2ft.pkl.gz b/tests/data/test_generators/UrQMD34_pi-_p_cms2ft.pkl.gz index beb4bad54e1ffffcbb2e63186507a1bbc57e356e..3725ea5c285029b60e889cbb06b2b73ffc8efe00 100644 GIT binary patch literal 17992 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 Date: Fri, 13 Jan 2023 23:31:15 +0800 Subject: [PATCH 10/11] Moving to py 3.8 macos --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 44d26464..77e6ceee 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: python-version: "3.10" - os: macos-latest - python-version: "3.7" + python-version: "3.8" - os: ubuntu-latest python-version: "3.9" From 6a2792e65893a4505f04c75ebc3e50a16ef16819 Mon Sep 17 00:00:00 2001 From: afedynitch Date: Sat, 14 Jan 2023 00:04:14 +0800 Subject: [PATCH 11/11] Fix Xcode bug --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 77e6ceee..258d19ae 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,6 +42,9 @@ jobs: version: 11 - run: python -m pip install --upgrade pip + # Remove after January 16th 2023 when GA switches to 14.2 by default + - if: ${{ matrix.os == 'macos-latest' }} + run: sudo xcode-select -s "/Applications/Xcode_14.2.app" - if: ${{ matrix.os != 'windows-latest' }} run: python -m pip install --prefer-binary -v .[test]