File indexing completed on 2025-08-06 08:18:15
0001 #include "SvtxTrackCaloClusterMap_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 SvtxTrackCaloClusterMap_v1::SvtxTrackCaloClusterMap_v1()
0015 : _map()
0016 {
0017 }
0018
0019 SvtxTrackCaloClusterMap_v1::SvtxTrackCaloClusterMap_v1(const SvtxTrackCaloClusterMap_v1& map)
0020 : _map()
0021 {
0022 for (const auto& iter : map)
0023 {
0024 std::vector<RawCluster*> clus = iter.second;
0025 _map.insert(make_pair(iter.first, clus));
0026 }
0027 }
0028
0029 SvtxTrackCaloClusterMap_v1& SvtxTrackCaloClusterMap_v1::operator=(const SvtxTrackCaloClusterMap_v1& map)
0030 {
0031 Reset();
0032 for (const auto& iter : map)
0033 {
0034 std::vector<RawCluster*> clus = iter.second;
0035 _map.insert(make_pair(iter.first, clus));
0036 }
0037 return *this;
0038 }
0039
0040 SvtxTrackCaloClusterMap_v1::~SvtxTrackCaloClusterMap_v1()
0041 {
0042 Reset();
0043 }
0044
0045 void SvtxTrackCaloClusterMap_v1::Reset()
0046 {
0047
0048
0049 _map.clear();
0050 }
0051
0052 void SvtxTrackCaloClusterMap_v1::identify(ostream& os) const
0053 {
0054 os << "SvtxTrackCaloClusterMap_v1: size = " << _map.size() << endl;
0055 return;
0056 }
0057
0058 const std::vector<RawCluster*> SvtxTrackCaloClusterMap_v1::get(SvtxTrack* track) const
0059 {
0060 std::vector<RawCluster*> dummy;
0061 ConstIter iter = _map.find(track);
0062 if (iter == _map.end())
0063 {
0064 return dummy;
0065 }
0066 return iter->second;
0067 }
0068
0069 std::vector<RawCluster*> SvtxTrackCaloClusterMap_v1::get(SvtxTrack* track)
0070 {
0071 std::vector<RawCluster*> dummy;
0072 Iter iter = _map.find(track);
0073 if (iter == _map.end())
0074 {
0075 return dummy;
0076 }
0077 return iter->second;
0078 }
0079
0080 std::vector<RawCluster*> SvtxTrackCaloClusterMap_v1::insert(SvtxTrack* track, std::vector<RawCluster*> clusters)
0081 {
0082 auto iter = _map.find(track);
0083 if (iter != _map.end())
0084 {
0085 iter->second = clusters;
0086 }
0087 else
0088 {
0089 _map.insert(std::make_pair(track, clusters));
0090 }
0091
0092 return _map[track];
0093 }
0094
0095 std::vector<RawCluster*> SvtxTrackCaloClusterMap_v1::insert(SvtxTrack* track, RawCluster* clus)
0096 {
0097 auto iter = _map.find(track);
0098 if (iter != _map.end())
0099 {
0100 (iter->second).push_back(clus);
0101 }
0102 else
0103 {
0104 std::vector<RawCluster*> dummy;
0105 dummy.push_back(clus);
0106 _map.insert(std::make_pair(track, dummy));
0107 }
0108
0109 return _map[track];
0110 }
0111
0112 size_t SvtxTrackCaloClusterMap_v1::erase(SvtxTrack* track)
0113 {
0114 const auto iter = _map.find(track);
0115 if (iter != _map.end())
0116 {
0117 _map.erase(iter);
0118 return 1;
0119 }
0120 else
0121 {
0122 return 0;
0123 }
0124 }