168 def writefilelist_hippy(self, firstrun, lastrun, runs, eventsperjob, maxevents, outputfile, usecache=True):
169 runrange =
RunRange(firstrun=firstrun, lastrun=lastrun, runs=runs)
170 if maxevents < 0: maxevents = float(
"inf")
171 totalevents = sum(datafile.nevents
for datafile
in self.
getfiles(usecache)
if all(run
in runrange
for run
in datafile.runs))
173 raise ValueError(
"No events within the run range!")
174 accepted = rejected = inthisjob = 0.
176 fractiontoaccept = 1.*maxevents / totalevents
179 with open(outputfile,
"w")
as f:
180 for datafile
in self.
getfiles(usecache):
181 if all(run
in runrange
for run
in datafile.runs):
182 if accepted == 0
or accepted / (accepted+rejected) <= fractiontoaccept:
183 if writecomma: f.write(
",")
184 f.write(
"'" + datafile.filename +
"'")
185 accepted += datafile.nevents
186 inthisjob += datafile.nevents
187 if inthisjob >= eventsperjob:
194 rejected += datafile.nevents
195 elif any(run
in runrange
for run
in datafile.runs):
196 raise DatasetError(
"file {} has multiple runs {}, which straddle firstrun or lastrun".
format(datafile.filename, datafile.runs))