コード例 #1
0
def createSamples(mode, analysis_dir, total_weight, qcd_from_same_sign, w_qcd_mssm_method, r_qcd_os_ss):
    hist_dict = {}
    sample_dict = {}

    samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(analysis_dir=analysis_dir, mode=mode)

    if mode == 'mssm_control' or not 'mssm' in mode:
        all_samples = [s for s in all_samples if not 'ggH' in s.name and not 'bbH' in s.name]

    sample_dict['all_samples'] = all_samples

    if qcd_from_same_sign and not w_qcd_mssm_method:
        samples_qcdfromss = [s for s in all_samples if s.name != 'QCD']
        samples_ss = copy.deepcopy(samples_qcdfromss)

        samples_ss = [s for s in samples_ss if not s.is_signal]

        for sample in samples_ss:
            if sample.name != 'data_obs':
                # Subtract background from data
                sample.scale = -1.

        qcd = HistogramCfg(name='QCD', var=None, cfgs=samples_ss, cut=None, total_scale=r_qcd_os_ss, lumi=int_lumi, weight=total_weight)

        samples_qcdfromss.append(qcd)
        sample_dict['samples_qcdfromss'] = samples_qcdfromss

    if w_qcd_mssm_method:
        sample_dict['samples_mssm_method'] = createQCDWHistograms(samples, hist_dict, int_lumi, weight=total_weight, r_qcd_os_ss=r_qcd_os_ss)

    return sample_dict, hist_dict
コード例 #2
0
def createSamples(mode, analysis_dir, optimisation=False):
    samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
        analysis_dir=analysis_dir,
        channel='tt',
        mode=mode,
        ztt_cut='(l2_gen_match == 5 && l1_gen_match == 5)',
        zl_cut=
        '(l1_gen_match < 6 && l2_gen_match < 6 && !(l1_gen_match == 5 && l2_gen_match == 5))',
        zj_cut='(l2_gen_match == 6 || l1_gen_match == 6)',
        signal_scale=1. if optimisation else 20.)
    return all_samples, samples
コード例 #3
0
# cuts.append(Cut('inclusivemt40', inc_cut + '&& l1_charge != l2_charge && mt<40'))

# MSSM Categories
cuts.append(
    Cut('nobtag',
        inc_cut + '&& l1_charge != l2_charge && n_bjets==0 && mt<30'))
# cuts.append(Cut('btag', inc_cut + '&& l1_charge != l2_charge && n_bjets>=1 && n_jets<=1 && mt<30'))

# cuts.append(Cut('inclusivemtgr40', inc_cut + '&& l1_charge != l2_charge && mt>40'))

# cuts.append(Cut('SS', inc_cut + '&& l1_charge == l2_charge'))
# cuts.append(Cut('SS_muantiiso', inc_cut.replace('l1_reliso05<0.1', 'l1_reliso05>0.2') + '&& l1_charge == l2_charge'))
# cuts.append(Cut('SSmt40', inc_cut + '&& l1_charge == l2_charge && mt<40'))
# cuts.append(Cut('SShighmt40', inc_cut + '&& l1_charge == l2_charge && mt>40'))

samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
    analysis_dir=analysis_dir)


def createDefaultGroups(plot):
    plot.Group('VV', [
        'VVTo2L2Nu', 'ZZTo2L2Q', 'WWTo1L1Nu2Q', 'WZTo1L3Nu', 'ZZTo4L',
        'WZTo3L', 'WZTo2L2Q', 'WZTo1L1Nu2Q', 'T_tWch', 'TBar_tWch',
        'TToLeptons_tch_powheg', 'TBarToLeptons_tch_powheg'
    ])
    plot.Group('ZTT', [
        'ZTT', 'ZTT1Jets', 'ZTT2Jets', 'ZTT3Jets', 'ZTT4Jets', 'ZTTM150',
        'ZTTM10'
    ])
    plot.Group(
        'ZJ',
        ['ZJ', 'ZJ1Jets', 'ZJ2Jets', 'ZJ3Jets', 'ZJ4Jets', 'ZJM150', 'ZJM10'])
