8 #include <tracking/vxdHoughTracking/findlets/SVDHoughTracking.h>
9 #include <tracking/vxdHoughTracking/findlets/RawTrackCandCleaner.icc.h>
10 #include <tracking/vxdHoughTracking/utilities/SVDHoughTrackingHelpers.h>
11 #include <tracking/spacePointCreation/SpacePointTrackCand.h>
12 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
13 #include <framework/logging/Logger.h>
14 #include <framework/core/ModuleParamList.h>
17 using namespace TrackFindingCDC;
18 using namespace vxdHoughTracking;
20 SVDHoughTracking::~SVDHoughTracking() =
default;
22 SVDHoughTracking::SVDHoughTracking()
24 addProcessingSignalListener(&m_spacePointLoaderAndPreparer);
25 addProcessingSignalListener(&m_multiHouthSpaceInterceptFinder);
26 addProcessingSignalListener(&m_singleHouthSpaceInterceptFinder);
27 addProcessingSignalListener(&m_rawTCCleaner);
28 addProcessingSignalListener(&m_overlapResolver);
29 addProcessingSignalListener(&m_recoTrackStorer);
30 addProcessingSignalListener(&m_roiFinder);
33 void SVDHoughTracking::exposeParameters(
ModuleParamList* moduleParamList,
const std::string& prefix)
35 Super::exposeParameters(moduleParamList, prefix);
37 m_spacePointLoaderAndPreparer.exposeParameters(moduleParamList, prefix);
38 m_multiHouthSpaceInterceptFinder.exposeParameters(moduleParamList, prefix);
39 m_singleHouthSpaceInterceptFinder.exposeParameters(moduleParamList, TrackFindingCDC::prefixed(prefix,
"simple"));
40 m_rawTCCleaner.exposeParameters(moduleParamList, prefix);
41 m_overlapResolver.exposeParameters(moduleParamList, TrackFindingCDC::prefixed(prefix,
"finalOverlapResolver"));
42 m_recoTrackStorer.exposeParameters(moduleParamList, prefix);
43 m_roiFinder.exposeParameters(moduleParamList, prefix);
45 moduleParamList->
getParameter<std::string>(
"relationFilter").setDefaultValue(
"angleAndTime");
46 moduleParamList->
getParameter<std::string>(
"twoHitFilter").setDefaultValue(
"twoHitVirtualIPQI");
47 moduleParamList->
getParameter<std::string>(
"threeHitFilter").setDefaultValue(
"qualityIndicator");
48 moduleParamList->
getParameter<std::string>(
"fourHitFilter").setDefaultValue(
"qualityIndicator");
49 moduleParamList->
getParameter<std::string>(
"fiveHitFilter").setDefaultValue(
"qualityIndicator");
51 moduleParamList->
addParameter(TrackFindingCDC::prefixed(prefix,
"useMultiHoughSpaceInterceptFinding"),
52 m_useMultiHoughSpaceInterceptFinding,
53 "Use Hough spaces working on a subset of hits (=true), or just one Hough space working on all hits at the same time (=false)?",
54 m_useMultiHoughSpaceInterceptFinding);
57 void SVDHoughTracking::beginEvent()
64 checkResizeClear<const SpacePoint*>(m_spacePointVector, 5000);
65 checkResizeClear<VXDHoughState>(m_vxdHoughStates, 5000);
66 checkResizeClear<std::vector<VXDHoughState*>>(m_rawTrackCandidates, 500);
67 checkResizeClear<SpacePointTrackCand>(m_trackCandidates, 500);
71 void SVDHoughTracking::apply()
73 m_spacePointLoaderAndPreparer.apply(m_spacePointVector, m_vxdHoughStates);
74 B2DEBUG(29,
"m_vxdHoughStates.size(): " << m_vxdHoughStates.size());
76 if (m_useMultiHoughSpaceInterceptFinding) {
77 m_multiHouthSpaceInterceptFinder.apply(m_vxdHoughStates, m_rawTrackCandidates);
79 m_singleHouthSpaceInterceptFinder.apply(m_vxdHoughStates, m_rawTrackCandidates);
81 B2DEBUG(29,
"m_rawTrackCandidates.size: " << m_rawTrackCandidates.size());
83 m_rawTCCleaner.apply(m_rawTrackCandidates, m_trackCandidates);
86 std::sort(m_trackCandidates.begin(), m_trackCandidates.end(),
88 return ((a.getNHits() > b.getNHits()) or
89 (a.getNHits() == b.getNHits() and a.getQualityIndicator() > b.getQualityIndicator()));
92 m_overlapResolver.apply(m_trackCandidates);
94 m_recoTrackStorer.apply(m_trackCandidates, m_spacePointVector);
99 m_roiFinder.apply(m_trackCandidates);
The Module parameter list class.
Storage for (VXD) SpacePoint-based track candidates.
ModuleParam< T > & getParameter(const std::string &name) const
Returns a reference to a parameter.
void addParameter(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.
Abstract base class for different kinds of events.