aboutsummaryrefslogtreecommitdiffstats
path: root/utils/gf.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/gf.py')
-rw-r--r--utils/gf.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/utils/gf.py b/utils/gf.py
new file mode 100644
index 0000000..766c161
--- /dev/null
+++ b/utils/gf.py
@@ -0,0 +1,105 @@
+# author : S. Mandalia
+# s.p.mandalia@qmul.ac.uk
+#
+# date : March 17, 2018
+
+"""
+Useful GolemFit wrappers for the BSM flavour ratio analysis
+"""
+
+from __future__ import absolute_import, division
+
+import argparse
+from functools import partial
+
+import GolemFitPy as gf
+
+from utils.enums import *
+from utils.misc import enum_keys, enum_parse
+
+
+def data_distributions(fitter):
+ hdat = fitter.GetDataDistribution()
+ binedges = np.asarray([fitter.GetZenithBinsData(), fitter.GetEnergyBinsData()])
+ return hdat, binedges
+
+
+def fit_flags(fitflag_categ):
+ flags = gf.FitParametersFlag()
+ if fitflag_categ is FitFlagCateg.xs:
+ # False means it's not fixed in minimization
+ flags.NeutrinoAntineutrinoRatio = False
+ return flags
+
+
+def fit_params(fit_categ):
+ params = gf.FitParameters()
+ params.astroNorm = 7.5
+ params.astroDeltaGamma = 0.9
+ if fit_categ is FitCateg.hesespl:
+ params.astroNormSec = 0
+ elif fit_categ is FitCateg.hesedpl:
+ params.astroNormSec=7.0
+ elif fit_categ is FitCateg.zpspl:
+ # zero prompt, single powerlaw
+ params.promptNorm = 0
+ params.astroNormSec = 0
+ elif fit_categ is FitCateg.zpdpl:
+ # zero prompt, double powerlaw
+ params.promptNorm = 0
+ params.astroNormSec=7.0
+ elif fit_categ is FitCateg.nunubar2:
+ params.NeutrinoAntineutrinoRatio = 2
+
+
+def fit_priors(fitpriors_categ):
+ priors = gf.Priors()
+ if fitpriors_categ == FitPriorsCateg.xs:
+ priors.promptNormCenter = 1
+ priors.promptNormWidth = 3
+ priors.astroDeltaGammaCenter = 0
+ priors.astroDeltaGammaWidth = 1
+ return priors
+
+
+def gen_steering_params(steering_categ, quiet=False):
+ params = gf.SteeringParams()
+ if quiet: params.quiet = True
+ params.fastmode = False
+ params.do_HESE_reshuffle = False
+ params.numc_tag = steering_categ.name
+ params.baseline_astro_spectral_index = -2.
+ if steering_categ is SteeringCateg.LONGLIFE:
+ params.years = [999]
+ params.numc_tag = 'std_half1'
+ if steering_categ is SteeringCateg.DPL:
+ params.diffuse_fit_type = gf.DiffuseFitType.DoublePowerLaw
+ params.numc_tag = 'std_half1'
+ return params
+
+
+def gf_argparse(parser):
+ parser.add_argument(
+ '--data', default='real', type=partial(enum_parse, c=DataType),
+ choices=enum_keys(DataType), help='select datatype'
+ )
+ parser.add_argument(
+ '--ast', default='baseline', type=partial(enum_parse, c=SteeringCateg),
+ choices=enum_keys(SteeringCateg),
+ help='use asimov/fake dataset with specific steering'
+ )
+ parser.add_argument(
+ '--aft', default='hesespl', type=partial(enum_parse, c=FitCateg),
+ choices=enum_keys(FitCateg),
+ help='use asimov/fake dataset with specific Fit'
+ )
+ parser.add_argument(
+ '--axs', default='nom', type=partial(enum_parse, c=XSCateg),
+ choices=enum_keys(XSCateg),
+ help='use asimov/fake dataset with xs scaling'
+ )
+ parser.add_argument(
+ '--priors', default='uniform', type=partial(enum_parse, c=Priors),
+ choices=enum_keys(Priors), help='Bayesian priors'
+ )
+