Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | List of all members
Gen_tf.EvgenExecutor Class Reference
Inheritance diagram for Gen_tf.EvgenExecutor:
Collaboration diagram for Gen_tf.EvgenExecutor:

Public Member Functions

def __init__ (self, name="generate", skeleton=None, skeletonCA=None, substep=None, inData=set(), outData=set())
 
def preExecute (self, input=set(), output=set())
 

Detailed Description

Definition at line 26 of file Gen_tf.py.

Constructor & Destructor Documentation

◆ __init__()

def Gen_tf.EvgenExecutor.__init__ (   self,
  name = "generate",
  skeleton = None,
  skeletonCA = None,
  substep = None,
  inData = set(),
  outData = set() 
)

Definition at line 28 of file Gen_tf.py.

28  def __init__(self, name="generate", skeleton=None, skeletonCA=None, substep=None, inData=set(), outData=set()):
29  athenaExecutor.__init__(self, name=name, skeletonFile=skeleton, skeletonCA=skeletonCA,
30  substep=substep, inputEventTest=False, tryDropAndReload=False,
31  inData=inData, outData=outData)
32 

Member Function Documentation

◆ preExecute()

def Gen_tf.EvgenExecutor.preExecute (   self,
  input = set(),
  output = set() 
)

Definition at line 33 of file Gen_tf.py.

