Example #1
0
def make_final_muel(alg_list, args):

    mu_pt = args.get('mu_pt', ' > 25 ')
    el_pt = args.get('el_pt', ' > 25 ')

    # order should be muon, electron, photon, jet
    alg_list.append(filter_muon(mu_pt))
    alg_list.append(filter_electron(el_pt))
    alg_list.append(filter_photon())
    alg_list.append(filter_jet())
    alg_list.append(filter_trigger())

    filter_event = Filter('FilterEvent')
    filter_event.cut_mu_n = ' == 1 '
    filter_event.cut_el_n = ' == 1 '

    alg_list.append(filter_event)

    #alg_list.append( Filter( 'MakePhotonCountVars' ) )
    alg_list.append(Filter('BuildEventVars'))
    alg_list.append(build_truth(args))
Example #2
0
def config_analysis(alg_list, args):
    """ Configure analysis modules. Order is preserved """

    #alg_list.append( Filter('CalcEventVars') )

    # run fake factor code after the event
    # level variables are calculated because some
    # variables are recalculated
    #alg_list.append( add_Z_event_weight() )

    # add pu vars
    alg_list.append(Filter('AddPUVars'))
Example #3
0
def config_analysis( alg_list ) :

    build_lep = Filter('BuildLepton')
    build_lep.cut_incTau = 'False'
    build_lep.cut_incTauMother = 'True'

    #build_lep.cut_pt = '> 25'
    #build_lep.cut_abseta = '< 2.5'

    alg_list.append( build_lep )

    build_phot = Filter( 'BuildPhoton' )
    #build_phot.cut_pt  = ' > 15'
    #build_phot.cut_abseta = ' < 2.5'

    alg_list.append( build_phot )

    alg_list.append( Filter('BuildNeutrino') )
    alg_list.append( Filter('BuildWboson') )

    alg_list.append( Filter('BuildEvent'   ) )
Example #4
0
def config_analysis( alg_list ) :

    alg_list.append( build_electron( do_cutflow=False, do_hists=False, filtPID='medium' ) )
    alg_list.append( build_muon( do_cutflow=False, do_hists=False) )
    alg_list.append( build_photon( do_cutflow=True, do_hists=False, filtPID='medium') )
    #alg_list.append( build_sl_photon( ) )
    alg_list.append( build_jet( do_cutflow=False, do_hists=False ) )

    # filter out a lepton 
    filter_evt = Filter( 'FilterEvent' )
    filter_evt.cut_lep25_n = ' > 0 '
    alg_list.append(filter_evt)
Example #5
0
def get_bjet_sf(options) :

    base_path = '%s/TreeFilter/ApplyScaleFactors/data' %_workarea

    bjet_sf = Filter( 'AddBJetSF' )
    bjet_sf.add_var( 'FilePath', '%s/DeepJet_2016LegacySF_WP_V1.csv' %base_path )
    bjet_sf.add_var( 'HistPath', '%s/2016/btageff2016mu.root' %base_path )
    bjet_sf.add_var( 'HistLJetEff', "heffl" )
    bjet_sf.add_var( 'HistBJetEff', "heffb" )
    bjet_sf.add_var( 'HistCJetEff', "heffc" )

    return bjet_sf
Example #6
0
def make_final_el(alg_list, args):

    mu_pt = args.get('mu_pt', ' > 10 ')
    el_pt = args.get('el_pt', ' > 10 ')
    ph_pt = args.get('ph_pt', ' > 15 ')
    phot_vars = args.get('phot_vars', 'False')
    phot_id = args.get('phot_id', 'medium')
    ph_eta = args.get('ph_eta', None)
    sec_lep_veto = args.get('sec_lep_veto', 'True')
    unblind = args.get('unblind', 'False')
    eleVeto = args.get('eleVeto', 'None')
    eleOlap = args.get('eleOlap', 'True')
    invertIso = args.get('invertIso', False)

    # order should be muon, electron, photon, jet
    alg_list.append(filter_muon(mu_pt))
    alg_list.append(filter_electron(el_pt, invertIso=invertIso))
    alg_list.append(
        filter_photon(ph_pt,
                      id_cut=phot_id,
                      ieta_cut=ph_eta,
                      ele_veto=eleVeto,
                      ele_olap=eleOlap))
    alg_list.append(filter_jet())

    filter_trig = filter_trigger()
    filter_trig.cut_bits = ' == 58 | == 109'
    alg_list.append(filter_trig)

    filter_event = Filter('FilterEvent')
    filter_event.cut_el_n = ' == 1 '
    filter_event.cut_el_pt35_n = ' == 1 '

    alg_list.append(filter_event)

    alg_list.append(Filter('MakePhotonCountVars'))
    event_vars = Filter('BuildEventVars')
    event_vars.add_var('year', theyear)
    alg_list.append(event_vars)
    alg_list.append(build_truth(args))
