Пример #1
0
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)))
Пример #2
0
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
Пример #3
0
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 
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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