file 1.0.2/xsecBE_gambit.py
[No description available]
Namespaces
Name |
---|
xsecBE_gambit |
Source code
#
# Work in progress: Backend interface for xsec
# github.com/jeriek/xsec
# arxiv:2006.16273
#
from __future__ import print_function
import numpy as np
import xsec
from math import sqrt
# Prefix for screen output
prefix = "xsecBE_gambit:"
# # This will run when this backend is first loaded, i.e. during GAMBIT startup
# print(prefix, "Starting up...")
# TODO: xsec.init should be run from within GAMBIT, to avoid the hardcoded path here
xsec.init(data_dir="Backends/installed/xsecBE/1.0.2/gprocs/")
#
# Import SLHA content as string
#
def import_slha_string(slha_string):
print("Reading SLHA input...")
xsec.import_slha_string(slha_string)
print("...done")
#
# Set parameters
#
def set_parameters(params):
for k,v in params.items():
xsec.set_parameter(k, v)
#
# Return the cross-section for a given process, identified by a PID pair
#
def get_xsection(proc):
# Load process
known_process = True
processes = [proc]
print("Load process:", proc)
try:
xsec.load_processes(processes)
except KeyError:
print("Unknown process", proc, "-- setting cross-section to 0")
known_process = False
# Evaluate cross-section
if known_process:
result_array = xsec.eval_xsection(verbose=1, check_consistency=False)
else:
result_array = np.zeros((9,1))
print("Cross-section array for process", proc, ":", result_array)
# Construct result dictionary
# The uncertainties from xsec are relative *deviances*, i.e. (central +/- err) / central
# Turn them into relative *errors* here:
result_dict = {}
result_dict["central"] = result_array[0]
result_dict["regdown_rel"] = result_array[1]
result_dict["regup_rel"] = result_array[2]
result_dict["scaledown_rel"] = result_array[3]
result_dict["scaleup_rel"] = result_array[4]
result_dict["pdfdown_rel"] = result_array[5]
result_dict["pdfup_rel"] = result_array[6]
result_dict["alphasdown_rel"] = result_array[7]
result_dict["alphasup_rel"] = result_array[8]
result_dict["tot_err_down"] = result_dict["central"] * sqrt(result_dict["regdown_rel"]**2
+ result_dict["scaledown_rel"]**2
+ result_dict["pdfdown_rel"]**2
+ result_dict["alphasdown_rel"]**2)
result_dict["tot_err_up"] = result_dict["central"] * sqrt(result_dict["regup_rel"]**2
+ result_dict["scaleup_rel"]**2
+ result_dict["pdfup_rel"]**2
+ result_dict["alphasup_rel"]**2)
return result_dict
Updated on 2022-08-03 at 12:58:20 +0000