Example #7
0
def build_medium_electron(do_cutflow=False, do_hists=False):

    filt = Filter('BuildMediumElectron')

    filt.do_cutflow = do_cutflow

    filt.cut_pt = ' > 25'
    #filt.cut_abssceta       = ' > 1.57 '
    #filt.cut_abssceta       = ' < 1.479 '
    filt.cut_abssceta = ' < 2.5 '
    filt.cut_abssceta_crack = ' > 1.479 & < 1.57 '
    filt.invert('cut_abssceta_crack')

    filt.cut_dEtaIn_barrel = ' < 0.004 '
    filt.cut_dPhiIn_barrel = ' < 0.06 '
    filt.cut_sigmaIEIE_barrel = ' < 0.01 '
    filt.cut_hovere_barrel = ' < 0.12 '
    filt.cut_d0_barrel = ' < 0.02 '
    filt.cut_z0_barrel = ' < 0.1 '
    filt.cut_eoverp_barrel = ' < 0.05 '
    filt.cut_pfIso30_barrel = ' < 0.15 '
    filt.cut_convfit_barrel = ' < 0.000001 '
    filt.cut_misshits_barrel = ' <= 1 '

    filt.cut_dEtaIn_endcap = ' < 0.007 '
    filt.cut_dPhiIn_endcap = ' < 0.03 '
    filt.cut_sigmaIEIE_endcap = ' < 0.03 '
    filt.cut_hovere_endcap = ' < 0.10 '
    filt.cut_d0_endcap = ' < 0.02 '
    filt.cut_z0_endcap = ' < 0.1 '
    filt.cut_eoverp_endcap = ' < 0.05 '
    filt.cut_pfIso30_endcap = ' < 0.15 '
    filt.cut_convfit_endcap = ' < 0.000001 '
    filt.cut_misshits_endcap = ' <= 1 '

    if do_hists:
        filt.add_hist('cut_pt', 100, 0, 500)
        filt.add_hist('cut_abseta', 50, 0, 5)
        filt.add_hist('cut_abseta_crack', 50, 0, 5)
        filt.add_hist('cut_abssceta', 50, 0, 5)
        filt.add_hist('cut_dEtaIn_barrel', 100, -0.1, 0.1)
        filt.add_hist('cut_dPhiIn_barrel', 100, -0.1, 0.1)
        filt.add_hist('cut_sigmaIEIE_barrel', 100, 0, 0.05)
        filt.add_hist('cut_hovere_barrel', 100, -1, 1)
        filt.add_hist('cut_d0_barrel', 100, -1, 1)
        filt.add_hist('cut_z0_barrel', 100, -1, 1)
        filt.add_hist('cut_eoverp_barrel', 100, 0, 1)
        filt.add_hist('cut_pfIso30_barrel', 100, 0, 10)
        filt.add_hist('cut_convfit_barrel', 2, 0, 2)
        filt.add_hist('cut_misshits_barrel', 10, 0, 10)

    return filt
Example #8
0
def add_Z_event_weight():

    filt = Filter('ApplyPUBiasWeight')

    #filt.add_var( 'root_file', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/UpdateFinalTree/data/EFakeGammaScaleFactorPt.root' )
    filt.add_var(
        'root_file',
        '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/UpdateFinalTree/data/PUBiasVtxWt.root'
    )
    #filt.add_var( 'hist_name', 'pt')
    #filt.add_var( 'sample_key', 'DYJetsToLL' )

    return filt
