ATLAS Offline Software
Loading...
Searching...
No Matches
INav4MomToTrackParticleAssocs Class Reference

#include <INav4MomToTrackParticleAssocs.h>

Inheritance diagram for INav4MomToTrackParticleAssocs:
Collaboration diagram for INav4MomToTrackParticleAssocs:

Public Types

Store Iterator Types
typedef AssociationVectorIterator asso_iterator
 association iterator type
typedef AssociationObjectIterator object_iterator
 object iterator type

Public Member Functions

 INav4MomToTrackParticleAssocs ()
 Default constructor:
 INav4MomToTrackParticleAssocs (const INav4MomToTrackParticleAssocs &rhs)
 Copy constructor:
INav4MomToTrackParticleAssocsoperator= (const INav4MomToTrackParticleAssocs &rhs)
 Assignment operator:
 ~INav4MomToTrackParticleAssocs ()
 Constructor with parameters:
bool assocs (const INavigable4Momentum *object, ConstDataVector< Rec::TrackParticleContainer > &associatedElems) const
 Retrieve all the associated-to objects which have been associated to the given.
bool getAssociations (const INav4MomLink &objectLink, std::vector< AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_link > &associatedElementLinks) const
 Retrieve all the associated-to ElementLinks_to_objects which have been associated to the given.
bool getAssociations (const INavigable4Momentum *object, std::vector< AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_link > &associatedElementLinks) const
 Retrieve all the associated-to ElementLinks_to_objects which have been associated to the given.
bool getAssociations (const AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::object_type *objPointer, AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_list &assocs) const
 Reimplement the method from the base class to not shaddow it.
bool getAssociations (const AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::object_iterator &objIter, AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_list &assocs) const
 Reimplement the method from the base class to not shaddow it.
void addAssocStore (const DataLink< INav4MomToTrackParticleAssocs > &assocStore)
DataLink< INav4MomToTrackParticleAssocsassocStore (const std::string &name) const
 Look up an associated store. For testing.
size_t nAssocStores () const
 Number of associated stores.
std::vector< DataLink< INav4MomToTrackParticleAssocs > > getAssocStores () const
 Return links to all other association stores.
Add Associations
Parameters
objectContainer- pointer to the object container
objectIndex- index of object in container
objectPointer- pointer to object
assoContainer- container of potentially associated objects
assoIndex- index of associated object in container
assoPointer- pointer to associated object
void addAssociation (const object_container_type *objectContainer, const object_index_type &objectIndex, const asso_container_type *assoContainer, const asso_index_type &assoIndex)

Protected Types

typedef DataLink< INav4MomToTrackParticleAssocsINav4MomToTrackParticleAssocsLink_t

Protected Attributes

std::map< std::string, INav4MomToTrackParticleAssocsLink_tm_assocStores

Object and Association Iterators

The association iterators are returned for a given object, which can either be referenced by its pointer or its iterator in the internal store.

Parameters
objectPointer- pointer to a given object
objectIter- iterator to a given object
store_type m_associationMap
 internal store
object_iterator beginObject () const
 begin iterator for objects
object_iterator endObject () const
 end iterator for objects
asso_iterator beginAssociation (const object_type *objectPointer) const
 begin iterator for associations
asso_iterator endAssociation (const object_type *objectPointer) const
 end iterator for associations
const object_typegetObject (const object_iterator &objectIter) const
 get association iterators by object iterator
object_iterator findObject (const object_type *theObject) const
 finding an object with allocation
bool containsObject (const object_type *theObject) const
 testing if object is in store
size_t getNumberOfObjects () const
 retrieve number of objects in store
const asso_typegetAssociation (asso_iterator assoIter) const
 associations iterator access
asso_iterator findAssociation (const object_iterator &objectIter, const asso_type *assoPointer) const
 find association
bool containsAssociation (const object_iterator &objectIter, const asso_type *assoPointer) const
 containment check
bool getObjects (const asso_type *assoPointer, object_list &theObjects) const
 get all objects for a given association
bool getAssociations (const object_type *objPointer, asso_list &assocs) const
 get all associations for a given object
size_t size ()
 get number of associations
size_t getNumberOfAssociations (const object_type *objectPointer) const
store_iterator_type internalFind (const object_link &objectLink, const asso_link &assoLink)
 internally used find method
bool addToStore (const object_link &objectLink, const asso_link &assoLink)
 internally used function to add links to store

Argument and Internal Store Types

