Skip to content
Snippets Groups Projects
Commit 1470435a authored by Dominik Smith's avatar Dominik Smith Committed by Volker Friese
Browse files

BuildRawEvents (task and algo) now filters T0 digis from the Tof stream using...

BuildRawEvents (task and algo) now filters T0 digis from the Tof stream using their address (also for QA and seed finder).
parent 87fc277d
No related branches found
No related tags found
No related merge requests found
Pipeline #16014 passed
......@@ -284,7 +284,12 @@ void CbmAlgoBuildRawEvents::LoopOnSeeds()
/// Loop on size of vector
for (UInt_t uDigi = 0; uDigi < uNbRefDigis; ++uDigi) {
LOG(debug) << Form("Checking seed %6u / %6u", uDigi, uNbRefDigis);
const DigiSeed* pDigi = GetDigi<DigiSeed>(uDigi);
// filter T0 digis from Tof (remove this line if T0 properly implemented)
if (fRefDet.detId == ECbmModuleId::kTof && pDigi->GetAddress() == fuT0Address) { continue; }
const Double_t dTime = pDigi->GetTime();
/// Check if seed in acceptance window
......@@ -450,6 +455,10 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet
/// Loop on size of vector
for (UInt_t uDigi = detMatch.fuStartIndex; uDigi < uNbSelDigis; ++uDigi) {
const DigiCheck* pDigi = GetDigi<DigiCheck>(uDigi);
// filter T0 digis from Tof (remove this line if T0 properly implemented)
if (detMatch.detId == ECbmModuleId::kTof && pDigi->GetAddress() == fuT0Address) { continue; }
const Double_t dTime = pDigi->GetTime();
const Double_t dTimeDiff = dTime - dSeedTime;
LOG(debug4) << detMatch.sName << Form(" => Checking match %6u / %6u, dt %f", uDigi, uNbSelDigis, dTimeDiff);
......
......@@ -107,6 +107,8 @@ static const RawEventBuilderDetector kRawEventBuilderDetUndef = RawEventBuilderD
class CbmAlgoBuildRawEvents {
public:
const static uint32_t fuT0Address = 10246;
/** Default constructor **/
CbmAlgoBuildRawEvents() = default;
......
......@@ -15,7 +15,6 @@
#include "CbmMatch.h"
#include "CbmModuleList.h"
#include "CbmQaCanvas.h"
#include "CbmStsDigi.h"
#include "FairRootManager.h"
#include <Logger.h>
......
......@@ -332,6 +332,14 @@ void CbmTaskBuildRawEvents::FillSeedTimesFromDetList(std::vector<Double_t>* vdSe
for (RawEventBuilderDetector& system : fSeedTimeDetList) {
if (DigiCounters[system.detId] < DigiNumbers[system.detId]) {
// filter T0 digis from Tof (remove this statement if T0 properly implemented)
if (system.detId == ECbmModuleId::kTof
&& (fTofDigis->at(DigiCounters[system.detId])).GetAddress() == CbmAlgoBuildRawEvents::fuT0Address) {
DigiCounters[system.detId]++;
continue;
} // end of T0 filter
Double_t thisTime = GetDigiTime(system.detId, DigiCounters[system.detId]);
if (thisTime < earliestTime || earliestTime == -1) {
nextAddedSystem = system.detId;
......@@ -340,6 +348,7 @@ void CbmTaskBuildRawEvents::FillSeedTimesFromDetList(std::vector<Double_t>* vdSe
}
}
if (earliestTime != -1) {
if (vDigiMatch != nullptr) {
const CbmMatch* digiMatch = fDigiMan->GetMatch(nextAddedSystem, DigiCounters[nextAddedSystem]);
vDigiMatch->push_back(*digiMatch);
......@@ -380,6 +389,13 @@ void CbmTaskBuildRawEvents::FillSeedTimesFromSlidingWindow(const RawEventBuilder
}
fvDigiMatchQa->clear();
for (Int_t i = 0; i < fDigiMan->GetNofDigis(seedDet->detId); i++) {
// filter T0 digis from Tof (remove this statement if T0 properly implemented)
if (seedDet->detId == ECbmModuleId::kTof
&& (fTofDigis->at(i)).GetAddress() == CbmAlgoBuildRawEvents::fuT0Address) {
continue;
} // end of T0 filter
const CbmMatch* digiMatch = fDigiMan->GetMatch(seedDet->detId, i);
fvDigiMatchQa->push_back(*digiMatch);
}
......@@ -397,7 +413,21 @@ void CbmTaskBuildRawEvents::FillSeedTimesFromSlidingWindow(const RawEventBuilder
}
case ECbmModuleId::kSts: fSeedFinderSlidingWindow->FillSeedTimes(fStsDigis, fvDigiMatchQa); break;
case ECbmModuleId::kTrd: fSeedFinderSlidingWindow->FillSeedTimes(fTrdDigis, fvDigiMatchQa); break;
case ECbmModuleId::kTof: fSeedFinderSlidingWindow->FillSeedTimes(fTofDigis, fvDigiMatchQa); break;
case ECbmModuleId::kTof: {
// filter T0 digis from Tof (remove this statement if T0 properly implemented)
std::vector<CbmTofDigi> vFilteredTofDigis;
for (const auto& tofDigi : *fTofDigis) {
if (tofDigi.GetAddress() == CbmAlgoBuildRawEvents::fuT0Address) { continue; }
vFilteredTofDigis.push_back(tofDigi);
}
fSeedFinderSlidingWindow->FillSeedTimes(&vFilteredTofDigis, fvDigiMatchQa);
break;
// end of T0 filter
//original version (no T0 filter)
//fSeedFinderSlidingWindow->FillSeedTimes(fTofDigis, fvDigiMatchQa); break;
}
case ECbmModuleId::kRich: fSeedFinderSlidingWindow->FillSeedTimes(fRichDigis, fvDigiMatchQa); break;
case ECbmModuleId::kPsd: fSeedFinderSlidingWindow->FillSeedTimes(fPsdDigis, fvDigiMatchQa); break;
case ECbmModuleId::kT0: fSeedFinderSlidingWindow->FillSeedTimes(fT0Digis, fvDigiMatchQa); break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment