Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
JetMapv1.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file JetMapv1.cc
1 #include "JetMapv1.h"
2 
3 #include "Jet.h"
4 
5 #include <phool/PHObject.h> // for PHObject
6 
7 #include <algorithm>
8 #include <cassert>
9 #include <cmath>
10 #include <iterator> // for reverse_iterator
11 #include <ostream> // for operator<<, endl, ostream, basic_ostream::operat...
12 #include <utility> // for pair, make_pair
13 #include <vector>
14 
16  : _algo(jets.get_algo())
17  , _par(jets.get_par())
18 {
19  for (ConstSrcIter iter = jets.begin_src();
20  iter != jets.end_src();
21  ++iter)
22  {
23  _src.insert(*iter);
24  }
25 
26  for (auto iter : jets)
27  {
28  Jet* jet = dynamic_cast<Jet*>((iter.second)->CloneMe());
29  assert(jet);
30  _map.insert(std::make_pair(jet->get_id(), jet));
31  }
32 }
33 
35 {
36  Reset();
37 
38  _algo = jets.get_algo();
39  _par = jets.get_par();
40 
41  for (ConstSrcIter iter = jets.begin_src();
42  iter != jets.end_src();
43  ++iter)
44  {
45  _src.insert(*iter);
46  }
47 
48  for (auto iter : jets)
49  {
50  Jet* jet = dynamic_cast<Jet*>((iter.second)->CloneMe());
51  assert(jet);
52  _map.insert(std::make_pair(jet->get_id(), jet));
53  }
54 
55  return *this;
56 }
57 
59 {
61 }
62 
64 {
65  _algo = Jet::NONE;
66  _par = NAN;
67  _src.clear();
68 
69  while (_map.begin() != _map.end())
70  {
71  delete _map.begin()->second;
72  _map.erase(_map.begin());
73  }
74 }
75 
76 void JetMapv1::identify(std::ostream& os) const
77 {
78  os << "JetMapv1: size = " << _map.size() << std::endl;
79  os << " par = " << _par << std::endl;
80  os << " source = ";
81  for (ConstSrcIter i = begin_src(); i != end_src(); ++i)
82  {
83  os << (*i) << ",";
84  }
85  os << std::endl;
86 
87  return;
88 }
89 
90 const Jet* JetMapv1::get(unsigned int id) const
91 {
92  ConstIter iter = _map.find(id);
93  if (iter == _map.end()) return nullptr;
94  return iter->second;
95 }
96 
97 Jet* JetMapv1::get(unsigned int id)
98 {
99  Iter iter = _map.find(id);
100  if (iter == _map.end()) return nullptr;
101  return iter->second;
102 }
103 
105 {
106  unsigned int index = 0;
107  if (!_map.empty()) index = _map.rbegin()->first + 1;
108  _map.insert(std::make_pair(index, jet));
109  _map[index]->set_id(index);
110  return (_map[index]);
111 }
112 
113 std::vector<Jet*> JetMapv1::vec()
114 {
115  std::vector<Jet*> v_data;
116  for (auto& _ : _map)
117  {
118  v_data.push_back(_.second);
119  }
120  return v_data;
121 }