52 const std::vector<CDCWireHit*>& wireHits)
const
55 std::vector<const CDCWire*> m_wireNeighbors;
56 m_wireNeighbors.reserve(nWireNeighbors);
58 std::vector<CDCWireHit*> m_wireHitNeighbors;
59 m_wireHitNeighbors.reserve(2 * nWireNeighbors);
62 const CDCWire& wire = from->getWire();
70 const CDCWire* cwSixthSecondWireNeighbor = ccwSixthSecondWireNeighbor;
74 const CDCWire* cwTwelvethSecondWireNeighbor = ccwTwelvethSecondWireNeighbor;
80 m_wireNeighbors.push_back(ccwSixthSecondWireNeighbor);
82 if (cwInWireNeighbor) m_wireNeighbors.push_back(cwInWireNeighbor);
83 if (ccwInWireNeighbor) m_wireNeighbors.push_back(ccwInWireNeighbor);
86 if (cwWireNeighbor) m_wireNeighbors.push_back(cwWireNeighbor);
88 if (ccwWireNeighbor) m_wireNeighbors.push_back(ccwWireNeighbor);
90 if (cwOutWireNeighbor) m_wireNeighbors.push_back(cwOutWireNeighbor);
91 if (ccwOutWireNeighbor) m_wireNeighbors.push_back(ccwOutWireNeighbor);
94 m_wireNeighbors.push_back(ccwTwelvethSecondWireNeighbor);
97 if (cwSixthSecondWireNeighbor) {
98 cwSixthSecondWireNeighbor = cwSixthSecondWireNeighbor->
getNeighborCW();
99 m_wireNeighbors.push_back(cwSixthSecondWireNeighbor);
101 if (ccwSixthSecondWireNeighbor) {
102 ccwSixthSecondWireNeighbor = ccwSixthSecondWireNeighbor->
getNeighborCCW();
103 m_wireNeighbors.push_back(ccwSixthSecondWireNeighbor);
106 if (cwInWireNeighbor) {
108 m_wireNeighbors.push_back(cwInWireNeighbor);
110 if (ccwInWireNeighbor) {
112 m_wireNeighbors.push_back(ccwInWireNeighbor);
115 if (cwWireNeighbor) {
117 m_wireNeighbors.push_back(cwWireNeighbor);
119 if (ccwWireNeighbor) {
121 m_wireNeighbors.push_back(ccwWireNeighbor);
124 if (cwOutWireNeighbor) {
126 m_wireNeighbors.push_back(cwOutWireNeighbor);
128 if (ccwOutWireNeighbor) {
130 m_wireNeighbors.push_back(ccwOutWireNeighbor);
133 if (cwTwelvethSecondWireNeighbor) {
134 cwTwelvethSecondWireNeighbor = cwTwelvethSecondWireNeighbor->
getNeighborCW();
135 m_wireNeighbors.push_back(cwTwelvethSecondWireNeighbor);
137 if (ccwTwelvethSecondWireNeighbor) {
138 ccwTwelvethSecondWireNeighbor = ccwTwelvethSecondWireNeighbor->
getNeighborCCW();
139 m_wireNeighbors.push_back(ccwTwelvethSecondWireNeighbor);
143 std::sort(std::begin(m_wireNeighbors), std::end(m_wireNeighbors));
145 for (
const CDCWire* neighborWire : m_wireNeighbors) {
146 ConstVectorRange<CDCWireHit*> neighborWireHits{
147 std::equal_range(wireHits.begin(), wireHits.end(), neighborWire, LessOf<Deref>())};
149 m_wireHitNeighbors.insert(m_wireHitNeighbors.end(),
150 neighborWireHits.begin(),
151 neighborWireHits.end());
154 return m_wireHitNeighbors;