diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt
index 892479bba6250673dce49841809ff6dc3485c7d8..150f66bcea0ab492ea4d17b9899afeefddcdaabe 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt
@@ -54,16 +54,16 @@ atlas_add_library( TrigL2MuonSALib
                      src/*.cxx
                      PUBLIC_HEADERS TrigL2MuonSA
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver circ_proc MuCalDecode )
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver )
 
 atlas_add_component( TrigL2MuonSA
                      src/*.cxx
                      src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver circ_proc MuCalDecode )
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver )
 
 # Install files from the package:
 atlas_install_headers( TrigL2MuonSA )
 atlas_install_python_modules( python/*.py )
-atlas_install_runtime( share/pt_barrel.lut share/pt_barrelSP.lut share/pt_barrel.mc10.lut share/pt_endcap.lut share/pt_endcap.mc10.lut share/dZ_barrel.lut share/pt_endcap_small_large.lut share/pt_endcap_run2.lut )
+atlas_install_runtime( share/pt_barrel.lut share/pt_barrelSP.lut share/pt_barrel.mc10.lut share/pt_endcap.lut share/pt_endcap.mc10.lut share/dZ_barrel.lut share/pt_endcap_small_large.lut share/pt_endcap_run2.lut share/pt_comb_sigma.lut share/pt_comb_mean.lut)
 
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h
index 91bc2d0766ef45b60352118d0c137d37a4eb21ec..2dad8ca8e6b9f65de7f1f363b0f75244e59c25dd 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h
@@ -95,6 +95,7 @@ class MuFastDataPreparator: public AthAlgTool
 
   void setExtrapolatorTool(ToolHandle<ITrigMuonBackExtrapolator>* backExtrapolator);
 
+  bool isRpcFakeRoi() {return m_isRpcFakeRoi;}
 
  protected:
   
@@ -126,6 +127,7 @@ class MuFastDataPreparator: public AthAlgTool
 
   BooleanProperty m_use_rpc;
 
+  bool m_isRpcFakeRoi;
 };
   
 } // namespace TrigL2MuonSA
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h
index 295711b1984231e5deb27139c92a1bcb4bfcb244..0682f8059f203de4187e0dddfd82e077ea372def 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h
@@ -169,6 +169,7 @@ class MuFastSteering : public HLT::FexAlgo,
   BooleanProperty  m_use_RoIBasedDataAccess_CSC;
   BooleanProperty  m_doCalStream;
   BooleanProperty  m_calDataScouting;
+  BooleanProperty  m_rpcErrToDebugStream;
   
   IntegerProperty m_esd_rpc_size;
   IntegerProperty m_esd_tgc_size;
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h
index 04f84943f7bdf5c4b1f03def9fb18cac39801546..ea7c83c8b02e854e697c4be3e267ea9a748233f1 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h
@@ -13,6 +13,9 @@
 
 #include <map>
 #include <cstring>
+#define ETAS1  5
+#define PHIS1  6
+#define PTS1   3
 
 namespace TrigL2MuonSA {
 
@@ -33,12 +36,20 @@ class PtEndcapLUT: public AthAlgTool
     virtual StatusCode finalize  ();
 
     StatusCode readLUT(std::string lut_fileName);
+    StatusCode readLUTSigmaMean(std::string lut_mean, std::string lut_sigma);
 
     double alpha(double z1, double r1, double z2, double r2) const;
     double radius(double z1, double r1, double s1, double z2, double r2, double s2, double deltar) const;
     double lookup(int side, int charge, DataType type, int iEta, int iPhi, double value) const;
-
+    double ptcombined(int iEta, int iPhi, double ApT, double BpT, double &CApT, double &CBpT) const;
 private:
+    double m_meana[ETAS1][PHIS1][PTS1];
+    double m_meanb[ETAS1][PHIS1][PTS1];
+    double m_meanc[ETAS1][PHIS1][PTS1];
+    double m_sigmaa[ETAS1][PHIS1][PTS1];
+    double m_sigmab[ETAS1][PHIS1][PTS1];
+    double m_sigmac[ETAS1][PHIS1][PTS1];
+
     enum sizes { ETAS = 30, PHIS = 12, PHISEE = 192};
 
     struct KeyType
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h
index e878207c208ce302e51275d8198ddcd12fa44c66..02deed1dbf8803a8e3b93bc159ba5f120d585c33 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h
@@ -39,6 +39,8 @@ class PtEndcapLUTSvc : public AthService, virtual public IInterface
 
   private:
     StringProperty    m_lut_fileName;
+    StringProperty    m_lut_mean;
+    StringProperty    m_lut_sigma;
 
     ToolHandle<PtEndcapLUT>      m_ptEndcapLUT;
 
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h
index a035f22a468636fc2872649fb4376a9114604ab2..839514a5f26c93ec8b2a6a35fee8d7abba70e89f 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h
@@ -74,6 +74,8 @@ class RpcDataPreparator: public AthAlgTool
 			     TrigL2MuonSA::RpcHits&      rpcHits,
 			     ToolHandle<RpcPatFinder>*   rpcPatFinder);
 
+      bool isFakeRoi() { return m_isFakeRoi; }
+
       void setRoIBasedDataAccess(bool use_RoIBasedDataAccess);
       
  private:
@@ -102,6 +104,7 @@ class RpcDataPreparator: public AthAlgTool
       ToolHandle <Muon::MuonIdHelperTool>  m_idHelperTool;  //!< Pointer to concrete tool
 
       bool m_use_RoIBasedDataAccess;
+      bool m_isFakeRoi;
 };
 
 } // namespace TrigL2MuonSA
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements b/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements
index 496e3f5740e87c83c7a2b600585c0771fb3c188e..0c636cfd445ca5fc3b160feecd0e86c0f217264e 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements
@@ -67,6 +67,6 @@ apply_pattern component_library
 apply_pattern declare_joboptions files="*.py"
 apply_pattern declare_python_modules files="*.py"
 
-apply_pattern declare_runtime files="pt_barrel.lut pt_barrelSP.lut pt_barrel.mc10.lut pt_endcap.lut pt_endcap.mc10.lut dZ_barrel.lut pt_endcap_small_large.lut pt_endcap_run2.lut"
+apply_pattern declare_runtime files="pt_barrel.lut pt_barrelSP.lut pt_barrel.mc10.lut pt_endcap.lut pt_endcap.mc10.lut dZ_barrel.lut pt_endcap_small_large.lut pt_endcap_run2.lut pt_comb_mean.lut pt_comb_sigma.lut"
 
 #################################################
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py
index 6ff99c59b859a0fee03e13acdb2cd4be8094c9a6..be2b57133af2d8b3f7cfbc6c0ed7f9c316e53d3e 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py
@@ -52,11 +52,15 @@ class PtEndcapLUTSvc(TrigL2MuonSA__PtEndcapLUTSvc):
     def __init__(self,name = 'PtEndcapLUTSvc'):
         super(PtEndcapLUTSvc ,self).__init__(name)
         self.FileName = "pt_endcap.lut"
+        self.EMeanLUT = "pt_comb_mean.lut"
+        self.ESigmaLUT = "pt_comb_sigma.lut"
 
 class PtEndcapLUTSvc_MC(TrigL2MuonSA__PtEndcapLUTSvc):                            
     def __init__(self,name = 'PtEndcapLUTSvc_MC'):
         super(PtEndcapLUTSvc_MC ,self).__init__(name)
         self.FileName = "pt_endcap.mc10.lut"
+        self.EMeanLUT = "pt_comb_mean.lut"
+        self.ESigmaLUT = "pt_comb_sigma.lut"
 
 class AlignmentBarrelLUTSvc(TrigL2MuonSA__AlignmentBarrelLUTSvc):
     def __init__(self,name = 'AlignmentBarrelLUTSvc'):
@@ -96,6 +100,8 @@ class TrigL2MuonSAConfig(MuFastSteering):
 
         self.USE_ROIBASEDACCESS_CSC = True
 
+        self.RpcErrToDebugStream = True
+
         if ( args[0]== '900GeV' ):
             self.WinPt = 4.0
             self.Scale_Road_BarrelInner  = 3
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_mean.lut b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_mean.lut
new file mode 100644
index 0000000000000000000000000000000000000000..bc0530edf39226eed451b38eb8c872eef7195b42
--- /dev/null
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_mean.lut
@@ -0,0 +1,90 @@
+0 0 0 -3.59368 3.53716 0.177256
+0 0 1 0.00800264 0.0346493 -24.2264
+0 0 2 -0.136881 0.235226 -5.15315
+0 1 0 -1.29824 1.2733 0.248821
+0 1 1 0.000172867 0.0968489 -28.1465
+0 1 2 -0.0459901 0.262098 -15.492
+0 2 0 -0.0311118 0.00813614 14.6002
+0 2 1 0.0167892 0.117797 -59.4152
+0 2 2 -0.0299643 0.235528 -16.1651
+0 3 0 -0.0145812 2.98114e-06 89.4717
+0 3 1 0.000265107 0.119519 -58.397
+0 3 2 -0.0152659 0.223635 -20.16
+0 4 0 -0.0759671 0.0375533 8.92943
+0 4 1 0.0206984 0.108587 -35.6722
+0 4 2 -0.0322562 0.209495 -15.6387
+0 5 0 -0.0672561 0.036557 6.9842
+0 5 1 0.00549397 0.0939447 -20.2035
+0 5 2 -0.0497705 0.155121 -14.2182
+1 0 0 -3.86461 3.89018 -0.114599
+1 0 1 -13.9315 13.862 0.0623192
+1 0 2 -1.47959 1.54112 -0.297973
+1 1 0 -6.12319 6.16625 -0.104838
+1 1 1 -5.97452 5.91879 0.0943978
+1 1 2 -13.2961 13.3626 -0.0257554
+1 2 0 -7.68358 7.73869 -0.0842705
+1 2 1 -4.37649 4.36043 0.0890422
+1 2 2 -18.054 18.1323 -0.0143612
+1 3 0 -0.210979 0.258982 -2.34788
+1 3 1 -0.14994 0.150085 1.3101
+1 3 2 -5.74409 5.83099 -0.0739788
+1 4 0 -0.0671805 0.104984 -9.59847
+1 4 1 -0.139134 0.160883 0.185064
+1 4 2 -5.34897 5.44995 -0.0703339
+1 5 0 -0.0428581 0.201225 -11.773
+1 5 1 0.0821681 0.0921118 -28.1011
+1 5 2 0.0457153 0.243184 -13.457
+2 0 0 -0.111879 0.111891 0.00245614
+2 0 1 -0.155095 0.144741 0.311223
+2 0 2 -6.02544 6.07963 -0.0297657
+2 1 0 -0.00661012 0.0252825 -26.1876
+2 1 1 -0.00647501 0.0270316 -38.1566
+2 1 2 -11.5165 11.5799 -0.0249735
+2 2 0 -1.37616 1.39011 -0.19204
+2 2 1 -0.00555334 0.0602512 -92.4561
+2 2 2 -8.06338 8.13949 -0.0450208
+2 3 0 -7.52386 7.54159 -0.0384571
+2 3 1 -0.00552002 0.0646935 -84.2978
+2 3 2 -5.28527 5.36055 -0.0732475
+2 4 0 -3.46594 3.48018 -0.0598551
+2 4 1 -0.0049124 0.0281286 -28.5938
+2 4 2 -8.34532 8.42992 -0.0450718
+2 5 0 -0.0217548 0.0684079 -9.07854
+2 5 1 0.00342128 0.0637643 -27.2771
+2 5 2 -4.54114 4.67936 -0.13114
+3 0 0 -0.113182 0.113936 -0.942308
+3 0 1 -0.150271 0.14975 -0.528664
+3 0 2 -2.98081 3.04256 -0.0797893
+3 1 0 -0.112257 0.11239 -0.20786
+3 1 1 -0.14897 0.151042 -0.259068
+3 1 2 -4.32793 4.39005 -0.05741
+3 2 0 -0.113079 0.116739 -1.14225
+3 2 1 -0.150472 0.14953 -0.250625
+3 2 2 -6.16312 6.24178 -0.082664
+3 3 0 -0.113454 0.112716 -0.506312
+3 3 1 -0.155605 0.144203 0.658566
+3 3 2 -4.09325 4.14504 -0.0216998
+3 4 0 -0.113702 0.116655 -1.19144
+3 4 1 -0.152668 0.147257 0.63365
+3 4 2 -4.01265 4.07341 -0.0452124
+3 5 0 -5.04683 5.04945 -0.0212442
+3 5 1 -0.151023 0.14895 0.275547
+3 5 2 -1.47433 1.54889 -0.154913
+4 0 0 -8.73677 8.73235 -0.0105359
+4 0 1 -0.149771 0.150229 -0.0742344
+4 0 2 -12.8713 12.93 -0.0228622
+4 1 0 -0.114604 0.100521 0.068904
+4 1 1 -0.149771 0.150229 -0.0742344
+4 1 2 -6.36802 6.41935 0.00414399
+4 2 0 -9.57314 9.57328 -0.0127188
+4 2 1 -0.149771 0.150229 -0.0742344
+4 2 2 -11.0968 11.1587 -0.0229806
+4 3 0 -9.34833 9.35522 -0.0222449
+4 3 1 -0.149771 0.150229 -0.0742344
+4 3 2 -2.26113 2.32926 -0.112874
+4 4 0 -0.113262 0.110444 -0.421306
+4 4 1 -0.149771 0.150229 -0.0742344
+4 4 2 -7.66408 7.70505 -0.0103456
+4 5 0 -10.0028 10.0033 -0.00681502
+4 5 1 -0.149771 0.150229 -0.0742344
+4 5 2 -5.67568 5.73125 -0.0398479
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_sigma.lut b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_sigma.lut
new file mode 100644
index 0000000000000000000000000000000000000000..15f9aff0af87c95be351559735534df913811790
--- /dev/null
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_sigma.lut
@@ -0,0 +1,90 @@
+0 0 0 8.10769e-06 0.00222116 0.0910595
+0 0 1 2.10056e-05 0.000706016 0.0952584
+0 0 2 8.3454e-06 0.0101788 0.0258514
+0 1 0 5.8745e-06 0.00288405 0.0765274
+0 1 1 1.1293e-05 0.00329308 0.0394403
+0 1 2 2.3697e-05 0.00969903 0.0296885
+0 2 0 1.00352e-05 0.00284628 0.0730156
+0 2 1 -9.74677e-06 0.00529842 0.0260528
+0 2 2 4.8304e-05 0.0087686 0.0334119
+0 3 0 8.29411e-06 0.00308952 0.0683094
+0 3 1 -2.57559e-05 0.00554597 0.0323057
+0 3 2 5.41179e-05 0.008225 0.0446791
+0 4 0 1.14007e-05 0.00312406 0.0760151
+0 4 1 -5.4307e-05 0.00841898 0.0128159
+0 4 2 4.87683e-05 0.00851447 0.0329146
+0 5 0 1.26316e-05 0.00278164 0.0747614
+0 5 1 -5.70778e-05 0.0084958 0.00973779
+0 5 2 1.48862e-05 0.00964095 0.0215871
+1 0 0 -4.003e-05 0.00722708 0.0891993
+1 0 1 -9.88858e-08 0.0019673 0.118546
+1 0 2 -2.58422e-05 0.0110531 0.0905445
+1 1 0 -5.90047e-06 0.00536033 0.0955956
+1 1 1 -6.0294e-07 0.00184061 0.10519
+1 1 2 3.0458e-05 0.00995729 0.083571
+1 2 0 -1.67936e-06 0.00493549 0.0912151
+1 2 1 8.84304e-06 0.00146386 0.10554
+1 2 2 9.6022e-05 0.00648673 0.125343
+1 3 0 7.42503e-06 0.00464419 0.0761121
+1 3 1 1.27969e-05 0.00200635 0.0775154
+1 3 2 9.86069e-05 0.00591394 0.122626
+1 4 0 8.87873e-06 0.00478483 0.088355
+1 4 1 1.23535e-05 0.00372126 0.0732179
+1 4 2 9.68913e-05 0.00691143 0.0830685
+1 5 0 1.57393e-05 0.00619255 0.0771286
+1 5 1 -1.59064e-06 0.00619254 0.0640033
+1 5 2 0.000124951 0.00677542 0.0812014
+2 0 0 1.28605e-05 0.00169931 0.0836223
+2 0 1 6.82412e-06 0.000765819 0.0628034
+2 0 2 1.15866e-05 0.00721693 0.0601342
+2 1 0 1.17595e-05 0.00199904 0.0703774
+2 1 1 2.51274e-06 0.00148398 0.0392734
+2 1 2 1.73932e-05 0.00766027 0.048971
+2 2 0 1.06118e-05 0.00256805 0.0584363
+2 2 1 1.18871e-05 0.00137635 0.0372629
+2 2 2 2.17986e-05 0.00756348 0.0501406
+2 3 0 2.88839e-06 0.00351025 0.0471033
+2 3 1 6.8425e-06 0.0024271 0.0364128
+2 3 2 2.01282e-05 0.00800897 0.0389879
+2 4 0 5.37792e-06 0.00404417 0.0486945
+2 4 1 3.81929e-06 0.00432056 0.0247991
+2 4 2 1.52332e-05 0.00842919 0.0365414
+2 5 0 6.31428e-06 0.00474114 0.0525133
+2 5 1 -1.27226e-05 0.00641321 0.0163023
+2 5 2 1.08506e-05 0.00926773 0.0279202
+3 0 0 7.34482e-06 0.00157073 0.0542773
+3 0 1 -8.70228e-06 0.00212978 0.0337384
+3 0 2 8.18609e-06 0.00772237 0.0237993
+3 1 0 1.15696e-05 0.00144979 0.0538473
+3 1 1 -2.98831e-06 0.0021668 0.0200038
+3 1 2 1.02154e-05 0.0070153 0.0399164
+3 2 0 5.47541e-06 0.00228708 0.0387635
+3 2 1 1.03531e-06 0.00257136 0.01389
+3 2 2 -1.19239e-05 0.00865636 0.0105139
+3 3 0 7.46595e-06 0.00276536 0.0393604
+3 3 1 6.54585e-06 0.00327857 0.0188556
+3 3 2 8.00553e-06 0.00725566 0.0368895
+3 4 0 4.28254e-06 0.00364364 0.0358234
+3 4 1 1.10502e-05 0.00439697 0.0209925
+3 4 2 3.26537e-06 0.00741033 0.029642
+3 5 0 5.36799e-06 0.00423396 0.0291526
+3 5 1 -3.90863e-06 0.00644818 0.00154986
+3 5 2 1.07145e-05 0.00722852 0.0260999
+4 0 0 2.72923e-06 0.00166794 0.0401684
+4 0 1 -1.27295e-06 0.000119105 -0.00212618
+4 0 2 6.32721e-07 0.00678819 0.0308744
+4 1 0 4.28262e-06 0.00161918 0.0441883
+4 1 1 -1.27295e-06 0.000119105 -0.00212618
+4 1 2 2.20954e-05 0.00590342 0.0436611
+4 2 0 5.29382e-06 0.00203998 0.0336522
+4 2 1 -1.27295e-06 0.000119105 -0.00212618
+4 2 2 -1.13812e-05 0.0078567 0.0129103
+4 3 0 7.59397e-06 0.00242973 0.036626
+4 3 1 -1.27295e-06 0.000119105 -0.00212618
+4 3 2 1.15198e-05 0.00621712 0.0400399
+4 4 0 -1.29821e-06 0.00360729 0.0275719
+4 4 1 -1.27295e-06 0.000119105 -0.00212618
+4 4 2 -3.98803e-06 0.00702908 0.0254325
+4 5 0 3.18474e-06 0.00377418 0.0284027
+4 5 1 -1.27295e-06 0.000119105 -0.00212618
+4 5 2 1.35728e-06 0.00683661 0.0310649
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx
index 69e3e4bf9384af5349fccbadf97ffb6313015a0c..0dde19a4cc4ea262bb3843ed411be0b9d4d47a5b 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx
@@ -105,10 +105,14 @@ ReturnCode CscSegmentMaker :: FindSuperPointCsc( const TrigL2MuonSA::CscHits &cs
         int cathodelayer = 2*(cscHit.WireLayer-1)+  cscHit.MeasuresPhi;//cathodelayer is in [0,7]
         int module_hash = m_cscregdict->get_hash(cscHit.StationName, cscHit.StationEta,  cscHit.StationPhi);
         
-        clusters[module_hash][cathodelayer].push_back( cscHit );
-        
-        hash_clusters[module_hash]=1;//set modules to read
+	if( 0<=module_hash && 31>=module_hash ){ 
+	  clusters[module_hash][cathodelayer].push_back( cscHit );        
+	  hash_clusters[module_hash]=1;//set modules to read
+	} else {
+	  continue;
+        }
         
+
       }//for clusters
       
       
@@ -676,7 +680,21 @@ ReturnCode CscSegmentMaker :: display_hits(const std::vector<localCscHit> localH
 
 
 
-CscSegment :: CscSegment(){}
+CscSegment :: CscSegment(){
+
+  m_l1id=0;
+  m_x=0.;
+  m_y=0.;
+  m_z=0.;
+  m_px=0.;
+  m_py=0.;
+  m_pz=0.;
+  m_slopeRZ=0.;
+  m_interceptRZ=0.;
+  m_nhit_eta=0;
+  m_nhit_phi=0;
+
+}
 
 CscSegment :: ~CscSegment(){}
 
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx
index 8a5ada688f37996ca053740300125ac26ce67c47..08a8d63a2d234c94f92f2e91fddff9b7af18226b 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx
@@ -274,6 +274,10 @@ StatusCode TrigL2MuonSA::MuFastDataPreparator::prepareData(const LVL1::RecMuonRo
 					  roiWord,
                                           rpcHits,
                                           &m_rpcPatFinder);
+
+    // check if the RoI is fake and se the flag
+    m_isRpcFakeRoi = m_rpcDataPreparator->isFakeRoi();
+
     if (!sc.isSuccess()) {
       ATH_MSG_DEBUG("Error in RPC data prepapration. Continue using RoI");
     }
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx
index 64ec2c176fe7702e3d8eff5f33fc95232468b440..31f984523cf4fab8e2510767a891a77d548811a6 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx
@@ -90,6 +90,8 @@ MuFastSteering::MuFastSteering(const std::string& name, ISvcLocator* svc)
   
   declareProperty("WinPt",m_winPt=4.0);
 
+  declareProperty("RpcErrToDebugStream",m_rpcErrToDebugStream = false);
+
   declareMonitoredVariable("InnMdtHits", m_inner_mdt_hits);
   declareMonitoredVariable("MidMdtHits", m_middle_mdt_hits);
   declareMonitoredVariable("OutMdtHits", m_outer_mdt_hits);
@@ -361,7 +363,9 @@ HLT::ErrorCode MuFastSteering::hltExecute(const HLT::TriggerElement* inputTE,
   std::vector<const LVL1::RecMuonRoI*> muonRoIs;
   std::vector<const LVL1::RecMuonRoI*>::const_iterator p_roi;
   HLT::ErrorCode hec = getFeatures(inputTE, muonRoIs);
+
   if (hec != HLT::OK && hec2 != HLT::OK) {
+    ATH_MSG_ERROR("Could not find input TE");
     return hec2;
   }
   
@@ -412,6 +416,13 @@ HLT::ErrorCode MuFastSteering::hltExecute(const HLT::TriggerElement* inputTE,
       }
       if (m_timerSvc) m_timers[ITIMER_DATA_PREPARATOR]->pause();
 
+      if ( m_rpcErrToDebugStream && m_dataPreparator->isRpcFakeRoi() ) {
+        ATH_MSG_WARNING("Invalid RoI in RPC data found: event to debug stream");
+	updateOutputTE(outputTE, inputTE, *p_roi, *p_roids, m_muonRoad, m_mdtRegion, m_rpcHits, m_tgcHits,
+		       m_rpcFitResult, m_tgcFitResult, m_mdtHits_normal, m_cscHits, m_trackPatterns);
+	return HLT::ErrorCode(HLT::Action::ABORT_CHAIN, HLT::Reason::UNKNOWN);
+      } 
+
       // Pattern finding
       if (m_timerSvc) m_timers[ITIMER_PATTERN_FINDER]->resume();
       sc = m_patternFinder->findPatterns(m_muonRoad,
@@ -1517,7 +1528,9 @@ HLT::ErrorCode MuFastSteering::prepareRobRequests(const HLT::TriggerElement* inp
   
   std::vector<const TrigRoiDescriptor*> roids;
   HLT::ErrorCode hec = getFeatures(inputTE, roids);
+
   if (hec != HLT::OK) {
+    ATH_MSG_ERROR("Could not find input TE");
     return hec;
   }
   
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx
index c5d8511d9f5da5a6c8427df2e2809d1956b8a686..1f21f1e55598cf732d2f279d6770d7999ebee8ac 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx
@@ -340,3 +340,142 @@ StatusCode TrigL2MuonSA::PtEndcapLUT::finalize()
 
 // --------------------------------------------------------------------------------
 // --------------------------------------------------------------------------------
+double TrigL2MuonSA::PtEndcapLUT::ptcombined(int iEta, int iPhi, double ApT, double BpT, double &CApT, \
+					     double &CBpT) const
+{
+  msg() << MSG::DEBUG << "pTcombined("
+	<< "iEta="      << iEta
+	<< "iPhi="      << iPhi
+	<< "Alpha pT="  << ApT
+	<< "Beta pT="   << BpT
+	<< ")" << endreq;
+
+  if (iEta == -1) iEta =  0;
+  if (iEta == 30) iEta = 29;
+
+  if (iEta < 0 || iEta >= ETAS || iPhi < 0 || iPhi >= PHIS) {
+    msg() << MSG::WARNING << "pTcombined("<< iEta << ", " << iPhi << ") Invalid indices" << endreq;
+    return 0.0;
+  }
+
+  const float ZERO_LIMIT = 1e-5;
+  int iphibin=iPhi;
+  int ietabin=iEta/6;
+  if(iPhi==5||iPhi==6)iphibin=5;
+  if(iPhi==4||iPhi==7)iphibin=4;
+  if(iPhi==3||iPhi==8)iphibin=3;
+  if(iPhi==2||iPhi==9)iphibin=2;
+  if(iPhi==1||iPhi==10)iphibin=1;
+  if(iPhi==0||iPhi==11)iphibin=0;
+  CApT=0.;
+  CBpT=0.;
+  double Ameana = m_meana[ietabin][iphibin][0];
+  double Ameanb = m_meanb[ietabin][iphibin][0];
+  double Ameanc = m_meanc[ietabin][iphibin][0];
+  double Bmeana = m_meana[ietabin][iphibin][1];
+  double Bmeanb = m_meanb[ietabin][iphibin][1];
+  double Bmeanc = m_meanc[ietabin][iphibin][1];
+
+  double Asigmaa = m_sigmaa[ietabin][iphibin][0];
+  double Asigmab = m_sigmab[ietabin][iphibin][0];
+  double Asigmac = m_sigmac[ietabin][iphibin][0];
+  double Bsigmaa = m_sigmaa[ietabin][iphibin][1];
+  double Bsigmab = m_sigmab[ietabin][iphibin][1];
+  double Bsigmac = m_sigmac[ietabin][iphibin][1];
+
+  
+  double MeanAP  = ( fabs(ApT) > ZERO_LIMIT)? (Ameana + Ameanb * exp( Ameanc / ApT)) : 1.0;
+  double MeanBP  = ( fabs(BpT) > ZERO_LIMIT)? (Bmeana + Bmeanb * exp( Bmeanc / BpT)) : 1.0;
+  double ApT_tmp = ( fabs(1-MeanAP) > ZERO_LIMIT)? (fabs(ApT) / (1-MeanAP)) : 1.0;
+  ApT_tmp = fabs(ApT_tmp);
+  if(ApT_tmp >= 500) ApT_tmp = 500;
+  double BpT_tmp = ( fabs(1-MeanBP) > ZERO_LIMIT)? (fabs(BpT) / (1-MeanBP)) : 1.0;
+  BpT_tmp = fabs(BpT_tmp);
+  if(BpT_tmp >= 500) BpT_tmp = 500;
+
+  CApT = ApT_tmp;
+  CBpT = BpT_tmp;
+  
+  if(ApT == 0. ) CApT = 0.;
+  if(BpT == 0. ) CBpT = 0.;
+  double NSigmaA= Asigmaa * fabs(ApT_tmp) * fabs(ApT_tmp) + Asigmab * fabs(ApT_tmp) + Asigmac;
+  double NSigmaB= Bsigmaa * fabs(BpT_tmp) * fabs(BpT_tmp) + Bsigmab * fabs(BpT_tmp) + Bsigmac;
+
+  double NVsigpTA =(fabs(ApT_tmp) > ZERO_LIMIT&& fabs(NSigmaA) > ZERO_LIMIT)? (1/(NSigmaA * ApT_tmp) ): 1.0; 
+  double NVsigpTB =(fabs(BpT_tmp) > ZERO_LIMIT&& fabs(NSigmaB) > ZERO_LIMIT)? (1/(NSigmaB * BpT_tmp) ): 1.0; 
+  double NVsigAsq =(fabs(NSigmaA) > ZERO_LIMIT)? (1/(NSigmaA * NSigmaA))  : 1.0; 
+  double NVsigBsq =(fabs(NSigmaB) > ZERO_LIMIT)? (1/(NSigmaB * NSigmaB))  : 1.0; 
+
+  double NVsigpTAsq = NVsigpTA * NVsigpTA;
+  double NVsigpTBsq = NVsigpTB * NVsigpTB;
+  double pt = (fabs(NVsigAsq + NVsigBsq) > ZERO_LIMIT)? (1/sqrt((NVsigpTAsq + NVsigpTBsq)/(NVsigAsq + NVsigBsq))) : 0.;
+  if(pt>500) pt = 500.;
+  return pt;
+}
+// --------------------------------------------------------------------------------                      
+// -------------------------------------------------------------------------------- 
+
+StatusCode TrigL2MuonSA::PtEndcapLUT::readLUTSigmaMean(std::string lut_mean, std::string lut_sigma)
+{
+  std::ifstream ifsmean(lut_mean.c_str());
+  std::ifstream ifssigma(lut_sigma.c_str());
+  if (!ifsmean.is_open()) {
+    msg() << MSG::ERROR << "Cannot open EndcapLUT Mean file " << lut_mean << endreq;
+    return StatusCode::FAILURE;
+  }
+  if (!ifssigma.is_open()) {
+    msg() << MSG::ERROR << "Cannot open EndcapLUT Sigma file " << lut_sigma << endreq;
+    return StatusCode::FAILURE;
+  }
+
+  std::string line;
+
+  for(int ei=0; ei < ETAS1; ei++){
+    for(int pi=0; pi < PHIS1; pi++){
+      for(int pti=0; pti < PTS1; pti++){
+        m_meana[ei][pi][pti] =0.;
+        m_meanb[ei][pi][pti] =0.;
+        m_meanc[ei][pi][pti] =0.;
+        m_sigmaa[ei][pi][pti]=0.;
+        m_sigmab[ei][pi][pti]=0.;
+        m_sigmac[ei][pi][pti]=0.;
+      }
+    }
+  }
+
+  while (!ifsmean.eof()) {
+    getline(ifsmean, line);
+    if (line.empty()) continue;
+
+    int iEta, iPhi, iNP;
+    double tmp_par1, tmp_par2, tmp_par3;
+    if (sscanf(line.c_str(), "%d %d %d %lf %lf %lf", &iEta, &iPhi, &iNP, &tmp_par1, &tmp_par2, &tmp_par3) != 6) {
+      msg() << MSG::ERROR << " Invalid data in mean EndcapLUT file " << lut_mean << endreq;
+      return StatusCode::FAILURE;
+    }
+
+    m_meana[iEta][iPhi][iNP] = tmp_par1;
+    m_meanb[iEta][iPhi][iNP] = tmp_par2;
+    m_meanc[iEta][iPhi][iNP] = tmp_par3;
+  }
+  ifsmean.close();
+  std::string line2;
+  while (!ifssigma.eof()) {
+    getline(ifssigma, line2);
+    if (line2.empty()) continue;
+
+    int iEta, iPhi, iNP;
+    double tmp_par1, tmp_par2, tmp_par3;
+    if (sscanf(line2.c_str(), "%d %d %d %lf %lf %lf", &iEta, &iPhi, &iNP, &tmp_par1, &tmp_par2, &tmp_par3) != 6) {
+      msg() << MSG::ERROR << " Invalid data in mean EndcapLUT file " << lut_mean << endreq;
+      return StatusCode::FAILURE;
+    }
+
+    m_sigmaa[iEta][iPhi][iNP] = tmp_par1;
+    m_sigmab[iEta][iPhi][iNP] = tmp_par2;
+    m_sigmac[iEta][iPhi][iNP] = tmp_par3;
+  }
+  ifssigma.close();
+
+  return StatusCode::SUCCESS;
+}
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx
index ce1b567b41cf8460e54d827e3077d9644905fc2d..12a475ba00595188dd23e94f7bb7e3d13a47a3bd 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx
@@ -134,7 +134,30 @@ StatusCode TrigL2MuonSA::PtFromAlphaBeta::setPt(TrigL2MuonSA::TrackPattern& trac
 
   if (trackPattern.ptEndcapRadius>0 && trackPattern.ptEndcapRadius<500)
       trackPattern.pt = trackPattern.ptEndcapRadius;//use pt calculated from endcap radius
-  
+
+  bool pTCB = false;
+  if( pTCB ){
+    double Co_APt = 0.;
+    double Co_BPt = 0.;
+    
+    double tmpalphaPt = (*m_ptEndcapLUT)->lookup(side, charge, PtEndcapLUT::ALPHAPOL2, trackPattern.etaBin, trackPattern.phiBin, trackPattern.endcapAlpha) / 1000;
+    trackPattern.ptEndcapAlpha = tmpalphaPt;
+    
+    double tmpbetaPt = 0.;
+    if(fabs(trackPattern.endcapBeta)>ZERO_LIMIT) tmpbetaPt = (*m_ptEndcapLUT)->lookup(side, charge, PtEndcapLUT::BETAPOL2, trackPattern.etaBin, trackPattern.phiBin, trackPattern.endcapBeta) / 1000;
+    trackPattern.ptEndcapBeta = tmpbetaPt;
+    
+    double tmp_pt = (*m_ptEndcapLUT)->ptcombined(trackPattern.etaBin, trackPattern.phiBin, tmpalphaPt,tmpbetaPt, Co_APt, Co_BPt);
+    
+    float final_pt = 0.;
+    if(fabs(Co_APt)>ZERO_LIMIT && fabs(Co_BPt)>ZERO_LIMIT && fabs(Co_BPt-Co_APt)/fabs(Co_APt) < 0.5){
+      final_pt = tmp_pt;
+    }else{
+      final_pt = Co_APt;
+    }
+    if(final_pt == 0.)final_pt = tgcPt;
+  }
+
   ATH_MSG_DEBUG("pT determined from alpha and beta: endcapAlpha/endcapBeta/endcapRadius3P/cscGamma/pT/charge/s_address="
 		<< trackPattern.endcapAlpha << "/" << trackPattern.endcapBeta << "/" << trackPattern.endcapRadius3P << "/" << trackPattern.cscGamma << "/" 
 		<< trackPattern.pt
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx
index 6ea02cb7470be138bd803debdb17dc45568e8ad4..1d91362e76ac60c33ce4a875f4c1682136f7e53b 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx
@@ -167,6 +167,9 @@ StatusCode TrigL2MuonSA::RpcDataPreparator::prepareData(const TrigRoiDescriptor*
   // RPC data extraction referring TrigMuonEFStandaloneTrackTool and MuonHoughPatternFinderTool
   rpcHits.clear();
   
+  // set to false the flag indicating whether the roi is a fake one.
+  m_isFakeRoi = false;
+
   // check the roi ID
   
   //  decode  roIWord
@@ -183,6 +186,8 @@ StatusCode TrigL2MuonSA::RpcDataPreparator::prepareData(const TrigRoiDescriptor*
   if ( !m_rpcCablingSvc->give_PAD_address( side, sector, roiNumber, logic_sector, PADId, padIdHash) ) {
     ATH_MSG_WARNING("Roi Number: " << roiNumber << " not compatible with side, sector: "
 		    << side <<  " " << sector);
+    // set the bool flag to send the event to the debug stream
+    m_isFakeRoi = true;
     //    return StatusCode::FAILURE;
   }
   else {
@@ -359,7 +364,7 @@ StatusCode TrigL2MuonSA::RpcDataPreparator::prepareData(const TrigRoiDescriptor*
      }
    }
 
-     return StatusCode::SUCCESS;
+  return StatusCode::SUCCESS;
 }
 
 // --------------------------------------------------------------------------------