 |
ATLAS Offline Software
|
#include <Trig3VarComboHypoTool.h>
|
| StatusCode | decide (Combo::LegDecisionsMap &passingLegs, const EventContext &) const final |
| | Override the ComboHypoToolBase::decide in order to optimise combination generation This is to avoid excessive combinatorics for complex multileg chains. More...
|
| |
| bool | executeAlgStep (const Combination &combination, const VarInfo &, std::vector< float > &values) const |
| | Implementation of selection on individual variables. More...
|
| |
| float | compute (const std::tuple< KineInfo, KineInfo, KineInfo > &kinetrio, ComboHypoVars var) const |
| | Computation of the variables from the specified kinematics. More...
|
| |
| bool | fillLegDecisions_diffLeg (std::tuple< Combo::LegDecision, Combo::LegDecision, Combo::LegDecision > &legtrio, const Combination &combination, uint32_t legA, uint32_t legB, uint32_t legC) const |
| |
| bool | fillTrioKinematics (std::tuple< KineInfo, KineInfo, KineInfo > &kinetrio, 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< uint32_t > > | m_legC_vec {this, "LegCVec" , {0}, "Array with the third 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< std::vector< bool > > | m_isLegC_MET_vec {this, "IsLegC_METVec", {false}, "Array with the third Leg MET identifier"} |
| |
| 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() |
| |
Definition at line 16 of file Trig3VarComboHypoTool.h.
◆ Combination
◆ KineInfo
◆ ComboHypoVars
◆ Trig3VarComboHypoTool()
| Trig3VarComboHypoTool::Trig3VarComboHypoTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ compute()
Computation of the variables from the specified kinematics.
Definition at line 496 of file Trig3VarComboHypoTool.cxx.
497 const auto& [legA_kine,legB_kine,legC_kine] = kinetrio;
498 const auto& [
eta1,phi1,pt1] = legA_kine;
499 const auto& [
eta2,phi2,pt2] = legB_kine;
500 const auto& [eta3,phi3,pt3] = legC_kine;
508 case ComboHypoVars::MASSWISO:
510 ROOT::Math::PtEtaPhiMVector
p1(pt1,
eta1,phi1,0.),
p2(pt2,
eta2,phi2,0.);
519 if(dRAC < 0.2 || dRBC < 0.2)
526 ATH_MSG_ERROR(
"Undefined variable requested -- should never happen!");
◆ decide()
Override the ComboHypoToolBase::decide in order to optimise combination generation This is to avoid excessive combinatorics for complex multileg chains.
Reimplemented from ComboHypoToolBase.
Definition at line 128 of file Trig3VarComboHypoTool.cxx.
131 if (passingLegs.empty()) {
132 return StatusCode::SUCCESS;
135 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.");
136 for(
const auto& legpair : passingLegs) {
137 ATH_MSG_DEBUG(
" Leg " << legpair.first <<
" has " << legpair.second.size() <<
" features");
141 std::vector<Combination> legDecisions;
145 bool hasViableLegs{
true};
149 ATH_MSG_DEBUG(
"Var " << varInfo.varTag <<
" needs legs " << varInfo.legA <<
", " << varInfo.legB <<
", " << varInfo.legC);
152 if (passingLegs.contains(varInfo.legA) && passingLegs.contains(varInfo.legB) && passingLegs.contains(varInfo.legC)) {
153 bool goodLegA{
false}, goodLegB{
false}, goodLegC{
false};
157 if ((iLegA<0) or (iLegB<0) or (iLegC<0)){
158 ATH_MSG_ERROR(
"Trig3VarComboHypoTool::decide: Index into array is negative");
159 return StatusCode::FAILURE;
161 goodLegA = !passingLegs[varInfo.legA].empty();
162 legMultiplicityForComputation[iLegA] = std::max<size_t>(1,legMultiplicityForComputation[iLegA]);
163 ATH_MSG_DEBUG(
"Leg " << varInfo.legA <<
" has " << passingLegs[varInfo.legA].size() <<
" features --> " << (goodLegA ?
"pass" :
"fail"));
165 if(varInfo.legB == varInfo.legA) {
166 ATH_MSG_ERROR(
"Trig3VarComboHypoTool::decide: legB has to be different from legA");
167 return StatusCode::FAILURE;
169 goodLegB = !passingLegs[varInfo.legB].empty();
170 ATH_MSG_DEBUG(
"Leg " << varInfo.legB <<
" has " << passingLegs[varInfo.legB].size() <<
" features --> " << (goodLegB ?
"pass" :
"fail"));
171 legMultiplicityForComputation[iLegB] = std::max<size_t>(1,legMultiplicityForComputation[iLegB]);
173 if(varInfo.legC == varInfo.legA) {
174 ATH_MSG_ERROR(
"Trig3VarComboHypoTool::decide: legC has to be different from legA");
175 return StatusCode::FAILURE;
177 if(varInfo.legC == varInfo.legB) {
178 ATH_MSG_ERROR(
"Trig3VarComboHypoTool::decide: legC has to be different from legB");
179 return StatusCode::FAILURE;
181 goodLegC = !passingLegs[varInfo.legC].empty();
182 ATH_MSG_DEBUG(
"Leg " << varInfo.legC <<
" has " << passingLegs[varInfo.legC].size() <<
" features --> " << (goodLegC ?
"pass" :
"fail"));
183 legMultiplicityForComputation[iLegC] = std::max<size_t>(1,legMultiplicityForComputation[iLegC]);
185 hasViableLegs &= (goodLegA && goodLegB && goodLegC);
186 if (!hasViableLegs) {
187 ATH_MSG_DEBUG(
"Did not find at least 3 features on the target legs to compute " << varInfo.varTag);
191 "Insufficient passing legs to compute " << varInfo.varTag
192 <<
", intended on (" << varInfo.legA <<
", " << varInfo.legB <<
", " << varInfo.legC <<
")"
194 hasViableLegs =
false;
199 if (!hasViableLegs) {
200 ATH_MSG_DEBUG(
"This Trig3VarComboHypoTool cannot run in this event, this chain **REJECTS** this event.");
203 return StatusCode::SUCCESS;
210 for (
size_t legindex = 0;
size_t legmult : legMultiplicityForComputation){
211 size_t out_of = legDecisions[legindex].size();
213 extraLegs.insert(extraLegs.end(),legDecisions[legindex].cbegin(),legDecisions[legindex].cend());
215 nucg.
add({out_of, legmult});
216 ATH_MSG_DEBUG(
"For leg index " << legindex <<
" we will be choosing any " << legmult <<
" Decision Objects out of " << out_of);
222 std::vector<Combination> passingCombinations;
223 std::vector<float>
values;
225 size_t warnings = 0, iterations = 0;
227 auto get_index_offset = [&legMultiplicityForComputation](
size_t legindex) {
229 for (
auto iLeg=legMultiplicityForComputation.cbegin(); iLeg!=legMultiplicityForComputation.cbegin()+legindex; ++iLeg) {
235 bool lastDecision(
true);
236 const std::vector<size_t> combination = nucg();
247 size_t legA_index{0};
248 size_t legB_index{0};
249 size_t legC_index{0};
256 "Computing " << iVarInfo->varTag <<
" on legs "
257 << iVarInfo->legA <<
" (" << legA_index <<
"), "
258 << iVarInfo->legB <<
" (" << legB_index <<
"), "
259 << iVarInfo->legC <<
" (" << legC_index <<
")"
261 if(iVarInfo->legA==iVarInfo->legB) {
265 if(iVarInfo->legA==iVarInfo->legC) {
269 if(iVarInfo->legB==iVarInfo->legC) {
275 Combination featureTrio = {legDecisions[legA_index][combination.at(legA_index+get_index_offset(legA_index))],
276 legDecisions[legB_index][combination.at(legB_index+get_index_offset(legB_index))],
277 legDecisions[legC_index][combination.at(legC_index+get_index_offset(legC_index))]};
278 combinationToCheck.insert(combinationToCheck.end(),featureTrio.cbegin(),featureTrio.cend());
279 combinationToRecord.insert(combinationToRecord.end(),featureTrio.cbegin(),featureTrio.cend());
283 ATH_MSG_DEBUG(
"Combination " << (iterations - 1) <<
" decided to be " << (lastDecision ?
"passing" :
"failing") <<
" " << iVarInfo->varTag);
286 return StatusCode::FAILURE;
290 ATH_MSG_WARNING(
"Have so far processed " << iterations <<
" combinations for " <<
decisionId() <<
" in this event, " << passingCombinations.size() <<
" passing.");
293 ATH_MSG_WARNING(
"Too many combinations! Breaking the loop at this point.");
301 combinationToRecord.insert(combinationToRecord.end(),extraLegs.cbegin(),extraLegs.cend());
302 passingCombinations.push_back(combinationToRecord);
318 ATH_MSG_VERBOSE( varInfo.varTag <<
" = " <<
value <<
" is in range " << varInfo.rangeStr() <<
".");
327 ATH_MSG_DEBUG(
"Passing " << passingCombinations.size() <<
" combinations out of " << iterations <<
", "
328 <<
decisionId() << (passingCombinations.size() ?
" **ACCEPTS**" :
" **REJECTS**") <<
" this event based on OR logic.");
331 ATH_MSG_DEBUG(
"Note: stopped after the first successful combination due to the EnableOverride flag.");
336 const bool passAll = (passingCombinations.size() == iterations);
338 ATH_MSG_DEBUG(
"Passing " << passingCombinations.size() <<
" combinations out of " << iterations <<
", "
339 <<
decisionId() << (passAll ?
" **ACCEPTS**" :
" **REJECTS**") <<
" this event based on AND logic.");
342 ATH_MSG_DEBUG(
"Note: stopped after the first failed combination due to the EnableOverride flag.");
346 passingCombinations.clear();
351 if (not passingCombinations.empty()) {
358 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 283 of file ComboHypoToolBase.cxx.
284 ATH_MSG_ERROR(
"Do not use ComboHypoToolBase on its own, inherit this class and override decideOnSingleObject.");
285 ATH_MSG_ERROR(
"NOTE: Only if you are also supplying your own decide(...) implimentation, or similar.");
286 ATH_MSG_ERROR(
"NOTE: Most uses cases should only need to override executeAlg(...).");
287 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()
|
|
protectedvirtualinherited |
◆ executeAlgStep()
| bool Trig3VarComboHypoTool::executeAlgStep |
( |
const Combination & |
combination, |
|
|
const VarInfo & |
varInfo, |
|
|
std::vector< float > & |
values |
|
) |
| const |
|
private |
Implementation of selection on individual variables.
Definition at line 361 of file Trig3VarComboHypoTool.cxx.
364 std::tuple<KineInfo,KineInfo,KineInfo> kinetrio;
366 ATH_MSG_ERROR(
"Failed to extract kinematics of feature trio!");
371 float etaCheck, phiCheck, ptCheck;
372 std::tie(etaCheck,phiCheck,ptCheck) = std::get<0>(kinetrio);
373 msg() <<
MSG::VERBOSE <<
" Test filled legA kinematics: pt " << ptCheck*
invGeV <<
", eta " << etaCheck <<
", phi " << phiCheck <<
endmsg;
375 std::tie(etaCheck,phiCheck,ptCheck) = std::get<1>(kinetrio);
376 msg() <<
MSG::VERBOSE <<
" Test filled legB kinematics: pt " << ptCheck*
invGeV <<
", eta " << etaCheck <<
", phi " << phiCheck <<
endmsg;
378 std::tie(etaCheck,phiCheck,ptCheck) = std::get<2>(kinetrio);
379 msg() <<
MSG::VERBOSE <<
" Test filled legC kinematics: pt " << ptCheck*
invGeV <<
", eta " << etaCheck <<
", phi " << phiCheck <<
endmsg;
389 bool pass = varInfo.test(
value);
393 ATH_MSG_DEBUG(
" Combination failed var cut: " << varInfo.varTag <<
" = " <<
value <<
" not in range " << varInfo.rangeStr());
◆ fillKineInfo()
Definition at line 469 of file Trig3VarComboHypoTool.cxx.
472 auto pLink = TrigCompositeUtils::findLink<xAOD::TrigMissingETContainer>( *decision.second,
featureString() ).link;
473 if (!pLink.isValid()){
477 ROOT::Math::XYVectorF metv((*pLink)->ex(),(*pLink)->ey());
482 auto pLink = TrigCompositeUtils::findLink<xAOD::IParticleContainer>( *decision.second,
featureString() ).link;
483 if (!pLink.isValid()){
487 eta = (*pLink)->p4().Eta();
488 phi = (*pLink)->p4().Phi();
489 pt = (*pLink)->p4().Pt();
492 kinematics = std::make_tuple(
eta,
phi,
pt);
◆ fillLegDecisions_diffLeg()
Definition at line 405 of file Trig3VarComboHypoTool.cxx.
411 Combination legA_features, legB_features, legC_features;
413 std::copy_if(combination.begin(),combination.end(),std::back_inserter(legA_features),isLegA);
414 if(legA_features.size()!=1) {
415 ATH_MSG_ERROR(legA_features.size() <<
" Decision Objects supplied on leg " << legA
416 <<
", must be 1 for different-leg topo selection!");
420 std::copy_if(combination.begin(),combination.end(),std::back_inserter(legB_features),isLegB);
421 if (legB_features.size()!=1) {
422 ATH_MSG_ERROR(legB_features.size() <<
" Decision Objects supplied on leg " << legB
423 <<
", must be 1 for different-leg topo selection!");
427 std::copy_if(combination.begin(),combination.end(),std::back_inserter(legC_features),isLegC);
428 if (legC_features.size()!=1) {
429 ATH_MSG_ERROR(legB_features.size() <<
" Decision Objects supplied on leg " << legC
430 <<
", must be 1 for different-leg topo selection!");
434 std::get<0>(legtrio) = legA_features[0];
435 std::get<1>(legtrio) = legB_features[0];
436 std::get<2>(legtrio) = legC_features[0];
◆ fillTrioKinematics()
Definition at line 441 of file Trig3VarComboHypoTool.cxx.
444 size_t nFeatures(combination.size());
446 ATH_MSG_ERROR(
"Number of Decision Objects passed is less than 3! Sum over decision objects on all legs = " << combination.size() );
449 std::tuple<Combo::LegDecision,Combo::LegDecision,Combo::LegDecision> legtrio;
452 if(!
fillKineInfo(std::get<0>(kinetrio),std::get<0>(legtrio),varInfo.legA_is_MET)) {
453 ATH_MSG_ERROR(
"Failed to extract requisite kinematic info from leg " << varInfo.legA <<
"!");
457 if(!
fillKineInfo(std::get<1>(kinetrio),std::get<1>(legtrio),varInfo.legB_is_MET)) {
458 ATH_MSG_ERROR(
"Failed to extract requisite kinematic info from leg " << varInfo.legB <<
"!");
462 if(!
fillKineInfo(std::get<2>(kinetrio),std::get<2>(legtrio),varInfo.legC_is_MET)) {
463 ATH_MSG_ERROR(
"Failed to extract requisite kinematic info from leg " << varInfo.legC <<
"!");
◆ initialize()
| StatusCode Trig3VarComboHypoTool::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 61 of file Trig3VarComboHypoTool.cxx.
74 ATH_MSG_ERROR(
"Trying to configure the Tool with legA/legB/legC vectors of different size!");
75 return StatusCode::FAILURE;
78 ATH_MSG_ERROR(
"Trying to configure the Tool with UseMin and UseMax vectors of different size!");
79 return StatusCode::FAILURE;
82 ATH_MSG_ERROR(
"Trying to configure the Tool with legA/B and UseMax/Min vectors of different size!");
83 return StatusCode::FAILURE;
86 ATH_MSG_ERROR(
"Trying to configure the Tool with varTag and UseMax/Min(LegA/B/C) vectors of different size!");
87 return StatusCode::FAILURE;
97 ATH_MSG_ERROR(
"The variable is not present in the ComboHypoVars list");
98 return StatusCode::FAILURE;
115 std::string validmsg{
""};
116 if(!
info.validate(validmsg)) {
118 return StatusCode::FAILURE;
125 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) {
◆ 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 Trig3VarComboHypoTool::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 > > Trig3VarComboHypoTool::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 > > Trig3VarComboHypoTool::m_isLegB_MET_vec {this, "IsLegB_METVec", {false}, "Array with the second Leg MET identifier"} |
|
private |
◆ m_isLegC_MET_vec
| Gaudi::Property<std::vector< bool > > Trig3VarComboHypoTool::m_isLegC_MET_vec {this, "IsLegC_METVec", {false}, "Array with the third Leg MET identifier"} |
|
private |
◆ m_legA_vec
| Gaudi::Property<std::vector<uint32_t> > Trig3VarComboHypoTool::m_legA_vec {this, "LegAVec" , {0}, "Array with the first Leg ID"} |
|
private |
◆ m_legB_vec
| Gaudi::Property<std::vector<uint32_t> > Trig3VarComboHypoTool::m_legB_vec {this, "LegBVec" , {0}, "Array with the second Leg ID"} |
|
private |
◆ m_legC_vec
| Gaudi::Property<std::vector<uint32_t> > Trig3VarComboHypoTool::m_legC_vec {this, "LegCVec" , {0}, "Array with the third 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_useMax_vec
| Gaudi::Property<std::vector<bool> > Trig3VarComboHypoTool::m_useMax_vec {this, "UseMaxVec" , {false}, "Array with the apply_max_cut setting"} |
|
private |
◆ m_useMin_vec
| Gaudi::Property<std::vector<bool> > Trig3VarComboHypoTool::m_useMin_vec {this, "UseMinVec" , {false}, "Array with the apply_min_cut setting"} |
|
private |
◆ m_varInfo_vec
| std::vector<VarInfo> Trig3VarComboHypoTool::m_varInfo_vec |
|
private |
◆ m_varMax_vec
| Gaudi::Property<std::vector<float> > Trig3VarComboHypoTool::m_varMax_vec {this, "UpperCutVec", {FLOATDEFAULT}, "Array with the upper cut for legs pair"} |
|
private |
◆ m_varMin_vec
| Gaudi::Property<std::vector<float> > Trig3VarComboHypoTool::m_varMin_vec {this, "LowerCutVec", {FLOATDEFAULT}, "Array with the lower cut for legs pair"} |
|
private |
◆ m_varTag_vec
| Gaudi::Property<std::vector<std::string> > Trig3VarComboHypoTool::m_varTag_vec {this, "Variables" , {""}, "Variables to cut on"} |
|
private |
The documentation for this class was generated from the following files:
const std::string & featureString()
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.
setEt setPhi setE277 setWeta2 eta1
#define ATH_MSG_VERBOSE(x)
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.
HLT::Identifier createLegName(const HLT::Identifier &chainIdentifier, size_t counter)
Generate the HLT::Identifier which corresponds to a specific leg of a given chain.
int32_t getIndexFromLeg(const HLT::Identifier &legIdentifier)
Extract the numeric index of a leg identifier.
#define ATH_MSG_WARNING(x)
std::string name() const
reports human redable name
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...