|  | ATLAS Offline Software
    | 
 
 
 
HypoAlg for TLA algorithm.  
 More...
#include <TrigJetTLAHypoAlg.h>
|  | 
|  | TrigJetTLAHypoAlg (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 theStoreGateSvc.  More...
 | 
|  | 
| const ServiceHandle< StoreGateSvc > & | evtStore () const | 
|  | The standard StoreGateSvc(event store) Returns (kind of) a pointer to theStoreGateSvc.  More...
 | 
|  | 
| const ServiceHandle< StoreGateSvc > & | detStore () const | 
|  | The standard StoreGateSvc/DetectorStoreReturns (kind of) a pointer to theStoreGateSvc.  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< TrigJetTLAHypoTool > | m_hypoTools | 
|  | 
| SG::WriteHandleKey< xAOD::JetContainer > | m_TLAjetsKey | 
|  | 
| 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... 
 | 
|  | 
HypoAlg for TLA algorithm. 
HypoAlg needed to associate trigger navigation to jets seleected for writing out by TLA algorithm 
- Author
- Antonio Boveia 
- 
Caterina Doglioni 
- 
Teng Jian Khoo 
- 
Tim Martin 
- 
Rafal Bielski 
Definition at line 29 of file TrigJetTLAHypoAlg.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.
 
 
◆ TrigJetTLAHypoAlg()
      
        
          | TrigJetTLAHypoAlg::TrigJetTLAHypoAlg | ( | 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 TrigJetTLAHypoAlg::execute | ( | const EventContext & | context | ) | const |  | overridevirtual | 
 
Definition at line 32 of file TrigJetTLAHypoAlg.cxx.
   40                               std::make_unique<xAOD::JetAuxContainer>()));
 
   45   ATH_CHECK(previousDecisionHandle.isValid());
 
   46   ATH_MSG_DEBUG(
"Running with " << previousDecisionHandle->size() << 
" previous decisions");
 
   55   for (
const auto previousDecision : *previousDecisionHandle)
 
   60       ATH_MSG_DEBUG(
"This decision has " << prevJets.size() << 
" jets");
 
   63       for (
const auto& 
jet : prevJets)
 
   65           auto prevJetLink = 
jet.link;
 
   67           jetPrev = *prevJetLink;
 
   76           bool duplicate_found(
false);
 
   77           for (
unsigned idx_tla_jet = 0; idx_tla_jet!=h_TLAJets->size(); idx_tla_jet++){
 
   78               const xAOD::Jet* tla_jet = h_TLAJets->at(idx_tla_jet);
 
   80                 ATH_MSG_DEBUG(
"Jet already found! Adding to decision but not to TLA jet container...");
 
   82                 duplicate_found = 
true;
 
   85           if (duplicate_found) 
continue;
 
   88           h_TLAJets->push_back(copiedJet);
 
   89           *copiedJet = *jetPrev;
 
   92           ATH_MSG_DEBUG(
"Copied jet with pT: " << copiedJet->
pt() << 
" and eta "<<copiedJet->
eta()<<
" from decision " << nDecision);
 
  102   ATH_MSG_DEBUG(
"Saved "<<nSavedJets<<
" TLA jets from "<<nDecision<<
" input decisions.");
 
  114   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 TrigJetTLAHypoAlg::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_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_TLAjetsKey
Initial value:{
    this, "TLAOutputName", "TLAOutputName", "TLA jet container key"}
Definition at line 42 of file TrigJetTLAHypoAlg.h.
 
 
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
 
const std::string & featureString()
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
SG::WriteHandleKey< xAOD::JetContainer > m_TLAjetsKey
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()
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)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
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.
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.
#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)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
const ElementLink< IParticleContainer > & getOriginalObjectLink(const IParticle ©)
This function should be used instead of xAOD::getOriginalObject when we want to use the "original obj...
Class used to describe composite objects in the HLT.
const std::string & initialRoIString()
const std::string & hltSeedingNodeName()
virtual double eta() const
The pseudorapidity ( ) of the particle.
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.
ToolHandleArray< TrigJetTLAHypoTool > m_hypoTools
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.
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.
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.
virtual double pt() const
The transverse momentum ( ) of the particle.
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.
Jet_v1 Jet
Definition of the current "jet version".
@ kRequireOne
Require all DecisionIDs to be present in at least one of my parent Decision objects.