11#ifndef AthenaHitsVector_H
12#define AthenaHitsVector_H
19#include "boost/iterator/transform_iterator.hpp"
25#include "GaudiKernel/IMessageSvc.h"
26#include "GaudiKernel/ISvcLocator.h"
27#include "GaudiKernel/MsgStream.h"
53 using CONT = std::vector<T*>;
67 boost::transform_iterator<make_const, typename CONT::const_iterator>;
79 MsgStream log(msgSvc,
"AthenaHitsVector");
80 log << MSG::DEBUG <<
" initialized " << collectionName
88 for (
unsigned int i = 0; i <
m_hitvector.size(); i++)
97 for (
unsigned int i = 0; i <
m_hitvector.size(); i++)
114 m_hitvector.push_back((
nullptr != *i) ?
new T(**i) :
nullptr);
129 m_hitvector.push_back((
nullptr != *i) ?
new T(**i) :
nullptr);
185 for (
unsigned int i = 0; i <
m_hitvector.size(); i++)
204 static const std::type_info*
const s_info;
void dvl_makecontainer(size_t nreserve, AthenaHitsVector< T > *&cont)
Construct a new container.
Holder to implement conversion copies for DataVector/DataList.
Header file for AthHistogramAlgorithm.
boost::transform_iterator< make_const, typename CONT::const_iterator > const_iterator
const SiHit *const & const_reference
std::vector< SiHit * > m_hitvector
const_iterator end() const
void reserve(size_type n)
void Clear(AthHitVec::OwnershipPolicy ownPolicy)
typename CONT::reference reference
const std::vector< T * > & getVector()
void setName(const std::string &name)
typename CONT::value_type value_type
AthenaHitsVector(const AthenaHitsVector< T > &rhs)
copy constructor makes deep copy of elements, as by default the container is AthHitVec::OWN_ELEMENTS
AthenaHitsVector(const std::string &collectionName="DefaultCollectionName", AthHitVec::OwnershipPolicy ownPolicy=AthHitVec::OWN_ELEMENTS)
const SiHit *const * const_pointer
typename CONT::difference_type difference_type
void push_back(std::unique_ptr< T > t)
typename CONT::iterator iterator
const T * At(unsigned int pos) const
AthenaHitsVector< T > & operator=(const AthenaHitsVector< T > &rhs)
assignment deletes old elements and copies the new ones deep copy if AthHitVec::OWN_ELEMENTS shallow ...
typename CONT::pointer pointer
const_iterator begin() const
const T * operator[](size_type n) const
const std::string & Name() const
static const std::type_info *const s_info
static const std::type_info * initHelper()
AthHitVec::OwnershipPolicy m_ownPolicy
typename CONT::size_type size_type
std::vector< SiHit * > CONT
~AthenaHitsVector() override
void resize(size_type sz)
singleton-like access to IMessageSvc via open function and helper
@ OWN_ELEMENTS
this data object owns its elements
@ VIEW_ELEMENTS
this data object is a view, does not own its elmts
IMessageSvc * getMessageSvc(bool quiet=false)
const T * operator()(const T *x) const
virtual ~HitsVectorBase()=default