|
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