diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
index 67f99aa114454d7796ab15234962bf1096a839a3..fbee4665eed81ee682748b27a993076708f01b21 100644
--- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
+++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx
@@ -1151,50 +1151,52 @@ void CbmAlgoBuildRawEvents::CreateHistograms()
   }
 
   /// Same plots for the reference detector
-  TH2I* hNbDigiPerEvtTimeDet = new TH2I(Form("hNbDigiPerEvtTime%s", fRefDet.sName.data()),
-                                        Form("nb of %s digis per event vs seed time of the events; Seed time in TS "
-                                             "[s]; Nb Digis []; Events []",
-                                             fRefDet.sName.data()),
-                                        1000, 0, 0.2, fRefDet.fdHistMaxDigiNb, 0, fRefDet.fdHistMaxDigiNb);
-  fvhNbDigiPerEvtTimeDet.push_back(hNbDigiPerEvtTimeDet);
-
-  TH1I* hNbDigiPerEvtDet = new TH1I(Form("hNbDigiPerEvt%s", fRefDet.sName.data()),
-                                    Form("nb of %s digis per event; Nb Digis []", fRefDet.sName.data()),
-                                    fRefDet.fdHistMaxDigiNb, 0, fRefDet.fdHistMaxDigiNb);
-  fvhNbDigiPerEvtDet.push_back(hNbDigiPerEvtDet);
-
-  TH1I* hTDiff =
-    new TH1I(Form("hTDiff%s", fRefDet.sName.data()),
-             Form("#DeltaT of %s digis to seed time of event;#DeltaT (ns); Counts []", fRefDet.sName.data()), 200,
-             fRefDet.fdTimeWinBeg, fRefDet.fdTimeWinEnd);  // FIXME, adjust to configured window
-  fvhTDiff.push_back(hTDiff);
-
-  // clang-format off
-  TH1* hSelRatioPerTsNb = new TH1D(Form("hSelRatioPerTsNb%s", fRefDet.sName.data()),
-                                   Form("ratio of sel digis per TS vs TS for %s; TS; Sel Digis Ratio []",
-                                        fRefDet.sName.data()),
-                                   6000, 0, 6000);
-  TH1* hInpRatioPerTsSz = new TH1D(Form("hInpRatioPerTsSz%s", fRefDet.sName.data()),
-                                   Form("ratio of input digi size in total input size vs TS for %s; TS; Size Ratio []",
-                                        fRefDet.sName.data()),
-                                   6000, 0, 6000);
-  TH1* hOutRatioPerTsSz = new TH1D(Form("hOutRatioPerTsSz%s", fRefDet.sName.data()),
-                                   Form("ratio of selected digi size in event size vs TS for %s; TS; Size Ratio []",
-                                        fRefDet.sName.data()),
-                                   6000, 0, 6000);
-  // clang-format on
-
-  fvhSelRatioPerTsNb.push_back(hSelRatioPerTsNb);
-  fvhInpRatioPerTsSz.push_back(hInpRatioPerTsSz);
-  fvhOutRatioPerTsSz.push_back(hOutRatioPerTsSz);
-
-  AddHistoToVector(hSelRatioPerTsNb, "evtbuild-eff");
-  AddHistoToVector(hInpRatioPerTsSz, "evtbuild-eff");
-  AddHistoToVector(hOutRatioPerTsSz, "evtbuild-eff");
-
-  outFolder->Add(hSelRatioPerTsNb);
-  outFolder->Add(hInpRatioPerTsSz);
-  outFolder->Add(hOutRatioPerTsSz);
+  if (ECbmModuleId::kNotExist != fRefDet.detId) {
+    TH2I* hNbDigiPerEvtTimeDet = new TH2I(Form("hNbDigiPerEvtTime%s", fRefDet.sName.data()),
+                                          Form("nb of %s digis per event vs seed time of the events; Seed time in TS "
+                                               "[s]; Nb Digis []; Events []",
+                                               fRefDet.sName.data()),
+                                          1000, 0, 0.2, fRefDet.fdHistMaxDigiNb, 0, fRefDet.fdHistMaxDigiNb);
+    fvhNbDigiPerEvtTimeDet.push_back(hNbDigiPerEvtTimeDet);
+
+    TH1I* hNbDigiPerEvtDet = new TH1I(Form("hNbDigiPerEvt%s", fRefDet.sName.data()),
+                                      Form("nb of %s digis per event; Nb Digis []", fRefDet.sName.data()),
+                                      fRefDet.fdHistMaxDigiNb, 0, fRefDet.fdHistMaxDigiNb);
+    fvhNbDigiPerEvtDet.push_back(hNbDigiPerEvtDet);
+
+    TH1I* hTDiff =
+      new TH1I(Form("hTDiff%s", fRefDet.sName.data()),
+               Form("#DeltaT of %s digis to seed time of event;#DeltaT (ns); Counts []", fRefDet.sName.data()), 200,
+               fRefDet.fdTimeWinBeg, fRefDet.fdTimeWinEnd);  // FIXME, adjust to configured window
+    fvhTDiff.push_back(hTDiff);
+
+    // clang-format off
+    TH1* hSelRatioPerTsNb = new TH1D(Form("hSelRatioPerTsNb%s", fRefDet.sName.data()),
+                                     Form("ratio of sel digis per TS vs TS for %s; TS; Sel Digis Ratio []",
+                                          fRefDet.sName.data()),
+                                     6000, 0, 6000);
+    TH1* hInpRatioPerTsSz = new TH1D(Form("hInpRatioPerTsSz%s", fRefDet.sName.data()),
+                                     Form("ratio of input digi size in total input size vs TS for %s; TS; Size Ratio []",
+                                          fRefDet.sName.data()),
+                                     6000, 0, 6000);
+    TH1* hOutRatioPerTsSz = new TH1D(Form("hOutRatioPerTsSz%s", fRefDet.sName.data()),
+                                     Form("ratio of selected digi size in event size vs TS for %s; TS; Size Ratio []",
+                                          fRefDet.sName.data()),
+                                     6000, 0, 6000);
+    // clang-format on
+
+    fvhSelRatioPerTsNb.push_back(hSelRatioPerTsNb);
+    fvhInpRatioPerTsSz.push_back(hInpRatioPerTsSz);
+    fvhOutRatioPerTsSz.push_back(hOutRatioPerTsSz);
+
+    AddHistoToVector(hSelRatioPerTsNb, "evtbuild-eff");
+    AddHistoToVector(hInpRatioPerTsSz, "evtbuild-eff");
+    AddHistoToVector(hOutRatioPerTsSz, "evtbuild-eff");
+
+    outFolder->Add(hSelRatioPerTsNb);
+    outFolder->Add(hInpRatioPerTsSz);
+    outFolder->Add(hOutRatioPerTsSz);
+  }
 
   fhSizeReductionPerTs =
     new TH1D("hSizeReductionPerTs", "ratio of tot. sel. digi size to tot. input digi size vs TS; TS; Size Ratio []",
@@ -1438,118 +1440,119 @@ void CbmAlgoBuildRawEvents::FillHistos()
         uNbDataTof = TMath::Max(0, evt->GetNofData(fvDets[uDetIdx].dataType));
       }
     }
