diff --git a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
index d36f039942a67ef0ac66ed44799a332bfeb182be..500b1bc470db0521a9e9f8d9a1f5e12c4b6e1761 100644
--- a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
+++ b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
@@ -254,21 +254,6 @@ def getTauCommonCalcVars():
     cached_instances[_name] = TauCommonCalcVars    
     return TauCommonCalcVars
 
-
-#########################################################################
-# Tau Test
-def getTauTestDump():
-    _name = sPrefix + 'TauTestDump'
-    
-    if _name in cached_instances:
-        return cached_instances[_name]
-    
-    from tauRecTools.tauRecToolsConf import TauTestDump
-    TauTestDump = TauTestDump(name = _name)
-    
-    cached_instances[_name] = TauTestDump
-    return TauTestDump
-
 #########################################################################
 # Tau Vertex Variables
 def getTauVertexVariables():
@@ -594,7 +579,7 @@ def getTauTrackFinder(removeDuplicateTracks=True):
                                     tauParticleCache = getParticleCache(),
                                     removeDuplicateCoreTracks = removeDuplicateTracks,
                                     Key_trackPartInputContainer = _DefaultTrackContainer,
-                                    Key_LargeD0TrackInputContainer = _DefaultLargeD0TrackContainer if tauFlags.useLargeD0Tracks else "",
+                                    Key_LargeD0TrackInputContainer = _DefaultLargeD0TrackContainer if tauFlags.associateLRT() else "",
                                     TrackToVertexIPEstimator = getTauTrackToVertexIPEstimator(),
                                     #maxDeltaZ0wrtLeadTrk = 2, #in mm
                                     #removeTracksOutsideZ0wrtLeadTrk = True
@@ -614,7 +599,7 @@ def getTauClusterFinder():
     from JetRec.JetRecFlags import jetFlags
 
     doJetVertexCorrection = False
-    if tauFlags.isStandalone:
+    if tauFlags.isStandalone():
         doJetVertexCorrection = True
     if jetFlags.useVertices() and jetFlags.useTracks():
         doJetVertexCorrection = True
@@ -658,72 +643,8 @@ def getTauCombinedTES():
     cached_instances[_name] = TauCombinedTES
     return TauCombinedTES
     
-#########################################################################
-def getTauTrackClassifier():
-    _name = sPrefix + 'TauTrackClassifier'
-    
-    if _name in cached_instances:
-        return cached_instances[_name]
-    
-    from AthenaCommon.AppMgr import ToolSvc
-    from tauRecTools.tauRecToolsConf import tauRecTools__TauTrackClassifier as TauTrackClassifier
-    from tauRecTools.tauRecToolsConf import tauRecTools__TrackMVABDT as TrackMVABDT
 
-    import PyUtils.RootUtils as ru
-    ROOT = ru.import_root()
-    import cppyy
-    cppyy.load_library('libxAODTau_cDict.so')
-
-    # =========================================================================
-    _BDT_TTCT_ITFT_0 = TrackMVABDT(name = _name + "_0",
-                                   #InputWeightsPath = "TMVAClassification_BDT.weights.root",
-                                   #Threshold      = -0.005,
-                                   InputWeightsPath = tauFlags.tauRecMVATrackClassificationConfig()[0][0],
-                                   Threshold = tauFlags.tauRecMVATrackClassificationConfig()[0][1],
-                                   ExpectedFlag   = ROOT.xAOD.TauJetParameters.TauTrackFlag.unclassified, 
-                                   SignalType     = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedCharged, 
-                                   BackgroundType = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedIsolation,
-                                   calibFolder = tauFlags.tauRecToolsCVMFSPath(), 
-                                   )
-    ToolSvc += _BDT_TTCT_ITFT_0
-    cached_instances[_BDT_TTCT_ITFT_0.name] = _BDT_TTCT_ITFT_0
-    
-    _BDT_TTCT_ITFT_0_0 = TrackMVABDT(name = _name + "_0_0",
-                                     #InputWeightsPath = "TMVAClassification_BDT_0.weights.root",
-                                     #Threshold      = -0.0074,
-                                     InputWeightsPath = tauFlags.tauRecMVATrackClassificationConfig()[1][0],
-                                     Threshold = tauFlags.tauRecMVATrackClassificationConfig()[1][1],
-                                     ExpectedFlag   = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedCharged,
-                                     SignalType     = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedCharged,
-                                     BackgroundType = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedConversion,
-                                     calibFolder = tauFlags.tauRecToolsCVMFSPath(),
-                                     )
-    ToolSvc += _BDT_TTCT_ITFT_0_0
-    cached_instances[_BDT_TTCT_ITFT_0_0.name] = _BDT_TTCT_ITFT_0_0
-    
-    _BDT_TTCT_ITFT_0_1 = TrackMVABDT(name = _name + "_0_1",
-                                     #InputWeightsPath = "TMVAClassification_BDT_1.weights.root",
-                                     #Threshold      = 0.0005,
-                                     InputWeightsPath = tauFlags.tauRecMVATrackClassificationConfig()[2][0],
-                                     Threshold = tauFlags.tauRecMVATrackClassificationConfig()[2][1],
-                                     ExpectedFlag   = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedIsolation, 
-                                     SignalType     = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedIsolation, 
-                                     BackgroundType = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedFake,
-                                     calibFolder = tauFlags.tauRecToolsCVMFSPath(),
-                                     )
-    ToolSvc += _BDT_TTCT_ITFT_0_1
-    cached_instances[_BDT_TTCT_ITFT_0_1.name] = _BDT_TTCT_ITFT_0_1
-
-    # create tool alg
-    myTauTrackClassifier = TauTrackClassifier( name = _name,
-                                               Classifiers = [_BDT_TTCT_ITFT_0, _BDT_TTCT_ITFT_0_0, _BDT_TTCT_ITFT_0_1] )
-    #ToolSvc += TauTrackClassifier #only add to tool service sub tools to your tool, the main tool will be added via TauRecConfigured
-    cached_instances[_name] = myTauTrackClassifier 
-
-    return myTauTrackClassifier
-
-########################################################################                                                                                                             
-#            
+########################################################################
 def getTauTrackRNNClassifier():
     _name = sPrefix + 'TauTrackRNNClassifier'
     
