Back to home page

sPhenix code displayed by LXR

 
 

    


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 }