diff --git a/TileCalorimeter/TileRecUtils/CMakeLists.txt b/TileCalorimeter/TileRecUtils/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..35b8885701ce5f90f96fd5bd3500abec76f49911
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/CMakeLists.txt
@@ -0,0 +1,55 @@
+################################################################################
+# Package: TileRecUtils
+################################################################################
+
+# Declare the package name:
+atlas_subdir( TileRecUtils )
+
+# Declare the package's dependencies:
+atlas_depends_on_subdirs( PUBLIC
+                          Calorimeter/CaloConditions
+                          Calorimeter/CaloIdentifier
+                          Calorimeter/CaloInterface
+                          Calorimeter/CaloUtils
+                          Control/AthenaBaseComps
+                          Control/AthenaKernel
+                          DetectorDescription/Identifier
+                          GaudiKernel
+                          TileCalorimeter/TileConditions
+                          TileCalorimeter/TileEvent
+                          TileCalorimeter/TileIdentifier
+                          PRIVATE
+                          Calorimeter/CaloDetDescr
+                          Calorimeter/CaloEvent
+                          Control/AthAllocators
+                          Control/StoreGate
+                          DetectorDescription/GeoModel/GeoModelInterfaces
+                          Event/EventContainers
+                          Event/xAOD/xAODEventInfo
+                          TileCalorimeter/TileCalib/TileCalibBlobObjs
+                          TileCalorimeter/TileDetDescr
+                          Tools/PathResolver )
+
+# External dependencies:
+find_package( Boost COMPONENTS filesystem thread system )
+find_package( CLHEP )
+
+# Component(s) in the package:
+atlas_add_library( TileRecUtilsLib
+                   src/Tile*.cxx
+                   PUBLIC_HEADERS TileRecUtils
+                   INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}
+                   PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
+                   DEFINITIONS ${CLHEP_DEFINITIONS}
+                   LINK_LIBRARIES ${CLHEP_LIBRARIES} CaloConditions CaloIdentifier AthenaBaseComps AthenaKernel Identifier GaudiKernel TileEvent TileIdentifier CaloUtilsLib TileConditionsLib CaloDetDescrLib StoreGateLib SGtests
+                   PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} CaloEvent AthAllocators xAODEventInfo TileCalibBlobObjs TileDetDescr PathResolver )
+
+atlas_add_component( TileRecUtils
+                     src/components/*.cxx
+                     INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}
+                     LINK_LIBRARIES ${Boost_LIBRARIES} ${CLHEP_LIBRARIES} CaloConditions CaloIdentifier CaloUtilsLib AthenaBaseComps AthenaKernel Identifier GaudiKernel TileConditionsLib TileEvent TileIdentifier CaloDetDescrLib CaloEvent AthAllocators StoreGateLib SGtests xAODEventInfo TileCalibBlobObjs TileDetDescr PathResolver TileRecUtilsLib )
+
+# Install files from the package:
+atlas_install_python_modules( python/*.py )
+atlas_install_joboptions( share/*.py )
+
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/ITileRawChannelTool.h b/TileCalorimeter/TileRecUtils/TileRecUtils/ITileRawChannelTool.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileBeamInfoProvider.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileBeamInfoProvider.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellBuilder.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellBuilder.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellFakeProb.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileCellFakeProb.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileCorrelation.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileCorrelation.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileFilterManager.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileFilterManager.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileFilterResult.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileFilterResult.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileFilterTester.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileFilterTester.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileFitter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileFitter.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilterCool.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilterCool.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFlatFilter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFlatFilter.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderMF.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderMF.h
old mode 100755
new mode 100644
index b282f1b8c333ea70772036a3e8efcc51adc88405..acd8c6d235c4a4d00f4ea295a9618348d565c62d
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderMF.h
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderMF.h
@@ -22,8 +22,7 @@
 
 // Tile includes
 #include "TileRecUtils/TileRawChannelBuilder.h"
-#include "TileConditions/TileCondToolOfc.h"
-#include "TileConditions/TileCondToolOfcCool.h"
+#include "TileConditions/ITileCondToolOfc.h"
 #include "TileConditions/TileCondToolTiming.h"
 #include "TileConditions/TileCondToolNoiseSample.h"
 
@@ -50,7 +49,7 @@ class TileRawChannelBuilderMF: public TileRawChannelBuilder {
   private:
     ToolHandle<TileCondToolTiming> m_tileToolTiming;
     ToolHandle<ITileCondToolOfc> m_tileCondToolOfc;
-    ToolHandle<ITileCondToolOfc> m_tileCondToolOfcCool;
+    ToolHandle<ITileCondToolOfc> m_tileCondToolOfcOnFly;
     ToolHandle<TileCondToolNoiseSample> m_tileToolNoiseSample;
 
     bool are3FF(float &dmin, float &dmax); //!< Checks that all the samples are 0x3FF (as sent by the DSP when no data arrives)
@@ -66,7 +65,6 @@ class TileRawChannelBuilderMF: public TileRawChannelBuilder {
     double m_minTime; //!< min allowed time = -25*(m_nSamples-1)/2
 
     bool m_bestPhase; // if true, use best phase from COOL DB in "fixed phase" mode (i.e., no iterations)
-    bool m_ofcFromCool; // if true, take OFCs from DB (no on-fly calculations)
     bool m_timeFromCOF; // if true, take time estimated from second step of COF
 
     std::vector<float> m_digits;
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderManyAmps.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderManyAmps.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOpt2Filter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOpt2Filter.h
old mode 100755
new mode 100644
index 986d5db729a28c5a23d686ee9a8cf652d1c7bdc3..78ecdec6f4877f9499ee927c9f03bd75eb7a930c
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOpt2Filter.h
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOpt2Filter.h
@@ -20,7 +20,6 @@
 // Tile includes
 #include "TileRecUtils/TileRawChannelBuilder.h"
 #include "TileConditions/ITileCondToolOfc.h"
-#include "TileConditions/TileCondToolOfcCool.h"
 #include "TileConditions/TileCondToolTiming.h"
 #include "TileConditions/TileCondToolNoiseSample.h"
 
@@ -72,23 +71,17 @@ class TileRawChannelBuilderOpt2Filter: public TileRawChannelBuilder {
 
     ToolHandle<TileCondToolTiming> m_tileToolTiming;
     ToolHandle<ITileCondToolOfc> m_tileCondToolOfc;
-    ToolHandle<TileCondToolOfcCool> m_tileCondToolOfcCool;
     ToolHandle<TileCondToolNoiseSample> m_tileToolNoiseSample; //!< tool which provides noise values
 
     //!< Applies OF algorithm
     double filter(int ros, int drawer, int channel, int &gain, double &pedestal, double &amplitude, double &time);
     int findMaxDigitPosition();  //!< Finds maximum digit position in the pulse
-    //!< Sets pedestal estimation for OF1
-    float setPedestal(int ros, int drawer, int channel, int gain);
+    //!< Gets pedestal estimation for OF1
+    float getPedestal(int ros, int drawer, int channel, int gain);
     //!< Apply the number of iterations needed for reconstruction by calling the Filter method
-    int iterate(int ros, int drawer, int channel, int gain, double &pedestal, double &amplitude, double &time,
-        double &chi2);
+    int iterate(int ros, int drawer, int channel, int gain, double &pedestal, double &amplitude, double &time, double &chi2);
     //!< Computes A,time,ped using OF. If iterations are required, the Iterator method is used
-    double compute(int ros, int drawer, int channel, int gain, double &pedestal, double &amplitude, double &time,
-        double phase);
-
-//    void BuildPulseShape(std::vector<double> &m_pulseShape, std::vector<double> &m_pulseShapeX
-//        , std::vector<double> &m_pulseShapeT, int dignum, MsgStream &log); //!< Builds pulse shapes
+    double compute(int ros, int drawer, int channel, int gain, double &pedestal, double &amplitude, double &time, double& phase);
 
     void ofc2int(int nDigits, double* w_off, short* w_int, short& scale); // convert weights to dsp short int format
 
@@ -102,7 +95,6 @@ class TileRawChannelBuilderOpt2Filter: public TileRawChannelBuilder {
     bool m_correctTimeNI; //!< If true, resulting time is corrected when using method  without iteration
 
     bool m_bestPhase; // if true, use best phase from COOL DB in "fixed phase" mode (i.e., no iterations)
-    bool m_ofcFromCool; // if true, take OFCs from DB (no on-fly calculations)
     bool m_emulateDsp; // if true, emulate DSP reconstruction algorithm
     int m_nSignal; //!< internal counters
     int m_nNegative;  //!< internal counters
@@ -114,15 +106,6 @@ class TileRawChannelBuilderOpt2Filter: public TileRawChannelBuilder {
     double m_maxTime; //!< max allowed time = 25*(m_nSamples-1)/2
     double m_minTime; //!< min allowed time = -25*(m_nSamples-1)/2
 
-//    std::vector<double> m_LpulseShape_cis;  //!< vector for low gain/CIS pulse shape
-//    std::vector<double> m_HpulseShape_cis;  //!< vector for high gain/CIS pulse shape
-//    std::vector<double> m_LpulseShape_phys; //!< vector for low gain/Physics pulse shape
-//    std::vector<double> m_HpulseShape_phys; //!< vector for high gain/Physics pulse shape
-//
-//    std::vector<double> m_LdpulseShape_cis;  //!< vector for low gain/CIS pulse derivative
-//    std::vector<double> m_HdpulseShape_cis;  //!< vector for high gain/CIS pulse derivative
-//    std::vector<double> m_LdpulseShape_phys; //!< vector for low gain/Physics pulse derivative
-//    std::vector<double> m_HdpulseShape_phys; //!< vector for high gain/Physics pulse derivative
 
     std::vector<float> m_digits;
 };
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOptFilter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOptFilter.h
old mode 100755
new mode 100644
index 44d8d1bb626964b20343e6c71611ca7f27719e07..4144cbf173d825aeb39762f4560484f40388d145
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOptFilter.h
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderOptFilter.h
@@ -64,7 +64,7 @@ class TileRawChannelBuilderOptFilter: public TileRawChannelBuilder {
     float findMaxDigit(); //!< Finds maximum digit value in the pulse
     int findMaxDigitPosition();  //!< Finds maximum digit position in the pulse
     bool are3FF(); //!< Checks that all the samples are 0x3FF (as sent by the DSP when no data arrives)
-    float setPedestal(); //!< Sets pedestal estimation for OF1
+    float getPedestal(); //!< Gets pedestal estimation for OF1
     //!< Apply the number of iterations needed for reconstruction by calling the Filter method
     int iterate(int ros, int drawer, int channel, int gain, double &pedestal, double &amplitude, double &time,
         double &chi2);
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelMaker.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelMaker.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelNoiseFilter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelNoiseFilter.h
index 7b0d937ceb782d5b1cc73885ce9bd3a4f758f34b..a4aa71efd8e21005fe7528261e0f51cb72f21306 100644
--- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelNoiseFilter.h
+++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelNoiseFilter.h
@@ -16,6 +16,7 @@
 // Tile includes
 #include "TileIdentifier/TileRawChannelUnit.h"
 #include "TileRecUtils/ITileRawChannelTool.h"
+#include "TileConditions/TileCondToolEmscale.h"
 
 // forward declarations
 class TileHWID;
@@ -23,7 +24,7 @@ class TileRawChannel;
 class TileRawChannelContainer;
 class TileRawChannelCollection;
 class ITileBadChanTool;
-class TileCondToolEmscale;
+//class TileCondToolEmscale;
 class TileCondToolNoiseSample;
 class TileBeamInfoProvider;
 
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelVerify.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelVerify.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawCorrelatedNoise.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawCorrelatedNoise.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileTowerBuilderTool.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileTowerBuilderTool.h
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/python/TileRawChannelGetter.py b/TileCalorimeter/TileRecUtils/python/TileRawChannelGetter.py
index 5b920f2d3c7aa7ea6a9802ed44d3e3dca6499240..df497722d20887b1474ca8d3cbb0c1dfa0c35233 100644
--- a/TileCalorimeter/TileRecUtils/python/TileRawChannelGetter.py
+++ b/TileCalorimeter/TileRecUtils/python/TileRawChannelGetter.py
@@ -158,7 +158,6 @@ class TileRawChannelGetter ( Configured)  :
                 ##theTileRawChannelBuilderQIEFilter.MaxIterations = 5
                 ##theTileRawChannelBuilderQIEFilter.Minus1Iteration = True
                 ##theTileRawChannelBuilderQIEFilter.AmplitudeCorrection = False; # don't need correction after iterations
-                ##theTileRawChannelBuilderQIEFilter.OfcfromCool = jobproperties.TileRecFlags.OfcFromCOOL()            
                 #from TileConditions.TileCondToolConf import getTileCondToolPulseShape
                 #ToolSvc.TileCondToolOfc.TileCondToolPulseShape = getTileCondToolPulseShape('COOL','PHY')
       
@@ -293,6 +292,7 @@ class TileRawChannelGetter ( Configured)  :
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
                     tileInfoConfigurator.setupCOOLOFC()
+                    theTileRawChannelBuilderMF.TileCondToolOfc = ToolSvc.TileCondToolOfcCool
                 else:
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
@@ -313,7 +313,6 @@ class TileRawChannelGetter ( Configured)  :
                 theTileRawChannelBuilderMF.MaxIterations = 5; # iterative mode on
                 theTileRawChannelBuilderMF.AmplitudeCorrection = False
                 theTileRawChannelBuilderMF.TimeFromCOF = False
-                theTileRawChannelBuilderMF.OfcfromCool = jobproperties.TileRecFlags.OfcFromCOOL()            
                 theTileRawChannelBuilderMF.AmpMinForAmpCorrection = jobproperties.TileRecFlags.AmpMinForAmpCorrection()
                 if jobproperties.TileRecFlags.TimeMaxForAmpCorrection() > jobproperties.TileRecFlags.TimeMinForAmpCorrection():
                     theTileRawChannelBuilderMF.TimeMinForAmpCorrection = jobproperties.TileRecFlags.TimeMinForAmpCorrection()
@@ -367,6 +366,7 @@ class TileRawChannelGetter ( Configured)  :
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
                     tileInfoConfigurator.setupCOOLOFC()
+                    theTileRawChannelBuilderOF1.TileCondToolOfc = ToolSvc.TileCondToolOfcCool
                 else:
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
@@ -389,8 +389,7 @@ class TileRawChannelGetter ( Configured)  :
                 theTileRawChannelBuilderOF1.MaxIterations = 1; # just one iteration
                 theTileRawChannelBuilderOF1.Minus1Iteration = False; # assume that max sample is at t=0
                 theTileRawChannelBuilderOF1.AmplitudeCorrection = jobproperties.TileRecFlags.correctAmplitude()
-                theTileRawChannelBuilderOF1.TimeCorrection = jobproperties.TileRecFlags.correctTimeNI()
-                theTileRawChannelBuilderOF1.OfcfromCool = jobproperties.TileRecFlags.OfcFromCOOL()            
+                theTileRawChannelBuilderOF1.TimeCorrection = False
                 theTileRawChannelBuilderOF1.AmpMinForAmpCorrection = jobproperties.TileRecFlags.AmpMinForAmpCorrection()
                 if jobproperties.TileRecFlags.TimeMaxForAmpCorrection() > jobproperties.TileRecFlags.TimeMinForAmpCorrection():
                     theTileRawChannelBuilderOF1.TimeMinForAmpCorrection = jobproperties.TileRecFlags.TimeMinForAmpCorrection()
@@ -415,6 +414,7 @@ class TileRawChannelGetter ( Configured)  :
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
                     tileInfoConfigurator.setupCOOLOFC()
+                    theTileRawChannelBuilderOpt2Filter.TileCondToolOfc = ToolSvc.TileCondToolOfcCool
                 else:
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
@@ -435,7 +435,6 @@ class TileRawChannelGetter ( Configured)  :
                 theTileRawChannelBuilderOpt2Filter.Minus1Iteration = True
                 theTileRawChannelBuilderOpt2Filter.AmplitudeCorrection = False; # don't need correction after iterations
                 theTileRawChannelBuilderOpt2Filter.TimeCorrection    = False; # don't need correction after iterations
-                theTileRawChannelBuilderOpt2Filter.OfcfromCool = jobproperties.TileRecFlags.OfcFromCOOL()            
                 #from TileConditions.TileCondToolConf import getTileCondToolPulseShape
                 #ToolSvc.TileCondToolOfc.TileCondToolPulseShape = getTileCondToolPulseShape('COOL','PHY')
       
@@ -460,6 +459,7 @@ class TileRawChannelGetter ( Configured)  :
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
                     tileInfoConfigurator.setupCOOLOFC()
+                    theTileRawChannelBuilderOptATLAS.TileCondToolOfc = ToolSvc.TileCondToolOfcCool
                 else:
                     from TileConditions.TileInfoConfigurator import TileInfoConfigurator
                     tileInfoConfigurator = TileInfoConfigurator()
@@ -488,7 +488,6 @@ class TileRawChannelGetter ( Configured)  :
                 theTileRawChannelBuilderOptATLAS.Minus1Iteration = False; # assume that max sample is at t=0
                 theTileRawChannelBuilderOptATLAS.AmplitudeCorrection = jobproperties.TileRecFlags.correctAmplitude()
                 theTileRawChannelBuilderOptATLAS.TimeCorrection = jobproperties.TileRecFlags.correctTimeNI()
-                theTileRawChannelBuilderOptATLAS.OfcfromCool = jobproperties.TileRecFlags.OfcFromCOOL()            
                 theTileRawChannelBuilderOptATLAS.AmpMinForAmpCorrection = jobproperties.TileRecFlags.AmpMinForAmpCorrection()
                 if jobproperties.TileRecFlags.TimeMaxForAmpCorrection() > jobproperties.TileRecFlags.TimeMinForAmpCorrection():
                     theTileRawChannelBuilderOptATLAS.TimeMinForAmpCorrection = jobproperties.TileRecFlags.TimeMinForAmpCorrection()
diff --git a/TileCalorimeter/TileRecUtils/python/TileRecFlags.py b/TileCalorimeter/TileRecUtils/python/TileRecFlags.py
index 51560a34ca6c58210b56fe8ba7c245f176cf9ac0..ded3549ff2e91ca54159f08a7b53c5f8a5cd5f2b 100644
--- a/TileCalorimeter/TileRecUtils/python/TileRecFlags.py
+++ b/TileCalorimeter/TileRecUtils/python/TileRecFlags.py
@@ -142,7 +142,7 @@ class correctTimeNI(JobProperty):
     """
     statusOn     = True
     allowedTypes = ['bool']
-    StoredValue  = False
+    StoredValue  = True
 
 #
 class correctAmplitude(JobProperty):
diff --git a/TileCalorimeter/TileRecUtils/share/TileCellBuilder_cosmics_jobOptions.py b/TileCalorimeter/TileRecUtils/share/TileCellBuilder_cosmics_jobOptions.py
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/share/TileCellBuilder_jobOptions.py b/TileCalorimeter/TileRecUtils/share/TileCellBuilder_jobOptions.py
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileBeamInfoProvider.cxx b/TileCalorimeter/TileRecUtils/src/TileBeamInfoProvider.cxx
old mode 100755
new mode 100644
index e6554ef71179e2ffe3a439ceb4f5843404a0c7cf..8986ebb2993efd48acd1691dd2e9a4c48eec562f
--- a/TileCalorimeter/TileRecUtils/src/TileBeamInfoProvider.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileBeamInfoProvider.cxx
@@ -340,9 +340,13 @@ void TileBeamInfoProvider::handle(const Incident& inc) {
                 }
                   break;
                 case 0x07: {
-                  unsigned int *iCharge = &m_cispar[17];
-                  float *fCharge = reinterpret_cast<float *>(iCharge); // this is for the charge
-                  m_cispar[17] = *fCharge;
+                  // Warning: nonportable.
+                  union {
+                    unsigned int i;
+                    float f;
+                  } chargeCnv;
+                  chargeCnv.i = m_cispar[17];
+                  m_cispar[17] = chargeCnv.f;
 
                   int aux_ext = m_cispar[18];
                   m_cispar[18] = (aux_ext & 0x00ff) - 1; // pmt ext cispar starts from 1
diff --git a/TileCalorimeter/TileRecUtils/src/TileCellBuilder.cxx b/TileCalorimeter/TileRecUtils/src/TileCellBuilder.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileCellFakeProb.cxx b/TileCalorimeter/TileRecUtils/src/TileCellFakeProb.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileCorrelation.cxx b/TileCalorimeter/TileRecUtils/src/TileCorrelation.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileFilterManager.cxx b/TileCalorimeter/TileRecUtils/src/TileFilterManager.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileFilterResult.cxx b/TileCalorimeter/TileRecUtils/src/TileFilterResult.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileFilterTester.cxx b/TileCalorimeter/TileRecUtils/src/TileFilterTester.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileFitter.cxx b/TileCalorimeter/TileRecUtils/src/TileFitter.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx
old mode 100755
new mode 100644
index 84ad076915e0a73a5254773a614d67bb202067b4..913d408128544318abb17ef640ce15e912ef5de3
--- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx
@@ -581,7 +581,7 @@ void TileRawChannelBuilder::endLog() {
 
 double TileRawChannelBuilder::correctAmp(double phase, bool of2) {
 
- double corr=1.0;
+ double corr = 1.0;
  if (of2) {
    // estimation from Belen for rel 14.0.0
    /*double a,b,c;
@@ -618,22 +618,18 @@ double TileRawChannelBuilder::correctAmp(double phase, bool of2) {
 // Time correction for shifted pulses by Tigran
 double TileRawChannelBuilder::correctTime(double phase, bool of2) {
 
-  double corrected = 0.0;
+  double correction = 0.0;
   
   if (of2) {
     if(phase < 0)  {
-      corrected = (-0.00695743 + (0.0020673 - (0.0002976 + 0.00000361305 * phase) * phase) * phase) * phase;
+      correction = (-0.00695743 + (0.0020673 - (0.0002976 + 0.00000361305 * phase) * phase) * phase) * phase;
     } else {
-      corrected = (0.0130013 + (0.00128769 + (-0.000550218 + 0.00000755344 * phase) * phase) * phase) * phase;
-    }
-  } else {
-    if ( phase < 0) {
-      corrected = 0.07529 + (0.0144 + (0.006307 + (0.0003631 + 0.00000375547 * phase) * phase) * phase) * phase;
-    } else {
-      corrected = 0.00750759 + (-0.00731296 + (0.00570012 + (-0.000295357 + 0.00000578402 * phase) * phase) * phase) * phase;
+      correction = (0.0130013 + (0.00128769 + (-0.000550218 + 0.00000755344 * phase) * phase) * phase) * phase;
     }
   }
-  return corrected;
+  // OF1 does not need correction
+
+  return correction;
 }
 
 
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilterCool.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilterCool.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFlatFilter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFlatFilter.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderMF.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderMF.cxx
old mode 100755
new mode 100644
index 121d236201b864ae007aec958794178cc8f01d6d..6f88b19133191b0fd417e50840d013429f8935e4
--- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderMF.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderMF.cxx
@@ -19,9 +19,6 @@
 #include "CaloIdentifier/TileID.h"
 #include "TileIdentifier/TileHWID.h"
 #include "TileConditions/TileInfo.h"
-//#include "TileRecUtils/TileFilterManager.h"
-//#include "TileRecUtils/TileFilterTester.h"
-#include "TileRecUtils/TileRawChannelBuilderOpt2Filter.h"
 #include "TileConditions/TileOptFilterWeights.h"
 #include "TileConditions/TilePulseShapes.h"
 #include "CLHEP/Matrix/Matrix.h"
@@ -44,7 +41,7 @@ TileRawChannelBuilderMF::TileRawChannelBuilderMF(const std::string& type, const
     : TileRawChannelBuilder(type, name, parent)
     , m_tileToolTiming("TileCondToolTiming")
     , m_tileCondToolOfc("TileCondToolOfc")
-    , m_tileCondToolOfcCool("TileCondToolOfcCool")
+    , m_tileCondToolOfcOnFly("TileCondToolOfc")
     , m_tileToolNoiseSample("TileCondToolNoiseSample")
     , m_nSamples(0)
     , m_t0SamplePosition(0)
@@ -61,7 +58,7 @@ TileRawChannelBuilderMF::TileRawChannelBuilderMF(const std::string& type, const
   //declare properties
   declareProperty("TileCondToolTiming", m_tileToolTiming);
   declareProperty("TileCondToolOfc", m_tileCondToolOfc, "TileCondToolOfc");
-  declareProperty("TileCondToolOfcCool", m_tileCondToolOfcCool, "TileCondToolOfcCool");
+  declareProperty("TileCondToolOfcOnFly", m_tileCondToolOfcOnFly, "TileCondToolOfc");
   declareProperty("TileCondToolNoiseSample", m_tileToolNoiseSample);
   declareProperty("AmplitudeCorrection", m_correctAmplitude = false);
   declareProperty("PedestalMode", m_pedestalMode = 1);
@@ -70,7 +67,6 @@ TileRawChannelBuilderMF::TileRawChannelBuilderMF(const std::string& type, const
   declareProperty("MaxIterations", m_maxIterations = 5);
   declareProperty("BestPhase", m_bestPhase = false);
   declareProperty("TimeFromCOF", m_timeFromCOF = false);
-  declareProperty("OfcfromCool", m_ofcFromCool = false);
 }
 
 /**
@@ -105,13 +101,10 @@ StatusCode TileRawChannelBuilderMF::initialize() {
   m_maxTime = 25 * (m_nSamples - m_t0SamplePosition - 1);
   m_minTime = -25 * m_t0SamplePosition;
 
-  if (m_ofcFromCool) {
-    //=== get TileCondToolOfcCool
-    CHECK(m_tileCondToolOfcCool.retrieve());
-  } else {
-    //=== get TileCondToolOfc
-    CHECK(m_tileCondToolOfc.retrieve());
-  }
+  CHECK(m_tileCondToolOfcOnFly.retrieve());
+  //=== get TileCondToolOfc
+  CHECK(m_tileCondToolOfc.retrieve());
+
 
   if (m_bestPhase) {
     //=== get TileToolTiming
@@ -233,12 +226,11 @@ TileRawChannel* TileRawChannelBuilderMF::rawChannel(const TileDigits* tiledigits
     t_ch = -phase;
     for (int it = 0; it < m_maxIterations; it++) {
 
+      float ofcPhase(-t_ch);
       const TileOfcWeightsStruct* weights;
-      if (m_ofcFromCool) {
-        weights = m_tileCondToolOfcCool->getOfcWeights(drawerIdx, channel, gain, -t_ch, true);
-      } else {
-        weights = m_tileCondToolOfc->getOfcWeights(drawerIdx, channel, gain, -t_ch, true);
-      }
+      weights = m_tileCondToolOfc->getOfcWeights(drawerIdx, channel, gain, ofcPhase, true);
+      
+      t_ch = -ofcPhase;
 
       double g[9] = {0};
       double b[9] = {0};
@@ -421,7 +413,8 @@ TileRawChannel* TileRawChannelBuilderMF::rawChannel(const TileDigits* tiledigits
       // amplitude correction for central BC (same as parabolic correction)
       if (m_correctAmplitude && cof[3] > m_ampMinThresh && t_ch > m_timeMinThresh && t_ch < m_timeMaxThresh) {
         double correction = 0.0;
-        weights = m_tileCondToolOfc->getOfcWeights(drawerIdx, channel, gain, -t_ch, true);
+        ofcPhase = -t_ch;
+        weights = m_tileCondToolOfcOnFly->getOfcWeights(drawerIdx, channel, gain, ofcPhase, true);
         for (j = 0; j < n; ++j) {
           correction += weights->g[j] * resultH[iBC3][j];
         }
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderManyAmps.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderManyAmps.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx
old mode 100755
new mode 100644
index e39981c7274c7cd762e1630c68356adf4b3745c4..fc3e5c6de525847a63c9ac1895a68bebe3075dbd
--- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx
@@ -2,6 +2,7 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
+
 //////////////////////////////////////////////////////////////////////
 //
 //     Base on the code of Ximo Poveda.
@@ -58,7 +59,6 @@ TileRawChannelBuilderOpt2Filter::TileRawChannelBuilderOpt2Filter(const std::stri
   : TileRawChannelBuilder(type, name, parent)
   , m_tileToolTiming("TileCondToolTiming")
   , m_tileCondToolOfc("TileCondToolOfc")
-  , m_tileCondToolOfcCool("TileCondToolOfcCool")
   , m_tileToolNoiseSample("TileCondToolNoiseSample")
   , m_nSignal(0)
   , m_nNegative(0)
@@ -78,7 +78,6 @@ TileRawChannelBuilderOpt2Filter::TileRawChannelBuilderOpt2Filter(const std::stri
   //declare properties
   declareProperty("TileCondToolTiming", m_tileToolTiming);
   declareProperty("TileCondToolOfc",    m_tileCondToolOfc  ,"TileCondToolOfc");
-  declareProperty("TileCondToolOfcCool",m_tileCondToolOfcCool  ,"TileCondToolOfcCool");
   declareProperty("TileCondToolNoiseSample", m_tileToolNoiseSample,"TileCondToolNoiseSample");
   declareProperty("MaxIterations",m_maxIterations = 5);
   declareProperty("PedestalMode",m_pedestalMode = 17);
@@ -89,7 +88,6 @@ TileRawChannelBuilderOpt2Filter::TileRawChannelBuilderOpt2Filter(const std::stri
   declareProperty("AmplitudeCorrection",m_correctAmplitude = false);
   declareProperty("TimeCorrection", m_correctTimeNI = false);
   declareProperty("BestPhase",m_bestPhase = false);
-  declareProperty("OfcfromCool",m_ofcFromCool = false);
   declareProperty("EmulateDSP",m_emulateDsp = false);
 }
 
@@ -172,18 +170,12 @@ StatusCode TileRawChannelBuilderOpt2Filter::initialize() {
 
 StatusCode TileRawChannelBuilderOpt2Filter::geoInit(IOVSVC_CALLBACK_ARGS) {
   
-  if (m_ofcFromCool) {
-    //=== get TileCondToolOfcCool
-    CHECK( m_tileCondToolOfcCool.retrieve() );
-  } else {
-    //=== get TileCondToolOfc
-    CHECK( m_tileCondToolOfc.retrieve() );
-  }
+  //=== get TileCondToolOfc
+  CHECK( m_tileCondToolOfc.retrieve() );
   
   //=== get TileCondToolNoiseSample
   CHECK( m_tileToolNoiseSample.retrieve() );
 
-
   if (m_bestPhase) {
     //=== get TileToolTiming
     CHECK( m_tileToolTiming.retrieve() );
@@ -318,7 +310,7 @@ int TileRawChannelBuilderOpt2Filter::findMaxDigitPosition() {
 }
 
 
-float TileRawChannelBuilderOpt2Filter::setPedestal(int ros, int drawer, int channel, int gain) {
+float TileRawChannelBuilderOpt2Filter::getPedestal(int ros, int drawer, int channel, int gain) {
   float pedestal = 0.;
   
   switch (m_pedestalMode) {
@@ -352,7 +344,7 @@ float TileRawChannelBuilderOpt2Filter::setPedestal(int ros, int drawer, int chan
       break;
   }
 
-  ATH_MSG_VERBOSE("setPedestal(): pedestal=" << pedestal);
+  ATH_MSG_VERBOSE("getPedestal(): pedestal=" << pedestal);
   
   return pedestal;
 }
@@ -382,7 +374,7 @@ double TileRawChannelBuilderOpt2Filter::filter(int ros, int drawer, int channel
 
   } else {
 
-    pedestal = setPedestal(ros, drawer, channel, gain);
+    pedestal = getPedestal(ros, drawer, channel, gain);
     double phase = 0.;
     int nIterations = 0;
 
@@ -397,7 +389,8 @@ double TileRawChannelBuilderOpt2Filter::filter(int ros, int drawer, int channel
                         << " channel " << channel );
       }
       
-      chi2 = compute(ros, drawer, channel, gain, pedestal, amplitude, time, phase);
+      double ofcPhase(phase);
+      chi2 = compute(ros, drawer, channel, gain, pedestal, amplitude, time, ofcPhase);
 
       // If weights for tau=0 are used, deviations are seen in the amplitude =>
       // function to correct the amplitude
@@ -419,6 +412,8 @@ double TileRawChannelBuilderOpt2Filter::filter(int ros, int drawer, int channel
         time += correctTime(time, m_of2);
       }
 
+      time += (phase - ofcPhase); // correct time if actual phase used in the calculation is different from required
+
       if (time > m_maxTime) time = m_maxTime;
       if (time < m_minTime) time = m_minTime;
 
@@ -519,8 +514,6 @@ int TileRawChannelBuilderOpt2Filter::iterate(int ros, int drawer, int channel, i
 
     if (m_emulateDsp)
       phase -= round(time); // rounding phase to integer like in DSP
-    else if (m_ofcFromCool)
-      phase -= round(time * 10.) / 10.; // rounding phase to 0.1 - OFC in DB are stored with 0.1ns steps
     else
       phase -= time; // no rounding at all for OFC on the fly
 
@@ -549,7 +542,7 @@ int TileRawChannelBuilderOpt2Filter::iterate(int ros, int drawer, int channel, i
 
 
 double TileRawChannelBuilderOpt2Filter::compute(int ros, int drawer, int channel, int gain,
-    double &pedestal, double &amplitude, double &time, double phase) {
+    double &pedestal, double &amplitude, double &time, double& phase) {
 
  ATH_MSG_VERBOSE( "compute();"
                  << " ros=" << ros
@@ -571,11 +564,9 @@ double TileRawChannelBuilderOpt2Filter::compute(int ros, int drawer, int channel
 
   unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
   const TileOfcWeightsStruct* weights;
-  if (m_ofcFromCool) {
-    weights = m_tileCondToolOfcCool->getOfcWeights(drawerIdx, channel, gain, ofcPhase, m_of2);
-  } else {
-    weights = m_tileCondToolOfc->getOfcWeights(drawerIdx, channel, gain, ofcPhase, m_of2);
-  }
+  weights = m_tileCondToolOfc->getOfcWeights(drawerIdx, channel, gain, ofcPhase, m_of2);
+
+  phase = ofcPhase;
 
   for (i = 0; i < digits_size; ++i) {
     a[i] = weights->w_a[i];
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOptFilter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOptFilter.cxx
old mode 100755
new mode 100644
index c5860d0ec89e4c5f5fb1992859d9cc341f9855e3..1fb6ad676b5ba46b52f8a80661d5e6b55bf1fe7b
--- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOptFilter.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOptFilter.cxx
@@ -413,7 +413,7 @@ bool TileRawChannelBuilderOptFilter::are3FF() {
 }
 
 
-float TileRawChannelBuilderOptFilter::setPedestal() {
+float TileRawChannelBuilderOptFilter::getPedestal() {
   float pedestal = 0.;
 
   switch (m_pedestalMode) {
@@ -437,7 +437,7 @@ float TileRawChannelBuilderOptFilter::setPedestal() {
       break;
   }
 
-  ATH_MSG_VERBOSE("setPedestal(): pedestal=" << pedestal);
+  ATH_MSG_VERBOSE("getPedestal(): pedestal=" << pedestal);
 
   return pedestal;
 }
@@ -448,7 +448,7 @@ double TileRawChannelBuilderOptFilter::filter(int ros, int drawer, int channel
 
   ATH_MSG_VERBOSE( "Filter" );
 
-  pedestal = setPedestal();
+  pedestal = getPedestal();
   amplitude = 0.;
   time = 0.;
   int phase = 0;
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelMaker.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelMaker.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelNoiseFilter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelNoiseFilter.cxx
index 3a2f1372e32ed0719796a31fd77b617cbe6294f5..be1a7ef93b5b104a67d88982ca8f519bebf9fc2d 100644
--- a/TileCalorimeter/TileRecUtils/src/TileRawChannelNoiseFilter.cxx
+++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelNoiseFilter.cxx
@@ -14,7 +14,7 @@
 #include "TileCalibBlobObjs/TileCalibUtils.h"
 #include "TileRecUtils/TileRawChannelNoiseFilter.h"
 #include "TileConditions/ITileBadChanTool.h"
-#include "TileConditions/TileCondToolEmscale.h"
+//#include "TileConditions/TileCondToolEmscale.h"
 #include "TileConditions/TileCondToolNoiseSample.h"
 #include "TileRecUtils/TileBeamInfoProvider.h"
 
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelVerify.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelVerify.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileRawCorrelatedNoise.cxx b/TileCalorimeter/TileRecUtils/src/TileRawCorrelatedNoise.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/TileTowerBuilderTool.cxx b/TileCalorimeter/TileRecUtils/src/TileTowerBuilderTool.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx b/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_entries.cxx
old mode 100755
new mode 100644
diff --git a/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_load.cxx b/TileCalorimeter/TileRecUtils/src/components/TileRecUtils_load.cxx
old mode 100755
new mode 100644