diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.cxx b/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.cxx index ca22de7b5cf74b0e2481fbb56ee58fcf71aab641..139a5a3154fad2cfe30bafc130fea90977195ccd 100644 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.cxx +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.cxx @@ -39,6 +39,9 @@ StatusCode DoubleEventSelectorAthenaPool::initialize() ATH_CHECK(EventSelectorAthenaPool::initialize()); ATH_CHECK(m_secondarySelector.retrieve()); + if (dynamic_cast<EventSelectorAthenaPool *>(&*(m_secondarySelector)) == nullptr) { + m_secondaryByteStream = true; + } return StatusCode::SUCCESS; } @@ -175,12 +178,22 @@ StatusCode DoubleEventSelectorAthenaPool::recordAttributeList() const ATH_MSG_DEBUG("AttributeList size " << attrList.size()); auto athAttrList = std::make_unique<AthenaAttributeList>(attrList); - // Fill the new attribute list from the primary file - ATH_CHECK(fillAttributeList(athAttrList.get(), "", false)); - - // Fill the new attribute list from the secondary file - ATH_MSG_DEBUG("Append secondary attribute list properties to the primary one with a suffix: " << m_secondaryAttrListSuffix.value()); - ATH_CHECK(m_secondarySelector->fillAttributeList(athAttrList.get(), "_" + m_secondaryAttrListSuffix.value(), true)); + // Decide what to do based on the type of secondary file + if (m_secondaryByteStream) { + // Always add ByteStream as primary input + ATH_CHECK(m_secondarySelector->fillAttributeList(athAttrList.get(), "", false)); + + // Then fill the new attribute list from the primary file + ATH_MSG_DEBUG("Append primary attribute list properties to the secondary one with a suffix: " << m_secondaryAttrListSuffix.value()); + ATH_CHECK(fillAttributeList(athAttrList.get(), "_" + m_secondaryAttrListSuffix.value(), true)); + } else { + // Fill the new attribute list from the primary file + ATH_CHECK(fillAttributeList(athAttrList.get(), "", false)); + + // Fill the new attribute list from the secondary file + ATH_MSG_DEBUG("Append secondary attribute list properties to the primary one with a suffix: " << m_secondaryAttrListSuffix.value()); + ATH_CHECK(m_secondarySelector->fillAttributeList(athAttrList.get(), "_" + m_secondaryAttrListSuffix.value(), true)); + } // Add info about secondary input athAttrList->extend("hasSecondaryInput", "bool"); @@ -235,6 +248,11 @@ void DoubleEventSelectorAthenaPool::handle(const Incident& inc) msg(MSG::DEBUG) << "SourceID: " << source.first << " active events: " << source.second << endmsg; } + // Nothing to do if secondary event selector is ByteStream + if (m_secondaryByteStream) { + return; + } + // Secondary guid SG::SourceID fid2; SG::DataProxy* dp2 = sg->proxy(ClassID_traits<DataHeader>::ID(), "SecondaryEventSelector", true); diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.h b/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.h index 0c379ae3ecfe73cae0641374b944246247cf6180..2213ce0b629deca614e0fa442ef923c40fadc0af 100644 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.h +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/DoubleEventSelectorAthenaPool.h @@ -64,6 +64,9 @@ private: ServiceHandle<ISecondaryEventSelector> m_secondarySelector{this, "SecondaryEventSelector", "SecondaryEventSelector", ""}; Gaudi::Property<std::string> m_secondaryAttrListSuffix{this, "SecondaryAttrListSuffix", "secondary", ""}; + + // Cache if secondary selector is ByteStream + bool m_secondaryByteStream{}; }; #endif diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx b/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx index 10f3d60b410b8472d3c5cea1efa84ae2ab303644..29be28acd0d43c82442ad5ecbf0d141b6d70d132 100644 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx @@ -1000,9 +1000,14 @@ StatusCode EventSelectorAthenaPool::fillAttributeList(coral::AttributeList *attr (*attrList)[iter.tokenName() + suffix].data<std::string>() = iter->toString(); ATH_MSG_DEBUG("record AthenaAttribute, name = " << iter.tokenName() + suffix << " = " << iter->toString() << "."); } - attrList->extend("eventRef" + suffix, "string"); - (*attrList)["eventRef" + suffix].data<std::string>() = m_headerIterator->eventRef().toString(); - ATH_MSG_DEBUG("record AthenaAttribute, name = eventRef" + suffix + " = " << m_headerIterator->eventRef().toString() << "."); + + std::string eventRef = "eventRef"; + if (m_isSecondary.value()) { + eventRef.append(suffix); + } + attrList->extend(eventRef, "string"); + (*attrList)[eventRef].data<std::string>() = m_headerIterator->eventRef().toString(); + ATH_MSG_DEBUG("record AthenaAttribute, name = " + eventRef + " = " << m_headerIterator->eventRef().toString() << "."); if (copySource) { const coral::AttributeList& sourceAttrList = m_headerIterator->currentRow().attributeList(); diff --git a/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx b/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx index 34b44397e1c77e85b98fe630048c6f0b53863ace..aeaa3f9091a23369709f02c7da74d9340ba60841 100644 --- a/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx +++ b/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx @@ -754,24 +754,24 @@ StatusCode EventSelectorByteStream::recordAttributeList() const StatusCode EventSelectorByteStream::fillAttributeList(coral::AttributeList *attrList, const std::string &suffix, bool /* copySource */) const { - attrList->extend("RunNumber" + suffix, "long"); - attrList->extend("EventNumber" + suffix, "long"); - attrList->extend("Lumiblock" + suffix, "int"); - attrList->extend("BunchID" + suffix, "int"); - attrList->extend("CrossingTimeSec" + suffix, "unsigned int"); - attrList->extend("CrossingTimeNSec" + suffix, "unsigned int"); + attrList->extend("RunNumber" + suffix, "unsigned int"); + attrList->extend("EventNumber" + suffix, "unsigned long long"); + attrList->extend("LumiBlockN" + suffix, "unsigned int"); + attrList->extend("BunchId" + suffix, "unsigned int"); + attrList->extend("EventTime" + suffix, "unsigned int"); + attrList->extend("EventTimeNanoSec" + suffix, "unsigned int"); // fill attribute list const RawEvent* event = m_eventSource->currentEvent(); - (*attrList)["RunNumber" + suffix].data<long>() = event->run_no(); + (*attrList)["RunNumber" + suffix].data<unsigned int>() = event->run_no(); if (event->version() < 0x03010000) { - (*attrList)["EventNumber" + suffix].data<long>() = event->lvl1_id(); + (*attrList)["EventNumber" + suffix].data<unsigned long long>() = event->lvl1_id(); } else { - (*attrList)["EventNumber" + suffix].data<long>() = event->global_id(); + (*attrList)["EventNumber" + suffix].data<unsigned long long>() = event->global_id(); } - (*attrList)["Lumiblock" + suffix].data<int>() = event->lumi_block(); - (*attrList)["BunchID" + suffix].data<int>() = event->bc_id(); + (*attrList)["LumiBlockN" + suffix].data<unsigned int>() = event->lumi_block(); + (*attrList)["BunchId" + suffix].data<unsigned int>() = event->bc_id(); unsigned int bc_time_sec = event->bc_time_seconds(); unsigned int bc_time_ns = event->bc_time_nanoseconds(); @@ -781,8 +781,8 @@ StatusCode EventSelectorByteStream::fillAttributeList(coral::AttributeList *attr ATH_MSG_WARNING(" bc_time nanosecond number larger than 1e9, it is " << bc_time_ns << ", reset it to 1 sec"); bc_time_ns = 1000000000; } - (*attrList)["CrossingTimeSec" + suffix].data<unsigned int>() = bc_time_sec; - (*attrList)["CrossingTimeNSec" + suffix].data<unsigned int>() = bc_time_ns; + (*attrList)["EventTime" + suffix].data<unsigned int>() = bc_time_sec; + (*attrList)["EventTimeNanoSec" + suffix].data<unsigned int>() = bc_time_ns; const OFFLINE_FRAGMENTS_NAMESPACE::DataType* buffer; diff --git a/Event/ByteStreamTest/share/ByteStreamTestSelectors.ref b/Event/ByteStreamTest/share/ByteStreamTestSelectors.ref index 25f60c7b2181a3db8631b1b7e35d3bdfbf7f044a..0278de357e60eda4fc79ad620ccf3ac35241f351 100644 --- a/Event/ByteStreamTest/share/ByteStreamTestSelectors.ref +++ b/Event/ByteStreamTest/share/ByteStreamTestSelectors.ref @@ -93,12 +93,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186525031 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 339 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 189247220 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186525031 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 339 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 189247220 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060342676 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 129 @@ -188,12 +188,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186524665 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 3284 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 184074160 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186524665 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 3284 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 184074160 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060342310 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 129 @@ -277,12 +277,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186542447 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 153 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 444366780 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186542447 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 153 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 444366780 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060360092 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 129 @@ -366,12 +366,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186543405 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 2757 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 458481815 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186543405 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 2757 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 458481815 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060361050 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 129 @@ -455,12 +455,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186548387 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 1931 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 529867525 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186548387 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 1931 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 529867525 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060366032 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 129 @@ -544,12 +544,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186515186 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 613 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 48308825 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186515186 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 613 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 48308825 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060332831 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 132 @@ -634,12 +634,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186556019 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 3170 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 639275495 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186556019 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 3170 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 639275495 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060373664 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 129 @@ -723,12 +723,12 @@ Found 1 proxy for ClassID 226113180 (xAOD::AuxInfoBase): <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> EventSelector.E... INFO Found attribute list -EventSelector.E... INFO Spec element RunNumber (long) : 327265 -EventSelector.E... INFO Spec element EventNumber (long) : 186542866 -EventSelector.E... INFO Spec element Lumiblock (int) : 100 -EventSelector.E... INFO Spec element BunchID (int) : 1260 -EventSelector.E... INFO Spec element CrossingTimeSec (unsigned int) : 1497896168 -EventSelector.E... INFO Spec element CrossingTimeNSec (unsigned int) : 450530190 +EventSelector.E... INFO Spec element RunNumber (unsigned int) : 327265 +EventSelector.E... INFO Spec element EventNumber (unsigned long long) : 186542866 +EventSelector.E... INFO Spec element LumiBlockN (unsigned int) : 100 +EventSelector.E... INFO Spec element BunchId (unsigned int) : 1260 +EventSelector.E... INFO Spec element EventTime (unsigned int) : 1497896168 +EventSelector.E... INFO Spec element EventTimeNanoSec (unsigned int) : 450530190 EventSelector.E... INFO Spec element TriggerStatus (unsigned int) : 0 EventSelector.E... INFO Spec element ExtendedL1ID (unsigned int) : 4060360511 EventSelector.E... INFO Spec element L1TriggerType (unsigned int) : 129 diff --git a/Event/ByteStreamTest/src/EvenEventsSelectorTool.cxx b/Event/ByteStreamTest/src/EvenEventsSelectorTool.cxx index 12bb519fd6b3869c92c64f029bdf7fe0fd9761f4..8f7db020b33e65c5fac0d77b847f8503457f068b 100755 --- a/Event/ByteStreamTest/src/EvenEventsSelectorTool.cxx +++ b/Event/ByteStreamTest/src/EvenEventsSelectorTool.cxx @@ -38,7 +38,7 @@ StatusCode EvenEventsSelectorTool::postNext() const { ++it; } // take only even events - if ((*attrList)["EventNumber"].data<long>()%2==0) { + if ((*attrList)["EventNumber"].data<unsigned long long>()%2==0) { retc = StatusCode::RECOVERABLE; ATH_MSG_INFO("Rejecting event"); }