|  | ATLAS Offline Software
    | 
 
 
 
Go to the documentation of this file.
   42 { this->clearCache(); }
 
   52   while ( fCont != lCont && (*fCont)->metObject() != pMET ) { ++fCont; }
 
   60   while ( fCont != lCont && (*fCont)->metObject() != pMET ) { ++fCont; }
 
   68   while (fCont != lCont && (*fCont)->metObject()->name() != 
name ) { ++fCont; }
 
   76   while ( fCont != lCont && (*fCont)->metObject()->name() != 
name ) { ++fCont; }
 
   84   while ( fCont != lCont && (*fCont)->metObject()->source() != 
src ) { ++fCont; }
 
   92   while ( fCont != lCont && (*fCont)->metObject()->source() != 
src ) { ++fCont; }
 
  100   while ( fCont != lCont && (*fCont)->metObject() != pMET ) { ++fCont; }
 
  101   if ( fCont != lCont ) 
return (
size_t)std::distance<const_iterator>(this->
begin(),fCont);
 
  109   while ( fCont != lCont && (*fCont)->metObject()->name() != 
name ) { ++fCont; }
 
  110   if ( fCont != lCont ) 
return (
size_t)std::distance<const_iterator>(this->
begin(),fCont);
 
  118   while ( fCont != lCont && (*fCont)->metObject()->source() != 
src ) { ++fCont; }
 
  119   if ( fCont != lCont ) 
return (
size_t)std::distance<const_iterator>(this->
begin(),fCont);
 
  131   while ( fCont != lCont && (*fCont)->metObject()->name() != 
name ) { ++fCont; }
 
  132   if ( fCont != lCont ) 
return (*fCont)->metObject();
 
  150   while ( fCont != lCont && (*fCont)->metObject()->source() != 
src ) { ++fCont; }
 
  151   if ( fCont != lCont ) 
return (*fCont)->metObject();
 
  159   while ( fCont != lCont && ( (*fCont)->metObject()->source() != 
src || (*fCont)->statusWord() != sw ) ) { ++fCont; }
 
  160   if ( fCont != lCont ) 
return (*fCont)->metObject();
 
  169   if ( fCont != lCont ) 
return (*fCont)->metObject();
 
  179   if ( fCont != lCont ) 
return (*fCont)->metObject();
 
  203     if ( f_extractSignal<xAOD::Type::CaloCluster>(
signals) )
 
  205     if ( f_extractSignal<xAOD::Type::TrackParticle>(ins) )
 
  208     retVal = 
signals.size() == nSig;
 
  221   if ( 
signals.empty() || signalLinks.empty() ) 
return false;
 
  223   size_t oldSize(
signals.size());
 
  225   while ( fSig != 
signals.end() ) 
 
  227       size_t fIdx((*fSig)->index()); 
 
  228       if( fIdx >= signalLinks.size() ) {
 
  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.");    
 
  239   return oldSize != 
signals.size(); 
 
  244   if ( 
objects.empty() ) { 
return false; }
 
  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;
 
  267       { 
bool cFlg(this->
setClusters(pMET,pPart,signalList)); 
bool tFlg(this->
setTracks(pMET,pPart,signalList)); 
flag = cFlg || tFlg; 
break; } 
 
  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 ) {
 
  291     firstCluster = 
false;
 
  305   return !firstCluster; 
 
  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 ) {
 
  346   MissingETBase::Types::object_vector_t::const_iterator fObj(
objects.begin());
 
  347   MissingETBase::Types::object_vector_t::const_iterator lObj(
objects.end());
 
  358 { signalLinks.clear(); 
if ( 
reserve > 0 ) { signalLinks.reserve(
reserve); } }
 
  
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
JetConstituentVector::iterator iterator
signal_vector_t m_trackLinks
Store for linked track signal information lookup.
MissingETBase::Types::indexedlink_t indexedlink_t
Type for the description of the link locations.
Const iterator class for DataVector/DataList.
particle_map_t m_particleLinks
Store for linked physics object information lookup.
static bool hasPattern(E bits, F mask)
Generic check for given pattern.
const_iterator find(const MissingET *pMET) const
Find MET object referenced by pointer.
@ PhysicsObject
Physics object based.
MissingETComponentMap_v1(SG::OwnershipPolicy own=SG::OWN_ELEMENTS, SG::IndexTrackingPolicy trackIndices=SG::DEFAULT_TRACK_INDICES)
Default constructor.
bool setClusters(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &signalList)
bool f_checkObjectUsage(MissingETBase::Types::object_vector_t &sig, const signal_vector_t &signalLinks) const
Check signal object usage.
static const size_t m_trackLinkReserve
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
bool setObjects(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &objectList)
static size_t invalidIndex()
Access invalid index indicator.
uint64_t bitmask_t
Type for status word bit mask.
@ OnlyCluster
CaloCluster based only.
Class providing the definition of the 4-vector interface.
virtual ~MissingETComponentMap_v1()
Base class destructor.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
size_t getObjectIndex(const IParticle *pPart) const
OwnershipPolicy
describes the possible element ownership policies (see e.g. DataVector)
TrackParticle_v1 TrackParticle
Reference the current persistent version:
void f_clearLookupCache()
Clear the lookup cache.
size_t getComponentIndex(const IParticle *pPart) const
(Non-const) Iterator class for DataVector/DataList.
bool setTracks(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &signalList)
std::vector< indexedlink_t > signal_vector_t
Indexed list type for signal object link locations.
void f_fillLookupCache()
Fill the lookup cache from the composition map data content.
Principal data object for Missing ET.
const MissingET * f_retrieveMissingETIncl(MissingETBase::Types::bitmask_t src) const
size_t findIndex(const MissingET *pMET) const
@ TrackCluster
Both cluster and track based.
Policy
Policies on usage checks.
static Types::indexedlink_t invalidLink()
Access invaalid link tag.
bool addObjects(const MissingET *pMET, const IParticle *pPart, const MissingETBase::Types::object_vector_t &signalList, MissingETBase::UsageHandler::Policy p=MissingETBase::UsageHandler::OnlyCluster)
@ OnlyTrack
Track based only.
signal_vector_t m_clusterLinks
Store for linked cluuster signal information lookup.
bool checkUsage(const IParticle *pPart, MissingETBase::UsageHandler::Policy p=MissingETBase::UsageHandler::OnlyCluster) const
Check if a given object is already used in MET.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
void f_setupLookupCache(signal_vector_t &signalLinks, size_t reserve)
Set up the signal object lookup.
const MissingET * retrieveMissingET(const std::string &name) const
Retrieve MissingET object by name.
const MissingET * f_retrieveMissingETExcl(MissingETBase::Types::bitmask_t src) const
const MissingETComponent_v1 * at(size_type n) const
Access an element, as an rvalue.
std::map< particle_key_t, indexedlink_t > particle_map_t
Map type for physics object.
size_type size() const noexcept
Returns the number of elements in the collection.
std::vector< const xAOD::IParticle * > object_vector_t
Vector of object type.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
MET component descriptor contains object links and corresponding parameters.
static const size_t m_clusterLinkReserve