![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <Run2ToRun3TrigNavConverterV2.h>
|
| Run2ToRun3TrigNavConverterV2 (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual | ~Run2ToRun3TrigNavConverterV2 () override |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute (const EventContext &context) const override |
|
virtual StatusCode | finalize () override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. 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 |
|
|
StatusCode | extractTECtoChainMapping (TEIdToChainsMap_t &allTES, TEIdToChainsMap_t &finalTEs) const |
|
StatusCode | mirrorTEsStructure (ConvProxySet_t &, const HLT::TrigNavStructure &run2Nav) const |
|
StatusCode | associateChainsToProxies (ConvProxySet_t &, const TEIdToChainsMap_t &) const |
|
StatusCode | cureUnassociatedProxies (ConvProxySet_t &) const |
|
StatusCode | removeUnassociatedProxies (ConvProxySet_t &) const |
|
StatusCode | doCompression (ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const |
|
StatusCode | collapseFeaturesProxies (ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const |
|
StatusCode | collapseFeaturelessProxies (ConvProxySet_t &) const |
|
StatusCode | removeTopologicalProxies (ConvProxySet_t &) const |
|
template<typename MAP > |
StatusCode | collapseProxies (ConvProxySet_t &, MAP &) const |
|
StatusCode | fillRelevantFeatures (ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const |
|
StatusCode | fillRelevantTracks (ConvProxySet_t &convProxies) const |
|
StatusCode | fillRelevantRois (ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const |
|
StatusCode | createIMHNodes (ConvProxySet_t &, xAOD::TrigCompositeContainer &, const EventContext &) const |
|
StatusCode | createL1Nodes (const ConvProxySet_t &convProxies, xAOD::TrigCompositeContainer &decisions, const EventContext &context) const |
|
StatusCode | createSFNodes (const ConvProxySet_t &, xAOD::TrigCompositeContainer &, const TEIdToChainsMap_t &finalTEs, const EventContext &context) const |
|
StatusCode | updateTerminusNode (xAOD::TrigCompositeContainer &, const EventContext &context) const |
|
StatusCode | linkFeaNode (ConvProxySet_t &convProxies, xAOD::TrigCompositeContainer &, const HLT::TrigNavStructure &run2Nav, const EventContext &context) const |
|
StatusCode | linkRoiNode (ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const |
|
StatusCode | linkTrkNode (ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const |
|
std::vector< HLT::TriggerElement::FeatureAccessHelper > | filterFEAs (const std::vector< HLT::TriggerElement::FeatureAccessHelper > &feaVector, const HLT::TrigNavStructure &navigationDecoder) const |
| < both method skip TrigPassBits More...
|
|
uint64_t | feaToHash (const std::vector< HLT::TriggerElement::FeatureAccessHelper > &feaVector, const HLT::TriggerElement *te_ptr, const HLT::TrigNavStructure &navigationDecoder) const |
| returns true if this particular feature is to be saved (linked) More...
|
|
bool | feaToSave (const HLT::TriggerElement::FeatureAccessHelper &fea) const |
|
bool | roiToSave (const HLT::TrigNavStructure &run2Nav, const HLT::TriggerElement::FeatureAccessHelper &fea) const |
|
void | printProxies (const ConvProxySet_t &proxies, std::function< bool(const ConvProxy *)> selector=[](const ConvProxy *){return true;}, const std::vector< std::function< void(const ConvProxy *)>> &printers={}) const |
|
size_t | is2LegTopoChain (const TrigConf::HLTChain *ptrChain) const |
|
std::size_t | getFeaSize (const ConvProxy &) const |
|
StatusCode | allProxiesHaveChain (const ConvProxySet_t &) const |
|
StatusCode | allProxiesConnected (const ConvProxySet_t &) const |
|
StatusCode | numberOfHNodesPerProxyNotExcessive (const ConvProxySet_t &) const |
|
StatusCode | noUnconnectedHNodes (const xAOD::TrigCompositeContainer &) const |
|
std::tuple< uint32_t, CLID, std::string > | getSgKey (const HLT::TrigNavStructure &navigationDecoder, const HLT::TriggerElement::FeatureAccessHelper &helper) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
SG::ReadHandleKey< xAOD::TrigNavigation > | m_trigNavKey {this, "TrigNavReadKey", "TrigNavigation"} |
|
PublicToolHandle< Trig::TrigDecisionTool > | m_tdt {this, "TrigDecisionTool", "", "When enabled read navigation from TDT/off by default"} |
|
ServiceHandle< TrigConf::IHLTConfigSvc > | m_configSvc {this, "TrigConfigSvc", "TrigConf::xAODConfigSvc/xAODConfigSvc", "Trigger configuration service"} |
|
ServiceHandle< IClassIDSvc > | m_clidSvc {this, "ClassIDSvc", "ClassIDSvc", "Service to translate CLID to class name"} |
|
Gaudi::Property< bool > | m_doSelfValidation {this, "doSelfValidation", false, "Run consistency checks after stages of conversion (slows down the alg)"} |
|
Gaudi::Property< bool > | m_doCompression {this, "doCompression", false, "Collapse navigation elements to save ouput space"} |
|
Gaudi::Property< bool > | m_doLinkFeatures {this, "doLinkFeatures", true, "Add links to objects, setting it false makes sense when running tests"} |
|
Gaudi::Property< bool > | m_includeTauTrackFeatures {this, "addTauTracks", false, "Add Tau Track collection as feature element"} |
|
Gaudi::Property< size_t > | m_hNodesPerProxyThreshold {this, "hNodesPerProxyThreshhold", 15, "Limit number of H nodes per TE (if exceeded conversion results in an error)"} |
|
Gaudi::Property< std::vector< std::string > > | m_chainsToSave {this, "Chains", {}, "If not specified, all chains are handled"} |
|
Gaudi::Property< std::vector< std::string > > | m_collectionsToSave {this, "Collections", {}} |
|
Gaudi::Property< std::vector< std::string > > | m_roisToSave {this, "Rois", {}} |
|
SG::WriteHandleKey< xAOD::TrigCompositeContainer > | m_trigOutputNavKey {this, "OutputNavKey", "HLTNav_R2ToR3Summary"} |
|
std::mutex | m_configUpdateMutex |
|
TEIdToChainsMap_t | m_allTEIdsToChains |
|
TEIdToChainsMap_t | m_finalTEIdsToChains |
|
std::function< void(const ConvProxy *)> | m_chainIdsPrinter = [&](const ConvProxy* p){ for (auto id: p->passChains ) ATH_MSG_DEBUG("chain id " << id); } |
|
std::function< void(const ConvProxy *)> | m_teIDPrinter = [&](const ConvProxy* p){ ATH_MSG_DEBUG("TE id " << TrigConf::HLTUtils::hash2string(p->te->getId())); } |
|
std::map< CLID, std::set< std::string > > | m_collectionsToSaveDecoded |
|
std::vector< std::string > | m_setRoiName |
|
CLID | m_roIDescriptorCLID {0} |
|
CLID | m_roIDescriptorCollectionCLID {0} |
|
CLID | m_TrigRingerRingsCLID {0} |
|
CLID | m_TrigRingerRingsContainerCLID {0} |
|
CLID | m_TrigEMClusterCLID {0} |
|
CLID | m_TrigEMClusterContainerCLID {0} |
|
CLID | m_CaloClusterCLID {0} |
|
CLID | m_CaloClusterContainerCLID {0} |
|
CLID | m_TrackParticleContainerCLID {0} |
|
CLID | m_TauTrackContainerCLID {0} |
|
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 |
|
◆ StoreGateSvc_t
◆ Run2ToRun3TrigNavConverterV2()
Run2ToRun3TrigNavConverterV2::Run2ToRun3TrigNavConverterV2 |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~Run2ToRun3TrigNavConverterV2()
Run2ToRun3TrigNavConverterV2::~Run2ToRun3TrigNavConverterV2 |
( |
| ) |
|
|
overridevirtual |
◆ allProxiesConnected()
StatusCode Run2ToRun3TrigNavConverterV2::allProxiesConnected |
( |
const ConvProxySet_t & |
proxies | ) |
const |
|
private |
Definition at line 1406 of file Run2ToRun3TrigNavConverterV2.cxx.
1408 for (
auto p : proxies)
1410 if (
p->children.empty() and
p->parents.empty() and not
p->runChains.empty())
1412 ATH_MSG_ERROR(
"Orphanted proxy N chains run:" <<
p->runChains.size());
1413 return StatusCode::FAILURE;
1417 return StatusCode::SUCCESS;
◆ allProxiesHaveChain()
StatusCode Run2ToRun3TrigNavConverterV2::allProxiesHaveChain |
( |
const ConvProxySet_t & |
proxies | ) |
const |
|
private |
Definition at line 1392 of file Run2ToRun3TrigNavConverterV2.cxx.
1394 for (
auto p : proxies)
1396 if (
p->runChains.empty())
1399 return StatusCode::FAILURE;
1403 return StatusCode::SUCCESS;
◆ associateChainsToProxies()
Definition at line 612 of file Run2ToRun3TrigNavConverterV2.cxx.
615 for (
auto &ptrConvProxy : convProxies)
617 auto teId = ptrConvProxy->te->getId();
618 bool teActive = ptrConvProxy->te->getActiveState();
619 auto iter = allTEs.find(
teId);
620 if (iter != allTEs.end())
622 ptrConvProxy->runChains.insert(iter->second.begin(), iter->second.end());
625 ptrConvProxy->passChains.insert(iter->second.begin(), iter->second.end());
629 for (
auto &objTeIdToChain : allTEs)
631 if (
teId == objTeIdToChain.first)
633 for (
auto &chainId : objTeIdToChain.second)
635 (ptrConvProxy->runChains).insert(chainId);
641 return StatusCode::SUCCESS;
◆ 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.
◆ collapseFeaturelessProxies()
StatusCode Run2ToRun3TrigNavConverterV2::collapseFeaturelessProxies |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
Definition at line 799 of file Run2ToRun3TrigNavConverterV2.cxx.
802 struct ParentChildCharacteristics
806 size_t distanceFromParent = 0;
807 bool operator<(
const ParentChildCharacteristics &rhs)
const
810 return parent < rhs.parent;
811 if (child != rhs.child)
812 return child < rhs.child;
813 return distanceFromParent < rhs.distanceFromParent;
816 const size_t beforeCount = convProxies.size();
817 std::map<ParentChildCharacteristics, ConvProxySet_t> groupedProxies;
818 for (
auto proxy : convProxies)
831 if (
proxy->children.size() == 1 and
832 std::all_of(
proxy->children.begin(),
proxy->children.end(), hasSomeFeatures ) and
833 proxy->parents.size() == 1 and
834 std::all_of(
proxy->parents.begin(),
proxy->parents.end(), hasSomeFeatures )
838 groupedProxies[{*(
proxy->parents.begin()), *(
proxy->children.begin()), 0}].insert(
proxy);
845 for (
auto pp :
proxy->parents)
850 for (
auto cp :
proxy->children)
859 ATH_MSG_DEBUG(
"Proxies without features collapsing reduces size from " << beforeCount <<
" to " << convProxies.size());
860 return StatusCode::SUCCESS;
◆ collapseFeaturesProxies()
Definition at line 751 of file Run2ToRun3TrigNavConverterV2.cxx.
754 const size_t beforeCount = convProxies.size();
755 std::map<uint64_t, ConvProxySet_t> feaToProxyMap;
756 for (
auto proxy : convProxies)
769 for (
auto [feaHash, proxies] : feaToProxyMap)
771 auto first = *proxies.begin();
772 for (
auto p : proxies)
775 filterFEAs(
p->te->getFeatureAccessHelpers(), run2Nav))
777 ATH_MSG_ERROR(
"Proxies grouped by FEA hash have actually distinct features (specific FEAs are different)");
778 for (
auto id:
p->passChains )
ATH_MSG_ERROR(
"... chain id for this proxy " <<
id);
780 for (
auto fea:
first->te->getFeatureAccessHelpers() ) {
783 for (
auto fea:
p->te->getFeatureAccessHelpers() ) {
787 return StatusCode::FAILURE;
794 ATH_MSG_DEBUG(
"Proxies with features collapsing reduces size from " << beforeCount <<
" to " << convProxies.size());
796 return StatusCode::SUCCESS;
◆ collapseProxies()
template<typename MAP >
StatusCode Run2ToRun3TrigNavConverterV2::collapseProxies |
( |
ConvProxySet_t & |
convProxies, |
|
|
MAP & |
keyToProxyMap |
|
) |
| const |
|
private |
Definition at line 722 of file Run2ToRun3TrigNavConverterV2.cxx.
725 std::vector<ConvProxy *> todelete;
726 for (
auto &[
key, proxies] : keyToProxyMap)
728 if (proxies.size() > 1)
730 ATH_MSG_DEBUG(
"Merging " << proxies.size() <<
" similar proxies");
731 for (
auto p : proxies)
733 if (
p->mergeAllowed(*proxies.begin()))
735 (*proxies.begin())->
merge(
p);
736 todelete.push_back(
p);
742 for (
auto proxy : todelete)
744 convProxies.erase(
proxy);
748 return StatusCode::SUCCESS;
◆ createIMHNodes()
Definition at line 996 of file Run2ToRun3TrigNavConverterV2.cxx.
998 for (
auto &
proxy : convProxies)
1001 for (
auto chainId :
proxy->runChains)
1006 for (
auto chainId :
proxy->passChains)
1014 for (
auto &
proxy : convProxies)
1016 for (
auto &parentProxy :
proxy->parents)
1022 return StatusCode::SUCCESS;
◆ createL1Nodes()
Definition at line 1141 of file Run2ToRun3TrigNavConverterV2.cxx.
1145 auto makeL1Node = [&
decisions, &context](
auto firstDecisionNode,
auto chainIds)
1149 for (
auto chainId : chainIds)
1158 for (
auto &
proxy : convProxies)
1161 if (
proxy->parents.empty())
1168 return StatusCode::SUCCESS;
◆ createSFNodes()
Definition at line 1025 of file Run2ToRun3TrigNavConverterV2.cxx.
1032 sfNode->setName(
"SF");
1035 for (
auto chainId : chainIds)
1042 else if (chainId.numeric() == idStore)
1052 if (
proxy->hNode.empty())
1055 makeSingleSFNode(
proxy->imNode,
proxy->runChains, idToStore);
1060 for (
auto &hNode :
proxy->hNode)
1062 makeSingleSFNode(hNode,
proxy->passChains, idToStore);
1067 for (
auto proxy : convProxies)
1070 if (
proxy->children.empty())
1078 std::vector<TCU::DecisionID> toRetain;
1081 auto whereInMap = terminalIds.find(
teId);
1082 if (whereInMap != terminalIds.end())
1084 toRetain.insert(toRetain.end(), whereInMap->second.begin(), whereInMap->second.end());
1087 for (
auto chainIdstore : toRetain)
1089 makeSFNodes(
proxy, chainIdstore);
1096 return StatusCode::SUCCESS;
◆ cureUnassociatedProxies()
StatusCode Run2ToRun3TrigNavConverterV2::cureUnassociatedProxies |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
Definition at line 644 of file Run2ToRun3TrigNavConverterV2.cxx.
652 size_t numberOfUpdates = 0;
653 for (
auto p : convProxies)
655 for (
auto child :
p->children)
657 size_t startSize =
p->runChains.size();
660 if (startSize !=
p->runChains.size())
668 ATH_MSG_DEBUG(
"Needed to propagate chains from " << numberOfUpdates <<
" child(ren)");
669 if (numberOfUpdates == 0)
674 return StatusCode::SUCCESS;
◆ 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()
◆ doCompression()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode Run2ToRun3TrigNavConverterV2::execute |
( |
const EventContext & |
context | ) |
const |
|
overridevirtual |
Definition at line 246 of file Run2ToRun3TrigNavConverterV2.cxx.
267 standaloneNav.
deserialize(navReadHandle->serialized());
268 run2NavigationPtr = &standaloneNav;
272 run2NavigationPtr =
m_tdt->ExperimentalAndExpertMethods().getNavigation();
296 ATH_MSG_DEBUG(
"Removed proxies to chains that are not converted, remaining number of elements " << convProxies.size());
311 auto decisionOutput = outputNavigation.
ptr();
334 ATH_MSG_DEBUG(
"Conversion done, from " << convProxies.size() <<
" elements to " << decisionOutput->size() <<
" elements");
340 for (
auto o: *decisionOutput) {
346 for (
auto proxy : convProxies)
351 return StatusCode::SUCCESS;
◆ extractTECtoChainMapping()
Definition at line 398 of file Run2ToRun3TrigNavConverterV2.cxx.
406 std::string
chainName = ptrChain->name();
417 std::map<HLT::te_id_type, HLT::te_id_type> etcutReplacementTEs;
418 auto etcutReplacement = [&etcutReplacementTEs](
HLT::te_id_type in) {
auto out = etcutReplacementTEs.find(in);
return (
out == etcutReplacementTEs.end() ? in :
out->second ); };
419 if (
chainName.find(
"etcut") != std::string::npos ) {
420 std::set<size_t> positionsOfEtCutLegs;
423 ATH_MSG_DEBUG(
"EtCut chains hack, chain with two etcut legs ");
424 positionsOfEtCutLegs.insert({0, 1});
426 ATH_MSG_DEBUG(
"EtCut chains hack, egamma chain with second etcut leg ");
427 positionsOfEtCutLegs.insert({1});
430 positionsOfEtCutLegs.insert({0});
434 std::map<size_t, HLT::te_id_type> positionToDesiredIDmap;
435 for (
auto ptrHLTSignature : ptrChain->signatures()) {
437 for (
auto ptrHLTTE : ptrHLTSignature->outputTEs()) {
438 if (positionsOfEtCutLegs.count(position) and positionToDesiredIDmap.find(position) != positionToDesiredIDmap.end() ) {
439 etcutReplacementTEs[ptrHLTTE->id()] = positionToDesiredIDmap[position];
442 if ( ptrHLTTE->name().find(
"calocalib") != std::string::npos and positionsOfEtCutLegs.count(position) ) {
443 positionToDesiredIDmap[position] = ptrHLTTE->id();
454 for (
auto ptrHLTSignature : ptrChain->signatures()) {
455 for (
auto ptrHLTTE : ptrHLTSignature->outputTEs()) {
456 unsigned int teId = etcutReplacement(ptrHLTTE->id());
457 allTEs[
teId].insert(chainId);
458 if (ptrHLTSignature == ptrChain->signatures().back()) {
459 finalTEs[
teId].insert(chainId);
460 ATH_MSG_DEBUG(
"TE will be used to mark final chain decision " << ptrHLTTE->name() <<
" chain " <<
chainName );
486 std::vector<unsigned int> teIdsLastHealthyStepIds;
488 for (
auto ptrHLTSignature : ptrChain->signatures())
490 std::vector<int> teCounts;
491 std::vector<unsigned int> teIds;
492 unsigned int lastSeenId = 0;
493 for (
auto ptrHLTTE : ptrHLTSignature->outputTEs())
495 if ( lastSeenId != ptrHLTTE->id()) {
496 teCounts.push_back(1);
497 teIds.push_back(ptrHLTTE->id());
501 lastSeenId = ptrHLTTE->id();
504 ATH_MSG_DEBUG(
"TE multiplicities seen in this step " << teCounts);
508 if ( multiplicityCounts ) {
509 teIdsLastHealthyStepIds = teIds;
510 ATH_MSG_DEBUG(
"There is a match, will assign chain leg IDs to TEs " << teCounts <<
" " << teIds);
511 for (
size_t legNumber = 0; legNumber < teIds.size(); ++ legNumber){
513 allTEs[etcutReplacement(teIds[legNumber])].insert(chainLegId);
517 for (
size_t legNumber = 0; legNumber < teIdsLastHealthyStepIds.size(); ++ legNumber ) {
520 ATH_MSG_DEBUG(
"created leg id " << chainLegId <<
" that will replace TE ID " << etcutReplacement(teIdsLastHealthyStepIds[legNumber]));
521 finalTEs[etcutReplacement(teIdsLastHealthyStepIds[legNumber])].insert(chainLegId);
526 ATH_MSG_DEBUG(
"Recognised " << allTEs.size() <<
" kinds of TEs and among them " << finalTEs.size() <<
" final types");
527 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();
◆ feaToHash()
returns true if this particular feature is to be saved (linked)
Definition at line 1354 of file Run2ToRun3TrigNavConverterV2.cxx.
1359 for (
auto fea :
filterFEAs(feaVector, navigationDecoder))
1361 ATH_MSG_VERBOSE(
"Including FEA in hash CLID: " << fea.getCLID() <<
" te Id: " << te_ptr->
getId());
1362 boost::hash_combine(
hash, fea.getCLID());
1363 boost::hash_combine(
hash, fea.getIndex().subTypeIndex());
1364 boost::hash_combine(
hash, fea.getIndex().objectsBegin());
1365 boost::hash_combine(
hash, fea.getIndex().objectsEnd());
◆ feaToSave()
◆ fillRelevantFeatures()
◆ fillRelevantRois()
Definition at line 915 of file Run2ToRun3TrigNavConverterV2.cxx.
919 auto ordered_sorter = [&setRoiName = std::as_const(
m_setRoiName)](
const std::string &left,
const std::string &right) ->
bool
921 return std::find(cbegin(setRoiName), cend(setRoiName), left) <
std::find(cbegin(setRoiName), cend(setRoiName), right);
926 for (
auto &
proxy : convProxies)
930 ATH_MSG_DEBUG(
"Several RoIs pointing to a proxy, taking latest one for now");
946 [](
const std::map<std::string, HLT::TriggerElement::FeatureAccessHelper>::value_type &
p)
947 { return p.second; });
951 std::set<const ConvProxy*> visited;
952 std::function<void(std::set<ConvProxy *> &,
const std::vector<HLT::TriggerElement::FeatureAccessHelper> &)>
953 roiPropagator = [&](std::set<ConvProxy *> &convProxyChildren,
const std::vector<HLT::TriggerElement::FeatureAccessHelper> &roiParent)
955 for (
auto &proxyChild : convProxyChildren)
957 if ( visited.count(proxyChild) == 1 ) {
960 visited.insert(proxyChild);
961 if (proxyChild->rois.empty())
963 proxyChild->rois = roiParent;
964 if (proxyChild->children.empty() ==
false)
966 roiPropagator(proxyChild->children, roiParent);
972 for (
auto &
proxy : convProxies)
977 return StatusCode::SUCCESS;
◆ fillRelevantTracks()
StatusCode Run2ToRun3TrigNavConverterV2::fillRelevantTracks |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
◆ filterFEAs()
< both method skip TrigPassBits
Definition at line 1332 of file Run2ToRun3TrigNavConverterV2.cxx.
1333 std::vector<HLT::TriggerElement::FeatureAccessHelper>
out;
1334 for (
auto fea : feaVector)
1342 auto [sgKey, sgCLID, sgName] =
getSgKey(navigationDecoder, fea);
1346 ATH_MSG_VERBOSE(
"Skipping unrecorded (missing in SG) FEA hash calculation - name in SG: " << sgName <<
" FEA " << fea);
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ finalize()
StatusCode Run2ToRun3TrigNavConverterV2::finalize |
( |
| ) |
|
|
overridevirtual |
◆ getFeaSize()
std::size_t Run2ToRun3TrigNavConverterV2::getFeaSize |
( |
const ConvProxy & |
proxy | ) |
const |
|
private |
Definition at line 1171 of file Run2ToRun3TrigNavConverterV2.cxx.
1174 if (
proxy.features.empty())
1178 for (
const auto &fea :
proxy.features)
1180 if (fea.getIndex().objectsBegin() == fea.getIndex().objectsEnd())
1184 for (
auto n = fea.getIndex().objectsBegin();
n < fea.getIndex().objectsEnd(); ++
n)
◆ getSgKey()
Definition at line 1456 of file Run2ToRun3TrigNavConverterV2.cxx.
1458 const std::string hltLabel = navigationDecoder.
label(
helper.getCLID(),
helper.getIndex().subTypeIndex());
1460 const CLID saveCLID = [&](
const CLID &clid)
1471 std::string type_name;
1472 if (
m_clidSvc->getTypeNameOfID(saveCLID, type_name).isFailure())
1482 return {0, saveCLID,
""};
1485 return {
evtStore()->stringToKey(sgStringKey, saveCLID), saveCLID, hltLabel};
◆ initialize()
StatusCode Run2ToRun3TrigNavConverterV2::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 152 of file Run2ToRun3TrigNavConverterV2.cxx.
159 ATH_MSG_INFO(
"Will use Trigger Navigation from TrigDecisionTool");
164 ATH_MSG_INFO(
"Will use Trigger Navigation decoded from TrigNavigation object");
181 std::string collName;
182 size_t delimeterIndex =
name.find(
'#');
183 if (delimeterIndex != std::string::npos)
185 ATH_MSG_ERROR(
"Not support for specific collection name yet");
186 return StatusCode::FAILURE;
188 collName =
name.substr(delimeterIndex + 1);
204 if (keysSet.size() > 1 and keysSet.count(
"") != 0)
206 ATH_MSG_ERROR(
"Bad configuration for CLID " << clid <<
" reuested saving of all (empty coll name configures) collections, yet there are also specific keys");
207 return StatusCode::FAILURE;
212 bool anyChainBad=
false;
214 if (
chain.find(
'*') != std::string::npos or
chain.find(
'|') != std::string::npos ) {
215 ATH_MSG_ERROR(
"Supplied chain name: " <<
chain <<
" contains wildcard characters, this is not supported by the conversion tool");
220 ATH_MSG_ERROR(
"Supplied chain names contain wildcard characters, this is not supported by the conversion tool");
221 return StatusCode::FAILURE;
224 ATH_MSG_INFO(
"No chains list supplied, the conversion will occur for all chains");
238 return StatusCode::SUCCESS;
◆ 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.
◆ is2LegTopoChain()
Definition at line 354 of file Run2ToRun3TrigNavConverterV2.cxx.
365 size_t stepToConsider = 0;
366 const size_t sigsSize = ptrChain->
signatures().size();
367 if ( sigsSize < 2 )
return 0;
370 stepToConsider =
step;
374 if ( stepToConsider == 0 )
return 0;
377 auto finalTE = (ptrChain->
signatures()[stepToConsider])->outputTEs()[0];
378 auto preFinalTEs = (ptrChain->
signatures()[stepToConsider-1])->outputTEs();
380 auto finalSeq =
m_configSvc->sequences().getSequence(finalTE->id());
381 std::set<HLT::te_id_type> tesInSeq;
382 std::set<HLT::te_id_type> tesInChain;
384 for (
auto te: finalSeq->inputTEs()) {
385 tesInSeq.insert(te->id());
388 for (
auto te: preFinalTEs) {
389 tesInChain.insert(te->id());
392 if (tesInSeq == tesInChain) {
393 return stepToConsider;
◆ 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, 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.
◆ linkFeaNode()
Definition at line 1193 of file Run2ToRun3TrigNavConverterV2.cxx.
1196 for (
const auto &
proxy : convProxies)
1204 for (
auto chainId :
proxy->passChains)
1211 for (
auto &childProxy :
proxy->children)
1218 if (
proxy->features.empty())
1224 auto hNodeIter =
proxy->hNode.begin();
1225 for (
auto &fea :
proxy->features)
1227 auto [sgKey, sgCLID, sgName] =
getSgKey(run2Nav, fea);
1228 if (fea.getIndex().objectsBegin() == fea.getIndex().objectsEnd())
1234 for (
auto n = fea.getIndex().objectsBegin();
n < fea.getIndex().objectsEnd(); ++
n)
1243 return StatusCode::SUCCESS;
◆ linkRoiNode()
◆ linkTrkNode()
Definition at line 1268 of file Run2ToRun3TrigNavConverterV2.cxx.
1270 for (
auto &
proxy : convProxies)
1272 for (
auto &trk :
proxy->tracks)
1282 auto [sgKey, sgCLID, sgName] =
getSgKey(run2Nav, trk);
1286 auto d = std::make_unique<TrigCompositeUtils::Decision>();
1287 d->makePrivateStore();
1288 d->typelessSetObjectLink(tName, sgKey, sgCLID, trk.getIndex().objectsBegin());
1293 if (
track.isValid())
1296 viewBookkeeper(*
t) = ROIElementLink;
1304 if (
track.isValid())
1307 viewBookkeeper(*
t) = ROIElementLink;
1314 ATH_MSG_WARNING(
"Unable to create an ElementLink into a container with no entries");
1320 return StatusCode::SUCCESS;
◆ mirrorTEsStructure()
Definition at line 530 of file Run2ToRun3TrigNavConverterV2.cxx.
534 std::map<const HLT::TriggerElement *, ConvProxy *> teToProxy;
542 convProxies.insert(
proxy);
543 teToProxy[te] =
proxy;
547 ConvProxy *predecessorProxy = teToProxy[predecessor];
548 if (predecessorProxy !=
nullptr)
550 proxy->parents.insert(predecessorProxy);
559 for (
auto proxy : convProxies)
563 for (
auto p :
proxy->children)
565 for (
auto p :
proxy->parents)
568 for (
auto p :
proxy->parents)
570 for (
auto pp :
p->parents)
578 for (
auto c :
proxy->children)
580 for (
auto cc :
c->children)
591 ATH_MSG_DEBUG(
"Created " << convProxies.size() <<
" proxy objects");
592 return StatusCode::SUCCESS;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ noUnconnectedHNodes()
Definition at line 1426 of file Run2ToRun3TrigNavConverterV2.cxx.
1429 std::set<const TrigCompositeUtils::Decision *> linkedHNodes;
1432 if (
d->name() ==
"IM" or
d->name() ==
"FS")
1436 linkedHNodes.insert(*
el);
1442 if (
d->name() ==
"H")
1444 if (linkedHNodes.count(
d) == 0)
1447 return StatusCode::FAILURE;
1453 return StatusCode::SUCCESS;
◆ numberOfHNodesPerProxyNotExcessive()
StatusCode Run2ToRun3TrigNavConverterV2::numberOfHNodesPerProxyNotExcessive |
( |
const ConvProxySet_t & |
| ) |
const |
|
private |
◆ 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.
◆ printProxies()
◆ removeTopologicalProxies()
StatusCode Run2ToRun3TrigNavConverterV2::removeTopologicalProxies |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
Definition at line 863 of file Run2ToRun3TrigNavConverterV2.cxx.
867 if ((*i)->parents.size() > 1)
873 parent->children.erase(toDel);
877 child->parents.erase(toDel);
880 i = convProxies.erase(
i);
887 return StatusCode::SUCCESS;
◆ removeUnassociatedProxies()
StatusCode Run2ToRun3TrigNavConverterV2::removeUnassociatedProxies |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
Definition at line 677 of file Run2ToRun3TrigNavConverterV2.cxx.
682 if ((*i)->runChains.empty())
688 parent->children.erase(toDel);
692 child->parents.erase(toDel);
695 i = convProxies.erase(
i);
702 ATH_MSG_DEBUG(
"After eliminating proxies not associated to chainsof intereset left with " << convProxies.size());
703 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ roiToSave()
◆ 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 AthReentrantAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateTerminusNode()
Definition at line 1099 of file Run2ToRun3TrigNavConverterV2.cxx.
1119 return StatusCode::FAILURE;
1124 filteredIDs.insert(idToCheck);
1127 terminus->
setDecisions( std::vector<TCU::DecisionID>() );
1130 "the terminus node goes from " << currentIDs.size() <<
" to " << filteredIDs.size() <<
" chain IDs.");
1138 return StatusCode::SUCCESS;
◆ updateVHKA()
◆ m_allTEIdsToChains
◆ m_CaloClusterCLID
CLID Run2ToRun3TrigNavConverterV2::m_CaloClusterCLID {0} |
|
private |
◆ m_CaloClusterContainerCLID
CLID Run2ToRun3TrigNavConverterV2::m_CaloClusterContainerCLID {0} |
|
private |
◆ m_chainIdsPrinter
◆ m_chainsToSave
Gaudi::Property<std::vector<std::string> > Run2ToRun3TrigNavConverterV2::m_chainsToSave {this, "Chains", {}, "If not specified, all chains are handled"} |
|
private |
◆ m_clidSvc
◆ m_collectionsToSave
Gaudi::Property<std::vector<std::string> > Run2ToRun3TrigNavConverterV2::m_collectionsToSave {this, "Collections", {}} |
|
private |
◆ m_collectionsToSaveDecoded
std::map<CLID, std::set<std::string> > Run2ToRun3TrigNavConverterV2::m_collectionsToSaveDecoded |
|
private |
◆ m_configSvc
◆ m_configUpdateMutex
std::mutex Run2ToRun3TrigNavConverterV2::m_configUpdateMutex |
|
mutableprivate |
◆ m_detStore
◆ m_doCompression
Gaudi::Property<bool> Run2ToRun3TrigNavConverterV2::m_doCompression {this, "doCompression", false, "Collapse navigation elements to save ouput space"} |
|
private |
◆ m_doLinkFeatures
Gaudi::Property<bool> Run2ToRun3TrigNavConverterV2::m_doLinkFeatures {this, "doLinkFeatures", true, "Add links to objects, setting it false makes sense when running tests"} |
|
private |
◆ m_doSelfValidation
Gaudi::Property<bool> Run2ToRun3TrigNavConverterV2::m_doSelfValidation {this, "doSelfValidation", false, "Run consistency checks after stages of conversion (slows down the alg)"} |
|
private |
◆ 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_finalTEIdsToChains
◆ m_hNodesPerProxyThreshold
Gaudi::Property<size_t> Run2ToRun3TrigNavConverterV2::m_hNodesPerProxyThreshold {this, "hNodesPerProxyThreshhold", 15, "Limit number of H nodes per TE (if exceeded conversion results in an error)"} |
|
private |
◆ m_includeTauTrackFeatures
Gaudi::Property<bool> Run2ToRun3TrigNavConverterV2::m_includeTauTrackFeatures {this, "addTauTracks", false, "Add Tau Track collection as feature element"} |
|
private |
◆ m_roIDescriptorCLID
CLID Run2ToRun3TrigNavConverterV2::m_roIDescriptorCLID {0} |
|
private |
◆ m_roIDescriptorCollectionCLID
CLID Run2ToRun3TrigNavConverterV2::m_roIDescriptorCollectionCLID {0} |
|
private |
◆ m_roisToSave
Gaudi::Property<std::vector<std::string> > Run2ToRun3TrigNavConverterV2::m_roisToSave {this, "Rois", {}} |
|
private |
◆ m_setRoiName
std::vector<std::string> Run2ToRun3TrigNavConverterV2::m_setRoiName |
|
private |
◆ m_TauTrackContainerCLID
CLID Run2ToRun3TrigNavConverterV2::m_TauTrackContainerCLID {0} |
|
private |
◆ m_tdt
PublicToolHandle<Trig::TrigDecisionTool> Run2ToRun3TrigNavConverterV2::m_tdt {this, "TrigDecisionTool", "", "When enabled read navigation from TDT/off by default"} |
|
private |
◆ m_teIDPrinter
◆ m_TrackParticleContainerCLID
CLID Run2ToRun3TrigNavConverterV2::m_TrackParticleContainerCLID {0} |
|
private |
◆ m_TrigEMClusterCLID
CLID Run2ToRun3TrigNavConverterV2::m_TrigEMClusterCLID {0} |
|
private |
◆ m_TrigEMClusterContainerCLID
CLID Run2ToRun3TrigNavConverterV2::m_TrigEMClusterContainerCLID {0} |
|
private |
◆ m_trigNavKey
◆ m_trigOutputNavKey
◆ m_TrigRingerRingsCLID
CLID Run2ToRun3TrigNavConverterV2::m_TrigRingerRingsCLID {0} |
|
private |
◆ m_TrigRingerRingsContainerCLID
CLID Run2ToRun3TrigNavConverterV2::m_TrigRingerRingsContainerCLID {0} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
StatusCode fillRelevantTracks(ConvProxySet_t &convProxies) const
bool operator<(const DataVector< T > &a, const DataVector< T > &b)
Vector ordering relation.
StatusCode collapseProxies(ConvProxySet_t &, MAP &) const
SG::ReadHandleKey< xAOD::TrigNavigation > m_trigNavKey
const std::string & name() const
StatusCode fillRelevantRois(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
StatusCode createL1Nodes(const ConvProxySet_t &convProxies, xAOD::TrigCompositeContainer &decisions, const EventContext &context) const
std::string find(const std::string &s)
return a remapped string
std::string label(class_id_type clid, const index_or_label_type &sti_or_label) const
TrigCompositeUtils::DecisionID numeric() const
numeric ID
const std::string & hltSeedingNodeName()
StatusCode linkRoiNode(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
StatusCode updateTerminusNode(xAOD::TrigCompositeContainer &, const EventContext &context) const
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.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
StatusCode allProxiesConnected(const ConvProxySet_t &) const
const std::string & hypoAlgNodeName()
ServiceHandle< TrigConf::IHLTConfigSvc > m_configSvc
std::mutex m_configUpdateMutex
StatusCode removeUnassociatedProxies(ConvProxySet_t &) const
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.
std::tuple< uint32_t, CLID, std::string > getSgKey(const HLT::TrigNavStructure &navigationDecoder, const HLT::TriggerElement::FeatureAccessHelper &helper) const
static const uint64_t MissingFEA
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)
Gaudi::Property< std::vector< std::string > > m_collectionsToSave
te_id_type getId() const
reset internals.
SG::WriteHandleKey< xAOD::TrigCompositeContainer > m_trigOutputNavKey
class_id_type getCLID() const
Class ID of object.
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.
Gaudi::Property< std::vector< std::string > > m_roisToSave
bool msgLvl(const MSG::Level lvl) const
CLID m_TrigRingerRingsCLID
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
std::vector< std::string > m_setRoiName
const std::vector< HLTSignature * > & signatures() const
void setDecisions(const std::vector< TrigCompositeUtils::DecisionID > &decisions)
Set positive HLT chain decisions associated with this TrigComposite. Navigation use.
std::map< CLID, std::set< std::string > > m_collectionsToSaveDecoded
std::string formatSGkey(const std::string &prefix, const std::string &containername, const std::string &label)
declaration of formatting function.
CLID m_TauTrackContainerCLID
PublicToolHandle< Trig::TrigDecisionTool > m_tdt
#define ATH_MSG_VERBOSE(x)
std::function< void(const ConvProxy *)> m_chainIdsPrinter
TEIdToChainsMap_t m_allTEIdsToChains
bool isValid() const
Test to see if the link can be dereferenced.
const std::regex egammaDiEtcut
const std::regex gammaXeChain
std::set< ConvProxy * > children
virtual void setOwner(IDataHandleHolder *o)=0
bool isAvailable(const T_Aux &cont, SG::auxid_t auxid)
uint64_t feaToHash(const std::vector< HLT::TriggerElement::FeatureAccessHelper > &feaVector, const HLT::TriggerElement *te_ptr, const HLT::TrigNavStructure &navigationDecoder) const
returns true if this particular feature is to be saved (linked)
CLID m_roIDescriptorCollectionCLID
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
StatusCode createSFNodes(const ConvProxySet_t &, xAOD::TrigCompositeContainer &, const TEIdToChainsMap_t &finalTEs, const EventContext &context) const
AthReentrantAlgorithm()
Default constructor:
Exception — ForwardIndexingPolicy: internal link state is invalid.
std::vector< HLT::TriggerElement::FeatureAccessHelper > filterFEAs(const std::vector< HLT::TriggerElement::FeatureAccessHelper > &feaVector, const HLT::TrigNavStructure &navigationDecoder) const
< both method skip TrigPassBits
StatusCode extractTECtoChainMapping(TEIdToChainsMap_t &allTES, TEIdToChainsMap_t &finalTEs) const
static const std::vector< TriggerElement * > & getDirectPredecessors(const TriggerElement *te)
returns list of direct predecessors (nodes seeding me)
Helper class to provide type-safe access to aux data.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
const std::string & initialRoIString()
const std::vector< ElementLink< DecisionContainer > > getLinkToPrevious(const Decision *d)
returns links to previous decision object 'seed'
::StatusCode StatusCode
StatusCode definition for legacy code.
pointer_type ptr()
Dereference the pointer.
StatusCode linkTrkNode(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
StatusCode createIMHNodes(ConvProxySet_t &, xAOD::TrigCompositeContainer &, const EventContext &) const
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Gaudi::Property< bool > m_includeTauTrackFeatures
CLID m_TrigEMClusterContainerCLID
std::map< HLT::te_id_type, std::set< HLT::Identifier > > TEIdToChainsMap_t
ElementLink< DecisionContainer > decisionToElementLink(const Decision *d, const EventContext &ctx)
Takes a raw pointer to a Decision and returns an ElementLink to the Decision.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Class used to describe composite objects in the HLT.
uint32_t CLID
The Class ID type.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StatusCode removeTopologicalProxies(ConvProxySet_t &) const
const std::regex egammaEtcut
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
bool feaToSave(const HLT::TriggerElement::FeatureAccessHelper &fea) const
ElementLink implementation for ROOT usage.
const std::string & featureString()
std::vector< int > multiplicities(const std::string &chain)
StatusCode collapseFeaturesProxies(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
TEIdToChainsMap_t m_finalTEIdsToChains
Gaudi::Property< bool > m_doCompression
virtual StatusCode sysInitialize() override
Override sysInitialize.
std::set< ConvProxy * > ConvProxySet_t
StatusCode associateChainsToProxies(ConvProxySet_t &, const TEIdToChainsMap_t &) const
static const std::string hash2string(HLTHash, const std::string &category="TE")
hash function translating identifiers into names (via internal dictionary)
const std::string & summaryPassNodeName()
Gaudi::Property< bool > m_doLinkFeatures
std::size_t getFeaSize(const ConvProxy &) const
StatusCode numberOfHNodesPerProxyNotExcessive(const ConvProxySet_t &) const
HLT::Identifier createLegName(const HLT::Identifier &chainIdentifier, size_t counter)
Generate the HLT::Identifier which corresponds to a specific leg of a given chain.
StatusCode allProxiesHaveChain(const ConvProxySet_t &) const
static const std::vector< TriggerElement * > & getRoINodes(const TriggerElement *somenode)
gets all RoI type nodes seeding indirectly this TriggerElement
StatusCode fillRelevantFeatures(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
const std::string & name() const
Get a human-readable name for the object.
std::vector< TriggerElement * > & getAllTEs()
access needed by slimming tools.
void linkToPrevious(Decision *d, const std::string &previousCollectionKey, size_t previousIndex)
Links to the previous object, location of previous 'seed' decision supplied by hand.
StatusCode collapseFeaturelessProxies(ConvProxySet_t &) const
static bool isInitialNode(const TriggerElement *te)
queries if node is an initial one
std::set< DecisionID > DecisionIDContainer
the FeatureAccessHelper is a class used to keep track of features attached to this TE.
#define ATH_MSG_WARNING(x)
virtual bool deserialize(const std::vector< uint32_t > &input)
size_t is2LegTopoChain(const TrigConf::HLTChain *ptrChain) const
StatusCode mirrorTEsStructure(ConvProxySet_t &, const HLT::TrigNavStructure &run2Nav) const
ServiceHandle< IClassIDSvc > m_clidSvc
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
StatusCode doCompression(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
def merge(input_file_pattern, output_file)
Merge many input LHE files into a single output file.
std::string name() const
reports human redable name if it is enabled or, empty string
CLID m_CaloClusterContainerCLID
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
bool feaToSkip(const HLT::TriggerElement::FeatureAccessHelper &fea)
const std::regex tauXeChain
void printProxies(const ConvProxySet_t &proxies, std::function< bool(const ConvProxy *)> selector=[](const ConvProxy *){return true;}, const std::vector< std::function< void(const ConvProxy *)>> &printers={}) const
const std::string & roiString()
StatusCode linkFeaNode(ConvProxySet_t &convProxies, xAOD::TrigCompositeContainer &, const HLT::TrigNavStructure &run2Nav, const EventContext &context) const
CLID m_TrigRingerRingsContainerCLID
StatusCode cureUnassociatedProxies(ConvProxySet_t &) const
HLT::Identifier getIDFromLeg(const HLT::Identifier &legIdentifier)
Generate the HLT::Identifier which corresponds to the chain name from the leg name.
Class describing a TrackParticle.
std::function< void(const ConvProxy *)> m_teIDPrinter
std::set< ConvProxy * > parents
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Gaudi::Property< std::vector< std::string > > m_chainsToSave
CLID m_TrackParticleContainerCLID
const std::regex egammaCombinedWithEtcut
const std::string & inputMakerNodeName()
Gaudi::Property< bool > m_doSelfValidation