8#include <tracking/trackFindingCDC/findlets/combined/AxialTrackFinderLegendre.h>
10#include <tracking/trackFindingCDC/processing/AxialTrackUtil.h>
12#include <tracking/trackFindingCDC/eventdata/tracks/CDCTrack.h>
13#include <tracking/trackFindingCDC/eventdata/hits/CDCWireHit.h>
15#include <tracking/trackFindingCDC/utilities/StringManipulation.h>
18using namespace TrackFindingCDC;
31 return "Performs the pattern recognition in the CDC with the Legendre hough finder";
35 const std::string& prefix)
43 std::vector<CDCTrack>& tracks)
45 B2DEBUG(25,
"********** CDCTrackingModule ************");
48 std::vector<const CDCWireHit*> axialWireHits;
49 axialWireHits.reserve(wireHits.size());
51 wireHit->unsetTemporaryFlags();
52 wireHit->unsetMaskedFlag();
53 if (not wireHit.isAxial())
continue;
54 if (wireHit->hasBackgroundFlag())
continue;
55 axialWireHits.emplace_back(&wireHit);
73 for (
int iPass = 0; iPass < 20; ++iPass) {
74 int nCandsAdded = tracks.size();
82 nCandsAdded = tracks.size() - nCandsAdded;
84 if (iPass == 19) B2WARNING(
"Reached maximal number of Legendre search passes");
85 if (nCandsAdded == 0)
break;
The Module parameter list class.
void apply(const std::vector< const CDCWireHit * > &axialWireHits, std::vector< CDCTrack > &tracks) final
Execute one pass over a quad tree.
AxialTrackCreatorHitLegendre m_fullRangeAxialTrackCreatorHitLegendre
Findlet for the full range legendre pass.
AxialTrackCreatorHitLegendre m_nonCurlerAxialTrackCreatorHitLegendre
Findlet for the non-curler legendre pass.
std::string getDescription() final
Short description of the findlet.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
AxialTrackCreatorHitLegendre m_nonCurlersWithIncreasingThresholdAxialTrackCreatorHitLegendre
Findlet for the non-curler with increased threshold legendre pass.
AxialTrackMerger m_axialTrackMerger
Findlet to merge the tracks after the legendre finder.
AxialTrackHitMigrator m_axialTrackHitMigrator
Findlet to exchange hits between tracks based on their proximity to the respective trajectory.
AxialTrackFinderLegendre()
Constructor.
void apply(const std::vector< CDCWireHit > &wireHits, std::vector< CDCTrack > &tracks)
Main method to apply the track finding.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
void apply(const std::vector< const CDCWireHit * > &axialWireHits, std::vector< CDCTrack > &axialTracks) final
Do the hit migration.
void apply(std::vector< CDCTrack > &axialTracks, const std::vector< const CDCWireHit * > &axialWireHits) final
Merge tracks together. Allows for axial hits to be added as it may see fit.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Class representing a hit wire in the central drift chamber.
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
Abstract base class for different kinds of events.
static void deleteShortTracks(std::vector< CDCTrack > &axialTracks, double minimal_size=5)
Remove tracks that are shorter than the given number of hits.