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')
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:
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:
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!
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),
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
# # 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)
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():
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 #
] 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]