diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx
index 911f6ccf8c791ee820dfdf5ff164e533d888415c..95fb8734317c5a6d9793f2b4c4b9457783088742 100644
--- a/reco/detectors/tof/CbmTofEventClusterizer.cxx
+++ b/reco/detectors/tof/CbmTofEventClusterizer.cxx
@@ -304,7 +304,7 @@ CbmTofEventClusterizer::CbmTofEventClusterizer(const char* name, Int_t verbose,
   , fdEdgeLen(3.)
   , fdEdgeTbias(-0.3)
   , fdEdgeFrange(0.4)
-  , fdModifySigvel(1.0)
+  , fdModifySigvel(0.)
   , fdEvent(0)
   , fdStartAnalysisTime(0.)
   , fbSwapChannelSides(kFALSE)
@@ -326,7 +326,7 @@ CbmTofEventClusterizer::~CbmTofEventClusterizer()
 // FairTasks inherited functions
 InitStatus CbmTofEventClusterizer::Init()
 {
-  LOG(info) << "CbmTofEventClusterizer initializing... expect Digis in ns units! ";
+  LOG(info) << "CbmTofEventClusterizer initializing... expect Digis in ns units!";
 
   if (kFALSE == RegisterInputs()) return kFATAL;
 
@@ -340,7 +340,7 @@ InitStatus CbmTofEventClusterizer::Init()
 
   if (kFALSE == CreateHistos()) return kFATAL;
 
-  if ((fCalMode % 10 > 7 && fDutId > -1) || (fCalMode > 99 && fDutId < 0)) {
+  if ((fCalMode > -1 && ((fCalMode % 10 > 7 && fDutId > -1))) || (fCalMode > 99 && fDutId < 0)) {
     if (fiBeamRefType > -1)
       fiBeamRefAddr = CbmTofAddress::GetUniqueAddress(fiBeamRefSm, fiBeamRefDet, 0, 0, fiBeamRefType);
     LOG(info) << "Initialize Calibrator for Clusterizer ";
@@ -400,11 +400,6 @@ void CbmTofEventClusterizer::Exec(Option_t* option)
 
   if (fTofCalDigiVecOut) fTofCalDigiVecOut->clear();
   if (fEventsColl) {
-    if (NULL != fTsHeader)
-      LOG(info) << "New Ts " << iNbTs << ", size " << fEventsColl->GetSize() << " at " << fTsHeader->GetTsStartTime()
-                << " with " << fEventsColl->GetEntriesFast() << " events, " << fDigiMan->GetNofDigis(ECbmModuleId::kTof)
-                << " TOF digis + " << fDigiMan->GetNofDigis(ECbmModuleId::kT0) << " T0 digis ";
-
     TStopwatch timerTs;
     timerTs.Start();
 
@@ -420,13 +415,19 @@ void CbmTofEventClusterizer::Exec(Option_t* option)
     //fTofDigiMatchCollOut->Clear("C"); // not sufficient, memory leak
     for (Int_t iEvent = 0; iEvent < fEventsColl->GetEntriesFast(); iEvent++) {
       CbmEvent* tEvent = dynamic_cast<CbmEvent*>(fEventsColl->At(iEvent));
+      if (nullptr != fTsHeader && iEvent == 0) {
+        LOG(info) << "New Ts " << iNbTs << ", size " << fEventsColl->GetSize() << " at " << fTsHeader->GetTsStartTime()
+                  << " with " << fEventsColl->GetEntriesFast() << " events, "
+                  << " Ev0 " << (int32_t) tEvent->GetNumber() << ", " << fDigiMan->GetNofDigis(ECbmModuleId::kTof)
+                  << " TOF digis + " << fDigiMan->GetNofDigis(ECbmModuleId::kT0) << " T0 digis ";
+      }
       fTofDigiVec.clear();
       //if (fTofDigisColl) fTofDigisColl->Clear("C");
       //Int_t iNbDigis=0;  (VF) not used
       LOG(debug) << "TS event " << iEvent << " with " << tEvent->GetNofData(ECbmDataType::kT0Digi) << " T0 and "
                  << tEvent->GetNofData(ECbmDataType::kTofDigi) << " Tof digis ";
 
-      for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kT0Digi); iDigi++) {
+      for (auto iDigi = 0; iDigi < (int) tEvent->GetNofData(ECbmDataType::kT0Digi); iDigi++) {
         Int_t iDigiIndex       = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kT0Digi, iDigi));
         CbmTofDigi tDigi(fDigiMan->Get<CbmBmonDigi>(iDigiIndex));
         if (tDigi.GetType() != 5) {
@@ -438,7 +439,7 @@ void CbmTofEventClusterizer::Exec(Option_t* option)
         }
         fTofDigiVec.push_back(tDigi);
       }
-      for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kTofDigi); iDigi++) {
+      for (auto iDigi = 0; iDigi < (int) tEvent->GetNofData(ECbmDataType::kTofDigi); iDigi++) {
         Int_t iDigiIndex        = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofDigi, iDigi));
         const CbmTofDigi* tDigi = fDigiMan->Get<CbmTofDigi>(iDigiIndex);
         fTofDigiVec.push_back(CbmTofDigi(*tDigi));
@@ -496,9 +497,9 @@ void CbmTofEventClusterizer::Exec(Option_t* option)
           LOG(debug) << "Call Calibrator with fiHitStart = " << fiHitStart << ", entries "
                      << fTofHitsCollOut->GetEntriesFast();
           CbmTofHit* pHit = (CbmTofHit*) fTofHitsCollOut->At(fiHitStart);  // use most early hit as reference
-          if (fCalMode < 100) fTofCalibrator->FillCalHist(pHit, fCalMode, tEvent);
+          if (fCalMode < 100 && fCalMode > -1) fTofCalibrator->FillCalHist(pHit, fCalMode, tEvent);
           else {
-            if (fCalMode < 1000) {
+            if (fCalMode < 1000 && fCalMode > -1) {
               CbmTofHit* pRef = NULL;
               fTofCalibrator->FillHitCalHist(pRef, fCalMode, tEvent, fTofHitsCollOut);
             }
@@ -535,7 +536,7 @@ void CbmTofEventClusterizer::Exec(Option_t* option)
     logOut << std::setw(20) << std::left << GetName() << " [";
     logOut << std::fixed << std::setw(8) << std::setprecision(1) << std::right << timerTs.RealTime() * 1000. << " ms] ";
     logOut << "TS " << iNbTs;
-    logOut << ", events " << fEventsColl->GetEntriesFast();
+    logOut << ", NofEvents " << fEventsColl->GetEntriesFast();
     logOut << ", hits " << fiHitStart << ", time/1k-hit " << std::setprecision(4)
            << timerTs.RealTime() * 1e6 / fiHitStart << " [ms]";
     LOG(info) << logOut.str();
@@ -639,7 +640,7 @@ void CbmTofEventClusterizer::Finish()
   LOG(info) << "=====================================";
 
   if (fdEvent < 100) return;  // don't save histos with insufficient statistics
-
+  if (fCalMode < 0) return;
   if (fCalMode % 10 < 8 && fDutId > -1) { WriteHistos(); }
   else {
     if ((fCalMode % 10 > 7 && fDutId > -1) || (fCalMode > 99 && fDutId < 0)) {
@@ -925,7 +926,7 @@ Bool_t CbmTofEventClusterizer::InitCalibParameter()
   TFile* oldFile     = gFile;
   TDirectory* oldDir = gDirectory;
 
-  if (0 < fCalMode) {
+  if (kTRUE) {
 
     LOG(info) << "CbmTofEventClusterizer::InitCalibParameter: read histos from "
               << "file " << fCalParFileName;
@@ -975,7 +976,12 @@ Bool_t CbmTofEventClusterizer::InitCalibParameter()
               LOG(warn) << "Fix parameter value of signal velocity TSR " << iSmType << iSm << iRpc << ": " << Vscal;
               Vscal = 1.2;
             }
-            Vscal *= fdModifySigvel;  //1.03; // testing the effect of wrong signal velocity, FIXME
+            //Vscal *= fdModifySigvel; //1.03; // testing the effect of wrong signal velocity, FIXME
+
+            int iUCellId = CbmTofAddress::GetUniqueAddress(iSm, 0, 0, 0, iSmType);
+            fChannelInfo = fDigiPar->GetCell(iUCellId);
+            Vscal        = (fChannelInfo->GetSizey() + fdModifySigvel) / fChannelInfo->GetSizey();
+
             fDigiBdfPar->SetSigVel(iSmType, iSm, iRpc, fDigiBdfPar->GetSigVel(iSmType, iSm, iRpc) * Vscal);
             LOG(info) << "Modify " << iSmType << iSm << iRpc << " Svel by " << Vscal << " to "
                       << fDigiBdfPar->GetSigVel(iSmType, iSm, iRpc);
@@ -2019,7 +2025,7 @@ Bool_t CbmTofEventClusterizer::FillHistos(CbmEvent* tEvent)
   Int_t iNbTofHits = fTofHitsColl->GetEntriesFast();
   CbmTofHit* pHit  = NULL;
   if (NULL == tEvent) {
-    if (fCalMode % 10 == 9) {
+    if (fCalMode > -1 && fCalMode % 10 == 9) {
       if (iNbTofHits > 0) {  // outsource all calibration actions
         //pHit = (CbmTofHit*) fTofHitsColl->At(0);  // use most early hit as reference
         fTofCalibrator->FillCalHist(pHit, fCalMode, tEvent);