CMS 3D CMS Logo

Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes

edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper > Class Template Reference

#include <AssociationVector.h>

Inheritance diagram for edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >:
reco::CaloTauDiscriminator reco::CaloTauDiscriminatorAgainstElectron reco::CaloTauDiscriminatorByIsolation reco::JetFlavourMatchingCollection reco::JetMatchedPartonsCollection reco::JetPiZeroAssociation reco::PFTauDiscriminator reco::PFTauDiscriminatorByIsolation

List of all members.

Public Types

typedef KeyRefProd::product_type CKey
typedef
transient_vector_type::const_iterator 
const_iterator
typedef value_type const & const_reference
typedef KeyRef::value_type key_type
typedef KeyRefProd refprod_type
typedef SizeType size_type
typedef std::vector< value_typetransient_vector_type
typedef std::pair< KeyRef,
typename CVal::value_type > 
value_type

Public Member Functions

 AssociationVector ()
 AssociationVector (KeyRefProd const &ref, CKey const *=0)
 AssociationVector (AssociationVector const &)
const_iterator begin () const
void clear ()
bool empty () const
const_iterator end () const
void fillView (ProductID const &id, std::vector< void const * > &pointers, helper_vector &helpers) const
KeyRef key (size_type i) const
KeyRefProd const & keyProduct () const
selfoperator= (self const &)
CVal::const_reference operator[] (KeyRef const &k) const
CVal::reference operator[] (KeyRef const &k)
const_reference operator[] (size_type n) const
void setValue (size_type i, typename CVal::value_type const &val)
size_type size () const
void swap (self &other)
CVal::value_type const value (size_type i) const
 ~AssociationVector ()

Private Types

typedef AssociationVector
< KeyRefProd, CVal, KeyRef,
SizeType, KeyReferenceHelper > 
self

Private Member Functions

 BOOST_STATIC_ASSERT ((boost::is_convertible< SizeType, typename CVal::size_type >::value))
void fixup () const
transient_vector_type const & transientVector () const

Private Attributes

CVal data_
bool fixed_
KeyRefProd ref_
transient_vector_type transientVector_

Detailed Description

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
class edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >

Definition at line 60 of file AssociationVector.h.


Member Typedef Documentation

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef KeyRefProd::product_type edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::CKey

Definition at line 66 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef transient_vector_type::const_iterator edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::const_iterator

Definition at line 95 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef value_type const& edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::const_reference

Definition at line 71 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef KeyRef::value_type edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::key_type

Definition at line 68 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef KeyRefProd edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::refprod_type

Definition at line 65 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef AssociationVector<KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper> edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::self [private]

Definition at line 62 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef SizeType edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::size_type

Definition at line 67 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef std::vector<value_type> edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::transient_vector_type

Definition at line 70 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
typedef std::pair<KeyRef, typename CVal::value_type> edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::value_type

Definition at line 69 of file AssociationVector.h.


Constructor & Destructor Documentation

template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::AssociationVector ( ) [inline]

Definition at line 110 of file AssociationVector.h.

                                                                                                      :
    data_(), ref_(), transientVector_(), fixed_(false)  { }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::AssociationVector ( KeyRefProd const &  ref,
CKey const *  coll = 0 
) [inline]

Definition at line 114 of file AssociationVector.h.

                                                                                                                        :
    data_(coll == 0 ? ref->size() : coll->size()), ref_(ref),
    transientVector_(coll == 0 ? ref->size() : coll->size()), fixed_(true) { }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::AssociationVector ( AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper > const &  o) [inline]

Definition at line 121 of file AssociationVector.h.

                                                                                                          :
    data_(o.data_), ref_(o.ref_), transientVector_(o.transientVector_), fixed_(o.fixed_) { }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::~AssociationVector ( ) [inline]

Definition at line 125 of file AssociationVector.h.

{ }

Member Function Documentation

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
const_iterator edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::begin ( void  ) const [inline]
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::BOOST_STATIC_ASSERT ( (boost::is_convertible< SizeType, typename CVal::size_type >::value)  ) [private]
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
void edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::clear ( void  ) [inline]

Definition at line 180 of file AssociationVector.h.

                                                                                               {
    data_.clear();
    transientVector_.clear();
    ref_ = KeyRefProd();
    fixed_ = true;
  }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
bool edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::empty ( ) const [inline]

