|
ATLAS Offline Software
|
Go to the documentation of this file.
38 m_l1_error(0), m_l2_error(0), m_ef_error(0),
40 m_td_error(0), m_td_skip(0),
41 m_l1_notFound(0), m_l2_notFound(0), m_ef_notFound(0),
43 m_l1_notReq(0), m_l2_notReq(0), m_ef_notReq(0),
45 m_l1_passed(0), m_l2_passed(0), m_ef_passed(0),
100 return StatusCode::SUCCESS;
108 ATH_MSG_DEBUG (
"=============================================" ) ;
134 ATH_MSG_DEBUG (
"=============================================" ) ;
136 return StatusCode::SUCCESS;
185 if (!l1Result && !l2Result && !efResult && !hltResult) {
186 ATH_MSG_ERROR (
"The whole trigger seems off for this event (no L1/L2/EF/HLT results) - no TrigDecision produced");
188 return StatusCode::SUCCESS;
191 std::unique_ptr<TrigDecision> trigDec = std::make_unique<TrigDecision>();
206 <<
"; Event " << ctx.eventID().event_number()
207 <<
"; BC-ID " << ctx.eventID().bunch_crossing_id() ) ;
213 trigDec->
m_bgCode =
static_cast<char>(l1bgs->
bgPattern(ctx.eventID().bunch_crossing_id()));
220 if (writeHandle.record(std::move(trigDec)).isFailure()) {
221 ATH_MSG_ERROR (
"Failed to record TrigDecision to StoreGate with key "
225 return StatusCode::FAILURE;
228 ATH_MSG_DEBUG (
"Recorded TrigDecision to StoreGate with key = "
232 return StatusCode::SUCCESS;
243 if (l1RH.isValid()) {
250 ATH_MSG_WARNING(
"Configured to retrieve L1 from LVL1CTP::Lvl1Result but this was not found");
256 if (!l1roibRH.isValid()) {
266 std::vector< std::unique_ptr<LVL1CTP::Lvl1Item> > itemConfig =
m_lvl1Tool->makeLvl1ItemConfig(ctx);
268 if ((roIBResult->
cTPResult()).isComplete()) {
270 ATH_MSG_DEBUG (
"Build LVL1CTP::Lvl1Result from valid CTPResult.") ;
272 ATH_MSG_DEBUG (
"No LVL1CTP::Lvl1Result build since no valid CTPResult is available.") ;
285 ATH_MSG_ERROR (
"Level must be either L2 or EF or HLT in getHLTResult!");
295 if (!hltRH.isValid()) {
296 ATH_MSG_ERROR (
"Error retrieving HLTResult from StoreGate" ) ;
Gaudi::Property< bool > m_doL1
std::atomic< unsigned int > m_td_error
ResultStatus getHLTResult(const HLT::HLTResult *&result, TrigLevel level, const EventContext &ctx) const
retrieve HLT results (called in execute)
std::atomic< unsigned int > m_ef_notReq
Class holding the LVL1 RoIB result build by the RoIBuilder.
std::atomic< unsigned int > m_l1_passed
virtual StatusCode execute(const EventContext &ctx) const override
std Gaudi execute method -> fill event-wise TrigDecision object, save in SG
std::atomic< unsigned int > m_hlt_notReq
statistics: number of events where something was not requested
SG::ReadHandleKey< HLT::HLTResult > m_efResultKey
SG::ReadHandleKey< LVL1CTP::Lvl1Result > m_l1ResultKey
std::atomic< unsigned int > m_l1_notFound
std::atomic< unsigned int > m_l1_error
std::atomic< unsigned int > m_td_skip
statistics: error numbers
SG::ReadHandleKey< ROIB::RoIBResult > m_l1roibResultKey
bool empty() const
Test if the key is blank.
std::atomic< unsigned int > m_ef_notFound
An algorithm that can be simultaneously executed in multiple threads.
SG::WriteHandleKey< TrigDecision > m_trigDecisionKey
bool isAccepted() const
final LVL1 decision && isConfigured
std::atomic< unsigned int > m_l2_notFound
std::atomic< unsigned int > m_l2_error
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
virtual StatusCode initialize() override
std Gaudi initialize method -> read-in trigger configuration
::StatusCode StatusCode
StatusCode definition for legacy code.
std::atomic< unsigned int > m_l2_notReq
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
HLT::HLTResult is sumarising result of trigger decision evaluation (online/offline) It contains basic...
bool isAccepted() const
gets HLT decision
bgPattern_t bgPattern(size_t bcid) const
Return word with bit-pattern of fired bunchgroups for given bcid.
std::atomic< unsigned int > m_l2_passed
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::ReadCondHandleKey< TrigConf::L1BunchGroupSet > m_bgKey
SG::ReadHandleKey< TrigConf::HLTMenu > m_HLTMenuKey
const CTPResult & cTPResult() const
Gets the CTP part of the L1 RDO.
std::atomic< unsigned int > m_nEvents
statistics: number of processed events
SG::ReadHandleKey< HLT::HLTResult > m_hltResultKey
virtual StatusCode finalize() override
std Gaudi finalize method -> print out statistics
StatusCode initialize(bool used=true)
Gaudi::Property< bool > m_doL2
Gaudi::Property< bool > m_doEF
uint32_t m_configMasterKey
std::atomic< unsigned int > m_hlt_error
std::atomic< unsigned int > m_hlt_passed
statistics: number of events that passed the given trigger lvl
Gaudi::Property< bool > m_doHLT
#define ATH_MSG_WARNING(x)
LVL1CTP::Lvl1Result m_l1_result
Lvl1Result.
virtual ~TrigDecisionMaker()
std deconstructor
ResultStatus getL1Result(const LVL1CTP::Lvl1Result *&result, const EventContext &ctx) const
retrieve LVL1 result (called in execute)
std::atomic< unsigned int > m_ef_error
DataLink< HLT::HLTResult > m_ef_result
HLTResult of trigger level EF.
DataLink< HLT::HLTResult > m_l2_result
HLTResult of trigger level 2.
std::atomic< unsigned int > m_hlt_notFound
statistics: number of events where L1, HLT results were not found
SG::ReadHandleKey< HLT::HLTResult > m_l2ResultKey
std::atomic< unsigned int > m_ef_passed
ToolHandle< HLT::ILvl1ResultAccessTool > m_lvl1Tool
tool to ease the access to the L1 results (RoIs, items, etc)
TrigDecisionMaker(const std::string &name, ISvcLocator *pSvcLocator)
std Gaudi Algorithm constructor
std::atomic< unsigned int > m_l1_notReq