@@ -737,100 +658,26 @@ def getTauTrackRNNClassifier():
     import cppyy
     cppyy.load_library('libxAODTau_cDict')
 
-    _RNN= TrackRNN(name = _name + "_0",
-                   InputWeightsPath = tauFlags.tauRecRNNTrackClassificationConfig()[0],
-                   calibFolder = tauFlags.tauRecToolsCVMFSPath(), 
+    _RNN = TrackRNN(name = _name + "_0",
+                    InputWeightsPath = tauFlags.tauRecRNNTrackClassificationConfig()[0],
+                    calibFolder = tauFlags.tauRecToolsCVMFSPath(), 
                    )
-
     ToolSvc += _RNN
     cached_instances[_RNN.name] = _RNN
-    
+
+    _classifyLRT = True
+    if tauFlags.associateLRT() and not tauFlags.classifyLRT():
+        _classifyLRT = False
+
     # create tool alg
     myTauTrackClassifier = TauTrackRNNClassifier( name = _name,
-                                               Classifiers = [_RNN] )
-    cached_instances[_name] = myTauTrackClassifier 
+                                                  Classifiers = [_RNN],
+                                                  classifyLRT = _classifyLRT )
 
+    cached_instances[_name] = myTauTrackClassifier 
     return myTauTrackClassifier
 
-########################################################################                                                                                                             
-#
-def getTauWPDecoratorJetRNN():
-    import PyUtils.RootUtils as ru
-    ROOT = ru.import_root()
-    import cppyy
-    cppyy.load_library('libxAODTau_cDict')
-
-    _name = sPrefix + 'TauWPDecoratorJetRNN'
-    from tauRecTools.tauRecToolsConf import TauWPDecorator
-    myTauWPDecorator = TauWPDecorator( name=_name,
-                                       flatteningFile1Prong = "rnnid_mc16d_flat_1p.root",
-                                       flatteningFile3Prong = "rnnid_mc16d_flat_3p.root",
-                                       CutEnumVals =
-                                       [ ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigVeryLoose, ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigLoose,
-                                         ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigMedium, ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigTight ],
-                                       SigEff1P = [0.95, 0.85, 0.75, 0.60],
-                                       SigEff3P = [0.95, 0.75, 0.60, 0.45],
-                                       ScoreName = "RNNJetScore",
-                                       NewScoreName = "RNNJetScoreSigTrans",
-                                       DefineWPs = True,
-                                       )
-    cached_instances[_name] = myTauWPDecorator
-    return myTauWPDecorator
-
-
-#                                                                                                                                                                                  
-def getTauWPDecoratorJetBDT():
-    import PyUtils.RootUtils as ru
-    ROOT = ru.import_root()
-    import cppyy
-    cppyy.load_library('libxAODTau_cDict')
-
-    _name = sPrefix + 'TauWPDecoratorJetBDT'
-    from tauRecTools.tauRecToolsConf import TauWPDecorator
-    myTauWPDecorator = TauWPDecorator( name=_name,
-                                       flatteningFile1Prong = "FlatJetBDT1Pv2.root", #update
-                                       flatteningFile3Prong = "FlatJetBDT3Pv2.root", #update
-                                       CutEnumVals = 
-                                       [ ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigVeryLoose, ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigLoose,
-                                         ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigMedium, ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigTight ],
-                                       SigEff1P = [0.95, 0.85, 0.75, 0.60],
-                                       SigEff3P = [0.95, 0.75, 0.60, 0.45],
-                                       ScoreName = "BDTJetScore",
-                                       NewScoreName = "BDTJetScoreSigTrans",
-                                       DefineWPs = True,
-                                       )
-    cached_instances[_name] = myTauWPDecorator
-    return myTauWPDecorator
-
-
-# 
-def getTauWPDecoratorEleBDT():
-    import PyUtils.RootUtils as ru
-    ROOT = ru.import_root()
-    import cppyy
-    cppyy.load_library('libxAODTau_cDict')
-
-    _name = sPrefix + 'TauWPDecoratorEleBDT'
-    from tauRecTools.tauRecToolsConf import TauWPDecorator
-    TauScoreFlatteningTool = TauWPDecorator( name=_name,
-                                             flatteningFile1Prong = "EleBDTFlat1P.root",#update
-                                             flatteningFile3Prong = "EleBDTFlat3P.root",#update                                             
-                                             UseEleBDT = True ,
-                                             ScoreName = "BDTEleScore",
-                                             NewScoreName = "BDTEleScoreSigTrans", #dynamic
-                                             DefineWPs = True,
-                                             CutEnumVals = 
-                                             [ROOT.xAOD.TauJetParameters.IsTauFlag.EleBDTLoose, 
-                                              ROOT.xAOD.TauJetParameters.IsTauFlag.EleBDTMedium, 
-                                              ROOT.xAOD.TauJetParameters.IsTauFlag.EleBDTTight],
-                                             SigEff1P = [0.95, 0.85, 0.75],
-                                             SigEff3P = [0.95, 0.85, 0.75],
-                                             ) 
-    cached_instances[_name] = TauScoreFlatteningTool
-    return TauScoreFlatteningTool
-
 
