10 #include <tracking/trackFindingCDC/filters/segmentRelation/BaseSegmentRelationFilter.h>
12 #include <tracking/trackFindingCDC/eventdata/segments/CDCSegment2D.h>
13 #include <tracking/trackFindingCDC/eventdata/hits/CDCRecoHit2D.h>
14 #include <tracking/trackFindingCDC/eventdata/hits/CDCWireHit.h>
16 #include <tracking/trackFindingCDC/filters/base/RelationFilter.icc.h>
18 #include <tracking/trackFindingCDC/numerics/Weight.h>
20 #include <tracking/trackFindingCDC/utilities/Relation.h>
21 #include <tracking/trackFindingCDC/utilities/VectorRange.h>
23 #include <tracking/trackFindingCDC/utilities/Functional.h>
30 using namespace TrackFindingCDC;
40 const std::vector<const CDCSegment2D*>& segments)
const
42 assert(std::is_sorted(segments.begin(), segments.end(),
LessOf<Deref>()) &&
43 "Expected segments to be sorted");
46 std::equal_range(segments.begin(), segments.end(), from,
LessOf<Deref>())};
48 return {tos.
begin(), tos.end()};
55 if (from == to)
return NAN;
56 if ((from ==
nullptr) or (to ==
nullptr))
return NAN;
59 std::vector<const CDCWireHit*> fromWireHits;
60 fromWireHits.reserve(from->size());
63 fromWireHits.push_back(&recoHit2D.getWireHit());
65 std::sort(fromWireHits.begin(), fromWireHits.end());
68 if (std::binary_search(fromWireHits.begin(), fromWireHits.end(), &recoHit2D.getWireHit())) {
73 if (1.0 * nOverlap / from->size() > 0.8) {