ATLAS Offline Software
TrigComposite_v1.h
Go to the documentation of this file.
1 // Dear emacs, this is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef XAODTRIGGER_VERSIONS_TRIGCOMPOSITE_V1_H
8 #define XAODTRIGGER_VERSIONS_TRIGCOMPOSITE_V1_H
9 
10 // System include(s):
11 extern "C" {
12 # include <stdint.h>
13 }
14 #include <string>
15 #include <vector>
16 #include <set>
17 
18 // EDM include(s):
20 #include "AthLinks/ElementLink.h"
22 #include "SGCore/sgkey_t.h"
23 
25 
26 namespace TrigCompositeUtils{
27  typedef unsigned int DecisionID;
28  typedef std::set<DecisionID> DecisionIDContainer;
29 }
30 
31 namespace xAOD {
32 
34  : public std::runtime_error
35  {
36  public:
37  ExcNotIParticleContainer (const std::string& msg);
38  };
39 
50 
51  public:
54 
57 
60 
63 
66 
68  const std::string& name() const;
70  void setName( const std::string& name );
71 
73  const std::vector<TrigCompositeUtils::DecisionID>& decisions() const;
75  void setDecisions( const std::vector<TrigCompositeUtils::DecisionID>& decisions );
76 
78 
81 
83  template< typename TYPE >
84  bool hasDetail( const std::string& name ) const;
85 
87  template< typename TYPE >
88  bool setDetail( const std::string& name, const TYPE& value );
89 
91  template< typename TYPE >
92  bool getDetail( const std::string& name, TYPE& value ) const;
93 
95  template<typename TYPE>
96  TYPE getDetail( const std::string& name ) const;
97 
99 
102 
104  template< class CONTAINER >
105  bool setObjectLink( const std::string& name,
106  const ElementLink< CONTAINER >& link );
108  bool hasObjectLink( const std::string& name, const CLID clid = CLID_NULL ) const;
110  template< class CONTAINER >
112  objectLink( const std::string& name ) const;
114  template< class OBJECT >
115  const OBJECT* object( const std::string& name ) const;
116 
118  template< class CONTAINER >
119  bool addObjectCollectionLink( const std::string& collectionName,
120  const ElementLink< CONTAINER >& link );
122  template< class CONTAINER >
123  bool addObjectCollectionLinks( const std::string& collectionName,
124  const std::vector<ElementLink< CONTAINER >>& links );
126  bool hasObjectCollectionLinks( const std::string& collectionName, const CLID clid = CLID_NULL) const;
128  template< class CONTAINER >
129  std::vector<ElementLink< CONTAINER >>
130  objectCollectionLinks( const std::string& collectionName ) const;
131 
133  void typelessSetObjectLink( const std::string& name,
134  const sgkey_t key,
135  const uint32_t clid,
136  const index_type beginIndex,
137  const index_type endIndex = 0 );
138 
145  bool typelessGetObjectLink( const std::string& name,
146  sgkey_t& key,
147  uint32_t& clid,
148  index_type& index) const;
149 
156  bool typelessGetObjectCollectionLinks( const std::string& name,
157  std::vector<sgkey_t>& keyVec,
158  std::vector<uint32_t>& clidVec,
159  std::vector<index_type>& indexVec) const;
160 
161 
164  template< class CONTAINER >
165  std::vector<std::string> getObjectNames() const;
166 
169  template< class CONTAINER >
170  std::vector<std::string> getObjectCollectionNames() const;
171 
174  std::vector<std::string> getObjectNames(const CLID clid) const;
175 
178  std::vector<std::string> getObjectCollectionNames(const CLID clid) const;
179 
183  bool removeObjectLink(const std::string& name);
184 
188  bool removeObjectCollectionLinks(const std::string& name);
189 
191 
194 
201  bool copyLinkFrom(const xAOD::TrigComposite_v1& other, const std::string& name, std::string newName = "");
202  bool copyLinkFrom(const xAOD::TrigComposite_v1* other, const std::string& name, std::string newName = "");
203 
210  bool copyLinkCollectionFrom(const xAOD::TrigComposite_v1& other, const std::string& name, std::string newName = "");
211  bool copyLinkCollectionFrom(const xAOD::TrigComposite_v1* other, const std::string& name, std::string newName = "");
212 
219 
220 
222 
225 
227  const std::vector< std::string >& linkColNames() const;
229  const std::vector< sgkey_t >& linkColKeys() const;
231  const std::vector< index_type >& linkColIndices() const;
233  const std::vector< uint32_t >& linkColClids() const;
234 
238  bool isRemapped() const;
239 
241  const std::vector< sgkey_t >& linkColKeysRemap() const;
243  const std::vector< index_type >& linkColIndicesRemap() const;
244 
246 
248  static bool s_throwOnCopyError ATLAS_THREAD_SAFE;
249 
251  static const std::string s_initialRoIString;
253  static const std::string s_initialRecRoIString;
255  static const std::string s_roiString;
257  static const std::string s_viewString;
259  static const std::string s_featureString;
261  static const std::string s_seedString;
262 
264  static const std::string s_hltSeedingNodeNameString;
266  static const std::string s_filterNodeNameString;
268  static const std::string s_inputMakerNodeNameString;
270  static const std::string s_hypoAlgNodeNameString;
272  static const std::string s_comboHypoAlgNodeNameString;
275  static const std::string s_summaryFilterNodeNameString;
278  static const std::string s_summaryPassNodeNameString;
281  static const std::string s_summaryPassExpressNodeNameString;
284  static const std::string s_summaryPrescaledNodeNameString;
285 
286  private:
288  std::vector< std::string >& linkColNamesNC();
290  std::vector< sgkey_t >& linkColKeysNC();
292  std::vector< index_type >& linkColIndicesNC();
294  std::vector< uint32_t >& linkColClidsNC();
295 
296  // Helper function, check for exact link match
297  bool hasObjectLinkExact(const std::string& name, const sgkey_t key, const index_type index, const uint32_t clid) const;
298 
300  void copyLinkInternal(const xAOD::TrigComposite_v1& other, const size_t index, const std::string& newName);
301 
303  bool derivesFromIParticle(const CLID clid) const;
304 
306  template< class CONTAINER >
307  void checkTypes(const CLID storedCLID, const std::string& name) const;
308 
309 
310  static const std::string s_collectionSuffix;
311 
312  }; // class TrigComposite_v1
313 
317 std::ostream& operator<<(std::ostream& os, const xAOD::TrigComposite_v1& tc);
318 
319 
320 } // namespace xAOD
321 
322 // Include the template implementation:
323 #include "TrigComposite_v1.icc"
324 
325 #endif // XAODTRIGGER_VERSIONS_TRIGCOMPOSITE_V1_H
xAOD::TrigComposite_v1::linkColKeysRemap
const std::vector< sgkey_t > & linkColKeysRemap() const
Raw access to the persistent link labels. Will attempt to access remapped link data.
Definition: TrigComposite_v1.cxx:316
xAOD::TrigComposite_v1::addObjectCollectionLinks
bool addObjectCollectionLinks(const std::string &collectionName, const std::vector< ElementLink< CONTAINER >> &links)
Add links to multiple objects within a collection. Performs de-duplication.
xAOD::ExcNotIParticleContainer::ExcNotIParticleContainer
ExcNotIParticleContainer(const std::string &msg)
Definition: TrigComposite_v1.cxx:47
xAOD::TrigComposite_v1::setDetail
bool setDetail(const std::string &name, const TYPE &value)
Set an TYPE detail on the object.
xAOD::TrigComposite_v1::s_collectionSuffix
static const std::string s_collectionSuffix
Definition: TrigComposite_v1.h:310
TrigCompositeUtils::DecisionID
unsigned int DecisionID
Definition: TrigComposite_v1.h:27
xAOD::TrigComposite_v1::typelessGetObjectLink
bool typelessGetObjectLink(const std::string &name, sgkey_t &key, uint32_t &clid, index_type &index) const
Fetches a single link without type.
Definition: TrigComposite_v1.cxx:409
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
xAOD::TrigComposite_v1::objectLink
ElementLink< CONTAINER > objectLink(const std::string &name) const
Get the link with the requested name.
index
Definition: index.py:1
SG::AuxElement
Base class for elements of a container that can have aux data.
Definition: AuxElement.h:483
xAOD::TrigComposite_v1::hasObjectLink
bool hasObjectLink(const std::string &name, const CLID clid=CLID_NULL) const
Check if a link to an object with a given name and type exists. CLID_NULL to not check type.
Definition: TrigComposite_v1.cxx:244
xAOD::TrigComposite_v1::object
const OBJECT * object(const std::string &name) const
Get a bare pointer with the requested name.
xAOD::TrigComposite_v1::s_featureString
static const std::string s_featureString
Constant used to identify a feature.
Definition: TrigComposite_v1.h:259
xAOD::other
@ other
Definition: TrackingPrimitives.h:510
athena.value
value
Definition: athena.py:124
xAOD::TrigComposite_v1::hasDetail
bool hasDetail(const std::string &name) const
Check if a given type of detail is available.
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::TrigComposite_v1::setDecisions
void setDecisions(const std::vector< TrigCompositeUtils::DecisionID > &decisions)
Set positive HLT chain decisions associated with this TrigComposite. Navigation use.
xAOD::TrigComposite_v1::s_seedString
static const std::string s_seedString
Constant used to identify a seed (parent)
Definition: TrigComposite_v1.h:261
xAOD::TrigComposite_v1::hasObjectCollectionLinks
bool hasObjectCollectionLinks(const std::string &collectionName, const CLID clid=CLID_NULL) const
Check if links exist to a collection of objects with given name and type. CLID_NULL to not check type...
Definition: TrigComposite_v1.cxx:273
xAOD::TrigComposite_v1::s_initialRoIString
static const std::string s_initialRoIString
Constant used to identify an initial ROI from L1.
Definition: TrigComposite_v1.h:251
xAOD::TrigComposite_v1::sgkey_t
SG::sgkey_t sgkey_t
Definition: TrigComposite_v1.h:52
xAOD::TrigComposite_v1::linkColNamesNC
std::vector< std::string > & linkColNamesNC()
Raw access to the persistent link names (non-const)
Definition: TrigComposite_v1.cxx:326
xAOD::TrigComposite_v1::objectCollectionLinks
std::vector< ElementLink< CONTAINER > > objectCollectionLinks(const std::string &collectionName) const
Get a vector of all element links from the collection.
xAOD::TrigComposite_v1::linkColClids
const std::vector< uint32_t > & linkColClids() const
Raw access to the persistent link CLIDs.
xAOD::TrigComposite_v1::s_hypoAlgNodeNameString
static const std::string s_hypoAlgNodeNameString
Constant used to identify a navigation graph node as being from a Hypo Alg.
Definition: TrigComposite_v1.h:270
xAOD::TrigComposite_v1::typelessSetObjectLink
void typelessSetObjectLink(const std::string &name, const sgkey_t key, const uint32_t clid, const index_type beginIndex, const index_type endIndex=0)
Add a link without type.
Definition: TrigComposite_v1.cxx:342
xAOD::TrigComposite_v1::s_summaryPassNodeNameString
static const std::string s_summaryPassNodeNameString
Constant used to identify the single terminus graph node the end point of all chains which accept the...
Definition: TrigComposite_v1.h:278
xAOD::TrigComposite_v1::getObjectNames
std::vector< std::string > getObjectNames() const
Look up all links stored to objects of (container) type CONTAINER.
xAOD::TrigComposite_v1::addObjectCollectionLink
bool addObjectCollectionLink(const std::string &collectionName, const ElementLink< CONTAINER > &link)
Add a link to a single object within a collection. Performs de-duplication.
xAOD::TrigComposite_v1::ATLAS_THREAD_SAFE
static bool s_throwOnCopyError ATLAS_THREAD_SAFE
For use in validation, when copying element links from one object to another.
Definition: TrigComposite_v1.h:248
xAOD::TrigComposite_v1::copyLinkCollectionFrom
bool copyLinkCollectionFrom(const xAOD::TrigComposite_v1 &other, const std::string &name, std::string newName="")
Copy one named link collection from another object.
Definition: TrigComposite_v1.cxx:148
xAOD::TrigComposite_v1::s_comboHypoAlgNodeNameString
static const std::string s_comboHypoAlgNodeNameString
Constant used to identify a navigation graph node as being from a Combo Hypo Alg.
Definition: TrigComposite_v1.h:272
xAOD::TrigComposite_v1::setObjectLink
bool setObjectLink(const std::string &name, const ElementLink< CONTAINER > &link)
Set the link to an object.
xAOD::ExcNotIParticleContainer
Definition: TrigComposite_v1.h:35
xAOD::TrigComposite_v1::getDetail
TYPE getDetail(const std::string &name) const
Get a detail by name, missing detail will throw SG::ExcBadAuxVar.
DMTest::links
links
Definition: CLinks_v1.cxx:22
xAOD::TrigComposite_v1::s_filterNodeNameString
static const std::string s_filterNodeNameString
Constant used to identify a navigation graph node as being from a Filter.
Definition: TrigComposite_v1.h:266
IParticleContainer.h
xAOD::TrigComposite_v1::copyLinkFrom
bool copyLinkFrom(const xAOD::TrigComposite_v1 &other, const std::string &name, std::string newName="")
Copy one named link from another object.
Definition: TrigComposite_v1.cxx:123
sgkey_t.h
xAOD::TrigComposite_v1::hasObjectLinkExact
bool hasObjectLinkExact(const std::string &name, const sgkey_t key, const index_type index, const uint32_t clid) const
Definition: TrigComposite_v1.cxx:279
xAOD::TrigComposite_v1::operator=
TrigComposite_v1 & operator=(const TrigComposite_v1 &rhs)
Assignment operator.
Definition: TrigComposite_v1.cxx:81
xAOD::TrigComposite_v1::getObjectCollectionNames
std::vector< std::string > getObjectCollectionNames() const
Look up all links stored to collections objects from (container) type CONTAINER.
xAOD::TrigComposite_v1::copyAllLinksFrom
bool copyAllLinksFrom(const xAOD::TrigComposite_v1 &other)
Copy all single links and collections of links from another object.
Definition: TrigComposite_v1.cxx:177
xAOD::TrigComposite_v1::linkColKeysNC
std::vector< sgkey_t > & linkColKeysNC()
Raw access to the persistent link labels (non-const)
Definition: TrigComposite_v1.cxx:330
xAOD::TrigComposite_v1::linkColIndicesRemap
const std::vector< index_type > & linkColIndicesRemap() const
Raw access to the persistent link indices. Will attempt to access remapped link data.
Definition: TrigComposite_v1.cxx:320
test_pyathena.parent
parent
Definition: test_pyathena.py:15
xAOD::TrigComposite_v1::setName
void setName(const std::string &name)
Set a human-readable name for the object.
xAOD::TrigComposite_v1::s_summaryFilterNodeNameString
static const std::string s_summaryFilterNodeNameString
Constant used to identify a navigation graph node as being from a final Filter created by the Decisio...
Definition: TrigComposite_v1.h:275
xAOD::TrigComposite_v1::decisions
const std::vector< TrigCompositeUtils::DecisionID > & decisions() const
Get positive HLT chain decisions associated with this TrigComposite. Navigation use.
xAOD::TrigComposite_v1::linkColIndicesNC
std::vector< index_type > & linkColIndicesNC()
Raw access to the persistent link indices (non-const)
Definition: TrigComposite_v1.cxx:334
xAOD::TrigComposite_v1
Class used to describe composite objects in the HLT.
Definition: TrigComposite_v1.h:49
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:226
xAOD::TrigComposite_v1::linkColIndices
const std::vector< index_type > & linkColIndices() const
Raw access to the persistent link indices.
Definition: TrigComposite_v1.cxx:312
xAOD::TrigComposite_v1::s_hltSeedingNodeNameString
static const std::string s_hltSeedingNodeNameString
Constant used to identify a navigation graph node as being from the HLTSeeding.
Definition: TrigComposite_v1.h:264
TYPE
#define TYPE(CODE, TYP, IOTYP)
MakeNewFileFromOldAndSubstitution.newName
dictionary newName
Definition: ICHEP2016/MakeNewFileFromOldAndSubstitution.py:95
xAOD::TrigComposite_v1::index_type
uint32_t index_type
Definition: TrigComposite_v1.h:53
xAOD::TrigComposite_v1::s_initialRecRoIString
static const std::string s_initialRecRoIString
Constant used to identify an initial HLT ROI derived from L1.
Definition: TrigComposite_v1.h:253
xAOD::TrigComposite_v1::copyLinkInternal
void copyLinkInternal(const xAOD::TrigComposite_v1 &other, const size_t index, const std::string &newName)
Helper function, copy one link into this object.
Definition: TrigComposite_v1.cxx:111
SG::sgkey_t
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition: sgkey_t.h:32
xAOD::TrigComposite_v1::removeObjectCollectionLinks
bool removeObjectCollectionLinks(const std::string &name)
Delete any stored collection of element links with the given name.
Definition: TrigComposite_v1.cxx:225
xAOD::TrigComposite_v1::linkColNames
const std::vector< std::string > & linkColNames() const
Raw access to the persistent link names.
xAOD::TrigComposite_v1::name
const std::string & name() const
Get a human-readable name for the object.
xAOD::TrigComposite_v1::TrigComposite_v1
TrigComposite_v1()
Default constructor.
Definition: TrigComposite_v1.cxx:74
xAOD::TrigComposite_v1::linkColKeys
const std::vector< sgkey_t > & linkColKeys() const
Raw access to the persistent link labels.
Definition: TrigComposite_v1.cxx:308
TrigCompositeUtils::DecisionIDContainer
std::set< DecisionID > DecisionIDContainer
Definition: TrigComposite_v1.h:28
xAOD::TrigComposite_v1::isRemapped
bool isRemapped() const
Information on if linkColKeys() and linkColIndices() are able to access remapped link data Remapping ...
Definition: TrigComposite_v1.cxx:452
xAOD::TrigComposite_v1::checkTypes
void checkTypes(const CLID storedCLID, const std::string &name) const
Helper function. Contains type logic check for use during actual link retrieval. Throws on error.
TrigCompositeUtils
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:19
xAOD::TrigComposite_v1::s_viewString
static const std::string s_viewString
Constant used to identify a view.
Definition: TrigComposite_v1.h:257
xAOD::TrigComposite_v1::removeObjectLink
bool removeObjectLink(const std::string &name)
Delete any stored element link with the given name.
Definition: TrigComposite_v1.cxx:208
xAOD::TrigComposite_v1::s_inputMakerNodeNameString
static const std::string s_inputMakerNodeNameString
Constant used to identify a navigation graph node as being from a Input Maker.
Definition: TrigComposite_v1.h:268
xAOD::TrigComposite_v1::s_summaryPrescaledNodeNameString
static const std::string s_summaryPrescaledNodeNameString
Constant used to identify the single prescaled graph node.
Definition: TrigComposite_v1.h:284
xAOD::TrigComposite_v1::getDetail
bool getDetail(const std::string &name, TYPE &value) const
Get an TYPE detail from the object.
xAOD::TrigComposite_v1::s_summaryPassExpressNodeNameString
static const std::string s_summaryPassExpressNodeNameString
Constant used to identify the single express-accept graph node.
Definition: TrigComposite_v1.h:281
checker_macros.h
Define macros for attributes used to control the static checker.
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
TrigComposite_v1.icc
xAOD::TrigComposite_v1::derivesFromIParticle
bool derivesFromIParticle(const CLID clid) const
Helper function. Check if the requested type can be down cast to an IParticle transient interface.
Definition: TrigComposite_v1.cxx:290
xAOD::TrigComposite_v1::typelessGetObjectCollectionLinks
bool typelessGetObjectCollectionLinks(const std::string &name, std::vector< sgkey_t > &keyVec, std::vector< uint32_t > &clidVec, std::vector< index_type > &indexVec) const
Fetches a collection of links without type.
Definition: TrigComposite_v1.cxx:428
AuxElement.h
Base class for elements of a container that can have aux data.
xAOD::operator<<
std::ostream & operator<<(std::ostream &out, const std::pair< FIRST, SECOND > &pair)
Helper print operator.
Definition: RDataSource.cxx:53
xAOD::TrigComposite_v1::s_roiString
static const std::string s_roiString
Constant used to identify an (explicitly) updated HLT ROI.
Definition: TrigComposite_v1.h:255
xAOD::TrigComposite_v1::linkColClidsNC
std::vector< uint32_t > & linkColClidsNC()
Raw access to the persistent link CLIDs (non-const)
Definition: TrigComposite_v1.cxx:338
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37