Introduction | Installation | Documentation | Terminology | Conventions | License
PISA is a software written to analyze the results (or expected results) of an experiment based on Monte Carlo (MC) simulation.
In particular, PISA was written by and for the IceCube Collaboration for analyses employing the IceCube Neutrino Observatory, including the DeepCore and the Upgrade low-energy in-fill arrays.
Note
However, any experiment can make use of PISA for analyzing expected and actual results.
PISA was originally developed to perform statistical inference on low-statistics Monte Carlo sets using histogram-based operations, parameterizations, and smoothing techniques. The framework has evolved to support traditional event-by-event reweighting as its core capability, while its modular (data pipeline) design still enables complementary analysis techniques.
If you use PISA, please cite our publication (e-Print available here):
Computational Techniques for the Analysis of Small Signals
in High-Statistics Neutrino Oscillation Experiments
IceCube Collaboration - M.G. Aartsen et al.
Mar 14, 2018
Published in: Nucl.Instrum.Meth.A 977 (2020) 164332
For quick-start and detailed installation instructions see Installation.
Minimal example: oscillograms of neutrinos naturally produced in the Earth's atmosphere
Import PISA's Pipeline class and a plotting interface:
from pisa.core import Pipeline
import matplotlib.pyplot as pltInstantiate a Pipeline or multiple Pipelines in a DistributionMaker using PISA config files:
template_maker = Pipeline("settings/pipeline/osc_example.cfg")Run the Pipeline with nominal settings:
template_maker.run()Get the oscillation probabilities
outputs = template_maker.data.get_mapset('prob_mu')Plot them:
plot_kwargs = {"titlesize": 16, "xlabelsize": 12, "ylabelsize": 12, "cmap": "RdYlBu_r", "vmin": 0, "vmax": 1}
fig, axes = plt.subplots(figsize=(18, 5), ncols=3)
outputs['nue_cc'].plot(ax=axes[0], title=r"$P_{\nu_\mu\to\nu_e}$", **plot_kwargs)
outputs['numu_cc'].plot(ax=axes[1], title=r"$P_{\nu_\mu\to\nu_\mu}$", **plot_kwargs)
outputs['nutau_cc'].plot(ax=axes[2], title=r"$P_{\nu_\mu\to\nu_\tau}$", **plot_kwargs);In case you do not want to install PISA, we provide pre-built Docker images here.
You can download a given image via docker pull ghcr.io/icecube/pisa:<tag>, where <tag> has to be replaced by the desired release tag or master.
Each image is built using the Dockerfile included in PISA.
You can also use this file to containerize PISA yourself (with Docker or Singularity). Instructions can be found here (access restricted).
Contributors are listed specifically here, while the used external software is summarized here.

