Esempio n. 1
0
    #jesCorr = 1., # Shift jet energy scale in terms of uncertainties (1 = +1 sigma)
)

treeProducer = cfg.Analyzer(
    L1RateTreeProducer,
    name = 'L1RateTreeProducer',
)

###################################################
###                  SEQUENCE                   ###
###################################################
sequence = cfg.Sequence([
    eventSelector,
    jsonAna,
    triggerAna,
    vertexAna,
    pileUpAna,
    jetAna,
    mainAna,
    treeProducer,
])

###################################################
###            SET BATCH OR LOCAL               ###
###################################################
if not production:
    comp                 = ZeroBias_2017F
    selectedComponents   = [comp]
    comp.splitFactor     = 1
    comp.fineSplitFactor = 1
#     comp.files           = comp.files[20:40]
# tree producer
treeProducer = cfg.Analyzer(
     AutoFillTreeProducer, name='treeProducerSusySingleLepton',
     vectorTree = True,
     saveTLorentzVectors = False,  # can set to True to get also the TLorentzVectors, but trees will be bigger
     defaultFloatType = 'F', # use Float_t for floating point
     PDFWeights = PDFWeights,
     globalVariables = susySingleLepton_globalVariables,
     globalObjects = susySingleLepton_globalObjects,
     collections = susySingleLepton_collections,
)

sequence = cfg.Sequence(
  susyCoreSequence+
      [
        LHEAna,
        ttHEventAna,
        treeProducer,
        ])

selectedComponents = [
        ]

if getHeppyOption("loadSamples"):
    from CMGTools.RootTools.samples.samples_13TeV_RunIISummer16MiniAODv2 import *
    from CMGTools.RootTools.samples.samples_13TeV_DATA2016 import *
    from CMGTools.RootTools.samples.samples_13TeV_signals import *
    from CMGTools.StopsDilepton.TTbarDMJets_signals_RunIISummer16MiniAODv2 import *
    from CMGTools.StopsDilepton.ttX0j_5f_MLM_signals_RunIISummer16MiniAODv2 import *
    from CMGTools.StopsDilepton.ewkDM_signals_RunIISummer16MiniAODv2 import *
    from CMGTools.StopsDilepton.samples import *
Esempio n. 3
0
    BDTAnalyzer,
    name='BDTAnalyzer',
)

###################################################
###                  SEQUENCE                   ###
###################################################
sequence = cfg.Sequence([
    lheWeightAna,
    jsonAna,
    skimAna,
    genAna,
    triggerAna, # First analyser that applies selections
    vertexAna,
    pileUpAna,
    tau3MuAna,
    vertexFitter,
    isoAna,
    genMatchAna,
    level1Ana,
    bdtAna,
    treeProducer,
    metFilter,
])

###################################################
###            SET BATCH OR LOCAL               ###
###################################################
if not production:
    comp                 = samples[-3]
    selectedComponents   = [comp]
Esempio n. 4
0
#redefineRunRange(selectedComponents,[258214,258214])
#selectedComponents = H4L + [ ZZTo4L, ZZTo4L_aMC ] + GGZZTo4L + [DYJetsToLL_M10to50,DYJetsToLL_M50] + [ WZTo3LNu, TTLep ] + SingleTop
#selectedComponents = H4L + GGZZTo4L + [DYJetsToLL_M10to50,DYJetsToLL_M50] + [ WZTo3LNu, TTLep ] + SingleTop
#cropToLumi( [DYJetsToLL_M10to50,DYJetsToLL_M50,TTLep]+SingleTop, 100.0 )
#cropToLumi( [ZZTo4L, ZZTo4L_aMC]+GGZZTo4L, 500.0 )
#cropToLumi( H4L, 10000.0 )
#configureSplittingFromTime(DYJets+SingleTop+[WZTo3LNu,TTLep,GGZZTo4tau], 10.0, 1)
#configureSplittingFromTime([DYJetsToLL_M10to50], 5.0, 1)
#configureSplittingFromTime([ ZZTo4L, ZZTo4L_aMC, GGZZTo2mu2tau, GGZZTo2e2tau ], 25.0, 1)
#configureSplittingFromTime( H4L + [ GGZZTo4mu, GGZZTo4e, GGZZTo2e2mu], 100.0, 1)
#selectedComponents = [ DYJetsToLL_M50, DYJetsToLL_LO_M50, DYBJetsToLL, DYBBJetsToLL ] + DYJetsM50HT
#configureSplittingFromTime(selectedComponents, 20.0, 1)
#configureSplittingFromTime([DYJetsToLL_M50_HT400to600], 40.0, 1)
#configureSplittingFromTime([DYJetsToLL_M50_HT600toInf], 60.0, 1)

sequence = cfg.Sequence(hzz4lCoreSequence)

for comp in mcSamples:
    comp.triggers = triggers_any
    comp.vetoTriggers = []

#doECalCorrections(era="25ns")
#doKalmanMuonCorrections(smear="basic")

if not getHeppyOption("test"):
    printSummary(selectedComponents)
    autoAAA(selectedComponents)

from PhysicsTools.HeppyCore.framework.heppy_loop import getHeppyOption
test = getHeppyOption('test')
if test == "1":
Esempio n. 5
0
sequence = cfg.Sequence([
# Analyzers
    json,
    vertex,
# Muon
    muons,
    select_muon,
    reweight_muon,
    one_muon,
# Electron
    electrons,
    select_electron,
    reweight_electron,
    one_electron,
# Single Lepton
    numberLeptons,
    one_lepton,
# Jets
    jets,
    jets_20_unclean,
    jet_20_electron_clean,
    jet_20_clean,
    jets_40,
    three_jets,
# b-Jets
    btagger,
    bjets_60,
    one_bjets,
# Region
    region_ana,
    good_region,
# Rescaling
    trigger, 
    # trigger_match,
    # met_filters,
    lheweight,
    pileup, 
    njets_ana,
    mcweighter,
# Mets
    pfmetana,
# Ntuple
    #debugger,
    ntuple
])
Esempio n. 6
0
#doPruning()

