Esempio n. 1
0
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)
Esempio n. 2
0
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)