diff options
| -rwxr-xr-x | fr.py | 3 | ||||
| -rwxr-xr-x | sens.py | 3 | ||||
| -rw-r--r-- | test/test_gf.py | 76 | ||||
| -rw-r--r-- | test/test_gf_simple.py | 23 | ||||
| -rw-r--r-- | utils/fr.py | 15 | ||||
| -rw-r--r-- | utils/gf.py | 5 | ||||
| -rw-r--r-- | utils/param.py | 2 | ||||
| -rw-r--r-- | utils/plot.py | 7 |
8 files changed, 114 insertions, 20 deletions
@@ -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): @@ -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)) |
