Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 /*****************/
0002 /* Cameron Dean  */
0003 /*   LANL 2021   */
0004 /* cdean@bnl.gov */
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 }