本文整理汇总了Python中tools.plotting.Histogram_properties.y_limits方法的典型用法代码示例。如果您正苦于以下问题:Python Histogram_properties.y_limits方法的具体用法?Python Histogram_properties.y_limits怎么用?Python Histogram_properties.y_limits使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tools.plotting.Histogram_properties
的用法示例。
在下文中一共展示了Histogram_properties.y_limits方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: plot_bias
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def plot_bias(unfolded_and_truths, variable, channel, come, method):
hp = Histogram_properties()
hp.name = 'Bias_{channel}_{variable}_at_{come}TeV'.format(
channel=channel,
variable=variable,
come=come,
)
v_latex = latex_labels.variables_latex[variable]
unit = ''
if variable in ['HT', 'ST', 'MET', 'WPT', 'lepton_pt']:
unit = ' [GeV]'
hp.x_axis_title = v_latex + unit
# plt.ylabel( r, CMS.y_axis_title )
hp.y_axis_title = 'Unfolded / Truth'
hp.y_limits = [0.92, 1.08]
hp.title = 'Bias for {variable}'.format(variable=v_latex)
output_folder = 'plots/unfolding/bias_test/'
measurements = { 'Central' : unfolded_and_truths['Central']['bias'] }
models = {}
for sample in unfolded_and_truths:
if sample == 'Central' : continue
models[sample] = unfolded_and_truths[sample]['bias']
compare_measurements(
models = models,
measurements = measurements,
show_measurement_errors=True,
histogram_properties=hp,
save_folder=output_folder,
save_as=['pdf'],
match_models_to_measurements = True)
示例2: plot_results
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def plot_results ( results ):
'''
Takes results fo the form:
{centre-of-mass-energy: {
channel : {
variable : {
fit_variable : {
test : { sample : []},
}
}
}
}
}
'''
global options
output_base = 'plots/fit_checks/chi2'
for COMEnergy in results.keys():
tmp_result_1 = results[COMEnergy]
for channel in tmp_result_1.keys():
tmp_result_2 = tmp_result_1[channel]
for variable in tmp_result_2.keys():
tmp_result_3 = tmp_result_2[variable]
for fit_variable in tmp_result_3.keys():
tmp_result_4 = tmp_result_3[fit_variable]
# histograms should be {sample: {test : histogram}}
histograms = {}
for test, chi2 in tmp_result_4.iteritems():
for sample in chi2.keys():
if not histograms.has_key(sample):
histograms[sample] = {}
# reverse order of test and sample
histograms[sample][test] = value_tuplelist_to_hist(chi2[sample], bin_edges[variable])
for sample in histograms.keys():
hist_properties = Histogram_properties()
hist_properties.name = sample.replace('+', '') + '_chi2'
hist_properties.title = '$\\chi^2$ distribution for fit output (' + sample + ')'
hist_properties.x_axis_title = '$' + latex_labels.variables_latex[variable] + '$ [TeV]'
hist_properties.y_axis_title = '$\chi^2 = \\left({N_{fit}} - N_{{exp}}\\right)^2$'
hist_properties.set_log_y = True
hist_properties.y_limits = (1e-20, 1e20)
path = output_base + '/' + COMEnergy + 'TeV/' + channel + '/' + variable + '/' + fit_variable + '/'
if options.test:
path = output_base + '/test/'
measurements = {}
for test, histogram in histograms[sample].iteritems():
measurements[test.replace('_',' ')] = histogram
compare_measurements({},
measurements,
show_measurement_errors = False,
histogram_properties = hist_properties,
save_folder = path,
save_as = ['pdf'])
示例3: plot_fit_results
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def plot_fit_results(fit_results, initial_values, channel):
global variable, output_folder
title = electron_histogram_title if channel == "electron" else muon_histogram_title
histogram_properties = Histogram_properties()
histogram_properties.title = title
histogram_properties.x_axis_title = variable + " [GeV]"
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = "upper right"
# we will need 4 histograms: TTJet, SingleTop, QCD, V+Jets
for sample in ["TTJet", "SingleTop", "QCD", "V+Jets"]:
histograms = {}
# absolute eta measurement as baseline
h_absolute_eta = None
h_before = None
histogram_properties.y_axis_title = "Fitted number of events for " + samples_latex[sample]
for fit_var_input in fit_results.keys():
latex_string = create_latex_string(fit_var_input)
fit_data = fit_results[fit_var_input][sample]
h = value_error_tuplelist_to_hist(fit_data, bin_edges[variable])
if fit_var_input == "absolute_eta":
h_absolute_eta = h
elif fit_var_input == "before":
h_before = h
else:
histograms[latex_string] = h
graphs = spread_x(histograms.values(), bin_edges[variable])
for key, graph in zip(histograms.keys(), graphs):
histograms[key] = graph
filename = sample.replace("+", "_") + "_fit_var_comparison_" + channel
histogram_properties.name = filename
histogram_properties.y_limits = 0, limit_range_y(h_absolute_eta)[1] * 1.3
histogram_properties.x_limits = bin_edges[variable][0], bin_edges[variable][-1]
h_initial_values = value_error_tuplelist_to_hist(initial_values[sample], bin_edges[variable])
h_initial_values.Scale(closure_tests["simple"][sample])
compare_measurements(
models={
fit_variables_latex["absolute_eta"]: h_absolute_eta,
"initial values": h_initial_values,
"before": h_before,
},
measurements=histograms,
show_measurement_errors=True,
histogram_properties=histogram_properties,
save_folder=output_folder,
save_as=["png", "pdf"],
)
示例4: plot_fit_results
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def plot_fit_results( fit_results, initial_values, channel ):
global variable, output_folder
title = electron_histogram_title if channel == 'electron' else muon_histogram_title
histogram_properties = Histogram_properties()
histogram_properties.title = title
histogram_properties.x_axis_title = variable + ' [GeV]'
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = 'upper right'
# we will need 4 histograms: TTJet, SingleTop, QCD, V+Jets
for sample in ['TTJet', 'SingleTop', 'QCD', 'V+Jets']:
histograms = {}
# absolute eta measurement as baseline
h_absolute_eta = None
h_before = None
histogram_properties.y_axis_title = 'Fitted number of events for ' + samples_latex[sample]
for fit_var_input in fit_results.keys():
latex_string = create_latex_string( fit_var_input )
fit_data = fit_results[fit_var_input][sample]
h = value_error_tuplelist_to_hist( fit_data,
bin_edges[variable] )
if fit_var_input == 'absolute_eta':
h_absolute_eta = h
elif fit_var_input == 'before':
h_before = h
else:
histograms[latex_string] = h
graphs = spread_x( histograms.values(), bin_edges[variable] )
for key, graph in zip( histograms.keys(), graphs ):
histograms[key] = graph
filename = sample.replace( '+', '_' ) + '_fit_var_comparison_' + channel
histogram_properties.name = filename
histogram_properties.y_limits = 0, limit_range_y( h_absolute_eta )[1] * 1.3
histogram_properties.x_limits = bin_edges[variable][0], bin_edges[variable][-1]
h_initial_values = value_error_tuplelist_to_hist( initial_values[sample],
bin_edges[variable] )
h_initial_values.Scale(closure_tests['simple'][sample])
compare_measurements( models = {fit_variables_latex['absolute_eta']:h_absolute_eta,
'initial values' : h_initial_values,
'before': h_before},
measurements = histograms,
show_measurement_errors = True,
histogram_properties = histogram_properties,
save_folder = output_folder,
save_as = ['png', 'pdf'] )
示例5: plot_fit_results
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def plot_fit_results(fit_results, centre_of_mass, channel, variable, k_value,
tau_value, output_folder, output_formats, bin_edges):
h_mean = Hist(bin_edges, type='D')
h_sigma = Hist(bin_edges, type='D')
n_bins = h_mean.nbins()
assert len(fit_results) == n_bins
for i, fr in enumerate(fit_results):
h_mean.SetBinContent(i + 1, fr.mean)
h_mean.SetBinError(i + 1, fr.meanError)
h_sigma.SetBinContent(i + 1, fr.sigma)
h_sigma.SetBinError(i + 1, fr.sigmaError)
histogram_properties = Histogram_properties()
name_mpt = 'pull_distribution_mean_and_sigma_{0}_{1}_{2}TeV'
histogram_properties.name = name_mpt.format(
variable,
channel,
centre_of_mass
)
histogram_properties.y_axis_title = r'$\mu_{\text{pull}}$ ($\sigma_{\text{pull}}$)'
histogram_properties.x_axis_title = latex_labels.variables_latex[variable]
value = get_value_title(k_value, tau_value)
title = 'pull distribution mean \& sigma for {0}'.format(value)
histogram_properties.title = title
histogram_properties.y_limits = [-0.5, 2]
histogram_properties.xerr = True
compare_measurements(
models={
'ideal $\mu$': make_line_hist(bin_edges, 0),
'ideal $\sigma$': make_line_hist(bin_edges, 1)
},
measurements={
r'$\mu_{\text{pull}}$': h_mean,
r'$\sigma_{\text{pull}}$': h_sigma
},
show_measurement_errors=True,
histogram_properties=histogram_properties,
save_folder=output_folder,
save_as=output_formats)
示例6: make_ttbarReco_plot
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def make_ttbarReco_plot( channel, x_axis_title, y_axis_title,
signal_region_tree,
control_region_tree,
branchName,
name_prefix, x_limits, nBins,
use_qcd_data_region = False,
y_limits = [],
y_max_scale = 1.2,
rebin = 1,
legend_location = ( 0.98, 0.78 ), cms_logo_location = 'right',
log_y = False,
legend_color = False,
ratio_y_limits = [0.3, 1.7],
normalise = False,
):
global output_folder, measurement_config, category, normalise_to_fit
global preliminary, norm_variable, sum_bins, b_tag_bin, histogram_files
# Input files, normalisations, tree/region names
qcd_data_region = ''
title = title_template % ( measurement_config.new_luminosity / 1000., measurement_config.centre_of_mass_energy )
normalisation = None
if channel == 'electron':
histogram_files['data'] = measurement_config.data_file_electron_trees
histogram_files['QCD'] = measurement_config.electron_QCD_MC_category_templates_trees[category]
if normalise_to_fit:
normalisation = normalisations_electron[norm_variable]
if use_qcd_data_region:
qcd_data_region = 'QCDConversions'
if channel == 'muon':
histogram_files['data'] = measurement_config.data_file_muon_trees
histogram_files['QCD'] = measurement_config.muon_QCD_MC_category_templates_trees[category]
if normalise_to_fit:
normalisation = normalisations_muon[norm_variable]
if use_qcd_data_region:
qcd_data_region = 'QCD non iso mu+jets ge3j'
histograms = get_histograms_from_trees( trees = [signal_region_tree, control_region_tree], branch = branchName, weightBranch = '1', files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1] )
selection = 'SolutionCategory == 0'
histogramsNoSolution = get_histograms_from_trees( trees = [signal_region_tree], branch = branchName, weightBranch = '1', selection = selection, files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1] )
selection = 'SolutionCategory == 1'
histogramsCorrect = get_histograms_from_trees( trees = [signal_region_tree], branch = branchName, weightBranch = '1', selection = selection, files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1] )
selection = 'SolutionCategory == 2'
histogramsNotSL = get_histograms_from_trees( trees = [signal_region_tree], branch = branchName, weightBranch = '1', selection = selection, files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1] )
selection = 'SolutionCategory == 3'
histogramsNotReco = get_histograms_from_trees( trees = [signal_region_tree], branch = branchName, weightBranch = '1', selection = selection, files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1] )
selection = 'SolutionCategory > 3'
histogramsWrong = get_histograms_from_trees( trees = [signal_region_tree], branch = branchName, weightBranch = '1', selection = selection, files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1] )
# Split histograms up into signal/control (?)
signal_region_hists = {}
inclusive_control_region_hists = {}
for sample in histograms.keys():
signal_region_hists[sample] = histograms[sample][signal_region_tree]
if use_qcd_data_region:
inclusive_control_region_hists[sample] = histograms[sample][control_region_tree]
prepare_histograms( histograms, rebin = 1, scale_factor = measurement_config.luminosity_scale )
prepare_histograms( histogramsNoSolution, rebin = 1, scale_factor = measurement_config.luminosity_scale )
prepare_histograms( histogramsCorrect, rebin = 1, scale_factor = measurement_config.luminosity_scale )
prepare_histograms( histogramsNotSL, rebin = 1, scale_factor = measurement_config.luminosity_scale )
prepare_histograms( histogramsNotReco, rebin = 1, scale_factor = measurement_config.luminosity_scale )
prepare_histograms( histogramsWrong, rebin = 1, scale_factor = measurement_config.luminosity_scale )
qcd_from_data = signal_region_hists['QCD']
# Which histograms to draw, and properties
histograms_to_draw = [signal_region_hists['data'], qcd_from_data,
signal_region_hists['V+Jets'],
signal_region_hists['SingleTop'],
histogramsNoSolution['TTJet'][signal_region_tree],
histogramsNotSL['TTJet'][signal_region_tree],
histogramsNotReco['TTJet'][signal_region_tree],
histogramsWrong['TTJet'][signal_region_tree],
histogramsCorrect['TTJet'][signal_region_tree]
]
histogram_lables = ['data', 'QCD', 'V+Jets', 'Single-Top',
samples_latex['TTJet'] + ' - no solution',
samples_latex['TTJet'] + ' - not SL',
samples_latex['TTJet'] + ' - not reconstructible',
samples_latex['TTJet'] + ' - wrong reco',
samples_latex['TTJet'] + ' - correct',
]
histogram_colors = ['black', 'yellow', 'green', 'magenta',
'black',
'burlywood',
'chartreuse',
'blue',
'red'
]
histogram_properties = Histogram_properties()
histogram_properties.name = name_prefix + b_tag_bin
if category != 'central':
histogram_properties.name += '_' + category
#.........这里部分代码省略.........
示例7: make_plot
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def make_plot( channel, x_axis_title, y_axis_title,
signal_region_tree,
control_region_tree,
branchName,
name_prefix, x_limits, nBins,
use_qcd_data_region = False,
compare_qcd_signal_with_data_control = False,
y_limits = [],
y_max_scale = 1.3,
rebin = 1,
legend_location = ( 0.98, 0.78 ), cms_logo_location = 'right',
log_y = False,
legend_color = False,
ratio_y_limits = [0.3, 2.5],
normalise = False,
):
global output_folder, measurement_config, category, normalise_to_fit
global preliminary, norm_variable, sum_bins, b_tag_bin, histogram_files
controlToCompare = []
if 'electron' in channel :
controlToCompare = ['QCDConversions', 'QCD non iso e+jets']
elif 'muon' in channel :
controlToCompare = ['QCD iso > 0.3', 'QCD 0.12 < iso <= 0.3']
histogramsToCompare = {}
for qcd_data_region in controlToCompare:
print 'Doing ',qcd_data_region
# Input files, normalisations, tree/region names
title = title_template % ( measurement_config.new_luminosity, measurement_config.centre_of_mass_energy )
normalisation = None
weightBranchSignalRegion = 'EventWeight'
if 'electron' in channel:
histogram_files['data'] = measurement_config.data_file_electron_trees
histogram_files['QCD'] = measurement_config.electron_QCD_MC_category_templates_trees[category]
if normalise_to_fit:
normalisation = normalisations_electron[norm_variable]
# if use_qcd_data_region:
# qcd_data_region = 'QCDConversions'
# # qcd_data_region = 'QCD non iso e+jets'
if not 'QCD' in channel and not 'NPU' in branchName:
weightBranchSignalRegion += ' * ElectronEfficiencyCorrection'
if 'muon' in channel:
histogram_files['data'] = measurement_config.data_file_muon_trees
histogram_files['QCD'] = measurement_config.muon_QCD_MC_category_templates_trees[category]
if normalise_to_fit:
normalisation = normalisations_muon[norm_variable]
# if use_qcd_data_region:
# qcd_data_region = 'QCD iso > 0.3'
if not 'QCD' in channel and not 'NPU' in branchName:
weightBranchSignalRegion += ' * MuonEfficiencyCorrection'
if not "_NPUNoWeight" in name_prefix:
weightBranchSignalRegion += ' * PUWeight'
if not "_NBJetsNoWeight" in name_prefix:
weightBranchSignalRegion += ' * BJetWeight'
selection = '1'
if branchName == 'abs(lepton_eta)' :
selection = 'lepton_eta > -10'
else:
selection = '%s >= 0' % branchName
# if 'QCDConversions' in signal_region_tree:
# selection += '&& isTightElectron'
# print selection
histograms = get_histograms_from_trees( trees = [signal_region_tree, control_region_tree], branch = branchName, weightBranch = weightBranchSignalRegion, files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1], selection = selection )
histograms_QCDControlRegion = None
if use_qcd_data_region:
qcd_control_region = signal_region_tree.replace( 'Ref selection', qcd_data_region )
histograms_QCDControlRegion = get_histograms_from_trees( trees = [qcd_control_region], branch = branchName, weightBranch = 'EventWeight', files = histogram_files, nBins = nBins, xMin = x_limits[0], xMax = x_limits[-1], selection = selection )
# Split histograms up into signal/control (?)
signal_region_hists = {}
control_region_hists = {}
for sample in histograms.keys():
signal_region_hists[sample] = histograms[sample][signal_region_tree]
if compare_qcd_signal_with_data_control:
if sample is 'data':
signal_region_hists[sample] = histograms[sample][control_region_tree]
elif sample is 'QCD' :
signal_region_hists[sample] = histograms[sample][signal_region_tree]
else:
del signal_region_hists[sample]
if use_qcd_data_region:
control_region_hists[sample] = histograms_QCDControlRegion[sample][qcd_control_region]
# Prepare histograms
if normalise_to_fit:
# only scale signal region to fit (results are invalid for control region)
prepare_histograms( signal_region_hists, rebin = rebin,
scale_factor = measurement_config.luminosity_scale,
normalisation = normalisation )
elif normalise_to_data:
totalMC = 0
for sample in signal_region_hists:
if sample is 'data' : continue
totalMC += signal_region_hists[sample].Integral()
#.........这里部分代码省略.........
示例8: do_shape_check
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def do_shape_check(channel, control_region_1, control_region_2, variable, normalisation, title, x_title, y_title, x_limits, y_limits,
name_region_1='conversions' , name_region_2='non-isolated electrons', name_region_3='fit results', rebin=1):
global b_tag_bin
# QCD shape comparison
if channel == 'electron':
histograms = get_histograms_from_files([control_region_1, control_region_2], histogram_files)
region_1 = histograms[channel][control_region_1].Clone() - histograms['TTJet'][control_region_1].Clone() - histograms['V+Jets'][control_region_1].Clone() - histograms['SingleTop'][control_region_1].Clone()
region_2 = histograms[channel][control_region_2].Clone() - histograms['TTJet'][control_region_2].Clone() - histograms['V+Jets'][control_region_2].Clone() - histograms['SingleTop'][control_region_2].Clone()
region_1.Rebin(rebin)
region_2.Rebin(rebin)
histogram_properties = Histogram_properties()
histogram_properties.name = 'QCD_control_region_comparison_' + channel + '_' + variable + '_' + b_tag_bin
histogram_properties.title = title + ', ' + b_tag_bins_latex[b_tag_bin]
histogram_properties.x_axis_title = x_title
histogram_properties.y_axis_title = 'arbitrary units/(0.1)'
histogram_properties.x_limits = x_limits
histogram_properties.y_limits = y_limits[0]
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = 'upper right'
make_control_region_comparison(region_1, region_2,
name_region_1=name_region_1, name_region_2=name_region_2,
histogram_properties=histogram_properties, save_folder=output_folder)
# QCD shape comparison to fit results
histograms = get_histograms_from_files([control_region_1], histogram_files)
region_1_tmp = histograms[channel][control_region_1].Clone() - histograms['TTJet'][control_region_1].Clone() - histograms['V+Jets'][control_region_1].Clone() - histograms['SingleTop'][control_region_1].Clone()
region_1 = rebin_asymmetric(region_1_tmp, bin_edges[variable])
fit_results_QCD = normalisation[variable]['QCD']
region_2 = value_error_tuplelist_to_hist(fit_results_QCD, bin_edges_vis[variable])
histogram_properties = Histogram_properties()
histogram_properties.name = 'QCD_control_region_comparison_' + channel + '_' + variable + '_fits_with_conversions_' + b_tag_bin
histogram_properties.title = title + ', ' + b_tag_bins_latex[b_tag_bin]
histogram_properties.x_axis_title = x_title
histogram_properties.y_axis_title = 'arbitrary units/(0.1)'
histogram_properties.x_limits = x_limits
histogram_properties.y_limits = y_limits[1]
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = 'upper right'
make_control_region_comparison(region_1, region_2,
name_region_1=name_region_1, name_region_2=name_region_3,
histogram_properties=histogram_properties, save_folder=output_folder)
histograms = get_histograms_from_files([control_region_2], histogram_files)
region_1_tmp = histograms[channel][control_region_2].Clone() - histograms['TTJet'][control_region_2].Clone() - histograms['V+Jets'][control_region_2].Clone() - histograms['SingleTop'][control_region_2].Clone()
region_1 = rebin_asymmetric(region_1_tmp, bin_edges_vis[variable])
fit_results_QCD = normalisation[variable]['QCD']
region_2 = value_error_tuplelist_to_hist(fit_results_QCD, bin_edges[variable])
histogram_properties = Histogram_properties()
histogram_properties.name = 'QCD_control_region_comparison_' + channel + '_' + variable + '_fits_with_noniso_' + b_tag_bin
histogram_properties.title = title + ', ' + b_tag_bins_latex[b_tag_bin]
histogram_properties.x_axis_title = x_title
histogram_properties.y_axis_title = 'arbitrary units/(0.1)'
histogram_properties.x_limits = x_limits
histogram_properties.y_limits = y_limits[1]
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = 'upper right'
make_control_region_comparison(region_1, region_2,
name_region_1=name_region_2, name_region_2=name_region_3,
histogram_properties=histogram_properties, save_folder=output_folder)
示例9: do_shape_check
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def do_shape_check(
channel,
control_region_1,
control_region_2,
variable,
normalisation,
title,
x_title,
y_title,
x_limits,
y_limits,
name_region_1="conversions",
name_region_2="non-isolated electrons",
name_region_3="fit results",
rebin=1,
):
global b_tag_bin
# QCD shape comparison
if channel == "electron":
histograms = get_histograms_from_files([control_region_1, control_region_2], histogram_files)
region_1 = (
histograms[channel][control_region_1].Clone()
- histograms["TTJet"][control_region_1].Clone()
- histograms["V+Jets"][control_region_1].Clone()
- histograms["SingleTop"][control_region_1].Clone()
)
region_2 = (
histograms[channel][control_region_2].Clone()
- histograms["TTJet"][control_region_2].Clone()
- histograms["V+Jets"][control_region_2].Clone()
- histograms["SingleTop"][control_region_2].Clone()
)
region_1.Rebin(rebin)
region_2.Rebin(rebin)
histogram_properties = Histogram_properties()
histogram_properties.name = "QCD_control_region_comparison_" + channel + "_" + variable + "_" + b_tag_bin
histogram_properties.title = title + ", " + b_tag_bins_latex[b_tag_bin]
histogram_properties.x_axis_title = x_title
histogram_properties.y_axis_title = "arbitrary units/(0.1)"
histogram_properties.x_limits = x_limits
histogram_properties.y_limits = y_limits[0]
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = "upper right"
make_control_region_comparison(
region_1,
region_2,
name_region_1=name_region_1,
name_region_2=name_region_2,
histogram_properties=histogram_properties,
save_folder=output_folder,
)
# QCD shape comparison to fit results
histograms = get_histograms_from_files([control_region_1], histogram_files)
region_1_tmp = (
histograms[channel][control_region_1].Clone()
- histograms["TTJet"][control_region_1].Clone()
- histograms["V+Jets"][control_region_1].Clone()
- histograms["SingleTop"][control_region_1].Clone()
)
region_1 = rebin_asymmetric(region_1_tmp, bin_edges[variable])
fit_results_QCD = normalisation[variable]["QCD"]
region_2 = value_error_tuplelist_to_hist(fit_results_QCD, bin_edges[variable])
histogram_properties = Histogram_properties()
histogram_properties.name = (
"QCD_control_region_comparison_" + channel + "_" + variable + "_fits_with_conversions_" + b_tag_bin
)
histogram_properties.title = title + ", " + b_tag_bins_latex[b_tag_bin]
histogram_properties.x_axis_title = x_title
histogram_properties.y_axis_title = "arbitrary units/(0.1)"
histogram_properties.x_limits = x_limits
histogram_properties.y_limits = y_limits[1]
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = "upper right"
make_control_region_comparison(
region_1,
region_2,
name_region_1=name_region_1,
name_region_2=name_region_3,
histogram_properties=histogram_properties,
save_folder=output_folder,
)
histograms = get_histograms_from_files([control_region_2], histogram_files)
region_1_tmp = (
histograms[channel][control_region_2].Clone()
- histograms["TTJet"][control_region_2].Clone()
- histograms["V+Jets"][control_region_2].Clone()
- histograms["SingleTop"][control_region_2].Clone()
)
region_1 = rebin_asymmetric(region_1_tmp, bin_edges[variable])
fit_results_QCD = normalisation[variable]["QCD"]
#.........这里部分代码省略.........
示例10: Histogram_properties
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
# plot with matplotlib
plot_with_plotting_script = True
if plot_with_plotting_script:
properties = Histogram_properties()
properties.name = 'matplotlib_hist'
properties.x_axis_title = 'Mass'
properties.y_axis_title = 'Events'
make_data_mc_comparison_plot( [h3, h1, h2], ['data', 'background', 'signal'], ['black', 'green', 'red'], properties )
properties.name += '_with_ratio'
make_data_mc_comparison_plot( [h3, h1, h2], ['data', 'background', 'signal'], ['black', 'green', 'red'], properties, show_ratio = True )
properties.name = 'matplotlib_hist_comparison'
properties.y_limits = [0, 0.4]
make_control_region_comparison( h1, h2, 'background', 'signal', properties )
else:
fig = plt.figure(figsize=(14, 10), dpi=300)#, facecolor='white')
axes = plt.axes()
axes.xaxis.set_minor_locator(AutoMinorLocator())
axes.yaxis.set_minor_locator(AutoMinorLocator())
# axes.yaxis.set_major_locator(MultipleLocator(20))
axes.tick_params(which='major', labelsize=15, length=8)
axes.tick_params(which='minor', length=4)
rplt.errorbar(h3, xerr=False, emptybins=False, axes=axes, zorder = 4)
rplt.hist(stack, stacked=True, axes=axes, zorder = 1)
plt.xlabel('Mass', position=(1., 0.), ha='right')
plt.ylabel('Events', position=(0., 1.), va='bottom', ha='right')
plt.legend(numpoints=1)
示例11: Histogram_properties
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
histogram_colors = ['black', 'yellow',
'green', 'magenta', 'red']
histogram_properties = Histogram_properties()
histogram_properties.name = '%s_%s' % (channel, var)
if category != 'central':
histogram_properties.name += '_' + category
if channel == 'EPlusJets':
histogram_properties.title = e_title
elif channel == 'MuPlusJets':
histogram_properties.title = mu_title
eventsPerBin = (xMax - xMin) / nBins
histogram_properties.x_axis_title = '%s [GeV]' % ( variables_latex[var] )
histogram_properties.y_axis_title = 'Events/(%.2g GeV)' % (eventsPerBin)
histogram_properties.y_limits = [0, histograms['data'][signalTree].GetMaximum() * 1.3 ]
# histogram_properties.set_log_y = True
histogram_properties.name += '_with_ratio'
make_data_mc_comparison_plot( histograms_to_draw, histogram_lables, histogram_colors,
histogram_properties, save_folder = output_folder, show_ratio = True )
if normalise_to_fit : continue
# Fit variables (inclusive)
for var in ['M3', 'angle_bl', 'M_bl', 'absolute_eta']:
print '--->',var
signal_region = 'Ref selection'
signalTree = 'TTbar_plus_X_analysis/%s/%s/FitVariables' % ( channel, signal_region )
bins = fit_variable_bin_edges[var]
示例12: make_correlation_plot_from_file
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_limits [as 别名]
def make_correlation_plot_from_file( channel, variable, fit_variables, CoM, title, x_title, y_title, x_limits, y_limits, rebin = 1, save_folder = 'plots/fitchecks/', save_as = ['pdf', 'png'] ):
# global b_tag_bin
parameters = ["TTJet", "SingleTop", "V+Jets", "QCD"]
parameters_latex = []
for template in parameters:
parameters_latex.append(samples_latex[template])
input_file = open( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), "r" )
# cycle through the lines in the file
for line_number, line in enumerate( input_file ):
# for now, only make plots for the fits for the central measurement
if "central" in line:
# matrix we want begins 11 lines below the line with the measurement ("central")
line_number = line_number + 11
break
input_file.close()
#Note: For some reason, the fit outputs the correlation matrix with the templates in the following order:
#parameter1: QCD
#parameter2: SingleTop
#parameter3: TTJet
#parameter4: V+Jets
for variable_bin in variable_bins_ROOT[variable]:
weights = {}
if channel == 'electron':
#formula to calculate the number of lines below "central" to access in each loop
number_of_lines_down = (variable_bins_ROOT[variable].index( variable_bin ) * 12)
#Get QCD correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down )
weights["QCD_QCD"] = matrix_line.split()[2]
weights["QCD_SingleTop"] = matrix_line.split()[3]
weights["QCD_TTJet"] = matrix_line.split()[4]
weights["QCD_V+Jets"] = matrix_line.split()[5]
#Get SingleTop correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down + 1 )
weights["SingleTop_QCD"] = matrix_line.split()[2]
weights["SingleTop_SingleTop"] = matrix_line.split()[3]
weights["SingleTop_TTJet"] = matrix_line.split()[4]
weights["SingleTop_V+Jets"] = matrix_line.split()[5]
#Get TTJet correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down + 2 )
weights["TTJet_QCD"] = matrix_line.split()[2]
weights["TTJet_SingleTop"] = matrix_line.split()[3]
weights["TTJet_TTJet"] = matrix_line.split()[4]
weights["TTJet_V+Jets"] = matrix_line.split()[5]
#Get V+Jets correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down + 3 )
weights["V+Jets_QCD"] = matrix_line.split()[2]
weights["V+Jets_SingleTop"] = matrix_line.split()[3]
weights["V+Jets_TTJet"] = matrix_line.split()[4]
weights["V+Jets_V+Jets"] = matrix_line.split()[5]
if channel == 'muon':
#formula to calculate the number of lines below "central" to access in each bin loop
number_of_lines_down = ( len( variable_bins_ROOT [variable] ) * 12 ) + ( variable_bins_ROOT[variable].index( variable_bin ) * 12 )
#Get QCD correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down )
weights["QCD_QCD"] = matrix_line.split()[2]
weights["QCD_SingleTop"] = matrix_line.split()[3]
weights["QCD_TTJet"] = matrix_line.split()[4]
weights["QCD_V+Jets"] = matrix_line.split()[5]
#Get SingleTop correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down + 1 )
weights["SingleTop_QCD"] = matrix_line.split()[2]
weights["SingleTop_SingleTop"] = matrix_line.split()[3]
weights["SingleTop_TTJet"] = matrix_line.split()[4]
weights["SingleTop_V+Jets"] = matrix_line.split()[5]
#Get TTJet correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down + 2 )
weights["TTJet_QCD"] = matrix_line.split()[2]
weights["TTJet_SingleTop"] = matrix_line.split()[3]
weights["TTJet_TTJet"] = matrix_line.split()[4]
weights["TTJet_V+Jets"] = matrix_line.split()[5]
#Get V+Jets correlations
matrix_line = linecache.getline( "logs/01_%s_fit_%dTeV_%s.log" % ( variable, CoM, fit_variables ), line_number + number_of_lines_down + 3 )
weights["V+Jets_QCD"] = matrix_line.split()[2]
weights["V+Jets_SingleTop"] = matrix_line.split()[3]
weights["V+Jets_TTJet"] = matrix_line.split()[4]
weights["V+Jets_V+Jets"] = matrix_line.split()[5]
#Create histogram
histogram_properties = Histogram_properties()
histogram_properties.title = title
histogram_properties.name = 'Correlations_' + channel + '_' + variable + '_' + variable_bin
histogram_properties.y_axis_title = y_title
histogram_properties.x_axis_title = x_title
histogram_properties.y_limits = y_limits
histogram_properties.x_limits = x_limits
histogram_properties.mc_error = 0.0
histogram_properties.legend_location = 'upper right'
#.........这里部分代码省略.........