-#
 def getTauJetRNNEvaluator():
     _name = sPrefix + 'TauJetRNN'
     from tauRecTools.tauRecToolsConf import TauJetRNNEvaluator
@@ -853,18 +700,29 @@ def getTauJetRNNEvaluator():
     return myTauJetRNNEvaluator
 
 
-def getTauJetBDTEvaluator(_n, weightsFile="", minNTracks=0, maxNTracks=10000, outputVarName="BDTJetScore", minAbsTrackEta=-1, maxAbsTrackEta=-1):
-    _name = sPrefix + _n
-    from tauRecTools.tauRecToolsConf import TauJetBDTEvaluator
-    myTauJetBDTEvaluator = TauJetBDTEvaluator(name=_name,
-                                              weightsFile=weightsFile, #update config?
-                                              minNTracks=minNTracks,
-                                              maxNTracks=maxNTracks,
-                                              minAbsTrackEta=minAbsTrackEta,
-                                              maxAbsTrackEta=maxAbsTrackEta,
-                                              outputVarName=outputVarName)
-    cached_instances[_name] = myTauJetBDTEvaluator
-    return myTauJetBDTEvaluator
+def getTauWPDecoratorJetRNN():
+    import PyUtils.RootUtils as ru
+    ROOT = ru.import_root()
+    import cppyy
+    cppyy.load_library('libxAODTau_cDict')
+
+    _name = sPrefix + 'TauWPDecoratorJetRNN'
+    from tauRecTools.tauRecToolsConf import TauWPDecorator
+    myTauWPDecorator = TauWPDecorator( name=_name,
+                                       flatteningFile1Prong = "rnnid_mc16d_flat_1p.root",
+                                       flatteningFile3Prong = "rnnid_mc16d_flat_3p.root",
+                                       CutEnumVals =
+                                       [ ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigVeryLoose, ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigLoose,
+                                         ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigMedium, ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigTight ],
+                                       SigEff1P = [0.95, 0.85, 0.75, 0.60],
+                                       SigEff3P = [0.95, 0.75, 0.60, 0.45],
+                                       ScoreName = "RNNJetScore",
+                                       NewScoreName = "RNNJetScoreSigTrans",
+                                       DefineWPs = True,
+                                       )
+    cached_instances[_name] = myTauWPDecorator
+    return myTauWPDecorator
+
 
 def getTauIDVarCalculator():
     _name = sPrefix + 'TauIDVarCalculator'
@@ -979,3 +837,133 @@ def getTVATool():
     cached_instances[_name] = TVATool
     return TVATool
 
