Main algorithm applying the adjustment of the orientation.
55{
58
59 outputSegments = inputSegments;
60
62 outputSegments.reserve(2 * inputSegments.size());
63 for (const CDCSegment2D& segment : inputSegments) {
64 outputSegments.push_back(segment);
65 if (segment->hasReverseFlag()) continue;
66 outputSegments.back()->setReverseFlag();
67 outputSegments.push_back(segment.reversed());
68 outputSegments.back()->setReverseFlag();
69 }
70
72
73
74 outputSegments.reserve(1.5 * inputSegments.size());
75 for (const CDCSegment2D& segment : inputSegments) {
76 if (segment->hasReverseFlag()) {
77 outputSegments.push_back(segment);
78 continue;
79 }
80 const CDCTrajectory2D& trajectory2D = segment.getTrajectory2D();
81 bool isFitted = trajectory2D.
isFitted();
82 bool isCurler = trajectory2D.
isCurler(1.1);
84
85 bool isLeaver = isFitted and (not isCurler) and isOriginer;
86 if (isLeaver) {
87
88 const CDCRecoHit2D& firstHit = segment.front();
89 const CDCRecoHit2D& lastHit = segment.back();
91 outputSegments.push_back(segment.reversed());
92 } else {
93 outputSegments.push_back(segment);
94 }
95 } else {
96
97 outputSegments.push_back(segment);
98 outputSegments.back()->setReverseFlag();
99 outputSegments.push_back(segment.reversed());
100 outputSegments.back()->setReverseFlag();
101 }
102 }
103
105 outputSegments.reserve(inputSegments.size());
106 for (const CDCSegment2D& segment : inputSegments) {
107 const CDCRecoHit2D& firstHit = segment.front();
108 const CDCRecoHit2D& lastHit = segment.back();
110 outputSegments.push_back(segment.reversed());
111 } else {
112 outputSegments.push_back(segment);
113 }
114 }
116 outputSegments.reserve(inputSegments.size());
117 for (const CDCSegment2D& segment : inputSegments) {
118 const CDCRecoHit2D& firstHit = segment.front();
119 const CDCRecoHit2D& lastHit = segment.back();
121 outputSegments.push_back(segment.reversed());
122 } else {
123 outputSegments.push_back(segment);
124 }
125 }
126
127 } else {
128 B2WARNING("Unexpected 'SegmentOrientation' parameter of segment finder module : '" <<
130 "'. No segments are put out.");
131 }
132}
std::string m_param_segmentOrientationString
Parameter: String that states the desired segment orientation.
EPreferredDirection m_segmentOrientation
Encoded desired segment orientation.
Vector2D getRecoPos2D() const
Getter for the position in the reference plane.
bool isOriginer(double factor=1) const
Checks if the trajectory intersects with the inner radius of the CDC time the given tolerance factor.
bool isCurler(double factor=1) const
Checks if the trajectory leaves the outer radius of the CDC times the given tolerance factor.
bool isFitted() const
Checks if the circle is already set to a valid value.
double cylindricalR() const
Gives the cylindrical radius of the vector. Same as norm()
double y() const
Getter for the y coordinate.