'dR03mva': 'Loose', ##'deepVSj' : 'Loose', # CV: use for datacard production 'deepVSj': 'Medium', # CV: use for datacard production } hadTau_selection = tau_id + hadTauWP_map[tau_id] blacklist = [] if use_blacklist: blacklist.append('postproc') if use_preselected: blacklist.append('skimmed_multilepton') if mode == "default": samples = load_samples(era, suffix="preselected" if use_preselected else "") samples = load_samples_stitched(samples, era, ['dy_nlo', 'wjets']) elif mode == "forBDTtraining": if use_preselected: raise ValueError( "Producing Ntuples for BDT training from preselected Ntuples makes no sense!" ) samples = load_samples(era, suffix="BDT") samples = load_samples_stitched(samples, era, ['dy_lo']) hadTauWP_map_relaxed = { 'dR03mva': 'VLoose', 'deepVSj': 'VVVLoose', # CV: use for BDT training } if args.tau_id_wp: tau_id = args.tau_id[:7]
if lep_mva_wp != 'default' and use_preselected: raise RuntimeError( "Cannot use skimmed samples with non-default lepton definition") # Use the arguments central_or_shifts = [] for systematic_label in systematics_label: for central_or_shift in getattr(systematics, systematic_label): if central_or_shift not in central_or_shifts: central_or_shifts.append(central_or_shift) lumi = get_lumi(era) jet_cleaning_by_index = (jet_cleaning == 'by_index') gen_matching_by_index = (gen_matching == 'by_index') samples = load_samples(era, suffix="preselected" if use_preselected else "") samples = load_samples_stitched(samples, era, use_stitched) for sample_name, sample_info in samples.items(): if sample_name == 'sum_events': continue if sample_info["use_it"] == False: continue if sample_info["type"] == "mc": sample_info["triggers"] = ["1mu", "2mu"] if re.match("/DY(\d)?Jets", sample_name ) or sample_info["process_name_specific"].startswith("DYToLL"): sample_info["sample_category"] = "DY" elif sample_info["process_name_specific"].startswith(("TTTo", "TTJets")): sample_info["sample_category"] = "TTbar" elif re.match("/W(\d)?Jets", sample_name): sample_info["sample_category"] = "WJets"
for central_or_shift in getattr(systematics, systematic_label): if central_or_shift not in central_or_shifts: central_or_shifts.append(central_or_shift) lumi = get_lumi(era) jet_cleaning_by_index = (jet_cleaning == 'by_index') gen_matching_by_index = (gen_matching == 'by_index') if mode == 'default': samples = load_samples(era) elif mode == 'sync': samples = load_samples(era, suffix='leptonFR_sync') else: raise ValueError('Invalid mode: %s' % mode) samples = load_samples_stitched(samples, era, load_dy='dy' in use_stitched, load_wjets='wjets' in use_stitched) for sample_name, sample_info in samples.items(): if sample_name == 'sum_events': continue if sample_info["type"] == "mc": sample_info["triggers"] = ["1e", "1mu", "2e", "2mu"] if sample_info["sample_category"] == "QCD": sample_info["use_it"] = True if sample_info["process_name_specific"].endswith("_Mu5"): sample_info["use_it"] = not qcd_inclusive elif sample_info["process_name_specific"] == "QCD_Mu15": sample_info["use_it"] = qcd_inclusive if sample_name.startswith(('/MuonEG/Run', '/Tau/Run')):
central_or_shifts.append(central_or_shift) do_sync = mode.startswith('sync') lumi = get_lumi(era) if mode == "default": samples = load_samples(era, suffix="preselected" if use_preselected else "") elif mode == "forBDTtraining": if use_preselected: raise ValueError( "Producing Ntuples for BDT training from preselected Ntuples makes no sense!" ) samples = load_samples(era, suffix="BDT") samples = load_samples_stitched(samples, era, load_dy=True, load_wjets=True) elif mode == "sync": samples = load_samples(era, suffix="sync") else: raise ValueError("Internal logic error") evtCategories = None if mode == "default" and len(central_or_shifts) <= 1: evtCategories = [ "hh_bb2l", "hh_bb2l_resolvedHbb", "hh_bb2l_resolvedHbb_vbf", "hh_bb2l_resolvedHbb_nonvbf", "hh_bb2l_boostedHbb", "hh_bb2l_vbf", "hh_bb2l_nonvbf", "hh_2bM2l", "hh_2bM2l_resolvedHbb", "hh_2bM2l_resolvedHbb_nonvbf", "hh_2bM2l_nonvbf", "hh_1bM1bL2l", "hh_1bM1bL2l_resolvedHbb", "hh_1bM1bL2l_resolvedHbb_nonvbf", "hh_1bM1bL2l_nonvbf", "hh_1bM2l", "hh_1bM2l_resolvedHbb",
if use_preselected: sample_suffix = "preselected_{}".format(sample_suffix) samples = load_samples(era, suffix = sample_suffix) else: raise ValueError("Invalid mode: %s" % mode) if not mode.startswith("sync"): for sample_name, sample_info in samples.items(): if sample_name == 'sum_events': continue if era == "2018" and sample_info["sample_category"] == "tHq" and sample_info["use_it"]: sample_info["skipEvery"] = 3 if use_stitched: samples = load_samples_stitched( samples, era, load_dy = 'dy' in use_stitched, load_wjets = 'wjets' in use_stitched, disable_dy_inclusive = 'dy_noincl' in use_stitched, disable_wjets_inclusive = 'wjets_noincl' in use_stitched, ) #-------------------------------------------------------------------------------- # CV: add ttbar MC samples to make a few extra plots for the HIG-19-008 paper #for sample_name, sample_info in samples.items(): # if sample_name == 'sum_events': # continue # if sample_name.startswith(('/TTTo2L2Nu', '/TTToSemiLeptonic')): # sample_info["use_it"] = True #-------------------------------------------------------------------------------- if __name__ == '__main__': logging.info( "Running the jobs with the following systematic uncertainties enabled: %s" % \ ', '.join(central_or_shifts)
from hhAnalysis.multilepton.samples.hhAnalyzeSamples_2018 import samples_2018 from tthAnalysis.HiggsToTauTau.common import load_samples_stitched samples_2018 = load_samples_stitched( samples_2018, '2018', ['dy_lo', 'wjets']) # load LO DY and W+jets for sample_name, sample_info in samples_2018.items(): if sample_name == 'sum_events': continue process_name = sample_info["process_name_specific"] if process_name.startswith('WZTo3LNu'): sample_info["use_it"] = process_name.startswith( ('WZTo3LNu_powheg', 'WZTo3LNu_mllmin01')) elif process_name.lower().startswith('ttz'): sample_info["use_it"] = 'TTZJets_LO' in process_name elif process_name.lower().startswith('ttw'): sample_info["use_it"] = 'TTWJets_LO' in process_name