本文整理汇总了Python中tools.plotting.Histogram_properties.x_limits方法的典型用法代码示例。如果您正苦于以下问题:Python Histogram_properties.x_limits方法的具体用法?Python Histogram_properties.x_limits怎么用?Python Histogram_properties.x_limits使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tools.plotting.Histogram_properties
的用法示例。
在下文中一共展示了Histogram_properties.x_limits方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: plot_fit_results
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def plot_fit_results( histograms, category, channel ):
global variable, b_tag_bin, output_folder
from tools.plotting import Histogram_properties, make_data_mc_comparison_plot
fit_variables = histograms.keys()
for variable_bin in variable_bins_ROOT[variable]:
path = output_folder + str( measurement_config.centre_of_mass_energy ) + 'TeV/' + variable + '/' + category + '/fit_results/'
make_folder_if_not_exists( path )
for fit_variable in fit_variables:
plotname = channel + '_' + fit_variable + '_bin_' + variable_bin
# check if template plots exist already
for output_format in output_formats:
if os.path.isfile( plotname + '.' + output_format ):
continue
# plot with matplotlib
h_data = histograms[fit_variable][variable_bin]['data']
h_signal = histograms[fit_variable][variable_bin]['signal']
h_background = histograms[fit_variable][variable_bin]['background']
histogram_properties = Histogram_properties()
histogram_properties.name = plotname
histogram_properties.x_axis_title = fit_variables_latex[fit_variable]
histogram_properties.y_axis_title = 'Events/(%s)' % get_unit_string(fit_variable)
label, _ = get_cms_labels( channel )
histogram_properties.title = label
histogram_properties.x_limits = measurement_config.fit_boundaries[fit_variable]
make_data_mc_comparison_plot( [h_data, h_background, h_signal],
['data', 'background', 'signal'],
['black', 'green', 'red'], histogram_properties,
save_folder = path, save_as = output_formats )
示例2: compare_vjets_templates
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def compare_vjets_templates( variable = 'MET', met_type = 'patType1CorrectedPFMet',
title = 'Untitled', channel = 'electron' ):
''' Compares the V+jets templates in different bins
of the current variable'''
global fit_variable_properties, b_tag_bin, save_as
variable_bins = variable_bins_ROOT[variable]
histogram_template = get_histogram_template( variable )
for fit_variable in electron_fit_variables:
all_hists = {}
inclusive_hist = None
save_path = 'plots/%dTeV/fit_variables/%s/%s/' % ( measurement_config.centre_of_mass_energy, variable, fit_variable )
make_folder_if_not_exists( save_path + '/vjets/' )
max_bins = len( variable_bins )
for bin_range in variable_bins[0:max_bins]:
params = {'met_type': met_type, 'bin_range':bin_range, 'fit_variable':fit_variable, 'b_tag_bin':b_tag_bin, 'variable':variable}
fit_variable_distribution = histogram_template % params
# format: histograms['data'][qcd_fit_variable_distribution]
histograms = get_histograms_from_files( [fit_variable_distribution], histogram_files )
prepare_histograms( histograms, rebin = fit_variable_properties[fit_variable]['rebin'], scale_factor = measurement_config.luminosity_scale )
all_hists[bin_range] = histograms['V+Jets'][fit_variable_distribution]
# create the inclusive distributions
inclusive_hist = deepcopy( all_hists[variable_bins[0]] )
for bin_range in variable_bins[1:max_bins]:
inclusive_hist += all_hists[bin_range]
for bin_range in variable_bins[0:max_bins]:
if not all_hists[bin_range].Integral() == 0:
all_hists[bin_range].Scale( 1 / all_hists[bin_range].Integral() )
# normalise all histograms
inclusive_hist.Scale( 1 / inclusive_hist.Integral() )
# now compare inclusive to all bins
histogram_properties = Histogram_properties()
histogram_properties.x_axis_title = fit_variable_properties[fit_variable]['x-title']
histogram_properties.y_axis_title = fit_variable_properties[fit_variable]['y-title']
histogram_properties.y_axis_title = histogram_properties.y_axis_title.replace( 'Events', 'a.u.' )
histogram_properties.x_limits = [fit_variable_properties[fit_variable]['min'], fit_variable_properties[fit_variable]['max']]
histogram_properties.title = title
histogram_properties.additional_text = channel_latex[channel] + ', ' + b_tag_bins_latex[b_tag_bin]
histogram_properties.name = variable + '_' + fit_variable + '_' + b_tag_bin + '_VJets_template_comparison'
histogram_properties.y_max_scale = 1.5
measurements = {bin_range + ' GeV': histogram for bin_range, histogram in all_hists.iteritems()}
measurements = OrderedDict( sorted( measurements.items() ) )
fit_var = fit_variable.replace( 'electron_', '' )
fit_var = fit_var.replace( 'muon_', '' )
graphs = spread_x( measurements.values(), fit_variable_bin_edges[fit_var] )
for key, graph in zip( sorted( measurements.keys() ), graphs ):
measurements[key] = graph
compare_measurements( models = {'inclusive' : inclusive_hist},
measurements = measurements,
show_measurement_errors = True,
histogram_properties = histogram_properties,
save_folder = save_path + '/vjets/',
save_as = save_as )
示例3: compare
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def compare( central_mc, expected_result = None, measured_result = None, results = {}, variable = 'MET',
channel = 'electron', bin_edges = [] ):
global input_file, plot_location, ttbar_xsection, luminosity, centre_of_mass, method, test, log_plots
channel_label = ''
if channel == 'electron':
channel_label = 'e+jets, $\geq$4 jets'
elif channel == 'muon':
channel_label = '$\mu$+jets, $\geq$4 jets'
else:
channel_label = '$e, \mu$ + jets combined, $\geq$4 jets'
if test == 'data':
title_template = 'CMS Preliminary, $\mathcal{L} = %.1f$ fb$^{-1}$ at $\sqrt{s}$ = %d TeV \n %s'
title = title_template % ( luminosity / 1000., centre_of_mass, channel_label )
else:
title_template = 'CMS Simulation at $\sqrt{s}$ = %d TeV \n %s'
title = title_template % ( centre_of_mass, channel_label )
models = {latex_labels.measurements_latex['MADGRAPH'] : central_mc}
if expected_result and test == 'data':
models.update({'fitted data' : expected_result})
# scale central MC to lumi
nEvents = input_file.EventFilter.EventCounter.GetBinContent( 1 ) # number of processed events
lumiweight = ttbar_xsection * luminosity / nEvents
central_mc.Scale( lumiweight )
elif expected_result:
models.update({'expected' : expected_result})
if measured_result and test != 'data':
models.update({'measured' : measured_result})
measurements = collections.OrderedDict()
for key, value in results['k_value_results'].iteritems():
measurements['k = ' + str( key )] = value
# get some spread in x
graphs = spread_x( measurements.values(), bin_edges )
for key, graph in zip( measurements.keys(), graphs ):
measurements[key] = graph
histogram_properties = Histogram_properties()
histogram_properties.name = channel + '_' + variable + '_' + method + '_' + test
histogram_properties.title = title + ', ' + latex_labels.b_tag_bins_latex['2orMoreBtags']
histogram_properties.x_axis_title = '$' + latex_labels.variables_latex[variable] + '$'
histogram_properties.y_axis_title = r'Events'
# histogram_properties.y_limits = [0, 0.03]
histogram_properties.x_limits = [bin_edges[0], bin_edges[-1]]
if log_plots:
histogram_properties.set_log_y = True
histogram_properties.name += '_log'
compare_measurements( models, measurements, show_measurement_errors = True,
histogram_properties = histogram_properties,
save_folder = plot_location, save_as = ['pdf'] )
示例4: compare_unfolding_methods
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def compare_unfolding_methods(measurement='normalised_xsection',
add_before_unfolding=False, channel='combined'):
file_template = '/hdfs/TopQuarkGroup/run2/dpsData/'
file_template += 'data/normalisation/background_subtraction/13TeV/'
file_template += '{variable}/VisiblePS/central/'
file_template += '{measurement}_{channel}_RooUnfold{method}.txt'
variables = ['MET', 'HT', 'ST', 'NJets',
'lepton_pt', 'abs_lepton_eta', 'WPT']
for variable in variables:
svd = file_template.format(
variable=variable,
method='Svd',
channel=channel,
measurement=measurement)
bayes = file_template.format(
variable=variable,
method='Bayes', channel=channel,
measurement=measurement)
data = read_data_from_JSON(svd)
before_unfolding = data['TTJet_measured_withoutFakes']
svd_data = data['TTJet_unfolded']
bayes_data = read_data_from_JSON(bayes)['TTJet_unfolded']
h_svd = value_error_tuplelist_to_hist(
svd_data, bin_edges_vis[variable])
h_bayes = value_error_tuplelist_to_hist(
bayes_data, bin_edges_vis[variable])
h_before_unfolding = value_error_tuplelist_to_hist(
before_unfolding, bin_edges_vis[variable])
properties = Histogram_properties()
properties.name = '{0}_compare_unfolding_methods_{1}_{2}'.format(
measurement, variable, channel)
properties.title = 'Comparison of unfolding methods'
properties.path = 'plots'
properties.has_ratio = True
properties.xerr = True
properties.x_limits = (
bin_edges_vis[variable][0], bin_edges_vis[variable][-1])
properties.x_axis_title = variables_latex[variable]
if 'xsection' in measurement:
properties.y_axis_title = r'$\frac{1}{\sigma} \frac{d\sigma}{d' + \
variables_latex[variable] + '}$'
else:
properties.y_axis_title = r'$t\bar{t}$ normalisation'
histograms = {'SVD': h_svd, 'Bayes': h_bayes}
if add_before_unfolding:
histograms['before unfolding'] = h_before_unfolding
properties.name += '_ext'
properties.has_ratio = False
plot = Plot(histograms, properties)
plot.draw_method = 'errorbar'
compare_histograms(plot)
示例5: compare_combine_before_after_unfolding
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def compare_combine_before_after_unfolding(measurement='normalised_xsection',
add_before_unfolding=False):
file_template = 'data/normalisation/background_subtraction/13TeV/'
file_template += '{variable}/VisiblePS/central/'
file_template += '{measurement}_{channel}_RooUnfold{method}.txt'
variables = ['MET', 'HT', 'ST', 'NJets',
'lepton_pt', 'abs_lepton_eta', 'WPT']
for variable in variables:
combineBefore = file_template.format(
variable=variable,
method='Svd',
channel='combinedBeforeUnfolding',
measurement=measurement)
combineAfter = file_template.format(
variable=variable,
method='Svd',
channel='combined',
measurement=measurement)
data = read_data_from_JSON(combineBefore)
before_unfolding = data['TTJet_measured']
combineBefore_data = data['TTJet_unfolded']
combineAfter_data = read_data_from_JSON(combineAfter)['TTJet_unfolded']
h_combineBefore = value_error_tuplelist_to_hist(
combineBefore_data, bin_edges_vis[variable])
h_combineAfter = value_error_tuplelist_to_hist(
combineAfter_data, bin_edges_vis[variable])
h_before_unfolding = value_error_tuplelist_to_hist(
before_unfolding, bin_edges_vis[variable])
properties = Histogram_properties()
properties.name = '{0}_compare_combine_before_after_unfolding_{1}'.format(
measurement, variable)
properties.title = 'Comparison of combining before/after unfolding'
properties.path = 'plots'
properties.has_ratio = True
properties.xerr = True
properties.x_limits = (
bin_edges_vis[variable][0], bin_edges_vis[variable][-1])
properties.x_axis_title = variables_latex[variable]
if 'xsection' in measurement:
properties.y_axis_title = r'$\frac{1}{\sigma} \frac{d\sigma}{d' + \
variables_latex[variable] + '}$'
else:
properties.y_axis_title = r'$t\bar{t}$ normalisation'
histograms = {'Combine before unfolding': h_combineBefore, 'Combine after unfolding': h_combineAfter}
if add_before_unfolding:
histograms['before unfolding'] = h_before_unfolding
properties.name += '_ext'
properties.has_ratio = False
plot = Plot(histograms, properties)
plot.draw_method = 'errorbar'
compare_histograms(plot)
示例6: plot_fit_results
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_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"],
)
示例7: plot_fit_results
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_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'] )
示例8: compare_combine_before_after_unfolding_uncertainties
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def compare_combine_before_after_unfolding_uncertainties():
file_template = 'data/normalisation/background_subtraction/13TeV/'
file_template += '{variable}/VisiblePS/central/'
file_template += 'unfolded_normalisation_{channel}_RooUnfoldSvd.txt'
variables = ['MET', 'HT', 'ST', 'NJets',
'lepton_pt', 'abs_lepton_eta', 'WPT']
# variables = ['ST']
for variable in variables:
beforeUnfolding = file_template.format(
variable=variable, channel='combinedBeforeUnfolding')
afterUnfolding = file_template.format(
variable=variable, channel='combined')
data = read_data_from_JSON(beforeUnfolding)
before_unfolding = data['TTJet_measured']
beforeUnfolding_data = data['TTJet_unfolded']
afterUnfolding_data = read_data_from_JSON(afterUnfolding)['TTJet_unfolded']
before_unfolding = [e / v * 100 for v, e in before_unfolding]
beforeUnfolding_data = [e / v * 100 for v, e in beforeUnfolding_data]
afterUnfolding_data = [e / v * 100 for v, e in afterUnfolding_data]
h_beforeUnfolding = value_tuplelist_to_hist(
beforeUnfolding_data, bin_edges_vis[variable])
h_afterUnfolding = value_tuplelist_to_hist(
afterUnfolding_data, bin_edges_vis[variable])
h_before_unfolding = value_tuplelist_to_hist(
before_unfolding, bin_edges_vis[variable])
properties = Histogram_properties()
properties.name = 'compare_combine_before_after_unfolding_uncertainties_{0}'.format(
variable)
properties.title = 'Comparison of unfolding uncertainties'
properties.path = 'plots'
properties.has_ratio = False
properties.xerr = True
properties.x_limits = (
bin_edges_vis[variable][0], bin_edges_vis[variable][-1])
properties.x_axis_title = variables_latex[variable]
properties.y_axis_title = 'relative uncertainty (\\%)'
properties.legend_location = (0.98, 0.95)
histograms = {'Combine before unfolding': h_beforeUnfolding, 'Combine after unfolding': h_afterUnfolding,
# 'before unfolding': h_before_unfolding
}
plot = Plot(histograms, properties)
plot.draw_method = 'errorbar'
compare_histograms(plot)
示例9: compare_unfolding_uncertainties
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def compare_unfolding_uncertainties():
file_template = '/hdfs/TopQuarkGroup/run2/dpsData/'
file_template += 'data/normalisation/background_subtraction/13TeV/'
file_template += '{variable}/VisiblePS/central/'
file_template += 'unfolded_normalisation_combined_RooUnfold{method}.txt'
variables = ['MET', 'HT', 'ST', 'NJets',
'lepton_pt', 'abs_lepton_eta', 'WPT']
# variables = ['ST']
for variable in variables:
svd = file_template.format(
variable=variable, method='Svd')
bayes = file_template.format(
variable=variable, method='Bayes')
data = read_data_from_JSON(svd)
before_unfolding = data['TTJet_measured_withoutFakes']
svd_data = data['TTJet_unfolded']
bayes_data = read_data_from_JSON(bayes)['TTJet_unfolded']
before_unfolding = [e / v * 100 for v, e in before_unfolding]
svd_data = [e / v * 100 for v, e in svd_data]
bayes_data = [e / v * 100 for v, e in bayes_data]
h_svd = value_tuplelist_to_hist(
svd_data, bin_edges_vis[variable])
h_bayes = value_tuplelist_to_hist(
bayes_data, bin_edges_vis[variable])
h_before_unfolding = value_tuplelist_to_hist(
before_unfolding, bin_edges_vis[variable])
properties = Histogram_properties()
properties.name = 'compare_unfolding_uncertainties_{0}'.format(
variable)
properties.title = 'Comparison of unfolding uncertainties'
properties.path = 'plots'
properties.has_ratio = False
properties.xerr = True
properties.x_limits = (
bin_edges_vis[variable][0], bin_edges_vis[variable][-1])
properties.x_axis_title = variables_latex[variable]
properties.y_axis_title = 'relative uncertainty (\\%)'
properties.legend_location = (0.98, 0.95)
histograms = {'SVD': h_svd, 'Bayes': h_bayes,
'before unfolding': h_before_unfolding}
plot = Plot(histograms, properties)
plot.draw_method = 'errorbar'
compare_histograms(plot)
示例10: compare_vjets_btag_regions
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
def compare_vjets_btag_regions( variable = 'MET', met_type = 'patType1CorrectedPFMet',
title = 'Untitled', channel = 'electron' ):
''' Compares the V+Jets template in different b-tag bins'''
global fit_variable_properties, b_tag_bin, save_as, b_tag_bin_ctl
b_tag_bin_ctl = '0orMoreBtag'
variable_bins = variable_bins_ROOT[variable]
histogram_template = get_histogram_template( variable )
for fit_variable in electron_fit_variables:
if '_bl' in fit_variable:
b_tag_bin_ctl = '1orMoreBtag'
else:
b_tag_bin_ctl = '0orMoreBtag'
save_path = 'plots/%dTeV/fit_variables/%s/%s/' % ( measurement_config.centre_of_mass_energy, variable, fit_variable )
make_folder_if_not_exists( save_path + '/vjets/' )
histogram_properties = Histogram_properties()
histogram_properties.x_axis_title = fit_variable_properties[fit_variable]['x-title']
histogram_properties.y_axis_title = fit_variable_properties[fit_variable]['y-title']
histogram_properties.y_axis_title = histogram_properties.y_axis_title.replace( 'Events', 'a.u.' )
histogram_properties.x_limits = [fit_variable_properties[fit_variable]['min'], fit_variable_properties[fit_variable]['max']]
histogram_properties.title = title
histogram_properties.additional_text = channel_latex[channel] + ', ' + b_tag_bins_latex[b_tag_bin_ctl]
histogram_properties.y_max_scale = 1.5
for bin_range in variable_bins:
params = {'met_type': met_type, 'bin_range':bin_range, 'fit_variable':fit_variable, 'b_tag_bin':b_tag_bin, 'variable':variable}
fit_variable_distribution = histogram_template % params
fit_variable_distribution_ctl = fit_variable_distribution.replace( b_tag_bin, b_tag_bin_ctl )
# format: histograms['data'][qcd_fit_variable_distribution]
histograms = get_histograms_from_files( [fit_variable_distribution, fit_variable_distribution_ctl], {'V+Jets' : histogram_files['V+Jets']} )
prepare_histograms( histograms, rebin = fit_variable_properties[fit_variable]['rebin'], scale_factor = measurement_config.luminosity_scale )
histogram_properties.name = variable + '_' + bin_range + '_' + fit_variable + '_' + b_tag_bin_ctl + '_VJets_template_comparison'
histograms['V+Jets'][fit_variable_distribution].Scale( 1 / histograms['V+Jets'][fit_variable_distribution].Integral() )
histograms['V+Jets'][fit_variable_distribution_ctl].Scale( 1 / histograms['V+Jets'][fit_variable_distribution_ctl].Integral() )
compare_measurements( models = {'no b-tag' : histograms['V+Jets'][fit_variable_distribution_ctl]},
measurements = {'$>=$ 2 b-tags': histograms['V+Jets'][fit_variable_distribution]},
show_measurement_errors = True,
histogram_properties = histogram_properties,
save_folder = save_path + '/vjets/',
save_as = save_as )
示例11: make_plot
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_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()
#.........这里部分代码省略.........
示例12: compare_QCD_control_regions_to_MC
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
#.........这里部分代码省略.........
"EventWeight",
"PUWeight",
"BJetWeight",
"MuonEfficiencyCorrection"
]
variables = ['MET', 'HT', 'ST', 'NJets',
'lepton_pt', 'abs_lepton_eta', 'WPT']
# variables = ['abs_lepton_eta']
for variable in variables:
branch = variable
selection = '{0} >= 0'.format(branch)
if variable == 'abs_lepton_eta':
branch = 'abs(lepton_eta)'
selection = 'lepton_eta >= -3'
for channel in ['electron', 'muon']:
data_file = data_file_e
qcd_file = qcd_file_e
ctrl1 = ctrl_e1
ctrl2 = ctrl_e2
mc = mc_e
weight_branches = weight_branches_electron
if channel == 'muon':
data_file = data_file_mu
qcd_file = qcd_file_mu
ctrl1 = ctrl_mu1
ctrl2 = ctrl_mu2
mc = mc_mu
weight_branches = weight_branches_mu
inputs = {
'branch': branch,
'weight_branches': weight_branches,
'tree': ctrl1,
'bin_edges': bin_edges_vis[variable],
'selection': selection,
}
hs_ctrl1 = {
'data': get_histogram_from_tree(input_file=data_file, **inputs),
'TTJet': get_histogram_from_tree(input_file=ttbar_file, **inputs),
'VJets': get_histogram_from_tree(input_file=vjets_file, **inputs),
'SingleTop': get_histogram_from_tree(input_file=singleTop_file, **inputs),
'QCD': get_histogram_from_tree(input_file=qcd_file, **inputs),
}
inputs['tree'] = ctrl2
hs_ctrl2 = {
'data': get_histogram_from_tree(input_file=data_file, **inputs),
'TTJet': get_histogram_from_tree(input_file=ttbar_file, **inputs),
'VJets': get_histogram_from_tree(input_file=vjets_file, **inputs),
'SingleTop': get_histogram_from_tree(input_file=singleTop_file, **inputs),
'QCD': get_histogram_from_tree(input_file=qcd_file, **inputs),
}
inputs['tree'] = mc
h_qcd = get_histogram_from_tree(input_file=qcd_file, **inputs)
h_ctrl1 = clean_control_region(
hs_ctrl1,
data_label='data',
subtract=['TTJet', 'VJets', 'SingleTop'],
fix_to_zero=True)
h_ctrl2 = clean_control_region(
hs_ctrl2,
data_label='data',
subtract=['TTJet', 'VJets', 'SingleTop'],
fix_to_zero=True)
n_qcd_ctrl1 = hs_ctrl1['QCD'].integral()
n_qcd_ctrl2 = hs_ctrl2['QCD'].integral()
n_data1 = h_ctrl1.integral()
n_data2 = h_ctrl2.integral()
n_qcd_sg = h_qcd.integral()
ratio_ctrl1 = n_data1 / n_qcd_ctrl1
ratio_ctrl2 = n_data2 / n_qcd_ctrl2
qcd_estimate_ctrl1 = n_qcd_sg * ratio_ctrl1
qcd_estimate_ctrl2 = n_qcd_sg * ratio_ctrl2
h_ctrl1.Scale(qcd_estimate_ctrl1 / n_data1)
h_ctrl2.Scale(qcd_estimate_ctrl2 / n_data2)
properties = Histogram_properties()
properties.name = 'compare_qcd_control_regions_to_mc_{0}_{1}_channel'.format(
variable, channel)
properties.title = 'Comparison of QCD control regions ({0} channel)'.format(
channel)
properties.path = 'plots'
properties.has_ratio = False
properties.xerr = True
properties.x_limits = (
bin_edges_vis[variable][0], bin_edges_vis[variable][-1])
properties.x_axis_title = variables_latex[variable]
properties.y_axis_title = 'number of QCD events'
histograms = {'control region 1': h_ctrl1,
'control region 2': h_ctrl2,
'MC prediction': h_qcd}
diff = absolute(h_ctrl1 - h_ctrl2)
lower = h_ctrl1 - diff
upper = h_ctrl1 + diff
err_e = ErrorBand('uncertainty', lower, upper)
plot_e = Plot(histograms, properties)
plot_e.draw_method = 'errorbar'
plot_e.add_error_band(err_e)
compare_histograms(plot_e)
示例13: prepare_histograms
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
prepare_histograms(histograms, rebin=20, scale_factor = measurement_config.luminosity_scale)
qcd_predicted_mc = histograms['QCD'][control_region]
histograms_to_draw = [histograms['data'][control_region], qcd_predicted_mc,
histograms['V+Jets'][control_region],
histograms['SingleTop'][control_region], histograms['TTJet'][control_region]]
histogram_lables = ['data', 'QCD', 'V+Jets', 'Single-Top', samples_latex['TTJet']]
histogram_colors = ['black', 'yellow', 'green', 'magenta', 'red']
histogram_properties = Histogram_properties()
histogram_properties.name = 'EPlusJets_BJets_invmass_' + b_tag_bin
histogram_properties.title = e_title + ', ' + b_tag_bins_latex[b_tag_bin]
histogram_properties.x_axis_title = '$M_{\mathrm{b}\\bar{\mathrm{b}}}$'
histogram_properties.y_axis_title = 'Normalised events/(20 GeV)'
histogram_properties.x_limits = [0, 800]
histogram_properties.mc_error = 0.15
make_data_mc_comparison_plot(histograms_to_draw, histogram_lables, histogram_colors,
histogram_properties, save_folder = output_folder, show_ratio = False)
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)
#bjet invariant mass
b_tag_bin = '3btags'
control_region = 'TTbar_plus_X_analysis/EPlusJets/Ref selection/bjet_invariant_mass_' + b_tag_bin
histograms = get_histograms_from_files([control_region], histogram_files)
prepare_histograms(histograms, rebin=10, scale_factor = measurement_config.luminosity_scale)
qcd_predicted_mc = histograms['QCD'][control_region]
示例14: str
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
'TTJet': path_to_files + 'TTJet_%spb_PFElectron_%sPF2PATJets_PFMET.root' % (str(lumi), pfmuon),
'data' : path_to_files + '%s_%spb_PFElectron_%sPF2PATJets_PFMET.root' % (data, str(lumi), pfmuon),
'WJets': path_to_files + 'WJetsToLNu_%spb_PFElectron_%sPF2PATJets_PFMET.root' % (str(lumi), pfmuon),
'ZJets': path_to_files + 'DYJetsToLL_%spb_PFElectron_%sPF2PATJets_PFMET.root' % (str(lumi), pfmuon),
'QCD': path_to_files + 'QCD_%spb_PFElectron_%sPF2PATJets_PFMET.root' % (str(lumi), pfmuon),
'SingleTop': path_to_files + 'SingleTop_%spb_PFElectron_%sPF2PATJets_PFMET.root' % (str(lumi), pfmuon),
}
b_tag_bin = '0btag'
control_region = 'topReconstruction/backgroundShape/mttbar_3jets_conversions_withMETAndAsymJets_' + b_tag_bin
histograms = get_histograms_from_files([control_region], histogram_files)
prepare_histograms(histograms, rebin=50)
histograms_to_draw = [histograms['data'][control_region], histograms['QCD'][control_region],
histograms['ZJets'][control_region], histograms['WJets'][control_region],
histograms['SingleTop'][control_region], histograms['TTJet'][control_region]]
histogram_lables = ['data', 'QCD', samples_latex['ZJets'], samples_latex['WJets'], 'Single-Top', samples_latex['TTJet']]
histogram_colors = ['black', 'yellow', 'blue', 'green', 'magenta', 'red']
histogram_properties = Histogram_properties()
histogram_properties.name = 'Mttbar'
histogram_properties.title = 'CMS Preliminary, $\mathcal{L}$ = 5.1 fb$^{-1}$ at $\sqrt{s}$ = 7 TeV \n e+jets, $\geq$4 jets, ' + b_tag_bins_latex[b_tag_bin]
histogram_properties.x_axis_title = '$m_{\mathrm{t}\\bar{\mathrm{t}}}$ [GeV]'
histogram_properties.y_axis_title = 'Events/(50 GeV)'
histogram_properties.x_limits=[300,1800]
histogram_properties.mc_error = 0.15
histogram_properties.mc_errors_label = '$\mathrm{t}\\bar{\mathrm{t}}$ uncertainty'
make_data_mc_comparison_plot(histograms_to_draw, histogram_lables, histogram_colors,
histogram_properties)
示例15: get_histograms_from_trees
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import x_limits [as 别名]
histograms = get_histograms_from_trees( trees = [signalTree], branch = var, weightBranch = 'EventWeight', files = histogram_files, nBins = nBins, xMin = xMin, xMax = xMax )
prepare_histograms( histograms, rebin = 1, scale_factor = measurement_config.luminosity_scale )
histograms_to_draw = [histograms['data'][signalTree],
histograms['QCD'][signalTree],
histograms['V+Jets'][signalTree],
histograms['SingleTop'][signalTree], histograms['TTJet'][signalTree]]
histogram_lables = ['data', 'QCD',
'V+Jets', 'Single-Top', samples_latex['TTJet']]
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]' % ( control_plots_latex[var] )
histogram_properties.y_axis_title = 'Events/(%.2g GeV)' % (eventsPerBin)
histogram_properties.x_limits = [xMin, xMax]
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 )