File indexing completed on 2025-08-06 08:18:12
0001
0002
0003
0004
0005
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 }