File indexing completed on 2025-08-06 08:17:36
0001
0002
0003
0004
0005
0006
0007 #include "DecayFinderContainer_v1.h"
0008
0009 #include <map> // for _Rb_tree_const_iterator, _Rb_tree_iterator
0010 #include <ostream> // for operator<<, endl, ostream, basic_ostream, bas...
0011 #include <utility> // for pair, make_pair
0012 #include <vector> // for vector
0013
0014 DecayFinderContainer_v1::DecayFinderContainer_v1()
0015 : m_decaymap()
0016 {
0017 }
0018
0019 DecayFinderContainer_v1::DecayFinderContainer_v1(const DecayFinderContainer_v1& decaymap)
0020 : m_decaymap()
0021 {
0022 for (const auto& iter : decaymap)
0023 {
0024 Decay decay = iter.second;
0025 m_decaymap.insert(std::make_pair(iter.first, decay));
0026 }
0027 }
0028
0029 DecayFinderContainer_v1& DecayFinderContainer_v1::operator=(const DecayFinderContainer_v1& decaymap)
0030 {
0031 Reset();
0032 for (const auto& iter : decaymap)
0033 {
0034 Decay decay = iter.second;
0035 m_decaymap.insert(std::make_pair(iter.first, decay));
0036 }
0037 return *this;
0038 }
0039
0040 DecayFinderContainer_v1::~DecayFinderContainer_v1()
0041 {
0042 Reset();
0043 }
0044
0045 void DecayFinderContainer_v1::Reset()
0046 {
0047 m_decaymap.clear();
0048 }
0049
0050 void DecayFinderContainer_v1::identify(std::ostream& os) const
0051 {
0052 os << "DecayFinderContainer_v1: size = " << m_decaymap.size() << std::endl;
0053 return;
0054 }
0055
0056 const DecayFinderContainerBase::Decay DecayFinderContainer_v1::get(unsigned int id) const
0057 {
0058 std::pair<int, int> dummyPair = {0, 0};
0059 Decay dummyDecay = {{dummyPair, 0}};
0060 ConstIter iter = m_decaymap.find(id);
0061 if (iter == m_decaymap.end())
0062 {
0063 return dummyDecay;
0064 }
0065 return iter->second;
0066 }
0067
0068 DecayFinderContainerBase::Decay DecayFinderContainer_v1::get(unsigned int id)
0069 {
0070 std::pair<int, int> dummyPair = {0, 0};
0071 Decay dummyDecay = {{dummyPair, 0}};
0072 Iter iter = m_decaymap.find(id);
0073 if (iter == m_decaymap.end())
0074 {
0075 return dummyDecay;
0076 }
0077 return iter->second;
0078 }
0079
0080 DecayFinderContainerBase::Decay DecayFinderContainer_v1::insert(const Decay& decay)
0081 {
0082 unsigned int index = 0;
0083 if (!m_decaymap.empty())
0084 {
0085 index = m_decaymap.rbegin()->first + 1;
0086 }
0087 m_decaymap.insert(std::make_pair(index, decay));
0088 return m_decaymap[index];
0089 }
0090
0091 DecayFinderContainerBase::Map DecayFinderContainer_v1::returnDecaysByPDGid(int PDGid)
0092 {
0093 Map requiredDecays;
0094
0095 for (auto& iter : m_decaymap)
0096 {
0097 for (auto& [particleNumber, particleType] : iter.second)
0098 {
0099 if (particleType == PDGid)
0100 {
0101 requiredDecays.insert(std::make_pair(iter.first, iter.second));
0102 }
0103 }
0104 }
0105
0106 return requiredDecays;
0107 }
0108
0109 size_t DecayFinderContainer_v1::erase(unsigned int key)
0110 {
0111 return m_decaymap.erase(key);
0112 }