typedef INavigable4MomentumCollection object_container_type
typedef object_container_type::base_value_type object_type
typedef SG::GenerateIndexingPolicy< object_container_type >::type::index_type object_index_type
typedef ElementLink< object_container_typeobject_link
typedef std::list< const object_type * > object_list
typedef Rec::TrackParticleContainer asso_container_type
typedef asso_container_type::base_value_type asso_type
typedef SG::GenerateIndexingPolicy< asso_container_type >::type::index_type asso_index_type
typedef std::list< const asso_type * > asso_list
typedef ElementLink< asso_container_typeasso_link
typedef ElementLinkVector< asso_container_typeasso_store
typedef asso_store::const_iterator asso_store_iterator
typedef std::map< object_link, asso_storestore_type
typedef store_type::iterator store_iterator_type
static const asso_store s_dum_asso_store

Detailed Description

Definition at line 33 of file INav4MomToTrackParticleAssocs.h.

Member Typedef Documentation

◆ asso_container_type

Definition at line 53 of file AssociationMap.h.

◆ asso_index_type

Definition at line 58 of file AssociationMap.h.

◆ asso_iterator

typedef AssociationVectorIterator AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_iterator
inherited

association iterator type

Definition at line 81 of file AssociationMap.h.

◆ asso_link

◆ asso_list

typedef std::list<const asso_type*> AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_list
inherited

Definition at line 59 of file AssociationMap.h.

◆ asso_store

◆ asso_store_iterator

Definition at line 62 of file AssociationMap.h.

◆ asso_type

◆ INav4MomToTrackParticleAssocsLink_t

◆ object_container_type

Definition at line 44 of file AssociationMap.h.

◆ object_index_type

Definition at line 49 of file AssociationMap.h.

◆ object_iterator

object iterator type

Definition at line 84 of file AssociationMap.h.

◆ object_link

◆ object_list

typedef std::list<const object_type*> AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::object_list
inherited

Definition at line 51 of file AssociationMap.h.

◆ object_type

◆ store_iterator_type

typedef store_type::iterator AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::store_iterator_type
inherited

Definition at line 64 of file AssociationMap.h.

◆ store_type

Definition at line 63 of file AssociationMap.h.

Constructor & Destructor Documentation

◆ INav4MomToTrackParticleAssocs() [1/2]

INav4MomToTrackParticleAssocs::INav4MomToTrackParticleAssocs ( )

◆ INav4MomToTrackParticleAssocs() [2/2]

INav4MomToTrackParticleAssocs::INav4MomToTrackParticleAssocs ( const INav4MomToTrackParticleAssocs & rhs)

◆ ~INav4MomToTrackParticleAssocs()

INav4MomToTrackParticleAssocs::~INav4MomToTrackParticleAssocs ( )
inline

Constructor with parameters:

Destructor:

Definition at line 123 of file INav4MomToTrackParticleAssocs.h.

124{}

Member Function Documentation

◆ addAssociation()

void AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::addAssociation ( const object_container_type * objectContainer,
const object_index_type & objectIndex,
const asso_container_type * assoContainer,
const asso_index_type & assoIndex )
inherited

◆ addAssocStore()

void INav4MomToTrackParticleAssocs::addAssocStore ( const DataLink< INav4MomToTrackParticleAssocs > & assocStore)

Definition at line 176 of file INav4MomToTrackParticleAssocs.cxx.

177{
178 const std::string& id = assocStore.dataID();
179 const std::map<std::string, DataLink<INav4MomToTrackParticleAssocs> >::const_iterator itr = m_assocStores.find(id);
180 if ( itr == m_assocStores.end() )
181 {
183 }
184}
DataLink< INav4MomToTrackParticleAssocs > assocStore(const std::string &name) const
Look up an associated store. For testing.

◆ addToStore()

bool AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::addToStore ( const object_link & objectLink,
const asso_link & assoLink )
protectedinherited

internally used function to add links to store

◆ assocs()

bool INav4MomToTrackParticleAssocs::assocs ( const INavigable4Momentum * object,
ConstDataVector< Rec::TrackParticleContainer > & associatedElems ) const

Retrieve all the associated-to objects which have been associated to the given.

Parameters
object

Definition at line 49 of file INav4MomToTrackParticleAssocs.cxx.

51{
52 // Make a sanity check against a null pointer
53 if ( 0 == object ) { return false; }
54
55 // do the underlying stores contain this object ?
56 bool contained = false;
57 for ( std::map<std::string, DataLink<INav4MomToTrackParticleAssocs> >::const_iterator itr(m_assocStores.begin()), itrEnd(m_assocStores.end());
58 itr != itrEnd;
59 ++itr )
60 {
61 if ( itr->second->assocs(object, associatedElems) )
62 {
63 contained = true;
64 }
65 }
66
67 if ( !contained && !containsObject( object ) )
68 {
69 return false;
70 }
71
72 associatedElems.reserve( associatedElems.size() + getNumberOfAssociations(object) );
75 itr != endAssocs;
76 ++itr )
77 {
78 associatedElems.push_back(*itr);
79 }
80
81 return true;
82}
asso_iterator beginAssociation(const object_type *objectPointer) const
size_t getNumberOfAssociations(const object_type *objectPointer) const
asso_iterator endAssociation(const object_type *objectPointer) const
value_type push_back(value_type pElem)
Add an element to the end of the collection.

