Example #1
0
import numpy as np
import operator

# make predictions to be used with keras.predict
def predict_inputs( event, sample, jet_lstm = False):
    flat_variables = np.array([[getattr( event, mva_variable) for mva_variable, _ in mva_variables]])
    if jet_lstm:
        lstm_jets_maxN = 10 #remove after retraining
        jet_vector_var = mva_vector_variables["mva_Jet"]
        jets = mva_vector_variables["mva_Jet"]["func"](event,sample=None)
        jets =  [ [ operator.itemgetter(varname)(jet) for varname in lstm_jetVarNames] for jet in jets[:lstm_jets_maxN] ]
        # zero padding
        jets += [ [0.]*len(lstm_jetVarNames)]*(max(0, lstm_jets_maxN-len(jets)))
        jets = np.array([jets])

        return [ flat_variables, jets ]
    else:
        return   flat_variables

#define training samples for multiclassification
from tWZ.samples.nanoTuples_RunII_nanoAODv6_private_postProcessed import *
#use only Summer16
training_samples = [ Summer16.TWZ_NLO_DR, Summer16.TTZ ]

assert len(training_samples)==len(set([s.name for s in training_samples])), "training_samples names are not unique!"

# training selection
from tWZ.Tools.cutInterpreter import cutInterpreter
selectionString = cutInterpreter.cutString( 'trilepT-onZ1-btag1-njet3p' )
# selectionString = cutInterpreter.cutString( 'trilepT-minDLmass12-onZ1-njet4p-btag1' )
Example #2
0
args = argParser.parse_args()

#Logger
import tWZ.Tools.logger as logger
logger = logger.get_logger("INFO", logFile=None)
import Analysis.Tools.logger as logger_an
logger_an = logger_an.get_logger("INFO", logFile=None)

if args.plot_directory == None:
    args.plot_directory = plot_directory

if args.selection == None:
    selectionString = "(1)"
else:
    selectionString = cutInterpreter.cutString(args.selection)

# Samples
#from tWZ.samples.nanoTuples_RunII_nanoAODv6_private_postProcessed    import *
from tWZ.samples.nanoTuples_Summer16_nanoAODv6_private_postProcessed import *

signal = WZ
#signal.reduceFiles(factor=20)
#TTZ.reduceFiles(factor=3)

# TTZ
backgrounds = [TTZ]

samples = backgrounds + [signal]
for sample in samples:
    sample.setSelectionString(selectionString)
Example #3
0
#elif args.era == "Run2018":
#    mc = [Autumn18.TWZ_NLO_DR, Autumn18.TTZ, Autumn18.TTX_rare, Autumn18.TZQ, Autumn18.WZ, Autumn18.triBoson, Autumn18.ZZ, Autumn18.nonprompt_3l]
#elif args.era == "RunII":
#    mc = [TWZ_NLO_DR, TTZ, TTX_rare, TZQ, WZ, triBoson, ZZ, nonprompt_3l]

bins = [ 
    (2.5,5, -1.2, 1.2),
    (5.,10.,  -1.2, 1.2),
    (10.,999., -1.2, 1.2),
    ]

triggerSelection = '('+"||".join(triggers)+')'
leptonSelection  = 'n%s_looseHybridIso==1'%args.mode
jetSelection     = 'Sum$(Jet_pt>40&&abs(Jet_eta)<2.4&&JetGood_cleaned_%s_looseHybridIso)>=1'%args.mode
if args.selection:
    selection = cutInterpreter.cutString(args.selection).replace("mT", "%s_looseHybridIso_mT"%args.mode)
else:
    selection = "(1)"

max_events = -1
if args.small:
    for sample in [data_sample] + mc:
        sample.normalization = 1.
        #sample.reduceFiles( factor = 10 )
        sample.reduceFiles( to=3 )
        #sample.scale /= sample.normalization
        max_events = 30000

