__author__ = 'ja' from xml.dom.minidom import parse import xml.dom.minidom import os from tempfile import mkstemp from shutil import move from os import remove, close class TbUTAnalyzer(): def __init__(self): self.dirToAnalyse="BoardA4" self.pathToDataInEos="/afs/cern.ch/user/a/adendek/eos/lhcb/testbeam/ut/OfficialData/July2015/" self.scanType='BiasScan' # one of 'AngleScan' 'BiasScan' self.TbUTPath=os.path.expandvars("$KEPLERROOT")+"/../TbUT/" def _performAnalysis(self, inputFilename): print( "work on: " +inputFilename) self.__changeOptionFile(inputFilename) os.chdir(self.TbUTPath) os.system("gaudirun.py options/TbUTRun.py") os.system("gaudirun.py options/TbUTRun.py") self._moveOutputRootFilesIntoDirectory(inputFilename) ### # add your stuffs here! ### def runAnalysis(self): self._createOutputDir() xmlRoot = xml.dom.minidom.parse('July2015Database.xml') for directory in xmlRoot.getElementsByTagName('directory'): if (directory.getAttribute("name")) in self.dirToAnalyse: biasScan=directory.getElementsByTagName(self.scanType) for run in biasScan[0].getElementsByTagName("file"): dataPath=self.pathToDataInEos+ self.dirToAnalyse+"/RawData/"+run.firstChild.nodeValue self._performAnalysis(dataPath) def _createOutputDir(self): self.outDirName=self.TbUTPath+"study_"+self.dirToAnalyse+"_"+self.scanType if not os.path.exists(self.outDirName): os.mkdir(self.outDirName) def __changeOptionFile(self,inputFileName): optionFilePath=self.TbUTPath+"options/TbUTRun.py" fh, abs_path = mkstemp() with open(abs_path,'w') as new_file: with open(optionFilePath) as old_file: for line in old_file: if not "app.inputData" in line: new_file.write(line) else: new_file.write("app.inputData='"+inputFileName+"'\n") close(fh) #Remove original file remove(optionFilePath) #Move new file move(abs_path, optionFilePath) def _moveOutputRootFilesIntoDirectory(self, inputFilename): outputName=inputFilename[:-4]+".root" outputName=outputName[outputName.rfind("/")+1:] move(outputName,self.outDirName+"/"+outputName) outputTupleName=inputFilename[:-4]+"_Tuple.root" outputTupleName=outputTupleName[outputTupleName.rfind("/")+1:] move(outputTupleName,self.outDirName+"/"+outputTupleName) if __name__=='__main__': analyzer = TbUTAnalyzer() analyzer.runAnalysis()