365 def run(self, absent=False):
366 ntFileName = self.getFileName('-nt.root','BeamSpotNt')
367 dataQualityDbFileName = self.getFileName('-dqflags.db')
368
369 if os.path.exists('/'.join([self.taskDir,dataQualityDbFileName])):
370 self.logExec('cd %s; rm -f %s' % (self.taskDir,dataQualityDbFileName))
371
372 if os.path.exists('/'.join([self.taskDir,ntFileName])):
373 cmd = 'cd %s; dqBeamSpot.py -b %s -o %s %s' % (self.taskDir,'-a' if absent else '',dataQualityDbFileName,ntFileName)
374 status = self.logExec(cmd,doPrint=True,abortOnError=False)
375
376 if status:
377 raise PostProcessingError('ERROR in postprocessing step DQBeamSpot while executing:\n\n%s\n' % (cmd),self.executedSteps)
378
379
380 self.addResult(dataQualityDbFileName)
381
382 dataQualityTxtFileName = dataQualityDbFileName.replace('.db','.txt')
383 cmd = 'grep -c "ID_BS_NOBEAMSPOT" %s/%s' % (self.taskDir, dataQualityTxtFileName)
384 status,out = subprocess.getstatusoutput(cmd)
385
386
387 try:
388 nRed=int(out)
389 except ValueError:
390 raise PostProcessingError('ERROR in postprocessing step DQBeamSpot while executing:\n\n%s\n' % (cmd),self.executedSteps)
391
392 if nRed==0:
393 link='<a class="ok" href="../files?u=%s/%s/%s-dqflags.txt">DQFlags</a>' % (self.dsName,self.taskName,self.baseNameStep)
394 else:
395 link='<a class="bad" href="../files?u=%s/%s/%s-dqflags.txt">DQFlags</a>' % (self.dsName,self.taskName,self.baseNameStep)
396
397 resultLinks = self.taskDict['RESULTLINKS']
398 if resultLinks.find(link)==-1:
399 resultLinks = ' '.join([resultLinks, link])
400
401
402 self.taskman.setValue(self.dsName,self.taskName,'RESULTLINKS',resultLinks)
403 else:
404 raise PostProcessingError('ERROR: No ntuple file %s - did BeamSpotNt step run?\n' % ntFileName,self.executedSteps)
405