コード例 #4
0
# cuts['bveto_lowdeta'] = inc_cut + '&& l1_charge != l2_charge && n_bjets==0 && delta_eta_l1_l2<2.5'


#cuts['inclusive'] = inc_cut + '&& l1_charge != l2_charge && mvis <= 40 && n_bjets >= 1'


cuts = cuts.copy()

print cuts

qcd_from_same_sign = True

analysis_dir = '/data1/steggema/em/06092016/MuEleRealMCPlusTau'

samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(analysis_dir, channel='em',  ztt_cut='(l1_gen_match>2 && l2_gen_match>3)', zl_cut='l2_gen_match==99',zj_cut='l2_gen_match==99', data2016G=data2016G)

if qcd_from_same_sign:
    samples_qcdfromss = [s for s in samples if s.name != 'QCD']
    samples_ss = copy.deepcopy(samples_qcdfromss)

    scale = 2.0

    for sample in samples_ss:
        sample.scale = scale
        if sample.name != 'data_obs':
            # Subtract background from data
            sample.scale = -scale

    qcd = HistogramCfg(name='QCD', var=None, cfgs=samples_ss, cut=inc_cut, lumi=lumi)
コード例 #5
0
    'T_tWch':'T_tWch',
    'VVTo2L2Nu':'VVTo2L2Nu',
    'W':'W',
    'WWTo1L1Nu2Q':'WWTo1L1Nu2Q',
    'WZTo1L1Nu2Q':'WZTo1L1Nu2Q',
    'WZTo1L3Nu':'WZTo1L3Nu',
    'WZTo2L2Q':'WZTo2L2Q',
    'WZTo3L':'WZTo3L',
    'Z':'ZL',
    'ZZTo2L2Q':'ZZTo2L2Q',
}
int_lumi = 2094.2 # from Alexei's email
analysis_dir = '/afs/cern.ch/user/s/steggema/work/public/mt/151215/'
tree_prod_name = 'H2TauTauTreeProducerTauMu'
data_dir = analysis_dir
samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(analysis_dir=analysis_dir, tree_prod_name=tree_prod_name)
for sample in all_samples:
    setSumWeights(sample, directory='MCWeighter')

mcRescalings = []
for sample in mcSamples:
    cmgName = cmgSampleTranslation[sample]
    mcRescalings.append(int_lumi*sampleDict[cmgName].xsec/sampleDict[cmgName].sumweights)
######################################



### define plot information
plotInfos = [PlotInfo(), PlotInfo(), PlotInfo()]
## Data
plotInfos[0].markerStyle = 20
コード例 #6
0
    'l2_mt',
    'pzeta_disc',
    'pt_l1l2'
])
split_var = train_vars[0]

clf0 = joblib.load('GradientBoostingClassifier_clf_stau_mtsum200_0.pkl')
clf1 = joblib.load('GradientBoostingClassifier_clf_stau_mtsum200_1.pkl')

out_dict = {}

samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
    analysis_dir=analysis_dir,
    channel='tt',
    mode='susy',
    ztt_cut='(l2_gen_match == 5 && l1_gen_match == 5)',
    zl_cut=
    '(l1_gen_match < 6 && l2_gen_match < 6 && !(l1_gen_match == 5 && l2_gen_match == 5))',
    zj_cut='(l2_gen_match == 6 || l1_gen_match == 6)',
    signal_scale=1.)

trees_done = []

multicat = False

for sample in all_samples:
    name = sample.name
    print 'Sample', name

    file_name = '/'.join(
        [sample.ana_dir, sample.dir_name, sample.tree_prod_name, 'tree.root'])
