|
ATLAS Offline Software
|
Implements egamma calo selection for the new HLT framework.
More...
#include <TrigEgammaFastCaloHypoAlg.h>
|
| TrigEgammaFastCaloHypoAlg (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 > &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 |
|
|
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > | m_clustersKey { this, "CaloClusters", "CaloClusters", "CaloClusters in view" } |
|
SG::ReadHandleKey< xAOD::TrigRingerRingsContainer > | m_ringsKey { this, "RingerKey","HLT_FastCaloRinger","Point to RingerKey"} |
|
ToolHandleArray< ITrigEgammaFastCaloHypoTool > | m_hypoTools { this, "HypoTools", {}, "Hypo tools" } |
|
ToolHandleArray< Ringer::IAsgRingerSelectorTool > | m_ringerNNTools {this, "RingerNNSelectorTools", {}, "Ringer Neural Network tools." } |
|
ToolHandle< ILumiBlockMuTool > | m_lumiBlockMuTool |
|
ToolHandle< GenericMonitoringTool > | m_monTool { this, "MonTool", "", "Monitoring tool" } |
|
Gaudi::Property< std::vector< std::string > > | m_pidNames {this, "PidNames", {}, "Ringer pid names"} |
|
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...
|
|
Implements egamma calo selection for the new HLT framework.
Definition at line 23 of file TrigEgammaFastCaloHypoAlg.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.
◆ TrigEgammaFastCaloHypoAlg()
TrigEgammaFastCaloHypoAlg::TrigEgammaFastCaloHypoAlg |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
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 55 of file AthReentrantAlgorithm.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 16 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 20 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 TrigEgammaFastCaloHypoAlg::execute |
( |
const EventContext & |
context | ) |
const |
|
overridevirtual |
Definition at line 47 of file TrigEgammaFastCaloHypoAlg.cxx.
56 ATH_CHECK( previousDecisionsHandle.isValid() );
57 ATH_MSG_DEBUG(
"Running with "<< previousDecisionsHandle->size() <<
" previous decisions");
65 std::vector<ITrigEgammaFastCaloHypoTool::FastClusterInfo> toolInput;
69 for (
const auto previousDecision: *previousDecisionsHandle )
72 auto roiELInfo = TCU::findLink<TrigRoiDescriptorCollection>( previousDecision,
TCU::initialRoIString() );
84 ATH_MSG_DEBUG (
"Cluster handle size: " << clusterHandle->size() <<
"..." );
85 auto emCluster = clusterHandle.cptr()->at(0);
86 ATH_MSG_DEBUG(
"Event cluster with eta = "<< emCluster->eta());
91 ATH_MSG_DEBUG (
"Rings handle size: " << ringsHandle->size() <<
"..." );
93 auto ringsCluster = ringsHandle.cptr()->at(0);
102 info.valueDecorator[
"avgmu"] = avgmu;
106 if(ringsCluster && emCluster && !ringsCluster->rings().empty() )
110 timer_predict.start();
112 timer_predict.stop();
114 info.valueDecorator[pidname+
"NNOutput"] = nnOutput;
119 toolInput.push_back(
info );
133 d->setObjectLink(
"ringer", rings );
143 ATH_MSG_DEBUG(
"Added view, roi, cluster, previous decision to new decision " <<
counter <<
" for view " << (*viewEL)->name() );
147 ATH_MSG_DEBUG(
"Found "<<toolInput.size()<<
" inputs to tools");
156 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()
const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ hypoBaseOutputProcessing()
Base class function to be called once slice specific code has finished. Handles debug printing and validation.
Definition at line 33 of file HypoBase.cxx.
41 return StatusCode::SUCCESS;
◆ initialize()
StatusCode TrigEgammaFastCaloHypoAlg::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()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, InDet::SiSPGNNTrackMaker, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ 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 388 of file HypoBase.cxx.
389 msg << MSG::ERROR <<
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" <<
endmsg;
◆ printDebugInformation()
Common base function to print information on chains passed by objects considered in the hypo.
Definition at line 404 of file HypoBase.cxx.
407 msg() <<
"Exiting with " << outputHandle->
size() <<
" Decision objects" <<
endmsg;
412 msg() <<
"Number of positive decisions for Decision object #" <<
count++ <<
": " << objDecisions.size() <<
endmsg;
418 return StatusCode::SUCCESS;
◆ printErrorHeader()
A problem was found, print common output data.
Definition at line 393 of file HypoBase.cxx.
397 msg << MSG::ERROR <<
"! RUNTIME TRIGGER NAVIGATION VALIDATION ERROR" <<
endmsg;
398 msg << MSG::ERROR <<
"! Caused by Decision with index:" << (*dEL)->index() <<
endmsg;
400 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 69 of file HypoBase.cxx.
76 if (onlyValidateOneStep && callDepth > 0) {
80 return StatusCode::SUCCESS;
88 return StatusCode::FAILURE;
93 return StatusCode::FAILURE;
99 return StatusCode::FAILURE;
102 return StatusCode::FAILURE;
107 return StatusCode::FAILURE;
110 return StatusCode::FAILURE;
116 if (fullyExploredFrom.count( (*seed) ) == 1) {
119 if ( not
seed.isValid() ) {
120 msg << MSG::ERROR <<
"Invalid seed element link in recursiveValidateGraph" <<
endmsg;
121 return StatusCode::FAILURE;
123 if (
recursiveValidateGraph(seed,
msg, onlyValidateOneStep, runTwoConversion, callDepth + 1, fullyExploredFrom).isFailure() ) {
124 return StatusCode::FAILURE;
128 fullyExploredFrom.insert( *dEL );
129 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ runtimeValidation()
Executes all individual runtime tests.
Definition at line 45 of file HypoBase.cxx.
51 std::set<const Decision*> fullyExploredFrom;
56 msg << MSG::ERROR <<
"Invalid seed element link in recursiveValidateGraph" <<
endmsg;
57 return StatusCode::FAILURE;
62 return StatusCode::FAILURE;
65 return StatusCode::SUCCESS;
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::sysExecute |
( |
const EventContext & |
ctx | ) |
|
|
overridevirtualinherited |
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 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ 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 207 of file HypoBase.cxx.
217 msg << MSG::ERROR <<
"! Decision contains an ID which does not correspond to a configured chain or a configured chain-leg: " <<
HLT::Identifier(
id ) <<
endmsg;
218 msg << MSG::ERROR <<
"! SOLUTION: Locate the producer of the collection, investigate how this bad ID could have been added." <<
endmsg;
220 return StatusCode::FAILURE;
223 return StatusCode::SUCCESS;
◆ validateDuplicatedDecisionID()
Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects.
Definition at line 227 of file HypoBase.cxx.
233 if (decisionIDSet.size() != (*dEL)->decisions().size()) {
235 msg << MSG::ERROR <<
"! Decision contains duplicate DecisionIDs." <<
endmsg;
236 msg << MSG::ERROR <<
"! SOLUTION: If combining DecisionIDs from multiple parents, de-duplicate the internal std::vector<DecisionID> of 'Decision* d' with:" <<
endmsg;
237 msg << MSG::ERROR <<
"! TrigCompositeUtils::insertDecisionIDs(DecisionIDContainer(), d);" <<
endmsg;
239 return StatusCode::FAILURE;
241 return StatusCode::SUCCESS;
◆ validateHasLinks()
Ensure all Decisions have the named ElementLink graph edges which they are required to by spec.
Definition at line 336 of file HypoBase.cxx.
339 const std::string&
name = (*dEL)->name();
344 return StatusCode::SUCCESS;
348 msg << MSG::ERROR <<
"! Every Decision created by a HypoAlg must correspond to some physics object, and be linked to the object." <<
endmsg;
349 msg << MSG::ERROR <<
"! SOLUTION: Ensure that all produced Decision objects are assigned their feature:" <<
endmsg;
350 msg << MSG::ERROR <<
"! SOLUTION: decision->setObjectLink<MY_FEATURE_CONTANER_TYPE>(featureString(), MY_FEATURE_ELEMENT_LINK);" <<
endmsg;
352 return StatusCode::FAILURE;
358 if ((*dEL)->hasDetail<int32_t>(
"isEmpty") and (*dEL)->getDetail<int32_t>(
"isEmpty") == 1) {
362 if (not (*dEL)->hasObjectLink(
roiString() ) and not exempt) {
364 msg << MSG::ERROR <<
"! Decision has no '" <<
roiString() <<
"' ElementLink." <<
endmsg;
365 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;
366 msg << MSG::ERROR <<
"! It can be the FullScan ROI created by the HLTSeeding (FSNOSEED) if no other suitable ROI exists." <<
endmsg;
367 msg << MSG::ERROR <<
"! SOLUTION: Check the configuration of InputMakerForRoI or EventViewCreatorAlgorithm responsible for creating this Decision Object" <<
endmsg;
368 msg << MSG::ERROR <<
"! SOLUTION: The algorithm must have an ROITool which must attach an '"<<
roiString() <<
"' link to each Decision Object" <<
endmsg;
377 msg << MSG::ERROR <<
"! Every Decision created by the HLTSeeding must link to the initial ROI which caused it to be created." <<
endmsg;
378 msg << MSG::ERROR <<
"! This includes the Decision Object created to represent the Full-Scan/NoSeed (FSNOSEED) ROI." <<
endmsg;
379 msg << MSG::ERROR <<
"! SOLUTION: Check the configuration of the HLTSeeding tool responsible for creating this Decision Object" <<
endmsg;
384 return StatusCode::SUCCESS;
◆ validateLogicalFlow()
Ensure that all DecisionIDs have propagated correctly from their parent.
Definition at line 245 of file HypoBase.cxx.
251 return StatusCode::SUCCESS;
260 size_t parentsWithDecision = 0;
262 if ( not
seed.isValid() ) {
263 msg << MSG::ERROR <<
"Invalid seed element link in recursiveValidateGraph" <<
endmsg;
264 return StatusCode::FAILURE;
272 ++parentsWithDecision;
275 for (
auto sid: seedIDSet){
277 ++parentsWithDecision;
288 msg << MSG::ERROR <<
"! This Decision object is not respecting logical flow of DecisionIDs for chain: " <<
HLT::Identifier(
id ) <<
endmsg;
289 msg << MSG::ERROR <<
"! This chain's DecisionID can not be found in any parents of this Decision object:" <<
endmsg;
292 msg << MSG::ERROR <<
"! Index:" << (*seed)->index() <<
" from collection:" <<
seed.dataID() <<
endmsg;
301 msg << MSG::ERROR <<
"! SOLUTION: Ensure that the producer of this Decision object only adds DecisionIDs"
302 " which were present in at least one of its parents." <<
endmsg;
304 return StatusCode::FAILURE;
305 }
else if (
mode ==
kRequireAll && parentsWithDecision != seeds.size()) {
312 msg << MSG::ERROR <<
"! This Decision object is not respecting logical flow of DecisionIDs for chain: " <<
HLT::Identifier(
id ) <<
endmsg;
313 msg << MSG::ERROR <<
"! As this Decision object represents the output of a HypoAlg, it must respect logical flow on all "
314 << seeds.size() <<
" of its parent(s):" <<
endmsg;
317 msg << MSG::ERROR <<
"! Index:" << (*seed)->index() <<
" from collection:" <<
seed.dataID() <<
endmsg;
326 msg << MSG::ERROR <<
"! SOLUTION: Ensure that the HypoTool responsible for " <<
HLT::Identifier(
id )
327 <<
" in this HypoAlg only runs if this ID is present in all parent decisions." <<
endmsg;
329 return StatusCode::FAILURE;
332 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 133 of file HypoBase.cxx.
139 const std::string&
name = (*dEL)->name();
142 msg << MSG::ERROR <<
"! Decision has zero parents. This is only allowed for the initial Decisions created by the HLTSeeding." <<
endmsg;
143 msg << MSG::ERROR <<
"! SOLUTION: Attach parent Decision(s) with TrigCompositeUtils::linkToPrevious" <<
endmsg;
145 return StatusCode::FAILURE;
149 if (seeds.size() > 0) {
151 msg << MSG::ERROR <<
"! Decision has parents. This is not allowed for the initial Decisions created by the HLTSeeding." <<
endmsg;
152 msg << MSG::ERROR <<
"! SOLUTION: Check HLTSeeding, no where should it be adding a parent link." <<
endmsg;
154 return StatusCode::FAILURE;
156 return StatusCode::SUCCESS;
160 static const std::set<std::string> expectedParentsInputMaker = {
filterNodeName()};
164 static const std::set<std::string> expectedParentsSummaryPassed = {
"SF"};
166 const std::set<std::string>* expectedParentsPtr =
nullptr;
168 expectedParentsPtr = &expectedParentsFilter;
170 expectedParentsPtr = &expectedParentsInputMaker;
172 expectedParentsPtr = &expectedParentsFilter;
174 expectedParentsPtr = &expectedParentsHypoAlg;
176 expectedParentsPtr = &expectedParentsComboHypoAlg;
177 }
else if (
name ==
"SF") {
178 expectedParentsPtr = &expectedParentsSummaryFilter;
179 }
else if (
name ==
"HLTPassRaw") {
180 expectedParentsPtr = &expectedParentsSummaryPassed;
183 msg << MSG::ERROR <<
"! Invalid Node name '" <<
name <<
"'." <<
endmsg;
184 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;
186 return StatusCode::FAILURE;
190 if (expectedParentsPtr->count( (*seed)->name() ) == 0) {
192 msg << MSG::ERROR <<
"! Invalid linking from node with name '" <<
name <<
"' to one with name '"<< (*seed)->name() <<
"'." <<
endmsg;
193 msg << MSG::ERROR <<
"! Allowed seed names are:" <<
endmsg;
194 for (
const std::string& allowed : *expectedParentsPtr) {
195 msg << MSG::ERROR <<
"! " << allowed <<
endmsg;
197 msg << MSG::ERROR <<
"! SOLUTION: Find where this invalid parent was added and correct it." <<
endmsg;
199 return StatusCode::FAILURE;
203 return StatusCode::SUCCESS;
◆ m_clustersKey
◆ m_detStore
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_hypoTools
◆ m_input
◆ m_lumiBlockMuTool
◆ m_monTool
◆ m_output
◆ m_pidNames
Gaudi::Property<std::vector<std::string> > TrigEgammaFastCaloHypoAlg::m_pidNames {this, "PidNames", {}, "Ringer pid names"} |
|
private |
◆ m_ringerNNTools
ToolHandleArray<Ringer::IAsgRingerSelectorTool> TrigEgammaFastCaloHypoAlg::m_ringerNNTools {this, "RingerNNSelectorTools", {}, "Ringer Neural Network tools." } |
|
private |
◆ m_ringsKey
◆ 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_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
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
const std::string & hltSeedingNodeName()
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.
ToolHandle< GenericMonitoringTool > m_monTool
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
ElementLink< T > makeLink(const SG::View *view, const SG::ReadHandle< T > &handle, size_t index)
Create EL to a collection in view.
const std::string & hypoAlgNodeName()
StatusCode accept(const xAOD::Muon *mu)
SG::ReadHandle< T > makeHandle(const SG::View *view, const SG::ReadHandleKey< T > &rhKey, const EventContext &context)
navigate from the TrigComposite to nearest view and fetch object from it
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.
nope - should be used for standalone also, perhaps need to protect the class def bits #ifndef XAOD_AN...
ToolHandle< ILumiBlockMuTool > m_lumiBlockMuTool
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.
def timer(name, disabled=False)
virtual void setOwner(IDataHandleHolder *o)=0
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
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...
SG::ReadHandleKey< xAOD::TrigRingerRingsContainer > m_ringsKey
static StatusCode validateDuplicatedDecisionID(const ElementLink< TrigCompositeUtils::DecisionContainer > &dEL, MsgStream &msg)
Ensure that no space is being wasted by duplicated DecisionIDs in any Decision objects.
const std::string & initialRoIString()
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.
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > m_input
input decisions
#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.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
SG::ReadHandleKey< xAOD::TrigEMClusterContainer > m_clustersKey
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
const std::string & featureString()
bool isChainId(const HLT::Identifier &chainIdentifier)
Recognise whether the HLT identifier corresponds to a whole chain.
virtual StatusCode sysInitialize() override
Override sysInitialize.
const std::string & filterNodeName()
void linkToPrevious(Decision *d, const std::string &previousCollectionKey, size_t previousIndex)
Links to the previous object, location of previous 'seed' decision supplied by hand.
const std::string & seedString()
std::set< DecisionID > DecisionIDContainer
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...
HypoBase(const std::string &name, ISvcLocator *pSvcLocator)
constructor, to be called by sub-class constructors
Gaudi::Property< std::vector< std::string > > m_pidNames
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
std::string name() const
reports human redable name if it is enabled or, empty string
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > m_output
output decisions
const std::string & roiString()
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.
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.
setBGCode setTAP setLVL2ErrorBits bool
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.
const std::string & viewString()
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
@ kRequireOne
Require all DecisionIDs to be present in at least one of my parent Decision objects.
const std::string & inputMakerNodeName()
ToolHandleArray< ITrigEgammaFastCaloHypoTool > m_hypoTools
ToolHandleArray< Ringer::IAsgRingerSelectorTool > m_ringerNNTools