def getOverlay(self, nbevts): """ Create an overlay step """ pathToFiles = None from ILCDIRAC.Interfaces.API.NewInterface.Applications import OverlayInput overlay = OverlayInput() if self.energy == 350: if self.detectorModel == "ILD_o1_v05": pathToFiles = "/ilc/user/s/sailer/testFiles/overlay/ild_350/" if pathToFiles: overlay.setPathToFiles(pathToFiles) else: self.log.warn( "better define pathToFiles for this overlay: %s, %s, %s" % (self.energy, self.machine, self.backgroundType)) overlay.setMachine(self.machine) overlay.setEnergy(self.energy) overlay.setDetectorModel(self.detectorModel) overlay.setBkgEvtType(self.backgroundType) overlay.setBXOverlay(60) overlay.setGGToHadInt(0.3) overlay.setNumberOfSignalEventsPerJob(nbevts) return overlay
def getJob(jobid, jobpara): iser=jobid+1 outdst = "toto-ovl-%5.5i.dst.slcio"%iser outrec = "toto-ovl-%5.5i.rec.slcio"%iser ###In case one wants a loop: comment the folowing. #for i in range(2): j = UserJob() j.setJobGroup("Tutorial") j.setName("MarlinOverlayParametric%i"%iser) j.setInputSandbox(jobpara["setting_file"]) ## Define the overlay ov = OverlayInput() ov.setMachine("ilc_dbd") ov.setEnergy(energy) ov.setNumberOfSignalEventsPerJob(int(jobpara["n_events_per_job"])) ov.setBXOverlay(int(jobpara["BXOverlay"])) ov.setGGToHadInt(float(jobpara["GGToHadInt500"])) ov.setBkgEvtType("aa_lowpt") # ov.setBackgroundType("aa_lowpt") ov.setDetectorModel("ILD_o1_v05") res = j.append(ov) if not res['OK']: print res['Message'] exit(1) ## Define Marlin job ma = Marlin() ma.setDebug() ma.setVersion("ILCSoft-01-17-09") ma.setSteeringFile("marlin_ovl_stdreco.xml") ma.setGearFile("GearOutput.xml") # ma.setInputFile(simfile) ma.setInputFile(simlists[jobid]) ma.setOutputDstFile(outdst) ma.setOutputRecFile(outrec) res = j.append(ma) if not res['OK']: print res['Message'] exit(1) j.setOutputData([outdst,outrec],"myprod2/test","PNNL-SRM") j.setOutputSandbox(["*.log","*.xml","*.sh","TaggingEfficiency.root","PfoAnalysis.root"]) j.setCPUTime(10000) j.dontPromptMe() return j
def createOverlayApplication( self, energy ): """ create Overlay Application """ from ILCDIRAC.Interfaces.API.NewInterface.Applications import OverlayInput overlay = OverlayInput() overlay.setMachine( 'clic_opt' ) overlay.setEnergy( energy ) overlay.setBackgroundType( self._overlayEventType ) overlay.setDetectorModel( self.detectorModel ) try: overlayEnergy = energyToInt( self.overlayEvents ) if self.overlayEvents else energy self.overlayParameterDict().get( overlayEnergy ) ( overlay ) except TypeError: raise RuntimeError( "No overlay parameters defined for %r GeV and %s " % ( energy, self._overlayEventType ) ) if self.overlayEvents: overlay.setUseEnergyForFileLookup( False ) return overlay
def getOverlay(self, nbevts): """ Create an overlay step """ pathToFiles = None from ILCDIRAC.Interfaces.API.NewInterface.Applications import OverlayInput overlay = OverlayInput() if self.energy==350: if self.detectorModel=="ILD_o1_v05": pathToFiles="/ilc/user/s/sailer/testFiles/overlay/ild_350/" if pathToFiles: overlay.setPathToFiles(pathToFiles) else: self.log.warn("better define pathToFiles for this overlay: %s, %s, %s" % (self.energy, self.machine, self.backgroundType) ) overlay.setMachine(self.machine) overlay.setEnergy(self.energy) overlay.setDetectorModel(self.detectorModel) overlay.setBkgEvtType(self.backgroundType) overlay.setBXOverlay(60) overlay.setGGToHadInt(0.3) overlay.setNumberOfSignalEventsPerJob(nbevts) return overlay
def getJob(dirac, jobid, jobpara): iser=jobid+100 outdir = "/ilc/user/a/amiyamoto/myprod2/test/" outdst = "toto-ovl-%5.5i.dst.slcio"%iser outrec = "toto-ovl-%5.5i.rec.slcio"%iser dstlfn = outdir+"dst/"+outdst reclfn = outdir+"rec/"+outrec outsrm = "CERN-SRM" ###In case one wants a loop: comment the folowing. #for i in range(2): j = UserJob() j.setJobGroup("Tutorial") j.setName("MarlinOverlayParametric%i"%iser) j.setInputSandbox(jobpara["setting_file"]) ## Define the overlay ov = OverlayInput() ov.setMachine("ilc_dbd") ov.setEnergy(energy) ov.setNumberOfSignalEventsPerJob(int(jobpara["n_events_per_job"])) ov.setBXOverlay(int(jobpara["BXOverlay"])) ov.setGGToHadInt(float(jobpara["GGToHadInt500"])) ov.setBkgEvtType("aa_lowpt") # ov.setBackgroundType("aa_lowpt") ov.setDetectorModel("ILD_o1_v05") res = j.append(ov) if not res['OK']: print res['Message'] exit(1) ## Define Marlin job ma = Marlin() ma.setDebug() ma.setVersion("ILCSoft-01-17-09") ma.setSteeringFile("marlin_stdreco.xml") ma.setGearFile("GearOutput.xml") # ma.setInputFile(simfile) ma.setInputFile(simlists[jobid]) ma.setOutputDstFile(outdst) ma.setOutputRecFile(outrec) res = j.append(ma) if not res['OK']: print res['Message'] exit(1) # Upload files to different directories upload_script="upload%i.sh"%iser upload = GenericApplication() # Create a script to upload files. shfile = open(upload_script,"w") shfile.write("#!/bin/bash\n") shfile.write("/bin/ls -l \n") shfile.write("dirac-dms-add-file -ddd "+dstlfn+" "+outdst+" "+outsrm+" \n") shfile.write("dirac-dms-add-file -ddd "+reclfn+" "+outrec+" "+outsrm+" \n") shfile.close() os.chmod(upload_script,0755) upload.setScript(upload_script) res = j.append(upload) if not res['OK'] : print res['Message'] exit(1) # j.setOutputData([outdst,outrec],"myprod2/test","PNNL-SRM") j.setInputSandbox([ setting_file, upload_script ] ) j.setOutputSandbox(["*.log","*.xml","*.sh","TaggingEfficiency.root","PfoAnalysis.root"]) j.setCPUTime(10000) j.dontPromptMe() res = j.submit(dirac) if not res["OK"] : print "Failed submit job, jobid=%s" %jobid print res os.remove(upload_script) return j
##Simulation ILD ddsim = None if UseDD4hepGeometry: ddsim = DDSim() ddsim.setVersion(DDSimVer) ###SET HERE YOUR MOKKA VERSION, the software will come from the ILDConfig ddsim.setDetectorModel(detectorModel) ddsim.setSteeringFile("ddsim_steer.py") ##Split split = SLCIOSplit() split.setNumberOfEventsPerFile(nbevtsperfile) ##Define the overlay overlay = OverlayInput() overlay.setMachine("ilc_dbd") #Don't touch, this is how the system knows what files to get overlay.setEnergy(energy) #Don't touch, this is how the system knows what files to get overlay.setDetectorModel(detectorModel) #Don't touch, this is how the system knows what files to get if energy==500.: #here you chose the overlay parameters as this determines how many files you need #it does NOT affect the content of the marlin steering file whatsoever, you need to make sure the values #there are correct. Only the file names are handled properly so that you don't need to care overlay.setBXOverlay(BXOverlay) overlay.setGGToHadInt(GGToHadInt500) overlay.setBkgEvtType("aa_lowpt2") ## lowpt2: correct number of events (500), ## not increased to 2500 to reduce number ## of downloaded files elif energy == 1000.: overlay.setBXOverlay(BXOverlay) overlay.setGGToHadInt(GGToHadInt1000) overlay.setBkgEvtType("aa_lowpt") elif energy == 350.:
##Simulation ILD mo = Mokka() mo.setVersion(MokkaVer) ###SET HERE YOUR MOKKA VERSION, the software will come from the ILDConfig mo.setDetectorModel(detectorModel) mo.setSteeringFile("bbudsc_3evt.steer") ### Do not include '.tgz' mo.setDbSlice(dbslice) ##Split split = SLCIOSplit() split.setNumberOfEventsPerFile(nbevtsperfile) ##Define the overlay overlay = OverlayInput() overlay.setMachine("ilc_dbd") #Don't touch, this is how the system knows what files to get overlay.setEnergy(energy) #Don't touch, this is how the system knows what files to get overlay.setDetectorModel(detectorModel) #Don't touch, this is how the system knows what files to get if energy == 500.: #here you chose the overlay parameters as this determines how many files you need #it does NOT affect the content of the marlin steering file whatsoever, you need to make sure the values #there are correct. Only the file names are handled properly so that you don't need to care overlay.setBXOverlay(BXOverlay) overlay.setGGToHadInt(GGToHadInt500) overlay.setBkgEvtType("aa_lowpt2") ## lowpt2: correct number of events (500), ## not increased to 2500 to reduce number ## of downloaded files elif energy == 1000.: overlay.setBXOverlay(BXOverlay) overlay.setGGToHadInt(GGToHadInt1000) overlay.setBkgEvtType("aa_lowpt") elif energy == 350.:
##Simulation SID slic = SLIC() slic.setVersion('v2r9p8') slic.setSteeringFile('defaultClicCrossingAngle.mac') slic.setDetectorModel('clic_sid_cdr') ##Split split = SLCIOSplit() split.setNumberOfEventsPerFile(nbevtsperfile) overlay = OverlayInput() overlay.setMachine("clic_cdr") overlay.setEnergy(energy) overlay.setBkgEvtType("gghad") if energy==500.: overlay.setBXOverlay(300) overlay.setGGToHadInt(0.3)##When running at 500geV overlay.setDetectorModel("CLIC_ILD_CDR500") elif energy == 350.: overlay.setBXOverlay(300) overlay.setGGToHadInt(0.0464)##When running at 350geV overlay.setDetectorModel("CLIC_ILD_CDR500") elif energy == 3000.: overlay.setBXOverlay(60) overlay.setGGToHadInt(3.2)##When running at 3TeV overlay.setDetectorModel("CLIC_ILD_CDR") elif energy == 1400.:
def subOverlay(): # Decide parameters for a job outputSE = "KEK-SRM" isLocal = _clip.isLocal nbevts = 50 if _clip.numberOfEvents == 0 else _clip.numberOfEvents nbevts = 0 # To analize all input events outputFilePrefix = "overlay_example" if _clip.outputFilePrefix == "" else _clip.outputFilePrefix outputDir = _clip.outputDir inputFile = _clip.inputFile if inputFile == "": gLogger.error("Input file for ddsim does not given.") exit(-1) recfile = outputFilePrefix + ".rec.slcio" dstfile = outputFilePrefix + ".dst.slcio" detector_model = "ILD_l5_o1_v02" key = detector_model.split('_') sim_detectorModel = "_".join([key[0], key[1], key[3]]) # Create DIRAC objects for job submission dIlc = DiracILC() job = UserJob() job.setJobGroup("myoverlayjob") job.setName("myoverlay") job.setOutputSandbox(['*.log', '*.sh', '*.py', '*.xml']) job.setILDConfig("v02-00-02") # job.setInputSandbox(["a6-parameters.sin", "P2f_qqbar.sin"]) # job.setDestination(["LCG.KEK.jp", "LCG.DESY-HH.de"]) # job submission destination # job.setBannedSites([]) # a list of sites not to submit job # job.setCPUTime( cputime_limit_in_seconds_by_dirac_units ) # Create Overlay application ovldata = [{ "ProcessorName": "BgOverlayWW", "evttype": "aa_lowpt_WW", "ProdID": 10237, "expBG": 0.211, "subdir": "000" }, { "ProcessorName": "BgOverlayWB", "evttype": "aa_lowpt_WB", "ProdID": 10241, "expBG": 0.24605, "subdir": "000" }, { "ProcessorName": "BgOverlayBW", "evttype": "aa_lowpt_BW", "ProdID": 10239, "expBG": 0.243873, "subdir": "000" }, { "ProcessorName": "BgOverlayBB", "evttype": "aa_lowpt_BB", "ProdID": 10235, "expBG": 0.35063, "subdir": "000" }, { "ProcessorName": "PairBgOverlay", "evttype": "seeablepairs", "ProdID": 10233, "expBG": 1.0, "subdir": "100" }] BXOverlay = 1 NbSigEvtsPerJob = 100 numberOfSignalEvents = NbSigEvtsPerJob basebkgpath = "/ilc/prod/ilc/mc-opt-3/ild/sim/500-TDR_ws" energy = "500" for ovl in ovldata: print "### OverlayInput ... " + ovl["ProcessorName"] ovlapp = OverlayInput() ovlpath = "%s/%s/%s/v02-00-01/%8.8d/%s" % \ ( basebkgpath, ovl["evttype"], sim_detectorModel, ovl["ProdID"] , ovl["subdir"] ) print " OverlayPath ... " + ovlpath ovlapp.setMachine("ilc_dbd") # ovlapp.setEnergy(energy) # ovlapp.setDetectorModel(sim_detectorModel) ovlapp.setProcessorName(ovl["ProcessorName"]) ovlapp.setBkgEvtType(ovl["evttype"]) ovlapp.setPathToFiles(ovlpath) ovlapp.setGGToHadInt(ovl["expBG"]) ovlapp.setBXOverlay(BXOverlay) ovlapp.setNbSigEvtsPerJob(NbSigEvtsPerJob) ovlapp.setNumberOfSignalEventsPerJob(numberOfSignalEvents) res = job.append(ovlapp) if not res['OK']: print res['Message'] exit(1) # Create Marlin application marlin = Marlin() marlin.setVersion("ILCSoft-02-00-02_gcc49") marlin.setDetectorModel(detector_model) marlin.setSteeringFile("MarlinStdReco.xml") marlin.setInputFile(inputFile) marlin.setNumberOfEvents(nbevts) marlin.setOutputDstFile(dstfile) marlin.setOutputRecFile(recfile) extraCLIArguments = " --constant.DetectorModel=%s " % detector_model extraCLIArguments += " --constant.RunOverlay=true --constant.CMSEnergy=%s " % str( energy) extraCLIArguments += " --global.Verbosity=MESSAGE " marlin.setExtraCLIArguments(extraCLIArguments) job.append(marlin) if outputDir != "": job.setOutputData([dstfile, recfile], OutputPath=outputDir, OutputSE=outputSE) if isLocal: job.submit(dIlc, mode="local") else: job.submit(dIlc)
class OverlayInputTestCase(unittest.TestCase): """ Base class for the OverlayInput test cases """ def setUp(self): """set up the objects""" self.olin = OverlayInput({}) def test_setters(self): assertEqualsImproved( (self.olin.machine, self.olin.prodID, self.olin.useEnergyForFileLookup, self.olin.detectorModel, self.olin.backgroundEventType), ('clic_cdr', 0, True, '', ''), self) self.assertFalse(self.olin._errorDict) self.olin.setMachine('mytestMachine') assertDiracSucceeds(self.olin.setProdID(14983), self) self.olin.setUseEnergyForFileLookup(False) self.olin.setDetectorModel('mytestDetector') self.olin.setBackgroundType('myBackgroundParticle.Testme') assertEqualsImproved( (self.olin.machine, self.olin.prodID, self.olin.useEnergyForFileLookup, self.olin.detectorModel, self.olin.backgroundEventType), ('mytestMachine', 14983, False, 'mytestDetector', 'myBackgroundParticle.Testme'), self) self.assertFalse(self.olin._errorDict) def test_setters_checks(self): self.olin.setMachine({'138rj': True}) self.olin.setProdID([]) self.olin.setUseEnergyForFileLookup('False') self.olin.setDetectorModel(9024) self.olin.setBackgroundType(8914) assertEqualsImproved(len(self.olin._errorDict['_checkArgs']), 5, self) def test_userjobmodules(self): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_OK())): assertDiracSucceeds(self.olin._userjobmodules(Mock()), self) def test_userjobmodules_fails(self): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_ERROR('bla'))): assertDiracFailsWith(self.olin._userjobmodules(Mock()), 'userjobmodules failed', self) def test_prodjobmodules(self): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_OK())): assertDiracSucceeds(self.olin._prodjobmodules(Mock()), self) def test_prodjobmodules_fails(self): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_ERROR('bla'))): assertDiracFailsWith(self.olin._prodjobmodules(Mock()), 'prodjobmodules failed', self) def test_addparameterstostep_fails(self): with patch.object(self.olin, '_addBaseParameters', new=Mock(return_value=S_ERROR('bla'))): assertDiracFailsWith(self.olin._addParametersToStep(Mock()), 'failed to set base param', self) def test_addparameterstostep(self): with patch.object(self.olin, '_addBaseParameters', new=Mock(return_value=S_OK())): assertDiracSucceeds(self.olin._addParametersToStep(Mock()), self) def test_checkconsistency(self): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 1345 self.olin.backgroundEventType = 'myTestBGEvt' self.olin._jobtype = 'notUser' assertDiracSucceeds(self.olin._checkConsistency(), self) assertEqualsImproved((self.olin.prodparameters['detectorModel'], self.olin.prodparameters['BXOverlay'], self.olin.prodparameters['GGtoHadInt']), ('', True, 1345), self) def test_checkconsistency_nofilesinpath(self): self.olin.pathToOverlayFiles = '/my/path/overlay.files' with patch( 'DIRAC.Resources.Catalog.FileCatalogClient.FileCatalogClient.findFilesByMetadata', new=Mock(return_value=S_OK([]))) as fcc_mock: assertDiracFailsWith(self.olin._checkConsistency(), 'no files in that path', self) fcc_mock.assert_called_once_with({}, '/my/path/overlay.files') def test_checkconsistency_no_bunchcrossings(self): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = None assertDiracFailsWith(self.olin._checkConsistency(), 'number of overlay bunch crossings not defined', self) def test_checkconsistency_no_backgroundevts(self): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 0 assertDiracFailsWith( self.olin._checkConsistency(), 'background events per bunch crossing is not defined', self) def test_checkconsistency_no_bgevttype(self): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 1345 self.olin.backgroundEventType = '' assertDiracFailsWith(self.olin._checkConsistency(), 'event type is not defined', self) def test_checkconsistency_nosignalevtperjob(self): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 1345 self.olin.backgroundEventType = 'gghad' self.olin._jobtype = 'User' self.olin.numberOfSignalEventsPerJob = 0 assertDiracFailsWith(self.olin._checkConsistency(), 'signal event per job is not defined', self) def test_checkfinalconsistency_simple(self): self.olin.pathToOverlayFiles = 'some/path' assertDiracSucceeds(self.olin._checkFinalConsistency(), self) def test_checkfinalconsistency_noenergy(self): self.olin.energy = 0 assertDiracFailsWith(self.olin._checkFinalConsistency(), 'energy must be specified', self) def test_checkfinalconsistency_ops_fails(self): ops_mock = Mock() ops_mock.getSections.return_value = S_ERROR('some_ops_error') self.olin._ops = ops_mock self.olin.energy = 198 assertDiracFailsWith(self.olin._checkFinalConsistency(), 'could not resolve the cs path', self) def test_checkfinalconsistency_machinemissing(self): ops_mock = Mock() ops_mock.getSections.return_value = S_OK( ['allowed_machine_1', 'other_mach']) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' self.olin.energy = 198 assertDiracFailsWith( self.olin._checkFinalConsistency(), 'machine mytestmachineveryrare does not have overlay data', self) def test_checkfinalconsistency_energynotfound(self): self.olin.energy = 824 section_dict = { '/Overlay': ['myTestMachineVeryRare'], '/Overlay/myTestMachineVeryRare': ['other_energy_tev', '824tev'] } ops_mock = Mock() ops_mock.getSections.side_effect = lambda path: S_OK(section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' assertDiracFailsWith(self.olin._checkFinalConsistency(), 'no overlay files corresponding to 824gev', self) def test_checkfinalconsistency_nodetectormodels(self): self.olin.energy = 1000.0 section_dict = { '/Overlay': S_OK(['myTestMachineVeryRare']), '/Overlay/myTestMachineVeryRare': S_OK(['other_energy_tev', '1tev']), '/Overlay/myTestMachineVeryRare/1tev': S_ERROR('bla') } ops_mock = Mock() ops_mock.getSections.side_effect = lambda path: section_dict[path] self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' assertDiracFailsWith(self.olin._checkFinalConsistency(), 'could not find the detector models', self) def test_checkfinalconsistency_detectormodelnotfound(self): self.olin.energy = 981324 section_dict = { '/Overlay': ['myTestMachineVeryRare'], '/Overlay/myTestMachineVeryRare': ['other_energy_tev', '981.3gev'], '/Overlay/myTestMachineVeryRare/981.3tev': ['some_other_detector_model', 'neither_this'] } ops_mock = Mock() ops_mock.getSections.side_effect = lambda path: S_OK(section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' assertDiracFailsWith(self.olin._checkFinalConsistency(), 'no overlay files corresponding to 981.3tev', self) def test_checkfinalconsistency_nobkg(self): self.olin.detectorModel = 'testDetMod' self.olin.energy = 981000 section_dict = { '/Overlay': ['myTestMachineVeryRare'], '/Overlay/myTestMachineVeryRare': ['other_energy_tev', '981tev'], '/Overlay/myTestMachineVeryRare/981tev': ['testDetMod'] } ops_mock = Mock() ops_mock.getSections.side_effect = lambda path: S_OK(section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' with patch.object(inspect.getmodule(OverlayInput), 'allowedBkg', new=Mock(return_value=S_ERROR('bkg_test_err'))): assertDiracFailsWith(self.olin._checkFinalConsistency(), 'bkg_test_err', self) def test_checkfinalconsistency_negativeprodid(self): self.olin.detectorModel = 'testDetMod' self.olin.energy = 981000 section_dict = { '/Overlay': ['myTestMachineVeryRare'], '/Overlay/myTestMachineVeryRare': ['other_energy_tev', '981tev'], '/Overlay/myTestMachineVeryRare/981tev': ['testDetMod'] } ops_mock = Mock() ops_mock.getSections.side_effect = lambda path: S_OK(section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' with patch.object(inspect.getmodule(OverlayInput), 'allowedBkg', new=Mock(return_value=S_OK(-147))): assertDiracFailsWith(self.olin._checkFinalConsistency(), 'no proper production id found', self) def test_checkfinalconsistency(self): self.olin.detectorModel = 'testDetMod' self.olin.energy = 981000 section_dict = { '/Overlay': ['myTestMachineVeryRare'], '/Overlay/myTestMachineVeryRare': ['other_energy_tev', '981tev'], '/Overlay/myTestMachineVeryRare/981tev': ['testDetMod'] } ops_mock = Mock() ops_mock.getSections.side_effect = lambda path: S_OK(section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' with patch.object(inspect.getmodule(OverlayInput), 'allowedBkg', new=Mock(return_value=S_OK(13987))): assertDiracSucceeds(self.olin._checkFinalConsistency(), self)
outdst = "toto-ovl.dst.slcio" #% i outrec = "toto-ovl.rec.slcio" #% i d= DiracILC(True,"repo.rep") ###In case one wants a loop: comment the folowing. #for i in range(2): j = UserJob() j.setJobGroup("Tutorial") j.setName("MarlinOverlayExample")#%i) j.setInputSandbox([setting_file]) ## Define the overlay ov = OverlayInput() ov.setMachine("ilc_dbd") ov.setEnergy(energy) ov.setNumberOfSignalEventsPerJob(n_events_per_job) ov.setBXOverlay(BXOverlay) ov.setGGToHadInt(GGToHadInt500) ov.setBkgEvtType("aa_lowpt") # ov.setBackgroundType("aa_lowpt") ov.setDetectorModel("ILD_o1_v05") res = j.append(ov) if not res['OK']: print res['Message'] exit(1) ## Define Marlin job ma = Marlin() ma.setDebug()
class OverlayInputTestCase( unittest.TestCase ): """ Base class for the OverlayInput test cases """ def setUp(self): """set up the objects""" self.olin = OverlayInput( {} ) def test_setters( self ): assertEqualsImproved( ( self.olin.machine, self.olin.prodID, self.olin.useEnergyForFileLookup, self.olin.detectorModel, self.olin.backgroundEventType ), ( 'clic_cdr', 0, True, '', '' ), self ) self.assertFalse( self.olin._errorDict ) self.olin.setMachine( 'mytestMachine' ) assertDiracSucceeds( self.olin.setProdID( 14983 ), self ) self.olin.setUseEnergyForFileLookup( False ) self.olin.setDetectorModel( 'mytestDetector' ) self.olin.setBackgroundType( 'myBackgroundParticle.Testme' ) assertEqualsImproved( ( self.olin.machine, self.olin.prodID, self.olin.useEnergyForFileLookup, self.olin.detectorModel, self.olin.backgroundEventType ), ( 'mytestMachine', 14983, False, 'mytestDetector', 'myBackgroundParticle.Testme' ), self ) self.assertFalse( self.olin._errorDict ) def test_setters_checks( self ): self.olin.setMachine( { '138rj' : True } ) self.olin.setProdID( [] ) self.olin.setUseEnergyForFileLookup( 'False' ) self.olin.setDetectorModel( 9024 ) self.olin.setBackgroundType( 8914 ) assertEqualsImproved( len( self.olin._errorDict['_checkArgs'] ), 5, self ) def test_userjobmodules( self ): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_OK())): assertDiracSucceeds( self.olin._userjobmodules( Mock() ), self ) def test_userjobmodules_fails( self ): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_ERROR('bla'))): assertDiracFailsWith( self.olin._userjobmodules( Mock() ), 'userjobmodules failed', self ) def test_prodjobmodules( self ): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_OK())): assertDiracSucceeds( self.olin._prodjobmodules( Mock() ), self ) def test_prodjobmodules_fails( self ): with patch.object(self.olin, '_setApplicationModuleAndParameters', new=Mock(return_value=S_ERROR('bla'))): assertDiracFailsWith( self.olin._prodjobmodules( Mock() ), 'prodjobmodules failed', self ) def test_addparameterstostep_fails( self ): with patch.object(self.olin, '_addBaseParameters', new=Mock(return_value=S_ERROR('bla'))): assertDiracFailsWith( self.olin._addParametersToStep( Mock() ), 'failed to set base param', self ) def test_addparameterstostep( self ): with patch.object(self.olin, '_addBaseParameters', new=Mock(return_value=S_OK())): assertDiracSucceeds( self.olin._addParametersToStep( Mock() ), self ) def test_checkconsistency( self ): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 1345 self.olin.backgroundEventType = 'myTestBGEvt' self.olin._jobtype = 'notUser' assertDiracSucceeds( self.olin._checkConsistency(), self ) assertEqualsImproved( ( self.olin.prodparameters['detectorModel'], self.olin.prodparameters['BXOverlay'], self.olin.prodparameters['GGtoHadInt'] ), ( '', True, 1345 ), self ) def test_checkconsistency_nofilesinpath( self ): self.olin.pathToOverlayFiles = '/my/path/overlay.files' with patch('DIRAC.Resources.Catalog.FileCatalogClient.FileCatalogClient.findFilesByMetadata', new=Mock(return_value=S_OK([]))) as fcc_mock: assertDiracFailsWith( self.olin._checkConsistency(), 'no files in that path', self ) fcc_mock.assert_called_once_with( {}, '/my/path/overlay.files' ) def test_checkconsistency_no_bunchcrossings( self ): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = None assertDiracFailsWith( self.olin._checkConsistency(), 'number of overlay bunch crossings not defined', self ) def test_checkconsistency_no_backgroundevts( self ): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 0 assertDiracFailsWith( self.olin._checkConsistency(), 'background events per bunch crossing is not defined', self ) def test_checkconsistency_no_bgevttype( self ): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 1345 self.olin.backgroundEventType = '' assertDiracFailsWith( self.olin._checkConsistency(), 'event type is not defined', self ) def test_checkconsistency_nosignalevtperjob( self ): self.olin.pathToOverlayFiles = '' self.olin.bxToOverlay = True self.olin.numberOfGGToHadronInteractions = 1345 self.olin.backgroundEventType = 'gghad' self.olin._jobtype = 'User' self.olin.numberOfSignalEventsPerJob = 0 assertDiracFailsWith( self.olin._checkConsistency(), 'signal event per job is not defined', self ) def test_checkfinalconsistency_simple( self ): self.olin.pathToOverlayFiles = 'some/path' assertDiracSucceeds( self.olin._checkFinalConsistency(), self ) def test_checkfinalconsistency_noenergy( self ): self.olin.energy = 0 assertDiracFailsWith( self.olin._checkFinalConsistency(), 'energy must be specified', self ) def test_checkfinalconsistency_ops_fails( self ): ops_mock = Mock() ops_mock.getSections.return_value=S_ERROR('some_ops_error') self.olin._ops = ops_mock self.olin.energy = 198 assertDiracFailsWith( self.olin._checkFinalConsistency(), 'could not resolve the cs path', self ) def test_checkfinalconsistency_machinemissing( self ): ops_mock = Mock() ops_mock.getSections.return_value=S_OK( [ 'allowed_machine_1', 'other_mach' ] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' self.olin.energy = 198 assertDiracFailsWith( self.olin._checkFinalConsistency(), 'machine mytestmachineveryrare does not have overlay data', self ) def test_checkfinalconsistency_energynotfound( self ): self.olin.energy = 824 section_dict = { '/Overlay' : [ 'myTestMachineVeryRare' ], '/Overlay/myTestMachineVeryRare' : [ 'other_energy_tev', '824tev' ] } ops_mock = Mock() ops_mock.getSections.side_effect=lambda path: S_OK( section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' assertDiracFailsWith( self.olin._checkFinalConsistency(), 'no overlay files corresponding to 824gev', self ) def test_checkfinalconsistency_nodetectormodels( self ): self.olin.energy = 1000.0 section_dict = { '/Overlay' : S_OK( [ 'myTestMachineVeryRare' ] ), '/Overlay/myTestMachineVeryRare' : S_OK( [ 'other_energy_tev', '1tev' ] ), '/Overlay/myTestMachineVeryRare/1tev' : S_ERROR('bla') } ops_mock = Mock() ops_mock.getSections.side_effect=lambda path: section_dict[path] self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' assertDiracFailsWith( self.olin._checkFinalConsistency(), 'could not find the detector models', self ) def test_checkfinalconsistency_detectormodelnotfound( self ): self.olin.energy = 981324 section_dict = { '/Overlay' : [ 'myTestMachineVeryRare' ], '/Overlay/myTestMachineVeryRare' : [ 'other_energy_tev', '981.3gev' ], '/Overlay/myTestMachineVeryRare/981.3tev' : [ 'some_other_detector_model', 'neither_this' ] } ops_mock = Mock() ops_mock.getSections.side_effect=lambda path: S_OK( section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' assertDiracFailsWith( self.olin._checkFinalConsistency(), 'no overlay files corresponding to 981.3tev', self ) def test_checkfinalconsistency_nobkg( self ): self.olin.detectorModel = 'testDetMod' self.olin.energy = 981000 section_dict = { '/Overlay' : [ 'myTestMachineVeryRare' ], '/Overlay/myTestMachineVeryRare' : [ 'other_energy_tev', '981tev' ], '/Overlay/myTestMachineVeryRare/981tev' : [ 'testDetMod' ] } ops_mock = Mock() ops_mock.getSections.side_effect=lambda path: S_OK( section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' with patch.object(inspect.getmodule(OverlayInput), 'allowedBkg', new=Mock(return_value=S_ERROR('bkg_test_err'))): assertDiracFailsWith( self.olin._checkFinalConsistency(), 'bkg_test_err', self ) def test_checkfinalconsistency_negativeprodid( self ): self.olin.detectorModel = 'testDetMod' self.olin.energy = 981000 section_dict = { '/Overlay' : [ 'myTestMachineVeryRare' ], '/Overlay/myTestMachineVeryRare' : [ 'other_energy_tev', '981tev' ], '/Overlay/myTestMachineVeryRare/981tev' : [ 'testDetMod' ] } ops_mock = Mock() ops_mock.getSections.side_effect=lambda path: S_OK( section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' with patch.object(inspect.getmodule(OverlayInput), 'allowedBkg', new=Mock(return_value=S_OK(-147))): assertDiracFailsWith( self.olin._checkFinalConsistency(), 'no proper production id found', self ) def test_checkfinalconsistency( self ): self.olin.detectorModel = 'testDetMod' self.olin.energy = 981000 section_dict = { '/Overlay' : [ 'myTestMachineVeryRare' ], '/Overlay/myTestMachineVeryRare' : [ 'other_energy_tev', '981tev' ], '/Overlay/myTestMachineVeryRare/981tev' : [ 'testDetMod' ] } ops_mock = Mock() ops_mock.getSections.side_effect=lambda path: S_OK( section_dict[path] ) self.olin._ops = ops_mock self.olin.machine = 'myTestMachineVeryRare' with patch.object(inspect.getmodule(OverlayInput), 'allowedBkg', new=Mock(return_value=S_OK(13987))): assertDiracSucceeds( self.olin._checkFinalConsistency(), self )