#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 *
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]
#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":
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 ])
#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]
) ## 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
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,
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)
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)
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
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,
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
########################################################## ## 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
-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,
# 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
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)
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,
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:
) 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)
) 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
) 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
# 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,
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
########################################################## ## 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(":", ",") + ")")