Back to home page

sPhenix code displayed by LXR

 
 

    


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   /// Pointers to SvtxTrack and RawCluster will be
0048   /// deleted by their respective containers already
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 }