file scripts/generate_raster_scan_settings.py
[No description available]
Namespaces
Name |
---|
generate_raster_scan_settings |
Source code
#!/usr/bin/env python
#
# GAMBIT: Global and Modular BSM Inference Tool
#*********************************************
# \file
#
# Simple script for generating parameter value
# lists for the 'raster' scanner, when used
# to perform "SLHA scans" of simplified models
# with ColliderBit.
#
#*********************************************
#
# Authors (add name and date if you modify):
#
# \author Anders Kvellestad
# (a.kvellestad@imperial.ac.uk)
# \date 2019 Jul
#
#*********************************************
#
# Example:
#
# m1 : mass of neutralino1
# m2 : mass of chargino1 = mass of neutralino2
# xsec_fb: NLO+NLL cross-section [fb] for wino-like chi1pm + chi10 production at 13 TeV.
# xsec_uncert_fb: absolute cross-section uncertainty [fb]
#
# Cross-section values and uncertainties are taken from
# https://twiki.cern.ch/twiki/bin/view/LHCPhysics/SUSYCrossSections13TeVn2x1wino#Envelope_of_CTEQ6_6_and_MSTW2008
#
from __future__ import print_function
m2_data = [100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375, 400, 425, 450, 475, 500, 525, 550, 575, 600, 625, 650, 675, 700, 725, 750, 775, 800, 825, 850, 875, 900, 925, 950, 975, 1000]
xsec_fb_data = [22670.1, 10034.8, 5180.86, 2953.28, 1807.39, 1165.09, 782.487, 543.03, 386.936, 281.911, 209.439, 158.06, 121.013, 93.771, 73.4361, 58.0811, 46.3533, 37.2636, 30.1656, 24.5798, 20.1372, 16.5706, 13.7303, 11.3975, 9.51032, 7.9595, 6.69356, 5.63562, 4.75843, 4.02646, 3.42026, 2.90547, 2.49667, 2.12907, 1.8164, 1.56893, 1.34352]
xsec_uncert_fb_data = [973.967, 457.604, 253.223, 154.386, 101.316, 68.8042, 48.7463, 35.4083, 26.3602, 20.0201, 15.4539, 12.0956, 9.61659, 7.73547, 6.2389, 5.05005, 4.16461, 3.46763, 2.88065, 2.40183, 2.04438, 1.70195, 1.43519, 1.21937, 1.04092, 0.885243, 0.769988, 0.654544, 0.564061, 0.478362, 0.412315, 0.366257, 0.314019, 0.26801, 0.242682, 0.217618, 0.175604]
assert len(m2_data) == len(xsec_fb_data)
assert len(m2_data) == len(xsec_uncert_fb_data)
# Pick out every n-th point, and no more than N different m2 values
n = 2
N = 8
m2 = m2_data[::n][:N]
xsec_fb = xsec_fb_data[::n][:N]
xsec_uncert_fb = xsec_uncert_fb_data[::n][:N]
# Steps in m1 for every m2
m1_min = 25.
m1_step = 50.
# Generate lists
m1_raster = []
m2_raster = []
xsec_fb_raster = []
xsec_uncert_fb_raster = []
# xsec_fractional_uncert_raster = []
for i in range(len(m2)):
m1 = m1_min
while (m1 < m2[i]):
m1_raster.append(m1)
m2_raster.append(m2[i])
xsec_fb_raster.append(xsec_fb[i])
xsec_uncert_fb_raster.append(xsec_uncert_fb[i])
# xsec_fractional_uncert_raster.append(xsec_uncert_fb[i] / xsec_fb[i])
m1 += m1_step
# Format parameter lists for output
model_name= "ColliderBit_SLHA_scan_model"
m1_str = "\"" + model_name + "::m1\"" + ": ["
for x in m1_raster:
m1_str += "%.1f, " % x
m1_str = m1_str[:-2] + "]"
m2_str = "\"" + model_name + "::m2\"" + ": ["
for x in m2_raster:
m2_str += "%.1f, " % x
m2_str = m2_str[:-2] + "]"
xsec_fb_str = "\"" + model_name + "::xsec_fb\"" + ": ["
for x in xsec_fb_raster:
xsec_fb_str += "%.1f, " % x
xsec_fb_str = xsec_fb_str[:-2] + "]"
xsec_uncert_fb_str = "\"" + model_name + "::xsec_uncert_fb\"" + ": ["
for x in xsec_uncert_fb_raster:
xsec_uncert_fb_str += "%.2f, " % x
xsec_uncert_fb_str = xsec_uncert_fb_str[:-2] + "]"
# xsec_fractional_uncert_str = "\"" + model_name + "::p4\"" + ": ["
# for x in xsec_fractional_uncert_raster:
# xsec_fractional_uncert_str += "%.2f, " % x
# xsec_fractional_uncert_str = xsec_fractional_uncert_str[:-2] + "]"
# Print output
output = """
Scanner:
use_scanner: raster
scanners:
raster:
plugin: raster
like: LogLike
parameters:
{}
{}
{}
{}
""".format(m1_str, m2_str, xsec_fb_str, xsec_uncert_fb_str)
# """.format(m1_str, m2_str, xsec_fb_str, xsec_fractional_uncert_str)
print(output)
Updated on 2022-08-03 at 12:57:58 +0000