Skip to content
/ pisa Public
forked from icecube/pisa

Monte Carlo-based data analysis

License

Notifications You must be signed in to change notification settings

anilak41/pisa

 
 

Repository files navigation

Unit Tests Pull Requests Repo Stars

Introduction | Installation | Documentation | Terminology | License | Contributors | Others' work

PISA is a software written to analyze the results (or expected results) of an experiment based on Monte Carlo simulation.

In particular, PISA was written by and for the IceCube Collaboration for analyses employing the IceCube Neutrino Observatory, including the DeepCore and the proposed PINGU low-energy in-fill arrays. However, any such experiment—or any experiment at all—can make use of PISA for analyzing expected and actual results.

PISA was originally developed to cope with low-statistics Monte Carlo (MC) for PINGU when iterating on multiple proposed geometries by using parameterizations of the MC and operate on histograms of the data rather than directly reweighting the MC (as is traditionally done in high-energy Physics experiments). However, PISA's methods apply equally well to high-MC situations, and PISA also performs traditional reweighted-MC analysis as well.

If you use PISA, please cite our publication (e-Print available here: https://arxiv.org/abs/1803.05390):

"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

Quick start

Installation

git clone [email protected]:icecube/pisa.git
cd pisa
pip install -e .

For detailed installation instructions and common issues see Installation

Minimal Example

Producing some oscillograms

from pisa.core import Pipeline
import matplotlib.pyplot as plt
<< PISA is running in single precision (FP32) mode; numba is running on CPU (single core) >>

Instantiate a Pipeline or multiple pipelines in a DistributionMaker using PISA config files

template_maker = Pipeline("settings/pipeline/osc_example.cfg")

Run the pipleine with nominal settings

template_maker.run()

Get the oscillation probabilities

outputs = template_maker.data.get_mapset('prob_mu')

Plot some results

fig, axes = plt.subplots(figsize=(18, 5), ncols=3)
outputs['nue_cc'].plot(ax=axes[0], cmap='RdYlBu_r', vmin=0, vmax=1);
outputs['numu_cc'].plot(ax=axes[1], cmap='RdYlBu_r', vmin=0, vmax=1);
outputs['nutau_cc'].plot(ax=axes[2], cmap='RdYlBu_r', vmin=0, vmax=1);

png

About

Monte Carlo-based data analysis

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 64.2%
  • Jupyter Notebook 35.0%
  • Other 0.8%