|
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 std::string &sgName) 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 |
|
StatusCode | bjetMuChainConfigDecoder (TEIdToChainsMap_t &allTES, TEIdToChainsMap_t &finalTEs, const TrigConf::HLTChain *ptrChain) 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 1464 of file Run2ToRun3TrigNavConverterV2.cxx.
1466 for (
auto p : proxies)
1468 if (
p->children.empty() and
p->parents.empty() and not
p->runChains.empty())
1470 ATH_MSG_ERROR(
"Orphanted proxy N chains run:" <<
p->runChains.size());
1471 return StatusCode::FAILURE;
1475 return StatusCode::SUCCESS;
◆ allProxiesHaveChain()
StatusCode Run2ToRun3TrigNavConverterV2::allProxiesHaveChain |
( |
const ConvProxySet_t & |
proxies | ) |
const |
|
private |
Definition at line 1450 of file Run2ToRun3TrigNavConverterV2.cxx.
1452 for (
auto p : proxies)
1454 if (
p->runChains.empty())
1457 return StatusCode::FAILURE;
1461 return StatusCode::SUCCESS;
◆ associateChainsToProxies()
Definition at line 663 of file Run2ToRun3TrigNavConverterV2.cxx.
666 for (
auto &ptrConvProxy : convProxies)
668 auto teId = ptrConvProxy->te->getId();
669 bool teActive = ptrConvProxy->te->getActiveState();
670 auto iter = allTEs.find(
teId);
671 if (iter != allTEs.end())
673 ptrConvProxy->runChains.insert(iter->second.begin(), iter->second.end());
676 ptrConvProxy->passChains.insert(iter->second.begin(), iter->second.end());
680 for (
auto &objTeIdToChain : allTEs)
682 if (
teId == objTeIdToChain.first)
684 for (
auto &chainId : objTeIdToChain.second)
686 (ptrConvProxy->runChains).insert(chainId);
692 return StatusCode::SUCCESS;
◆ bjetMuChainConfigDecoder()
Definition at line 542 of file Run2ToRun3TrigNavConverterV2.cxx.
545 std::vector<unsigned int> muons;
546 std::vector<unsigned int>
jets;
547 bool switchedTojets =
false;
548 for (
auto ptrHLTSignature : ptrChain->
signatures()) {
549 for (
auto ptrHLTTE : ptrHLTSignature->outputTEs()) {
550 if ( ptrHLTTE->name().find(
"_mu") == std::string::npos ) {
551 switchedTojets =
true;
555 jets.push_back(ptrHLTTE->id());
557 muons.push_back(ptrHLTTE->id());
565 finalTEs[muons[0]].insert(chainId);
567 finalTEs[
jets[0]].insert(chainId);
572 allTEs[muons[
index]].insert(chainId);
576 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 850 of file Run2ToRun3TrigNavConverterV2.cxx.
853 struct ParentChildCharacteristics
857 size_t distanceFromParent = 0;
858 bool operator<(
const ParentChildCharacteristics &rhs)
const
861 return parent < rhs.parent;
862 if (child != rhs.child)
863 return child < rhs.child;
864 return distanceFromParent < rhs.distanceFromParent;
867 const size_t beforeCount = convProxies.size();
868 std::map<ParentChildCharacteristics, ConvProxySet_t> groupedProxies;
869 for (
auto proxy : convProxies)
882 if (
proxy->children.size() == 1 and
883 std::all_of(
proxy->children.begin(),
proxy->children.end(), hasSomeFeatures ) and
884 proxy->parents.size() == 1 and
885 std::all_of(
proxy->parents.begin(),
proxy->parents.end(), hasSomeFeatures )
889 groupedProxies[{*(
proxy->parents.begin()), *(
proxy->children.begin()), 0}].insert(
proxy);
896 for (
auto pp :
proxy->parents)
901 for (
auto cp :
proxy->children)
910 ATH_MSG_DEBUG(
"Proxies without features collapsing reduces size from " << beforeCount <<
" to " << convProxies.size());
911 return StatusCode::SUCCESS;
◆ collapseFeaturesProxies()
Definition at line 802 of file Run2ToRun3TrigNavConverterV2.cxx.
805 const size_t beforeCount = convProxies.size();
806 std::map<uint64_t, ConvProxySet_t> feaToProxyMap;
807 for (
auto proxy : convProxies)
820 for (
auto [feaHash, proxies] : feaToProxyMap)
822 auto first = *proxies.begin();
823 for (
auto p : proxies)
826 filterFEAs(
p->te->getFeatureAccessHelpers(), run2Nav))
828 ATH_MSG_ERROR(
"Proxies grouped by FEA hash have actually distinct features (specific FEAs are different)");
829 for (
auto id:
p->passChains )
ATH_MSG_ERROR(
"... chain id for this proxy " <<
id);
831 for (
auto fea:
first->te->getFeatureAccessHelpers() ) {
834 for (
auto fea:
p->te->getFeatureAccessHelpers() ) {
838 return StatusCode::FAILURE;
845 ATH_MSG_DEBUG(
"Proxies with features collapsing reduces size from " << beforeCount <<
" to " << convProxies.size());
847 return StatusCode::SUCCESS;
◆ collapseProxies()
template<typename MAP >
StatusCode Run2ToRun3TrigNavConverterV2::collapseProxies |
( |
ConvProxySet_t & |
convProxies, |
|
|
MAP & |
keyToProxyMap |
|
) |
| const |
|
private |
Definition at line 773 of file Run2ToRun3TrigNavConverterV2.cxx.
776 std::vector<ConvProxy *> todelete;
777 for (
auto &[
key, proxies] : keyToProxyMap)
779 if (proxies.size() > 1)
781 ATH_MSG_DEBUG(
"Merging " << proxies.size() <<
" similar proxies");
782 for (
auto p : proxies)
784 if (
p->mergeAllowed(*proxies.begin()))
786 (*proxies.begin())->
merge(
p);
787 todelete.push_back(
p);
793 for (
auto proxy : todelete)
795 convProxies.erase(
proxy);
799 return StatusCode::SUCCESS;
◆ createIMHNodes()
Definition at line 1047 of file Run2ToRun3TrigNavConverterV2.cxx.
1049 for (
auto &
proxy : convProxies)
1052 for (
auto chainId :
proxy->runChains)
1057 for (
auto chainId :
proxy->passChains)
1065 for (
auto &
proxy : convProxies)
1067 for (
auto &parentProxy :
proxy->parents)
1073 return StatusCode::SUCCESS;
◆ createL1Nodes()
Definition at line 1192 of file Run2ToRun3TrigNavConverterV2.cxx.
1196 auto makeL1Node = [&
decisions, &context](
auto firstDecisionNode,
auto chainIds)
1200 for (
auto chainId : chainIds)
1209 for (
auto &
proxy : convProxies)
1212 if (
proxy->parents.empty())
1219 return StatusCode::SUCCESS;
◆ createSFNodes()
Definition at line 1076 of file Run2ToRun3TrigNavConverterV2.cxx.
1083 sfNode->setName(
"SF");
1086 for (
auto chainId : chainIds)
1093 else if (chainId.numeric() == idStore)
1103 if (
proxy->hNode.empty())
1106 makeSingleSFNode(
proxy->imNode,
proxy->runChains, idToStore);
1111 for (
auto &hNode :
proxy->hNode)
1113 makeSingleSFNode(hNode,
proxy->passChains, idToStore);
1118 for (
auto proxy : convProxies)
1121 if (
proxy->children.empty())
1129 std::vector<TCU::DecisionID> toRetain;
1132 auto whereInMap = terminalIds.find(
teId);
1133 if (whereInMap != terminalIds.end())
1135 toRetain.insert(toRetain.end(), whereInMap->second.begin(), whereInMap->second.end());
1138 for (
auto chainIdstore : toRetain)
1140 makeSFNodes(
proxy, chainIdstore);
1147 return StatusCode::SUCCESS;
◆ cureUnassociatedProxies()
StatusCode Run2ToRun3TrigNavConverterV2::cureUnassociatedProxies |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
Definition at line 695 of file Run2ToRun3TrigNavConverterV2.cxx.
703 size_t numberOfUpdates = 0;
704 for (
auto p : convProxies)
706 for (
auto child :
p->children)
708 size_t startSize =
p->runChains.size();
711 if (startSize !=
p->runChains.size())
719 ATH_MSG_DEBUG(
"Needed to propagate chains from " << numberOfUpdates <<
" child(ren)");
720 if (numberOfUpdates == 0)
725 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 247 of file Run2ToRun3TrigNavConverterV2.cxx.
264 standaloneNav.
deserialize(navReadHandle->serialized());
265 run2NavigationPtr = &standaloneNav;
269 run2NavigationPtr =
m_tdt->ExperimentalAndExpertMethods().getNavigation();
293 ATH_MSG_DEBUG(
"Removed proxies to chains that are not converted, remaining number of elements " << convProxies.size());
308 auto decisionOutput = outputNavigation.
ptr();
331 ATH_MSG_DEBUG(
"Conversion done, from " << convProxies.size() <<
" elements to " << decisionOutput->size() <<
" elements");
337 for (
auto o: *decisionOutput) {
343 for (
auto proxy : convProxies)
348 return StatusCode::SUCCESS;
◆ extractTECtoChainMapping()
Definition at line 395 of file Run2ToRun3TrigNavConverterV2.cxx.
403 std::string
chainName = ptrChain->name();
422 std::map<HLT::te_id_type, HLT::te_id_type> etcutReplacementTEs;
423 auto etcutReplacement = [&etcutReplacementTEs](
HLT::te_id_type in) {
auto out = etcutReplacementTEs.find(in);
return (
out == etcutReplacementTEs.end() ? in :
out->second ); };
424 if (
chainName.find(
"etcut") != std::string::npos ) {
425 std::set<size_t> positionsOfEtCutLegs;
428 ATH_MSG_DEBUG(
"EtCut chains hack, chain with two etcut legs ");
429 positionsOfEtCutLegs.insert({0, 1});
431 ATH_MSG_DEBUG(
"EtCut chains hack, egamma chain with second etcut leg ");
432 positionsOfEtCutLegs.insert({1});
435 positionsOfEtCutLegs.insert({0});
439 std::map<size_t, HLT::te_id_type> positionToDesiredIDmap;
440 for (
auto ptrHLTSignature : ptrChain->signatures()) {
442 for (
auto ptrHLTTE : ptrHLTSignature->outputTEs()) {
443 if (positionsOfEtCutLegs.count(position) and positionToDesiredIDmap.find(position) != positionToDesiredIDmap.end() ) {
444 etcutReplacementTEs[ptrHLTTE->id()] = positionToDesiredIDmap[position];
447 if ( ptrHLTTE->name().find(
"calocalib") != std::string::npos and positionsOfEtCutLegs.count(position) ) {
448 positionToDesiredIDmap[position] = ptrHLTTE->id();
459 for (
auto ptrHLTSignature : ptrChain->signatures()) {
460 for (
auto ptrHLTTE : ptrHLTSignature->outputTEs()) {
461 unsigned int teId = etcutReplacement(ptrHLTTE->id());
462 allTEs[
teId].insert(chainId);
463 if (ptrHLTSignature == ptrChain->signatures().back()) {
464 finalTEs[
teId].insert(chainId);
465 ATH_MSG_DEBUG(
"TE will be used to mark final chain decision " << ptrHLTTE->name() <<
" chain " <<
chainName );
484 std::vector<size_t> mult_hack;
487 ptrChain->set_leg_multiplicities(mult_hack);
492 std::vector<size_t> mult_hack;
495 ptrChain->set_leg_multiplicities(mult_hack);
499 std::vector<unsigned int> teIdsLastHealthyStepIds;
501 for (
auto ptrHLTSignature : ptrChain->signatures())
503 std::vector<int> teCounts;
504 std::vector<unsigned int> teIds;
505 unsigned int lastSeenId = 0;
506 for (
auto ptrHLTTE : ptrHLTSignature->outputTEs())
508 if ( lastSeenId != ptrHLTTE->id()) {
509 teCounts.push_back(1);
510 teIds.push_back(ptrHLTTE->id());
514 lastSeenId = ptrHLTTE->id();
517 ATH_MSG_DEBUG(
"TE multiplicities seen in this step " << teCounts);
521 if ( multiplicityCounts ) {
522 teIdsLastHealthyStepIds = teIds;
523 ATH_MSG_DEBUG(
"There is a match, will assign chain leg IDs to TEs " << teCounts <<
" " << teIds);
524 for (
size_t legNumber = 0; legNumber < teIds.size(); ++ legNumber){
526 allTEs[etcutReplacement(teIds[legNumber])].insert(chainLegId);
530 for (
size_t legNumber = 0; legNumber < teIdsLastHealthyStepIds.size(); ++ legNumber ) {
533 ATH_MSG_DEBUG(
"created leg id " << chainLegId <<
" that will replace TE ID " << etcutReplacement(teIdsLastHealthyStepIds[legNumber]));
534 finalTEs[etcutReplacement(teIdsLastHealthyStepIds[legNumber])].insert(chainLegId);
538 ATH_MSG_DEBUG(
"Recognised " << allTEs.size() <<
" kinds of TEs and among them " << finalTEs.size() <<
" final types");
539 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 1406 of file Run2ToRun3TrigNavConverterV2.cxx.
1411 for (
auto fea :
filterFEAs(feaVector, navigationDecoder))
1413 ATH_MSG_VERBOSE(
"Including FEA in hash CLID: " << fea.getCLID() <<
" te Id: " << te_ptr->
getId());
1414 boost::hash_combine(
hash, fea.getCLID());
1415 boost::hash_combine(
hash, fea.getIndex().subTypeIndex());
1416 boost::hash_combine(
hash, fea.getIndex().objectsBegin());
1417 boost::hash_combine(
hash, fea.getIndex().objectsEnd());
◆ feaToSave()
Definition at line 1423 of file Run2ToRun3TrigNavConverterV2.cxx.
1428 if ( iter->second.empty() )
1430 ATH_MSG_DEBUG(
"fea to save CLID: " << fea.
getCLID() <<
", sgName: " << sgName <<
" " <<iter->second.size() <<
" " << iter->second.empty() );
1431 return iter->second.contains(sgName);
◆ fillRelevantFeatures()
◆ fillRelevantRois()
Definition at line 966 of file Run2ToRun3TrigNavConverterV2.cxx.
970 auto ordered_sorter = [&setRoiName = std::as_const(
m_setRoiName)](
const std::string &left,
const std::string &right) ->
bool
972 return std::find(cbegin(setRoiName), cend(setRoiName), left) <
std::find(cbegin(setRoiName), cend(setRoiName), right);
977 for (
auto &
proxy : convProxies)
981 ATH_MSG_DEBUG(
"Several RoIs pointing to a proxy, taking latest one for now");
997 [](
const std::map<std::string, HLT::TriggerElement::FeatureAccessHelper>::value_type &
p)
998 { return p.second; });
1002 std::set<const ConvProxy*> visited;
1003 std::function<void(std::set<ConvProxy *> &,
const std::vector<HLT::TriggerElement::FeatureAccessHelper> &)>
1004 roiPropagator = [&](std::set<ConvProxy *> &convProxyChildren,
const std::vector<HLT::TriggerElement::FeatureAccessHelper> &roiParent)
1006 for (
auto &proxyChild : convProxyChildren)
1008 if ( visited.count(proxyChild) == 1 ) {
1011 visited.insert(proxyChild);
1012 if (proxyChild->rois.empty())
1014 proxyChild->rois = roiParent;
1015 if (proxyChild->children.empty() ==
false)
1017 roiPropagator(proxyChild->children, roiParent);
1023 for (
auto &
proxy : convProxies)
1028 return StatusCode::SUCCESS;
◆ fillRelevantTracks()
StatusCode Run2ToRun3TrigNavConverterV2::fillRelevantTracks |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
◆ filterFEAs()
< both method skip TrigPassBits
Definition at line 1384 of file Run2ToRun3TrigNavConverterV2.cxx.
1385 std::vector<HLT::TriggerElement::FeatureAccessHelper>
out;
1386 for (
auto fea : feaVector)
1394 auto [sgKey, sgCLID, sgName] =
getSgKey(navigationDecoder, fea);
1398 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 1222 of file Run2ToRun3TrigNavConverterV2.cxx.
1225 if (
proxy.features.empty())
1229 for (
const auto &fea :
proxy.features)
1231 if (fea.getIndex().objectsBegin() == fea.getIndex().objectsEnd())
1235 for (
auto n = fea.getIndex().objectsBegin();
n < fea.getIndex().objectsEnd(); ++
n)
◆ getSgKey()
Definition at line 1514 of file Run2ToRun3TrigNavConverterV2.cxx.
1516 const std::string hltLabel = navigationDecoder.
label(
helper.getCLID(),
helper.getIndex().subTypeIndex());
1518 const CLID saveCLID = [&](
const CLID &clid)
1529 std::string type_name;
1530 if (
m_clidSvc->getTypeNameOfID(saveCLID, type_name).isFailure())
1540 return {0, saveCLID,
""};
1543 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)
186 collName =
name.substr(delimeterIndex + 1);
191 if ( collName.empty() )
205 if (keysSet.size() > 1 and keysSet.count(
"") != 0)
207 ATH_MSG_ERROR(
"Bad configuration for CLID " << clid <<
" requested saving of all (empty coll name configures) collections, yet there are also specific keys");
208 return StatusCode::FAILURE;
213 bool anyChainBad=
false;
215 if (
chain.find(
'*') != std::string::npos or
chain.find(
'|') != std::string::npos ) {
216 ATH_MSG_ERROR(
"Supplied chain name: " <<
chain <<
" contains wildcard characters, this is not supported by the conversion tool");
221 ATH_MSG_ERROR(
"Supplied chain names contain wildcard characters, this is not supported by the conversion tool");
222 return StatusCode::FAILURE;
225 ATH_MSG_INFO(
"No chains list supplied, the conversion will occur for all chains");
239 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 351 of file Run2ToRun3TrigNavConverterV2.cxx.
362 size_t stepToConsider = 0;
363 const size_t sigsSize = ptrChain->
signatures().size();
364 if ( sigsSize < 2 )
return 0;
367 stepToConsider =
step;
371 if ( stepToConsider == 0 )
return 0;
374 auto finalTE = (ptrChain->
signatures()[stepToConsider])->outputTEs()[0];
375 auto preFinalTEs = (ptrChain->
signatures()[stepToConsider-1])->outputTEs();
377 auto finalSeq =
m_configSvc->sequences().getSequence(finalTE->id());
378 std::set<HLT::te_id_type> tesInSeq;
379 std::set<HLT::te_id_type> tesInChain;
381 for (
auto te: finalSeq->inputTEs()) {
382 tesInSeq.insert(te->id());
385 for (
auto te: preFinalTEs) {
386 tesInChain.insert(te->id());
389 if (tesInSeq == tesInChain) {
390 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, InDet::SiSPGNNTrackMaker, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, 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.
◆ linkFeaNode()
Definition at line 1244 of file Run2ToRun3TrigNavConverterV2.cxx.
1247 for (
const auto &
proxy : convProxies)
1255 for (
auto chainId :
proxy->passChains)
1262 for (
auto &childProxy :
proxy->children)
1269 if (
proxy->features.empty())
1275 auto hNodeIter =
proxy->hNode.begin();
1276 for (
auto &fea :
proxy->features)
1278 auto [sgKey, sgCLID, sgName] =
getSgKey(run2Nav, fea);
1280 if (fea.getIndex().objectsBegin() == fea.getIndex().objectsEnd())
1286 for (
auto n = fea.getIndex().objectsBegin();
n < fea.getIndex().objectsEnd(); ++
n)
1295 return StatusCode::SUCCESS;
◆ linkRoiNode()
◆ linkTrkNode()
Definition at line 1320 of file Run2ToRun3TrigNavConverterV2.cxx.
1322 for (
auto &
proxy : convProxies)
1324 for (
auto &trk :
proxy->tracks)
1334 auto [sgKey, sgCLID, sgName] =
getSgKey(run2Nav, trk);
1338 auto d = std::make_unique<TrigCompositeUtils::Decision>();
1339 d->makePrivateStore();
1340 d->typelessSetObjectLink(tName, sgKey, sgCLID, trk.getIndex().objectsBegin());
1345 if (
track.isValid())
1348 viewBookkeeper(*
t) = ROIElementLink;
1356 if (
track.isValid())
1359 viewBookkeeper(*
t) = ROIElementLink;
1366 ATH_MSG_WARNING(
"Unable to create an ElementLink into a container with no entries");
1372 return StatusCode::SUCCESS;
◆ mirrorTEsStructure()
Definition at line 581 of file Run2ToRun3TrigNavConverterV2.cxx.
585 std::map<const HLT::TriggerElement *, ConvProxy *> teToProxy;
593 convProxies.insert(
proxy);
594 teToProxy[te] =
proxy;
598 ConvProxy *predecessorProxy = teToProxy[predecessor];
599 if (predecessorProxy !=
nullptr)
601 proxy->parents.insert(predecessorProxy);
610 for (
auto proxy : convProxies)
614 for (
auto p :
proxy->children)
616 for (
auto p :
proxy->parents)
619 for (
auto p :
proxy->parents)
621 for (
auto pp :
p->parents)
629 for (
auto c :
proxy->children)
631 for (
auto cc :
c->children)
642 ATH_MSG_DEBUG(
"Created " << convProxies.size() <<
" proxy objects");
643 return StatusCode::SUCCESS;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ noUnconnectedHNodes()
Definition at line 1484 of file Run2ToRun3TrigNavConverterV2.cxx.
1487 std::set<const TrigCompositeUtils::Decision *> linkedHNodes;
1490 if (
d->name() ==
"IM" or
d->name() ==
"FS")
1494 linkedHNodes.insert(*
el);
1500 if (
d->name() ==
"H")
1502 if (linkedHNodes.count(
d) == 0)
1505 return StatusCode::FAILURE;
1511 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 914 of file Run2ToRun3TrigNavConverterV2.cxx.
918 if ((*i)->parents.size() > 1)
924 parent->children.erase(toDel);
928 child->parents.erase(toDel);
931 i = convProxies.erase(
i);
938 return StatusCode::SUCCESS;
◆ removeUnassociatedProxies()
StatusCode Run2ToRun3TrigNavConverterV2::removeUnassociatedProxies |
( |
ConvProxySet_t & |
convProxies | ) |
const |
|
private |
Definition at line 728 of file Run2ToRun3TrigNavConverterV2.cxx.
733 if ((*i)->runChains.empty())
739 parent->children.erase(toDel);
743 child->parents.erase(toDel);
746 i = convProxies.erase(
i);
753 ATH_MSG_DEBUG(
"After eliminating proxies not associated to chainsof intereset left with " << convProxies.size());
754 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 1150 of file Run2ToRun3TrigNavConverterV2.cxx.
1170 return StatusCode::FAILURE;
1175 filteredIDs.insert(idToCheck);
1178 terminus->
setDecisions( std::vector<TCU::DecisionID>() );
1181 "the terminus node goes from " << currentIDs.size() <<
" to " << filteredIDs.size() <<
" chain IDs.");
1189 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.
const std::regex mu2MunoL1Special
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
const std::regex bjetMuChain
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
StatusCode bjetMuChainConfigDecoder(TEIdToChainsMap_t &allTES, TEIdToChainsMap_t &finalTEs, const TrigConf::HLTChain *ptrChain) const
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
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
bool feaToSave(const HLT::TriggerElement::FeatureAccessHelper &fea, const std::string &sgName) 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