Example #9
0
def make_wgjj( alg_list, args ) :

    filter_muon = Filter( 'FilterMuon' )
    filter_muon.cut_mu_pt = ' > 10 '
    alg_list.append(filter_muon)

    filter_jet = Filter( 'FilterJet' )
    filter_jet.cut_jet_pt = ' > 30 '
    alg_list.append(filter_jet)

    filter_event = Filter('FilterEvent')
    filter_event.cut_nPh = ' == 1 '
    filter_event.cut_nLepTrig = ' > 0 '
    filter_event.cut_nLep = ' == 1 '
    filter_event.cut_nJet30 = ' > 1 '
    filter_event.cut_nJet40 = ' > 0 '

    filter_event.cut_mt_lep_met = ' > 30 '

    alg_list.append( filter_event )

    alg_list.append( Filter( 'CalcDiJetVars' ) )
Example #10
0
def build_jet(do_cutflow=False, do_hists=False):

    filt = Filter('BuildJet')
    filt.do_cutflow = do_cutflow

    filt.cut_pt = ' > 30 '
    filt.cut_abseta = ' < 4.5 '

    if do_hists:
        filt.add_hist('cut_pt', 100, 0, 500)
        filt.add_hist('cut_abseta', 50, 0, 5)

    return filt
Example #11
0
def config_analysis(alg_list):
    """ Configure analysis modules. Order is preserved """

    # for complicated configurations, define a function
    # that returns the Filter object and append it to the
    # alg list.  Otherwise you can directly append
    # a Filter object to the list
    # There is no restriction on the naming or inputs to these funtions
    filter_event = Filter('FilterEvent')
    filter_event.cut_nLep_muTight_elMed = ' > 0 '
    filter_event.cut_nPh_medium = ' > 0 '

    alg_list.append(filter_event)
def config_analysis(alg_list):

    jet_filt = Filter('FilterJet')
    jet_filt.cut_pt = '> 15'
    alg_list.append(jet_filt)

    #ele_filt = Filter('FilterElec')
    #ele_filt.cut_pt = '> 15'
    #alg_list.append(ele_filt)

    #mu_filt = Filter('FilterMuon')
    #mu_filt.cut_pt = '> 15'
    #alg_list.append(mu_filt)

    #evt_filt = Filter('FilterEvent')
    #evt_filt.cut_nLep = '> 0'
    ##evt_filt.cut_nPho = '> 0'

    #alg_list.append(evt_filt)

    trig_filt = Filter('FilterTrigger')
    trig_filt.cut_trigger = '==17 | == 18 | == 19'
    alg_list.append(trig_filt)
Example #13
0
def build_muon(do_cutflow=False,
               do_hists=False,
               evalPID=None,
               applyCorrections=False):

    filt = Filter('BuildMuon')

    filt.do_cutflow = do_cutflow

    filt.cut_pt = ' > 5 '

    filt.cut_isGlobal = ' == True '
    filt.cut_isPF = ' == True '
    filt.cut_abseta = ' < 2.4'
    filt.cut_chi2 = ' < 10'
    filt.cut_nMuonHits = ' > 0 '
    filt.cut_nTrkLayers = ' > 5 '
    filt.cut_nStations = ' > 1'
    filt.cut_nPixelHits = ' > 0'
    filt.cut_d0 = ' < 0.2'
    filt.cut_z0 = ' < 0.5'
    filt.cut_corriso = ' < 0.12'

    ##filt.cut_trkiso     = ' < 0.1 '

    if evalPID is not None:
        filt.add_var('evalPID', evalPID)

    if applyCorrections:
        filt.add_var('applyCorrections', 'true')

        workarea = os.getenv('WorkArea')
        filt.add_var(
            'path',
            '%s/TreeFilter/RecoWgg/data/MuScleFitCorrector_v4_3/MuScleFit_2012_MC_53X_smearReReco.txt'
            % workarea)

    if do_hists:
        filt.add_hist('cut_pt', 100, 0, 500)
        filt.add_hist('cut_abseta', 50, 0, 5)
        filt.add_hist('cut_chi2', 50, 0, 50)
        filt.add_hist('cut_nTrkLayers', 20, 0, 20)
        filt.add_hist('cut_nStations', 5, 0, 5)
        filt.add_hist('cut_nPixelHits', 20, 0, 20)
        filt.add_hist('cut_d0', 100, -0.05, 0.05)
        filt.add_hist('cut_z0', 100, -0.05, 0.05)
        filt.add_hist('cut_trkiso', 50, 0, 0.5)
        filt.add_hist('cut_corriso', 50, 0, 0.5)

    return filt
