From 0d955f094cc056bd79c670305202e39be658dc16 Mon Sep 17 00:00:00 2001
From: Dominik Smith <d.smith@gsi.de>
Date: Wed, 2 Feb 2022 14:54:09 +0100
Subject: [PATCH] Modified CbmBuildEventsQa and QA function in
 CbmSeedFinderSlidingWindow to treat digis with empty matches as noise.

---
 reco/eventbuilder/digis/CbmBuildEventsQa.cxx          |  5 ++++-
 .../eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx | 11 +++++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/reco/eventbuilder/digis/CbmBuildEventsQa.cxx b/reco/eventbuilder/digis/CbmBuildEventsQa.cxx
index 19f90cf35c..3827f0520e 100644
--- a/reco/eventbuilder/digis/CbmBuildEventsQa.cxx
+++ b/reco/eventbuilder/digis/CbmBuildEventsQa.cxx
@@ -190,7 +190,7 @@ void CbmBuildEventsQa::Exec(Option_t*)
     LOG(info) << "";
     MatchEvent(event);
     if (event->GetMatch()->GetNofLinks() < 1) {
-      LOG(warning) << "No links in this event match object, skipping the event";
+      LOG(info) << "Warning: No links in this event match object. Skipping event # " << event->GetNumber();
       continue;
     }  // if (-1 == event->GetMatch()->GetNofLinks())
     int matchedMcEventNr = event->GetMatch()->GetMatchedLink().GetEntry();
@@ -247,6 +247,9 @@ void CbmBuildEventsQa::Exec(Option_t*)
           if (digiMatch->GetMatchedLink().GetEntry() == matchedMcEventNr) nDigisCorrect++;
           if (digiMatch->GetMatchedLink().GetEntry() == -1) nDigisNoise++;
         }
+        else {
+          nDigisNoise++;
+        }
 
         for (int iLink = 0; iLink < digiMatch->GetNofLinks(); iLink++) {
           int entry = digiMatch->GetLink(iLink).GetEntry();
diff --git a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx
index 22172ba231..1bc8c3e29f 100644
--- a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx
+++ b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx
@@ -132,6 +132,11 @@ void CbmSeedFinderSlidingWindow::FillEventMatch(int32_t WinStart, int32_t WinEnd
   for (int32_t iDigi = WinStart; iDigi <= WinEnd; iDigi++) {
     const CbmMatch* digiMatch = &(vDigiMatch->at(iDigi));
     digiCount++;
+    if (digiMatch->GetNofLinks() == 0) {
+      //skip digis with no links to avoid T0 pollution
+      noiseDigiCount++;
+      continue;
+    }
     if (digiMatch->GetMatchedLink().GetEntry() == -1) {
       noiseDigiCount++;
       continue;  //disregard noise digis
@@ -166,7 +171,8 @@ void CbmSeedFinderSlidingWindow::FillEventMatch(int32_t WinStart, int32_t WinEnd
   //correct digis in seed window
   for (int32_t iDigi = WinStart; iDigi <= WinEnd; iDigi++) {
     const CbmMatch* digiMatch = &(vDigiMatch->at(iDigi));
-    const int32_t entry       = digiMatch->GetMatchedLink().GetEntry();
+    if (digiMatch->GetNofLinks() == 0) { continue; }  //skip digis with no links to avoid T0 pollution
+    const int32_t entry = digiMatch->GetMatchedLink().GetEntry();
     if (entry != -1)  // disregarding noise
     {
       if (entry == seedMatch.GetMatchedLink().GetEntry()) { correctDigiCount++; }
@@ -178,7 +184,8 @@ void CbmSeedFinderSlidingWindow::FillEventMatch(int32_t WinStart, int32_t WinEnd
   //found digis of matched event in seed window
   for (uint32_t iDigi = 0; iDigi < vDigiMatch->size(); iDigi++) {
     const CbmMatch* digiMatch = &(vDigiMatch->at(iDigi));
-    const int matchedEvent    = digiMatch->GetMatchedLink().GetEntry();
+    if (digiMatch->GetNofLinks() == 0) { continue; }  //skip digis with no links to avoid T0 pollution
+    const int matchedEvent = digiMatch->GetMatchedLink().GetEntry();
     if (matchedEvent == seedMatch.GetMatchedLink().GetEntry()) { matchedEventDigiCount++; }
   }
   const double foundDigiRatio = (double) correctDigiCount / matchedEventDigiCount;
-- 
GitLab