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)
+