Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:19:55

0001 #include "GlobalVertexMapv1.h"
0002 
0003 #include "GlobalVertex.h"
0004 #include "GlobalVertexMap.h"
0005 
0006 #include <utility>  // for pair, make_pair
0007 
0008 GlobalVertexMapv1::~GlobalVertexMapv1()
0009 {
0010   clear();
0011 }
0012 
0013 void GlobalVertexMapv1::identify(std::ostream& os) const
0014 {
0015   os << "GlobalVertexMapv1: size = " << _map.size() << std::endl;
0016   for (const auto& m : _map)
0017   {
0018     m.second->identify(os);
0019   }
0020   return;
0021 }
0022 
0023 void GlobalVertexMapv1::clear()
0024 {
0025   for (const auto& iter : _map)
0026   {
0027     delete iter.second;
0028   }
0029   _map.clear();
0030   return;
0031 }
0032 
0033 const GlobalVertex* GlobalVertexMapv1::get(unsigned int id) const
0034 {
0035   ConstIter iter = _map.find(id);
0036   if (iter == _map.end())
0037   {
0038     return nullptr;
0039   }
0040   return iter->second;
0041 }
0042 
0043 GlobalVertex* GlobalVertexMapv1::get(unsigned int id)
0044 {
0045   Iter iter = _map.find(id);
0046   if (iter == _map.end())
0047   {
0048     return nullptr;
0049   }
0050   return iter->second;
0051 }
0052 
0053 std::vector<GlobalVertex*> GlobalVertexMapv1::get_gvtxs_with_type(std::vector<GlobalVertex::VTXTYPE> types)
0054 {
0055   std::vector<GlobalVertex*> vertices;
0056   Iter iter = _map.begin();
0057 
0058   for(GlobalVertex::VTXTYPE type : types)
0059     {
0060       while(iter != _map.end())
0061     {
0062       GlobalVertex::VertexIter it = iter->second->find_vertexes(type);
0063       if(it != iter->second->end_vertexes())
0064         {
0065           vertices.push_back(iter->second);
0066         }
0067       ++iter;
0068     }
0069       if(!vertices.empty()) { break; }
0070     }
0071   
0072   return vertices;
0073 }
0074 
0075 GlobalVertex* GlobalVertexMapv1::insert(GlobalVertex* vertex)
0076 {
0077   unsigned int index = vertex->get_id();
0078   _map[index] = vertex;
0079   return _map[index];
0080 }
0081 
0082 void GlobalVertexMapv1::CopyTo(GlobalVertexMap* to_global)
0083 {
0084   for (auto const& it : _map)
0085   {
0086     GlobalVertex* glvtx = dynamic_cast<GlobalVertex*>(it.second->CloneMe());
0087     glvtx->clear_vtxs();
0088     glvtx->set_id(to_global->size());
0089     for (GlobalVertex::ConstVertexIter iter = it.second->begin_vertexes(); iter != it.second->end_vertexes(); ++iter)
0090     {
0091       for (const auto& vertex : iter->second)
0092       {
0093         glvtx->clone_insert_vtx(iter->first, vertex);
0094         to_global->insert(glvtx);
0095       }
0096     }
0097   }
0098 }