def createSampleLists(analysis_dir='samples/', channel='VV', weight='', signalSample='', vJetsKFac=1., reweightVJets=False, reweightTop=False): # settings and code to reweight V+jets samples (EW and QCD NLO corrections) # the following two k-factors are from samples_13TeV_RunIISpring16MiniAODv2.py wJetsKFac = 1.21 dyJetsKFac = 1.23 wJetsQCDCorrections = {} dyJetsQCDCorrections = {} # taken from http://cms.cern.ch/iCMS/jsp/db_notes/noteInfo.jsp?cmsnoteid=CMS%20AN-2015/186 (Table 4) wJetsQCDCorrections["WJetsToLNu_HT100to200"] = 1.459 / wJetsKFac wJetsQCDCorrections["WJetsToLNu_HT200to400"] = 1.434 / wJetsKFac wJetsQCDCorrections["WJetsToLNu_HT400to600"] = 1.532 / wJetsKFac wJetsQCDCorrections["WJetsToLNu_HT600to800"] = 1.004 / wJetsKFac wJetsQCDCorrections["WJetsToLNu_HT800to1200"] = 1.004 / wJetsKFac wJetsQCDCorrections["WJetsToLNu_HT1200to2500"] = 1.004 / wJetsKFac wJetsQCDCorrections["WJetsToLNu_HT2500toInf"] = 1.004 / wJetsKFac dyJetsQCDCorrections["DYJetsToLL_M50_HT100to200"] = 1.588 / dyJetsKFac dyJetsQCDCorrections["DYJetsToLL_M50_HT200to400"] = 1.438 / dyJetsKFac dyJetsQCDCorrections["DYJetsToLL_M50_HT400to600"] = 1.494 / dyJetsKFac dyJetsQCDCorrections["DYJetsToLL_M50_HT600toInf"] = 1.139 / dyJetsKFac # explicit list of samples: wjetsSampleNames = [ "WJetsToLNu_HT1200to2500", "WJetsToLNu_HT2500toInf", "WJetsToLNu_HT400to600", "WJetsToLNu_HT600to800", "WJetsToLNu_HT800to1200", 'WJetsToLNu_HT100to200', 'WJetsToLNu_HT200to400' ] dyjetsSampleNames = [ 'DYJetsToLL_M50_HT100to200', 'DYJetsToLL_M50_HT200to400', 'DYJetsToLL_M50_HT400to600', 'DYJetsToLL_M50_HT600toInf' ] ttjetsSampleNames = ["TT_pow_ext3"] qcdSampleNames = [ "QCD_HT1000to1500", "QCD_HT1500to2000", "QCD_HT2000toInf", "QCD_HT500to700", "QCD_HT700to1000" ] vvSampleNames = ['WWTo1L1Nu2Q', 'WZTo1L1Nu2Q'] singleTopSampleNames = [ 'TToLeptons_tch_powheg', 'TBarToLeptons_tch_powheg', 'TToLeptons_sch', 'TBar_tWch', 'T_tWch' ] jj_SampleNames = qcdSampleNames lnujj_SampleNames = ttjetsSampleNames + wjetsSampleNames + vvSampleNames + qcdSampleNames + dyjetsSampleNames + singleTopSampleNames # cuts to split ttbar sample according to W decay ttjetsWCut = '(lnujj_l2_mergedVTruth==1&&lnujj_l2_nearestBDRTruth>0.8)' ttjetsNonWCut = '(!(lnujj_l2_mergedVTruth==1&&lnujj_l2_nearestBDRTruth>0.8))' # add ttbar pT reweighting if reweightTop: ttjetsWCut += '*truth_genTop_weight' ttjetsNonWCut += '*truth_genTop_weight' tree_prod_name = '' if (channel == "WV"): channelSampleNames = lnujj_SampleNames else: channelSampleNames = jj_SampleNames samples_essential = [] if "/sVJetsReweighting_cc.so" not in gSystem.GetLibraries(): ROOT.gROOT.ProcessLine( ".L %s/src/CMGTools/VVResonances/python/plotting/VJetsReweighting.cc+" % os.environ['CMSSW_BASE']) from ROOT import getDYWeight, getWWeight # add QCD, DY+jets, W+jets, DiBosons and SingleTop samples, but not those with _ext, since they are merged with the others for sample in QCDHT + DYJetsM50HT + WJetsToLNuHT + DiBosons + SingleTop: vJetsWeight = str(vJetsKFac) if sample.name in channelSampleNames: if (sample in DYJetsM50HT) and reweightVJets: vJetsWeight = 'getDYWeight(truth_genBoson_pt) * {}'.format( dyJetsQCDCorrections[sample.name]) elif (sample in WJetsToLNuHT) and reweightVJets: vJetsWeight = 'getWWeight(truth_genBoson_pt) * {}'.format( wJetsQCDCorrections[sample.name]) samples_essential.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=('*'.join([weight, vJetsWeight])))) # TTJets sample for sample in [TT_pow]: if sample.name in channelSampleNames: # print "Adding", sample.name, sample.xSection, sample.nGenEvents, weight samples_essential.append( SampleCfg(name=sample.name + '_W', dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=('*'.join([weight, ttjetsWCut])))) samples_essential.append( SampleCfg(name=sample.name + '_nonW', dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=('*'.join([weight, ttjetsNonWCut])))) # signal sample (set signal xsec to 5 pb) samples_signal = [] if (signalSample): for sample in signalSamples: if sample.name == signalSample: samples_signal.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=5., sumweights=sample.nGenEvents, weight_expr=('*'.join([weight])), is_signal=True)) samples_data = [] if channel == 'WV': samples_data = [ SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016B_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016C_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016D_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016B_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016C_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016D_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016B_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016C_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016D_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), ] else: samples_data = [ SampleCfg(name='data_JetHT', dir_name='JetHT_Run2016B_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_JetHT', dir_name='JetHT_Run2016C_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_JetHT', dir_name='JetHT_Run2016D_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), ] # samples_WH = [] # mssm_names = ['HiggsSUSYBB80', 'HiggsSUSYBB90', 'HiggsSUSYBB100', 'HiggsSUSYBB110', 'HiggsSUSYBB120', 'HiggsSUSYBB130', 'HiggsSUSYBB140', 'HiggsSUSYBB160', 'HiggsSUSYBB180', 'HiggsSUSYBB200', 'HiggsSUSYBB250', 'HiggsSUSYBB300', 'HiggsSUSYBB350', 'HiggsSUSYBB400', 'HiggsSUSYBB450', 'HiggsSUSYBB500', 'HiggsSUSYBB600', 'HiggsSUSYBB700', 'HiggsSUSYBB900', 'HiggsSUSYBB1000', 'HiggsSUSYBB1200', 'HiggsSUSYBB1500', 'HiggsSUSYBB1600', 'HiggsSUSYBB1800', 'HiggsSUSYBB2000', 'HiggsSUSYBB2300', 'HiggsSUSYBB2600', 'HiggsSUSYBB2900', 'HiggsSUSYBB3200', 'HiggsSUSYGG80', 'HiggsSUSYGG90', # 'HiggsSUSYGG100', 'HiggsSUSYGG110', 'HiggsSUSYGG120', 'HiggsSUSYGG130', 'HiggsSUSYGG140', 'HiggsSUSYGG160', 'HiggsSUSYGG180', 'HiggsSUSYGG200', 'HiggsSUSYGG250', 'HiggsSUSYGG300', 'HiggsSUSYGG400', 'HiggsSUSYGG450', 'HiggsSUSYGG500', 'HiggsSUSYGG600', 'HiggsSUSYGG700', 'HiggsSUSYGG800', 'HiggsSUSYGG900', 'HiggsSUSYGG1000', 'HiggsSUSYGG1200', 'HiggsSUSYGG1400', 'HiggsSUSYGG1500', 'HiggsSUSYGG1600', 'HiggsSUSYGG1800', 'HiggsSUSYGG2000', 'HiggsSUSYGG2300', 'HiggsSUSYGG2600', 'HiggsSUSYGG2900', 'HiggsSUSYGG3200'] # HiggsSUSYBB800, HiggsSUSYBB1400, HiggsSUSYGG350 # for name in mssm_names: # samples_WH.append(SampleCfg(name=name.replace('HiggsSUSYBB', 'bbH').replace('HiggsSUSYGG', 'ggH'), dir_name=name, # ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=1., sumweights=1., is_signal=True),) samples_mc = samples_essential + samples_signal samples = samples_essential + samples_data + samples_signal all_samples = samples_mc + samples_data # -> Can add cross sections for samples either explicitly, or from file, or from cfg # (currently taken from htt_common) weighted_list = [] for sample in samples_mc: if sample.name not in weighted_list: setSumWeights(sample) # sampleDict = {s.name: s for s in all_samples} sampleDict = {} for s in all_samples: sampleDict[s.name] = s return samples_mc, samples_data, samples, all_samples, sampleDict
def createSampleLists(analysis_dir='samples/', channel='VV', weight='', signalSample='', vJetsKFac=1., qcdKFac=1., useQCDPt=False): # settings and code to reweight V+jets samples (EW and QCD NLO corrections) # the following two k-factors are from samples_13TeV_RunIISpring16MiniAODv2.py # if reweightVJets and reweightVJets2015: # raise AssertionError # wJetsKFac = 1.21 # dyJetsKFac = 1.23 # wJetsQCDCorrections2015 = {} # dyJetsQCDCorrections2015 = {} # wJetsQCDCorrections = {} # dyJetsQCDCorrections = {} # # taken from http://cms.cern.ch/iCMS/jsp/db_notes/noteInfo.jsp?cmsnoteid=CMS%20AN-2015/186 (Table 4) # wJetsQCDCorrections2015["WJetsToLNu_HT100to200"] = 1.459/wJetsKFac # wJetsQCDCorrections2015["WJetsToLNu_HT200to400"] = 1.434/wJetsKFac # wJetsQCDCorrections2015["WJetsToLNu_HT400to600"] = 1.532/wJetsKFac # wJetsQCDCorrections2015["WJetsToLNu_HT600to800"] = 1.004/wJetsKFac # wJetsQCDCorrections2015["WJetsToLNu_HT800to1200"] = 1.004/wJetsKFac # wJetsQCDCorrections2015["WJetsToLNu_HT1200to2500"] = 1.004/wJetsKFac # wJetsQCDCorrections2015["WJetsToLNu_HT2500toInf"] = 1.004/wJetsKFac # dyJetsQCDCorrections2015["DYJetsToLL_M50_HT100to200"] = 1.588/dyJetsKFac # dyJetsQCDCorrections2015["DYJetsToLL_M50_HT200to400"] = 1.438/dyJetsKFac # dyJetsQCDCorrections2015["DYJetsToLL_M50_HT400to600"] = 1.494/dyJetsKFac # dyJetsQCDCorrections2015["DYJetsToLL_M50_HT600to800"] = 1.139/dyJetsKFac # dyJetsQCDCorrections2015["DYJetsToLL_M50_HT800to1200"] = 1.139/dyJetsKFac # dyJetsQCDCorrections2015["DYJetsToLL_M50_HT1200to2500"] = 1.139/dyJetsKFac # dyJetsQCDCorrections2015["DYJetsToLL_M50_HT2500toInf"] = 1.139/dyJetsKFac # # new for Summer16 W+jets (see https://github.com/jmhogan/GenHTweight) # wJetsQCDCorrections["WJetsToLNu_HT100to200"] = 0.998056 # wJetsQCDCorrections["WJetsToLNu_HT200to400"] = 0.978569 # wJetsQCDCorrections["WJetsToLNu_HT400to600"] = 0.928054 # wJetsQCDCorrections["WJetsToLNu_HT600to800"] = 0.856705 # wJetsQCDCorrections["WJetsToLNu_HT800to1200"] = 0.757463 # wJetsQCDCorrections["WJetsToLNu_HT1200to2500"] = 0.608292 # wJetsQCDCorrections["WJetsToLNu_HT2500toInf"] = 0.454246 # dyJetsQCDCorrections["DYJetsToLL_M50_HT100to200"] = 1.007516 # dyJetsQCDCorrections["DYJetsToLL_M50_HT200to400"] = 0.992853 # dyJetsQCDCorrections["DYJetsToLL_M50_HT400to600"] = 0.974071 # dyJetsQCDCorrections["DYJetsToLL_M50_HT600to800"] = 0.948367 # dyJetsQCDCorrections["DYJetsToLL_M50_HT800to1200"] = 0.883340 # dyJetsQCDCorrections["DYJetsToLL_M50_HT1200to2500"] = 0.749894 # dyJetsQCDCorrections["DYJetsToLL_M50_HT2500toInf"] = 0.617254 # explicit list of samples: wjetsSampleNames = ["WJetsToQQ_HT800toInf"] dyjetsSampleNames = ['ZJetsToQQ_HT800toInf'] ttjetsSampleNames = ["TTHad_pow"] qcdSampleNames = [ 'QCD_HT100to200', 'QCD_HT200to300', 'QCD_HT300to500', 'QCD_HT500to700', 'QCD_HT700to1000', 'QCD_HT1000to1500', 'QCD_HT1500to2000', 'QCD_HT2000toInf' ] # vvSampleNames = ['WWTo1L1Nu2Q', 'WWTo1L1Nu2Q', 'WZTo1L1Nu2Q'] # singleTopSampleNames = ['Ttch_powheg', 'TBar_tch_powheg', 'TToLeptons_sch', 'TBar_tWch', 'T_tWch'] # topSamples = [TT_pow] # if useTopMcatnlo: # topSamples = [TTJets] # ttjetsSampleNames = ["TTJets"] # if useWJetsPt: # wjetsSampleNames = ["WJetsToLNu_Pt_100To250", "WJetsToLNu_Pt_250To400", "WJetsToLNu_Pt_400To600", "WJetsToLNu_Pt_600ToInf"] jj_SampleNames = qcdSampleNames + wjetsSampleNames + dyjetsSampleNames + ttjetsSampleNames # cuts to split ttbar sample according to W decay # ttjetsWCut = '(lnujj_l2_mergedVTruth==1&&lnujj_l2_nearestBDRTruth>0.8)' # ttjetsNonWCut = '(!(lnujj_l2_mergedVTruth==1&&lnujj_l2_nearestBDRTruth>0.8))' # add ttbar pT reweighting # if reweightTop: # ttjetsWCut += '*truth_genTop_weight' # ttjetsNonWCut += '*truth_genTop_weight' tree_prod_name = '' # if (channel == "WV"): # channelSampleNames = lnujj_SampleNames # else: channelSampleNames = jj_SampleNames samples_essential = [] # if "/sVJetsReweighting_cc.so" not in gSystem.GetLibraries(): # ROOT.gROOT.ProcessLine(".L %s/src/CMGTools/VVResonances/python/plotting/VJetsReweighting.cc+" % os.environ['CMSSW_BASE']) # from ROOT import getDYWeight, getWWeight # add samples for sample in QCDHT + QCDPt + VJetsQQHT + [TTHad_pow]: vJetsWeight = "1." # str(vJetsKFac) if sample.name in channelSampleNames: if sample.name in qcdSampleNames: vJetsWeight = str(qcdKFac) if sample.name in (wjetsSampleNames + dyjetsSampleNames): vJetsWeight = str(0.3) # if (sample in DYJetsM50HT) and reweightVJets: # vJetsWeight = '{} * {}'.format(vJetsKFac, dyJetsQCDCorrections[sample.name]) # elif (sample in WJetsToLNuHT) and reweightVJets: # vJetsWeight = '{} * {}'.format(vJetsKFac, wJetsQCDCorrections[sample.name]) # if (sample in DYJetsM50HT) and reweightVJets2015: # vJetsWeight = 'getDYWeight(truth_genBoson_pt) * {} * {}'.format(vJetsKFac, dyJetsQCDCorrections2015[sample.name]) # elif (sample in WJetsToLNuHT) and reweightVJets2015: # vJetsWeight = 'getWWeight(truth_genBoson_pt) * {} * {}'.format(vJetsKFac, wJetsQCDCorrections2015[sample.name]) samples_essential.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=('*'.join([weight, vJetsWeight])))) # # TTJets sample # for sample in topSamples: # if sample.name in channelSampleNames: # # print "Adding", sample.name, sample.xSection, sample.nGenEvents, weight # samples_essential.append( # SampleCfg(name=sample.name+'_W', dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, # xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=('*'.join([weight, ttjetsWCut])))) # samples_essential.append( # SampleCfg(name=sample.name+'_nonW', dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, # xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=('*'.join([weight, ttjetsNonWCut])))) # signal sample (set signal xsec to 5 pb) samples_signal = [] if (signalSample): for sample in signalSamples: if sample.name == signalSample: samples_signal.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=5., sumweights=sample.nGenEvents, weight_expr=('*'.join([weight])), is_signal=True)) samples_data = [] if channel == 'WV': samples_data = [ SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016B_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016C_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016D_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016E_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016F_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016G_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016H_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleMuon', dir_name='SingleMuon_Run2016H_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016B_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016C_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016D_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016E_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016F_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016G_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016H_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_SingleElectron', dir_name='SingleElectron_Run2016H_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016B_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016C_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016D_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016E_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016F_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016G_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016H_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_MET', dir_name='MET_Run2016H_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), ] else: samples_data = [ SampleCfg(name='data_JetHT', dir_name='JetHT_Run2017B_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_JetHT', dir_name='JetHT_Run2017C_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_JetHT', dir_name='JetHT_Run2017D_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_JetHT', dir_name='JetHT_Run2017E_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_JetHT', dir_name='JetHT_Run2017F_17Nov2017', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), ] # samples_WH = [] # mssm_names = ['HiggsSUSYBB80', 'HiggsSUSYBB90', 'HiggsSUSYBB100', 'HiggsSUSYBB110', 'HiggsSUSYBB120', 'HiggsSUSYBB130', 'HiggsSUSYBB140', 'HiggsSUSYBB160', 'HiggsSUSYBB180', 'HiggsSUSYBB200', 'HiggsSUSYBB250', 'HiggsSUSYBB300', 'HiggsSUSYBB350', 'HiggsSUSYBB400', 'HiggsSUSYBB450', 'HiggsSUSYBB500', 'HiggsSUSYBB600', 'HiggsSUSYBB700', 'HiggsSUSYBB900', 'HiggsSUSYBB1000', 'HiggsSUSYBB1200', 'HiggsSUSYBB1500', 'HiggsSUSYBB1600', 'HiggsSUSYBB1800', 'HiggsSUSYBB2000', 'HiggsSUSYBB2300', 'HiggsSUSYBB2600', 'HiggsSUSYBB2900', 'HiggsSUSYBB3200', 'HiggsSUSYGG80', 'HiggsSUSYGG90', # 'HiggsSUSYGG100', 'HiggsSUSYGG110', 'HiggsSUSYGG120', 'HiggsSUSYGG130', 'HiggsSUSYGG140', 'HiggsSUSYGG160', 'HiggsSUSYGG180', 'HiggsSUSYGG200', 'HiggsSUSYGG250', 'HiggsSUSYGG300', 'HiggsSUSYGG400', 'HiggsSUSYGG450', 'HiggsSUSYGG500', 'HiggsSUSYGG600', 'HiggsSUSYGG700', 'HiggsSUSYGG800', 'HiggsSUSYGG900', 'HiggsSUSYGG1000', 'HiggsSUSYGG1200', 'HiggsSUSYGG1400', 'HiggsSUSYGG1500', 'HiggsSUSYGG1600', 'HiggsSUSYGG1800', 'HiggsSUSYGG2000', 'HiggsSUSYGG2300', 'HiggsSUSYGG2600', 'HiggsSUSYGG2900', 'HiggsSUSYGG3200'] # HiggsSUSYBB800, HiggsSUSYBB1400, HiggsSUSYGG350 # for name in mssm_names: # samples_WH.append(SampleCfg(name=name.replace('HiggsSUSYBB', 'bbH').replace('HiggsSUSYGG', 'ggH'), dir_name=name, # ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=1., sumweights=1., is_signal=True),) samples_mc = samples_essential + samples_signal samples = samples_essential + samples_data + samples_signal all_samples = samples_mc + samples_data # -> Can add cross sections for samples either explicitly, or from file, or from cfg # (currently taken from htt_common) weighted_list = [] for sample in samples_mc: if sample.name not in weighted_list: setSumWeights(sample) # sampleDict = {s.name: s for s in all_samples} sampleDict = {} for s in all_samples: sampleDict[s.name] = s return samples_mc, samples_data, samples, all_samples, sampleDict
def createSampleLists(analysis_dir='samples/', channel='VV', weight=''): # -> Possibly from cfg like in the past, but may also make sense to enter directly tree_prod_name = '' samples_essential = [] # add QCD samples, but not those with _ext, since they are not produced for sample in QCDHT: if not (sample.name.find("_ext") >= 0): samples_essential.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=weight)) # TTJets sample samples_essential.append( SampleCfg(name=TTJets.name, dir_name=TTJets.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=TTJets.xSection, sumweights=TTJets.nGenEvents, weight_expr=weight)) # DY+jets samples, but not those with _ext, since they are not produced for dySample in DYJetsM50HT: if not (sample.name.find("_ext") >= 0): samples_essential.append( SampleCfg(name=dySample.name, dir_name=dySample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=dySample.xSection, sumweights=dySample.nGenEvents, weight_expr=weight)) # W+jets samples, but not those with _ext, since they are not produced for sample in WJetsToLNuHT: if not (sample.name.find("_ext") >= 0): samples_essential.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=weight)) # DiBosons samples for sample in DiBosons: if not (sample.name.find("NuNu") >= 0): samples_essential.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=weight)) # SingleTop samples for sample in SingleTop: if not (sample.name.find("tZq_ll") >= 0): samples_essential.append( SampleCfg(name=sample.name, dir_name=sample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=sample.xSection, sumweights=sample.nGenEvents, weight_expr=weight)) samples_data = [] # if channel in ['VV']: samples_data = [ SampleCfg(name='data_obs', dir_name='JetHT_Run2016B_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='JetHT_Run2016C_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='JetHT_Run2016D_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='SingleMuon_Run2016B_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='SingleMuon_Run2016C_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='SingleMuon_Run2016D_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='SingleElectron_Run2016B_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='SingleElectron_Run2016C_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='SingleElectron_Run2016D_PromptReco_v2', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), ] # samples_WH = [] # mssm_names = ['HiggsSUSYBB80', 'HiggsSUSYBB90', 'HiggsSUSYBB100', 'HiggsSUSYBB110', 'HiggsSUSYBB120', 'HiggsSUSYBB130', 'HiggsSUSYBB140', 'HiggsSUSYBB160', 'HiggsSUSYBB180', 'HiggsSUSYBB200', 'HiggsSUSYBB250', 'HiggsSUSYBB300', 'HiggsSUSYBB350', 'HiggsSUSYBB400', 'HiggsSUSYBB450', 'HiggsSUSYBB500', 'HiggsSUSYBB600', 'HiggsSUSYBB700', 'HiggsSUSYBB900', 'HiggsSUSYBB1000', 'HiggsSUSYBB1200', 'HiggsSUSYBB1500', 'HiggsSUSYBB1600', 'HiggsSUSYBB1800', 'HiggsSUSYBB2000', 'HiggsSUSYBB2300', 'HiggsSUSYBB2600', 'HiggsSUSYBB2900', 'HiggsSUSYBB3200', 'HiggsSUSYGG80', 'HiggsSUSYGG90', # 'HiggsSUSYGG100', 'HiggsSUSYGG110', 'HiggsSUSYGG120', 'HiggsSUSYGG130', 'HiggsSUSYGG140', 'HiggsSUSYGG160', 'HiggsSUSYGG180', 'HiggsSUSYGG200', 'HiggsSUSYGG250', 'HiggsSUSYGG300', 'HiggsSUSYGG400', 'HiggsSUSYGG450', 'HiggsSUSYGG500', 'HiggsSUSYGG600', 'HiggsSUSYGG700', 'HiggsSUSYGG800', 'HiggsSUSYGG900', 'HiggsSUSYGG1000', 'HiggsSUSYGG1200', 'HiggsSUSYGG1400', 'HiggsSUSYGG1500', 'HiggsSUSYGG1600', 'HiggsSUSYGG1800', 'HiggsSUSYGG2000', 'HiggsSUSYGG2300', 'HiggsSUSYGG2600', 'HiggsSUSYGG2900', 'HiggsSUSYGG3200'] # HiggsSUSYBB800, HiggsSUSYBB1400, HiggsSUSYGG350 # for name in mssm_names: # samples_WH.append(SampleCfg(name=name.replace('HiggsSUSYBB', 'bbH').replace('HiggsSUSYGG', 'ggH'), dir_name=name, # ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=1., sumweights=1., is_signal=True),) samples_mc = samples_essential # + samples_WH samples = samples_essential + samples_data all_samples = samples_mc + samples_data # -> Can add cross sections for samples either explicitly, or from file, or from cfg # (currently taken from htt_common) weighted_list = [] for sample in samples_mc: if sample.name not in weighted_list: setSumWeights(sample) # sampleDict = {s.name: s for s in all_samples} sampleDict = {} for s in all_samples: sampleDict[s.name] = s return samples_mc, samples_data, samples, all_samples, sampleDict
def createSampleLists(analysis_dir='/data/clange/ntuples/2015_76X_Pruning/', channel='VV', weight=''): # -> Possibly from cfg like in the past, but may also make sense to enter directly tree_prod_name = '' samples_essential = [] for qcdSample in QCDHT: if not ((qcdSample.name.find("_ext") >= 0) or (qcdSample.name.find("100to200") >= 0)): print qcdSample.name samples_essential.append( SampleCfg(name=qcdSample.name, dir_name=qcdSample.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=qcdSample.xSection, sumweights=qcdSample.nGenEvents, weight_expr=weight)) samples_essential.append( SampleCfg(name=TTJets.name, dir_name=TTJets.name, ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=TTJets.xSection, sumweights=TTJets.nGenEvents, weight_expr=weight)) samples_data = [] # if channel in ['VV']: samples_data = [ # SampleCfg(name='data_obs', dir_name='JetHT_Run2015C_25ns_16Dec', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), SampleCfg(name='data_obs', dir_name='JetHT_Run2015D_16Dec', ana_dir=analysis_dir, tree_prod_name=tree_prod_name, is_data=True), ] # samples_WH = [] # mssm_names = ['HiggsSUSYBB80', 'HiggsSUSYBB90', 'HiggsSUSYBB100', 'HiggsSUSYBB110', 'HiggsSUSYBB120', 'HiggsSUSYBB130', 'HiggsSUSYBB140', 'HiggsSUSYBB160', 'HiggsSUSYBB180', 'HiggsSUSYBB200', 'HiggsSUSYBB250', 'HiggsSUSYBB300', 'HiggsSUSYBB350', 'HiggsSUSYBB400', 'HiggsSUSYBB450', 'HiggsSUSYBB500', 'HiggsSUSYBB600', 'HiggsSUSYBB700', 'HiggsSUSYBB900', 'HiggsSUSYBB1000', 'HiggsSUSYBB1200', 'HiggsSUSYBB1500', 'HiggsSUSYBB1600', 'HiggsSUSYBB1800', 'HiggsSUSYBB2000', 'HiggsSUSYBB2300', 'HiggsSUSYBB2600', 'HiggsSUSYBB2900', 'HiggsSUSYBB3200', 'HiggsSUSYGG80', 'HiggsSUSYGG90', # 'HiggsSUSYGG100', 'HiggsSUSYGG110', 'HiggsSUSYGG120', 'HiggsSUSYGG130', 'HiggsSUSYGG140', 'HiggsSUSYGG160', 'HiggsSUSYGG180', 'HiggsSUSYGG200', 'HiggsSUSYGG250', 'HiggsSUSYGG300', 'HiggsSUSYGG400', 'HiggsSUSYGG450', 'HiggsSUSYGG500', 'HiggsSUSYGG600', 'HiggsSUSYGG700', 'HiggsSUSYGG800', 'HiggsSUSYGG900', 'HiggsSUSYGG1000', 'HiggsSUSYGG1200', 'HiggsSUSYGG1400', 'HiggsSUSYGG1500', 'HiggsSUSYGG1600', 'HiggsSUSYGG1800', 'HiggsSUSYGG2000', 'HiggsSUSYGG2300', 'HiggsSUSYGG2600', 'HiggsSUSYGG2900', 'HiggsSUSYGG3200'] # HiggsSUSYBB800, HiggsSUSYBB1400, HiggsSUSYGG350 # for name in mssm_names: # samples_WH.append(SampleCfg(name=name.replace('HiggsSUSYBB', 'bbH').replace('HiggsSUSYGG', 'ggH'), dir_name=name, # ana_dir=analysis_dir, tree_prod_name=tree_prod_name, xsec=1., sumweights=1., is_signal=True),) samples_mc = samples_essential # + samples_WH samples = samples_essential + samples_data all_samples = samples_mc + samples_data # -> Can add cross sections for samples either explicitly, or from file, or from cfg # (currently taken from htt_common) weighted_list = ['W', 'W1Jets', 'W2Jets', 'W3Jets', 'W4Jets'] for sample in samples_mc: if sample.name not in weighted_list: setSumWeights(sample) # sampleDict = {s.name: s for s in all_samples} sampleDict = {} for s in all_samples: sampleDict[s.name] = s return samples_mc, samples_data, samples, all_samples, sampleDict