From 63ffa065d82bf922ad8a1d4260002e7b457efdc0 Mon Sep 17 00:00:00 2001 From: Dominik Smith <d.smith@gsi.de> Date: Wed, 9 Nov 2022 12:58:40 +0100 Subject: [PATCH] Added event time computation from Bmon digis to CbmAlgoBuildRawEvents. --- MQ/mcbm/CMakeLists.txt | 4 ++-- .../digis/CbmAlgoBuildRawEvents.cxx | 22 ++++++++++++++++++- .../digis/CbmAlgoBuildRawEvents.h | 2 ++ .../digis/CbmSeedFinderSlidingWindow.cxx | 2 ++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/MQ/mcbm/CMakeLists.txt b/MQ/mcbm/CMakeLists.txt index 70840b7b95..e85b810635 100644 --- a/MQ/mcbm/CMakeLists.txt +++ b/MQ/mcbm/CMakeLists.txt @@ -70,7 +70,7 @@ set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS}) generate_cbm_executable() -# diabled until T0 is implemented in unpackers +# disabled until T0 is implemented in unpackers # #set(EXE_NAME BuildRawEvents) #set(SRCS CbmDeviceBuildRawEvents.cxx runBuildRawEvents.cxx) @@ -110,7 +110,7 @@ set(INTERFACE_DEPENDENCIES ${INTERFACE_DEPS}) generate_cbm_executable() -# diabled until T0 is implemented in unpackers +# disabled until T0 is implemented in unpackers # #set(EXE_NAME BuildDigiEvents) #set(SRCS CbmDeviceBuildDigiEvents.cxx runBuildDigiEvents.cxx) diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx index 5d3145d184..09c56abeab 100644 --- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx +++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx @@ -131,6 +131,7 @@ void CbmAlgoBuildRawEvents::ProcessTs() /// TODO: store start time of current event ? // fCurrentEvent->SetStartTime( fPrevTime ); // Replace Seed time with time of first digi in event? fCurrentEvent->SetEndTime(fdPrevEvtEndTime); + SetBmonEventTime(fCurrentEvent); fEventVector.push_back(fCurrentEvent); fuCurEv++; @@ -347,10 +348,12 @@ void CbmAlgoBuildRawEvents::CheckSeed(Double_t dSeedTime, UInt_t uSeedDigiIdx) /// TODO: store start time of current event ? // fCurrentEvent->SetStartTime( fPrevTime ); // Replace Seed time with time of first digi in event? fCurrentEvent->SetEndTime(fdPrevEvtEndTime); + SetBmonEventTime(fCurrentEvent); fEventVector.push_back(fCurrentEvent); + fuCurEv++; } - fCurrentEvent = new CbmEvent(fuCurEv, dSeedTime, 0.); + fCurrentEvent = new CbmEvent(fuCurEv, -1, 0.); } // else of if( prev Event exists and mode forbiden overlap present ) if (fRefDet.detId != ECbmModuleId::kNotExist) { @@ -608,6 +611,23 @@ Bool_t CbmAlgoBuildRawEvents::HasTrigger(CbmEvent* event) return kTRUE; } +void CbmAlgoBuildRawEvents::SetBmonEventTime(CbmEvent* event) +{ + int32_t iNbDigis = event->GetNofData(ECbmDataType::kT0Digi); + + if (0 < iNbDigis) { + double eventTime = 0; + for (int idigi = 0; idigi < iNbDigis; ++idigi) { + uint idx = event->GetIndex(ECbmDataType::kT0Digi, idigi); + const CbmBmonDigi* pDigi = GetDigi<CbmBmonDigi>(idx); + if (nullptr == pDigi) continue; + eventTime += pDigi->GetTime(); + } + eventTime /= iNbDigis; + event->SetStartTime(eventTime); + } +} + Bool_t CbmAlgoBuildRawEvents::CheckTriggerConditions(CbmEvent* event, const RawEventBuilderDetector& det) { /// Check if both Trigger conditions disabled for this detector diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h index e50d1dc6c2..41570b4d72 100644 --- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h +++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h @@ -250,6 +250,8 @@ private: void UpdateTimeWinBoundariesExtrema(); void UpdateWidestTimeWinRange(); + void SetBmonEventTime(CbmEvent* event); + TFolder* outFolder; // oputput folder to store histograms /// Constants diff --git a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx index b93da47128..065039eacc 100644 --- a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx +++ b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx @@ -4,6 +4,7 @@ #include "CbmSeedFinderSlidingWindow.h" +#include "CbmBmonDigi.h" #include "CbmMCEventList.h" #include "CbmMatch.h" #include "CbmMuchBeamTimeDigi.h" @@ -126,6 +127,7 @@ void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<inType>* vIn, c // << std::endl; //} } +template void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<CbmBmonDigi>*, const std::vector<CbmMatch>*); template void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<CbmMuchBeamTimeDigi>*, const std::vector<CbmMatch>*); template void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<CbmMuchDigi>*, const std::vector<CbmMatch>*); -- GitLab