diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/CMakeLists.txt b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..765c4682d030a5effa7c56227397d6bf52aec525 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/CMakeLists.txt @@ -0,0 +1,24 @@ +################################################################################ +# Package: PhysicsD3PDMaker +################################################################################ + +# Declare the package name: +atlas_subdir( PhysicsD3PDMaker ) + +# Declare the package's dependencies: +atlas_depends_on_subdirs( PRIVATE + Control/AthenaBaseComps + Event/xAOD/xAODEgamma + Event/xAOD/xAODMuon + GaudiKernel ) + +# Component(s) in the package: +atlas_add_component( PhysicsD3PDMaker + src/*.cxx + src/components/*.cxx + LINK_LIBRARIES AthenaBaseComps xAODEgamma xAODMuon GaudiKernel ) + +# Install files from the package: +atlas_install_python_modules( python/*.py ) +atlas_install_joboptions( share/*.py ) + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/cmt/requirements b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/cmt/requirements new file mode 100644 index 0000000000000000000000000000000000000000..e0b30252768caebe577bbcace97d6a32fa6b0b48 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/cmt/requirements @@ -0,0 +1,17 @@ +package PhysicsD3PDMaker + +use AtlasPolicy AtlasPolicy-* + +private + +use GaudiInterface GaudiInterface-* External +use AthenaBaseComps AthenaBaseComps-* Control +use xAODEgamma xAODEgamma-* Event/xAOD +use xAODMuon xAODMuon-* Event/xAOD + +## default is to make component library +library PhysicsD3PDMaker *.cxx components/*.cxx +apply_pattern component_library + +apply_pattern declare_joboptions files="*.py" +apply_pattern declare_python_modules files="*.py" diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/GroomedJetsConfig.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/GroomedJetsConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..54837ab4f15765bae231db79e574b25428d144db --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/GroomedJetsConfig.py @@ -0,0 +1,32 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +import copy + +def getGroomedJetsConfig(): + + dictsConf = [] + + ParentDict = { + 'JetFinder' : 'CamKt', + 'JetdR' : 1.2, + 'JetInput' : 'LCTopo', + } + + GroomedDicts = [ + #{ 'Type' : 'BDRSFiltering', 'args' : { 'SaveSubjets' : True } } #, + { 'Type' : 'BDRSFiltering', 'args' : { 'SaveSubjets' : True , 'minSplitR' :0.} } + ] + + + dictsConf += [ [ParentDict, GroomedDicts] ] + + ParentDict = { + 'JetFinder' : 'CamKt', + 'JetdR' : 1.2, + 'JetInput' : 'Truth', + } + + dictsConf += [ [ParentDict, GroomedDicts] ] + + + return dictsConf diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSD3PD.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSD3PD.py new file mode 100644 index 0000000000000000000000000000000000000000..292bbe426914bb69082e2f8e5dd777b0bf734fbc --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSD3PD.py @@ -0,0 +1,221 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +from JetD3PDMaker.JetD3PDObject import getJetD3PDObject +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +from RecExConfig.RecFlags import rec +from D3PDMakerCoreComps.IndexMultiAssociation import IndexMultiAssociation +from D3PDMakerCoreComps.IndexAssociation import IndexAssociation +from D3PDMakerCoreComps.SimpleAssociation import SimpleAssociation +from D3PDMakerCoreComps.ContainedVectorMultiAssociation import ContainedVectorMultiAssociation +import JetSubstructureD3PDMaker +from D3PDMakerCoreComps.D3PDObject import make_SG_D3PDObject +import EventCommonD3PDMaker +#from JetTagD3PDMaker.AddBTagD3PDInfo import addBTagInfoToJetObject +from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys +from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags +import JetTagD3PDMaker + + +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + +def getJetCollectionD3PDObject(objectname = 'JetCollectionD3PDObject', prefix = 'jet_'): + return make_SG_D3PDObject('JetCollection','','jet_', objectname) + + +def AddUniqueMoments(obj, momlist, theblockname = 'ConfigParams', level = 0): + obj.defineBlock(level, theblockname, JetSubstructureD3PDMaker.JetMomentUniqueFillerTool, Moments = momlist, OutputLevel=3) + + +def AddHadronicInfo(obj, additionalMoments = [], theblockname = 'SubjetMomentsHadronic', level=0): + + from JetD3PDMaker import JetMomentFillerTool + obj.defineBlock(level, theblockname, JetMomentFillerTool,Moments= [] + additionalMoments) + +def AddAssocJetsIndex(obj, jetassocname, jettarget, intermediate_names = [], level=0): + + JetAssocTrack = IndexMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,jettarget,level = level, + prefix=jetassocname+'_', + blockname=jetassocname+'blockindex', AssociationName = jetassocname , IntermediateAssociationNames=intermediate_names, OutputLevel=3 ) + +def AddConstitIndex(object, typename='CaloCluster', target='cl_', level=0): + + import EventCommonD3PDMaker + import D3PDMakerCoreComps + ConstitAssoc = ContainedVectorMultiAssociation \ + (object, + EventCommonD3PDMaker.NavigableConstituentAssociationTool, + 'constit_', + blockname=typename+'NavigableConstituentAssociationTool', + TypeName = typename, WriteWeight = True, + level = level) + + ConstitAssoc.defineBlock (0, 'ConstitIndex'+typename, D3PDMakerCoreComps.IndexFillerTool, Target = target) + +def AddConstitTruthIndex(object, typename='TruthParticle', target='mc_', level=0): + + import EventCommonD3PDMaker + import D3PDMakerCoreComps + import TruthD3PDMaker + ConstitAssoc = ContainedVectorMultiAssociation \ + (object, + EventCommonD3PDMaker.NavigableConstituentAssociationTool, + 'constit_', + blockname=typename+'NavigableConstituentAssociationTool', + TypeName = typename, WriteWeight = False, + level = level) + + genPart = SimpleAssociation(ConstitAssoc,TruthD3PDMaker.TruthParticleGenParticleAssociationTool) + trupart2 = IndexAssociation (genPart, TruthD3PDMaker.GenParticleTruthParticleAssociationTool, + target = 'mc_', + Target = 'mc_') + + + +def AddBTaggingInfo(obj, level = 0, block_prefix = "my"): + + obj.defineBlock(level,block_prefix+JetTagD3PDKeys.BTagWeightsBlockName(), + JetTagD3PDMaker.JetTagBTagWeightsFillerTool, + prefix=JetTagD3PDKeys.BTagWeightsPrefix(), + TaggerNames=JetTagD3PDFlags.Taggers()) + #addBTagInfoToJetObject(obj,0) + +def AddBTaggingInfoFromSubjets(obj, sj_assoc_name = 'SplitFiltSubjets', sj_prefix = "subjets", level=0): + t = ContainedVectorMultiAssociation(obj, JetSubstructureD3PDMaker.JetSubstructureTagJetINavigable4MomentumAssociationTool,level = level, prefix= sj_prefix+"_", + blockname='blockbtag'+sj_assoc_name, nrowName = 'nsj', OutputLevel=3, AssociationName=sj_assoc_name, IntermediateAssociationNames=['Parent']) + + #t.defineBlock(0, 'myKinematics', EventCommonD3PDMaker.FourMomFillerTool, WriteE = True) + + AddBTaggingInfo(t, 0, "my"+sj_assoc_name) + +myJSD3PD = [] + +def JSD3PD(jetsToWrite, alg): + + global myJSD3PD + + if not alg: + raise TypeError("alg should be specified!") + + jsD3PD=None + for val in myJSD3PD: + if val[0]==jetsToWrite: + print "using existing JSD3PD" + jsD3PD=val[1] + break + + if jsD3PD==None: + jsD3PD = JSD3PD_Tool(jetsToWrite) + myJSD3PD += [ (jetsToWrite, jsD3PD) ] + + jsD3PD.addToAlg(alg) + +class JSD3PD_Tool(object): + + def __init__(self,jetsToWrite): + + self.commonExcludeList = ['El02Match','Mu02Match','L1Info','L2Info','EFInfo'] + self.commonIncludeList = [] + + MyJetD3PDObject = getJetD3PDObject(objectname='MyJetD3PDObject') + MyGroomedJetD3PDObject = getJetD3PDObject(objectname='MyGroomedJetD3PDObject') + + import re + JetAlgPattern = re.compile(r'^(\D+)(\d{1,2})(\D+)Jets') #assuming standard notation + ars = JetAlgPattern.match(jetsToWrite[0]).groups() + + self.parentJets = ''.join(ars) #remove the 'Jets' at the end + + self.groomedJetsList = jetsToWrite[1] + + if 'Track' in self.parentJets: + AddConstitIndex(MyGroomedJetD3PDObject, typename='Rec::TrackParticle', target='trk') + AddConstitIndex(MyJetD3PDObject, typename='Rec::TrackParticle', target='trk') + elif 'LCTopo' in self.parentJets: + AddConstitIndex(MyGroomedJetD3PDObject) + AddConstitIndex(MyJetD3PDObject) + elif 'Truth' in self.parentJets: + AddConstitTruthIndex(MyJetD3PDObject) + AddConstitTruthIndex(MyGroomedJetD3PDObject) + + #if 'Track' not in self.parentJets and 'Truth' not in self.parentJets: + # AddAssocJetsIndex(MyJetD3PDObject, 'TrackJets', 'jet_' + ars[0] + ars[1] + 'TrackZ_') + # if rec.doTruth(): + # AddAssocJetsIndex(MyJetD3PDObject, 'TruthJets', 'jet_' + ars[0] + ars[1] + 'Truth_') + + self.JetQualInclude = [] + + if 'Topo' in self.parentJets or 'LCTopo' in self.parentJets: + self.commonIncludeList += ['ConstituentScale', 'EMScale'] + AddHadronicInfo(MyJetD3PDObject, ['OriginIndex','nTrk','sumPtTrk','EtaOrigin' , 'PhiOrigin' , 'MOrigin'], theblockname = 'OriginIndexBlock') + AddHadronicInfo(MyGroomedJetD3PDObject, ['EtaOrigin' , 'PhiOrigin' , 'MOrigin' ], theblockname = 'OriginIndexBlock') + + + if (self.parentJets == 'AntiKt10LCTopo') or (self.parentJets == 'CamKt12LCTopo'): + AddHadronicInfo(MyJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') + AddHadronicInfo(MyGroomedJetD3PDObject, ['LCJES', 'LCJES_EtaCorr', 'LCJES_MassCorr' ], theblockname='LCJESBlock') + + self.VtxInclude = [] + + if 'Topo' in self.parentJets: + self.VtxInclude += ['JVtx','JetVertexFraction'] + + AddAssocJetsIndex(MyGroomedJetD3PDObject, 'Parent', 'jet_' + self.parentJets + '_') + for gr in self.groomedJetsList: + AddAssocJetsIndex(MyJetD3PDObject, gr, 'jet_' + self.parentJets + gr + '_') + + MyGroomedJetCollectionD3PDObject = getJetCollectionD3PDObject(objectname = "MyGroomedJetCollectionD3PDObject") + AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['SmallR','PtFrac', 'NSub'], theblockname = 'TrimConfigMoments', level=99) + AddUniqueMoments(MyGroomedJetCollectionD3PDObject, ['NSubjets','ktycut2','massFraction','minRfilt','minSplitR'], theblockname = 'FiltConfigMoments', level = 99) + + AddHadronicInfo(MyGroomedJetD3PDObject, ['CORE_RBB','CORE_RFILT'], theblockname = 'FiltMoments', level=99) + + ## in groomedJetsList, subjets name should follow the name of the 'full/composite' jet. + for idx,gr in enumerate(self.groomedJetsList): + ## names are unique + if 'Subjets' in gr and idx != 0 and 'Subjets' not in self.groomedJetsList[idx-1]: + AddBTaggingInfoFromSubjets(MyGroomedJetD3PDObject, sj_assoc_name = gr, sj_prefix = gr, level = 99) + AddAssocJetsIndex(MyGroomedJetD3PDObject, gr, 'jet_' + self.parentJets + gr + '_', intermediate_names = ['Parent'], level=99) + elif 'Subjets' in gr: + raise ValueError("Subjets without full composite jet ?") ## not suppose to happen + + self.MyJetD3PDObject = MyJetD3PDObject + self.MyGroomedJetD3PDObject = MyGroomedJetD3PDObject + self.MyGroomedJetCollectionD3PDObject = MyGroomedJetCollectionD3PDObject + + + + def addToAlg(self,alg): + + alg += self.MyJetD3PDObject(0, prefix='jet_' + self.parentJets + '_', sgkey=self.parentJets+'Jets', exclude=self.commonExcludeList, include = self.commonIncludeList + self.VtxInclude + self.JetQualInclude) + + for idx,gr in enumerate(self.groomedJetsList): + + kw = {} + includelist = [] + includelist_unique = [] + + if 'Trim' in gr: + includelist_unique += ['TrimConfigMoments'] + + elif 'Filt' in gr and 'Subjets' not in gr: + includelist += ['FiltMoments'] + includelist_unique += ['FiltConfigMoments'] + if len(self.groomedJetsList) > idx+1 and 'Subjets' in self.groomedJetsList[idx+1]: + includelist += ['blockbtag'+self.groomedJetsList[idx+1], self.groomedJetsList[idx+1]+'blockindex'] + + elif 'Subjets' in gr: + includelist += [JetTagD3PDKeys.BTagWeightsBlockName()] + includelist += [JetTagD3PDKeys.JetTrackAssocBlockName()] + includelist += [JetTagD3PDKeys.JetTrackBlockName()] + includelist += [JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()] + includelist += [JetTagD3PDKeys.IPInfoPlusTrackBlockName()] + + kw[JetTagD3PDKeys.JetTrackAssocBlockName()+'_target']= "trk" + kw[JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" + + alg += self.MyGroomedJetD3PDObject(0, prefix='jet_' + self.parentJets + gr + '_', sgkey=self.parentJets + gr +'Jets', include = includelist + self.commonIncludeList,exclude=self.commonExcludeList,**kw) + + alg += self.MyGroomedJetCollectionD3PDObject( 0, prefix='jet_' + self.parentJets + gr + '_config_', sgkey=self.parentJets + gr +'Jets', include = includelist_unique) + + return diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSjets.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSjets.py new file mode 100644 index 0000000000000000000000000000000000000000..a1d79d7f5526be7d5532fef3dc3fa8ee2acea6a2 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/JSjets.py @@ -0,0 +1,251 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +#####Jet Reco ############ + +# Before adding your algorithms to topSequence +from JetRec.JetGetters import * +from JetRec.JetRecFlags import jetFlags +from JetRecTools.JetRecToolsConf import * +from AthenaCommon.AlgSequence import AlgSequence +from JetRec.JetMomentGetter import add_jetMoments_to_JetAlg, make_JetMomentGetter +from JetRec.JetRecConf import JetSorterTool +#from JetMomentTools.JetMomentToolsConf import JetWidthTool + +import JetSubStructure + +_GroomingTool = { + 'Trimming' : JetSubStructure.SimpleTrimmingTool, + 'BDRSFiltering' : JetSubStructure.BDRSFilteringTool, +} + +def buildName(GroomedDict): + + if type(GroomedDict) != dict: + raise TypeError("GroomedDicts must contain dicts!") + + if GroomedDict['Type'] in _GroomingTool: + strconfig = "" + theArgs = GroomedDict['args'] + for k in theArgs.keys(): + if type(theArgs[k]) == int: + strconfig += k + '%d' % theArgs[k] + elif type(theArgs[k]) == float: + strconfig += k + '%d' % (theArgs[k]*100) + + toolname = strconfig + + return toolname + else: + raise KeyError("Couldn't find grooming tool %s" % GroomedDict['Type']) + + +def getGroomingTools(GroomedDicts): + + myGroomingTools = [] + catNames = [] + for gr in GroomedDicts: + toolname = buildName(gr) + defname = _GroomingTool[gr['Type']].__slots__['Name'] ## safe hack ? + + defsubjetsname = '' + if "SubjetsName" in _GroomingTool[gr['Type']].__slots__.keys(): + defsubjetsname = _GroomingTool[gr['Type']].__slots__['SubjetsName'] + + kw = gr['args'].copy() + if 'Name' not in kw.keys(): + kw['Name'] = defname + kw['Name'] += toolname + + if 'SubjetsName' not in kw.keys() and defsubjetsname != '': + kw['SubjetsName'] = defsubjetsname + kw['SubjetsName'] += toolname + + myGroomingTools += [_GroomingTool[gr['Type']](gr['Type']+toolname, StoreConfigParam = True, **kw)] + + catNames += [ kw['Name'] ] + + ## are we requesting subjets ? + if "SaveSubjets" in kw.keys(): + if kw["SaveSubjets"] == True: + catNames += [ kw['SubjetsName'] ] + + return myGroomingTools, catNames + + +###################### +## Truth Jets ## +###################### + +def setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq): + if rec.doTruth(): + myGroomingTools, catNames = getGroomingTools(GroomedDicts) + + sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3) + + assoc_tool_truth = JetSubStructure.JetAssociationTool( + name = 'JetAssocToolTruth', + GroomingTools = myGroomingTools, UsedSignalState = 2, + JetAlgTools = [sortertool], OutputLevel = 3 + ) + + myjetgetter_truth = make_StandardJetGetter(myjetfinder, myjetdr, 'Truth', seq = theseq, doCalib=False ,addDefaultMoment=False) + truthcontname = myjetgetter_truth.outputKey() + + make_JetMomentGetter(truthcontname , [assoc_tool_truth], theseq ) + + return [ truthcontname, catNames ] + else: + return [ None, None ] + +###################### +## Track Jets ## +###################### + +def setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq): + + myGroomingTools, catNames = getGroomingTools(GroomedDicts) + + sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) + + assoc_tool_track = JetSubStructure.JetAssociationTool( + name = 'JetAssocToolTrack', + GroomingTools = myGroomingTools, UsedSignalState = 2, + JetAlgTools = [sortertool], OutputLevel = 3 + ) + + + #---- TrackJet ---- + + from JetSubStructure.JSTrackJets import createJSTrackJets + mygetter = createJSTrackJets(theseq, myjetfinder,myjetdr) + + trackjetcontname = mygetter.outputKey() + + #---- End TrackJet ---- + + make_JetMomentGetter(trackjetcontname , [assoc_tool_track], theseq ) + + return [ trackjetcontname, catNames ] + + +###################### +## Calo Jets ## +###################### + +def setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq): + + myGroomingTools, catNames = getGroomingTools(GroomedDicts) + + sortertool = JetSorterTool('myJetSorter', SortOrder="ByPtDown", OutputLevel=3 ) + + grjets_calib = [] + + ## Origin correction / Eta-Mass-JES hack + + from JetSubStructure.mySetupJetCalibrators import doEtaMassJESCorrection + from JetCalibTools.MakeCalibSequences import calibTags + calibTags['ETAMASSJES'] = doEtaMassJESCorrection + + mydoCalib = False + mycalibName = '' + + if 'LCTopo' in myjetinput: + mydoCalib = True + if (myjetfinder + '%d'%(myjetdr*10) == 'AntiKt10') or (myjetfinder + '%d'%(myjetdr*10) == 'CamKt12'): + mycalibName = 'LC:ORIGIN_ETAMASSJES' + else: + mycalibName = 'LC:ORIGIN' + + stdcaliblist = [] + allowedcalib = ['AntiKt10LCTopoTrimmedJets', 'AntiKt10LCTopoTrimmedPtFrac3SmallR30Jets','AntiKt10LCTopoTrimmedPtFrac5SmallR30Jets','CamKt12LCTopoTrimmedPtFrac5SmallR30Jets'] + for x in catNames: + author = myjetfinder + '%d'%(myjetdr*10) + myjetinput + x + 'Jets' + if author in allowedcalib : + grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin_etamassjes_'+x, + JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput+x, doCalib=True, calibName='LC:ORIGIN_ETAMASSJES')[0], + GroomedjetsAuthor = [x] )] + else: + stdcaliblist += [x] + + if stdcaliblist != [] : + grjets_calib += [JetSubStructure.JetAlgToolWrapper(name = 'calibtool_origin', + JetAlgTool = getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='LC:ORIGIN')[0], + GroomedjetsAuthor = stdcaliblist )] + elif 'Topo' in myjetinput: + mydoCalib = True + mycalibName = 'EM:ORIGIN' + grjets_calib += getStandardCalibTool(myjetfinder,myjetdr, myjetinput, doCalib=True, calibName='EM:ORIGIN') + + assoc_tools = [] + if rec.doTruth(): + truthcontname = myjetfinder + '%dTruthJets' % (myjetdr*10) + if hasattr(theseq, truthcontname): + truthj_assoc = JetSubStructure.JetJetAssociatorTool("Truth_JetJetAssociatorTool", ContainerName = truthcontname, AssociationName = "TruthJets", MatchOrigin = False) + + trackjetcontname = myjetfinder + '%dTrackZJets' % (myjetdr*10) + if hasattr(theseq, trackjetcontname): + trkj_assoc = JetSubStructure.JetJetAssociatorTool("Trk_JetJetAssociatorTool", ContainerName = trackjetcontname, AssociationName = "TrackJets", MatchOrigin = True) + + + ## batgging ## + subjets_names = [x for x in catNames if "Subjets" in x] + btag_tool = [] + if subjets_names != '': + from JetRec.JetGetters import getStandardBTaggerTool + from JetRec.JetRecFlags import jetFlags + jetFlags.doBTagging = True + _btag_tool = getStandardBTaggerTool('AntiKt', 0.4, 'LCTopo') + if len(_btag_tool) > 0: + btag_tool += [ JetSubStructure.JetAlgToolWrapper(name = 'JetBTagger_' + ''.join(subjets_names), JetAlgTool = _btag_tool[0], + GroomedjetsAuthor = subjets_names ) ] + jetFlags.doBTagging = False + + ## btagging end ## + + assoc_tool = JetSubStructure.JetAssociationTool( + name = 'JetAssocTool', + AssociatorTools = assoc_tools, + GroomingTools = myGroomingTools, UsedSignalState = 2, + JetAlgTools = grjets_calib + [sortertool] + btag_tool, OutputLevel = 3 + ) + + + myjetgetter = make_StandardJetGetter(myjetfinder, myjetdr, myjetinput, seq = theseq, doCalib=mydoCalib, calibName=mycalibName,addDefaultMoment=False) + contname = myjetgetter.outputKey() + + + # ------------------------------------------------ + # Associate a vertex and set the JVF moment. Must be placed AFTER vertex correction + # ------------------------------------------------ + from AthenaCommon.DetFlags import DetFlags + from AthenaCommon.AppMgr import ToolSvc + noVertex = jobproperties.Beam.beamType == 'cosmics' or jobproperties.Beam.beamType == 'singlebeam' + if DetFlags.detdescr.ID_on() and jetFlags.doJVF() and 'Truth' not in myjetinput and not noVertex: + from JetSubStructure.mySetupJetMomentTools import mygetJetVertexAssociationTool + myjvatool = mygetJetVertexAssociationTool(myjetfinder, myjetdr,myjetinput,'Custom%d'%(myjetdr*10)) + add_jetMoments_to_JetAlg(myjetgetter, [myjvatool]) + + make_JetMomentGetter(contname , [assoc_tool], theseq ) + + return [ contname, catNames ] + + +def createJSJets( ParentDict, GroomedDicts, theseq = AlgSequence()) : + + if type(ParentDict) != dict: + raise TypeError("ParentDict must be a dict!") + + if type(GroomedDicts) != list: + raise TypeError("GroomedDicts must be a list!") + + myjetfinder = ParentDict["JetFinder"] + myjetdr = ParentDict["JetdR"] + myjetinput = ParentDict["JetInput"] + + if myjetinput == 'Truth': + return setupTruthJets(myjetfinder, myjetdr, GroomedDicts, theseq) + elif myjetinput == 'Track': + return setupTrackJets(myjetfinder, myjetdr, GroomedDicts, theseq) + else : + return setupCaloJets(myjetfinder, myjetdr, myjetinput, GroomedDicts, theseq) + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/METRefGetter_newplup.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/METRefGetter_newplup.py new file mode 100644 index 0000000000000000000000000000000000000000..e1f53fa2c0b677bd32992b54c6927487c4959a15 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/METRefGetter_newplup.py @@ -0,0 +1,872 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +############################################################################################## +# +# Reconstruction Getters for MissingET.METRefAlg +# +# Author : S. Resconi +# Date : March 2009 +# +############################################################################################## + +from AthenaCommon.SystemOfUnits import * # loads MeV etc... +from AthenaCommon.Constants import * # Loads DEBUG INFO etc.. +from AthenaCommon.Logging import logging # loads logger +import traceback # to allow printout of trace back +from AthenaCommon.AlgSequence import AlgSequence + +from RecExConfig.Configured import Configured # import base class + +from AthenaCommon.Include import include +include ("MuonCombinedSelectorTools/METMuonSelectorToolConfig.py") + +from CaloClusterCorrection.StandardCellWeightCalib import getCellWeightTool + +from MissingETTools.Weights import * + +from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault +theCaloNoiseTool=CaloNoiseToolDefault() +from AthenaCommon.AppMgr import ToolSvc +ToolSvc+=theCaloNoiseTool + +import AthenaPython.PyAthena as PyAthena +PyAthena.load_library('egammaEnumsDict') + +from JetMomentTools.SetupJetMomentTools import getJetVertexAssociationTool +jvatool = getJetVertexAssociationTool ('AntiKt', 0.4, 'Topo') +ToolSvc += jvatool + +#------------------------------------------------------------------------------------------------ +# Helper Function to retrieve H1 calibration Tool (similar to JetGetters.py) +def getStandardCalibTool(doAtlfastII=False): + + # define here name of H1 calib tool + #finder = "Cone" + finder = "AntiKt" + mainparam = 0.4 + input = "Topo" + + #def getCellWeightTool(finder="Cone",mainparam=0.4,input="Topo") + cellcalibtool = getCellWeightTool(finder,mainparam,input,True) + + return cellcalibtool + +#------------------------------------------------------------------------------------------------ + +from MissingET.MissingETConf import METRefinedAlgorithm + +class METRefGetter_newplup ( Configured ): + + suffix = '' # suffix used to differentiate instances of tools and containers + sequence = AlgSequence() + + ele_EgammaInputCollectionKey= "ElectronAODCollection" + ele_noCut = False + ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP + ele_EtCut = 10.0*GeV + ele_calibType = "RefCalib" + + gamma_EleInputCollectionKey = "ElectronAODCollection" + gamma_EgammaInputCollectionKey= "PhotonAODCollection" + gamma_EtCut = 10.0*GeV + gamma_noCut = False # True = apply no selection + gamma_isEM = PyAthena.egammaPID.PhotonIDTight + gamma_calibType = "EmScale" + gamma_isEMMatch = PyAthena.egammaPID.ElectronIDMediumPP + gamma_ElectronEtCutMatch = 10.0*GeV + + tau_doTauTool = True + tau_TauInputCollectionKey = "TauRecContainer" + tau_calibType = "ExclRefCalib" + tau_isTau = "BDTMedium_EleBDTMedium_MuonVeto" + tau_TauSignalConeSize = 0.3 + tau_TauPtCut = 20.*GeV + tau_RemoveResiduals = True + tau_MinimumMETContribution = 0.5 + + jet_JetInputCollectionKey = "AntiKt4LCTopoJets" + jet_vxcontainerkey = "VxPrimaryCandidate" + jet_UseCustomVxContainer = False + jet_JetPtCut = 20.0*GeV + jet_JetMaxPtCut = 1000000.0*GeV + jet_ApplyJetScale = "Yes" + jet_UseJetMomentForScale = True + jet_JetMomentForScale = "LCJES" + jet_ApplyJetJVF = "No" + jet_JetMomentForJVF = "JVF" + jet_calibType = "LocHad" + jet_RemoveResiduals = True + jet_MinimumMETContribution = 0.5 + + jet_RunSoftJetsTool = True + jet_SoftJetsInputCollectionKey = jet_JetInputCollectionKey + jet_SoftJetsCalibType = "LocHad" + jet_SoftJetsPtCut = 5.0*GeV + jet_SoftJetsMaxPtCut = 20.0*GeV + jet_ApplySoftJetsScale = "No" + jet_SoftJetsUseJetMomentForScale = False + jet_SoftJetsJetMomentForScale = "LCJES" + jet_SoftJetsRemoveResiduals = True + jet_SoftJetsMinimumMETContribution= 0.5 + + cellout_vxcontainerkey = "VxPrimaryCandidate" + cellout_calibType = "Eflow" #Eflow, Tracks + cellout_trackType = "STTrack" #STTrack, STTrackPV, STTrackCone + cellout_calibType2 = "Tracks" + cellout_trackType2 = "STTrack" + cellout_calibType3 = "Tracks" + cellout_trackType3 = "STTrackPV" + + cellout_pttrack = 150. + cellout_JetInputCollectionKey = jet_JetInputCollectionKey + photon_doPhotonTool = True + + cryo_ApplyCorrection = "Off" + muon_container = "StacoMuonCollection" + muon_algorithm = "Staco" # or Muid + muon_isolationAlg = "dRJet" # or TrkIso + + plupSuppCorr = "Off" #Off, STVF + celloutCorrection = "Off" #Off, STVF + + def suffix(self): + return self.suffix + + def jet_JetInputCollectionKey(self): + return self.jet_JetInputCollectionKey + + def jet_JetPtCut(self): + return self.jet_JetPtCut + + def jet_ApplyJetScale(self): + return self.jet_ApplyJetScale + + def muon_Container(self): + return self.muon_container + + def muon_trackMethod(self): + if self.muon_algorithm == "Staco": + return "CutVariable" + if self.muon_algorithm == "Muid": + return "CombinedPt" + if self.muon_algorithm == "Muons": + return "CombinedPt" + + def configure(self): + mlog = logging.getLogger ('METRefGetter_newplup::configure:') + mlog.info ('entering') + + # now configure the algorithm + try: + from MissingET.MissingETConf import METRefinedAlgorithm + theMETRefAlg=METRefinedAlgorithm("METRefAlg"+self.suffix) + theMETRefAlgMu=METRefinedAlgorithm("METRefAlgMu"+self.suffix) + + from RecExConfig.RecFlags import rec + theMETRefAlg.CompositionMapKey = "MET_RefComposition"+self.suffix + + if rec.readAOD(): + theMETRefAlg.UseCells = False + theMETRefAlgMu.UseCells = False + else: + theMETRefAlg.UseCells = True + theMETRefAlgMu.UseCells = True + except: + mlog.error("could not import MissingET.METRefAlg") + print traceback.format_exc() + return False + #------------------------------------------------------------------------------------------------ + # configure the tools: METRefinedEleTool => calibrator Tool for ATLFASTII + + try: + from MissingET.MissingETConf import METRefinedEleTool + theMETRefinedEleTool = METRefinedEleTool("METRefEle"+self.suffix) + # refEleTool = theMETRefinedEleTool.getHandle() + theMETRefinedEleTool.EgammaInputCollectionKey = self.ele_EgammaInputCollectionKey + theMETRefinedEleTool.noCut = self.ele_noCut + theMETRefinedEleTool.isEM = self.ele_isEM + theMETRefinedEleTool.ElectronEtCut = self.ele_EtCut + theMETRefinedEleTool.CalibType = self.ele_calibType # H1 or EmScale or KFact or RefCalib + # if doFastCaloSim set calibrator tool for ATLFAST2 + from CaloRec.CaloCellFlags import jobproperties + if jobproperties.CaloCellFlags.doFastCaloSim: + doAtlfastII=True + else: + doAtlfastII=False + + cellcalibtool = getStandardCalibTool(doAtlfastII) + calibtool_name = cellcalibtool.name() + theMETRefinedEleTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name + theMETRefinedEleTool.BackNavigationTo = "Cell" # to "Cell" + theMETRefinedEleTool.MissingETOutKey = "MET_RefEle"+self.suffix + print "******************* key = "+theMETRefinedEleTool.MissingETOutKey + print "******************* key2 = "+theMETRefinedEleTool.MissingETOutKey + #----------------- + from MissingET.MissingETConf import METClusterResolverTool + theMETEleResolver = METClusterResolverTool("EleResolve"+self.suffix) + theMETEleResolver.ReferenceClusterContainer = "CaloCalTopoCluster" + theMETRefinedEleTool.ClusterResolverTool = theMETEleResolver.getFullName() + + #------------------------------------------------------------------------------------ + if self.photon_doPhotonTool: + theMETRefinedGammaTool = METRefinedEleTool("METRefGamma"+self.suffix) + theMETRefinedGammaTool.EgammaInputCollectionKey = self.gamma_EgammaInputCollectionKey + theMETRefinedGammaTool.EleInputCollectionKey = self.gamma_EleInputCollectionKey + theMETRefinedGammaTool.isEM = self.gamma_isEM + theMETRefinedGammaTool.noCut = self.gamma_noCut + theMETRefinedGammaTool.ElectronEtCut = self.gamma_EtCut + theMETRefinedGammaTool.CalibType = self.gamma_calibType # H1 or EmScale or KFact or RefCalib + theMETRefinedGammaTool.isEMMatch = self.gamma_isEMMatch + theMETRefinedGammaTool.ElectronEtCutMatch = self.gamma_ElectronEtCutMatch + from CaloRec.CaloCellFlags import jobproperties + if jobproperties.CaloCellFlags.doFastCaloSim: + doAtlfastII=True + else: + doAtlfastII=False + cellcalibtool = getStandardCalibTool(doAtlfastII) + calibtool_name = cellcalibtool.name() + theMETRefinedGammaTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name + + theMETRefinedGammaTool.BackNavigationTo = "Cell" # to "Cell" + theMETRefinedGammaTool.MissingETOutKey = "MET_RefGamma"+self.suffix + #----------------- + theMETGammaResolver = METClusterResolverTool("GammaResolve"+self.suffix) + theMETGammaResolver.ReferenceClusterContainer = "CaloCalTopoCluster" + theMETRefinedGammaTool.ClusterResolverTool = theMETGammaResolver.getFullName() + + except: + mlog.error("could not get handle to METRefinedEleTool Quit") + print traceback.format_exc() + return False + + # add cellcalibtool + theMETRefinedEleTool += cellcalibtool + theMETRefinedEleTool += theMETEleResolver + if self.photon_doPhotonTool: + theMETRefinedGammaTool += cellcalibtool + theMETRefinedGammaTool += theMETGammaResolver + + # add the METRefinedEleTool to list of tools + theMETRefAlg.AlgTools+= [ theMETRefinedEleTool.getFullName() ] + if self.photon_doPhotonTool: + theMETRefAlg.AlgTools+= [ theMETRefinedGammaTool.getFullName() ] + + # add tools to alg + theMETRefAlg += theMETRefinedEleTool + if self.photon_doPhotonTool: + theMETRefAlg += theMETRefinedGammaTool + #theMETRefAlg.OutputLevel = DEBUG + + #------------------------------------------------------------------------------------------------ + # configure tools: METRefinedTauTool => calibrator Tool for ATLFASTII + if self.tau_doTauTool: + try: + from MissingET.MissingETConf import METRefinedTauTool + theMETRefinedTauTool = METRefinedTauTool("METRefTau"+self.suffix); + + theMETRefinedTauTool.TauInputCollectionKey = self.tau_TauInputCollectionKey # or Tau1P3PContainer + theMETRefinedTauTool.isTau = self.tau_isTau #"Tight" # Tight, Medium, Loose, Old + theMETRefinedTauTool.CalibType = self.tau_calibType # H1 or LocHad + theMETRefinedTauTool.TauSignalConeSize = self.tau_TauSignalConeSize + theMETRefinedTauTool.TauPtCut = self.tau_TauPtCut + theMETRefinedTauTool.RemoveResiduals = self.tau_RemoveResiduals + theMETRefinedTauTool.MinimumMETContribution= self.tau_MinimumMETContribution + + # if doFastCaloSim set calibrator tool for ATLFAST2 + from CaloRec.CaloCellFlags import jobproperties + if jobproperties.CaloCellFlags.doFastCaloSim: + doAtlfastII=True + else: + doAtlfastII=False + + cellcalibtool = getStandardCalibTool(doAtlfastII); + calibtool_name = cellcalibtool.name(); + theMETRefinedTauTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name + + theMETRefinedTauTool.BackNavigationTo = "Topo" + theMETRefinedTauTool.Cell2ClusterMapKey = "CaloCell2TopoCluster" + theMETRefinedTauTool.MissingETOutKey = "MET_RefTau"+self.suffix + + except: + mlog.error("could not get handle to METRefinedTauTool Quit") + print traceback.format_exc() + return False + + # add cellcalibtool + theMETRefinedTauTool += cellcalibtool + + # add METRefinedTauTool to list of tools + theMETRefAlg.AlgTools+= [ theMETRefinedTauTool.getFullName() ] + + # add tools to alg + theMETRefAlg += theMETRefinedTauTool + + + + #------------------------------------------------------------------------------------------------ + # configure tools: METRefinedJetTool => calibrator Tool for ATLFASTII + try: + from MissingET.MissingETConf import METRefinedJetTool + theMETRefinedJetTool = METRefinedJetTool("METRefJet"+self.suffix); + if rec.readAOD(): + theMETRefinedJetTool.JetInputCollectionKey = self.jet_JetInputCollectionKey + theMETRefinedJetTool.VxContainerKey = self.jet_vxcontainerkey + theMETRefinedJetTool.JVFTool = jvatool + theMETRefinedJetTool.UseCustomVxContainer = self.jet_UseCustomVxContainer + theMETRefinedJetTool.JetPtCut = self.jet_JetPtCut # cut on jet pt + #theMETRefinedJetTool.JetMaxPtCut = self.jet_JetMaxPtCut # cut on jet pt + theMETRefinedJetTool.CalibType = self.jet_calibType # H1 or LocHad + theMETRefinedJetTool.ApplyJetScale = self.jet_ApplyJetScale + theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale + theMETRefinedJetTool.JetMomentForScale = self.jet_JetMomentForScale + theMETRefinedJetTool.ApplyJetJVF = self.jet_ApplyJetJVF + theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale + theMETRefinedJetTool.MissingETOutKey = "MET_RefJet"+self.suffix + theMETRefinedJetTool.RemoveResiduals = self.jet_RemoveResiduals + theMETRefinedJetTool.MinimumMETContribution= self.jet_MinimumMETContribution + else: + theMETRefinedJetTool.JetInputCollectionKey = self.jet_JetInputCollectionKey + theMETRefinedJetTool.VxContainerKey = self.jet_vxcontainerkey + theMETRefinedJetTool.JVFTool = jvatool + theMETRefinedJetTool.UseCustomVxContainer = self.jet_UseCustomVxContainer + theMETRefinedJetTool.JetPtCut = self.jet_JetPtCut + theMETRefinedJetTool.JetMaxPtCut = self.jet_JetMaxPtCut # cut on jet pt + theMETRefinedJetTool.CalibType = self.jet_calibType # H1 or LocHad + theMETRefinedJetTool.ApplyJetScale = self.jet_ApplyJetScale + theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale + theMETRefinedJetTool.JetMomentForScale = self.jet_JetMomentForScale + theMETRefinedJetTool.ApplyJetJVF = self.jet_ApplyJetJVF + theMETRefinedJetTool.UseJetMomentForScale = self.jet_UseJetMomentForScale + theMETRefinedJetTool.BackNavigationTo = "Topo" # to "Topo" or to "Cell" + theMETRefinedJetTool.MissingETOutKey = "MET_RefJet"+self.suffix + theMETRefinedJetTool.RemoveResiduals = True + theMETRefinedJetTool.MinimumMETContribution= 0.5 + + # if doFastCaloSim set calibrator tool for ATLFAST2 + from CaloRec.CaloCellFlags import jobproperties + if jobproperties.CaloCellFlags.doFastCaloSim: + doAtlfastII=True + else: + doAtlfastII=False + cellcalibtool = getStandardCalibTool(doAtlfastII); + calibtool_name = cellcalibtool.name(); + theMETRefinedJetTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name + except: + mlog.error("could not get handle to METRefinedJetTool Quit") + print traceback.format_exc() + return False + + # add cellcalibtool + theMETRefinedJetTool += cellcalibtool + + # add METRefinedJetTool to list of tools + theMETRefAlg.AlgTools+= [ theMETRefinedJetTool.getFullName() ] + + # add tools to alg + theMETRefAlg += theMETRefinedJetTool + #------------------------------------------------------------------------------------------------ + # configure tools: METSoftJetsTool + if self.jet_RunSoftJetsTool: + try: + from MissingET.MissingETConf import METRefinedJetTool + theMETSoftJetsTool = METRefinedJetTool("METSoftJets"+self.suffix); + if rec.readAOD(): + theMETSoftJetsTool.JetInputCollectionKey = self.jet_JetInputCollectionKey + theMETSoftJetsTool.JVFTool = jvatool + theMETSoftJetsTool.UseCustomVxContainer = False + theMETSoftJetsTool.JetPtCut = self.jet_SoftJetsPtCut # cut on jet pt + theMETSoftJetsTool.JetMaxPtCut = self.jet_SoftJetsMaxPtCut # cut on jet pt + theMETSoftJetsTool.CalibType = self.jet_SoftJetsCalibType + theMETSoftJetsTool.ApplyJetScale = self.jet_ApplySoftJetsScale + theMETSoftJetsTool.UseJetMomentForScale = self.jet_UseJetMomentForScale + theMETSoftJetsTool.JetMomentForScale = self.jet_JetMomentForScale + theMETSoftJetsTool.MissingETOutKey = "MET_SoftJets"+self.suffix + theMETSoftJetsTool.RemoveResiduals = self.jet_SoftJetsRemoveResiduals + theMETSoftJetsTool.MinimumMETContribution= self.jet_SoftJetsMinimumMETContribution + else: + theMETSoftJetsTool.JetInputCollectionKey = self.jet_JetInputCollectionKey + theMETSoftJetsTool.JVFTool = jvatool + theMETSoftJetsTool.UseCustomVxContainer = False + theMETSoftJetsTool.JetPtCut = self.jet_SoftJetsPtCut + theMETSoftJetsTool.JetMaxPtCut = self.jet_SoftJetsMaxPtCut + theMETSoftJetsTool.CalibType = self.jet_SoftJetsCalibType + theMETSoftJetsTool.ApplyJetScale = self.jet_ApplySoftJetsScale + theMETSoftJetsTool.UseJetMomentForScale = self.jet_UseJetMomentForScale + theMETSoftJetsTool.JetMomentForScale = self.jet_JetMomentForScale + theMETSoftJetsTool.BackNavigationTo = "Topo" # to "Topo" or to "Cell" + theMETSoftJetsTool.MissingETOutKey = "MET_SoftJets"+self.suffix + theMETSoftJetsTool.RemoveResiduals = True + theMETSoftJetsTool.MinimumMETContribution= 0.5 + + # if doFastCaloSim set calibrator tool for ATLFAST2 + from CaloRec.CaloCellFlags import jobproperties + if jobproperties.CaloCellFlags.doFastCaloSim: + doAtlfastII=True + else: + doAtlfastII=False + cellcalibtool = getStandardCalibTool(doAtlfastII); + calibtool_name = cellcalibtool.name(); + theMETSoftJetsTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name + except: + mlog.error("could not get handle to METSoftJetsTool Quit") + print traceback.format_exc() + return False + + # add cellcalibtool + theMETSoftJetsTool += cellcalibtool + + # add METSoftJetsTool to list of tools + theMETRefAlg.AlgTools+= [ theMETSoftJetsTool.getFullName() ] + + # add tools to alg + theMETRefAlg += theMETSoftJetsTool + + #------------------------------------------------------------------------------------------------ + # configure tools: METRefinedMuonTool + if not rec.readAOD(): + try: + from AthenaCommon.DetFlags import DetFlags + if DetFlags.detdescr.Muon_on(): + try: + from MissingET.MissingETConf import METRefinedMuonTool + theMETRefMuonTrackTool = METRefinedMuonTool("METRefMuonTrack"+self.suffix, + MuonContainer = self.muon_Container(), + outKey = "MET_RefMuon_Track_"+self.muon_algorithm+self.suffix, + cut1Chi2OverDoF = -1000., # or 0. if Muid + cut2Chi2OverDoF = 1000., # or 10. if Muid + CaloMuonCollection = "CaloMuonCollection", + MuTagCollection = self.muon_Container(), + JetContainerName = self.jet_JetInputCollectionKey,#theMETRefinedJetTool.JetInputCollectionKey, + Muon_Selected_Type = "Isol", # Isol = use muon tracks + Muon_Add_Crack = "On", # add muon tracks from cracks + IsolDefinition = self.muon_isolationAlg, + fillComposition = False + ) + theMETRefMuonSpectroTool = METRefinedMuonTool("METRefMuonSpectro"+self.suffix, + MuonContainer = self.muon_Container(), # or "MuidMuonCollection" + outKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, + cut1Chi2OverDoF = -1000., # or 0. if Muid + cut2Chi2OverDoF = 1000., # or 10. if Muid + CaloMuonCollection = "CaloMuonCollection", + MuTagCollection = self.muon_Container(), + JetContainerName = self.jet_JetInputCollectionKey,#theMETRefinedJetTool.JetInputCollectionKey, + Muon_Selected_Type = "NonIsol", # NonIsol = use spectro muons + IsolDefinition = self.muon_isolationAlg, + Muon_Add_Crack = "Off" + ) + # add theMETRefMuonTool to list of tools + theMETRefAlg.AlgTools+= [ theMETRefMuonTrackTool.getFullName() ] + theMETRefAlg.AlgTools+= [ theMETRefMuonSpectroTool.getFullName() ] + # add tool to alg + theMETRefAlg += theMETRefMuonTrackTool + theMETRefAlg += theMETRefMuonSpectroTool + except: + mlog.error("could not get handle to METRefinedMuonTool Quit") + print traceback.format_exc() + return False + except: + mlog.error("could not import DetFlags") + + #------------------------------------------------------------------------------------------------ + # configure tools: METRefinedClusterTool => calibrator Tool for ATLFASTII + try: + from MissingET.MissingETConf import METRefinedClusterTool + from MissingET.MissingETConf import METTrackSelectorTool + from AthenaCommon.AppMgr import ToolSvc + ToolSvc += METTrackSelectorTool("METTrackSelTool"+self.suffix) + + theMETRefinedClusterTool = METRefinedClusterTool("METRefCluster"+self.suffix); + theMETRefinedClusterTool.ClusterInputCollectionKey = "CaloCalTopoCluster" + theMETRefinedClusterTool.VxContainerKey = self.cellout_vxcontainerkey + theMETRefinedClusterTool.CalibType = self.cellout_calibType # Eflow, Tracks + theMETRefinedClusterTool.TrackType = self.cellout_trackType # STTrack, STTrackPV,STTrackCone + theMETRefinedClusterTool.MissingETOutKey = "MET_CellOut"+self.suffix + mytrackselector = METTrackSelectorTool("METTrackSelTool"+self.suffix) + mytrackselector.JetContainerName = self.cellout_JetInputCollectionKey + mytrackselector.MinPtTrack = self.cellout_pttrack + theMETRefinedClusterTool.METTrackSelTool = mytrackselector + + # if doFastCaloSim set calibrator tool for ATLFAST2 + from CaloRec.CaloCellFlags import jobproperties + if jobproperties.CaloCellFlags.doFastCaloSim: + doAtlfastII=True + else: + doAtlfastII=False + cellcalibtool = getStandardCalibTool(doAtlfastII); + calibtool_name = cellcalibtool.name(); + theMETRefinedClusterTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name + + except: + mlog.error("could not get handle to METRefinedClusterTool Quit") + print traceback.format_exc() + return False + + # add cellcalibtool + theMETRefinedClusterTool += cellcalibtool + + # add METRefinedClusterTool to list of tools + theMETRefAlg.AlgTools+= [ theMETRefinedClusterTool.getFullName() ] + + # add tools to alg + theMETRefAlg += theMETRefinedClusterTool + #-------------------------------------------------------------------------------- + # configure tools: METRefinedClusterTool (2) => only for STVF pile-up suppression + if self.plupSuppCorr == "STVF": + try: + from MissingET.MissingETConf import METRefinedClusterTool + from MissingET.MissingETConf import METTrackSelectorTool + from AthenaCommon.AppMgr import ToolSvc + ToolSvc += METTrackSelectorTool("METTrackSelTool"+self.suffix) + + theMETRefinedClusterTrackTool = METRefinedClusterTool("METRefClusterTrack"+self.suffix); + theMETRefinedClusterTrackTool.ClusterInputCollectionKey = "CaloCalTopoCluster" + theMETRefinedClusterTrackTool.VxContainerKey = self.cellout_vxcontainerkey + theMETRefinedClusterTrackTool.CalibType = self.cellout_calibType2 # Eflow, Tracks + theMETRefinedClusterTrackTool.TrackType = self.cellout_trackType2 # STTrack, STTrackPV,STTrackCone + theMETRefinedClusterTrackTool.MissingETOutKey = "MET_CellOut_Track"+self.suffix + mytrackselector = METTrackSelectorTool("METTrackSelTool"+self.suffix) + mytrackselector.JetContainerName = self.cellout_JetInputCollectionKey + mytrackselector.MinPtTrack = self.cellout_pttrack + theMETRefinedClusterTrackTool.METTrackSelTool = mytrackselector + + except: + mlog.error("could not get handle to METRefinedClusterTool Quit") + print traceback.format_exc() + return False + + # add cellcalibtool + theMETRefinedClusterTrackTool += cellcalibtool + + # add METRefinedClusterTool to list of tools + theMETRefAlg.AlgTools+= [ theMETRefinedClusterTrackTool.getFullName() ] + + # add tools to alg + theMETRefAlg += theMETRefinedClusterTrackTool + #-------------------------------------------------------------------------------- + # configure tools: METRefinedClusterTool (3) => only for STVF pile-up suppression + try: + from MissingET.MissingETConf import METRefinedClusterTool + from MissingET.MissingETConf import METTrackSelectorTool + from AthenaCommon.AppMgr import ToolSvc + ToolSvc += METTrackSelectorTool("METTrackSelTool"+self.suffix) + + theMETRefinedClusterTrackPVTool = METRefinedClusterTool("METRefClusterTrackPV"+self.suffix); + theMETRefinedClusterTrackPVTool.ClusterInputCollectionKey = "CaloCalTopoCluster" + theMETRefinedClusterTrackPVTool.VxContainerKey = self.cellout_vxcontainerkey + theMETRefinedClusterTrackPVTool.CalibType = self.cellout_calibType3 # Eflow, Tracks + theMETRefinedClusterTrackPVTool.TrackType = self.cellout_trackType3 # STTrack, STTrackPV,STTrackCone + theMETRefinedClusterTrackPVTool.MissingETOutKey = "MET_CellOut_TrackPV"+self.suffix + mytrackselector = METTrackSelectorTool("METTrackSelTool"+self.suffix) + mytrackselector.JetContainerName = self.cellout_JetInputCollectionKey + mytrackselector.MinPtTrack = self.cellout_pttrack + theMETRefinedClusterTrackPVTool.METTrackSelTool = mytrackselector + + except: + mlog.error("could not get handle to METRefinedClusterTool Quit") + print traceback.format_exc() + return False + + # add cellcalibtool + theMETRefinedClusterTrackPVTool += cellcalibtool + + # add METRefinedClusterTool to list of tools + theMETRefAlg.AlgTools+= [ theMETRefinedClusterTrackPVTool.getFullName() ] + + # add tools to alg + theMETRefAlg += theMETRefinedClusterTrackPVTool + + #------------------------------------------------------------------------------------------------ + # configure tools: METMuonTool + from AthenaCommon.DetFlags import DetFlags + if DetFlags.detdescr.Muon_on(): + try: + from MissingET.MissingETConf import METMuonTool + theMETMuonBoyTrackTool = METMuonTool("MuonIsol"+self.suffix, + MuonContainer = self.muon_Container(), + outKey ="MET_Muon_Isol_"+self.muon_algorithm+self.suffix, + ApplyChi2OverDoFCut ="Off", + cut1Chi2OverDoF = 0. , + cut2Chi2OverDoF = 10., + CaloMuonCollection = "CaloMuonCollection", + MuTagCollection = self.muon_Container(), + JetContainerName = theMETRefinedJetTool.JetInputCollectionKey, + Muon_Selected_Type = "Isol", # Isol = use muon tracks + Add_MuTag = "On", # add muon tracks from cracks + IsolDefinition = self.muon_isolationAlg, + TrackMethod = self.muon_trackMethod() + ) + theMETMuonBoySpectroTool = METMuonTool("MuonNonIsol"+self.suffix, + MuonContainer = self.muon_Container(), + outKey ="MET_Muon_NonIsol_"+self.muon_algorithm+self.suffix, + ApplyChi2OverDoFCut ="Off", + cut1Chi2OverDoF = 0. , + cut2Chi2OverDoF = 10., + CaloMuonCollection = "CaloMuonCollection", + MuTagCollection = self.muon_Container(), + JetContainerName = theMETRefinedJetTool.JetInputCollectionKey, + Muon_Selected_Type = "NonIsol", # NonIsol = use spectro muons + IsolDefinition = self.muon_isolationAlg, + TrackMethod = self.muon_trackMethod() + ) + theMETMuonTool = METMuonTool("Muon"+self.suffix, + MuonContainer = self.muon_Container(), + outKey ="MET_Muon_"+self.muon_algorithm+self.suffix, + ApplyChi2OverDoFCut ="Off", + cut1Chi2OverDoF = 0., + cut2Chi2OverDoF = 10., + CaloMuonCollection = "CaloMuonCollection", + MuTagCollection = self.muon_Container(), + JetContainerName = theMETRefinedJetTool.JetInputCollectionKey, + Muon_Selected_Type = "All", # All = use spectro muons + IsolDefinition = self.muon_isolationAlg, + TrackMethod = self.muon_trackMethod() + ) + + except: + mlog.error("could not get handle to METMuonTool Quit") + print traceback.format_exc() + return False + + # add the METMuonTool to list of tools + theMETRefAlg.AlgTools+= [ theMETMuonBoyTrackTool.getFullName() ] + theMETRefAlg.AlgTools+= [ theMETMuonBoySpectroTool.getFullName() ] + theMETRefAlgMu.AlgTools+= [ theMETMuonTool.getFullName() ] + + # add tool to alg + theMETRefAlg += theMETMuonBoyTrackTool + theMETRefAlg += theMETMuonBoySpectroTool + theMETRefAlgMu += theMETMuonTool + + #------------------------------------------------------------------------------------------------ + mlog.info(" now adding to sequence") + self.sequence += theMETRefAlg + from AthenaCommon.DetFlags import DetFlags + if DetFlags.detdescr.Muon_on(): + self.sequence += theMETRefAlgMu + # + # + # + # + # + # + # + # + # + # + try: + from MissingET.MissingETConf import METAlg + theMETAlg=METAlg("METAlg"+self.suffix) + except: + mlog.error("could not import MissingET.METAlg") + print traceback.format_exc() + return False + #------------------------------------------------------------------------------------------------ + try: + from MissingET.MissingETConf import METCryoTool + + theMETCryoTopoTool = METCryoTool("CryoTopo"+self.suffix); + + theMETCryoTopoTool.JetCollectionName = theMETRefinedJetTool.JetInputCollectionKey + # if doFastCaloSim set calibrator tool for ATLFAST2 + from CaloRec.CaloCellFlags import jobproperties + if jobproperties.CaloCellFlags.doFastCaloSim: + doAtlfastII=True + else: + doAtlfastII=False + + cellcalibtool = getStandardCalibTool(doAtlfastII); + calibtool_name = cellcalibtool.name(); + theMETCryoTopoTool.CalibToolName = 'H1WeightToolCSC12Generic/'+ calibtool_name + + theMETCryoTopoTool.outKey = "MET_Cryo"+self.suffix + + # add cellcalibtool + theMETCryoTopoTool += cellcalibtool + + # add theMETCryoTool to list of tools + theMETAlg.AlgTools+= [ theMETCryoTopoTool.getFullName() ] + + # add tool to alg + theMETAlg += theMETCryoTopoTool + except: + mlog.error("could not get handle to METCryoTopoTool Quit") + print traceback.format_exc() + return False + + #------------------------------------------------------------------------------------------------ + # configure tools: METFinal + try: + from MissingET.MissingETConf import METFinalTool + theMETMuonFinal = METFinalTool("MuFinal"+self.suffix, + WhichCalc = "MuonCalc", # calculate final muon term + outKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # output key + muonBOYTrack = "MET_Muon_Isol_"+self.muon_algorithm+self.suffix, # key for track muons + muonBOYSpectro= "MET_Muon_NonIsol_"+self.muon_algorithm+self.suffix, # key for spectro muons + ) + if self.jet_RunSoftJetsTool: + theMETRefFinal = METFinalTool("RefFinal"+self.suffix, + WhichCalc = "RefCalib", # Refined Calib applied + plupSupp = self.plupSuppCorr, # Off, STVF + EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele + GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma + MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon + TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau + JetRefKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet + SoftJetsKey = "MET_SoftJets"+self.suffix, # Specify key for SoftJets + CellOutKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut + muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib + cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off + cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone + outKey = "MET_RefFinal"+self.suffix + ) + if not self.jet_RunSoftJetsTool and self.plupSuppCorr != "STVF" : + theMETRefFinal = METFinalTool("RefFinal"+self.suffix, + WhichCalc = "RefCalib", # Refined Calib applied + plupSupp = self.plupSuppCorr, # Off, STVF + EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele + GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma + MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon + TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau + JetRefKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet + CellOutKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut + muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib + cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off + cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone + outKey = "MET_RefFinal"+self.suffix + ) + if not self.jet_RunSoftJetsTool and self.plupSuppCorr == "STVF" : + theMETRefFinal = METFinalTool("RefFinal"+self.suffix, + WhichCalc = "RefCalib", # Refined Calib applied + plupSupp = self.plupSuppCorr, # Off, STVF + EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele + GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma + MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon + TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau + JetRefKey = "MET_RefJet", # Specify key for default Ref Jet + SoftJetsKey = "MET_SoftJets", # Specify key for default SoftJets + CellOutKey = "MET_CellOut_Eflow", # Specify key for default CellOutEflow + JetRefCorrKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet Corr + CellOutEflowKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut + celloutTrackKey = "MET_CellOut_Track"+self.suffix, # Specify key for Ref CellOut + celloutTrackPVKey= "MET_CellOut_TrackPV"+self.suffix, # Specify key for Ref CellOut + muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib + cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off + cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone + outKey = "MET_RefFinal"+self.suffix + ) + if self.plupSuppCorr == "STVF": + theMETCellOutSTVF = METFinalTool("CellOutCorr"+self.suffix, + WhichCalc = "RefCalib", # Refined Calib applied + plupSupp = self.plupSuppCorr, # Off, STVF + cellOutCorr = self.celloutCorrection, + EleRefKey = "MET_RefEle"+self.suffix, # Specify key for Ref Ele + GammaRefKey = "MET_RefGamma"+self.suffix, # Specify key for Ref Gamma + MuoRefKey = "MET_RefMuon_"+self.muon_algorithm+self.suffix, # Specify key for Ref Muon + TauRefKey = "MET_RefTau"+self.suffix, # Specify key for Ref Tau + JetRefKey = "MET_RefJet", # Specify key for Ref Jet + SoftJetsKey = "MET_SoftJets", # Specify key for default SoftJets + CellOutKey = "MET_CellOut_Eflow", # Specify key for default CellOutEflow + JetRefCorrKey = "MET_RefJet"+self.suffix, # Specify key for Ref Jet + CellOutEflowKey = "MET_CellOut"+self.suffix, # Specify key for Ref CellOut + celloutTrackKey = "MET_CellOut_Track"+self.suffix, # Specify key for Ref CellOut + celloutTrackPVKey= "MET_CellOut_TrackPV"+self.suffix, # Specify key for Ref CellOut + muonKey = "MET_Muon_Total_"+self.muon_algorithm+self.suffix, # Key for Muon contrib + cryoTerm = self.cryo_ApplyCorrection, # "On"/"Off"= cryostat corr On / Off + cryoKey = "MET_Cryo"+self.suffix, # Key for Cryo corr: MET_Cryo, MET_CryoCone + outKey = "MET_CellOutCorr"+self.suffix + ) + + except: + mlog.error("could not get handle to METRefFinal Quit") + print traceback.format_exc() + return False + + # add METFinalTool to list of tools + theMETAlg.AlgTools+= [ theMETMuonFinal.getFullName() ] + theMETAlg.AlgTools+= [ theMETRefFinal.getFullName() ] + if self.plupSuppCorr == "STVF": + theMETAlg.AlgTools+= [ theMETCellOutSTVF.getFullName() ] + # add tools to alg + theMETAlg += theMETMuonFinal + theMETAlg += theMETRefFinal + if self.plupSuppCorr == "STVF": + theMETAlg += theMETCellOutSTVF + + #------------------------------------------------------------------------------------------------ + # add algorithm to the specified Sequence (this should always come at the end) + + mlog.info(" now adding to sequence") + self.sequence += theMETAlg + + return True + + +def make_METRefAlg(_suffix=''): + name = 'METRefAlg' + _suffix + cls = type (name, (METRefGetter_newplup,), {}) + cls.suffix = _suffix + cls.sequence = AlgSequence() + cls.ele_EgammaInputCollectionKey= "ElectronAODCollection" + cls.ele_noCut = False + cls.ele_isEM = PyAthena.egammaPID.ElectronIDMediumPP + cls.ele_EtCut = 10.0*GeV + cls.ele_calibType = "RefCalib" + + cls.gamma_EleInputCollectionKey = "ElectronAODCollection" + cls.gamma_EgammaInputCollectionKey= "PhotonAODCollection" + cls.gamma_EtCut = 10.0*GeV + cls.gamma_isEM = PyAthena.egammaPID.PhotonIDTight + cls.gamma_calibType = "EmScale" + cls.gamma_isEMMatch = PyAthena.egammaPID.ElectronIDMediumPP + cls.gamma_ElectronEtCutMatch = 10.0*GeV + + + cls.tau_doTauTool = True + cls.tau_TauInputCollectionKey = "TauRecContainer" + cls.tau_isTau = "BDTMedium_EleBDTMedium_MuonVeto" + cls.tau_calibType = "ExclRefCalib" + cls.tau_TauSignalConeSize = 0.3 + cls.tau_TauPtCut = 20.*GeV + cls.tau_RemoveResiduals = True + cls.tau_MinimumMETContribution = 0.5 + + cls.jet_JetInputCollectionKey = "AntiKt4LCTopoJets" + cls.jet_vxcontainerkey = "VxPrimaryCandidate" + cls.jet_UseCustomVxContainer = False + cls.jet_JetPtCut = 20.0*GeV + cls.jet_JetMaxPtCut = 1000000.0*GeV + cls.jet_ApplyJetScale = "Yes" + cls.jet_UseJetMomentForScale = True + cls.jet_JetMomentForScale = "LCJES" + cls.jet_ApplyJetJVF = "No" + cls.jet_JetMomentForJVF = "JVF" + cls.jet_calibType = "LocHad" + cls.jet_RemoveResiduals = True + cls.jet_MinimumMETContribution = 0.5 + + cls.jet_RunSoftJetsTool = True + cls.jet_SoftJetsInputCollectionKey = "AntiKt4LCTopoJets" + cls.jet_SoftJetsCalibType = "LocHad" + cls.jet_SoftJetsPtCut = 5.0*GeV + cls.jet_SoftJetsMaxPtCut = 20.0*GeV + cls.jet_ApplySoftJetsScale = "No" + cls.jet_SoftJetsUseJetMomentForScale = False + cls.jet_SoftJetsJetMomentForScale = "LCJES" + cls.jet_SoftJetsRemoveResiduals = True + cls.jet_SoftJetsMinimumMETContribution= 0.5 + + cls.cellout_vxcontainerkey = "VxPrimaryCandidate" + cls.cellout_calibType = "Eflow" + cls.cellout_trackType = "STTrack" + cls.cellout_pttrack = 150. + cls.cellout_JetInputCollectionKey = "AntiKt4LCTopoJets" + cls.photon_doPhotonTool = True + + cls.cryo_ApplyCorrection = "Off" + cls.muon_container = "StacoMuonCollection" + cls.muon_algorithm = "Staco" + cls.muon_isolationAlg = "dRJet" + + cls.plupSuppCorr = "Off" + cls.celloutCorrection = "Off" + return cls diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py new file mode 100644 index 0000000000000000000000000000000000000000..4639c0d18d159380bb6ca5f7ba299425a0637a59 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py @@ -0,0 +1,212 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# $Id: PhysicsD3PDProdFlags.py 531461 2012-12-20 21:43:15Z nedwards $ +# +# @file PhysicsD3PDMaker/python/PhysicsD3PDProdFlags.py +# @author scott snyder <snyder@bnl.gov> +# @date Jun, 2012 +# @brief Define flags and configuration settings used when making +# Physics D3PDs from production transforms. +# +# Any objects here with a name of the form Write*D3PD that derive +# from JobProperty are added to D3PDProdFlags. +# + + +from AthenaCommon.JobProperties import JobProperty + + +class WriteSMWZD3PD (JobProperty): + """Produce the SMWZ D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMWZ' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMWZD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMWZSOFTD3PD (JobProperty): + """Produce the SMWZ soft D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMWZSOFT' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMWZsoftD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMWENUD3PD (JobProperty): + """Produce the SMWENU D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMWENU' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMWENUD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMWENUJJD3PD (JobProperty): + """Produce the SMWENUJJ D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMWENUJJ' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMWENUJJD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMZEED3PD (JobProperty): + """Produce the SMZEE D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMZEE' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMZEED3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMDYEED3PD (JobProperty): + """Produce the SMDYEE D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMDYEE' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMDYEED3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMBKGED3PD (JobProperty): + """Produce the SMBKGE D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMBKGE' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMBKGED3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMWMUNUD3PD (JobProperty): + """Produce the SMWMUNU D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMWMUNU' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMWMUNUD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMWMUNUJJD3PD (JobProperty): + """Produce the SMWMUNUJJ D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMWMUNUJJ' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMWMUNUJJD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMZMUMUD3PD (JobProperty): + """Produce the SMZMUMU D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMZMUMU' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMZMUMUD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMDYMUMUD3PD (JobProperty): + """Produce the SMDYMUMU D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMDYMUMU' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMDYMUMUD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMBKGMUD3PD (JobProperty): + """Produce the SMBKGMU D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMBKGMU' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMBKGMUD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMDILEPD3PD (JobProperty): + """Produce the SMDILEP D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMDILEP' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMDILEPD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMTRILEPD3PD (JobProperty): + """Produce the SMTRILEP D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMTRILEP' + FileName = '' + isVirtual = False + #DPDMakerScript = "SMEWTrilepSkim/SMTRILEPD3PD_prodJobOFragment.py" + DPDMakerScript = "PhysicsD3PDMaker/SMTRILEPD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] + + +class WriteSMLIGHTD3PD (JobProperty): + """Produce the SMLIGHT D3PD.""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + StreamName = 'StreamNTUP_SMLIGHT' + FileName = '' + isVirtual = False + DPDMakerScript = "PhysicsD3PDMaker/SMLIGHTD3PD_prodJobOFragment.py" + TreeNames = ['physics'] + SubSteps = ['a2d', 'e2d'] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMTrilepD3PD.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMTrilepD3PD.py new file mode 100644 index 0000000000000000000000000000000000000000..f5ba0e498be09c5ae52ff37b8a2659e0e8a892c1 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMTrilepD3PD.py @@ -0,0 +1,744 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# $Id: SMTrilepD3PD.py 531461 2012-12-20 21:43:15Z nedwards $ +# +# @file PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMTrilepD3PD.py +# @author maarten boonekamp <maarten.boonekamp@cea.fr> +# @date Sep, 2009 +# @brief Construct a Standard Model WZ physics D3PD. +# + + +import D3PDMakerCoreComps +from D3PDMakerCoreComps.resolveSGKey import testSGKey + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr + +# event + +from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject +from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig + +# eletron/photon + +from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject +from egammaD3PDMaker.GSFElectronD3PDObject import GSFElectronD3PDObject +from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject +from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject + +# muons + +from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject +from MuonD3PDMaker.MuonSegmentD3PDObject import MuonSegmentD3PDObject +from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject + +# jet + +from JetD3PDMaker.JetD3PDObject import JetD3PDObject + +# tau + +from TauD3PDMaker.TauD3PDObject import TauD3PDObject +from TauD3PDMaker.makeTrackFilterAlg import makeTrackFilterAlg + +# calo + +from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject +from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject +from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject +from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject +from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject +from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject +from CaloD3PDMaker.EMClusterD3PDObject import EMClusterD3PDObject +from CaloD3PDMaker.makeClusterFilter import makeClusterFilter + +# baseline track config + +from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags + +TrackD3PDFlags.doTruth = True +TrackD3PDFlags.storeDetailedTruth = False +TrackD3PDFlags.storeDiagonalCovarianceAsErrors = True +TrackD3PDFlags.storeHitTruthMatching = True +TrackD3PDFlags.storePixelHitsOnTrack = False +TrackD3PDFlags.storePixelHolesOnTrack = False +TrackD3PDFlags.storePixelOutliersOnTrack = False +TrackD3PDFlags.storeSCTHitsOnTrack = False +TrackD3PDFlags.storeSCTHolesOnTrack = False +TrackD3PDFlags.storeSCTOutliersOnTrack = False +TrackD3PDFlags.storeTRTHitsOnTrack = False +TrackD3PDFlags.storeTRTHolesOnTrack = False +TrackD3PDFlags.storeTRTOutliersOnTrack = False +TrackD3PDFlags.storeTrackFitQuality = True +TrackD3PDFlags.storeTrackInfo = False +TrackD3PDFlags.storeTrackMomentum = True +TrackD3PDFlags.storeTrackPredictionAtBLayer = False +TrackD3PDFlags.storeTrackSummary = True +TrackD3PDFlags.storeTrackSummary.IDOutliers = True +TrackD3PDFlags.storeTrackSummary.PixelInfoPlus = True +TrackD3PDFlags.storeTrackSummary.SCTInfoPlus = True +TrackD3PDFlags.storeTrackSummary.TRTInfoPlus = True +TrackD3PDFlags.trackParametersAtBeamSpotLevelOfDetails = 0 +TrackD3PDFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 0 +TrackD3PDFlags.trackParametersAtPrimaryVertexLevelOfDetails = 1 + +from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject + +# PV config + +TrackD3PDFlags.storeVertexFitQuality = True +TrackD3PDFlags.storeVertexKinematics = True +TrackD3PDFlags.storeVertexPurity = False +TrackD3PDFlags.storeVertexTrackAssociation = False +TrackD3PDFlags.storeVertexTrackIndexAssociation = True +TrackD3PDFlags.vertexPositionLevelOfDetails = 2 + +from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject + +# BeamSpot / MinBias + +from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject + +# MET + +from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags +from MissingETD3PDMaker.MissingETD3PDObject import * +from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import * + +MissingETD3PDMakerFlags.doCellOutEflow=True + +# Trigger + +from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject +from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata +from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject +#from TrigEgammaD3PDMaker.EFElectronD3PDObject import EFElectronD3PDObject +from TrigEgammaD3PDMaker.TrigEgammaD3PD import TrigEgammaD3PDObjects +from TrigMuonD3PDMaker.TrigMuonD3PD import TrigMuonD3PDObjects +#from D3PDMakerCoreComps.D3PDObject import make_Void_D3PDObject +#from TrigMuonD3PDMaker.MuonFeatureD3PDObject import MuonFeatureD3PDObject +#from TrigMuonD3PDMaker.CombinedMuonFeatureD3PDObject import CombinedMuonFeatureD3PDObject +#from TrigMuonD3PDMaker.TrigMuonEFInfoD3PDObject import TrigMuonEFInfoD3PDObject +#from TriggerD3PDMaker.TrigRoiDescD3PDObject import TrigRoiDescD3PDObject +#from TriggerD3PDMaker.TrigNaviD3PDObject import \ + #ChainEntryD3PDObject, CombLinksD3PDObjects + + +from RecExConfig.RecFlags import rec +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + + +def _args (level, name, kwin, **kw): + kw = kw.copy() + kw['level'] = level + for (k, v) in kwin.items(): + if k.startswith (name + '_'): + kw[k[len(name)+1:]] = v + return kw + + +def SMTrilepD3PD (alg = None, + #fileName = 'smtrilep.root', + tuplename = 'physics', + #streamname = 'NTUP_SMTRILEP', + stdElectronContainer = 'None', + gsfElectronContainer = 'None', + stacoMuonContainer = 'None', + muidMuonContainer = 'None', + caloMuonContainer = 'None', + thirdMuonContainer = 'None', + photonContainer = 'None', + jetContainer = 'None', + jetLC4Container = 'None', + clusterContainer = 'None', + tauContainer = 'None', + trackContainer = 'None', + addHadronicRecoil = False, + **kw): + + + preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + + # perform recoil calculation + if addHadronicRecoil: + import HadronicRecoil.Configurables as hrc + preseq = hrc.add_hadronic_recoil_filters(preseq) + + + # configure the D3PD + if not alg: + from AthenaCommon.JobProperties import jobproperties + prodFlags = jobproperties.D3PDProdFlags + from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + fileName = buildFileName( prodFlags.WriteSMTRILEPD3PD ) + streamName = prodFlags.WriteSMTRILEPD3PD.StreamName + + alg = MSMgr.NewRootStream(StreamName = streamname, FileName = fileName, TreeName = tuplename) + + + alg += EventInfoD3PDObject (**_args (10, 'EventInfo', kw)) + alg += LArCollisionTimeD3PDObject (**_args (10, 'LArCollisionTime', kw)) + + from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata + addBunchStructureMetadata (alg) + + # Electron/Photon blocks + electron_excludes = [ + #'EMTrackFit', + #'EMTrackFitDetailsBrem', + #'EMTrackFitDetailsRefit', + 'EMTrackFitDetailsRefitCov', + #'TopoClusterIsolationCones', + 'UDTopoCones', 'Rings', 'TrackIsoIP', + 'ElecDiscrim','TraversedMaterial', 'TrkCovDiag','TrkCovOffDiag', + 'TrackSummaryPID','UnrefitTrk', 'ElectronPointingVariables','MVAIso', + 'IsIso','ElectronClusterQuantities' ] + + + if stdElectronContainer != 'None': + alg += ElectronD3PDObject (**_args (10, 'Electron', kw, + sgkey = stdElectronContainer, + prefix = 'el_', + exclude = electron_excludes, + allowMissing = True )) + + if (gsfElectronContainer != 'None') and testSGKey ('ElectronContainer', gsfElectronContainer): + alg += GSFElectronD3PDObject (**_args (1, 'GSFElectron', kw, + sgkey = gsfElectronContainer, + prefix = 'el_gsf_', + exclude = electron_excludes, + allowMissing = True )) + + D3PDMakerFlags.DoPAU = False + if photonContainer != 'None': + alg += PhotonD3PDObject (**_args (0, 'Photon', kw, + sgkey = photonContainer, + prefix = 'ph_', + exclude = ['OQRecalc'], + allowMissing = True )) + + # Muon blocks + + # ... add the scattering significance filler - to be removed when added in the MuonD3PDMaker + if not MuonD3PDObject.allBlocknames().has_key("MuonScatteringAngleSignificance"): + from AthenaCommon.AppMgr import ToolSvc + muonScatteringSigTool=None + if hasattr(ToolSvc, "MuonScatteringSigTool"): + muonScatteringSigTool=ToolSvc.MuonScatteringSigTool + from JetTagD3PDMaker import MuonScatteringAngleSignificanceFillerTool + MuonD3PDObject.defineBlock (100, "MuonScatteringAngleSignificance", + MuonScatteringAngleSignificanceFillerTool, + ScatteringSigTool=muonScatteringSigTool) + + std_muon_excludes = ['EFCBInfo', 'EFMGInfo', 'EFMEInfo', 'L2CBInfo', 'L1Info', 'MuonTimingFillerTool', 'Likelihood', 'MuonTimingFillerTool', 'PrimaryTrackDiagonalCovarianceAtPV', 'PrimaryTrackOffDiagonalCovarianceAtPV', 'IDTrackDiagonalCovarianceAtPV','IDTrackOffDiagonalCovarianceAtPV','METrackDiagonalCovarianceAtPV','METrackOffDiagonalCovarianceAtPV','TrkCovDiag','TrkCovOffDiag'] + calo_muon_excludes = ['EFCBInfo', 'EFMGInfo', 'EFMEInfo', 'L2CBInfo', 'L1Info', 'MuonTimingFillerTool', 'Likelihood', 'MuonTimingFillerTool', 'PrimaryTrackDiagonalCovarianceAtPV', 'PrimaryTrackOffDiagonalCovarianceAtPV', 'IDTrackDiagonalCovarianceAtPV','IDTrackOffDiagonalCovarianceAtPV','METrackDiagonalCovarianceAtPV','METrackOffDiagonalCovarianceAtPV','TrkCovDiag','TrkCovOffDiag', 'MGTrackDetails', 'MuGirlTrackBasics', 'CBTrackDetails', 'CombinedTrackBasics', 'MuonSpectrometerHitSummary'] + + if stacoMuonContainer != 'None': + alg += MuonD3PDObject (**_args (10, 'StacoMuon', kw, + sgkey=stacoMuonContainer, + prefix='mu_staco_', + #include = ['EFCBInfoIndex', 'EFMGInfoIndex', 'EFMEInfoIndex', + #'MuonScatteringAngleSignificance'], + exclude = std_muon_excludes, + allowMissing = True )) + + if muidMuonContainer != 'None': + alg += MuonD3PDObject (**_args (10, 'MuidMuon', kw, + sgkey=muidMuonContainer, + prefix='mu_muid_', + exclude = std_muon_excludes, + allowMissing = True )) + + if thirdMuonContainer != 'None': + alg += MuonD3PDObject (**_args (10, 'ThirdMuon', kw, + sgkey=thirdMuonContainer, + prefix='mu_', + exclude = std_muon_excludes, + allowMissing = True )) + + if caloMuonContainer != 'None': + alg += MuonD3PDObject (**_args (10, 'CaloMuon', kw, + sgkey=caloMuonContainer, + prefix='mu_calo_', + exclude = calo_muon_excludes, + allowMissing = True )) + + # Jet block + + from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags + from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys + + if jetContainer != 'None': + alg += JetD3PDObject (**_args ( 3, 'AK4TopoEMJet', kw, + sgkey=jetContainer, + allowMissing=True, + prefix='jet_AntiKt4TopoEM_', + JetVertexFraction_FromUD=True, + JetVertexFraction_FillFullJVF=True, + include = [ JetTagD3PDKeys.BTagWeightsBlockName(), + JetTagD3PDKeys.TruthInfoBlockName() ] )) + + if jetLC4Container != 'None': + alg += JetD3PDObject (**_args ( 3, 'AK4LCJet', kw, + sgkey=jetContainer, + allowMissing=True, + prefix='jet_AntiKt4LCTopo_', + JetVertexFraction_FromUD=True, + JetVertexFraction_FillFullJVF=True, + include = [ JetTagD3PDKeys.BTagWeightsBlockName(), + JetTagD3PDKeys.TruthInfoBlockName() ] )) + + + # Tau block + + if tauContainer != 'None': + alg += TauD3PDObject (**_args ( 0, 'Tau', kw, + allowMissing=True, + sgkey=tauContainer )) + + + # HF overlap removal (ALPGEN) + + from TopInputsD3PDMaker.HforD3PDObject import HforD3PDObject + alg += HforD3PDObject(**_args (0, 'HforInfo', kw)) + + + # MET blocks + # a whole mess to remove x,y components separately for all flavours + + alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, + exclude=['MET_Base','MET_Base0','MET_Truth', + 'MET_RefFinal_Comps','MET_RefFinal_Regions', + 'MET_LocHadTopo_Comps','MET_LocHadTopo_Regions', + 'MET_CellOut_Comps','MET_CellOut_Regions', + 'MET_Calib', + 'MET_CorrTopo', + 'MET_Cryo', + 'MET_CryoCone', + 'MET_Final', + 'MET_LocHadTopoObj', + 'MET_Muid', + 'MET_Muid_Spectro', + 'MET_Muid_Track', + 'MET_MuonBoy', + 'MET_MuonBoy_Spectro', + 'MET_MuonBoy_Track', + 'MET_MuonMuid', + 'MET_Muon', + 'MET_Muon_Isol_Muid', + 'MET_Muon_Isol_Staco', + 'MET_Muon_NonIsol_Muid', + 'MET_Muon_NonIsol_Staco', + 'MET_Muon_Total_Muid', + 'MET_Muon_Total_Staco', + 'MET_RefEle_Comps','MET_RefEle_Regions', + 'MET_RefEle_em_Comps','MET_RefEle_em_Regions', + 'MET_RefGamma_Comps','MET_RefGamma_Regions', + 'MET_RefGamma_em_Comps','MET_RefGamma_em_Regions', + 'MET_RefJet_Comps','MET_RefJet_Regions', + 'MET_RefJet_em_Comps','MET_RefJet_em_Regions', + 'MET_RefMuon_Comps','MET_RefMuon_Regions', + 'MET_RefMuon_Muid_Comps','MET_RefMuon_Muid_Regions', + 'MET_RefMuon_Staco_Comps','MET_RefMuon_Staco_Regions', + 'MET_RefMuon_Track_Muid_Comps','MET_RefMuon_Track_Muid_Regions', + 'MET_RefMuon_Track_Staco_Comps','MET_RefMuon_Track_Staco_Regions', + 'MET_RefMuon_Track_em_Comps','MET_RefMuon_Track_em_Regions', + 'MET_RefMuon_Track_Comps','MET_RefMuon_Track_Regions', + 'MET_RefMuon_em_Comps','MET_RefMuon_em_Regions', + 'MET_RefTau_Comps','MET_RefTau_Regions', + 'MET_RefTau_em_Comps','MET_RefTau_em_Regions', + 'MET_SoftJets_Comps','MET_SoftJets_Regions', + 'MET_SoftJets_em_Comps','MET_SoftJets_em_Regions', + 'MET_Topo', + 'MET_TopoObj_Comps','MET_TopoObj_Regions', + 'MET_Track_Comps','MET_Track_Regions', + 'MET_Comps', + 'MET_Track_Weights','MET_Cluster_Weights', + 'MET_Regions','MET_Composition'], + allowMissing=True )) + + + # HadronicRecoil blocks + + if addHadronicRecoil: + + alg += ElectronD3PDObject(0, sgkey = 'HR_selectedElectrons', prefix = 'hr_el_',allowMissing=True ) + alg += MuonD3PDObject( 0, sgkey = 'HR_selectedMuons', prefix = 'hr_mu_', allowMissing=True ) + + # ... DR = 0.15 + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_15', prefix = 'hr_roughRecoil_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_15', prefix = 'hr_ueCorrection_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_15', prefix = 'hr_corrRecoil_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_15', prefix = 'hr_MET_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_Eflow_15', prefix = 'hr_roughRecoil_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_Eflow_15', prefix = 'hr_ueCorrection_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_Eflow_15', prefix = 'hr_corrRecoil_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_Eflow_15', prefix = 'hr_MET_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_track_15", prefix = "hr_roughRecoil_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_track_15", prefix = "hr_ueCorrection_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_track_15", prefix = "hr_corrRecoil_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "MET_HR_track_15", prefix = "hr_MET_track_15", + exclude=['MET_Regions','MET_Comps'] ) + + # ... DR = 0.20 + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_20', prefix = 'hr_roughRecoil_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_20', prefix = 'hr_ueCorrection_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_20', prefix = 'hr_corrRecoil_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_20', prefix = 'hr_MET_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_track_20', prefix = 'hr_roughRecoil_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_track_20', prefix = 'hr_ueCorrection_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_track_20', prefix = 'hr_corrRecoil_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_track_20', prefix = 'hr_MET_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_clusNoTrack_20', prefix = 'hr_roughRecoil_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_clusNoTrack_20', prefix = 'hr_ueCorrection_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_clusNoTrack_20', prefix = 'hr_corrRecoil_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_clusNoTrack_20', prefix = 'hr_MET_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_Eflow_20', prefix = 'hr_roughRecoil_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_Eflow_20', prefix = 'hr_ueCorrection_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_Eflow_20', prefix = 'hr_corrRecoil_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_Eflow_20', prefix = 'hr_MET_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + # ... DR = 0.25 + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_25', prefix = 'hr_roughRecoil_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_25', prefix = 'hr_ueCorrection_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_25', prefix = 'hr_corrRecoil_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_25', prefix = 'hr_MET_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_Eflow_25', prefix = 'hr_roughRecoil_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_Eflow_25', prefix = 'hr_ueCorrection_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_Eflow_25', prefix = 'hr_corrRecoil_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_Eflow_25', prefix = 'hr_MET_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_track_25", prefix = "hr_roughRecoil_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_track_25", prefix = "hr_ueCorrection_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_track_25", prefix = "hr_corrRecoil_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "MET_HR_track_25", prefix = "hr_MET_track_25", + exclude=['MET_Regions','MET_Comps'] ) + + + # HR using truth leptons + if rec.doTruth(): + + ## ... DR = 0.15 + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_15", + prefix = "hr_roughRecoil_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_15", + prefix = "hr_ueCorrection_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_15", + prefix = "hr_corrRecoil_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_15", + prefix = "hr_MET_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_15", + prefix = "hr_roughRecoil_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_15", + prefix = "hr_ueCorrection_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_15", + prefix = "hr_corrRecoil_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_15", + prefix = "hr_MET_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_15", + prefix = "hr_roughRecoil_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_15", + prefix = "hr_ueCorrection_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_15", + prefix = "hr_corrRecoil_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_15", + prefix = "hr_MET_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + + ## ... DR = 0.20 + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_20", + prefix = "hr_roughRecoil_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_20", + prefix = "hr_ueCorrection_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_20", + prefix = "hr_corrRecoil_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_20", + prefix = "hr_MET_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_20", + prefix = "hr_roughRecoil_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_20", + prefix = "hr_ueCorrection_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_20", + prefix = "hr_corrRecoil_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_20", + prefix = "hr_MET_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_20", + prefix = "hr_roughRecoil_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_20", + prefix = "hr_ueCorrection_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_20", + prefix = "hr_corrRecoil_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_20", + prefix = "hr_MET_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + + ## ... DR = 0.25 + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_25", + prefix = "hr_roughRecoil_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_25", + prefix = "hr_ueCorrection_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_25", + prefix = "hr_corrRecoil_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_25", + prefix = "hr_MET_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_25", + prefix = "hr_roughRecoil_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_25", + prefix = "hr_ueCorrection_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_25", + prefix = "hr_corrRecoil_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_25", + prefix = "hr_MET_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_25", + prefix = "hr_roughRecoil_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_25", + prefix = "hr_ueCorrection_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_25", + prefix = "hr_corrRecoil_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_25", + prefix = "hr_MET_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + + + # Cluster block + + # ... all clusters, very low LOD + + if clusterContainer != 'None': + alg += ClusterD3PDObject (**_args ( 0, 'Clusters', kw, + sgkey = clusterContainer, + exclude='SamplingBasics', + allowMissing=True )) + + + # Track block + + # ... good tracks only (nSCT>=6; no pt cut) + + if trackContainer != 'None': + alg += TrackParticleD3PDObject (**_args ( 3, 'Tracks', kw, + sgkey = trackContainer, + label = 'trk', + prefix = 'trk_', + allowMissing=True )) + + + # Primary vertex block - May be missing in single-beam data. + + alg += PrimaryVertexD3PDObject (**_args (1, 'PrimaryVertex', kw, + sgkey = D3PDMakerFlags.VertexSGKey(), + prefix = 'vxp_', + allowMissing=True )) + + # Truth + + if rec.doTruth(): + + from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject + from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject + alg += TruthMuonD3PDObject (**_args ( 2, 'TruthMuon', kw)) + + from AthenaCommon.AppMgr import ToolSvc + from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool + + # ... remove empty GenEvents + + smlightGenEvtFilterTool = D3PD__GenObjectsFilterTool( "smlightGenEvtFilterTool" ) + ToolSvc += smlightGenEvtFilterTool + smlightGenEvtFilterTool.RemoveDummyEvents = True + smlightGenEvtFilterTool.RemoveInTimePileUp = True + smlightGenEvtFilterTool.Remove2BCPileUp = True + smlightGenEvtFilterTool.Remove800nsPileUp = True + smlightGenEvtFilterTool.RemoveCavernBkg = True + smlightGenEvtFilterTool.RemoveEmptyEvents = True + + from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject + alg += GenEventD3PDObject (**_args ( 0, 'GenEvent', kw, filter = smlightGenEvtFilterTool )) + + + + # ... leptonic W/Z truth information + + smlightLepWZFilterTool = D3PD__GenObjectsFilterTool( "smlightLepWZFilterTool" ) + ToolSvc += smlightLepWZFilterTool + + smlightLepWZFilterTool.RemoveInTimePileUp = True + smlightLepWZFilterTool.Remove2BCPileUp = True + smlightLepWZFilterTool.Remove800nsPileUp = True + smlightLepWZFilterTool.RemoveCavernBkg = True + smlightLepWZFilterTool.RemoveEmptyEvents = True + smlightLepWZFilterTool.RemoveDummyEvents = True + smlightLepWZFilterTool.RemoveUnrequestedParticles=True + smlightLepWZFilterTool.KeepLeptonicWZBosons=True + smlightLepWZFilterTool.KeepLeptonicWZBosonDecayChains=True + smlightLepWZFilterTool.KeepLeptonicWZBosonsParents=True + + from TruthD3PDMaker.GenParticleD3PDObject import GenParticleD3PDObject + alg += GenParticleD3PDObject( **_args(10, "lepwzgenparticle", kw, prefix='mclepwzpart_', + filter = smlightLepWZFilterTool, + label = "LepWZTruthD3PDObject", + exclude = ["GenPartProdVertexAssoc","GenPartDecayVertexAssoc"], + GenParticle_WriteMotherType=False, + GenParticle_WriteMotherBarcode=False, + GenPartMotherAssoc_target="LepWZTruthD3PDObject", + GenPartChildAssoc_target="LepWZTruthD3PDObject" + ) + ) + + + if not rec.doTruth(): + alg += BeamSpotD3PDObject(10) + + + # Trigger + + if D3PDMakerFlags.DoTrigger(): + +# RedefineTriggerBits(alg, 'EF*') +# alg += SMTrilepTriggerBitsD3PDObject (**_args (10, 'SMTrilepTriggerBits', kw)) + + alg += TrigDecisionD3PDObject (**_args(10, 'TrigDecision', kw)) + addTrigConfMetadata(alg) + + # Bunch group info + + alg += BGCodeD3PDObject (**_args (2, 'BGCode', kw)) + + # Egamma and Mu + + TrigEgammaD3PDObjects (alg, 1) + TrigMuonD3PDObjects( alg, 1) + +# Event metadata + + alg.MetadataTools += [LBMetadataConfig()] + + if D3PDMakerFlags.FilterCollCand(): + from CaloD3PDMaker.CollisionFilterAlg import CollisionFilterAlg + alg.filterSeq += CollisionFilterAlg (tuplename + '_CollCandFilter') + + return alg diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZD3PD.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZD3PD.py new file mode 100644 index 0000000000000000000000000000000000000000..5ed2821431ad03def3d76325d012decdbe5ed0c2 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZD3PD.py @@ -0,0 +1,903 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + + + +# $Id: SMWZD3PD.py 566871 2013-10-23 21:04:01Z ssnyder $ +# +# @file PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZD3PD.py +# @author maarten boonekamp <maarten.boonekamp@cea.fr> +# @date Sep, 2009 +# @brief Construct a Standard Model WZ physics D3PD. +# + + +import D3PDMakerCoreComps +from D3PDMakerCoreComps.resolveSGKey import testSGKey + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr + +# event + +from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject +from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig + +### EventShape variables Bertrand +from QcdD3PDMaker.QcdEventShapeD3PDObject import EventShapeD3PDObject + +# eletron/photon + +from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject +from egammaD3PDMaker.GSFElectronD3PDObject import GSFElectronD3PDObject +from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject +from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject + +# muons + +from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject +from MuonD3PDMaker.MuonSegmentD3PDObject import MuonSegmentD3PDObject +from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject + +# jet + +from JetD3PDMaker.JetD3PDObject import JetD3PDObject + +# tau + +from TauD3PDMaker.TauD3PDObject import TauD3PDObject +from TauD3PDMaker.makeTrackFilterAlg import makeTrackFilterAlg + +# calo + +from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject +from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject +from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject +from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject +from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject +from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject +from CaloD3PDMaker.EMClusterD3PDObject import EMClusterD3PDObject +from CaloD3PDMaker.makeClusterFilter import makeClusterFilter + +# baseline track config + +from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags + +TrackD3PDFlags.doTruth = True +TrackD3PDFlags.storeDetailedTruth = False +TrackD3PDFlags.storeDiagonalCovarianceAsErrors = True +TrackD3PDFlags.storeHitTruthMatching = True +TrackD3PDFlags.storePixelHitsOnTrack = False +TrackD3PDFlags.storePixelHolesOnTrack = False +TrackD3PDFlags.storePixelOutliersOnTrack = False +TrackD3PDFlags.storeSCTHitsOnTrack = False +TrackD3PDFlags.storeSCTHolesOnTrack = False +TrackD3PDFlags.storeSCTOutliersOnTrack = False +TrackD3PDFlags.storeTRTHitsOnTrack = False +TrackD3PDFlags.storeTRTHolesOnTrack = False +TrackD3PDFlags.storeTRTOutliersOnTrack = False +TrackD3PDFlags.storeTrackFitQuality = True +TrackD3PDFlags.storeTrackInfo = False +TrackD3PDFlags.storeTrackMomentum = True +TrackD3PDFlags.storeTrackPredictionAtBLayer = False +TrackD3PDFlags.storeTrackSummary = True +TrackD3PDFlags.storeTrackSummary.IDOutliers = True +TrackD3PDFlags.storeTrackSummary.PixelInfoPlus = True +TrackD3PDFlags.storeTrackSummary.SCTInfoPlus = True +TrackD3PDFlags.storeTrackSummary.TRTInfoPlus = True +TrackD3PDFlags.trackParametersAtBeamSpotLevelOfDetails = 0 +TrackD3PDFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 0 +TrackD3PDFlags.trackParametersAtPrimaryVertexLevelOfDetails = 1 + +from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject + +# PV config + +TrackD3PDFlags.storeVertexFitQuality = True +TrackD3PDFlags.storeVertexKinematics = True +TrackD3PDFlags.storeVertexPurity = False +TrackD3PDFlags.storeVertexTrackAssociation = False +TrackD3PDFlags.storeVertexTrackIndexAssociation = True +TrackD3PDFlags.vertexPositionLevelOfDetails = 2 + +from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject + +# BeamSpot / MinBias + +from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject + +# MET + +from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags +from MissingETD3PDMaker.MissingETD3PDObject import * +from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import * +MissingETD3PDMakerFlags.doCellOutEflow=True +MissingETD3PDMakerFlags.METDefaultJetCollectionSGKey = 'AntiKt4LCTopoJets' +MissingETD3PDMakerFlags.METDefaultJetPrefix = "jet_AntiKt4LCTopo_MET_" + +# Trigger + +from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject +from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata +from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject +from TrigEgammaD3PDMaker.TrigEgammaD3PD import TrigEgammaD3PDObjects +from TrigMuonD3PDMaker.TrigMuonD3PD import TrigMuonD3PDObjects +from TriggerD3PDMaker.EnergySumROID3PDObject import EnergySumROID3PDObject +#from TrigMissingETD3PDMaker.TrigMETD3PDObject import TrigMETD3PDObject +from TrigMissingETD3PDMaker.TrigMETD3PD import TrigMETD3PDObjects +from PhysicsD3PDMaker.SMWZTriggerBitsD3PDObject import SMWZTriggerBitsD3PDObject + +from TrigBJetD3PDMaker.TrigBJetD3PD import TrigBJetD3PDObjects + + + +from RecExConfig.RecFlags import rec +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + + +def _args (level, name, kwin, **kw): + kw = kw.copy() + kw['level'] = level + for (k, v) in kwin.items(): + if k.startswith (name + '_'): + kw[k[len(name)+1:]] = v + return kw + + +def add_met1 (alg, cone, truthLep = False, add_pieces = []): + exc = ['MET_Regions','MET_Comps'] + tl_key = 'TruthLep_' if truthLep else '' + tl_pfx = 'trLep_' if truthLep else '' + key0 = 'RefinedRecoil_' if truthLep else 'MET_HR_' + + for piece in ['', 'Eflow_', 'track_'] + add_pieces: + key_suff = tl_key + piece + cone + pfx_suff = tl_pfx + piece + cone + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_" + key_suff, + prefix = "hr_roughRecoil_" + pfx_suff, + exclude= exc) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_" + key_suff, + prefix = "hr_ueCorrection_" + pfx_suff, + exclude= exc) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_" + key_suff, + prefix = "hr_corrRecoil_" + pfx_suff, + exclude=exc ) + alg += MissingETD3PDObject( 0, sgkey = key0 + key_suff, + prefix = "hr_MET_" + pfx_suff, + exclude=exc ) + + + return + +def add_met (alg): + ### adding HSG5 MET + from MissingET.METRefGetter_plup import * + + METRefAlg_HSG5 = make_METRefAlg(_suffix='_HSG5') + METRefAlg_HSG5.sequence = AlgSequence( D3PDMakerFlags.PreD3PDAlgSeqName() ) + METRefAlg_HSG5.jet_JetInputCollectionKey = "AntiKt4TopoEMJets" + METRefAlg_HSG5.jet_JetPtCut = 20.0*GeV + METRefAlg_HSG5.jet_ApplyJetScale = "No" + METRefAlg_HSG5.jet_UseJetMomentForScale = True + METRefAlg_HSG5.jet_JetMomentForScale = "EMJES" + METRefAlg_HSG5.jet_RunSoftJetsTool = False + METRefAlg_HSG5.jet_SoftJetsPtCut = 7.0*GeV + METRefAlg_HSG5.jet_SoftJetsMaxPtCut = 20.0*GeV + METRefAlg_HSG5.photon_doPhotonTool = False + METRefAlg_HSG5.tau_doTauTool = False + METRefAlg_HSG5.jet_SoftJetsCalibType = "EmScale" + METRefAlg_HSG5.jet_ApplySoftJetsScale = "No" + METRefAlg_HSG5.jet_calibType = "ExclRefCalib" + METRefAlg_HSG5.ele_calibType = "RefCalib" + METRefAlg_HSG5.gamma_calibType = "EmScale" + METRefAlg_HSG5.cellout_calibType = "Eflow" + METRefAlg_HSG5.tau_calibType = "EmScale" + METRefAlg_HSG5.cryo_ApplyCorrection = "Off" + METRefAlg_HSG5.muon_container = "MuidMuonCollection" + METRefAlg_HSG5.muon_algorithm = "Muid" + METRefAlg_HSG5.muon_isolationAlg = "dRJet" + # METRefAlg_HSG5.jet_ApplyJetJVF = "Yes" + # METRefAlg_HSG5.plupSuppCorr ='STVF' + # METRefAlg_HSG5.celloutCorrection ='STVF' + print METRefAlg_HSG5 + METRefAlg_HSG5() + + customMETs = ['MET_RefFinal', 'MET_RefGamma', 'MET_RefEle', 'MET_RefTau', 'MET_RefJet', + 'MET_CellOut', 'MET_Cryo', 'MET_SoftJets', + 'MET_RefJet_JVF', 'MET_RefJet_JVFCut', + 'MET_CellOut_Eflow_STVF', 'MET_CellOut_Eflow_JetArea', + 'MET_RefFinal_STVF' ] + + for custom in customMETs: + alg += MissingETD3PDObject (level=0, sgkey = custom+'_HSG5',prefix='MET_HSG5_'+custom[4:], + allowMissing=True) + + alg += MissingETCompositionD3PDObject ( level=4, sgkey = 'MET_RefComposition_HSG5', suffix='HSG5_', allowMissing =True, + jetSGKey='AntiKt4TopoEMJets', jetPrefix='jet_AntiKt4TopoEMJet_MET_') + + # adding STVF weights + # alg += MissingETCompositionD3PDObject ( level=4, + # sgkey = 'MET_RefComposition_HSG5', + # suffix='STVF_', + # allowMissing=True, + # jetSGKey='AntiKt4TopoEMJets', + # jetPrefix='jet_AntiKt4TopoEMJets_MET_') + # exclude = ['MET_Muid_Weights','MET_Muons_Weights'] + + # HadronicRecoil blocks + + alg += ElectronD3PDObject(0, sgkey = "HR_selectedElectrons", prefix = "hr_el_") + alg += MuonD3PDObject( 0, sgkey = "HR_selectedMuons", prefix = "hr_mu_" ) + + + add_met1 (alg, '15') + add_met1 (alg, '20', add_pieces = ['clusNoTrack_']) + add_met1 (alg, '25') + + + # HR using truth leptons + if rec.doTruth(): + add_met1 (alg, '15', True) + add_met1 (alg, '20', True) + add_met1 (alg, '25', True) + return + + +def SMWZD3PD (alg = None, + file = 'smwz.root', + tuplename = 'physics', + streamname = 'd3pdstream', + doSoftQCD = False, + doThirdMuonChain = True, + stdElectronContainer = D3PDMakerFlags.ElectronSGKey(), + gsfElectronContainer = D3PDMakerFlags.GSFElectronSGKey(), + muonContainer = 'None', # can be 'Muons' for third muon chain + stacoMuonContainer = 'StacoMuonCollection', + muidMuonContainer = 'MuidMuonCollection', + caloMuonContainer = 'CaloMuonCollection', + photonContainer = D3PDMakerFlags.PhotonSGKey(), + tauContainer = D3PDMakerFlags.TauSGKey(), + jetEM4Container = 'AntiKt4TopoEMJets', #Commented by Bertrand + jetEM6Container = 'AntiKt6TopoEMJets', + jetLC4Container = 'AntiKt4LCTopoJets', + jetLC6Container = 'AntiKt6LCTopoJets', + #jetEM4Container = 'AntiKt4TopoEMJetsReTagged', + #jetEM6Container = 'AntiKt6TopoEMJetsReTagged', + #jetLC4Container = 'AntiKt4LCTopoJetsReTagged', + #jetLC6Container = 'AntiKt6LCTopoJetsReTagged', + jetDetails = 3, # for the moment only level 2 and 3 are defined + METDetails = 3, # for the moment only level 2 and 3 are defined + **kw): + + if doThirdMuonChain and muonContainer == 'None': + muonContainer = 'Muons' + + # define associations + + if not PhotonD3PDObject.allBlocknames().has_key('RecoveryMatch'): + from PhotonD3PDMaker.PhotonRecoveryAssociation import PhotonRecoveryAssociation + if (stdElectronContainer != 'None'): + PhotonRecoveryAssoc = PhotonRecoveryAssociation(PhotonD3PDObject, + 'ElectronContainer', + stdElectronContainer, + prefix = 'el_', + blockname = 'RecoveryMatch', + target = 'ph_ElectronRecovered_') + + # define track and cluster filters + + preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + + if not hasattr( preseq, "GoodTracks" ): + filter1 = makeTrackFilterAlg(TracksName = D3PDMakerFlags.TrackSGKey(), + OutputTracksName='GoodTracks', + ptCut=0.,nSCTPix=4) + preseq += filter1 + + if not hasattr( preseq, "HighPtTracks" ): + filter2 = makeTrackFilterAlg(TracksName = D3PDMakerFlags.TrackSGKey(), + OutputTracksName='HighPtTracks', + ptCut=4000.,nSCTPix=4) + preseq += filter2 + + if not hasattr( preseq, "HighPtClusters" ): + filter3 = makeClusterFilter(InputName = D3PDMakerFlags.ClusterSGKey(), + OutputName = 'HighPtClusters', + ptCut=10000.) + preseq += filter3 + + if not hasattr( preseq, "HighPtEMClusters" ): + filter4 = makeClusterFilter(InputName = D3PDMakerFlags.EMTopoClusterSGKey(), + OutputName = 'HighPtEMClusters', + ptCut=10000.) + preseq += filter4 + + + # perform recoil calculation + + import HadronicRecoil.Configurables as hrc + preseq = hrc.add_hadronic_recoil_filters(preseq) + + + # beam background stuff + + from RecBackgroundAlgs.RecBackgroundAlgsConf import BeamBackgroundFiller + if not hasattr( preseq, "BeamBackgroundFiller" ): + BeamBackgroundFiller=BeamBackgroundFiller() + preseq += BeamBackgroundFiller + + + + # now configure the D3PD + + if not alg: + alg = MSMgr.NewRootStream(StreamName = streamname, FileName = file, TreeName = tuplename) + + + alg += EventInfoD3PDObject (**_args (10, 'EventInfo', kw)) + alg += LArCollisionTimeD3PDObject (**_args (10, 'LArCollisionTime', kw)) + + from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata + addBunchStructureMetadata (alg) + + from BackgroundD3PDMaker.BeamBackgroundD3PDObject import BeamBackgroundD3PDObject + from BackgroundD3PDMaker.BackgroundWordD3PDObject import BackgroundWordD3PDObject + alg += BackgroundWordD3PDObject (**_args(0, 'BkgWord', kw)) + alg += BeamBackgroundD3PDObject(1) + + + # Electron/Photon blocks + + if (stdElectronContainer != 'None'): + alg += ElectronD3PDObject (**_args (10, 'Electron', kw, sgkey = stdElectronContainer)) + + if (gsfElectronContainer != 'None') and testSGKey ('ElectronContainer', gsfElectronContainer): + alg += GSFElectronD3PDObject (**_args (10, 'GSFElectron', kw, + sgkey = gsfElectronContainer, + prefix = 'el_gsf_')) + + if (photonContainer != 'None'): + alg += PhotonD3PDObject (**_args (10, 'Photon', kw, sgkey = photonContainer)) + + + # Muon blocks + +### Third muon chain variables! + if (muonContainer != 'None'): + alg += MuonD3PDObject (**_args (10, 'Muon', kw, + sgkey=muonContainer, prefix='mu_', + include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", + "L2CBInfoIndex", "L1InfoIndex"], + exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], + allowMissing = True )) +### Third muon chain variables! + + if (muidMuonContainer != 'None'): + alg += MuonD3PDObject (**_args (10, 'MuidMuon', kw, + sgkey=muidMuonContainer, prefix='mu_muid_', + include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", + "L2CBInfoIndex", "L1InfoIndex"], + exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], + allowMissing = True )) + + if (stacoMuonContainer != 'None'): + alg += MuonD3PDObject (**_args (10, 'StacoMuon', kw, + sgkey=stacoMuonContainer, prefix='mu_staco_', + include = ["EFCBInfoIndex", "EFMGInfoIndex", "EFMEInfoIndex", + "L2CBInfoIndex", "L1InfoIndex"], + exclude = ["EFCBInfo", "EFMGInfo", "EFMEInfo", "L2CBInfo", "L1Info"], + allowMissing = True )) + + if (caloMuonContainer != 'None'): + alg += MuonD3PDObject (**_args (10, 'CaloMuon', kw, + sgkey=caloMuonContainer, prefix='mu_calo_', + include = ["MuonHitSummary", "Authors", "Likelihood", + "Isolation", "CaloEnergyLoss", "Quality"] )) + + # Tau block + + if (tauContainer != 'None'): + alg += TauD3PDObject (**_args ( 1, 'Tau', kw, sgkey = tauContainer)) + + + # Jet blocks + from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags + from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys + + ## add MSV target to the jetd3pd object properties + if not kw.has_key ('AK4TopoEMJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target'): + kw['AK4TopoEMJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target']= JetTagD3PDKeys.MSVVtxInfoInJetGetterLabel() + if not kw.has_key ('AK6TopoEMJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target'): + kw['AK6TopoEMJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target']= JetTagD3PDKeys.MSVVtxInfoInJetGetterLabel() + + ## add track index for IPInfoPlus + if not kw.has_key ('AK4TopoEMJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target'): + kw['AK4TopoEMJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" + if not kw.has_key ('AK6TopoEMJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target'): + kw['AK6TopoEMJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" + ## add track index for SVInfoPlus + if not kw.has_key ('AK4TopoEMJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target'): + kw['AK4TopoEMJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target']= "trk" + if not kw.has_key ('AK6TopoEMJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target'): + kw['AK6TopoEMJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target']= "trk" + ## add track index for SV0InfoPlus + if not kw.has_key ('AK4TopoEMJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target'): + kw['AK4TopoEMJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target']= "trk" + if not kw.has_key ('AK6TopoEMJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target'): + kw['AK6TopoEMJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target']= "trk" + + + ## add MSV target to the jetd3pd object properties + if not kw.has_key ('AK4LCTopoJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target'): + kw['AK4LCTopoJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target']= JetTagD3PDKeys.MSVVtxInfoInJetGetterLabel() + if not kw.has_key ('AK6LCTopoJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target'): + kw['AK6LCTopoJet_'+JetTagD3PDKeys.MultiSVInfoPlusMSVVtxAssocBlockName()+'_target']= JetTagD3PDKeys.MSVVtxInfoInJetGetterLabel() + + ## add track index for IPInfoPlus + if not kw.has_key ('AK4LCTopoJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target'): + kw['AK4LCTopoJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" + if not kw.has_key ('AK6LCTopoJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target'): + kw['AK6LCTopoJet_'+JetTagD3PDKeys.IPInfoPlusTrackAssocBlockName()+'_target']= "trk" + ## add track index for SVInfoPlus + if not kw.has_key ('AK4LCTopoJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target'): + kw['AK4LCTopoJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target']= "trk" + if not kw.has_key ('AK6LCTopoJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target'): + kw['AK6LCTopoJet_'+JetTagD3PDKeys.SVInfoPlusTrackAssocBlockName()+'_target']= "trk" + ## add track index for SV0InfoPlus + if not kw.has_key ('AK4LCTopoJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target'): + kw['AK4LCTopoJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target']= "trk" + if not kw.has_key ('AK6LCTopoJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target'): + kw['AK6LCTopoJet_'+JetTagD3PDKeys.SV0InfoPlusTrackAssocBlockName()+'_target']= "trk" + + if jetDetails == 3: + jetInclude = JetTagD3PDFlags.StdInfoInclude()+[JetTagD3PDKeys.MultiSVInfoPlusBlockName()] + jetInclude += [JetTagD3PDKeys.JetFitterCharmTagInfoBlockName(), JetTagD3PDKeys.JetFitterCharmInfoBaseBlockName()] + else: + jetInclude = [ JetTagD3PDKeys.BTagWeightsBlockName(), JetTagD3PDKeys.TruthInfoBlockName() ] + + + if (jetEM4Container != 'None'): + alg += JetD3PDObject (**_args ( 4, 'AK4TopoEMJet', kw, + sgkey=jetEM4Container, prefix='jet_AntiKt4TopoEM_', + include = jetInclude+['BeamBackground','ConstituentScale','TracksMoments'], + JetVertexFraction_FromUD=False, + JetVertexFraction_FillFullJVF=False, + allowMissing = True)) + + if (jetEM6Container != 'None'): + alg += JetD3PDObject (**_args ( 4, 'AK6TopoEMJet', kw, + sgkey=jetEM6Container, prefix='jet_AntiKt6TopoEM_', + include = jetInclude+['BeamBackground','ConstituentScale','TracksMoments'], + JetVertexFraction_FromUD=False, + JetVertexFraction_FillFullJVF=False, + allowMissing = True)) + + if (jetLC4Container != 'None'): + alg += JetD3PDObject (**_args ( 4, 'AK4LCTopoJet', kw, + sgkey=jetLC4Container, prefix='jet_AntiKt4LCTopo_', + include = jetInclude+['BeamBackground','ConstituentScale','TracksMoments'], + JetVertexFraction_FromUD=False, + JetVertexFraction_FillFullJVF=False, + allowMissing = True)) + + if (jetLC6Container != 'None'): + alg += JetD3PDObject (**_args ( 4, 'AK6LCTopoJet', kw, + sgkey=jetLC6Container, prefix='jet_AntiKt6LCTopo_', + include = jetInclude+['BeamBackground','ConstituentScale','TracksMoments'], + JetVertexFraction_FromUD=False, + JetVertexFraction_FillFullJVF=False, + allowMissing = True)) + + + ### add the MSV block + MSVJetCollections = [] + if (jetEM4Container != 'None'): + MSVJetCollections += [jetEM4Container] + if (jetEM6Container != 'None'): + MSVJetCollections += [jetEM6Container] + if (jetLC4Container != 'None'): + MSVJetCollections += [jetLC4Container] + if (jetLC6Container != 'None'): + MSVJetCollections += [jetLC6Container] + ### link multisv to tracks + if not kw.has_key ('msvvtxinfo_JetTag_JetMultiSVVtxAssoc_target'): + kw['msvvtxinfo_JetTag_JetMultiSVVtxAssoc_target']= "trk" + + from JetTagD3PDMaker.JetTagMSVVtxInJetD3PDObject import getJetTagMSVVtxInfoInJetD3PDObject + alg += getJetTagMSVVtxInfoInJetD3PDObject(**_args(1,"msvvtxinfo", kw, + jetCollections=MSVJetCollections) + ) + + from TopInputsD3PDMaker.HforD3PDObject import HforD3PDObject + alg += HforD3PDObject(**_args (0, 'HforInfo', kw)) + + + # MET blocks + # a whole mess to remove x,y components separately for all flavours + + if METDetails >= 3: + alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, + exclude=['MET_Base', 'MET_Base0', 'MET_Truth_Int', + 'MET_RefFinal_Comps','MET_Calib_Comps','MET_CellOut_Comps', + 'MET_CorrTopo_Comps','MET_Cryo_Comps','MET_CryoCone_Comps', + 'MET_Final_Comps','MET_LocHadTopo_Comps', + 'MET_LocHadTopoObj_Comps','MET_Muid_Comps', + 'MET_Muid_Spectro_Comps','MET_Muid_Track_Comps', + 'MET_MuonBoy_Comps','MET_MuonBoy_Spectro_Comps', + 'MET_MuonBoy_Track_Comps','MET_MuonMuid_Comps', + 'MET_Muon_Comps','MET_Muon_Isol_Muid_Comps', + 'MET_Muon_Isol_Staco_Comps','MET_Muon_NonIsol_Muid_Comps', + 'MET_Muon_NonIsol_Staco_Comps','MET_Muon_Total_Muid_Comps', + 'MET_Muon_Total_Staco_Comps','MET_RefEle_Comps', + 'MET_RefEle_em_Comps','MET_RefGamma_Comps', + 'MET_RefGamma_em_Comps','MET_RefJet_Comps', + 'MET_RefJet_em_Comps','MET_RefMuon_Comps', + 'MET_RefMuon_Muid_Comps','MET_RefMuon_Staco_Comps', + 'MET_RefMuon_Track_Muid_Comps','MET_RefMuon_Track_Staco_Comps', + 'MET_RefMuon_Track_em_Comps','MET_RefMuon_Track_Comps', + 'MET_RefMuon_em_Comps','MET_RefTau_Comps', + 'MET_RefTau_em_Comps','MET_SoftJets_Comps', + 'MET_SoftJets_em_Comps','MET_Topo_Comps', + 'MET_TopoObj_Comps','MET_Track_Comps','MET_Comps', + 'MET_Track_Weights','MET_Cluster_Weights'], + allowMissing=True)) + elif METDetails > 0: + alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, + exclude=['MET_Base','MET_Base0','MET_Truth', + 'MET_CellOut_Comps','MET_CellOut_Regions', + 'MET_CellOut_em_Comps','MET_CellOut_em_Regions', + 'MET_CellOut_Eflow_Comps','MET_CellOut_Eflow_Regions', + 'MET_Calib', + 'MET_CorrTopo', + 'MET_Cryo', + 'MET_CryoCone', + 'MET_Final', + 'MET_LocHadTopo_Comps', + 'MET_LocHadTopoObj', + 'MET_Muid', + 'MET_Muid_Spectro', + 'MET_Muid_Track', + 'MET_MuonBoy_Regions', + 'MET_MuonBoy_Spectro', + 'MET_MuonBoy_Track', + 'MET_MuonMuid', + 'MET_Muon', + 'MET_Muon_Isol_Muid', + 'MET_Muon_Isol_Staco', + 'MET_Muon_NonIsol_Muid', + 'MET_Muon_NonIsol_Staco', + 'MET_Muon_Total_Muid', + 'MET_Muon_Total_Staco', + 'MET_RefEle_Comps','MET_RefEle_Regions', + 'MET_RefEle_em_Comps','MET_RefEle_em_Regions', + 'MET_RefGamma_Comps','MET_RefGamma_Regions', + 'MET_RefGamma_em_Comps','MET_RefGamma_em_Regions', + 'MET_RefJet_Comps','MET_RefJet_Regions', + 'MET_RefJet_em_Comps','MET_RefJet_em_Regions', + 'MET_RefMuon_Comps','MET_RefMuon_Regions', + 'MET_RefMuon_Muid_Comps','MET_RefMuon_Muid_Regions', + 'MET_RefMuon_Staco_Comps','MET_RefMuon_Staco_Regions', + 'MET_RefMuon_Track_Muid_Comps','MET_RefMuon_Track_Muid_Regions', + 'MET_RefMuon_Track_Staco_Comps','MET_RefMuon_Track_Staco_Regions', + 'MET_RefMuon_Track_em_Comps','MET_RefMuon_Track_em_Regions', + 'MET_RefMuon_Track_Comps','MET_RefMuon_Track_Regions', + 'MET_RefMuon_em_Comps','MET_RefMuon_em_Regions', + 'MET_RefTau_Comps','MET_RefTau_Regions', + 'MET_RefTau_em_Comps','MET_RefTau_em_Regions', + 'MET_SoftJets_Comps','MET_SoftJets_Regions', + 'MET_SoftJets_em_Comps','MET_SoftJets_em_Regions', + 'MET_Topo', + 'MET_TopoObj_Comps','MET_TopoObj_Regions', + 'MET_Track_Comps','MET_Track_Regions', + 'MET_Track_Weights','MET_Cluster_Weights', + 'MET_Comps' + ], + allowMissing=True )) + + + if METDetails > 0: + add_met (alg) + + + # track and cluster blocks + + # ... all clusters, very low LOD + + alg += ClusterD3PDObject (**_args ( 0, 'Clusters1', kw, + exclude='SamplingBasics')) + + # ... higher LOD for pt>10 GeV + + alg += ClusterD3PDObject (**_args ( 2, 'Clusters2', kw, + sgkey = 'HighPtClusters', + prefix = 'clpt10_')) + + alg += ClusterD3PDObject (**_args ( 3, 'Clusters3', kw, + sgkey = 'HighPtEMClusters', + prefix = 'emclpt10_')) + + from TrackD3PDMaker.TrackD3PDObject import TrackD3PDObject + + # ... good tracks only (nSCT>3; no pt cut) + + # turn on detailed track info if writing SoftQCD version of D3PD + if doSoftQCD : + + from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags as softQcdFlags + + softQcdFlags.doTruth = True + softQcdFlags.storeDetailedTruth = False + softQcdFlags.storeDiagonalCovarianceAsErrors = True + softQcdFlags.storeHitTruthMatching = True + softQcdFlags.storePixelHitsOnTrack = False + softQcdFlags.storePixelHolesOnTrack = False + softQcdFlags.storePixelOutliersOnTrack = False + softQcdFlags.storeSCTHitsOnTrack = False + softQcdFlags.storeSCTHolesOnTrack = False + softQcdFlags.storeSCTOutliersOnTrack = False + softQcdFlags.storeTRTHitsOnTrack = False + softQcdFlags.storeTRTHolesOnTrack = False + softQcdFlags.storeTRTOutliersOnTrack = False + softQcdFlags.storeTrackFitQuality = True + softQcdFlags.storeTrackInfo = True + softQcdFlags.storeTrackMomentum = True + softQcdFlags.storeTrackPredictionAtBLayer = True + softQcdFlags.storeTrackSummary = True + softQcdFlags.trackParametersAtBeamSpotLevelOfDetails = 0 + softQcdFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 2 + softQcdFlags.trackParametersAtPrimaryVertexLevelOfDetails = 2 + + SoftQCDTrackParticleD3PDObject = TrackD3PDObject(_label='trk', + _prefix='trk_', + _sgkey='GoodTracks', + typeName='Rec::TrackParticleContainer', + truthMapKey='TrackParticleTruthCollection', + SGKeyForTruth=D3PDMakerFlags.TrackSGKey(), + flags=softQcdFlags) + + alg += SoftQCDTrackParticleD3PDObject(**_args ( 3, 'Tracks1', kw, + sgkey = 'GoodTracks', + label = 'trk', + prefix = 'trk_')) + + else : + + # ... use standard level of track info for 'GoodTracks' + + alg += TrackParticleD3PDObject (**_args ( 3, 'Tracks1', kw, + sgkey = 'GoodTracks', + label = 'trk', + prefix = 'trk_')) + + # ... high-pt tracks (nSCT>3; pt>5 GeV) + + from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags as highPtFlags + highPtFlags.doTruth = True + highPtFlags.storeDiagonalCovarianceAsErrors = True + highPtFlags.storeHitTruthMatching = True + highPtFlags.storePixelHitsOnTrack = False + highPtFlags.storePixelHolesOnTrack = False + highPtFlags.storePixelOutliersOnTrack = False + highPtFlags.storeSCTHitsOnTrack = False + highPtFlags.storeSCTHolesOnTrack = False + highPtFlags.storeSCTOutliersOnTrack = False + highPtFlags.storeTRTHitsOnTrack = False + highPtFlags.storeTRTHolesOnTrack = False + highPtFlags.storeTRTOutliersOnTrack = False + highPtFlags.storeTrackFitQuality = True + highPtFlags.storeTrackMomentum = True + highPtFlags.storeTrackSummary = True + highPtFlags.storeTrackSummary.IDOutliers = True + highPtFlags.storeTrackSummary.PixelInfoPlus = True + highPtFlags.storeTrackSummary.SCTInfoPlus = True + highPtFlags.storeTrackSummary.TRTInfoPlus = True + highPtFlags.storeTrackSummary.InfoPlus = True + highPtFlags.trackParametersAtBeamSpotLevelOfDetails = 0 + highPtFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 2 + highPtFlags.trackParametersAtPrimaryVertexLevelOfDetails = 3 + + HighPtTrackParticleD3PDObject = TrackD3PDObject(_label='trkpt4', + _prefix='trkpt4_', + _sgkey='HighPtTracks', + typeName='Rec::TrackParticleContainer', + truthMapKey='TrackParticleTruthCollection', + SGKeyForTruth=D3PDMakerFlags.TrackSGKey(), + flags=highPtFlags) + + alg += HighPtTrackParticleD3PDObject(**_args ( 3, 'Tracks2', kw, + sgkey = 'HighPtTracks', + label = 'trkpt4', + prefix = 'trkpt4_')) + + + # Primary vertex block - May be missing in single-beam data. + + alg += PrimaryVertexD3PDObject (**_args (1, 'PrimaryVertex', kw, + allowMissing = True, + sgkey = D3PDMakerFlags.VertexSGKey(), + prefix = 'vxp_')) + + # MBTS + + alg += MBTSD3PDObject (**_args (10, 'MBTS', kw)) + alg += MBTSTimeD3PDObject (**_args (10, 'MBTSTime', kw)) + alg += MBTSTriggerBitsD3PDObject (**_args (10, 'MBTSTriggerBits', kw)) + #alg += CollisionDecisionD3PDObject(**_args (10, 'CollisionDecision', kw)) + + + ### EventShape variables Bertrand + alg += EventShapeD3PDObject(**_args(0, 'rho', kw)) + + + # Truth + + if rec.doTruth(): + + from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject + alg += TruthParticleD3PDObject(**_args ( 1, 'TruthParticle', kw)) + + from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject + alg += TruthMuonD3PDObject (**_args ( 2, 'TruthMuon', kw)) + + + from AthenaCommon.AppMgr import ToolSvc + from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool + + # ... remove empty GenEvents + + smwzGenEvtFilterTool = D3PD__GenObjectsFilterTool( "smwzGenEvtFilterTool" ) + ToolSvc += smwzGenEvtFilterTool + smwzGenEvtFilterTool.RemoveDummyEvents = True + smwzGenEvtFilterTool.RemoveInTimePileUp = True + smwzGenEvtFilterTool.Remove2BCPileUp = True + smwzGenEvtFilterTool.Remove800nsPileUp = True + smwzGenEvtFilterTool.RemoveCavernBkg = True + smwzGenEvtFilterTool.RemoveEmptyEvents = True + + from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject + alg += GenEventD3PDObject (**_args ( 0, 'GenEvent', kw, filter = smwzGenEvtFilterTool )) + + + # ... TruthJets + if not testSGKey ('JetCollection', 'AntiKt6TruthJets'): + make_StandardJetGetter('AntiKt', 0.6, 'Truth') + + alg += JetD3PDObject (**_args ( 1, 'AK4TruthJet', kw, + sgkey='AntiKt4TruthJets',prefix='jet_AntiKt4Truth_', + allowMissing = True)) + alg += JetD3PDObject (**_args ( 1, 'AK6TruthJet', kw, + sgkey='AntiKt6TruthJets', prefix='jet_AntiKt6Truth_', + allowMissing = True)) + alg += JetD3PDObject (**_args ( 1, 'AK4TruthJetALL', kw, + sgkey='AntiKt4TruthJets_ALL', prefix='jet_AntiKt4TruthALL_', + allowMissing = True)) + alg += JetD3PDObject (**_args ( 1, 'AK6TruthJetALL', kw, + sgkey='AntiKt6TruthJets_ALL', prefix='jet_AntiKt6TruthALL_', + allowMissing = True)) + alg += JetD3PDObject (**_args ( 1, 'AK4TruthJetWZ', kw, + sgkey='AntiKt4TruthJets_WZ', prefix='jet_AntiKt4TruthWZ_', + allowMissing = True)) + alg += JetD3PDObject (**_args ( 1, 'AK6TruthJetWZ', kw, + sgkey='AntiKt6TruthJets_WZ', prefix='jet_AntiKt6TruthWZ_', + allowMissing = True)) + + + # ... heavy flavor truth information + + from AthenaCommon.AppMgr import ToolSvc + from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool + smwzhfGenVtxFilterTool = D3PD__GenObjectsFilterTool( "SMWZHFGenVtxFilterTool" ) + ToolSvc += smwzhfGenVtxFilterTool + + smwzhfGenVtxFilterTool.RemoveInTimePileUp = False + smwzhfGenVtxFilterTool.Remove2BCPileUp = True + smwzhfGenVtxFilterTool.Remove800nsPileUp = True + smwzhfGenVtxFilterTool.RemoveCavernBkg = True + smwzhfGenVtxFilterTool.RemoveEmptyEvents = True + smwzhfGenVtxFilterTool.RemoveDummyEvents = True + smwzhfGenVtxFilterTool.RemoveUnrequestedParticles=True + smwzhfGenVtxFilterTool.KeepBCHadrons=True + + from TruthD3PDMaker.GenVertexD3PDObject import GenVertexD3PDObject + alg += GenVertexD3PDObject( **_args(0, "hfgenvertex", kw, prefix='mchfvtx_', + filter = smwzhfGenVtxFilterTool ) + ) + + smwzhfGenPartFilterTool = D3PD__GenObjectsFilterTool( "SMWZHFGenPartFilterTool" ) + ToolSvc += smwzhfGenPartFilterTool + + smwzhfGenPartFilterTool.RemoveInTimePileUp = False + smwzhfGenPartFilterTool.Remove2BCPileUp = True + smwzhfGenPartFilterTool.Remove800nsPileUp = True + smwzhfGenPartFilterTool.RemoveCavernBkg = True + smwzhfGenPartFilterTool.RemoveEmptyEvents = True + smwzhfGenPartFilterTool.RemoveDummyEvents = True + smwzhfGenPartFilterTool.RemoveUnrequestedParticles=True + smwzhfGenPartFilterTool.KeepBCQuarks=True + smwzhfGenPartFilterTool.KeepBCQuarkAncestors=True + smwzhfGenPartFilterTool.KeepBCHadrons=True + smwzhfGenPartFilterTool.KeepBCHadronDecayChain=True + smwzhfGenPartFilterTool.BCHadronsDescendantsPtCut=200 + smwzhfGenPartFilterTool.BCHadronsDescendantsBarcodeCut=300000 + smwzhfGenPartFilterTool.BCHadronsDescendantsEtaCut=5 + + from TruthD3PDMaker.GenParticleD3PDObject import GenParticleD3PDObject + alg += GenParticleD3PDObject( **_args(10, "hfgenparticle", kw, prefix='mchfpart_', + filter = smwzhfGenPartFilterTool, + GenParticle_WriteMotherType=False, + GenParticle_WriteMotherBarcode=False + ) + ) + + # ... leptonic W/Z truth information + + smwzlepwzGenPartFilterTool = D3PD__GenObjectsFilterTool( "SMWZLepWZGenPartFilterTool" ) + ToolSvc += smwzlepwzGenPartFilterTool + + smwzlepwzGenPartFilterTool.RemoveInTimePileUp = True + smwzlepwzGenPartFilterTool.Remove2BCPileUp = True + smwzlepwzGenPartFilterTool.Remove800nsPileUp = True + smwzlepwzGenPartFilterTool.RemoveCavernBkg = True + smwzlepwzGenPartFilterTool.RemoveEmptyEvents = True + smwzlepwzGenPartFilterTool.RemoveDummyEvents = True + smwzlepwzGenPartFilterTool.RemoveUnrequestedParticles=True + smwzlepwzGenPartFilterTool.KeepLeptonicWZBosons=True + smwzlepwzGenPartFilterTool.KeepLeptonicWZBosonDecayChains=True + smwzlepwzGenPartFilterTool.KeepLeptonicWZBosonsParents=True + + from TruthD3PDMaker.GenParticleD3PDObject import GenParticleD3PDObject + alg += GenParticleD3PDObject( **_args(10, "lepwzgenparticle", kw, prefix='mclepwzpart_', + filter = smwzlepwzGenPartFilterTool, + label = "LepWZTruthD3PDObject", + exclude = ["GenPartProdVertexAssoc","GenPartDecayVertexAssoc"], + GenParticle_WriteMotherType=False, + GenParticle_WriteMotherBarcode=False, + GenPartMotherAssoc_target="LepWZTruthD3PDObject", + GenPartChildAssoc_target="LepWZTruthD3PDObject" + ) + ) + + + if not rec.doTruth(): + alg += BeamSpotD3PDObject(10) + + + # Trigger + + if D3PDMakerFlags.DoTrigger(): + + alg += SMWZTriggerBitsD3PDObject (**_args (10, 'SMWZTriggerBits', kw)) + + # Trigger Decision + metadata + + alg += TrigDecisionD3PDObject (**_args(10, 'TrigDecision', kw)) + addTrigConfMetadata(alg) + + # Bunch group info + + alg += BGCodeD3PDObject (**_args (2, 'BGCode', kw)) + + # Egamma and Mu + + TrigEgammaD3PDObjects (alg, 1) + TrigMuonD3PDObjects( alg, 1) + + # MET + + TrigMETD3PDObjects (alg, 2) + + # The BJet information: + + TrigBJetD3PDObjects(alg,10, False, False, True, True, True) + +# Event metadata + + alg.MetadataTools += [LBMetadataConfig()] + + if D3PDMakerFlags.FilterCollCand(): + from CaloD3PDMaker.CollisionFilterAlg import CollisionFilterAlg + alg.filterSeq += CollisionFilterAlg (tuplename + '_CollCandFilter') + + return alg diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightD3PD.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightD3PD.py new file mode 100644 index 0000000000000000000000000000000000000000..da1d468b02c9141daa35d5082d5a5464fb789276 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightD3PD.py @@ -0,0 +1,741 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# $Id: SMWZLightD3PD.py 521211 2012-10-11 23:42:23Z boonekam $ +# +# @file PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightD3PD.py +# @author maarten boonekamp <maarten.boonekamp@cea.fr> +# @date Sep, 2009 +# @brief Construct a Standard Model WZ physics D3PD. +# + + +import D3PDMakerCoreComps +from D3PDMakerCoreComps.resolveSGKey import testSGKey + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr + +# event + +from EventCommonD3PDMaker.EventInfoD3PDObject import EventInfoD3PDObject +from EventCommonD3PDMaker.LBMetadataConfig import LBMetadataConfig + +# eletron/photon + +from egammaD3PDMaker.ElectronD3PDObject import ElectronD3PDObject +from egammaD3PDMaker.GSFElectronD3PDObject import GSFElectronD3PDObject +from egammaD3PDMaker.PhotonD3PDObject import PhotonD3PDObject +from egammaD3PDMaker.egammaTriggerBitsD3PDObject import egammaTriggerBitsD3PDObject + +# muons + +from MuonD3PDMaker.MuonD3PDObject import MuonD3PDObject +from MuonD3PDMaker.MuonSegmentD3PDObject import MuonSegmentD3PDObject +from MuonD3PDMaker.MuonTriggerBitsD3PDObject import MuonTriggerBitsD3PDObject + +# jet + +from JetD3PDMaker.JetD3PDObject import JetD3PDObject + +# tau + +from TauD3PDMaker.TauD3PDObject import TauD3PDObject +from TauD3PDMaker.makeTrackFilterAlg import makeTrackFilterAlg + +# calo + +from CaloD3PDMaker.MBTSD3PDObject import MBTSD3PDObject +from CaloD3PDMaker.MBTSTimeD3PDObject import MBTSTimeD3PDObject +from CaloD3PDMaker.MBTSTriggerBitsD3PDObject import MBTSTriggerBitsD3PDObject +from CaloD3PDMaker.LArCollisionTimeD3PDObject import LArCollisionTimeD3PDObject +from CaloD3PDMaker.CollisionDecisionD3PDObject import CollisionDecisionD3PDObject +from CaloD3PDMaker.ClusterD3PDObject import ClusterD3PDObject +from CaloD3PDMaker.EMClusterD3PDObject import EMClusterD3PDObject +from CaloD3PDMaker.makeClusterFilter import makeClusterFilter + +# baseline track config + +from TrackD3PDMaker.TrackD3PDMakerFlags import TrackD3PDFlags + +TrackD3PDFlags.doTruth = True +TrackD3PDFlags.storeDetailedTruth = False +TrackD3PDFlags.storeDiagonalCovarianceAsErrors = True +TrackD3PDFlags.storeHitTruthMatching = True +TrackD3PDFlags.storePixelHitsOnTrack = False +TrackD3PDFlags.storePixelHolesOnTrack = False +TrackD3PDFlags.storePixelOutliersOnTrack = False +TrackD3PDFlags.storeSCTHitsOnTrack = False +TrackD3PDFlags.storeSCTHolesOnTrack = False +TrackD3PDFlags.storeSCTOutliersOnTrack = False +TrackD3PDFlags.storeTRTHitsOnTrack = False +TrackD3PDFlags.storeTRTHolesOnTrack = False +TrackD3PDFlags.storeTRTOutliersOnTrack = False +TrackD3PDFlags.storeTrackFitQuality = True +TrackD3PDFlags.storeTrackInfo = False +TrackD3PDFlags.storeTrackMomentum = True +TrackD3PDFlags.storeTrackPredictionAtBLayer = False +TrackD3PDFlags.storeTrackSummary = True +TrackD3PDFlags.storeTrackSummary.IDOutliers = True +TrackD3PDFlags.storeTrackSummary.PixelInfoPlus = True +TrackD3PDFlags.storeTrackSummary.SCTInfoPlus = True +TrackD3PDFlags.storeTrackSummary.TRTInfoPlus = True +TrackD3PDFlags.trackParametersAtBeamSpotLevelOfDetails = 0 +TrackD3PDFlags.trackParametersAtGlobalPerigeeLevelOfDetails = 0 +TrackD3PDFlags.trackParametersAtPrimaryVertexLevelOfDetails = 1 + +from TrackD3PDMaker.TrackD3PDObject import TrackParticleD3PDObject + +# PV config + +TrackD3PDFlags.storeVertexFitQuality = True +TrackD3PDFlags.storeVertexKinematics = True +TrackD3PDFlags.storeVertexPurity = False +TrackD3PDFlags.storeVertexTrackAssociation = False +TrackD3PDFlags.storeVertexTrackIndexAssociation = True +TrackD3PDFlags.vertexPositionLevelOfDetails = 2 + +from TrackD3PDMaker.VertexD3PDObject import PrimaryVertexD3PDObject + +# BeamSpot / MinBias + +from TrackD3PDMaker.BeamSpotD3PDObject import BeamSpotD3PDObject + +# MET + +from MissingETD3PDMaker.MissingETD3PDMakerFlags import MissingETD3PDMakerFlags +from MissingETD3PDMaker.MissingETD3PDObject import * +from MissingETD3PDMaker.MissingETD3PDTriggerBitsObject import * + +MissingETD3PDMakerFlags.doCellOutEflow=True + +# Trigger + +from TriggerD3PDMaker.TrigDecisionD3PDObject import TrigDecisionD3PDObject +from TriggerD3PDMaker.TrigConfMetadata import addTrigConfMetadata +from TriggerD3PDMaker.BGCodeD3PDObject import BGCodeD3PDObject + +from TrigEgammaD3PDMaker.EFElectronD3PDObject import EFElectronD3PDObject +from TrigEgammaD3PDMaker.EFPhotonD3PDObject import EFPhotonD3PDObject + +from TrigMuonD3PDMaker.TrigMuonEFInfoD3PDObject import TrigMuonEFInfoD3PDObject + +from TriggerD3PDMaker.EnergySumROID3PDObject import EnergySumROID3PDObject +from TrigMissingETD3PDMaker.TrigMETD3PDObject import TrigMETD3PDObject + +from PhysicsD3PDMaker.SMWZLightTriggerBitsD3PDObject import SMWZLightTriggerBitsD3PDObject + + +from RecExConfig.RecFlags import rec +from AthenaCommon.AlgSequence import AlgSequence +topSequence = AlgSequence() + + +def _args (level, name, kwin, **kw): + kw = kw.copy() + kw['level'] = level + for (k, v) in kwin.items(): + if k.startswith (name + '_'): + kw[k[len(name)+1:]] = v + return kw + + +def SMWZLightD3PD (alg = None, + file = 'smlight.root', + tuplename = 'physics', + streamname = 'd3pdstream', + stdElectronContainer = 'None', + gsfElectronContainer = 'None', + stacoMuonContainer = 'None', + muidMuonContainer = 'None', + photonContainer = 'None', + jetContainer = 'None', + clusterContainer = 'None', + tauContainer = 'None', + trackContainer = 'None', + **kw): + + + preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + + # perform recoil calculation + + import HadronicRecoil.Configurables as hrc + preseq = hrc.add_hadronic_recoil_filters(preseq) + + + # configure the D3PD + + if not alg: + alg = MSMgr.NewRootStream(StreamName = streamname, FileName = file, TreeName = tuplename) + + + alg += EventInfoD3PDObject (**_args (10, 'EventInfo', kw)) + alg += LArCollisionTimeD3PDObject (**_args (10, 'LArCollisionTime', kw)) + + from TriggerD3PDMaker.BunchStructureMetadata import addBunchStructureMetadata + addBunchStructureMetadata (alg) + + + # Electron/Photon blocks + + if stdElectronContainer != 'None': + alg += ElectronD3PDObject (**_args (10, 'Electron', kw, + sgkey = stdElectronContainer, + prefix = 'el_', + exclude = ['EMTrackFit','EMTrackFitDetailsBrem', + 'EMTrackFitDetailsRefit', + 'EMTrackFitDetailsRefitCov'], + allowMissing = True )) + + if (gsfElectronContainer != 'None') and testSGKey ('ElectronContainer', gsfElectronContainer): + alg += GSFElectronD3PDObject (**_args (1, 'GSFElectron', kw, + sgkey = gsfElectronContainer, + prefix = 'el_gsf_', + exclude = ['EMTrackFit','EMTrackFitDetailsBrem', + 'EMTrackFitDetailsRefit', + 'EMTrackFitDetailsRefitCov'], + allowMissing = True )) + + D3PDMakerFlags.DoPAU = False + if photonContainer != 'None': + alg += PhotonD3PDObject (**_args (10, 'Photon', kw, + sgkey = photonContainer, + prefix = 'ph_', + exclude = ['OQRecalc'], + allowMissing = True )) + + + # Muon blocks + + # ... add the scattering significance filler - to be removed when added in the MuonD3PDMaker + if not MuonD3PDObject.allBlocknames().has_key("MuonScatteringAngleSignificance"): + from AthenaCommon.AppMgr import ToolSvc + muonScatteringSigTool=None + if hasattr(ToolSvc, "MuonScatteringSigTool"): + muonScatteringSigTool=ToolSvc.MuonScatteringSigTool + from JetTagD3PDMaker import MuonScatteringAngleSignificanceFillerTool + MuonD3PDObject.defineBlock (100, "MuonScatteringAngleSignificance", + MuonScatteringAngleSignificanceFillerTool, + ScatteringSigTool=muonScatteringSigTool) + + if stacoMuonContainer != 'None': + alg += MuonD3PDObject (**_args (10, 'StacoMuon', kw, + sgkey=stacoMuonContainer, + prefix='mu_staco_', + include = ['EFCBInfoIndex', 'EFMGInfoIndex', 'EFMEInfoIndex', + 'MuonScatteringAngleSignificance'], + exclude = ['EFCBInfo', 'EFMGInfo', 'EFMEInfo', + 'L2CBInfo', 'L1Info', + 'MuonTimingFillerTool'], + allowMissing = True )) + + if muidMuonContainer != 'None': + alg += MuonD3PDObject (**_args (10, 'MuidMuon', kw, + sgkey=muidMuonContainer, + prefix='mu_muid_', + include = ['EFCBInfoIndex', 'EFMGInfoIndex', 'EFMEInfoIndex', + 'MuonScatteringAngleSignificance'], + exclude = ['EFCBInfo', 'EFMGInfo', 'EFMEInfo', + 'L2CBInfo', 'L1Info', + 'MuonTimingFillerTool'], + allowMissing = True )) + + # Jet block + + from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags + from JetTagD3PDMaker.JetTagD3PDMakerKeys import JetTagD3PDKeys + + if jetContainer != 'None': + alg += JetD3PDObject (**_args ( 3, 'AK4TopoEMJet', kw, + sgkey=jetContainer, + allowMissing=True, + prefix='jet_AntiKt4TopoEM_', + JetVertexFraction_FromUD=True, + JetVertexFraction_FillFullJVF=True, + include = [ JetTagD3PDKeys.BTagWeightsBlockName(), + JetTagD3PDKeys.TruthInfoBlockName() ] )) + + + # Tau block + + if tauContainer != 'None': + alg += TauD3PDObject (**_args ( 0, 'Tau', kw, + allowMissing=True, + sgkey=tauContainer )) + + + # HF overlap removal (ALPGEN) + + from TopInputsD3PDMaker.HforD3PDObject import HforD3PDObject + alg += HforD3PDObject(**_args (0, 'HforInfo', kw)) + + + # MET blocks + # a whole mess to remove x,y components separately for all flavours + + alg += MissingETD3PDObject (**_args (10, 'MissingET', kw, + exclude=['MET_Base','MET_Base0','MET_Truth', + 'MET_RefFinal_Comps','MET_RefFinal_Regions', + 'MET_LocHadTopo_Comps','MET_LocHadTopo_Regions', + 'MET_CellOut_Comps','MET_CellOut_Regions', + 'MET_Calib', + 'MET_CorrTopo', + 'MET_Cryo', + 'MET_CryoCone', + 'MET_Final', + 'MET_LocHadTopoObj', + 'MET_Muid', + 'MET_Muid_Spectro', + 'MET_Muid_Track', + 'MET_MuonBoy', + 'MET_MuonBoy_Spectro', + 'MET_MuonBoy_Track', + 'MET_MuonMuid', + 'MET_Muon', + 'MET_Muon_Isol_Muid', + 'MET_Muon_Isol_Staco', + 'MET_Muon_NonIsol_Muid', + 'MET_Muon_NonIsol_Staco', + 'MET_Muon_Total_Muid', + 'MET_Muon_Total_Staco', + 'MET_RefEle_Comps','MET_RefEle_Regions', + 'MET_RefEle_em_Comps','MET_RefEle_em_Regions', + 'MET_RefGamma_Comps','MET_RefGamma_Regions', + 'MET_RefGamma_em_Comps','MET_RefGamma_em_Regions', + 'MET_RefJet_Comps','MET_RefJet_Regions', + 'MET_RefJet_em_Comps','MET_RefJet_em_Regions', + 'MET_RefMuon_Comps','MET_RefMuon_Regions', + 'MET_RefMuon_Muid_Comps','MET_RefMuon_Muid_Regions', + 'MET_RefMuon_Staco_Comps','MET_RefMuon_Staco_Regions', + 'MET_RefMuon_Track_Muid_Comps','MET_RefMuon_Track_Muid_Regions', + 'MET_RefMuon_Track_Staco_Comps','MET_RefMuon_Track_Staco_Regions', + 'MET_RefMuon_Track_em_Comps','MET_RefMuon_Track_em_Regions', + 'MET_RefMuon_Track_Comps','MET_RefMuon_Track_Regions', + 'MET_RefMuon_em_Comps','MET_RefMuon_em_Regions', + 'MET_RefTau_Comps','MET_RefTau_Regions', + 'MET_RefTau_em_Comps','MET_RefTau_em_Regions', + 'MET_SoftJets_Comps','MET_SoftJets_Regions', + 'MET_SoftJets_em_Comps','MET_SoftJets_em_Regions', + 'MET_Topo', + 'MET_TopoObj_Comps','MET_TopoObj_Regions', + 'MET_Track_Comps','MET_Track_Regions', + 'MET_Comps', + 'MET_Track_Weights','MET_Cluster_Weights', + 'MET_Regions','MET_Composition'], + allowMissing=True )) + + + # HadronicRecoil blocks + + alg += ElectronD3PDObject(0, sgkey = 'HR_selectedElectrons', prefix = 'hr_el_',allowMissing=True ) + alg += MuonD3PDObject( 0, sgkey = 'HR_selectedMuons', prefix = 'hr_mu_', allowMissing=True ) + + # ... DR = 0.15 + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_15', prefix = 'hr_roughRecoil_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_15', prefix = 'hr_ueCorrection_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_15', prefix = 'hr_corrRecoil_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_15', prefix = 'hr_MET_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_Eflow_15', prefix = 'hr_roughRecoil_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_Eflow_15', prefix = 'hr_ueCorrection_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_Eflow_15', prefix = 'hr_corrRecoil_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_Eflow_15', prefix = 'hr_MET_Eflow_15', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_track_15", prefix = "hr_roughRecoil_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_track_15", prefix = "hr_ueCorrection_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_track_15", prefix = "hr_corrRecoil_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "MET_HR_track_15", prefix = "hr_MET_track_15", + exclude=['MET_Regions','MET_Comps'] ) + + # ... DR = 0.20 + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_20', prefix = 'hr_roughRecoil_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_20', prefix = 'hr_ueCorrection_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_20', prefix = 'hr_corrRecoil_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_20', prefix = 'hr_MET_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_track_20', prefix = 'hr_roughRecoil_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_track_20', prefix = 'hr_ueCorrection_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_track_20', prefix = 'hr_corrRecoil_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_track_20', prefix = 'hr_MET_track_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_clusNoTrack_20', prefix = 'hr_roughRecoil_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_clusNoTrack_20', prefix = 'hr_ueCorrection_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_clusNoTrack_20', prefix = 'hr_corrRecoil_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_clusNoTrack_20', prefix = 'hr_MET_clusNoTrack_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_Eflow_20', prefix = 'hr_roughRecoil_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_Eflow_20', prefix = 'hr_ueCorrection_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_Eflow_20', prefix = 'hr_corrRecoil_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_Eflow_20', prefix = 'hr_MET_Eflow_20', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + # ... DR = 0.25 + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_25', prefix = 'hr_roughRecoil_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_25', prefix = 'hr_ueCorrection_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_25', prefix = 'hr_corrRecoil_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_25', prefix = 'hr_MET_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = 'RoughRecoil_Eflow_25', prefix = 'hr_roughRecoil_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'ueCorrection_Eflow_25', prefix = 'hr_ueCorrection_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'RefinedRecoil_Eflow_25', prefix = 'hr_corrRecoil_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + alg += MissingETD3PDObject( 0, sgkey = 'MET_HR_Eflow_25', prefix = 'hr_MET_Eflow_25', + exclude=['MET_Regions','MET_Comps'], + allowMissing=True ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_track_25", prefix = "hr_roughRecoil_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_track_25", prefix = "hr_ueCorrection_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_track_25", prefix = "hr_corrRecoil_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "MET_HR_track_25", prefix = "hr_MET_track_25", + exclude=['MET_Regions','MET_Comps'] ) + + + # HR using truth leptons + if rec.doTruth(): + + ## ... DR = 0.15 + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_15", + prefix = "hr_roughRecoil_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_15", + prefix = "hr_ueCorrection_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_15", + prefix = "hr_corrRecoil_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_15", + prefix = "hr_MET_trLep_15", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_15", + prefix = "hr_roughRecoil_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_15", + prefix = "hr_ueCorrection_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_15", + prefix = "hr_corrRecoil_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_15", + prefix = "hr_MET_trLep_Eflow_15", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_15", + prefix = "hr_roughRecoil_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_15", + prefix = "hr_ueCorrection_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_15", + prefix = "hr_corrRecoil_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_15", + prefix = "hr_MET_trLep_track_15", + exclude=['MET_Regions','MET_Comps'] ) + + ## ... DR = 0.20 + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_20", + prefix = "hr_roughRecoil_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_20", + prefix = "hr_ueCorrection_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_20", + prefix = "hr_corrRecoil_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_20", + prefix = "hr_MET_trLep_20", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_20", + prefix = "hr_roughRecoil_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_20", + prefix = "hr_ueCorrection_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_20", + prefix = "hr_corrRecoil_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_20", + prefix = "hr_MET_trLep_Eflow_20", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_20", + prefix = "hr_roughRecoil_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_20", + prefix = "hr_ueCorrection_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_20", + prefix = "hr_corrRecoil_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_20", + prefix = "hr_MET_trLep_track_20", + exclude=['MET_Regions','MET_Comps'] ) + + ## ... DR = 0.25 + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_25", + prefix = "hr_roughRecoil_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_25", + prefix = "hr_ueCorrection_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_25", + prefix = "hr_corrRecoil_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_25", + prefix = "hr_MET_trLep_25", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_Eflow_25", + prefix = "hr_roughRecoil_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_Eflow_25", + prefix = "hr_ueCorrection_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_25", + prefix = "hr_corrRecoil_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_Eflow_25", + prefix = "hr_MET_trLep_Eflow_25", + exclude=['MET_Regions','MET_Comps'] ) + + alg += MissingETD3PDObject( 0, sgkey = "RoughRecoil_TruthLep_track_25", + prefix = "hr_roughRecoil_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "ueCorrection_TruthLep_track_25", + prefix = "hr_ueCorrection_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_25", + prefix = "hr_corrRecoil_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + alg += MissingETD3PDObject( 0, sgkey = "RefinedRecoil_TruthLep_track_25", + prefix = "hr_MET_trLep_track_25", + exclude=['MET_Regions','MET_Comps'] ) + + + # Cluster block + + # ... all clusters, very low LOD + + if clusterContainer != 'None': + alg += ClusterD3PDObject (**_args ( 0, 'Clusters', kw, + sgkey = clusterContainer, + exclude='SamplingBasics', + allowMissing=True )) + + + # Track block + + # ... good tracks only (nSCT>=6; no pt cut) + + if trackContainer != 'None': + alg += TrackParticleD3PDObject (**_args ( 3, 'Tracks', kw, + sgkey = trackContainer, + label = 'trk', + prefix = 'trk_', + allowMissing=True )) + + + # Primary vertex block - May be missing in single-beam data. + + alg += PrimaryVertexD3PDObject (**_args (1, 'PrimaryVertex', kw, + sgkey = D3PDMakerFlags.VertexSGKey(), + prefix = 'vxp_', + allowMissing=True )) + + # Truth + + if rec.doTruth(): + + from TruthD3PDMaker.TruthParticleD3PDObject import TruthParticleD3PDObject + from MuonD3PDMaker.TruthMuonD3PDObject import TruthMuonD3PDObject + alg += TruthMuonD3PDObject (**_args ( 2, 'TruthMuon', kw)) + + from AthenaCommon.AppMgr import ToolSvc + from TruthD3PDAnalysis.TruthD3PDAnalysisConf import D3PD__GenObjectsFilterTool + + # ... remove empty GenEvents + + smlightGenEvtFilterTool = D3PD__GenObjectsFilterTool( "smlightGenEvtFilterTool" ) + ToolSvc += smlightGenEvtFilterTool + smlightGenEvtFilterTool.RemoveDummyEvents = True + smlightGenEvtFilterTool.RemoveInTimePileUp = True + smlightGenEvtFilterTool.Remove2BCPileUp = True + smlightGenEvtFilterTool.Remove800nsPileUp = True + smlightGenEvtFilterTool.RemoveCavernBkg = True + smlightGenEvtFilterTool.RemoveEmptyEvents = True + + from TruthD3PDMaker.GenEventD3PDObject import GenEventD3PDObject + alg += GenEventD3PDObject (**_args ( 0, 'GenEvent', kw, filter = smlightGenEvtFilterTool )) + + + + # ... leptonic W/Z truth information + + smlightLepWZFilterTool = D3PD__GenObjectsFilterTool( "smlightLepWZFilterTool" ) + ToolSvc += smlightLepWZFilterTool + + smlightLepWZFilterTool.RemoveInTimePileUp = True + smlightLepWZFilterTool.Remove2BCPileUp = True + smlightLepWZFilterTool.Remove800nsPileUp = True + smlightLepWZFilterTool.RemoveCavernBkg = True + smlightLepWZFilterTool.RemoveEmptyEvents = True + smlightLepWZFilterTool.RemoveDummyEvents = True + smlightLepWZFilterTool.RemoveUnrequestedParticles=True + smlightLepWZFilterTool.KeepLeptonicWZBosons=True + smlightLepWZFilterTool.KeepLeptonicWZBosonDecayChains=True + smlightLepWZFilterTool.KeepLeptonicWZBosonsParents=True + + from TruthD3PDMaker.GenParticleD3PDObject import GenParticleD3PDObject + alg += GenParticleD3PDObject( **_args(10, "lepwzgenparticle", kw, prefix='mclepwzpart_', + filter = smlightLepWZFilterTool, + label = "LepWZTruthD3PDObject", + exclude = ["GenPartProdVertexAssoc","GenPartDecayVertexAssoc"], + GenParticle_WriteMotherType=False, + GenParticle_WriteMotherBarcode=False, + GenPartMotherAssoc_target="LepWZTruthD3PDObject", + GenPartChildAssoc_target="LepWZTruthD3PDObject" + ) + ) + + + if not rec.doTruth(): + alg += BeamSpotD3PDObject(10) + + + # Trigger + + if D3PDMakerFlags.DoTrigger(): + +# RedefineTriggerBits(alg, 'EF*') +# alg += SMWZLightTriggerBitsD3PDObject (**_args (10, 'SMWZLightTriggerBits', kw)) + + # metadata + + addTrigConfMetadata(alg) + + # Bunch group info + + alg += BGCodeD3PDObject (**_args (2, 'BGCode', kw)) + + # Egamma EF information + + alg += EFElectronD3PDObject(0, name='trig_EF_el_', + sgkey='HLT_egamma_Electrons,HLT_egamma', + prefix='trig_EF_el_', + exclude=['Author','IsEM','IsEMCuts'], + include=['Triggers'], + allowMissing = True) + +# alg += EFPhotonD3PDObject(0, name='trig_EF_ph_', +# sgkey='HLT_egamma_Photons,HLT_egamma', +# prefix='trig_EF_ph_', +# exclude=['Author','Conversion0','IsEM','IsEMCuts'], +# include=['Triggers'], +# allowMissing = True) + + # Muon EF information + + alg += TrigMuonEFInfoD3PDObject(0, + include=['Decision'], + exclude=['TrackDetails','SpectrometerTrackBasics','ExtrapolatedTrackBasics'], + allowMissing = True) + + alg += TrigMuonEFInfoD3PDObject(0, + name = "trig_EF_trigmugirl_", + sgkey = "HLT_eMuonEFInfo", + prefix = "trig_EF_trigmugirl_", + exclude=['TrackDetails','SpectrometerTrackBasics','ExtrapolatedTrackBasics'], + include=['Decision'], + allowMissing = True) + + # MET EF information + +# alg += TrigMETD3PDObject(**_args ( 0, 'TrigMETEF', kw, +# prefix = "trig_EF_met_", +# sgkey = "HLT_TrigEFMissingET" )) + + +# Event metadata + + alg.MetadataTools += [LBMetadataConfig()] + + if D3PDMakerFlags.FilterCollCand(): + from CaloD3PDMaker.CollisionFilterAlg import CollisionFilterAlg + alg.filterSeq += CollisionFilterAlg (tuplename + '_CollCandFilter') + + return alg diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py new file mode 100644 index 0000000000000000000000000000000000000000..985138e55689509e33097704954e0a6a22ee4500 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py @@ -0,0 +1,52 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# $Id: SMWZLightTriggerBitsD3PDObject.py 467769 2011-11-11 22:36:30Z boonekam $ +# +# @file PhysicsD3PDMaker/python/SMWZLightTriggerBitsD3PDObject.py +# @author Haifeng Li <Haifeng.Li@cern.ch> +# @date May, 2010 +# @brief Define trigger bit blocks for SMWZ +# + + + +import D3PDMakerCoreComps +import TriggerD3PDMaker +from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits +from D3PDMakerCoreComps.D3PDObject import D3PDObject +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +# +# The maker function. +# We don't get any input from SG (directly). +# +def makeSMWZLightTriggerBitsD3PDObject (name, + prefix, + object_name, + getter = None, + sgkey = ''): + + return D3PDMakerCoreComps.VoidObjFillerTool (name, + Prefix = prefix + ) + +# Create the object type. +SMWZLightTriggerBitsD3PDObject = \ + D3PDObject (makeSMWZLightTriggerBitsD3PDObject, + default_name = 'SMWZLightTriggerBitsFiller') + + +###### +# Define blocks. + +if D3PDMakerFlags.DoTrigger(): + + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_e*']) + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_2e*']) + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_g*']) + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_2g*']) + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_mu*']) + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_2mu*']) + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_xe*']) + defineTriggerBits (SMWZLightTriggerBitsD3PDObject, 0, ['EF_xs*']) + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py new file mode 100644 index 0000000000000000000000000000000000000000..5d15b0c8a1810fb994f4207f71972eec62cfef31 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py @@ -0,0 +1,72 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + +# $Id$ +# +# @file PhysicsD3PDMaker/python/SMWZTriggerBitsD3PDObject.py +# @author Haifeng Li <Haifeng.Li@cern.ch> +# @date May, 2010 +# @brief Define trigger bit blocks for SMWZ +# + + + +import D3PDMakerCoreComps +import TriggerD3PDMaker +from TriggerD3PDMaker.defineTriggerBits import defineTriggerBits +from D3PDMakerCoreComps.D3PDObject import D3PDObject +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +# +# The maker function. +# We don't get any input from SG (directly). +# +def makeSMWZTriggerBitsD3PDObject (name, + prefix, + object_name, + getter = None, + sgkey = ''): + + return D3PDMakerCoreComps.VoidObjFillerTool (name, + Prefix = prefix + ) + +# Create the object type. +SMWZTriggerBitsD3PDObject = \ + D3PDObject (makeSMWZTriggerBitsD3PDObject, + default_name = 'SMWZTriggerBitsFiller') + + +###### +# Define blocks. + +if D3PDMakerFlags.DoTrigger(): + + defineTriggerBits (SMWZTriggerBitsD3PDObject, 0, + ['EF_.*']) + + ##bjet bits + defineTriggerBits (SMWZTriggerBitsD3PDObject, 0, + [ "L1_J10", + "L1_JE100", + "L1_JE140", + "L1_2J10_J50", + "L1_3J15", + "L1_3J20", + "L1_4J10", + "L1_4J15", + # Level 2 + "L2_2b10_medium_L1JE100" , + "L2_2b10_medium_L1JE140" , + "L2_2b15_medium_3L1J15" , + "L2_2b20_medium_3L1J20" , + "L2_2b10_medium_4L1J10" , + "L2_2b10_medium_L1_2J10J50", + "L2_3b10_loose_4L1J10", + "L2_3b15_loose_4L1J15", + # Event Filter + 'EF_b*', + 'EF_2b*', + 'EF_3b*' + ]) + + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/__init__.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..74583d364ec2ca794156596c7254d9b234a940c6 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/python/__init__.py @@ -0,0 +1,2 @@ +# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/AODToSMWZD3PD.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/AODToSMWZD3PD.py new file mode 100644 index 0000000000000000000000000000000000000000..b4a96912e3d0f7b776d06039074f8d8954285f20 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/AODToSMWZD3PD.py @@ -0,0 +1,49 @@ +# $Id: AODToSMWZD3PD.py 352577 2011-03-17 18:14:25Z boonekam $ +# +# @file D3PDMakerConfig/share/AODToSMWZD3PD.py +# @author scott snyder <snyder@bnl.gov> +# @date Aug, 2009 +# @brief Example for building an egamma D3PD from an AOD. +# + + +###################################################################3 +# Define the input file here. +# + +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags +athenaCommonFlags.FilesInput= ["AOD.pool.root"] + + +###################################################################3 +# Define the output file here. +# + +if not globals().get('tupleFileOutput'): + tupleFileOutput = 'smwz.root' + +from D3PDMakerConfig.D3PDProdFlags import prodFlags +prodFlags.WriteSMWZD3PD = True +prodFlags.WriteSMWZD3PD.FileName = tupleFileOutput +prodFlags.WriteSMWZD3PD.lock() + +###################################################################3 +# Define other job options here. +# + +athenaCommonFlags.EvtMax = -1 + +# Example of changing D3PD maker flags. +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +#D3PDMakerFlags.DoTrigger = False + + +################################################################### +# Configure RecExCommon. +# + +from RecExConfig.RecFlags import rec +rec.DPDMakerScripts.append( "PhysicsD3PDMaker/SMWZD3PD_prodJobOFragment.py" ) +rec.doCBNT.set_Value_and_Lock( False ) +rec.doWriteTAG.set_Value_and_Lock( False ) +include( "RecExCommon/RecExCommon_topOptions.py" ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/AODToSMWZsoftD3PD.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/AODToSMWZsoftD3PD.py new file mode 100644 index 0000000000000000000000000000000000000000..8d127eb5f0d143b3739eedad58a4d622fec7e304 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/AODToSMWZsoftD3PD.py @@ -0,0 +1,50 @@ +# $Id: AODToSMWZsoftD3PD.py 438707 2011-05-24 07:34:00Z boonekam $ +# +# @file D3PDMakerConfig/share/AODToSMWZD3PD.py +# @author scott snyder <snyder@bnl.gov> +# @date Aug, 2009 +# @brief Example for building an egamma D3PD from an AOD. +# + + +###################################################################3 +# Define the input file here. +# + +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags +athenaCommonFlags.FilesInput= ["AOD.pool.root"] + + +###################################################################3 +# Define the output file here. +# + +if not globals().get('tupleFileOutput'): + tupleFileOutput = 'smwz.root' + +from D3PDMakerConfig.D3PDProdFlags import prodFlags +prodFlags.WriteSMWZSOFTD3PD = True +prodFlags.WriteSMWZSOFTD3PD.FileName = tupleFileOutput +prodFlags.WriteSMWZSOFTD3PD.lock() + + +###################################################################3 +# Define other job options here. +# + +athenaCommonFlags.EvtMax = -1 + +# Example of changing D3PD maker flags. +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +#D3PDMakerFlags.DoTrigger = False + + +################################################################### +# Configure RecExCommon. +# + +from RecExConfig.RecFlags import rec +rec.DPDMakerScripts.append( "PhysicsD3PDMaker/SMWZsoftD3PD_prodJobOFragment.py" ) +rec.doCBNT.set_Value_and_Lock( False ) +rec.doWriteTAG.set_Value_and_Lock( False ) +include( "RecExCommon/RecExCommon_topOptions.py" ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/ElectronSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/ElectronSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..549eeaedf77ee114114510022efaf29ea7fd2ea8 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/ElectronSelector.py @@ -0,0 +1,42 @@ +include.block( "PhysicsD3PDMaker/ElectronSelector.py" ) + +import PyUtils.RootUtils as ru +ROOT = ru.import_root() +import PyCintex +PyCintex.loadDictionary('egammaEnumsDict') +from ROOT import egammaPID +from ROOT import egammaParameters + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDElectronSelector +from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDElectronSelector( "SMWZ_HighPtElectronFilter", + inputCollection = 'ElectronAODCollection', + outputCollection = 'HighPtElectrons', + etMin = 20.0*Units.GeV, + clusterEtaMin = -2.5, + clusterEtaMax = 2.5, + electronID = egammaPID.ElectronIDLoosePP, + minNumberPassed = 1 + ) + +from RecExConfig.RecAlgsFlags import recAlgs +if recAlgs.doEgammaBremReco(): + gsfElectronContainer = 'HighPtGSFElectrons' + preseq += D2PDElectronSelector( "SMWZ_HighPtGSFElectronFilter", + inputCollection = 'GSFElectronAODCollection', + outputCollection = 'HighPtGSFElectrons', + etMin = 20.0*Units.GeV, + clusterEtaMin = -2.5, + clusterEtaMax = 2.5, + electronID = egammaPID.ElectronIDLoosePP, + minNumberPassed = 1 + ) +else: + gsfElectronContainer = 'None' + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/FatJetsConfig.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/FatJetsConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..7964da34f617c696e7029dd505d8fa39a64f903e --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/FatJetsConfig.py @@ -0,0 +1,34 @@ +include.block("PhysicsD3PDMaker/FatJetsConfig.py") + +from JetRec.JetRecFlags import jetFlags +jetFlags.doBTagging = False +jetFlags.inputFileType = 'AOD' + +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +### +from HSG5DPDUtils.JSjets import createJSJets,getGroomingTools + +from HSG5DPDUtils.GroomedJetsConfig import getGroomedJetsConfig +dictsConfig = getGroomedJetsConfig() + +sj_n = [] +for dC in dictsConfig: + myjetfinder = dC[0]["JetFinder"] + myjetdr = dC[0]["JetdR"] + myjetinput = dC[0]["JetInput"] + myGroomingTools, catNames = getGroomingTools(dC[1]) + sj_n += [(myjetfinder+"%d"%(myjetdr*10) + myjetinput+x) for x in catNames if "Subjets" in x] + +from BTagging.BTaggingFlags import BTaggingFlags +for sj in sj_n: + BTaggingFlags.Jets += [sj] + BTaggingFlags.JetsWithInfoPlus += [sj] + BTaggingFlags.CalibrationChannelAliases += [sj+"->AntiKt4LCTopo" ] + +include("BTagging/BTagging_LoadTools.py") + +myJetKeys = [] +for dC in dictsConfig: + xx = createJSJets(dC[0], dC[1], preseq) + myJetKeys += [xx] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/JetSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/JetSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..a48b651cf505792a677de83663d891ab0e097c69 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/JetSelector.py @@ -0,0 +1,27 @@ +include.block( "PhysicsD3PDMaker/JetSelector.py" ) + +from D2PDMaker.D2PDMakerConf import D2PDJetSelector + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDJetSelector( "SMWZ_HighPtJetFilter", + inputCollection = 'AntiKt4TopoEMJets', + outputCollection = 'HighPtJets', + ptMin = 20.0*Units.GeV ) + +preseq += D2PDJetSelector( "SMWZ_HighPtJetEM6Filter", + inputCollection = 'AntiKt6TopoEMJets', + outputCollection = 'HighPtJetsEM6', + ptMin = 20.0*Units.GeV ) + +preseq += D2PDJetSelector( "SMWZ_HighPtJetLC4Filter", + inputCollection = 'AntiKt4LCTopoJets', + outputCollection = 'HighPtJetsLC4', + ptMin = 20.0*Units.GeV ) + +preseq += D2PDJetSelector( "SMWZ_HighPtJetLC6Filter", + inputCollection = 'AntiKt4LCTopoJets', + outputCollection = 'HighPtJetsLC6', + ptMin = 20.0*Units.GeV ) + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtElectronPairSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtElectronPairSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..dd46d68958ff336fb34efff0de3f5b622abea058 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtElectronPairSelector.py @@ -0,0 +1,60 @@ +include.block( "PhysicsD3PDMaker/LowPtElectronPairSelector.py" ) + +import PyUtils.RootUtils as ru +ROOT = ru.import_root() +import PyCintex +PyCintex.loadDictionary('egammaEnumsDict') +from ROOT import egammaPID +from ROOT import egammaParameters + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDElectronSelector +from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + + +preseq += D2PDElectronSelector( "SMWZ_LowPtElectronFilter", + inputCollection = 'ElectronAODCollection', + outputCollection = 'LowPtElectrons', + clusterEtaMin = -2.5, + clusterEtaMax = 2.5, + electronID = egammaPID.ElectronIDMediumPP, + etMin = 5.0*Units.GeV ) + +preseq += D2PDElectronSelector( "SMWZ_MediumPtElectronFilter", + inputCollection = 'ElectronAODCollection', + outputCollection = 'MediumPtElectrons', + clusterEtaMin = -2.5, + clusterEtaMax = 2.5, + electronID = egammaPID.ElectronIDLoosePP, + etMin = 10.0*Units.GeV ) + + +from RecExConfig.RecAlgsFlags import recAlgs +if recAlgs.doEgammaBremReco(): + gsfElectronContainer = 'LowPtGSFElectrons' + preseq += D2PDElectronSelector( "SMWZ_LowPtGSFElectronFilter", + inputCollection = 'GSFElectronAODCollection', + outputCollection = 'LowPtGSFElectrons', + clusterEtaMin = -2.5, + clusterEtaMax = 2.5, + electronID = egammaPID.ElectronIDMediumPP, + etMin = 5.0*Units.GeV ) +else: + gsfElectronContainer = 'None' + + +preseq += D2PDParticleCombiner( "SMWZ_JPsieeFilter", + inputCollectionList = [ 'LowPtElectrons', 'LowPtElectrons' ], + outputCollection = 'JPsieeSelection', + minNumberPassed = 1, + massMax = 15.0*Units.GeV ) + +preseq += D2PDParticleCombiner( "SMWZ_ZeeFilter", + inputCollectionList = [ 'MediumPtElectrons', 'MediumPtElectrons' ], + outputCollection = 'ZeeSelection', + minNumberPassed = 1, + massMin = 50.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtMuonPairSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtMuonPairSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..bf04c4a85c97491053732d82fffc73d4645482f1 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/LowPtMuonPairSelector.py @@ -0,0 +1,49 @@ +include.block( "PhysicsD3PDMaker/LowPtMuonPairSelector.py" ) + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDMuonSelector +from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + + +# STACO + +preseq += D2PDMuonSelector( "SMWZ_LowPtMuonFilter", + inputCollection = 'StacoMuonCollection', + outputCollection = 'LowPtStacoMuons', + ptMin = 5.0*Units.GeV ) + +preseq += D2PDParticleCombiner( "SMWZ_JPsimumuStacoFilter", + inputCollectionList = [ 'LowPtStacoMuons', 'LowPtStacoMuons' ], + outputCollection = 'JPsimumuStacoSelection', + minNumberPassed = 1, + massMax = 15.0*Units.GeV ) + + +preseq += D2PDParticleCombiner( "SMWZ_ZmumuStacoFilter", + inputCollectionList = [ 'LowPtStacoMuons', 'LowPtStacoMuons' ], + outputCollection = 'ZmumuStacoSelection', + minNumberPassed = 1, + massMin = 50.0*Units.GeV ) + +# MUID + +preseq += D2PDMuonSelector( "SMWZ_LowPtMuidMuonFilter", + inputCollection = 'MuidMuonCollection', + outputCollection = 'LowPtMuidMuons', + ptMin = 5.0*Units.GeV ) + +preseq += D2PDParticleCombiner( "SMWZ_JPsimumuMuidFilter", + inputCollectionList = [ 'LowPtMuidMuons', 'LowPtMuidMuons' ], + outputCollection = 'JPsimumuMuidSelection', + minNumberPassed = 1, + massMax = 15.0*Units.GeV ) + +preseq += D2PDParticleCombiner( "SMWZ_ZmumuMuidFilter", + inputCollectionList = [ 'LowPtMuidMuons', 'LowPtMuidMuons' ], + outputCollection = 'ZmumuMuidSelection', + minNumberPassed = 1, + massMin = 50.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MuonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MuonSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..9303cca5075f1750aaeb33fb16de2c8168d881ec --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MuonSelector.py @@ -0,0 +1,27 @@ +include.block( "PhysicsD3PDMaker/MuonSelector.py" ) + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDMuonSelector +from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + + +# STACO + +preseq += D2PDMuonSelector( "SMWZ_HighPtStacoMuonFilter", + inputCollection = 'StacoMuonCollection', + outputCollection = 'HighPtStacoMuons', + ptMin = 20.0*Units.GeV, + minNumberPassed = 1 ) + + +# MUID + +preseq += D2PDMuonSelector( "SMWZ_HighPtMuidMuonFilter", + inputCollection = 'MuidMuonCollection', + outputCollection = 'HighPtMuidMuons', + ptMin = 20.0*Units.GeV, + minNumberPassed = 1 ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MyJetMake.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MyJetMake.py new file mode 100644 index 0000000000000000000000000000000000000000..a7a1c910375ff8648d444984a1a2f1a600cf0879 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/MyJetMake.py @@ -0,0 +1,59 @@ +# Call as UserAlgs + +# Imports +from JetRec.JetRecConf import * +from JetRecTools.JetRecToolsConf import * +from JetRec.JetGetters import * +from JetCalibTools.JetCalibToolsConf import * +from AthenaCommon.SystemOfUnits import GeV +from RecExConfig.RecFlags import rec +from AthenaCommon.AlgSequence import AlgSequence +seq = AlgSequence() + +if rec.doTruth(): + # Needed for release 15 AntiKt6 truth jets + # make_StandardJetGetter('AntiKt', 0.6, 'Truth') + print "jason" + import D3PDMakerCoreComps + from D3PDMakerCoreComps.resolveSGKey import testSGKey + print testSGKey ('JetCollection', 'AntiKt6TruthJets') + if not testSGKey ('JetCollection', 'AntiKt6TruthJets'): + make_StandardJetGetter('AntiKt', 0.6, 'Truth') + + # Add truth jet collection that includes all final state particles (including muons and neutrinos) + antikt4truthAlgAll = make_StandardJetGetter('AntiKt',0.4,'Truth',disable=False, + outputCollectionName='AntiKt4TruthJets_ALL', + useInteractingOnly=False, + includeMuons=True + ).jetAlgorithmHandle() + antikt6truthAlgAll = make_StandardJetGetter('AntiKt',0.6,'Truth',disable=False, + outputCollectionName='AntiKt6TruthJets_ALL', + useInteractingOnly=False, + includeMuons=True + ).jetAlgorithmHandle() + + # Configuration of this jetalgorithm adapted from TruthD3PDMaker/evgenD3PD.py + from TruthD3PDMaker.TruthJetFilterConfig import TruthJetFilterConfig + # Build Particle list + TruthJetFilterConfig (seq, writePartons = False, writeHadrons = True, excludeWZdecays = True, photonCone=0.1) + from ParticleBuilderOptions.AODFlags import AODFlags + AODFlags.MissingEtTruth = True + AODFlags.TruthParticleJet = True + AODFlags.McEventKey="GEN_EVENT" + # Add truth jet collection that includes all final state particles (including muons and neutrinos) + antikt4truthAlgWZ = make_StandardJetGetter('AntiKt',0.4,'Truth',disable=False, + inputCollectionNames=['FilteredD3PDTruth'], + outputCollectionName='AntiKt4TruthJets_WZ', + useInteractingOnly=False, + includeMuons=True + ).jetAlgorithmHandle() + antikt6truthAlgWZ = make_StandardJetGetter('AntiKt',0.6,'Truth',disable=False, + inputCollectionNames=['FilteredD3PDTruth'], + outputCollectionName='AntiKt6TruthJets_WZ', + useInteractingOnly=False, + includeMuons=True + ).jetAlgorithmHandle() + + + + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/PhotonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/PhotonSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..e6c2fb604b06837fde34fb7d26df35ad40c6be0c --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/PhotonSelector.py @@ -0,0 +1,16 @@ +include.block( "PhysicsD3PDMaker/PhotonSelector.py" ) + + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDPhotonSelector + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDPhotonSelector( "SMWZ_HighPtPhotonFilter", + inputCollection = 'PhotonAODCollection', + outputCollection = 'HighPtPhotons', + photonVetoAuthorList = [ 128 ], + photonID = egammaPID.PhotonIDLoose, + etMin = 10.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/RedoTracksMoments.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/RedoTracksMoments.py new file mode 100644 index 0000000000000000000000000000000000000000..3627fb31ae8e8b27dbc5afe179ad55a9d6760509 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/RedoTracksMoments.py @@ -0,0 +1,57 @@ +def tmp_getJetVertexAssociationTool(finder, mainParam, input, toolName="JetVertexAssociation", **options): + from JetRec.JetAlgConfiguration import checkAndUpdateOptions + options=checkAndUpdateOptions(finder=finder, mainParam=mainParam, input=input, **options) + + from JetMomentTools.JetMomentToolsConf import JetVertexAssociationTool, JetOriginCorrectionTool + + jvaTool = JetVertexAssociationTool(toolName) + + jvaTool.AssociateToHighestJVF = True + + from JetRec.TrackSelectionForJets import getDefaultJetVtxTrackHelper + jvaTool.JetVtxTrackHelper = getDefaultJetVtxTrackHelper() + + # origin correction tool + origCorr = JetOriginCorrectionTool("JetOriginCorrection") + origCorr.CellCalibrator = None + origCorr.UseGCW = False + origCorr.UseClusters = True + + # Official Choice of Jet/MET Group : Primary Vertex + origCorr.UseJVA = False + origCorr.UsePrimaryVertex = True + origCorr.UseBeamSpot = True + jvaTool.OriginCorrectionTool = origCorr + + return jvaTool + + +# simply use this as : momAlg = specialMoment('AntiKt4LCTopoJets') +def specialMoment(jetcollname): + + gAssoc = ["TrackAssoc"] + if rec.doTruth(): + gAssoc+=[ "TruthAssoc"] + + from JetMomentTools.GhostAssociation import addGhostAssociation + + momAlg = addGhostAssociation(jetcollname, gAssoc) + + # make JVF calculation use the Ghost-associated tracks + # from JetMomentTools.SetupJetMomentTools import getJetVertexAssociationTool + # jvtxTool = getJetVertexAssociationTool('AntiKt', 0.4, 'LCTopo') # parameters don't matter + # use the tmp_ version as long as the default is not fixed + # jvtxTool = tmp_getJetVertexAssociationTool('AntiKt', 0.4, 'LCTopo', toolName=jetcollname+'JVAtool') # parameters don't matter + + # jvtxTool.TrackAssocName = "TrackAssoc" + # jvtxTool.JetVtxTrackHelper.ptMin = 0.5*GeV + # momAlg.CalculatorTools += [ jvtxTool ] + + # enable trackWIDDTH + from JetMomentTools.SetupJetMomentTools import getJetTracksMomentTool + tm = getJetTracksMomentTool( DoAllPV = True) + tm.DoAllPV = True + tm.MinPt = 1 *GeV + momAlg.CalculatorTools += [ tm ] + + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMBKGED3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMBKGED3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..8070f4b65bd3059b40f0a8b6aac1e281c75563cd --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMBKGED3PD_prodJobOFragment.py @@ -0,0 +1,55 @@ +# $Id: SMBKGED3PD_prodJobOFragment.py 466232 2011-11-03 16:47:45Z aad $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMBKGE D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMBKGED3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMBKGED3PDStream_msg = logging.getLogger( 'SMBKGED3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMBKGED3PD.isVirtual: + SMBKGED3PDStream_msg.error( "The SMBKGE D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMBKGE D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMBKGE D3PD: +streamName = prodFlags.WriteSMBKGED3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMBKGED3PD ) +SMBKGED3PDStream_msg.info( "Configuring SMBKGED3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMBKGED3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +SMWZD3PD( SMBKGED3PDStream ) + +# Define skims +from WZSkims.WZSkimsConf import WZSkimsMain +BackgroundElec = WZSkimsMain("BackgroundElec") +BackgroundElec.doBackgroundElecSkim = True +BackgroundElec.OutputLevel = INFO +SMBKGED3PDStream.filterSeq += BackgroundElec + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMBKGED3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMBKGED3PDStream ) ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMBKGMUD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMBKGMUD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..fd509587c62f88a8b676749b7bba5d3739bf9670 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMBKGMUD3PD_prodJobOFragment.py @@ -0,0 +1,55 @@ +# $Id: SMBKGMUD3PD_prodJobOFragment.py 466232 2011-11-03 16:47:45Z aad $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMBKGMU D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMBKGMUD3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMBKGMUD3PDStream_msg = logging.getLogger( 'SMBKGMUD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMBKGMUD3PD.isVirtual: + SMBKGMUD3PDStream_msg.error( "The SMBKGMU D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMBKGMU D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMBKGMU D3PD: +streamName = prodFlags.WriteSMBKGMUD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMBKGMUD3PD ) +SMBKGMUD3PDStream_msg.info( "Configuring SMBKGMUD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMBKGMUD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +SMWZD3PD( SMBKGMUD3PDStream ) + +# Define skims +from WZSkims.WZSkimsConf import WZSkimsMain +BackgroundMuon = WZSkimsMain("BackgroundMuon") +BackgroundMuon.doBackgroundMuonSkim = True +BackgroundMuon.OutputLevel = INFO +SMBKGMUD3PDStream.filterSeq += BackgroundMuon + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMBKGMUD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMBKGMUD3PDStream ) ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDILEPD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDILEPD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..82ca49e56cb504842c72190d6e2836f1de0d1f1c --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDILEPD3PD_prodJobOFragment.py @@ -0,0 +1,55 @@ +# $Id: SMDILEPD3PD_prodJobOFragment.py 466232 2011-11-03 16:47:45Z aad $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMDILEP D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMDILEPD3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMDILEPD3PDStream_msg = logging.getLogger( 'SMDILEPD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMDILEPD3PD.isVirtual: + SMDILEPD3PDStream_msg.error( "The SMDILEP D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMDILEP D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMDILEP D3PD: +streamName = prodFlags.WriteSMDILEPD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMDILEPD3PD ) +SMDILEPD3PDStream_msg.info( "Configuring SMDILEPD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMDILEPD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +SMWZD3PD( SMDILEPD3PDStream ) + +# Define skims +from WZSkims.WZSkimsConf import WZSkimsMain +TwoLeptons = WZSkimsMain("TwoLeptons") +TwoLeptons.doTwoLeptonsSkim = True +TwoLeptons.OutputLevel = INFO +SMDILEPD3PDStream.filterSeq += TwoLeptons + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMDILEPD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMDILEPD3PDStream ) ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDYEED3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDYEED3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..6d7716f5175de344bd528b59e57391c7881db2fb --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDYEED3PD_prodJobOFragment.py @@ -0,0 +1,88 @@ +# $Id: SMDYEED3PD_prodJobOFragment.py 520434 2012-10-06 13:16:34Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMDYEE D3PD cart". + + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMDYEED3PD_prodJobOFragment.py" ) + + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + + +# Set up a logger: +from AthenaCommon.Logging import logging +SMDYEED3PDStream_msg = logging.getLogger( 'SMDYEED3PD_prodJobOFragment' ) + + +# Check if the configuration makes sense: +if prodFlags.WriteSMDYEED3PD.isVirtual: + SMDYEED3PDStream_msg.error( "The SMDYEE D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMDYEE D3PD set to be a virtual stream" ) + pass + + +# Construct the stream and file names for the SMDYEE D3PD: +streamName = prodFlags.WriteSMDYEED3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMDYEED3PD ) +SMDYEED3PDStream_msg.info( "Configuring SMDYEED3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + + +#### add specific containers +include ("PhysicsD3PDMaker/LowPtElectronPairSelector.py") +include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/MuonSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMDYEE_D3PDSvc" ) +ServiceMgr.SMDYEE_D3PDSvc.VetoedNames = [ "L1_.*","L2_.*","EF_m.*","EF_2m.*","EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMDYEE_D3PDSvc.VetoedNames += [ "trig_EF_trigmu.*" ] +ServiceMgr.SMDYEE_D3PDSvc.VetoedNames += [ "MET.*",".*etx.*",".*ety.*" ] + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMDYEED3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) +SMDYEED3PDStream.D3PDSvc = ServiceMgr.SMDYEE_D3PDSvc + + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD +SMWZLightD3PD( SMDYEED3PDStream, + stdElectronContainer = 'LowPtElectrons' ) + + +# apply skim +SMDYEED3PDStream.AddAcceptAlgs( ["SMWZ_JPsieeFilter"] ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMDYEED3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMDYEED3PDStream ) ] + + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDYMUMUD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDYMUMUD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..37a0b151b7a0b7174cd094dc0babefc03f8c06dc --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMDYMUMUD3PD_prodJobOFragment.py @@ -0,0 +1,84 @@ +# $Id: SMDYMUMUD3PD_prodJobOFragment.py 520434 2012-10-06 13:16:34Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMDYMUMU D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMDYMUMUD3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMDYMUMUD3PDStream_msg = logging.getLogger( 'SMDYMUMUD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMDYMUMUD3PD.isVirtual: + SMDYMUMUD3PDStream_msg.error( "The SMDYMUMU D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMDYMUMU D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMDYMUMU D3PD: +streamName = prodFlags.WriteSMDYMUMUD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMDYMUMUD3PD ) +SMDYMUMUD3PDStream_msg.info( "Configuring SMDYMUMUD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + + +# add specific containers +include ("PhysicsD3PDMaker/ElectronSelector.py") +include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/LowPtMuonPairSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMDYMUMU_D3PDSvc" ) +ServiceMgr.SMDYMUMU_D3PDSvc.VetoedNames = [ "L1_.*","L2_.*","EF_e.*","EF_2e.*","EF_g.*","EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMDYMUMU_D3PDSvc.VetoedNames += [ "trig_EF_el.*" ] +ServiceMgr.SMDYMUMU_D3PDSvc.VetoedNames += [ "MET.*",".*etx.*",".*ety.*" ] + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMDYMUMUD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) +SMDYMUMUD3PDStream.D3PDSvc = ServiceMgr.SMDYMUMU_D3PDSvc + + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD +SMWZLightD3PD( SMDYMUMUD3PDStream, + stacoMuonContainer = 'LowPtStacoMuons', + muidMuonContainer = 'LowPtMuidMuons' ) + + +# apply skim +SMDYMUMUD3PDStream.AddAcceptAlgs( ["SMWZ_JPsimumuStacoFilter", "SMWZ_JPsimumuMuidFilter"] ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMDYMUMUD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMDYMUMUD3PDStream ) ] + + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMLIGHTD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMLIGHTD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..e06e23955752d22ed3e690dd224d0c858e0b77ca --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMLIGHTD3PD_prodJobOFragment.py @@ -0,0 +1,89 @@ +# $Id: SMLIGHTD3PD_prodJobOFragment.py 520434 2012-10-06 13:16:34Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMLIGHT D3PD cart". + + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMLIGHTD3PD_prodJobOFragment.py" ) + + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + + +# Set up a logger: +from AthenaCommon.Logging import logging +SMLIGHTD3PDStream_msg = logging.getLogger( 'SMLIGHTD3PD_prodJobOFragment' ) + + +# Check if the configuration makes sense: +if prodFlags.WriteSMLIGHTD3PD.isVirtual: + SMLIGHTD3PDStream_msg.error( "The SMLIGHT D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMLIGHT D3PD set to be a virtual stream" ) + pass + + +# Construct the stream and file names for the SMLIGHT D3PD: +streamName = prodFlags.WriteSMLIGHTD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMLIGHTD3PD ) +SMLIGHTD3PDStream_msg.info( "Configuring SMLIGHTD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + + +#### add specific containers +include ("PhysicsD3PDMaker/ElectronSelector.py") +include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/MuonSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMLIGHT_D3PDSvc" ) +ServiceMgr.SMLIGHT_D3PDSvc.VetoedNames = [ "L1_.*","L2_.*","EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMLIGHT_D3PDSvc.VetoedNames += [ ".*etx.*",".*ety.*" ] + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMLIGHTD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) +SMLIGHTD3PDStream.D3PDSvc = ServiceMgr.SMLIGHT_D3PDSvc + + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +SMWZLightD3PD( SMLIGHTD3PDStream, + stdElectronContainer = 'HighPtElectrons', + gsfElectronContainer = 'HighPtGSFElectrons', + stacoMuonContainer = 'HighPtStacoMuons', + muidMuonContainer = 'HighPtMuidMuons', + photonContainer = 'HighPtPhotons', + jetContainer = 'HighPtJets' ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMLIGHTD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMLIGHTD3PDStream ) ] + + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEPD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEPD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..494bb4837c70d6bcaec2fedc7adb280fba8c859d --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEPD3PD_prodJobOFragment.py @@ -0,0 +1,116 @@ +# $Id: SMTRILEPD3PD_prodJobOFragment.py 531942 2013-01-06 20:06:49Z nedwards $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMTRILEP D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMTRILEPD3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMTRILEPD3PDStream_msg = logging.getLogger( 'SMTRILEPD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMTRILEPD3PD.isVirtual: + SMTRILEPD3PDStream_msg.error( "The SMTRILEP D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMTRILEP D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMTRILEP D3PD: +streamName = prodFlags.WriteSMTRILEPD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMTRILEPD3PD ) +SMTRILEPD3PDStream_msg.info( "Configuring SMTRILEPD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +#include ("PhysicsD3PDMaker/MyJetMake.py") + + +#configure MuonScatteringAngleSignificanceTool +#include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMTRILEPD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: + #from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD + #SMWZD3PD( SMTRILEPD3PDStream ) + +#h ok +### add specific containers +# Will need to redefine these ourselves... +include ("PhysicsD3PDMaker/SMTRILEP_ElectronSelector.py") +include ("PhysicsD3PDMaker/SMTRILEP_PhotonSelector.py") +include ("PhysicsD3PDMaker/SMTRILEP_MuonSelector.py") +include ("PhysicsD3PDMaker/SMTRILEP_JetSelector.py") +#include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMTRILEP_D3PDSvc" ) +#ServiceMgr.SMTRILEP_D3PDSvc.VetoedNames = [ "EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMTRILEP_D3PDSvc.VetoedNames = [ "^L1_.*","^L2_.*","EF_j.*","EF_2j.*","EF_tau.*", "EF_xe.*", "EF_eb.*", ] +ServiceMgr.SMTRILEP_D3PDSvc.VetoedNames += [ ".*etx.*",".*ety.*", "IPEstimate.*" ] + +include("PhysicsD3PDMaker/SMTRILEP_VetoBranches.py") +ServiceMgr.SMTRILEP_D3PDSvc.VetoedNames += SMTRILEP_VetoBranches + +SMTRILEPD3PDStream.D3PDSvc = ServiceMgr.SMTRILEP_D3PDSvc + +# Now add all the content to this stream: +# Will need to redefine this - defines what goes into the skim +from PhysicsD3PDMaker.SMTrilepD3PD import SMTrilepD3PD +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +SMTrilepD3PD( SMTRILEPD3PDStream, + stdElectronContainer = 'TrilepElectrons', + #gsfElectronContainer = 'HighPtGSFElectrons', + stacoMuonContainer = 'TrilepStacoMuons', + thirdMuonContainer = 'TrilepThirdMuons', + caloMuonContainer = 'TrilepCaloMuons', + #muidMuonContainer = 'HighPtMuidMuons', + photonContainer = 'HighPtPhotons', + jetLC4Container = "HighPtJetsLC4", + jetContainer = 'HighPtJets' ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMTRILEPD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMTRILEPD3PDStream ) ] + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR + +# Define skims +#from WZSkims.WZSkimsConf import WZSkimsMain +#ThreeLeptons = WZSkimsMain("ThreeLeptons") +#ThreeLeptons.doThreeLeptonsSkim = True +#ThreeLeptons.OutputLevel = INFO +#SMTRILEPD3PDStream.filterSeq += ThreeLeptons +from PhysicsD3PDMaker.PhysicsD3PDMakerConf import TrileptonSkimmer +TrileptonSkim = TrileptonSkimmer( ) +SMTRILEPD3PDStream.filterSeq += TrileptonSkim # 1 alg, named "TrilepSkim" + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMTRILEPD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMTRILEPD3PDStream ) ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_ElectronSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_ElectronSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..7504a442d2d855d964c46366cd94ad178e2e7942 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_ElectronSelector.py @@ -0,0 +1,42 @@ +include.block( "SMEWTrilepSkim/SMTRILEP_ElectronSelector.py" ) + +import PyUtils.RootUtils as ru +ROOT = ru.import_root() +import PyCintex +PyCintex.loadDictionary('egammaEnumsDict') +from ROOT import egammaPID +from ROOT import egammaParameters + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDElectronSelector +from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDElectronSelector( "SMTRILEP_TriLepElectronFilter", + inputCollection = 'ElectronAODCollection', + outputCollection = 'TrilepElectrons', + etMin = 4.0*Units.GeV, + clusterEtaMin = -5, + clusterEtaMax = 5, + #electronID = egammaPID.ElectronIDLoosePP, + minNumberPassed = 1 + ) + +#from RecExConfig.RecAlgsFlags import recAlgs +#if recAlgs.doEgammaBremReco(): +# gsfElectronContainer = 'HighPtGSFElectrons' +# preseq += D2PDElectronSelector( "SMTRILEP_HighPtGSFElectronFilter", +# inputCollection = 'GSFElectronAODCollection', +# outputCollection = 'HighPtGSFElectrons', +# etMin = 20.0*Units.GeV, +# clusterEtaMin = -2.5, +# clusterEtaMax = 2.5, +# electronID = egammaPID.ElectronIDLoosePP, +# minNumberPassed = 1 +# ) +#else: +# gsfElectronContainer = 'None' + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_JetSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_JetSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..76725824aef8a0a4bc295c510cd6ba207f16c22d --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_JetSelector.py @@ -0,0 +1,27 @@ +include.block( "SMEWTrilepSkim/SMTRILEP_JetSelector.py" ) + +from D2PDMaker.D2PDMakerConf import D2PDJetSelector + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDJetSelector( "SMTRILEP_HighPtJetFilter", + inputCollection = 'AntiKt4TopoEMJets', + outputCollection = 'HighPtJets', + ptMin = 20.0*Units.GeV ) + +#preseq += D2PDJetSelector( "SMTRILEP_HighPtJetEM6Filter", +# inputCollection = 'AntiKt6TopoEMJets', +# outputCollection = 'HighPtJetsEM6', +# ptMin = 20.0*Units.GeV ) + +preseq += D2PDJetSelector( "SMTRILEP_HighPtJetLC4Filter", + inputCollection = 'AntiKt4LCTopoJets', + outputCollection = 'HighPtJetsLC4', + ptMin = 20.0*Units.GeV ) + +#preseq += D2PDJetSelector( "SMTRILEP_HighPtJetLC6Filter", +# inputCollection = 'AntiKt4LCTopoJets', +# outputCollection = 'HighPtJetsLC6', +# ptMin = 20.0*Units.GeV ) + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_MuonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_MuonSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..418ff05904086cd96fc57b8ccb6a94d2ce1e7959 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_MuonSelector.py @@ -0,0 +1,43 @@ +include.block( "SMEWTrilepSkim/SMTRILEP_MuonSelector.py" ) + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDMuonSelector +from D2PDMaker.D2PDMakerConf import D2PDParticleCombiner + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + + +# STACO + +preseq += D2PDMuonSelector( "SMTRILEP_TrilepStacoMuonFilter", + inputCollection = 'StacoMuonCollection', + outputCollection = 'TrilepStacoMuons', + ptMin = 4.0*Units.GeV, + minNumberPassed = 1 ) + +# THIRD Muons +preseq += D2PDMuonSelector( "SMTRILEP_TrilepThirdMuonFilter", + inputCollection = 'Muons', + outputCollection = 'TrilepThirdMuons', + ptMin = 4.0*Units.GeV, + minNumberPassed = 1 ) + +# CALO muons - apply eta cut +preseq += D2PDMuonSelector( "SMTRILEP_TrilepCaloMuonFilter", + inputCollection = 'CaloMuonCollection', + outputCollection = 'TrilepCaloMuons', + ptMin = 12.0*Units.GeV, + etaMin = -0.2, + etaMax = 0.2, + minNumberPassed = 1 ) + + +# MUID + +#preseq += D2PDMuonSelector( "SMTRILEP_HighPtMuidMuonFilter", +# inputCollection = 'MuidMuonCollection', +# outputCollection = 'HighPtMuidMuons', +# ptMin = 20.0*Units.GeV, +# minNumberPassed = 1 ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_PhotonSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_PhotonSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..44cdc8995d117b65a6cee1ebfcbf49add46b0a12 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_PhotonSelector.py @@ -0,0 +1,16 @@ +include.block( "SMEWTrilepSkim/SMTRILEP_PhotonSelector.py" ) + + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDPhotonSelector + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDPhotonSelector( "SMTRILEP_HighPtPhotonFilter", + inputCollection = 'PhotonAODCollection', + outputCollection = 'HighPtPhotons', + photonVetoAuthorList = [ 128 ], + photonID = egammaPID.PhotonIDLoose, + etMin = 10.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_VetoBranches.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_VetoBranches.py new file mode 100644 index 0000000000000000000000000000000000000000..f0edaa564a40d9fd850e8255a10fb0b8dfa59e94 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMTRILEP_VetoBranches.py @@ -0,0 +1,2459 @@ +SMTRILEP_VetoBranches = [ "^"+branch+"$" for branch in [ + "trig_RoI_EF_e_egammaContainer_egamma_Photons", + "trig_RoI_EF_e_egammaContainer_egamma_PhotonsStatus", + "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFID", + "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFIDStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_Muon", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_MuonStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_Muon", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_MuonStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_Muon", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_MuonStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIso", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIsoStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIso", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIsoStatus", + "trig_EF_el_px", + "trig_EF_el_py", + "trig_EF_el_pz", + "trig_EF_el_charge", + "trig_EF_el_vertweight", + "trig_EF_el_hastrac", + "trig_roidescriptor_forID_n", + "trig_roidescriptor_forID_ph", + "trig_roidescriptor_forID_et", + "trig_roidescriptor_forID_zed0", + "trig_L2_passedPhysics", + "trig_EF_passedPhysics", + "trig_L1_TB", + "trig_L1_TA", + "trig_L2_passedRaw", + "trig_EF_passedRaw", + "trig_L2_truncated", + "trig_EF_truncated", + "trig_L2_resurrecte", + "trig_EF_resurrecte", + "trig_L2_passedThrough", + "trig_EF_passedThrough", + "trig_L2_wasPrescale", + "trig_L2_wasResurrected", + "trig_EF_wasPrescale", + "trig_EF_wasResurrected", + "trig_RoI_L2_mu_typ", + "trig_RoI_L2_mu_active", + "trig_RoI_L2_mu_lastSte", + "trig_RoI_L2_mu_TENumbe", + "trig_RoI_L2_mu_roiNumbe", + "trig_RoI_L2_mu_TrigRoiDescriptor_forID", + "trig_RoI_L2_mu_TrigRoiDescriptor_forIDStatu", + "trig_RoI_L2_mu_IsoMuonFeature", + "trig_RoI_L2_mu_IsoMuonFeatureStatu", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_Muo", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigSiTrack_MuonStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_Muo", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_MuonStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_Muo", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_MuonStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIs", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigL2SiTrackFinder_muonIsoStatus", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIso", + "trig_RoI_L2_mu_TrigInDetTrackCollection_TrigIDSCAN_muonIsoStatu", + "trig_RoI_EF_mu_typ", + "trig_RoI_EF_mu_active", + "trig_RoI_EF_mu_lastSte", + "trig_RoI_EF_mu_TENumbe", + "trig_RoI_EF_mu_roiNumbe", + "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFID", + "trig_RoI_EF_mu_TrackCollection_InDetTrigTrackSlimmer_Muon_EFIDStatu", + " b_trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFI", + " b_trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFIDStatus", + "trig_RoI_EF_e_egammaContainer_egamma_Photon", + "trig_RoI_EF_e_egammaContainer_egamma_PhotonsSt", + "trig_L2_el_L2_2e12Tvh_loose1", + "trig_L2_el_L2_2e5_tight1_Jpsi", + "trig_L2_el_L2_2e7T_loose1_mu6", + "trig_L2_el_L2_2e7T_medium1_mu6", + "trig_L2_el_L2_e11_etcut", + "trig_L2_el_L2_e12Tvh_loose1", + "trig_L2_el_L2_e12Tvh_medium1", + "trig_L2_el_L2_e12Tvh_medium1_mu6_topo_medium", + "trig_L2_el_L2_e12Tvh_medium1_mu8", + "trig_L2_el_L2_e13_etcutTrk_xs45", + "trig_L2_el_L2_e13_etcutTrk_xs50", + "trig_L2_el_L2_e13_etcutTrk_xs55", + "trig_L2_el_L2_e13_etcutTrk_xs60", + "trig_L2_el_L2_e14_tight1_e4_etcut_Jpsi", + "trig_L2_el_L2_e15vh_loose0", + "trig_L2_el_L2_e15vh_medium1", + "trig_L2_el_L2_e18_loose1", + "trig_L2_el_L2_e18_loose1_g25_medium", + "trig_L2_el_L2_e18_medium1", + "trig_L2_el_L2_e18_medium1_g25_loose", + "trig_L2_el_L2_e18vh_medium1", + "trig_L2_el_L2_e18vh_medium1_2e7T_medium1", + "trig_L2_el_L2_e20_etcutTrk_xe25", + "trig_L2_el_L2_e20_etcutTrk_xs45", + "trig_L2_el_L2_e20vhT_medium1_g6T_etcut_Upsi", + "trig_L2_el_L2_e20vhT_tight1_g6T_etcut_Upsi", + "trig_L2_el_L2_e22vh_loose", + "trig_L2_el_L2_e22vh_loose0", + "trig_L2_el_L2_e22vh_loose1", + "trig_L2_el_L2_e22vh_medium1", + "trig_L2_el_L2_e22vh_medium1_IDTrkNoCut", + "trig_L2_el_L2_e22vhi_medium1", + "trig_L2_el_L2_e24vh_loose", + "trig_L2_el_L2_e24vh_loose0", + "trig_L2_el_L2_e24vh_loose0_3j15_a4TTem", + "trig_L2_el_L2_e24vh_loose0_4j15_a4TTem", + "trig_L2_el_L2_e24vh_loose1", + "trig_L2_el_L2_e24vh_medium1", + "trig_L2_el_L2_e24vh_medium1_EFxe30", + "trig_L2_el_L2_e24vh_medium1_EFxe35", + "trig_L2_el_L2_e24vh_medium1_EFxe40", + "trig_L2_el_L2_e24vh_medium1_IDTrkNoCut", + "trig_L2_el_L2_e24vh_medium1_IdScan", + "trig_L2_el_L2_e24vh_medium1_L2StarB", + "trig_L2_el_L2_e24vh_medium1_L2StarC", + "trig_L2_el_L2_e24vh_medium1_SiTrk", + "trig_L2_el_L2_e24vh_medium1_TRT", + "trig_L2_el_L2_e24vh_medium1_e7_medium1", + "trig_L2_el_L2_e24vh_tight1_e15_NoCut_Zee", + "trig_L2_el_L2_e24vhi_loose1", + "trig_L2_el_L2_e24vhi_loose1_mu8", + "trig_L2_el_L2_e24vhi_medium1", + "trig_L2_el_L2_e45_medium1", + "trig_L2_el_L2_e5_etcut", + "trig_L2_el_L2_e5_loose0", + "trig_L2_el_L2_e5_medium1", + "trig_L2_el_L2_e5_tight1", + "trig_L2_el_L2_e5_tight1_e14_etcut_Jpsi", + "trig_L2_el_L2_e5_tight1_e4_etcut_Jpsi", + "trig_L2_el_L2_e5_tight1_e4_etcut_Jpsi_L2StarB", + "trig_L2_el_L2_e5_tight1_e4_etcut_Jpsi_L2StarC", + "trig_L2_el_L2_e5_tight1_e5_NoCut", + "trig_L2_el_L2_e5_tight1_e9_etcut_Jpsi", + "trig_L2_el_L2_e60_loose0", + "trig_L2_el_L2_e60_medium1", + "trig_L2_el_L2_e7T_loose1", + "trig_L2_el_L2_e7T_loose1_2mu6", + "trig_L2_el_L2_e7T_medium1", + "trig_L2_el_L2_e7T_medium1_2mu6", + "trig_L2_el_L2_e7_medium1", + "trig_L2_el_L2_e9_tight1_e4_etcut_Jpsi", + "trig_L2_el_L2_eb_physics", + "trig_L2_el_L2_eb_physics_empty", + "trig_L2_el_L2_eb_physics_firstempty", + "trig_L2_el_L2_eb_physics_noL1PS", + "trig_L2_el_L2_eb_physics_unpaired_iso", + "trig_L2_el_L2_eb_physics_unpaired_noniso", + "trig_L2_el_L2_eb_random", + "trig_L2_el_L2_eb_random_empty", + "trig_L2_el_L2_eb_random_firstempty", + "trig_L2_el_L2_eb_random_unpaired_iso", + "trig_L2_el_L2_em3_empty_larcalib", + "trig_L2_el_L2_em6_empty_larcalib", + "trig_L2_ph_L2_2g15vh_medium_g10_medium", + "trig_L2_ph_L2_2g20vh_medium", + "trig_L2_ph_L2_2g40_loose", + "trig_L2_ph_L2_g100_loose", + "trig_L2_ph_L2_g10_NoCut_cosmic", + "trig_L2_ph_L2_g10_loose", + "trig_L2_ph_L2_g10_medium", + "trig_L2_ph_L2_g120_loose", + "trig_L2_ph_L2_g12Tvh_loose", + "trig_L2_ph_L2_g15_loose", + "trig_L2_ph_L2_g15vh_medium", + "trig_L2_ph_L2_g200_etcut", + "trig_L2_ph_L2_g20_etcut", + "trig_L2_ph_L2_g20_loose", + "trig_L2_ph_L2_g20_medium", + "trig_L2_ph_L2_g24_etcut", + "trig_L2_ph_L2_g30_loose", + "trig_L2_ph_L2_g30_loose_g20_loose", + "trig_L2_ph_L2_g30_medium", + "trig_L2_ph_L2_g30_medium_g20_medium", + "trig_L2_ph_L2_g35_loose_g25_loose", + "trig_L2_ph_L2_g35_loose_g30_loose", + "trig_L2_ph_L2_g40_loose", + "trig_L2_ph_L2_g40_loose_L2xe45", + "trig_L2_ph_L2_g40_loose_g25_loose", + "trig_L2_ph_L2_g40_loose_g30_loose", + "trig_L2_ph_L2_g5_NoCut_cosmic", + "trig_L2_ph_L2_g60_loose", + "trig_L2_ph_L2_g80_loose", + "trig_EF_el_EF_2e12Tvh_loose1", + "trig_EF_el_EF_2e5_tight1_Jpsi", + "trig_EF_el_EF_2e7T_loose1_mu6", + "trig_EF_el_EF_2e7T_medium1_mu6", + "trig_EF_el_EF_e11_etcut", + "trig_EF_el_EF_e12Tvh_loose1", + "trig_EF_el_EF_e12Tvh_medium1", + "trig_EF_el_EF_e12Tvh_medium1_mu6_topo_medium", + "trig_EF_el_EF_e12Tvh_medium1_mu8", + "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS50_dphi2j15xe20", + "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS55_dphi2j15xe20", + "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS60", + "trig_EF_el_EF_e13_etcutTrk_xs45_L1XS60_dphi2j15xe20", + "trig_EF_el_EF_e13_etcutTrk_xs50_L1XS50_dphi2j15xe20", + "trig_EF_el_EF_e13_etcutTrk_xs60", + "trig_EF_el_EF_e13_etcutTrk_xs60_dphi2j15xe20", + "trig_EF_el_EF_e14_tight1_e4_etcut_Jpsi", + "trig_EF_el_EF_e15vh_loose0", + "trig_EF_el_EF_e15vh_medium1", + "trig_EF_el_EF_e18_loose1", + "trig_EF_el_EF_e18_loose1_g25_medium", + "trig_EF_el_EF_e18_medium1", + "trig_EF_el_EF_e18_medium1_g25_loose", + "trig_EF_el_EF_e18vh_medium1", + "trig_EF_el_EF_e18vh_medium1_2e7T_medium1", + "trig_EF_el_EF_e20_etcutTrk_xe30_dphi2j15xe20", + "trig_EF_el_EF_e20_etcutTrk_xs45_L1XS45_dphi2j15xe20", + "trig_EF_el_EF_e20_etcutTrk_xs60_dphi2j15xe20", + "trig_EF_el_EF_e20vhT_medium1_g6T_etcut_Upsi", + "trig_EF_el_EF_e20vhT_tight1_g6T_etcut_Upsi", + "trig_EF_el_EF_e22vh_loose", + "trig_EF_el_EF_e22vh_loose0", + "trig_EF_el_EF_e22vh_loose1", + "trig_EF_el_EF_e22vh_medium1", + "trig_EF_el_EF_e22vh_medium1_IDTrkNoCut", + "trig_EF_el_EF_e22vhi_medium1", + "trig_EF_el_EF_e24vh_loose", + "trig_EF_el_EF_e24vh_loose0", + "trig_EF_el_EF_e24vh_loose0_3j45_a4tchad_L2FS", + "trig_EF_el_EF_e24vh_loose0_4j45_a4tchad_L2FS", + "trig_EF_el_EF_e24vh_loose0_4j55_a4tchad_L2FS", + "trig_EF_el_EF_e24vh_loose1", + "trig_EF_el_EF_e24vh_medium1", + "trig_EF_el_EF_e24vh_medium1_EFxe30", + "trig_EF_el_EF_e24vh_medium1_EFxe30_tcem", + "trig_EF_el_EF_e24vh_medium1_EFxe35_tcem", + "trig_EF_el_EF_e24vh_medium1_EFxe35_tclcw", + "trig_EF_el_EF_e24vh_medium1_EFxe40", + "trig_EF_el_EF_e24vh_medium1_IDTrkNoCut", + "trig_EF_el_EF_e24vh_medium1_IdScan", + "trig_EF_el_EF_e24vh_medium1_L2StarB", + "trig_EF_el_EF_e24vh_medium1_L2StarC", + "trig_EF_el_EF_e24vh_medium1_SiTrk", + "trig_EF_el_EF_e24vh_medium1_TRT", + "trig_EF_el_EF_e24vh_medium1_e7_medium1", + "trig_EF_el_EF_e24vh_tight1_e15_NoCut_Zee", + "trig_EF_el_EF_e24vhi_loose1", + "trig_EF_el_EF_e24vhi_loose1_mu8", + "trig_EF_el_EF_e24vhi_medium1", + "trig_EF_el_EF_e45_medium1", + "trig_EF_el_EF_e5_etcut", + "trig_EF_el_EF_e5_loose0", + "trig_EF_el_EF_e5_medium1", + "trig_EF_el_EF_e5_tight1", + "trig_EF_el_EF_e5_tight1_e14_etcut_Jpsi", + "trig_EF_el_EF_e5_tight1_e4_etcut_Jpsi", + "trig_EF_el_EF_e5_tight1_e4_etcut_Jpsi_L2StarB", + "trig_EF_el_EF_e5_tight1_e4_etcut_Jpsi_L2StarC", + "trig_EF_el_EF_e5_tight1_e5_NoCut", + "trig_EF_el_EF_e5_tight1_e9_etcut_Jpsi", + "trig_EF_el_EF_e60_loose0", + "trig_EF_el_EF_e60_medium1", + "trig_EF_el_EF_e7T_loose1", + "trig_EF_el_EF_e7T_loose1_2mu6", + "trig_EF_el_EF_e7T_medium1", + "trig_EF_el_EF_e7T_medium1_2mu6", + "trig_EF_el_EF_e7_medium1", + "trig_EF_el_EF_e9_tight1_e4_etcut_Jpsi", + "trig_EF_ph_EF_2g15vh_medium_g10_medium", + "trig_EF_ph_EF_2g20vh_medium", + "trig_EF_ph_EF_2g40_loose", + "trig_EF_ph_EF_g100_loose", + "trig_EF_ph_EF_g10_NoCut_cosmic", + "trig_EF_ph_EF_g10_loose", + "trig_EF_ph_EF_g10_medium", + "trig_EF_ph_EF_g120_loose", + "trig_EF_ph_EF_g12Tvh_loose", + "trig_EF_ph_EF_g12Tvh_loose_larcalib", + "trig_EF_ph_EF_g15_loose", + "trig_EF_ph_EF_g15vh_medium", + "trig_EF_ph_EF_g200_etcut", + "trig_EF_ph_EF_g20_etcut", + "trig_EF_ph_EF_g20_loose", + "trig_EF_ph_EF_g20_loose_jetcalibdelayed", + "trig_EF_ph_EF_g20_loose_larcalib", + "trig_EF_ph_EF_g20_medium", + "trig_EF_ph_EF_g24_etcut", + "trig_EF_ph_EF_g30_loose", + "trig_EF_ph_EF_g30_loose_g20_loose", + "trig_EF_ph_EF_g30_medium", + "trig_EF_ph_EF_g30_medium_g20_medium", + "trig_EF_ph_EF_g35_loose_g25_loose", + "trig_EF_ph_EF_g35_loose_g30_loose", + "trig_EF_ph_EF_g40_loose", + "trig_EF_ph_EF_g40_loose_L2EFxe60", + "trig_EF_ph_EF_g40_loose_L2EFxe60_tclcw", + "trig_EF_ph_EF_g40_loose_g25_loose", + "trig_EF_ph_EF_g40_loose_g30_loose", + "trig_EF_ph_EF_g40_loose_jetcalibdelayed", + "trig_EF_ph_EF_g40_loose_larcalib", + "trig_EF_ph_EF_g5_NoCut_cosmic", + "trig_EF_ph_EF_g60_loose", + "trig_EF_ph_EF_g60_loose_jetcalibdelayed", + "trig_EF_ph_EF_g60_loose_larcalib", + "trig_EF_ph_EF_g80_loose", + "trig_EF_ph_EF_g80_loose_larcalib", + "trig_L2_muonfeature_L2_2mu10", + "trig_L2_muonfeature_L2_2mu10_MSonly_g10_loose", + "trig_L2_muonfeature_L2_2mu10_MSonly_g10_loose_EMPTY", + "trig_L2_muonfeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", + "trig_L2_muonfeature_L2_2mu13", + "trig_L2_muonfeature_L2_2mu13_Zmumu_IDTrkNoCut", + "trig_L2_muonfeature_L2_2mu13_muFast", + "trig_L2_muonfeature_L2_2mu15", + "trig_L2_muonfeature_L2_2mu4T", + "trig_L2_muonfeature_L2_2mu4T_2e5_tight1", + "trig_L2_muonfeature_L2_2mu4T_Bmumu", + "trig_L2_muonfeature_L2_2mu4T_Bmumu_Barrel", + "trig_L2_muonfeature_L2_2mu4T_Bmumu_BarrelOnly", + "trig_L2_muonfeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Bmumu_Barrel_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Bmumu_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Bmumux", + "trig_L2_muonfeature_L2_2mu4T_Bmumux_Barrel", + "trig_L2_muonfeature_L2_2mu4T_Bmumux_BarrelOnly", + "trig_L2_muonfeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Bmumux_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Bmumux_v2", + "trig_L2_muonfeature_L2_2mu4T_Bmumux_v2_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_DiMu", + "trig_L2_muonfeature_L2_2mu4T_DiMu_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_DiMu_L2StarC", + "trig_L2_muonfeature_L2_2mu4T_DiMu_e5_tight1", + "trig_L2_muonfeature_L2_2mu4T_DiMu_muFast", + "trig_L2_muonfeature_L2_2mu4T_DiMu_noVtx_noOS", + "trig_L2_muonfeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", + "trig_L2_muonfeature_L2_2mu4T_Jpsimumu_prescaled", + "trig_L2_muonfeature_L2_2mu4T_Upsimumu", + "trig_L2_muonfeature_L2_2mu4T_Upsimumu_Barrel", + "trig_L2_muonfeature_L2_2mu4T_Upsimumu_BarrelOnly", + "trig_L2_muonfeature_L2_2mu4T_Upsimumu_L2StarB", + "trig_L2_muonfeature_L2_2mu4T_xe45", + "trig_L2_muonfeature_L2_2mu4T_xe60", + "trig_L2_muonfeature_L2_2mu6", + "trig_L2_muonfeature_L2_2mu6_Bmumu", + "trig_L2_muonfeature_L2_2mu6_Bmumu_L2StarB", + "trig_L2_muonfeature_L2_2mu6_Bmumux", + "trig_L2_muonfeature_L2_2mu6_Bmumux_L2StarA", + "trig_L2_muonfeature_L2_2mu6_Bmumux_v2", + "trig_L2_muonfeature_L2_2mu6_Bmumux_v2_L2StarB", + "trig_L2_muonfeature_L2_2mu6_DiMu", + "trig_L2_muonfeature_L2_2mu6_DiMu_DY20", + "trig_L2_muonfeature_L2_2mu6_DiMu_DY25", + "trig_L2_muonfeature_L2_2mu6_DiMu_L2StarB", + "trig_L2_muonfeature_L2_2mu6_DiMu_noVtx_noOS", + "trig_L2_muonfeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", + "trig_L2_muonfeature_L2_2mu6_Jpsimumu", + "trig_L2_muonfeature_L2_2mu6_Jpsimumu_L2StarB", + "trig_L2_muonfeature_L2_2mu6_Upsimumu", + "trig_L2_muonfeature_L2_2mu6i_DiMu_DY", + "trig_L2_muonfeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", + "trig_L2_muonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS", + "trig_L2_muonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", + "trig_L2_muonfeature_L2_2mu8_EFxe30", + "trig_L2_muonfeature_L2_2mu8_EFxe40", + "trig_L2_muonfeature_L2_2mu8_EFxe40wMu", + "trig_L2_muonfeature_L2_mu10", + "trig_L2_muonfeature_L2_mu10_Jpsimumu", + "trig_L2_muonfeature_L2_mu10_Jpsimumu_L2StarA", + "trig_L2_muonfeature_L2_mu10_MSonly", + "trig_L2_muonfeature_L2_mu10_Upsimumu_tight_FS", + "trig_L2_muonfeature_L2_mu10_Upsimumu_tight_FS_L2StarA", + "trig_L2_muonfeature_L2_mu10_muCombTag_NoEF_tight", + "trig_L2_muonfeature_L2_mu10_muCombTag_NoEF_tight1", + "trig_L2_muonfeature_L2_mu10i_g10_medium", + "trig_L2_muonfeature_L2_mu10i_g10_medium_TauMass", + "trig_L2_muonfeature_L2_mu10i_loose_g12Tvh_medium", + "trig_L2_muonfeature_L2_mu10i_loose_g12Tvh_medium_TauMass", + "trig_L2_muonfeature_L2_mu11_empty_NoAlg", + "trig_L2_muonfeature_L2_mu13", + "trig_L2_muonfeature_L2_mu15", + "trig_L2_muonfeature_L2_mu15_l2cal", + "trig_L2_muonfeature_L2_mu15_muCombTag_NoEF_tight", + "trig_L2_muonfeature_L2_mu15_muCombTag_NoEF_tight1", + "trig_L2_muonfeature_L2_mu18", + "trig_L2_muonfeature_L2_mu18_2g10_loose", + "trig_L2_muonfeature_L2_mu18_2g10_medium", + "trig_L2_muonfeature_L2_mu18_IDTrkNoCut_tight", + "trig_L2_muonfeature_L2_mu18_medium", + "trig_L2_muonfeature_L2_mu18_tight", + "trig_L2_muonfeature_L2_mu18_tight_2mu4T_Jpsimumu", + "trig_L2_muonfeature_L2_mu18_tight_e7_medium1", + "trig_L2_muonfeature_L2_mu18i4_tight", + "trig_L2_muonfeature_L2_mu18it_tight", + "trig_L2_muonfeature_L2_mu20_muCombTag_NoEF_tight", + "trig_L2_muonfeature_L2_mu20_muCombTag_NoEF_tight1", + "trig_L2_muonfeature_L2_mu20i_tight_g5_loose_TauMass", + "trig_L2_muonfeature_L2_mu20i_tight_g5_medium", + "trig_L2_muonfeature_L2_mu20i_tight_g5_medium_TauMass", + "trig_L2_muonfeature_L2_mu20it_tight", + "trig_L2_muonfeature_L2_mu22_IDTrkNoCut_tight", + "trig_L2_muonfeature_L2_mu24", + "trig_L2_muonfeature_L2_mu24_g20vh_loose", + "trig_L2_muonfeature_L2_mu24_g20vh_medium", + "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe40", + "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe40wMu", + "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe60", + "trig_L2_muonfeature_L2_mu24_j60_c4cchad_EFxe60wMu", + "trig_L2_muonfeature_L2_mu24_j60_c4cchad_xe35", + "trig_L2_muonfeature_L2_mu24_j65_c4cchad", + "trig_L2_muonfeature_L2_mu24_medium", + "trig_L2_muonfeature_L2_mu24_muCombTag_NoEF_tight", + "trig_L2_muonfeature_L2_mu24_tight", + "trig_L2_muonfeature_L2_mu24_tight_3j35_a4tchad", + "trig_L2_muonfeature_L2_mu24_tight_3j45_a4tchad", + "trig_L2_muonfeature_L2_mu24_tight_4j35_a4tchad", + "trig_L2_muonfeature_L2_mu24_tight_4j45_a4tchad", + "trig_L2_muonfeature_L2_mu24_tight_EFxe40", + "trig_L2_muonfeature_L2_mu24_tight_L2StarB", + "trig_L2_muonfeature_L2_mu24_tight_L2StarC", + "trig_L2_muonfeature_L2_mu24_tight_muFast", + "trig_L2_muonfeature_L2_mu36_tight", + "trig_L2_muonfeature_L2_mu40_MSonly_barrel_tight", + "trig_L2_muonfeature_L2_mu40_slow_outOfTime_tight", + "trig_L2_muonfeature_L2_mu40_slow_tight", + "trig_L2_muonfeature_L2_mu40_tight", + "trig_L2_muonfeature_L2_mu4T", + "trig_L2_muonfeature_L2_mu4T_cosmic", + "trig_L2_muonfeature_L2_mu4T_j105_c4cchad", + "trig_L2_muonfeature_L2_mu4T_j10_a4TTem", + "trig_L2_muonfeature_L2_mu4T_j140_c4cchad", + "trig_L2_muonfeature_L2_mu4T_j15_a4TTem", + "trig_L2_muonfeature_L2_mu4T_j165_c4cchad", + "trig_L2_muonfeature_L2_mu4T_j30_a4TTem", + "trig_L2_muonfeature_L2_mu4T_j40_c4cchad", + "trig_L2_muonfeature_L2_mu4T_j50_a4TTem", + "trig_L2_muonfeature_L2_mu4T_j50_c4cchad", + "trig_L2_muonfeature_L2_mu4T_j60_c4cchad", + "trig_L2_muonfeature_L2_mu4T_j60_c4cchad_xe40", + "trig_L2_muonfeature_L2_mu4T_j75_a4TTem", + "trig_L2_muonfeature_L2_mu4T_j75_c4cchad", + "trig_L2_muonfeature_L2_mu4T_muFast", + "trig_L2_muonfeature_L2_mu4Ti_g20Tvh_medium", + "trig_L2_muonfeature_L2_mu4Ti_g20Tvh_medium_TauMass", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu_Barrel", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumu_L2StarB", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_Barrel", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_v2", + "trig_L2_muonfeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", + "trig_L2_muonfeature_L2_mu4Tmu6_DiMu", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", + "trig_L2_muonfeature_L2_mu4Tmu6_Jpsimumu_prescaled", + "trig_L2_muonfeature_L2_mu4Tmu6_Upsimumu", + "trig_L2_muonfeature_L2_mu4Tmu6_Upsimumu_Barrel", + "trig_L2_muonfeature_L2_mu4_L1MU11_MSonly_cosmic", + "trig_L2_muonfeature_L2_mu4_L1MU11_cosmic", + "trig_L2_muonfeature_L2_mu4_empty_NoAlg", + "trig_L2_muonfeature_L2_mu4_firstempty_NoAlg", + "trig_L2_muonfeature_L2_mu4_l2cal_empty", + "trig_L2_muonfeature_L2_mu4_unpaired_iso_NoAlg", + "trig_L2_muonfeature_L2_mu50_MSonly_barrel_tight", + "trig_L2_muonfeature_L2_mu6", + "trig_L2_muonfeature_L2_mu60_slow_outOfTime_tight1", + "trig_L2_muonfeature_L2_mu60_slow_tight1", + "trig_L2_muonfeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", + "trig_L2_muonfeature_L2_mu6_Jpsimumu_L2StarA", + "trig_L2_muonfeature_L2_mu6_Jpsimumu_tight", + "trig_L2_muonfeature_L2_mu6_Jpsimumu_tight_L2StarB", + "trig_L2_muonfeature_L2_mu6_L2StarB", + "trig_L2_muonfeature_L2_mu6_MSonly", + "trig_L2_muonfeature_L2_mu6_Trk_Jpsi_loose", + "trig_L2_muonfeature_L2_mu6_Trk_Jpsi_loose_L2StarA", + "trig_L2_muonfeature_L2_mu6_Trk_Jpsi_loose_L2StarB", + "trig_L2_muonfeature_L2_mu8", + "trig_L2_muonfeature_L2_mu8_4j15_a4TTem", + "trig_L2_combmuonfeature_L2_2mu10", + "trig_L2_combmuonfeature_L2_2mu10_MSonly_g10_loose", + "trig_L2_combmuonfeature_L2_2mu10_MSonly_g10_loose_EMPTY", + "trig_L2_combmuonfeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", + "trig_L2_combmuonfeature_L2_2mu13", + "trig_L2_combmuonfeature_L2_2mu13_Zmumu_IDTrkNoCut", + "trig_L2_combmuonfeature_L2_2mu13_muFast", + "trig_L2_combmuonfeature_L2_2mu15", + "trig_L2_combmuonfeature_L2_2mu4T", + "trig_L2_combmuonfeature_L2_2mu4T_2e5_tight1", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumu", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_Barrel", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_BarrelOnly", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_Barrel_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumu_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_Barrel", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_BarrelOnly", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_v2", + "trig_L2_combmuonfeature_L2_2mu4T_Bmumux_v2_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_DiMu", + "trig_L2_combmuonfeature_L2_2mu4T_DiMu_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_DiMu_L2StarC", + "trig_L2_combmuonfeature_L2_2mu4T_DiMu_e5_tight1", + "trig_L2_combmuonfeature_L2_2mu4T_DiMu_muFast", + "trig_L2_combmuonfeature_L2_2mu4T_DiMu_noVtx_noOS", + "trig_L2_combmuonfeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", + "trig_L2_combmuonfeature_L2_2mu4T_Jpsimumu_prescaled", + "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu", + "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu_Barrel", + "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu_BarrelOnly", + "trig_L2_combmuonfeature_L2_2mu4T_Upsimumu_L2StarB", + "trig_L2_combmuonfeature_L2_2mu4T_xe45", + "trig_L2_combmuonfeature_L2_2mu4T_xe60", + "trig_L2_combmuonfeature_L2_2mu6", + "trig_L2_combmuonfeature_L2_2mu6_Bmumu", + "trig_L2_combmuonfeature_L2_2mu6_Bmumu_L2StarB", + "trig_L2_combmuonfeature_L2_2mu6_Bmumux", + "trig_L2_combmuonfeature_L2_2mu6_Bmumux_L2StarA", + "trig_L2_combmuonfeature_L2_2mu6_Bmumux_v2", + "trig_L2_combmuonfeature_L2_2mu6_Bmumux_v2_L2StarB", + "trig_L2_combmuonfeature_L2_2mu6_DiMu", + "trig_L2_combmuonfeature_L2_2mu6_DiMu_DY20", + "trig_L2_combmuonfeature_L2_2mu6_DiMu_DY25", + "trig_L2_combmuonfeature_L2_2mu6_DiMu_L2StarB", + "trig_L2_combmuonfeature_L2_2mu6_DiMu_noVtx_noOS", + "trig_L2_combmuonfeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", + "trig_L2_combmuonfeature_L2_2mu6_Jpsimumu", + "trig_L2_combmuonfeature_L2_2mu6_Jpsimumu_L2StarB", + "trig_L2_combmuonfeature_L2_2mu6_Upsimumu", + "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY", + "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", + "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS", + "trig_L2_combmuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", + "trig_L2_combmuonfeature_L2_2mu8_EFxe30", + "trig_L2_combmuonfeature_L2_2mu8_EFxe40", + "trig_L2_combmuonfeature_L2_2mu8_EFxe40wMu", + "trig_L2_combmuonfeature_L2_mu10", + "trig_L2_combmuonfeature_L2_mu10_Jpsimumu", + "trig_L2_combmuonfeature_L2_mu10_Jpsimumu_L2StarA", + "trig_L2_combmuonfeature_L2_mu10_MSonly", + "trig_L2_combmuonfeature_L2_mu10_Upsimumu_tight_FS", + "trig_L2_combmuonfeature_L2_mu10_Upsimumu_tight_FS_L2StarA", + "trig_L2_combmuonfeature_L2_mu10_muCombTag_NoEF_tight", + "trig_L2_combmuonfeature_L2_mu10_muCombTag_NoEF_tight1", + "trig_L2_combmuonfeature_L2_mu10i_g10_medium", + "trig_L2_combmuonfeature_L2_mu10i_g10_medium_TauMass", + "trig_L2_combmuonfeature_L2_mu10i_loose_g12Tvh_medium", + "trig_L2_combmuonfeature_L2_mu10i_loose_g12Tvh_medium_TauMass", + "trig_L2_combmuonfeature_L2_mu11_empty_NoAlg", + "trig_L2_combmuonfeature_L2_mu13", + "trig_L2_combmuonfeature_L2_mu15", + "trig_L2_combmuonfeature_L2_mu15_l2cal", + "trig_L2_combmuonfeature_L2_mu15_muCombTag_NoEF_tight", + "trig_L2_combmuonfeature_L2_mu15_muCombTag_NoEF_tight1", + "trig_L2_combmuonfeature_L2_mu18", + "trig_L2_combmuonfeature_L2_mu18_2g10_loose", + "trig_L2_combmuonfeature_L2_mu18_2g10_medium", + "trig_L2_combmuonfeature_L2_mu18_IDTrkNoCut_tight", + "trig_L2_combmuonfeature_L2_mu18_medium", + "trig_L2_combmuonfeature_L2_mu18_tight", + "trig_L2_combmuonfeature_L2_mu18_tight_2mu4T_Jpsimumu", + "trig_L2_combmuonfeature_L2_mu18_tight_e7_medium1", + "trig_L2_combmuonfeature_L2_mu18i4_tight", + "trig_L2_combmuonfeature_L2_mu18it_tight", + "trig_L2_combmuonfeature_L2_mu20_muCombTag_NoEF_tight", + "trig_L2_combmuonfeature_L2_mu20_muCombTag_NoEF_tight1", + "trig_L2_combmuonfeature_L2_mu20i_tight_g5_loose_TauMass", + "trig_L2_combmuonfeature_L2_mu20i_tight_g5_medium", + "trig_L2_combmuonfeature_L2_mu20i_tight_g5_medium_TauMass", + "trig_L2_combmuonfeature_L2_mu20it_tight", + "trig_L2_combmuonfeature_L2_mu22_IDTrkNoCut_tight", + "trig_L2_combmuonfeature_L2_mu24", + "trig_L2_combmuonfeature_L2_mu24_g20vh_loose", + "trig_L2_combmuonfeature_L2_mu24_g20vh_medium", + "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe40", + "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe40wMu", + "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe60", + "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_EFxe60wMu", + "trig_L2_combmuonfeature_L2_mu24_j60_c4cchad_xe35", + "trig_L2_combmuonfeature_L2_mu24_j65_c4cchad", + "trig_L2_combmuonfeature_L2_mu24_medium", + "trig_L2_combmuonfeature_L2_mu24_muCombTag_NoEF_tight", + "trig_L2_combmuonfeature_L2_mu24_tight", + "trig_L2_combmuonfeature_L2_mu24_tight_3j35_a4tchad", + "trig_L2_combmuonfeature_L2_mu24_tight_3j45_a4tchad", + "trig_L2_combmuonfeature_L2_mu24_tight_4j35_a4tchad", + "trig_L2_combmuonfeature_L2_mu24_tight_4j45_a4tchad", + "trig_L2_combmuonfeature_L2_mu24_tight_EFxe40", + "trig_L2_combmuonfeature_L2_mu24_tight_L2StarB", + "trig_L2_combmuonfeature_L2_mu24_tight_L2StarC", + "trig_L2_combmuonfeature_L2_mu24_tight_muFast", + "trig_L2_combmuonfeature_L2_mu36_tight", + "trig_L2_combmuonfeature_L2_mu40_MSonly_barrel_tight", + "trig_L2_combmuonfeature_L2_mu40_slow_outOfTime_tight", + "trig_L2_combmuonfeature_L2_mu40_slow_tight", + "trig_L2_combmuonfeature_L2_mu40_tight", + "trig_L2_combmuonfeature_L2_mu4T", + "trig_L2_combmuonfeature_L2_mu4T_cosmic", + "trig_L2_combmuonfeature_L2_mu4T_j105_c4cchad", + "trig_L2_combmuonfeature_L2_mu4T_j10_a4TTem", + "trig_L2_combmuonfeature_L2_mu4T_j140_c4cchad", + "trig_L2_combmuonfeature_L2_mu4T_j15_a4TTem", + "trig_L2_combmuonfeature_L2_mu4T_j165_c4cchad", + "trig_L2_combmuonfeature_L2_mu4T_j30_a4TTem", + "trig_L2_combmuonfeature_L2_mu4T_j40_c4cchad", + "trig_L2_combmuonfeature_L2_mu4T_j50_a4TTem", + "trig_L2_combmuonfeature_L2_mu4T_j50_c4cchad", + "trig_L2_combmuonfeature_L2_mu4T_j60_c4cchad", + "trig_L2_combmuonfeature_L2_mu4T_j60_c4cchad_xe40", + "trig_L2_combmuonfeature_L2_mu4T_j75_a4TTem", + "trig_L2_combmuonfeature_L2_mu4T_j75_c4cchad", + "trig_L2_combmuonfeature_L2_mu4T_muFast", + "trig_L2_combmuonfeature_L2_mu4Ti_g20Tvh_medium", + "trig_L2_combmuonfeature_L2_mu4Ti_g20Tvh_medium_TauMass", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu_Barrel", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumu_L2StarB", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_Barrel", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_v2", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", + "trig_L2_combmuonfeature_L2_mu4Tmu6_DiMu", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Jpsimumu_prescaled", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Upsimumu", + "trig_L2_combmuonfeature_L2_mu4Tmu6_Upsimumu_Barrel", + "trig_L2_combmuonfeature_L2_mu4_L1MU11_MSonly_cosmic", + "trig_L2_combmuonfeature_L2_mu4_L1MU11_cosmic", + "trig_L2_combmuonfeature_L2_mu4_empty_NoAlg", + "trig_L2_combmuonfeature_L2_mu4_firstempty_NoAlg", + "trig_L2_combmuonfeature_L2_mu4_l2cal_empty", + "trig_L2_combmuonfeature_L2_mu4_unpaired_iso_NoAlg", + "trig_L2_combmuonfeature_L2_mu50_MSonly_barrel_tight", + "trig_L2_combmuonfeature_L2_mu6", + "trig_L2_combmuonfeature_L2_mu60_slow_outOfTime_tight1", + "trig_L2_combmuonfeature_L2_mu60_slow_tight1", + "trig_L2_combmuonfeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", + "trig_L2_combmuonfeature_L2_mu6_Jpsimumu_L2StarA", + "trig_L2_combmuonfeature_L2_mu6_Jpsimumu_tight", + "trig_L2_combmuonfeature_L2_mu6_Jpsimumu_tight_L2StarB", + "trig_L2_combmuonfeature_L2_mu6_L2StarB", + "trig_L2_combmuonfeature_L2_mu6_MSonly", + "trig_L2_combmuonfeature_L2_mu6_Trk_Jpsi_loose", + "trig_L2_combmuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarA", + "trig_L2_combmuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarB", + "trig_L2_combmuonfeature_L2_mu8", + "trig_L2_combmuonfeature_L2_mu8_4j15_a4TTem", + "trig_L2_isomuonfeature_L2_2mu10", + "trig_L2_isomuonfeature_L2_2mu10_MSonly_g10_loose", + "trig_L2_isomuonfeature_L2_2mu10_MSonly_g10_loose_EMPTY", + "trig_L2_isomuonfeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", + "trig_L2_isomuonfeature_L2_2mu13", + "trig_L2_isomuonfeature_L2_2mu13_Zmumu_IDTrkNoCut", + "trig_L2_isomuonfeature_L2_2mu13_muFast", + "trig_L2_isomuonfeature_L2_2mu15", + "trig_L2_isomuonfeature_L2_2mu4T", + "trig_L2_isomuonfeature_L2_2mu4T_2e5_tight1", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumu", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_Barrel", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_BarrelOnly", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_Barrel_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumu_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_Barrel", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_BarrelOnly", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_v2", + "trig_L2_isomuonfeature_L2_2mu4T_Bmumux_v2_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_DiMu", + "trig_L2_isomuonfeature_L2_2mu4T_DiMu_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_DiMu_L2StarC", + "trig_L2_isomuonfeature_L2_2mu4T_DiMu_e5_tight1", + "trig_L2_isomuonfeature_L2_2mu4T_DiMu_muFast", + "trig_L2_isomuonfeature_L2_2mu4T_DiMu_noVtx_noOS", + "trig_L2_isomuonfeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", + "trig_L2_isomuonfeature_L2_2mu4T_Jpsimumu_prescaled", + "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu", + "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu_Barrel", + "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu_BarrelOnly", + "trig_L2_isomuonfeature_L2_2mu4T_Upsimumu_L2StarB", + "trig_L2_isomuonfeature_L2_2mu4T_xe45", + "trig_L2_isomuonfeature_L2_2mu4T_xe60", + "trig_L2_isomuonfeature_L2_2mu6", + "trig_L2_isomuonfeature_L2_2mu6_Bmumu", + "trig_L2_isomuonfeature_L2_2mu6_Bmumu_L2StarB", + "trig_L2_isomuonfeature_L2_2mu6_Bmumux", + "trig_L2_isomuonfeature_L2_2mu6_Bmumux_L2StarA", + "trig_L2_isomuonfeature_L2_2mu6_Bmumux_v2", + "trig_L2_isomuonfeature_L2_2mu6_Bmumux_v2_L2StarB", + "trig_L2_isomuonfeature_L2_2mu6_DiMu", + "trig_L2_isomuonfeature_L2_2mu6_DiMu_DY20", + "trig_L2_isomuonfeature_L2_2mu6_DiMu_DY25", + "trig_L2_isomuonfeature_L2_2mu6_DiMu_L2StarB", + "trig_L2_isomuonfeature_L2_2mu6_DiMu_noVtx_noOS", + "trig_L2_isomuonfeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", + "trig_L2_isomuonfeature_L2_2mu6_Jpsimumu", + "trig_L2_isomuonfeature_L2_2mu6_Jpsimumu_L2StarB", + "trig_L2_isomuonfeature_L2_2mu6_Upsimumu", + "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY", + "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", + "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS", + "trig_L2_isomuonfeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", + "trig_L2_isomuonfeature_L2_2mu8_EFxe30", + "trig_L2_isomuonfeature_L2_2mu8_EFxe40", + "trig_L2_isomuonfeature_L2_2mu8_EFxe40wMu", + "trig_L2_isomuonfeature_L2_mu10", + "trig_L2_isomuonfeature_L2_mu10_Jpsimumu", + "trig_L2_isomuonfeature_L2_mu10_Jpsimumu_L2StarA", + "trig_L2_isomuonfeature_L2_mu10_MSonly", + "trig_L2_isomuonfeature_L2_mu10_Upsimumu_tight_FS", + "trig_L2_isomuonfeature_L2_mu10_Upsimumu_tight_FS_L2StarA", + "trig_L2_isomuonfeature_L2_mu10_muCombTag_NoEF_tight", + "trig_L2_isomuonfeature_L2_mu10_muCombTag_NoEF_tight1", + "trig_L2_isomuonfeature_L2_mu10i_g10_medium", + "trig_L2_isomuonfeature_L2_mu10i_g10_medium_TauMass", + "trig_L2_isomuonfeature_L2_mu10i_loose_g12Tvh_medium", + "trig_L2_isomuonfeature_L2_mu10i_loose_g12Tvh_medium_TauMass", + "trig_L2_isomuonfeature_L2_mu11_empty_NoAlg", + "trig_L2_isomuonfeature_L2_mu13", + "trig_L2_isomuonfeature_L2_mu15", + "trig_L2_isomuonfeature_L2_mu15_l2cal", + "trig_L2_isomuonfeature_L2_mu15_muCombTag_NoEF_tight", + "trig_L2_isomuonfeature_L2_mu15_muCombTag_NoEF_tight1", + "trig_L2_isomuonfeature_L2_mu18", + "trig_L2_isomuonfeature_L2_mu18_2g10_loose", + "trig_L2_isomuonfeature_L2_mu18_2g10_medium", + "trig_L2_isomuonfeature_L2_mu18_IDTrkNoCut_tight", + "trig_L2_isomuonfeature_L2_mu18_medium", + "trig_L2_isomuonfeature_L2_mu18_tight", + "trig_L2_isomuonfeature_L2_mu18_tight_2mu4T_Jpsimumu", + "trig_L2_isomuonfeature_L2_mu18_tight_e7_medium1", + "trig_L2_isomuonfeature_L2_mu18i4_tight", + "trig_L2_isomuonfeature_L2_mu18it_tight", + "trig_L2_isomuonfeature_L2_mu20_muCombTag_NoEF_tight", + "trig_L2_isomuonfeature_L2_mu20_muCombTag_NoEF_tight1", + "trig_L2_isomuonfeature_L2_mu20i_tight_g5_loose_TauMass", + "trig_L2_isomuonfeature_L2_mu20i_tight_g5_medium", + "trig_L2_isomuonfeature_L2_mu20i_tight_g5_medium_TauMass", + "trig_L2_isomuonfeature_L2_mu20it_tight", + "trig_L2_isomuonfeature_L2_mu22_IDTrkNoCut_tight", + "trig_L2_isomuonfeature_L2_mu24", + "trig_L2_isomuonfeature_L2_mu24_g20vh_loose", + "trig_L2_isomuonfeature_L2_mu24_g20vh_medium", + "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe40", + "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe40wMu", + "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe60", + "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_EFxe60wMu", + "trig_L2_isomuonfeature_L2_mu24_j60_c4cchad_xe35", + "trig_L2_isomuonfeature_L2_mu24_j65_c4cchad", + "trig_L2_isomuonfeature_L2_mu24_medium", + "trig_L2_isomuonfeature_L2_mu24_muCombTag_NoEF_tight", + "trig_L2_isomuonfeature_L2_mu24_tight", + "trig_L2_isomuonfeature_L2_mu24_tight_3j35_a4tchad", + "trig_L2_isomuonfeature_L2_mu24_tight_3j45_a4tchad", + "trig_L2_isomuonfeature_L2_mu24_tight_4j35_a4tchad", + "trig_L2_isomuonfeature_L2_mu24_tight_4j45_a4tchad", + "trig_L2_isomuonfeature_L2_mu24_tight_EFxe40", + "trig_L2_isomuonfeature_L2_mu24_tight_L2StarB", + "trig_L2_isomuonfeature_L2_mu24_tight_L2StarC", + "trig_L2_isomuonfeature_L2_mu24_tight_muFast", + "trig_L2_isomuonfeature_L2_mu36_tight", + "trig_L2_isomuonfeature_L2_mu40_MSonly_barrel_tight", + "trig_L2_isomuonfeature_L2_mu40_slow_outOfTime_tight", + "trig_L2_isomuonfeature_L2_mu40_slow_tight", + "trig_L2_isomuonfeature_L2_mu40_tight", + "trig_L2_isomuonfeature_L2_mu4T", + "trig_L2_isomuonfeature_L2_mu4T_cosmic", + "trig_L2_isomuonfeature_L2_mu4T_j105_c4cchad", + "trig_L2_isomuonfeature_L2_mu4T_j10_a4TTem", + "trig_L2_isomuonfeature_L2_mu4T_j140_c4cchad", + "trig_L2_isomuonfeature_L2_mu4T_j15_a4TTem", + "trig_L2_isomuonfeature_L2_mu4T_j165_c4cchad", + "trig_L2_isomuonfeature_L2_mu4T_j30_a4TTem", + "trig_L2_isomuonfeature_L2_mu4T_j40_c4cchad", + "trig_L2_isomuonfeature_L2_mu4T_j50_a4TTem", + "trig_L2_isomuonfeature_L2_mu4T_j50_c4cchad", + "trig_L2_isomuonfeature_L2_mu4T_j60_c4cchad", + "trig_L2_isomuonfeature_L2_mu4T_j60_c4cchad_xe40", + "trig_L2_isomuonfeature_L2_mu4T_j75_a4TTem", + "trig_L2_isomuonfeature_L2_mu4T_j75_c4cchad", + "trig_L2_isomuonfeature_L2_mu4T_muFast", + "trig_L2_isomuonfeature_L2_mu4Ti_g20Tvh_medium", + "trig_L2_isomuonfeature_L2_mu4Ti_g20Tvh_medium_TauMass", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu_Barrel", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumu_L2StarB", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_Barrel", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_v2", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", + "trig_L2_isomuonfeature_L2_mu4Tmu6_DiMu", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Jpsimumu_prescaled", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Upsimumu", + "trig_L2_isomuonfeature_L2_mu4Tmu6_Upsimumu_Barrel", + "trig_L2_isomuonfeature_L2_mu4_L1MU11_MSonly_cosmic", + "trig_L2_isomuonfeature_L2_mu4_L1MU11_cosmic", + "trig_L2_isomuonfeature_L2_mu4_empty_NoAlg", + "trig_L2_isomuonfeature_L2_mu4_firstempty_NoAlg", + "trig_L2_isomuonfeature_L2_mu4_l2cal_empty", + "trig_L2_isomuonfeature_L2_mu4_unpaired_iso_NoAlg", + "trig_L2_isomuonfeature_L2_mu50_MSonly_barrel_tight", + "trig_L2_isomuonfeature_L2_mu6", + "trig_L2_isomuonfeature_L2_mu60_slow_outOfTime_tight1", + "trig_L2_isomuonfeature_L2_mu60_slow_tight1", + "trig_L2_isomuonfeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", + "trig_L2_isomuonfeature_L2_mu6_Jpsimumu_L2StarA", + "trig_L2_isomuonfeature_L2_mu6_Jpsimumu_tight", + "trig_L2_isomuonfeature_L2_mu6_Jpsimumu_tight_L2StarB", + "trig_L2_isomuonfeature_L2_mu6_L2StarB", + "trig_L2_isomuonfeature_L2_mu6_MSonly", + "trig_L2_isomuonfeature_L2_mu6_Trk_Jpsi_loose", + "trig_L2_isomuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarA", + "trig_L2_isomuonfeature_L2_mu6_Trk_Jpsi_loose_L2StarB", + "trig_L2_isomuonfeature_L2_mu8", + "trig_L2_isomuonfeature_L2_mu8_4j15_a4TTem", + "trig_L2_tilemufeature_L2_2mu10", + "trig_L2_tilemufeature_L2_2mu10_MSonly_g10_loose", + "trig_L2_tilemufeature_L2_2mu10_MSonly_g10_loose_EMPTY", + "trig_L2_tilemufeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", + "trig_L2_tilemufeature_L2_2mu13", + "trig_L2_tilemufeature_L2_2mu13_Zmumu_IDTrkNoCut", + "trig_L2_tilemufeature_L2_2mu13_muFast", + "trig_L2_tilemufeature_L2_2mu15", + "trig_L2_tilemufeature_L2_2mu4T", + "trig_L2_tilemufeature_L2_2mu4T_2e5_tight1", + "trig_L2_tilemufeature_L2_2mu4T_Bmumu", + "trig_L2_tilemufeature_L2_2mu4T_Bmumu_Barrel", + "trig_L2_tilemufeature_L2_2mu4T_Bmumu_BarrelOnly", + "trig_L2_tilemufeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Bmumu_Barrel_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Bmumu_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux_Barrel", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux_BarrelOnly", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux_v2", + "trig_L2_tilemufeature_L2_2mu4T_Bmumux_v2_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_DiMu", + "trig_L2_tilemufeature_L2_2mu4T_DiMu_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_DiMu_L2StarC", + "trig_L2_tilemufeature_L2_2mu4T_DiMu_e5_tight1", + "trig_L2_tilemufeature_L2_2mu4T_DiMu_muFast", + "trig_L2_tilemufeature_L2_2mu4T_DiMu_noVtx_noOS", + "trig_L2_tilemufeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", + "trig_L2_tilemufeature_L2_2mu4T_Jpsimumu_prescaled", + "trig_L2_tilemufeature_L2_2mu4T_Upsimumu", + "trig_L2_tilemufeature_L2_2mu4T_Upsimumu_Barrel", + "trig_L2_tilemufeature_L2_2mu4T_Upsimumu_BarrelOnly", + "trig_L2_tilemufeature_L2_2mu4T_Upsimumu_L2StarB", + "trig_L2_tilemufeature_L2_2mu4T_xe45", + "trig_L2_tilemufeature_L2_2mu4T_xe60", + "trig_L2_tilemufeature_L2_2mu6", + "trig_L2_tilemufeature_L2_2mu6_Bmumu", + "trig_L2_tilemufeature_L2_2mu6_Bmumu_L2StarB", + "trig_L2_tilemufeature_L2_2mu6_Bmumux", + "trig_L2_tilemufeature_L2_2mu6_Bmumux_L2StarA", + "trig_L2_tilemufeature_L2_2mu6_Bmumux_v2", + "trig_L2_tilemufeature_L2_2mu6_Bmumux_v2_L2StarB", + "trig_L2_tilemufeature_L2_2mu6_DiMu", + "trig_L2_tilemufeature_L2_2mu6_DiMu_DY20", + "trig_L2_tilemufeature_L2_2mu6_DiMu_DY25", + "trig_L2_tilemufeature_L2_2mu6_DiMu_L2StarB", + "trig_L2_tilemufeature_L2_2mu6_DiMu_noVtx_noOS", + "trig_L2_tilemufeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", + "trig_L2_tilemufeature_L2_2mu6_Jpsimumu", + "trig_L2_tilemufeature_L2_2mu6_Jpsimumu_L2StarB", + "trig_L2_tilemufeature_L2_2mu6_Upsimumu", + "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY", + "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", + "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY_noVtx_noOS", + "trig_L2_tilemufeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", + "trig_L2_tilemufeature_L2_2mu8_EFxe30", + "trig_L2_tilemufeature_L2_2mu8_EFxe40", + "trig_L2_tilemufeature_L2_2mu8_EFxe40wMu", + "trig_L2_tilemufeature_L2_mu10", + "trig_L2_tilemufeature_L2_mu10_Jpsimumu", + "trig_L2_tilemufeature_L2_mu10_Jpsimumu_L2StarA", + "trig_L2_tilemufeature_L2_mu10_MSonly", + "trig_L2_tilemufeature_L2_mu10_Upsimumu_tight_FS", + "trig_L2_tilemufeature_L2_mu10_Upsimumu_tight_FS_L2StarA", + "trig_L2_tilemufeature_L2_mu10_muCombTag_NoEF_tight", + "trig_L2_tilemufeature_L2_mu10_muCombTag_NoEF_tight1", + "trig_L2_tilemufeature_L2_mu10i_g10_medium", + "trig_L2_tilemufeature_L2_mu10i_g10_medium_TauMass", + "trig_L2_tilemufeature_L2_mu10i_loose_g12Tvh_medium", + "trig_L2_tilemufeature_L2_mu10i_loose_g12Tvh_medium_TauMass", + "trig_L2_tilemufeature_L2_mu11_empty_NoAlg", + "trig_L2_tilemufeature_L2_mu13", + "trig_L2_tilemufeature_L2_mu15", + "trig_L2_tilemufeature_L2_mu15_l2cal", + "trig_L2_tilemufeature_L2_mu15_muCombTag_NoEF_tight", + "trig_L2_tilemufeature_L2_mu15_muCombTag_NoEF_tight1", + "trig_L2_tilemufeature_L2_mu18", + "trig_L2_tilemufeature_L2_mu18_2g10_loose", + "trig_L2_tilemufeature_L2_mu18_2g10_medium", + "trig_L2_tilemufeature_L2_mu18_IDTrkNoCut_tight", + "trig_L2_tilemufeature_L2_mu18_medium", + "trig_L2_tilemufeature_L2_mu18_tight", + "trig_L2_tilemufeature_L2_mu18_tight_2mu4T_Jpsimumu", + "trig_L2_tilemufeature_L2_mu18_tight_e7_medium1", + "trig_L2_tilemufeature_L2_mu18i4_tight", + "trig_L2_tilemufeature_L2_mu18it_tight", + "trig_L2_tilemufeature_L2_mu20_muCombTag_NoEF_tight", + "trig_L2_tilemufeature_L2_mu20_muCombTag_NoEF_tight1", + "trig_L2_tilemufeature_L2_mu20i_tight_g5_loose_TauMass", + "trig_L2_tilemufeature_L2_mu20i_tight_g5_medium", + "trig_L2_tilemufeature_L2_mu20i_tight_g5_medium_TauMass", + "trig_L2_tilemufeature_L2_mu20it_tight", + "trig_L2_tilemufeature_L2_mu22_IDTrkNoCut_tight", + "trig_L2_tilemufeature_L2_mu24", + "trig_L2_tilemufeature_L2_mu24_g20vh_loose", + "trig_L2_tilemufeature_L2_mu24_g20vh_medium", + "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe40", + "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe40wMu", + "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe60", + "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_EFxe60wMu", + "trig_L2_tilemufeature_L2_mu24_j60_c4cchad_xe35", + "trig_L2_tilemufeature_L2_mu24_j65_c4cchad", + "trig_L2_tilemufeature_L2_mu24_medium", + "trig_L2_tilemufeature_L2_mu24_muCombTag_NoEF_tight", + "trig_L2_tilemufeature_L2_mu24_tight", + "trig_L2_tilemufeature_L2_mu24_tight_3j35_a4tchad", + "trig_L2_tilemufeature_L2_mu24_tight_3j45_a4tchad", + "trig_L2_tilemufeature_L2_mu24_tight_4j35_a4tchad", + "trig_L2_tilemufeature_L2_mu24_tight_4j45_a4tchad", + "trig_L2_tilemufeature_L2_mu24_tight_EFxe40", + "trig_L2_tilemufeature_L2_mu24_tight_L2StarB", + "trig_L2_tilemufeature_L2_mu24_tight_L2StarC", + "trig_L2_tilemufeature_L2_mu24_tight_muFast", + "trig_L2_tilemufeature_L2_mu36_tight", + "trig_L2_tilemufeature_L2_mu40_MSonly_barrel_tight", + "trig_L2_tilemufeature_L2_mu40_slow_outOfTime_tight", + "trig_L2_tilemufeature_L2_mu40_slow_tight", + "trig_L2_tilemufeature_L2_mu40_tight", + "trig_L2_tilemufeature_L2_mu4T", + "trig_L2_tilemufeature_L2_mu4T_cosmic", + "trig_L2_tilemufeature_L2_mu4T_j105_c4cchad", + "trig_L2_tilemufeature_L2_mu4T_j10_a4TTem", + "trig_L2_tilemufeature_L2_mu4T_j140_c4cchad", + "trig_L2_tilemufeature_L2_mu4T_j15_a4TTem", + "trig_L2_tilemufeature_L2_mu4T_j165_c4cchad", + "trig_L2_tilemufeature_L2_mu4T_j30_a4TTem", + "trig_L2_tilemufeature_L2_mu4T_j40_c4cchad", + "trig_L2_tilemufeature_L2_mu4T_j50_a4TTem", + "trig_L2_tilemufeature_L2_mu4T_j50_c4cchad", + "trig_L2_tilemufeature_L2_mu4T_j60_c4cchad", + "trig_L2_tilemufeature_L2_mu4T_j60_c4cchad_xe40", + "trig_L2_tilemufeature_L2_mu4T_j75_a4TTem", + "trig_L2_tilemufeature_L2_mu4T_j75_c4cchad", + "trig_L2_tilemufeature_L2_mu4T_muFast", + "trig_L2_tilemufeature_L2_mu4Ti_g20Tvh_medium", + "trig_L2_tilemufeature_L2_mu4Ti_g20Tvh_medium_TauMass", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu_Barrel", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumu_L2StarB", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_Barrel", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_v2", + "trig_L2_tilemufeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", + "trig_L2_tilemufeature_L2_mu4Tmu6_DiMu", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_L2StarB", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", + "trig_L2_tilemufeature_L2_mu4Tmu6_Jpsimumu_prescaled", + "trig_L2_tilemufeature_L2_mu4Tmu6_Upsimumu", + "trig_L2_tilemufeature_L2_mu4Tmu6_Upsimumu_Barrel", + "trig_L2_tilemufeature_L2_mu4_L1MU11_MSonly_cosmic", + "trig_L2_tilemufeature_L2_mu4_L1MU11_cosmic", + "trig_L2_tilemufeature_L2_mu4_empty_NoAlg", + "trig_L2_tilemufeature_L2_mu4_firstempty_NoAlg", + "trig_L2_tilemufeature_L2_mu4_l2cal_empty", + "trig_L2_tilemufeature_L2_mu4_unpaired_iso_NoAlg", + "trig_L2_tilemufeature_L2_mu50_MSonly_barrel_tight", + "trig_L2_tilemufeature_L2_mu6", + "trig_L2_tilemufeature_L2_mu60_slow_outOfTime_tight1", + "trig_L2_tilemufeature_L2_mu60_slow_tight1", + "trig_L2_tilemufeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", + "trig_L2_tilemufeature_L2_mu6_Jpsimumu_L2StarA", + "trig_L2_tilemufeature_L2_mu6_Jpsimumu_tight", + "trig_L2_tilemufeature_L2_mu6_Jpsimumu_tight_L2StarB", + "trig_L2_tilemufeature_L2_mu6_L2StarB", + "trig_L2_tilemufeature_L2_mu6_MSonly", + "trig_L2_tilemufeature_L2_mu6_Trk_Jpsi_loose", + "trig_L2_tilemufeature_L2_mu6_Trk_Jpsi_loose_L2StarA", + "trig_L2_tilemufeature_L2_mu6_Trk_Jpsi_loose_L2StarB", + "trig_L2_tilemufeature_L2_mu8", + "trig_L2_tilemufeature_L2_mu8_4j15_a4TTem", + "trig_L2_tiletrackmufeature_L2_2mu10", + "trig_L2_tiletrackmufeature_L2_2mu10_MSonly_g10_loose", + "trig_L2_tiletrackmufeature_L2_2mu10_MSonly_g10_loose_EMPTY", + "trig_L2_tiletrackmufeature_L2_2mu10_MSonly_g10_loose_UNPAIRED_ISO", + "trig_L2_tiletrackmufeature_L2_2mu13", + "trig_L2_tiletrackmufeature_L2_2mu13_Zmumu_IDTrkNoCut", + "trig_L2_tiletrackmufeature_L2_2mu13_muFast", + "trig_L2_tiletrackmufeature_L2_2mu15", + "trig_L2_tiletrackmufeature_L2_2mu4T", + "trig_L2_tiletrackmufeature_L2_2mu4T_2e5_tight1", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_Barrel", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_BarrelOnly", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_BarrelOnly_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_Barrel_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumu_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_Barrel", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_BarrelOnly", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_Barrel_v2_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_v2", + "trig_L2_tiletrackmufeature_L2_2mu4T_Bmumux_v2_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu", + "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_L2StarC", + "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_e5_tight1", + "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_muFast", + "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_noVtx_noOS", + "trig_L2_tiletrackmufeature_L2_2mu4T_DiMu_noVtx_noOS_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_BarrelOnly_prescaled", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_Barrel_prescaled", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_IDTrkNoCut", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_L2StarB_prescaled", + "trig_L2_tiletrackmufeature_L2_2mu4T_Jpsimumu_prescaled", + "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu", + "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu_Barrel", + "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu_BarrelOnly", + "trig_L2_tiletrackmufeature_L2_2mu4T_Upsimumu_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu4T_xe45", + "trig_L2_tiletrackmufeature_L2_2mu4T_xe60", + "trig_L2_tiletrackmufeature_L2_2mu6", + "trig_L2_tiletrackmufeature_L2_2mu6_Bmumu", + "trig_L2_tiletrackmufeature_L2_2mu6_Bmumu_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux", + "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux_L2StarA", + "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux_v2", + "trig_L2_tiletrackmufeature_L2_2mu6_Bmumux_v2_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu6_DiMu", + "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_DY20", + "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_DY25", + "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_noVtx_noOS", + "trig_L2_tiletrackmufeature_L2_2mu6_DiMu_noVtx_noOS_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu6_Jpsimumu", + "trig_L2_tiletrackmufeature_L2_2mu6_Jpsimumu_L2StarB", + "trig_L2_tiletrackmufeature_L2_2mu6_Upsimumu", + "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY", + "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY_2j25_a4tchad", + "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY_noVtx_noOS", + "trig_L2_tiletrackmufeature_L2_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", + "trig_L2_tiletrackmufeature_L2_2mu8_EFxe30", + "trig_L2_tiletrackmufeature_L2_2mu8_EFxe40", + "trig_L2_tiletrackmufeature_L2_2mu8_EFxe40wMu", + "trig_L2_tiletrackmufeature_L2_mu10", + "trig_L2_tiletrackmufeature_L2_mu10_Jpsimumu", + "trig_L2_tiletrackmufeature_L2_mu10_Jpsimumu_L2StarA", + "trig_L2_tiletrackmufeature_L2_mu10_MSonly", + "trig_L2_tiletrackmufeature_L2_mu10_Upsimumu_tight_FS", + "trig_L2_tiletrackmufeature_L2_mu10_Upsimumu_tight_FS_L2StarA", + "trig_L2_tiletrackmufeature_L2_mu10_muCombTag_NoEF_tight", + "trig_L2_tiletrackmufeature_L2_mu10_muCombTag_NoEF_tight1", + "trig_L2_tiletrackmufeature_L2_mu10i_g10_medium", + "trig_L2_tiletrackmufeature_L2_mu10i_g10_medium_TauMass", + "trig_L2_tiletrackmufeature_L2_mu10i_loose_g12Tvh_medium", + "trig_L2_tiletrackmufeature_L2_mu10i_loose_g12Tvh_medium_TauMass", + "trig_L2_tiletrackmufeature_L2_mu11_empty_NoAlg", + "trig_L2_tiletrackmufeature_L2_mu13", + "trig_L2_tiletrackmufeature_L2_mu15", + "trig_L2_tiletrackmufeature_L2_mu15_l2cal", + "trig_L2_tiletrackmufeature_L2_mu15_muCombTag_NoEF_tight", + "trig_L2_tiletrackmufeature_L2_mu15_muCombTag_NoEF_tight1", + "trig_L2_tiletrackmufeature_L2_mu18", + "trig_L2_tiletrackmufeature_L2_mu18_2g10_loose", + "trig_L2_tiletrackmufeature_L2_mu18_2g10_medium", + "trig_L2_tiletrackmufeature_L2_mu18_IDTrkNoCut_tight", + "trig_L2_tiletrackmufeature_L2_mu18_medium", + "trig_L2_tiletrackmufeature_L2_mu18_tight", + "trig_L2_tiletrackmufeature_L2_mu18_tight_2mu4T_Jpsimumu", + "trig_L2_tiletrackmufeature_L2_mu18_tight_e7_medium1", + "trig_L2_tiletrackmufeature_L2_mu18i4_tight", + "trig_L2_tiletrackmufeature_L2_mu18it_tight", + "trig_L2_tiletrackmufeature_L2_mu20_muCombTag_NoEF_tight", + "trig_L2_tiletrackmufeature_L2_mu20_muCombTag_NoEF_tight1", + "trig_L2_tiletrackmufeature_L2_mu20i_tight_g5_loose_TauMass", + "trig_L2_tiletrackmufeature_L2_mu20i_tight_g5_medium", + "trig_L2_tiletrackmufeature_L2_mu20i_tight_g5_medium_TauMass", + "trig_L2_tiletrackmufeature_L2_mu20it_tight", + "trig_L2_tiletrackmufeature_L2_mu22_IDTrkNoCut_tight", + "trig_L2_tiletrackmufeature_L2_mu24", + "trig_L2_tiletrackmufeature_L2_mu24_g20vh_loose", + "trig_L2_tiletrackmufeature_L2_mu24_g20vh_medium", + "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe40", + "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe40wMu", + "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe60", + "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_EFxe60wMu", + "trig_L2_tiletrackmufeature_L2_mu24_j60_c4cchad_xe35", + "trig_L2_tiletrackmufeature_L2_mu24_j65_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu24_medium", + "trig_L2_tiletrackmufeature_L2_mu24_muCombTag_NoEF_tight", + "trig_L2_tiletrackmufeature_L2_mu24_tight", + "trig_L2_tiletrackmufeature_L2_mu24_tight_3j35_a4tchad", + "trig_L2_tiletrackmufeature_L2_mu24_tight_3j45_a4tchad", + "trig_L2_tiletrackmufeature_L2_mu24_tight_4j35_a4tchad", + "trig_L2_tiletrackmufeature_L2_mu24_tight_4j45_a4tchad", + "trig_L2_tiletrackmufeature_L2_mu24_tight_EFxe40", + "trig_L2_tiletrackmufeature_L2_mu24_tight_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu24_tight_L2StarC", + "trig_L2_tiletrackmufeature_L2_mu24_tight_muFast", + "trig_L2_tiletrackmufeature_L2_mu36_tight", + "trig_L2_tiletrackmufeature_L2_mu40_MSonly_barrel_tight", + "trig_L2_tiletrackmufeature_L2_mu40_slow_outOfTime_tight", + "trig_L2_tiletrackmufeature_L2_mu40_slow_tight", + "trig_L2_tiletrackmufeature_L2_mu40_tight", + "trig_L2_tiletrackmufeature_L2_mu4T", + "trig_L2_tiletrackmufeature_L2_mu4T_cosmic", + "trig_L2_tiletrackmufeature_L2_mu4T_j105_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu4T_j10_a4TTem", + "trig_L2_tiletrackmufeature_L2_mu4T_j140_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu4T_j15_a4TTem", + "trig_L2_tiletrackmufeature_L2_mu4T_j165_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu4T_j30_a4TTem", + "trig_L2_tiletrackmufeature_L2_mu4T_j40_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu4T_j50_a4TTem", + "trig_L2_tiletrackmufeature_L2_mu4T_j50_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu4T_j60_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu4T_j60_c4cchad_xe40", + "trig_L2_tiletrackmufeature_L2_mu4T_j75_a4TTem", + "trig_L2_tiletrackmufeature_L2_mu4T_j75_c4cchad", + "trig_L2_tiletrackmufeature_L2_mu4T_muFast", + "trig_L2_tiletrackmufeature_L2_mu4Ti_g20Tvh_medium", + "trig_L2_tiletrackmufeature_L2_mu4Ti_g20Tvh_medium_TauMass", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu_Barrel", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu_Barrel_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumu_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_Barrel", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_v2", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Bmumux_v2_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_DiMu", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_Barrel_prescaled", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_IDTrkNoCut", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_L2StarB_prescaled", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Jpsimumu_prescaled", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Upsimumu", + "trig_L2_tiletrackmufeature_L2_mu4Tmu6_Upsimumu_Barrel", + "trig_L2_tiletrackmufeature_L2_mu4_L1MU11_MSonly_cosmic", + "trig_L2_tiletrackmufeature_L2_mu4_L1MU11_cosmic", + "trig_L2_tiletrackmufeature_L2_mu4_empty_NoAlg", + "trig_L2_tiletrackmufeature_L2_mu4_firstempty_NoAlg", + "trig_L2_tiletrackmufeature_L2_mu4_l2cal_empty", + "trig_L2_tiletrackmufeature_L2_mu4_unpaired_iso_NoAlg", + "trig_L2_tiletrackmufeature_L2_mu50_MSonly_barrel_tight", + "trig_L2_tiletrackmufeature_L2_mu6", + "trig_L2_tiletrackmufeature_L2_mu60_slow_outOfTime_tight1", + "trig_L2_tiletrackmufeature_L2_mu60_slow_tight1", + "trig_L2_tiletrackmufeature_L2_mu6T_2b50_medium_2j50_c4cchad_L1J20", + "trig_L2_tiletrackmufeature_L2_mu6_Jpsimumu_L2StarA", + "trig_L2_tiletrackmufeature_L2_mu6_Jpsimumu_tight", + "trig_L2_tiletrackmufeature_L2_mu6_Jpsimumu_tight_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu6_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu6_MSonly", + "trig_L2_tiletrackmufeature_L2_mu6_Trk_Jpsi_loose", + "trig_L2_tiletrackmufeature_L2_mu6_Trk_Jpsi_loose_L2StarA", + "trig_L2_tiletrackmufeature_L2_mu6_Trk_Jpsi_loose_L2StarB", + "trig_L2_tiletrackmufeature_L2_mu8", + "trig_L2_tiletrackmufeature_L2_mu8_4j15_a4TTem", + "trig_EF_trigmuonef_EF_2mu10", + "trig_EF_trigmuonef_EF_2mu10_MSonly_g10_loose", + "trig_EF_trigmuonef_EF_2mu10_MSonly_g10_loose_EMPTY", + "trig_EF_trigmuonef_EF_2mu10_MSonly_g10_loose_UNPAIRED_ISO", + #"trig_EF_trigmuonef_EF_2mu13", + "trig_EF_trigmuonef_EF_2mu13_Zmumu_IDTrkNoCut", + "trig_EF_trigmuonef_EF_2mu13_muFast", + "trig_EF_trigmuonef_EF_2mu15", + "trig_EF_trigmuonef_EF_2mu4T", + "trig_EF_trigmuonef_EF_2mu4T_2e5_tight1", + "trig_EF_trigmuonef_EF_2mu4T_Bmumu", + "trig_EF_trigmuonef_EF_2mu4T_Bmumu_Barrel", + "trig_EF_trigmuonef_EF_2mu4T_Bmumu_BarrelOnly", + "trig_EF_trigmuonef_EF_2mu4T_Bmumu_BarrelOnly_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Bmumu_Barrel_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Bmumu_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux_Barrel", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux_BarrelOnly", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux_Barrel_v2_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux_v2", + "trig_EF_trigmuonef_EF_2mu4T_Bmumux_v2_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_DiMu", + "trig_EF_trigmuonef_EF_2mu4T_DiMu_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_DiMu_L2StarC", + "trig_EF_trigmuonef_EF_2mu4T_DiMu_e5_tight1", + "trig_EF_trigmuonef_EF_2mu4T_DiMu_muFast", + "trig_EF_trigmuonef_EF_2mu4T_DiMu_noVtx_noOS", + "trig_EF_trigmuonef_EF_2mu4T_DiMu_noVtx_noOS_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_BarrelOnly_prescaled", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_Barrel_prescaled", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_IDTrkNoCut", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_L2StarB_prescaled", + "trig_EF_trigmuonef_EF_2mu4T_Jpsimumu_prescaled", + "trig_EF_trigmuonef_EF_2mu4T_Upsimumu", + "trig_EF_trigmuonef_EF_2mu4T_Upsimumu_Barrel", + "trig_EF_trigmuonef_EF_2mu4T_Upsimumu_BarrelOnly", + "trig_EF_trigmuonef_EF_2mu4T_Upsimumu_L2StarB", + "trig_EF_trigmuonef_EF_2mu4T_xe60", + "trig_EF_trigmuonef_EF_2mu4T_xe60_tclcw", + "trig_EF_trigmuonef_EF_2mu6", + "trig_EF_trigmuonef_EF_2mu6_Bmumu", + "trig_EF_trigmuonef_EF_2mu6_Bmumu_L2StarB", + "trig_EF_trigmuonef_EF_2mu6_Bmumux", + "trig_EF_trigmuonef_EF_2mu6_Bmumux_L2StarA", + "trig_EF_trigmuonef_EF_2mu6_Bmumux_v2", + "trig_EF_trigmuonef_EF_2mu6_Bmumux_v2_L2StarB", + "trig_EF_trigmuonef_EF_2mu6_DiMu", + "trig_EF_trigmuonef_EF_2mu6_DiMu_DY20", + "trig_EF_trigmuonef_EF_2mu6_DiMu_DY25", + "trig_EF_trigmuonef_EF_2mu6_DiMu_L2StarB", + "trig_EF_trigmuonef_EF_2mu6_DiMu_noVtx_noOS", + "trig_EF_trigmuonef_EF_2mu6_DiMu_noVtx_noOS_L2StarB", + "trig_EF_trigmuonef_EF_2mu6_Jpsimumu", + "trig_EF_trigmuonef_EF_2mu6_Jpsimumu_L2StarB", + "trig_EF_trigmuonef_EF_2mu6_Upsimumu", + "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY", + "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY_2j25_a4tchad", + "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY_noVtx_noOS", + "trig_EF_trigmuonef_EF_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", + "trig_EF_trigmuonef_EF_2mu8_EFxe30", + "trig_EF_trigmuonef_EF_2mu8_EFxe30_tclcw", + "trig_EF_trigmuonef_EF_2mu8_EFxe40_tclcw", + "trig_EF_trigmuonef_EF_2mu8_EFxe40wMu_tclcw", + "trig_EF_trigmuonef_EF_mu10", + "trig_EF_trigmuonef_EF_mu10_Jpsimumu", + "trig_EF_trigmuonef_EF_mu10_Jpsimumu_L2StarA", + "trig_EF_trigmuonef_EF_mu10_MSonly", + "trig_EF_trigmuonef_EF_mu10_Upsimumu_tight_FS", + "trig_EF_trigmuonef_EF_mu10_Upsimumu_tight_FS_L2StarA", + "trig_EF_trigmuonef_EF_mu10_muCombTag_NoEF_tight", + "trig_EF_trigmuonef_EF_mu10_muCombTag_NoEF_tight1", + "trig_EF_trigmuonef_EF_mu10i_g10_medium", + "trig_EF_trigmuonef_EF_mu10i_g10_medium_TauMass", + "trig_EF_trigmuonef_EF_mu10i_loose_g12Tvh_medium", + "trig_EF_trigmuonef_EF_mu10i_loose_g12Tvh_medium_TauMass", + "trig_EF_trigmuonef_EF_mu11_empty_NoAlg", + "trig_EF_trigmuonef_EF_mu13", + #"trig_EF_trigmuonef_EF_mu15", + "trig_EF_trigmuonef_EF_mu15_muCombTag_NoEF_tight", + "trig_EF_trigmuonef_EF_mu15_muCombTag_NoEF_tight1", + "trig_EF_trigmuonef_EF_mu18", + "trig_EF_trigmuonef_EF_mu18_2g10_loose", + "trig_EF_trigmuonef_EF_mu18_2g10_medium", + "trig_EF_trigmuonef_EF_mu18_IDTrkNoCut_tight", + "trig_EF_trigmuonef_EF_mu18_medium", + #"trig_EF_trigmuonef_EF_mu18_tight", + "trig_EF_trigmuonef_EF_mu18_tight_2mu4_EFFS", + "trig_EF_trigmuonef_EF_mu18_tight_Jpsi_EFFS", + "trig_EF_trigmuonef_EF_mu18_tight_L2_2mu4T_Jpsimumu", + "trig_EF_trigmuonef_EF_mu18_tight_e7_medium1", + #"trig_EF_trigmuonef_EF_mu18_tight_mu8_EFFS", + "trig_EF_trigmuonef_EF_mu18i4_tight", + "trig_EF_trigmuonef_EF_mu18it_tight", + "trig_EF_trigmuonef_EF_mu20_muCombTag_NoEF_tight", + "trig_EF_trigmuonef_EF_mu20_muCombTag_NoEF_tight1", + "trig_EF_trigmuonef_EF_mu20i_tight_g5_loose_TauMass", + "trig_EF_trigmuonef_EF_mu20i_tight_g5_medium", + "trig_EF_trigmuonef_EF_mu20i_tight_g5_medium_TauMass", + "trig_EF_trigmuonef_EF_mu20it_tight", + "trig_EF_trigmuonef_EF_mu22_IDTrkNoCut_tight", + "trig_EF_trigmuonef_EF_mu24", + "trig_EF_trigmuonef_EF_mu24_g20vh_loose", + "trig_EF_trigmuonef_EF_mu24_g20vh_medium", + "trig_EF_trigmuonef_EF_mu24_j65_a4tchad", + "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe40", + "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe40_tclcw", + "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe40wMu_tclcw", + "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe60_tclcw", + "trig_EF_trigmuonef_EF_mu24_j65_a4tchad_EFxe60wMu_tclcw", + "trig_EF_trigmuonef_EF_mu24_medium", + "trig_EF_trigmuonef_EF_mu24_muCombTag_NoEF_tight", + "trig_EF_trigmuonef_EF_mu24_tight", + "trig_EF_trigmuonef_EF_mu24_tight_3j35_a4tchad", + "trig_EF_trigmuonef_EF_mu24_tight_3j45_a4tchad", + "trig_EF_trigmuonef_EF_mu24_tight_4j35_a4tchad", + "trig_EF_trigmuonef_EF_mu24_tight_4j45_a4tchad", + "trig_EF_trigmuonef_EF_mu24_tight_EFxe40", + "trig_EF_trigmuonef_EF_mu24_tight_L2StarB", + "trig_EF_trigmuonef_EF_mu24_tight_L2StarC", + "trig_EF_trigmuonef_EF_mu24_tight_MG", + "trig_EF_trigmuonef_EF_mu24_tight_MuonEF", + "trig_EF_trigmuonef_EF_mu24_tight_mu6_EFFS", + #"trig_EF_trigmuonef_EF_mu24i_tight", + #"trig_EF_trigmuonef_EF_mu24i_tight_MG", + "trig_EF_trigmuonef_EF_mu24i_tight_MuonEF", + "trig_EF_trigmuonef_EF_mu24i_tight_muFast", + "trig_EF_trigmuonef_EF_mu36_tight", + "trig_EF_trigmuonef_EF_mu40_MSonly_barrel_tight", + "trig_EF_trigmuonef_EF_mu40_slow_outOfTime_tight", + "trig_EF_trigmuonef_EF_mu40_slow_tight", + "trig_EF_trigmuonef_EF_mu40_tight", + "trig_EF_trigmuonef_EF_mu4T", + "trig_EF_trigmuonef_EF_mu4T_cosmic", + "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j110_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j145_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j15_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j15_a4tchad_matchedZ", + "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j180_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j220_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmuonef_EF_mu4T_j25_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j25_a4tchad_matchedZ", + "trig_EF_trigmuonef_EF_mu4T_j280_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j280_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j35_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j35_a4tchad_matchedZ", + "trig_EF_trigmuonef_EF_mu4T_j360_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j360_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_L2FS_matchedZ", + "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j45_a4tchad_matchedZ", + "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_L2FS_matchedZ", + "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j55_a4tchad_matchedZ", + "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_xe60_tclcw_loose", + "trig_EF_trigmuonef_EF_mu4T_j65_a4tchad_xe70_tclcw_veryloose", + "trig_EF_trigmuonef_EF_mu4T_j80_a4tchad_L2FS_matched", + "trig_EF_trigmuonef_EF_mu4T_j80_a4tchad_matched", + "trig_EF_trigmuonef_EF_mu4T_muFast", + "trig_EF_trigmuonef_EF_mu4Ti_g20Tvh_medium", + "trig_EF_trigmuonef_EF_mu4Ti_g20Tvh_medium_TauMass", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu_Barrel", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu_Barrel_L2StarB", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumu_L2StarB", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_Barrel", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_v2", + "trig_EF_trigmuonef_EF_mu4Tmu6_Bmumux_v2_L2StarB", + "trig_EF_trigmuonef_EF_mu4Tmu6_DiMu", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_Barrel_prescaled", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_IDTrkNoCut", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_L2StarB", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_L2StarB_prescaled", + "trig_EF_trigmuonef_EF_mu4Tmu6_Jpsimumu_prescaled", + "trig_EF_trigmuonef_EF_mu4Tmu6_Upsimumu", + "trig_EF_trigmuonef_EF_mu4Tmu6_Upsimumu_Barrel", + "trig_EF_trigmuonef_EF_mu4_L1MU11_MSonly_cosmic", + "trig_EF_trigmuonef_EF_mu4_L1MU11_cosmic", + "trig_EF_trigmuonef_EF_mu4_empty_NoAlg", + "trig_EF_trigmuonef_EF_mu4_firstempty_NoAlg", + "trig_EF_trigmuonef_EF_mu4_unpaired_iso_NoAlg", + "trig_EF_trigmuonef_EF_mu50_MSonly_barrel_tight", + "trig_EF_trigmuonef_EF_mu6", + "trig_EF_trigmuonef_EF_mu60_slow_outOfTime_tight1", + "trig_EF_trigmuonef_EF_mu60_slow_tight1", + "trig_EF_trigmuonef_EF_mu6T_2b55_medium_2j55_a4tchad_L1J20_matched", + "trig_EF_trigmuonef_EF_mu6_Jpsimumu_L2StarA", + "trig_EF_trigmuonef_EF_mu6_Jpsimumu_tight", + "trig_EF_trigmuonef_EF_mu6_Jpsimumu_tight_L2StarB", + "trig_EF_trigmuonef_EF_mu6_L2StarB", + "trig_EF_trigmuonef_EF_mu6_MSonly", + "trig_EF_trigmuonef_EF_mu6_Trk_Jpsi_loose", + "trig_EF_trigmuonef_EF_mu6_Trk_Jpsi_loose_L2StarA", + "trig_EF_trigmuonef_EF_mu6_Trk_Jpsi_loose_L2StarB", + "trig_EF_trigmuonef_EF_mu6i", + #"trig_EF_trigmuonef_EF_mu8", + "trig_EF_trigmuonef_EF_mu8_4j45_a4tchad_L2FS", + "trig_EF_trigmugirl_EF_2mu10", + "trig_EF_trigmugirl_EF_2mu10_MSonly_g10_loose", + "trig_EF_trigmugirl_EF_2mu10_MSonly_g10_loose_EMPTY", + "trig_EF_trigmugirl_EF_2mu10_MSonly_g10_loose_UNPAIRED_ISO", + "trig_EF_trigmugirl_EF_2mu13", + "trig_EF_trigmugirl_EF_2mu13_Zmumu_IDTrkNoCut", + "trig_EF_trigmugirl_EF_2mu13_muFast", + "trig_EF_trigmugirl_EF_2mu15", + "trig_EF_trigmugirl_EF_2mu4T", + "trig_EF_trigmugirl_EF_2mu4T_2e5_tight1", + "trig_EF_trigmugirl_EF_2mu4T_Bmumu", + "trig_EF_trigmugirl_EF_2mu4T_Bmumu_Barrel", + "trig_EF_trigmugirl_EF_2mu4T_Bmumu_BarrelOnly", + "trig_EF_trigmugirl_EF_2mu4T_Bmumu_BarrelOnly_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Bmumu_Barrel_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Bmumu_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux_Barrel", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux_BarrelOnly", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux_BarrelOnly_v2_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux_Barrel_v2_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux_v2", + "trig_EF_trigmugirl_EF_2mu4T_Bmumux_v2_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_DiMu", + "trig_EF_trigmugirl_EF_2mu4T_DiMu_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_DiMu_L2StarC", + "trig_EF_trigmugirl_EF_2mu4T_DiMu_e5_tight1", + "trig_EF_trigmugirl_EF_2mu4T_DiMu_muFast", + "trig_EF_trigmugirl_EF_2mu4T_DiMu_noVtx_noOS", + "trig_EF_trigmugirl_EF_2mu4T_DiMu_noVtx_noOS_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly_L2StarB_prescaled", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_BarrelOnly_prescaled", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_Barrel_prescaled", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_IDTrkNoCut", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_L2StarB_prescaled", + "trig_EF_trigmugirl_EF_2mu4T_Jpsimumu_prescaled", + "trig_EF_trigmugirl_EF_2mu4T_Upsimumu", + "trig_EF_trigmugirl_EF_2mu4T_Upsimumu_Barrel", + "trig_EF_trigmugirl_EF_2mu4T_Upsimumu_BarrelOnly", + "trig_EF_trigmugirl_EF_2mu4T_Upsimumu_L2StarB", + "trig_EF_trigmugirl_EF_2mu4T_xe60", + "trig_EF_trigmugirl_EF_2mu4T_xe60_tclcw", + "trig_EF_trigmugirl_EF_2mu6", + "trig_EF_trigmugirl_EF_2mu6_Bmumu", + "trig_EF_trigmugirl_EF_2mu6_Bmumu_L2StarB", + "trig_EF_trigmugirl_EF_2mu6_Bmumux", + "trig_EF_trigmugirl_EF_2mu6_Bmumux_L2StarA", + "trig_EF_trigmugirl_EF_2mu6_Bmumux_v2", + "trig_EF_trigmugirl_EF_2mu6_Bmumux_v2_L2StarB", + "trig_EF_trigmugirl_EF_2mu6_DiMu", + "trig_EF_trigmugirl_EF_2mu6_DiMu_DY20", + "trig_EF_trigmugirl_EF_2mu6_DiMu_DY25", + "trig_EF_trigmugirl_EF_2mu6_DiMu_L2StarB", + "trig_EF_trigmugirl_EF_2mu6_DiMu_noVtx_noOS", + "trig_EF_trigmugirl_EF_2mu6_DiMu_noVtx_noOS_L2StarB", + "trig_EF_trigmugirl_EF_2mu6_Jpsimumu", + "trig_EF_trigmugirl_EF_2mu6_Jpsimumu_L2StarB", + "trig_EF_trigmugirl_EF_2mu6_Upsimumu", + "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY", + "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY_2j25_a4tchad", + "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY_noVtx_noOS", + "trig_EF_trigmugirl_EF_2mu6i_DiMu_DY_noVtx_noOS_2j25_a4tchad", + "trig_EF_trigmugirl_EF_2mu8_EFxe30", + "trig_EF_trigmugirl_EF_2mu8_EFxe30_tclcw", + "trig_EF_trigmugirl_EF_2mu8_EFxe40_tclcw", + "trig_EF_trigmugirl_EF_2mu8_EFxe40wMu_tclcw", + "trig_EF_trigmugirl_EF_mu10", + "trig_EF_trigmugirl_EF_mu10_Jpsimumu", + "trig_EF_trigmugirl_EF_mu10_Jpsimumu_L2StarA", + "trig_EF_trigmugirl_EF_mu10_MSonly", + "trig_EF_trigmugirl_EF_mu10_Upsimumu_tight_FS", + "trig_EF_trigmugirl_EF_mu10_Upsimumu_tight_FS_L2StarA", + "trig_EF_trigmugirl_EF_mu10_muCombTag_NoEF_tight", + "trig_EF_trigmugirl_EF_mu10_muCombTag_NoEF_tight1", + "trig_EF_trigmugirl_EF_mu10i_g10_medium", + "trig_EF_trigmugirl_EF_mu10i_g10_medium_TauMass", + "trig_EF_trigmugirl_EF_mu10i_loose_g12Tvh_medium", + "trig_EF_trigmugirl_EF_mu10i_loose_g12Tvh_medium_TauMass", + "trig_EF_trigmugirl_EF_mu11_empty_NoAlg", + "trig_EF_trigmugirl_EF_mu13", + "trig_EF_trigmugirl_EF_mu15", + "trig_EF_trigmugirl_EF_mu15_muCombTag_NoEF_tight", + "trig_EF_trigmugirl_EF_mu15_muCombTag_NoEF_tight1", + "trig_EF_trigmugirl_EF_mu18", + "trig_EF_trigmugirl_EF_mu18_2g10_loose", + "trig_EF_trigmugirl_EF_mu18_2g10_medium", + "trig_EF_trigmugirl_EF_mu18_IDTrkNoCut_tight", + "trig_EF_trigmugirl_EF_mu18_medium", + "trig_EF_trigmugirl_EF_mu18_tight", + "trig_EF_trigmugirl_EF_mu18_tight_2mu4_EFFS", + "trig_EF_trigmugirl_EF_mu18_tight_Jpsi_EFFS", + "trig_EF_trigmugirl_EF_mu18_tight_L2_2mu4T_Jpsimumu", + "trig_EF_trigmugirl_EF_mu18_tight_e7_medium1", + "trig_EF_trigmugirl_EF_mu18_tight_mu8_EFFS", + "trig_EF_trigmugirl_EF_mu18i4_tight", + "trig_EF_trigmugirl_EF_mu18it_tight", + "trig_EF_trigmugirl_EF_mu20_muCombTag_NoEF_tight", + "trig_EF_trigmugirl_EF_mu20_muCombTag_NoEF_tight1", + "trig_EF_trigmugirl_EF_mu20i_tight_g5_loose_TauMass", + "trig_EF_trigmugirl_EF_mu20i_tight_g5_medium", + "trig_EF_trigmugirl_EF_mu20i_tight_g5_medium_TauMass", + "trig_EF_trigmugirl_EF_mu20it_tight", + "trig_EF_trigmugirl_EF_mu22_IDTrkNoCut_tight", + "trig_EF_trigmugirl_EF_mu24", + "trig_EF_trigmugirl_EF_mu24_g20vh_loose", + "trig_EF_trigmugirl_EF_mu24_g20vh_medium", + "trig_EF_trigmugirl_EF_mu24_j65_a4tchad", + "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe40", + "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe40_tclcw", + "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe40wMu_tclcw", + "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe60_tclcw", + "trig_EF_trigmugirl_EF_mu24_j65_a4tchad_EFxe60wMu_tclcw", + "trig_EF_trigmugirl_EF_mu24_medium", + "trig_EF_trigmugirl_EF_mu24_muCombTag_NoEF_tight", + "trig_EF_trigmugirl_EF_mu24_tight", + "trig_EF_trigmugirl_EF_mu24_tight_3j35_a4tchad", + "trig_EF_trigmugirl_EF_mu24_tight_3j45_a4tchad", + "trig_EF_trigmugirl_EF_mu24_tight_4j35_a4tchad", + "trig_EF_trigmugirl_EF_mu24_tight_4j45_a4tchad", + "trig_EF_trigmugirl_EF_mu24_tight_EFxe40", + "trig_EF_trigmugirl_EF_mu24_tight_L2StarB", + "trig_EF_trigmugirl_EF_mu24_tight_L2StarC", + "trig_EF_trigmugirl_EF_mu24_tight_MG", + "trig_EF_trigmugirl_EF_mu24_tight_MuonEF", + "trig_EF_trigmugirl_EF_mu24_tight_mu6_EFFS", + "trig_EF_trigmugirl_EF_mu24i_tight", + "trig_EF_trigmugirl_EF_mu24i_tight_MG", + "trig_EF_trigmugirl_EF_mu24i_tight_MuonEF", + "trig_EF_trigmugirl_EF_mu24i_tight_muFast", + "trig_EF_trigmugirl_EF_mu36_tight", + "trig_EF_trigmugirl_EF_mu40_MSonly_barrel_tight", + "trig_EF_trigmugirl_EF_mu40_slow_outOfTime_tight", + "trig_EF_trigmugirl_EF_mu40_slow_tight", + "trig_EF_trigmugirl_EF_mu40_tight", + "trig_EF_trigmugirl_EF_mu4T", + "trig_EF_trigmugirl_EF_mu4T_cosmic", + "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j110_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j145_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j15_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j15_a4tchad_matchedZ", + "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j180_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_L2FS_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j220_a4tchad_matched_jetcalibdelayed", + "trig_EF_trigmugirl_EF_mu4T_j25_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j25_a4tchad_matchedZ", + "trig_EF_trigmugirl_EF_mu4T_j280_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j280_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j35_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j35_a4tchad_matchedZ", + "trig_EF_trigmugirl_EF_mu4T_j360_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j360_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_L2FS_matchedZ", + "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j45_a4tchad_matchedZ", + "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_L2FS_matchedZ", + "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j55_a4tchad_matchedZ", + "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_xe60_tclcw_loose", + "trig_EF_trigmugirl_EF_mu4T_j65_a4tchad_xe70_tclcw_veryloose", + "trig_EF_trigmugirl_EF_mu4T_j80_a4tchad_L2FS_matched", + "trig_EF_trigmugirl_EF_mu4T_j80_a4tchad_matched", + "trig_EF_trigmugirl_EF_mu4T_muFast", + "trig_EF_trigmugirl_EF_mu4Ti_g20Tvh_medium", + "trig_EF_trigmugirl_EF_mu4Ti_g20Tvh_medium_TauMass", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu_Barrel", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu_Barrel_L2StarB", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumu_L2StarB", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_Barrel", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_Barrel_v2_L2StarB", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_v2", + "trig_EF_trigmugirl_EF_mu4Tmu6_Bmumux_v2_L2StarB", + "trig_EF_trigmugirl_EF_mu4Tmu6_DiMu", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel_L2StarB_prescaled", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_Barrel_prescaled", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_IDTrkNoCut", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_L2StarB", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_L2StarB_prescaled", + "trig_EF_trigmugirl_EF_mu4Tmu6_Jpsimumu_prescaled", + "trig_EF_trigmugirl_EF_mu4Tmu6_Upsimumu", + "trig_EF_trigmugirl_EF_mu4Tmu6_Upsimumu_Barrel", + "trig_EF_trigmugirl_EF_mu4_L1MU11_MSonly_cosmic", + "trig_EF_trigmugirl_EF_mu4_L1MU11_cosmic", + "trig_EF_trigmugirl_EF_mu4_empty_NoAlg", + "trig_EF_trigmugirl_EF_mu4_firstempty_NoAlg", + "trig_EF_trigmugirl_EF_mu4_unpaired_iso_NoAlg", + "trig_EF_trigmugirl_EF_mu50_MSonly_barrel_tight", + "trig_EF_trigmugirl_EF_mu6", + "trig_EF_trigmugirl_EF_mu60_slow_outOfTime_tight1", + "trig_EF_trigmugirl_EF_mu60_slow_tight1", + "trig_EF_trigmugirl_EF_mu6T_2b55_medium_2j55_a4tchad_L1J20_matched", + "trig_EF_trigmugirl_EF_mu6_Jpsimumu_L2StarA", + "trig_EF_trigmugirl_EF_mu6_Jpsimumu_tight", + "trig_EF_trigmugirl_EF_mu6_Jpsimumu_tight_L2StarB", + "trig_EF_trigmugirl_EF_mu6_L2StarB", + "trig_EF_trigmugirl_EF_mu6_MSonly", + "trig_EF_trigmugirl_EF_mu6_Trk_Jpsi_loose", + "trig_EF_trigmugirl_EF_mu6_Trk_Jpsi_loose_L2StarA", + "trig_EF_trigmugirl_EF_mu6_Trk_Jpsi_loose_L2StarB", + "trig_EF_trigmugirl_EF_mu6i", + "trig_EF_trigmugirl_EF_mu8", + "trig_EF_trigmugirl_EF_mu8_4j45_a4tchad_L2FS", + #"trig_DB_SMK", + "trig_DB_L1PSK", + "trig_DB_HLTPSK", + "trig_bgCode", + "trig_L1_emtau_n", + "trig_L1_emtau_eta", + "trig_L1_emtau_phi", + "trig_L1_emtau_thrNames", + "trig_L1_emtau_thrValues", + "trig_L1_emtau_core", + "trig_L1_emtau_EMClus", + "trig_L1_emtau_tauClus", + "trig_L1_emtau_EMIsol", + "trig_L1_emtau_hadIsol", + "trig_L1_emtau_hadCore", + "trig_L1_emtau_thrPattern", + "trig_L2_emcl_n", + "trig_L2_emcl_quality", + "trig_L2_emcl_E", + "trig_L2_emcl_Et", + "trig_L2_emcl_eta", + "trig_L2_emcl_phi", + "trig_L2_emcl_E237", + "trig_L2_emcl_E277", + "trig_L2_emcl_fracs1", + "trig_L2_emcl_weta2", + "trig_L2_emcl_Ehad1", + "trig_L2_emcl_eta1", + "trig_L2_emcl_emaxs1", + "trig_L2_emcl_e2tsts1", + "trig_L2_emcl_E233", + "trig_L2_emcl_wstot", + "trig_L2_trk_idscan_eGamma_n", + "trig_L2_trk_idscan_eGamma_algorithmId", + "trig_L2_trk_idscan_eGamma_trackStatus", + "trig_L2_trk_idscan_eGamma_chi2Ndof", + "trig_L2_trk_idscan_eGamma_nStrawHits", + "trig_L2_trk_idscan_eGamma_nHighThrHits", + "trig_L2_trk_idscan_eGamma_nPixelSpacePoints", + "trig_L2_trk_idscan_eGamma_nSCT_SpacePoints", + "trig_L2_trk_idscan_eGamma_param_a0", + "trig_L2_trk_idscan_eGamma_param_z0", + "trig_L2_trk_idscan_eGamma_param_phi0", + "trig_L2_trk_idscan_eGamma_param_eta", + "trig_L2_trk_idscan_eGamma_param_pt", + "trig_L2_trk_sitrack_eGamma_n", + "trig_L2_trk_sitrack_eGamma_algorithmId", + "trig_L2_trk_sitrack_eGamma_trackStatus", + "trig_L2_trk_sitrack_eGamma_chi2Ndof", + "trig_L2_trk_sitrack_eGamma_nStrawHits", + "trig_L2_trk_sitrack_eGamma_nHighThrHits", + "trig_L2_trk_sitrack_eGamma_nPixelSpacePoints", + "trig_L2_trk_sitrack_eGamma_nSCT_SpacePoints", + "trig_L2_trk_sitrack_eGamma_param_a0", + "trig_L2_trk_sitrack_eGamma_param_z0", + "trig_L2_trk_sitrack_eGamma_param_phi0", + "trig_L2_trk_sitrack_eGamma_param_eta", + "trig_L2_trk_sitrack_eGamma_param_pt", + "trig_L2_el_n", + "trig_L2_el_E", + "trig_L2_el_Et", + "trig_L2_el_pt", + "trig_L2_el_eta", + "trig_L2_el_phi", + "trig_L2_el_RoIWord", + "trig_L2_el_zvertex", + "trig_L2_el_charge", + "trig_L2_el_trackAlgo", + "trig_L2_el_TRTHighTHitsRatio", + "trig_L2_el_deltaeta1", + "trig_L2_el_deltaphi2", + "trig_L2_el_EtOverPt", + "trig_L2_el_reta", + "trig_L2_el_Eratio", + "trig_L2_el_Ethad1", + "trig_L2_el_nTRTHits", + "trig_L2_el_nTRTHighTHits", + "trig_L2_el_trackIndx", + "trig_L2_el_trkPt", + "trig_L2_el_trkEtaAtCalo", + "trig_L2_el_trkPhiAtCalo", + "trig_L2_el_caloEta", + "trig_L2_el_caloPhi", + "trig_L2_el_F1", + "trig_L2_ph_n", + "trig_L2_ph_E", + "trig_L2_ph_Et", + "trig_L2_ph_pt", + "trig_L2_ph_eta", + "trig_L2_ph_phi", + "trig_L2_ph_RoIWord", + "trig_L2_ph_HadEt1", + "trig_L2_ph_Eratio", + "trig_L2_ph_Reta", + "trig_L2_ph_dPhi", + "trig_L2_ph_dEta", + "trig_L2_ph_F1", + "trig_EF_emcl_n", + "trig_EF_emcl_pt", + "trig_EF_emcl_eta", + "trig_EF_emcl_phi", + "trig_EF_emcl_E_em", + "trig_EF_emcl_E_had", + "trig_EF_emcl_firstEdens", + "trig_EF_emcl_cellmaxfrac", + "trig_EF_emcl_longitudinal", + "trig_EF_emcl_secondlambda", + "trig_EF_emcl_lateral", + "trig_EF_emcl_secondR", + "trig_EF_emcl_centerlambda", + "trig_EF_emcl_deltaTheta", + "trig_EF_emcl_deltaPhi", + "trig_EF_emcl_centermag", + "trig_EF_emcl_time", + "trig_EF_emcl_slw_n", + "trig_EF_emcl_slw_pt", + "trig_EF_emcl_slw_eta", + "trig_EF_emcl_slw_phi", + "trig_EF_emcl_slw_E_em", + "trig_EF_emcl_slw_E_had", + "trig_EF_emcl_slw_firstEdens", + "trig_EF_emcl_slw_cellmaxfrac", + "trig_EF_emcl_slw_longitudinal", + "trig_EF_emcl_slw_secondlambda", + "trig_EF_emcl_slw_lateral", + "trig_EF_emcl_slw_secondR", + "trig_EF_emcl_slw_centerlambda", + "trig_EF_emcl_slw_deltaTheta", + "trig_EF_emcl_slw_deltaPhi", + "trig_EF_emcl_slw_centermag", + "trig_EF_emcl_slw_time", + #"trig_EF_el_n", + "trig_EF_el_E", + "trig_EF_el_Et", + "trig_EF_el_pt", + "trig_EF_el_m", + #"trig_EF_el_eta", + #"trig_EF_el_phi", + "trig_EF_el_author", + "trig_EF_el_isEM", + "trig_EF_el_isEMLoose", + "trig_EF_el_isEMMedium", + "trig_EF_el_isEMTight", + "trig_EF_el_loose", + "trig_EF_el_looseIso", + "trig_EF_el_medium", + "trig_EF_el_mediumIso", + "trig_EF_el_mediumWithoutTrack", + "trig_EF_el_mediumIsoWithoutTrack", + "trig_EF_el_tight", + "trig_EF_el_tightIso", + "trig_EF_el_tightWithoutTrack", + "trig_EF_el_tightIsoWithoutTrack", + "trig_EF_el_loosePP", + "trig_EF_el_loosePPIso", + "trig_EF_el_mediumPP", + "trig_EF_el_mediumPPIso", + "trig_EF_el_tightPP", + "trig_EF_el_tightPPIso", + "trig_EF_el_Ethad", + "trig_EF_el_Ethad1", + "trig_EF_el_f1", + "trig_EF_el_f1core", + "trig_EF_el_Emins1", + "trig_EF_el_fside", + "trig_EF_el_Emax2", + "trig_EF_el_ws3", + "trig_EF_el_wstot", + "trig_EF_el_emaxs1", + "trig_EF_el_deltaEs", + "trig_EF_el_E233", + "trig_EF_el_E237", + "trig_EF_el_E277", + "trig_EF_el_weta2", + "trig_EF_el_f3", + "trig_EF_el_f3core", + "trig_EF_el_rphiallcalo", + "trig_EF_el_Etcone45", + "trig_EF_el_Etcone15", + "trig_EF_el_Etcone20", + "trig_EF_el_Etcone25", + "trig_EF_el_Etcone30", + "trig_EF_el_Etcone35", + "trig_EF_el_Etcone40", + "trig_EF_el_ptcone20", + "trig_EF_el_ptcone30", + "trig_EF_el_ptcone40", + "trig_EF_el_pos7", + "trig_EF_el_etacorrmag", + "trig_EF_el_deltaeta1", + "trig_EF_el_deltaeta2", + "trig_EF_el_deltaphi2", + "trig_EF_el_expectHitInBLayer", + "trig_EF_el_trackd0_physics", + "trig_EF_el_reta", + "trig_EF_el_rphi", + "trig_EF_el_cl_E", + "trig_EF_el_cl_pt", + "trig_EF_el_cl_eta", + "trig_EF_el_cl_phi", + "trig_EF_el_cl_etas2", + "trig_EF_el_trackd0", + "trig_EF_el_trackz0", + "trig_EF_el_trackphi", + "trig_EF_el_tracktheta", + "trig_EF_el_trackqoverp", + "trig_EF_el_trackpt", + "trig_EF_el_tracketa", + "trig_EF_el_nBLHits", + "trig_EF_el_nPixHits", + "trig_EF_el_nSCTHits", + "trig_EF_el_nTRTHits", + "trig_EF_el_nTRTHighTHits", + "trig_EF_el_nTRTXenonHits", + "trig_EF_el_nPixHoles", + "trig_EF_el_nSCTHoles", + "trig_EF_el_nTRTHoles", + "trig_EF_el_nPixelDeadSensors", + "trig_EF_el_nSCTDeadSensors", + "trig_EF_el_nBLSharedHits", + "trig_EF_el_nPixSharedHits", + "trig_EF_el_nSCTSharedHits", + "trig_EF_el_nBLayerSplitHits", + "trig_EF_el_nPixSplitHits", + "trig_EF_el_nBLayerOutliers", + "trig_EF_el_nPixelOutliers", + "trig_EF_el_nSCTOutliers", + "trig_EF_el_nTRTOutliers", + "trig_EF_el_nTRTHighTOutliers", + "trig_EF_el_expectBLayerHit", + "trig_EF_el_nSiHits", + "trig_EF_el_TRTHighTHitsRatio", + "trig_EF_el_TRTHighTOutliersRatio", + "trig_EF_el_pixeldEdx", + "trig_EF_el_nGoodHitsPixeldEdx", + "trig_EF_el_massPixeldEdx", + "trig_EF_el_likelihoodsPixeldEdx", + "trig_EF_el_eProbabilityComb", + "trig_EF_el_eProbabilityHT", + "trig_EF_el_eProbabilityToT", + "trig_EF_el_eProbabilityBrem", + "trig_EF_ph_n", + "trig_EF_ph_E", + "trig_EF_ph_Et", + "trig_EF_ph_pt", + "trig_EF_ph_m", + "trig_EF_ph_eta", + "trig_EF_ph_phi", + "trig_EF_ph_px", + "trig_EF_ph_py", + "trig_EF_ph_pz", + "trig_EF_ph_author", + "trig_EF_ph_isRecovered", + "trig_EF_ph_isEM", + "trig_EF_ph_isEMLoose", + "trig_EF_ph_isEMMedium", + "trig_EF_ph_isEMTight", + "trig_EF_ph_convFlag", + "trig_EF_ph_isConv", + "trig_EF_ph_nConv", + "trig_EF_ph_nSingleTrackConv", + "trig_EF_ph_nDoubleTrackConv", + "trig_EF_ph_loose", + "trig_EF_ph_looseIso", + "trig_EF_ph_tight", + "trig_EF_ph_tightIso", + "trig_EF_ph_looseAR", + "trig_EF_ph_looseARIso", + "trig_EF_ph_tightAR", + "trig_EF_ph_tightARIso", + "trig_EF_ph_Ethad", + "trig_EF_ph_Ethad1", + "trig_EF_ph_E033", + "trig_EF_ph_f1", + "trig_EF_ph_f1core", + "trig_EF_ph_Emins1", + "trig_EF_ph_fside", + "trig_EF_ph_Emax2", + "trig_EF_ph_ws3", + "trig_EF_ph_wstot", + "trig_EF_ph_E132", + "trig_EF_ph_E1152", + "trig_EF_ph_emaxs1", + "trig_EF_ph_deltaEs", + "trig_EF_ph_E233", + "trig_EF_ph_E237", + "trig_EF_ph_E277", + "trig_EF_ph_weta2", + "trig_EF_ph_f3", + "trig_EF_ph_f3core", + "trig_EF_ph_rphiallcalo", + "trig_EF_ph_Etcone45", + "trig_EF_ph_Etcone15", + "trig_EF_ph_Etcone20", + "trig_EF_ph_Etcone25", + "trig_EF_ph_Etcone30", + "trig_EF_ph_Etcone35", + "trig_EF_ph_Etcone40", + "trig_EF_ph_ptcone20", + "trig_EF_ph_ptcone30", + "trig_EF_ph_ptcone40", + "trig_EF_ph_convanglematch", + "trig_EF_ph_convtrackmatch", + "trig_EF_ph_hasconv", + "trig_EF_ph_convvtxx", + "trig_EF_ph_convvtxy", + "trig_EF_ph_convvtxz", + "trig_EF_ph_Rconv", + "trig_EF_ph_zconv", + "trig_EF_ph_convvtxchi2", + "trig_EF_ph_pt1conv", + "trig_EF_ph_convtrk1nBLHits", + "trig_EF_ph_convtrk1nPixHits", + "trig_EF_ph_convtrk1nSCTHits", + "trig_EF_ph_convtrk1nTRTHits", + "trig_EF_ph_pt2conv", + "trig_EF_ph_convtrk2nBLHits", + "trig_EF_ph_convtrk2nPixHits", + "trig_EF_ph_convtrk2nSCTHits", + "trig_EF_ph_convtrk2nTRTHits", + "trig_EF_ph_ptconv", + "trig_EF_ph_pzconv", + "trig_EF_ph_reta", + "trig_EF_ph_rphi", + "trig_EF_ph_cl_E", + "trig_EF_ph_cl_pt", + "trig_EF_ph_cl_eta", + "trig_EF_ph_cl_phi", + "trig_EF_ph_cl_etas2", + #"trig_Nav_n", + #"trig_Nav_chain_ChainId", + #"trig_Nav_chain_RoIType", + #"trig_Nav_chain_RoIIndex", + "trig_RoI_L2_e_n", + "trig_RoI_L2_e_type", + "trig_RoI_L2_e_active", + "trig_RoI_L2_e_lastStep", + "trig_RoI_L2_e_TENumber", + "trig_RoI_L2_e_roiNumber", + "trig_RoI_L2_e_TrigRoiDescriptor_TrigT2CaloEgamma", + "trig_RoI_L2_e_TrigRoiDescriptor_TrigT2CaloEgammaStatus", + "trig_RoI_L2_e_TrigEMCluster", + "trig_RoI_L2_e_TrigEMClusterStatus", + "trig_RoI_L2_e_EmTau_ROI", + "trig_RoI_L2_e_EmTau_ROIStatus", + "trig_RoI_L2_e_TrigInDetTrackCollection_TrigSiTrack_eGamma", + "trig_RoI_L2_e_TrigInDetTrackCollection_TrigSiTrack_eGammaStatus", + "trig_RoI_L2_e_TrigInDetTrackCollection_TrigIDSCAN_eGamma", + "trig_RoI_L2_e_TrigInDetTrackCollection_TrigIDSCAN_eGammaStatus", + "trig_RoI_L2_e_TrigInDetTrackCollection_TrigL2SiTrackFinder_eGamma", + "trig_RoI_L2_e_TrigInDetTrackCollection_TrigL2SiTrackFinder_eGammaStatus", + "trig_RoI_L2_e_TrigElectronContainer", + "trig_RoI_L2_e_TrigElectronContainerStatus", + "trig_RoI_L2_e_TrigPhotonContainer", + "trig_RoI_L2_e_TrigPhotonContainerStatus", + "trig_RoI_EF_e_n", + "trig_RoI_EF_e_type", + "trig_RoI_EF_e_active", + "trig_RoI_EF_e_lastStep", + "trig_RoI_EF_e_TENumber", + "trig_RoI_EF_e_roiNumber", + "trig_RoI_EF_e_EmTau_ROI", + "trig_RoI_EF_e_EmTau_ROIStatus", + "trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID", + "trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFIDStatus", + #"trig_RoI_EF_e_egammaContainer_egamma_Electrons", + #"trig_RoI_EF_e_egammaContainer_egamma_ElectronsStatus", + "trig_L1_mu_n", + #"trig_L1_mu_pt", + #"trig_L1_mu_eta", + #"trig_L1_mu_phi", + #"trig_L1_mu_thrName", + "trig_L1_mu_thrNumber", + "trig_L1_mu_RoINumber", + "trig_L1_mu_sectorAddress", + "trig_L1_mu_firstCandidate", + "trig_L1_mu_moreCandInRoI", + "trig_L1_mu_moreCandInSector", + "trig_L1_mu_source", + "trig_L1_mu_hemisphere", + "trig_L1_mu_charge", + "trig_L1_mu_vetoed", + "trig_L2_muonfeature_n", + #"trig_L2_muonfeature_pt", + #"trig_L2_muonfeature_eta", + #"trig_L2_muonfeature_phi", + "trig_L2_muonfeature_dir_phi", + "trig_L2_muonfeature_zeta", + "trig_L2_muonfeature_dir_zeta", + "trig_L2_muonfeature_radius", + "trig_L2_muonfeature_beta", + "trig_L2_muonfeature_br_radius", + "trig_L2_muonfeature_br_sagitta", + "trig_L2_muonfeature_ec_alpha", + "trig_L2_muonfeature_ec_beta", + "trig_L2_muonfeature_roiId", + "trig_L2_muonfeature_saddress", + "trig_L2_muonfeature_algoId", + "trig_L2_muonfeature_sp1_r", + "trig_L2_muonfeature_sp1_z", + "trig_L2_muonfeature_sp1_slope", + "trig_L2_muonfeature_sp2_r", + "trig_L2_muonfeature_sp2_z", + "trig_L2_muonfeature_sp2_slope", + "trig_L2_muonfeature_sp3_r", + "trig_L2_muonfeature_sp3_z", + "trig_L2_muonfeature_sp3_slope", + "trig_L2_muonfeaturedetails_n", + "trig_L2_combmuonfeature_n", + #"trig_L2_combmuonfeature_pt", + #"trig_L2_combmuonfeature_eta", + #"trig_L2_combmuonfeature_phi", + "trig_L2_combmuonfeature_sigma_pt", + "trig_L2_combmuonfeature_comb_strategy", + "trig_L2_combmuonfeature_comb_errorFlag", + "trig_L2_combmuonfeature_comb_matchFlag", + "trig_L2_combmuonfeature_mf_index", + "trig_L2_combmuonfeature_idscantrk_index", + "trig_L2_combmuonfeature_sitracktrk_index", + "trig_L2_combmuonfeature_sitrackfindertrk_index", + "trig_L2_combmuonfeature_sitrackfinderoldtrk_index", + "trig_L2_isomuonfeature_n", + "trig_L2_isomuonfeature_pt", + "trig_L2_isomuonfeature_eta", + "trig_L2_isomuonfeature_phi", + "trig_L2_isomuonfeature_sumet01", + "trig_L2_isomuonfeature_sumet02", + "trig_L2_isomuonfeature_sumet03", + "trig_L2_isomuonfeature_sumet04", + "trig_L2_isomuonfeature_sumpt01", + "trig_L2_isomuonfeature_sumpt02", + "trig_L2_isomuonfeature_sumpt03", + "trig_L2_isomuonfeature_sumpt04", + "trig_L2_isomuonfeature_ptMuID", + "trig_L2_isomuonfeature_maxPtID", + "trig_L2_isomuonfeature_iso_strategy", + "trig_L2_isomuonfeature_iso_errorFlag", + "trig_L2_isomuonfeature_RoiIdMu ", + "trig_L2_tilemufeature_n", + "trig_L2_tilemufeature_eta", + "trig_L2_tilemufeature_phi", + "trig_L2_tilemufeature_enedep", + "trig_L2_tilemufeature_quality", + "trig_L2_tiletrackmufeature_n", + "trig_L2_tiletrackmufeature_pt", + "trig_L2_tiletrackmufeature_eta", + "trig_L2_tiletrackmufeature_phi", + "trig_L2_tiletrackmufeature_PtTR_Trk", + "trig_L2_tiletrackmufeature_EtaTR_Trk", + "trig_L2_tiletrackmufeature_PhiTR_Trk", + "trig_L2_tiletrackmufeature_Typ_IDTrk", + "trig_L2_tiletrackmufeature_tilemu_index", + "trig_L2_tiletrackmufeature_idtrk_algorithmId", + "trig_L2_tiletrackmufeature_idtrk_trackStatus", + "trig_L2_tiletrackmufeature_idtrk_chi2Ndof", + "trig_L2_tiletrackmufeature_idtrk_nStrawHits", + "trig_L2_tiletrackmufeature_idtrk_nHighThrHits", + "trig_L2_tiletrackmufeature_idtrk_nPixelSpacePoints", + "trig_L2_tiletrackmufeature_idtrk_nSCT_SpacePoints", + "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_a0", + "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_z0", + "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_phi0", + "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_eta", + "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_pt", + "trig_L2_tiletrackmufeature_idtrk_idtrkfitpar_hasidtrkfitpar", + "trig_L2_tiletrackmufeature_idtrk_hasidtrk", + "trig_EF_trigmuonef_n", + "trig_EF_trigmuonef_effs15", + "trig_EF_trigmuonef_effs18", + "trig_EF_trigmuonef_effs24", + "trig_EF_trigmuonef_track_n", + #"trig_EF_trigmuonef_track_MuonType", + "trig_EF_trigmuonef_track_MS_pt", + "trig_EF_trigmuonef_track_MS_eta", + "trig_EF_trigmuonef_track_MS_phi", + "trig_EF_trigmuonef_track_MS_charge", + "trig_EF_trigmuonef_track_MS_d0", + "trig_EF_trigmuonef_track_MS_z0", + "trig_EF_trigmuonef_track_MS_chi2", + "trig_EF_trigmuonef_track_MS_chi2prob", + "trig_EF_trigmuonef_track_MS_posX", + "trig_EF_trigmuonef_track_MS_posY", + "trig_EF_trigmuonef_track_MS_posZ", + "trig_EF_trigmuonef_track_MS_hasMS", + #"trig_EF_trigmuonef_track_SA_pt", + #"trig_EF_trigmuonef_track_SA_eta", + #"trig_EF_trigmuonef_track_SA_phi", + "trig_EF_trigmuonef_track_SA_charge", + "trig_EF_trigmuonef_track_SA_d0", + "trig_EF_trigmuonef_track_SA_z0", + "trig_EF_trigmuonef_track_SA_chi2", + "trig_EF_trigmuonef_track_SA_chi2prob", + "trig_EF_trigmuonef_track_SA_posX", + "trig_EF_trigmuonef_track_SA_posY", + "trig_EF_trigmuonef_track_SA_posZ", + "trig_EF_trigmuonef_track_SA_hasSA", + #"trig_EF_trigmuonef_track_CB_pt", + #"trig_EF_trigmuonef_track_CB_eta", + #"trig_EF_trigmuonef_track_CB_phi", + "trig_EF_trigmuonef_track_CB_charge", + "trig_EF_trigmuonef_track_CB_d0", + "trig_EF_trigmuonef_track_CB_z0", + "trig_EF_trigmuonef_track_CB_chi2", + "trig_EF_trigmuonef_track_CB_chi2prob", + "trig_EF_trigmuonef_track_CB_posX", + "trig_EF_trigmuonef_track_CB_posY", + "trig_EF_trigmuonef_track_CB_posZ", + "trig_EF_trigmuonef_track_CB_matchChi2", + "trig_EF_trigmuonef_track_CB_hasCB", + "trig_EF_trigmugirl_n", + "trig_EF_trigmugirl_track_n", + "trig_EF_trigmugirl_track_MuonType", + "trig_EF_trigmugirl_track_MS_pt", + "trig_EF_trigmugirl_track_MS_eta", + "trig_EF_trigmugirl_track_MS_phi", + "trig_EF_trigmugirl_track_MS_charge", + "trig_EF_trigmugirl_track_MS_d0", + "trig_EF_trigmugirl_track_MS_z0", + "trig_EF_trigmugirl_track_MS_chi2", + "trig_EF_trigmugirl_track_MS_chi2prob", + "trig_EF_trigmugirl_track_MS_posX", + "trig_EF_trigmugirl_track_MS_posY", + "trig_EF_trigmugirl_track_MS_posZ", + "trig_EF_trigmugirl_track_MS_hasMS", + "trig_EF_trigmugirl_track_SA_pt", + "trig_EF_trigmugirl_track_SA_eta", + "trig_EF_trigmugirl_track_SA_phi", + "trig_EF_trigmugirl_track_SA_charge", + "trig_EF_trigmugirl_track_SA_d0", + "trig_EF_trigmugirl_track_SA_z0", + "trig_EF_trigmugirl_track_SA_chi2", + "trig_EF_trigmugirl_track_SA_chi2prob", + "trig_EF_trigmugirl_track_SA_posX", + "trig_EF_trigmugirl_track_SA_posY", + "trig_EF_trigmugirl_track_SA_posZ", + "trig_EF_trigmugirl_track_SA_hasSA", + "trig_EF_trigmugirl_track_CB_pt", + "trig_EF_trigmugirl_track_CB_eta", + "trig_EF_trigmugirl_track_CB_phi", + "trig_EF_trigmugirl_track_CB_charge", + "trig_EF_trigmugirl_track_CB_d0", + "trig_EF_trigmugirl_track_CB_z0", + "trig_EF_trigmugirl_track_CB_chi2", + "trig_EF_trigmugirl_track_CB_chi2prob", + "trig_EF_trigmugirl_track_CB_posX", + "trig_EF_trigmugirl_track_CB_posY", + "trig_EF_trigmugirl_track_CB_posZ", + "trig_EF_trigmugirl_track_CB_matchChi2", + "trig_EF_trigmugirl_track_CB_hasCB", + "trig_EF_trigmuonefisolation_n", + "trig_EF_trigmuonefisolation_sumTrkPtCone02", + "trig_EF_trigmuonefisolation_sumTrkPtCone03", + "trig_EF_trigmuonefisolation_trackPosition", + "trig_EF_trigmuonefisolation_sumEtCone01", + "trig_EF_trigmuonefisolation_sumEtCone02", + "trig_EF_trigmuonefisolation_sumEtCone03", + "trig_EF_trigmuonefisolation_sumEtCone04", + "trig_EF_trigmuonefisolation_efinfo_index", + "trig_EF_trigmuonefisolation_efinfoMG_index", + "trig_L2_sitrack_muon_n", + "trig_L2_sitrack_muon_algorithmId", + "trig_L2_sitrack_muon_trackStatus", + "trig_L2_sitrack_muon_chi2Ndof", + "trig_L2_sitrack_muon_nStrawHits", + "trig_L2_sitrack_muon_nHighThrHits", + "trig_L2_sitrack_muon_nPixelSpacePoints", + "trig_L2_sitrack_muon_nSCT_SpacePoints", + "trig_L2_sitrack_muon_param_a0", + "trig_L2_sitrack_muon_param_z0", + "trig_L2_sitrack_muon_param_phi0", + "trig_L2_sitrack_muon_param_eta", + "trig_L2_sitrack_muon_param_pt", + "trig_L2_idscan_muon_n", + "trig_L2_idscan_muon_algorithmId", + "trig_L2_idscan_muon_trackStatus", + "trig_L2_idscan_muon_chi2Ndof", + "trig_L2_idscan_muon_nStrawHits", + "trig_L2_idscan_muon_nHighThrHits", + "trig_L2_idscan_muon_nPixelSpacePoints", + "trig_L2_idscan_muon_nSCT_SpacePoints", + "trig_L2_idscan_muon_param_a0", + "trig_L2_idscan_muon_param_z0", + "trig_L2_idscan_muon_param_phi0", + "trig_L2_idscan_muon_param_eta", + "trig_L2_idscan_muon_param_pt", + "trig_L2_sitrackfinder_muon_n", + "trig_L2_sitrackfinder_muon_algorithmId", + "trig_L2_sitrackfinder_muon_trackStatus", + "trig_L2_sitrackfinder_muon_chi2Ndof", + "trig_L2_sitrackfinder_muon_nStrawHits", + "trig_L2_sitrackfinder_muon_nHighThrHits", + "trig_L2_sitrackfinder_muon_nPixelSpacePoints", + "trig_L2_sitrackfinder_muon_nSCT_SpacePoints", + "trig_L2_sitrackfinder_muon_param_a0", + "trig_L2_sitrackfinder_muon_param_z0", + "trig_L2_sitrackfinder_muon_param_phi0", + "trig_L2_sitrackfinder_muon_param_eta", + "trig_L2_sitrackfinder_muon_param_pt", + "trig_L2_sitrack_isomuon_n", + "trig_L2_sitrack_isomuon_algorithmId", + "trig_L2_sitrack_isomuon_trackStatus", + "trig_L2_sitrack_isomuon_chi2Ndof", + "trig_L2_sitrack_isomuon_nStrawHits", + "trig_L2_sitrack_isomuon_nHighThrHits", + "trig_L2_sitrack_isomuon_nPixelSpacePoints", + "trig_L2_sitrack_isomuon_nSCT_SpacePoints", + "trig_L2_sitrack_isomuon_param_a0", + "trig_L2_sitrack_isomuon_param_z0", + "trig_L2_sitrack_isomuon_param_phi0", + "trig_L2_sitrack_isomuon_param_eta", + "trig_L2_sitrack_isomuon_param_pt", + "trig_L2_idscan_isomuon_n", + "trig_L2_idscan_isomuon_algorithmId", + "trig_L2_idscan_isomuon_trackStatus", + "trig_L2_idscan_isomuon_chi2Ndof", + "trig_L2_idscan_isomuon_nStrawHits", + "trig_L2_idscan_isomuon_nHighThrHits", + "trig_L2_idscan_isomuon_nPixelSpacePoints", + "trig_L2_idscan_isomuon_nSCT_SpacePoints", + "trig_L2_idscan_isomuon_param_a0", + "trig_L2_idscan_isomuon_param_z0", + "trig_L2_idscan_isomuon_param_phi0", + "trig_L2_idscan_isomuon_param_eta", + "trig_L2_idscan_isomuon_param_pt", + "trig_L2_sitrackfinder_isomuon_n", + "trig_L2_sitrackfinder_isomuon_algorithmId", + "trig_L2_sitrackfinder_isomuon_trackStatus", + "trig_L2_sitrackfinder_isomuon_chi2Ndof", + "trig_L2_sitrackfinder_isomuon_nStrawHits", + "trig_L2_sitrackfinder_isomuon_nHighThrHits", + "trig_L2_sitrackfinder_isomuon_nPixelSpacePoints", + "trig_L2_sitrackfinder_isomuon_nSCT_SpacePoints", + "trig_L2_sitrackfinder_isomuon_param_a0", + "trig_L2_sitrackfinder_isomuon_param_z0", + "trig_L2_sitrackfinder_isomuon_param_phi0", + "trig_L2_sitrackfinder_isomuon_param_eta", + "trig_L2_sitrackfinder_isomuon_param_pt", + "trig_L2_sitrackfinder_n", + "trig_L2_sitrackfinder_algorithmId", + "trig_L2_sitrackfinder_trackStatus", + "trig_L2_sitrackfinder_chi2Ndof", + "trig_L2_sitrackfinder_nStrawHits", + "trig_L2_sitrackfinder_nHighThrHits", + "trig_L2_sitrackfinder_nPixelSpacePoints", + "trig_L2_sitrackfinder_nSCT_SpacePoints", + "trig_L2_sitrackfinder_param_a0", + "trig_L2_sitrackfinder_param_z0", + "trig_L2_sitrackfinder_param_phi0", + "trig_L2_sitrackfinder_param_eta", + "trig_L2_sitrackfinder_param_pt", + "trig_roidescriptor_forID_zedHalfWidth", + "trig_RoI_L2_mu_n", + #"trig_RoI_L2_mu_MuonFeature", + #"trig_RoI_L2_mu_MuonFeatureStatus", + "trig_RoI_L2_mu_MuonFeatureDetails", + "trig_RoI_L2_mu_MuonFeatureDetailsStatus", + #"trig_RoI_L2_mu_CombinedMuonFeature", + #"trig_RoI_L2_mu_CombinedMuonFeatureStatus", + #"trig_RoI_L2_mu_Muon_ROI", + #"trig_RoI_L2_mu_Muon_ROIStatus", + "trig_RoI_EF_mu_n", + #"trig_RoI_EF_mu_Muon_ROI", + "trig_RoI_EF_mu_Muon_ROIStatus", + #"trig_RoI_EF_mu_TrigMuonEFInfoContainer", + #"trig_RoI_EF_mu_TrigMuonEFInfoContainerStatus", + #"trig_RoI_EF_mu_TrigMuonEFIsolationContainer", + #"trig_RoI_EF_mu_TrigMuonEFIsolationContainerStatus", + "trig_RoI_L2_TileMu_n", + "trig_RoI_L2_TileMu_type", + "trig_RoI_L2_TileMu_active", + "trig_RoI_L2_TileMu_lastStep", + "trig_RoI_L2_TileMu_TENumber", + "trig_RoI_L2_TileMu_roiNumber", + "trig_RoI_L2_TileMu_TileMuFeature", + "trig_RoI_L2_TileMu_TileMuFeatureStatus", + "trig_RoI_L2_TileMu_TileTrackMuFeature", + "trig_RoI_L2_TileMu_TileTrackMuFeatureStatus", + "trig_RoI_L2_TileMu_Muon_ROI", + "trig_RoI_L2_TileMu_Muon_ROIStatus", + "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_Tile", + "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigSiTrack_TileStatus", + "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_Tile", + "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TrigIDSCAN_TileStatus", + "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TriL2gSiTrack_Tile", + "trig_RoI_L2_TileMu_TrigInDetTrackCollection_TriL2gSiTrack_TileStatus", + "trig_RoI_EF_TileMu_n", + "trig_RoI_EF_TileMu_type", + "trig_RoI_EF_TileMu_active", + "trig_RoI_EF_TileMu_lastStep", + "trig_RoI_EF_TileMu_TENumber", + "trig_RoI_EF_TileMu_roiNumber", + "trig_RoI_EF_TileMu_Muon_ROI", + "trig_RoI_EF_TileMu_Muon_ROIStatus", + "trig_RoI_EF_TileMu_TrigMuonEFContainer", + "trig_RoI_EF_TileMu_TrigMuonEFContainerStatus", + "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer", + "trig_RoI_EF_TileMu_TrigMuonEFInfoContainerStatus", + "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirl", + "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuGirlStatus", + "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EF", + "trig_RoI_EF_TileMu_TrigMuonEFInfoContainer_MuTagIMO_EFStatus", + #"el_refittedTrack_n", + #"el_refittedTrack_author", + #"el_refittedTrack_chi2", + #"el_refittedTrack_hasBrem", + #"el_refittedTrack_bremRadius", + #"el_refittedTrack_bremZ", + #"el_refittedTrack_bremRadiusErr", + #"el_refittedTrack_bremZErr", + #"el_refittedTrack_bremFitStatus", + #"el_refittedTrack_qoverp", + #"el_refittedTrack_d0", + #"el_refittedTrack_z0", + #"el_refittedTrack_theta", + #"el_refittedTrack_phi", + #"el_refittedTrack_LMqoverp", + "el_refittedTrack_d0_wrtBL", + "el_refittedTrack_z0_wrtBL", + "el_refittedTrack_phi_wrtBL", + "el_refittedTrack_theta_wrtBL", + "el_refittedTrack_qoverp_wrtBL", + "el_refittedTrack_d0_err_wrtBL", + "el_refittedTrack_z0_err_wrtBL", + "el_refittedTrack_phi_err_wrtBL", + "el_refittedTrack_theta_err_wrtBL", + "el_refittedTrack_qoverp_err_wrtBL", + "el_refittedTrack_d0_z0_err_wrtBL", + "el_refittedTrack_d0_phi_err_wrtBL", + "el_refittedTrack_d0_theta_err_wrtBL", + "el_refittedTrack_d0_qoverp_err_wrtBL", + "el_refittedTrack_z0_phi_err_wrtBL", + "el_refittedTrack_z0_theta_err_wrtBL", + "el_refittedTrack_z0_qoverp_err_wrtBL", + "el_refittedTrack_phi_theta_err_wrtBL", + "el_refittedTrack_phi_qoverp_err_wrtBL", + "el_refittedTrack_theta_qoverp_err_wrtBL", + ] ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWENUD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWENUD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..5e6eae8f913535dcc531dcf776173eb5088371e1 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWENUD3PD_prodJobOFragment.py @@ -0,0 +1,92 @@ +# $Id: SMWENUD3PD_prodJobOFragment.py 520434 2012-10-06 13:16:34Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMWENU D3PD cart". + + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMWENUD3PD_prodJobOFragment.py" ) + + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + + +# Set up a logger: +from AthenaCommon.Logging import logging +SMWENUD3PDStream_msg = logging.getLogger( 'SMWENUD3PD_prodJobOFragment' ) + + +# Check if the configuration makes sense: +if prodFlags.WriteSMWENUD3PD.isVirtual: + SMWENUD3PDStream_msg.error( "The SMWENU D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMWENU D3PD set to be a virtual stream" ) + pass + + +# Construct the stream and file names for the SMWENU D3PD: +streamName = prodFlags.WriteSMWENUD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMWENUD3PD ) +SMWENUD3PDStream_msg.info( "Configuring SMWENUD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + + +#### add specific containers +include ("PhysicsD3PDMaker/ElectronSelector.py") +include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/MuonSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMWENU_D3PDSvc" ) +ServiceMgr.SMWENU_D3PDSvc.VetoedNames = [ "L1_.*","L2_.*","EF_m.*","EF_2m.*","EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMWENU_D3PDSvc.VetoedNames += [ "trig_EF_trigmu.*" ] +ServiceMgr.SMWENU_D3PDSvc.VetoedNames += [ ".*etx.*",".*ety.*" ] + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMWENUD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) +SMWENUD3PDStream.D3PDSvc = ServiceMgr.SMWENU_D3PDSvc + + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +SMWZLightD3PD( SMWENUD3PDStream, + stdElectronContainer = 'HighPtElectrons', + stacoMuonContainer = 'HighPtStacoMuons', + photonContainer = 'HighPtPhotons', + jetContainer = 'HighPtJets' ) + + +# apply skim +SMWENUD3PDStream.AddAcceptAlgs( ["SMWZ_HighPtElectronFilter"] ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMWENUD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMWENUD3PDStream ) ] + + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWENUJJD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWENUJJD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..d1d027cabe44bb2f5acd5fdbed1ddcf2cad23a04 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWENUJJD3PD_prodJobOFragment.py @@ -0,0 +1,77 @@ +# $Id: SMWENUJJD3PD_prodJobOFragment.py 354388 2011-03-25 15:03:06Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMWENUJJ D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMWENUJJD3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMWENUJJD3PDStream_msg = logging.getLogger( 'SMWENUJJD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMWENUJJD3PD.isVirtual: + SMWENUJJD3PDStream_msg.error( "The SMWENUJJ D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMWENUJJ D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMWENUJJ D3PD: +streamName = prodFlags.WriteSMWENUJJD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMWENUJJD3PD ) +SMWENUJJD3PDStream_msg.info( "Configuring SMWENUJJD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + +#### add specific containers +include ("PhysicsD3PDMaker/ElectronSelector.py") +#include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/MuonSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +#include ("PhysicsD3PDMaker/TauSelector.py") + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMWENUJJD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +SMWZD3PD( SMWENUJJD3PDStream, + stdElectronContainer = 'HighPtElectrons', + gsfElectronContainer = 'None', + muonContainer = 'None', + stacoMuonContainer = 'HighPtStacoMuons', + muidMuonContainer = 'None', + caloMuonContainer = 'None', + photonContainer = 'None', + tauContainer = 'None', + jetEM4Container = 'HighPtJets', + jetEM6Container = 'HighPtJetsEM6', + jetLC4Container = 'HighPtJetsLC4', + jetLC6Container = 'HighPtJetsLC6', + jetDetails = 2, + METDetails = 2) + +# Define skims +from WZSkims.WZSkimsConf import WZSkimsMain +Wenujj = WZSkimsMain("Wenujj") +Wenujj.doWenujjSkim = True +Wenujj.OutputLevel = INFO +SMWENUJJD3PDStream.filterSeq += Wenujj + +include("WZSkims/Wlnujj_branchSelection.py") + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMWENUJJD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMWENUJJD3PDStream ) ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWMUNUD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWMUNUD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..692e5fe10a7e259e774fd5e99188eb2a5b4a1f49 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWMUNUD3PD_prodJobOFragment.py @@ -0,0 +1,93 @@ +# $Id: SMWMUNUD3PD_prodJobOFragment.py 520434 2012-10-06 13:16:34Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMWMUNU D3PD cart". + + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMWMUNUD3PD_prodJobOFragment.py" ) + + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + + +# Set up a logger: +from AthenaCommon.Logging import logging +SMWMUNUD3PDStream_msg = logging.getLogger( 'SMWMUNUD3PD_prodJobOFragment' ) + + +# Check if the configuration makes sense: +if prodFlags.WriteSMWMUNUD3PD.isVirtual: + SMWMUNUD3PDStream_msg.error( "The SMWMUNU D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMWMUNU D3PD set to be a virtual stream" ) + pass + + +# Construct the stream and file names for the SMWMUNU D3PD: +streamName = prodFlags.WriteSMWMUNUD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMWMUNUD3PD ) +SMWMUNUD3PDStream_msg.info( "Configuring SMWMUNUD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + + +# add specific containers +include ("PhysicsD3PDMaker/ElectronSelector.py") +include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/MuonSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMWMUNU_D3PDSvc" ) +ServiceMgr.SMWMUNU_D3PDSvc.VetoedNames = [ "L1_.*","L2_.*","EF_e.*","EF_2e.*","EF_g.*","EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMWMUNU_D3PDSvc.VetoedNames += [ "trig_EF_el.*" ] +ServiceMgr.SMWMUNU_D3PDSvc.VetoedNames += [ ".*etx.*",".*ety.*" ] + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMWMUNUD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) +SMWMUNUD3PDStream.D3PDSvc = ServiceMgr.SMWMUNU_D3PDSvc + + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +SMWZLightD3PD( SMWMUNUD3PDStream, + stdElectronContainer = 'HighPtElectrons', + stacoMuonContainer = 'HighPtStacoMuons', + muidMuonContainer = 'HighPtMuidMuons', + photonContainer = 'HighPtPhotons', + jetContainer = 'HighPtJets' ) + + +# apply skim +SMWMUNUD3PDStream.AddAcceptAlgs( ["SMWZ_HighPtStacoMuonFilter","SMWZ_HighPtMuidMuonFilter"] ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMWMUNUD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMWMUNUD3PDStream ) ] + + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWMUNUJJD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWMUNUJJD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..abe310503e28d2bd2ae0ce4af58234e3f59b4205 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWMUNUJJD3PD_prodJobOFragment.py @@ -0,0 +1,77 @@ +# $Id: SMWMUNUJJD3PD_prodJobOFragment.py 354388 2011-03-25 15:03:06Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMWMUNUJJ D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMWMUNUJJD3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMWMUNUJJD3PDStream_msg = logging.getLogger( 'SMWMUNUJJD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMWMUNUJJD3PD.isVirtual: + SMWMUNUJJD3PDStream_msg.error( "The SMWMUNUJJ D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMWMUNUJJ D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMWMUNUJJ D3PD: +streamName = prodFlags.WriteSMWMUNUJJD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMWMUNUJJD3PD ) +SMWMUNUJJD3PDStream_msg.info( "Configuring SMWMUNUJJD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + +#### add specific containers +include ("PhysicsD3PDMaker/ElectronSelector.py") +#include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/MuonSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +#include ("PhysicsD3PDMaker/TauSelector.py") + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMWMUNUJJD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +SMWZD3PD( SMWMUNUJJD3PDStream, + stdElectronContainer = 'HighPtElectrons', + gsfElectronContainer = 'None', + muonContainer = 'None', + stacoMuonContainer = 'HighPtStacoMuons', + muidMuonContainer = 'None', + caloMuonContainer = 'None', + photonContainer = 'None', + tauContainer = 'None', + jetEM4Container = 'HighPtJets', + jetEM6Container = 'HighPtJetsEM6', + jetLC4Container = 'HighPtJetsLC4', + jetLC6Container = 'HighPtJetsLC6', + jetDetails = 2, + METDetails = 2) + +# Define skims +from WZSkims.WZSkimsConf import WZSkimsMain +Wmunujj = WZSkimsMain("Wmunujj") +Wmunujj.doWmunujjSkim = True +Wmunujj.OutputLevel = INFO +SMWMUNUJJD3PDStream.filterSeq += Wmunujj + +include("WZSkims/Wlnujj_branchSelection.py") + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMWMUNUJJD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMWMUNUJJD3PDStream ) ] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..4e3b361de1036d47691ca0a7cbb40541fa22a879 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZD3PD_prodJobOFragment.py @@ -0,0 +1,72 @@ +# $Id: SMWZD3PD_prodJobOFragment.py 542026 2013-03-22 15:02:53Z jlee $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMWZ D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMWZD3PD_prodJobOFragment.py" ) + +### Jason +include( "PhysicsD3PDMaker/SMWZ_RedoJets.py") + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMWZD3PDStream_msg = logging.getLogger( 'SMWZD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMWZD3PD.isVirtual: + SMWZD3PDStream_msg.error( "The SMWZ D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMWZ D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMWZ D3PD: +streamName = prodFlags.WriteSMWZD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMWZD3PD ) +SMWZD3PDStream_msg.info( "Configuring SMWZD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +# Fat/Groomed Jets +include("PhysicsD3PDMaker/FatJetsConfig.py") +###########Bertrand +include( "BTagging/BTagging_LoadTools.py" ) +include( "BTagging/BTagging_jobOptions.py" ) + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMWZD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +SMWZD3PD( SMWZD3PDStream ) + + +from PhysicsD3PDMaker.JSD3PD import JSD3PD +for xx in myJetKeys: + if xx[0] != None and xx[1] != None: + JSD3PD(xx, SMWZD3PDStream ) + +# Silence tool warnings: +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZD3PD_thirdMuonChain_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZD3PD_thirdMuonChain_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..e95828dfd3143fac017251e5245faaa13d5306d2 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZD3PD_thirdMuonChain_prodJobOFragment.py @@ -0,0 +1,43 @@ +# $Id: SMWZD3PD_thirdMuonChain_prodJobOFragment.py 477353 2012-01-18 15:17:27Z mbellomo $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMWZ D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMWZD3PD_prodJobOFragment.py" ) + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMWZD3PDStream_msg = logging.getLogger( 'SMWZD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMWZD3PD.isVirtual: + SMWZD3PDStream_msg.error( "The SMWZ D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMWZ D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMWZ D3PD: +streamName = prodFlags.WriteSMWZD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMWZD3PD ) +SMWZD3PDStream_msg.info( "Configuring SMWZD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMWZD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +SMWZD3PD( SMWZD3PDStream, doThirdMuonChain=True ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_JvfFix.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_JvfFix.py new file mode 100644 index 0000000000000000000000000000000000000000..a795d6af05c61dc789b976aee339ff87289635d9 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_JvfFix.py @@ -0,0 +1,15 @@ +# +# @author Haifeng Li <Haifeng.Li@cern.ch> +# + +from RecExConfig.RecFlags import rec + +def myjets(): + from JetRec.JetMomentGetter import make_JetMomentGetter + from JetMomentTools.SetupJetMomentTools import getJetVertexAssociationTool + jvatool = getJetVertexAssociationTool('AntiKt', 0.4, 'Topo') + make_JetMomentGetter( 'AntiKt4TopoEMJets' , [jvatool] ) + make_JetMomentGetter( 'AntiKt6TopoEMJets' , [jvatool] ) + + +rec.UserExecs = ["myjets()"] diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_RedoJets.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_RedoJets.py new file mode 100644 index 0000000000000000000000000000000000000000..ac82e84463518e8d50a9b64de3250f74390554be --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZ_RedoJets.py @@ -0,0 +1,16 @@ +from JetRec.JetRecFlags import jetFlags +jetFlags.jetPerformanceJob = True + +from BTagging.BTaggingFlags import BTaggingFlags +BTaggingFlags.Jets=[ "AntiKt4TopoEM", "AntiKt6TopoEM", "AntiKt4LCTopo" ,"AntiKt6LCTopo"] +BTaggingFlags.Active=True +BTaggingFlags.JetFitterCharm=True +BTaggingFlags.MV3_bVSu=True +BTaggingFlags.MV3_bVSc=True +BTaggingFlags.MV3_cVSu=True + +from JetTagD3PDMaker.JetTagD3PDMakerFlags import JetTagD3PDFlags +JetTagD3PDFlags.Taggers+=["JetFitterCharm","MV3_bVSu","MV3_bVSc","MV3_cVSu"] +JetTagD3PDFlags.JetFitterCharmTagInfo=True + + diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZsoftD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZsoftD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..bb045476c4a9fbb09fec41d7357038bd8b999e8a --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMWZsoftD3PD_prodJobOFragment.py @@ -0,0 +1,70 @@ +# $Id: SMWZsoftD3PD_prodJobOFragment.py 566706 2013-10-23 08:41:31Z ssnyder $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMWZ D3PD cart". + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMWZsoftD3PD_prodJobOFragment.py" ) + +### Jason +include( "PhysicsD3PDMaker/SMWZ_RedoJets.py") + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + +# Set up a logger: +from AthenaCommon.Logging import logging +SMWZSOFTD3PDStream_msg = logging.getLogger( 'SMWZsoftD3PD_prodJobOFragment' ) + +# Check if the configuration makes sense: +if prodFlags.WriteSMWZSOFTD3PD.isVirtual: + SMWZD3PDStream_msg.error( "The SMWZ soft D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMWZ soft D3PD set to be a virtual stream" ) + pass + +# Construct the stream and file names for the SMWZ soft D3PD: +streamName = prodFlags.WriteSMWZSOFTD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMWZSOFTD3PD ) +SMWZSOFTD3PDStream_msg.info( "Configuring SMWZsoftD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + +# disable parton filter +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +D3PDMakerFlags.TruthWriteHadrons = True + +# add specific truth jets +include ("PhysicsD3PDMaker/MyJetMake.py") + +#configure MuonScatteringAngleSignificanceTool +include("JetTagD3PDMaker/MuonScatteringSigToolConfig.py") + +### Jason +include( "BTagging/BTagging_LoadTools.py" ) +include( "BTagging/BTagging_jobOptions.py" ) + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMWZSOFTD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZD3PD import SMWZD3PD +if not 'SMWZsoftD3PD_args' in globals(): + SMWZsoftD3PD_args = {} +SMWZD3PD( SMWZSOFTD3PDStream, doSoftQCD = False, **SMWZsoftD3PD_args ) + +# Silence tool warnings: +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMZEED3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMZEED3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..e3a784051eaa7a5dad9ae2ccf9995cfc7cb5effc --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMZEED3PD_prodJobOFragment.py @@ -0,0 +1,92 @@ +# $Id: SMZEED3PD_prodJobOFragment.py 520434 2012-10-06 13:16:34Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMZEE D3PD cart". + + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMZEED3PD_prodJobOFragment.py" ) + + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + + +# Set up a logger: +from AthenaCommon.Logging import logging +SMZEED3PDStream_msg = logging.getLogger( 'SMZEED3PD_prodJobOFragment' ) + + +# Check if the configuration makes sense: +if prodFlags.WriteSMZEED3PD.isVirtual: + SMZEED3PDStream_msg.error( "The SMZEE D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMZEE D3PD set to be a virtual stream" ) + pass + + +# Construct the stream and file names for the SMZEE D3PD: +streamName = prodFlags.WriteSMZEED3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMZEED3PD ) +SMZEED3PDStream_msg.info( "Configuring SMZEED3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + + +#### add specific containers +include ("PhysicsD3PDMaker/LowPtElectronPairSelector.py") +include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/MuonSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMZEE_D3PDSvc" ) +ServiceMgr.SMZEE_D3PDSvc.VetoedNames = [ "L1_.*","L2_.*","EF_m.*","EF_2m.*","EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMZEE_D3PDSvc.VetoedNames += [ "trig_EF_trigmu.*" ] +ServiceMgr.SMZEE_D3PDSvc.VetoedNames += [ ".*etx.*",".*ety.*" ] + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMZEED3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) +SMZEED3PDStream.D3PDSvc = ServiceMgr.SMZEE_D3PDSvc + + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +SMWZLightD3PD( SMZEED3PDStream, + stdElectronContainer = 'MediumPtElectrons', + stacoMuonContainer = 'HighPtStacoMuons', + photonContainer = 'HighPtPhotons', + jetContainer = 'HighPtJets' ) + + +# apply skim +SMZEED3PDStream.AddAcceptAlgs( ["SMWZ_ZeeFilter"] ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMZEED3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMZEED3PDStream ) ] + + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMZMUMUD3PD_prodJobOFragment.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMZMUMUD3PD_prodJobOFragment.py new file mode 100644 index 0000000000000000000000000000000000000000..ddf63f7b06d142e46400137b3badfc661ef4ba28 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/SMZMUMUD3PD_prodJobOFragment.py @@ -0,0 +1,93 @@ +# $Id: SMZMUMUD3PD_prodJobOFragment.py 520434 2012-10-06 13:16:34Z boonekam $ +# +# This jobO fragment is meant to be called by Reco_trf.py in transformation jobs to +# create the "SMZMUMU D3PD cart". + + +# This jobO should not be included more than once: +include.block( "PhysicsD3PDMaker/SMZMUMUD3PD_prodJobOFragment.py" ) + + +# Common import(s): +from AthenaCommon.JobProperties import jobproperties +prodFlags = jobproperties.D3PDProdFlags +from PrimaryDPDMaker.PrimaryDPDHelpers import buildFileName + + +# Set up a logger: +from AthenaCommon.Logging import logging +SMZMUMUD3PDStream_msg = logging.getLogger( 'SMZMUMUD3PD_prodJobOFragment' ) + + +# Check if the configuration makes sense: +if prodFlags.WriteSMZMUMUD3PD.isVirtual: + SMZMUMUD3PDStream_msg.error( "The SMZMUMU D3PD stream can't be virtual! " + + "It's a configuration error!" ) + raise NameError( "SMZMUMU D3PD set to be a virtual stream" ) + pass + + +# Construct the stream and file names for the SMZMUMU D3PD: +streamName = prodFlags.WriteSMZMUMUD3PD.StreamName +fileName = buildFileName( prodFlags.WriteSMZMUMUD3PD ) +SMZMUMUD3PDStream_msg.info( "Configuring SMZMUMUD3PD with streamName '%s' and fileName '%s'" % \ + ( streamName, fileName ) ) + + +#### add specific containers +include ("PhysicsD3PDMaker/ElectronSelector.py") +include ("PhysicsD3PDMaker/PhotonSelector.py") +include ("PhysicsD3PDMaker/LowPtMuonPairSelector.py") +include ("PhysicsD3PDMaker/JetSelector.py") +include ("PhysicsD3PDMaker/TauSelector.py") + + +# Configure branches +from AthenaCommon.AppMgr import ServiceMgr +from D3PDMakerRoot.D3PDMakerRootConf import D3PD__RootD3PDSvc +ServiceMgr += D3PD__RootD3PDSvc( "SMZMUMU_D3PDSvc" ) +ServiceMgr.SMZMUMU_D3PDSvc.VetoedNames = [ "L1_.*","L2_.*","EF_e.*","EF_2e.*","EF_g.*","EF_j.*","EF_2j.*","EF_tau.*" ] +ServiceMgr.SMZMUMU_D3PDSvc.VetoedNames += [ "trig_EF_el.*" ] +ServiceMgr.SMZMUMU_D3PDSvc.VetoedNames += [ ".*etx.*",".*ety.*" ] + + +# Create the D3PD streams: +from OutputStreamAthenaPool.MultipleStreamManager import MSMgr +SMZMUMUD3PDStream = MSMgr.NewRootStream( streamName, fileName, "physics" ) +SMZMUMUD3PDStream.D3PDSvc = ServiceMgr.SMZMUMU_D3PDSvc + + +# Now add all the content to this stream: +from PhysicsD3PDMaker.SMWZLightD3PD import SMWZLightD3PD +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags +SMWZLightD3PD( SMZMUMUD3PDStream, + stdElectronContainer = 'HighPtElectrons', + stacoMuonContainer = 'LowPtStacoMuons', + muidMuonContainer = 'LowPtMuidMuons', + photonContainer = 'HighPtPhotons', + jetContainer = 'HighPtJets' ) + + +# apply skim +SMZMUMUD3PDStream.AddAcceptAlgs( ["SMWZ_ZmumuStacoFilter", "SMWZ_ZmumuMuidFilter"] ) + + +# add cut flow information +from EventCommonD3PDMaker.CutFlowMetadataConfig import CutFlowMetadataConfig +SMZMUMUD3PDStream.MetadataTools += [ CutFlowMetadataConfig( SMZMUMUD3PDStream ) ] + + +# Silence tool warnings: + +from AthenaCommon.AppMgr import ToolSvc +if not hasattr( ToolSvc, "TrigDecisionTool" ): + from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool + ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) + pass +ToolSvc.TrigDecisionTool.Navigation.OutputLevel = ERROR + +if hasattr( ToolSvc, "SecondSoftMuonTagChi2" ): + ToolSvc.SecondSoftMuonTagChi2.OutputLevel = ERROR + +if hasattr( ToolSvc, "myTrkUpdator" ): + ToolSvc.myTrkUpdator.OutputLevel = ERROR diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TauSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TauSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..26bacddbe6c046817fdfd2be253ef44566c6c97f --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TauSelector.py @@ -0,0 +1,11 @@ +include.block( "PhysicsD3PDMaker/TauSelector.py" ) + +from D2PDMaker.D2PDMakerConf import D2PDTauSelector + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDTauSelector( "SMWZ_HighPtTauFilter", + inputCollection = 'TauRecContainer', + outputCollection = 'HighPtTaus', + etMin = 15.0*Units.GeV ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TrackParticleSelector.py b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TrackParticleSelector.py new file mode 100644 index 0000000000000000000000000000000000000000..4375f4202811aeadc7f70f5d7ec14982759a81e7 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/share/TrackParticleSelector.py @@ -0,0 +1,22 @@ +include.block( "PhysicsD3PDMaker/TrackParticleSelector.py" ) + + +from D3PDMakerConfig.D3PDMakerFlags import D3PDMakerFlags + +from D2PDMaker.D2PDMakerConf import D2PDTrackParticleSelector + +from AthenaCommon.AlgSequence import AlgSequence +preseq = AlgSequence (D3PDMakerFlags.PreD3PDAlgSeqName()) + +preseq += D2PDTrackParticleSelector( "SMWZ_HighPtTrackFilter", + inputCollection = D3PDMakerFlags.TrackSGKey(), + outputCollection = 'Track_NSiHits6_Pt10', + ptMin = 10.0*Units.GeV, + numberSiliconHitsMin = 6 + ) + +preseq += D2PDTrackParticleSelector( "SMWZ_GoodTrackFilter", + inputCollection = D3PDMakerFlags.TrackSGKey(), + outputCollection = 'Tracks_NSiHits6', + numberSiliconHitsMin = 6 + ) diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.cxx b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.cxx new file mode 100644 index 0000000000000000000000000000000000000000..4df296ae8d4882fc6fe7234d4a68ff8ea3cde921 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.cxx @@ -0,0 +1,166 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/****************************************************************************** + * TrileptonSkimmer.cxx + * + * authors: Steven Kaneti <Steven.KanetiSPAMNOT.cern.ch> + * Nick Edwards + * + * version: $Id: TrileptonSkimmer.cxx 606012 2014-07-11 09:40:36Z krasznaa $ + * + * This is a C++ athena-based algorithm for a three lepton skim to be used + * by the Standard Model ZZ->4l and Standard Model WZ groups. + * + * + ******************************************************************************/ + +// EDM include(s): +#include "xAODEgamma/ElectronContainer.h" +#include "xAODMuon/MuonContainer.h" + +// Local include(s): +#include "TrileptonSkimmer.h" + +TrileptonSkimmer::TrileptonSkimmer( const std::string& name, + ISvcLocator* pSvcLocator ) + : AthFilterAlgorithm( name, pSvcLocator ) { + + // Property declaration + declareProperty("lowPtCut" , m_lowPtCut = 4.e3 ); + declareProperty("highPtCut" , m_highPtCut = 20.e3 ); + declareProperty("fwdElPtCut" , m_fwdElPtCut = 15.e3 ); + declareProperty("caloMuonPtCut" , m_caloMuPtCut = 12.e3 ); + declareProperty("allowMultiLepton" , m_allowMultiLepton = true ); + declareProperty("inputCollectionStaco" , m_inCollKey_muons = "Muons", + "StoreGate key of the input container/collection for Muons"); + declareProperty("inputCollectionElecs" , m_inCollKey_elecs = + "ElectronAODCollection", + "StoreGate key of the input container/collection for " + "Standard Electrons"); +} + +StatusCode TrileptonSkimmer::initialize() { + + ATH_MSG_INFO( "Initializing " << name() << "..."); + ATH_MSG_DEBUG( "lowPtCut = " << m_lowPtCut ); + ATH_MSG_DEBUG( "highPtCut = " << m_highPtCut ); + ATH_MSG_DEBUG( "caloMuPtCut = " << m_caloMuPtCut ); + ATH_MSG_DEBUG( "fwdElPtCut = " << m_fwdElPtCut ); + + return StatusCode::SUCCESS; +} + +StatusCode TrileptonSkimmer::execute() { + + ATH_MSG_DEBUG ("Executing " << name() << "..."); + + // Retrieve the muons: + const xAOD::MuonContainer* muons = 0; + ATH_CHECK( evtStore()->retrieve( muons, m_inCollKey_muons ) ); + + // Retrieve the electrons: + const xAOD::ElectronContainer* electrons = 0; + ATH_CHECK( evtStore()->retrieve( electrons, m_inCollKey_elecs ) ); + + //--------------------------------------------------------------------------- + // Loop over Muons + // + // We do 1 loop and count the following + + /// Combined muon with |eta|<2.5 and pT > m_highPtCut + int nHighPtCentralMuons = 0; + /// Combined/ST/SA muon with |eta|<2.5 and pT > m_lowPtCut + int nLowPtCentralMuons = 0; + /// Combined/ST/SA muon and pT > m_lowPtCut + int nLowPtMuons = 0; + + xAOD::MuonContainer::const_iterator mu_itr = muons->begin(); + xAOD::MuonContainer::const_iterator mu_end = muons->end(); + for( ; mu_itr != mu_end; ++mu_itr ) { + + if( ( ( *mu_itr )->pt() > m_highPtCut ) && + ( ( *mu_itr )->muonType() == xAOD::Muon::Combined ) && + ( fabs( ( *mu_itr )->eta() ) < 2.5 ) ) { + ++nHighPtCentralMuons; + } + if( ( ( *mu_itr )->pt() > m_lowPtCut ) && + ( ( ( *mu_itr )->muonType() == xAOD::Muon::Combined ) || + ( ( *mu_itr )->muonType() == xAOD::Muon::SegmentTagged ) || + ( ( *mu_itr )->muonType() == xAOD::Muon::MuonStandAlone ) ) ) { + + if( fabs( ( *mu_itr )->eta() ) < 2.5 ) { + ++nLowPtCentralMuons; + } + nLowPtMuons++; + } + } + + //--------------------------------------------------------------------------- + // Loop over electrons + // + // We do 1 loop and count the following + + /// author 1 || 3, Medium++, et>highPtCut, no specific eta cut, + /// but is implicit in author + int nHighPtCentralElectrons = 0; + /// author 1 || 3, Loose++, et>lowPtCut, no specific eta cut, but is + /// implicit in author + int nLowPtCentralElectronsLoosePP = 0; + /// author 1 || 3, et>lowPtCut, no specific eta cut, but is implicit in + /// author + int nLowPtCentralElectrons = 0; + /// author 8, et>fwdElpTCut, no specific eta cut, but is implicit in author + int nFwdElectrons = 0; + + xAOD::ElectronContainer::const_iterator el_itr = electrons->begin(); + xAOD::ElectronContainer::const_iterator el_end = electrons->end(); + for( ; el_itr != el_end; ++el_itr ) { + + if( ( ( *el_itr )->author() == 1 ) || + ( ( *el_itr )->author() == 3 ) ) { + + bool medium = false; + ( *el_itr )->passSelection( medium, "Medium" ); + bool loose = false; + ( *el_itr )->passSelection( loose, "Loose" ); + + if( ( ( *el_itr )->pt() > m_highPtCut ) && medium ) { + ++nHighPtCentralElectrons; + } + if( ( *el_itr )->pt() > m_lowPtCut ) { + nLowPtCentralElectrons++; + if( loose ) { + ++nLowPtCentralElectronsLoosePP; + } + } + } + } + + // + // The forward electron cut should be implemented. That needs a separate + // container from StoreGate though... + // + + // + // Also not sure about the calorimeter muons... + // + int nCaloMuons = 0; + + // -------------------------------------------------------------------------- + // Decision logic + if( ( nHighPtCentralMuons + nHighPtCentralElectrons >= 1 ) && + ( nLowPtCentralMuons + nLowPtCentralElectronsLoosePP >= 2 ) && + ( nLowPtMuons + nLowPtCentralElectrons + nFwdElectrons + + nCaloMuons >= 3 ) ) { + + setFilterPassed( true ); + } else { + setFilterPassed( false ); + } + // -------------------------------------------------------------------------- + + // Return gracefully: + return StatusCode::SUCCESS; +} diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.h b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.h new file mode 100644 index 0000000000000000000000000000000000000000..bd109f2e7293d771773a3a0993d01d7853662a44 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/TrileptonSkimmer.h @@ -0,0 +1,59 @@ +// Dear emacs, this is -*- c++ -*- + +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/****************************************************************************** + * TrileptonSkimmer.h + * + * authors: Steven Kaneti <Steven.KanetiSPAMNOT.cern.ch> + * Nick Edwards + * + * version: $Id: TrileptonSkimmer.h 606012 2014-07-11 09:40:36Z krasznaa $ + * + * + ******************************************************************************/ + +#ifndef PHYSICSD3PDMAKER_TRILEPTONSKIMMER_H +#define PHYSICSD3PDMAKER_TRILEPTONSKIMMER_H + +// System include(s): +#include <string> + +// Athena includes +#include "AthenaBaseComps/AthFilterAlgorithm.h" + +class TrileptonSkimmer : public AthFilterAlgorithm { + +public: + /// Constructor with parameters: + TrileptonSkimmer( const std::string& name, ISvcLocator* pSvcLocator ); + + /// @name Athena algorithm Hooks + /// @{ + + /// Function initialising the algorithm + virtual StatusCode initialize(); + /// Function executing the algorithm + virtual StatusCode execute(); + + /// @} + +private: + /// Function doing the heavy lifting + bool passEvent(); + + float m_lowPtCut; + float m_highPtCut; + float m_caloMuPtCut; + float m_fwdElPtCut; + bool m_allowMultiLepton; + + //storegate input keys + std::string m_inCollKey_muons; + std::string m_inCollKey_elecs; + +}; //end class definition + +#endif // not PHYSICSD3PDMAKER_TRILEPTONSKIMMER_H diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_entries.cxx b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_entries.cxx new file mode 100644 index 0000000000000000000000000000000000000000..bca63e71bb6d6d8969453531a85cee175bfa26c1 --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_entries.cxx @@ -0,0 +1,18 @@ +/****************************************************************************** + * Entries file for SMEWTrilepSkim + * + * @author Steven Kaneti <StevenKanetiSPAMNOTcern.ch> + * Nick Edwards + * + * @version $Id: PhysicsD3PDMaker_entries.cxx 606012 2014-07-11 09:40:36Z krasznaa $ + * + *****************************************************************************/ + +#include "GaudiKernel/DeclareFactoryEntries.h" +#include "../TrileptonSkimmer.h" + +DECLARE_ALGORITHM_FACTORY(TrileptonSkimmer) + +DECLARE_FACTORY_ENTRIES(PhysicsD3PDMaker) { + DECLARE_ALGORITHM(TrileptonSkimmer) +} diff --git a/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_load.cxx b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_load.cxx new file mode 100644 index 0000000000000000000000000000000000000000..0aee3f9d92d59e9740f13ff3761584f7841f058b --- /dev/null +++ b/PhysicsAnalysis/D3PDMaker/PhysicsD3PDMaker/src/components/PhysicsD3PDMaker_load.cxx @@ -0,0 +1,14 @@ +/****************************************************************************** + * Load file for SMEWTrilepSkim + * + * authors: Steven Kaneti <StevenKanetiSPAMNOTcern.ch> + * Nick Edwards + * + * version $Id: PhysicsD3PDMaker_load.cxx 531461 2012-12-20 21:43:15Z nedwards $ + * + *****************************************************************************/ + +#include "GaudiKernel/LoadFactoryEntries.h" + +LOAD_FACTORY_ENTRIES(PhysicsD3PDMaker) +