-    /// Reference detector
-    uint32_t uRefDetIdx = fvDets.size();
-    if (nullptr != fvhNbDigiPerEvtDet[uRefDetIdx]) {
 
-      if (0 != fuDetTypeT0 && ECbmDataType::kT0Digi == fRefDet.dataType) {
-        // filter T0 digis from Tof (remove this block if T0 properly implemented)
-        for (int idigi = 0; idigi < evt->GetNofData(ECbmDataType::kTofDigi); ++idigi) {
-          double dTimeDiff = 1.E30;
-          uint idx         = evt->GetIndex(ECbmDataType::kTofDigi, idigi);
-          auto pDigi       = GetDigi<CbmTofDigi>(idx);
-          if (nullptr == pDigi) continue;
+    /// Reference detector
+    if (ECbmModuleId::kNotExist != fRefDet.detId) {
+      if (nullptr != fvhNbDigiPerEvtDet[uRefDetIdx]) {
+        if (0 != fuDetTypeT0 && ECbmDataType::kT0Digi == fRefDet.dataType) {
+          // filter T0 digis from Tof (remove this block if T0 properly implemented)
+          for (int idigi = 0; idigi < evt->GetNofData(ECbmDataType::kTofDigi); ++idigi) {
+            double dTimeDiff = 1.E30;
+            uint idx         = evt->GetIndex(ECbmDataType::kTofDigi, idigi);
+            auto pDigi       = GetDigi<CbmTofDigi>(idx);
+            if (nullptr == pDigi) continue;
 
-          // filter T0 digis from Tof
-          if (GetTofDetType(pDigi) == fuDetTypeT0) {
-            uNbDataT0++;
-            dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
-            if (dTimeDiff < 1.E30) {  //
-              fvhTDiff[uRefDetIdx]->Fill(dTimeDiff);
+            // filter T0 digis from Tof
+            if (GetTofDetType(pDigi) == fuDetTypeT0) {
+              uNbDataT0++;
+              dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+              if (dTimeDiff < 1.E30) {  //
+                fvhTDiff[uRefDetIdx]->Fill(dTimeDiff);
+              }
             }
           }
-        }
-      }  // if (0 != fuDetTypeT0 && ECbmDataType::kT0Digi == fRefDet.dataType)
-      else if (0 != fuDetTypeT0 && ECbmDataType::kTofDigi == fRefDet.dataType) {
-        // filter T0 digis from Tof (remove this block if T0 properly implemented)
-        for (int idigi = 0; idigi < evt->GetNofData(fRefDet.dataType); ++idigi) {
-          double dTimeDiff = 1.E30;
-          uint idx         = evt->GetIndex(fRefDet.dataType, idigi);
-          auto pDigi       = GetDigi<CbmTofDigi>(idx);
-          if (nullptr == pDigi) continue;
+        }  // if (0 != fuDetTypeT0 && ECbmDataType::kT0Digi == fRefDet.dataType)
+        else if (0 != fuDetTypeT0 && ECbmDataType::kTofDigi == fRefDet.dataType) {
+          // filter T0 digis from Tof (remove this block if T0 properly implemented)
+          for (int idigi = 0; idigi < evt->GetNofData(fRefDet.dataType); ++idigi) {
+            double dTimeDiff = 1.E30;
+            uint idx         = evt->GetIndex(fRefDet.dataType, idigi);
+            auto pDigi       = GetDigi<CbmTofDigi>(idx);
+            if (nullptr == pDigi) continue;
 
-          // filter T0 digis from Tof
-          if (GetTofDetType(pDigi) != fuDetTypeT0) {
-            uNbDataTof++;
-            dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
-            if (dTimeDiff < 1.E30) {  //
-              fvhTDiff[uRefDetIdx]->Fill(dTimeDiff);
-            }
-          }
-        }
-      }  // else if (0 != fuDetTypeT0 && ECbmDataType::kTofDigi == fRefDet.dataType)
-      else {
-        for (int idigi = 0; idigi < evt->GetNofData(fRefDet.dataType); ++idigi) {
-          double dTimeDiff = 1.E30;
-          uint idx         = evt->GetIndex(fRefDet.dataType, idigi);
-          switch (fRefDet.dataType) {
-            case ECbmDataType::kT0Digi: {
-              if (fT0DigiVec->size() <= idx) continue;
-              dTimeDiff = fT0DigiVec->at(idx).GetTime() - evt->GetStartTime();
-              break;
-            }
-            case ECbmDataType::kStsDigi: {
-              auto pDigi = GetDigi<CbmStsDigi>(idx);
-              if (nullptr == pDigi) continue;
+            // filter T0 digis from Tof
+            if (GetTofDetType(pDigi) != fuDetTypeT0) {
+              uNbDataTof++;
               dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
-              break;
+              if (dTimeDiff < 1.E30) {  //
+                fvhTDiff[uRefDetIdx]->Fill(dTimeDiff);
+              }
             }
-            case ECbmDataType::kMuchDigi: {
-              if (fbUseMuchBeamtimeDigi) {
-                auto pDigi = GetDigi<CbmMuchBeamTimeDigi>(idx);
+          }
+        }  // else if (0 != fuDetTypeT0 && ECbmDataType::kTofDigi == fRefDet.dataType)
+        else {
+          for (int idigi = 0; idigi < evt->GetNofData(fRefDet.dataType); ++idigi) {
+            double dTimeDiff = 1.E30;
+            uint idx         = evt->GetIndex(fRefDet.dataType, idigi);
+            switch (fRefDet.dataType) {
+              case ECbmDataType::kT0Digi: {
+                if (fT0DigiVec->size() <= idx) continue;
+                dTimeDiff = fT0DigiVec->at(idx).GetTime() - evt->GetStartTime();
+                break;
+              }
+              case ECbmDataType::kStsDigi: {
+                auto pDigi = GetDigi<CbmStsDigi>(idx);
                 if (nullptr == pDigi) continue;
                 dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+                break;
+              }
+              case ECbmDataType::kMuchDigi: {
+                if (fbUseMuchBeamtimeDigi) {
+                  auto pDigi = GetDigi<CbmMuchBeamTimeDigi>(idx);
+                  if (nullptr == pDigi) continue;
+                  dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+                }
+                else {
+                  auto pDigi = GetDigi<CbmMuchDigi>(idx);
+                  if (nullptr == pDigi) continue;
+                  dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+                }
+                break;
               }
-              else {
-                auto pDigi = GetDigi<CbmMuchDigi>(idx);
+              case ECbmDataType::kTofDigi: {
+                auto pDigi = GetDigi<CbmTofDigi>(idx);
                 if (nullptr == pDigi) continue;
                 dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+                break;
               }
-              break;
-            }
-            case ECbmDataType::kTofDigi: {
-              auto pDigi = GetDigi<CbmTofDigi>(idx);
-              if (nullptr == pDigi) continue;
-              dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
-              break;
-            }
-            case ECbmDataType::kTrdDigi: {
-              auto pDigi = GetDigi<CbmTrdDigi>(idx);
-              if (nullptr == pDigi) continue;
-              dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
-              if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kSPADIC) {
-                if (fRefDet.sName == "Trd2D") continue;
-                ++uNbDataTrd1d;
+              case ECbmDataType::kTrdDigi: {
+                auto pDigi = GetDigi<CbmTrdDigi>(idx);
+                if (nullptr == pDigi) continue;
+                dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+                if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kSPADIC) {
+                  if (fRefDet.sName == "Trd2D") continue;
+                  ++uNbDataTrd1d;
+                }
+                else if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kFASP) {
+                  if (fRefDet.sName == "Trd1D") continue;
+                  ++uNbDataTrd2d;
+                }
+                break;
               }
-              else if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kFASP) {
-                if (fRefDet.sName == "Trd1D") continue;
-                ++uNbDataTrd2d;
+              case ECbmDataType::kRichDigi: {
+                auto pDigi = GetDigi<CbmRichDigi>(idx);  // FIXME, need to find the proper digi template
+                if (nullptr == pDigi) continue;
+                dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+                break;
               }
-              break;
-            }
-            case ECbmDataType::kRichDigi: {
-              auto pDigi = GetDigi<CbmRichDigi>(idx);  // FIXME, need to find the proper digi template
-              if (nullptr == pDigi) continue;
-              dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
-              break;
-            }
-            case ECbmDataType::kPsdDigi: {
-              auto pDigi = GetDigi<CbmPsdDigi>(idx);  // FIXME, need to find the proper digi template
-              if (nullptr == pDigi) continue;
-              dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
-              break;
+              case ECbmDataType::kPsdDigi: {
+                auto pDigi = GetDigi<CbmPsdDigi>(idx);  // FIXME, need to find the proper digi template
+                if (nullptr == pDigi) continue;
+                dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
+                break;
+              }
+              default: LOG(error) << "Unkown dataType " << fRefDet.dataType;
             }
-            default: LOG(error) << "Unkown dataType " << fRefDet.dataType;
-          }
 
-          if (dTimeDiff < 1.E30) fvhTDiff[uRefDetIdx]->Fill(dTimeDiff);
-        }
+            if (dTimeDiff < 1.E30) fvhTDiff[uRefDetIdx]->Fill(dTimeDiff);
+          }
 
-        if (ECbmDataType::kT0Digi == fRefDet.dataType) {  //
-          uNbDataT0 = TMath::Max(0, evt->GetNofData(fRefDet.dataType));
-        }
-        if (ECbmDataType::kTofDigi == fRefDet.dataType) {
-          uNbDataTof = TMath::Max(0, evt->GetNofData(fRefDet.dataType));
+          if (ECbmDataType::kT0Digi == fRefDet.dataType) {  //
+            uNbDataT0 = TMath::Max(0, evt->GetNofData(fRefDet.dataType));
+          }
+          if (ECbmDataType::kTofDigi == fRefDet.dataType) {
+            uNbDataTof = TMath::Max(0, evt->GetNofData(fRefDet.dataType));
+          }
         }
       }
     }
@@ -1607,52 +1610,55 @@ void CbmAlgoBuildRawEvents::FillHistos()
         }
       }
     }
+
     /// Same for the reference detector
-    if (0 != fuDetTypeT0 && fRefDet.sName == "T0") {
-      // filter T0 digis from Tof (remove this block if T0 properly implemented)
-      fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataT0);
-      fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataT0);
-    }
-    else if (0 != fuDetTypeT0 && fRefDet.sName == "Tof") {
-      // filter T0 digis from Tof (remove this block if T0 properly implemented)
-      fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataTof);
-      fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTof);
+    if (ECbmModuleId::kNotExist != fRefDet.detId) {
+      if (0 != fuDetTypeT0 && fRefDet.sName == "T0") {
+        // filter T0 digis from Tof (remove this block if T0 properly implemented)
+        fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataT0);
+        fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataT0);
+      }
+      else if (0 != fuDetTypeT0 && fRefDet.sName == "Tof") {
+        // filter T0 digis from Tof (remove this block if T0 properly implemented)
+        fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataTof);
+        fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTof);
 