#-------- SAMPLES AND TRIGGERS -----------
from CMGTools.VVResonances.samples.loadSamples import *

#selectedComponents = mcSamples
selectedComponents = dataSamplesLNUJ

#import pdb;pdb.set_trace()

#-------- Analyzer
from CMGTools.VVResonances.analyzers.tree_cff import *

#-------- SEQUENCE

sequence = cfg.Sequence(coreSequence +
                        [vvAna, metWeightAna, vvSkimmer, vvTreeProducer])
from CMGTools.RootTools.samples.triggers_13TeV_DATA2016 import *

triggerFlagsAna.triggerBits = {
    "ISOMU": triggers_1mu_iso,
    "MU": triggers_1mu_noniso,
    "ISOELE": triggers_1e_iso,
    "ELE": triggers_1e_noniso,
    "MET120": triggers_metNoMu120_mhtNoMu120 + triggers_met120_mht120
}

#-------- HOW TO RUN
test = 0
if test == 1:
    # test a single component, using a single thread.
    #    selectedComponents = [BulkGravToWWToWlepWhad_narrow_2000]
Esempio n. 7
0
)

## histo counter
# dmCoreSequence.insert(dmCoreSequence.index(skimAnalyzer),
#                       dmCounter)

#signalSamples = MonojetSignalSamples
#backgroundSamples =  WJetsToLNuHT + ZJetsToNuNuHT + SingleTop + [TTJets] + DYJetsM50HT + GJetsHT + QCDHT
#selectedComponents = backgroundSamples + signalSamples

#-------- SEQUENCE
sequence = cfg.Sequence(dmCoreSequence+[
   monoXRazorAna,
   monoXMT2Ana,
   ttHFatJetAna,
   ttHAlphaTAna,
   ttHAlphaTControlAna,
   monoJetVarAna,
   MonoJetEventAna,
   treeProducer,
    ])

#-------- HOW TO RUN ----------- 
from PhysicsTools.HeppyCore.framework.heppy_loop import getHeppyOption
test = getHeppyOption('test')
if test == '1':
    monoJetSkim.metCut = 0
    comp = DYJetsToLL_M50_HT100to200
    comp.files = comp.files[:1]
    comp.splitFactor = 1
    comp.fineSplitFactor = 1
    selectedComponents = [ comp ]
    # RM: FIXME! check the GTs
    #    mcGT              = '94X_mc2017_realistic_v14',
    #    dataGT            = '94X_dataRun2_v6',
    #jesCorr = 1., # Shift jet energy scale in terms of uncertainties (1 = +1 sigma)
)
###################################################
###                  SEQUENCE                   ###
###################################################
sequence = cfg.Sequence([
    #     eventSelector,
    lheWeightAna,  # les houches
    jsonAna,
    #    skimAna,
    triggerAna,
    vertexAna,
    #    pileUpAna,
    genAna,
    #    HNLGenTreeAnalyzer,
    HNLAnalyzer,
    #    eleWeighter,
    #    jetAna,
    #    HNLTreeProducer,
])

###################################################
###            SET BATCH OR LOCAL               ###
###################################################
if not production:
    #     comp                 = HN3L_M_2p5_V_0p0173205080757_e_onshell
    #    comp                 = HN3L_M_2p5_V_0p00707106781187_e_onshell
    comp = DYJetsToLL_M5to50
Esempio n. 9
0
    jetAna.calculateType1METCorrection = True
    metAna.recalibrate = "type1"
    metAna.old74XMiniAODs = False

# lepton scale / resolution corrections
if doLepCorr:
    doECalElectronCorrections(era="25ns")
    doKalmanMuonCorrections()
if doPhotonCorr:
    doECalPhotonCorrections()

#-------- SEQUENCE
sequence = cfg.Sequence(dmCoreSequence + [
    #   monoXRazorAna,
    #   monoXMT2Ana,
    monoJetVarAna,
    MonoJetEventAna,
    treeProducer,
])

from CMGTools.RootTools.samples.triggers_13TeV_Spring15 import *
from CMGTools.RootTools.samples.triggers_8TeV import triggers_1mu_8TeV, triggers_mumu_8TeV, triggers_mue_8TeV, triggers_ee_8TeV
triggers_AllMonojet = triggers_metNoMu90_mhtNoMu90 + triggers_metNoMu120_mhtNoMu120 + triggers_AllMET170 + triggers_AllMET300
triggers_SinglePhoton = triggers_photon155 + triggers_photon165_HE10 + triggers_photon175 + triggers_jet  # last ones added to recover L1 issue of tight H/E cut
triggerFlagsAna.triggerBits = {
    'DoubleMu': triggers_mumu_iso,
    'DoubleEl': triggers_ee,
    'DoubleMuHT': triggers_mumu_ht,
    'DoubleElHT': triggers_ee_ht,
    'SingleMu': triggers_1mu_iso,
    'SingleEl': triggers_1e,
Esempio n. 10
0
    name='treeProducerMET',
    vectorTree=True,
    saveTLorentzVectors=
    False,  # can set to True to get also the TLorentzVectors, but trees will be bigger
    PDFWeights=PDFWeights,
    globalVariables=met_globalVariables,
    globalObjects=met_globalObjects,
    collections=met_collections,
    defaultFloatType='F',
    treename='METtree')

##------------------------------------------
##  SEQUENCE
##------------------------------------------

metSequence = cfg.Sequence(metCoreSequence + [treeProducer])

###---- to switch off the comptrssion
#treeProducer.isCompressed = 0

# -------------------- lepton modules below needed for the Muon Selection