+
+
+# deprecated in R22
+
+def getTauTrackClassifier():
+    _name = sPrefix + 'TauTrackClassifier'
+    
+    if _name in cached_instances:
+        return cached_instances[_name]
+    
+    from AthenaCommon.AppMgr import ToolSvc
+    from tauRecTools.tauRecToolsConf import tauRecTools__TauTrackClassifier as TauTrackClassifier
+    from tauRecTools.tauRecToolsConf import tauRecTools__TrackMVABDT as TrackMVABDT
+
+    import PyUtils.RootUtils as ru
+    ROOT = ru.import_root()
+    import cppyy
+    cppyy.load_library('libxAODTau_cDict.so')
+
+    # =========================================================================
+    _BDT_TTCT_ITFT_0 = TrackMVABDT(name = _name + "_0",
+                                   #InputWeightsPath = "TMVAClassification_BDT.weights.root",
+                                   #Threshold      = -0.005,
+                                   InputWeightsPath = tauFlags.tauRecMVATrackClassificationConfig()[0][0],
+                                   Threshold = tauFlags.tauRecMVATrackClassificationConfig()[0][1],
+                                   ExpectedFlag   = ROOT.xAOD.TauJetParameters.TauTrackFlag.unclassified, 
+                                   SignalType     = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedCharged, 
+                                   BackgroundType = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedIsolation,
+                                   calibFolder = tauFlags.tauRecToolsCVMFSPath(), 
+                                   )
+    ToolSvc += _BDT_TTCT_ITFT_0
+    cached_instances[_BDT_TTCT_ITFT_0.name] = _BDT_TTCT_ITFT_0
+    
+    _BDT_TTCT_ITFT_0_0 = TrackMVABDT(name = _name + "_0_0",
+                                     #InputWeightsPath = "TMVAClassification_BDT_0.weights.root",
+                                     #Threshold      = -0.0074,
+                                     InputWeightsPath = tauFlags.tauRecMVATrackClassificationConfig()[1][0],
+                                     Threshold = tauFlags.tauRecMVATrackClassificationConfig()[1][1],
+                                     ExpectedFlag   = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedCharged,
+                                     SignalType     = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedCharged,
+                                     BackgroundType = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedConversion,
+                                     calibFolder = tauFlags.tauRecToolsCVMFSPath(),
+                                     )
+    ToolSvc += _BDT_TTCT_ITFT_0_0
+    cached_instances[_BDT_TTCT_ITFT_0_0.name] = _BDT_TTCT_ITFT_0_0
+    
+    _BDT_TTCT_ITFT_0_1 = TrackMVABDT(name = _name + "_0_1",
+                                     #InputWeightsPath = "TMVAClassification_BDT_1.weights.root",
+                                     #Threshold      = 0.0005,
+                                     InputWeightsPath = tauFlags.tauRecMVATrackClassificationConfig()[2][0],
+                                     Threshold = tauFlags.tauRecMVATrackClassificationConfig()[2][1],
+                                     ExpectedFlag   = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedIsolation, 
+                                     SignalType     = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedIsolation, 
+                                     BackgroundType = ROOT.xAOD.TauJetParameters.TauTrackFlag.classifiedFake,
+                                     calibFolder = tauFlags.tauRecToolsCVMFSPath(),
+                                     )
+    ToolSvc += _BDT_TTCT_ITFT_0_1
+    cached_instances[_BDT_TTCT_ITFT_0_1.name] = _BDT_TTCT_ITFT_0_1
+
+    # create tool alg
+    myTauTrackClassifier = TauTrackClassifier( name = _name,
+                                               Classifiers = [_BDT_TTCT_ITFT_0, _BDT_TTCT_ITFT_0_0, _BDT_TTCT_ITFT_0_1] )
+    #ToolSvc += TauTrackClassifier #only add to tool service sub tools to your tool, the main tool will be added via TauRecConfigured
+    cached_instances[_name] = myTauTrackClassifier 
+
+    return myTauTrackClassifier
+
+
+def getTauJetBDTEvaluator(_n, weightsFile="", minNTracks=0, maxNTracks=10000, outputVarName="BDTJetScore", minAbsTrackEta=-1, maxAbsTrackEta=-1):
+    _name = sPrefix + _n
+    from tauRecTools.tauRecToolsConf import TauJetBDTEvaluator
+    myTauJetBDTEvaluator = TauJetBDTEvaluator(name=_name,
+                                              weightsFile=weightsFile,
+                                              minNTracks=minNTracks,
+                                              maxNTracks=maxNTracks,
+                                              minAbsTrackEta=minAbsTrackEta,
+                                              maxAbsTrackEta=maxAbsTrackEta,
+                                              outputVarName=outputVarName)
+    cached_instances[_name] = myTauJetBDTEvaluator
+    return myTauJetBDTEvaluator
+
+
+def getTauWPDecoratorJetBDT():
+    import PyUtils.RootUtils as ru
+    ROOT = ru.import_root()
+    import cppyy
+    cppyy.load_library('libxAODTau_cDict')
+
+    _name = sPrefix + 'TauWPDecoratorJetBDT'
+    from tauRecTools.tauRecToolsConf import TauWPDecorator
+    myTauWPDecorator = TauWPDecorator( name=_name,
+                                       flatteningFile1Prong = "FlatJetBDT1Pv2.root",
+                                       flatteningFile3Prong = "FlatJetBDT3Pv2.root",
+                                       CutEnumVals = 
+                                       [ ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigVeryLoose, ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigLoose,
+                                         ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigMedium, ROOT.xAOD.TauJetParameters.IsTauFlag.JetBDTSigTight ],
+                                       SigEff1P = [0.95, 0.85, 0.75, 0.60],
+                                       SigEff3P = [0.95, 0.75, 0.60, 0.45],
+                                       ScoreName = "BDTJetScore",
+                                       NewScoreName = "BDTJetScoreSigTrans",
+                                       DefineWPs = True,
+                                       )
+    cached_instances[_name] = myTauWPDecorator
+    return myTauWPDecorator
+
+
+def getTauWPDecoratorEleBDT():
+    import PyUtils.RootUtils as ru
+    ROOT = ru.import_root()
+    import cppyy
+    cppyy.load_library('libxAODTau_cDict')
+
+    _name = sPrefix + 'TauWPDecoratorEleBDT'
+    from tauRecTools.tauRecToolsConf import TauWPDecorator
+    TauScoreFlatteningTool = TauWPDecorator( name=_name,
+                                             flatteningFile1Prong = "EleBDTFlat1P.root",
+                                             flatteningFile3Prong = "EleBDTFlat3P.root",
+                                             UseEleBDT = True ,
+                                             ScoreName = "BDTEleScore",
+                                             NewScoreName = "BDTEleScoreSigTrans",
+                                             DefineWPs = True,
+                                             CutEnumVals = 
+                                             [ROOT.xAOD.TauJetParameters.IsTauFlag.EleBDTLoose, 
+                                              ROOT.xAOD.TauJetParameters.IsTauFlag.EleBDTMedium, 
+                                              ROOT.xAOD.TauJetParameters.IsTauFlag.EleBDTTight],
+                                             SigEff1P = [0.95, 0.85, 0.75],
+                                             SigEff3P = [0.95, 0.85, 0.75],
+                                             ) 
+    cached_instances[_name] = TauScoreFlatteningTool
+    return TauScoreFlatteningTool
diff --git a/Reconstruction/tauRec/python/tauRecFlags.py b/Reconstruction/tauRec/python/tauRecFlags.py
index cf7bbe7b8d2e33526d89ac856bc7bc2e93ae3e2e..79acd8834908321826da213fe9cc3f9e2f252e38 100644
--- a/Reconstruction/tauRec/python/tauRecFlags.py
+++ b/Reconstruction/tauRec/python/tauRecFlags.py
@@ -58,9 +58,15 @@ class doTJVA(JobProperty):
     allowedTypes=['bool']
     StoredValue=True
 
-class useLargeD0Tracks(JobProperty):
-    """ Use LRT tracks in tau track finding """
-    statusOn=False
+class associateLRT(JobProperty):
+    """ associate Large Radius Tracks with tau in TauTrackFinder """
+    statusOn=True
+    allowedTypes=['bool']
+    StoredValue=False
+
+class classifyLRT(JobProperty):
+    """ classify Large Radius Tracks in tau track classifier """
+    statusOn=True
     allowedTypes=['bool']
     StoredValue=False
 
