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 21 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 23 of file Gen_tf.py.

23  def __init__(self, name="generate", skeleton=None, skeletonCA=None, substep=None, inData=set(), outData=set()):
24  athenaExecutor.__init__(self, name=name, skeletonFile=skeleton, skeletonCA=skeletonCA,
25  substep=substep, inputEventTest=False, tryDropAndReload=False,
26  inData=inData, outData=outData)
27 

Member Function Documentation

◆ preExecute()

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

Definition at line 28 of file Gen_tf.py.

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

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:797
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:224
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
readCCLHist.float
float
Definition: readCCLHist.py:83
Trk::split
@ split
Definition: LayerMaterialProperties.h:38