-      if (0 < GetNofDigis(fRefDet.detId)) {
-        /// Selection ratio
-        uint64_t ulDigiSizeOut = GetSizeFromDigisNb(fRefDet.detId, uNbDataT0 + uNbDataTof);
+        if (0 < GetNofDigis(fRefDet.detId)) {
+          /// Selection ratio
+          uint64_t ulDigiSizeOut = GetSizeFromDigisNb(fRefDet.detId, uNbDataT0 + uNbDataTof);
 
-        ulTotalOutputSize += ulDigiSizeOut;
-        vulTotalOutputSizeDet[uRefDetIdx] += ulDigiSizeOut;
+          ulTotalOutputSize += ulDigiSizeOut;
+          vulTotalOutputSizeDet[uRefDetIdx] += ulDigiSizeOut;
+        }
       }
-    }
-    else if (fRefDet.sName == "Trd1D") {
-      fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataTrd1d);
-      fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTrd1d);
+      else if (fRefDet.sName == "Trd1D") {
+        fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataTrd1d);
+        fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTrd1d);
 
-      if (0 < GetNofDigis(fRefDet.detId)) {
-        /// Selection ratio
-        uint64_t ulDigiSizeOut = GetSizeFromDigisNb(fRefDet.detId, uNbDataTrd1d + uNbDataTrd2d);
+        if (0 < GetNofDigis(fRefDet.detId)) {
+          /// Selection ratio
+          uint64_t ulDigiSizeOut = GetSizeFromDigisNb(fRefDet.detId, uNbDataTrd1d + uNbDataTrd2d);
 
-        ulTotalOutputSize += ulDigiSizeOut;
-        vulTotalOutputSizeDet[uRefDetIdx] += ulDigiSizeOut;
+          ulTotalOutputSize += ulDigiSizeOut;
+          vulTotalOutputSizeDet[uRefDetIdx] += ulDigiSizeOut;
+        }
       }