◆ assocStore()

DataLink< INav4MomToTrackParticleAssocs > INav4MomToTrackParticleAssocs::assocStore ( const std::string & name) const

Look up an associated store. For testing.

Definition at line 187 of file INav4MomToTrackParticleAssocs.cxx.

188{
189 std::map<std::string, INav4MomToTrackParticleAssocsLink_t>::const_iterator i =
190 m_assocStores.find (name);
191 if (i != m_assocStores.end())
192 return i->second;
193 return DataLink<INav4MomToTrackParticleAssocs>();
194}

◆ beginAssociation()

asso_iterator AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::beginAssociation ( const object_type * objectPointer) const
inherited

begin iterator for associations

◆ beginObject()

begin iterator for objects

◆ containsAssociation()

bool AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::containsAssociation ( const object_iterator & objectIter,
const asso_type * assoPointer ) const
inlineinherited

containment check

Definition at line 165 of file AssociationMap.h.

templated base class for a look-up map for associations
bool containsAssociation(const object_iterator &objectIter, const asso_type *assoPointer) const
containment check

◆ containsObject()

bool AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::containsObject ( const object_type * theObject) const
inlineinherited

testing if object is in store

Definition at line 143 of file AssociationMap.h.

◆ endAssociation()

asso_iterator AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::endAssociation ( const object_type * objectPointer) const
inherited

end iterator for associations

◆ endObject()

end iterator for objects

◆ findAssociation()

asso_iterator AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::findAssociation ( const object_iterator & objectIter,
const asso_type * assoPointer ) const
inlineinherited

find association

Definition at line 158 of file AssociationMap.h.

asso_iterator findAssociation(const object_iterator &objectIter, const asso_type *assoPointer) const
find association

◆ findObject()

◆ getAssociation()

const asso_type * AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::getAssociation ( asso_iterator assoIter) const
inlineinherited

associations iterator access

The associations are accessed as function of the row key (the object).

Definition at line 154 of file AssociationMap.h.

155 { return *assoIter; }

◆ getAssociations() [1/5]

bool AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::getAssociations ( const object_type * objPointer,
asso_list & assocs ) const
inherited

get all associations for a given object

◆ getAssociations() [2/5]

Reimplement the method from the base class to not shaddow it.

Definition at line 90 of file INav4MomToTrackParticleAssocs.h.

94 {
96 Rec::TrackParticleContainer >::getAssociations( objIter, assocs );
97 }
DataVector< INavigable4Momentum > INavigable4MomentumCollection
bool assocs(const INavigable4Momentum *object, ConstDataVector< Rec::TrackParticleContainer > &associatedElems) const
Retrieve all the associated-to objects which have been associated to the given.
bool getAssociations(const INav4MomLink &objectLink, std::vector< AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_link > &associatedElementLinks) const
Retrieve all the associated-to ElementLinks_to_objects which have been associated to the given.

◆ getAssociations() [3/5]

bool INav4MomToTrackParticleAssocs::getAssociations ( const AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::object_type * objPointer,
AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_list & assocs ) const
inline

Reimplement the method from the base class to not shaddow it.

Definition at line 80 of file INav4MomToTrackParticleAssocs.h.

84 {
86 Rec::TrackParticleContainer >::getAssociations( objPointer, assocs );
87 }

◆ getAssociations() [4/5]

bool INav4MomToTrackParticleAssocs::getAssociations ( const INav4MomLink & objectLink,
std::vector< AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_link > & associatedElementLinks ) const

Retrieve all the associated-to ElementLinks_to_objects which have been associated to the given.

Parameters
objectLink

Definition at line 87 of file INav4MomToTrackParticleAssocs.cxx.

90{
91 if ( !objectLink.isValid() )
92 {
93 return false;
94 }
95
96 // Get the object
97 const INavigable4Momentum* object(NULL);
98 object = (*objectLink);
99 if ( object == NULL )
100 {
101 return false;
102 }
103
104 return getAssociations( object, associatedElementLinks );
105}

◆ getAssociations() [5/5]

bool INav4MomToTrackParticleAssocs::getAssociations ( const INavigable4Momentum * object,
std::vector< AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::asso_link > & associatedElementLinks ) const

Retrieve all the associated-to ElementLinks_to_objects which have been associated to the given.

Parameters
object

Definition at line 110 of file INav4MomToTrackParticleAssocs.cxx.

