25 m_msg =
"Condition tree root node is not AcceptAll";
29 for (
const auto& il :
m_tree.leaves()){
30 const auto& condition = m_conditions[il];
32 if (!condition->isFromChainPart()) {
34 m_msg =
"Tree leaf condition but not from ChainPart";
36 minNjets += condition->capacity() * condition->multiplicity();
40 m_minNjets = std::max(1, minNjets);
42 if (filterInds.size() != m_conditions.size()) {
45 ss <<
"ConditionFilterInds and Conditions sequence sizes differ: ";
46 ss << filterInds.size() <<
" " << m_conditions.size();
56 const std::unique_ptr<ITrigJetHypoInfoCollector>& collector,
71 auto njets = jv.size();
75 collector->collect(
"FastReductionMatcher",
76 "have " + std::to_string(njets) +
91 return std::make_optional<bool>(reducer.
pass());
97 ss <<
"FastReductionMatcher:\n"
98 <<
" treeVector: " <<
m_tree <<
'\n'
99 <<
" min required jets " <<
m_minNjets <<
"\n\n"
100 <<
"FastReductionMatcher Conditions ["
103 std::size_t
count{0u};
105 auto sc = std::to_string(
count++);
106 sc.insert(
sc.begin(), 3-
sc.length(),
' ');
107 ss <<
sc <<
": "<< c->toString() +
'\n';
111 ss <<
"FastReductionMatcher ConditionFilter indices ["
117 auto sc = std::to_string(
count++);
118 sc.insert(
sc.begin(), 3-
sc.length(),
' ');
119 ss <<
sc <<
": "<< c <<
'\n';
123 ss <<
"FastReductionMatcher ConditionFilters ["
129 auto sc = std::to_string(
count++);
130 sc.insert(
sc.begin(), 3-
sc.length(),
' ');
131 ss <<
sc <<
": "<< c->toString() +
'\n';
std::vector< int > ConditionFilterInds
std::vector< std::unique_ptr< IHypoJetVectorFilter > > ConditionFilters
std::vector< pHypoJet > HypoJetVector
std::vector< ConditionPtr > ConditionPtrs
bool pass() const
determine whether a set of jets satisfies all hypo conditions.
std::string toString() const override
ConditionPtrs m_conditions
FastReductionMatcher(ConditionPtrs &&, ConditionFilters &&, const ConditionFilterInds &, const Tree &)
virtual std::optional< bool > match(const HypoJetVector &jv, xAODJetCollector &, const std::unique_ptr< ITrigJetHypoInfoCollector > &collector, bool) const override
determine whether a set of jets satisfies all hypo conditions.
Tree m_tree
tree structure for Conditions objects.
virtual std::string msg() const override
ConditionFilterInds m_conditionFilterInds
virtual bool valid() const override
ConditionFilters m_conditionFilters
long unsigned int m_minNjets
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string