if isZSkim:
    ttHLepSkim.ptCuts = [20, 10]
    ttHLepSkim.minLeptons = 2
    if isZSkim and isEle:
        ttHLepSkim.ptCuts = [25, 15]
        ttHZskim.lepId = [11]  ## default is set To Muons
    metSequence.insert(metSequence.index(lepAna) + 1, ttHLepSkim)
    metSequence.insert(metSequence.index(lepAna) + 2, ttHZskim)
Esempio n. 11
0
    globalVariables=zgamma_globalVariables,
    globalObjects=zgamma_globalObjects,
    collections=zgamma_collections,
    defaultFloatType='F',
    treename='mt2')

susyCoreSequence.insert(susyCoreSequence.index(skimAnalyzer), susyCounter)

#susyCoreSequence.insert(susyCoreSequence.index(ttHLepSkim),
#                        ttHZskim)

#susyCoreSequence.insert(susyCoreSequence.index(ttHCoreEventAna),
#                        ttHSVAna)

sequence = cfg.Sequence(susyCoreSequence + [
    #    hbheFilterAna,
    treeProducer,
])

###---- to switch off the compression
#treeProducer.isCompressed = 0

from PhysicsTools.HeppyCore.framework.heppy_loop import getHeppyOption

#-------- HOW TO RUN
# choose 0 for quick validations tests. It doesn't require to load the sample files
# choose 2 for full mc production
# choose 3 for data production
# choose 4 for signal production

#test = 0 # this is for local tests
#test = 2 # this is for 80X ZGamma MC

jets_20_unclean = cfg.Analyzer(Selector,
                               'jets_20_unclean',
                               output='jets_20_unclean',
                               src='jets',
                               filter_func=select_jets_IDpt)

btag = cfg.Analyzer(BJetEfficiencyCreator,
                    name='BJetEfficiencyCreator',
                    jets='jets_20_unclean')

sequence = cfg.Sequence([
    # Analyzers
    json,
    vertex,
    jets,
    jets_20_unclean,
    btag
])

# the following is declared in case this cfg is used in input to the
# heppy.py script
from PhysicsTools.HeppyCore.framework.eventsfwlite import Events

config = cfg.Config(components=selectedComponents,
                    sequence=sequence,
                    services=[],
                    events_class=Events)