コード例 #7
0
# cuts['OS_PU_0bjet_mZ'] = inc_cut + '&& l1_charge != l2_charge && abs(l1_eta) < 2.1 && mvis>70 && mvis<100 && n_bjets==0'
# cuts['OS_PU_0bjet_vetoZ'] = inc_cut + '&& l1_charge != l2_charge && abs(l1_eta) < 2.1 && mvis>70 && (mvis>100 || mvis<80) && n_bjets==0'
# cuts['OS_PU_2bjet'] = inc_cut + '&& l1_charge != l2_charge && abs(l1_eta) < 2.1 && n_bjets==2'
# cuts['OS_PU_2bjet_vetoZ'] = inc_cut + '&& l1_charge != l2_charge && abs(l1_eta) < 2.1 && n_bjets==2 && (mvis>100 || mvis<80)'

qcd_from_same_sign = False

# -> Command line
analysis_dir = '/data1/steggema/mm/300616/'
tree_prod_name = 'H2TauTauTreeProducerMuMu'

samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
    analysis_dir,
    channel='mm',
    ztt_cut='(l1_gen_match == 4 && l2_gen_match == 4)',
    zl_cut='(l1_gen_match == 2 && l2_gen_match == 2)',
    zj_cut=
    '(l1_gen_match != l2_gen_match || (l1_gen_match != 4 && l1_gen_match != 2))'
)

if qcd_from_same_sign:
    samples_qcdfromss = [s for s in samples if s.name != 'QCD']
    samples_ss = copy.deepcopy(samples_qcdfromss)

    scale = 1.06

    for sample in samples_ss:
        sample.scale = scale
        if sample.name != 'Data':
            # Subtract background from data
            sample.scale = -scale
