Source code for hepi.run.softsusy.run

import os
import subprocess
import warnings
from typing import List

from hepi.input import Input, update_slha
from hepi.run import Runner


[docs] class SoftsusyRunner(Runner):
[docs] def _check_path(self) -> bool: if os.path.exists(os.path.expanduser(self.get_path() + "/bin/softpoint.x")): self.set_path(self.get_path() + "/bin/softpoint.x") return True if self.get_path().endswith("softpoint.x"): return True return False
[docs] def run(self, slhas: List[Input], **kwargs) -> List[Input]: """ Run the passed list of parameters for softsusy. Args: slhas (:obj:`list` of :class:`Input`): Input parameters with a SLHA file that can be processed by softsusy. Returns: :obj:`list` of :class:`Input` """ if not self._check_path(): warnings.warn("The path is not valid for " + self.get_name()) for s in slhas: # Remove Creation time for hash-/caching comm = ( "cp " + self.get_output_dir() + s.slha + " softsusy_tmp.in && " + get_path() + " leshouches < softsusy_tmp.in > Softsusy.spc" + " && mv " + "Softsusy.spc " + self.get_output_dir() + s.slha # + " && sed -i '/Created/d' " # + self.get_output_dir() # + s.slha ) # print(comm) with subprocess.Popen( comm, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) as proc: proc.wait() # get proc return code if proc.returncode != 0: warnings.warn("softsusy failed") update_slha(s) return slhas
# Backward compatibility
[docs] spheno_default_runner = SoftsusyRunner("softpoint.x")
"""Default SoftSusy Runner to provide backward compatibility"""
[docs] run = spheno_default_runner.run
[docs] set_path = spheno_default_runner.set_path
[docs] get_path = spheno_default_runner.get_path