printComps(config.components, True)
Esempio n. 13
0
def generateKeyConfigs(samples,production, promptLeptonType, L1L2LeptonType, isData, isSignal):
    import os
    from collections import OrderedDict
    import PhysicsTools.HeppyCore.framework.config as cfg
    from PhysicsTools.HeppyCore.framework.config     import printComps
    from PhysicsTools.HeppyCore.framework.heppy_loop import getHeppyOption
    from PhysicsTools.Heppy.utils.cmsswPreprocessor import CmsswPreprocessor
    from CMGTools.RootTools.utils.splitFactor import splitFactor

    # import Heppy analyzers:
    from PhysicsTools.Heppy.analyzers.core.JSONAnalyzer      import JSONAnalyzer
    from PhysicsTools.Heppy.analyzers.core.SkimAnalyzerCount import SkimAnalyzerCount
    from PhysicsTools.Heppy.analyzers.core.EventSelector     import EventSelector
    from PhysicsTools.Heppy.analyzers.objects.VertexAnalyzer import VertexAnalyzer
    from PhysicsTools.Heppy.analyzers.core.PileUpAnalyzer    import PileUpAnalyzer
    from PhysicsTools.Heppy.analyzers.gen.GeneratorAnalyzer  import GeneratorAnalyzer
    from PhysicsTools.Heppy.analyzers.gen.LHEWeightAnalyzer  import LHEWeightAnalyzer

    from CMGTools.H2TauTau.proto.analyzers.TriggerAnalyzer   import TriggerAnalyzer

    # import HNL analyzers:
    from CMGTools.HNL.analyzers.HNLAnalyzer        import HNLAnalyzer
    from CMGTools.HNL.analyzers.HNLTreeProducer    import HNLTreeProducer
    from CMGTools.HNL.analyzers.HNLGenTreeAnalyzer import HNLGenTreeAnalyzer
    from CMGTools.HNL.analyzers.RecoGenAnalyzer    import RecoGenAnalyzer
    from CMGTools.HNL.analyzers.TriggerAnalyzer    import TriggerAnalyzer
    from CMGTools.HNL.analyzers.JetAnalyzer        import JetAnalyzer
    from CMGTools.HNL.analyzers.METFilter          import METFilter
    from CMGTools.HNL.analyzers.LeptonWeighter     import LeptonWeighter
    from pdb import set_trace

    ###################################################
    ###                   OPTIONS                   ###
    ###################################################
    # Get all heppy options; set via "-o production" or "-o production=True"
    # production = True run on batch, production = False (or unset) run locally

    production         = getHeppyOption('production' , production)
    pick_events        = getHeppyOption('pick_events', False)

    promptLeptonType = promptLeptonType # choose from 'ele' or 'mu'
    L1L2LeptonType = L1L2LeptonType  #choose from 'ee', 'mm', 'em'

    ###################################################
    ###               HANDLE SAMPLES                ###
    ###################################################

    #samples = [comp for comp in samples if comp.name=='TTJets_amcat']
    if promptLeptonType == 'ele':
        for sample in samples:
            sample.triggers  = ['HLT_Ele27_WPTight_Gsf_v%d'          %i for i in range(1, 15)] #electron trigger
            sample.triggers += ['HLT_Ele32_WPTight_Gsf_v%d'          %i for i in range(1, 15)] #electron trigger
            sample.triggers += ['HLT_Ele35_WPTight_Gsf_v%d'          %i for i in range(1, 15)] #electron trigger
            sample.triggers += ['HLT_Ele115_CaloIdVT_GsfTrkIdT_v%d'  %i for i in range(1, 15)] #electron trigger
            sample.triggers += ['HLT_Ele135_CaloIdVT_GsfTrkIdT_v%d'  %i for i in range(1, 15)] #electron trigger
            sample.splitFactor = splitFactor(sample, 1e5)
    if promptLeptonType == 'mu':
        for sample in samples:
            sample.triggers  = ['HLT_IsoMu24_v%d' %i for i in range(1, 15)] #muon trigger
            sample.triggers += ['HLT_IsoMu27_v%d' %i for i in range(1, 15)] #muon trigger
            sample.triggers += ['HLT_Mu50_v%d'    %i for i in range(1, 15)] #muon trigger
            sample.splitFactor = splitFactor(sample, 1e5)

    selectedComponents = samples

    ###################################################
    ###                  ANALYZERS                  ###
    ###################################################
    eventSelector = cfg.Analyzer(
        EventSelector,
        name='EventSelector',
        toSelect=[326]
    )

    lheWeightAna = cfg.Analyzer(
        LHEWeightAnalyzer, name="LHEWeightAnalyzer",
        useLumiInfo=False
    )

    jsonAna = cfg.Analyzer(
        JSONAnalyzer,
        name='JSONAnalyzer',
    )

    skimAna = cfg.Analyzer(
        SkimAnalyzerCount,
        name='SkimAnalyzerCount'
    )

    triggerAna = cfg.Analyzer(
        TriggerAnalyzer,
        name='TriggerAnalyzer',
        addTriggerObjects=True,
        requireTrigger=True,
        usePrescaled=False,
        unpackLabels=True,
    )

    vertexAna = cfg.Analyzer(
        VertexAnalyzer,
        name='VertexAnalyzer',
        fixedWeight=1,
        keepFailingEvents=False,
        verbose=False
    )

    pileUpAna = cfg.Analyzer(
        PileUpAnalyzer,
        name='PileUpAnalyzer',
        true=True
    )

    metFilter = cfg.Analyzer(
        METFilter,
        name='METFilter',
        processName='PAT', #mschoene: Filters very much do exist in MC and most of them should be applied to MC as well, but not all!
        fallbackProcessName = 'RECO',
        triggers=[
            'Flag_goodVertices',
            'Flag_globalSuperTightHalo2016Filter',
            'Flag_HBHENoiseFilter',
            'Flag_HBHENoiseIsoFilter',
            'Flag_EcalDeadCellTriggerPrimitiveFilter',
            'Flag_BadPFMuonFilter',
            'Flag_BadChargedCandidateFilter',
            'Flag_eeBadScFilter',
            'Flag_ecalBadCalibFilter',
        ]
    )

    HNLTreeProducer = cfg.Analyzer(
        HNLTreeProducer,
        name='HNLTreeProducer',
        L1L2LeptonType=L1L2LeptonType,
        promptLepType=promptLeptonType,
    )

    HNLGenTreeAnalyzer = cfg.Analyzer(
        HNLGenTreeAnalyzer,
        name='HNLGenTreeAnalyzer',
    )

    RecoGenAnalyzer = cfg.Analyzer(
        RecoGenAnalyzer,
        name='RecoGenAnalyzer',
    )

    genAna = GeneratorAnalyzer.defaultConfig
    genAna.allGenTaus = True # save in event.gentaus *ALL* taus, regardless whether hadronic / leptonic decay

    # for each path specify which filters you want the electrons/muons to match to
    triggers_and_filters = OrderedDict()

    if promptLeptonType == 'ele':
        triggers_and_filters['HLT_Ele27_WPTight_Gsf']         = 'hltEle27WPTightGsfTrackIsoFilter'
        triggers_and_filters['HLT_Ele32_WPTight_Gsf']         = 'hltEle32WPTightGsfTrackIsoFilter'
        triggers_and_filters['HLT_Ele35_WPTight_Gsf']         = 'hltEle35noerWPTightGsfTrackIsoFilter'
        triggers_and_filters['HLT_Ele115_CaloIdVT_GsfTrkIdT'] = 'hltEle115CaloIdVTGsfTrkIdTGsfDphiFilter'
        triggers_and_filters['HLT_Ele135_CaloIdVT_GsfTrkIdT'] = 'hltEle135CaloIdVTGsfTrkIdTGsfDphiFilter'

    if promptLeptonType == 'mu':
        triggers_and_filters['HLT_IsoMu24'] = 'hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07'
        triggers_and_filters['HLT_IsoMu27'] = 'hltL3crIsoL1sMu22Or25L1f0L2f10QL3f27QL3trkIsoFiltered0p07'
        triggers_and_filters['HLT_Mu50']    = 'hltL3fL1sMu22Or25L1f0L2f10QL3Filtered50Q'
    # TODO: add (HLT_IsoTkMu24_v*) and (HLT_TkMu50_v*); but only later for 2016 dataset

    HNLAnalyzer = cfg.Analyzer(
        HNLAnalyzer,
        name='HNLAnalyzer',
        promptLepton=promptLeptonType,
        L1L2LeptonType=L1L2LeptonType,
        triggersAndFilters=triggers_and_filters,
        candidate_selection='maxpt',
    )

    if promptLeptonType == 'ele':
        Weighter_l0 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l0',
            scaleFactorFiles={
                'trigger' :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_trg_SingleEle_Ele32OREle35_desy'),
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l0(),
            disable=False
        )

    if promptLeptonType == 'mu':
        Weighter_l0 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l0',
            scaleFactorFiles={
                'trigger' :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_trg_SingleMu_Mu24ORMu27_desy'),
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l0(),
            disable=False
        )

    if L1L2LeptonType == 'mm':
        Weighter_l1 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l1',
            scaleFactorFiles={
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l1(),
            disable=True
        )
        Weighter_l2 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l2',
            scaleFactorFiles={
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l2(),
            disable=True
        )

    if L1L2LeptonType == 'em':
        Weighter_l1 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l1',
            scaleFactorFiles={
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l1(),
            disable=True
        )
        Weighter_l2 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l2',
            scaleFactorFiles={
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'm_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l2(),
            disable=True
        )

    if L1L2LeptonType == 'ee':
        Weighter_l1 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l1',
            scaleFactorFiles={
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l1(),
            disable=True
        )
        Weighter_l2 = cfg.Analyzer(
            LeptonWeighter,
            name='LeptonWeighter_l2',
            scaleFactorFiles={
                'idiso'   :('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_id'),
                'tracking':('$CMSSW_BASE/src/CMGTools/HNL/data/leptonsf/htt_scalefactors_v17_1.root', 'e_iso'),
            },
            dataEffFiles={
                # 'trigger':('$CMSSW_BASE/src/CMGTools/H2TauTau/data/htt_scalefactors_v16_2.root', 'm_trgIsoMu22orTkIsoMu22_desy'),
            },
            getter = lambda event : event.the_3lep_cand.l2(),
            disable=True
        )

    # see SM HTT TWiki
    # https://twiki.cern.ch/twiki/bin/viewauth/CMS/SMTauTau2016#Jet_Energy_Corrections
    jetAna = cfg.Analyzer(
        JetAnalyzer,
        name              = 'JetAnalyzer',
        jetCol            = 'slimmedJets',
        jetPt             = 20.,
        jetEta            = 5.,
        relaxJetId        = False, # relax = do not apply jet ID
        relaxPuJetId      = True, # relax = do not apply pileup jet ID
        jerCorr           = False,
        puJetIDDisc       = 'pileupJetId:fullDiscriminant',
        recalibrateJets   = False,
        applyL2L3Residual = 'MC',
        # RM: FIXME! check the GTs
    #    mcGT              = '94X_mc2017_realistic_v14',
    #    dataGT            = '94X_dataRun2_v6',
        #jesCorr = 1., # Shift jet energy scale in terms of uncertainties (1 = +1 sigma)
    )
    ###################################################
    ###                  SEQUENCE                   ###
    ###################################################
    if isData == True:
        sequence = cfg.Sequence([
        #     eventSelector,
            jsonAna,
            skimAna,
            triggerAna,
            vertexAna,
            pileUpAna,
            HNLAnalyzer,
            jetAna,
            metFilter,
            HNLTreeProducer,
        ])

    if isData == False:
        if isSignal == True:
            sequence = cfg.Sequence([
            #     eventSelector,
                lheWeightAna, # les houches
                jsonAna,
                skimAna,
                triggerAna,
                vertexAna,
                pileUpAna,
                genAna,
                HNLGenTreeAnalyzer,
                # RecoGenAnalyzer,
                HNLAnalyzer,
                Weighter_l0, 
                Weighter_l1, 
                Weighter_l2, 
                jetAna,
                metFilter,
                HNLTreeProducer,
            ])
        if isSignal == False:
            sequence = cfg.Sequence([
            #     eventSelector,
                lheWeightAna, # les houches
                jsonAna,
                skimAna,
                triggerAna,
                vertexAna,
                pileUpAna,
                genAna,
                HNLGenTreeAnalyzer,
                HNLAnalyzer,
                Weighter_l0, 
                Weighter_l1, 
                Weighter_l2, 
                jetAna,
                metFilter,
                HNLTreeProducer,
            ])

    ###################################################
    ###            SET BATCH OR LOCAL               ###
    ###################################################
    if not production:
    #     comp                 = HN3L_M_2p5_V_0p0173205080757_e_onshell
    #     comp                 = HN3L_M_2p5_V_0p00707106781187_e_onshell
        # comp                 = all_signals_e[0]
        # comp                 = DYJetsToLL_M50
        comp                 = samples[0]
        # comp                 = samples
    #     comp                 = ttbar
        # comp                 = bkg
        selectedComponents   = [comp]
        comp.splitFactor     = 1
        comp.fineSplitFactor = 1
        comp.files           = comp.files[:1]

    ###################################################
    ###            PREPROCESSOR                     ###
    ###################################################
    preprocessor = None

    #temporary copy remote files using xrd
    from PhysicsTools.HeppyCore.framework.eventsfwlite import Events
    from CMGTools.HNL.utils.EOSEventsWithDownload import EOSEventsWithDownload
    event_class = EOSEventsWithDownload if not preprocessor else Events
    EOSEventsWithDownload.aggressive = 2 # always fetch if running on Wigner
    EOSEventsWithDownload.long_cache = getHeppyOption('long_cache', False)

    if preprocessor: preprocessor.prefetch = prefetch

    # if extrap_muons_to_L1:
        # fname = '$CMSSW_BASE/src/CMGTools/WTau3Mu/prod/muon_extrapolator_cfg.py'
        # sequence.append(fileCleaner)
        # preprocessor = CmsswPreprocessor(fname, addOrigAsSecondary=False)

    # if compute_mvamet:
        # fname = '$CMSSW_BASE/src/CMGTools/WTau3Mu/prod/compute_mva_met_data_cfg.py'
        # sequence.append(fileCleaner)
        # preprocessor = CmsswPreprocessor(fname, addOrigAsSecondary=False)

    # the following is declared in case this cfg is used in input to the heppy.py script
    config = cfg.Config(
        components   = selectedComponents,
        sequence     = sequence,
        services     = [],
        preprocessor = preprocessor,
        events_class = event_class
    )

    printComps(config.components, True)

    return config