# Text on the plots
tex = ROOT.TLatex()
tex.SetNDC()
Example #4
0
        mc[1].style = styles.fillStyle(mc[1].color)
    else:
        for sample in mc: sample.style = styles.fillStyle(sample.color)

    for sample in mc:
      sample.read_variables = read_variables_MC
      sample.setSelectionString([getLeptonSelection(mode)])
      sample.weight = lambda event, sample: event.reweightBTag_SF*event.reweightPU*event.reweightL1Prefire*event.reweightTrigger#*event.reweightLeptonSF

    if args.shape:
        stack = Stack([mc[1]], [mc[0]])
    else:
        stack = Stack(mc)

    # Use some defaults
    Plot.setDefaults(stack = stack, weight = staticmethod(weight_), selectionString = cutInterpreter.cutString(args.selection))

    ################################################################################
    # Now define the plots

    plots = []

    plots.append(Plot(
        name = "N_GenJets_b",
        texX = 'Number of b GenJets', texY = 'Number of Events',
        attribute = lambda event, sample: event.nbjet,
        binning=[11,-0.5,10.5],
    ))

    plots.append(Plot(
        name = "N_GenJets_light",
Example #5
0
    for sample in mc:
        sample.read_variables = read_variables_MC
        sample.weight = lambda event, sample: event.reweightBTag_SF * event.reweightPU * event.reweightL1Prefire * event.reweightTrigger  #*event.reweightLeptonSF

    #yt_TWZ_filter.scale = lumi_scale * 1.07314

    if not args.noData:
        stack = Stack(mc, data_sample)
    else:
        stack = Stack(mc)

    # Use some defaults
    Plot.setDefaults(stack=stack,
                     weight=staticmethod(weight_),
                     selectionString="(" +
                     cutInterpreter.cutString(args.selection) + ")&&(" +
                     getLeptonSelection(mode) + ")")

    plots = []

    plots.append(
        Plot(
            name='yield',
            texX='',
            texY='Number of Events',
            attribute=lambda event, sample: 0.5 + i_mode,
            binning=[4, 0, 4],
        ))

    for name, has_lstm, model in models:
        #print has_lstm, flat_variables, lstm_jets
Example #6
0
        lstm_jets_maxN = 10  #remove after retraining
        jet_vector_var = mva_vector_variables["mva_Jet"]
        jets = mva_vector_variables["mva_Jet"]["func"](event, sample=None)
        jets = [[
            operator.itemgetter(varname)(jet) for varname in lstm_jetVarNames
        ] for jet in jets[:lstm_jets_maxN]]
        # zero padding
        jets += [[0.] * len(lstm_jetVarNames)] * (max(
            0, lstm_jets_maxN - len(jets)))
        jets = np.array([jets])

        return [flat_variables, jets]
    else:
        return flat_variables


#define training samples for multiclassification
from tWZ.samples.nanoTuples_RunII_nanoAODv6_private_postProcessed import *
#use only Summer16
training_samples = [Summer16.TWZ_NLO_DR, Summer16.TTZ]

assert len(training_samples) == len(set(
    [s.name
     for s in training_samples])), "training_samples names are not unique!"

# training selection
from tWZ.Tools.cutInterpreter import cutInterpreter
# selectionString = cutInterpreter.cutString( 'trilepT-onZ1-btag1-njet3p' )
selectionString = cutInterpreter.cutString(
    'trilepT-minDLmass12-onZ1-njet4p-deepjet1')
Example #7
0
    ]
    weightstring = "*".join(nominalMCWeights)
    lumistring = "(" + "+".join(
        ["%s*(year==%s)" % (l / 1000, y)
         for (y, l) in lumi_year.iteritems()]) + ")"
    weightstring += "*" + lumistring

    weightstring_data = "weight"

    Nevents = {}
    for sample in mc:
        yieldlist = [
            sample.getYieldFromDraw(selectionString=None,
                                    weightString=weightstring)['val'],
            sample.getYieldFromDraw(
                selectionString=cutInterpreter.cutString("trilepT"),
                weightString=weightstring)['val'],
            sample.getYieldFromDraw(selectionString=cutInterpreter.cutString(
                "trilepT-minDLmass12"),
                                    weightString=weightstring)['val'],
            sample.getYieldFromDraw(selectionString=cutInterpreter.cutString(
                "trilepT-minDLmass12-onZ1"),
                                    weightString=weightstring)['val'],
            sample.getYieldFromDraw(selectionString=cutInterpreter.cutString(
                "trilepT-minDLmass12-onZ1-njet4p"),
                                    weightString=weightstring)['val'],
            sample.getYieldFromDraw(selectionString=cutInterpreter.cutString(
                "trilepT-minDLmass12-onZ1-njet4p-btag1"),
                                    weightString=weightstring)['val']
        ]
        Nevents[sample.name] = yieldlist
Example #8
0
# loop over modes
for mode in modes:
    yields[mode] = {}
    data_sample.texName = "data"
    data_sample.setSelectionString([getLeptonSelection(mode)])
    data_sample.name           = "data"
    data_sample.style          = styles.errorStyle(ROOT.kBlack)
    lumi_scale                 = data_sample.lumi/1000

    for sample in mc: sample.style = styles.fillStyle(sample.color)

    for sample in mc:
        sample.setSelectionString([getLeptonSelection(mode)])

    # Use some defaults
    Plot.setDefaults( selectionString = cutInterpreter.cutString(args.selection) )

    # if we're running a variation specify
    if args.variation is not None:
        selectionModifier = variations[args.variation]['selectionModifier']
        mc_weight         = MC_WEIGHT( variation = variations[args.variation], returntype='func')
    else:
        selectionModifier = None
        mc_weight         = None

    # Stack
    stack_mc   = Stack( mc )
    stack_data = Stack( data_sample )


    ############################################################################