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 }