ATLAS Offline Software
MissingETComponentMap_v1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
8 
10 
12 
14 #include "xAODBase/ObjectType.h"
15 
16 #include <iterator>
17 #include <cstdio>
18 
19 using namespace xAOD;
20 
22 // Constructors and destructor //
24 
26  : DataVector<MissingETComponent_v1>(own,trackIndices)
27 {
30 }
31 
35  : DataVector<MissingETComponent_v1>(first,last,own,trackIndices)
36 {
39 }
40 
42 { this->clearCache(); }
43 
45 // Finders //
47 
49 {
50  const_iterator fCont(this->begin());
51  const_iterator lCont(this->end());
52  while ( fCont != lCont && (*fCont)->metObject() != pMET ) { ++fCont; }
53  return fCont;
54 }
55 
57 {
58  iterator fCont(this->begin());
59  iterator lCont(this->end());
60  while ( fCont != lCont && (*fCont)->metObject() != pMET ) { ++fCont; }
61  return fCont;
62 }
63 
65 {
66  const_iterator fCont(this->begin());
67  const_iterator lCont(this->end());
68  while (fCont != lCont && (*fCont)->metObject()->name() != name ) { ++fCont; }
69  return fCont;
70 }
71 
73 {
74  iterator fCont(this->begin());
75  iterator lCont(this->end());
76  while ( fCont != lCont && (*fCont)->metObject()->name() != name ) { ++fCont; }
77  return fCont;
78 }
79 
81 {
82  const_iterator fCont(this->begin());
83  const_iterator lCont(this->end());
84  while ( fCont != lCont && (*fCont)->metObject()->source() != src ) { ++fCont; }
85  return fCont;
86 }
87 
89 {
90  iterator fCont(this->begin());
91  iterator lCont(this->end());
92  while ( fCont != lCont && (*fCont)->metObject()->source() != src ) { ++fCont; }
93  return fCont;
94 }
95 
97 {
98  const_iterator fCont(this->begin());
99  const_iterator lCont(this->end());
100  while ( fCont != lCont && (*fCont)->metObject() != pMET ) { ++fCont; }
101  if ( fCont != lCont ) return (size_t)std::distance<const_iterator>(this->begin(),fCont);
103 }
104 
105 size_t MissingETComponentMap_v1::findIndex(const std::string& name) const
106 {
107  const_iterator fCont(this->begin());
108  const_iterator lCont(this->end());
109  while ( fCont != lCont && (*fCont)->metObject()->name() != name ) { ++fCont; }
110  if ( fCont != lCont ) return (size_t)std::distance<const_iterator>(this->begin(),fCont);
112 }
113 
115 {
116  const_iterator fCont(this->begin());
117  const_iterator lCont(this->end());
118  while ( fCont != lCont && (*fCont)->metObject()->source() != src ) { ++fCont; }
119  if ( fCont != lCont ) return (size_t)std::distance<const_iterator>(this->begin(),fCont);
121 }
122 
124 // Retrieve MET object //
126 
128 {
129  const_iterator fCont(this->begin());
130  const_iterator lCont(this->end());
131  while ( fCont != lCont && (*fCont)->metObject()->name() != name ) { ++fCont; }
132  if ( fCont != lCont ) return (*fCont)->metObject();
133  return nullptr;
134 }
135 
137 { return excl ? this->f_retrieveMissingETExcl(src) : this->f_retrieveMissingETIncl(src); }
138 
140 { return excl ? this->f_retrieveMissingETExcl(src,sw) : this->f_retrieveMissingETIncl(src,sw); }
141 
143 // Internal MET object retrieval //
145 
147 {
148  const_iterator fCont(this->begin());
149  const_iterator lCont(this->end());
150  while ( fCont != lCont && (*fCont)->metObject()->source() != src ) { ++fCont; }
151  if ( fCont != lCont ) return (*fCont)->metObject();
152  return nullptr;
153 }
154 
156 {
157  const_iterator fCont(this->begin());
158  const_iterator lCont(this->end());
159  while ( fCont != lCont && ( (*fCont)->metObject()->source() != src || (*fCont)->statusWord() != sw ) ) { ++fCont; }
160  if ( fCont != lCont ) return (*fCont)->metObject();
161  return nullptr;
162 }
163 
165 {
166  const_iterator fCont(this->begin());
167  const_iterator lCont(this->end());
168  while ( fCont != lCont && !MissingETBase::Source::hasPattern((*fCont)->metObject()->source(),src) ) { ++fCont; }
169  if ( fCont != lCont ) return (*fCont)->metObject();
170  return nullptr;
171 }
172 
174 {
175  const_iterator fCont(this->begin());
176  const_iterator lCont(this->end());
177  while ( fCont != lCont && ( !MissingETBase::Source::hasPattern((*fCont)->metObject()->source(),src) ||
178  !MissingETBase::Status::Tags::hasPattern((*fCont)->statusWord(),sw) ) ) { ++fCont; }
179  if ( fCont != lCont ) return (*fCont)->metObject();
180  return nullptr;
181 }
182 
184 // Object usage management //
186 
188 { MissingETBase::Types::object_vector_t objects; objects.push_back(pPart); return this->checkUsage(objects,p); }
189 
191 {
192  bool retVal(false);
193  switch ( p )
194  {
196  { if ( f_extractSignal<xAOD::Type::CaloCluster>(signals) ) { retVal = this->f_checkObjectUsage(signals,m_clusterLinks); } break; }
198  { if ( f_extractSignal<xAOD::Type::TrackParticle>(signals) ) { retVal = this->f_checkObjectUsage(signals,m_trackLinks); } break; }
200  {
202  size_t nSig(0);
203  if ( f_extractSignal<xAOD::Type::CaloCluster>(signals) )
204  { nSig = signals.size(); this->f_checkObjectUsage(signals,m_clusterLinks); }
205  if ( f_extractSignal<xAOD::Type::TrackParticle>(ins) )
206  { nSig += ins.size(); this->f_checkObjectUsage(ins,m_trackLinks); }
207  signals.insert(signals.end(),ins.begin(),ins.end());
208  retVal = signals.size() == nSig;
209  break;
210  }
212  { retVal = this->f_checkObjectUsage(signals,m_particleLinks); break; }
213  default:
214  { break; }
215  } // switch
216  return retVal;
217 }
218 
220 {
221  if ( signals.empty() || signalLinks.empty() ) return false;
222  // loop on signals
223  size_t oldSize(signals.size());
225  while ( fSig != signals.end() )
226  {
227  size_t fIdx((*fSig)->index());
228  if( fIdx >= signalLinks.size() ) {
229  // if invalid, something probably went wrong in reconstruction, so complain
230  // this should raise an out-of-range exception
231  printf("MissingETComponentMap::f_checkObjectUsage(...) - ERROR - searching for a signal with index (%zu) beyond signal container range (%zu).", fIdx, signalLinks.size());
232  printf("MissingETComponentMap::f_checkObjectUsage(...) - ERROR - this may indicate an inconsistency in the signal containers.");
233  }
234  // signal already used
235  if ( signalLinks.at(fIdx) != MissingETBase::Numerical::invalidLink() ) { fSig = signals.erase(fSig); }
236  // signal not yet used
237  else { ++fSig; }
238  } // loop on signals
239  return oldSize != signals.size();
240 }
241 
243 {
244  if ( objects.empty() ) { return false; }
245  //
246  size_t oldSize(objects.size());
248  while ( fObj != objects.end() )
249  { if ( physicsLinks.find(*fObj) != physicsLinks.end() ) { fObj = objects.erase(fObj); } else { ++fObj; } }
250  return objects.size() != oldSize;
251 }
252 
254 // Add objects //
256 
258 {
259  bool flag(false);
260  switch ( p )
261  {
263  { flag = this->setClusters(pMET,pPart,signalList); break; }
265  { flag = this->setTracks(pMET,pPart,signalList); break; }
267  { bool cFlg(this->setClusters(pMET,pPart,signalList)); bool tFlg(this->setTracks(pMET,pPart,signalList)); flag = cFlg || tFlg; break; }
269  { flag = this->setObjects(pMET,pPart,signalList); break; }
270  default:
271  { break; }
272  }
273  return flag;
274 }
275 
277 {
278  // find all clusters
279  // check input: MissingET object pointer
280  size_t cIdx(this->findIndex(pMET)); if ( cIdx == MissingETBase::Numerical::invalidIndex() ) { return false; }
281  // check input: contributing particle pointer
282  size_t pIdx(this->at(cIdx)->findIndex(pPart)); if ( pIdx == MissingETBase::Numerical::invalidIndex() ) { return false; }
283  indexedlink_t ld(cIdx,pIdx);
284  // make sure cache is not cleared
285  bool firstCluster = true;
286  MissingETBase::Types::object_vector_t::const_iterator fSig(signalList.begin());
287  MissingETBase::Types::object_vector_t::const_iterator lSig(signalList.end());
288  for ( ; fSig != lSig; ++fSig ) {
289  if((*fSig)->type()==xAOD::Type::CaloCluster) {
290  if(firstCluster) {
291  firstCluster = false;
292  if ( m_clusterLinks.empty() ) {
293  const IParticleContainer* pCont(static_cast<const IParticleContainer*>((*fSig)->container()));
294  // if ( pCont == 0 )
295  // { printf("MissingETComponentMap::setClusters(...) - WARNING - cannot access cluster container (invalid NULL pointer), use %i words\n",(int)nClus); }
296  // else
298  } // empty cluster link list
299  } //first cluster
300  // all clusters refer to the same MET contribution
301  m_clusterLinks[(*fSig)->index()] = ld;
302  } // extract CaloClusters
303  } // loop over signal list
304 
305  return !firstCluster; // true if we processed any clusters
306 }
307 
309 {
310  // find all clusters
311  // check input: MissingET object pointer
312  size_t cIdx(this->findIndex(pMET)); if ( cIdx == MissingETBase::Numerical::invalidIndex() ) { return false; }
313  // check input: contributing particle pointer
314  size_t pIdx(this->at(cIdx)->findIndex(pPart)); if ( pIdx == MissingETBase::Numerical::invalidIndex() ) { return false; }
315  indexedlink_t ld(cIdx,pIdx);
316  // make sure cache is not cleared
317  bool firstTrack = true;
318  MissingETBase::Types::object_vector_t::const_iterator fSig(signalList.begin());
319  MissingETBase::Types::object_vector_t::const_iterator lSig(signalList.end());
320  for ( ; fSig != lSig; ++fSig ) {
321  if((*fSig)->type()==xAOD::Type::TrackParticle) {
322  if(firstTrack) {
323  firstTrack = false;
324  if ( m_trackLinks.empty() ) {
325  const IParticleContainer* pCont(static_cast<const IParticleContainer*>((*fSig)->container()));
326  // if ( pCont == 0 )
327  // { printf("MissingETComponentMap::setTracks(...) - WARNING - cannot access track container (invalid NULL pointer), use %i words\n",(int)nTrack); }
328  // else
330  } // empty track link list
331  } // first track
332  // all tracks refer to the same MET contribution
333  m_trackLinks[(*fSig)->index()] = ld;
334  } // extract TrackParticles
335  } // loop over signal list
336 
337  return !firstTrack; // true if we processed any clusters
338 }
339 
341 {
342  // check input: MissingET object pointer
343  size_t cIdx(this->findIndex(pMET)); if ( cIdx == MissingETBase::Numerical::invalidIndex() ) { return false; }
344  // loop input objects
345  size_t oldSize(m_particleLinks.size());
346  MissingETBase::Types::object_vector_t::const_iterator fObj(objects.begin());
347  MissingETBase::Types::object_vector_t::const_iterator lObj(objects.end());
348  for ( ; fObj != lObj; ++fObj ) { size_t pIdx(this->at(cIdx)->findIndex(pPart)); m_particleLinks[*fObj] = indexedlink_t(cIdx,pIdx); }
349  //
350  return oldSize < m_particleLinks.size();
351 }
352 
354 // Cache handlers //
356 
358 { signalLinks.clear(); if ( reserve > 0 ) { signalLinks.reserve(reserve); } }
359 
361 { m_clusterLinks.clear(); m_trackLinks.clear(); m_particleLinks.clear(); }
362 
364 {
366 }
367 
368 size_t MissingETComponentMap_v1::getComponentIndex(const IParticle* pPart) const { return f_getIndex<0>(pPart); }
369 size_t MissingETComponentMap_v1::getObjectIndex(const IParticle* pPart) const { return f_getIndex<1>(pPart); }
370 // {
371 // // check on cluster signal
372 // const CaloCluster* pClus(dynamic_cast<const CaloCluster*>(pPart));
373 // if ( pClus != 0 ) { return pClus->index() < m_clusterLinks.size() ? m_clusterLinks.at(pClus->index()).get<1>() : MissingETBase::Numerical::invalidIndex(); }
374 // // check on track index
375 // const TrackParticle* pTrk(dynamic_cast<const TrackParticle*>(pPart));
376 // if ( pTrk != 0 ) { return pTrk->index() < m_trackLinks.size() ? m_trackLinks.at(pTrk->index()).get<1>() : MissingETBase::Numerical::invalidIndex(); }
377 // // check on physics objects
378 // particle_map_t::const_iterator fPart(m_particleLinks.find(pPart));
379 // return fPart != m_particleLinks.end() ? (fPart->second).get<1>() : MissingETBase::Numerical::invalidIndex();
380 // }
381 
382 //bool MissingETComponent_v1::addLink(const IParticle* pPart,MissingETComponent* pContrib,MissingETBase::Types::bitmask_t status)
383 //{
384  // check if cluster signal object
385  // CaloCluster* pClus = dynamic_cast<const CaloCluster*>(pPart);
386  // if ( pClus != 0 ) return this->addCluster(pClus,pContrib,status);
387  // check if track signal object
388  // TrackParticle* pTrk = dynamic_cast<const TrackParticle*>(pPart);
389  // if ( pTrk != 0 ) return this->addTrack(pTrk,pContrib,status);
390  // build link key and data
391 // particle_key_t key(pPart,status);
392 // contrib_idx_t idx = pContrib->index();
393  // add to map
394 // particle_map_t::iterator fLnk(m_partMETLookup.find(key));
395 // if ( fLnk == m_partMETLookup.end() ) { m_partMETLookup.insert(particle_map_t::value_type(key,idx)); }
396 // else { fLnk->second = idx; }
397 // return true;
398 //}
399 
400 //bool MissingETComponent_v1::addCluster(const CaloCluster* pClus,MissingETComponent* pContrib,MissingETBase::Types::bitmask_t /* status */)
401 //{
402 // if ( m_clusterIndices.empty() ) { m_clusterIndices.resize(pClus->container()->size(),size_t(-1)); }
403  //
404 // if ( !this->checkCluster(pClus) ) { m_clusterIndices[pClus->index()] = pContrib->index(); return true; }
405 // else { return false; }
406 //}
407 
408 //bool MissingETComponent_v1::addTrack(const TrackParticle* pTrack,MissingETComponent* pContrib,MissingETBase::Types::bitmask_ty /* status */ )
409 //{
410 // if ( m_trackIndices.empty() ) { m_trackIndices.resize(pTrack->container()->size(),size_t(-1)); }
411  //
412 // if ( !this->checkTrack(pTrack) ) { m_trackIndices[pTrack->index()] = pContrib->index(); return true; }
413 // else { return false; }
414 //}
415 
416 //bool MissingETComponent_v1::checkCluster(const CaloCluster* pClus) const
417 //{ return pClus->index() < m_clusterIndices.size() && m_clusterIndices.at(pClus->index()) != size_t(-1); }
418 
419 //bool MissingETComponenty_v1::checkTrack(const TrackParticle* pTrk) const
420 //{ return pTrk->index() < m_trackIndices.size() && m_trackIndices.at(pTrk->index()) != size_t(-1); }
DataVector< MissingETComponent_v1 >::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
xAOD::MissingETComponentMap_v1::m_trackLinks
signal_vector_t m_trackLinks
Store for linked track signal information lookup.
Definition: MissingETComponentMap_v1.h:215
xAOD::name
name
Definition: TriggerMenuJson_v1.cxx:29
xAOD::MissingETComponentMap_v1::indexedlink_t
MissingETBase::Types::indexedlink_t indexedlink_t
Type for the description of the link locations.
Definition: MissingETComponentMap_v1.h:190
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
xAOD::MissingETComponentMap_v1::m_particleLinks
particle_map_t m_particleLinks
Store for linked physics object information lookup.
Definition: MissingETComponentMap_v1.h:218
MissingETBase::Source::hasPattern
static bool hasPattern(E bits, F mask)
Generic check for given pattern.
Definition: MissingETBase.h:382
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::MissingETComponentMap_v1::find
const_iterator find(const MissingET *pMET) const
Find MET object referenced by pointer.
Definition: MissingETComponentMap_v1.cxx:48
LArConditions2Ntuple.objects
objects
Definition: LArConditions2Ntuple.py:56
MissingETBase::UsageHandler::PhysicsObject
@ PhysicsObject
Physics object based.
Definition: MissingETCompositionBase.h:187
xAOD::MissingETComponentMap_v1::MissingETComponentMap_v1
MissingETComponentMap_v1(SG::OwnershipPolicy own=SG::OWN_ELEMENTS, SG::IndexTrackingPolicy trackIndices=SG::DEFAULT_TRACK_INDICES)
Default constructor.
Definition: MissingETComponentMap_v1.cxx:25
xAOD::MissingETComponentMap_v1::setClusters
bool setClusters(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &signalList)
Definition: MissingETComponentMap_v1.cxx:276
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
xAOD::MissingETComponentMap_v1::f_checkObjectUsage
bool f_checkObjectUsage(MissingETBase::Types::object_vector_t &sig, const signal_vector_t &signalLinks) const
Check signal object usage.
Definition: MissingETComponentMap_v1.cxx:219
xAOD::MissingETComponentMap_v1::m_trackLinkReserve
static const size_t m_trackLinkReserve
Definition: MissingETComponentMap_v1.h:294
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::MissingETComponentMap_v1::setObjects
bool setObjects(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &objectList)
Definition: MissingETComponentMap_v1.cxx:340
MissingETBase::Numerical::invalidIndex
static size_t invalidIndex()
Access invalid index indicator.
Definition: MissingETBase.h:103
MissingETBase::Types::bitmask_t
uint64_t bitmask_t
Type for status word bit mask.
Definition: MissingETBase.h:39
MissingETBase::UsageHandler::OnlyCluster
@ OnlyCluster
CaloCluster based only.
Definition: MissingETCompositionBase.h:184
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
xAOD::MissingETComponentMap_v1::~MissingETComponentMap_v1
virtual ~MissingETComponentMap_v1()
Base class destructor.
Definition: MissingETComponentMap_v1.cxx:41
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
xAOD::MissingETComponentMap_v1::getObjectIndex
size_t getObjectIndex(const IParticle *pPart) const
Definition: MissingETComponentMap_v1.cxx:369
SG::OwnershipPolicy
OwnershipPolicy
describes the possible element ownership policies (see e.g. DataVector)
Definition: OwnershipPolicy.h:16
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
xAOD::MissingETComponentMap_v1::f_clearLookupCache
void f_clearLookupCache()
Clear the lookup cache.
Definition: MissingETComponentMap_v1.cxx:360
ObjectType.h
xAOD::MissingETComponentMap_v1::getComponentIndex
size_t getComponentIndex(const IParticle *pPart) const
Definition: MissingETComponentMap_v1.cxx:368
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
xAOD::MissingETComponentMap_v1::setTracks
bool setTracks(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &signalList)
Definition: MissingETComponentMap_v1.cxx:308
CaloCluster.h
IParticleContainer.h
xAOD::MissingETComponentMap_v1::signal_vector_t
std::vector< indexedlink_t > signal_vector_t
Indexed list type for signal object link locations.
Definition: MissingETComponentMap_v1.h:195
master.flag
bool flag
Definition: master.py:29
xAOD::MissingETComponentMap_v1::f_fillLookupCache
void f_fillLookupCache()
Fill the lookup cache from the composition map data content.
Definition: MissingETComponentMap_v1.cxx:363
xAOD::MissingET_v1
Principal data object for Missing ET.
Definition: MissingET_v1.h:25
xAOD::MissingETComponentMap_v1::f_retrieveMissingETIncl
const MissingET * f_retrieveMissingETIncl(MissingETBase::Types::bitmask_t src) const
Definition: MissingETComponentMap_v1.cxx:164
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAOD::MissingETComponentMap_v1::findIndex
size_t findIndex(const MissingET *pMET) const
Definition: MissingETComponentMap_v1.cxx:96
python.L1.Config.LegacyTopoMergerMap.signals
signals
Definition: LegacyTopoMergerMap.py:13
MissingETBase::UsageHandler::TrackCluster
@ TrackCluster
Both cluster and track based.
Definition: MissingETCompositionBase.h:186
MissingETBase::Status::Tags::hasPattern
static bool hasPattern(Types::bitmask_t sw, T pat)
Definition: MissingETCompositionBase.h:132
MissingETBase::UsageHandler::Policy
Policy
Policies on usage checks.
Definition: MissingETCompositionBase.h:182
MissingETBase::Numerical::invalidLink
static Types::indexedlink_t invalidLink()
Access invaalid link tag.
Definition: MissingETBase.h:105
xAOD::MissingETComponentMap_v1::addObjects
bool addObjects(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &signalList, MissingETBase::UsageHandler::Policy p=MissingETBase::UsageHandler::OnlyCluster)
Definition: MissingETComponentMap_v1.cxx:257
MissingETBase::UsageHandler::OnlyTrack
@ OnlyTrack
Track based only.
Definition: MissingETCompositionBase.h:185
xAOD::MissingETComponentMap_v1::m_clusterLinks
signal_vector_t m_clusterLinks
Store for linked cluuster signal information lookup.
Definition: MissingETComponentMap_v1.h:212
xAOD::MissingETComponentMap_v1::checkUsage
bool checkUsage(const IParticle *pPart, MissingETBase::UsageHandler::Policy p=MissingETBase::UsageHandler::OnlyCluster) const
Check if a given object is already used in MET.
Definition: MissingETComponentMap_v1.cxx:187
DataVector< MissingETComponent_v1 >::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
TrackParticle.h
DeMoScan.first
bool first
Definition: DeMoScan.py:534
xAOD::MissingETComponentMap_v1::f_setupLookupCache
void f_setupLookupCache(signal_vector_t &signalLinks, size_t reserve)
Set up the signal object lookup.
Definition: MissingETComponentMap_v1.cxx:357
xAOD::MissingETComponentMap_v1::retrieveMissingET
const MissingET * retrieveMissingET(const std::string &name) const
Retrieve MissingET object by name.
Definition: MissingETComponentMap_v1.cxx:127
xAOD::MissingETComponentMap_v1::f_retrieveMissingETExcl
const MissingET * f_retrieveMissingETExcl(MissingETBase::Types::bitmask_t src) const
Definition: MissingETComponentMap_v1.cxx:146
DataVector< MissingETComponent_v1 >::at
const MissingETComponent_v1 * at(size_type n) const
Access an element, as an rvalue.
xAOD::MissingETComponentMap_v1::particle_map_t
std::map< particle_key_t, indexedlink_t > particle_map_t
Map type for physics object.
Definition: MissingETComponentMap_v1.h:201
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
geometry_dat_to_json.ld
ld
Definition: geometry_dat_to_json.py:14
SG::IndexTrackingPolicy
IndexTrackingPolicy
Definition: IndexTrackingPolicy.h:37
MissingETContainer.h
MissingETBase::Types::object_vector_t
std::vector< const xAOD::IParticle * > object_vector_t
Vector of object type.
Definition: MissingETCompositionBase.h:59
DataVector< MissingETComponent_v1 >::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
xAOD::MissingETComponent_v1
MET component descriptor contains object links and corresponding parameters.
Definition: MissingETComponent_v1.h:24
MissingETComponentMap_v1.h
xAOD::MissingETComponentMap_v1::m_clusterLinkReserve
static const size_t m_clusterLinkReserve
Definition: MissingETComponentMap_v1.h:293