@@ -256,7 +262,7 @@ class tauRecFlags(JobPropertyContainer):
 jobproperties.add_Container(tauRecFlags)
 
 # I want always the following flags in the Rec container  
-_list_tau=[Enabled,doTauRec,isStandalone,tauRecSeedJetCollection,tauRecToolsCVMFSPath,doTJVA,useLargeD0Tracks,removeDuplicateCoreTracks,tauRecMVATrackClassification,tauRecRNNTrackClassification,tauRecMVATrackClassificationConfig,tauRecRNNTrackClassificationConfig,tauRecDecayModeNNClassifierConfig,tauRecCalibrateLCConfig,tauRecMvaTESConfig,tauRecCombinedTESConfig,tauRecTauJetRNNConfig,tauRecTauEleRNNConfig,tauRecSeedMinPt,tauRecSeedMaxEta,tauRecMinPt,tauRecMaxNTracks,tauRecToolsDevToolList,tauRecToolsDevToolListProcessor,doRunTauDiscriminant,doPanTau,doPi0,pi0EtCuts,pi0MVACuts_1prong,pi0MVACuts_mprong,shotPtCut_1Photon,shotPtCut_2Photons,useOldVertexFitterAPI]
+_list_tau=[Enabled,doTauRec,isStandalone,tauRecSeedJetCollection,tauRecToolsCVMFSPath,doTJVA,associateLRT,classifyLRT,removeDuplicateCoreTracks,tauRecMVATrackClassification,tauRecRNNTrackClassification,tauRecMVATrackClassificationConfig,tauRecRNNTrackClassificationConfig,tauRecDecayModeNNClassifierConfig,tauRecCalibrateLCConfig,tauRecMvaTESConfig,tauRecCombinedTESConfig,tauRecTauJetRNNConfig,tauRecTauEleRNNConfig,tauRecSeedMinPt,tauRecSeedMaxEta,tauRecMinPt,tauRecMaxNTracks,tauRecToolsDevToolList,tauRecToolsDevToolListProcessor,doRunTauDiscriminant,doPanTau,doPi0,pi0EtCuts,pi0MVACuts_1prong,pi0MVACuts_mprong,shotPtCut_1Photon,shotPtCut_2Photons,useOldVertexFitterAPI]
 for j in _list_tau: 
     jobproperties.tauRecFlags.add_JobProperty(j)
 del _list_tau
diff --git a/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx b/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
index 097803c5ecbc2ee227ff3a6d44cf59ae47a596a7..886729e23713ebe0683e3551f80ad672a525d256 100644
--- a/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
@@ -27,6 +27,7 @@ TauJetRNNEvaluator::TauJetRNNEvaluator(const std::string &name):
   declareProperty("MaxClusters", m_max_clusters = 6);
   declareProperty("MaxClusterDR", m_max_cluster_dr = 1.0f);
   declareProperty("VertexCorrection", m_doVertexCorrection = true);
+  declareProperty("TrackClassification", m_doTrackClassification = true);
 
   // Naming conventions for the network weight files:
   declareProperty("InputLayerScalar", m_input_layer_scalar = "scalar");
