23 return StatusCode::SUCCESS;
27 std::vector<std::vector<const xAOD::IParticle *>> &combinations,
28 const std::string &chain,
32 using VecLinkInfo_t = std::vector<IPartLinkInfo_t>;
43 <<
" is empty! This means that no matching chains were found!");
44 return StatusCode::FAILURE;
60 features.begin(), features.end(),
65 if (m_warnedChains.insert(name).second)
75 m_tdt->ExperimentalAndExpertMethods().getChainConfigurationDetails(name),
78 for (
const VecLinkInfo_t &combo : trigCombinations)
80 std::vector<const xAOD::IParticle *> comboOut;
81 comboOut.reserve(combo.size());
82 for (
const IPartLinkInfo_t &info : combo)
83 comboOut.push_back(*info.link);
84 combinations.push_back(std::move(comboOut));
87 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::vector< std::string > getListOfTriggers() const
virtual StatusCode initialize() override
Initialise the tool.
ToolHandle< Trig::TrigDecisionTool > m_tdt
The TrigDecisionTool that will be used to get the navigation.
virtual ~R3IParticleRetrievalTool() override
Destructor.
R3IParticleRetrievalTool(const std::string &name)
Standard constructor.
std::mutex m_warnedChainsMutex
mutex to protect that set
virtual StatusCode retrieveParticles(std::vector< std::vector< const xAOD::IParticle * > > &combinations, const std::string &chain, bool rerun=false) const override
Retrieve the particles that caused this trigger to fire.
Combinations buildCombinations(const std::string &chainName, const std::vector< LinkInfo< xAOD::IParticleContainer > > &features, const std::vector< std::size_t > &legMultiplicities, const std::function< bool(const std::vector< LinkInfo< xAOD::IParticleContainer > > &)> &filter)
Produce the combinations for a set of features.
@ UniqueObjects
Do not allow any repeated objects.
static const unsigned int allowResurrectedDecision
static const unsigned int Physics
The common trigger namespace for trigger analysis tools.
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...