def test_skip(self): first = 10 loop = Looper( self.outdir, config, nEvents=None, firstEvent=first, nPrint=0 ) loop.loop()
def test_process_event(self): loop = Looper( self.outdir, config, nEvents=None, nPrint=0 ) loop.process(10) self.assertEqual(loop.event.input.x1, 10) self.assertEqual(loop.event.input.x2, 100)
def runLoop(comp, outDir, config, options): if options.input is not None: comp.files = [options.input] fullName = '/'.join([outDir, comp.name]) # import pdb; pdb.set_trace() config.components = [comp] loop = Looper(fullName, config, options.nevents, 0, nPrint=options.nprint, timeReport=options.timeReport, quiet=options.quiet) # print loop if options.iEvent is None: loop.loop() loop.write() # print loop else: # loop.InitOutput() iEvent = int(options.iEvent) loop.process(iEvent) return loop
def runLoop( comp, outDir, config, options): if options.input is not None: comp.files = [options.input] fullName = '/'.join( [outDir, comp.name ] ) # import pdb; pdb.set_trace() config.components = [comp] memcheck = 2 if getattr(options,'memCheck',False) else -1 loop = Looper( fullName, config, options.nevents, 0, nPrint = options.nprint, timeReport = options.timeReport, quiet = options.quiet, memCheckFromEvent = memcheck, stopFlag = _globalGracefulStopFlag) # print loop if options.iEvent is None: loop.loop() loop.write() # print loop else: # loop.InitOutput() iEvent = int(options.iEvent) loop.process( iEvent ) return loop
def test_analysis_sorting(self): fname = '/'.join( [os.environ['HEPPY'], 'test/data/ee_ZH_Zmumu_Hbb.root']) config.components[0].files = [fname] looper = Looper(self.outdir, config, nEvents=50, nPrint=0) looper.process(0) self.assertTrue(test_sorted(looper.event.rec_particles))
def test_1(self): '''Check the analysis runs''' from heppy.papas.detectors.CMS import cms config.components[0].splitFactor = 1 self.looper = Looper(self.outdir, config, nEvents=100, nPrint=0) self.looper.loop() self.looper.write()
def test_1(self): ''' ''' fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_ZZ_4mu.root']) config.components[0].files = [fname] looper = Looper(self.outdir, config, nEvents=50, nPrint=0) looper.loop() looper.write()
def test_process_event(self): loop = Looper(self.outdir, config, nEvents=None, nPrint=0, timeReport=True) loop.process(10) self.assertEqual(loop.event.input.var1, 10) loop.process(10)
def test_ZZ_nunubb(self): '''Check that the ZH nunubb analysis runs ''' from analysis_ee_ZH_nunubb_cfg import config fname = 'samples/test/ee_ZZ_nunu.root' config.components[0].files = [fname] looper = Looper(self.outdir, config, nEvents=100, nPrint=0) looper.loop() looper.write()
def test_userstop(self): config_with_stopper = copy.copy(config) config_with_stopper.sequence.insert(1, stopper) loop = Looper(self.outdir, config_with_stopper, nEvents=None, nPrint=0, timeReport=True) self.assertRaises(UserStop, loop.process, 10)
def test_process_event(self): '''Test that indeed, calling loop.process(iev) raises TypeError if the events backend does not support indexing. ''' loop = Looper(self.outdir, config, nEvents=None, nPrint=0, timeReport=True) self.assertRaises(TypeError, loop.process, 10)
def test_1(self): '''Check that the ZH->nunubb analysis runs ''' from heppy.papas.detectors.CMS import cms config.components[0].files = [test_filename] for s in config.sequence: if hasattr(s, 'detector'): s.detector = cms self.looper = Looper(self.outdir, config, nEvents=10, nPrint=0) self.looper.loop() self.looper.write()
def test_skip(self): first = 10 loop = Looper(self.outdir, config, nEvents=None, firstEvent=first, nPrint=0) loop.loop() loop.write() # input file has 200 entries # we skip 10 entries, so we process 190. self.assertEqual(loop.nEvProcessed, self.nevents - first)
def test_beff_cms_fccsw(self): '''check that the analysis runs with papas inputs from cmssw ''' from heppy.papas.detectors.CMS import cms fname = '/'.join( [os.environ['HEPPY'], 'test/data/ee_Z_bbbar_with_papas_rec.root']) config.components[0].files = [fname] for s in config.sequence: if hasattr(s, 'detector'): s.detector = cms self.looper = Looper(self.outdir, config, nEvents=100, nPrint=0) self.looper.loop()
def setUp(self): random.seed(0xdeadbeef) self.outdir = tempfile.mkdtemp() fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_Z_ddbar.root']) config.components[0].files = [fname] self.looper = Looper( self.outdir, config, nEvents=100, nPrint=0, timeReport=True) import logging logging.disable(logging.CRITICAL)
def test_z_mumu_cms(self): '''Test Z->mumu with CMS ''' from heppy.papas.detectors.CMS import cms fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_Z_mumu.root']) config.components[0].files = [fname] for s in config.sequence: if hasattr(s, 'detector'): s.detector = cms self.looper = Looper(self.outdir, config, nEvents=10, nPrint=0) self.looper.loop() self.looper.write()
def test_1(self): '''Check that the ZH->nunubb analysis runs ''' config.components = config.components[:1] config.components[0].files = config.components[0].files[:1] nevts = 100 self.looper = Looper( self.outdir, config, nEvents=nevts, nPrint=0) self.looper.loop() self.looper.write()
def test_all_events_processed(self): loop = Looper(self.outdir, config, nEvents=None, nPrint=0) loop.loop() loop.write() logfile = open('/'.join([self.outdir, 'log.txt'])) nev_processed = None for line in logfile: if line.startswith('number of events processed:'): nev_processed = int(line.split(':')[1]) logfile.close() self.assertEqual(nev_processed, self.nevents) # checking the looper itself. self.assertEqual(loop.nEvProcessed, self.nevents)
def test_fake_cms(self): '''Check fake rate in CMS ''' from heppy.papas.detectors.CMS import cms fname = '/'.join( [os.environ['HEPPY'], 'test/data/ee_Z_ddbar.root']) config.components[0].files = [fname] config.sequence[2].detector = cms self.looper = Looper(self.outdir, config, nEvents=100, nPrint=0) self.looper.loop() self.looper.write() rootfile = '/'.join([ self.outdir, 'heppy.analyzers.JetTreeProducer.JetTreeProducer_1/jet_tree.root ' ])
def test_beff_cms(self): '''Check b matching probability and b tag efficiency in CMS ''' from heppy.papas.detectors.CMS import cms fname = '/'.join( [os.environ['HEPPY'], 'test/data/ee_Z_bbbar.root']) config.components[0].files = [fname] config.sequence[2].detector = cms self.looper = Looper(self.outdir, config, nEvents=100, nPrint=0) self.looper.loop() self.looper.write() rootfile = '/'.join([ self.outdir, 'heppy.analyzers.JetTreeProducer.JetTreeProducer_1/jet_tree.root ' ]) plotter = Plotter(rootfile) self.assertGreater(plotter.bfrac(), 0.95) self.assertAlmostEqual(plotter.beff(), 0.7, places=2)
def test_beff_cms_fccsw(self): '''Check b matching probability and b tag efficiency in CMS ''' from heppy.papas.detectors.CMS import cms fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_Z_bbbar_with_papas_rec.root']) config.components[0].files = [fname] for s in config.sequence: if hasattr( s,'detector'): s.detector = cms self.looper = Looper( self.outdir, config, nEvents=100, nPrint=0 ) self.looper.loop() self.looper.write() rootfile = '/'.join([self.outdir, 'heppy.analyzers.JetTreeProducer.JetTreeProducer_1/jet_tree.root ']) plotter = Plotter(rootfile) self.assertAlmostEqual(plotter.bfrac(), 0.80, places=1) #changing of random seed varies this between approx 0.78 and 0.83
def test_z_mumu_clic(self): '''Check for an almost perfect match with reference. Will fail if physics algorithms are modified, so should probably be removed from test suite, or better: be made optional. ''' from heppy.papas.detectors.CLIC import clic fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_Z_mumu.root']) config.components[0].files = [fname] config.sequence[2].detector = clic self.looper = Looper(self.outdir, config, nEvents=500, nPrint=0) self.looper.loop() self.looper.write() rootfile = '/'.join([ self.outdir, 'heppy.analyzers.GlobalEventTreeProducer.GlobalEventTreeProducer_1/tree.root' ]) mean, sigma = plot(rootfile, nbins=400) self.assertAlmostEqual(mean, 90.84, 1) self.assertAlmostEqual(sigma, 1.32, 1)
def test_z_1_cms(self): '''Check Z mass in ee->Z->ddbar (CMS). Will fail if physics algorithms are modified, so should probably be removed from test suite, or better: be made optional. ''' from heppy.papas.detectors.CMS import cms fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_Z_ddbar.root']) config.components[0].files = [fname] for s in config.sequence: if hasattr(s, 'detector'): s.detector = cms self.looper = Looper(self.outdir, config, nEvents=100, nPrint=0) self.looper.loop() self.looper.write() rootfile = '/'.join([ self.outdir, 'heppy.analyzers.GlobalEventTreeProducer.GlobalEventTreeProducer_1/tree.root' ]) mean, sigma = plot_ee_mass(rootfile) self.assertAlmostEqual(mean, 83.58, 1) self.assertAlmostEqual(sigma, 7.06, 1)
def test_z_ee_clic(self): '''Check Z mass in ee->Z->ee (CLIC). Will fail if physics algorithms are modified, so should probably be removed from test suite, or better: be made optional. ''' from heppy.papas.detectors.CLIC import clic fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_Z_ee.root']) config.components[0].files = [fname] for s in config.sequence: if hasattr(s, 'detector'): s.detector = clic self.looper = Looper(self.outdir, config, nEvents=500, nPrint=0) self.looper.loop() self.looper.write() rootfile = '/'.join([ self.outdir, 'heppy.analyzers.GlobalEventTreeProducer.GlobalEventTreeProducer_1/tree.root' ]) mean, sigma = plot_ee_mass(rootfile, nbins=400, xmin=70, xmax=110) self.assertAlmostEqual(mean, 90.77, 1) self.assertAlmostEqual(sigma, 2.00, 1)
def test_analysis_ee_ZH_mumubb(self): '''Check for an almost perfect match with reference. Will fail if physics algorithms are modified, so should probably be removed from test suite, or better: be made optional. ''' from heppy.papas.detectors.CMS import cms config.sequence[2].detector = cms # import pdb; pdb.set_trace() fname = '/'.join( [os.environ['HEPPY'], 'test/data/ee_ZH_Zmumu_Hbb.root']) config.components[0].files = [fname] looper = Looper(self.outdir, config, nEvents=50, nPrint=0) looper.loop() looper.write() rootfile = '/'.join([ self.outdir, 'heppy.analyzers.examples.zh.ZHTreeProducer.ZHTreeProducer_1/tree.root' ]) mean, sigma = plot(rootfile) self.assertAlmostEqual(mean, 113.3, 1) self.assertAlmostEqual(sigma, 21.2, 1)
def test_z_clic(self): '''Check Z mass in ee->Z->ddbar (CLIC). Will fail if physics algorithms are modified, so should probably be removed from test suite, or better: be made optional. ''' random.seed(0xdeadbeef) from heppy.papas.detectors.CLIC import clic fname = '/'.join([os.environ['HEPPY'], 'test/data/ee_Z_ddbar.root']) config.components[0].files = [fname] for s in config.sequence: if hasattr( s,'detector'): s.detector = clic if hasattr(s, 'debug_filename'): s.debug_filename = 'physics_clic.txt' self.looper = Looper( self.outdir, config, nEvents=10, nPrint=0 ) self.looper.loop() self.looper.write() self.assertEqual(0,os.system("source $HEPPY/test/data/pdebug_python_check.sh physics_clic.txt $HEPPY/test/data/required_clic_physics_dd.txt"))
def test_analysis_ee_ZH_mumubb(self): '''Check for an almost perfect match with reference. Will fail if physics algorithms are modified, so should probably be removed from test suite, or better: be made optional. ''' from heppy.papas.detectors.CMS import cms for s in config.sequence: if hasattr(s, 'detector'): s.detector = cms if hasattr(s, 'debug_filename'): s.debug_filename = 'physics_cms.txt' # import pdb; pdb.set_trace() fname = '/'.join( [os.environ['HEPPY'], 'test/data/ee_ZH_Zmumu_Hbb.root']) config.components[0].files = [fname] looper = Looper(self.outdir, config, nEvents=10, nPrint=0) looper.loop() looper.write() self.assertEqual( 0, os.system( "source $HEPPY/test/data/pdebug_python_check.sh physics_cms.txt $HEPPY/test/data/required_cms_physics.txt" ))
selected_photons, jets_20, match_jet_electrons, jets_noelectron, match_muon_jets, jets_nomuon, match_photon_jets, jets_nophoton, selected_bs, selected_lights, #photon_higgses, #b_higgses, tree ]) config = cfg.Config(components=selectedComponents, sequence=sequence, services=[], events_class=Events) if __name__ == '__main__': import sys from heppy.framework.looper import Looper def next(): loop.process(loop.iEvent + 1) loop = Looper('looper', config, nEvents=100, nPrint=0, timeReport=True) loop.process(6) print loop.event
gen_tree, selected_muons, selected_electrons, selected_leptons, zeds, selection, higgses, reco_tree, ] ) config = cfg.Config( components = selectedComponents, sequence = sequence, services = [], events_class = Events ) if __name__ == '__main__': import sys from heppy.framework.looper import Looper def next(): loop.process(loop.iEvent+1) loop = Looper( 'looper', config, nEvents=100, nPrint=0) loop.process(6) print loop.event
def test_all_events_processed(self): loop = Looper( self.outdir, config, nEvents=None, nPrint=0 ) loop.loop()