Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:46

0001 #include "JetMapv1.h"
0002 
0003 #include "Jet.h"
0004 
0005 #include <phool/PHObject.h>  // for PHObject
0006 
0007 #include <algorithm>
0008 #include <cassert>
0009 #include <cmath>
0010 #include <iterator>  // for reverse_iterator
0011 #include <ostream>   // for operator<<, endl, ostream, basic_ostream::operat...
0012 #include <utility>   // for pair, make_pair
0013 #include <vector>
0014 
0015 JetMapv1::JetMapv1(const JetMap& jets)
0016   : _algo(jets.get_algo())
0017   , _par(jets.get_par())
0018 {
0019   for (ConstSrcIter iter = jets.begin_src();
0020        iter != jets.end_src();
0021        ++iter)
0022   {
0023     _src.insert(*iter);
0024   }
0025 
0026   for (auto iter : jets)
0027   {
0028     Jet* jet = dynamic_cast<Jet*>((iter.second)->CloneMe());
0029     assert(jet);
0030     _map.insert(std::make_pair(jet->get_id(), jet));
0031   }
0032 }
0033 
0034 JetMapv1& JetMapv1::operator=(const JetMap& jets)
0035 {
0036   Reset();
0037 
0038   _algo = jets.get_algo();
0039   _par = jets.get_par();
0040 
0041   for (ConstSrcIter iter = jets.begin_src();
0042        iter != jets.end_src();
0043        ++iter)
0044   {
0045     _src.insert(*iter);
0046   }
0047 
0048   for (auto iter : jets)
0049   {
0050     Jet* jet = dynamic_cast<Jet*>((iter.second)->CloneMe());
0051     assert(jet);
0052     _map.insert(std::make_pair(jet->get_id(), jet));
0053   }
0054 
0055   return *this;
0056 }
0057 
0058 JetMapv1::~JetMapv1()
0059 {
0060   JetMapv1::Reset();
0061 }
0062 
0063 void JetMapv1::Reset()
0064 {
0065   _algo = Jet::NONE;
0066   _par = std::numeric_limits<float>::quiet_NaN();
0067   _src.clear();
0068 
0069   while (_map.begin() != _map.end())
0070   {
0071     delete _map.begin()->second;
0072     _map.erase(_map.begin());
0073   }
0074 }
0075 
0076 void JetMapv1::identify(std::ostream& os) const
0077 {
0078   os << "JetMapv1: size = " << _map.size() << std::endl;
0079   os << "          par = " << _par << std::endl;
0080   os << "          source = ";
0081   for (ConstSrcIter i = begin_src(); i != end_src(); ++i)
0082   {
0083     os << (*i) << ",";
0084   }
0085   os << std::endl;
0086 
0087   return;
0088 }
0089 
0090 const Jet* JetMapv1::get(unsigned int id) const
0091 {
0092   ConstIter iter = _map.find(id);
0093   if (iter == _map.end())
0094   {
0095     return nullptr;
0096   }
0097   return iter->second;
0098 }
0099 
0100 Jet* JetMapv1::get(unsigned int id)
0101 {
0102   Iter iter = _map.find(id);
0103   if (iter == _map.end())
0104   {
0105     return nullptr;
0106   }
0107   return iter->second;
0108 }
0109 
0110 Jet* JetMapv1::insert(Jet* jet)
0111 {
0112   unsigned int index = 0;
0113   if (!_map.empty())
0114   {
0115     index = _map.rbegin()->first + 1;
0116   }
0117   _map.insert(std::make_pair(index, jet));
0118   _map[index]->set_id(index);
0119   return (_map[index]);
0120 }
0121 
0122 std::vector<Jet*> JetMapv1::vec()
0123 {
0124   std::vector<Jet*> v_data;
0125   for (auto& _ : _map)
0126   {
0127     v_data.push_back(_.second);
0128   }
0129   return v_data;
0130 }