Esempio n. 14
0
    AutoFillTreeProducer,
    name='treeProducerSusyDiJet',
    vectorTree=True,
    saveTLorentzVectors=
    False,  # can set to True to get also the TLorentzVectors, but trees will be bigger
    PDFWeights=PDFWeights,
    globalVariables=susyDiJet_globalVariables,
    globalObjects=susyDiJet_globalObjects,
    collections=susyDiJet_collections,
)

#-------- SEQUENCE

sequence = cfg.Sequence(susyCoreSequence + [
    ttHDiJetControlAna,
    ttHJetMETSkim,
    hbheFilterAna,
    treeProducer,
])

sequence.insert(sequence.index(metAna), metNoHFAna)

#-------- SAMPLES AND TRIGGERS -----------
from CMGTools.RootTools.samples.triggers_13TeV_Spring15 import triggers_dijet55met110, triggers_MET170_JetIdCleaned, triggers_Jet80MET90, triggers_Jet80MET120, triggers_1mu_iso, triggers_1e, triggers_mumu, triggers_ee, triggers_MET170_NotCleaned

triggerFlagsAna.triggerBits = {
    'PFMET170_JetId': triggers_MET170_JetIdCleaned,
    'PFMET170': triggers_MET170_NotCleaned,
    'SingleMu': triggers_1mu_iso,
    'SingleEl': triggers_1e,
    'DoubleMu': triggers_mumu,
    'DoubleEl': triggers_ee,
Esempio n. 15
0
    treename='mt2')

