diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx
index 9513e1bf4a4eb709a1124c3f8ca831aae6d0d0ff..c2104af44614e8d1fafd0b81494f92b83ece5b56 100644
--- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx
+++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx
@@ -20,6 +20,7 @@
 #include "FairRunOnline.h"
 #include <Logger.h>
 
+#include "TF1.h"
 #include "TH1.h"
 #include "TH2.h"
 #include "THttpServer.h"
@@ -245,7 +246,7 @@ void CbmMcbmCheckTimingAlgo::CheckInterSystemOffset()
   }  // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det )
 
   for (UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi) {
-    LOG(debug) << Form("Checking seed %6u / %6u", uDigi, uNbRefDigis);
+    //LOG(debug) << Form("Checking seed %6u / %6u", uDigi, uNbRefDigis);
 
     Double_t dRefTime   = 0;
     Double_t dRefCharge = 0;
@@ -411,14 +412,119 @@ void CbmMcbmCheckTimingAlgo::WriteHistos()
   TFile* outfile = TFile::Open(fOutFileName, "RECREATE");
 
   for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) {
-    LOG(info) << "Saving histos for " << fvDets[uDetIdx].sName;
+    LOG(debug) << "Saving histos for " << fvDets[uDetIdx].sName;
     fvhDetSelfDiff[uDetIdx]->Write();
-    fvhDetToRefDiff[uDetIdx]->Write();
+    
     fvhDetToRefDiffRefCharge[uDetIdx]->Write();
     fvhDetToRefDiffDetCharge[uDetIdx]->Write();
     fvhDetToRefDiffEvo[uDetIdx]->Write();
     fvhDetToRefDiffEvoLong[uDetIdx]->Write();
+    LOG(debug) << "WriteHistos, uDetIdx, Det, entries = " << uDetIdx << "  " << fvDets[uDetIdx].sName << "   " <<fvhDetToRefDiff[uDetIdx]->GetEntries();
     LOG(info) << "Saved histos for " << fvDets[uDetIdx].sName;
+    
+    DetPeakPosSingle = fvhDetToRefDiff[uDetIdx]->GetMaximumBin() * fvhDetToRefDiff[uDetIdx]->GetBinWidth(1) + fvhDetToRefDiff[uDetIdx]->GetXaxis()->GetXmin();
+        DetAverageSingle = (fvhDetToRefDiff[uDetIdx]->Integral()) / (fvhDetToRefDiff[uDetIdx]->GetNbinsX());
+
+      switch (fvDets[uDetIdx].detId) {
+        case ECbmModuleId::kSts: {
+          if (DetAverageSingle > 0) {
+            TF1* gs_sts = new TF1("gs_sts", "gaus(0)+pol0(3)", DetPeakPosSingle - 2 * fStsPeakWidthNs, DetPeakPosSingle + 2 * fStsPeakWidthNs);
+            gs_sts->SetParameters(DetAverageSingle, DetPeakPosSingle, fStsPeakWidthNs, DetAverageSingle);
+            fvhDetToRefDiff[uDetIdx]->Fit("gs_sts", "R");
+            TF1* fitresult_sts = fvhDetToRefDiff[uDetIdx]->GetFunction("gs_sts");
+            LOG(debug)<< fvDets[uDetIdx].sName << " parameters from Gauss fit = " << fitresult_sts->GetParameter(0) << ",  "
+                      << fitresult_sts->GetParameter(1) << ",  " << fitresult_sts->GetParameter(2);
+          }
+          break;
+        }
+              
+              case ECbmModuleId::kMuch: {
+                    if (DetAverageSingle > 0) {
+                      TF1* gs_much =
+                      new TF1("gs_much", "gaus(0)+pol0(3)", DetPeakPosSingle - 2 * fMuchPeakWidthNs, DetPeakPosSingle + 2 * fMuchPeakWidthNs);
+                      gs_much->SetParameters(DetAverageSingle, DetPeakPosSingle, fMuchPeakWidthNs, DetAverageSingle);
+                      fvhDetToRefDiff[uDetIdx]->Fit("gs_much", "R");
+                      TF1* fitresult_much = fvhDetToRefDiff[uDetIdx]->GetFunction("gs_much");
+                      LOG(debug)<< fvDets[uDetIdx].sName << " parameters from Gauss fit = " << fitresult_much->GetParameter(0) << ",  "
+                          << fitresult_much->GetParameter(1) << ",  " << fitresult_much->GetParameter(2);
+                      }
+                  break;
+                  }
+            
+              case ECbmModuleId::kTrd: {
+                if (DetAverageSingle > 0) {
+                  TF1* gs_trd =
+                  new TF1("gs_trd", "gaus(0)+pol0(3)", DetPeakPosSingle - 2 * fTrdPeakWidthNs, DetPeakPosSingle + 2 * fTrdPeakWidthNs);
+                  gs_trd->SetParameters(0.7 * DetAverageSingle, DetPeakPosSingle, fTrdPeakWidthNs, DetAverageSingle);
+                  fvhDetToRefDiff[uDetIdx]->Fit("gs_trd", "R");
+                  TF1* fitresult_trd = fvhDetToRefDiff[uDetIdx]->GetFunction("gs_trd");
+                  LOG(debug)<< fvDets[uDetIdx].sName << " parameters from Gauss fit = " << fitresult_trd->GetParameter(0) << ",  "
+                      << fitresult_trd->GetParameter(1) << ",  " << fitresult_trd->GetParameter(2);
+                  }
+              break;
+              }
+              
+              case ECbmModuleId::kT0: {
+                if (DetAverageSingle > 0) {
+                  TF1* gs_tof =
+                  new TF1("gs_tof", "gaus(0)+pol0(3)", DetPeakPosSingle - 2 * fTofPeakWidthNs, DetPeakPosSingle + 2 * fTofPeakWidthNs);
+                  gs_tof->SetParameters(DetAverageSingle, DetPeakPosSingle, fTofPeakWidthNs, DetAverageSingle);
+                  fvhDetToRefDiff[uDetIdx]->Fit("gs_tof", "R");
+                  TF1* fitresult_tof = fvhDetToRefDiff[uDetIdx]->GetFunction("gs_tof");
+                  LOG(debug)<< fvDets[uDetIdx].sName << " parameters from Gauss fit = " << fitresult_tof->GetParameter(0) << ",  "
+                      << fitresult_tof->GetParameter(1) << ",  " << fitresult_tof->GetParameter(2);
+                  }
+              break;
+              }
+              
+            case ECbmModuleId::kTof: {
+                  if (DetAverageSingle > 0) {
+                    TF1* gs_tof =
+                    new TF1("gs_tof", "gaus(0)+pol0(3)", DetPeakPosSingle - 2 * fTofPeakWidthNs, DetPeakPosSingle + 2 * fTofPeakWidthNs);
+                    gs_tof->SetParameters(DetAverageSingle, DetPeakPosSingle, fTofPeakWidthNs, DetAverageSingle);
+                    fvhDetToRefDiff[uDetIdx]->Fit("gs_tof", "R");
+                    TF1* fitresult_tof = fvhDetToRefDiff[uDetIdx]->GetFunction("gs_tof");
+                    LOG(debug)<< fvDets[uDetIdx].sName << " parameters from Gauss fit = " << fitresult_tof->GetParameter(0) << ",  "
+                        << fitresult_tof->GetParameter(1) << ",  " << fitresult_tof->GetParameter(2);
+                    }
+                break;
+                }
+              
+            case ECbmModuleId::kRich: {
+                if (DetAverageSingle > 0) {
+                  TF1* gs_rich =
+                  new TF1("gs_rich", "gaus(0)+pol0(3)", DetPeakPosSingle - 2 * fRichPeakWidthNs, DetPeakPosSingle + 2 * fRichPeakWidthNs);
+                  gs_rich->SetParameters(0.5 * DetAverageSingle, DetPeakPosSingle, fRichPeakWidthNs, DetAverageSingle);
+                  fvhDetToRefDiff[uDetIdx]->Fit("gs_rich", "R");
+                  TF1* fitresult_rich = fvhDetToRefDiff[uDetIdx]->GetFunction("gs_rich");
+                  LOG(debug)<< fvDets[uDetIdx].sName << " parameters from Gauss fit = " << fitresult_rich->GetParameter(0) << ",  "
+                      << fitresult_rich->GetParameter(1) << ",  " << fitresult_rich->GetParameter(2);
+                  }
+              break;
+              }
+              
+          case ECbmModuleId::kPsd: {
+              if (DetAverageSingle > 0) {
+                TF1* gs_psd =
+                new TF1("gs_psd", "gaus(0)+pol0(3)", DetPeakPosSingle - 2 * fPsdPeakWidthNs, DetPeakPosSingle + 2 * fPsdPeakWidthNs);
+                gs_psd->SetParameters(DetAverageSingle, DetPeakPosSingle, fPsdPeakWidthNs, DetAverageSingle);
+                fvhDetToRefDiff[uDetIdx]->Fit("gs_psd", "R");
+                TF1* fitresult_psd = fvhDetToRefDiff[uDetIdx]->GetFunction("gs_psd");
+                LOG(debug)<< fvDets[uDetIdx].sName << " parameters from Gauss fit = " << fitresult_psd->GetParameter(0) << ",  "
+                    << fitresult_psd->GetParameter(1) << ",  " << fitresult_psd->GetParameter(2);
+                }
+          break;
+          }
+              
+          default: {
+              LOG(info)<< "Detector ID for fitting is not valid.";
+              break;
+          }
+              
+              
+      }
+      
+    fvhDetToRefDiff[uDetIdx]->Write();  //At the end in order to include fitting results in histos
   }  // for( std::vector< CheckTimingDetector >::iterator det = fvDets.begin(); det != fvDets.end(); ++det )
 
   /// Register the histo for reference detector digi to digi time difference
diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h
index 8ef9059b632708f3fcb09fad9b0a58f231b65bd8..a879eb2b57441a1628dbc47daf4df31e2a969848 100644
--- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h
+++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.h
@@ -86,6 +86,14 @@ public:
                         UInt_t uChargeCutMaxIn = 0);
   void RemoveCheckDetector(ECbmModuleId detIn);
 
+  void SetTrdPeakWidthNs(Double_t val = 120.) { fTrdPeakWidthNs = val; }
+  void SetStsPeakWidthNs(Double_t val = 30.) { fStsPeakWidthNs = val; }
+  void SetMuchPeakWidthNs(Double_t val = 100.) { fMuchPeakWidthNs = val; }
+  void SetTofPeakWidthNs(Double_t val = 20.) { fTofPeakWidthNs = val; }
+  void SetRichPeakWidthNs(Double_t val = 40.) { fRichPeakWidthNs = val; }
+  void SetPsdPeakWidthNs(Double_t val = 20.) { fPsdPeakWidthNs = val; }
+
+    
 private:
   void CheckDataPresence(CheckTimingDetector detToCheck);
   void CreateHistos();
@@ -121,7 +129,17 @@ private:
 
   /** Name of the histogram output file **/
   TString fOutFileName = "data/HistosCheckTiming.root";
