def do_variable_plots ():

    def do_variable_plot (name, cut_level, outdir):
        filename = '{0}/{1}.png'.format (outdir, name)
        # note that both the thing to plot (name, in this case) and the cut can
        # be specified in a very flexible way; see Validator.eval()
        # documentation for more info.
        objs = v.create_plot (name, 'dist',
            lines,
            bins=50,
            dual=True,
            data_mc=True,
            left_ylabel='Hz per bin',
            xlabel=name,
            log_kwargs=dict (
                legend=dict (loc='best')
                ),
            title='{0} | bdt score > {1:.3f}'.format (name, cut_level),
            cut='scores > {0}'.format (cut_level)
            )
        objs['fig'].savefig (filename)

    input_vars_dir = 'output/vars_at_input'
    print ('Plotting input vars in {0} ...'.format (input_vars_dir))
    mkdir (input_vars_dir)
    do_variable_plot ('a', -1, input_vars_dir)
    do_variable_plot ('b', -1, input_vars_dir)
    do_variable_plot ('c', -1, input_vars_dir)

    postcut_vars_dir = 'output/vars_after_cut'
    print ('Plotting vars after score > {0} cut in {1} ...'.format (
        bdt_cut, postcut_vars_dir))
    mkdir (postcut_vars_dir)
    do_variable_plot ('a', bdt_cut, postcut_vars_dir)
    do_variable_plot ('b', bdt_cut, postcut_vars_dir)
    do_variable_plot ('c', bdt_cut, postcut_vars_dir)

    fig = v.create_correlation_matrix_plot ('train_sig')
    fig.savefig ('output/correlation_matrix-signal.png')

    fig = v.create_correlation_matrix_plot ('train_data')
    fig.savefig ('output/correlation_matrix-background.png')
def do_eff_plots ():

    eff_plot_dir = 'output/eff_vs_vars'

    mkdir (eff_plot_dir)

    print ('Plotting efficiency vs training variables...')

    def do_eff_plot (name, cut_level):

        # Validator doesn't know how to make efficiency plots, but it can
        # provide the histogram objects with which to do so.

        bins = 25
        vals = v.data['test_sig'].eval (name)
        range = (vals.min (), vals.max ())
        h_input = v.get_Hist ('test_sig', name,
                bins=bins, range=range,
                )
        h_cut = v.get_Hist ('test_sig', name,
                bins=bins, range=range,
                cut='scores > {0}'.format (cut_level)
                )
        eff = h_cut / h_input
        fig = plt.figure ()
        ax = fig.add_subplot (111)
        plotter = Plotter (ax)
        plotter.add (eff)
        plotter.finish ()
        ax.set_xlabel (name)
        ax.set_xlim (range)
        ax.set_ylabel ('efficiency')
        ax.set_ylim (0,1.05)
        ax.set_title ('efficiency vs {0}'.format (name))
        fig.savefig ('{0}/eff_vs_{1}.png'.format (eff_plot_dir, name))
        plt.close (fig)

    do_eff_plot ('a', bdt_cut)
    do_eff_plot ('b', bdt_cut)
    do_eff_plot ('c', bdt_cut)
### Make Training Samples ###
train_sig_sim = make_sig_sim ()
test_sig_sim = make_sig_sim ()
bg_sim = make_bgsim ()

### Datamerize ###
train_data = make_data ()
test_data = make_data ()

### Make them Sets ###
train_sig = DataSet (train_sig_sim)
train_data = DataSet (train_data)
test_sig = DataSet (test_sig_sim)
test_data = DataSet (test_data)

bg = DataSet (bg_sim)

# create a data directory, if one does not already exist
mkdir ('hesdata')

print ('Saving data in hesdata/ ...')

# save these files
save (train_sig, 'hesdata/train_sig.ds')
save (train_data, 'hesdata/train_data.ds')
save (test_sig, 'hesdata/test_sig.ds')
save (test_data, 'hesdata/test_data.ds')
save (bg, 'hesdata/bg.ds')

bg_sim = make_bgsim ()

### Datamerize ###
train_data = make_data ()
test_data = make_data ()

### Make them Sets ###
train_sig = DataSet (train_sig_sim)
train_data = DataSet (train_data)
test_sig = DataSet (test_sig_sim)
test_data = DataSet (test_data)

bg = DataSet (bg_sim)

# create a data directory, if one does not already exist
mkdir ('data')

print ('Saving data in data/ ...')

# save these files
save (train_sig, 'data/train_sig_woreco.ds')
save (train_data, 'data/train_data_woreco.ds')
save (test_sig, 'data/test_sig_woreco.ds')
save (test_data, 'data/test_data_woreco.ds')
save (bg, 'data/bg_woreco.ds')