-    }
-    else if (fRefDet.sName == "Trd2D") {
-      fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataTrd2d);
-      fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTrd2d);
-    }
-    else {
-      fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(TMath::Max(0, evt->GetNofData(fRefDet.dataType)));
-      fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9,
-                                               TMath::Max(0, evt->GetNofData(fRefDet.dataType)));
+      else if (fRefDet.sName == "Trd2D") {
+        fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(uNbDataTrd2d);
+        fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTrd2d);
+      }
+      else {
+        fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(TMath::Max(0, evt->GetNofData(fRefDet.dataType)));
+        fvhNbDigiPerEvtTimeDet[uRefDetIdx]->Fill(evt->GetStartTime() * 1e-9,
+                                                 TMath::Max(0, evt->GetNofData(fRefDet.dataType)));
 
-      if (0 < GetNofDigis(fRefDet.detId)) {
-        /// Selection ratio
-        uint64_t ulDigiSizeOut = GetSizeFromDigisNb(fRefDet.detId, TMath::Max(0, evt->GetNofData(fRefDet.dataType)));
+        if (0 < GetNofDigis(fRefDet.detId)) {
+          /// Selection ratio
+          uint64_t ulDigiSizeOut = GetSizeFromDigisNb(fRefDet.detId, TMath::Max(0, evt->GetNofData(fRefDet.dataType)));
 
-        ulTotalOutputSize += ulDigiSizeOut;
-        vulTotalOutputSizeDet[uRefDetIdx] += ulDigiSizeOut;
+          ulTotalOutputSize += ulDigiSizeOut;
+          vulTotalOutputSizeDet[uRefDetIdx] += ulDigiSizeOut;
+        }
       }
     }
 