33  def preExecute(self, input=set(), output=set()):
34  "Get input tarball, unpack and set up env if an evgenJobOpts arg was provided."
35 
36 
37  super(EvgenExecutor, self).preExecute(input, output)
38 
39  def expand_if_archive(filename):
40  "Function to expand a file if it is a zip archive or tarball"
41  if ".tar" in filename:
42  import tarfile
43  with tarfile.open(filename) as tf:
44  tf.extractall()
45  elif filename.endswith(".zip"):
46  import zipfile
47  zf = zipfile.ZipFile(filename)
48  zf.extractall()
49  zf.close()
50 
52  return [name for name in os.listdir(a_dir)
53  if os.path.isdir(os.path.join(a_dir, name))]
54 
55 
57  os.environ['LOCAL_INSTALL_DIR'] = (os.environ['JOBOPTSEARCHPATH']).split(":")[0]
58  if os.path.exists('/cvmfs/atlas.cern.ch/repo/sw/Generators/MCJobOptions/common'):
59  CommonCvmfsDir = '/cvmfs/atlas.cern.ch/repo/sw/Generators/MCJobOptions/common'
60  os.environ["JOBOPTSEARCHPATH"] = CommonCvmfsDir+":"+os.environ["JOBOPTSEARCHPATH"]
61  if os.path.exists('/cvmfs/atlas.cern.ch/repo/sw/Generators/MCJobOptions/common/MadGraphControl/dat/'):
62  datCvmfsDir = '/cvmfs/atlas.cern.ch/repo/sw/Generators/MCJobOptions/common/MadGraphControl/dat/'
63  os.environ["DATAPATH"] = datCvmfsDir+":"+os.environ["DATAPATH"]
64 # dsidparam = (self._trf.argdict["jobConfig"].value).values()[0][0]
65  dsidpar = (self._trf.argdict["jobConfig"].value).values()
66  dsidparam = list(dsidpar)[0][0]
67  # Adding cvmfs path to JOBOPTSEARCHPATH
68  if os.path.exists('/cvmfs/atlas.cern.ch/repo/sw/Generators/MCJobOptions/'):
69  BaseCvmfsPath = "/cvmfs/atlas.cern.ch/repo/sw/Generators/MCJobOptions/"
70 
71  if dsidparam.isdigit() and (len(dsidparam)==6 or len(dsidparam)==7):
72  #only dsid is provided, add cvmfs folder like 123xxx to JOBOPTSEARCHPATH
73  Jodir = dsidparam[:3]+'xxx'
74  if len(dsidparam)==7:
75  Jodir = dsidparam[0] + '/' + dsidparam[:4]+'xxx'
76  cwdir = os.getcwd()
77  cwd_ful = os.path.join(cwdir, dsidparam)
78  if (os.path.isdir(cwd_ful)):
79  os.environ["JOBOPTSEARCHPATH"] = cwd_ful+":"+os.environ["JOBOPTSEARCHPATH"]
80  os.environ["DATAPATH"] = cwd_ful+":"+os.environ["DATAPATH"]
81  else:
82  cwd_Jodir = os.path.join(cwdir,Jodir)
83  cwd_Jodir_ful = os.path.join(cwd_Jodir,dsidparam)
84  if (os.path.isdir(cwd_Jodir_ful)):
85  os.environ["JOBOPTSEARCHPATH"] = cwd_Jodir_ful+":"+os.environ["JOBOPTSEARCHPATH"]
86  os.environ["DATAPATH"] = cwd_Jodir_ful+":"+os.environ["DATAPATH"]
87  else:
88  if (os.path.isdir(BaseCvmfsPath)):
89  JoCvmfsPath = os.path.join(BaseCvmfsPath, Jodir)
90  JoCvmfsPath_ful = os.path.join(JoCvmfsPath, dsidparam)
91  os.environ["JOBOPTSEARCHPATH"] = JoCvmfsPath_ful+":"+os.environ["JOBOPTSEARCHPATH"]
92  os.environ["DATAPATH"] = JoCvmfsPath_ful+":"+os.environ["DATAPATH"]
93  else:
94  msg.error("No access to JOs cvmfs location. JOs should be placed in working directory or full path should be given.")
95  raise RuntimeError("JOs not found - no cvmfs access")
96  else: #Suppose full path of dsid folder is provided(/afs/.../123xxx/123456), add cvmfs floder and local path(/afs/.../123xxx) to JOBOPTSEARCHPATH
97  if dsidparam.startswith("Test"): # for testing
98  for token in (os.environ['JOBOPTSEARCHPATH']).split(":"):
99  if "jobOptions" in token:
100  search_token = token
101  break
102  search_token += "/EvgenJobTransforms/EvgenTest/" + dsidparam.split("Test")[-1]
103  os.environ["JOBOPTSEARCHPATH"] = search_token+":"+os.environ["JOBOPTSEARCHPATH"]
104  os.environ["DATAPATH"] = search_token+":"+os.environ["DATAPATH"]
105  elif (os.path.isdir(dsidparam)):
106  os.environ["JOBOPTSEARCHPATH"] = dsidparam+":"+os.environ["JOBOPTSEARCHPATH"]
107  os.environ["DATAPATH"] = dsidparam+":"+os.environ["DATAPATH"]
108  else:
109  msg.error("JOs not found, please check = '%s'" % dsidparam)
110  raise RuntimeError("JOs not found")
111 
112  msg.info("Using JOBOPTSEARCHPATH = '%s'" % os.environ["JOBOPTSEARCHPATH"])
113  msg.info("Using DATAPATH = '%s'" % os.environ["DATAPATH"])
114 
115  if "evgenJobOpts" in self._trf.argdict:
116  tarball = self._trf.argdict["evgenJobOpts"].value
117 
119  if tarball.startswith("http"):
120  url = tarball
121  tarball = os.basename(tarball)
122  else:
123  url = "http://cern.ch/atlas-computing/links/kitsDirectory/EvgenJobOpts/" + tarball
124 
125  if not os.path.exists(tarball):
126  from EvgenJobTransforms.download import downloadUsingProxy
127  status, output = downloadUsingProxy(url)
128  if status != 0:
129  raise EnvironmentError('Error downloading tarball %s. Downloader reports: %s' % (tarball, output))
130  msg.info('Evgen tarball download success: %s' % output)
131 
132  expand_if_archive(tarball)
133 
135 
136  # copy config files to cwd
137  FIRST_DIR = (os.environ['JOBOPTSEARCHPATH']).split(":")[0]
138  configFiles = [f for f in os.listdir(FIRST_DIR) if ( "GRID" in f)]
139  confFile=None
140  if len(configFiles) == 1:
141  msg.info("gridpack for only one energy available ")
142  elif len(configFiles) >1:
143  msg.info("more then one gridpack ! ")
144  if len(configFiles) >=1:
145  if "--ecmEnergy" in str(sys.argv[1:]):
146  split_args=str(sys.argv[1:]).split("ecmEnergy",1)[1]
147  split_args=split_args.lstrip("\',=")
148  ener_GeV=split_args.split(",")[0].strip(" ,\']")
149  energy=str(float(ener_GeV)/1000.0).replace('.','p').strip("=0\p']")
150  msg.info("Should be used gridpack for energy "+energy)
151  else:
152  msg.info("no ecm energy given, assuming 13.6 TeV ")
153  energy="13p6"
154  for x in configFiles:
155  gridS="mc_"+energy+"TeV"
156  msg.info("Gridpack should start from "+gridS)
157  if x.startswith(gridS):
158  confFile = os.path.join(FIRST_DIR, x)
159  msg.info("using gridpack = "+confFile)
160  if confFile is None:
161  msg.error("No *GRID* config files, for requested energy = '%s' please check = '%s'" %(energy,dsidparam))
162  sys.exit(1)
163 
164  if confFile is not None:
165  expand_if_archive(confFile)
166 # os.system("cp %s ." % confFile)
167  msg.info("Configuration input gridpack found " + confFile)
168 
169  #Expand if a tarball is found in local directory
170  loc_files = os.listdir(os.getcwd())
171  for loc_file in loc_files:
172  if "GRID" not in loc_file:
173  expand_if_archive(loc_file)
174 
175 
176  if "inputGeneratorFile" in self._trf.argdict:
177 # expand_if_archive(self._trf.argdict["inputGeneratorFile"].value)
178  myinputfiles = self._trf.argdict["inputGeneratorFile"].value
179  genInputFiles = myinputfiles.split(',')
180  for file in genInputFiles:
181  expand_if_archive(file)
182  if "inputGenConfFile" in self._trf.argdict:
183  expand_if_archive(self._trf.argdict["inputGenConfFile"].value)
184 

The documentation for this class was generated from the following file:
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
python.jo_proxy.get_immediate_subdirectories
def get_immediate_subdirectories(a_dir)
Definition: jo_proxy.py:6
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:805
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.download.downloadUsingProxy
def downloadUsingProxy(url, filename=None)
Definition: download.py:5
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
str
Definition: BTagTrackIpAccessor.cxx:11
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65