ATLAS Offline Software
TrigComposite_v1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 // System include(s):
7 #include <algorithm>
8 #include <stdexcept>
9 #include <utility>
10 
11 
12 // xAOD include(s):
14 
16 
17 // Local include(s):
19 
20 #ifndef XAOD_STANDALONE
21 #include "AthenaKernel/BaseInfo.h"
22 #endif
23 
24 
25 namespace xAOD {
26 
27  // The "linkColIndices" aux type underwent an in-line schema evolution in October 2024
28  // from vector<vector<uint16_t>> to vector<vector<uint32_t>>.
29  //
30  // We need to have a static Accessor object defined for this aux name which lives outside of class scope in libxAODTrigger.so
31  // This object will be instantiated early, when ROOT reads this libraries dictionary upon opening a file.
32  // It will register the updated type in the aux registry at this early time, before any dictionaries
33  // stored in the file are read - which would populate the aux registry with the outdated type if the
34  // file was produced prior to the schema update.
35  //
36  // For consistency, the other Accessors used by the TrigComposite interface implementation are moved up here too.
37  static const SG::Accessor< std::vector< std::string > > acc_linkColNames( "linkColNames" );
38  static const SG::Accessor< std::vector< TrigComposite_v1::sgkey_t > > acc_linkColKeys( "linkColKeys" );
39  static const SG::Accessor< std::vector< TrigComposite_v1::index_type > > acc_linkColIndices( "linkColIndices" ); // Caution: Schema evolution, October 2024
40  static const SG::Accessor< std::vector< uint32_t > > acc_linkColClids( "linkColClids" );
41 
42  // Remapped element link keys and indices are decorated temporarily onto immutable nodes via these accessors.
43  // These become solidified when a navigation graph is run through TrigNavSlimmingMTAlg.
44  static const SG::Accessor< std::vector< TrigComposite_v1::sgkey_t > > acc_remap_linkColKeys( "remap_linkColKeys" );
45  static const SG::Accessor< std::vector< TrigComposite_v1::index_type > > acc_remap_linkColIndices( "remap_linkColIndices" );
46 
48  : std::runtime_error (msg)
49  {
50  }
51 
52  const std::string TrigComposite_v1::s_collectionSuffix{"__COLL"};
53 
54  // Note: These definitions shadow those in TrigCompositeUtils.py
55  const std::string TrigComposite_v1::s_initialRoIString{"initialRoI"};
56  const std::string TrigComposite_v1::s_initialRecRoIString{"initialRecRoI"};
57  const std::string TrigComposite_v1::s_roiString{"roi"};
58  const std::string TrigComposite_v1::s_viewString{"view"};
59  const std::string TrigComposite_v1::s_featureString{"feature"};
60  const std::string TrigComposite_v1::s_seedString{"seed"};
61 
62  const std::string TrigComposite_v1::s_hltSeedingNodeNameString{"L1"};
63  const std::string TrigComposite_v1::s_filterNodeNameString{"F"};
64  const std::string TrigComposite_v1::s_inputMakerNodeNameString{"IM"};
65  const std::string TrigComposite_v1::s_hypoAlgNodeNameString{"H"};
66  const std::string TrigComposite_v1::s_comboHypoAlgNodeNameString{"CH"};
68  const std::string TrigComposite_v1::s_summaryPassNodeNameString{"HLTPassRaw"};
69  const std::string TrigComposite_v1::s_summaryPassExpressNodeNameString{"HLTPassExpress"};
70  const std::string TrigComposite_v1::s_summaryPrescaledNodeNameString{"HLTPrescaled"};
71 
72  bool TrigComposite_v1::s_throwOnCopyError = false;
73 
75  }
76 
78  this->makePrivateStore( parent );
79  }
80 
82  if(this == &rhs) return *this;
83  if( ( ! hasStore() ) && ( ! container() ) ) this->makePrivateStore();
84 
85  // Copy the auxiliary variables:
87 
88  // Return this object:
89  return *this;
90  }
91 
93  //
94  // Built in accessor functions
95  //
96 
98  name, setName )
99 
100  AUXSTORE_OBJECT_SETTER_AND_GETTER( TrigComposite_v1, std::vector<TrigCompositeUtils::DecisionID>,
101  decisions, setDecisions )
102 
103  //
105 
107  //
108  // Implementation for the link copy functions
109  //
110 
111  void TrigComposite_v1::copyLinkInternal(const xAOD::TrigComposite_v1& other, const size_t index, const std::string& newName) {
112  this->linkColNamesNC().push_back( newName );
113  this->linkColClidsNC().push_back( other.linkColClids().at(index) );
114  if (other.isRemapped()) {
115  this->linkColKeysNC().push_back( other.linkColKeysRemap().at(index) );
116  this->linkColIndicesNC().push_back( other.linkColIndicesRemap().at(index) );
117  } else {
118  this->linkColKeysNC().push_back( other.linkColKeys().at(index) );
119  this->linkColIndicesNC().push_back( other.linkColIndices().at(index) );
120  }
121  }
122 
123  bool TrigComposite_v1::copyLinkFrom(const xAOD::TrigComposite_v1& other, const std::string& name, std::string newName) {
124  if (newName.empty()) {
125  newName = name;
126  }
127  bool didCopy = false;
128  // Check for the existence of single link
129  std::vector<std::string>::const_iterator locationIt;
130  locationIt = std::find(other.linkColNames().begin(), other.linkColNames().end(), name);
131  if (locationIt != other.linkColNames().end()) {
132  size_t index = std::distance(other.linkColNames().begin(), locationIt);
133  if (this->hasObjectLink(newName)) {
134  if (s_throwOnCopyError) throw std::runtime_error("Already have link with name " + newName);
135  } else {
137  didCopy = true;
138  }
139  }
140  if (!didCopy && s_throwOnCopyError) throw std::runtime_error("Could not find link with name " + name);
141  return didCopy;
142  }
143 
144  bool TrigComposite_v1::copyLinkFrom(const xAOD::TrigComposite_v1* other, const std::string& name, std::string newName) {
145  return copyLinkFrom(*other, name, std::move(newName));
146  }
147 
148  bool TrigComposite_v1::copyLinkCollectionFrom(const xAOD::TrigComposite_v1& other, const std::string& name, std::string newName) {
149  bool didCopy = false;
150  // Check for the existence of a collection.
151  if (newName.empty()) {
152  newName = name;
153  }
154  const std::string mangledName = name + s_collectionSuffix;
155  const std::string mangledNewName = newName + s_collectionSuffix;
156  if (other.hasObjectLink(mangledName)) {
157  if (this->hasObjectLink(mangledNewName)) {
158  if (s_throwOnCopyError) throw std::runtime_error("Already have link collection with name " + newName);
159  } else {
160  // Copy all links in the collection. Just iterating through the source vector
161  for (size_t index = 0; index < other.linkColNames().size(); ++index) {
162  if (other.linkColNames().at(index) == mangledName) {
163  copyLinkInternal(other, index, mangledNewName);
164  }
165  }
166  didCopy = true;
167  }
168  }
169  if (!didCopy && s_throwOnCopyError) throw std::runtime_error("Could not find link with name " + name);
170  return didCopy;
171  }
172 
173  bool TrigComposite_v1::copyLinkCollectionFrom(const xAOD::TrigComposite_v1* other, const std::string& name, std::string newName) {
174  return copyLinkCollectionFrom(*other, name, std::move(newName));
175  }
176 
178  bool didCopy = false;
179  for (const std::string& name : other.linkColNames()) {
180  // Check we don't have one (or more) entries with this raw name (raw = might be mangled).
181  if (this->hasObjectLink(name)) continue;
182  // Check if the link is for a single object or collection of objects by looking for the mangled suffix
183  if (name.ends_with(s_collectionSuffix)) {
184  // The copyLinkCollectionFrom call needs the un-mangled name as it is a public fn. It will re-mangle.
185  const std::string unmangledName = name.substr(0, name.size() - s_collectionSuffix.size());
186  copyLinkCollectionFrom(other, unmangledName);
187  } else { // not a collection
189  }
190  didCopy = true;
191  }
192  return didCopy;
193  }
194 
196  return copyAllLinksFrom(*other);
197  }
198 
199  //
201 
203  //
204  // Implementation for the link accessor functions
205  //
206 
207 
208  bool TrigComposite_v1::removeObjectLink(const std::string& name) {
209  bool removed = false;
210  const std::vector< std::string >& names = linkColNames();
211  for( size_t i = 0; i < names.size(); ++i ) {
212  if( names.at(i) != name ) continue;
213  // Remove
214  linkColNamesNC().erase( linkColNamesNC().begin() + i );
215  linkColKeysNC().erase( linkColKeysNC().begin() + i );
216  linkColIndicesNC().erase( linkColIndicesNC().begin() + i );
217  linkColClidsNC().erase( linkColClidsNC().begin() + i );
218  removed = true;
219  break;
220  }
221  return removed;
222  }
223 
224 
226  bool removed = false;
227  const std::vector< std::string >& names = linkColNames();
228  const std::string mangledName = name + s_collectionSuffix;
229  for( size_t i = 0; i < names.size(); /*noop*/ ) {
230  if( names.at(i) == mangledName ) {
231  // Remove
232  linkColNamesNC().erase( linkColNamesNC().begin() + i );
233  linkColKeysNC().erase( linkColKeysNC().begin() + i );
234  linkColIndicesNC().erase( linkColIndicesNC().begin() + i );
235  linkColClidsNC().erase( linkColClidsNC().begin() + i );
236  removed = true;
237  } else {
238  ++i;
239  }
240  }
241  return removed;
242  }
243 
244  bool TrigComposite_v1::hasObjectLink( const std::string& name, const CLID clid ) const {
245 
246  // Since this function shouldn't throw exceptions too easily,
247  // let's be super careful here...
248  if( ! (acc_linkColNames.isAvailable( *this ) || acc_linkColClids.isAvailable( *this) ) ) {
249  return false;
250  }
251 
252  // The check itself is pretty simple:
253  const std::vector< std::string >& names = acc_linkColNames( *this );
254  const std::vector< uint32_t >& clids = acc_linkColClids( *this );
255 
256  std::vector<std::string>::const_iterator vecIt = std::find( names.begin(), names.end(), name );
257  if (vecIt == names.end()) {
258  return false; // Could not find name
259  }
260 
261  if (clid != CLID_NULL) { // Also check against clid
262  const uint32_t storedCLID = clids.at( std::distance( names.begin(), vecIt ) );
264  return derivesFromIParticle(storedCLID);
265  } else if (storedCLID != clid) { // Otherwise we require the ID to match
266  return false; // Type missmatch
267  }
268  }
269 
270  return true; // Satisfied
271  }
272 
273  bool TrigComposite_v1::hasObjectCollectionLinks( const std::string& collectionName, const CLID clid ) const {
274  const std::string mangledName = collectionName + s_collectionSuffix;
275  return hasObjectLink( mangledName, clid );
276  }
277 
278 
279  bool TrigComposite_v1::hasObjectLinkExact(const std::string& name, const sgkey_t key, const TrigComposite_v1::index_type index, const uint32_t clid) const {
280  for (size_t i = 0; i < this->linkColNames().size(); ++i) {
281  if (this->linkColNames().at(i) != name) continue;
282  if (!SG::sgkeyEqual (this->linkColKeys().at(i), key)) continue;
283  if (this->linkColIndices().at(i) != index) continue;
284  if (this->linkColClids().at(i) != clid) continue;
285  return true;
286  }
287  return false;
288  }
289 
290  bool TrigComposite_v1::derivesFromIParticle(const CLID clid [[maybe_unused]]) const {
291 #ifndef XAOD_STANDALONE
292  const SG::BaseInfoBase* bib = SG::BaseInfoBase::find (clid);
293  if (bib) {
295  }
296  // No base info available means we never called any of the macros declaring bases so it's
297  // likely that the clid doesn't inherit from IParticle...
298  return false;
299 #endif
300  return true;
301  }
302 
303  AUXSTORE_OBJECT_GETTER( TrigComposite_v1, std::vector< std::string >,
304  linkColNames )
305  AUXSTORE_OBJECT_GETTER( TrigComposite_v1, std::vector< uint32_t >,
306  linkColClids )
307 
308  const std::vector< SG::sgkey_t >& TrigComposite_v1::linkColKeys() const {
309  return acc_linkColKeys( *this );
310  }
311 
312  const std::vector< TrigComposite_v1::index_type >& TrigComposite_v1::linkColIndices() const {
313  return acc_linkColIndices( *this );
314  }
315 
316  const std::vector< SG::sgkey_t >& TrigComposite_v1::linkColKeysRemap() const {
317  return acc_remap_linkColKeys( *this );
318  }
319 
320  const std::vector< TrigComposite_v1::index_type >& TrigComposite_v1::linkColIndicesRemap() const {
321  return acc_remap_linkColIndices( *this );
322  }
323 
325 
326  std::vector< std::string >& TrigComposite_v1::linkColNamesNC() {
327  return acc_linkColNames( *this );
328  }
329 
330  std::vector< SG::sgkey_t >& TrigComposite_v1::linkColKeysNC() {
331  return acc_linkColKeys( *this );
332  }
333 
334  std::vector< TrigComposite_v1::index_type >& TrigComposite_v1::linkColIndicesNC() {
335  return acc_linkColIndices( *this );
336  }
337 
338  std::vector< uint32_t >& TrigComposite_v1::linkColClidsNC() {
339  return acc_linkColClids( *this );
340  }
341 
342  void TrigComposite_v1::typelessSetObjectLink( const std::string& name, const sgkey_t key, const uint32_t clid, const TrigComposite_v1::index_type beginIndex, const TrigComposite_v1::index_type endIndex ) {
343 
344  // Loop over collections
345  if ( int32_t(endIndex) - int32_t(beginIndex) > 1 ) { // Adding a *collection* of links, this needs to be a signed check as a difference <= 0 implies that endIndex is less than or equal to beginIndex
346 
347  // Check uniqueness
348  const std::string mangledName = name + s_collectionSuffix;
349  const std::vector< std::string >& names = linkColNames();
350  int oldStart = -1;
351  int oldEnd = -1;
352  for( size_t nameIndex = 0; nameIndex < names.size(); ++nameIndex ) {
353 
354  // Look for an existing collection with the same name
355  if( names[ nameIndex ] == mangledName ) {
356  oldEnd = nameIndex + 1;
357  if ( oldStart == -1 ) oldStart = nameIndex;
358  }
359  else if ( oldStart != -1 ) {
360  // If the start has been found, we must now be past the ned
361  break;
362  }
363  }
364 
365  // Erase the old collection, if there was one
366  if ( oldStart != -1 ) {
367  this->linkColNamesNC().erase( this->linkColNamesNC().begin() + oldStart, this->linkColNamesNC().begin() + oldEnd );
368  this->linkColKeysNC().erase( this->linkColKeysNC().begin() + oldStart, this->linkColKeysNC().begin() + oldEnd );
369  this->linkColIndicesNC().erase( this->linkColIndicesNC().begin() + oldStart, this->linkColIndicesNC().begin() + oldEnd );
370  this->linkColClidsNC().erase( this->linkColClidsNC().begin() + oldStart, this->linkColClidsNC().begin() + oldEnd );
371  }
372 
373  // Append the new collection
374  for ( TrigComposite_v1::index_type index = beginIndex; index < endIndex; ++index ) {
375  this->linkColNamesNC().push_back( mangledName );
376  this->linkColKeysNC().push_back( key );
377  this->linkColIndicesNC().push_back( index );
378  this->linkColClidsNC().push_back( clid );
379  }
380 
381  } else { // Adding a *single* link
382 
383  // Check uniqueness
385 
386  this->linkColNamesNC().push_back( name );
387  this->linkColKeysNC().push_back( key );
388  this->linkColIndicesNC().push_back( beginIndex );
389  this->linkColClidsNC().push_back( clid );
390 
391  } else {
392 
393  // Over-write an existing object
394  const std::vector< std::string >& names = linkColNames();
395  for( size_t nameIndex = 0; nameIndex < names.size(); ++nameIndex ) {
396  if( names[ nameIndex ] == name ) {
397  this->linkColKeysNC()[ nameIndex ] = key;
398  this->linkColIndicesNC()[ nameIndex ] = beginIndex;
399  this->linkColClidsNC()[ nameIndex ] = clid;
400  break; // Names are unique, so stop once found
401  } // Check of names
402  } // Loop over names
403 
404  } // Check of uniqueness of adding single link
405 
406  } // Check of adding single link vs link collection
407  }
408 
410  std::vector<std::string>::const_iterator it = std::find(linkColNames().begin(), linkColNames().end(), name);
411  if (it == linkColNames().end()) {
412  return false;
413  }
414  const size_t location = std::distance(linkColNames().begin(), it);
415  if (isRemapped()) {
416  key = linkColKeysRemap().at(location);
417  clid = linkColClids().at(location);
418  index = linkColIndicesRemap().at(location);
419  } else {
420  key = linkColKeys().at(location);
421  clid = linkColClids().at(location);
422  index = linkColIndices().at(location);
423  }
424  return true;
425  }
426 
427 
429  std::vector<sgkey_t>& keyVec, std::vector<uint32_t>& clidVec, std::vector<TrigComposite_v1::index_type>& indexVec ) const
430  {
431  bool found = false;
432  const std::string mangledName = name + s_collectionSuffix;
433  for (size_t i = 0; i < this->linkColNames().size(); ++i) {
434  if (linkColNames().at(i) != mangledName) {
435  continue;
436  }
437  if (isRemapped()) {
438  keyVec.push_back( linkColKeysRemap().at(i) );
439  clidVec.push_back( linkColClids().at(i) );
440  indexVec.push_back( linkColIndicesRemap().at(i) );
441  } else {
442  keyVec.push_back( linkColKeys().at(i) );
443  clidVec.push_back( linkColClids().at(i) );
444  indexVec.push_back( linkColIndices().at(i) );
445  }
446  found = true;
447  }
448  return found;
449  }
450 
451 
453  size_t nDecorations = 0;
454  if (acc_remap_linkColKeys.isAvailable( *this )) ++nDecorations;
455  if (acc_remap_linkColIndices.isAvailable( *this )) ++nDecorations;
456  if (nDecorations == 1) {
457  throw std::runtime_error("TrigComposite_v1::isRemapped Only one of the 'remap_linkColKeys' and 'remap_linkColIndices' "
458  "decorations were found on this object. This should never happen, a remapped element link must have both of these collections.");
459  }
460  return static_cast<bool>(nDecorations); //0=False, 2=True
461  }
462 
463 
464  //
466 
467 
468 std::ostream& operator<<(std::ostream& os, const xAOD::TrigComposite_v1& tc) {
469  os << "TrigComposite_v1 name:'" << tc.name() << "'" << std::endl;
470  const bool isRemapped = tc.isRemapped();
471  os << " N Links:" << tc.linkColNames().size() << ", isRemapped:" << (isRemapped ? "YES" : "NO");
472  for (size_t i=0; i<tc.linkColNames().size(); ++i){
473  if (!i) os << std::endl;
474  os << " Link Name:" << tc.linkColNames()[i];
475  os << ", Key:" << tc.linkColKeys()[i];
476  if (isRemapped) os << ", RemappedKey:" << tc.linkColKeysRemap()[i];
477  os << ", Index:" << tc.linkColIndices()[i];
478  if (isRemapped) os << ", RemappedIndex:" << tc.linkColIndicesRemap()[i];
479  os << ", CLID:" << tc.linkColClids()[i];
480  if (i != tc.linkColNames().size() - 1) os << std::endl;
481  }
482  if (!tc.decisions().empty()) {
483  os << std::endl << " N Decisions:" << tc.decisions().size() << std::endl << " ";
484  for (const TrigCompositeUtils::DecisionID id : tc.decisions()) os << id << ", ";
485  }
486  return os;
487 }
488 
489 } // namespace xAOD
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::name
name
Definition: TriggerMenuJson_v1.cxx:29
xAOD::ExcNotIParticleContainer::ExcNotIParticleContainer
ExcNotIParticleContainer(const std::string &msg)
Definition: TrigComposite_v1.cxx:47
xAOD::TrigComposite_v1::s_collectionSuffix
static const std::string s_collectionSuffix
Definition: TrigComposite_v1.h:305
TrigCompositeUtils::DecisionID
unsigned int DecisionID
Definition: TrigComposite_v1.h:27
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
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
AuxStoreAccessorMacros.h
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
index
Definition: index.py:1
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
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:407
xAOD::TrigComposite_v1::s_featureString
static const std::string s_featureString
Constant used to identify a feature.
Definition: TrigComposite_v1.h:254
xAOD::other
@ other
Definition: TrackingPrimitives.h:510
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::TrigComposite_v1::s_seedString
static const std::string s_seedString
Constant used to identify a seed (parent)
Definition: TrigComposite_v1.h:256
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:246
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
xAOD::TrigComposite_v1::sgkey_t
SG::sgkey_t sgkey_t
Definition: TrigComposite_v1.h:55
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::linkColClids
const std::vector< uint32_t > & linkColClids() const
Raw access to the persistent link CLIDs.
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
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:265
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
StringSerializer.h
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:273
SG::IAuxElement::index
size_t index() const
Return the index of this element within its container.
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
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:267
lumiFormat.i
int i
Definition: lumiFormat.py:85
BaseInfo.h
Provide an interface for finding inheritance information at run time.
vector
Definition: MultiHisto.h:13
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:261
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
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::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
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:37
test_pyathena.parent
parent
Definition: test_pyathena.py:15
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:270
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:52
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
xAOD::TrigComposite_v1::linkColIndices
const std::vector< index_type > & linkColIndices() const
Raw access to the persistent link indices.
Definition: TrigComposite_v1.cxx:312
xAOD::decisions
decisions
Definition: TrigComposite_v1.cxx:101
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:259
SG::BaseInfoBase::find
static const BaseInfoBase * find(CLID clid)
Find the BaseInfoBase instance for clid.
Definition: BaseInfo.cxx:570
MakeNewFileFromOldAndSubstitution.newName
dictionary newName
Definition: ICHEP2016/MakeNewFileFromOldAndSubstitution.py:95
xAOD::TrigComposite_v1::index_type
uint32_t index_type
Definition: TrigComposite_v1.h:56
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:248
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
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:192
SG::AuxElement::operator=
AuxElement & operator=(const AuxElement &other)
Assignment.
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.
SG::AuxElement::hasStore
bool hasStore() const
Return true if this object has an associated store.
Definition: AuxElement.cxx:398
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
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::AUXSTORE_OBJECT_GETTER
AUXSTORE_OBJECT_GETTER(TrigComposite_v1, std::vector< std::string >, linkColNames) AUXSTORE_OBJECT_GETTER(TrigComposite_v1
SG::BaseInfoBase
The non-template portion of the BaseInfo implementation.
Definition: Control/AthenaKernel/AthenaKernel/BaseInfo.h:451
TrigComposite_v1.h
xAOD::TrigComposite_v1::s_viewString
static const std::string s_viewString
Constant used to identify a view.
Definition: TrigComposite_v1.h:252
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:263
xAOD::TrigComposite_v1::s_summaryPrescaledNodeNameString
static const std::string s_summaryPrescaledNodeNameString
Constant used to identify the single prescaled graph node.
Definition: TrigComposite_v1.h:279
SG::AuxElement::container
const SG::AuxVectorData * container() const
Return the container holding this element.
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:276
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
SG::sgkeyEqual
constexpr bool sgkeyEqual(const sgkey_t a, const sgkey_t b)
Compare two sgkeys for equality.
Definition: CxxUtils/CxxUtils/sgkey_t.h:39
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
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:250
xAOD::AUXSTORE_OBJECT_SETTER_AND_GETTER
AUXSTORE_OBJECT_SETTER_AND_GETTER(CaloRings_v1, RingSetLinks, ringSetLinks, setRingSetLinks) unsigned CaloRings_v1
Definition: CaloRings_v1.cxx:27
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
SG::BaseInfoBase::is_base
bool is_base(CLID clid) const
Return true if clid is the ID of a class that is known to be a base of T.
Definition: BaseInfo.cxx:344