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

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:310
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZj_MiNNLO.py:18
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:808
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.download.downloadUsingProxy
def downloadUsingProxy(url, filename=None)
Definition: download.py:3
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
Trk::open
@ open
Definition: BinningType.h:40
str
Definition: BTagTrackIpAccessor.cxx:11
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65