本文整理汇总了Python中tools.plotting.Histogram_properties.y_max_scale方法的典型用法代码示例。如果您正苦于以下问题:Python Histogram_properties.y_max_scale方法的具体用法?Python Histogram_properties.y_max_scale怎么用?Python Histogram_properties.y_max_scale使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tools.plotting.Histogram_properties
的用法示例。
在下文中一共展示了Histogram_properties.y_max_scale方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: compare_vjets_templates
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_max_scale [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 )
示例2: compare_vjets_btag_regions
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_max_scale [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 )
示例3: make_ttbarReco_plot
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_max_scale [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
#.........这里部分代码省略.........
示例4: compare_qcd_control_regions
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_max_scale [as 别名]
def compare_qcd_control_regions( variable = 'MET', met_type = 'patType1CorrectedPFMet', title = 'Untitled', channel = 'electron' ):
''' Compares the templates from the control regions in different bins
of the current variable'''
global fit_variable_properties, b_tag_bin, save_as, b_tag_bin_ctl
variable_bins = variable_bins_ROOT[variable]
histogram_template = get_histogram_template( variable )
for fit_variable in electron_fit_variables:
all_hists = {}
inclusive_hist = None
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 + '/qcd/' )
max_bins = 3
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
qcd_fit_variable_distribution = fit_variable_distribution.replace( 'Ref selection', 'QCDConversions' )
qcd_fit_variable_distribution = qcd_fit_variable_distribution.replace( b_tag_bin, b_tag_bin_ctl )
# format: histograms['data'][qcd_fit_variable_distribution]
histograms = get_histograms_from_files( [qcd_fit_variable_distribution], histogram_files )
prepare_histograms( histograms, rebin = fit_variable_properties[fit_variable]['rebin'], scale_factor = measurement_config.luminosity_scale )
histograms_for_cleaning = {'data':histograms['data'][qcd_fit_variable_distribution],
'V+Jets':histograms['V+Jets'][qcd_fit_variable_distribution],
'SingleTop':histograms['SingleTop'][qcd_fit_variable_distribution],
'TTJet':histograms['TTJet'][qcd_fit_variable_distribution]}
qcd_from_data = clean_control_region( histograms_for_cleaning, subtract = ['TTJet', 'V+Jets', 'SingleTop'] )
# clean
all_hists[bin_range] = qcd_from_data
# 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.y_limits = [0, 0.5]
histogram_properties.title = title
histogram_properties.additional_text = channel_latex[channel] + ', ' + b_tag_bins_latex[b_tag_bin_ctl]
histogram_properties.name = variable + '_' + fit_variable + '_' + b_tag_bin_ctl + '_QCD_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() ) )
compare_measurements( models = {'inclusive' : inclusive_hist},
measurements = measurements,
show_measurement_errors = True,
histogram_properties = histogram_properties,
save_folder = save_path + '/qcd/',
save_as = save_as )
示例5: plot_fit_variable
# 需要导入模块: from tools.plotting import Histogram_properties [as 别名]
# 或者: from tools.plotting.Histogram_properties import y_max_scale [as 别名]
def plot_fit_variable( histograms, fit_variable, variable, bin_range,
fit_variable_distribution, qcd_fit_variable_distribution,
title, save_path, channel = 'electron' ):
global fit_variable_properties, b_tag_bin, save_as, b_tag_bin_ctl
histograms_ = deepcopy( histograms )
mc_uncertainty = 0.10
prepare_histograms( histograms_, rebin = fit_variable_properties[fit_variable]['rebin'], scale_factor = measurement_config.luminosity_scale )
######################################
# plot the control regions as they are
######################################
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.x_limits = [fit_variable_properties[fit_variable]['min'], fit_variable_properties[fit_variable]['max']]
histogram_properties.y_max_scale = 2
histogram_lables = ['data', 'QCD', 'V+Jets', 'Single-Top', samples_latex['TTJet']]
histogram_colors = ['black', 'yellow', 'green', 'magenta', 'red']
# qcd_from_data = histograms_['data'][qcd_fit_variable_distribution].Clone()
# clean against other processes
histograms_for_cleaning = {'data':histograms_['data'][qcd_fit_variable_distribution],
'V+Jets':histograms_['V+Jets'][qcd_fit_variable_distribution],
'SingleTop':histograms_['SingleTop'][qcd_fit_variable_distribution],
'TTJet':histograms_['TTJet'][qcd_fit_variable_distribution]}
qcd_from_data = clean_control_region( histograms_for_cleaning, subtract = ['TTJet', 'V+Jets', 'SingleTop'] )
histograms_to_draw = [histograms_['data'][qcd_fit_variable_distribution],
histograms_['QCD'][qcd_fit_variable_distribution],
histograms_['V+Jets'][qcd_fit_variable_distribution],
histograms_['SingleTop'][qcd_fit_variable_distribution],
histograms_['TTJet'][qcd_fit_variable_distribution]]
histogram_properties.title = title
histogram_properties.additional_text = channel_latex[channel] + ', ' + b_tag_bins_latex[b_tag_bin_ctl]
histogram_properties.name = variable + '_' + bin_range + '_' + fit_variable + '_%s_QCDConversions' % b_tag_bin_ctl
make_data_mc_comparison_plot( histograms_to_draw, histogram_lables, histogram_colors,
histogram_properties,
save_folder = save_path + '/qcd/',
show_ratio = False,
save_as = save_as,
)
######################################
# plot QCD against data control region with TTJet, SingleTop and V+Jets removed
######################################
histograms_to_draw = [qcd_from_data,
histograms_['QCD'][qcd_fit_variable_distribution],
]
histogram_properties.y_max_scale = 1.5
histogram_properties.name = variable + '_' + bin_range + '_' + fit_variable + '_%s_QCDConversions_subtracted' % b_tag_bin_ctl
make_data_mc_comparison_plot( histograms_to_draw,
histogram_lables = ['data', 'QCD'],
histogram_colors = ['black', 'yellow'],
histogram_properties = histogram_properties,
save_folder = save_path + '/qcd/',
show_ratio = False,
save_as = save_as,
)
######################################
# plot signal region
######################################
# scale QCD to predicted
n_qcd_predicted_mc = histograms_['QCD'][fit_variable_distribution].Integral()
n_qcd_fit_variable_distribution = qcd_from_data.Integral()
if not n_qcd_fit_variable_distribution == 0:
qcd_from_data.Scale( 1.0 / n_qcd_fit_variable_distribution * n_qcd_predicted_mc )
histograms_to_draw = [histograms_['data'][fit_variable_distribution], qcd_from_data,
histograms_['V+Jets'][fit_variable_distribution],
histograms_['SingleTop'][fit_variable_distribution],
histograms_['TTJet'][fit_variable_distribution]]
histogram_properties.additional_text = channel_latex[channel] + ', ' + b_tag_bins_latex[b_tag_bin]
histogram_properties.name = variable + '_' + bin_range + '_' + fit_variable + '_' + b_tag_bin
make_data_mc_comparison_plot( histograms_to_draw,
histogram_lables,
histogram_colors,
histogram_properties,
save_folder = save_path,
show_ratio = False,
save_as = save_as,
)
######################################
# plot templates
######################################
histogram_properties.mc_error = mc_uncertainty
histogram_properties.mc_errors_label = '$\mathrm{t}\\bar{\mathrm{t}}$ uncertainty'
histogram_properties.name = variable + '_' + bin_range + '_' + fit_variable + '_' + b_tag_bin + '_templates'
histogram_properties.y_max_scale = 2
# change histogram order for better visibility
histograms_to_draw = [histograms_['TTJet'][fit_variable_distribution] + histograms_['SingleTop'][fit_variable_distribution],
histograms_['TTJet'][fit_variable_distribution],
histograms_['SingleTop'][fit_variable_distribution],
histograms_['V+Jets'][fit_variable_distribution],
qcd_from_data]
histogram_lables = ['QCD', 'V+Jets', 'Single-Top', samples_latex['TTJet'], samples_latex['TTJet'] + ' + ' + 'Single-Top']
histogram_lables.reverse()
# change QCD color to orange for better visibility
histogram_colors = ['orange', 'green', 'magenta', 'red', 'black']
histogram_colors.reverse()
#.........这里部分代码省略.........