susyCoreSequence.insert(susyCoreSequence.index(skimAnalyzer), susyCounter)

### Here we are moving the jet cleaning module so that the JEC corrections are already propagated
### to jets, met, and isoTracks
susyCoreSequence.remove(isoTrackAna)
susyCoreSequence.insert(susyCoreSequence.index(metAna) + 1, isoTrackAna)
susyCoreSequence.insert(susyCoreSequence.index(isoTrackAna) + 1, jetCleanAna)

sequence = cfg.Sequence(susyCoreSequence + [
    #comment forSherpa    LHEAna,
    LHEAna,
    #
    TauDecayAna,
    #
    ttHMT2Control,
    MT2Ana,
    ttHTopoJetAna,
    ttHIsrJetAna,
    treeProducer,
])

###---- to switch off the compression
#treeProducer.isCompressed = 0

from PhysicsTools.HeppyCore.framework.heppy_loop import getHeppyOption

#-------- HOW TO RUN
# choose 0 for quick validations tests. It doesn't require to load the sample files
# choose 2 for full mc production
# choose 3 for data production
Esempio n. 16
0
##########################################################
##       CONFIGURATION FOR HZZ4L TREES                  ##
##########################################################
import PhysicsTools.HeppyCore.framework.config as cfg

#Load all analyzers
from CMGTools.HToZZ4L.analyzers.hzz4lCore_modules_cff import *
from CMGTools.HToZZ4L.analyzers.hzz4lExtra_modules_cff import *
from CMGTools.HToZZ4L.tools.configTools import *
from CMGTools.RootTools.samples.autoAAAconfig import *

#-------- SEQUENCE
sequence = cfg.Sequence(
    hzz4lPreSequence + [fastSkim2L] + hzz4lObjSequence +
    [twoLeptonAnalyzer, twoLeptonEventSkimmer, twoLeptonTreeProducer])

run = "Both"
run = "Mu"
#run = "El"

#-------- SAMPLES AND TRIGGERS -----------
from CMGTools.HToZZ4L.samples.samples_13TeV_Fall15 import *
if run == "Mu": dataSamples2L = [d for d in dataSamples if "DoubleM" in d.name]
elif run == "El":
    dataSamples2L = [d for d in dataSamples if "DoubleE" in d.name]
else:
    dataSamples2L = [d for d in dataSamples if "Double" in d.name]
for d in dataSamples2L:
    d.triggers = triggers_mumu if 'Muon' in d.name else triggers_ee
    d.vetoTriggers = []
    d.splitFactor = (len(d.files) + 4) / 7
Esempio n. 17
0
             -least_isolated_tau_pt)

from CMGTools.H2TauTau.heppy.analyzers.Sorter import Sorter
dilepton_sorted = cfg.Analyzer(
    Sorter,
    output = 'dileptons_sorted',
    src = 'dileptons',
    metric = sorting_metric,
    reverse = False
    )



sequence_dilepton = cfg.Sequence([
        sel_taus,
        two_tau,
        dilepton,
        dilepton_sorted,
        ])

# weights ================================================================

from CMGTools.H2TauTau.heppy.analyzers.TauIDWeighter import TauIDWeighter
tauidweighter = cfg.Analyzer(
    TauIDWeighter,
    'TauIDWeighter',
    taus = lambda event: [event.dileptons_sorted[0].leg1(),event.dileptons_sorted[0].leg2()]
)

# from CMGTools.H2TauTau.heppy.analyzers.FakeFactorAnalyzer import FakeFactorAnalyzer
# fakefactor = cfg.Analyzer(
#     FakeFactorAnalyzer,
Esempio n. 18
0
#    unpackPathNames = True,
#    trgObjSelectors = [lambda ob: ob.pt()>20, lambda ob: abs(ob.eta())<2.5],
#    collToMatch = "selectedLeptons",
#    collMatchSelectors = [lambda lep,ob: abs(lep.pt()/ob.pt()-1)<0.5],
#    collMatchDRCut = 0.3,
#    univoqueMatching = True,
#    verbose = True
#)
#susyCoreSequence.append(trigMatchExample)

    
#-------- SEQUENCE -----------

sequence = cfg.Sequence(susyCoreSequence+[
        ttHJetTauAna,
        ttHEventAna,
        treeProducer,
    ])
preprocessor = None

if doMETpreprocessor:
    removeResiduals = False # residuals are set to 1 in MC, no need to remove them
    import tempfile
    # -------------------- Running pre-processor
    import subprocess
    jecDBFile = '$CMSSW_BASE/src/CMGTools/RootTools/data/jec/Summer15_50nsV4_%s.db'%('DATA' if isData else 'MC')
    jecEra    = 'Summer15_50nsV4_%s'%('DATA'if isData else 'MC')
    tempfile.tempdir=os.environ['CMSSW_BASE']+'/src/CMGTools/TTHAnalysis/cfg'
    tfile, tpath = tempfile.mkstemp(suffix='.py',prefix='MET_preproc_')
    os.close(tfile)
    preprocessorFile = tpath
