File indexing completed on 2025-08-05 08:12:36
0001 #include "sPHElectronPairContainerv1.h"
0002 #include "sPHElectronPairv1.h"
0003
0004 #include <iterator> // for reverse_iterator
0005 #include <map> // for _Rb_tree_const_iterator, _Rb_tree_iterator
0006 #include <ostream> // for operator<<, endl, ostream, basic_ostream, bas...
0007 #include <utility> // for pair, make_pair
0008
0009 using namespace std;
0010
0011 sPHElectronPairContainerv1::sPHElectronPairContainerv1()
0012 : _map()
0013 {
0014 }
0015
0016 sPHElectronPairContainerv1::sPHElectronPairContainerv1(const sPHElectronPairContainerv1& container)
0017 : _map()
0018 {
0019 for (ConstIter iter = container.begin();
0020 iter != container.end();
0021 ++iter)
0022 {
0023 sPHElectronPairv1* epair = dynamic_cast<sPHElectronPairv1*> (iter->second->CloneMe());
0024 _map.insert(make_pair(epair->get_id(), epair));
0025 }
0026 }
0027
0028 sPHElectronPairContainerv1& sPHElectronPairContainerv1::operator=(const sPHElectronPairContainerv1& container)
0029 {
0030 Reset();
0031 for (ConstIter iter = container.begin();
0032 iter != container.end();
0033 ++iter)
0034 {
0035 sPHElectronPairv1* epair = dynamic_cast<sPHElectronPairv1*> (iter->second->CloneMe());
0036 _map.insert(make_pair(epair->get_id(), epair));
0037 }
0038 return *this;
0039 }
0040
0041 sPHElectronPairContainerv1::~sPHElectronPairContainerv1()
0042 {
0043 Reset();
0044 }
0045
0046 void sPHElectronPairContainerv1::Reset()
0047 {
0048 for (Iter iter = _map.begin();
0049 iter != _map.end();
0050 ++iter)
0051 {
0052 sPHElectronPairv1* epair = iter->second;
0053 delete epair;
0054 }
0055 _map.clear();
0056 }
0057
0058 void sPHElectronPairContainerv1::identify(ostream& os) const
0059 {
0060 os << "sPHElectronPairContainerv1: size = " << _map.size() << endl;
0061 return;
0062 }
0063
0064 const sPHElectronPairv1* sPHElectronPairContainerv1::get(unsigned int id) const
0065 {
0066 ConstIter iter = _map.find(id);
0067 if (iter == _map.end()) return nullptr;
0068 return iter->second;
0069 }
0070
0071 sPHElectronPairv1* sPHElectronPairContainerv1::get(unsigned int id)
0072 {
0073 Iter iter = _map.find(id);
0074 if (iter == _map.end()) return nullptr;
0075 return iter->second;
0076 }
0077
0078 void sPHElectronPairContainerv1::insert(const sPHElectronPairv1* epair)
0079 {
0080 unsigned int index = 0;
0081 if (!_map.empty()) index = _map.rbegin()->first + 1;
0082 _map.insert(make_pair(index, dynamic_cast<sPHElectronPairv1*> (epair->CloneMe())));
0083 _map[index]->set_id(index);
0084 }
0085