10 #include <tracking/trackFindingCDC/findlets/minimal/TrackOrienter.h>
12 #include <tracking/trackFindingCDC/eventdata/tracks/CDCTrack.h>
13 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
15 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
17 #include <framework/core/ModuleParamList.templateDetails.h>
18 #include <framework/logging/Logger.h>
21 using namespace TrackFindingCDC;
25 return "Fixes the flight direction of tracks to a preferred orientation by simple heuristics.";
30 moduleParamList->
addParameter(prefixed(prefix,
"TrackOrientation"),
32 "Option which orientation of tracks shall be generate. "
33 "Valid options are '' (default of the finder), "
34 "'none' (one orientation, algorithm dependent), "
48 }
catch (std::invalid_argument& e) {
55 std::vector<CDCTrack>& outputTracks)
60 outputTracks = inputTracks;
63 outputTracks.reserve(2 * inputTracks.size());
64 for (
const CDCTrack& track : inputTracks) {
65 outputTracks.push_back(track.reversed());
66 outputTracks.push_back(track);
72 outputTracks.reserve(1.5 * inputTracks.size());
73 for (
const CDCTrack& track : inputTracks) {
74 const CDCTrajectory3D& startTrajectory3D = track.getStartTrajectory3D();
80 bool isStartLeaver = (not endTrajectory2D.
isCurler(1.1)) and startTrajectory2D.
isOriginer();
81 bool isEndLeaver = (not startTrajectory2D.
isCurler(1.1)) and endTrajectory2D.
isOriginer();
83 bool isLeaver = isFitted and (isStartLeaver or isEndLeaver);
89 outputTracks.push_back(track.reversed());
91 outputTracks.push_back(track);
95 outputTracks.push_back(track);
96 outputTracks.push_back(track.reversed());
101 outputTracks.reserve(inputTracks.size());
102 for (
const CDCTrack& track : inputTracks) {
106 outputTracks.push_back(track.reversed());
108 outputTracks.push_back(track);
113 outputTracks.reserve(inputTracks.size());
114 for (
const CDCTrack& track : inputTracks) {
118 outputTracks.push_back(track.reversed());
120 outputTracks.push_back(track);
125 B2WARNING(
"Unexpected 'TrackOrientation' parameter of track finder module : '" <<
127 "'. No tracks are put out.");