model = get_model_from_ROOT_file('../files/test_unfolded.root', 'Higgs_125*') # first, it is a good idea to generate a summary report to make sure everything has worked # as expected. The summary will generate quite some information which should it make easy to spot # errors like typos in the name of uncertainties, missing shape uncertaintie, etc. model_summary(model) limit_type = 'expected' # 2. apply the methods # 2.a. Bayesian limits # Calculate expected and observed Bayesian limits. For faster run time of this example, # only make a few mass points. (Omitting the 'signal_procsses' parameter completely would # process all signals defined as signal processes before; see Section "Common Parameters" # on the theta auto intro doxygen page for details) plot_exp, plot_obs = bayesian_limits(model, what=limit_type, signal_processes = [['Higgs_125']]) # plot_exp and plot_obs are instances of plotutil.plotdata. they contain x/y values and # bands. You can do many things with these objects such as inspect the x/y/ban # data, pass then to plotutil.plot routine to make pdf plots, ... # Here, we will just create text files of the plot data. This is useful if you want # to apply your own plotting routines or present the result in a text Table. plot_exp.write_txt('bayesian_limits_expected.txt') if not limit_type == 'expected': plot_obs.write_txt('bayesian_limits_observed.txt') # 2.b. CLs limits # calculate cls limit plots. The interface is very similar to bayesian_limits. However, there are a few # more options such as the definition of the test statistic which is usually a likelihood ratio but can differ in # which parameters are minimized and which constraints / ranges are applied during minimization. # Here, we stay with the default which fixes beta_signal=0
from utils.theta_auto import config model = get_model_from_ROOT_file('../files/histograms.root', 'zp*') # first, it is a good idea to generate a summary report to make sure everything has worked # as expected. The summary will generate quite some information which should it make easy to spot # errors like typos in the name of uncertainties, missing shape uncertaintie, etc. model_summary(model) # 2. apply the methods # 2.a. Bayesian limits # Calculate expected and observed Bayesian limits. For faster run time of this example, # only make a few mass points. (Omitting the 'signal_procsses' parameter completely would # process all signals defined as signal processes before; see Section "Common Parameters" # on the theta auto intro doxygen page for details) plot_exp, plot_obs = bayesian_limits(model, signal_processes = [['zp1000'], ['zp2000'], ['zp3000']]) # plot_exp and plot_obs are instances of plotutil.plotdata. they contain x/y values and # bands. You can do many things with these objects such as inspect the x/y/ban # data, pass then to plotutil.plot routine to make pdf plots, ... # Here, we will just create text files of the plot data. This is useful if you want # to apply your own plotting routines or present the result in a text Table. plot_exp.write_txt('bayesian_limits_expected.txt') plot_obs.write_txt('bayesian_limits_observed.txt') # 2.b. CLs limits # calculate cls limit plots. The interface is very similar to bayesian_limits. However, there are a few # more options such as the definition of the test statistic which is usually a likelihood ratio but can differ in # which parameters are minimized and which constraints / ranges are applied during minimization. # Here, we stay with the default which fixes beta_signal=0 # for the background only hypothesis and lets it float freely for the signal+background hypothesis.