@@ -1665,9 +1671,11 @@ void CbmAlgoBuildRawEvents::FillHistos()
     ulTotalInputSize += ulDigiSizeIn;
     vulTotalInputSizeDet[uDetIdx] += ulDigiSizeIn;
   }
-  uint64_t ulDigiSizeIn = GetSizeFromDigisNb(fRefDet.detId, GetNofDigis(fRefDet.detId));
-  ulTotalInputSize += ulDigiSizeIn;
-  vulTotalInputSizeDet[uRefDetIdx] += ulDigiSizeIn;
+  if (ECbmModuleId::kNotExist != fRefDet.detId) {
+    uint64_t ulDigiSizeIn = GetSizeFromDigisNb(fRefDet.detId, GetNofDigis(fRefDet.detId));
+    ulTotalInputSize += ulDigiSizeIn;
+    vulTotalInputSizeDet[uRefDetIdx] += ulDigiSizeIn;
+  }
 
   /// Re-Loop on selection detectors to fill global TS ratios
   for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) {
@@ -1682,17 +1690,22 @@ void CbmAlgoBuildRawEvents::FillHistos()
     }
   }
   /// Same for the reference detector
-  if (0 != vulTotalInputSizeDet[uRefDetIdx]) {  //
-    fvhSelRatioPerTsNb[uRefDetIdx]->Fill(fuNrTs,
-                                         vulTotalOutputSizeDet[uRefDetIdx] * 1.0 / vulTotalInputSizeDet[uRefDetIdx]);
+  if (ECbmModuleId::kNotExist != fRefDet.detId) {
+    if (0 != vulTotalInputSizeDet[uRefDetIdx]) {  //
+      fvhSelRatioPerTsNb[uRefDetIdx]->Fill(fuNrTs,
+                                           vulTotalOutputSizeDet[uRefDetIdx] * 1.0 / vulTotalInputSizeDet[uRefDetIdx]);
+    }
+    if (0 != ulTotalInputSize) {  //
+      fvhInpRatioPerTsSz[uRefDetIdx]->Fill(fuNrTs, vulTotalInputSizeDet[uRefDetIdx] * 1.0 / ulTotalInputSize);
+    }
+    if (0 != ulTotalOutputSize) {  //
+      fvhOutRatioPerTsSz[uRefDetIdx]->Fill(fuNrTs, vulTotalOutputSizeDet[uRefDetIdx] * 1.0 / ulTotalOutputSize);
+    }
   }
+  /// Global value for all detectors
   if (0 != ulTotalInputSize) {  //
-    fvhInpRatioPerTsSz[uRefDetIdx]->Fill(fuNrTs, vulTotalInputSizeDet[uRefDetIdx] * 1.0 / ulTotalInputSize);
     fhSizeReductionPerTs->Fill(fuNrTs, ulTotalOutputSize * 1.0 / ulTotalInputSize);
   }
-  if (0 != ulTotalOutputSize) {  //
-    fvhOutRatioPerTsSz[uRefDetIdx]->Fill(fuNrTs, vulTotalOutputSizeDet[uRefDetIdx] * 1.0 / ulTotalOutputSize);
-  }
   LOG(debug) << "I/O Size ratio: " << (ulTotalOutputSize * 1.0 / ulTotalInputSize);
 }