"binning": [20, -1, 1] } variables["bdt"] = { "name": "bdt", "var": Cuts.mva_vars['mu'], "binning": [60, -1, 1] } weights = [ ("weight__nominal", Weights.total_weight("mu")), ] c1 = ( "2j0t", Cuts.mt_mu()*Cuts.n_jets(2)*Cuts.n_tags(0)*Cuts.lepton("mu")*Cuts.hlt("mu"), ) c2 = ( "2j1t", Cuts.mt_mu()*Cuts.n_jets(2)*Cuts.n_tags(1)*Cuts.lepton("mu")*Cuts.hlt("mu"), ) c3 = ( "final_cb_2j1t", Cuts.final(2,1), ) cuts = [c1, c2, c3] varnodes = {} for k, v in variables.items(): for c in cuts: vn = tree.hist_node(graph, v, c, weights)
cutlist['3j0t']=Cuts.n_jets(3)*Cuts.n_tags(0) cutlist['3j1t']=Cuts.n_jets(3)*Cuts.n_tags(1) cutlist['3j2t']=Cuts.n_jets(3)*Cuts.n_tags(2) #Needed for RMS cut validation cutlist['presel_ele_no_rms']=Cuts.hlt_isoele*Cuts.lepton_veto*Cuts.pt_jet*Cuts.one_electron cutlist['presel_mu_no_rms']=Cuts.hlt_isomu*Cuts.lepton_veto*Cuts.pt_jet*Cuts.one_muon cutlist['presel_ele'] = cutlist['presel_ele_no_rms']*Cuts.rms_lj cutlist['presel_mu'] = cutlist['presel_mu_no_rms']*Cuts.rms_lj cutlist['nomet_ele']=cutlist['presel_ele']*Cuts.top_mass_sig*Cuts.eta_lj cutlist['nomt_mu']=cutlist['presel_mu']*Cuts.top_mass_sig*Cuts.eta_lj cutlist['noeta_ele']=cutlist['presel_ele']*Cuts.top_mass_sig*Cuts.met() cutlist['noeta_mu']=cutlist['presel_mu']*Cuts.top_mass_sig*Cuts.mt_mu() cutlist['final_ele']=cutlist['nomet_ele']*Cuts.met() cutlist['final_mu']=cutlist['nomt_mu']*Cuts.mt_mu() mva_var = Cuts.mva_vars mva_var_qcd = Cuts.mva_vars_qcd bdt = Cuts.mva_wps['bdt'] cutlist['bdt_mu_loose'] = Cuts.mt_mu()*Cut('%s>%f' % (mva_var['mu'],bdt['mu']['loose'])) cutlist['bdt_ele_loose'] = Cuts.met()*Cut('%s>%f' % (mva_var['ele'],bdt['ele']['loose'])) cutlist['bdt_mu_tight'] = Cuts.mt_mu()*Cut('%s>%f' % (mva_var['mu'],bdt['mu']['tight'])) cutlist['bdt_ele_tight'] = Cuts.met()*Cut('%s>%f' % (mva_var['ele'],bdt['ele']['tight'])) # Using MVA based QCD removal cutlist['qcdmva_ele']=Cut('%s>%f' % (mva_var_qcd['ele'],bdt['ele_qcd']))
#ROOT functions can be used ("abs_eta_lj", "abs(eta_lj)", [20, 0, 5]), ("bdt", Cuts.mva_vars['mu'], [60, -1, 1]), ] #Define all the weight strategies that we want to apply weights = [ ("weight__nominal", Weights.total_weight("mu")), #Demonstrate reweighting ("weight__puw", Weights.pu("nominal")), ("weight__puw_up", Weights.pu("up")), ] #All the cut regions that we are interested in cuts = [ ("2j0t", Cuts.mt_mu()*Cuts.n_jets(2)*Cuts.n_tags(0)*Cuts.lepton("mu")*Cuts.hlt("mu")), ("2j1t", Cuts.mt_mu()*Cuts.n_jets(2)*Cuts.n_tags(1)*Cuts.lepton("mu")*Cuts.hlt("mu")), ("final_cb_2j1t", Cuts.final(2,1)) ] #Construct the analysis chain snodes, out = analysis_tree(cuts, weights, variables, args.infiles, args.outfile) print "Recursing down" for sn in snodes: sn.recurseDown() out.close()
mets = dict() #No MET cut requirement mets['off'] = CutNode(Cuts.no_cut, graph, "met__off", [met], [], ) for met_syst in ["nominal", "up", "down"]: mets['met_' + met_syst] = CutNode( Cuts.met(met_syst), graph, "met__met_" + met_syst, [met], [], filter_funcs=[lambda x: is_chan(x, 'ele')] ) mets['mtw_' + met_syst] = CutNode( Cuts.mt_mu(met_syst), graph, "met__mtw_" + met_syst, [met], [], filter_funcs=[lambda x: is_chan(x, 'mu')] ) # purifications ---> cutbased, MVA purification = Node(graph, "signalenr", met.children(), []) purifications = dict() purifications['cutbased'] = Node(graph, "cutbased", [purification], []) purifications['mva'] = Node(graph, "mva", [purification], []) # cutbased ---> Mtop ---> SR mtop = Node(graph, "mtop", [purifications['cutbased']], []) mtops = dict() mtops['SR'] = CutNode(Cuts.top_mass_sig, graph, "mtop__SR", [mtop], [])
proc = 'ele' if '/mu/' in dir: prt = 'mu' proc = 'mu' physics_processes = PhysicsProcess.get_proc_dict(lepton_channel=proc) merge_cmds = PhysicsProcess.get_merge_dict(physics_processes) if len(sys.argv) == 3: flist=[dir+'/'+sys.argv[2]] else: flist=get_file_list(merge_cmds,sys.argv[1]) cut = str(cutlist['2j1t']*cutlist['presel_ele']*Cuts.met) if '/mu/' in dir: cut = str(cutlist['2j1t']*cutlist['presel_mu']*Cuts.mt_mu()) for f in flist: print "Starting:",f tf=TFile(f,'UPDATE') t=tf.Get("trees/Events") t.AddFriend('trees/WJets_weights') print cut ct=t.CopyTree(cut) print t, ct print t.GetEntries(), ct.GetEntries() ct.SetName("Events_MVAwQCD") tf.cd("trees") ct.Write("", TObject.kOverwrite) tf.Close()
mvaFileList['sig']['eval']= [ 'T_t_ToLeptons', 'Tbar_t_ToLeptons' ] mvaFileList['bg']['train']= [ 'TTJets_MassiveBinDECAY', 'WJets_inclusive' ] mvaFileList['bg']['eval']= [ 'TTJets_FullLept', 'TTJets_SemiLept', 'W1Jets_exclusive', 'W2Jets_exclusive', 'W3Jets_exclusive', 'W4Jets_exclusive' ] varList={} varList['ele'] = [ 'top_mass','eta_lj','C','met','mt_el','mass_bj','mass_lj','el_pt','pt_bj' ] varList['mu'] = [ 'top_mass','eta_lj','C','met','mt_mu','mass_bj','mass_lj','mu_pt','pt_bj' ] varRank={} varRank['ele'] = ['top_mass', 'C', 'eta_lj', 'el_pt', 'mt_el', 'pt_bj', 'mass_bj', 'met', 'mass_lj'] varRank['mu'] = ['top_mass', 'eta_lj', 'C', 'mu_pt', 'mt_mu', 'met', 'mass_bj', 'pt_bj', 'mass_lj'] from plots.common.cuts import Cut,Cuts cuts = {} cuts['ele'] = Cuts.n_jets(2)*Cuts.n_tags(1)*Cuts.hlt_isoele*Cuts.lepton_veto*Cuts.pt_jet*Cuts.one_electron*Cuts.rms_lj*Cuts.met() cuts['mu'] = Cuts.n_jets(2)*Cuts.n_tags(1)*Cuts.hlt_isomu*Cuts.lepton_veto*Cuts.pt_jet*Cuts.one_muon*Cuts.rms_lj*Cuts.mt_mu()