Esempio n. 19
0
                       filter_func=lambda x: x.pt() > 30)

btag = cfg.Analyzer(BJetEfficiencyCreator,
                    name='BJetEfficiencyCreator',
                    jets='jets_30',
                    year=year,
                    tagger=btagger)

sequence = cfg.Sequence([
    # Analyzers
    json,
    vertex,
    muons,
    select_muon,
    electrons,
    select_electron,
    jets,
    jets_20_unclean,
    jet_20_electron_clean,
    jet_20_clean,
    jets_30,
    btag
])

# the following is declared in case this cfg is used in input to the
# heppy.py script
from PhysicsTools.HeppyCore.framework.eventsfwlite import Events
config = cfg.Config(components=selectedComponents,
                    sequence=sequence,
                    services=[],
                    events_class=Events)
Esempio n. 20
0
selectedComponents = [
    s for s in selectedComponents
    if not ('DY' in s.name and 'Jets' in s.name and not 'DYJets' in s.name)
]
selectedComponents = [
    s for s in selectedComponents
    if not ('W' in s.name and 'Jets' in s.name and not 'WJets' in s.name)
]
# selectedComponents = [s for s in selectedComponents if s in WJetsHT]

###################################################
###             SET COMPONENTS BY HAND          ###
###################################################

sequence = cfg.Sequence([
    jsonAna, skimAna, genAna, vertexAna, triggerAna, tauJetMuAna, httGenAna,
    jetAna, muonWeighter, pileUpAna, NJetsAna, treeProducer
])

if not production:
    cache = True
    comp = selectedComponents[1]
    selectedComponents = [comp]
    comp.splitFactor = 1
    comp.fineSplitFactor = 1
    # comp.files = comp.files[:1]

# the following is declared in case this cfg is used in input to the
# heppy.py script
from PhysicsTools.HeppyCore.framework.eventsfwlite import Events
config = cfg.Config(
    components=selectedComponents,
Esempio n. 21
0
     defaultFloatType = 'F',
)

susyCoreSequence.insert(susyCoreSequence.index(skimAnalyzer),
                        susyCounter)

#susyCoreSequence.insert(susyCoreSequence.index(ttHLepSkim),
#                        ttHZskim)

#susyCoreSequence.insert(susyCoreSequence.index(ttHCoreEventAna),
#                        ttHSVAna)

sequence = cfg.Sequence(
    susyCoreSequence+[
    ttHMT2Control,
    ttHTopoJetAna,
    ttHFatJetAna,
    treeProducer,
    ])

###---- to switch off the compression
#treeProducer.isCompressed = 0



from PhysicsTools.HeppyCore.framework.heppy import getHeppyOption

#-------- HOW TO RUN
# choose 2 for full production
test = 0
if test==0:
Esempio n. 22
0
)
ggH135_1 = c.makeMCComponentFromEOS(
    'ggH135_rawaod_2', 'ggH135_rawaod',
    '/store/group/phys_tau/HLT2016/HPSatHLT/GluGluHToTauTau_M125_13TeV_powheg_pythia8/HPSatHLT/161206_134434/0001/'
)

selectedComponents = [ggH135_0, ggH135_1]

tauHLTAna = cfg.Analyzer(
    TauHLTAnalyzer,
    name='TauHLTAnalyzer',
)

tauHLTTree = cfg.Analyzer(HLTTauTreeProducer, name='HLTTauTreeProducer')

sequence = cfg.Sequence([tauHLTAna, tauHLTTree])

if not production:
    selectedComponents = selectedComponents[:1]
    for comp in selectedComponents:
        comp.splitFactor = 1
        comp.fineSplitFactor = 1
    # comp.files = comp.files[:1]
else:
    for comp in selectedComponents:
        comp.splitFactor = 200

config = cfg.Config(components=selectedComponents,
                    sequence=sequence,
                    services=[],
                    events_class=Events)
                        verbose=False)

higgsWeighter = cfg.Analyzer(
    HiggsPtWeighter,
    name='HiggsPtWeighter',
)

###################################################
###                  SEQUENCE                   ###
###################################################
commonSequence = cfg.Sequence([
    lheWeightAna,
    jsonAna,
    skimAna,
    mcWeighter,
    genAna,
    susyScanAna,
    triggerAna,  # First analyser that applies selections
    vertexAna,
    dyJetsFakeAna,
    jetAna,
    vbfAna,
    pileUpAna,
    embedWeighter,
    NJetsAna,
    higgsWeighter
])

if applyRecoil:
    commonSequence.insert(commonSequence.index(pileUpAna), recoilCorr)
Esempio n. 24
0
)

fileCleaner = cfg.Analyzer(FileCleaner, name='FileCleaner')

###################################################
###                  SEQUENCE                   ###
###################################################
sequence = cfg.Sequence([
    jsonAna,
    # skimAna,
    triggerAna,
    vertexAna,
    HNLAnalyzer_mmm,
    HNLAnalyzer_mem,
    HNLAnalyzer_eee,
    HNLAnalyzer_eem,
    HNLEventFilter,
    jetAna,
    metFilter,
    HNLTreeProducerBase_mmm,
    HNLTreeProducerBase_mem,
    HNLTreeProducerBase_eee,
    HNLTreeProducerBase_eem,
])

saveBigTree = False

if saveBigTree:
    sequence.insert(-1, HNLTreeProducer)

if len(toSelect):
    src = 'dileptons',
    # sort by mu iso, mu pT, tau iso, tau pT
    metric = lambda dl: (dl.leg1().iso_htt(), 
                         -dl.leg1().pt(), 
                         -dl.leg2().tauID('byIsolationMVArun2017v2DBoldDMwLTraw2017'), 
                         -dl.leg2().pt()),
    reverse = False
    )



