File indexing completed on 2025-08-06 08:17:38
0001 #include "SvtxVertexMap_v1.h"
0002
0003 #include "SvtxVertex.h"
0004
0005 #include <phool/PHObject.h> // for PHObject
0006
0007 #include <iterator> // for reverse_iterator
0008 #include <utility> // for pair, make_pair
0009
0010
0011 SvtxVertexMap_v1::SvtxVertexMap_v1(const SvtxVertexMap_v1& vertexmap)
0012 : _map()
0013 {
0014 for (auto iter : vertexmap)
0015 {
0016 SvtxVertex* vertex = dynamic_cast<SvtxVertex*>(iter.second->CloneMe());
0017 _map.insert(std::make_pair(vertex->get_id(), vertex));
0018 }
0019 }
0020
0021 SvtxVertexMap_v1& SvtxVertexMap_v1::operator=(const SvtxVertexMap_v1& vertexmap)
0022 {
0023 Reset();
0024 for (auto iter : vertexmap)
0025 {
0026 SvtxVertex* vertex = dynamic_cast<SvtxVertex*>(iter.second->CloneMe());
0027 _map.insert(std::make_pair(vertex->get_id(), vertex));
0028 }
0029 return *this;
0030 }
0031
0032 SvtxVertexMap_v1::~SvtxVertexMap_v1()
0033 {
0034 SvtxVertexMap_v1::Reset();
0035 }
0036
0037 void SvtxVertexMap_v1::Reset()
0038 {
0039 for (auto& iter : _map)
0040 {
0041 SvtxVertex* vertex = iter.second;
0042 delete vertex;
0043 }
0044 _map.clear();
0045 }
0046
0047 void SvtxVertexMap_v1::identify(std::ostream& os) const
0048 {
0049 os << "SvtxVertexMap_v1: size = " << _map.size() << std::endl;
0050 return;
0051 }
0052
0053 const SvtxVertex* SvtxVertexMap_v1::get(unsigned int id) const
0054 {
0055 ConstIter iter = _map.find(id);
0056 if (iter == _map.end())
0057 {
0058 return nullptr;
0059 }
0060 return iter->second;
0061 }
0062
0063 SvtxVertex* SvtxVertexMap_v1::get(unsigned int id)
0064 {
0065 Iter iter = _map.find(id);
0066 if (iter == _map.end())
0067 {
0068 return nullptr;
0069 }
0070 return iter->second;
0071 }
0072
0073 SvtxVertex* SvtxVertexMap_v1::insert(SvtxVertex* vertex)
0074 {
0075 unsigned int index = 0;
0076 if (!_map.empty())
0077 {
0078 index = _map.rbegin()->first + 1;
0079 }
0080 _map.insert(std::make_pair(index, vertex));
0081 _map[index]->set_id(index);
0082 return _map[index];
0083 }
0084
0085 SvtxVertex* SvtxVertexMap_v1::insert_clone(const SvtxVertex* vertex)
0086 {
0087 return insert(dynamic_cast<SvtxVertex*>(vertex->CloneMe()));
0088 }