ATLAS Offline Software
TrigComposite_v1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 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 
28  : std::runtime_error (msg)
29  {
30  }
31 
32  const std::string TrigComposite_v1::s_collectionSuffix{"__COLL"};
33 
34  // Note: These definitions shadow those in TrigCompositeUtils.py
35  const std::string TrigComposite_v1::s_initialRoIString{"initialRoI"};
36  const std::string TrigComposite_v1::s_initialRecRoIString{"initialRecRoI"};
37  const std::string TrigComposite_v1::s_roiString{"roi"};
38  const std::string TrigComposite_v1::s_viewString{"view"};
39  const std::string TrigComposite_v1::s_featureString{"feature"};
40  const std::string TrigComposite_v1::s_seedString{"seed"};
41 
42  const std::string TrigComposite_v1::s_hltSeedingNodeNameString{"L1"};
43  const std::string TrigComposite_v1::s_filterNodeNameString{"F"};
44  const std::string TrigComposite_v1::s_inputMakerNodeNameString{"IM"};
45  const std::string TrigComposite_v1::s_hypoAlgNodeNameString{"H"};
46  const std::string TrigComposite_v1::s_comboHypoAlgNodeNameString{"CH"};
48  const std::string TrigComposite_v1::s_summaryPassNodeNameString{"HLTPassRaw"};
49  const std::string TrigComposite_v1::s_summaryPassExpressNodeNameString{"HLTPassExpress"};
50  const std::string TrigComposite_v1::s_summaryPrescaledNodeNameString{"HLTPrescaled"};
51 
52  bool TrigComposite_v1::s_throwOnCopyError = false;
53 
55  }
56 
58  this->makePrivateStore( parent );
59  }
60 
62  if(this == &rhs) return *this;
63  if( ( ! hasStore() ) && ( ! container() ) ) this->makePrivateStore();
64 
65  // Copy the auxiliary variables:
67 
68  // Return this object:
69  return *this;
70  }
71 
73  //
74  // Built in accessor functions
75  //
76 
78  name, setName )
79 
80  AUXSTORE_OBJECT_SETTER_AND_GETTER( TrigComposite_v1, std::vector<TrigCompositeUtils::DecisionID>,
81  decisions, setDecisions )
82 
83  //
85 
87  //
88  // Implementation for the link copy functions
89  //
90 
91  void TrigComposite_v1::copyLinkInternal(const xAOD::TrigComposite_v1& other, const size_t index, const std::string& newName) {
92  this->linkColNamesNC().push_back( newName );
93  this->linkColClidsNC().push_back( other.linkColClids().at(index) );
94  if (other.isRemapped()) {
95  this->linkColKeysNC().push_back( other.linkColKeysRemap().at(index) );
96  this->linkColIndicesNC().push_back( other.linkColIndicesRemap().at(index) );
97  } else {
98  this->linkColKeysNC().push_back( other.linkColKeys().at(index) );
99  this->linkColIndicesNC().push_back( other.linkColIndices().at(index) );
100  }
101  }
102 
103  bool TrigComposite_v1::copyLinkFrom(const xAOD::TrigComposite_v1& other, const std::string& name, std::string newName) {
104  if (newName.empty()) {
105  newName = name;
106  }
107  bool didCopy = false;
108  // Check for the existence of single link
109  std::vector<std::string>::const_iterator locationIt;
110  locationIt = std::find(other.linkColNames().begin(), other.linkColNames().end(), name);
111  if (locationIt != other.linkColNames().end()) {
112  size_t index = std::distance(other.linkColNames().begin(), locationIt);
113  if (this->hasObjectLink(newName)) {
114  if (s_throwOnCopyError) throw std::runtime_error("Already have link with name " + newName);
115  } else {
117  didCopy = true;
118  }
119  }
120  if (!didCopy && s_throwOnCopyError) throw std::runtime_error("Could not find link with name " + name);
121  return didCopy;
122  }
123 
124  bool TrigComposite_v1::copyLinkFrom(const xAOD::TrigComposite_v1* other, const std::string& name, std::string newName) {
125  return copyLinkFrom(*other, name, std::move(newName));
126  }
127 
128  bool TrigComposite_v1::copyLinkCollectionFrom(const xAOD::TrigComposite_v1& other, const std::string& name, std::string newName) {
129  bool didCopy = false;
130  // Check for the existence of a collection.
131  if (newName.empty()) {
132  newName = name;
133  }
134  const std::string mangledName = name + s_collectionSuffix;
135  const std::string mangledNewName = newName + s_collectionSuffix;
136  if (other.hasObjectLink(mangledName)) {
137  if (this->hasObjectLink(mangledNewName)) {
138  if (s_throwOnCopyError) throw std::runtime_error("Already have link collection with name " + newName);
139  } else {
140  // Copy all links in the collection. Just iterating through the source vector
141  for (size_t index = 0; index < other.linkColNames().size(); ++index) {
142  if (other.linkColNames().at(index) == mangledName) {
143  copyLinkInternal(other, index, mangledNewName);
144  }
145  }
146  didCopy = true;
147  }
148  }
149  if (!didCopy && s_throwOnCopyError) throw std::runtime_error("Could not find link with name " + name);
150  return didCopy;
151  }
152 
153  bool TrigComposite_v1::copyLinkCollectionFrom(const xAOD::TrigComposite_v1* other, const std::string& name, std::string newName) {
154  return copyLinkCollectionFrom(*other, name, std::move(newName));
155  }
156 
158  bool didCopy = false;
159  for (const std::string& name : other.linkColNames()) {
160  // Check we don't have one (or more) entries with this raw name (raw = might be mangled).
161  if (this->hasObjectLink(name)) continue;
162  // Check if the link is for a single object or collection of objects by looking for the mangled suffix
163  const bool isCollection = (name.size() > s_collectionSuffix.size() &&
164  std::equal(s_collectionSuffix.rbegin(), s_collectionSuffix.rend(), name.rbegin()));
165  if (isCollection) {
166  // The copyLinkCollectionFrom call needs the un-mangled name as it is a public fn. It will re-mangle.
167  const std::string unmangledName = name.substr(0, name.size() - s_collectionSuffix.size());
168  copyLinkCollectionFrom(other, unmangledName);
169  } else { // !isCollection
171  }
172  didCopy = true;
173  }
174  return didCopy;
175  }
176 
178  return copyAllLinksFrom(*other);
179  }
180 
181  //
183 
185  //
186  // Implementation for the link accessor functions
187  //
188 
189 
190  bool TrigComposite_v1::removeObjectLink(const std::string& name) {
191  bool removed = false;
192  const std::vector< std::string >& names = linkColNames();
193  for( size_t i = 0; i < names.size(); ++i ) {
194  if( names.at(i) != name ) continue;
195  // Remove
196  linkColNamesNC().erase( linkColNamesNC().begin() + i );
197  linkColKeysNC().erase( linkColKeysNC().begin() + i );
198  linkColIndicesNC().erase( linkColIndicesNC().begin() + i );
199  linkColClidsNC().erase( linkColClidsNC().begin() + i );
200  removed = true;
201  break;
202  }
203  return removed;
204  }
205 
206 
208  bool removed = false;
209  const std::vector< std::string >& names = linkColNames();
210  const std::string mangledName = name + s_collectionSuffix;
211  for( size_t i = 0; i < names.size(); /*noop*/ ) {
212  if( names.at(i) == mangledName ) {
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  } else {
220  ++i;
221  }
222  }
223  return removed;
224  }
225 
226  bool TrigComposite_v1::hasObjectLink( const std::string& name, const CLID clid ) const {
227 
228  // Since this function shouldn't throw exceptions too easily,
229  // let's be super careful here...
230  static const ConstAccessor< std::vector< std::string > > accNames( "linkColNames" );
231  static const ConstAccessor< std::vector< uint32_t > > accCLIDs( "linkColClids" );
232  if( ! (accNames.isAvailable( *this ) || accCLIDs.isAvailable( *this) ) ) {
233  return false;
234  }
235 
236  // The check itself is pretty simple:
237  const std::vector< std::string >& names = accNames( *this );
238  const std::vector< uint32_t >& clids = accCLIDs( *this );
239 
240  std::vector<std::string>::const_iterator vecIt = std::find( names.begin(), names.end(), name );
241  if (vecIt == names.end()) {
242  return false; // Could not find name
243  }
244 
245  if (clid != CLID_NULL) { // Also check against clid
246  const uint32_t storedCLID = clids.at( std::distance( names.begin(), vecIt ) );
248  return derivesFromIParticle(storedCLID);
249  } else if (storedCLID != clid) { // Otherwise we require the ID to match
250  return false; // Type missmatch
251  }
252  }
253 
254  return true; // Satisfied
255  }
256 
257  bool TrigComposite_v1::hasObjectCollectionLinks( const std::string& collectionName, const CLID clid ) const {
258  const std::string mangledName = collectionName + s_collectionSuffix;
259  return hasObjectLink( mangledName, clid );
260  }
261 
262 
263  bool TrigComposite_v1::hasObjectLinkExact(const std::string& name, const sgkey_t key, const uint16_t index, const uint32_t clid) const {
264  for (size_t i = 0; i < this->linkColNames().size(); ++i) {
265  if (this->linkColNames().at(i) != name) continue;
266  if (!SG::sgkeyEqual (this->linkColKeys().at(i), key)) continue;
267  if (this->linkColIndices().at(i) != index) continue;
268  if (this->linkColClids().at(i) != clid) continue;
269  return true;
270  }
271  return false;
272  }
273 
274  bool TrigComposite_v1::derivesFromIParticle(const CLID clid [[maybe_unused]]) const {
275 #ifndef XAOD_STANDALONE
276  const SG::BaseInfoBase* bib = SG::BaseInfoBase::find (clid);
277  if (bib) {
279  }
280  // No base info available means we never called any of the macros declaring bases so it's
281  // likely that the clid doesn't inherit from IParticle...
282  return false;
283 #endif
284  return true;
285  }
286 
287  AUXSTORE_OBJECT_GETTER( TrigComposite_v1, std::vector< std::string >,
288  linkColNames )
289  AUXSTORE_OBJECT_GETTER( TrigComposite_v1, std::vector< uint32_t >,
290  linkColClids )
291 
292  const std::vector< SG::sgkey_t >& TrigComposite_v1::linkColKeys() const {
293  static const Accessor< std::vector< sgkey_t > > acc_builtin( "linkColKeys" );
294  return acc_builtin( *this );
295  }
296 
297  const std::vector< uint16_t >& TrigComposite_v1::linkColIndices() const {
298  static const Accessor< std::vector< uint16_t > > acc_builtin( "linkColIndices" );
299  return acc_builtin( *this );
300  }
301 
302  const std::vector< SG::sgkey_t >& TrigComposite_v1::linkColKeysRemap() const {
303  static const Accessor< std::vector< sgkey_t > > acc( "remap_linkColKeys" );
304  return acc( *this );
305  }
306 
307  const std::vector< uint16_t >& TrigComposite_v1::linkColIndicesRemap() const {
308  static const Accessor< std::vector< uint16_t > > acc( "remap_linkColIndices" );
309  return acc( *this );
310  }
311 
313 
314  std::vector< std::string >& TrigComposite_v1::linkColNamesNC() {
315 
316  static const Accessor< std::vector< std::string > > acc( "linkColNames" );
317  return acc( *this );
318  }
319 
320  std::vector< SG::sgkey_t >& TrigComposite_v1::linkColKeysNC() {
321 
322  static const Accessor< std::vector< sgkey_t > > acc( "linkColKeys" );
323  return acc( *this );
324  }
325 
326  std::vector< uint16_t >& TrigComposite_v1::linkColIndicesNC() {
327 
328  static const Accessor< std::vector< uint16_t > > acc( "linkColIndices" );
329  return acc( *this );
330  }
331 
332  std::vector< uint32_t >& TrigComposite_v1::linkColClidsNC() {
333 
334  static const Accessor< std::vector< uint32_t > > acc( "linkColClids" );
335  return acc( *this );
336  }
337 
338  void TrigComposite_v1::typelessSetObjectLink( const std::string& name, const sgkey_t key, const uint32_t clid, const uint16_t beginIndex, const uint16_t endIndex ) {
339 
340  // Loop over collections
341  if ( endIndex - beginIndex > 1 ) { // Adding a *collection* of links
342 
343  // Check uniqueness
344  const std::string mangledName = name + s_collectionSuffix;
345  const std::vector< std::string >& names = linkColNames();
346  int oldStart = -1;
347  int oldEnd = -1;
348  for( size_t nameIndex = 0; nameIndex < names.size(); ++nameIndex ) {
349 
350  // Look for an existing collection with the same name
351  if( names[ nameIndex ] == mangledName ) {
352  oldEnd = nameIndex + 1;
353  if ( oldStart == -1 ) oldStart = nameIndex;
354  }
355  else if ( oldStart != -1 ) {
356  // If the start has been found, we must now be past the ned
357  break;
358  }
359  }
360 
361  // Erase the old collection, if there was one
362  if ( oldStart != -1 ) {
363 
364  this->linkColNamesNC().erase( this->linkColNamesNC().begin() + oldStart, this->linkColNamesNC().begin() + oldEnd );
365  this->linkColKeysNC().erase( this->linkColKeysNC().begin() + oldStart, this->linkColKeysNC().begin() + oldEnd );
366  this->linkColIndicesNC().erase( this->linkColIndicesNC().begin() + oldStart, this->linkColIndicesNC().begin() + oldEnd );
367  this->linkColClidsNC().erase( this->linkColClidsNC().begin() + oldStart, this->linkColClidsNC().begin() + oldEnd );
368  }
369 
370  // Append the new collection
371  for ( unsigned int index = beginIndex; index < endIndex; ++index ) {
372 
373  this->linkColNamesNC().push_back( mangledName );
374  this->linkColKeysNC().push_back( key );
375  this->linkColIndicesNC().push_back( index );
376  this->linkColClidsNC().push_back( clid );
377  }
378  }
379  else { // Adding a *single* link
380 
381  // Check uniqueness
383 
384  this->linkColNamesNC().push_back( name );
385  this->linkColKeysNC().push_back( key );
386  this->linkColIndicesNC().push_back( beginIndex );
387  this->linkColClidsNC().push_back( clid );
388  }
389  else {
390 
391  // Over-write an existing object
392  const std::vector< std::string >& names = linkColNames();
393  for( size_t nameIndex = 0; nameIndex < names.size(); ++nameIndex ) {
394 
395  if( names[ nameIndex ] == name ) {
396 
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  }
402  }
403  }
404  }
405  }
406 
407  bool TrigComposite_v1::typelessGetObjectLink( const std::string& name, sgkey_t& key, uint32_t& clid, uint16_t& index) const {
408  std::vector<std::string>::const_iterator it = std::find(linkColNames().begin(), linkColNames().end(), name);
409  if (it == linkColNames().end()) {
410  return false;
411  }
412  const size_t location = std::distance(linkColNames().begin(), it);
413  if (isRemapped()) {
414  key = linkColKeysRemap().at(location);
415  clid = linkColClids().at(location);
417  } else {
418  key = linkColKeys().at(location);
419  clid = linkColClids().at(location);
420  index = linkColIndices().at(location);
421  }
422  return true;
423  }
424 
425 
427  std::vector<sgkey_t>& keyVec, std::vector<uint32_t>& clidVec, std::vector<uint16_t>& indexVec ) const
428  {
429  bool found = false;
430  const std::string mangledName = name + s_collectionSuffix;
431  for (size_t i = 0; i < this->linkColNames().size(); ++i) {
432  if (linkColNames().at(i) != mangledName) {
433  continue;
434  }
435  if (isRemapped()) {
436  keyVec.push_back( linkColKeysRemap().at(i) );
437  clidVec.push_back( linkColClids().at(i) );
438  indexVec.push_back( linkColIndicesRemap().at(i) );
439  } else {
440  keyVec.push_back( linkColKeys().at(i) );
441  clidVec.push_back( linkColClids().at(i) );
442  indexVec.push_back( linkColIndices().at(i) );
443  }
444  found = true;
445  }
446  return found;
447  }
448 
449 
451  static const Accessor< std::vector< sgkey_t > > key_remap( "remap_linkColKeys" );
452  static const Accessor< std::vector< uint16_t > > index_remap( "remap_linkColIndices" );
453  size_t nDecorations = 0;
454  if (key_remap.isAvailable( *this )) ++nDecorations;
455  if (index_remap.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:302
xAOD::name
name
Definition: TriggerMenuJson_v1.cxx:29
xAOD::ExcNotIParticleContainer::ExcNotIParticleContainer
ExcNotIParticleContainer(const std::string &msg)
Definition: TrigComposite_v1.cxx:27
xAOD::TrigComposite_v1::s_collectionSuffix
static const std::string s_collectionSuffix
Definition: TrigComposite_v1.h:304
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:66
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:226
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:424
xAOD::TrigComposite_v1::typelessGetObjectCollectionLinks
bool typelessGetObjectCollectionLinks(const std::string &name, std::vector< sgkey_t > &keyVec, std::vector< uint32_t > &clidVec, std::vector< uint16_t > &indexVec) const
Fetches a collection of links without type.
Definition: TrigComposite_v1.cxx:426
xAOD::TrigComposite_v1::s_featureString
static const std::string s_featureString
Constant used to identify a feature.
Definition: TrigComposite_v1.h:253
xAOD::other
@ other
Definition: TrackingPrimitives.h:509
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
atn_test_sgProducerConsumerDataPool_jobOptions.end
end
Definition: atn_test_sgProducerConsumerDataPool_jobOptions.py:25
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
xAOD::TrigComposite_v1::s_seedString
static const std::string s_seedString
Constant used to identify a seed (parent)
Definition: TrigComposite_v1.h:255
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:257
xAOD::TrigComposite_v1::s_initialRoIString
static const std::string s_initialRoIString
Constant used to identify an initial ROI from L1.
Definition: TrigComposite_v1.h:245
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
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:314
xAOD::TrigComposite_v1::linkColIndicesRemap
const std::vector< uint16_t > & linkColIndicesRemap() const
Raw access to the persistent link indices. Will attempt to access remapped link data.
Definition: TrigComposite_v1.cxx:307
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:264
CxxUtils::fpcompare::equal
bool equal(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition: fpcompare.h:114
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:272
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::hasObjectLinkExact
bool hasObjectLinkExact(const std::string &name, const sgkey_t key, const uint16_t index, const uint32_t clid) const
Definition: TrigComposite_v1.cxx:263
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:128
xAOD::TrigComposite_v1::typelessSetObjectLink
void typelessSetObjectLink(const std::string &name, const sgkey_t key, const uint32_t clid, const uint16_t beginIndex, const uint16_t endIndex=0)
Add a link without type.
Definition: TrigComposite_v1.cxx:338
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
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:266
lumiFormat.i
int i
Definition: lumiFormat.py:92
BaseInfo.h
Provide an interface for finding inheritance information at run time.
vector
Definition: MultiHisto.h:13
python.sizes.location
string location
Definition: sizes.py:11
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:260
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:103
xAOD::TrigComposite_v1::operator=
TrigComposite_v1 & operator=(const TrigComposite_v1 &rhs)
Assignment operator.
Definition: TrigComposite_v1.cxx:61
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:157
xAOD::TrigComposite_v1::linkColKeysNC
std::vector< sgkey_t > & linkColKeysNC()
Raw access to the persistent link labels (non-const)
Definition: TrigComposite_v1.cxx:320
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:40
xAOD::TrigComposite_v1::typelessGetObjectLink
bool typelessGetObjectLink(const std::string &name, sgkey_t &key, uint32_t &clid, uint16_t &index) const
Fetches a single link without type.
Definition: TrigComposite_v1.cxx:407
xAOD::TrigComposite_v1::linkColIndicesNC
std::vector< uint16_t > & linkColIndicesNC()
Raw access to the persistent link indices (non-const)
Definition: TrigComposite_v1.cxx:326
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:269
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
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::decisions
decisions
Definition: TrigComposite_v1.cxx:81
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:258
SG::BaseInfoBase::find
static const BaseInfoBase * find(CLID clid)
Find the BaseInfoBase instance for clid.
Definition: BaseInfo.cxx:569
MakeNewFileFromOldAndSubstitution.newName
dictionary newName
Definition: ICHEP2016/MakeNewFileFromOldAndSubstitution.py:95
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:247
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:91
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
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:207
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:355
xAOD::TrigComposite_v1::TrigComposite_v1
TrigComposite_v1()
Default constructor.
Definition: TrigComposite_v1.cxx:54
xAOD::TrigComposite_v1::linkColKeys
const std::vector< sgkey_t > & linkColKeys() const
Raw access to the persistent link labels.
Definition: TrigComposite_v1.cxx:292
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
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:450
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
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
xAOD::TrigComposite_v1::s_viewString
static const std::string s_viewString
Constant used to identify a view.
Definition: TrigComposite_v1.h:251
xAOD::TrigComposite_v1::removeObjectLink
bool removeObjectLink(const std::string &name)
Delete any stored element link with the given name.
Definition: TrigComposite_v1.cxx:190
python.test_cfgItemList.msg
msg
Definition: test_cfgItemList.py:7
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:262
xAOD::TrigComposite_v1::s_summaryPrescaledNodeNameString
static const std::string s_summaryPrescaledNodeNameString
Constant used to identify the single prescaled graph node.
Definition: TrigComposite_v1.h:278
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:275
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
xAOD::TrigComposite_v1::linkColIndices
const std::vector< uint16_t > & linkColIndices() const
Raw access to the persistent link indices.
Definition: TrigComposite_v1.cxx:297
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:274
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:249
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:332
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