11 #include <tracking/trackFindingCDC/findlets/minimal/AxialTrackCreatorHitLegendre.h>
13 #include <tracking/trackFindingCDC/legendre/quadtree/OffOriginExtension.h>
15 #include <tracking/trackFindingCDC/eventdata/tracks/CDCTrack.h>
16 #include <tracking/trackFindingCDC/eventdata/hits/CDCWireHit.h>
18 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
20 #include <framework/core/ModuleParamList.templateDetails.h>
23 using namespace TrackFindingCDC;
35 XYSpans xySpans({{0, maxTheta}, { -0.02, 0.14}});
38 return std::make_unique<AxialHitQuadTreeProcessor>(maxLevel, seedLevel, xySpans, precisionFunction);
43 XYSpans xySpans({{0, maxTheta}, { -0.02, 0.14}});
46 return std::make_unique<AxialHitQuadTreeProcessor>(maxLevel, seedLevel, xySpans, precisionFunction);
51 XYSpans xySpans({{0, maxTheta}, {0.00, 0.30}});
54 return std::make_unique<AxialHitQuadTreeProcessor>(maxLevel, seedLevel, xySpans, precisionFunction);
59 XYSpans xySpans({{0, maxTheta}, { -0.02, 0.02}});
61 PrecisionFunction precisionFunction = [
this](
double curv __attribute__((unused))) {
return m_param_precision ;};
63 return std::make_unique<AxialHitQuadTreeProcessor>(maxLevel, seedLevel, xySpans, precisionFunction);
66 B2FATAL(
"Invalid pass");
79 return "Generates axial tracks from hits using several increasingly relaxed legendre space search over phi0 and curvature.";
83 const std::string& prefix)
85 moduleParamList->
addParameter(prefixed(prefix,
"minNHits"),
87 "Parameter to define minimal threshold of number of hits.",
90 moduleParamList->
addParameter(prefixed(prefix,
"precision"),
92 "Parameter to define precision of quadtree search.",
103 std::vector<CDCTrack>& tracks)
107 std::vector<const CDCWireHit*> unusedAxialWireHits;
108 for (
const CDCWireHit* wireHit : axialWireHits) {
109 (*wireHit)->setMaskedFlag(
false);
110 if ((*wireHit)->hasTakenFlag())
continue;
111 unusedAxialWireHits.push_back(wireHit);
116 qtProcessor->seed(unusedAxialWireHits);
120 std::unique_ptr<BaseCandidateReceiver> receiver;
122 receiver = std::make_unique<OffOriginExtension>(unusedAxialWireHits);
124 receiver = std::make_unique<BaseCandidateReceiver>(unusedAxialWireHits);
130 const std::vector<CDCTrack>& newTracks = receiver->getTracks();
131 tracks.insert(tracks.end(), newTracks.begin(), newTracks.end());
138 const double rCDC = 113.;
141 const double curlCurv = 2. / rCDC;
144 qtProcessor.
fill(candidateReceiver, 50, curlCurv);
147 qtProcessor.
fill(candidateReceiver, 70, 2 * curlCurv);
153 qtProcessor.
fill(candidateReceiver, minNHits, maxCurv);
159 if (maxCurv > 0.15) maxCurv = 0.15;