particle¶
A collection of particle info containers.
The particle
module is the starting point of the
expertsystem
. Its main interface is the ParticleCollection
, which is a
collection of immutable Particle
instances that are uniquely defined by their
properties. As such, it can be used stand-alone as a database of quantum
numbers (see Particle database).
The reaction
module uses the properties of Particle
instances when it
computes which StateTransitionGraph
s are allowed between an initial state
and final state.
-
class
GellmannNishijima
[source]¶ Bases:
object
Collection of conversion methods using Gell-Mann–Nishijima.
The methods in this class use the Gell-Mann–Nishijima formula:
\[Q = I_3 + \frac{1}{2}(B+S+C+B'+T)\]where \(Q\) is charge (computed), \(I_3\) is
Spin.projection
ofisospin
, \(B\) isbaryon_number
, \(S\) isstrangeness
, \(C\) ischarmness
, \(B'\) isbottomness
, and \(T\) istopness
.-
static
compute_charge
(state: expertsystem.particle.Particle) → Optional[float][source]¶ Compute charge using the Gell-Mann–Nishijima formula.
If isospin is not
None
, returns the value \(Q\): computed with theGell-Mann–Nishijima formula
.
-
static
-
class
Parity
(value: Union[float, int, str])[source]¶ Bases:
collections.abc.Hashable
Safe, immutable data container for parity.
-
property
value
¶
-
property
-
class
Particle
(name: str, pid: int, spin: float, mass: float, width: float = 0.0, charge: int = 0, isospin: Optional[expertsystem.particle.Spin] = None, strangeness: int = 0, charmness: int = 0, bottomness: int = 0, topness: int = 0, baryon_number: int = 0, electron_lepton_number: int = 0, muon_lepton_number: int = 0, tau_lepton_number: int = 0, parity: Optional[expertsystem.particle.Parity] = None, c_parity: Optional[expertsystem.particle.Parity] = None, g_parity: Optional[expertsystem.particle.Parity] = None)[source]¶ Bases:
object
Immutable container of data defining a physical particle.
A
Particle
is defined by the minimum set of the quantum numbers that every possible instances of that particle have in common (the “static” quantum numbers of the particle). A “non-static” quantum number is the spin projection. HenceParticle
instances do not contain spin projection information.Particle
instances are uniquely defined by their quantum numbers and properties likemass
. Thename
andpid
are therefore just labels that are not taken into account when checking if twoParticle
instances are equal.Note
As opposed to classes such as
EdgeQuantumNumbers
andNodeQuantumNumbers
, theParticle
class serves as an interface to the user (see Particle database).-
__eq__
(other)¶ Method generated by attrs for class Particle.
-
c_parity
: Optional[expertsystem.particle.Parity]¶
-
g_parity
: Optional[expertsystem.particle.Parity]¶
-
isospin
: Optional[expertsystem.particle.Spin]¶
-
parity
: Optional[expertsystem.particle.Parity]¶
-
-
class
ParticleCollection
(particles: Optional[Iterable[expertsystem.particle.Particle]] = None)[source]¶ Bases:
collections.abc.MutableSet
Searchable collection of immutable
Particle
instances.-
add
(value: expertsystem.particle.Particle) → None[source]¶ Add an element.
-
discard
(value: Union[expertsystem.particle.Particle, str]) → None[source]¶ Remove an element. Do not raise an exception if absent.
-
filter
(function: Callable[[expertsystem.particle.Particle], bool]) → expertsystem.particle.ParticleCollection[source]¶ Search by
Particle
properties using alambda
function.For example:
>>> from expertsystem import io >>> pdg = io.load_pdg() >>> subset = pdg.filter( ... lambda p: p.mass > 1.8 ... and p.mass < 2.0 ... and p.spin == 2 ... and p.strangeness == 1 ... ) >>> sorted(list(subset.names)) ['K(2)(1820)+', 'K(2)(1820)0']
-
find
(search_term: Union[int, str]) → expertsystem.particle.Particle[source]¶
-
property
names
¶
-
update
(other: Iterable[expertsystem.particle.Particle]) → None[source]¶
-
-
class
Spin
(magnitude: float, projection: float)[source]¶ Bases:
collections.abc.Hashable
Safe, immutable data container for spin with projection.
-
property
magnitude
¶
-
property
projection
¶
-
property
-
create_antiparticle
(template_particle: expertsystem.particle.Particle, new_name: str = None) → expertsystem.particle.Particle[source]¶
-
create_particle
(template_particle: expertsystem.particle.Particle, name: Optional[str] = None, pid: Optional[int] = None, mass: Optional[float] = None, width: Optional[float] = None, charge: Optional[int] = None, spin: Optional[float] = None, isospin: Optional[expertsystem.particle.Spin] = None, strangeness: Optional[int] = None, charmness: Optional[int] = None, bottomness: Optional[int] = None, topness: Optional[int] = None, baryon_number: Optional[int] = None, electron_lepton_number: Optional[int] = None, muon_lepton_number: Optional[int] = None, tau_lepton_number: Optional[int] = None, parity: Optional[int] = None, c_parity: Optional[int] = None, g_parity: Optional[int] = None) → expertsystem.particle.Particle[source]¶