-
+  
+  Double_t DetPeakPosSingle;
+  Double_t DetAverageSingle;
+  
+  Double_t fTrdPeakWidthNs  = 120.;
+  Double_t fStsPeakWidthNs  = 30.;
+  Double_t fMuchPeakWidthNs = 100.;
+  Double_t fTofPeakWidthNs  = 20.;
+  Double_t fRichPeakWidthNs = 40.;
+  Double_t fPsdPeakWidthNs  = 20.;
+    
   ClassDefNV(CbmMcbmCheckTimingAlgo, 1);
 };
 
diff --git a/macro/beamtime/mcbm2020/check_timing_any.C b/macro/beamtime/mcbm2020/check_timing_any.C
index 0ce0b391ef0d8df0d25e6a5dbeff0c5813f96810..2010dc5a0366bb5be8d664612f6c0a39aaa6c7cd 100644
--- a/macro/beamtime/mcbm2020/check_timing_any.C
+++ b/macro/beamtime/mcbm2020/check_timing_any.C
@@ -23,7 +23,7 @@ void check_timing_any(TString fileName, UInt_t uRunId = 0, Int_t nEvents = 0, TS
   // -----  Analysis run   --------------------------------------------------
   FairRunOnline* fRun = new FairRunOnline();
   fRun->ActivateHttpServer(100, 8080);  // refresh each 100 events
-
+  fRun->SetSink(new FairRootFileSink("SinkFile.root"));
   FairFileSource* inputSource = new FairFileSource(fileName);
   fRun->SetSource(inputSource);