10 #include <tracking/eventTimeExtraction/findlets/TrackSelector.h>
11 #include <tracking/trackFindingCDC/utilities/Algorithms.h>
12 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
13 #include <tracking/dataobjects/RecoTrack.h>
14 #include <framework/core/ModuleParamList.h>
17 using namespace TrackFindingCDC;
19 void TrackSelector::exposeParameters(
ModuleParamList* moduleParamList,
const std::string& prefix)
21 moduleParamList->
addParameter(prefixed(prefix,
"minNumberCDCHits"), m_param_minNumberCDCHits,
22 "Minimal number of CDC hits for a track", m_param_minNumberCDCHits);
23 moduleParamList->
addParameter(prefixed(prefix,
"maximumNumberOfTracks"), m_param_maximumNumberOfTracks,
24 "Maximal number of tracks in an event", m_param_maximumNumberOfTracks);
25 moduleParamList->
addParameter(prefixed(prefix,
"minimumTrackPt"), m_param_minimumTrackPt,
26 "Minimal pt for a track", m_param_minimumTrackPt);
29 void TrackSelector::apply(std::vector<RecoTrack*>& tracks)
31 const auto trackHasEnoughPtAndHits = [
this](
RecoTrack * rt) {
32 return (rt->getNumberOfCDCHits() < m_param_minNumberCDCHits) or
33 (rt->getMomentumSeed().Mag() < m_param_minimumTrackPt);
35 TrackFindingCDC::erase_remove_if(tracks, trackHasEnoughPtAndHits);
42 std::sort(tracks.begin(), tracks.end(), greaterHits);
44 const unsigned int maximalNumberOfElements = std::min(
static_cast<unsigned int>(tracks.size()),
45 m_param_maximumNumberOfTracks);
47 tracks.resize(maximalNumberOfElements);
49 B2DEBUG(50,
"Limited number of selected tracks: " << tracks.size());