86#ifdef ASSOCIATIONMAP_CONTEXT
104 , m_actual(theStore.begin())
113 const typename store_type::const_iterator& pos)
121 m_store ( rhs.m_store ),
122 m_actual( rhs.m_actual )
129 if (
this != &rhs ) {
130 m_store = rhs.m_store;
131 m_actual= rhs.m_actual;
161{ ++m_actual;
return *
this; }
165{ --m_actual;
return *
this; }
197{
return m_actual == anOther.m_actual; }
205{
return m_actual != anOther.m_actual; }
223const object_type* operator->()
224{
return this->getObject(); }
227const object_type* operator->()
const
228{
return this->getObject(); }
231const object_type* first()
const {
return *(m_actual->first); }
233asso_iterator second()
const
234{
return asso_iterator(m_actual->second,m_actual->second.begin()); }
248 while (firstObj != lastObj )
250 if ( firstObj.isValid() && firstObj.getObject() == objectPointer )
268const object_type* getObject()
const {
return this->first(); }
271const object_link& getObjectLink()
const {
return m_actual->first; }
273bool isValid()
const {
return this->m_actual->first.isValid(); }
276asso_iterator getFirstAssociation()
const
278 return asso_iterator(m_actual->second, m_actual->second.begin());
282asso_iterator getLastAssociation()
const
284 return asso_iterator(m_actual->second, m_actual->second.end());
288asso_iterator findAssociation(
const asso_type* assoPointer)
const
290 asso_iterator assItr = asso_iterator(m_actual->second,
291 m_actual->second.begin());
292 return assItr.find(assoPointer);
296bool containsAssociation(
const asso_type* assoPointer)
const
297{
return this->findAssociation(assoPointer) != this->getLastAssociation(); }
300size_t getNumberOfAssociations()
const
301{
return m_actual->second.size(); }
303size_t size()
const {
return m_store->size(); }
307 const store_type* m_store{};
308 typename store_type::const_iterator m_actual{};
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
bool operator!=(const DataVector< T > &a, const DataVector< T > &b)
Based on operator==.
bool operator==(const DataVector< T > &a, const DataVector< T > &b)
Vector equality comparison.
xAOD::MissingET_v1 operator*(const xAOD::MissingET_v1 &met, float scale)
Create new MET object from source with scaled (weighted) kinematics.
object iterator for association maps (internal use only!)
std::string find(const std::string &s)
return a remapped string