diff --git a/Phys/TisTosTobbing/src/Hlt1TriggerTisTos.cpp b/Phys/TisTosTobbing/src/Hlt1TriggerTisTos.cpp
index 76b4d1f53a58dfd3ce5a6018d78c0b59c4752aec..f6a3729d8176b25bd427f54599d4413cb6be820c 100644
--- a/Phys/TisTosTobbing/src/Hlt1TriggerTisTos.cpp
+++ b/Phys/TisTosTobbing/src/Hlt1TriggerTisTos.cpp
@@ -25,6 +25,8 @@ Hlt1TriggerTisTos::Hlt1TriggerTisTos( const std::string& type,
   : TriggerTisTos ( type, name , parent )
 {
   declareInterface<ITriggerTisTos>(this);
+  setProperty("HltDecReportsLocation", "Hlt1/DecReports" );
+  setProperty("HltSelReportsLocation", "Hlt1/SelReports" );
 }
 
 //=============================================================================
@@ -40,13 +42,5 @@ StatusCode Hlt1TriggerTisTos::initialize()
   const StatusCode sc = TriggerTisTos::initialize(); 
   if ( sc.isFailure() ) return sc; 
 
-  if ( m_HltDecReportsLocation.value() == LHCb::HltDecReportsLocation::Default )
-  {
-    m_HltDecReportsLocation = "Hlt1/DecReports";
-  }
-  if ( m_HltSelReportsLocation.value() == LHCb::HltSelReportsLocation::Default )
-  {
-    m_HltSelReportsLocation = "Hlt1/SelReports";
-  }
   return sc;
 }
