diff --git a/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py b/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py
index ab25d7a26041f80226a2ebcd2eb43b26a906371d..8ec5fe7d99dda009536c6bcfcae8f404d3d7920f 100644
--- a/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py
+++ b/Database/CoolRunQuery/python/utils/AtlRunQueryLookup.py
@@ -333,7 +333,7 @@ def InitDetectorMaskDecoderRun2():
 
     NotInAll = map(lambda x: ' NotInAll' if x in notInAll else '', dName)
 
-    vetoedbits = [3, 41, 42, 44, 50, 51, 52, 53, 55, 57, 58, 59] + range(64,128)
+    vetoedbits = [3, 41, 42, 44, 50, 51, 52, 53, 55, 57, 58, 59] + [x for x in range(64,128)] #+ range(64,128)
 
     return (dName, NotInAll, vetoedbits)
 
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h
index da45a0d3f82e37e40f9ed61253f125c4ec46e227..16e953064881674ff3951cef141cde57f6a887f7 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/ISCT_CalibEvtInfo.h
@@ -50,7 +50,9 @@ class ISCT_CalibEvtInfo: virtual public IAlgTool {
       virtual int numLumiBlocks() const =0;
 
       virtual void setRunNumber(const int rn)=0;
+      virtual void setEventNumber(const int en)=0;
       virtual int runNumber() const =0;
+      virtual int eventNumber() const =0;
 
       virtual void setCounter(const int counterVal)=0;
       virtual void incrementCounter()=0;
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h
index 35683d6af390e796ea903ef370c800ab950ca9b0..b8723c9f485884956cd142a1871e79124ef45ff7 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalib.h
@@ -127,6 +127,7 @@ class SCTCalib : public AthAlgorithm {
 
       // Properties configurable from jobO
       IntegerProperty m_runNumber{this, "RunNumber", -1};
+      IntegerProperty m_eventNumber{this, "EventNumber", -1};
 
       StringProperty m_runStartTime{this, "RunStartTime", "", "from runInfo.txt"};
       StringProperty m_runEndTime{this, "RunEndTime", "", "from runInfo.txt"};
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h
index 1b7445ee53babd03cb3e3183051dcddbd022d5ba..8d0fb3f4cf2d2426e1f62a765d401df2afca3469 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/SCT_CalibAlgs/SCTCalibWriteTool.h
@@ -16,13 +16,18 @@
 #define SCTCalibWriteTool_H
 
 // Athena includes
+//#include "AthenaBaseComps/AthService.h"
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "AthenaKernel/IOVTime.h"
+#include "AthenaKernel/IIOVDbSvc.h"
+#include "AthenaKernel/IAthenaOutputStreamTool.h" 
 #include "AthenaPoolUtilities/CondAttrListCollection.h"
 #include "EventInfo/EventInfo.h"
 #include "Identifier/Identifier.h"
 #include "InDetConditionsSummaryService/InDetHierarchy.h"
 #include "StoreGate/ReadHandleKey.h"
+//#include "StoreGate/WriteCondHandleKey.h"
+#include "StoreGate/WriteCondHandle.h"
 
 #include "CoralBase/AttributeListSpecification.h"
 
@@ -30,6 +35,7 @@
 #include "GaudiKernel/IInterface.h"
 #include "GaudiKernel/IAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
+#include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/StatusCode.h"
 #include "GaudiKernel/ClassID.h"
 
@@ -56,7 +62,7 @@ class SCTCalibWriteTool : public AthAlgTool {
       // Constructor
       SCTCalibWriteTool(const std::string& type, const std::string& name, const IInterface* parent);
       // Destructor
-      virtual ~SCTCalibWriteTool() = default;
+      virtual ~SCTCalibWriteTool();
 
       // overloading functions
       virtual StatusCode initialize();
@@ -73,7 +79,7 @@ class SCTCalibWriteTool : public AthAlgTool {
       std::string
       createDefectString(const int defectBeginChannel,const int defectEndChannel) const;
 
-     StatusCode createCondObjects ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
+      StatusCode createCondObjects ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
                                  (const Identifier& wafer_id,
                                   const SCT_ID* m_sctId,
                                   const int samplesize,
@@ -198,7 +204,7 @@ class SCTCalibWriteTool : public AthAlgTool {
       IntegerProperty              m_version{this, "Version", 0};
       IntegerProperty              m_beginRun{this, "BeginRun", IOVTime::MINRUN};
       IntegerProperty              m_endRun{this, "EndRun", IOVTime::MAXRUN};
-      StringProperty               m_streamName{this, "StreamName", "CondStreamTest"};
+      StringProperty               m_streamName{this, "StreamName", "SCTCalibStream"};
       StringProperty               m_tagID4NoisyStrips{this, "TagID4NoisyStrips", ""};
       StringProperty               m_tagID4DeadStrips{this, "TagID4DeadStrips", ""};
       StringProperty               m_tagID4DeadChips{this, "TagID4DeadChips", ""};
@@ -208,8 +214,9 @@ class SCTCalibWriteTool : public AthAlgTool {
       StringProperty               m_tagID4BSErrors{this, "TagID4BSErrors", ""};
       StringProperty               m_tagID4LorentzAngle{this, "TagID4LorentzAngle", ""};
 
-      IIOVRegistrationSvc*         m_regSvc{nullptr};
-      IAthenaOutputStreamTool*     m_streamer{nullptr};
+      IIOVRegistrationSvc*                m_regSvc{nullptr};
+      ToolHandle<IAthenaOutputStreamTool> m_streamer{nullptr};
+      ServiceHandle<IIOVDbSvc>            m_IOVDbSvc;
 
       bool                         m_defectRecorded{false};
       bool                         m_deadStripRecorded{false};
@@ -220,6 +227,7 @@ class SCTCalibWriteTool : public AthAlgTool {
       bool                         m_BSErrRecorded{false};
       bool                         m_LARecorded{false};
       const SCT_ID*                m_pHelper{nullptr};
+
 };
 
 inline const InterfaceID& SCTCalibWriteTool::interfaceID() {
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py
index e81dc356e21d9da3c6c0173df223c6da9b79244c..387c2137d80f91f1c4b8a0b8cb34c602162a9e4f 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/runInfo.py
@@ -54,12 +54,12 @@ def main( runNum=None ):
   print 'runInfo from scripts folder'
   #e.g. : http://coolcherrypy.cern.ch:8080/cooldb/ATLAS_COOLPROD/ATLAS_COOLONL_TDAQ/COMP200/TDAQ/RunCtrl/EOR_Params/timespan/732227499458560-732231794425855/channels/0
   
-  xmlString=channelValueQuery(url)
-  RunNumber    = extractValue(xmlString,'RunNumber')
-  iovstart,iovend     = extractChannelIov(xmlString)
-  nLB          = iovend - ( iovstart + 1 )
-  ProjectTag   = extractValue(xmlString,'FilenameTag' )
-  DetectorMask =  extractValue(xmlString,'DetectorMask' )
+  xmlString       = channelValueQuery(url)
+  RunNumber       = extractValue(xmlString,'RunNumber')
+  iovstart,iovend = extractChannelIov(xmlString)
+  nLB             = iovend - ( iovstart + 1 )
+  ProjectTag      = extractValue(xmlString,'FilenameTag' )
+  DetectorMask    = extractValue(xmlString,'DetectorMask' )
   
   ts1 = long(extractValue(xmlString,"SORTime"))/1000000000L
   ts2 = long(extractValue(xmlString,"EORTime"))/1000000000L
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py
index 95b8a2df21fb9b8a3450859c32f269551fc0bb4c..1ae78f731d1e749d945b8152a095a5dbb9bb9918 100755
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/scripts/sct_calib_tf.py
@@ -31,6 +31,7 @@ from PyJobTransformsCore.trfutil import *
 
 dsDict={'input': [] , 'output' : []}
 RunNumber=-1
+EventNumber=-1
 SvcClass=''
 Stream=''
 NumberOfEvents=0
@@ -295,6 +296,8 @@ class SCTCalibExecutor( athenaExecutor ):
         fileName=namelist[0].split('/')[nName]
         projectName=str(fileName.split('.')[0])
 
+        #### Try to avoid validation of output files
+        #self.skipOutputFileValidation=True
 
         if not 'doRunInfo' in runArgs:
             self.conf.addToArgdict('doRunInfo', trfArgClasses.argBool(False))
@@ -302,7 +305,7 @@ class SCTCalibExecutor( athenaExecutor ):
             if runArgs['doRunInfo']._value:
                 import SCT_CalibAlgs.runInfo as runInfo
 
-                print "RunNumber for the runInfo = " + str(RunNumber) + " " + Stream
+                print ("RunNumber for the runInfo = ", str(RunNumber), " ", Stream)
                 runInfo.main(RunNumber, projectName)
 
         if not 'splitNoisyStrip' in runArgs:
@@ -310,13 +313,17 @@ class SCTCalibExecutor( athenaExecutor ):
         if not 'doRunSelector' in runArgs:
             self.conf.addToArgdict('doRunSelector', trfArgClasses.argBool(False))
 
+        #### This is a try to set event number manually if run over HIST files
+        if not 'EventNumber' in runArgs:
+            self.conf.addToArgdict('EventNumber', trfArgClasses.argInt(0))
+
         # Set STAGE_SVCCLASS
         if not SvcClass is '' and not SvcClass is None:
             os.environ['STAGE_SVCCLASS']=SvcClass
 
         # Check input type
         inputtype=dsDict['input'][0]['dataset'].split('.')[4]
-        print "Input type = " + inputtype
+        print ("Input type = ", inputtype)
         self.conf.addToArgdict('InputType', trfArgClasses.argString(inputtype))
 
         # check which parts to be run
@@ -413,7 +420,7 @@ class SCTCalibExecutor( athenaExecutor ):
             checkRun=runSelector.main(RunNumber,part,skipQueue,Stream)
             if not checkRun:
 
-                print "Run %s didn't pass run selection criteria. It will not be processed and no output will be generated. Finish execution and exit gracefully" %(RunNumber)
+                print ("Run ", RunNumber, " didn't pass run selection criteria. It will not be processed and no output will be generated. Finish execution and exit gracefully")
                 emptyDic = {}
                 self._trf._dataDictionary = emptyDic
                     
@@ -450,12 +457,12 @@ class SCTCalibExecutor( athenaExecutor ):
                 cmd += "\n"
 #                cmd += " >> /dev/null 2>&1 \n"
             
-                print cmd
+                print (cmd)
                 self._echologger.info('Merging Hitmap and LB files!')
                 retcode=1
                 try:
                     retcode = os.system(cmd)
-                except OSError, e:
+                except (OSError, e):
                     retcode = 1
                 if retcode == 0:
                     self._echologger.info('Root merge successful')
@@ -485,13 +492,13 @@ class SCTCalibExecutor( athenaExecutor ):
         if 'doNoisyStrip' in runArgs['part']._value and runArgs['splitNoisyStrip']._value == 1:
             outInstance0 = self.conf.dataDictionary[list(self._output)[0]]
             outTFile0 = TFile(outInstance0._value[0])
-            print outTFile0.GetName()
+            print (outTFile0.GetName())
             outNentries0 = int(outTFile0.Get('GENERAL/events').GetEntries())
             outInstance0._setMetadata(outInstance0._value,{'nentries': outNentries0})
             
             outInstance1 = self.conf.dataDictionary[list(self._output)[1]]
             outTFile1 = TFile(outInstance1._value[0])
-            print outTFile1.GetName()
+            print (outTFile1.GetName())
             outNentries1 = int(outTFile1.Get('GENERAL/events').GetEntries())
             outInstance1._setMetadata(outInstance1._value,{'nentries': outNentries1})
 
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py
index c4760ef25bab955fb59d337373f1d2dfb06c806c..96c2953b330becd67a30e81abbe2c0d2358b12e3 100755
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/ReadCoolUPD4.py
@@ -30,10 +30,13 @@ def openDatabase(dbstring):
   
 #def formIov(runNumber):
 #  s,u=(runNumber << 32), ((runNumber + 1) << 32) - 1
+#  print ("formIOV: ", s, u)
 #  return s,u
   
+#CS: this version is needed if previous runs are processed (make sure runNumberSave is small enough)
 def formIov(runNumber):
-  runNumberSave = 362345
+  #runNumberSave = 364160
+  runNumberSave = 364076
   s,u=(runNumberSave << 32), ((runNumber + 1) << 32) - 1
   return s,u
 
@@ -63,13 +66,13 @@ def GetRunList(dbstring, folder, tag, runNumber, k):
     db.closeDatabase()
     
     Temp=sorted(temp)
-    # print('array is', Temp)
+    #print('GetRunList: array is', Temp)
     ls=[]
     for i in range(len(Temp)-1):
         if (Temp[i] != Temp[i+1]):
              ls.append(Temp[i])
    
-#    ls.append(Temp[len(Temp)-1])
+    #ls.append(Temp[len(Temp)-1])
     print(ls)
 
     list=[]
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py
index c5cebd51d71980a69a42a60fbe54a19c65046f46..5e9f737601b82795d07aba48e2abb705400749a1 100755
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/SCTCalibConfig.py
@@ -7,7 +7,8 @@
 #--------------------------------------------------------------
 # RunNumber and number of events
 #--------------------------------------------------------------
-RunNumber = 364214
+#RunNumber = 364214
+RunNumber = 370059
 EvtMax    = -1  
 
 #--------------------------------------------------------------
@@ -151,5 +152,5 @@ ConditionsTagNF  = 'CONDBR2-ES1PA-2016-03'    # Solenoid=OFF, BarrelToroid=OFF
 
 #-------------------------------------------------------------- 
 # Read /SCT/Derived/Monotoring in COOL 
-NoisyReadNumRuns = 5   # Used in a criteria for upload of NoisyStrips 
+NoisyReadNumRuns = 3   # Used in a criteria for upload of NoisyStrips 
 TagID4NoisyUploadTest = 'SctDerivedMonitoring-RUN2-UPD4-005'
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py
index 90a4d122bb953fc6d0dd2015fb357b32a341dfef..c3775027e118f1a04616f6cc3a550a8e5e6970e2 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/share/skeleton.sct_calib.py
@@ -41,6 +41,16 @@ theAuditorSvc.Auditors  += [ "MemStatAuditor" ]
 theApp.AuditAlgorithms = True
 theApp.AuditServices   = True
 
+#--------------------------------------------------------------
+# Switching off multi-threading (not working?!)
+#--------------------------------------------------------------
+#from GaudiHive.GaudiHiveConf import ForwardSchedulerSvc
+##svcMgr.ForwardSchedulerSvc.ThreadPoolSize    = numThreads
+##svcMgr.ForwardSchedulerSvc.MaxEventsInFlight = numEvents
+#svcMgr.ForwardSchedulerSvc.ThreadPoolSize    = 1
+#svcMgr.ForwardSchedulerSvc.MaxEventsInFlight = 1
+#--------------------------------------------------------------
+
 #--------------------------------------------------------------
 # User setup to run each algorithm
 # - SCTCalibConfig.py is used as input to the following
@@ -56,6 +66,10 @@ else :
 if hasattr( runArgs, 'RunNumber' ) :
     RunNumber = runArgs.RunNumber
 
+#--- Reading EventNumber from FileName
+if hasattr( runArgs, 'EventNumber' ) :
+    EventNumber = runArgs.EventNumber
+
 #--- Setting MaxEvents from runArguments
 if hasattr( runArgs, 'maxEvents' ) :
     EvtMax = runArgs.maxEvents
@@ -159,7 +173,9 @@ else :
 #--------------------------------------------------------------
 if runArgs.InputType is not 'RAW':
     ServiceMgr.EventSelector.RunNumber         = runArgs.RunNumber
-    ServiceMgr.EventSelector.InitialTimeStamp  = int(SORTime)
+    ServiceMgr.EventSelector.FirstEvent        = runArgs.EventNumber
+    ServiceMgr.EventSelector.FirstLB           = 0
+    ServiceMgr.EventSelector.InitialTimeStamp  = int(SORTime.split(".")[0])
 
 
 #--------------------------------------------------------------
@@ -368,8 +384,9 @@ conddb.dbdata = 'CONDBR2'
 
 from SCT_ConditionsTools.SCT_MonitorConditionsToolSetup import SCT_MonitorConditionsToolSetup
 sct_MonitorConditionsToolSetup = SCT_MonitorConditionsToolSetup()
-#sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag>")
-sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag><forceRunNumber>364160</forceRunNumber>")
+sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag>")
+#sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag><forceRunNumber>364160</forceRunNumber>")
+#sct_MonitorConditionsToolSetup.setFolderDb("<db>COOLOFL_SCT/CONDBR2</db> /SCT/Derived/Monitoring<tag>SctDerivedMonitoring-RUN2-UPD4-005</tag><forceRunNumber>364214</forceRunNumber>")
 sct_MonitorConditionsToolSetup.setup()
 
 # GeoModel & MagneticFieldSvc
@@ -453,7 +470,7 @@ SCTCalibWriteTool.TagID4Efficiency     = TagID4Efficiency
 SCTCalibWriteTool.TagID4BSErrors       = TagID4BSErrors
 SCTCalibWriteTool.TagID4LorentzAngle   = TagID4LorentzAngle
 
-SCTCalibWriteTool.OutputLevel = INFO
+SCTCalibWriteTool.OutputLevel = DEBUG
 
 print(SCTCalibWriteTool)
 
@@ -475,6 +492,7 @@ SCTCalib = topSequence.SCTCalib
 
 #--- Run number
 SCTCalib.RunNumber = RunNumber
+SCTCalib.EventNumber = EventNumber
 #--- Run stat/end time read from runInfo.txt
 SCTCalib.RunStartTime = SORTime
 SCTCalib.RunEndTime   = EORTime
@@ -523,6 +541,9 @@ SCTCalib.DoLorentzAngle   = DoLorentzAngle    # False in default
 SCTCalib.WriteToCool = WriteToCool # True in default
 
 #--- Properties for noisy strips
+SCTCalib.LbsPerWindow           = LbsPerWindow
+SCTCalib.NoisyUpdate            = NoisyUpdate
+SCTCalib.NoisyWriteAllModules   = NoisyWriteAllModules
 SCTCalib.NoisyMinStat           = NoisyMinStat
 SCTCalib.NoisyStripAll          = NoisyStripAll
 SCTCalib.NoisyStripThrDef       = NoisyStripThrDef
@@ -603,4 +624,5 @@ theApp.EvtMax                      = EvtMax
 # Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
 #--------------------------------------------------------------
 ServiceMgr.MessageSvc.OutputLevel = DEBUG
+ServiceMgr.MessageSvc.debugLimit  = 1000
 ServiceMgr.MessageSvc.infoLimit   = 2000000
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx
index dd0f7a3c5eff2720767ac223f1e379439b92dc93..f55080d716232936ccd7e25801116ac176b693f9 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx
@@ -184,6 +184,7 @@ StatusCode SCTCalib::initialize() {
    if (not retrievedService(m_calibLbTool)) return StatusCode::FAILURE;
 
    ATH_CHECK(m_CablingTool.retrieve());
+   ATH_CHECK(m_SCTDetEleCollKey.initialize());
 
    //--- LB range
    try {
@@ -261,6 +262,7 @@ StatusCode SCTCalib::initialize() {
       m_calibEvtInfoTool->setSource("HIST");
       m_calibEvtInfoTool->setTimeStamp(m_runStartTime, m_runEndTime);
       m_calibEvtInfoTool->setRunNumber(m_runNumber);
+      m_calibEvtInfoTool->setEventNumber(m_eventNumber);
    }
 
    //--- Booking histograms for hitmaps
@@ -273,6 +275,7 @@ StatusCode SCTCalib::initialize() {
       m_numberOfEventsHist = m_calibHitmapTool->size();
       m_calibEvtInfoTool->setTimeStamp(m_runStartTime, m_runEndTime);
       m_calibEvtInfoTool->setRunNumber(m_runNumber);
+      m_calibEvtInfoTool->setEventNumber(m_eventNumber);
       //m_calibEvtInfoTool->setLumiBlock(0);
       //m_calibEvtInfoTool->setBunchCrossing(0);
       m_calibLbTool->read("./SCTLB.root");
@@ -351,7 +354,7 @@ StatusCode SCTCalib::execute() {
    m_calibEvtInfoTool->incrementCounter();
 
    ATH_MSG_DEBUG("----- end of execute() ----- ");
-   
+
    return StatusCode::SUCCESS;
 }
 
@@ -463,6 +466,7 @@ StatusCode SCTCalib::stop ATLAS_NOT_THREAD_SAFE () { // Thread unsafe getNoisySt
 
    //--- Close HIST
    if (m_readHIST) m_inputHist->Close();
+
    return StatusCode::SUCCESS;
 }
 
@@ -473,6 +477,13 @@ StatusCode SCTCalib::stop ATLAS_NOT_THREAD_SAFE () { // Thread unsafe getNoisySt
 StatusCode SCTCalib::finalize() {
    ATH_MSG_INFO("----- in finalize() ----- ");
 
+   if (m_writeToCool) {
+      if (!m_pCalibWriteTool.release().isSuccess()) {
+         ATH_MSG_ERROR("Failed to release m_pCalibWriteTool");
+         return StatusCode::FAILURE;
+      }
+   }
+
    ATH_MSG_INFO("Thank-you for using SCT_CalibAlgs, version " << PACKAGE_VERSION);
    return StatusCode::SUCCESS;
 }
@@ -531,7 +542,7 @@ StatusCode SCTCalib::getNoisyStrip ATLAS_NOT_THREAD_SAFE () { // Thread unsafe w
    // }
 
    ATH_MSG_INFO("----- in getNoisyStrip() ----- ");
-   
+
    //--- Number of LBs processed
    m_numOfLBsProcessed = 0;
    for (int iLB{0}; iLB != m_LBRange; ++iLB) {
@@ -2633,7 +2644,7 @@ SCTCalib::getNumNoisyStrips(const Identifier& waferId) const {
    bool isNoisyWafer{false};
    float noisyStripThr{m_noisyStripThrDef ? (m_noisyStripThrOffline) : (m_noisyStripThrOnline)};
    for (int iStrip{0}; iStrip != nbins; ++iStrip) {
-      if (m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents > noisyStripThr) ++numNoisyStripsInTheWafer;
+      if ( (float) m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents > noisyStripThr) ++numNoisyStripsInTheWafer;
    }
    //--- Define/counts noisy wafers using wafer occupancy and number of noisy strips
    double averageOccupancy{m_calibHitmapTool->size(waferHash.value())/static_cast<double>(nbins)/static_cast<double>(m_numberOfEvents)};
@@ -2661,7 +2672,7 @@ SCTCalib::addStripsToList(Identifier& waferId, std::set<Identifier>& stripIdList
       if (!isNoisy) { //--- Add all strips
          stripIdList.insert(stripId);
       } else {
-         const float stripOccupancy{static_cast<float>(m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents)};
+         const float stripOccupancy{ (float) m_calibHitmapTool->getBinForHistogramIndex(iStrip + 1, waferHash.value()) / m_numberOfEvents};
          if (stripOccupancy > noisyStripThr) {
             if (!isNew) { //--- All noisy strips
                stripIdList.insert(stripId);
@@ -2682,10 +2693,10 @@ SCTCalib::addStripsToList(Identifier& waferId, std::set<Identifier>& stripIdList
 
 
 StatusCode
-SCTCalib::writeModuleListToCool ATLAS_NOT_THREAD_SAFE // Thread unsafe SCTCalibWriteTool::createCondObjects method is used.
-                               (const std::map<Identifier, std::set<Identifier>>& moduleListAll,
-                                const std::map<Identifier, std::set<Identifier>>& moduleListNew,
-                                const std::map<Identifier, std::set<Identifier>>& moduleListRef) {
+SCTCalib::writeModuleListToCool ATLAS_NOT_THREAD_SAFE // Thread unsafe SCTCalibWriteTool::createListStrip method is used.
+(const std::map<Identifier, std::set<Identifier>>& moduleListAll,
+ const std::map<Identifier, std::set<Identifier>>& moduleListNew,
+ const std::map<Identifier, std::set<Identifier>>& moduleListRef) {
    //--- Write out strips
    float noisyStripThr{m_noisyStripThrDef?(m_noisyStripThrOffline):(m_noisyStripThrOnline)};
    int nDefects{0};
@@ -2706,33 +2717,35 @@ SCTCalib::writeModuleListToCool ATLAS_NOT_THREAD_SAFE // Thread unsafe SCTCalibW
                   ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool.");
                }
                nDefects++;
-            } else ATH_MSG_DEBUG("Module " << moduleId  << " is identical to the reference output");
+            }; // else ATH_MSG_DEBUG("Module " << moduleId  << " is identical to the reference output");
          } else {
             if (m_noisyStripAll) { //--- ALL noisy strips
                if (!defectStripsAll.empty() || m_noisyWriteAllModules) {
-                 if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsAll).isFailure()) {
-                   ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool.");
-                 }
-              }
+                  if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsAll).isFailure()) {
+                     ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool.");
+                  }
+               }
             } else { //--- Only NEW noisy strips
                if (!defectStripsNew.empty()) {
-                 if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsNew).isFailure()) {
-                   ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool.");
-                 }
+                  if (m_pCalibWriteTool->createCondObjects(moduleId, m_pSCTHelper, 10000, "NOISY", noisyStripThr, defectStripsNew).isFailure()) {
+                     ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool.");
+                  }
                }
             }
          }
       }
    }
-   //ATH_MSG_INFO("Number of modules for which conditions were created: " << nDefects << "  !!!!" << endmsg;
-   if (moduleListAll.empty() or nDefects==0) {
+   ATH_MSG_DEBUG("Number of modules for which conditions were created: " << nDefects << "  !!!!");
+   if (moduleListAll.empty() or ( nDefects==0 && m_noisyUpdate )) {
       ATH_MSG_INFO("Number of noisy strips was zero or the same list of noisy strips. No local DB was created.");
    } else {
+      ATH_MSG_DEBUG("directly before call of wrapUpNoisyChannel");
       if (m_pCalibWriteTool->wrapUpNoisyChannel().isFailure()) {
          ATH_MSG_ERROR("Could not get NoisyStrips info");
          return StatusCode::FAILURE;
       }
    }
+   ATH_MSG_DEBUG("before return");
    return StatusCode::SUCCESS;
 }
 
@@ -2854,6 +2867,9 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
       //const std::map<Identifier, std::set<Identifier>>& moduleListNew,
       const std::map<Identifier, std::set<Identifier>>& moduleListRef,
       const std::string& badStripsFile) const {
+
+   ATH_MSG_DEBUG("noisyStripsToSummaryXml: start");
+
    //--- Open
    const char* outputFileName{badStripsFile.c_str()};
    std::ofstream outFile{outputFileName, std::ios::out};
@@ -2875,6 +2891,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
    //--- Create module list
    SCT_ID::const_id_iterator waferItr{m_pSCTHelper->wafer_begin()};
    SCT_ID::const_id_iterator waferItrE{m_pSCTHelper->wafer_end()};
+   ATH_MSG_DEBUG("noisyStripsToSummaryXml: before wafer loop");
    for (; waferItr != waferItrE; ++waferItr) {
       //--- Identifier
       Identifier waferId{*waferItr};
@@ -2901,6 +2918,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
 
       //--- Execute once in this module
       if (m_pSCTHelper->side(waferId) == 1) {
+         ATH_MSG_DEBUG("noisyStripsToSummaryXml: ALL");
          //--- Noisy strips : All
          std::map< Identifier, std::set<Identifier> >::const_iterator moduleAllItr{moduleListAll.find(moduleId)};
          if (moduleAllItr != moduleListAll.end()) {
@@ -2909,6 +2927,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
             numStripsAll += (*moduleAllItr).second.size();
          }
 
+         ATH_MSG_DEBUG("noisyStripsToSummaryXml: REF");
          //--- Noisy strips : Ref
          std::map< Identifier, std::set<Identifier> >::const_iterator moduleRefItr{moduleListRef.find(moduleId)};
          if (moduleRefItr != moduleListRef.end()) {
@@ -2917,6 +2936,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
             numStripsRef += moduleRefItr->second.size();
          }
 
+         ATH_MSG_DEBUG("noisyStripsToSummaryXml: NEW");
          //--- Noisy strips : New
          if ( moduleAllItr != moduleListAll.end() ) {
             if ( moduleRefItr != moduleListRef.end() ) {
@@ -2929,6 +2949,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
             }
          }
 
+         ATH_MSG_DEBUG("noisyStripsToSummaryXml: stripIdList -> chipIdList");
          //--- Noisy chips : stripIdList -> chipIdList
          if (moduleAllItr != moduleListAll.end()) {
             std::set<int> chipIdList{getNoisyChips(moduleAllItr->second)};
@@ -2956,6 +2977,7 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
                }
             }
          }
+         ATH_MSG_DEBUG("noisyStripsToSummaryXml: Difference between All & Ref");
          //--- Difference between All & Ref
          if (defectStripsAll != defectStripsRef) ++numModulesDiff;
          //--- Module list written to XML
@@ -2973,9 +2995,12 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
                          << "      <value name=\"StripOfflineRef\">" << normalizeList(defectStripsRef)    << "</value>" << linefeed
                          << "    </module>"                                                                             << std::endl;
          }
+         ATH_MSG_DEBUG("noisyStripsToSummaryXml: After Difference between All & Ref");
       }
    }//--- end loop : waferItr
 
+   ATH_MSG_DEBUG("noisyStripsToSummaryXml: after waferItr");
+
    //--- Upload flag
    std::string strUploadFlag{"U"};
 
@@ -3000,6 +3025,8 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
       }
    }
 
+   ATH_MSG_DEBUG("noisyStripsToSummaryXml: after FlagChecking");
+
    //--- Upload test result to XML
    std::ostringstream osNoisyMinStat, osNoisyModuleList, osNoisyModuleDiff, osNoisyStripDiff;
    osNoisyMinStat    << "#events more than "                                                                      << m_noisyMinStat.value();
@@ -3053,6 +3080,8 @@ StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set
            << "  </modules>"                                                                           << linefeed
            << "</run>"                                                                                 << std::endl;
 
+   ATH_MSG_DEBUG("noisyStripsToSummaryXml: before return");
+
    return StatusCode::SUCCESS;
 }
 
@@ -3131,7 +3160,7 @@ SCTCalib::getNoisyLB(const Identifier& moduleId, int& chipId) const {
    for (int iLB{0}; iLB != m_LBRange; ++iLB) {
       double numEventsInLB{static_cast<double>(m_calibLbTool->getNumberOfEventsInBin(iLB + 1))};
       if (numEventsInLB == 0) continue;
-      double chipOccupancy{m_calibLbTool->getBinForHistogramIndex(iLB + 1, histIndex)/numEventsInLB};
+      double chipOccupancy{(float) m_calibLbTool->getBinForHistogramIndex(iLB + 1, histIndex) / numEventsInLB};
       if (chipOccupancy > chipOccupancyThr) LBList.insert(iLB);
    }
    //--- Transform LBList to string and calculate a fraction of noisy LBs
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx
index e714da798401338c14ab479eaa66fd514ef1b4ba..0379ed1b56d49bbb1d99f8dc4b8528924dafb5d9 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalibWriteTool.cxx
@@ -54,7 +54,15 @@ const bool becCapsFormat{true};
 const bool becUnderscoreFormat{false};
 
 SCTCalibWriteTool::SCTCalibWriteTool(const std::string& type, const std::string& name, const IInterface* parent) :
-   AthAlgTool(type, name, parent)
+   AthAlgTool(type, name, parent),
+   m_streamer(((m_version == 0) ? "AthenaOutputStreamTool" : "AthenaPoolOutputStreamTool"), this),
+   m_IOVDbSvc("IOVDbSvc", "SCTCalibWriteTool")
+{
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////
+
+SCTCalibWriteTool::~SCTCalibWriteTool()
 {
 }
 
@@ -74,7 +82,11 @@ SCTCalibWriteTool::queryInterface(const InterfaceID& riid, void** ppvIF)
 ///////////////////////////////////////////////////////////////////////////////////////////
 
 StatusCode
-SCTCalibWriteTool::initialize() {
+SCTCalibWriteTool::initialize()
+{
+
+   ATH_MSG_DEBUG("in SCTCalibWriteTool::initialize start");
+
    if (detStore()->retrieve(m_pHelper,"SCT_ID").isFailure()) {
       ATH_MSG_ERROR("SCT mgr failed to retrieve");
       return StatusCode::FAILURE;
@@ -98,12 +110,17 @@ SCTCalibWriteTool::initialize() {
 
    // Get the IOVRegistrationSvc when needed
    if (m_regIOV) {
+
       if (service("IOVRegistrationSvc", m_regSvc).isFailure()) {
          ATH_MSG_ERROR("Unable to find IOVRegistrationSvc ");
          return StatusCode::FAILURE;
       }
    }
-   
+
+   // Retrieve IOVDb service
+   if (m_IOVDbSvc.retrieve().isFailure())
+      return msg(MSG:: ERROR)<< "Failed to retrieve IOVDbSvc " << endmsg, StatusCode::FAILURE;
+
    return StatusCode::SUCCESS;
 }
 
@@ -111,6 +128,17 @@ SCTCalibWriteTool::initialize() {
 
 StatusCode
 SCTCalibWriteTool::finalize() {
+   ATH_MSG_DEBUG("SCTCalibWriteTool::finalize");
+   if (!m_attrListColl.release()) {
+      return StatusCode::FAILURE;
+   }
+   if (!m_streamer.release().isSuccess()) {
+      return StatusCode::FAILURE;
+   }
+   if (!m_IOVDbSvc.release().isSuccess()) {
+      return StatusCode::FAILURE;
+   }
+   ATH_MSG_DEBUG("Thank you for using the SCTCalibWriteTool");
    return StatusCode::SUCCESS;
 }
 
@@ -207,12 +235,12 @@ SCTCalibWriteTool::createCondObjects ATLAS_NOT_THREAD_SAFE // Thread unsafe Cond
 
 StatusCode
 SCTCalibWriteTool::createListStrip ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAttrListCollection::add is used.
-                                  (const Identifier& wafer_id,
-                                   const SCT_ID* sctId,
-                                   const int samplesize,
-                                   const std::string& defectType,
-                                   const float threshold,
-                                   const std::string& defectList) const
+(const Identifier& wafer_id,
+ const SCT_ID* sctId,
+ const int samplesize,
+ const std::string& defectType,
+ const float threshold,
+ const std::string& defectList) const
 {
    if (!m_writeCondObjs) {
       return StatusCode::SUCCESS;
@@ -236,7 +264,7 @@ SCTCalibWriteTool::createListStrip ATLAS_NOT_THREAD_SAFE // Thread unsafe CondAt
    std::ostringstream attrStr2;
    attrList0.toOutputStream(attrStr2);
    m_attrListColl_deadStrip->add(wafer_id.get_identifier32().get_compact(), attrList0);
-   ATH_MSG_INFO("createListStrip: return StatusCode::SUCCESS");
+   //ATH_MSG_INFO("createListStrip: return StatusCode::SUCCESS");
    return StatusCode::SUCCESS;
 }
 
@@ -480,8 +508,11 @@ SCTCalibWriteTool::stringToInt(const std::string& s) const {
 
 StatusCode
 SCTCalibWriteTool::wrapUpNoisyChannel() {
+   ATH_MSG_DEBUG("wrapUpNoisyChannel: start");
    if (recordAndStream(m_attrListColl.get(), s_defectFolderName, m_defectRecorded).isFailure()) return StatusCode::FAILURE;
+   ATH_MSG_DEBUG("wrapUpNoisyChannel: middle");
    if (registerCondObjectsWithErrMsg(s_defectFolderName, m_tagID4NoisyStrips).isFailure()) return StatusCode::FAILURE;
+   ATH_MSG_DEBUG("wrapUpNoisyChannel: end");
    return StatusCode::SUCCESS;
 }
 
@@ -552,26 +583,31 @@ SCTCalibWriteTool::wrapUpLorentzAngle() {
 
 StatusCode
 SCTCalibWriteTool::streamOutCondObjects(const std::string& foldername) {
+   ATH_MSG_DEBUG("streamOutCondObjects: before connectOutput" << m_streamName);
    if (m_streamer->connectOutput(m_streamName).isFailure()) {
       ATH_MSG_ERROR("Could not connect stream to output");
       return( StatusCode::FAILURE);
    }
    IAthenaOutputStreamTool::TypeKeyPairs typeKeys{1};
+   ATH_MSG_DEBUG("streamOutCondObjects: before m_readWriteCool");
    if (m_readWriteCool) {
-      IAthenaOutputStreamTool::TypeKeyPair
-      attrCollPair{"CondAttrListCollection", foldername};
+      //ATH_MSG_DEBUG("before CondAttrListCollection " << foldername);
+      IAthenaOutputStreamTool::TypeKeyPair attrCollPair{"CondAttrListCollection", foldername};
       typeKeys[0] = attrCollPair;
    }
 
+   ATH_MSG_DEBUG("streamOutCondObjects: before streamObjects");
    if (m_streamer->streamObjects(typeKeys).isFailure()) {
       ATH_MSG_ERROR("Could not stream out AttributeLists");
       return StatusCode::FAILURE;
    }
 
+   ATH_MSG_DEBUG("streamOutCondObjects: before commitOutput");
    if (m_streamer->commitOutput().isFailure()) {
       ATH_MSG_ERROR("Could not commit output stream");
       return StatusCode::FAILURE;
    }
+   ATH_MSG_DEBUG("streamOutCondObjects: before return");
    return StatusCode::SUCCESS;
 }
 
@@ -579,8 +615,9 @@ SCTCalibWriteTool::streamOutCondObjects(const std::string& foldername) {
 
 StatusCode
 SCTCalibWriteTool::streamOutCondObjectsWithErrMsg(const std::string& foldername) {
+   ATH_MSG_DEBUG("streamOutCondObjectsWithErrMsg: foldername " << foldername);
    if (streamOutCondObjects(foldername).isFailure()) {
-      ATH_MSG_ERROR("Could create conditions object  " << foldername);
+      ATH_MSG_ERROR("Could not create conditions object  " << foldername);
       return StatusCode::FAILURE;
    }
    return StatusCode::SUCCESS;
@@ -591,6 +628,7 @@ SCTCalibWriteTool::streamOutCondObjectsWithErrMsg(const std::string& foldername)
 StatusCode
 SCTCalibWriteTool::registerCondObjects(const std::string& foldername,const std::string& tagname) const {
    // Register the IOV DB with the conditions data written out
+   ATH_MSG_DEBUG("registerCondObjects start");
    if (m_readWriteCool) {
       // Can only write out AttrList's if this is NOT write and reg in two steps
       if (!m_twoStepWriteReg) {
@@ -602,8 +640,9 @@ SCTCalibWriteTool::registerCondObjects(const std::string& foldername,const std::
          if (!m_manualiov) {
 
             SG::ReadHandle<EventInfo> evt{m_eventInfoKey};
+            ATH_MSG_DEBUG("registerCondObjects: before get EventInfo");
             if (not evt.isValid()) {
-               ATH_MSG_ERROR("Unable to get the EventInfo");
+               ATH_MSG_ERROR("registerCondObjects: Unable to get the EventInfo");
                return StatusCode::FAILURE;
             }
 
@@ -619,17 +658,28 @@ SCTCalibWriteTool::registerCondObjects(const std::string& foldername,const std::
          unsigned int beginLB{IOVTime::MINEVENT};
          unsigned int endLB{IOVTime::MAXEVENT};
 
+         ATH_MSG_DEBUG("registerCondObjects: registerCondObjects middle");
+
          if (not tagname.empty()) {
+            ATH_MSG_DEBUG("registerCondObjects: registerCondObjects before registerIOV 1");
+            ATH_MSG_DEBUG("registerCondObjects: foldername, tagname, beginRun, endRun, beginLB, endLB: " << foldername << ", " << tagname << ", " << beginRun << ", " << endRun << ", " << beginLB << ", " << endLB);
             sc = m_regSvc->registerIOV("CondAttrListCollection", foldername, tagname, beginRun, endRun, beginLB, endLB);
+            ATH_MSG_DEBUG("registerCondObjects after registerIOV 1");
          } else {
+            ATH_MSG_DEBUG("registerCondObjects before registerIOV 2");
+            ATH_MSG_DEBUG("registerCondObjects: foldername, beginRun, endRun, beginLB, endLB: " << foldername << ", " << beginRun << ", " << endRun << ", " << beginLB << ", " << endLB);
             sc = m_regSvc->registerIOV("CondAttrListCollection", foldername, "", beginRun, endRun, beginLB, endLB);
+            ATH_MSG_DEBUG("registerCondObjects after registerIOV 2");
          }
          if (sc.isFailure()) {
-            ATH_MSG_ERROR("Could not register in IOV DB for CondAttrListCollection");
+            ATH_MSG_ERROR("registerCondObjects: Could not register in IOV DB for CondAttrListCollection");
             return StatusCode::FAILURE;
          }
       }
    }
+
+   ATH_MSG_DEBUG("registerCondObjects end");
+
    return StatusCode::SUCCESS;
 }
 
@@ -639,7 +689,7 @@ StatusCode
 SCTCalibWriteTool::registerCondObjectsWithErrMsg(const std::string& foldername,const std::string& tagname) const {
    if (m_regIOV) {
       if (registerCondObjects(foldername,tagname).isFailure()) {
-         ATH_MSG_ERROR("Could not register " << foldername);
+         ATH_MSG_ERROR("registerCondObjectsWithErrMsg: Could not register " << foldername);
          return StatusCode::FAILURE;
       }
    }
@@ -650,14 +700,18 @@ SCTCalibWriteTool::registerCondObjectsWithErrMsg(const std::string& foldername,c
 
 StatusCode
 SCTCalibWriteTool::recordAndStream(const CondAttrListCollection* pCollection,const std::string& foldername, bool& flag) {
+   ATH_MSG_DEBUG("recordAndStream start " << foldername);
    if (m_writeCondObjs) {
+      ATH_MSG_DEBUG("recordAndStream middle ");
       if (detStore()->record(pCollection, foldername).isFailure()) {
          ATH_MSG_ERROR("Could not record "<<foldername);
          return StatusCode::FAILURE;
       }
       flag=true;
+      ATH_MSG_DEBUG("recordAndStream middle 2");
       if (streamOutCondObjectsWithErrMsg(s_defectFolderName).isFailure()) return StatusCode::FAILURE;
    }
+   ATH_MSG_DEBUG("recordAndStream end ");
    return StatusCode::SUCCESS;
 }
 
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx
index 3336efc690b59cd100b436ffaef5952666219a9f..775f5f10382bb4b5bdbf1d9a9ad35a82bac57db1 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.cxx
@@ -115,11 +115,21 @@ SCT_CalibEventInfo::setRunNumber(const int rn) {
    m_runNumber = rn;
 }
 
+void
+SCT_CalibEventInfo::setEventNumber(const int en) {
+   m_eventNumber = en;
+}
+
 int
 SCT_CalibEventInfo::runNumber() const {
    return m_runNumber;
 }
 
+int
+SCT_CalibEventInfo::eventNumber() const {
+   return m_eventNumber;
+}
+
 void
 SCT_CalibEventInfo::setCounter(const int counterVal) {
    m_counter = counterVal;
diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h
index 90a41d23c9c26cfb66320ea775235e8e2a76db49..32c6508f9f6d53ef097f6480a6db17e1dee7ab5e 100644
--- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h
+++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibEventInfo.h
@@ -53,7 +53,9 @@ class SCT_CalibEventInfo: public extends<AthAlgTool, ISCT_CalibEvtInfo>
       virtual int numLumiBlocks() const;
 
       virtual void setRunNumber(const int rn);
+      virtual void setEventNumber(const int en);
       virtual int runNumber() const;
+      virtual int eventNumber() const;
 
       virtual void setCounter(const int counterVal);
       virtual void incrementCounter();
@@ -76,6 +78,7 @@ class SCT_CalibEventInfo: public extends<AthAlgTool, ISCT_CalibEvtInfo>
 
       //
       int  m_runNumber{0};
+      int  m_eventNumber{0};
       int  m_lumiBlock{0};
       int  m_timeStamp{0};
       int  m_bunchCrossing{0};