コード例 #8
0
def createSamples(mode, analysis_dir, total_weight, qcd_from_same_sign,
                  w_qcd_mssm_method, r_qcd_os_ss):
    hist_dict = {}
    sample_dict = {}

    samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
        analysis_dir=analysis_dir)

    if mode == 'mssm_control' or not 'mssm' in mode:
        all_samples = [
            s for s in all_samples
            if not 'ggH' in s.name and not 'bbH' in s.name
        ]

    sample_dict['all_samples'] = all_samples

    if qcd_from_same_sign and not w_qcd_mssm_method:
        samples_qcdfromss = [s for s in all_samples if s.name != 'QCD']
        samples_ss = copy.deepcopy(samples_qcdfromss)

        samples_ss = [s for s in samples_ss if not s.is_signal]

        for sample in samples_ss:
            if sample.name != 'data_obs':
                # Subtract background from data
                sample.scale = -1.

        qcd = HistogramCfg(name='QCD',
                           var=None,
                           cfgs=samples_ss,
                           cut=None,
                           total_scale=r_qcd_os_ss,
                           lumi=int_lumi,
                           weight=total_weight)

        samples_qcdfromss.append(qcd)
        sample_dict['samples_qcdfromss'] = samples_qcdfromss

    if w_qcd_mssm_method:
        w_names = ['W', 'W1Jets', 'W2Jets', 'W3Jets', 'W4Jets']
        samples_non_w = [
            s for s in all_samples
            if s.name != 'QCD' and s.name not in w_names and not s.is_signal
        ]
        samples_non_w_ss = copy.deepcopy(samples_non_w)

        samples_signal = [s for s in all_samples if s.is_signal]

        samples_w = copy.deepcopy(
            [s for s in all_samples if s.name in w_names])
        samples_w_ss = copy.deepcopy(samples_w)

        # To calculate OS/SS ratio in inclusive W selection
        samples_w_incl_os = copy.deepcopy(samples_w)
        samples_w_incl_ss = copy.deepcopy(samples_w)

        # To calculate W scale factor
        samples_w_highmt_os = copy.deepcopy(samples_w)

        # Build a high MT region: OS - non-W/QCD OS - (SS - non-W/QCD SS)
        samples_non_w_highmt_os = copy.deepcopy(samples_non_w)
        samples_non_w_highmt_ss = copy.deepcopy(samples_non_w)

        for sample in samples_non_w_highmt_os:
            if sample.name != 'data_obs':
                # Subtract background from data
                sample.scale = -1.

        for sample in samples_non_w_highmt_ss:
            if sample.name != 'data_obs':
                sample.scale = -1.

        for sample in samples_non_w_ss:
            if sample.name != 'data_obs':
                sample.scale = -1.

        var_norm = VariableCfg(name='_norm_',
                               drawname='1.',
                               binning={
                                   'nbinsx': 5,
                                   'xmin': -1.5,
                                   'xmax': 3.5
                               },
                               unit='',
                               xtitle='Normalisation')

        hist_dict['stacknow_highmt_os'] = HistogramCfg(
            name='HighMTOS',
            var=var_norm,
            cfgs=samples_non_w_highmt_os,
            cut=None,
            lumi=int_lumi,
            weight=total_weight)
        hist_dict['stacknow_highmt_ss'] = HistogramCfg(
            name='HighMTSS',
            var=var_norm,
            cfgs=samples_non_w_highmt_ss,
            cut=None,
            lumi=int_lumi,
            weight=total_weight)

        hist_dict['wjets_incl_os'] = HistogramCfg(name='WInclOS',
                                                  var=var_norm,
                                                  cfgs=samples_w_incl_os,
                                                  cut=None,
                                                  lumi=int_lumi,
                                                  weight=total_weight)
        hist_dict['wjets_incl_ss'] = HistogramCfg(name='WInclSS',
                                                  var=var_norm,
                                                  cfgs=samples_w_incl_ss,
                                                  cut=None,
                                                  lumi=int_lumi,
                                                  weight=total_weight)

        hist_dict['wjets_highmt_os'] = HistogramCfg(name='WHighMTOS',
                                                    var=var_norm,
                                                    cfgs=samples_w_highmt_os,
                                                    cut=None,
                                                    lumi=int_lumi,
                                                    weight=total_weight)

        hist_dict['wjets'] = HistogramCfg(name='W',
                                          var=None,
                                          cfgs=samples_w,
                                          cut=None,
                                          lumi=int_lumi,
                                          weight=total_weight)
        hist_dict['wjets_ss'] = HistogramCfg(name='WSS',
                                             var=None,
                                             cfgs=samples_w_ss,
                                             cut=None,
                                             lumi=int_lumi,
                                             weight=total_weight)

        hist_dict['qcd'] = HistogramCfg(name='QCD',
                                        var=None,
                                        cfgs=samples_non_w_ss +
                                        [hist_dict['wjets_ss']],
                                        cut=None,
                                        total_scale=r_qcd_os_ss,
                                        lumi=int_lumi,
                                        weight=total_weight)

        sample_dict['samples_mssm_method'] = samples_non_w + [
            hist_dict['wjets'], hist_dict['qcd']
        ] + samples_signal

    return sample_dict, hist_dict
コード例 #9
0
from CMGTools.H2TauTau.proto.plotter.Samples import createSampleLists
from CMGTools.H2TauTau.proto.plotter.HistCreator import setSumWeights
import pickle

analysis_dir = '/afs/cern.ch/work/j/jsauvan/public/HTauTau/Trees/mt/151215/'
tree_prod_name = 'H2TauTauTreeProducerTauMu'
data_dir = analysis_dir
samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(analysis_dir=analysis_dir, tree_prod_name=tree_prod_name)
for sample in all_samples:
    setSumWeights(sample, directory='MCWeighter')

mc_info = {}

mc_info['Directory'] = analysis_dir
for sample in all_samples:
    if sample.name!='data_obs':
        mc_info[sample.name] = {'XSec':sample.xsec, 'SumWeights':sample.sumweights}


pickle.dump(mc_info, open('mc_info.pck', 'wb'))


コード例 #10
0
    'T_tWch':'T_tWch',
    #'VVTo2L2Nu':'VVTo2L2Nu',
    'W':'W',
    'WWTo1L1Nu2Q':'WWTo1L1Nu2Q',
    #'WZTo1L1Nu2Q':'WZTo1L1Nu2Q',
    'WZTo1L3Nu':'WZTo1L3Nu',
    #'WZTo2L2Q':'WZTo2L2Q',
    #'WZTo3LNu':'WZTo3LNu',
    'Z':'ZL',
    'ZZTo4L':'ZZTo4L',
}
int_lumi = 2094.2 # from Alexei's email
analysis_dir = '/afs/cern.ch/work/j/jsauvan/public/HTauTau/Trees/mm/v20160220/'
tree_prod_name = 'H2TauTauTreeProducerMuMu'
data_dir = analysis_dir
samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(analysis_dir=analysis_dir, channel='mm')
for sample in all_samples:
    #setSumWeights(sample, directory='MCWeighter')
    setSumWeights(sample)

mcRescalings = []
for sample in mcSamples:
    cmgName = cmgSampleTranslation[sample]
    mcRescalings.append(int_lumi*sampleDict[cmgName].xsec/sampleDict[cmgName].sumweights)
######################################



### define plot information
plotInfos = [PlotInfo(), PlotInfo(), PlotInfo()]
## Data
コード例 #11
0
from CMGTools.H2TauTau.proto.plotter.categories_TauTau import inc_sig_tau1_iso, inc_sig_tau2_iso, inc_sig_no_iso
from CMGTools.H2TauTau.proto.plotter.categories_common import cat_J1, cat_VBF
from CMGTools.H2TauTau.proto.plotter.HistCreator import createHistogram, setSumWeights
from CMGTools.H2TauTau.proto.plotter.HistDrawer import HistDrawer
from CMGTools.H2TauTau.proto.plotter.Variables import all_vars, getVars
from CMGTools.H2TauTau.proto.plotter.Samples import createSampleLists
from CMGTools.H2TauTau.proto.plotter.qcdEstimation import qcd_estimation
from CMGTools.H2TauTau.proto.plotter.cut import Cut

int_lumi = 2240.  # from Alexei's email
tree_prod_name = 'H2TauTauTreeProducerTauTau'
analysis_dir = '/afs/cern.ch/work/m/manzoni/diTau2015/CMSSW_7_6_3/src/CMGTools/H2TauTau/cfgPython/tt/tt_14march2016'

total_weight = 'weight'

samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
    analysis_dir=analysis_dir, channel='tt')

myCut = namedtuple('myCut', ['name', 'cut'])
cuts = []

# categories, do not include charge and iso cuts
inc_cut = inc_sig_no_iso
jet1_cut = inc_sig_no_iso & Cut(cat_J1)
vbf_cut = inc_sig_no_iso & Cut(cat_VBF)

# iso and charge cuts, need to have them explicitly for the QCD estimation
iso_cut = inc_sig_tau1_iso & inc_sig_tau2_iso
max_iso_cut = Cut(
    'l1_byIsolationMVArun2v1DBoldDMwLT > 3.5 && l2_byIsolationMVArun2v1DBoldDMwLT > 3.5'
)
iso_sideband_cut = (~iso_cut) & max_iso_cut
コード例 #12
0
# inv_cuts = {}
# for cut in cuts:
#     new_cuts[cut+'invmu'] = cuts[cut].replace('l1_reliso05<0.1', 'l1_reliso05>0.1')
#     new_cuts[cut+'invtau'] = cuts[cut].replace('l2_byCombinedIsolationDeltaBetaCorr3Hits>1.5', 'l2_byCombinedIsolationDeltaBetaCorr3Hits<1.5')

# # cuts = inv_cuts

# cuts = cuts.copy()
# cuts.update(inv_cuts)
# cuts.update(new_cuts)

qcd_from_same_sign = True

analysis_dir = '/afs/cern.ch/work/s/steggema/public/et/23112015/'
samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
                                                             analysis_dir=analysis_dir,
                                                             tree_prod_name='H2TauTauTreeProducerTauEle')

samples = samples_mc + samples_data

