diff --git a/MQ/mcbm/CMakeLists.txt b/MQ/mcbm/CMakeLists.txt index 70840b7b9560ed1ba0a2422682a04605398c3a60..e85b810635f16c335fba82ae85724741ee427388 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 5d3145d184831f2dafb00b096a10a6c63778fc85..09c56abeab8dcb4d2c0d350fae622134abd9949e 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 e50d1dc6c2670ec3b7c711c9e0506b66fe9be24a..41570b4d7290569de5804a8648a23d6bc8f15422 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 b93da4712830685518d3a9dc583011d00f5ca960..065039eacc364202a5c4d76f0c1f67f40cbea69b 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>*);