Metadata-Version: 2.1
Name: goofit
Version: 2.3.0
Summary: GooFit fitting package
Project-URL: Homepage, https://goofit.github.io
Project-URL: Documentation, https://goofit.github.io/GooFit
Project-URL: Bug Tracker, https://github.com/scikit-hep/package/issues
Project-URL: Changelog, https://github.com/GooFit/GooFit/blob/master/docs/CHANGELOG.md
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Operating System :: Unix
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Scientific/Engineering :: Physics
Provides: goofit
Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7
Provides-Extra: test
Provides-Extra: dev
License-File: LICENSE
License-File: LICENSE.lgpl

GooFit for Python
-----------------

GooFit is a highly parallel fitting framework originally designed for High Energy Physics.

Installation basics
===================

This package can be installed with pip, but uses SciKit-Build, and is build,
fully optimized, on your system. Because of this, there are a few caveats when
running a pip install if you use an old version of pip. When you build, you
should also use pip's ``-v`` flag, so that you can see it build (and observe
the configuration options). Otherwise, you might wait a very long time without
output (especially if CUDA was found).


Installation: pip
=================

Using pip 10+::

    pip install -v goofit

Using pip < 10::

    pip install scikit-build # optionally cmake ninja
    pip install -v goofit


GooFit will automatically look for CUDA, and build in GPU mode if it finds CUDA. You can pick a specific version by passing through a CMake option (see below), or by setting an environment variable, `GOOFIT_DEVICE` before building. You may want to build with OpenMP as a backend to avoid using your GPU, or you might want the CPP version if you are using Anaconda on macOS. Here are the three common backends::

    GOOFIT_DEVICE=CUDA pip install -v goofit
    GOOFIT_DEVICE=OMP pip install -v goofit
    GOOFIT_DEVICE=CPP pip install -v goofit

The lines above use environment variables; GooFit will find any environment variables that start with ``GOOFIT_*`` and set them as CMake defines. If you want to send arbitrary commands to CMake through PIP, you will need to pass each option through, starting with a ``--`` option. Pip will try to reuse the built version if you do not pass options, but will rebuild if you pass options, so this works for a rebuild, unlike the lines above. This is how you would do this to set OMP as the backend::

    pip install -v goofit --install-option="--" --install-option="-DGOOFIT_DEVICE=OMP"
    # OR
    PIP_INSTALL_OPTION="-- -DGOOFIT_DEVICE=OMP" pip install -v goofit


Installation: local
===================

If you want to add PDFs to GooFit, or use GooFit packages, you should be working in a local directory using git. In the following example, I'm assuming you've set up SSH keys with GitHub; you can use https instead if you prefer by changing the URL to ``https://github.com/GooFit/GooFit.git``::

    git clone --recursive git@github.com:GooFit/GooFit.git
    cd goofit

Local pip
~~~~~~~~~

The normal install here works, though as usual you should include verbose output and you should be in a virtual environment (standard practice)::

    pip install -v .

