Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:12

0001 /**
0002  * @file trackbase/TrkrHitSetContainerv1.cc
0003  * @author D. McGlinchey, H. PEREIRA DA COSTA
0004  * @date June 2018
0005  * @brief Implementation for TrkrHitSetContainerv1
0006  */
0007 #include "TrkrHitSetContainerv1.h"
0008 
0009 #include "TrkrDefs.h"
0010 #include "TrkrHitSetv1.h"
0011 
0012 #include <cstdlib>
0013 
0014 void TrkrHitSetContainerv1::Reset()
0015 {
0016   for (auto&& [key, hitset] : m_hitmap)
0017   {
0018     delete hitset;
0019   }
0020 
0021   m_hitmap.clear();
0022 }
0023 
0024 void TrkrHitSetContainerv1::identify(std::ostream& os) const
0025 {
0026   ConstIterator iter;
0027   os << "Number of hits: " << size() << std::endl;
0028   for (const auto& pair : m_hitmap)
0029   {
0030     int layer = TrkrDefs::getLayer(pair.first);
0031     os << "hitsetkey " << pair.first << " layer " << layer << std::endl;
0032     pair.second->identify();
0033   }
0034   return;
0035 }
0036 
0037 TrkrHitSetContainerv1::ConstIterator
0038 TrkrHitSetContainerv1::addHitSet(TrkrHitSet* newhit)
0039 {
0040   return addHitSetSpecifyKey(newhit->getHitSetKey(), newhit);
0041 }
0042 
0043 TrkrHitSetContainerv1::ConstIterator
0044 TrkrHitSetContainerv1::addHitSetSpecifyKey(const TrkrDefs::hitsetkey key, TrkrHitSet* newhit)
0045 {
0046   const auto ret = m_hitmap.insert(std::make_pair(key, newhit));
0047   if (!ret.second)
0048   {
0049     std::cout << "TrkrHitSetContainerv1::AddHitSpecifyKey: duplicate key: " << key << " exiting now" << std::endl;
0050     exit(1);
0051   }
0052   else
0053   {
0054     return ret.first;
0055   }
0056 }
0057 
0058 void TrkrHitSetContainerv1::removeHitSet(TrkrDefs::hitsetkey key)
0059 {
0060   auto iter = m_hitmap.find(key);
0061   if (iter != m_hitmap.end())
0062   {
0063     TrkrHitSet* hitset = iter->second;
0064     delete hitset;
0065     m_hitmap.erase(iter);
0066   }
0067 }
0068 
0069 void TrkrHitSetContainerv1::removeHitSet(TrkrHitSet* hitset)
0070 {
0071   removeHitSet(hitset->getHitSetKey());
0072 }
0073 
0074 TrkrHitSetContainerv1::ConstRange
0075 TrkrHitSetContainerv1::getHitSets(const TrkrDefs::TrkrId trackerid) const
0076 {
0077   const TrkrDefs::hitsetkey keylo = TrkrDefs::getHitSetKeyLo(trackerid);
0078   const TrkrDefs::hitsetkey keyhi = TrkrDefs::getHitSetKeyHi(trackerid);
0079   return std::make_pair(m_hitmap.lower_bound(keylo), m_hitmap.upper_bound(keyhi));
0080 }
0081 
0082 TrkrHitSetContainerv1::ConstRange
0083 TrkrHitSetContainerv1::getHitSets(const TrkrDefs::TrkrId trackerid, const uint8_t layer) const
0084 {
0085   TrkrDefs::hitsetkey keylo = TrkrDefs::getHitSetKeyLo(trackerid, layer);
0086   TrkrDefs::hitsetkey keyhi = TrkrDefs::getHitSetKeyHi(trackerid, layer);
0087   return std::make_pair(m_hitmap.lower_bound(keylo), m_hitmap.upper_bound(keyhi));
0088 }
0089 
0090 TrkrHitSetContainerv1::ConstRange
0091 TrkrHitSetContainerv1::getHitSets() const
0092 {
0093   return std::make_pair(m_hitmap.cbegin(), m_hitmap.cend());
0094 }
0095 
0096 TrkrHitSetContainerv1::Iterator
0097 TrkrHitSetContainerv1::findOrAddHitSet(TrkrDefs::hitsetkey key)
0098 {
0099   auto it = m_hitmap.lower_bound(key);
0100   if (it == m_hitmap.end() || (key < it->first))
0101   {
0102     it = m_hitmap.insert(it, std::make_pair(key, new TrkrHitSetv1));
0103     it->second->setHitSetKey(key);
0104   }
0105   return it;
0106 }
0107 
0108 TrkrHitSet*
0109 TrkrHitSetContainerv1::findHitSet(TrkrDefs::hitsetkey key)
0110 {
0111   auto it = m_hitmap.find(key);
0112   if (it != m_hitmap.end())
0113   {
0114     return it->second;
0115   }
0116   else
0117   {
0118     return nullptr;
0119   }
0120 }