4#ifndef TRIGNAVTOOLS_RUN2TORUN3TRIGNAVCONVERTERV2_H
5#define TRIGNAVTOOLS_RUN2TORUN3TRIGNAVCONVERTERV2_H
14#include "GaudiKernel/IClassIDSvc.h"
42 std::vector<HLT::te_id_type>
teIDs;
51 std::vector<HLT::TriggerElement::FeatureAccessHelper>
features;
52 std::vector<HLT::TriggerElement::FeatureAccessHelper>
rois;
53 std::vector<HLT::TriggerElement::FeatureAccessHelper>
tracks;
57 std::vector<TrigCompositeUtils::Decision *>
hNode;
75 virtual StatusCode
execute(
const EventContext &context)
const override;
76 virtual StatusCode
finalize()
override;
81 PublicToolHandle<Trig::TrigDecisionTool>
m_tdt{
this,
"TrigDecisionTool",
"",
"When enabled read navigation from TDT/off by default"};
85 Gaudi::Property<bool>
m_doSelfValidation{
this,
"doSelfValidation",
false,
"Run consistency checks after stages of conversion (slows down the alg)"};
86 Gaudi::Property<bool>
m_doCompression{
this,
"doCompression",
false,
"Collapse navigation elements to save ouput space"};
87 Gaudi::Property<bool>
m_doLinkFeatures{
this,
"doLinkFeatures",
true,
"Add links to objects, setting it false makes sense when running tests"};
89 Gaudi::Property<size_t>
m_hNodesPerProxyThreshold{
this,
"hNodesPerProxyThreshhold", 15,
"Limit number of H nodes per TE (if exceeded conversion results in an error)"};
90 Gaudi::Property<std::vector<std::string>>
m_chainsToSave{
this,
"Chains", {},
"If not specified, all chains are handled"};
92 Gaudi::Property<std::vector<std::string>>
m_roisToSave{
this,
"Rois", {}};
116 template <
typename MAP>
135 std::vector<HLT::TriggerElement::FeatureAccessHelper>
filterFEAs(
const std::vector<HLT::TriggerElement::FeatureAccessHelper> &feaVector,
const HLT::TrigNavStructure &navigationDecoder)
const;
147 const std::vector<std::function<void(
const ConvProxy*)>>& printers={})
const;
uint32_t CLID
The Class ID type.
std::map< HLT::te_id_type, std::set< HLT::Identifier > > TEIdToChainsMap_t
std::set< ConvProxy * > ConvProxySet_t
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
An algorithm that can be simultaneously executed in multiple threads.
the FeatureAccessHelper is a class used to keep track of features attached to this TE.
TriggerElement is the basic ingreedient of the interface between HLT algorithms and the navigation It...
StatusCode createIMHNodes(ConvProxySet_t &, xAOD::TrigCompositeContainer &, const EventContext &) const
Gaudi::Property< bool > m_doLinkFeatures
StatusCode linkRoiNode(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
std::vector< std::string > m_setRoiName
Gaudi::Property< std::vector< std::string > > m_chainsToSave
virtual ~Run2ToRun3TrigNavConverterV2() override
CLID m_CaloClusterContainerCLID
std::function< void(const ConvProxy *)> m_teIDPrinter
PublicToolHandle< Trig::TrigDecisionTool > m_tdt
StatusCode extractTECtoChainMapping(TEIdToChainsMap_t &allTES, TEIdToChainsMap_t &finalTEs) const
Gaudi::Property< std::vector< std::string > > m_roisToSave
StatusCode collapseFeaturesProxies(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
virtual StatusCode execute(const EventContext &context) const override
ServiceHandle< IClassIDSvc > m_clidSvc
Gaudi::Property< bool > m_doCompression
StatusCode cureUnassociatedProxies(ConvProxySet_t &) const
StatusCode updateTerminusNode(xAOD::TrigCompositeContainer &, const EventContext &context) const
CLID m_TrigRingerRingsCLID
StatusCode mirrorTEsStructure(ConvProxySet_t &, const HLT::TrigNavStructure &run2Nav) const
StatusCode createSFNodes(const ConvProxySet_t &, xAOD::TrigCompositeContainer &, const TEIdToChainsMap_t &finalTEs, const EventContext &context) const
StatusCode removeTopologicalProxies(ConvProxySet_t &) const
CLID m_TrigEMClusterContainerCLID
Gaudi::Property< size_t > m_hNodesPerProxyThreshold
SG::ReadHandleKey< xAOD::TrigNavigation > m_trigNavKey
CLID m_TauJetContainerCLID
Run2ToRun3TrigNavConverterV2(const std::string &name, ISvcLocator *pSvcLocator)
StatusCode removeUnassociatedProxies(ConvProxySet_t &) const
StatusCode linkFeaNode(ConvProxySet_t &convProxies, xAOD::TrigCompositeContainer &, const HLT::TrigNavStructure &run2Nav, const EventContext &context) const
StatusCode associateChainsToProxies(ConvProxySet_t &, const TEIdToChainsMap_t &) const
CLID getExpectedParticleCLID(const std::string &teName) const
Helper function to determine expected particle CLID based on TE name Returns 0 if no specific type is...
CLID m_TauTrackContainerCLID
StatusCode bjetMuChainConfigDecoder(TEIdToChainsMap_t &allTES, TEIdToChainsMap_t &finalTEs, const TrigConf::HLTChain *ptrChain) const
std::pair< std::size_t, std::size_t > getHighestPtObject(const ConvProxy &, const HLT::TrigNavStructure &) const
Return pair of indices (feature index in proxy->features vector, object index) identifying the highes...
StatusCode noUnconnectedHNodes(const xAOD::TrigCompositeContainer &) const
bool feaToSave(const HLT::TriggerElement::FeatureAccessHelper &fea, const std::string &sgName) const
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)
size_t is2LegTopoChain(const TrigConf::HLTChain *ptrChain) const
bool roiToSave(const HLT::TrigNavStructure &run2Nav, const HLT::TriggerElement::FeatureAccessHelper &fea) const
Gaudi::Property< bool > m_doSelfValidation
StatusCode doCompression(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
StatusCode linkTrkNode(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
StatusCode numberOfHNodesPerProxyNotExcessive(const ConvProxySet_t &) const
virtual StatusCode finalize() override
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
CLID m_TrackParticleContainerCLID
StatusCode fillRelevantTracks(ConvProxySet_t &convProxies) const
CLID m_roIDescriptorCollectionCLID
CLID m_ElectronContainerCLID
Gaudi::Property< bool > m_includeTauTrackFeatures
TEIdToChainsMap_t m_allTEIdsToChains
std::tuple< uint32_t, CLID, std::string > getSgKey(const HLT::TrigNavStructure &navigationDecoder, const HLT::TriggerElement::FeatureAccessHelper &helper) const
StatusCode fillRelevantRois(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
StatusCode allProxiesHaveChain(const ConvProxySet_t &) const
SG::WriteHandleKey< xAOD::TrigCompositeContainer > m_trigOutputNavKey
StatusCode createL1Nodes(const ConvProxySet_t &convProxies, xAOD::TrigCompositeContainer &decisions, const EventContext &context) const
Gaudi::Property< std::vector< std::string > > m_collectionsToSave
std::function< void(const ConvProxy *)> m_chainIdsPrinter
std::map< CLID, std::set< std::string > > m_collectionsToSaveDecoded
CLID m_TrigRingerRingsContainerCLID
StatusCode fillRelevantFeatures(ConvProxySet_t &convProxies, const HLT::TrigNavStructure &run2Nav) const
TEIdToChainsMap_t m_finalTEIdsToChains
std::size_t getFeaSize(const ConvProxy &) const
virtual StatusCode initialize() override
CLID m_PhotonContainerCLID
std::mutex m_configUpdateMutex
StatusCode collapseFeaturelessProxies(ConvProxySet_t &) const
ServiceHandle< TrigConf::IHLTConfigSvc > m_configSvc
StatusCode allProxiesConnected(const ConvProxySet_t &) const
StatusCode collapseProxies(ConvProxySet_t &, MAP &) const
std::vector< HLT::TriggerElement::FeatureAccessHelper > filterFEAs(const std::vector< HLT::TriggerElement::FeatureAccessHelper > &feaVector, const HLT::TrigNavStructure &navigationDecoder) const
< both method skip TrigPassBits
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
HLT chain configuration information.
static const std::string hash2string(HLTHash, const std::string &category="TE")
hash function translating identifiers into names (via internal dictionary)
xAOD::TrigComposite Decision
TrigCompositeContainer_v1 TrigCompositeContainer
Declare the latest version of the container.
std::set< ConvProxy * > children
std::vector< TrigCompositeUtils::Decision * > hNode
std::vector< HLT::te_id_type > teIDs
TrigCompositeUtils::Decision * imNode
static const uint64_t MissingFEA
std::vector< HLT::TriggerElement::FeatureAccessHelper > tracks
bool mergeAllowed(const ConvProxy *other) const
std::set< HLT::Identifier > runChains
std::vector< HLT::TriggerElement::FeatureAccessHelper > features
std::set< HLT::Identifier > passChains
std::set< ConvProxy * > parents
const HLT::TriggerElement * te
bool isParent(const ConvProxy *other) const
bool isChild(const ConvProxy *other) const
std::vector< HLT::TriggerElement::FeatureAccessHelper > rois
ConvProxy(const HLT::TriggerElement *te)
std::string description() const
TrigCompositeUtils::Decision * l1Node