sequence_dilepton = cfg.Sequence([
        sel_taus,
        one_tau,
        sel_muons,
        one_muon,
        sel_muons_dilepton_veto,
        dilepton_veto,
        dilepton,
        dilepton_sorted,
        ])

# weights ================================================================

# id weights
from CMGTools.H2TauTau.heppy.analyzers.TauIDWeighter import TauIDWeighter
tauidweighter_general = cfg.Analyzer(
    TauIDWeighter,
    'TauIDWeighter_general',
    taus = lambda event: [event.dileptons_sorted[0].leg2()]
)
    #    dataGT            = '94X_dataRun2_v6',
    #jesCorr = 1., # Shift jet energy scale in terms of uncertainties (1 = +1 sigma)
)
###################################################
###                  SEQUENCE                   ###
###################################################
sequence = cfg.Sequence([
    #    eventSelector,
    lheWeightAna,  # les houches
    jsonAna,
    skimAna,
    triggerAna,
    vertexAna,
    pileUpAna,
    genAna,
    HNLGenTreeAnalyzer,
    HNLAnalyzer,
    eleWeighter,
    muonWeighterl1,
    muonWeighterl2,
    jetAna,
    recoGenAna,
    metFilter,
    HNLTreeProducer,
])

###################################################
###            SET BATCH OR LOCAL               ###
###################################################
if not production:
    #     comp                 = HN3L_M_2p5_V_0p0173205080757_e_onshell
Esempio n. 27
0
)

leptonicTops = cfg.Analyzer(LeptonicTopBuilder, )

fileCleaner = cfg.Analyzer(FileCleaner, name='FileCleaner')

###################################################
###                  SEQUENCE                   ###
###################################################
sequence = cfg.Sequence([
    lheWeightAna,
    jsonAna,
    skimAna,
    genAna,
    triggerAna,  # First analyser that applies selections
    vertexAna,
    pileUpAna,
    leptons,
    photons,
    jetAna,
    leptonicTops,
    #treeProducer,
])

###################################################
###            SET BATCH OR LOCAL               ###
###################################################
if not production:
    comp = TTJets_SingleLeptonFromTbar
    selectedComponents = [comp]
    comp.splitFactor = 1
    comp.fineSplitFactor = 1
Esempio n. 28
0
# lepton scale / resolution corrections
if doLepCorr: 
    doECalElectronCorrections(era="25ns")
    doKalmanMuonCorrections()
if doPhotonCorr:
    doECalPhotonCorrections()

#-------- SEQUENCE
sequence = cfg.Sequence(dmCoreSequence+[
#   monoXRazorAna,
#   monoXMT2Ana,
   monoXPuppiJetAna,
   monoXSubJetPuppiAna,
   monoXSubJetSoftDropAna,
   metPuppiAna,
###    metPuppiAnaScaleUp
###    metPuppiAnaScaleDown,
   monoJetVarAna,
   MonoJetEventAna,
   treeProducer,
    ])

from CMGTools.RootTools.samples.triggers_13TeV_Spring15 import *
from CMGTools.RootTools.samples.triggers_8TeV import triggers_1mu_8TeV, triggers_mumu_8TeV, triggers_mue_8TeV, triggers_ee_8TeV;
triggers_AllMonojet = triggers_metNoMu90_mhtNoMu90 + triggers_metNoMu120_mhtNoMu120 + triggers_AllMET170 + triggers_AllMET300
triggers_SinglePhoton = triggers_photon155 + triggers_photon165_HE10 + triggers_photon175 + triggers_jet  # last ones added to recover L1 issue of tight H/E cut
trigger_JetHT = triggers_HT800 #remember to do the NOT of (Photon165 || Photon175)
triggerFlagsAna.triggerBits = {
    'DoubleMu' : triggers_mumu_iso,
    'DoubleEl' : triggers_ee,
Esempio n. 29
0
pfjets = cfg.Analyzer(JetClusterizer,
                      instance_label='pf',
                      particles='pf_particles')

from Colin.PFSim.analyzers.JetAnalyzer import JetAnalyzer

jetana = cfg.Analyzer(JetAnalyzer, )

from Colin.PFSim.analyzers.JetTreeProducer import JetTreeProducer

tree = cfg.Analyzer(JetTreeProducer, tree_name='events', tree_title='jets')

# definition of a sequence of analyzers,
# the analyzers will process each event in this order
sequence = cfg.Sequence([reader, pfsim, jets, genjets, pfjets, jetana, tree])

# finalization of the configuration object.
from PhysicsTools.HeppyCore.framework.eventsfwlite import Events

config = cfg.Config(components=selectedComponents,
                    sequence=sequence,
                    services=[],
                    events_class=Events)

if __name__ == '__main__':
    import sys
    from PhysicsTools.HeppyCore.framework.looper import Looper
    import logging

    # next 2 lines necessary to deal with reimports from ipython
Esempio n. 30
0
##########################################################
##       CONFIGURATION FOR HZZ4L TREES                  ##
##########################################################
import PhysicsTools.HeppyCore.framework.config as cfg

#Load all analyzers
from CMGTools.HToZZ4L.analyzers.hzz4lCore_modules_cff import *

#-------- SAMPLES AND TRIGGERS -----------

#-------- SEQUENCE
from CMGTools.HToZZ4L.samples.samples_13TeV_Spring15 import *

selectedComponents = mcSamples + dataSamples
sequence = cfg.Sequence(hzz4lCoreSequence)

for comp in mcSamples:
    comp.triggers = []
    comp.vetoTriggers = []

from PhysicsTools.HeppyCore.framework.heppy import getHeppyOption
test = getHeppyOption('test')
if test == "1":
    comp = QQHZZ4L
    comp.files = comp.files[:1]
    comp.splitFactor = 1
    comp.fineSplitFactor = 1 if getHeppyOption('single') else 5
    selectedComponents = [comp]
    if getHeppyOption('events'):
        eventSelector.toSelect = [
            eval("(" + x.replace(":", ",") + ")")