File indexing completed on 2025-08-06 08:18:11
0001
0002
0003
0004
0005
0006
0007
0008 #include "TrkrClusterHitAssocv2.h"
0009 #include "TrkrDefs.h"
0010
0011 #include <ostream> // for operator<<, endl, basic_ostream, ostream, basic_o...
0012
0013 namespace
0014 {
0015 TrkrClusterHitAssocv2::Map dummy_map;
0016 }
0017
0018
0019 void TrkrClusterHitAssocv2::Reset()
0020 {
0021 for (unsigned int layer = 0; layer < max_layer; layer++)
0022 {
0023 for (unsigned int phi_segment = 0; phi_segment < max_phisegment; phi_segment++)
0024 {
0025 for (unsigned int z_segment = 0; z_segment < max_zsegment; z_segment++)
0026 {
0027 m_map[layer][phi_segment][z_segment].clear();
0028 }
0029 }
0030 }
0031 }
0032
0033
0034 void TrkrClusterHitAssocv2::identify(std::ostream& os) const
0035 {
0036 std::multimap<TrkrDefs::cluskey, TrkrDefs::hitkey>::const_iterator iter;
0037 os << "-----TrkrClusterHitAssocv2-----" << std::endl;
0038 os << "Number of associations: " << size() << std::endl;
0039 for (unsigned int layer = 0; layer < max_layer; layer++)
0040 {
0041 for (unsigned int phi_segment = 0; phi_segment < max_phisegment; phi_segment++)
0042 {
0043 for (unsigned int z_segment = 0; z_segment < max_zsegment; z_segment++)
0044 {
0045 for (const auto& pair : m_map[layer][phi_segment][z_segment])
0046 {
0047 os << "clus key " << pair.first << std::dec
0048 << " layer " << TrkrDefs::getLayer(pair.first)
0049 << " hit key: " << pair.second << std::endl;
0050 }
0051 }
0052 }
0053 }
0054 os << "------------------------------" << std::endl;
0055
0056 return;
0057 }
0058
0059
0060 void TrkrClusterHitAssocv2::addAssoc(TrkrDefs::cluskey ckey, unsigned int hidx)
0061 {
0062 unsigned int layer = TrkrDefs::getLayer(ckey);
0063 unsigned int sector = TrkrDefs::getPhiElement(ckey);
0064 unsigned int side = TrkrDefs::getZElement(ckey);
0065
0066
0067 if (layer < max_layer && sector < max_phisegment && side < max_zsegment)
0068 {
0069 m_map[layer][sector][side].insert(std::make_pair(ckey, hidx));
0070 }
0071 else
0072 {
0073 std::cout
0074 << "TrkrClusterHitAssocv2::addAssoc - out of range access."
0075 << " layer: " << layer
0076 << " sector: " << sector
0077 << " side: " << side
0078 << std::endl;
0079 }
0080 }
0081
0082
0083 TrkrClusterHitAssocv2::Map* TrkrClusterHitAssocv2::getClusterMap(TrkrDefs::hitsetkey hitsetkey)
0084 {
0085 unsigned int layer = TrkrDefs::getLayer(hitsetkey);
0086 unsigned int sector = TrkrDefs::getPhiElement(hitsetkey);
0087 unsigned int side = TrkrDefs::getZElement(hitsetkey);
0088
0089
0090 if (layer < max_layer && sector < max_phisegment && side < max_zsegment)
0091 {
0092 return &m_map[layer][sector][side];
0093 }
0094 else
0095 {
0096 std::cout
0097 << "TrkrClusterHitAssocv2::getClusterMap - out of range access."
0098 << " layer: " << layer
0099 << " sector: " << sector
0100 << " side: " << side
0101 << std::endl;
0102 return nullptr;
0103 }
0104 }
0105
0106
0107 TrkrClusterHitAssocv2::ConstRange TrkrClusterHitAssocv2::getHits(TrkrDefs::cluskey ckey)
0108 {
0109 unsigned int layer = TrkrDefs::getLayer(ckey);
0110 unsigned int sector = TrkrDefs::getPhiElement(ckey);
0111 unsigned int side = TrkrDefs::getZElement(ckey);
0112
0113
0114 if (layer < max_layer && sector < max_phisegment && side < max_zsegment)
0115 {
0116 return std::make_pair(m_map[layer][sector][side].lower_bound(ckey), m_map[layer][sector][side].upper_bound(ckey));
0117 }
0118 else
0119 {
0120 std::cout
0121 << "TrkrClusterHitAssocv2::getHits - out of range access."
0122 << " layer: " << layer
0123 << " sector: " << sector
0124 << " side: " << side
0125 << std::endl;
0126 return std::make_pair(dummy_map.cbegin(), dummy_map.cend());
0127 }
0128 }
0129
0130
0131 unsigned int TrkrClusterHitAssocv2::size() const
0132 {
0133 unsigned int size = 0;
0134 for (unsigned layer = 0; layer < max_layer; layer++)
0135 {
0136 for (unsigned phi_segment = 0; phi_segment < max_phisegment; phi_segment++)
0137 {
0138 for (unsigned z_segment = 0; z_segment < max_zsegment; z_segment++)
0139 {
0140 size += m_map[layer][phi_segment][z_segment].size();
0141 }
0142 }
0143 }
0144
0145 return size;
0146 }