for cut in cuts: if qcd_from_same_sign and not 'SS' in cut.name and not w_qcd_mssm_method: cfg_main = HistogramCfg(name=cut.name, var=None, cfgs=samples_qcdfromss, cut=cut.cut, lumi=int_lumi, weight=total_weight) elif w_qcd_mssm_method: cfg_main = HistogramCfg(name=cut.name, var=None, cfgs=samples_mssm_method, cut=cut.cut, lumi=int_lumi, weight=total_weight) wjets.cut = cut.cut # since wjets is a sub-HistogramCfg else: cfg_main = HistogramCfg(name=cut.name, var=None, cfgs=all_samples, cut=cut.cut, lumi=int_lumi, weight=total_weight) if qcd_from_same_sign and not 'SS' in cut.name: qcd.cut = cut.cut.replace('l1_charge != l2_charge', 'l1_charge == l2_charge') if w_qcd_mssm_method: stacknow_highmt_os.name = 'HighMTOS' + cut.name stacknow_highmt_ss.name = 'HighMTSS' + cut.name
# variables = [lnujj_vars[0]] # variables = getVars(['l1_reliso05', 'l2_reliso05']) # variables = [ # VariableCfg(name='mvis', binning={'nbinsx':35, 'xmin':0, 'xmax':350}, unit='GeV', xtitle='m_{vis}') # ] for cut_name in cuts: cfg_example = HistogramCfg(name='example', var=None, cfgs=samples, cut='', lumi=int_lumi, weight=total_weight) cfg_example.cut = cuts[cut_name] cfg_example.vars = variables channel = "l#nujj" if cut_name.find("_mu") >= 0: channel = "#mu#nujj" elif cut_name.find("_e") >= 0: channel = "e#nujj" if cut_name.find("HP") >= 0: channel += " HP" elif cut_name.find("LP") >= 0: channel += " LP" plots = createHistograms(cfg_example, verbose=False) for variable in variables: plot = plots[variable.name]
if sample.name != 'Data': # Subtract background from data sample.scale = -1. qcd = HistogramCfg(name='QCD', var=None, cfgs=samples_ss, cut=inc_cut, lumi=40.0) samples.append(qcd) # Taken from Variables.py, can get subset with e.g. getVars(['mt', 'mvis']) variables = all_vars cfg_example = HistogramCfg(name='example', var=None, cfgs=samples, cut=inc_cut, lumi=40.0) for cut_name in cuts: cfg_example.cut = cuts[cut_name] if qcd_from_same_sign and 'OS' in cut_name: qcd.cut = cuts[cut_name].replace('l1_charge != l2_charge', 'l1_charge == l2_charge') for variable in variables: cfg_example.var = variable if qcd_from_same_sign: qcd.var = variable # Can put into function but we will not want it by default if we take normalisations from e.g. high MT plot = createHistogram(cfg_example, verbose=True) plot.Group('Diboson', ['ZZ', 'WZ', 'WW']) plot.Group('Single t', ['T_tWch', 'TBar_tWch', 'TToLeptons_sch', 'TToLeptons_tch']) plot.Group('ZLL', ['Ztt_ZL', 'Ztt_ZJ'], style=plot.Hist('Ztt_ZL').style) HistDrawer.draw(plot, plot_dir='plots/'+cut_name)
# Taken from Variables.py, can get subset with e.g. getVars(['mt', 'mvis']) variables = emu_vars # variables = getVars(['n_vertices']) # variables = getVars(['l1_reliso05', 'l2_reliso05']) # variables = [ # VariableCfg(name='mvis', binning={'nbinsx':35, 'xmin':0, 'xmax':350}, unit='GeV', xtitle='m_{vis}') # ] for cut_name in cuts: if qcd_from_same_sign and not 'SS' in cut_name : cfg_example = HistogramCfg(name='example', var=None, cfgs=samples_qcdfromss, cut=inc_cut, lumi=lumi, weight=total_weight) else: cfg_example = HistogramCfg(name='example', var=None, cfgs=samples, cut=inc_cut, lumi=lumi, weight=total_weight) cfg_example.cut = cuts[cut_name] if qcd_from_same_sign and not 'SS' in cut_name: qcd.cut = cuts[cut_name].replace('l1_charge != l2_charge', 'l1_charge == l2_charge') cfg_example.vars = variables if qcd_from_same_sign: qcd.vars = variables # Can put into function but we will not want it by default if we take normalisations from e.g. high MT plots = createHistograms(cfg_example, verbose=True) for variable in variables: plot = plots[variable.name] plot.Group('VV', ['WWTo1L1Nu2Q', 'WZTo1L1Nu2Q', 'WZTo1L3Nu', 'WZTo2L2Q', 'VVTo2L2Nu', 'ZZTo2L2Q', 'ZZTo4L']) plot.Group('Single t', ['T_tWch', 'TBar_tWch', 'TBarToLeptons_tch_powheg', 'TToLeptons_tch_powheg']) plot.Group('ZLL', ['ZL', 'ZJ'], style=plot.Hist('ZL').style) plot.Group('W', ['W1Jets', 'W2Jets', 'W3Jets', 'W4Jets'])
samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(analysis_dir, channel='WV', weight=weight_MC) # Taken from Variables.py, can get subset with e.g. getVars(['mt', 'mvis']) variables = generic_vars + lnujj_vars + lnujj_vbf_vars # variables = [lnujj_vars[0]] # variables = getVars(['l1_reliso05', 'l2_reliso05']) # variables = [ # VariableCfg(name='mvis', binning={'nbinsx':35, 'xmin':0, 'xmax':350}, unit='GeV', xtitle='m_{vis}') # ] for cut_name in cuts: cfg_example = HistogramCfg(name='example', var=None, cfgs=samples, cut='', lumi=int_lumi, weight=total_weight) cfg_example.cut = cuts[cut_name].replace("||HLT_MET120", "") cfg_example.vars = variables channel = "l#nujj" if cut_name.find("_mu") >= 0: channel = "#mu#nujj" elif cut_name.find("_e") >= 0: channel = "e#nujj" if cut_name.find("HP") >= 0: channel += " HP" elif cut_name.find("LP") >= 0: channel += " LP" plots = createHistograms(cfg_example, verbose=False) for variable in variables: plot = plots[variable.name]
cfg_data_tight = HistogramCfg( name='tight_data', var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight + ' * ((genmet_pt < 0.) - (l2_gen_match == 5))') cfg_data_loose = HistogramCfg( name='loose_data', var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight + ' * ((genmet_pt < 0.) - (l2_gen_match == 5))') cfg_tight.cut = cuts[cut_name] cfg_loose.cut = cuts[cut_name].replace( 'l2_byCombinedIsolationDeltaBetaCorrRaw3Hits<1.5', '1.') cfg_data_tight.cut = cuts[cut_name] cfg_data_loose.cut = cuts[cut_name].replace( 'l2_byCombinedIsolationDeltaBetaCorrRaw3Hits<1.5', '1.') for variable in variables: cfg_tight.var = variable cfg_loose.var = variable cfg_data_tight.var = variable cfg_data_loose.var = variable plot_tight = createHistogram(cfg_tight, verbose=False) plot_loose = createHistogram(cfg_loose, verbose=False) plot_data_tight = createHistogram(cfg_data_tight,
cut=inc_cut, lumi=int_lumi, weight=total_weight + ' * ((l2_gen_match == 6))') tight_cut = inc_cut + cuts[cut_name] + cut_extra loose_cut = tight_cut.replace( 'l2_byIsolationMVArun2v1DBoldDMwLT>2.5', '1.') loose_cut = tight_cut.replace( 'l2_byIsolationMVArun2v1DBoldDMwLT>2.5', 'l2_byIsolationMVArun2v1DBoldDMwLT>0.5') print 'Tight cut:', tight_cut print 'Loose cut:', loose_cut cfg_tight.cut = tight_cut cfg_loose.cut = loose_cut cfg_tight.var = variable cfg_loose.var = variable plot_tight = createHistogram(cfg_tight, verbose=False) plot_loose = createHistogram(cfg_loose, verbose=False) tight_hist = plot_tight.GetStack().totalHist.weighted loose_hist = plot_loose.GetStack().totalHist.weighted plot_inputs.append((tight_hist, loose_hist, sample_def['name'], sample_def['colour'], sample_def['style'])) plotMCEffs(
cfg_tight_data = HistogramCfg( name='tight_data', var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight + '*( (is_data>0.5) - (abs(tau1_gen_pdgId)==15))') cfg_loose_data = HistogramCfg( name='loose_data', var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight + '*( (is_data>0.5) - (abs(tau1_gen_pdgId)==15))') cfg_tight.cut = cuts[cut_name][0] cfg_loose.cut = cuts[cut_name][1] cfg_tight_data.cut = cuts[cut_name][0] cfg_loose_data.cut = cuts[cut_name][1] for cfg in [cfg_tight, cfg_loose, cfg_tight_data, cfg_loose_data]: cfg.vars = variables plots_tight = createHistograms(cfg_tight, verbose=True) plots_loose = createHistograms(cfg_loose, verbose=True) plots_tight_data = createHistograms(cfg_tight_data, verbose=True, all_stack=True) plots_loose_data = createHistograms(cfg_loose_data, verbose=True, all_stack=True)
cfg_data_tight = HistogramCfg( name='tight_data', var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight + ' * ((genmet_pt < 0.) - (l2_gen_match == 5))') cfg_data_loose = HistogramCfg( name='loose_data', var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight + ' * ((genmet_pt < 0.) - (l2_gen_match == 5))') cfg_tight.cut = cuts[cut_name] cfg_loose.cut = cuts[cut_name].replace('tau1_decayModeFinding>0.', '1.') cfg_data_tight.cut = cuts[cut_name] cfg_data_loose.cut = cuts[cut_name].replace('tau1_decayModeFinding>0.', '1.') for variable in variables: cfg_tight.var = variable cfg_loose.var = variable cfg_data_tight.var = variable cfg_data_loose.var = variable plot_tight = createHistogram(cfg_tight, verbose=False) plot_loose = createHistogram(cfg_loose, verbose=False) plot_data_tight = createHistogram(cfg_data_tight, verbose=False,
if qcd_from_same_sign and not 'SS' in cut.name: cfg_example = HistogramCfg(name=cut.name, var=None, cfgs=samples_qcdfromss, cut=inc_cut, lumi=int_lumi, weight=total_weight) else: cfg_example = HistogramCfg(name=cut.name, var=None, cfgs=all_samples, cut=inc_cut, lumi=int_lumi, weight=total_weight) cfg_example.cut = cut.cut if qcd_from_same_sign and not 'SS' in cut.name: qcd.cut = cut.cut.replace('l1_charge != l2_charge', 'l1_charge == l2_charge') for variable in variables: cfg_example.var = variable if qcd_from_same_sign: qcd.var = variable # Can put into function but we will not want it by default if we take normalisations from e.g. high MT plot = createHistogram(cfg_example, verbose=False) plot.Group('VV', [ 'ZZTo2L2Q', 'WWTo1L1Nu2Q', 'WZTo1L3Nu', 'ZZTo4L', 'WZTo3L', 'WZTo2L2Q', 'WZTo1L1Nu2Q', 'T_tWch', 'TBar_tWch', 'TToLeptons_tch_powheg', 'TBarToLeptons_tch_powheg' ])
signal_cut_name, var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight) cfg_stack_loose = HistogramCfg(name='loose_stack' + cut_name + signal_cut_name, var=None, cfgs=samples, cut=inc_cut, lumi=int_lumi, weight=total_weight) for variable in variables: cfg_tight.cut = cuts[cut_name] + signal_cut cfg_loose.cut = cuts[cut_name] cfg_data_tight.cut = cuts[cut_name] + signal_cut cfg_data_loose.cut = cuts[cut_name] cfg_stack_tight.cut = cuts[cut_name] + signal_cut cfg_stack_loose.cut = cuts[cut_name] if variable.name in ['jet_pt_up', 'jet_pt_down']: for cfg in [ cfg_tight, cfg_loose, cfg_data_tight, cfg_data_loose, cfg_stack_tight, cfg_stack_loose ]: if variable.name == 'jet_pt_up': cfg.cut = cfg.cut.replace( 'jet_pt', '(jet_pt*(is_data + (1. - is_data)*jet_corrJECUp))'