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))
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'))
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' ) )
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)
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
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))
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
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
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' ) )
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
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)
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
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
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
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
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)
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
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') )
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
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
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
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
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
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
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 )
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 )
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
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
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