File indexing completed on 2025-08-06 08:18:15
0001 #include "SvtxTrackMap_v1.h"
0002
0003 #include "SvtxTrack.h"
0004
0005 #include <phool/PHObject.h> // for PHObject
0006
0007 #include <iterator> // for reverse_iterator
0008 #include <map> // for _Rb_tree_const_iterator, _Rb_tree_iterator
0009 #include <ostream> // for operator<<, endl, ostream, basic_ostream, bas...
0010 #include <utility> // for pair, make_pair
0011
0012 using namespace std;
0013
0014 SvtxTrackMap_v1::SvtxTrackMap_v1()
0015 : _map()
0016 {
0017 }
0018
0019 SvtxTrackMap_v1::SvtxTrackMap_v1(const SvtxTrackMap_v1& trackmap)
0020 : _map()
0021 {
0022 for (auto iter : trackmap)
0023 {
0024 SvtxTrack* track = dynamic_cast<SvtxTrack*>(iter.second->CloneMe());
0025 _map.insert(make_pair(track->get_id(), track));
0026 }
0027 }
0028
0029 SvtxTrackMap_v1& SvtxTrackMap_v1::operator=(const SvtxTrackMap_v1& trackmap)
0030 {
0031 Reset();
0032 for (auto iter : trackmap)
0033 {
0034 SvtxTrack* track = dynamic_cast<SvtxTrack*>(iter.second->CloneMe());
0035 _map.insert(make_pair(track->get_id(), track));
0036 }
0037 return *this;
0038 }
0039
0040 SvtxTrackMap_v1::~SvtxTrackMap_v1()
0041 {
0042 Reset();
0043 }
0044
0045 void SvtxTrackMap_v1::Reset()
0046 {
0047 for (auto& iter : _map)
0048 {
0049 SvtxTrack* track = iter.second;
0050 delete track;
0051 }
0052 _map.clear();
0053 }
0054
0055 void SvtxTrackMap_v1::identify(ostream& os) const
0056 {
0057 os << "SvtxTrackMap_v1: size = " << _map.size() << endl;
0058 return;
0059 }
0060
0061 const SvtxTrack* SvtxTrackMap_v1::get(unsigned int id) const
0062 {
0063 ConstIter iter = _map.find(id);
0064 if (iter == _map.end())
0065 {
0066 return nullptr;
0067 }
0068 return iter->second;
0069 }
0070
0071 SvtxTrack* SvtxTrackMap_v1::get(unsigned int id)
0072 {
0073 Iter iter = _map.find(id);
0074 if (iter == _map.end())
0075 {
0076 return nullptr;
0077 }
0078 return iter->second;
0079 }
0080
0081 SvtxTrack* SvtxTrackMap_v1::insert(const SvtxTrack* track)
0082 {
0083 unsigned int index = 0;
0084 if (!_map.empty())
0085 {
0086 index = _map.rbegin()->first + 1;
0087 }
0088 _map.insert(make_pair(index, dynamic_cast<SvtxTrack*>(track->CloneMe())));
0089 _map[index]->set_id(index);
0090 return _map[index];
0091 }
0092
0093 size_t SvtxTrackMap_v1::erase(unsigned int idkey)
0094 {
0095 const auto iter = _map.find(idkey);
0096 if (iter != _map.end())
0097 {
0098 delete iter->second;
0099 _map.erase(iter);
0100 return 1;
0101 }
0102 else
0103 {
0104 return 0;
0105 }
0106 }