113{
114 if ( 0 == object )
115 {
116 return false;
117 }
118
119 // do the underlying stores contain this object ?
120 bool contained = false;
121 for ( std::map<std::string, DataLink<INav4MomToTrackParticleAssocs> >::const_iterator itr = m_assocStores.begin();
122 itr != m_assocStores.end();
123 ++itr )
124 {
125 if ( itr->second->getAssociations( object, associatedElementLinks ) )
126 {
127 contained = true;
128 }
129 }
130
131 if ( !contained && !containsObject( object ) )
132 {
133 return false;
134 }
135
136 // check key
137 store_type::const_iterator mapEnd = m_associationMap.end();
138 store_type::const_iterator foundIter = mapEnd;
139 for ( store_type::const_iterator iMap = m_associationMap.begin();
140 iMap != mapEnd;
141 ++iMap )
142 {
143 // look for the address of the pointed-at object
144 // must dereference the ElementLink pointer
145 if ( &*(*(iMap->first)) == &*(object) )
146 {
147 foundIter = iMap;
148 break;
149 }
150 }
151 if ( foundIter == m_associationMap.end() )
152 {
153 return false;
154 }
155
156 // Now, loop over all associations and fill the vector of associations
157 associatedElementLinks.reserve( associatedElementLinks.size() +
158 getNumberOfAssociations(object) );
161 for ( ; assoItr != assoItrEnd; ++assoItr )
162 {
164 associatedElementLinks.push_back( assoLink );
165 }
166
167 return true;
168}
ELVIterator< typename RefVector::const_iterator > const_iterator

◆ getAssocStores()

std::vector< DataLink< INav4MomToTrackParticleAssocs > > INav4MomToTrackParticleAssocs::getAssocStores ( ) const

Return links to all other association stores.

Definition at line 203 of file INav4MomToTrackParticleAssocs.cxx.

204{
205 std::vector<DataLink<INav4MomToTrackParticleAssocs> > ret;
206 ret.reserve (m_assocStores.size());
207 for (const auto& p : m_assocStores) {
208 ret.push_back (p.second);
209 }
210 return ret;
211}

◆ getNumberOfAssociations()

size_t AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::getNumberOfAssociations ( const object_type * objectPointer) const
inlineinherited

◆ getNumberOfObjects()

size_t AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::getNumberOfObjects ( ) const
inlineinherited

retrieve number of objects in store

Definition at line 147 of file AssociationMap.h.

147{ return this->size(); }

◆ getObject()

const object_type * AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::getObject ( const object_iterator & objectIter) const
inlineinherited

get association iterators by object iterator

type-safe retrieval of object pointer from iterator

Definition at line 135 of file AssociationMap.h.

136 { return (*objectIter).getObject(); }

◆ getObjects()

bool AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::getObjects ( const asso_type * assoPointer,
object_list & theObjects ) const
inherited

get all objects for a given association

◆ internalFind()

store_iterator_type AssociationMap< INavigable4MomentumCollection, Rec::TrackParticleContainer >::internalFind ( const object_link & objectLink,
const asso_link & assoLink )
inlineprotectedinherited

internally used find method

Definition at line 210 of file AssociationMap.h.

212 {
213 // check key
217 iMap != mapEnd;
218 ++iMap ) {
219 // look for the address of the pointed-at object
220 // must dereference the ElementLink pointer
221 if ( iMap->first.cptr() == objectLink.cptr() ) {
222 foundIter = iMap;
223 break;
224 }
225 }
226
227 if ( foundIter == m_associationMap.end() ) { return foundIter; }
228 // check data
229 if ( std::find((foundIter->second).begin(),
230 (foundIter->second).end(),
231 assoLink) !=
232 (foundIter->second).end() )
233 { return foundIter; }
234 // not found at all
235 return m_associationMap.end();
236 }

◆ nAssocStores()

size_t INav4MomToTrackParticleAssocs::nAssocStores ( ) const

Number of associated stores.

Definition at line 197 of file INav4MomToTrackParticleAssocs.cxx.

198{
199 return m_assocStores.size();
200}

◆ operator=()

INav4MomToTrackParticleAssocs & INav4MomToTrackParticleAssocs::operator= ( const INav4MomToTrackParticleAssocs & rhs)

Assignment operator:

Definition at line 36 of file INav4MomToTrackParticleAssocs.cxx.

37{
38 if ( this != &rhs ) {
41 }
42 return *this;
43}

◆ size()

get number of associations

Definition at line 188 of file AssociationMap.h.

188{ return m_associationMap.size(); }

Member Data Documentation

◆ m_associationMap

internal store

Definition at line 207 of file AssociationMap.h.

◆ m_assocStores

std::map<std::string, INav4MomToTrackParticleAssocsLink_t> INav4MomToTrackParticleAssocs::m_assocStores
protected

Definition at line 116 of file INav4MomToTrackParticleAssocs.h.

◆ s_dum_asso_store

Definition at line 68 of file AssociationMap.h.


The documentation for this class was generated from the following files: