aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xfr.py3
-rwxr-xr-xsens.py3
-rw-r--r--test/test_gf.py76
-rw-r--r--test/test_gf_simple.py23
-rw-r--r--utils/fr.py15
-rw-r--r--utils/gf.py5
-rw-r--r--utils/param.py2
-rw-r--r--utils/plot.py7
8 files changed, 114 insertions, 20 deletions
diff --git a/fr.py b/fr.py
index 30f8051..0e14098 100755
--- a/fr.py
+++ b/fr.py
@@ -86,8 +86,7 @@ def process_args(args):
)
if not args.fix_scale:
- args.scale = fr_utils.estimate_scale(args)
- args.scale_region = (args.scale/args.scale_region, args.scale*args.scale_region)
+ args.scale, args.scale_region = fr_utils.estimate_scale(args)
def parse_args(args=None):
diff --git a/sens.py b/sens.py
index 6a107f1..489f126 100755
--- a/sens.py
+++ b/sens.py
@@ -94,8 +94,7 @@ def process_args(args):
)
if not args.fix_scale:
- args.scale = fr_utils.estimate_scale(args)
- args.scale_region = (args.scale/args.scale_region, args.scale*args.scale_region)
+ args.scale, args.scale_region = fr_utils.estimate_scale(args)
if args.sens_eval_bin.lower() == 'all':
args.sens_eval_bin = None
diff --git a/test/test_gf.py b/test/test_gf.py
new file mode 100644
index 0000000..6f8f463
--- /dev/null
+++ b/test/test_gf.py
@@ -0,0 +1,76 @@
+import GolemFitPy as gf
+
+def steering_params():
+ steering_categ = 'p2_0'
+ params = gf.SteeringParams(gf.sampleTag.HESE)
+ params.fastmode = True
+ params.quiet = False
+ params.simToLoad= steering_categ.lower()
+ return params
+
+def set_up_as(fitter, params):
+ print 'Injecting the model', params
+ asimov_params = gf.FitParameters(gf.sampleTag.HESE)
+ for x in params.iterkeys():
+ asimov_params.__setattr__(x, float(params[x]))
+ fitter.SetupAsimov(asimov_params)
+
+def setup_fitter(asimov_paramset):
+ datapaths = gf.DataPaths()
+ sparams = steering_params()
+ npp = gf.NewPhysicsParams()
+ fitter = gf.GolemFit(datapaths, sparams, npp)
+ set_up_as(fitter, asimov_paramset)
+ return fitter
+
+def get_llh(fitter, params):
+ fitparams = gf.FitParameters(gf.sampleTag.HESE)
+ for x in params.iterkeys():
+ fitparams.__setattr__(x, float(params[x]))
+ llh = -fitter.EvalLLH(fitparams)
+ return llh
+
+asimov_paramset = {'astroFlavorAngle1': 4/9., 'astroFlavorAngle2': 0.}
+print 'injecting', asimov_paramset
+fitter = setup_fitter(asimov_paramset)
+
+test_paramset = {'astroFlavorAngle1': 0.36, 'astroFlavorAngle2': -0.57}
+print 'testing', test_paramset
+print 'llh', get_llh(fitter, test_paramset)
+
+test_paramset = {'astroFlavorAngle1': 0.385224559219, 'astroFlavorAngle2': -0.157617854374}
+print 'testing', test_paramset
+print 'llh', get_llh(fitter, test_paramset)
+
+test_paramset = {'astroFlavorAngle1': 0.415578500878, 'astroFlavorAngle2': -0.0196186993217}
+print 'testing', test_paramset
+print 'llh', get_llh(fitter, test_paramset)
+
+test_paramset = {'astroFlavorAngle1': 4/9., 'astroFlavorAngle2': 0}
+print 'testing', test_paramset
+print 'llh', get_llh(fitter, test_paramset)
+
+test_paramset = {'astroFlavorAngle1': 4/9, 'astroFlavorAngle2': 0}
+print 'testing', test_paramset
+print 'llh', get_llh(fitter, test_paramset)
+
+
+import numpy as np
+import matplotlib as mpl
+mpl.use('Agg')
+import matplotlib.pyplot as plt
+
+shape = (10, 100)
+angle1_binning = np.linspace(0, 1, shape[0])
+angle2_binning = np.linspace(-1, 1, shape[1])
+
+for an1 in angle1_binning:
+ llhs = []
+ for an2 in angle2_binning:
+ test_paramset = {'astroFlavorAngle1': an1, 'astroFlavorAngle2': an2}
+ llhs.append(get_llh(fitter, test_paramset))
+ plt.plot(angle2_binning, llhs, label='astroFlavorAngle1 = {0}'.format(an1))
+plt.xlabel('astroFlavorAngle2')
+plt.ylabel('LLH')
+plt.legend()
+plt.savefig('llh_profile_fastmode.png'.format(an1))
diff --git a/test/test_gf_simple.py b/test/test_gf_simple.py
new file mode 100644
index 0000000..51460c1
--- /dev/null
+++ b/test/test_gf_simple.py
@@ -0,0 +1,23 @@
+import GolemFitPy as gf
+
+dp = gf.DataPaths()
+npp = gf.NewPhysicsParams()
+sp = gf.SteeringParams(gf.sampleTag.HESE)
+
+sp.quiet = False
+# sp.fastmode = True
+
+golem = gf.GolemFit(dp, sp, npp)
+
+fp = gf.FitParameters(gf.sampleTag.HESE)
+fp.astroFlavorAngle1 = 4./9.
+fp.astroFlavorAngle2 = 0
+
+golem.SetupAsimov(fp)
+
+fp_sh = gf.FitParameters(gf.sampleTag.HESE)
+fp_sh.astroFlavorAngle1 = 0.36
+fp_sh.astroFlavorAngle2 = -0.57
+
+print 'Eval fp = {0}'.format(golem.EvalLLH(fp))
+print 'Eval fp_sh = {0}'.format(golem.EvalLLH(fp_sh))
diff --git a/utils/fr.py b/utils/fr.py
index f529796..61b5a61 100644
--- a/utils/fr.py
+++ b/utils/fr.py
@@ -206,14 +206,15 @@ def estimate_scale(args):
10, np.round(np.log10(m_eign/args.energy)) - \
np.log10(args.energy**(args.dimension-3))
)
+ scale_region = (scale/args.scale_region, scale*args.scale_region)
elif args.energy_dependance is EnergyDependance.SPECTRAL:
- scale = np.power(
- 10, np.round(
- np.log10(m_eign/np.power(10, np.average(np.log10(args.binning)))) \
- - np.log10(np.power(10, np.average(np.log10(args.binning)))**(args.dimension-3))
- )
- )
- return scale
+ lower_s = (m_eign/args.binning[-1]) / (args.binning[-1]**(args.dimension-3))
+ upper_s = (m_eign/args.binning[0]) / (args.binning[0]**(args.dimension-3))
+ scale = np.power(10, np.average(np.log10([lower_s, upper_s])))
+ diff = upper_s / lower_s
+ scale_region = (lower_s/diff, upper_s*diff)
+ scale_region = [np.power(10, np.round(np.log10(x))) for x in scale_region]
+ return scale, scale_region
def fr_argparse(parser):
diff --git a/utils/gf.py b/utils/gf.py
index 0770401..ea4f61f 100644
--- a/utils/gf.py
+++ b/utils/gf.py
@@ -57,14 +57,9 @@ def steering_params(args):
steering_categ = args.ast
params = gf.SteeringParams()
params.quiet = False
- params.fastmode = True
params.simToLoad= steering_categ.name.lower()
- params.spline_dom_efficiency = False
- params.spline_hole_ice = False
- params.spline_anisotrophy = False
params.evalThreads = args.threads
# params.evalThreads = thread_factors(args.threads)[1]
- params.diffuse_fit_type = gf.DiffuseFitType.SinglePowerLaw
return params
diff --git a/utils/param.py b/utils/param.py
index 4d8106e..f861264 100644
--- a/utils/param.py
+++ b/utils/param.py
@@ -242,7 +242,7 @@ def get_paramsets(args, nuisance_paramset):
llh_paramset.extend([
Param(name='np_s_12^2', value=0.5, ranges=[0., 1.], std=0.2, tex=r'\tilde{s}_{12}^2', tag=tag),
Param(name='np_c_13^4', value=0.5, ranges=[0., 1.], std=0.2, tex=r'\tilde{c}_{13}^4', tag=tag),
- Param(name='np_s_23^2', value=0.5, ranges=[0., 1.], std=0.2, tex=r'\tilde{s}_{23}^4', tag=tag),
+ Param(name='np_s_23^2', value=0.5, ranges=[0., 1.], std=0.2, tex=r'\tilde{s}_{23}^2', tag=tag),
Param(name='np_dcp', value=np.pi, ranges=[0., 2*np.pi], std=0.2, tex=r'\tilde{\delta_{CP}}', tag=tag)
])
if args.fix_mixing_almost:
diff --git a/utils/plot.py b/utils/plot.py
index 0160da4..3d94cc1 100644
--- a/utils/plot.py
+++ b/utils/plot.py
@@ -131,9 +131,10 @@ def gen_figtext(args):
if args.likelihood is Likelihood.GAUSSIAN:
t += '\nSigma = {0:.3f}'.format(args.sigma_ratio)
if args.energy_dependance is EnergyDependance.SPECTRAL:
- t += '\nSpectral Index = {0}\nBinning = [{1}, {2}] TeV - {3} bins'.format(
- int(args.spectral_index), int(args.binning[0]/1e3),
- int(args.binning[-1]/1e3), len(args.binning)-1
+ if not args.fold_index:
+ t += '\nSpectral Index = {0}'.format(int(args.spectral_index))
+ t += '\nBinning = [{0}, {1}] TeV - {2} bins'.format(
+ int(args.binning[0]/1e3), int(args.binning[-1]/1e3), len(args.binning)-1
)
elif args.energy_dependance is EnergyDependance.MONO:
t += '\nEnergy = {0} TeV'.format(int(args.energy/1e3))