diff --git a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx index f400a2ba6f252fd78ccb2c79c82475e987fb1672..cc847ae24ba86fd734b2318f125e06bb1151c0df 100644 --- a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx +++ b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.cxx @@ -53,7 +53,7 @@ namespace { // Standard constructor // ============================================================================= TrigByteStreamCnvSvc::TrigByteStreamCnvSvc(const std::string& name, ISvcLocator* svcLoc) -: ByteStreamCnvSvcBase(name, svcLoc), +: ByteStreamCnvSvc(name, svcLoc), m_evtStore("StoreGateSvc", name), m_robDataProviderSvc("ROBDataProviderSvc", name) {} @@ -67,6 +67,7 @@ TrigByteStreamCnvSvc::~TrigByteStreamCnvSvc() {} // ============================================================================= StatusCode TrigByteStreamCnvSvc::initialize() { ATH_MSG_VERBOSE("start of " << __FUNCTION__); + ATH_CHECK(ByteStreamCnvSvc::initialize()); ATH_CHECK(m_evtStore.retrieve()); ATH_CHECK(m_robDataProviderSvc.retrieve()); ATH_MSG_VERBOSE("end of " << __FUNCTION__); @@ -83,6 +84,7 @@ StatusCode TrigByteStreamCnvSvc::finalize() { if (m_evtStore.release().isFailure()) ATH_MSG_WARNING("Failed to release service " << m_evtStore.typeAndName()); ATH_MSG_VERBOSE("end of " << __FUNCTION__); + ATH_CHECK(ByteStreamCnvSvc::finalize()); return StatusCode::SUCCESS; } @@ -134,7 +136,7 @@ StatusCode TrigByteStreamCnvSvc::connectOutput(const std::string& outputFile, co StatusCode TrigByteStreamCnvSvc::commitOutput(const std::string& /*outputFile*/, bool /*do_commit*/) { ATH_MSG_VERBOSE("start of " << __FUNCTION__); - printRawEvent(); + if (msgLvl(MSG::DEBUG)) printRawEvent(); // Serialise the output FullEventFragment std::unique_ptr<uint32_t[]> rawEventPtr; diff --git a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.h b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.h index 4190112031485c5b66b59e4859e02c8069e137d2..9ad63b849a947cb9cad4ae620f3e95ea4a6c9011 100644 --- a/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.h +++ b/HLT/Event/TrigByteStreamCnvSvc/src/TrigByteStreamCnvSvc.h @@ -5,7 +5,7 @@ #ifndef TRIGBYTESTREAMCNVSVC_H #define TRIGBYTESTREAMCNVSVC_H -#include "ByteStreamCnvSvcBase/ByteStreamCnvSvcBase.h" +#include "ByteStreamCnvSvc/ByteStreamCnvSvc.h" // Forward declarations class StoreGateSvc; @@ -13,8 +13,14 @@ class IROBDataProviderSvc; /** @class TrigByteStreamCnvSvc * @brief A ByteStreamCnvSvc implementation for online use + * + * It overrides the connectOutput and commitOutput methods of the base class. In this implementation, they create + * the specific online HLT output and send it out directly to the TDAQ infrastructure without using an output service. + * + * It needs to inherit from ByteStreamCnvSvc rather than ByteStreamCnvSvcBase, because some elements of the athena + * framework (particularly converters) rely on the properties or functionality of the offline ByteStreamCnvSvc. **/ -class TrigByteStreamCnvSvc : public ByteStreamCnvSvcBase { +class TrigByteStreamCnvSvc : public ByteStreamCnvSvc { public: /// Standard constructor TrigByteStreamCnvSvc(const std::string& name, ISvcLocator* svcLoc); diff --git a/HLT/Trigger/TrigControl/TrigServices/python/TriggerUnixStandardSetup.py b/HLT/Trigger/TrigControl/TrigServices/python/TriggerUnixStandardSetup.py index b5a2bcd77b744533b9e3b36fc24865bc7a27dbf3..6b48f061cccec9f6f283ce12dee5049306be2e6b 100644 --- a/HLT/Trigger/TrigControl/TrigServices/python/TriggerUnixStandardSetup.py +++ b/HLT/Trigger/TrigControl/TrigServices/python/TriggerUnixStandardSetup.py @@ -84,28 +84,20 @@ def setupCommonServices(): theApp.CreateSvc += [ svcMgr.DetDescrCnvSvc.getFullName() ] svcMgr.EventPersistencySvc.CnvServices += [ "DetDescrCnvSvc" ] - # ByteStreamCnvSvc configuration - from ByteStreamCnvSvc.ByteStreamCnvSvcConf import ByteStreamCnvSvc - svcMgr += ByteStreamCnvSvc("ByteStreamCnvSvc") + # Online services for ByteStream input/output + from TrigByteStreamCnvSvc.TrigByteStreamCnvSvcConf import TrigByteStreamCnvSvc, TrigByteStreamInputSvc, TrigEventSelectorByteStream + svcMgr += TrigByteStreamCnvSvc("ByteStreamCnvSvc") # this name is hard-coded in some converters svcMgr.EventPersistencySvc.CnvServices += [ "ByteStreamCnvSvc" ] - - from TrigByteStreamCnvSvc.TrigByteStreamCnvSvcConf import TrigByteStreamInputSvc svcMgr += TrigByteStreamInputSvc("ByteStreamInputSvc") - - from TrigByteStreamCnvSvc.TrigByteStreamCnvSvcConf import TrigEventSelectorByteStream - svcMgr += TrigEventSelectorByteStream("EventSelector", - ByteStreamInputSvc = svcMgr.ByteStreamInputSvc) + svcMgr += TrigEventSelectorByteStream("EventSelector", ByteStreamInputSvc = svcMgr.ByteStreamInputSvc) theApp.EvtSel = "EventSelector" - from TrigByteStreamCnvSvc.TrigByteStreamCnvSvcConf import TrigByteStreamCnvSvc - svcMgr += TrigByteStreamCnvSvc("TrigByteStreamCnvSvc") - # make the HltEventLoopMgr service available svcMgr.HltEventLoopMgr = theApp.service( "HltEventLoopMgr" ) # already instantiated svcMgr.HltEventLoopMgr.WhiteboardSvc = "EventDataSvc" svcMgr.HltEventLoopMgr.SchedulerSvc = AlgScheduler.getScheduler().getName() svcMgr.HltEventLoopMgr.EvtSel = svcMgr.EventSelector - svcMgr.HltEventLoopMgr.OutputCnvSvc = svcMgr.TrigByteStreamCnvSvc + svcMgr.HltEventLoopMgr.OutputCnvSvc = svcMgr.ByteStreamCnvSvc from TrigOutputHandling.TrigOutputHandlingConfig import HLTResultMTMakerCfg svcMgr.HltEventLoopMgr.ResultMaker = HLTResultMTMakerCfg() diff --git a/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx b/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx index 151519a2af06a2d9f3493b60185dec22aafed59a..e4b4f0f51c55f2f13512386cbd8a0032604142ac 100644 --- a/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx +++ b/Trigger/TrigSteer/TrigHLTResultByteStream/src/HLTResultMTByteStreamCnv.cxx @@ -27,7 +27,7 @@ HLT::HLTResultMTByteStreamCnv::HLTResultMTByteStreamCnv(ISvcLocator* svcLoc) : Converter(ByteStream_StorageType, classID(), svcLoc), AthMessaging(msgSvc(), "HLTResultMTByteStreamCnv"), - m_ByteStreamEventAccess("TrigByteStreamCnvSvc", "HLTResultMTByteStreamCnv") { + m_ByteStreamEventAccess("ByteStreamCnvSvc", "HLTResultMTByteStreamCnv") { m_fullEventAssembler.idMap().setDetId(eformat::TDAQ_HLT); } diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py index a20e9cc7cbbb6b10b213bb82a5cb78f6afe8fce4..833f7afac3a9b567121c85fc9e3740d8009362e9 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py @@ -398,9 +398,30 @@ l = [ c.split("#")[0].split("_")[0] + "#" + deserialiser.Prefix + c.split("#")[1 + + + +if not hasattr( svcMgr, "ByteStreamAddressProviderSvc" ): + from ByteStreamCnvSvcBase.ByteStreamCnvSvcBaseConf import ByteStreamAddressProviderSvc + svcMgr += ByteStreamAddressProviderSvc() +svcMgr.ByteStreamAddressProviderSvc.TypeNames = ["ROIB::RoIBResult/RoIBResult", ] + +from ByteStreamCnvSvc import WriteByteStream +streamBS = WriteByteStream.getStream("EventStorage","StreamBSFileOutput") +ServiceMgr.ByteStreamCnvSvc.OutputLevel = VERBOSE +ServiceMgr.ByteStreamCnvSvc.IsSimulation = True +ServiceMgr.ByteStreamCnvSvc.InitCnvs += ["HLT::HLTResultMT"] +streamBS.ItemList += ["HLT::HLTResultMT#HLTResultMT"] + +svcMgr.EventPersistencySvc.CnvServices += [ "ByteStreamCnvSvc" ] +svcMgr.ByteStreamEventStorageOutputSvc.OutputLevel = VERBOSE + + + + ################################################################################ # assemble top list of algorithms -hltTop = seqOR( "hltTop", [ steps, summary, summMaker, mon, hltResultMakerAlg, deserialiser, StreamESD ] ) +hltTop = seqOR( "hltTop", [ steps, summary, summMaker, mon, hltResultMakerAlg, deserialiser, StreamESD, streamBS ] ) @@ -445,5 +466,8 @@ dumpSequence(topSequence) print("Dump of serviceMgr") dumpSequence(ServiceMgr) + + + #print theElectronFex #print ViewVerify diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh index 44ab78d69adf369e7cc597e99885443cb947c9e6..66a8ac9d77caff25d2fe6eb294d0904b58a5c6c3 100755 --- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh +++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_run_data.sh @@ -2,6 +2,9 @@ # art-type: build # art-include: master/Athena -athena --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/egamma.withViews.py && +# clear BS from previous runs +rm -rf data_test.*.data + +athena --dump-configuration=cfg.txt --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/egamma.withViews.py #&& checkxAOD.py myESD.pool.root && athena TrigUpgradeTest/checkESD.py