Example #14
0
def filter_trigger(do_cutflow=False):

    filter_trigger = Filter('FilterTrigger')
    if do_cutflow: filter_trigger.do_cutflow = True

    # this will store branches for only these triggers
    filter_trigger.add_var(
        'triggerBits',
        '23:HLT_IsoMu24,31:HLT_IsoTkMu24,58:HLT_Ele27_WPTight_Gsf,60:HLT_Ele27_eta2p1_WPTight_Gsf,109:HLT_Photon175'
    )
    # this will store branches for all triggers found in the provided tree
    filter_trigger.add_var('AuxTreeName', 'UMDNTuple/TrigInfoTree')

    return filter_trigger
Example #15
0
def build_photon( do_cutflow=False, do_hists=False, filtPID=None, evalPID=None ) :

    filt = Filter('BuildPhoton')

    filt.add_var( 'TMVAWeightsFileEB11W', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights/photonMVAWtrainEB_BDT.weights.xml' )
    filt.add_var( 'TMVAWeightsFileEE11W', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights/photonMVAWtrainEE_BDT.weights.xml' )
    #filt.add_var( 'TMVAWeightsFileEB5', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights/photonMVAEB_BDT.weights.xml' )
    #filt.add_var( 'TMVAWeightsFileEE5', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights/photonMVAEE_BDT.weights.xml' )
    #filt.add_var( 'TMVAWeightsFileEB6', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights_6var_v1/photonMVAEB_BDT.weights.xml' )
    #filt.add_var( 'TMVAWeightsFileEE6', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights_6var_v1/photonMVAEE_BDT.weights.xml' )
    #filt.add_var( 'TMVAWeightsFileEB11', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights_11var_v1/photonMVAEB_BDT.weights.xml' )
    #filt.add_var( 'TMVAWeightsFileEE11', '/afs/cern.ch/user/j/jkunkle/usercode/Analysis/TreeFilter/TrainPhotonMVA/weights_11var_v1/photonMVAEE_BDT.weights.xml' )

    return filt
Example #16
0
def filter_trigger(do_cutflow=False):

    filter_trigger = Filter('FilterTrigger')
    if do_cutflow: filter_trigger.do_cutflow = True

    # this will store branches for only these triggers
    filter_trigger.add_var(
        'triggerBits',
        '9:HLT_IsoMu24,28:HLT_Ele35_WPTight_Gsf,10:HLT_IsoMu27,48:HLT_Photon200,27:HLT_Ele32_WPTight_Gsf_L1DoubleEG'
    )
    # this will store branches for all triggers found in the provided tree
    filter_trigger.add_var('AuxTreeName', 'UMDNTuple/TrigInfoTree')

    return filter_trigger
Example #17
0
def config_analysis(alg_list, args):
    """ Configure analysis modules. Order is preserved """

    # for complicated configurations, define a function
    # that returns the Filter object and append it to the
    # alg list.  Otherwise you can directly append
    # a Filter object to the list
    # There is no restriction on the naming or inputs to these funtions
    alg_list.append(build_photon(do_cutflow=True, do_hists=True))

    filter_event = Filter('FilterEvent')
    filter_event.cut_nPho = ' > 0 '

    alg_list.append(filter_event)
Example #18
0
def get_photon_sf(options):

    base_path = '%s/TreeFilter/ApplyScaleFactors/data' % _workarea

    photon_sf = Filter('AddPhotonSF')

    photon_sf.add_var(
        'FilePathId',
        '%s/Photon_ID_CSEV_SF_Jan22rereco_Full2012_S10_MC_V01.root' %
        base_path)
    photon_sf.add_var('FilePathEveto', '%s/hist_sf_eveto_nom.root' % base_path)
    photon_sf.add_var('FilePathEvetoHighPt',
                      '%s/hist_sf_eveto_highpt.root' % base_path)

    return photon_sf
Example #19
0
def config_analysis( alg_list ) :
    """ Configure analysis modules. Order is preserved """

    
    # for complicated configurations, define a function
    # that returns the Filter object and append it to the
    # alg list.  Otherwise you can directly append 
    # a Filter object to the list

    #----------------------
    # For ISR sample
    #----------------------
    #Sample Zg : lumi_sample = 41403.726747, scale = 0.468557
    #Sample Wgg_FSR : lumi_sample = 545608.695652, scale = 0.035557
    #Sample DYJetsToLL : lumi_sample = 8693.344750, scale = 2.231592
    #Sample WAA_ISR : lumi_sample = 3135768.025078, scale = 0.006187

    weight = Filter('WeightEvent')
    #weight.add_var( 'Weight', '0.468557') #Zg
    #weight.add_var( 'Weight', '2.231592') #DYJetsToLL
    weight.add_var( 'Weight', '0.035557') #Wgg_FSR
    #weight.add_var( 'Weight', '0.006187') #WAA_ISR

    alg_list.append( weight )


    filt_phot = Filter( 'FilterPhoton' )
    filt_phot.cut_ph_pt = ' > 15 '
    filt_phot.cut_ph_medium = ' == True '
    #filt_phot.cut_ph_hasPixSeed = ' == False '

    #alg_list.append(filt_phot ) 

    alg_list.append( filter_event( nPhPassEleVeto=2 ) )

    alg_list.append(Filter('CalcVars') )
Example #20
0
def build_truth(args):

    truth_filt = Filter('BuildTruth')

    truth_filt.cut_lep_mother = ' == 23 || == -23 || == 24 || == -24 ||  == 11 || == -11 || == 12 || == -12 || == 13 || == -13 || == 14 || == -14 || == 15 || == -15 || == 16 || == -16 '
    #truth_filt.cut_lep_status = ' != 23 '

    truth_filt.cut_ph_pt = ' > 5 '
    #truth_filt.cut_ph_IsPromptFinalState = ' == True '

    doFHPFS = args.get('doFHPFS', False)
    if doFHPFS == 'true':
        truth_filt.cut_ph_FromHardProcessFinalState = ' == True '

    return truth_filt
Example #21
0
def filter_event ( nPhPassEleVeto=None ) :

    
    filt_event = Filter( 'FilterEvent' )
    filt_event.cut_el_passtrig_n = ' >0 '
    filt_event.cut_el_n = ' ==1 '
    filt_event.cut_mu_n = ' ==0 '
    filt_event.cut_ph_n = ' ==2 '
    filt_event.cut_ph_phDR = ' > 0.3 '
    filt_event.cut_leadPhot_leadLepDR = ' > 0.7 '
    filt_event.cut_sublPhot_leadLepDR = ' > 0.7 '

    if nPhPassEleVeto is not None :
        filt_event.cut_nPhPassEleVeto = ' == %d ' %nPhPassEleVeto

    return filt_event
Example #22
0
def get_muon_filter(id='Tight', ptcut=10, etacut=2.1):

    filt = Filter('FilterMuon')

    #filt.add_var( 'PtScaleDownBarrel', '0.94' )
    #filt.add_var( 'PtScaleDownEndcap', '0.985' )
    #filt.add_var( 'PtScaleUpBarrel', '1.06' )
    #filt.add_var( 'PtScaleUpEndcap', '1.015' )

    if id is not None:
        setattr(filt, 'cut_mu_pass%s' % id, ' == True')
    filt.cut_mu_pt = ' > %d' % ptcut
    filt.cut_mu_eta = ' < %.1f ' % etacut
    #filt.cut_mu_corriso = ' < 0.2  '

    return filt
Example #23
0
def get_muon_sf(options):

    base_path = '%s/TreeFilter/ApplyScaleFactors/data' % _workarea

    muon_sf = Filter('AddMuonSF')

    muon_sf.add_var('year', theyear)

    muon_sf.add_var('LumiBCDEF', int_lumi_bcdef)
    muon_sf.add_var('LumiGH', int_lumi_gh)

    muon_sf.add_var(
        'FilePathTrigBCDEF',
        '%s/2018/EfficienciesAndSF_2018Data_BeforeMuonHLTUpdate.root' %
        base_path)
    muon_sf.add_var('HistTrigBCDEF', 'IsoMu24_PtEtaBins/pt_abseta_ratio')
    muon_sf.add_var('HistTrigBCDEFdata',
                    'IsoMu24_PtEtaBins/efficienciesDATA/pt_abseta_DATA')
    muon_sf.add_var('HistTrigBCDEFmc',
                    'IsoMu24_PtEtaBins/efficienciesMC/pt_abseta_MC')
    muon_sf.add_var(
        'FilePathTrigGH',
        '%s/2018/EfficienciesAndSF_2018Data_AfterMuonHLTUpdate.root' %
        base_path)
    muon_sf.add_var('HistTrigGH', 'IsoMu24_PtEtaBins/pt_abseta_ratio')
    muon_sf.add_var('HistTrigGHdata',
                    'IsoMu24_PtEtaBins/efficienciesDATA/pt_abseta_DATA')
    muon_sf.add_var('HistTrigGHmc',
                    'IsoMu24_PtEtaBins/efficienciesMC/pt_abseta_MC')

    muon_sf.add_var('FilePathIdBCDEF',
                    '%s/2018/RunABCD_mu_SF_ID.root' % base_path)
    muon_sf.add_var('HistIdBCDEF', 'NUM_TightID_DEN_TrackerMuons_pt_abseta')
    muon_sf.add_var('FilePathIdGH',
                    '%s/2018/RunABCD_mu_SF_ID.root' % base_path)
    muon_sf.add_var('HistIdGH', 'NUM_TightID_DEN_TrackerMuons_pt_abseta')

    muon_sf.add_var('FilePathIsoBCDEF',
                    '%s/2018/RunABCD_mu_SF_ISO.root' % base_path)
    muon_sf.add_var('HistIsoBCDEF',
                    'NUM_TightRelIso_DEN_TightIDandIPCut_pt_abseta')
    muon_sf.add_var('FilePathIsoGH',
                    '%s/2018/RunABCD_mu_SF_ISO.root' % base_path)
    muon_sf.add_var('HistIsoGH',
                    'NUM_TightRelIso_DEN_TightIDandIPCut_pt_abseta')

    return muon_sf
Example #24
0
def get_jet_filter(do_hists=False):

    filt = Filter('FilterJet')

    # redo overlap rm with photons and muons
    filt.cut_jet_ele_dr = ' > 0.4 '
    #filt.cut_jet_ph_dr = ' > 0.4 '
    filt.cut_jet_mu_dr = ' > 0.4 '

    filt.do_cutflow = False

    if do_hists:
        filt.add_hist('cut_jet_ele_dr', 50, 0, 5)
        filt.add_hist('cut_jet_ph_dr', 50, 0, 5)
        filt.add_hist('cut_jet_mu_dr', 50, 0, 5)

    return filt
Example #25
0
def get_bjet_sf(options) :

    base_path = '%s/TreeFilter/ApplyScaleFactors/data' %_workarea

    bjet_sf = Filter( 'AddBJetSF' )
    bjet_sf.add_var( 'FilePath', '%s/DeepJet_2016LegacySF_WP_V1.csv' %base_path )
    bjet_sf.add_var( 'HistPath', '%s/2016/btageff2016mu.root' %base_path )
    bjet_sf.add_var( 'HistLJetEff', "heffl" )
    bjet_sf.add_var( 'HistBJetEff', "heffb" )
    bjet_sf.add_var( 'HistCJetEff', "heffc" )

    bjet_sf.add_var( 'DeepJet_Loose',  0.0614 )
    bjet_sf.add_var( 'DeepJet_Medium', 0.3093 )
    bjet_sf.add_var( 'DeepJet_Tight',  0.7221 )
    bjet_sf.add_var( 'CutPoint', "medium" )

    return bjet_sf
Example #26
0
def config_analysis( alg_list ) :
    """ Configure analysis modules. Order is preserved """

    
    filter_event = Filter('FilterEvent')
    filter_event.cut_n_gen_photons = ' < 2 ' #for Wg, Zg
    #filter_event.cut_n_gen_photons = ' < 1 ' #for DYJets, WJets, top
    #filter_event.cut_n_gen_photons = ' > 1 ' # to make Zgg
    #filter_event.cut_n_gen_photons = ' > 0 ' # to make Wg backgrounds

    # for Zg FSR
    #filter_event.cut_n_gen_photons_pt10 = ' > 1 '

    #filter_event.add_hist( 'cut_n_gen_photons', 10, 0, 10 )

    filter_event.do_cutflow=True
    alg_list.append( filter_event )
Example #27
0
def apply_wpt_kneg( alg_list, args ) :
    
    truewpt_bound_lo = args.get('truewpt_bound_lo', 0. )
    truewpt_bound_hi = args.get('truewpt_bound_hi', 13000. )
    truewpt_kneg_lo  = args.get('truewpt_kneg_lo',  1. )
    truewpt_kneg_hi  = args.get('truewpt_kneg_hi',  1. )

    if (truewpt_kneg_lo != 1. or 
        truewpt_kneg_hi != 1.):

        filter_event = Filter('ApplyTrueWPtKNeg')
        filter_event.add_var( 'truewpt_bound_lo', truewpt_bound_lo )
        filter_event.add_var( 'truewpt_bound_hi', truewpt_bound_hi )
        filter_event.add_var( 'truewpt_kneg_lo',  truewpt_kneg_lo  )
        filter_event.add_var( 'truewpt_kneg_hi',  truewpt_kneg_hi  )

        alg_list.append( filter_event )
Example #28
0
def get_photon_filter(id=None,
                      eVeto=None,
                      ptcut=10,
                      sort_by_id='false',
                      doElOlapRm=True,
                      doTrigElOlapRm=True,
                      doMuOlapRm=True,
                      doPhOlapRm=True,
                      olapDR=0.4):

    if sort_by_id == True:
        sort_by_id = 'true'
    if sort_by_id == False:
        sort_by_id = 'false'

    filt = Filter('FilterPhoton')
    filt.cut_ph_pt = ' > %d ' % ptcut

    # reimplement eta cut here to be sure its correct
    # not needed after new Reco samples are made (2014-12-05)
    #filt.cut_ph_abseta       = ' < 2.5'
    #filt.cut_ph_abseta_crack = ' > 1.44 & < 1.57 '
    #filt.invert('cut_ph_abseta_crack')

    if doMuOlapRm:
        filt.cut_mu_ph_dr = ' > %f ' % olapDR
    if doPhOlapRm:
        filt.cut_ph_ph_dr = ' > %f ' % olapDR
    if doElOlapRm:
        filt.cut_el_ph_dr = ' > %f ' % olapDR
    if doTrigElOlapRm:
        filt.cut_trigel_ph_dr = ' > %f ' % olapDR

    #filt.add_var( 'PtScaleDownBarrel', '0.994' )
    #filt.add_var( 'PtScaleDownEndcap', '0.986' )
    #filt.add_var( 'PtScaleUpBarrel', '1.006' )
    #filt.add_var( 'PtScaleUpEndcap', '1.014' )

    if id is not None:
        setattr(filt, 'cut_ph_%s' % id, ' == True')
    if eVeto is not None:
        setattr(filt, 'cut_ph_%s' % eVeto, ' == False ')

    filt.sort_by_id = sort_by_id

    return filt
Example #29
0
def get_bjet_sf(options):

    base_path = '%s/TreeFilter/ApplyScaleFactors/data/' % _workarea

    bjet_sf = Filter('AddBJetSF')
    bjet_sf.add_var('FilePath',
                    '%s/DeepFlavour_94XSF_WP_V3_B_F.csv' % base_path)
    bjet_sf.add_var('HistPath', '%s/2017/btageff2017mu.root' % base_path)
    bjet_sf.add_var('HistLJetEff', "heffl")
    bjet_sf.add_var('HistBJetEff', "heffb")
    bjet_sf.add_var('HistCJetEff', "heffc")

    bjet_sf.add_var('DeepJet_Loose', 0.0521)
    bjet_sf.add_var('DeepJet_Medium', 0.3033)
    bjet_sf.add_var('DeepJet_Tight', 0.7489)
    bjet_sf.add_var('CutPoint', "medium")

    return bjet_sf
Example #30
0
def run_mva(job_name, sig_files, bkg_files, outputRootFile, variables,
            **addtl_vars):

    module = Filter(job_name)

    module.add_var('JobName', job_name)
    module.add_var('SignalFiles', ','.join(sig_files))
    module.add_var('BackgroundFiles', ','.join(bkg_files))
    module.add_var('TreeName', 'ggNtuplizer/EventTree')
    module.add_var(
        'OutputFile',
        '/afs/cern.ch/work/j/jkunkle/private/CMS/MVATraining_2014_04_17/%s' %
        outputRootFile)
    module.add_var('Variables', ','.join(variables))
    for var, val in addtl_vars.iteritems():
        module.add_var(var, val)

    return module