def step2_1(WP=None): glue=True; addSYS=True; calcSYS=False for m, pt_bin in enumerate(pt_bins): start = time.time() file_name = r+name2+"_MCJP"+root if int(pt_bin.split("to")[-1]) <= 350: SF, pars, chi2 = runSF_x(file_name, pt_bins, m, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, systlist=syst_list, ccSignal=ccSignal) else: SF, pars, chi2 = runSF_x(file_name, pt_bins, m, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, systlist=syst_list, ccSignal=ccSignal) print SF print "Time to run: ", np.round((time.time() - start)/60, 2), "min" SF_dicts['SF_dict_{}'.format(WPs.index(WP))]['SF_JP'].append(float(str(SF)))
def step0(WP=None, pt_bin_ix=0, systname=None, addSYS=True): glue=True; calcSYS=False; # Glue templates to match final SF, add systematics to correlate, don't actually calcualate errors. pt_bin = pt_bins[pt_bin_ix] start = time.time() if int(pt_bin.split("to")[-1]) <= 350: file_name = r+name2+root SF, pars, chi2 = runSF_x(file_name, pt_bins, pt_bin_ix, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, LTSV=LTSV, systlist=syst_list, systname=systname, ccSignal=ccSignal) else: file_name = r+name2+root SF, pars, chi2 = runSF_x(file_name, pt_bins, pt_bin_ix, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, LTSV=LTSV, systlist=syst_list, systname=systname, ccSignal=ccSignal) #print " Time to run: ", np.round((time.time() - start)/60, 2), "min" return SF
def step2(WP=None): glue=False; addSYS=True; calcSYS=False; for m, pt_bin in enumerate(pt_bins): start = time.time() if int(pt_bin.split("to")[-1]) <= 350: file_name = r+name2+root SF, pars, chi2 = runSF_x(file_name, pt_bins, m, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, LTSV=LTSV, systlist=syst_list, ccSignal=ccSignal) else: #file_name = r+name2+WP+root file_name = r+name2+root SF, pars, chi2 = runSF_x(file_name, pt_bins, m, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, LTSV=LTSV, systlist=syst_list, ccSignal=ccSignal) print " ", SF print " Time to run: ", np.round((time.time() - start)/60, 2), "min" SF_dicts['SF_dict_{}'.format(WPs.index(WP))]['SF_5_temp'].append(float(str(SF))) return
def step0(pt_bins, WP=WP, sys=None, SV=True): glue = True calcSYS = False addSYS = False SFs = [] chi2sS = [] for m, pt_bin in enumerate(pt_bins): start = time.time() print WP, m, pt_bin merge = False if WP == 'DoubleBM2' and m in [1]: merge = 2 if WP == 'DoubleBM2' and m in [2]: merge = True if WP == 'DoubleBH' and m in [1]: merge = 2 if WP == 'DoubleBH' and m in [0, 2]: merge = True if m in [0, 1]: file_name = r1 + name1 + "_" + WP + root SF, pars, chi2s = runSF_x(file_name, pt_bins, m, WP, merge=merge, glue=glue, addSYS=addSYS, calcSYS=calcSYS, systname=sys, SV=SV) else: file_name = r1 + name2 + "_" + WP + root SF, pars, chi2s = runSF_x(file_name, pt_bins, m, WP, merge=merge, glue=glue, addSYS=addSYS, calcSYS=calcSYS, systname=sys, SV=SV) #SF = 1 #chi2s = [1,1,1,1,1,1] chi2sS.append(chi2s) SFs.append(SF) print "Time to run: ", np.round((time.time() - start) / 60, 2), "min" return SFs, chi2sS
def step1(templates=templates, WP=None): glue=True; addSYS=True; calcSYS=False; # Glue templates to match final SF, add systematics to correlate, don't actually calcualate errors. print WP for n, template in enumerate(templates): for m, pt_bin in enumerate(pt_bins): start = time.time() if int(pt_bin.split("to")[-1]) <= 350: file_name = r+name2+"_"+WP+"_"+template+root SF, pars, chi2 = runSF_x(file_name, pt_bins, m, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, LTSV=LTSV, systlist=syst_list, ccSignal=ccSignal) else: file_name = r+name2+"_"+template+root print file_name SF, pars, chi2 = runSF_x(file_name, pt_bins, m, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, LTSV=LTSV, systlist=syst_list, ccSignal=ccSignal) #SF, pars, chi2 = runSF_x(file_name, pt_bins, m, WP, merge=merge, glue=glue, addSYS=addSYS, calcSYS=calcSYS) print " ", SF print " Time to run: ", np.round((time.time() - start)/60, 2), "min" SF_dicts['SF_dict_{}'.format(WPs.index(WP))]['SF_'+template].append(float(str(SF))) return
def step3(WP=None, pt_bin_ix=0, SF_dict=SF_dict_empty): glue=True; calcSYS=True; addSYS=True pt_bin = pt_bins[pt_bin_ix] start = time.time() if int(pt_bin.split("to")[-1]) <= 350: file_name = r+name2+"_"+WP+root file_name = r+name2+root SF, sigma_stat, syst_up, syst_down, variances_names, errors, variances, nom_pars, chi2 = runSF_x(file_name, pt_bins, pt_bin_ix, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, SF_dict=SF_dict, LTSV=LTSV, systlist=syst_list, ccSignal=ccSignal) else: file_name = r+name2+root SF_dict = SF_dicts['SF_dict_{}'.format(WPs.index(WP))] SF, sigma_stat, syst_up, syst_down, variances_names, errors, variances, nom_pars, chi2 = runSF_x(file_name, pt_bins, pt_bin_ix, WP, glue=glue, addSYS=addSYS, calcSYS=calcSYS, SF_dict=SF_dict, LTSV=LTSV, systlist=syst_list, ccSignal=ccSignal) if LTSV: SF_SV = (nom_pars[5]/nom_pars[4]) SF_JP = (nom_pars[2]/nom_pars[0]) tageff = (nom_pars[3]/nom_pars[2]) preeff = (nom_pars[1]/nom_pars[0]) else: SF_SV = 0. SF_JP = 0. tageff = 0. preeff = 0. print "Time to run: ", np.round((time.time() - start)/60, 2), "min" return SF, sigma_stat, syst_up, syst_down, variances_names, errors, variances, SF_SV, preeff, tageff, SF_JP