Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-25 02:29:52

0001 #! /usr/bin/env python
0002 
0003 # import ROOT in batch mode
0004 import sys
0005 oldargv = sys.argv[:]
0006 sys.argv = [ '-b-' ]
0007 import ROOT
0008 ROOT.gROOT.SetBatch(True)
0009 sys.argv = oldargv
0010 
0011 # load FWLite C++ libraries
0012 ROOT.gSystem.Load("libFWCoreFWLite.so");
0013 ROOT.gSystem.Load("libDataFormatsFWLite.so");
0014 ROOT.FWLiteEnabler.enable()
0015 
0016 #cms python data types
0017 import FWCore.ParameterSet.Config as cms
0018 
0019 # load FWlite python libraries
0020 from DataFormats.FWLite import Handle, Events
0021 from RecoEgamma.ElectronIdentification.VIDElectronSelector import VIDElectronSelector
0022 
0023 
0024 from RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_PHYS14_PU20bx25_V2_cff import cutBasedElectronID_PHYS14_PU20bx25_V2_standalone_tight
0025 
0026 selectElectron = VIDElectronSelector(cutBasedElectronID_PHYS14_PU20bx25_V2_standalone_tight)
0027 print('Initialized VID Selector for Electrons')
0028 print(selectElectron)
0029 
0030 from PhysicsTools.SelectorUtils.trivialCutFlow_cff import trivialCutFlow
0031 testExprEval = VIDElectronSelector(trivialCutFlow)
0032 print('test expression evaluator')
0033 print(testExprEval)
0034 
0035 #photon MVA (only works on reMiniAOD)
0036 print('Initialized VID Photon MVA Selector')
0037 from RecoEgamma.PhotonIdentification.VIDPhotonSelector import VIDPhotonSelector
0038 from RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring15_50ns_nonTrig_V0_cff import mvaPhoID_Spring15_50ns_nonTrig_V0_wp90
0039 selectPhoton = VIDPhotonSelector(mvaPhoID_Spring15_50ns_nonTrig_V0_wp90)
0040 print(selectPhoton)
0041 
0042 # try muons!
0043 from RecoMuon.MuonIdentification.VIDMuonSelector import VIDMuonSelector
0044 from RecoMuon.MuonIdentification.Identification.globalMuonPromptTight_V0_cff import globalMuonPromptTight_V0
0045 from RecoMuon.MuonIdentification.Identification.cutBasedMuonId_MuonPOG_V0_cff import *
0046 
0047 selectMuons = [VIDMuonSelector(globalMuonPromptTight_V0)]
0048 for selectMuon in [cutBasedMuonId_MuonPOG_V0_loose, cutBasedMuonId_MuonPOG_V0_medium, cutBasedMuonId_MuonPOG_V0_tight,
0049                    cutBasedMuonId_MuonPOG_V0_soft, cutBasedMuonId_MuonPOG_V0_highpt]:
0050     for cf in selectMuon.cutFlow:
0051         cf.vertexSrc = "offlineSlimmedPrimaryVertices"
0052     selectMuons.append(VIDMuonSelector(selectMuon))
0053     print('Initialized VID Selector for Muons')
0054     print(selectMuon)
0055 
0056 # open file (you can use 'edmFileUtil -d /store/whatever.root' to get the physical file name)
0057 events = Events("root://eoscms//eos/cms/store/relval/CMSSW_7_4_0_pre9_ROOT6/DoubleMu/MINIAOD/GR_R_74_V8A_RelVal_zMu2011A-v1/00000/06961B48-CFD1-E411-8B87-002618943971.root")
0058 
0059 muons, muonLabel = Handle("std::vector<pat::Muon>"), "slimmedMuons::".split(":")
0060 electrons, electronLabel = Handle("std::vector<pat::Electron>"), "slimmedElectrons::".split(":")
0061 photons, photonLabel = Handle("std::vector<pat::Photon>"), "slimmedPhotons::".split(":")
0062 
0063 for iev,event in enumerate(events):
0064     
0065     if iev > 10: break
0066     event.getByLabel(muonLabel[0],muonLabel[1],muonLabel[2], muons)
0067     event.getByLabel(electronLabel[0],electronLabel[1],electronLabel[2], electrons)
0068     event.getByLabel(photonLabel[0],photonLabel[1],photonLabel[2],photons)
0069     
0070     print("\nEvent %d: run %6d, lumi %4d, event %12d" % (iev,event.eventAuxiliary().run(), 
0071                                                          event.eventAuxiliary().luminosityBlock(),
0072                                                          event.eventAuxiliary().event()))
0073 
0074     # Muons
0075     for i,mu in enumerate(muons.product()): 
0076         if mu.pt() < 5 or not mu.isLooseMuon(): continue
0077         print("muon %2d: pt %4.1f, POG loose id %d." % (
0078             i, mu.pt(), mu.isLooseMuon()))
0079         for selectMuon in selectMuons:
0080             selectMuon(muons.product(),i,event)
0081             print(selectMuon)
0082 
0083     # Electrons
0084     for i,el in enumerate(electrons.product()):
0085         if el.pt() < 5: continue
0086         print("elec %2d: pt %4.1f, supercluster eta %+5.3f, sigmaIetaIeta %.3f (%.3f with full5x5 shower shapes), pass conv veto %d" % (
0087                     i, el.pt(), el.superCluster().eta(), el.sigmaIetaIeta(), el.full5x5_sigmaIetaIeta(), el.passConversionVeto()))
0088         passfail_byvalue = selectElectron(el,event)
0089         passfail = selectElectron(electrons.product(),i,event)       
0090         print(selectElectron)
0091         testExprEval(electrons.product(),i,event)
0092         print(testExprEval)
0093 
0094         cf_result = selectElectron.cutFlowResult()
0095         for i in range(cf_result.cutFlowSize()):
0096             print('%d : %s : %d'%(i,cf_result.getNameAtIndex(i),cf_result.getCutResultByName(cf_result.getNameAtIndex(i))))
0097         print(passfail, passfail_byvalue)
0098         print(cf_result.cutFlowPassed())
0099         print("{0:b}".format(selectElectron.bitMap()))
0100         masked_cf_ints = cf_result.getCutFlowResultMasking([2,3,4,9])
0101         masked_cf_strs = cf_result.getCutFlowResultMasking(['GsfEleDEtaInCut_0',
0102                                                             'GsfEleDPhiInCut_0',
0103                                                             'GsfEleFull5x5SigmaIEtaIEtaCut_0',
0104                                                             'GsfEleEffAreaPFIsoCut_0'])
0105         print(masked_cf_ints.cutFlowPassed(), masked_cf_strs.cutFlowPassed())
0106 
0107     for i,ph in enumerate(photons.product()):
0108         print("pho %2d: pt %4.1f, supercluster eta %+5.3f, sigmaIetaIeta %.3f (%.3f with full5x5 shower shapes)" % (
0109             i, ph.pt(), ph.superCluster().eta(), ph.sigmaIetaIeta(), ph.full5x5_sigmaIetaIeta()))
0110         passfail_byvalue = selectPhoton(ph,event)
0111         for uf in ph.userFloatNames():
0112             print(uf)
0113         for ui in ph.userIntNames():
0114             print(ui)
0115         print(passfail_byvalue)
0116         print(selectPhoton)
0117 
0118 #test the validator framework
0119 
0120 print('test validation framework') 
0121 
0122 selectElectronValid = VIDElectronSelector(cutBasedElectronID_PHYS14_PU20bx25_V2_standalone_tight)
0123 selectMuonValid = VIDMuonSelector(globalMuonPromptTight_V0)
0124 
0125 from  PhysicsTools.SelectorUtils.VIDSelectorValidator import VIDSelectorValidator
0126 electron_validator = VIDSelectorValidator(selectElectronValid,'std::vector<pat::Electron>','slimmedElectrons')
0127 muon_validator = VIDSelectorValidator(selectMuonValid,'std::vector<pat::Muon>','slimmedMuons')
0128 
0129 signal_files     = []
0130 background_files = []
0131 mix_files        = ['root://eoscms//eos/cms/store/relval/CMSSW_7_4_0_pre9_ROOT6/DoubleMu/MINIAOD/GR_R_74_V8A_RelVal_zMu2011A-v1/00000/06961B48-CFD1-E411-8B87-002618943971.root']
0132 
0133 electron_validator.setMixFiles(mix_files)
0134 muon_validator.setMixFiles(mix_files)
0135 
0136 electron_validator.runValidation()
0137 muon_validator.runValidation()
0138