diff --git a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx index 9ede07dee712f186d0a93a5133bdf05305e99eff..2043c5ca710fa80b0764af8f1cbc2157c86afcd4 100644 --- a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx +++ b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.cxx @@ -19,6 +19,9 @@ TrigL1TopoWriteValData::TrigL1TopoWriteValData(const std::string& name, ISvcLoca declareProperty("SimTopoCTPLocation", m_simTopoCTPLocation = LVL1::DEFAULT_L1TopoCTPLocation, "StoreGate key of simulated topo decision output for CTP, defaults to default output key of L1TopoSimulation"); + declareProperty("SimTopoOverflowCTPLocation", + m_simTopoOverflowCTPLocation = LVL1::DEFAULT_L1TopoOverflowCTPLocation, + "StoreGate key of simulated topo overflow output for CTP" ); declareProperty("HLTResultName", m_HltResultName = "HLTResult_HLT", "StoreGate key of HLT result" ); @@ -28,6 +31,7 @@ StatusCode TrigL1TopoWriteValData::initialize(){ ATH_MSG_INFO ("initialize"); ATH_MSG_DEBUG ("Properties:" ); ATH_MSG_DEBUG ("SimTopoCTPLocation : "<<m_simTopoCTPLocation ); + ATH_MSG_DEBUG ("SimTopoOverflowCTPLocation : "<<m_simTopoOverflowCTPLocation ); ATH_MSG_DEBUG ("HLTResultName : "<<m_HltResultName ); return StatusCode::SUCCESS; } @@ -54,7 +58,8 @@ StatusCode TrigL1TopoWriteValData::finalize() { //---------------------------------------------------------- StatusCode TrigL1TopoWriteValData::doWriteValData(){ ATH_MSG_DEBUG( "doWriteValData" ); - + + int num_words = 4; // Retrieve HLTResult DataHandle<HLT::HLTResult> hltResult; ///! HLTResult object if ( ! evtStore()->transientContains<HLT::HLTResult>(m_HltResultName.value()) ) { @@ -79,13 +84,33 @@ StatusCode TrigL1TopoWriteValData::doWriteValData(){ } } + // Retrieve L1Topo CTP simulated overflows if present + const DataHandle< LVL1::FrontPanelCTP > simTopoOverflowCTP; ///! simulated overflow output + if ( ! evtStore()->contains<LVL1::FrontPanelCTP>(m_simTopoOverflowCTPLocation.value()) ){ + ATH_MSG_INFO("Could not find LVL1::FrontPanelCTP with key " << m_simTopoOverflowCTPLocation.value() << " in SG. No simulated overflow bits" ); + } else { + CHECK_RECOVERABLE( evtStore()->retrieve(simTopoOverflowCTP,m_simTopoOverflowCTPLocation.value()) ); + if (!simTopoOverflowCTP){ + ATH_MSG_INFO( "Retrieve of LVL1::FrontPanelCTP sim overflows failed. No sim overflow data written to HLTResult" ); + } else { + num_words = 8; + } + } + // Write the L1Topo simulation data into the HLTResult - hltResult->getExtraData().anonymous.push_back( 4 ); // number of words to be written + hltResult->getExtraData().anonymous.push_back( num_words ); // number of words to be written hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord1(0) ); // L1Topo simulation words hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord1(1) ); hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord2(0) ); hltResult->getExtraData().anonymous.push_back( simTopoCTP->cableWord2(1) ); + if ( num_words == 8 ) { + hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord1(0) );// L1Topo simulated overflow words + hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord1(1) ); + hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord2(0) ); + hltResult->getExtraData().anonymous.push_back( simTopoOverflowCTP->cableWord2(1) ); + } + return StatusCode::SUCCESS; } diff --git a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h index 30205d44f82b29e3032f346c180e450cdc340fce..47ac1b9e90dc1352bd6a76d64a74623e35795237 100644 --- a/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h +++ b/HLT/Trigger/TrigMonitoring/TrigOnlineMonitor/src/TrigL1TopoWriteValData.h @@ -29,6 +29,7 @@ class TrigL1TopoWriteValData:public AthAlgorithm { private: StatusCode doWriteValData(); StringProperty m_simTopoCTPLocation; + StringProperty m_simTopoOverflowCTPLocation; StringProperty m_HltResultName; };