12 #include <tracking/trackFindingCDC/findlets/base/Findlet.h>
13 #include <tracking/ckf/cdc/entities/CDCCKFPath.h>
15 #include <boost/range/adaptor/reversed.hpp>
16 #include <boost/functional/hash.hpp>
23 class CDCCKFPathMerger :
public TrackFindingCDC::Findlet<CDCCKFPath> {
27 void apply(std::vector<CDCCKFPath>& newPaths)
override
30 std::unordered_map<size_t, CDCCKFPath> hashToPathList;
33 if (hashToPathList.find(lastHitsHash) != hashToPathList.end()) {
34 if (hashToPathList[lastHitsHash].size() < path.size()) {
35 hashToPathList[lastHitsHash] = path;
38 hashToPathList[lastHitsHash] = path;
43 for (
const auto& hashAndPathList : hashToPathList) {
44 const CDCCKFPath& path = hashAndPathList.second;
45 newPaths.push_back(path);
54 unsigned int counter = 0;
56 for (
const CDCCKFState& state : boost::adaptors::reverse(path)) {
60 if (not state.isSeed()) {
61 boost::hash_combine(seed, state.getWireHit());