 |
ATLAS Offline Software
|
#include <TrigMuonTLAHypoAlg.h>
|
| TrigMuonTLAHypoAlg (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute (const EventContext &context) const override |
|
virtual StatusCode | sysInitialize () override |
| initialise this base class More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T, V, H > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
StatusCode | printDebugInformation (SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl) const |
| Common base function to print information on chains passed by objects considered in the hypo. More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
ToolHandleArray< TrigMuonEFHypoTool > | m_hypoTools {this, "HypoTools", {}, "Tools to perform selection"} |
|
SG::WriteHandleKey< xAOD::MuonContainer > | m_TLAMuonsKey |
|
ToolHandle< GenericMonitoringTool > | m_monTool { this, "MonTool", "", "Monitoring tool" } |
|
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > | m_input { this, "HypoInputDecisions", "UNSPECIFIED_INPUT", "Input Decision (implicit)" } |
| input decisions More...
|
|
SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > | m_output { this, "HypoOutputDecisions", "UNSPECIFIED_OUTPUT", "Ouput Decision" } |
| output decisions More...
|
|
Gaudi::Property< bool > | m_runtimeValidation { this, "RuntimeValidation", false, "Enable detailed runtime validation of HypoAlg output, and upstream Decisions." } |
| Enabling of detailed validation checks for use during development. More...
|
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
|
|
enum | LogicalFlowCheckMode { kRequireOne,
kRequireAll
} |
|
static StatusCode | validateHasLinks (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg) |
| Ensure all Decisions have the named ElementLink graph edges which they are required to by spec. More...
|
|
static StatusCode | validateLogicalFlow (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, const LogicalFlowCheckMode mode) |
| Ensure that all DecisionIDs have propagated correctly from their parent. More...
|
|
static StatusCode | validateDuplicatedDecisionID (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg) |
| Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects. More...
|
|
static StatusCode | validateDecisionIDs (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg) |
| Ensure that all present IDs correspond to configured chains. More...
|
|
static StatusCode | validateParentLinking (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool runTwoConversion) |
| Ensure that the Decision has at least one valid parent, unless it is a initial Decision from the HLTSeeding. More...
|
|
static StatusCode | recursiveValidateGraph (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool onlyValidateOneStep, bool runTwoConversion, size_t callDepth, std::set< const TrigCompositeUtils::Decision * > &fullyExploredFrom) |
| Execute all checks on one node in the graph, d, then recursive call self on all parent nodes up to L1. More...
|
|
static void | printBangs (MsgStream &msg) |
| Print header line. More...
|
|
static void | printErrorHeader (const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg) |
| A problem was found, print common output data. More...
|
|
Definition at line 16 of file TrigMuonTLAHypoAlg.h.
◆ StoreGateSvc_t
◆ LogicalFlowCheckMode
Enumerator |
---|
kRequireOne | Require all DecisionIDs to be present in at least one of my parent Decision objects.
|
kRequireAll | |
Definition at line 52 of file HypoBase.h.
◆ TrigMuonTLAHypoAlg()
TrigMuonTLAHypoAlg::TrigMuonTLAHypoAlg |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ cardinality()
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.
◆ decisionInput()
methods for derived classes to access handles of the base class input other read/write handles may be implemented by derived classes
Definition at line 18 of file HypoBase.cxx.
◆ decisionOutput()
methods for derived classes to access handles of the base class output other read/write handles may be implemented by derived classes
Definition at line 22 of file HypoBase.cxx.
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode TrigMuonTLAHypoAlg::execute |
( |
const EventContext & |
context | ) |
const |
|
overridevirtual |
Definition at line 31 of file TrigMuonTLAHypoAlg.cxx.
39 std::make_unique<xAOD::MuonAuxContainer>()));
42 ATH_CHECK(previousDecisionHandle.isValid());
43 ATH_MSG_DEBUG(
"Running with " << previousDecisionHandle->size() <<
" previous decisions");
51 std::vector<std::pair<Decision *, const Decision *> > HypoInputs;
55 for (
const auto previousDecision : *previousDecisionHandle)
66 ATH_MSG_DEBUG(
"This decision has " << prevMuons.size() <<
" decisions");
69 if (prevMuons.size() != 1) {
70 ATH_MSG_DEBUG(
"Did not locate exactly one muon for this Decision Object, found " << prevMuons.size());
71 return StatusCode::FAILURE;
74 auto prevMuLink = prevMuons.at(0).link;
76 muonPrev = *prevMuLink;
79 h_TLAMuons->push_back(copiedMuon);
80 *copiedMuon = *muonPrev;
87 ATH_MSG_DEBUG(
"Copied muon with pT: " << copiedMuon->
pt() <<
" from decision " << nDecision);
89 HypoInputs.push_back( std::make_pair(newDecision, previousDecision) );
95 Nmuons = h_TLAMuons->size();
104 for (
auto& hypoPair: HypoInputs ){
110 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.
◆ filterPassed()
◆ hypoBaseOutputProcessing()
Base class function to be called once slice specific code has finished. Handles debug printing and validation.
Definition at line 35 of file HypoBase.cxx.
43 return StatusCode::SUCCESS;
◆ initialize()
StatusCode TrigMuonTLAHypoAlg::initialize |
( |
| ) |
|
|
overridevirtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ printBangs()
void HypoBase::printBangs |
( |
MsgStream & |
msg | ) |
|
|
staticprivateinherited |
Print header line.
Definition at line 390 of file HypoBase.cxx.
391 msg << MSG::ERROR <<
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" <<
endmsg;
◆ printDebugInformation()
Common base function to print information on chains passed by objects considered in the hypo.
Definition at line 406 of file HypoBase.cxx.
409 msg() <<
"Exiting with " << outputHandle->
size() <<
" Decision objects" <<
endmsg;
414 msg() <<
"Number of positive decisions for Decision object #" <<
count++ <<
": " << objDecisions.size() <<
endmsg;
420 return StatusCode::SUCCESS;
◆ printErrorHeader()
A problem was found, print common output data.
Definition at line 395 of file HypoBase.cxx.
399 msg << MSG::ERROR <<
"! RUNTIME TRIGGER NAVIGATION VALIDATION ERROR" <<
endmsg;
400 msg << MSG::ERROR <<
"! Caused by Decision with index:" << (*dEL)->index() <<
endmsg;
402 msg << MSG::ERROR <<
"! " << **dEL <<
endmsg;
◆ recursiveValidateGraph()
Execute all checks on one node in the graph, d, then recursive call self on all parent nodes up to L1.
Definition at line 71 of file HypoBase.cxx.
78 if (onlyValidateOneStep && callDepth > 0) {
82 return StatusCode::SUCCESS;
90 return StatusCode::FAILURE;
95 return StatusCode::FAILURE;
101 return StatusCode::FAILURE;
104 return StatusCode::FAILURE;
109 return StatusCode::FAILURE;
112 return StatusCode::FAILURE;
118 if (fullyExploredFrom.count( (*seed) ) == 1) {
121 if ( not
seed.isValid() ) {
122 msg << MSG::ERROR <<
"Invalid seed element link in recursiveValidateGraph" <<
endmsg;
123 return StatusCode::FAILURE;
125 if (
recursiveValidateGraph(seed,
msg, onlyValidateOneStep, runTwoConversion, callDepth + 1, fullyExploredFrom).isFailure() ) {
126 return StatusCode::FAILURE;
130 fullyExploredFrom.insert( *dEL );
131 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ runtimeValidation()
Executes all individual runtime tests.
Definition at line 47 of file HypoBase.cxx.
53 std::set<const Decision*> fullyExploredFrom;
58 msg << MSG::ERROR <<
"Invalid seed element link in recursiveValidateGraph" <<
endmsg;
59 return StatusCode::FAILURE;
64 return StatusCode::FAILURE;
67 return StatusCode::SUCCESS;
◆ setFilterPassed()
◆ sysExecute()
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.
◆ sysInitialize()
StatusCode HypoBase::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ validateDecisionIDs()
Ensure that all present IDs correspond to configured chains.
Definition at line 209 of file HypoBase.cxx.
219 msg << MSG::ERROR <<
"! Decision contains an ID which does not correspond to a configured chain or a configured chain-leg: " <<
HLT::Identifier(
id ) <<
endmsg;
220 msg << MSG::ERROR <<
"! SOLUTION: Locate the producer of the collection, investigate how this bad ID could have been added." <<
endmsg;
222 return StatusCode::FAILURE;
225 return StatusCode::SUCCESS;
◆ validateDuplicatedDecisionID()
Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects.
Definition at line 229 of file HypoBase.cxx.
235 if (decisionIDSet.size() != (*dEL)->decisions().size()) {
237 msg << MSG::ERROR <<
"! Decision contains duplicate DecisionIDs." <<
endmsg;
238 msg << MSG::ERROR <<
"! SOLUTION: If combining DecisionIDs from multiple parents, de-duplicate the internal std::vector<DecisionID> of 'Decision* d' with:" <<
endmsg;
239 msg << MSG::ERROR <<
"! TrigCompositeUtils::insertDecisionIDs(DecisionIDContainer(), d);" <<
endmsg;
241 return StatusCode::FAILURE;
243 return StatusCode::SUCCESS;
◆ validateHasLinks()
Ensure all Decisions have the named ElementLink graph edges which they are required to by spec.
Definition at line 338 of file HypoBase.cxx.
341 const std::string&
name = (*dEL)->name();
346 return StatusCode::SUCCESS;
350 msg << MSG::ERROR <<
"! Every Decision created by a HypoAlg must correspond to some physics object, and be linked to the object." <<
endmsg;
351 msg << MSG::ERROR <<
"! SOLUTION: Ensure that all produced Decision objects are assigned their feature:" <<
endmsg;
352 msg << MSG::ERROR <<
"! SOLUTION: decision->setObjectLink<MY_FEATURE_CONTANER_TYPE>(featureString(), MY_FEATURE_ELEMENT_LINK);" <<
endmsg;
354 return StatusCode::FAILURE;
360 if ((*dEL)->hasDetail<int32_t>(
"isEmpty") and (*dEL)->getDetail<int32_t>(
"isEmpty") == 1) {
364 if (not (*dEL)->hasObjectLink(
roiString() ) and not exempt) {
366 msg << MSG::ERROR <<
"! Decision has no '" <<
roiString() <<
"' ElementLink." <<
endmsg;
367 msg << MSG::ERROR <<
"! Every Decision created by a InputMaker must link to the ROI which reconstruction will run on for that Decision object in this Step." <<
endmsg;
368 msg << MSG::ERROR <<
"! It can be the FullScan ROI created by the HLTSeeding (FSNOSEED) if no other suitable ROI exists." <<
endmsg;
369 msg << MSG::ERROR <<
"! SOLUTION: Check the configuration of InputMakerForRoI or EventViewCreatorAlgorithm responsible for creating this Decision Object" <<
endmsg;
370 msg << MSG::ERROR <<
"! SOLUTION: The algorithm must have an ROITool which must attach an '"<<
roiString() <<
"' link to each Decision Object" <<
endmsg;
379 msg << MSG::ERROR <<
"! Every Decision created by the HLTSeeding must link to the initial ROI which caused it to be created." <<
endmsg;
380 msg << MSG::ERROR <<
"! This includes the Decision Object created to represent the Full-Scan/NoSeed (FSNOSEED) ROI." <<
endmsg;
381 msg << MSG::ERROR <<
"! SOLUTION: Check the configuration of the HLTSeeding tool responsible for creating this Decision Object" <<
endmsg;
386 return StatusCode::SUCCESS;
◆ validateLogicalFlow()
Ensure that all DecisionIDs have propagated correctly from their parent.
Definition at line 247 of file HypoBase.cxx.
253 return StatusCode::SUCCESS;
262 size_t parentsWithDecision = 0;
264 if ( not
seed.isValid() ) {
265 msg << MSG::ERROR <<
"Invalid seed element link in recursiveValidateGraph" <<
endmsg;
266 return StatusCode::FAILURE;
274 ++parentsWithDecision;
277 for (
auto sid: seedIDSet){
279 ++parentsWithDecision;
290 msg << MSG::ERROR <<
"! This Decision object is not respecting logical flow of DecisionIDs for chain: " <<
HLT::Identifier(
id ) <<
endmsg;
291 msg << MSG::ERROR <<
"! This chain's DecisionID can not be found in any parents of this Decision object:" <<
endmsg;
294 msg << MSG::ERROR <<
"! Index:" << (*seed)->index() <<
" from collection:" <<
seed.dataID() <<
endmsg;
303 msg << MSG::ERROR <<
"! SOLUTION: Ensure that the producer of this Decision object only adds DecisionIDs"
304 " which were present in at least one of its parents." <<
endmsg;
306 return StatusCode::FAILURE;
307 }
else if (
mode ==
kRequireAll && parentsWithDecision != seeds.size()) {
314 msg << MSG::ERROR <<
"! This Decision object is not respecting logical flow of DecisionIDs for chain: " <<
HLT::Identifier(
id ) <<
endmsg;
315 msg << MSG::ERROR <<
"! As this Decision object represents the output of a HypoAlg, it must respect logical flow on all "
316 << seeds.size() <<
" of its parent(s):" <<
endmsg;
319 msg << MSG::ERROR <<
"! Index:" << (*seed)->index() <<
" from collection:" <<
seed.dataID() <<
endmsg;
328 msg << MSG::ERROR <<
"! SOLUTION: Ensure that the HypoTool responsible for " <<
HLT::Identifier(
id )
329 <<
" in this HypoAlg only runs if this ID is present in all parent decisions." <<
endmsg;
331 return StatusCode::FAILURE;
334 return StatusCode::SUCCESS;
◆ validateParentLinking()
Ensure that the Decision has at least one valid parent, unless it is a initial Decision from the HLTSeeding.
Definition at line 135 of file HypoBase.cxx.
141 const std::string&
name = (*dEL)->name();
144 msg << MSG::ERROR <<
"! Decision has zero parents. This is only allowed for the initial Decisions created by the HLTSeeding." <<
endmsg;
145 msg << MSG::ERROR <<
"! SOLUTION: Attach parent Decision(s) with TrigCompositeUtils::linkToPrevious" <<
endmsg;
147 return StatusCode::FAILURE;
151 if (seeds.size() > 0) {
153 msg << MSG::ERROR <<
"! Decision has parents. This is not allowed for the initial Decisions created by the HLTSeeding." <<
endmsg;
154 msg << MSG::ERROR <<
"! SOLUTION: Check HLTSeeding, no where should it be adding a parent link." <<
endmsg;
156 return StatusCode::FAILURE;
158 return StatusCode::SUCCESS;
162 static const std::set<std::string> expectedParentsInputMaker = {
filterNodeName()};
168 const std::set<std::string>* expectedParentsPtr =
nullptr;
170 expectedParentsPtr = &expectedParentsFilter;
172 expectedParentsPtr = &expectedParentsInputMaker;
174 expectedParentsPtr = &expectedParentsFilter;
176 expectedParentsPtr = &expectedParentsHypoAlg;
178 expectedParentsPtr = &expectedParentsComboHypoAlg;
180 expectedParentsPtr = &expectedParentsSummaryFilter;
182 expectedParentsPtr = &expectedParentsSummaryPassed;
185 msg << MSG::ERROR <<
"! Invalid Node name '" <<
name <<
"'." <<
endmsg;
186 msg << MSG::ERROR <<
"! SOLUTION: Find the alg which made a node with this name. Allowed named may be found in TrigCompositeUtils.h, See:'Constant string literals used within the HLT'." <<
endmsg;
188 return StatusCode::FAILURE;
192 if (!expectedParentsPtr->contains( (*seed)->name() )) {
194 msg << MSG::ERROR <<
"! Invalid linking from node with name '" <<
name <<
"' to one with name '"<< (*seed)->name() <<
"'." <<
endmsg;
195 msg << MSG::ERROR <<
"! Allowed seed names are:" <<
endmsg;
196 for (
const std::string& allowed : *expectedParentsPtr) {
197 msg << MSG::ERROR <<
"! " << allowed <<
endmsg;
199 msg << MSG::ERROR <<
"! SOLUTION: Find where this invalid parent was added and correct it." <<
endmsg;
201 return StatusCode::FAILURE;
205 return StatusCode::SUCCESS;
◆ m_detStore
◆ m_evtStore
◆ m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 114 of file AthCommonReentrantAlgorithm.h.
◆ m_hypoTools
◆ m_input
◆ m_monTool
◆ m_output
◆ m_runtimeValidation
Gaudi::Property<bool> HypoBase::m_runtimeValidation { this, "RuntimeValidation", false, "Enable detailed runtime validation of HypoAlg output, and upstream Decisions." } |
|
privateinherited |
Enabling of detailed validation checks for use during development.
Definition at line 105 of file HypoBase.h.
◆ m_TLAMuonsKey
Initial value:{
this, "TLAOutputName", "Muons", "TLA Muon container key"
}
Definition at line 30 of file TrigMuonTLAHypoAlg.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
const std::string & featureString()
Group
Properties of a chain group.
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Decision * newDecisionIn(DecisionContainer *dc, const std::string &name)
Helper method to create a Decision object, place it in the container and return a pointer to it.
const std::string & summaryFilterNodeName()
virtual double phi() const
The azimuthal angle ( ) of the particle.
const std::string & summaryPassNodeName()
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
virtual double eta() const
The pseudorapidity ( ) of the particle.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
void insertDecisionIDs(const Decision *src, Decision *dest)
Appends the decision IDs of src to the dest decision object.
bool msgLvl(const MSG::Level lvl) const
const SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > & decisionInput() const
methods for derived classes to access handles of the base class input other read/write handles may be...
static void printBangs(MsgStream &msg)
Print header line.
const std::string & comboHypoAlgNodeName()
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
const std::string & roiString()
const SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > & decisionOutput() const
methods for derived classes to access handles of the base class output other read/write handles may b...
bool isValid() const
Test to see if the link can be dereferenced.
const ID_type & dataID() const
Get the key that we reference, as a string.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
ToolHandle< GenericMonitoringTool > m_monTool
virtual void setOwner(IDataHandleHolder *o)=0
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
static StatusCode recursiveValidateGraph(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool onlyValidateOneStep, bool runTwoConversion, size_t callDepth, std::set< const TrigCompositeUtils::Decision * > &fullyExploredFrom)
Execute all checks on one node in the graph, d, then recursive call self on all parent nodes up to L1...
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
const std::string & filterNodeName()
static StatusCode validateDuplicatedDecisionID(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects.
StatusCode hypoBaseOutputProcessing(SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl=MSG::DEBUG) const
Base class function to be called once slice specific code has finished. Handles debug printing and va...
Gaudi::Property< bool > m_runtimeValidation
Enabling of detailed validation checks for use during development.
pointer_type ptr()
Dereference the pointer.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > m_input
input decisions
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
virtual double pt() const
The transverse momentum ( ) of the particle.
#define CHECK(...)
Evaluate an expression and check for errors.
static StatusCode validateLogicalFlow(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, const LogicalFlowCheckMode mode)
Ensure that all DecisionIDs have propagated correctly from their parent.
static StatusCode validateDecisionIDs(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
Ensure that all present IDs correspond to configured chains.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Class used to describe composite objects in the HLT.
const std::string & initialRoIString()
const std::string & hltSeedingNodeName()
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
bool isChainId(const HLT::Identifier &chainIdentifier)
Recognise whether the HLT identifier corresponds to a whole chain.
Muon_v1 Muon
Reference the current persistent version:
const std::string & seedString()
void linkToPrevious(Decision *d, const std::string &previousCollectionKey, size_t previousIndex)
Links to the previous object, location of previous 'seed' decision supplied by hand.
std::set< DecisionID > DecisionIDContainer
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
StatusCode printDebugInformation(SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl) const
Common base function to print information on chains passed by objects considered in the hypo.
static StatusCode validateParentLinking(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg, bool runTwoConversion)
Ensure that the Decision has at least one valid parent, unless it is a initial Decision from the HLTS...
const std::string & hypoAlgNodeName()
HypoBase(const std::string &name, ISvcLocator *pSvcLocator)
constructor, to be called by sub-class constructors
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
SG::WriteHandleKey< xAOD::MuonContainer > m_TLAMuonsKey
std::string name() const
reports human redable name
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > m_output
output decisions
virtual StatusCode sysInitialize() override
Override sysInitialize.
static StatusCode runtimeValidation(SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MsgStream &msg, bool onlyValidateOneStep=true, bool runTwoConversion=false)
Executes all individual runtime tests.
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.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
static StatusCode validateHasLinks(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
Ensure all Decisions have the named ElementLink graph edges which they are required to by spec.
const std::string & inputMakerNodeName()
size_type size() const noexcept
Returns the number of elements in the collection.
static void printErrorHeader(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
A problem was found, print common output data.
@ kRequireOne
Require all DecisionIDs to be present in at least one of my parent Decision objects.