A language to describe particle decays, and tools to work with them.
Just run the following:
pip install decaylanguageYou can use a virtual environment through pipenv or with --user if you know
what those are. Python 2.7 and 3.4+ are supported.
Dependencies: (click to expand)
Required and compatibility dependencies will be automatically installed by pip.
- Numpy: The numerical library for Python
- pandas: Tabular data in Python
- attrs: DataClasses for Python
- plumbum: Command line tools
- six: Compatibility library
- pathlib2 backport if using Python 2.7
- enum34 backport if using Python /< 3.5
- importlib_resources backport if using Python /< 3.7
- graphviz to render (DOT language) graph descriptions of decay chains.
This is a quick user guide; for full API docs, go here.
DecayLanguage is a set of tools for building and transforming particle decays. The parts are:
You can use a variety of methods to get particles; if you know the PDG number you can get a particle directly, or you can use a search:
Particle.from_pdgid(211)
Particle.from_search_list(name='pi')[0]You can search for the properties, which are name, mass, width,
charge, A, rank, I, J, G, P, quarks, status, latex,
mass_upper, mass_lower, width_upper, and width_lower (some of
those don't make sense). You can also use from_search to require only
one match.
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, describe(),
programmatic_name(), html_name(), html printing outs in notebooks,
and of course repr and str support.
The most common way to create a decay chain is to read in an AmpGen style syntax from a file or a string. You can use:
from decaylanguage.decay import AmplitudeChain
lines, parameters, constants, states = AmplitudeChain.read_ampgen(text='''
EventType D0 K- pi+ pi+ pi-
D0[D]{K*(892)bar0{K-,pi+},rho(770)0{pi+,pi-}} 0 1 0.1 0 1 0.1
K(1460)bar-_mass 0 1460 1
K(1460)bar-_width 0 250 1
a(1)(1260)+::Spline::Min 0.18412
a(1)(1260)+::Spline::Max 1.86869
a(1)(1260)+::Spline::N 34
''')Here, lines will be a list of AmplitudeChain lines (pretty print supported in Jupyter notebooks),
parameters will be a table of parameters (ranged parameters not yet supported),
constants will be a table of constants,
and states will be the list of known states (EventType).
You can output to a format (currently only GooFit supported, feel free to make a PR to add more). Use a subclass of DecayChain, in this case, GooFitChain. To use the GooFit output, type from the shell:
python -m decaylanguage.decay -G goofit myinput.optsDecayLanguage is free software released under a BSD 3-Clause License. It was originally developed by Henry Schreiner.
