|
ATLAS Offline Software
|
TrigComboHypoTool is a ComboHypoTool that calculates topological quantities between two particles and apply cuts on it (upper and lower cut) accepting the event if the required condition is satisfied.
More...
#include <TrigComboHypoTool.h>
|
virtual bool | executeAlg (const Combination &combination) const override |
| Top-level function to make chain-level decision This applies the AND of all configured var selections. More...
|
|
bool | executeAlgStep (const Combination &combination, const VarInfo &, std::vector< float > &values) const |
| Implementation of selection on individual variables. More...
|
|
float | compute (const std::pair< KineInfo, KineInfo > &kinepair, ComboHypoVars var) const |
| Computation of the variables from the specified kinematics. More...
|
|
bool | fillLegDecisions_sameLeg (std::pair< Combo::LegDecision, Combo::LegDecision > &legpair, const Combination &combination, uint32_t leg) const |
| Helpers to extract kinematics from the specified legs of the chain Specialised for two cases – exactly two objects from the same leg or exactly one object each from two legs. More...
|
|
bool | fillLegDecisions_diffLeg (std::pair< Combo::LegDecision, Combo::LegDecision > &legpair, const Combination &combination, uint32_t legA, uint32_t legB) const |
|
bool | fillPairKinematics (std::pair< KineInfo, KineInfo > &kinepair, const Combination &combination, const VarInfo &varInfo) const |
|
bool | fillKineInfo (KineInfo &kinematics, Combo::LegDecision decision, bool isMET) const |
|
|
Gaudi::Property< std::vector< std::string > > | m_varTag_vec {this, "Variables" , {""}, "Variables to cut on"} |
| Gaudi configuration hooks. More...
|
|
Gaudi::Property< std::vector< bool > > | m_useMin_vec {this, "UseMinVec" , {false}, "Array with the apply_min_cut setting"} |
|
Gaudi::Property< std::vector< bool > > | m_useMax_vec {this, "UseMaxVec" , {false}, "Array with the apply_max_cut setting"} |
|
Gaudi::Property< std::vector< uint32_t > > | m_legA_vec {this, "LegAVec" , {0}, "Array with the first Leg ID"} |
|
Gaudi::Property< std::vector< uint32_t > > | m_legB_vec {this, "LegBVec" , {0}, "Array with the second Leg ID"} |
|
Gaudi::Property< std::vector< bool > > | m_isLegA_MET_vec {this, "IsLegA_METVec", {false}, "Array with the first Leg MET identifier"} |
|
Gaudi::Property< std::vector< bool > > | m_isLegB_MET_vec {this, "IsLegB_METVec", {false}, "Array with the second Leg MET identifier"} |
|
Gaudi::Property< bool > | m_skipLegCheck {this, "SkipLegCheck" , {false}, "Ignore leg IDs for chains with only one leg"} |
|
Gaudi::Property< std::vector< float > > | m_varMin_vec {this, "LowerCutVec", {FLOATDEFAULT}, "Array with the lower cut for legs pair"} |
|
Gaudi::Property< std::vector< float > > | m_varMax_vec {this, "UpperCutVec", {FLOATDEFAULT}, "Array with the upper cut for legs pair"} |
|
ToolHandleArray< GenericMonitoringTool > | m_monTool_vec {this, "MonTools", {}, "Monitoring tools" } |
|
std::vector< VarInfo > | m_varInfo_vec |
| Internal variables for more efficient config lookup. More...
|
|
HLT::Identifier | m_decisionId |
| The DecisionID of the chain, obtained from the Tool's name. More...
|
|
std::vector< HLT::Identifier > | m_legDecisionIds |
| The DecisionIDs of the individual legs, derived from both m_decisionId and m_legMultiplicities. More...
|
|
std::vector< int > | m_legMultiplicities |
| The number of legs, and the required multiplicity on each leg. More...
|
|
|
static constexpr float | FLOATDEFAULT = std::numeric_limits<float>::lowest() |
|
TrigComboHypoTool is a ComboHypoTool that calculates topological quantities between two particles and apply cuts on it (upper and lower cut) accepting the event if the required condition is satisfied.
Definition at line 33 of file TrigComboHypoTool.h.
◆ Combination
◆ KineInfo
Typedef for convenience, will contain eta/phi/pt info.
Definition at line 80 of file TrigComboHypoTool.h.
◆ ComboHypoVars
◆ TrigComboHypoTool()
TrigComboHypoTool::TrigComboHypoTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~TrigComboHypoTool()
virtual TrigComboHypoTool::~TrigComboHypoTool |
( |
| ) |
|
|
inlinevirtual |
◆ compute()
Computation of the variables from the specified kinematics.
Definition at line 300 of file TrigComboHypoTool.cxx.
301 const auto& [legA_kine,legB_kine] = kinepair;
302 const auto& [
eta1,phi1,pt1] = legA_kine;
303 const auto& [
eta2,phi2,pt2] = legB_kine;
310 case ComboHypoVars::DR:
315 case ComboHypoVars::DPHI:
320 case ComboHypoVars::INVM:
322 ROOT::Math::PtEtaPhiMVector
p1(pt1,
eta1,phi1,0.),
p2(pt2,
eta2,phi2,0.);
332 case ComboHypoVars::DETA:
339 ATH_MSG_ERROR(
"Undefined variable requested -- should never happen!");
◆ decide()
retrieves the decisions associated to this decId, make their combinations and apply the algorithm
- Parameters
-
[in] | LegDecisionsMap | that lists all the passing decisions, to be updated by the tool depending on the outcome of executeAlg |
[in] | Event | Context, currently unused |
Reimplemented in DisplacedJetRankComboHypoTool.
Definition at line 48 of file ComboHypoToolBase.cxx.
50 ATH_MSG_ERROR(
"ComboHypoTool for " <<
m_decisionId <<
" has not been properly configured. setLegMultiplicity should be called by the parent alg in initalize");
51 return StatusCode::FAILURE;
55 if (passingLegs.size() == 0) {
56 return StatusCode::SUCCESS;
59 ATH_MSG_DEBUG(
"Looking for legs from " <<
decisionId() <<
" in the map. Map contains features for " << passingLegs.size() <<
" legs, which may be data for many chains.");
62 std::vector<std::vector<Combo::LegDecision>> legDecisions;
67 if (legDecisions.at(legIndex).size() <
static_cast<size_t>(
m_legMultiplicities.at(legIndex))) {
69 ATH_MSG_DEBUG(
"This ComboHypoTool cannot run in this event, this chain **REJECTS** this event.");
72 return StatusCode::SUCCESS;
80 const size_t out_of = legDecisions.at(legIndex).size();
81 nucg.
add({out_of, choose_any});
82 ATH_MSG_DEBUG(
"For leg " << legIndex <<
" we will be choosing any " << choose_any <<
" Decision Objects out of " << out_of);
85 std::vector<std::vector<Combo::LegDecision>> passingCombinations;
87 size_t warnings = 0, iterations = 0;
90 const std::vector<size_t> combination = nucg();
92 std::vector<Combo::LegDecision> combinationToCheck;
94 size_t location_in_combination = 0;
99 const size_t objectIndex = combination.at(location_in_combination++);
100 combinationToCheck.push_back( legDecisions.at(legIndex).at(objectIndex) );
108 ATH_MSG_DEBUG(
"Combination " << (iterations - 1) <<
" decided to be passing");
109 passingCombinations.push_back(combinationToCheck);
120 return StatusCode::FAILURE;
124 ATH_MSG_WARNING(
"Have so far processed " << iterations <<
" combinations for " <<
m_decisionId <<
" in this event, " << passingCombinations.size() <<
" passing.");
127 ATH_MSG_WARNING(
"Too many combinations! Breaking the loop at this point.");
137 ATH_MSG_DEBUG(
"Passing " << passingCombinations.size() <<
" combinations out of " << iterations <<
", "
138 <<
m_decisionId << (passingCombinations.size() ?
" **ACCEPTS**" :
" **REJECTS**") <<
" this event based on OR logic.");
141 ATH_MSG_DEBUG(
"Note: stopped after the first successful combination due to the EnableOverride flag.");
146 const bool passAll = (passingCombinations.size() == iterations);
148 ATH_MSG_DEBUG(
"Passing " << passingCombinations.size() <<
" combinations out of " << iterations <<
", "
149 <<
m_decisionId << (passAll ?
" **ACCEPTS**" :
" **REJECTS**") <<
" this event based on AND logic.");
152 ATH_MSG_DEBUG(
"Note: stopped after the first failed combination due to the EnableOverride flag.");
156 passingCombinations.clear();
161 if (not passingCombinations.empty()) {
168 return StatusCode::SUCCESS;
◆ decideOnSingleObject()
Alternate method called by BPhysics ComboHypoAlgs instead of the base method decide(...).
This function should be considered a specialist use-case only. It must be over-ridden to do anything useful.
Reimplemented in TrigMultiTrkComboHypoTool, and TrigBmumuxComboHypoTool.
Definition at line 284 of file ComboHypoToolBase.cxx.
285 ATH_MSG_ERROR(
"Do not use ComboHypoToolBase on its own, inherit this class and override decideOnSingleObject.");
286 ATH_MSG_ERROR(
"NOTE: Only if you are also supplying your own decide(...) implimentation, or similar.");
287 ATH_MSG_ERROR(
"NOTE: Most uses cases should only need to override executeAlg(...).");
288 return StatusCode::FAILURE;
◆ decisionId()
◆ eraseFromLegDecisionsMap()
For when the tool rejects all combinations.
Remove all Decision Objects from all the legs of this HypoTool's chain.
Definition at line 253 of file ComboHypoToolBase.cxx.
254 for (
auto&
it : passingLegs) {
257 const size_t nDecisionObjects =
it.second.size();
◆ executeAlg() [1/2]
Top-level function to make chain-level decision This applies the AND of all configured var selections.
Definition at line 127 of file TrigComboHypoTool.cxx.
129 bool lastDecision(
true);
130 std::vector<float>
values;
143 ATH_MSG_DEBUG( varInfo->varTag <<
" = " <<
value <<
" is in range " << varInfo->rangeStr() <<
".");
◆ executeAlg() [2/2]
|
protectedvirtualinherited |
◆ executeAlgStep()
Implementation of selection on individual variables.
Definition at line 151 of file TrigComboHypoTool.cxx.
154 std::pair<KineInfo,KineInfo> kinepair;
156 ATH_MSG_ERROR(
"Failed to extract kinematics of feature pair!");
161 float eta_check, phi_check, pt_check;
162 std::tie(eta_check,phi_check,pt_check) = kinepair.first;
163 msg() <<
MSG::DEBUG <<
"Test filled legA kinematics: pt " << pt_check*
invGeV <<
", eta " << eta_check <<
", phi " << phi_check <<
endmsg;
165 std::tie(eta_check,phi_check,pt_check) = kinepair.second;
166 msg() <<
MSG::DEBUG <<
"Test filled legB kinematics: pt " << pt_check*
invGeV <<
", eta " << eta_check <<
", phi " << phi_check <<
endmsg;
176 bool pass = varInfo.test(
value);
180 ATH_MSG_DEBUG(
"Combination failed var cut: " << varInfo.varTag <<
" = " <<
value <<
" not in range " << varInfo.rangeStr());
◆ fillKineInfo()
Definition at line 272 of file TrigComboHypoTool.cxx.
275 auto pLink = TrigCompositeUtils::findLink<xAOD::TrigMissingETContainer>( *decision.second,
featureString() ).link;
276 if (!pLink.isValid()){
280 ROOT::Math::XYVectorF metv((*pLink)->ex(),(*pLink)->ey());
285 auto pLink = TrigCompositeUtils::findLink<xAOD::IParticleContainer>( *decision.second,
featureString() ).link;
286 if (!pLink.isValid()){
290 eta = (*pLink)->p4().Eta();
291 phi = (*pLink)->p4().Phi();
292 pt = (*pLink)->p4().Pt();
295 kinematics = std::make_tuple(
eta,
phi,
pt);
◆ fillLegDecisions_diffLeg()
Definition at line 219 of file TrigComboHypoTool.cxx.
226 std::copy_if(combination.begin(),combination.end(),std::back_inserter(legA_features),isLegA);
227 if(legA_features.size()!=1) {
228 ATH_MSG_ERROR(legA_features.size() <<
" Decision Objects supplied on leg " << legA
229 <<
", must be 1 for different-leg topo selection!");
233 std::copy_if(combination.begin(),combination.end(),std::back_inserter(legB_features),isLegB);
234 if (legB_features.size()!=1) {
235 ATH_MSG_ERROR(legB_features.size() <<
" Decision Objects supplied on leg " << legB
236 <<
", must be 1 for different-leg topo selection!");
240 legpair.first = legA_features[0];
241 legpair.second = legB_features[0];
◆ fillLegDecisions_sameLeg()
Helpers to extract kinematics from the specified legs of the chain Specialised for two cases – exactly two objects from the same leg or exactly one object each from two legs.
Definition at line 194 of file TrigComboHypoTool.cxx.
198 std::copy(combination.begin(),combination.end(),std::back_inserter(leg_features));
203 std::copy_if(combination.begin(),combination.end(),std::back_inserter(leg_features),isMyLeg);
206 if (leg_features.size()==2) {
207 legpair.first = leg_features[0];
208 legpair.second = leg_features[1];
210 ATH_MSG_ERROR(leg_features.size() <<
" Decision Objects supplied on leg " <<
leg
211 <<
", must be 2 for same-leg topo selection!");
◆ fillPairKinematics()
Definition at line 247 of file TrigComboHypoTool.cxx.
248 ATH_MSG_DEBUG(
"Decision objects available = "<< combination);
250 size_t nFeatures(combination.size());
252 ATH_MSG_ERROR(
"Number of Decision Objects passed is less than 2! Sum over decision objects on all legs = " << combination.size() );
255 std::pair<Combo::LegDecision,Combo::LegDecision> legpair;
259 if(!
fillKineInfo(kinepair.first,legpair.first,varInfo.legA_is_MET)) {
260 ATH_MSG_ERROR(
"Failed to extract requisite kinematic info from leg " << varInfo.legA <<
"!");
264 if(!
fillKineInfo(kinepair.second,legpair.second,varInfo.legB_is_MET)) {
265 ATH_MSG_ERROR(
"Failed to extract requisite kinematic info from leg " << varInfo.legB <<
"!");
◆ initialize()
StatusCode TrigComboHypoTool::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 60 of file TrigComboHypoTool.cxx.
73 ATH_MSG_ERROR(
"Trying to configure the Tool with legA and legB vectors of different size!");
74 return StatusCode::FAILURE;
77 ATH_MSG_ERROR(
"Trying to configure the Tool with UseMin and UseMax vectors of different size!");
78 return StatusCode::FAILURE;
81 ATH_MSG_ERROR(
"Trying to configure the Tool with legA/B and UseMax/Min vectors of different size!");
82 return StatusCode::FAILURE;
85 ATH_MSG_ERROR(
"Trying to configure the Tool with varTag and UseMax/Min(LegA/B) vectors of different size!");
86 return StatusCode::FAILURE;
96 ATH_MSG_ERROR(
"The variable is not present in the ComboHypoVars list");
97 return StatusCode::FAILURE;
113 std::string validmsg{
""};
114 if(!
info.validate(validmsg)) {
116 return StatusCode::FAILURE;
123 return StatusCode::SUCCESS;
◆ legDecisionId()
Retrieves this ComboHypoTool's chain's decision ID for a given leg.
Only populated for chains with more than one leg. For chains with one leg, use decisionId()
Definition at line 60 of file ComboHypoToolBase.h.
◆ legDecisionIds()
Retrieves this ComboHypoTool's chain's decision IDs for all legs.
Only populated for chains with more than one leg. For chains with one leg, use decisionId()
Definition at line 66 of file ComboHypoToolBase.h.
◆ legMultiplicity()
const std::vector<int>& ComboHypoToolBase::legMultiplicity |
( |
| ) |
const |
|
inlineinherited |
Gets the number of legs and the multiplicity required on each leg.
Definition at line 54 of file ComboHypoToolBase.h.
◆ printDebugInformation()
Print the output of the tool, after having removed failed Decision Objects.
Restricted to the ComboHypoTool's chain's legs.
Definition at line 264 of file ComboHypoToolBase.cxx.
266 for (
const auto& [
id, ELV] : passingLegs) {
270 for (
const auto&
EL : ELV) {
275 return StatusCode::SUCCESS;
◆ selectLegs()
Creates the per-leg vectors of Decision objects starting from the initial LegDecision map, storing only those concerning this HypoTool's chain Pack the Decision objects in std::pair<DecisionID, ElementLink<Decision>> so the derived class' executeAlg function knows which leg each object is on.
Definition at line 172 of file ComboHypoToolBase.cxx.
189 std::vector<Combo::LegDecision> decisionObjectsOnLeg;
192 const Combo::LegDecisionsMap::const_iterator
it = IDCombMap.find(legIdentifier.
numeric());
194 if (
it != IDCombMap.end()) {
196 decisionObjectsOnLeg.emplace_back(legIdentifier,
el);
200 legDecisions.push_back(std::move(decisionObjectsOnLeg));
206 for (
const auto&
leg : legDecisions) {
208 for (
const auto& dEL :
leg) {
213 return StatusCode::SUCCESS;
◆ setLegMultiplicity()
Sets the number of legs and the multiplicity required on each leg.
This should be called when the Tool is retrieved by its parent ComboHypo alg. This also sets the leg Decision IDs at the same time param[in] multiplicityRequiredMap: Mapping of chains to required multiplicity per leg.
Definition at line 16 of file ComboHypoToolBase.cxx.
18 const Combo::MultiplicityReqMap::const_iterator
it = multiplicityRequiredMap.find(nameOfToolsChain);
20 if (
it == multiplicityRequiredMap.end()) {
21 ATH_MSG_ERROR(
"ComboHypoTool for " <<
m_decisionId <<
" could not find its required multiplcity data in the map supplied by its parent alg.");
22 return StatusCode::FAILURE;
27 ATH_MSG_ERROR(
"ComboHypoTool for " <<
m_decisionId <<
" was listed in the supplied multiplicityRequiredMap, but data was not supplied for any legs.");
28 return StatusCode::FAILURE;
35 return StatusCode::FAILURE;
45 return StatusCode::SUCCESS;
◆ updateLegDecisionsMap()
For when the tool accepts some/all combinations.
Remove Decision Objects from legs of this HypoTool's chain which participated in NONE of combinations which were flagged as accepting the event.
Definition at line 216 of file ComboHypoToolBase.cxx.
219 for (
const std::vector<Combo::LegDecision>& comb : passingComb) {
221 for (
const auto& [
id,
EL] : comb) {
228 for (
auto&
it : passingLegs) {
233 std::vector<ElementLink<DecisionContainer>> updatedDecisionObjectsOnLeg;
236 for (
const std::vector<Combo::LegDecision>& comb : passingComb) {
237 for (
const auto& [
id,
EL] : comb) {
239 if (
id == legId and
std::find(updatedDecisionObjectsOnLeg.begin(), updatedDecisionObjectsOnLeg.end(),
EL) == updatedDecisionObjectsOnLeg.end()) {
241 updatedDecisionObjectsOnLeg.push_back(
EL);
248 it.second = updatedDecisionObjectsOnLeg;
◆ FLOATDEFAULT
constexpr float TrigComboHypoTool::FLOATDEFAULT = std::numeric_limits<float>::lowest() |
|
staticconstexprprivate |
◆ m_combinationsThresholdBreak
Gaudi::Property<size_t> ComboHypoToolBase::m_combinationsThresholdBreak |
|
protectedinherited |
Initial value:{this, "CombinationsThresholdBreak", 10000,
"Events processing this many combinations will generate a second WARNING message, and the loop over combinations will be terminated at this point."}
Definition at line 109 of file ComboHypoToolBase.h.
◆ m_combinationsThresholdWarn
Gaudi::Property<size_t> ComboHypoToolBase::m_combinationsThresholdWarn |
|
protectedinherited |
Initial value:{this, "CombinationsThresholdWarn", 1000,
"Events processing this many combinations will generate a WARNING message."}
Definition at line 106 of file ComboHypoToolBase.h.
◆ m_decisionId
◆ m_enableOverride
Gaudi::Property<bool> ComboHypoToolBase::m_enableOverride |
|
protectedinherited |
Initial value:{this, "EnableOverride", false,
"Stops processing combinations as soon as a valid combination is found in OR mode, or as soon as an invalid combination is found in AND mode. This is to save CPU."}
Definition at line 115 of file ComboHypoToolBase.h.
◆ m_isLegA_MET_vec
Gaudi::Property<std::vector< bool > > TrigComboHypoTool::m_isLegA_MET_vec {this, "IsLegA_METVec", {false}, "Array with the first Leg MET identifier"} |
|
private |
◆ m_isLegB_MET_vec
Gaudi::Property<std::vector< bool > > TrigComboHypoTool::m_isLegB_MET_vec {this, "IsLegB_METVec", {false}, "Array with the second Leg MET identifier"} |
|
private |
◆ m_legA_vec
Gaudi::Property<std::vector<uint32_t> > TrigComboHypoTool::m_legA_vec {this, "LegAVec" , {0}, "Array with the first Leg ID"} |
|
private |
◆ m_legB_vec
Gaudi::Property<std::vector<uint32_t> > TrigComboHypoTool::m_legB_vec {this, "LegBVec" , {0}, "Array with the second Leg ID"} |
|
private |
◆ m_legDecisionIds
The DecisionIDs of the individual legs, derived from both m_decisionId and m_legMultiplicities.
Definition at line 123 of file ComboHypoToolBase.h.
◆ m_legMultiplicities
std::vector<int> ComboHypoToolBase::m_legMultiplicities |
|
privateinherited |
The number of legs, and the required multiplicity on each leg.
Definition at line 124 of file ComboHypoToolBase.h.
◆ m_modeOR
Gaudi::Property<bool> ComboHypoToolBase::m_modeOR |
|
protectedinherited |
Initial value:{this, "ModeOR", true,
"Accepts based on the logical OR over all calls to executeAlg. If this flag is set to false then the logical AND is required instead."}
Definition at line 112 of file ComboHypoToolBase.h.
◆ m_monTool_vec
◆ m_skipLegCheck
Gaudi::Property<bool> TrigComboHypoTool::m_skipLegCheck {this, "SkipLegCheck" , {false}, "Ignore leg IDs for chains with only one leg"} |
|
private |
◆ m_useMax_vec
Gaudi::Property<std::vector<bool> > TrigComboHypoTool::m_useMax_vec {this, "UseMaxVec" , {false}, "Array with the apply_max_cut setting"} |
|
private |
◆ m_useMin_vec
Gaudi::Property<std::vector<bool> > TrigComboHypoTool::m_useMin_vec {this, "UseMinVec" , {false}, "Array with the apply_min_cut setting"} |
|
private |
◆ m_varInfo_vec
std::vector<VarInfo> TrigComboHypoTool::m_varInfo_vec |
|
private |
◆ m_varMax_vec
Gaudi::Property<std::vector<float> > TrigComboHypoTool::m_varMax_vec {this, "UpperCutVec", {FLOATDEFAULT}, "Array with the upper cut for legs pair"} |
|
private |
◆ m_varMin_vec
Gaudi::Property<std::vector<float> > TrigComboHypoTool::m_varMin_vec {this, "LowerCutVec", {FLOATDEFAULT}, "Array with the lower cut for legs pair"} |
|
private |
◆ m_varTag_vec
Gaudi::Property<std::vector<std::string> > TrigComboHypoTool::m_varTag_vec {this, "Variables" , {""}, "Variables to cut on"} |
|
private |
The documentation for this class was generated from the following files:
Group
Properties of a chain group.
Scalar phi() const
phi method
std::string find(const std::string &s)
return a remapped string
TrigCompositeUtils::DecisionID numeric() const
numeric ID
Scalar eta() const
pseudorapidity method
An ensemble of UniqueCombinationGenerator API description.
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
setEt setPhi setE277 setWeta2 eta1
#define ATH_MSG_VERBOSE(x)
LVL1::L1CaloFcal23Cells2RxMappingTool::mapType MT
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
void add(const UniqueCombinationGenerator &gen)
Out copy_if(In first, const In &last, Out res, const Pred &p)
This module defines the arguments passed from the BATCH driver to the BATCH worker.
ElementLink implementation for ROOT usage.
const std::string & featureString()
HLT::Identifier createLegName(const HLT::Identifier &chainIdentifier, size_t counter)
Generate the HLT::Identifier which corresponds to a specific leg of a given chain.
#define ATH_MSG_WARNING(x)
std::string name() const
reports human redable name if it is enabled or, empty string
HLT::Identifier getIDFromLeg(const HLT::Identifier &legIdentifier)
Generate the HLT::Identifier which corresponds to the chain name from the leg name.
Declare a monitored scalar variable.
std::pair< TrigCompositeUtils::DecisionID, ElementLink< TrigCompositeUtils::DecisionContainer > > LegDecision
LegDecision keeps a given Decision Object associated with a specific leg when being used inside a sin...