Exemplo n.º 1
0
def get_yields(comb_bkg=False):
    helpers.allow_root()
    from . import fit_config
    import ROOT
    from ROOT import RooFit as RF
    shapes.load_shape_class('RooCruijff')
    shapes.load_shape_class('RooJohnsonSU')
    shapes.load_shape_class('RooBackground')

    wsp = fit_config.load_workspace(gcm())

    calculator = _metric_base(wsp, comb_bkg)
    sig = calculator._get_number_of_signal()
    bkg = calculator._get_number_of_background()
    return sig, bkg
Exemplo n.º 2
0
def get_sweights(do_comb_bkg=False):
    helpers.allow_root()
    df = gcm().get_data([m(gcm().D0), dtf_dm()])
    from . import fit_config
    from hep_ml import splot
    shapes.load_shape_class('RooCruijff')
    shapes.load_shape_class('RooJohnsonSU')
    shapes.load_shape_class('RooBackground')
    wsp = fit_config.load_workspace(gcm())

    sel = selection.get_final_selection()
    do_comb_bkg = gcm().mode in config.twotag_modes

    df = df[sel]

    sig_pdf = wsp.pdf('signal')
    rnd_pdf = wsp.pdf('random')
    comb_pdf = wsp.pdf('combinatorial')

    sig_prob = call_after_set(sig_pdf, wsp, **df)
    rnd_prob = call_after_set(rnd_pdf, wsp, **df)
    if do_comb_bkg:
        comb_prob = call_after_set(comb_pdf, wsp, **df)

    if do_comb_bkg:
        probs = pd.DataFrame(dict(sig=sig_prob*wsp.var('NSig').getVal(),
                                  rnd=rnd_prob*wsp.var('NSPi').getVal(),
                                  comb=comb_prob*wsp.var('NBkg').getVal()),
                             index=df.index)
    else:
        probs = pd.DataFrame(dict(sig=sig_prob*wsp.var('NSig').getVal(),
                                  rnd=rnd_prob*wsp.var('NSPi').getVal()),
                             index=df.index)
    probs = probs.div(probs.sum(axis=1), axis=0)

    sweights = splot.compute_sweights(probs)
    sweights.index = probs.index
    if not do_comb_bkg:
        sweights['comb'] = 0.0

    return sweights
Exemplo n.º 3
0
def get_model_ws_alt(redo=False):
    files = [
        '/afs/cern.ch/user/c/chasse/public/forDominik/Sig_49_61_WSNR_Smaller.root'
    ]  # NOQA

    bcolz_folder = config.bcolz_locations.format('generated_model_ws_alt')
    if redo:
        try:
            shutil.rmtree(bcolz_folder)
        except:
            pass
        helpers.allow_root()
        import root_pandas
        df = root_pandas.read_root(files, 'events')
        # Now rename stuff and fix units to MeV and ns.
        # Ugly hardcoded for now.
        df.rename(columns={
            'c12': vars.cos1(),
            'c34': vars.cos2(),
            'dtime': vars.ltime(mode_config.D0),
            'phi': vars.phi1(),
            'm12': vars.m12(),
            'm34': vars.m34()
        },
                  inplace=True)
        df[vars.m12()] = df[vars.m12()] * 1000.
        df[vars.m34()] = df[vars.m34()] * 1000.
        df[vars.ltime(mode_config.D0)] = df[vars.ltime(mode_config.D0)] / 1000.
        df = df.query('{} > 0.0001725'.format(vars.ltime(mode_config.D0)))
        df = df.query('{} < 0.003256'.format(vars.ltime(mode_config.D0)))
        bcolz.ctable.fromdataframe(df, rootdir=bcolz_folder)
        return df

    else:
        bc = bcolz.open(bcolz_folder)
        return bc.todataframe()

    return df
Exemplo n.º 4
0
def get_model(redo=False):
    files = filelists.Generated.paths

    bcolz_folder = config.bcolz_locations.format('generated_model')
    if redo:
        try:
            shutil.rmtree(bcolz_folder)
        except:
            pass
        helpers.allow_root()
        import root_pandas
        df = root_pandas.read_root(files, 'events')
        # Now rename stuff and fix units to MeV and ns.
        # Ugly hardcoded for now.
        df.rename(columns={
            'c12': vars.cos1(),
            'c34': vars.cos2(),
            'dtime': vars.ltime(mode_config.D0),
            'phi': vars.phi1(),
            'm12': vars.m12(),
            'm34': vars.m34()
        },
                  inplace=True)
        df[vars.m12()] = df[vars.m12()] * 1000.
        df[vars.m34()] = df[vars.m34()] * 1000.
        df[vars.ltime(mode_config.D0)] = df[vars.ltime(mode_config.D0)] / 1000.
        df = df.query('{} > 0.0001725'.format(vars.ltime(mode_config.D0)))
        df = df.query('{} < 0.003256'.format(vars.ltime(mode_config.D0)))
        bcolz.ctable.fromdataframe(df, rootdir=bcolz_folder)
        return df

    else:
        bc = bcolz.open(bcolz_folder)
        return bc.todataframe()

    return df
Exemplo n.º 5
0
            df = df.rename(index=str, columns=new_names)
        if ctuple is None:
            ctuple = bcolz.ctable.fromdataframe(df, rootdir=bcolz_folder)
        else:
            ctuple.append(df.to_records(index=False))

    for f in temp_files:
        os.remove(f)
    # Loop and delete everything in the datastore that needs to be recached
    remove_buffer_for_mode(mode.mode)
    if modename == 'WS' and year == 2016:
        # As this is the start, hack name of the particle in the mode.
        mode.Dstp.name = 'Dstp'


if __name__ == '__main__':
    args = parser.create_parser(log)
    helpers.allow_root()

    if args.polarity == config.magboth:
        pols = [config.magup, config.magdown]
    else:
        pols = [args.polarity]
    if args.year == 1516:
        years = [2015, 2016]
    else:
        years = [args.year]
    for p, y in product(pols, years):
        download(args.mode, p, y, args.fraction, args.test, args.mc,
                 njobs=args.jobs)