Utilities to deal with PDG data tables and particle IDs
Project description
Particle: PDG particle data and identification codes
Particle provides a pythonic interface to the Particle Data Group (PDG) particle data tables and particle identification codes.
The PDG defines the standard particle identification (ID) numbering scheme. The package provides the PDGID class implementing queries on those PDG IDs. The queries are also accessible through free standing functions mimicking the HepPID C++ interface.
The Particle class wraps the information in the PDG particle data tables and provides an object-oriented interface and powerful search and look-up utilities.
The current version of the package reflects a pythonic version of the utility functions defined in HepPID and HepPDT versions 3.04.01, see http://lcgapp.cern.ch/project/simu/HepPDT/.
Installation
Install particle like any other Python package:
pip install particle
or similar (use --user, virtualenv, etc. if you wish).
Strict dependencies
Python (2.7+, 3.5+)
importlib_resources backport if using Python < 3.7
attrs provides classes without boilerplate (similar to DataClasses in Python 3.7)
Getting started: PDGIDs
>>> from particle.pdgid import PDGID
>>>
>>> pid = PDGID(211)
>>> pid
<PDGID: 211>
>>> pid.is_meson
True
>>> pid = PDGID(99999999)
>>> pid
<PDGID: 99999999 (is_valid==False)>
For convenience, all properties of the PDGID class are available as standalone functions:
>>> from particle.pdgid import is_meson
>>>
>>> is_meson(211)
True
PDGID literals provide (PDGID class) aliases for the most common particles, with easily recognisable names. For example:
>>> from particle.pdgid import literals as lid
>>>
>>> lid.pi_plus
<PDGID: 211>
>>>
>>> from particle.pdgid.literals import Lambdab0
>>>> Lambdab0
<PDGID: 5122>
>>> Lambdab0.has_bottom
True
You can quickly display PDGID info from the command line with:
$ python -m particle pdgid 323
<PDGID: 323>
A None
J 1.0
L 0
S 1
Z None
abspid 323
charge 1.0
has_bottom False
...
Getting started: Particles
You can use a variety of methods to get particles. If you know the PDGID number you can get a particle directly, or you can use a search:
>>> from particle import Particle
>>> Particle.from_pdgid(211)
<Particle: pdgid=211, fullname='pi+', mass=139.57061 ± 0.00024 MeV>
>>>
>>> Particle.from_search_list('pi')[0]
<Particle: pdgid=111, fullname='pi0', mass=134.9770 ± 0.0005 MeV>
You can search for the properties using keyword arguments, which are name, mass, width, charge, anti, rank, I, J, G, P, quarks, status, latex, mass_upper, mass_lower, width_upper, and width_lower (some of those don't make sense). The alternative .from_search() requires only one match returned by the search. You can also use the first two arguments, called name_s and latex_s to do a loose search, and name_re and latex_re to do a regular expression search.
Once you have a particle, any of the properties can be accessed, along with several methods. Though they are not real properties, you can access bar, radius, and spin_type. You can also .invert() a particle.
There are lots of printing choices for particles: describe(), programmatic_name, html_name, HTML printing outs in notebooks, and of course repr and str support.
You can get the .pdgid from a particle, as well. Sorting particles will put lowest abs(PDGID) first.
Particle literals provide (Particle class) aliases for the most common particles, with easily recognisable names. For example:
>>> from particle.particle import literals as lp
>>> lp.pi_plus
<Particle: pdgid=211, fullname='pi+', mass=139.57061 ± 0.00024 MeV>
>>>
>>> from particle.particle.literals import Lambdab0
>>>> Lambdab0
<Particle: pdgid=5122, fullname='Lambda(b)0', mass=5619.60 ± 0.17 MeV>
>>> Lambdab0.J
0.5
You can quickly search for particles from the command line with:
$ python -m particle search 'K*0'
<Particle: pdgid=313, fullname='K*(892)0', mass=895.55 ± 0.20 MeV>
<Particle: pdgid=30313, fullname='K*(1680)0', mass=1718 ± 18 MeV>
<Particle: pdgid=100313, fullname='K*(1410)0', mass=1421 ± 9 MeV>
If you only select one particle, either by a search or by giving the PDGID number, you can see more information about the particle:
$ python -m particle search 311
Name: K ID: 311 Fullname: K0 Latex: $K^{0}$
Mass = 497.611 ± 0.013 MeV
Width = -1.0 MeV
I (isospin) = 1/2 G (parity) = 0 Q (charge) = 0
J (total angular) = 0.0 C (charge parity) = 0 P (space parity) = ?
Quarks: dS
Antiparticle status: Full (antiparticle name: K~0)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file particle-0.2.1.tar.gz
.
File metadata
- Download URL: particle-0.2.1.tar.gz
- Upload date:
- Size: 27.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be8b65d981ab0fd8ab706f6217e89b04bd02bbba279e3886a93d0b81f36da526 |
|
MD5 | ad3e7df98e7b6f80f02cb0f2ca619919 |
|
BLAKE2b-256 | 873378fcbbb683137ab39cf26a7df736a50c1ec9222f49519a9afcdb0234ec86 |