Skip to main content

Implments the reaction plane fit for background subtraction in heavy ion collisions.

Project description

Reaction plane fit

DOI Documentation Status Build Status codecov

Implements the reaction plane (RP) fit described in Phys. Rev. C 93, 044915 (or on the arxiv) to characterize and subtract background contributions to correlation functions measured in heavy ion collisions. It allows for fits to the background dominated region, as well as the option of fitting the RP inclusive signal dominated region or the RP dependent signal dominated region. This package implements the fit for three orientations relative to the RP, with the possibility of straightforward extension to other sets of orientations.

Sample reaction plane fit

Installation

This package requires python 3.6 and above. A few prerequisites are required which unfortunately cannot be resolved solely by pip because of the packaging details of probfit.

$ pip install numpy cython

The package is available on PyPI and is available via pip.

$ pip install reaction_plane_fit

You may want to consider installing this to your user directory (--user) or better, within a virtual environment.

Usage

Performing a fit with this package only requires a few lines of code. Below is sufficient to define and run a fit with some sample values:

from reaction_plane_fit import three_orientations
# Define the fit object.
rp_fit = three_orientations.BackgroundFit(
    resolution_parameters = {"R22": 0.6, "R42": 0.3, "R62": 0.1, "R82": 0.1},
    use_log_likelihood = False,
    signal_region = (0, 0.6),
    background_region = (0.8, 1.2),
)
# Load or otherwise provide the relevant histograms here.
# The structure of this dictionary is important to ensure that the proper data ends up in the right place.
# Note that the data must already be projected into the background or signal dominated regions.
data = {"background": {"in_plane": ROOT.TH1.., "mid_plane": ROOT.TH1..., "out_of_plane": ROOT.TH1...}}
# Perform the actual fit.
success, _ = rp_fit.fit(data = data)
# Print the fit results
print("Fit result: {fit_result}".format(fit_result = rp_fit.fit_result))

Examples for fitting an inclusive reaction plane orientation signal alongside the background, or for fitting only the background are both available in reaction_plane_fit.example. This module can also be run directly in the terminal via:

$ python -m reaction_plane_fit.example [-b] [-i dataFilename]

If fit data is not specified, it will use some sample data. For further information, including all possible fit function combinations, please see the full documentation.

Fits implemented

There are three possible types of fits:

  • Background dominated region only: This fits only regions on the near-side at large dEta which are dominated by background contributions. Called BackgroundFit in each set of orientations implementation.
  • Inclusive signal region: This fits to the RP inclusive signal dominated region, as well as fitting the RP dependent background dominated regions. Called InclusiveSignalFit in each set of orientations implementation.
  • RP dependent signal region: This fits to the RP dependent signal dominated region, as well as fitting the RP dependent background dominated regions. Called SignalFit in each set of orientations implementation.

Three orientation (in-, mid-, and out-of-plane)

This package implements the fit for three orientations relative to the reaction plane:

  • in-plane (0<|Δφ|<π/6)
  • mid-plane (π/6<|Δφ|<π/3)
  • and out-of-plane (π/3<|Δφ|<π/2)

These fits are implemented in the reaction_plane_fit.three_orientations module.

Notes on fitting

This package makes it possible to use Minos rather than Hesse errors. Minos errors can be calculated when Hesse errors become inaccurate (when the function around the minima is not approximately a hyperparabola), but they can take much longer to calculate and cannot be described via a covariance matrix (which makes error propagation much more difficult). If the Hesse and Minos errors are similar, then the function is well approximately by a hyperparabola and you can safely use Hesse errors. For more, see the iminuit tutorials.

Development

If developing the packaging, clone the repository and then install with

$ pip install -e .[dev,tests]

Note that python 3.6 and above is required because this package uses dataclasses (which has a python 3.6 backport), and it relies on dictionaries being ordered (which is true for cpython 3.6 and is required for python 3.7 in general).

Citation

Please cite the paper (Phys. Rev. C 93, 044915), as well as this implementation:

@misc{raymond_ehlers_2018_1599239,
  author       = {Raymond Ehlers},
  title        = {reactionPlaneFit - RPF implementation},
  month        = nov,
  year         = 2018,
  doi          = {10.5281/zenodo.1599239},
  url          = {https://doi.org/10.5281/zenodo.1599239}
}

Acknowledgments

Code started from implementation work done by M. Arratia. Thanks to C. Nattrass and J. Mazer for help and discussions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reaction_plane_fit-1.2.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

reaction_plane_fit-1.2-py2.py3-none-any.whl (37.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file reaction_plane_fit-1.2.tar.gz.

File metadata

  • Download URL: reaction_plane_fit-1.2.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.7.1

File hashes

Hashes for reaction_plane_fit-1.2.tar.gz
Algorithm Hash digest
SHA256 72a8e373530e22c54a5876cde574a4249d635f4d5ffe8ee117df92f7cbf0f47d
MD5 af260a8cbede775b3bfda0df9de8fa77
BLAKE2b-256 c0dfcaac58ac8ec86a5b88fb16a7610ab6d6d93372a61c45d8e872ab93ace0e5

See more details on using hashes here.

File details

Details for the file reaction_plane_fit-1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: reaction_plane_fit-1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 37.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.7.1

File hashes

Hashes for reaction_plane_fit-1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d1cb33a8712da5493a757d4d13af04f839648401045deb5a3b63c41481a9608e
MD5 e1efe24a964d1e54f310f37bc8714bb3
BLAKE2b-256 270f99b98a7259ff3084a63f54ef61d9062c81e173767578635198cdbe295ff3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page