File indexing completed on 2025-08-06 08:18:16
0001 #include "TrackSeedContainer_v1.h"
0002
0003 #include "TrackSeed.h"
0004
0005 #include <phool/PHObject.h>
0006
0007 #include <algorithm>
0008 #include <vector>
0009
0010 TrackSeedContainer_v1::TrackSeedContainer_v1()
0011 : m_seeds()
0012 {
0013 }
0014
0015 TrackSeedContainer_v1::TrackSeedContainer_v1(const TrackSeedContainer_v1& seeds)
0016 : m_seeds()
0017 {
0018 for (const TrackSeed* seed : seeds)
0019 {
0020 auto newseed = static_cast<TrackSeed*>(seed->CloneMe());
0021 m_seeds.push_back(newseed);
0022 }
0023 }
0024
0025 TrackSeedContainer_v1& TrackSeedContainer_v1::operator=(const TrackSeedContainer_v1& seedContainer)
0026 {
0027 Reset();
0028 for (const TrackSeed* seed : seedContainer)
0029 {
0030 auto newseed = static_cast<TrackSeed*>(seed->CloneMe());
0031 m_seeds.push_back(newseed);
0032 }
0033
0034 return *this;
0035 }
0036
0037 void TrackSeedContainer_v1::Reset()
0038 {
0039 for (const TrackSeed* seed : m_seeds)
0040 {
0041 delete seed;
0042 }
0043
0044 m_seeds.clear();
0045 }
0046
0047
0048 TrackSeedContainer_v1::~TrackSeedContainer_v1()
0049 {
0050 Reset();
0051 }
0052
0053 void TrackSeedContainer_v1::identify(std::ostream& os) const
0054 {
0055 os << "TrackSeedContainer_v1 size is " << m_seeds.size()
0056 << std::endl;
0057 }
0058
0059 const TrackSeed* TrackSeedContainer_v1::get(const std::size_t key) const
0060 {
0061 if (key > m_seeds.size())
0062 {
0063 return nullptr;
0064 }
0065 return m_seeds.at(key);
0066 }
0067
0068 TrackSeed* TrackSeedContainer_v1::get(const std::size_t key)
0069 {
0070 if (key >= m_seeds.size())
0071 {
0072 return nullptr;
0073 }
0074 return m_seeds.at(key);
0075 }
0076
0077 TrackSeed* TrackSeedContainer_v1::insert(const TrackSeed* seed)
0078 {
0079 m_seeds.push_back(static_cast<TrackSeed*>(seed->CloneMe()));
0080 Iter iter = m_seeds.end() - 1;
0081 return *iter;
0082 }
0083
0084 std::size_t TrackSeedContainer_v1::find(const TrackSeed* seed) const
0085 {
0086 auto it = std::find(m_seeds.begin(), m_seeds.end(), seed);
0087 return std::distance(m_seeds.begin(), it);
0088 }
0089
0090 std::size_t TrackSeedContainer_v1::find(const TrackSeed* seed)
0091 {
0092 auto it = std::find(m_seeds.begin(), m_seeds.end(), seed);
0093 return std::distance(m_seeds.begin(), it);
0094 }