Пример #1
0
        jobs += [(sample.name, str(njob))]

#Merges subfiles if needed
if args.isTest:
    input_file_path = os.getcwd()+'/data/testArea/compareTauID/includeReco/'
else:
    input_file_path = os.getcwd()+'/data/compareTauID/includeReco/'
if args.onlyReco:
    input_file_path += 'onlyReco/'

merge_files = glob.glob(input_file_path + '*')
for mf in merge_files:
    if "Results" in mf: merge_files.pop(merge_files.index(mf))
    if not args.onlyReco and 'onlyReco' in mf: merge_files.pop(merge_files.index(mf))
script = os.path.expandvars(os.path.join('$CMSSW', 'src', 'HNL', 'ObjectSelection', 'compareTauID.py'))
merge(merge_files, script, jobs, ('sample', 'subJob'), argParser, istest=args.isTest)

list_of_bkgr_eff = {}
list_of_signal_eff = {}
list_of_bkgr_pt = {}
list_of_signal_pt = {}

inputfiles_eff = glob.glob(input_file_path + '*/*root')
samples = {f.split('/')[-2] for f in inputfiles_eff}
from HNL.Tools.efficiency import Efficiency
from HNL.Tools.helpers import getObjFromFile
for sample in samples:
    eff = Efficiency('efficiency_pt', None, None, input_file_path + sample+'/efficiency.root', subdirs = ['deeptauVSjets-none-none-'+args.wp, 'efficiency_pt'])
    if 'HNL' in sample:
        list_of_signal_eff[sample] = eff.getEfficiency() 
        list_of_signal_pt[sample] = getObjFromFile(os.path.expandvars('$CMSSW_BASE/src/HNL/Test/data/plotTau/gen/' + sample + '/variables.root'), 'pt/'+sample+'-pt')
Пример #2
0
            output_file.mkdir(v)
            output_file.cd(v)
            list_of_hist[sample.output][v].getHist().Write()

        output_file.Close()

#If the option to not run over the events again is made, load in the already created histograms here
else:
    import glob

    hist_list = glob.glob(os.getcwd() + '/data/plotTau/' + reco_or_gen_str +
                          '/*')

    # Merge files if necessary
    for n in hist_list:
        merge(n)

    list_of_hist = {}
    # Load in the histograms from the files
    for h in hist_list:
        sample_name = h.split('/')[-1]
        list_of_hist[sample_name] = {}
        for v in var.keys():
            list_of_hist[sample_name][v] = Histogram(
                getObjFromFile(h + '/variables.root',
                               v + '/' + sample_name + '-' + v))

#
#       Plot!
#
if args.runOnCream or args.isTest:
Пример #3
0
        base_path_out = os.path.join(
            os.path.expandvars('$CMSSW_BASE'), 'src', 'HNL',
            'BackgroundEstimation', 'data', 'testArea', 'Results',
            __file__.split('.')[0].rsplit('/', 1)[-1], data_str, args.year,
            args.flavor, '-'.join([region_to_select, args.selection]))
    else:
        base_path_out = os.path.join(
            os.path.expandvars('$CMSSW_BASE'), 'src', 'HNL',
            'BackgroundEstimation', 'data', 'Results',
            __file__.split('.')[0].rsplit('/', 1)[-1], data_str, args.year,
            args.flavor, '-'.join([region_to_select, args.selection]))

    in_files = glob.glob(os.path.join(base_path_in, '*'))
    merge(in_files,
          __file__,
          jobs, ('sample', 'subJob'),
          argParser,
          istest=args.isTest)

    if args.inData:
        os.system("hadd -f " + base_path_in + "/events.root " + base_path_in +
                  '/*/events.root')

    samples_to_plot = ['Data'] if args.inData else sample_manager.getOutputs()

    for sample_output in samples_to_plot:
        if args.isTest and sample_output != 'DY': continue
        if args.inData:
            output_dir = makePathTimeStamped(base_path_out)
            in_file = base_path_in + '/events.root'
        else:
Пример #4
0
            else:
                list_of_hist[sample.output][v].write(
                    output_name + 'variables' + subjobAppendix + '.root',
                    subdirs=[v],
                    is_test=args.isTest,
                    append=True)

