1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
# 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
import socket
from functools import partial
import GolemFitPy as gf
from utils.enums import *
from utils.misc import enum_parse, thread_factors
def steering_params(args):
steering_categ = args.ast
params = gf.SteeringParams()
if 'cobalt0' in socket.gethostname().split('.')[0]:
params.quiet = False
else:
params.quiet = True
# TODO(shivesh): figure out right number for missid
params.track_to_shower_missid = 0.3
params.fastmode = True
# params.fastmode = False
# params.readCompact = True
params.readCompact = False
params.do_HESE_reshuffle = False
params.sampleToLoad = gf.sampleTag.HESE
params.simToLoad= steering_categ.name.lower()
params.evalThreads = args.threads
# params.evalThreads = thread_factors(args.threads)[1]
params.baseline_astro_spectral_index = -2.
params.spline_hole_ice = True
params.spline_dom_efficiency = True
if steering_categ == SteeringCateg.LONGLIFE:
params.years = [999]
params.simToLoad= 'p2_0'
elif steering_categ == SteeringCateg.DPL:
params.diffuse_fit_type = gf.DiffuseFitType.DoublePowerLaw
params.simToLoad= 'p2_0'
return params
def set_up_as(fitter, params):
print 'Injecting the model', params
asimov_params = gf.FitParameters()
for parm in params:
asimov_params.__setattr__(parm.name, parm.value)
fitter.SetupAsimov(asimov_params)
def get_llh(fitter, params):
fitparams = gf.FitParameters()
for parm in params:
fitparams.__setattr__(parm.name, parm.value)
return fitter.EvalLLH(fitparams)
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=DataType, help='select datatype'
)
parser.add_argument(
'--ast', default='p2_0', type=partial(enum_parse, c=SteeringCateg),
choices=SteeringCateg,
help='use asimov/fake dataset with specific steering'
)
parser.add_argument(
'--aft', default='hesespl', type=partial(enum_parse, c=FitCateg),
choices=FitCateg,
help='use asimov/fake dataset with specific Fit'
)
parser.add_argument(
'--axs', default='nom', type=partial(enum_parse, c=XSCateg),
choices=XSCateg,
help='use asimov/fake dataset with xs scaling'
)
parser.add_argument(
'--priors', default='uniform', type=partial(enum_parse, c=Priors),
choices=Priors, help='Bayesian priors'
)
|