From e8bc01ab018a572d38a10ac228a6c2a40c6c4a82 Mon Sep 17 00:00:00 2001 From: Marco Clemencic <marco.clemencic@cern.ch> Date: Thu, 30 Sep 2021 10:10:02 +0200 Subject: [PATCH] Renamed ODIN::timeAlignmentEventWindow to ODIN::timeAlignmentEventIndex and added ODIN::isTAE() --- DAQ/DAQUtils/src/OdinTypesFilter.cpp | 25 ++++++++++--------- DAQ/MDF/src/RawEventHelpers.cpp | 3 +-- Event/DAQEvent/include/Event/ODIN.h | 13 +++++----- Event/DAQEvent/src/ODIN.cpp | 4 +-- .../tests/scripts/test_ODIN_bad_time.py | 2 +- .../LHCbAlgs/tests/scripts/test_ODIN_codec.py | 2 +- 6 files changed, 25 insertions(+), 24 deletions(-) diff --git a/DAQ/DAQUtils/src/OdinTypesFilter.cpp b/DAQ/DAQUtils/src/OdinTypesFilter.cpp index 5be7e2d25e3..374cd4b67cb 100644 --- a/DAQ/DAQUtils/src/OdinTypesFilter.cpp +++ b/DAQ/DAQUtils/src/OdinTypesFilter.cpp @@ -170,8 +170,8 @@ private: Gaudi::Property<std::vector<odin_bx_type_t>> m_bxs{this, "BXTypes", {odin_bx_type_t::All()}}; Gaudi::Property<std::vector<odin_calibration_type_t>> m_cls{ this, "CalibrationTypes", {odin_calibration_type_t::All()}}; - Gaudi::Property<int> m_winmin{this, "TAEWindowMoreThan", -1}; - Gaudi::Property<int> m_winmax{this, "TAEWindowLessThan", 99}; + Gaudi::Property<int> m_idxmin{this, "TAEIndexMoreThan", -1}; + Gaudi::Property<int> m_idxmax{this, "TAEIndexLessThan", 99}; mutable Gaudi::Accumulators::BinomialCounter<> m_acc{this, "#accept"}; }; @@ -190,20 +190,20 @@ StatusCode OdinTypesFilter::initialize() { info() << toString( m_log.value() ) << endmsg; info() << "Accepted CalibrationTypes : " << m_cls.value() << endmsg; info() << toString( m_log.value() ) << endmsg; - info() << "TAE Window in [" << m_winmin + 1 << "," << m_winmax - 1 << "]" << endmsg; + info() << "TAE Index in [" << m_idxmin + 1 << "," << m_idxmax - 1 << "]" << endmsg; // warn about trivial requests if ( m_log == Log_t::And && - boolean_combine( Log_t::Or, m_bxs.empty(), m_trs.empty(), m_winmin >= m_winmax, m_cls.empty() ) ) - warning() << "BXTypes, TriggerTypes, ReadoutTypes or TAEWindow is empty : ALL events will be rejected !!" + boolean_combine( Log_t::Or, m_bxs.empty(), m_trs.empty(), m_idxmin >= m_idxmax, m_cls.empty() ) ) + warning() << "BXTypes, TriggerTypes, ReadoutTypes or TAEIndex is empty : ALL events will be rejected !!" << endmsg; if ( m_log == Log_t::Or && - boolean_combine( Log_t::And, m_bxs.empty(), m_trs.empty(), m_winmin >= m_winmax, m_cls.empty() ) ) - warning() << "BXTypes, TriggerTypes, ReadoutTypes and TAEWindow are empties : ALL events will be rejected !!" + boolean_combine( Log_t::And, m_bxs.empty(), m_trs.empty(), m_idxmin >= m_idxmax, m_cls.empty() ) ) + warning() << "BXTypes, TriggerTypes, ReadoutTypes and TAEIndex are empties : ALL events will be rejected !!" << endmsg; if ( boolean_combine( m_log, m_bxs.value().front() == odin_bx_type_t::All(), m_cls.value().front() == odin_calibration_type_t::All(), - m_trs.value().front() == odin_trigger_type_t::All(), m_winmin<0, m_winmax> 7 ) ) + m_trs.value().front() == odin_trigger_type_t::All(), m_idxmin<0, m_idxmax> 7 ) ) warning() << "OdinTypesFilter has no effect : ALL events will be accepted !!" << endmsg; } ); } @@ -216,12 +216,12 @@ bool OdinTypesFilter::operator()( const LHCb::ODIN& odin ) const { // treat trivial requests if ( boolean_combine( m_log, m_bxs.value().front() == odin_bx_type_t::All(), m_cls.value().front() == odin_calibration_type_t::All(), - m_trs.value().front() == odin_trigger_type_t::All(), m_winmin < 0 && m_winmax > 7 ) ) { + m_trs.value().front() == odin_trigger_type_t::All(), m_idxmin < 0 && m_idxmax > 7 ) ) { m_acc += true; return true; } - if ( boolean_combine( m_log, ( m_bxs.empty(), m_cls.empty(), m_trs.empty(), m_winmin >= m_winmax ) ) ) { + if ( boolean_combine( m_log, ( m_bxs.empty(), m_cls.empty(), m_trs.empty(), m_idxmin >= m_idxmax ) ) ) { m_acc += false; return false; } @@ -233,7 +233,8 @@ bool OdinTypesFilter::operator()( const LHCb::ODIN& odin ) const { bool clPass = std::any_of( m_cls.begin(), m_cls.end(), equals_( odin.calibrationType() ) ); bool bxPass = std::any_of( m_bxs.begin(), m_bxs.end(), equals_( odin.bunchCrossingType() ) ); bool trPass = std::any_of( m_trs.begin(), m_trs.end(), equals_( odin.triggerType() ) ); - bool taePass = ( (int)odin.timeAlignmentEventWindow() > m_winmin && (int)odin.timeAlignmentEventWindow() < m_winmax ); + auto taeIdx = static_cast<int>( odin.timeAlignmentEventIndex() ); + bool taePass = ( taeIdx > m_idxmin && taeIdx < m_idxmax ); auto filterPassed = boolean_combine( m_log, trPass, bxPass, taePass, clPass ); @@ -249,7 +250,7 @@ StatusCode OdinTypesFilter::finalize() { info() << "Accepted BXTypes : " << m_bxs.value() << endmsg << toString( m_log.value() ) << endmsg << "Accepted TriggerTypes : " << m_trs.value() << endmsg << toString( m_log.value() ) << endmsg << "Accepted CalibrationTypes : " << m_cls.value() << endmsg << toString( m_log.value() ) << endmsg - << "TAE Window in [" << m_winmin.value() << "," << m_winmax.value() << "]" << endmsg << " ---> " + << "TAE Index in [" << m_idxmin.value() << "," << m_idxmax.value() << "]" << endmsg << " ---> " << m_acc.nTrueEntries() << " accepted events among " << m_acc.nEntries() << endmsg; return FilterPredicate::finalize(); // must be called after all other actions diff --git a/DAQ/MDF/src/RawEventHelpers.cpp b/DAQ/MDF/src/RawEventHelpers.cpp index 475dafcd1df..cfa83d34931 100755 --- a/DAQ/MDF/src/RawEventHelpers.cpp +++ b/DAQ/MDF/src/RawEventHelpers.cpp @@ -637,7 +637,6 @@ bool LHCb::isTAERawEvent( RawEvent* raw ) { const auto& oBnks = raw->banks( RawBank::ODIN ); return std::any_of( oBnks.begin(), oBnks.end(), []( const RawBank* bank ) { const LHCb::ODIN odin{bank->range<std::uint32_t>()}; - return odin.triggerType() == static_cast<std::uint8_t>( ODIN::TriggerTypes::TimingTrigger ) || - odin.timeAlignmentEventWindow() != 0; + return odin.triggerType() == static_cast<std::uint8_t>( ODIN::TriggerTypes::TimingTrigger ) || odin.isTAE(); } ); } diff --git a/Event/DAQEvent/include/Event/ODIN.h b/Event/DAQEvent/include/Event/ODIN.h index a2d8ffeed5c..b4286bec8d4 100644 --- a/Event/DAQEvent/include/Event/ODIN.h +++ b/Event/DAQEvent/include/Event/ODIN.h @@ -211,8 +211,8 @@ namespace LHCb { NonZeroSuppressionModeOffset = 6 * 32 + 14, TimeAlignmentEventCentralSize = 1, TimeAlignmentEventCentralOffset = 6 * 32 + 15, - TimeAlignmentEventWindowSize = 6, - TimeAlignmentEventWindowOffset = 6 * 32 + 16, + TimeAlignmentEventIndexSize = 6, + TimeAlignmentEventIndexOffset = 6 * 32 + 16, StepRunEnableSize = 1, StepRunEnableOffset = 6 * 32 + 22, TriggerTypeSize = 4, @@ -290,12 +290,13 @@ namespace LHCb { constexpr void setTimeAlignmentEventCentral( bool value ) { details::set_bits<TimeAlignmentEventCentralSize, TimeAlignmentEventCentralOffset>( data, value ); } - [[nodiscard]] constexpr ACCEL_TARGET_SPEC auto timeAlignmentEventWindow() const { - return details::get_bits<TimeAlignmentEventWindowSize, TimeAlignmentEventWindowOffset>( data ); + [[nodiscard]] constexpr ACCEL_TARGET_SPEC auto timeAlignmentEventIndex() const { + return details::get_bits<TimeAlignmentEventIndexSize, TimeAlignmentEventIndexOffset>( data ); } - constexpr void setTimeAlignmentEventWindow( std::uint8_t value ) { - details::set_bits<TimeAlignmentEventWindowSize, TimeAlignmentEventWindowOffset>( data, value ); + constexpr void setTimeAlignmentEventIndex( std::uint8_t value ) { + details::set_bits<TimeAlignmentEventIndexSize, TimeAlignmentEventIndexOffset>( data, value ); } + [[nodiscard]] constexpr ACCEL_TARGET_SPEC bool isTAE() const { return timeAlignmentEventIndex() != 0; } [[nodiscard]] constexpr ACCEL_TARGET_SPEC auto stepRunEnable() const { return details::get_bits<StepRunEnableSize, StepRunEnableOffset>( data ); } diff --git a/Event/DAQEvent/src/ODIN.cpp b/Event/DAQEvent/src/ODIN.cpp index 87f4b18ef3c..523a6e027fb 100644 --- a/Event/DAQEvent/src/ODIN.cpp +++ b/Event/DAQEvent/src/ODIN.cpp @@ -36,7 +36,7 @@ namespace LHCb::ODINImplementation::v7 { // error bits + detector status (dropped): buffer[7] // misc fields (buffer[8], ignoring bits 15, 21, 24-31) odin.setBunchId( get_bits<12, 8 * 32 + 0>( buffer ) ); - odin.setTimeAlignmentEventWindow( get_bits<3, 8 * 32 + 12>( buffer ) ); + odin.setTimeAlignmentEventIndex( get_bits<3, 8 * 32 + 12>( buffer ) ); odin.setTriggerType( get_bits<3, 8 * 32 + 16>( buffer ) ); odin.setCalibrationType( get_bits<2, 8 * 32 + 19>( buffer ) ); odin.setBunchCrossingType( static_cast<ODIN::BXTypes>( get_bits<2, 8 * 32 + 22>( buffer ) ) ); @@ -61,7 +61,7 @@ namespace LHCb::ODINImplementation::v7 { buffer[9] = data[4]; // TCK set_bits<12, 8 * 32 + 0>( buffer, bunchId() ); - set_bits<3, 8 * 32 + 12>( buffer, timeAlignmentEventWindow() ); + set_bits<3, 8 * 32 + 12>( buffer, timeAlignmentEventIndex() ); assert( triggerType() <= 7 ); // change of width between v6 and v7 set_bits<3, 8 * 32 + 16>( buffer, triggerType() ); assert( calibrationType() <= 3 ); // change of width between v6 and v7 diff --git a/Kernel/LHCbAlgs/tests/scripts/test_ODIN_bad_time.py b/Kernel/LHCbAlgs/tests/scripts/test_ODIN_bad_time.py index 8550528f3d9..60a2750097d 100644 --- a/Kernel/LHCbAlgs/tests/scripts/test_ODIN_bad_time.py +++ b/Kernel/LHCbAlgs/tests/scripts/test_ODIN_bad_time.py @@ -116,7 +116,7 @@ fields = [ # "version", # not checked, usually overwritten "calibrationStep", "triggerConfigurationKey", - "timeAlignmentEventWindow", + "timeAlignmentEventIndex", "calibrationType" ] diff --git a/Kernel/LHCbAlgs/tests/scripts/test_ODIN_codec.py b/Kernel/LHCbAlgs/tests/scripts/test_ODIN_codec.py index 6d3581ca3c3..73ecb844ba0 100644 --- a/Kernel/LHCbAlgs/tests/scripts/test_ODIN_codec.py +++ b/Kernel/LHCbAlgs/tests/scripts/test_ODIN_codec.py @@ -64,7 +64,7 @@ fields = [ # (name, bits) "BunchCrossingType", "NonZeroSuppressionMode", "TimeAlignmentEventCentral", - "TimeAlignmentEventWindow", + "TimeAlignmentEventIndex", "StepRunEnable", "TriggerType", "TimeAlignmentEventFirst", -- GitLab