def main(): ROOT.gROOT.SetBatch() # Create workspace to contain full analysis model = ROOT.RooWorkspace('model', True) # get toy histogram toy_data_dh = fh.getHistFromFile( file_name = toy_data_file_name , hist_name = 'toy__flavor_all__mbl_all__BMINUSL_MET' , roo_real_var = mbl_real_var , label = 'toy' , model = model )['dh'] model.Print() print toy_data_dh # -------------------------------------------------------------------------- bkg_pdf_basic = getFunctionalForm('basic', mbl_real_var, model) bkg_pdf_basic.fitTo(toy_data_dh) # -------------------------------------------------------------------------- # draw background template to a canvas plot_basic_lin = fh.drawToCanvas( roo_object_list = [ toy_data_dh, bkg_pdf_basic ] , roo_real_var = mbl_real_var , line_colors = [ROOT.kBlack, ROOT.kBlue] , label = 'basic' , range_string_list = ['', ''] , log = False ) plot_basic_log = fh.drawToCanvas( roo_object_list = [ toy_data_dh, bkg_pdf_basic ] , roo_real_var = mbl_real_var , line_colors = [ROOT.kBlack, ROOT.kBlue] , label = 'basic' , range_string_list = ['', ''] , log = True ) # -------------------------------------------------------------------------- out_file = ROOT.TFile('fit.root', 'RECREATE') out_file.cd() plot_basic_lin['canv'].Write('c_fit_basic__lin') plot_basic_log['canv'].Write('c_fit_basic__log') out_file.Close() # -------------------------------------------------------------------------- model.writeToFile('fit_workspace.root', True)
def main(): ROOT.gROOT.SetBatch() # Create workspace to contain full analysis model = ROOT.RooWorkspace('model', True) # get template histogram bkg_template_dict = fh.getHistFromFile( file_name = bkg_template_file_name , hist_name = 'template__flavor_all__mbl_all__BMINUSL_MET' , roo_real_var = mbl_real_var , label = 'bkg_template' , model = model ) # get toy histogram toy_data_dh = fh.getHistFromFile( file_name = toy_data_file_name , hist_name = 'toy__flavor_all__mbl_all__BMINUSL_MET' , roo_real_var = mbl_real_var , label = 'toy' , model = model )['dh'] # draw background template to a canvas template_draw_dict = fh.drawToCanvas( roo_object_list = [bkg_template_dict['pdf']] , roo_real_var = mbl_real_var , line_colors = [ROOT.kBlack] , label = 'mbl_templates' , range_string_list = ['full_range'] , log = True ) # draw toy data to a canvas toy_draw_dict = fh.drawToCanvas( roo_object_list = [toy_data_dh] , roo_real_var = mbl_real_var , line_colors = [ROOT.kBlack] , label = 'mbl_toy' , range_string_list = ['full_range'] , log = True ) # do basic fit -- no sliding window basic_fit_dict = fitAndDrawToCanvas( toy_data_dh , bkg_template_dict , mbl_real_var , 'basic_fit' , model ) # do sliding fit window scan sliding_window_scan = performSlidingWindowScan( toy_data_dh , bkg_template_dict , mbl_real_var , 'sliding_window' , model ) # Print a bunch of info to screen print 'basic fit -- n_bkg: %s' % basic_fit_dict['n_bkg'].getVal() for sws in sorted(sliding_window_scan.iterkeys()): print sws print sliding_window_scan[sws]['n_bkg'].GetName() print 'fit window string: %s' % sliding_window_scan[sws]['fit_range_string'] print 'norm: %s' % sliding_window_scan[sws]['n_bkg'].getVal() print 'error: %s' % sliding_window_scan[sws]['n_bkg'].getError() print 'chi2_sideband: %s' % sliding_window_scan[sws]['chi2_sideband'] print 'ndof_sideband: %s' % sliding_window_scan[sws]['ndof_sideband'] print 'chi2_over_ndof (sideband): %s' % sliding_window_scan[sws]['chi2_over_ndof_sideband'] print 'chi2_search: %s' % sliding_window_scan[sws]['chi2_search'] print 'ndof_search: %s' % sliding_window_scan[sws]['ndof_search'] print 'chi2_over_ndof (search): %s' % sliding_window_scan[sws]['chi2_over_ndof_search'] print '' # write canvas to file out_file = ROOT.TFile('fit.root', 'RECREATE') out_file.cd() template_draw_dict['canv'].Write() toy_draw_dict['canv'].Write() basic_fit_dict['canv_lin'].Write() basic_fit_dict['canv_log'].Write() for sws in sorted(sliding_window_scan.iterkeys()): sliding_window_scan[sws]['canv_lin'].Write() sliding_window_scan[sws]['canv_log'].Write() # -------------------------------------------------------------------------- model.writeToFile('fit_workspace.root', True)