Definition at line 175 of file AssociationVector.h.

                                                                                                     {
    return data_.empty();
  }
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
const_iterator edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::end ( void  ) const [inline]
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
void edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::fillView ( ProductID const &  id,
std::vector< void const * > &  pointers,
helper_vector helpers 
) const

Definition at line 207 of file AssociationVector.h.

References edm::detail::reallyFillView().

Referenced by edm::fillView().

  {
    detail::reallyFillView(*this, id, pointers, helpers);
//     pointers.reserve(this->size());
//     for(typename CVal::const_iterator i=data_.begin(), e=data_.end(); i!=e; ++i)
//       pointers.push_back(&(*i));
//     // helpers is not yet filled in.
//     //Exception::throwThis(errors::UnimplementedFeature, "AssociationVector<T>::fillView(...)");
  }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
void edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::fixup ( ) const [inline, private]

Definition at line 196 of file AssociationVector.h.

References i, and findQualityFiles::size.

Referenced by edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::transientVector().

                                                                                                     {
    if (!fixed_) {
      fixed_ = true;
      transientVector_.resize(size());
      for(size_type i = 0; i != size(); ++i) {
        transientVector_[ i ] = std::make_pair(KeyRef(ref_, i), data_[ i ]);
      }
    }
  }
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
KeyRef edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::key ( size_type  i) const [inline]
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
KeyRefProd const& edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::keyProduct ( ) const [inline]
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper > & edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::operator= ( self const &  o) [inline]

Definition at line 153 of file AssociationVector.h.

References connectstrParser::o.

                                                                                                    {
    data_ = o.data_;
    ref_ = o.ref_;
    fixed_ = false;
    return * this;
  }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::const_reference edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::operator[] ( size_type  n) const [inline]

Definition at line 129 of file AssociationVector.h.

References n.

                                                                                                         {
    return transientVector()[ n ];
  }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
CVal::const_reference edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::operator[] ( KeyRef const &  k) const [inline]

Definition at line 135 of file AssociationVector.h.

References edm::checkForWrongProduct(), and reco::get().

                                                                                                             {
    KeyRef keyRef = KeyReferenceHelper::get(k, ref_.id());
    checkForWrongProduct(keyRef.id(), ref_.id());
    return data_[ keyRef.key() ];
  }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
CVal::reference edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::operator[] ( KeyRef const &  k) [inline]

Definition at line 144 of file AssociationVector.h.

References edm::checkForWrongProduct(), and reco::get().

                                                                                                       {
    KeyRef keyRef = KeyReferenceHelper::get(k, ref_.id());
    fixed_ = false;
    checkForWrongProduct(keyRef.id(), ref_.id());
    return data_[ keyRef.key() ];
  }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
void edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::setValue ( size_type  i,
typename CVal::value_type const &  val 
) [inline]

Definition at line 161 of file AssociationVector.h.

References i.

Referenced by ElectronSqPtTkIsolationProducer::produce().

                                                                                                                                                 {
    data_[ i ] = val;
    KeyRef ref(ref_, i);
    transientVector_[ i ].first = ref;
    transientVector_[ i ].second = data_[ i ];
  }
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::size_type edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::size ( void  ) const [inline]
template<typename KeyRefProd , typename CVal , typename KeyRef , typename SizeType , typename KeyReferenceHelper >
void edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::swap ( self other) [inline]

Definition at line 188 of file AssociationVector.h.

References edm::swap().

Referenced by edm::swap().

                                                                                                         {
    data_.swap(other.data_);
    transientVector_.swap(other.transientVector_);
    ref_.swap(other.ref_);
    std::swap(fixed_, other.fixed_);
  }
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
transient_vector_type const& edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::transientVector ( ) const [inline, private]
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
CVal::value_type const edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::value ( size_type  i) const [inline]

Member Data Documentation

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
CVal edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::data_ [private]
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
bool edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::fixed_ [mutable, private]

Definition at line 104 of file AssociationVector.h.

template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
KeyRefProd edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::ref_ [private]
template<typename KeyRefProd, typename CVal, typename KeyRef = typename helper::RefFromRefProdTrait<KeyRefProd>::ref_type, typename SizeType = unsigned int, typename KeyReferenceHelper = typename helper::AssociationKeyReferenceTrait<KeyRef>::type>
transient_vector_type edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::transientVector_ [mutable, private]