if qcd_from_same_sign:
    samples_qcdfromss = [s for s in samples if s.name != 'QCD']
    samples_ss = copy.deepcopy(samples_qcdfromss)

    scale = 1.06

    for sample in samples_ss:
        sample.scale = scale
        if sample.name != 'data_obs':
            # Subtract background from data
            sample.scale = -scale
コード例 #13
0
                                                'l2_reliso05>0.15')
    new_cuts[cut + 'inve'] = cuts[cut].replace('l1_reliso05<0.15',
                                               'l1_reliso05>0.15')

cuts = cuts.copy()
#cuts.update(new_cuts)

print cuts

qcd_from_same_sign = True

analysis_dir = '/afs/cern.ch/user/y/ytakahas/work/public/forHTT/em'

samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
    analysis_dir=analysis_dir,
    tree_prod_name='H2TauTauTreeProducerMuEle',
    ztt_cut='(l1_gen_match>2 && l2_gen_match>3)',
    zl_cut='l2_gen_match==99',
    zj_cut='l2_gen_match==99')

if qcd_from_same_sign:
    samples_qcdfromss = [s for s in samples if s.name != 'QCD']
    samples_ss = copy.deepcopy(samples_qcdfromss)

    #    import pdb; pdb.set_trace()

    scale = 1.06

    for sample in samples_ss:
        sample.scale = scale
        if sample.name != 'data_obs':
            # Subtract background from data
コード例 #14
0
import copy
import ROOT
from Efficiency2DPlots import Efficiency2DPlot, PlotInfo

from HistCreator import createHistograms, removeNegativeValues2D, checkFractionSums2D

from CMGTools.H2TauTau.proto.plotter.PlotConfigs import HistogramCfg, VariableCfg, BasicHistogramCfg
from CMGTools.H2TauTau.proto.plotter.Samples import createSampleLists
from CMGTools.H2TauTau.proto.plotter.HistCreator import setSumWeights

int_lumi = 2094.2 # from Alexei's email


analysis_dir = '/afs/cern.ch/work/j/jsauvan/public/HTauTau/Trees/mt/151215/'
samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(analysis_dir=analysis_dir)

for sample in all_samples:
    setSumWeights(sample, directory='MCWeighter')


## templates for histogram and file names
histo_version = 'v_2_2016-02-09'
histo_base_dir = '/afs/cern.ch/work/j/jsauvan/Projects/Htautau_Run2/Histos/StudyFakeRate/MuTau_Signal/'
histo_file_template_name = histo_base_dir+'/{SAMPLE}/'+histo_version+'/h2tau_MuTau_{SAMPLE}.root'
histo_template_name = 'hFakeRate_{SEL}_{VAR}'

# samples to be used
Name = "Name"
DirName = "DirName"
HistoDir = 'HistoDir'
XSection = "XSection"
コード例 #15
0
from CMGTools.H2TauTau.proto.plotter.HistCreator import setSumWeights

from CMGTools.H2TauTau.proto.plotter.helper_methods import plotDataOverMCEff

# total_weight = 'weight * ' + getPUWeight()

only_stack = False

total_weight = 'weight/weight_njet/weight_vertex'
analysis_dir = '/data1/steggema/TauFRMuWeights/'
int_lumi = 2301.

samples_mc, samples_data, samples, all_samples, sampleDict = createSampleLists(
    analysis_dir=analysis_dir,
    channel='tau_fr',
    ztt_cut='(tau_gen_match == 5)',
    zl_cut='(tau_gen_match>=0 && tau_gen_match < 5)',
    zj_cut='(tau_gen_match == 6 || tau_gen_match<0)')

cuts = {}

inc_cut = '!veto_dilepton && !veto_thirdlepton && !veto_otherlepton && muon_reliso05<0.1 && muon_muonid_medium>0.5 && muon_pt>19. && abs(jet_eta)<2.3'

samples = [
    s for s in all_samples if s.name != 'TBar_tWch' and not 'SUSY' in s.name
]

samples_mc = [s for s in samples if s.name != 'data_obs']

for s in samples:
    if s.name not in [