#If the option to not run over the events again is made, load in the already created histograms here
else:
    import glob

    hist_list = glob.glob(os.getcwd() + '/data/plotTau/' + reco_or_gen_str +
                          '/*')

    # Merge files if necessary
    merge(hist_list, __file__, jobs, ('sample', 'subJob'), argParser)

    list_of_hist = {}
    # Load in the histograms from the files
    for h in hist_list:
        sample_name = h.split('/')[-1]
        list_of_hist[sample_name] = {}
        for v in var.keys():
            list_of_hist[sample_name][v] = Histogram(
                getObjFromFile(h + '/variables.root',
                               v + '/' + sample_name + '-' + v))

closeLogger(log)

#
#       Plot!
Пример #5
0
        out_file.cd()

else:

    from HNL.Tools.mergeFiles import merge
    from HNL.ObjectSelection.tauSelector import getCorrespondingLightLepDiscr
    import glob
    list_to_merge = [
        f for f in glob.glob(
            os.path.join(os.getcwd(), 'data',
                         __file__.split('.')[0].rsplit('/')[-1], args.year,
                         '*', '*')) if not 'TextResults' in f
    ]
    merge(list_to_merge,
          __file__,
          jobs, ('sample', 'subJob'),
          argParser,
          istest=args.isTest)

    def sortkey(c):
        mass_dir = c.split('/')[-2]
        # return int(mass_dir.split('-M')[-1])
        return int(mass_dir.split('-m')[-1])

    list_of_input = {
        'Signal':
        sorted(glob.glob(
            os.path.join(os.getcwd(), 'data',
                         __file__.split('.')[0].rsplit('/')[-1], args.year,
                         'Signal', '*', 'events.root')),
               key=sortkey),
Пример #6
0
                    for entry in xrange(chain.GetEntries()):
                        chain.GetEntry(entry)
                        new_vars[prompt_str][c].event_weight = num_of_entries[
                            'tot'][c] / num_of_entries[chain.HNL_mass][c]
                        out_trees[prompt_str][c].Fill()
                    out_file.cd(prompt_str + '/' + c)
                    out_trees[prompt_str][c].Write()

    merge_base = '/storage_mnt/storage/user/lwezenbe/public/ntuples/HNL/' if not args.isTest else '/user/lwezenbe/private/PhD/Analysis_CMSSW_10_2_22/CMSSW_10_2_22/src/HNL/TMVA/data/testArea/'

    signal_mergefiles = merge_base + 'TMVA/' + str(
        args.year) + '/' + args.region + '-' + args.selection + '/Signal'
    background_mergefiles = merge_base + 'TMVA/' + str(
        args.year) + '/' + args.region + '-' + args.selection + '/Background'
    merge([signal_mergefiles, background_mergefiles], __file__, jobs,
          ('sample', 'subJob'), argParser)

    combined_dir = lambda sd: merge_base + 'TMVA/' + str(
        args.year
    ) + '/' + args.region + '-' + args.selection + '/Combined/' + sd
    makeDirIfNeeded(combined_dir('SingleTree') + '/test')
    makeDirIfNeeded(combined_dir('TwoTrees') + '/test')

    import glob
    all_signal_files = glob.glob(merge_base + 'TMVA/' + str(args.year) + '/' +
                                 args.region + '-' + args.selection +
                                 '/Signal/*root')
    low_mass = [10, 20, 40, 50, 60, 70, 80]
    high_mass = [90, 100, 120, 130, 150, 200, 300, 400, 500, 600, 800]
    tau = lambda mass: merge_base + 'TMVA/' + str(
        args.year
Пример #7
0
#
# Argument parser and logging
#
import argparse
argParser = argparse.ArgumentParser(description = "Argument parser")
argParser.add_argument('signal',     action='store',      default=None,   help='Select bkgr')
argParser.add_argument('bkgr',     action='store',      default=None,   help='Select bkgr')
argParser.add_argument('flavor',     action='store',      default=None,   help='0: electrons, 1:muons')
args = argParser.parse_args()


#Merges subfiles if needed
merge_files = glob.glob(os.getcwd()+'/data/compareLightLeptonId/*')
for mf in merge_files:
    if "Results" in mf: continue
    merge(mf)

input_signal = glob.glob(os.getcwd()+'/data/compareLightLeptonId/'+args.signal+'/*ROC-'+args.flavor+'.root')
bkgr_prefix = os.getcwd()+'/data/compareLightLeptonId/'+args.bkgr

from HNL.Plotting.plot import Plot

output_dir = makePathTimeStamped(os.getcwd()+'/data/Results/compareLightLeptonId/ROC/'+args.signal+'-'+args.bkgr)
curves = []
ordered_f_names = []
for f_path in input_signal:
    f_name = f_path.rsplit('/', 1)[1].split('.')[0]
    ordered_f_names.append(f_name)
    roc_curve = ROC(f_name.split('-')[0], 1., '', f_path, misid_path =bkgr_prefix + '/'+f_name+'.root')
    curves.append(roc_curve.returnGraph())
p = Plot(curves, ordered_f_names, args.signal+'_'+args.flavor, 'efficiency', 'misid', y_log=True)
Пример #8
0
            if i == 0 and j == 0:       efficiency[c_key][t_key].write(is_test=arg_string)
            else:                       efficiency[c_key][t_key].write(append=True, is_test=arg_string)
            
    closeLogger(log)

else:
    import glob
    from HNL.Tools.mergeFiles import merge
    from HNL.Tools.helpers import makePathTimeStamped
    from HNL.Plotting.plottingTools import extraTextFormat, drawLineFormat
    
    cut_str = 'noFilter' if args.baselineCut is None else args.baselineCut

    input_files = glob.glob(getOutputBase(args.flavor))
    # Merge if needed
    merge(input_files, __file__, jobs[args.flavor], ('sample', 'subJob'), argParser, istest=args.isTest, groups_to_merge = ['signalSelection-'+cut_str])

    in_file = getOutputBase(args.flavor)+'/signalSelection-'+cut_str+'.root'

    efficiency = {}
    efficiency[cut_str] = createEfficiencies(in_file, CATEGORIES, {'HNLmass': (None, None, None)})

    if args.stackBaselineCuts is not None:
        for cut in args.stackBaselineCuts:
            efficiency[cut] = createEfficiencies(getOutputBase(args.flavor)+'/signalSelection-'+cut+'.root', CATEGORIES, {'HNLmass': (None, None, None)})

    if args.compareTriggerCuts is None:

        if args.divideByCategory is not None:
            for cut_key in efficiency.keys():
                for sk_key in SUPER_CATEGORIES.keys():
Пример #9
0
    from HNL.EventSelection.eventCategorization import CATEGORY_NAMES, ANALYSIS_CATEGORIES

    # args.selection, args.region, sample.output, prompt_str

    if not args.isTest:
        base_path = os.path.join(os.getcwd(), 'data',
                                 __file__.split('.')[0], args.selection,
                                 args.region)
    else:
        base_path = os.path.join(os.getcwd(), 'data', 'testArea',
                                 __file__.split('.')[0], args.selection,
                                 args.region)
    in_files = glob.glob(os.path.join(base_path, '*', '*'))
    for f in in_files:
        if '.txt' in f or '.root' in f: continue
        merge(f)

    def mergeValues(values_to_merge, errors_to_merge):
        if len(values_to_merge) != len(errors_to_merge):
            raise RuntimeError(
                'length of both input arrays should be the same. Now they are: len(values) = '
                + str(len(values_to_merge)) + ' and len(errors) = ' +
                str(len(errors_to_merge)))
        out_val, out_err = (values_to_merge[0], errors_to_merge[0])
        if len(values_to_merge) > 1:
            for val, err in zip(values_to_merge[1:], errors_to_merge[1:]):
                out_val += val
                out_err = np.sqrt(out_err**2 + err**2)
        return out_val, out_err

    #
Пример #10
0
            ]
        else:
            bkgr_list = []

        # data
        if len(args.includeData) > 0:
            data_list = glob.glob(getOutputName('data', year) + '/Data')
        else:
            data_list = []

        print 'check merge'
        # Merge files if necessary
        mixed_list = signal_list + bkgr_list + data_list
        merge(mixed_list,
              __file__,
              jobs[year], ('sample', 'subJob', 'includeData'),
              argParser,
              istest=args.isTest,
              additionalArgs=[('year', year)])

        if args.groupSamples:
            background_collection = sample_manager.sample_groups.keys() + [
                'non-prompt'
            ]
        else:
            background_collection = [b.split('/')[-1] for b in bkgr_list]

        #Clean list of hist
        tmp_signal_list = []
        tmp_bkgr_list = []
        for i_s, s in enumerate(signal_list):
            sample_name = s.split('/')[-1]