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>();
195 trigDec->m_configMasterKey = hltMenu->smk();
197 if (l1Result) trigDec->m_l1_result = *l1Result;
198 if (l2Result) trigDec->m_l2_result = *l2Result;
199 if (efResult) trigDec->m_ef_result = *efResult;
201 trigDec->m_ef_result = *hltResult;
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;
250 ATH_MSG_WARNING(
"Configured to retrieve L1 from LVL1CTP::Lvl1Result but this was not found");
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.") ;
280 TrigLevel level,
const EventContext& ctx)
const
284 if (level !=
L2 && level !=
EF && level !=
HLT) {
285 ATH_MSG_ERROR (
"Level must be either L2 or EF or HLT in getHLTResult!");
296 ATH_MSG_ERROR (
"Error retrieving HLTResult from StoreGate" ) ;
303 ATH_MSG_DEBUG (
"Got HLTResult from StoreGate with key " << key ) ;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
An algorithm that can be simultaneously executed in multiple threads.
HLT::HLTResult is sumarising result of trigger decision evaluation (online/offline) It contains basic...
bool isAccepted() const
gets HLT decision
bool isAccepted() const
final LVL1 decision && isConfigured
Class holding the LVL1 RoIB result build by the RoIBuilder.
const CTPResult & cTPResult() const
Gets the CTP part of the L1 RDO.
Property holding a SG store/key/clid from which a ReadHandle is made.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
bgPattern_t bgPattern(size_t bcid) const
Return word with bit-pattern of fired bunchgroups for given bcid.
virtual StatusCode finalize() override
std Gaudi finalize method -> print out statistics
SG::ReadHandleKey< ROIB::RoIBResult > m_l1roibResultKey
std::atomic< unsigned int > m_l2_error
SG::ReadHandleKey< HLT::HLTResult > m_l2ResultKey
std::atomic< unsigned int > m_ef_notFound
std::atomic< unsigned int > m_nEvents
statistics: number of processed events
std::atomic< unsigned int > m_td_skip
statistics: error numbers
std::atomic< unsigned int > m_l2_passed
Gaudi::Property< bool > m_doHLT
std::atomic< unsigned int > m_ef_error
virtual StatusCode initialize() override
std Gaudi initialize method -> read-in trigger configuration
SG::ReadHandleKey< TrigConf::HLTMenu > m_HLTMenuKey
std::atomic< unsigned int > m_hlt_error
Gaudi::Property< bool > m_doEF
std::atomic< unsigned int > m_hlt_notReq
statistics: number of events where something was not requested
SG::ReadHandleKey< HLT::HLTResult > m_hltResultKey
std::atomic< unsigned int > m_l1_notReq
std::atomic< unsigned int > m_l1_error
virtual StatusCode execute(const EventContext &ctx) const override
std Gaudi execute method -> fill event-wise TrigDecision object, save in SG
TrigDecisionMaker(const std::string &name, ISvcLocator *pSvcLocator)
std Gaudi Algorithm constructor
ResultStatus getHLTResult(const HLT::HLTResult *&result, TrigLevel level, const EventContext &ctx) const
retrieve HLT results (called in execute)
std::atomic< unsigned int > m_hlt_notFound
statistics: number of events where L1, HLT results were not found
std::atomic< unsigned int > m_hlt_passed
statistics: number of events that passed the given trigger lvl
std::atomic< unsigned int > m_l2_notReq
std::atomic< unsigned int > m_ef_notReq
SG::ReadHandleKey< HLT::HLTResult > m_efResultKey
SG::ReadHandleKey< LVL1CTP::Lvl1Result > m_l1ResultKey
Gaudi::Property< bool > m_doL2
SG::WriteHandleKey< TrigDecision > m_trigDecisionKey
std::atomic< unsigned int > m_l1_passed
Gaudi::Property< bool > m_doL1
ToolHandle< HLT::ILvl1ResultAccessTool > m_lvl1Tool
tool to ease the access to the L1 results (RoIs, items, etc)
virtual ~TrigDecisionMaker()
std deconstructor
ResultStatus getL1Result(const LVL1CTP::Lvl1Result *&result, const EventContext &ctx) const
retrieve LVL1 result (called in execute)
SG::ReadCondHandleKey< TrigConf::L1BunchGroupSet > m_bgKey
std::atomic< unsigned int > m_l1_notFound
std::atomic< unsigned int > m_td_error
std::atomic< unsigned int > m_l2_notFound
std::atomic< unsigned int > m_ef_passed
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...