Пример #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)
    '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
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'))


    '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
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 [