Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
3 from AthenaCommon
import Logging
4 from ..powheg_V2
import PowhegV2
7 logger = Logging.logging.getLogger(
"PowhegControl")
11 """! Default Powheg configuration for gluon-fusion Higgs boson production with quark mass and EW effects.
13 Create a configurable object with all applicable Powheg options.
15 @author Timothée Theveneaux-Pelzer <tpelzer@cern.ch>
19 """! Constructor: all process options are set here.
21 @param base_directory: path to PowhegBox code.
22 @param kwargs dictionary of arguments from Generate_tf.
24 super(ggF_HH_SMEFT, self).
__init__(base_directory,
"ggHH_SMEFT", **kwargs)
73 self.
add_keyword(
"fixedscale", description=
"Set renormalisation and factorisation scales to 2*m_H")
165 """! Creates the .grid file needed by this process."""
166 """! This function calls a python script provided by the authors, which is linked to the local directory."""
167 """! The code of this function is adapted from the script ${POWHEGPATH}/POWHEG-BOX-V2/ggHH/testrun/run.sh"""
170 logger.info(
'Now attempting to link locally the files needed by this Powheg process')
172 processpythondir = os.path.join(os.environ[
"POWHEGPATH"],
"POWHEG-BOX-V2",
"ggHH_SMEFT",
'python')
173 if os.path.isdir(processpythondir):
174 for filename
in os.listdir(processpythondir):
175 source_path = os.path.join(processpythondir, filename)
176 if os.path.isfile(source_path):
177 link_name = os.path.join(os.getcwd(), filename)
179 os.symlink(source_path, link_name)
180 print(f
"Created link: {link_name} -> {source_path}")
181 except FileExistsError:
182 print(f
"Link already exists: {link_name}")
184 os.system(
"ln -s " + os.environ[
"POWHEGPATH"] +
"/POWHEG-BOX-V2/ggHH_SMEFT/Virtual/events.cdf events.cdf")
185 os.system(
"ln -s " + os.environ[
"POWHEGPATH"] +
"/POWHEG-BOX-V2/ggHH_SMEFT/Virtual/creategrid.py creategrid.py")
186 os.system(
"ln -s " + os.environ[
"POWHEGPATH"] +
"/POWHEG-BOX-V2/ggHH_SMEFT/shell/warmup_smeft.py warmup_smeft.py")
187 os.system(
"for grid in " + os.environ[
"POWHEGPATH"] +
"/POWHEG-BOX-V2/ggHH_SMEFT/Virtual/Virt_full_*E*.grid; do ln -s $grid ${grid##*/}; done")
189 logger.error(
'Impossible to link the needed files locally')
195 if usesmeft_str ==
"0":
201 renfac_str = f
'{renfact[0]:+.2f}' if type(renfact)
is list
else f
'{renfact:+.2f}'
203 lhapdfid_str =
str(lhapdfid[0])
if type(lhapdfid)
is list
else str(lhapdfid)
205 if usesmeft_str ==
"1":
206 GF_str = f
'{list(self.parameters_by_keyword("gfermi"))[0].value:+.4E}'
207 Lambda_str = f
'{list(self.parameters_by_keyword("Lambda"))[0].value:+.4E}'
208 CHbox_str = f
'{list(self.parameters_by_keyword("CHbox"))[0].value:+.4E}'
209 CHD_str = f
'{list(self.parameters_by_keyword("CHD"))[0].value:+.4E}'
210 CH_str = f
'{list(self.parameters_by_keyword("CH"))[0].value:+.4E}'
211 CuH_str = f
'{list(self.parameters_by_keyword("CuH"))[0].value:+.4E}'
212 CHG_str = f
'{list(self.parameters_by_keyword("CHG"))[0].value:+.4E}'
214 logger.info(
'Now trying to use warmup_smeft.py to create the Virt_full_*.grid file')
215 logger.info(f
'Parameters are: GF={GF_str}, Lambda={Lambda_str}, CHbox={CHbox_str}, CHD={CHD_str}, CH={CH_str}, CuH={CuH_str}, CHG={CHG_str}, EFTcount={EFTcount}, lhapdfid={lhapdfid_str}, renfac={renfac_str}')
219 pythoncmd=f
"import warmup_smeft as ws; ws.combinegrids_SMEFT({Lambda_str}, {CHbox_str}, {CHD_str}, {CH_str}, {CuH_str}, {CHG_str}, {GF_str}, {EFTcount}, {lhapdfid_str}, {renfac_str})"
220 os.system(
"python3 -c \""+pythoncmd+
"\"")
222 logger.error(
'Impossible to use warmup_smeft.py to create the Virt_full_*.grid file')
226 chhh_str = f
'{list(self.parameters_by_keyword("chhh"))[0].value:+.4E}'
227 ct_str = f
'{list(self.parameters_by_keyword("ct"))[0].value:+.4E}'
228 ctt_str = f
'{list(self.parameters_by_keyword("ctt"))[0].value:+.4E}'
229 cggh_str = f
'{list(self.parameters_by_keyword("cggh"))[0].value:+.4E}'
230 cgghh_str = f
'{list(self.parameters_by_keyword("cgghh"))[0].value:+.4E}'
231 grid_file_name = f
'Virt_full-HEFT{EFTcount}_{chhh_str}_{ct_str}_{ctt_str}_{cggh_str}_{cgghh_str}.grid'
233 logger.info(
'Now trying to use creategrid.py to create the Virt_full_*.grid file')
234 logger.info(f
'File name: {grid_file_name}')
235 logger.info(f
'Parameters are: chhh={chhh_str}, ct={ct_str}, ctt={ctt_str}, cggh={cggh_str}, cgghh={cgghh_str}, EFTcount={EFTcount}, usesmeft={usesmeft_str}')
239 pythoncmd=f
"import creategrid as cg; cg.combinegrids('{grid_file_name}', {chhh_str}, {ct_str}, {ctt_str}, {cggh_str}, {cgghh_str}, {EFTcount})"
240 os.system(
"python3 -c \""+pythoncmd+
"\"")
242 logger.error(
'Impossible to use creategrid.py to create the Virt_full_*.grid file')
245 logger.info(
'Although the produced Virt_full_*.grid file now exists in the local directory, Powheg will later try to find it in all directories contained in $PYTHONPATH. This will produce several "not found" info messages which can safely be ignored.')
def expose(self)
Add all names to the interface of this object.
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
def default_scales(self)
Default scale variations for this process.
def add_keyword(self, keyword, value=None, name=None, frozen=None, hidden=None, description=None, **kwargs)
Register configurable parameter that is exposed to the user.
def parameters_by_keyword(self, keyword)
Retrieve all parameters that use a given keyword.
validation_functions
List of validation functions to run before preparing runcard.
Default Powheg configuration for gluon-fusion Higgs boson production with quark mass and EW effects.
void print(char *figname, TCanvas *c1)
def default_PDFs(self)
Default PDFs for this process.
Base class for PowhegBox V2 processes.
def create_grid_file(self)
Creates the .grid file needed by this process.