@@ -182,7 +183,23 @@ const TauJetRNN* TauJetRNNEvaluator::get_rnn_3p() const {
 }
 
 StatusCode TauJetRNNEvaluator::get_tracks(const xAOD::TauJet &tau, std::vector<const xAOD::TauTrack *> &out) const {
-  auto tracks = tau.allTracks();
+  std::vector<const xAOD::TauTrack*> tracks = tau.allTracks();
+
+  // Skip unclassified tracks:
+  // - the track is a LRT and classifyLRT = false
+  // - the track is not among the MaxNtracks highest-pt tracks in the track classifier
+  // - track classification is not run (trigger)
+  if(m_doTrackClassification) {
+    std::vector<const xAOD::TauTrack*>::iterator it = tracks.begin();
+    while(it != tracks.end()) {
+      if((*it)->flag(xAOD::TauJetParameters::unclassified)) {
+	it = tracks.erase(it);
+      }
+      else {
+	++it;
+      }
+    }
+  }
 
   // Sort by descending pt
   auto cmp_pt = [](const xAOD::TauTrack *lhs, const xAOD::TauTrack *rhs) {
diff --git a/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx b/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx
index 9d23e5432ee40397458f3c3639b6dceae1385bde..00f2c9eb15024869be80183a2becac546985151e 100644
--- a/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx
+++ b/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx
@@ -23,8 +23,9 @@ using namespace tauRecTools;
 //==============================================================================
 
 //______________________________________________________________________________
-TauTrackRNNClassifier::TauTrackRNNClassifier(const std::string& sName)
-  : TauRecToolBase(sName) {
+TauTrackRNNClassifier::TauTrackRNNClassifier(const std::string& name)
+  : TauRecToolBase(name) {
+  declareProperty("classifyLRT", m_classifyLRT = true);
 }
 
 //______________________________________________________________________________
@@ -35,11 +36,9 @@ TauTrackRNNClassifier::~TauTrackRNNClassifier()
 //______________________________________________________________________________
 StatusCode TauTrackRNNClassifier::initialize()
 {
-  ATH_MSG_DEBUG("intialize classifiers");
-
-  for (auto cClassifier : m_vClassifier){
-    ATH_MSG_INFO("TauTrackRNNClassifier tool : " << cClassifier );
-    ATH_CHECK(cClassifier.retrieve());
+  for (auto classifier : m_vClassifier){
+    ATH_MSG_INFO("Intialize TauTrackRNNClassifier tool : " << classifier );
+    ATH_CHECK(classifier.retrieve());
   }
  
   return StatusCode::SUCCESS;
@@ -50,21 +49,41 @@ StatusCode TauTrackRNNClassifier::executeTrackClassifier(xAOD::TauJet& xTau, xAO
 
   std::vector<xAOD::TauTrack*> vTracks = xAOD::TauHelpers::allTauTracksNonConst(&xTau, &tauTrackCon);
 
-  for (xAOD::TauTrack* xTrack : vTracks)
-    {
-      // reset all track flags and set status to unclassified
-      xTrack->setFlag(xAOD::TauJetParameters::classifiedCharged, false);
-      xTrack->setFlag(xAOD::TauJetParameters::classifiedConversion, false);
-      xTrack->setFlag(xAOD::TauJetParameters::classifiedIsolation, false);
-      xTrack->setFlag(xAOD::TauJetParameters::classifiedFake, false);
-      xTrack->setFlag(xAOD::TauJetParameters::unclassified, true);
+  for (xAOD::TauTrack* xTrack : vTracks) {
+    // reset all track flags and set status to unclassified
+    xTrack->setFlag(xAOD::TauJetParameters::classifiedCharged, false);
+    xTrack->setFlag(xAOD::TauJetParameters::classifiedConversion, false);
+    xTrack->setFlag(xAOD::TauJetParameters::classifiedIsolation, false);
+    xTrack->setFlag(xAOD::TauJetParameters::classifiedFake, false);
+    xTrack->setFlag(xAOD::TauJetParameters::unclassified, true);
+  }
+
+  // don't classify LRTs even if LRTs were associated with taus in TauTrackFinder
+  if(!m_classifyLRT) {
+    std::vector<xAOD::TauTrack*> vLRTs;
+    std::vector<xAOD::TauTrack*>::iterator it = vTracks.begin(); 
+    while(it != vTracks.end()) {      
+      if((*it)->flag(xAOD::TauJetParameters::LargeRadiusTrack)) {	
+	vLRTs.push_back(*it);
+        it = vTracks.erase(it);
+      }
+      else {
+	++it;
+      }
     }
-  
-  for (auto cClassifier : m_vClassifier) {
-    ATH_CHECK(cClassifier->classifyTracks(vTracks, xTau));
+
+    // decorate LRTs with default RNN scores
+    for (auto classifier : m_vClassifier) {
+      ATH_CHECK(classifier->classifyTracks(vLRTs, xTau, true));
+    }
+  }
+
+  // classify tracks
+  for (auto classifier : m_vClassifier) {
+    ATH_CHECK(classifier->classifyTracks(vTracks, xTau));
   }
 
-  std::vector< ElementLink< xAOD::TauTrackContainer > > &tauTrackLinks(xTau.allTauTrackLinksNonConst());
+  std::vector< ElementLink< xAOD::TauTrackContainer > >& tauTrackLinks(xTau.allTauTrackLinksNonConst());
   std::sort(tauTrackLinks.begin(), tauTrackLinks.end(), sortTracks);
   float charge=0.0;
   for( const xAOD::TauTrack* trk : xTau.tracks(xAOD::TauJetParameters::classifiedCharged) ){
@@ -82,13 +101,15 @@ StatusCode TauTrackRNNClassifier::executeTrackClassifier(xAOD::TauJet& xTau, xAO
 
   //set modifiedIsolationTrack
   for (xAOD::TauTrack* xTrack : vTracks) {
-    if( not xTrack->flag(xAOD::TauJetParameters::classifiedCharged) and 
-	xTrack->flag(xAOD::TauJetParameters::passTrkSelector) ) xTrack->setFlag(xAOD::TauJetParameters::modifiedIsolationTrack, true);
-    else xTrack->setFlag(xAOD::TauJetParameters::modifiedIsolationTrack, false);
+    if( not xTrack->flag(xAOD::TauJetParameters::classifiedCharged) and xTrack->flag(xAOD::TauJetParameters::passTrkSelector) ) {
+      xTrack->setFlag(xAOD::TauJetParameters::modifiedIsolationTrack, true);
+    }
+    else {
+      xTrack->setFlag(xAOD::TauJetParameters::modifiedIsolationTrack, false);
+    }
   }
   xTau.setDetail(xAOD::TauJetParameters::nModifiedIsolationTracks, (int) xTau.nTracks(xAOD::TauJetParameters::modifiedIsolationTrack));
 
-
   return StatusCode::SUCCESS;
 }
 
@@ -97,13 +118,13 @@ StatusCode TauTrackRNNClassifier::executeTrackClassifier(xAOD::TauJet& xTau, xAO
 //==============================================================================
 
 //______________________________________________________________________________
-TrackRNN::TrackRNN(const std::string& sName)
-  : TauRecToolBase(sName)
-  , m_sInputWeightsPath("")
+TrackRNN::TrackRNN(const std::string& name)
+  : TauRecToolBase(name)
+  , m_inputWeightsPath("")
 {
   // for conversion compatibility cast nTracks 
   int nMaxNtracks = 0;
-  declareProperty( "InputWeightsPath", m_sInputWeightsPath );
+  declareProperty( "InputWeightsPath", m_inputWeightsPath );
   declareProperty( "MaxNtracks",  nMaxNtracks);
   m_nMaxNtracks = (unsigned int)nMaxNtracks;
 }
@@ -122,18 +143,30 @@ StatusCode TrackRNN::initialize()
 }
 
 //______________________________________________________________________________
-StatusCode TrackRNN::classifyTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD::TauJet& xTau) const
+StatusCode TrackRNN::classifyTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD::TauJet& xTau, bool skipTracks) const
 {
-  if(vTracks.size() == 0)
+  if(vTracks.size() == 0) {
     return StatusCode::SUCCESS;
-
-  std::sort(vTracks.begin(), vTracks.end(), [](const xAOD::TauTrack * a, const xAOD::TauTrack * b) {return a->pt() > b->pt();});
+  }
 
   static const SG::AuxElement::Accessor<float> idScoreCharged("rnn_chargedScore");
   static const SG::AuxElement::Accessor<float> idScoreIso("rnn_isolationScore");
   static const SG::AuxElement::Accessor<float> idScoreConv("rnn_conversionScore");
   static const SG::AuxElement::Accessor<float> idScoreFake("rnn_fakeScore");
 
+  // don't classify tracks, set default decorations
+  if(skipTracks) {
+    for(xAOD::TauTrack* track : vTracks) {
+      idScoreCharged(*track) = 0.;
+      idScoreConv(*track) = 0.;
+      idScoreIso(*track) = 0.;
+      idScoreFake(*track) = 0.;
+    }
+    return StatusCode::SUCCESS;
+  }
+
+  std::sort(vTracks.begin(), vTracks.end(), [](const xAOD::TauTrack * a, const xAOD::TauTrack * b) {return a->pt() > b->pt();});
+
   VectorMap valueMap;
   ATH_CHECK(calulateVars(vTracks, xTau, valueMap));
 
@@ -167,11 +200,15 @@ StatusCode TrackRNN::classifyTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD:
     idScoreIso(*vTracks[i]) = vClassProb[2];
     idScoreFake(*vTracks[i]) = vClassProb[3];
 
-    int iMaxIndex = 3; // for safty reasons set this to FT to circumvent bias
+    int iMaxIndex = 3; // for safety reasons set this to FT to circumvent bias
     for (unsigned int j = 0; j < vClassProb.size(); ++j){
       if(vClassProb[j] > vClassProb[iMaxIndex]) iMaxIndex = j;
     }
 
+    if(iMaxIndex < 4) {
+      vTracks[i]->setFlag(xAOD::TauJetParameters::unclassified, false);
+    }
+
     if(iMaxIndex == 3){
       vTracks[i]->setFlag(xAOD::TauJetParameters::classifiedFake, true);
     }else if(iMaxIndex == 0){
@@ -180,8 +217,6 @@ StatusCode TrackRNN::classifyTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD:
       vTracks[i]->setFlag(xAOD::TauJetParameters::classifiedConversion, true);
     }else if(iMaxIndex == 2){
       vTracks[i]->setFlag(xAOD::TauJetParameters::classifiedIsolation, true);
-    }else if(iMaxIndex == 4){
-      vTracks[i]->setFlag(xAOD::TauJetParameters::unclassified, true);
     }
   }
   
@@ -198,10 +233,10 @@ StatusCode TrackRNN::classifyTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD:
 //______________________________________________________________________________
 StatusCode TrackRNN::addWeightsFile()
 {
-  std::string sInputWeightsPath = find_file(m_sInputWeightsPath);
-  ATH_MSG_DEBUG("InputWeightsPath: " << sInputWeightsPath);
+  std::string inputWeightsPath = find_file(m_inputWeightsPath);
+  ATH_MSG_DEBUG("InputWeightsPath: " << inputWeightsPath);
 
-  std::ifstream nn_config_istream(sInputWeightsPath);
+  std::ifstream nn_config_istream(inputWeightsPath);
   
   lwtDev::GraphConfig NNconfig = lwtDev::parse_json_graph(nn_config_istream);
   
@@ -221,8 +256,9 @@ StatusCode TrackRNN::calulateVars(const std::vector<xAOD::TauTrack*>& vTracks, c
   // initialize map with values
   valueMap.clear();
   unsigned int n_timeSteps = vTracks.size();
-  if(m_nMaxNtracks > 0 && n_timeSteps>m_nMaxNtracks)
+  if(m_nMaxNtracks > 0 && n_timeSteps > m_nMaxNtracks) {
     n_timeSteps = m_nMaxNtracks;
+  }
 
   valueMap["log(trackPt)"] = std::vector<double>(n_timeSteps);
   valueMap["log(jetSeedPt)"] = std::vector<double>(n_timeSteps);
@@ -270,9 +306,6 @@ StatusCode TrackRNN::calulateVars(const std::vector<xAOD::TauTrack*>& vTracks, c
       uint8_t iTracksNSCTDeadSensors = 0; ATH_CHECK( xTrackParticle->summaryValue(iTracksNSCTDeadSensors, xAOD::numberOfSCTDeadSensors) );
       uint8_t iTracksNTRTHighThresholdHits = 0; ATH_CHECK( xTrackParticle->summaryValue( iTracksNTRTHighThresholdHits, xAOD::numberOfTRTHighThresholdHits) );
       uint8_t iTracksNTRTHits = 0; ATH_CHECK( xTrackParticle->summaryValue( iTracksNTRTHits, xAOD::numberOfTRTHits) );
-      //uint8_t iNumberOfContribPixelLayers = 0; ATH_CHECK( xTrackParticle->summaryValue(iNumberOfContribPixelLayers, xAOD::numberOfContribPixelLayers) );
-      //uint8_t iNumberOfPixelHoles = 0; ATH_CHECK( xTrackParticle->summaryValue(iNumberOfPixelHoles, xAOD::numberOfPixelHoles) );
-      //uint8_t iNumberOfSCTHoles = 0; ATH_CHECK( xTrackParticle->summaryValue(iNumberOfSCTHoles, xAOD::numberOfSCTHoles) );
 
       float fTracksEProbabilityHT; ATH_CHECK( xTrackParticle->summaryValue( fTracksEProbabilityHT, xAOD::eProbabilityHT) );
   
@@ -296,8 +329,9 @@ StatusCode TrackRNN::calulateVars(const std::vector<xAOD::TauTrack*>& vTracks, c
       valueMap["charge"][i] = fTrackCharge;
 
       ++i;
-      if(m_nMaxNtracks > 0 && i >= m_nMaxNtracks)
+      if(m_nMaxNtracks > 0 && i >= m_nMaxNtracks) {
 	break;
+      }
     }
 
   return StatusCode::SUCCESS;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
index 3275d6aa099923b718a2eb703ed8ec469327724f..a4e13523e0f65c651e9fe23d56ba566048a8f08c 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
@@ -57,6 +57,7 @@ private:
     std::size_t m_max_clusters;
     float m_max_cluster_dr;
     bool m_doVertexCorrection;
+    bool m_doTrackClassification;
 
     // Configuration of the weight file
     std::string m_input_layer_scalar;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h
index 82c8d0c7f7bf7566c0b409353ca409c32bb322a6..ea2152c22c54cd7b359bbab1a84681c5b3e8889b 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h
@@ -49,7 +49,7 @@ public:
 
   ASG_TOOL_CLASS2( TauTrackRNNClassifier, TauRecToolBase, ITauToolBase )
 
-  TauTrackRNNClassifier(const std::string& sName="TauTrackRNNClassifier");
+  TauTrackRNNClassifier(const std::string& name="TauTrackRNNClassifier");
   ~TauTrackRNNClassifier();
 
   // retrieve all track classifier sub tools
@@ -59,6 +59,8 @@ public:
 
  private:
   ToolHandleArray<TrackRNN> m_vClassifier {this, "Classifiers", {}};
+  bool m_classifyLRT;
+
 }; // class TauTrackRNNClassifier
   
 //______________________________________________________________________________
@@ -72,7 +74,7 @@ class TrackRNN
   
   public:
   
-  TrackRNN(const std::string& sName);
+  TrackRNN(const std::string& name);
   ~TrackRNN();
 
   // configure the MVA object and build a general map to store variables
@@ -82,7 +84,7 @@ class TrackRNN
   
   // executes MVA object to get the BDT score, makes the decision and resets
   // classification flags
-  StatusCode classifyTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD::TauJet& xTau) const;
+  StatusCode classifyTracks(std::vector<xAOD::TauTrack*>& vTracks, xAOD::TauJet& xTau, bool skipTracks=false) const;
   
 private:
   // set BDT input variables in the corresponding map entries
@@ -99,7 +101,7 @@ private:
   
 private:
   // configurable variables
-  std::string m_sInputWeightsPath; 
+  std::string m_inputWeightsPath; 
   unsigned int m_nMaxNtracks;
 
 private:
diff --git a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py
index 33662b5b7ee624c81622429983d1df3285378d5b..e68a07385825bbddbbda494d2cfef5af11464051 100644
--- a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py
+++ b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py
@@ -720,7 +720,7 @@ def getTauJetBDTEvaluator(suffix="TauJetBDT", weightsFile="", calibFolder="", mi
 ########################################################################
 # TauJetRNNEvaluator
 def getTauJetRNNEvaluator(NetworkFile0P="", NetworkFile1P="", NetworkFile3P="", OutputVarname="RNNJetScore", 
-                          MaxTracks=10, MaxClusters=6, MaxClusterDR=1.0, 
+                          MaxTracks=10, MaxClusters=6, MaxClusterDR=1.0, TrackClassification=False,
                           InputLayerScalar="scalar", InputLayerTracks="tracks", InputLayerClusters="clusters", 
                           OutputLayer="rnnid_output", OutputNode="sig_prob"):
 
@@ -731,20 +731,21 @@ def getTauJetRNNEvaluator(NetworkFile0P="", NetworkFile1P="", NetworkFile3P="",
 
     from AthenaCommon.AppMgr import ToolSvc
     from tauRecTools.tauRecToolsConf import TauJetRNNEvaluator
-    TauJetRNNEvaluator = TauJetRNNEvaluator(name=_name,
-                                      NetworkFile0P=NetworkFile0P,
-                                      NetworkFile1P=NetworkFile1P,
-                                      NetworkFile3P=NetworkFile3P,
-                                      OutputVarname=OutputVarname,
-                                      MaxTracks=MaxTracks,
-                                      MaxClusters=MaxClusters,
-                                      MaxClusterDR=MaxClusterDR,
-                                      VertexCorrection=doVertexCorrection,
-                                      InputLayerScalar=InputLayerScalar,
-                                      InputLayerTracks=InputLayerTracks,
-                                      InputLayerClusters=InputLayerClusters,
-                                      OutputLayer=OutputLayer,
-                                      OutputNode=OutputNode)
+    TauJetRNNEvaluator = TauJetRNNEvaluator(name = _name,
+                                            NetworkFile0P = NetworkFile0P,
+                                            NetworkFile1P = NetworkFile1P,
+                                            NetworkFile3P = NetworkFile3P,
+                                            OutputVarname = OutputVarname,
+                                            MaxTracks = MaxTracks,
+                                            MaxClusters = MaxClusters,
+                                            MaxClusterDR = MaxClusterDR,
+                                            VertexCorrection = doVertexCorrection,
+                                            TrackClassification = TrackClassification,
+                                            InputLayerScalar = InputLayerScalar,
+                                            InputLayerTracks = InputLayerTracks,
+                                            InputLayerClusters = InputLayerClusters,
+                                            OutputLayer = OutputLayer,
+                                            OutputNode = OutputNode)
 
     ToolSvc += TauJetRNNEvaluator
     cached_instances[_name] = TauJetRNNEvaluator