Skip to content

A package to describe and convert particle decays between digital representations

License

Notifications You must be signed in to change notification settings

savalless/decaylanguage

 
 

Repository files navigation

DecayLanguage

Documentation Status Travis-CI Build Status AppVeyor Build Status Coverage Status PyPI Package latest release Supported versions Commits since latest release

A language to describe particle decays, and tools to work with them.

Installation

Just run the following:

pip install decaylanguage

You 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.

Required dependencies:

  • Numpy: The numerical library for Python
  • pandas: Tabular data in Python
  • attrs: DataClasses for Python
  • plumbum: Command line tools

Python compatibility:

Recommended dependencies:

  • graphviz to render (DOT language) graph descriptions of decay chains.

Usage

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:

Particles

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.

Decays

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).

Converters

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.opts

Acknowledgements

DecayLanguage is free software released under a BSD 3-Clause License. It was originally developed by Henry Schreiner.

About

A package to describe and convert particle decays between digital representations

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Cuda 45.6%
  • Jupyter Notebook 34.9%
  • Python 19.3%
  • Batchfile 0.2%