diff --git a/Phys/TisTosTobbing/src/Hlt2TriggerTisTos.cpp b/Phys/TisTosTobbing/src/Hlt2TriggerTisTos.cpp
index a0db430f6753742b9c4c1e4fd57b69715ec5926d..87f5263a0c40fd84d84ea45463dce4452be949f5 100644
--- a/Phys/TisTosTobbing/src/Hlt2TriggerTisTos.cpp
+++ b/Phys/TisTosTobbing/src/Hlt2TriggerTisTos.cpp
@@ -25,6 +25,16 @@ Hlt2TriggerTisTos::Hlt2TriggerTisTos( const std::string& type,
   : TriggerTisTos ( type, name , parent )
 {
   declareInterface<ITriggerTisTos>(this);
+  setProperty("HltDecReportsLocation", "Hlt2/DecReports" );
+  setProperty("HltSelReportsLocation", "Hlt2/SelReports" );
+
+  // For Run 2 data Hlt2SelReports contain muon hits when IsMuonLoose is fulfiled.
+  // Due to an inconsistency with the TriggerTisTosTool which asks for IsMuon to take
+  // offline hits into account, this leads to particles being TPS instead of TOS.
+  // The following line disables that Muon hits are considered for TOS decisions.
+  // For a more detailed disucssion look at https://its.cern.ch/jira/browse/LHCBPS-1746 .
+  setProperty("TOSFracMuon", 0.0 );
+  
 }
 
 //=============================================================================
@@ -40,13 +50,11 @@ StatusCode Hlt2TriggerTisTos::initialize()
   const StatusCode sc = TriggerTisTos::initialize(); 
   if ( sc.isFailure() ) return sc; 
 
-  if ( m_HltDecReportsLocation.value() == LHCb::HltDecReportsLocation::Default )
-  {
-    m_HltDecReportsLocation = "Hlt2/DecReports";
-  }
-  if ( m_HltSelReportsLocation.value() == LHCb::HltSelReportsLocation::Default )
-  {
-    m_HltSelReportsLocation = "Hlt2/SelReports";
+  if ((getTOSFrac( kMuon ) > 0 )){
+    Warning("L0 TOS fractions set positive for Muons. Be aware that for Run 2 data there is an issue when"
+	    "including Muons in the Hlt2 TISTOS decision. See https://its.cern.ch/jira/browse/LHCBPS-1746.").ignore();
+    Warning("TOS frac muon " + std::to_string(getTOSFrac( kMuon ))).ignore();
   }
+
   return sc;
 }
diff --git a/Phys/TisTosTobbing/src/L0TriggerTisTos.cpp b/Phys/TisTosTobbing/src/L0TriggerTisTos.cpp
index 180dde44024da0a845e8a56af490ea5bacf7277d..07eac4b7399143f510c5b4d87a43e6f7e9ea5895 100644
--- a/Phys/TisTosTobbing/src/L0TriggerTisTos.cpp
+++ b/Phys/TisTosTobbing/src/L0TriggerTisTos.cpp
@@ -25,6 +25,8 @@ L0TriggerTisTos::L0TriggerTisTos( const std::string& type,
   : TriggerTisTos ( type, name , parent )
 {
   declareInterface<ITriggerTisTos>(this);
+  setProperty("HltDecReportsLocation", "HltLikeL0/DecReports" );
+  setProperty("HltSelReportsLocation", "HltLikeL0/SelReports" );
 }
 
 //=============================================================================
@@ -39,15 +41,13 @@ StatusCode L0TriggerTisTos::initialize()
 {
   const StatusCode sc = TriggerTisTos::initialize(); 
   if ( sc.isFailure() ) return sc; 
-
-  if ( m_HltDecReportsLocation.value() == LHCb::HltDecReportsLocation::Default )
-  {
-    m_HltDecReportsLocation = "HltLikeL0/DecReports";
-  }
-  if ( m_HltSelReportsLocation.value() == LHCb::HltSelReportsLocation::Default )
-  {
-    m_HltSelReportsLocation = "HltLikeL0/SelReports";
+  if ((getTOSFrac( kMuon ) <= 0 ) || (getTOSFrac( kEcal ) <= 0) || (getTOSFrac( kHcal ) <= 0) ){
+    Warning("L0 TOS fractions set zero or negative for Muons, ECAL or HCAL. This will make the matching with L0 objects useless.").ignore();
+    Warning("TOS frac muon " + std::to_string(getTOSFrac( kMuon ))).ignore();
+    Warning("TOS frac ECAL " + std::to_string(getTOSFrac( kEcal ))).ignore();
+    Warning("TOS frac HCAL " + std::to_string(getTOSFrac( kHcal ))).ignore();
   }
+
   debug() << "L0DecReportsMaker and L0SelReportsMaker must be executed before using this tool" 
           << endmsg;  
   debug() << "DecReport location = " << m_HltDecReportsLocation.value()
diff --git a/Phys/TisTosTobbing/src/TisTosParticleTagger.cpp b/Phys/TisTosTobbing/src/TisTosParticleTagger.cpp
index 098c564ebae3d6dc71414c8c54aa4e6501e3e490..b1e3dbe5d66a9463f7fb4b0517a5a1724e895069 100644
--- a/Phys/TisTosTobbing/src/TisTosParticleTagger.cpp
+++ b/Phys/TisTosTobbing/src/TisTosParticleTagger.cpp
@@ -417,21 +417,21 @@ StatusCode TisTosParticleTagger::execute()
 
     Particle* candi = const_cast<Particle*>(*particle);
 
-
-    // This is a slow part of TisTos tool - do it only once
-    //      only this tool is guaranteed to be allocated and configured
-    m_tistostool->setOfflineInput(*candi);
-    //      copying offline hits is fast
-    if( split ){
-      if( m_tistostoolHlt1 ){
-	m_tistostoolHlt1->setOfflineInput( m_tistostool->offlineLHCbIDs() );
+    // In general the TOSFraction settings of the different tools are different, so we can't rely on one of them to get
+    // the correct set of LHCbIDs for all of them.
+    if( split ) {
+      if( m_tistostoolHlt1 ) {
+	m_tistostoolHlt1->setOfflineInput( *candi );
       }
-      if( m_tistostoolHlt2 ){
-	m_tistostoolHlt2->setOfflineInput( m_tistostool->offlineLHCbIDs() );
+      if( m_tistostoolHlt2 ) {
+	m_tistostoolHlt2->setOfflineInput( *candi );
       }
+    } else {
+      m_tistostool->setOfflineInput( *candi );
     }
-    if( m_tistostoolL0 ){
-	m_tistostoolL0->setOfflineInput( m_tistostool->offlineLHCbIDs() );
+
+    if( m_tistostoolL0 ) {
+	m_tistostoolL0->setOfflineInput( *candi );
     }
 
     bool acceptStage[NTriggerStages] = { false, false, false };
diff --git a/ReleaseNotes/v23r6.md b/ReleaseNotes/v23r6.md
new file mode 100644
index 0000000000000000000000000000000000000000..3d156be5893090f0204bf7a0e9c2b16144b25536
--- /dev/null
+++ b/ReleaseNotes/v23r6.md
@@ -0,0 +1,16 @@
+2017-08-28 Phys v23r6
+=====================
+
+Release for 2017 production
+---------------------------
+
+This version is released on the 2017-patches branch.
+It is based on Gaudi v28r2, LHCb v42r6, Lbcom v20r6 and Rec v21r6 and uses LCG_88 with ROOT 6.08.06.
+
+- Add TrackClonerWithClusters tool, modify CaloDigitCloner to support existing CaloAdc containers.
+  Required in Moore and Tesla, respectively.
+  - See merge request !168
+- Add a new functor for accessing related info.
+  - See merge request !158
+- LoKiPhys: add new functor ANNPID to provide access to arbitrary ANNPID tuning.
+  - See merge request !155