ma.setInputFile('lfn:' + slcioFile) outputFiles = [] outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_Default.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '.slcio') if eventType == 'Z_uds': outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_Muon.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPhoton.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPhotonNK0L.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPFA.root') job = UserJob() job.setJobGroup('ReviewJER') job.setInputSandbox(pandoraSettingsFilesLocal.values()) # Local files job.setOutputSandbox(['*.log','*.gear','*.mac','*.steer','*.xml']) job.setOutputData(outputFiles,OutputPath='/ReviewJER/MarlinJobs/Detector_Model_' + str(gridJobNumber) + '/Reco_Stage_' + str(recoStageNumber) + '/' + eventType + '/' + energy + 'GeV') # On grid job.setName('ReviewJER_Detector' + str(gridJobNumber) + '_Reco_' + str(recoStageNumber)) job.dontPromptMe() res = job.append(ma) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) os.system('rm *.cfg') # Tidy Up os.system('rm MarlinSteering.steer') os.system('rm ' + gearFileLocal) for key, value in pandoraSettingsFilesLocal.iteritems(): os.system('rm ' + value)
def SubmitJob(jobInfo): ######################### # Unpack job information ######################### eventType = jobInfo['eventType'] energy = jobInfo['energy'] detectorModel = jobInfo['detectorModel'] reconstructionVariant = jobInfo['reconstructionVariant'] slcioFile = jobInfo['slcioFile'] analysisTag = jobInfo['analysisTag'] jobDescription = jobInfo['jobDescription'] idx = jobInfo['idx'] numberOfFiles = jobInfo['numberOfFiles'] gearFileLocal = jobInfo['gearFileLocal'] diracInstance = jobInfo['diracInstance'] slcioFormat = jobInfo['slcioFormat'] pandoraPFOsToUse = jobInfo['pandoraPFOsToUse'] jetClusteringMode = jobInfo['jetClusteringMode'] nJetsToCluster = jobInfo['nJetsToCluster'] jetClusteringAlgorithm = jobInfo['jetClusteringAlgorithm'] jetClusteringRadius = jobInfo['jetClusteringRadius'] jetAlgorithmConfigString = pandoraPFOsToUse + '_' + jetClusteringAlgorithm + '_' + str( format(jetClusteringRadius, '.2f')).replace('.', 'p') flavourTaggingWeights = '' rootFileSuffix = '' if pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 1400 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.50': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_SelectedPFOs_kt_algorithm_2jets_0p50.tar.gz' rootFileSuffix = 'SPFOs_kt_0p50.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 1400 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_SelectedPFOs_kt_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'SPFOs_kt_0p70.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 1400 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.90': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_SelectedPFOs_kt_algorithm_2jets_0p90.tar.gz' rootFileSuffix = 'SPFOs_kt_0p90.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 1400 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '1.00': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_SelectedPFOs_kt_algorithm_2jets_1p00.tar.gz' rootFileSuffix = 'SPFOs_kt_1p00.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 1400 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '1.10': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_SelectedPFOs_kt_algorithm_2jets_1p10.tar.gz' rootFileSuffix = 'SPFOs_kt_1p10.root' elif pandoraPFOsToUse == 'TightSelectedPandoraPFANewPFOs' and (int)( energy) == 1400 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_TightPFOs_kt_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'TPFOs_kt_0p70.root' elif pandoraPFOsToUse == 'LooseSelectedPandoraPFANewPFOs' and (int)( energy) == 1400 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_LoosePFOs_kt_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'LPFOs_kt_0p70.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and ( int )(energy) == 1400 and jetClusteringAlgorithm == 'cambridge_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_SelectedPFOs_cambridge_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'SPFOs_cam_0p70.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and ( int )(energy) == 1400 and jetClusteringAlgorithm == 'ee_kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.00': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_1400GeV_SelectedPFOs_ee_kt_algorithm_2jets_0p00.tar.gz' rootFileSuffix = 'SPFOs_ee_kt_0p70.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 3000 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.50': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_SelectedPFOs_kt_algorithm_2jets_0p50.tar.gz' rootFileSuffix = 'SPFOs_kt_0p50.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 3000 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_SelectedPFOs_kt_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'SPFOs_kt_0p70.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 3000 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.90': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_SelectedPFOs_kt_algorithm_2jets_0p90.tar.gz' rootFileSuffix = 'SPFOs_kt_0p90.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 3000 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '1.00': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_SelectedPFOs_kt_algorithm_2jets_1p00.tar.gz' rootFileSuffix = 'SPFOs_kt_1p00.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and (int)( energy) == 3000 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '1.10': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_SelectedPFOs_kt_algorithm_2jets_1p10.tar.gz' rootFileSuffix = 'SPFOs_kt_1p10.root' elif pandoraPFOsToUse == 'TightSelectedPandoraPFANewPFOs' and (int)( energy) == 3000 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_TightPFOs_kt_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'TPFOs_kt_0p70.root' elif pandoraPFOsToUse == 'LooseSelectedPandoraPFANewPFOs' and (int)( energy) == 3000 and jetClusteringAlgorithm == 'kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_LoosePFOs_kt_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'LPFOs_kt_0p70.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and ( int )(energy) == 3000 and jetClusteringAlgorithm == 'cambridge_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.70': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_SelectedPFOs_cambridge_algorithm_2jets_0p70.tar.gz' rootFileSuffix = 'SPFOs_cam_0p70.root' elif pandoraPFOsToUse == 'SelectedPandoraPFANewPFOs' and ( int )(energy) == 3000 and jetClusteringAlgorithm == 'ee_kt_algorithm' and ( int)(nJetsToCluster) == 2 and str( format(jetClusteringRadius, '.2f')) == '0.00': flavourTaggingWeights = 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/LcfiWeights/lcfiweights_3000GeV_SelectedPFOs_ee_kt_algorithm_2jets_0p00.tar.gz' rootFileSuffix = 'SPFOs_ee_kt_0p70.root' slcioFileNoPath = os.path.basename(slcioFile) inputSandbox = [ 'LFN:/ilc/user/s/sgreen/AnalysisProcessorTarBall/MarlinAnalysisProcessor.tar.gz', 'LFN:/ilc/user/s/sgreen/AnalysisProcessorTarBall/JetsToPFOProcessor.tar.gz', 'LFN:/ilc/user/s/sgreen/AnalysisProcessorTarBall/vtxprob.tar.gz', flavourTaggingWeights ] ######################### # Get info from file name ######################### matchObj = re.match(slcioFormat, os.path.basename(slcioFile), re.M | re.I) generatorSerialNumber = 0 numberOfEventsInFile = 0 startEventNumber = 0 # In generator level, not reconstruction. Start event for all reconstruction is 0. if matchObj: generatorSerialNumber = matchObj.group(1) numberOfEventsInFile = matchObj.group(2) startEventNumber = matchObj.group(3) else: print 'Wrong slcio format. Please check.' return ######################### # Modify Template ######################### steeringTemplate = GetTemplate(jobInfo) outputPath = '/' + jobDescription + '/MarlinJobs/Detector_Model_' + detectorModel + '/Reconstruction_Variant_' + reconstructionVariant + '/' + eventType + '/' + str( energy) + 'GeV/AnalysisTag' + str(analysisTag) rootFileName = 'DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str( energy) + 'GeV_GenN_' + str(generatorSerialNumber) + '_' + str( numberOfEventsInFile) + '_' + str(startEventNumber) + '_Tag' + str( analysisTag) + rootFileSuffix outputFiles = [] outputFiles.append(rootFileName) steeringTemplate = re.sub('InputSlcioFile', slcioFileNoPath, steeringTemplate) steeringTemplate = re.sub('GearFile', gearFileLocal, steeringTemplate) steeringTemplate = re.sub('MaximumNumberOfEventsToRecord', '-1', steeringTemplate) steeringTemplate = re.sub('AnalysisProcessorRootFile', rootFileName, steeringTemplate) ######################### # Check output doesn't exist already ######################### print 'Checking ' + eventType + ' ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. SLCIO file ' + slcioFile + '.' skipJob = False for outputFile in outputFiles: lfn = '/ilc/user/s/sgreen' + outputPath + '/' + outputFile if doesFileExist(lfn): skipJob = True if skipJob: return print 'Submitting ' + eventType + ' ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. SLCIO file ' + slcioFile + '.' ######################### # Write Template File ######################### marlinSteeringFilename = 'MarlinSteering_' + str( idx + 1) + '_' + eventType + '_' + str( energy) + '_' + jetAlgorithmConfigString + '.steer' with open(marlinSteeringFilename, 'w') as SteeringFile: SteeringFile.write(steeringTemplate) ######################### # Setup Marlin Application ######################### ma = Marlin() ma.setVersion('v01-16-02') ma.setSteeringFile(marlinSteeringFilename) ma.setGearFile(gearFileLocal) ma.setInputFile('lfn:' + slcioFile) ma.setProcessorsToUse([ 'libMarlinFastJet.so', 'libJetsToPFOs.so', 'libLCFIPlus.so', 'libAnalysisProcessor.so', 'libMarlinReco.so' ]) ######################### # Submit Job ######################### jobDetailedName = jobDescription + '_DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str( energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str( numberOfEventsInFile) + '_' + str(startEventNumber) job = UserJob() job.setJobGroup(jobDescription) job.setInputSandbox(inputSandbox) # Local files job.setOutputSandbox(['*.log', '*.gear', '*.mac', '*.steer', '*.xml']) job.setOutputData(outputFiles, OutputPath=outputPath) # On grid job.setName(jobDetailedName) job.setBannedSites([ 'LCG.IN2P3-CC.fr', 'LCG.IN2P3-IRES.fr', 'LCG.KEK.jp', 'OSG.PNNL.us', 'OSG.CIT.us', 'LCG.LAPP.fr', 'LCG.UKI-LT2-IC-HEP.uk', 'LCG.Tau.il', 'LCG.Weizmann.il', 'OSG.BNL.us', 'LCG.GRIF.fr', 'LCG.UKI-SOUTHGRID-RALPP.uk', 'LCG.RAL-LCG2.uk' ]) job.setCPUTime(21600) # 6 hour, should be excessive job.dontPromptMe() res = job.append(ma) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) os.system('rm ' + marlinSteeringFilename) print 'Job submitted to grid.'
#job.setExecutionEnv({'ROOT_INCLUDE_PATH':'./'}) job.setJobGroup(jobGroup) job.setOutputSandbox ( [ "*.log","*.out","*.py"] ) job.setBannedSites(['LCG.IN2P3-CC.fr','OSG.UConn.us','LCG.Cracow.pl','OSG.MIT.us','LCG.Glasgow.uk','OSG.CIT.us','OSG.BNL.us','LCG.Brunel.uk','LCG.QMUL.uk']) #pay attention that the Zuds200 here is NOT changed job.setInputSandbox( ["LFN:/ilc/user/w/webermat/190606/HZAnalyzerlib.tar.gz", "LFN:/ilc/user/w/webermat/190412/vtxprob.tar.gz","LFN:/ilc/user/w/webermat/190412/flavourTagging04-01_ct_90deg/lcfiweights.tar.gz"] ) job.setBannedSites(['LCG.INP3-CC.fr','OSG.UConn.us','LCG.Cracow.pl','OSG.MIT.us','LCG.Glasgow.uk','OSG.CIT.us','OSG.BNL.us','LCG.Brunel.uk','LCG.QMUL.uk','LCG.Oxford.uk']) job.setSplitInputData(filelist, numberOfFilesPerJob=50) ma = Marlin() ma.setVersion('ILCSoft-2019-04-17_gcc62') #ma.setInputFile("LFN:/ilc/user/w/webermat/ddsimstdheptautau/ILC18-10-11_gcc62_CLIC_o3_v14/tautau200/ddsim_ILC181011_gcc62_tautau_200_CLIC_o3_v14_0%s.slcio"%(str(input_ind))) ma.setSteeringFile("/eos/user/w/weberma2/steeringFiles/testHZAnalyzer.xml") ma.setDetectorModel("CLIC_o3_v14") HZrootfilename2="HZStudy_ee_qqqq_m_qqqq_2TeV_13696_polm80_3TeV_wO_CLIC_o3_v14_DR7.root" RunStatRootfilename2="ee_qqqq_m_qqqq_2TeV_13696_RunEventStatisticsHistogram.root" #TrackPtMin default -1, saveMEInfo=true and Rmax=0.7 ma.setExtraCLIArguments("--MyHZAnalyzer.saveMEInfo=true --MyHZAnalyzer.OutputRootFileName={HZrootfilename} --MyRunEventStatisticsHistogram.OutputRootFileName={RunStatRootfilename}".format(HZrootfilename=HZrootfilename2,RunStatRootfilename=RunStatRootfilename2)) #ma.setExtraCLIArguments("--MyHZAnalyzer.saveMEInfo=false --MyHZAnalyzer.Rmax=0.7 --MyHZAnalyzer.TrackPtMin=-1 --MyHZAnalyzer.OutputRootFileName={HZrootfilename}".format(HZrootfilename=HZrootfilename2)) #lcoutputreco ="ddsmp_ILC181101_gcc62_tautau200_0%s.slcio"%(str(input_ind)) #ma.setOutputFile(lcoutputreco) res=job.append(ma) if not res['OK']: print res['Message'] exit() job.setOutputData([HZrootfilename2,RunStatRootfilename2],"HZAnalyzer/ILC19-04-17_gcc62_CT/CLIC_o3_v14/VtxRFJVLC7PFO_EthetaVar/polm80/ee_qqqq_m_qqqq_2TeV/13696","CERN-DST-EOS") print jobGroup,meta['ProdID'],"polm80","ee_qqqq_m_qqqq_2TeV" job.setName(jobGroup) job.dontPromptMe() job.submit(dirac)
'LCG.INP3-CC.fr', 'OSG.UConn.us', 'LCG.Cracow.pl', 'OSG.MIT.us', 'LCG.Glasgow.uk', 'OSG.CIT.us', 'OSG.BNL.us', 'LCG.Brunel.uk', 'LCG.QMUL.uk', 'LCG.Oxford.uk' ]) job.setSplitInputData(filelist, numberOfFilesPerJob=50) ma = Marlin() ma.setVersion('ILCSoft-2019-09-04_gcc62') #ma.setInputFile("LFN:/ilc/user/w/webermat/ddsimstdheptautau/ILC18-10-11_gcc62_CLIC_o3_v14/tautau200/ddsim_ILC181011_gcc62_tautau_200_CLIC_o3_v14_0%s.slcio"%(str(input_ind))) ma.setSteeringFile( "/eos/user/w/weberma2/steeringFiles/testHHZAnalyzer.xml") ma.setDetectorModel("CLIC_o3_v14") HHZrootfilename2 = "HHZStudy_%s_%s_%s_3TeV_wO_CLIC_o3_v14.root" % ( file[1], file[0], file[2]) #print HHZrootfilename2 #TrackPtMin default -1, saveMEInfo=true and Rmax=0.7 ma.setExtraCLIArguments( "--MyHHZAnalyzer.saveMEInfo=false --MyHHZAnalyzer.OutputRootFileName={HHZrootfilename}" .format(HHZrootfilename=HHZrootfilename2)) res = job.append(ma) if not res['OK']: print res['Message'] exit() outputdirectory = "HHZAnalyzer/ILC19-09-04_gcc62_CT/CLIC_o3_v14/VtxRFJVLC10_NJet3/%s/%s/%s" % ( file[2], file[1], file[0]) #print outputdirectory job.setOutputData([HHZrootfilename2], outputdirectory, "CERN-DST-EOS") print jobGroup, meta['ProdID'], file[2], file[1] job.setName(jobGroup) job.dontPromptMe() job.submit(dirac)
def SubmitCLICJob(jobInfo): ######################### # Unpack job information ######################### eventType = jobInfo['eventType'] energy = jobInfo['energy'] detectorModel = jobInfo['detectorModel'] reconstructionVariant = jobInfo['reconstructionVariant'] clicFile = jobInfo['clicFile'] analysisTag = jobInfo['analysisTag'] jobDescription = jobInfo['jobDescription'] steeringTemplateContent = jobInfo['steeringTemplateContent'] prodID = jobInfo['prodID'] idx = jobInfo['idx'] numberOfFiles = jobInfo['numberOfFiles'] gearFileLocal = jobInfo['gearFileLocal'] diracInstance = jobInfo['diracInstance'] marlinVersion = jobInfo['marlinVersion'] pandoraPFOsToUse = jobInfo['pandoraPFOsToUse'] shortPandoraPFOsToUse = jobInfo['shortPandoraPFOsToUse'] jetClusteringMode = jobInfo['jetClusteringMode'] nJetsToCluster = jobInfo['nJetsToCluster'] jetClusteringAlgorithm = jobInfo['jetClusteringAlgorithm'] jetClusteringRadius = jobInfo['jetClusteringRadius'] jetAlgorithmConfigString = jobInfo['jetAlgorithmConfigString'] print 'Checking CLIC sample ' + eventType + ' ' + str(energy) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. Slcio file ' + clicFile + '.' clicFileNoPath = os.path.basename(clicFile) inputSandbox = ['LFN:/ilc/user/s/sgreen/AnalysisProcessorTarBall/JetsToPFOProcessor.tar.gz', 'LFN:/ilc/user/s/sgreen/AnalysisProcessorTarBall/vtxprob.tar.gz'] ######################### # Modify Template ######################### steeringTemplate = steeringTemplateContent outputPath = '/' + jobDescription + '/MarlinJobs/Detector_Model_' + detectorModel + '/Reconstruction_Variant_' + reconstructionVariant + '/' + eventType + '_ProdID_' + str(prodID) + '/' + str(energy) + 'GeV/' + jetAlgorithmConfigString rootFileName = 'ProdID_' + str(prodID) + '_' + eventType + '_' + str(energy) + 'GeV_Analysis_' + str(analysisTag) + '_Number_' + str(idx+1) + '_Of_' + str(numberOfFiles) + '.root' outputFiles = [] outputFiles.append(rootFileName) steeringTemplate = re.sub('MakeNtupleRootFileName',rootFileName,steeringTemplate) steeringTemplate = re.sub('GearFile',gearFileLocal,steeringTemplate) steeringTemplate = re.sub('InputSlcioFile',clicFileNoPath,steeringTemplate) steeringTemplate = re.sub('PandoraPFOsToUse', pandoraPFOsToUse,steeringTemplate) steeringTemplate = re.sub('JetClusteringMode', jetClusteringMode,steeringTemplate) steeringTemplate = re.sub('NJetsToCluster', str(nJetsToCluster),steeringTemplate) steeringTemplate = re.sub('JetClusteringAlgorithm',jetClusteringAlgorithm,steeringTemplate) steeringTemplate = re.sub('JetClusteringRadius', str(format(jetClusteringRadius,'.2f')),steeringTemplate) # steeringTemplate = re.sub('JetAlgorithmConfig',jetAlgorithmConfigString,steeringTemplate) ######################### # Write Template File ######################### marlinSteeringFilename = 'MarlinSteering_' + str(idx+1) + '_' + eventType + '_' + jetAlgorithmConfigString + '.steer' with open(marlinSteeringFilename ,'w') as SteeringFile: SteeringFile.write(steeringTemplate) ######################### # Check output doesn't exist already ######################### skipJob = False for outputFile in outputFiles: lfn = '/ilc/user/s/sgreen' + outputPath + '/' + outputFile if doesFileExist(lfn): skipJob = True if skipJob: return print 'Submitting ' + eventType + ' ' + str(energy) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. CLIC file ' + clicFile + '.' ######################### # Setup Marlin Application ######################### ma = Marlin() ma.setVersion(marlinVersion) ma.setSteeringFile(marlinSteeringFilename) ma.setGearFile(gearFileLocal) ma.setInputFile('lfn:' + clicFile) ma.setProcessorsToUse(['libMarlinFastJet.so', 'libJetsToPFOs.so', 'libLCFIPlus.so']) ######################### # Submit Job ######################### jobDetailedName = jobDescription + '_' + eventType + '_' + str(energy) + 'GeV_Tag' + str(analysisTag) + '_ProdID_' + str(prodID) + '_Number_' + str(idx+1) + '_Of_' + str(numberOfFiles) job = UserJob() job.setJobGroup(jobDescription) job.setInputSandbox(inputSandbox) # Local files job.setOutputSandbox(['*.log','*.steer','*.xml']) job.setOutputData(outputFiles,OutputPath=outputPath) # On grid job.setName(jobDetailedName) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp','OSG.PNNL.us','OSG.CIT.us','LCG.LAPP.fr','LCG.UKI-LT2-IC-HEP.uk','LCG.Tau.il','LCG.Weizmann.il','OSG.BNL.us']) job.setCPUTime(21600) # 6 hour, should be excessive job.dontPromptMe() # job.setDestination('LCG.CERN.ch') res = job.append(ma) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) # Tidy Up os.system('rm ' + marlinSteeringFilename) print 'Job submitted to grid.'
dirac = DiracILC(True,jobGroup+".rep") job = UserJob() #job.setExecutionEnv({'ROOT_INCLUDE_PATH':'./'}) job.setJobGroup(jobGroup) job.setOutputSandbox ( [ "*.log","*.out","*.py"] ) job.setBannedSites(['LCG.IN2P3-CC.fr','OSG.UConn.us','LCG.Cracow.pl','OSG.MIT.us','LCG.Glasgow.uk','OSG.CIT.us','OSG.BNL.us','LCG.Brunel.uk','LCG.QMUL.uk']) #pay attention that the Zuds200 here is NOT changed #job.setInputSandbox( ["LFN:/ilc/user/w/webermat/190904/libClicPerformanceNJet2.tar.gz", "LFN:/ilc/user/w/webermat/190412/vtxprob.tar.gz","LFN:/ilc/user/w/webermat/190412/flavourTagging04-01_ct_90deg/lcfiweights.tar.gz"] ) job.setInputSandbox( ["LFN:/ilc/user/w/webermat/190904/libClicPerformance.tar.gz", "LFN:/ilc/user/w/webermat/190412/vtxprob.tar.gz","LFN:/ilc/user/w/webermat/190412/flavourTagging04-01_ct_90deg/lcfiweights.tar.gz"] ) job.setBannedSites(['LCG.INP3-CC.fr','OSG.UConn.us','LCG.Cracow.pl','OSG.MIT.us','LCG.Glasgow.uk','OSG.CIT.us','OSG.BNL.us','LCG.Brunel.uk','LCG.QMUL.uk','LCG.Oxford.uk']) job.setSplitInputData(filelist, numberOfFilesPerJob=50) ma = Marlin() ma.setVersion('ILCSoft-2019-09-04_gcc62') #ma.setInputFile("LFN:/ilc/user/w/webermat/ddsimstdheptautau/ILC18-10-11_gcc62_CLIC_o3_v14/tautau200/ddsim_ILC181011_gcc62_tautau_200_CLIC_o3_v14_0%s.slcio"%(str(input_ind))) ma.setSteeringFile("/eos/user/w/weberma2/steeringFiles/testHHZAnalyzer.xml") ma.setDetectorModel("CLIC_o3_v14") HHZrootfilename2="HHZStudy_hhz_14344_polp80_3TeV_wO_CLIC_o3_v14.root" #RunStatRootfilename2="hhz _14344_RunEventStatisticsHistogram.root" #TrackPtMin default -1, saveMEInfo=true and Rmax=0.7 ma.setExtraCLIArguments("--MyHHZAnalyzer.saveMEInfo=true --MyHHZAnalyzer.OutputRootFileName={HHZrootfilename}".format(HHZrootfilename=HHZrootfilename2)) res=job.append(ma) if not res['OK']: print res['Message'] exit() job.setOutputData([HHZrootfilename2],"HHZAnalyzer/ILC19-09-04_gcc62_CT/CLIC_o3_v14/VtxRFJVLC10_NJet3/polp80/hhz/14344","CERN-DST-EOS") print jobGroup,meta['ProdID'],"polp80","hhz" job.setName(jobGroup) job.dontPromptMe() job.submit(dirac)
'LCG.Glasgow.uk', 'OSG.CIT.us', 'OSG.BNL.us', 'LCG.Brunel.uk', 'LCG.QMUL.uk' ]) #pay attention that the Zuds200 here is NOT changed job.setBannedSites([ 'LCG.INP3-CC.fr', 'OSG.UConn.us', 'LCG.Cracow.pl', 'OSG.MIT.us', 'LCG.Glasgow.uk', 'OSG.CIT.us', 'OSG.BNL.us', 'LCG.Brunel.uk', 'LCG.QMUL.uk', 'LCG.Oxford.uk' ]) job.setSplitFilesAcrossJobs( "LFN:/ilc/user/w/webermat/slcioFiles/mcparticlesK0L2_uniformCosTheta_70000.slcio", eventsPerFile=70000, eventsPerJob=500) ddsim = DDSim() ddsim.setVersion("ILCSoft-2019-02-20_gcc62") ddsim.setDetectorModel("CLIC_o3_v14") #filelist=[] ddsimoutputname = "ddsim_ILC19-02-20_gcc62_CLIC_o3_v14_K0L2.slcio" ddsim.setOutputFile(ddsimoutputname) res = job.append(ddsim) if not res['OK']: print res['Message'] exit() job.setOutputData([ddsimoutputname], "ddsim/ILC19-02-20_gcc62_CT/CLIC_o3_v14/K0L2_70000evts", "CERN-DST-EOS") print ddsimoutputname job.setName(ddsimoutputname) job.dontPromptMe() job.submit(dirac)
from ILCDIRAC.Interfaces.API.NewInterface.Applications import * jobGroup = "ph10_sim_CLIC_o3_v05_2016_07_04" dirac = DiracILC(True, jobGroup + ".rep") job = UserJob() #all input files to be send here job.setInputSandbox([ "LFN:/ilc/user/w/webermat/160620/photonReReco/lib.tar.gz", "LFN:/ilc/user/w/webermat/160502/photonReReco/PandoraSettingsFast.xml", "LFN:/ilc/user/w/webermat/160502/photonReReco/PandoraLikelihoodData9EBin_CLIC_ILD.xml" ]) job.setOutputSandbox([ "*.log", "*.out", "hnunu_rec_6265_photonrereco_3_0_TeV_ntuple160620_233_25.root" ]) job.setOutputData( ["hnunu_rec_6265_photonrereco_3_0_TeV_ntuple160620_233_25.root"], "160620_" + jobGroup, "CERN-SRM") job.setInputData([ #job.setParametricInputData([ "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_233.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_234.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_235.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_236.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_237.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_238.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_239.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_24.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_240.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_241.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_242.slcio", "/ilc/prod/clic/3tev/h_nunu/ILD/REC/00006265/000/h_nunu_rec_6265_243.slcio",
'LCG.QMUL.uk', 'LCG.Oxford.uk' ]) job.setSplitInputData(filelist, numberOfFilesPerJob=30) ma = Marlin() ma.setVersion('ILCSoft-2018-11-01_gcc62') #ma.setSteeringFile("LFN:/ilc/user/w/webermat/190222/clicReconstruction20181101JetAnalyzer.xml") ma.setSteeringFile( "/afs/cern.ch/user/w/weberma2/work/steeringFiles/clicReconstruction20181101JetAnalyzer.xml" ) #ma.setSteeringFile("/home/weberma2/clicReconstruction20181101JetAnalyzer.xml") ma.setDetectorModel("CLIC_o3_v14") JetRootfilename = "JetStudy_Zuds3000_12957_noOverlay_CLIC_o3_v14_CT_PandoraPFOs.root" ma.setExtraCLIArguments( "--MyJetAnalyzer.OutputRootFileName={Jetrootfilename2}".format( Jetrootfilename2=JetRootfilename)) res = job.append(ma) if not res['OK']: print res['Message'] exit() job.setOutputData([ JetRootfilename ], "ddrecoZuds/CLIC_o3_v14/ILC18-11-01_gcc62_CT/SWC_allRange_allSamples_nPFO_1/Zuds3000_V2/12957", "CERN-DST-EOS") #job.setOutputData([JetRootfilename],"ddrecoZuds/ILC18-11-01_gcc62_CT/CLIC_o3_v14/SWCEndcap_0_85_0_92_redSamples_nPFO_1/Zuds3000/12957","CERN-DST-EOS") #job.setOutputData([JetRootfilename],"ddrecoZuds/ILC18-11-01_gcc62_CT/CLIC_o3_v14/SWCEndcap_0_85_0_92_allSamples_Erat_0_99/Zuds3000/12957","CERN-DST-EOS") #job.setOutputData([JetRootfilename],"ddrecoZuds/ILC18-11-01_gcc62_CT/CLIC_o3_v14/SWCEndcap_0_85_0_92_redSamples_Erat_0_99/Zuds3000/12957","CERN-DST-EOS") print jobGroup job.setName(jobGroup) job.dontPromptMe() job.submit(dirac)
def SubmitCLICJob(jobInfo): ######################### # Unpack job information ######################### eventType = jobInfo['eventType'] energy = jobInfo['energy'] detectorModel = jobInfo['detectorModel'] reconstructionVariant = jobInfo['reconstructionVariant'] clicFile = jobInfo['clicFile'] analysisTag = jobInfo['analysisTag'] jobDescription = jobInfo['jobDescription'] steeringTemplateContent = jobInfo['steeringTemplateContent'] prodID = jobInfo['prodID'] idx = jobInfo['idx'] numberOfFiles = jobInfo['numberOfFiles'] gearFileLocal = jobInfo['gearFileLocal'] diracInstance = jobInfo['diracInstance'] marlinVersion = jobInfo['marlinVersion'] pandoraPFOsToUse = jobInfo['pandoraPFOsToUse'] shortPandoraPFOsToUse = jobInfo['shortPandoraPFOsToUse'] jetClusteringMode = jobInfo['jetClusteringMode'] nJetsToCluster = jobInfo['nJetsToCluster'] jetClusteringAlgorithm = jobInfo['jetClusteringAlgorithm'] jetClusteringRadius = jobInfo['jetClusteringRadius'] jetAlgorithmConfigString = jobInfo['jetAlgorithmConfigString'] print 'Checking CLIC sample ' + eventType + ' ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. Slcio file ' + clicFile + '.' clicFileNoPath = os.path.basename(clicFile) inputSandbox = [ 'LFN:/ilc/user/s/sgreen/AnalysisProcessorTarBall/JetsToPFOProcessor.tar.gz', 'LFN:/ilc/user/s/sgreen/AnalysisProcessorTarBall/vtxprob.tar.gz' ] ######################### # Modify Template ######################### steeringTemplate = steeringTemplateContent outputPath = '/' + jobDescription + '/MarlinJobs/Detector_Model_' + detectorModel + '/Reconstruction_Variant_' + reconstructionVariant + '/' + eventType + '_ProdID_' + str( prodID) + '/' + str(energy) + 'GeV/' + jetAlgorithmConfigString rootFileName = 'ProdID_' + str(prodID) + '_' + eventType + '_' + str( energy) + 'GeV_Analysis_' + str(analysisTag) + '_Number_' + str( idx + 1) + '_Of_' + str(numberOfFiles) + '.root' outputFiles = [] outputFiles.append(rootFileName) steeringTemplate = re.sub('MakeNtupleRootFileName', rootFileName, steeringTemplate) steeringTemplate = re.sub('GearFile', gearFileLocal, steeringTemplate) steeringTemplate = re.sub('InputSlcioFile', clicFileNoPath, steeringTemplate) steeringTemplate = re.sub('PandoraPFOsToUse', pandoraPFOsToUse, steeringTemplate) steeringTemplate = re.sub('JetClusteringMode', jetClusteringMode, steeringTemplate) steeringTemplate = re.sub('NJetsToCluster', str(nJetsToCluster), steeringTemplate) steeringTemplate = re.sub('JetClusteringAlgorithm', jetClusteringAlgorithm, steeringTemplate) steeringTemplate = re.sub('JetClusteringRadius', str(format(jetClusteringRadius, '.2f')), steeringTemplate) # steeringTemplate = re.sub('JetAlgorithmConfig',jetAlgorithmConfigString,steeringTemplate) ######################### # Write Template File ######################### marlinSteeringFilename = 'MarlinSteering_' + str( idx + 1) + '_' + eventType + '_' + jetAlgorithmConfigString + '.steer' with open(marlinSteeringFilename, 'w') as SteeringFile: SteeringFile.write(steeringTemplate) ######################### # Check output doesn't exist already ######################### skipJob = False for outputFile in outputFiles: lfn = '/ilc/user/s/sgreen' + outputPath + '/' + outputFile if doesFileExist(lfn): skipJob = True if skipJob: return print 'Submitting ' + eventType + ' ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. CLIC file ' + clicFile + '.' ######################### # Setup Marlin Application ######################### ma = Marlin() ma.setVersion(marlinVersion) ma.setSteeringFile(marlinSteeringFilename) ma.setGearFile(gearFileLocal) ma.setInputFile('lfn:' + clicFile) ma.setProcessorsToUse( ['libMarlinFastJet.so', 'libJetsToPFOs.so', 'libLCFIPlus.so']) ######################### # Submit Job ######################### jobDetailedName = jobDescription + '_' + eventType + '_' + str( energy) + 'GeV_Tag' + str(analysisTag) + '_ProdID_' + str( prodID) + '_Number_' + str(idx + 1) + '_Of_' + str(numberOfFiles) job = UserJob() job.setJobGroup(jobDescription) job.setInputSandbox(inputSandbox) # Local files job.setOutputSandbox(['*.log', '*.steer', '*.xml']) job.setOutputData(outputFiles, OutputPath=outputPath) # On grid job.setName(jobDetailedName) job.setBannedSites([ 'LCG.IN2P3-CC.fr', 'LCG.IN2P3-IRES.fr', 'LCG.KEK.jp', 'OSG.PNNL.us', 'OSG.CIT.us', 'LCG.LAPP.fr', 'LCG.UKI-LT2-IC-HEP.uk', 'LCG.Tau.il', 'LCG.Weizmann.il', 'OSG.BNL.us' ]) job.setCPUTime(21600) # 6 hour, should be excessive job.dontPromptMe() # job.setDestination('LCG.CERN.ch') res = job.append(ma) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) # Tidy Up os.system('rm ' + marlinSteeringFilename) print 'Job submitted to grid.'
ma.setInputFile('lfn:' + slcioFile) outputFiles = [] outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_Default.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '.slcio') if eventType == 'Z_uds': outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_Muon.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPhoton.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPhotonNK0L.root') outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPFA.root') job = UserJob() job.setJobGroup(jobDescription) job.setInputSandbox(pandoraSettingsFilesLocal.values()) # Local files job.setOutputSandbox(['*.log','*.gear','*.mac','*.steer','*.xml']) job.setOutputData(outputFiles,OutputPath='/' + jobDescription + '/MarlinJobs/Detector_Model_' + str(mokkaJobNumber) + '/Reco_Stage_' + str(recoStageNumber) + '/' + eventType + '/' + energy + 'GeV') # On grid job.setName(jobDescription + '_Detector_Model_' + str(mokkaJobNumber) + '_Reco_' + str(recoStageNumber)) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp']) job.dontPromptMe() res = job.append(ma) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) os.system('rm *.cfg') # Tidy Up os.system('rm MarlinSteering.steer') os.system('rm ' + gearFileLocal) for key, value in pandoraSettingsFilesLocal.iteritems():
arguements = [ 'RunFile.txt', 'PhotonEnergyResolution_' + str(energy) + 'GeV_RecoVar' + str(recoVar) + '.root' ] outputFiles = arguements[1:] genericApplication = GenericApplication() genericApplication.setScript('PhotonResolution.exe') genericApplication.setArguments(' '.join(arguements)) genericApplication.setDependency({'Marlin':'ILCSoft-01-17-07'}) job = UserJob() job.setJobGroup(JobIdentificationString) job.setInputSandbox(['LFN:/ilc/user/s/sgreen/PhotonEnergyResolutionTarBall/lib.tar.gz', 'RunFile.txt']) job.setInputData(allRootFilesToUse) job.setOutputData(outputFiles,OutputPath='/OptimisationStudies/PhotonEnergyResolution/SiECalLayers/Reco_Stage_' + str(recoVar) + '/' + eventType + '/' + str(energy) + 'GeV') job.setName(JobIdentificationString) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp','OSG.CIT.us','OSG.PNNL.us']) job.dontPromptMe() res = job.append(genericApplication) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) # Tidy Up os.system('rm *.cfg') os.system('rm RunFile.txt')
def SubmitMokkaJob(jobInfo): ######################### # Unpack job information ######################### jobDescription = jobInfo['jobDescription'] eventsPerFile = jobInfo['eventsPerFile'] eventsPerJob = jobInfo['eventsPerJob'] stdhepFormat = jobInfo['stdhepFormat'] stdhepFile = jobInfo['stdhepFile'] eventType = jobInfo['eventType'] energy = jobInfo['energy'] detectorModel = jobInfo['detectorModel'] mokkaSteeringFile = jobInfo['mokkaSteeringFile'] diracInstance = jobInfo['diracInstance'] idx = jobInfo['idx'] base = open(mokkaSteeringFile,'r') mokkaSteeringTemplateContent = base.read() base.close() matchObj = re.match(stdhepFormat, os.path.basename(stdhepFile), re.M|re.I) # "whizard_ee_nunuww_nunuqqqq_1400GeV.100.stdhep" generatorSerialNumber = '' if matchObj: jobSet = int(matchObj.group(1)) runNumber = int(matchObj.group(2)) generatorSerialNumber = str((1000*jobSet)+runNumber) else: print 'Wrong stdhep format. Please check.' return for startEvent in xrange(0, eventsPerFile, eventsPerJob): print 'Checking ' + eventType + ', ' + str(energy) + 'GeV jobs. Detector model ' + detectorModel + '. Generator serial number ' + str(generatorSerialNumber) + '. Start event number ' + str(startEvent) + '.' description = eventType + '_' + str(energy) + 'GeV_GeneratorSerialNumber_' + str(generatorSerialNumber) outputFile = 'MokkaSim_Detector_Model_' + detectorModel + '_' + description + '_' + str(eventsPerJob) + '_' + str(startEvent) + '.slcio' outputPath = '/' + jobDescription + '/MokkaJobs/Detector_Model_' + detectorModel + '/' + eventType + '/' + str(energy) + 'GeV' ######################### # Check if output exists ######################### lfn = '/ilc/user/s/sgreen/' + outputPath + '/' + outputFile if DoesFileExist(lfn): print 'Output file already exists, skipping job.' continue ######################### # Edit Mokka Template ######################### mokkaSteeringContent = mokkaSteeringTemplateContent mokkaSteeringContent = re.sub('LcioOutputFile',outputFile,mokkaSteeringContent) mokkaSteeringContent = re.sub('StartEventNumber',str(startEvent),mokkaSteeringContent) mokkaSteeringFilename = 'MokkaSteering_' + eventType + '_' + str(idx) + '_' + str(startEvent) + '.steer' with open(mokkaSteeringFilename ,'w') as steeringFile: steeringFile.write(mokkaSteeringContent) ######################### # Mokka Application ######################### MokkaApplication = Mokka() MokkaApplication.setVersion('0706P08') # Version info for offical CLIC productions as of 8-6-16 MokkaApplication.setSteeringFile(mokkaSteeringFilename) MokkaApplication.setNumberOfEvents(eventsPerJob) MokkaApplication.setStartFrom(startEvent) MokkaApplication.setDbSlice('LFN:/ilc/user/s/sgreen/PhysicsAnalysis/MokkaJobs/CLICMokkaDatabase/CLICMokkaDB.sql') ######################### # User Job Settings ######################### job = UserJob() job.setJobGroup(jobDescription) job.setOutputSandbox( ["*.log", "*.gear", "*.mac", "*.steer", "*.xml" ] ) job.setOutputData(outputFile, OutputPath=outputPath) job.setInputData(stdhepFile) jobDetailedName = jobDescription + '_' + detectorModel + '_' + eventType + '_' + str(energy) + 'GeV_GeneratorSerialNumber_' + str(generatorSerialNumber) + '_' + str(eventsPerJob) + '_' + str(startEvent) job.setName(jobDetailedName) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp','OSG.PNNL.us','OSG.CIT.us','LCG.LAPP.fr','LCG.UKI-LT2-IC-HEP.uk','LCG.Tau.il','LCG.Weizmann.il','OSG.BNL.us', 'OSG.MIT.us']) # job.setCPUTime(43200) # Mokka jobs take a long time so set no limit. res = job.append(MokkaApplication) if not res['OK']: print res['Message'] exit() print 'Submitting ' + eventType + ', ' + str(energy) + 'GeV jobs. Detector model ' + detectorModel + '. Generator serial number ' + str(generatorSerialNumber) + '. Start event number ' + str(startEvent) + '.' job.dontPromptMe() job.submit(diracInstance) os.system('rm ' + mokkaSteeringFilename) print 'Job submitted to grid.'
ma.setVersion('ILCSoft-01-17-08_gcc48') ma.setSteeringFile('MarlinSteering.steer') ma.setGearFile(gearFileLocal) ma.setInputFile('lfn:' + slcioFile) ma.setProcessorsToUse(['libSelectionProcessor.so','libMarlinFastJet.so']) ######################### # Submit Job ######################### jobDetailedName = jobDescription + '_DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str(energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str(numberOfEventsInFile) + '_' + str(startEventNumber) job = UserJob() job.setJobGroup(jobDescription) job.setInputSandbox(inputSandbox) # Local files job.setOutputSandbox(['*.log','*.gear','*.mac','*.steer','*.xml']) job.setOutputData(outputFiles,OutputPath=outputPath) # On grid job.setName(jobDetailedName) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp','OSG.PNNL.us','OSG.CIT.us','LCG.LAPP.fr']) job.dontPromptMe() res = job.append(ma) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) #sys.exit() # Tidy Up os.system('rm MarlinSteering.steer') os.system('rm ' + gearFileLocal)
]) ma = Marlin() ma.setVersion('ILCSoft-2018-05-18_gcc62') #ma.setInputFile("LFN:/ilc/prod/clic/3tev/bb/CLIC_o3_v14/SIM/00009495/000/bb_sim_%s_%s.slcio"%(str(input_ind),(str)(ind))) ma.setInputFile( "LFN:/ilc/user/w/webermat/ddsimstdhep/ILC18-03-02_CLIC_o3_v14/Zuds3000_split125/ddsim_ILC18-03-02_Zuds3000_CLIC_o3_v14_0%s_%s.slcio" % (str(input_ind), (str)(ind))) ma.setSteeringFile( "/afs/cern.ch/work/w/weberma2/steeringFiles/testCalibPerformance_180514_CLIC_o3_v14_PhLikelihood12Ebin_TauFinder_SWC_CLIC.xml" ) ma.setDetectorModel("CLIC_o3_v14") #taurootfilename2="TauSignalStatistics_Zuds3000_CT_CLIC_o3_v14_0%s_%s.root"%(str(input_ind),(str)(ind)) #ma.setExtraCLIArguments("--MyTauFinder.FileName_Signal={taurootfilename}".format(taurootfilename=taurootfilename2)) #lcoutputreco ="ddsmp_ILC180518_gcc62_bb_9495_CLIC_o3_v14_SWC_CLIC_DR200_0%s_%s.slcio"%(str(input_ind),(str)(ind)) lcoutputreco = "ddsmp_ILC180518_gcc62_Zuds3000_CLIC_o3_v14_SWC_CLIC_DR200_0%s_%s.slcio" % ( str(input_ind), (str)(ind)) ma.setOutputFile(lcoutputreco) res = job.append(ma) if not res['OK']: print res['Message'] exit() #job.setOutputData([lcoutputreco],"ddsimrecostdhep/ILC17-05-18_gcc62_CT_CLIC_o3_v14_SWC/bb_SIM_9495_D0_Z0_DR200","CERN-DST-EOS") job.setOutputData([ lcoutputreco ], "ddsimrecostdhep/ILC18-05-18_gcc62_CT_CLIC_o3_v14_SWC/Zuds3000_D0_Z0_DR200", "CERN-DST-EOS") print lcoutputreco job.setName(lcoutputreco) job.dontPromptMe() job.submit(dirac)
'LCG.QMUL.uk', 'LCG.Oxford.uk' ]) ma = Marlin() ma.setVersion('ILCSoft-2018-11-01_gcc62') ma.setInputFile( "LFN:/ilc/user/w/webermat/ddsim/ILC18-10-11_gcc62_CLIC_o3_v14/pim1500_split100evts/ddsim_ILC18-10-11_gcc62_CLIC_o3_v14_pim1500_0%s.slcio" % ((str)(ind))) #ma.setSteeringFile("/afs/cern.ch/work/w/weberma2/steeringFiles/testCalibPerformance_171221_CLIC_o3_v14_PhLikelihood12Ebin_TauFinder_SWC_CLIC_n_K0L.xml") ma.setSteeringFile( "/afs/cern.ch/work/w/weberma2/steeringFiles/clicReconstruction.xml") ma.setDetectorModel("CLIC_o3_v14") #taurootfilename2="TauSignalStatistics_pim1500__CT_CLIC_o3_v13_0%s.root"%((str)(ind)) #ma.setExtraCLIArguments("--MyTauFinder.FileName_Signal={taurootfilename}".format(taurootfilename=taurootfilename2)) lcoutputreco = "pim1500_ILC18-11-01_gcc62_CLIC_o3_v14__0%s.slcio" % ( (str)(ind)) ma.setOutputFile(lcoutputreco) res = job.append(ma) if not res['OK']: print res['Message'] exit() #job.setOutputData([lcoutputreco],"ddsimrecovalidation/ILC18-10-11_gcc62_CT_CLIC_o3_v14_SWC_CLIC_n_K0L_newTune/pim1500_500_pim15002EBin","CERN-DST-EOS") job.setOutputData( [lcoutputreco], "ddsimrecovalidation/ILC18-11-01_gcc62_CLIC_o3_v14/pim1500", "CERN-DST-EOS") print lcoutputreco job.setName(lcoutputreco) job.dontPromptMe() job.submit(dirac)
if not result['OK']: print result['Message'] sys.exit(2) elif marlinVer or slicPandoraVer: defaultOutputFile = outputFile + '.slcio' if not defaultOutputFile in outputData: outputData.append(defaultOutputFile) job.setOutputSandbox(outputSandbox) job.setInputSandbox(inputSandbox) if inputSlcios: job.setInputData(inputSlcios) elif inputFile: job.setInputData([inputFile]) if storeOutput == True: job.setOutputData(outputData, storagePath, storageElement) job.setCPUTime(cpuLimit) job.setSystemConfig(systemConfig) job.setName(detector + "_" + process + "_" + jobTitle) job.setJobGroup(detector + "_" + process + "_" + jobTitle) if destination: job.setDestination(destination) else: job.setBannedSites(bannedSites) if debug: print '' print 'Jobs to submit:' nTotal = len(lfnlist) * nJobs / mergeSlcioFiles if inputFile: print ' Number of input files:', len(lfnlist)
mokkaSteeringTemplate = setOutputFile(mokkaSteeringTemplate, outputFile) mokkaSteeringTemplate = setStartNumber(mokkaSteeringTemplate, startEvent) with open("MokkaSteering.steer", "w") as steeringFile: steeringFile.write(mokkaSteeringTemplate) MokkaApplication = Mokka() MokkaApplication.setVersion(getMokkaVersion(calibConfigFile)) MokkaApplication.setSteeringFile("MokkaSteering.steer") MokkaApplication.setNumberOfEvents(eventsPerJob) MokkaApplication.setStartFrom(startEvent) job = UserJob() job.setJobGroup("HighEnergyPhotons") job.setOutputSandbox(["*.log", "*.gear", "*.mac", "*.steer", "*.xml"]) job.setOutputData(outputFile, OutputPath=outputPath) job.setInputData(hepevtFile) job.setName("HighEnergyPhotons_Detector_Model_" + str(detectorModelNumber)) job.setBannedSites(["LCG.IN2P3-CC.fr", "LCG.IN2P3-IRES.fr", "LCG.KEK.jp"]) res = job.append(MokkaApplication) if not res["OK"]: print res["Message"] exit() job.dontPromptMe() job.submit(diracInstance) os.system("rm *.cfg") # Tidy Up os.system("rm MokkaSteering.steer")
def SubmitJob(jobInfo): ######################### # Unpack job information ######################### eventType = jobInfo['eventType'] energy = jobInfo['energy'] detectorModel = jobInfo['detectorModel'] reconstructionVariant = jobInfo['reconstructionVariant'] slcioFile = jobInfo['slcioFile'] pandoraSettingsFileLocal = jobInfo['pandoraSettingsFileLocal'] slcioFormat = jobInfo['slcioFormat'] steeringTemplateContent = jobInfo['steeringTemplateContent'] jobDescription = jobInfo['jobDescription'] idx = jobInfo['idx'] gearFileLocal = jobInfo['gearFileLocal'] diracInstance = jobInfo['diracInstance'] ggHadBackground = jobInfo['ggHadBackground'] eventsPerFile = jobInfo['eventsPerFile'] slcioFileNoPath = os.path.basename(slcioFile) inputSandbox = [] inputSandbox.append(pandoraSettingsFileLocal) ######################### # Get info from file name ######################### matchObj = re.match(slcioFormat, os.path.basename(slcioFile), re.M|re.I) # MokkaSim_Detector_Model_clic_ild_cdr_ee_nunuww_nunuqqqq_1400GeV_GeneratorSerialNumber_100_100_0.slcio generatorSerialNumber = 0 numberOfEventsInFile = 0 startEventNumber = 0 # In generator level, not reconstruction. Start event for all reconstruction is 0. if matchObj: generatorSerialNumber = matchObj.group(1) numberOfEventsInFile = matchObj.group(2) startEventNumber = matchObj.group(3) else: print 'Wrong stdhep format. Please check.' return ######################### # Modify Template ######################### steeringTemplate = steeringTemplateContent outputPath = '/' + jobDescription + '/MarlinJobs/Detector_Model_' + detectorModel + '/Reconstruction_Variant_' + reconstructionVariant + '/' + eventType + '/' + str(energy) + 'GeV' recFileName = 'DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str(energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str(numberOfEventsInFile) + '_' + str(startEventNumber) + '_REC.slcio' dstFileName = 'DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str(energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str(numberOfEventsInFile) + '_' + str(startEventNumber) + '_DST.slcio' outputFiles = [] outputFiles.append(recFileName) outputFiles.append(dstFileName) steeringTemplate = re.sub('OutputRecFile',recFileName,steeringTemplate) steeringTemplate = re.sub('OutputDstFile',dstFileName,steeringTemplate) steeringTemplate = re.sub('GearFile',gearFileLocal,steeringTemplate) steeringTemplate = re.sub('InputSlcioFile',slcioFileNoPath,steeringTemplate) steeringTemplate = re.sub('PandoraSettingsFile',pandoraSettingsFileLocal,steeringTemplate) ######################### # Check output doesn't exist already ######################### print 'Checking ' + eventType + ' ' + str(energy) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. SLCIO file ' + slcioFile + '.' skipJob = False for outputFile in outputFiles: lfn = '/ilc/user/s/sgreen' + outputPath + '/' + outputFile if doesFileExist(lfn): skipJob = True if skipJob: return print 'Submitting ' + eventType + ' ' + str(energy) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. SLCIO file ' + slcioFile + '.' ######################### # Write Template File ######################### marlinSteeringFilename = 'MarlinSteering_' + str(idx+1) + '_' + eventType + '.steer' with open(marlinSteeringFilename ,"w") as SteeringFile: SteeringFile.write(steeringTemplate) ######################### # Setup Marlin Application ######################### ma = Marlin() ma.setVersion('v0111Prod') ma.setSteeringFile(marlinSteeringFilename) ma.setGearFile(gearFileLocal) ma.setInputFile('lfn:' + slcioFile) ######################### # Setup Overlay Information ######################### overlay = OverlayInput() if ggHadBackground: overlay.setMachine('clic_cdr') overlay.setBXOverlay(60) overlay.setDetectorModel('CLIC_ILD_CDR') overlay.setBackgroundType('gghad') overlay.setNbSigEvtsPerJob((int)(eventsPerFile)) if (int)(energy) == 1400: overlay.setEnergy(1400.0) overlay.setGGToHadInt(1.3) # When running at 1.4TeV elif (int)(energy) == 3000: overlay.setEnergy(3000.0) overlay.setGGToHadInt(3.2) # When running at 3TeV else: print 'Unknown number of GGHadToInts to use for this energy. Exiting job subission.' return ######################### # Submit Job ######################### jobDetailedName = jobDescription + '_DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str(energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str(numberOfEventsInFile) + '_' + str(startEventNumber) job = UserJob() job.setJobGroup(jobDescription) job.setInputSandbox(inputSandbox) # Local files job.setOutputSandbox(['*.log','*.gear','*.mac','*.steer','*.xml']) job.setOutputData(outputFiles,OutputPath=outputPath) # On grid job.setName(jobDetailedName) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp','OSG.PNNL.us','OSG.CIT.us','LCG.LAPP.fr','LCG.UKI-LT2-IC-HEP.uk','LCG.Tau.il','LCG.Weizmann.il','OSG.BNL.us']) job.setCPUTime(21600) # 6 hour, should be excessive job.dontPromptMe() if ggHadBackground: res = job.append(overlay) res = job.append(ma) if not res['OK']: print res['Message'] return job.submit(diracInstance) # Tidy Up os.system('rm ' + marlinSteeringFilename) print 'Job submitted to grid.'
# outputFiles = [] # outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_Default.root') #outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '.slcio') # Not saving the output collections to speed up processing. # if eventType == 'Z_uds': # outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_Muon.root') # outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPhoton.root') # outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPhotonNK0L.root') # outputFiles.append('MarlinReco_' + slcioFileNoPath[:-6] + '_PerfectPFA.root') job = UserJob() job.setJobGroup('TestingHadd') #job.setInputSandbox(['hadd.C']) # Local files # job.setOutputSandbox(['*.log','*.gear','*.mac','*.steer','*.xml']) job.setInputData(arguements[1:]) job.setOutputData('HaddTest.root',OutputPath='/Testing') # On grid job.setName('TestingHadd') job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp']) job.dontPromptMe() job.setCPUTime(1000) res = job.append(genericApplication) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) os.system('rm *.cfg') # Tidy Up #os.system('rm MarlinSteering.steer') #os.system('rm ' + gearFileLocal)
'AnalysePerformance_PandoraSettings' + pandoraSettings + '_DetectorModel_' + str(detModel) + '_Reco_Stage_' + str(recoVar) + '_' + eventType + '_' + str(energy) + 'GeV.root', 'AnalysePerformance_PandoraSettings' + pandoraSettings + '_DetectorModel_' + str(detModel) + '_Reco_Stage_' + str(recoVar) + '_' + eventType + '_' + str(energy) + 'GeV.txt' ] outputFiles = arguements[1:] genericApplication = GenericApplication() genericApplication.setScript('AnalysePerformance') genericApplication.setArguments(' '.join(arguements)) genericApplication.setDependency({'ROOT':'5.34'}) job = UserJob() job.setJobGroup(JobIdentificationString) job.setInputSandbox(['LFN:/ilc/user/s/sgreen/AnalysePerformanceTarBall/lib.tar.gz', 'runfile.txt']) job.setInputData(rootFilesToProcess) job.setOutputData(outputFiles,OutputPath='/OptimisationStudies/AnalysePerformance/Detector_Model_' + str(detModel) + '/Reco_Stage_' + str(recoVar) + '/' + eventType + '/' + str(energy) + 'GeV') job.setName(JobIdentificationString) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp','OSG.CIT.us']) job.dontPromptMe() #job.setCPUTime(1000) res = job.append(genericApplication) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) os.system('rm *.cfg') os.system('rm runfile.txt') # Tidy Up
if not result['OK']: print result['Message'] sys.exit(2) elif marlinVer or slicPandoraVer: defaultOutputFile = outputFile + '.slcio' if not defaultOutputFile in outputData: outputData.append( defaultOutputFile ) job.setOutputSandbox ( outputSandbox ) job.setInputSandbox ( inputSandbox ) if inputSlcios: job.setInputData( inputSlcios ) elif inputFile: job.setInputData( [ inputFile ] ) if storeOutput == True: job.setOutputData ( outputData, storagePath, storageElement ) job.setCPUTime( cpuLimit ) job.setSystemConfig ( systemConfig ) job.setName ( detector+"_"+process+"_"+jobTitle ) job.setJobGroup( detector+"_"+process+"_"+jobTitle ) if destination: job.setDestination( destination ) else: job.setBannedSites( bannedSites ) if debug: print '' print 'Jobs to submit:' nTotal = len(lfnlist)*nJobs/mergeSlcioFiles if inputFile: print ' Number of input files:', len(lfnlist)
def SubmitMokkaJob(jobInfo): ######################### # Unpack job information ######################### jobDescription = jobInfo['jobDescription'] eventsPerFile = jobInfo['eventsPerFile'] eventsPerJob = jobInfo['eventsPerJob'] stdhepFormat = jobInfo['stdhepFormat'] stdhepFile = jobInfo['stdhepFile'] eventType = jobInfo['eventType'] energy = jobInfo['energy'] detectorModel = jobInfo['detectorModel'] mokkaSteeringFile = jobInfo['mokkaSteeringFile'] diracInstance = jobInfo['diracInstance'] idx = jobInfo['idx'] base = open(mokkaSteeringFile, 'r') mokkaSteeringTemplateContent = base.read() base.close() matchObj = re.match( stdhepFormat, os.path.basename(stdhepFile), re.M | re.I) # "whizard_ee_nunuww_nunuqqqq_1400GeV.100.stdhep" generatorSerialNumber = '' if matchObj: jobSet = int(matchObj.group(1)) runNumber = int(matchObj.group(2)) generatorSerialNumber = str((1000 * jobSet) + runNumber) else: print 'Wrong stdhep format. Please check.' return for startEvent in xrange(0, eventsPerFile, eventsPerJob): print 'Checking ' + eventType + ', ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Generator serial number ' + str( generatorSerialNumber) + '. Start event number ' + str( startEvent) + '.' description = eventType + '_' + str( energy) + 'GeV_GeneratorSerialNumber_' + str(generatorSerialNumber) outputFile = 'MokkaSim_Detector_Model_' + detectorModel + '_' + description + '_' + str( eventsPerJob) + '_' + str(startEvent) + '.slcio' outputPath = '/' + jobDescription + '/MokkaJobs/Detector_Model_' + detectorModel + '/' + eventType + '/' + str( energy) + 'GeV' ######################### # Check if output exists ######################### lfn = '/ilc/user/s/sgreen/' + outputPath + '/' + outputFile if DoesFileExist(lfn): print 'Output file already exists, skipping job.' continue ######################### # Edit Mokka Template ######################### mokkaSteeringContent = mokkaSteeringTemplateContent mokkaSteeringContent = re.sub('LcioOutputFile', outputFile, mokkaSteeringContent) mokkaSteeringContent = re.sub('StartEventNumber', str(startEvent), mokkaSteeringContent) mokkaSteeringFilename = 'MokkaSteering_' + eventType + '_' + str( idx) + '_' + str(startEvent) + '.steer' with open(mokkaSteeringFilename, 'w') as steeringFile: steeringFile.write(mokkaSteeringContent) ######################### # Mokka Application ######################### MokkaApplication = Mokka() MokkaApplication.setVersion( '0706P08' ) # Version info for offical CLIC productions as of 8-6-16 MokkaApplication.setSteeringFile(mokkaSteeringFilename) MokkaApplication.setNumberOfEvents(eventsPerJob) MokkaApplication.setStartFrom(startEvent) MokkaApplication.setDbSlice( 'LFN:/ilc/user/s/sgreen/PhysicsAnalysis/MokkaJobs/CLICMokkaDatabase/CLICMokkaDB.sql' ) ######################### # User Job Settings ######################### job = UserJob() job.setJobGroup(jobDescription) job.setOutputSandbox(["*.log", "*.gear", "*.mac", "*.steer", "*.xml"]) job.setOutputData(outputFile, OutputPath=outputPath) job.setInputData(stdhepFile) jobDetailedName = jobDescription + '_' + detectorModel + '_' + eventType + '_' + str( energy) + 'GeV_GeneratorSerialNumber_' + str( generatorSerialNumber) + '_' + str(eventsPerJob) + '_' + str( startEvent) job.setName(jobDetailedName) job.setBannedSites([ 'LCG.IN2P3-CC.fr', 'LCG.IN2P3-IRES.fr', 'LCG.KEK.jp', 'OSG.PNNL.us', 'OSG.CIT.us', 'LCG.LAPP.fr', 'LCG.UKI-LT2-IC-HEP.uk', 'LCG.Tau.il', 'LCG.Weizmann.il', 'OSG.BNL.us', 'OSG.MIT.us' ]) # job.setCPUTime(43200) # Mokka jobs take a long time so set no limit. res = job.append(MokkaApplication) if not res['OK']: print res['Message'] exit() print 'Submitting ' + eventType + ', ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Generator serial number ' + str( generatorSerialNumber) + '. Start event number ' + str( startEvent) + '.' job.dontPromptMe() job.submit(diracInstance) os.system('rm ' + mokkaSteeringFilename) print 'Job submitted to grid.'
arguements = [ str(recoVar), 'RunFile.txt', 'EnergyResolution_PandoraSettings' + pandoraSettings + '_DetectorModel_' + str(detModel) + '_Reco_Stage_' + str(recoVar) + '_' + eventType + '.root' ] outputFiles = arguements[2:] genericApplication = GenericApplication() genericApplication.setScript('SingleParticleResolution.exe') genericApplication.setArguments(' '.join(arguements)) genericApplication.setDependency({'Marlin':'ILCSoft-01-17-07'}) job = UserJob() job.setJobGroup(JobIdentificationString) job.setInputSandbox(['LFN:/ilc/user/s/sgreen/EnergyResolutionTarBall/lib.tar.gz', 'RunFile.txt']) job.setInputData(allRootFilesToUse) job.setOutputData(outputFiles,OutputPath='/OptimisationStudies/EnergyResolution/Detector_Model_' + str(detModel) + '/Reco_Stage_' + str(recoVar) + '/' + eventType) job.setName(JobIdentificationString) job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.IN2P3-IRES.fr','LCG.KEK.jp','OSG.CIT.us']) job.dontPromptMe() res = job.append(genericApplication) if not res['OK']: print res['Message'] exit() job.submit(diracInstance) # Tidy Up os.system('rm *.cfg') os.system('rm RunFile.txt')
def SubmitJob(jobInfo): ######################### # Unpack job information ######################### eventType = jobInfo['eventType'] energy = jobInfo['energy'] detectorModel = jobInfo['detectorModel'] reconstructionVariant = jobInfo['reconstructionVariant'] slcioFile = jobInfo['slcioFile'] pandoraSettingsFileLocal = jobInfo['pandoraSettingsFileLocal'] slcioFormat = jobInfo['slcioFormat'] steeringTemplateContent = jobInfo['steeringTemplateContent'] jobDescription = jobInfo['jobDescription'] idx = jobInfo['idx'] gearFileLocal = jobInfo['gearFileLocal'] diracInstance = jobInfo['diracInstance'] ggHadBackground = jobInfo['ggHadBackground'] eventsPerFile = jobInfo['eventsPerFile'] slcioFileNoPath = os.path.basename(slcioFile) inputSandbox = [] inputSandbox.append(pandoraSettingsFileLocal) ######################### # Get info from file name ######################### matchObj = re.match( slcioFormat, os.path.basename(slcioFile), re.M | re.I ) # MokkaSim_Detector_Model_clic_ild_cdr_ee_nunuww_nunuqqqq_1400GeV_GeneratorSerialNumber_100_100_0.slcio generatorSerialNumber = 0 numberOfEventsInFile = 0 startEventNumber = 0 # In generator level, not reconstruction. Start event for all reconstruction is 0. if matchObj: generatorSerialNumber = matchObj.group(1) numberOfEventsInFile = matchObj.group(2) startEventNumber = matchObj.group(3) else: print 'Wrong stdhep format. Please check.' return ######################### # Modify Template ######################### steeringTemplate = steeringTemplateContent outputPath = '/' + jobDescription + '/MarlinJobs/Detector_Model_' + detectorModel + '/Reconstruction_Variant_' + reconstructionVariant + '/' + eventType + '/' + str( energy) + 'GeV' recFileName = 'DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str( energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str( numberOfEventsInFile) + '_' + str(startEventNumber) + '_REC.slcio' dstFileName = 'DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str( energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str( numberOfEventsInFile) + '_' + str(startEventNumber) + '_DST.slcio' outputFiles = [] outputFiles.append(recFileName) outputFiles.append(dstFileName) steeringTemplate = re.sub('OutputRecFile', recFileName, steeringTemplate) steeringTemplate = re.sub('OutputDstFile', dstFileName, steeringTemplate) steeringTemplate = re.sub('GearFile', gearFileLocal, steeringTemplate) steeringTemplate = re.sub('InputSlcioFile', slcioFileNoPath, steeringTemplate) steeringTemplate = re.sub('PandoraSettingsFile', pandoraSettingsFileLocal, steeringTemplate) ######################### # Check output doesn't exist already ######################### print 'Checking ' + eventType + ' ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. SLCIO file ' + slcioFile + '.' skipJob = False for outputFile in outputFiles: lfn = '/ilc/user/s/sgreen' + outputPath + '/' + outputFile if doesFileExist(lfn): skipJob = True if skipJob: return print 'Submitting ' + eventType + ' ' + str( energy ) + 'GeV jobs. Detector model ' + detectorModel + '. Reconstruction stage ' + reconstructionVariant + '. SLCIO file ' + slcioFile + '.' ######################### # Write Template File ######################### marlinSteeringFilename = 'MarlinSteering_' + str( idx + 1) + '_' + eventType + '.steer' with open(marlinSteeringFilename, "w") as SteeringFile: SteeringFile.write(steeringTemplate) ######################### # Setup Marlin Application ######################### ma = Marlin() ma.setVersion('v0111Prod') ma.setSteeringFile(marlinSteeringFilename) ma.setGearFile(gearFileLocal) ma.setInputFile('lfn:' + slcioFile) ######################### # Setup Overlay Information ######################### overlay = OverlayInput() if ggHadBackground: overlay.setMachine('clic_cdr') overlay.setBXOverlay(60) overlay.setDetectorModel('CLIC_ILD_CDR') overlay.setBackgroundType('gghad') overlay.setNbSigEvtsPerJob((int)(eventsPerFile)) if (int)(energy) == 1400: overlay.setEnergy(1400.0) overlay.setGGToHadInt(1.3) # When running at 1.4TeV elif (int)(energy) == 3000: overlay.setEnergy(3000.0) overlay.setGGToHadInt(3.2) # When running at 3TeV else: print 'Unknown number of GGHadToInts to use for this energy. Exiting job subission.' return ######################### # Submit Job ######################### jobDetailedName = jobDescription + '_DetModel_' + detectorModel + '_RecoVar_' + reconstructionVariant + '_' + eventType + '_' + str( energy) + 'GeV_GenNumber_' + str(generatorSerialNumber) + '_' + str( numberOfEventsInFile) + '_' + str(startEventNumber) job = UserJob() job.setJobGroup(jobDescription) job.setInputSandbox(inputSandbox) # Local files job.setOutputSandbox(['*.log', '*.gear', '*.mac', '*.steer', '*.xml']) job.setOutputData(outputFiles, OutputPath=outputPath) # On grid job.setName(jobDetailedName) job.setBannedSites([ 'LCG.IN2P3-CC.fr', 'LCG.IN2P3-IRES.fr', 'LCG.KEK.jp', 'OSG.PNNL.us', 'OSG.CIT.us', 'LCG.LAPP.fr', 'LCG.UKI-LT2-IC-HEP.uk', 'LCG.Tau.il', 'LCG.Weizmann.il', 'OSG.BNL.us' ]) job.setCPUTime(21600) # 6 hour, should be excessive job.dontPromptMe() if ggHadBackground: res = job.append(overlay) res = job.append(ma) if not res['OK']: print res['Message'] return job.submit(diracInstance) # Tidy Up os.system('rm ' + marlinSteeringFilename) print 'Job submitted to grid.'