Belle II Software development
CDCTrack Class Reference

Class representing a sequence of three dimensional reconstructed hits. More...

#include <CDCTrack.h>

Inheritance diagram for CDCTrack:

Public Member Functions

 CDCTrack ()=default
 Default constructor for ROOT compatibility.
 
 CDCTrack (const std::vector< CDCRecoHit3D > &recoHits3D)
 Constructor from a series of hits.
 
 CDCTrack (const CDCSegment2D &segment)
 Constructor from a two dimensional segment filling the third dimension with 0 values.
 
bool operator< (const CDCTrack &track) const
 Comparison of track - no particular order has been defined so far, all tracks are equivalent.
 
std::vector< CDCSegment3DsplitIntoSegments () const
 Splits the track into segments.
 
CDC::ISuperLayer getStartISuperLayer () const
 Getter for the superlayer id the track starts from.
 
CDC::ISuperLayer getEndISuperLayer () const
 Getter for the superlayer id the track ends in.
 
const ROOT::Math::XYZVector & getStartRecoPos3D () const
 Getter for the position of the first reconstructed hit.
 
const ROOT::Math::XYZVector & getEndRecoPos3D () const
 Getter for the position of the last reconstructed hit.
 
void setStartTrajectory3D (const CDCTrajectory3D &startTrajectory3D)
 Setter for the two dimensional trajectory.
 
void setEndTrajectory3D (const CDCTrajectory3D &endTrajectory3D)
 Setter for the three dimensional trajectory.
 
const CDCTrajectory3DgetStartTrajectory3D () const
 Getter for the two dimensional trajectory.
 
const CDCTrajectory3DgetEndTrajectory3D () const
 Getter for the three dimensional trajectory.
 
AutomatonCellgetAutomatonCell () const
 Mutable getter for the automaton cell.
 
AutomatonCelloperator-> () const
 Indirection to the automaton cell for easier access to the flags.
 
void unsetAndForwardMaskedFlag () const
 Unset the masked flag of the automaton cell of this segment and of all contained wire hits.
 
void setAndForwardMaskedFlag () const
 Set the masked flag of the automaton cell of this segment and forward the masked flag to all contained wire hits.
 
void receiveMaskedFlag () const
 Check all contained wire hits if one has the masked flag.
 
void forwardTakenFlag (bool takenFlag=true) const
 Set the taken flag of all hits belonging to this track to the given value (default true), but do not touch the flag of the track itself.
 
void sortByArcLength2D ()
 Sort the recoHits according to their perpS information.
 
void shiftToPositiveArcLengths2D (bool doForAllTracks=false)
 Set all arcLengths to have positive values by shifting them by pi*radius if they are negative.
 
void reverse ()
 Reverse the track inplace.
 
CDCTrack reversed () const
 Return a reversed copy of the track.
 
MayBePtr< const CDCRecoHit3Dfind (const CDCWireHit &wireHit) const
 Finds the first CDCRecoHit3D that is based on the given wire hit - nullptr if none.
 
void setHasMatchingSegment (bool hasMatchingSegment=true)
 Set the flag which indicates that the track has a matching segment (probably only used in the SegmentTrackCombiner).
 
bool getHasMatchingSegment () const
 Get a flag which indicates that the track has a matching segment (probably set in the SegmentTrackCombiner).
 
float getQualityIndicator () const
 Get the multivariate quality indicator in [0, 1] attached the CDCTrack.
 
void setQualityIndicator (const float qualityIndicator)
 Set the multivariate quality indicator in [0, 1] attached the CDCTrack.
 

Static Public Member Functions

static CDCTrack condense (const Path< const CDCTrack > &trackPath)
 concatenates several tracks from a path
 
static CDCTrack condense (const Path< const CDCSegmentTriple > &segmentTriplePath)
 Reconstructs the hit content of the segment triple track to a CDCTrack averaging overlapping parts.
 
static CDCTrack condense (const Path< const CDCSegmentPair > &segmentPairPath)
 Reconstructs the hit content of the axial stereo segment pair path to a CDCTrack averaging overlapping parts.
 

Public Attributes

elements
 STL member.
 

Private Attributes

AutomatonCell m_automatonCell
 Memory for the automaton cell.
 
CDCTrajectory3D m_startTrajectory3D
 Memory for the three dimensional trajectory at the start of the track.
 
CDCTrajectory3D m_endTrajectory3D
 Memory for the three dimensional trajectory at the end of the track.
 
float m_qualityIndicator = NAN
 Multivariate classifier output in [0, 1] correlated with probability that track is good match.
 
bool m_hasMatchingSegment = false
 Flag which indicates that the track had a matching segment (can be used for filter decisions)
 

Detailed Description

Class representing a sequence of three dimensional reconstructed hits.

Definition at line 37 of file CDCTrack.h.

Constructor & Destructor Documentation

◆ CDCTrack() [1/2]

CDCTrack ( const std::vector< CDCRecoHit3D > & recoHits3D)
explicit

Constructor from a series of hits.

Definition at line 132 of file CDCTrack.cc.

133 : std::vector<CDCRecoHit3D>(recoHits3D)
134{
135}

◆ CDCTrack() [2/2]

CDCTrack ( const CDCSegment2D & segment)
explicit

Constructor from a two dimensional segment filling the third dimension with 0 values.

Definition at line 137 of file CDCTrack.cc.

137 :
138 m_startTrajectory3D(segment.getTrajectory2D()),
139 m_endTrajectory3D(segment.getTrajectory2D())
140{
141 if (segment.empty()) return;
142
143 // Adjust the start point
144 const CDCRecoHit2D& startRecoHit2D = segment.front();
145 const CDCRecoHit2D& endRecoHit2D = segment.back();
146
147 const auto& tmpStart = startRecoHit2D.getRecoPos2D();
148 const auto& tmpEnd = endRecoHit2D.getRecoPos2D();
149 ROOT::Math::XYZVector startPos3D(tmpStart.X(), tmpStart.Y(), 0.0);
150 ROOT::Math::XYZVector endPos3D(tmpEnd.X(), tmpEnd.Y(), 0.0);
151
152 m_startTrajectory3D.setLocalOrigin(startPos3D);
153 m_endTrajectory3D.setLocalOrigin(endPos3D);
154
155 for (const CDCRecoHit2D& recoHit2D : segment) {
156 const CDCRLWireHit& rlWireHit = recoHit2D.getRLWireHit();
157 const auto& tmp = recoHit2D.getRecoPos2D();
158 ROOT::Math::XYZVector recoPos3D(tmp.X(), tmp.Y(), 0.0);
159 double perpS = m_startTrajectory3D.calcArcLength2D(recoPos3D);
160 push_back(CDCRecoHit3D(rlWireHit, recoPos3D, perpS));
161 }
162
163 // TODO: Maybe enhance the estimation of the z coordinate with the superlayer slopes.
164}
ROOT::Math::XYVector getRecoPos2D() const
Getter for the position in the reference plane.
CDCTrajectory3D m_startTrajectory3D
Memory for the three dimensional trajectory at the start of the track.
Definition CDCTrack.h:200
CDCTrajectory3D m_endTrajectory3D
Memory for the three dimensional trajectory at the end of the track.
Definition CDCTrack.h:203

Member Function Documentation

◆ condense() [1/3]

CDCTrack condense ( const Path< const CDCSegmentPair > & segmentPairPath)
static

Reconstructs the hit content of the axial stereo segment pair path to a CDCTrack averaging overlapping parts.

Definition at line 265 of file CDCTrack.cc.

266{
267 CDCTrack track;
268
269 //B2DEBUG(200,"Length of segmentTripleTrack is " << segmentTripleTrack.size() );
270 if (segmentPairPath.empty()) return track;
271
272 Path<const CDCSegmentPair>::const_iterator itSegmentPair = segmentPairPath.begin();
273 const CDCSegmentPair* firstSegmentPair = *itSegmentPair++;
274
275
276 // Keep the fit of the first segment pair to set it as the fit at the start of the track
277 CDCTrajectory3D startTrajectory3D = firstSegmentPair->getTrajectory3D();
278
279 double perpSOffset = 0.0;
280 appendReconstructed(firstSegmentPair->getFromSegment(),
281 firstSegmentPair->getTrajectory3D(),
282 perpSOffset, track);
283
284 while (itSegmentPair != segmentPairPath.end()) {
285
286 const CDCSegmentPair* secondSegmentPair = *itSegmentPair++;
287
288 B2ASSERT("Two segment pairs do not overlap in their segments",
289 firstSegmentPair->getToSegment() == secondSegmentPair->getFromSegment());
290
291 perpSOffset = appendReconstructedAverage(firstSegmentPair->getToSegment(),
292 firstSegmentPair->getTrajectory3D(),
293 perpSOffset,
294 secondSegmentPair->getTrajectory3D(),
295 track);
296
297 firstSegmentPair = secondSegmentPair;
298 }
299
300 const CDCSegmentPair* lastSegmentPair = firstSegmentPair;
301 appendReconstructed(lastSegmentPair->getToSegment(),
302 lastSegmentPair->getTrajectory3D(),
303 perpSOffset, track);
304
305 // Keep the fit of the last segment pair to set it as the fit at the end of the track
306 CDCTrajectory3D endTrajectory3D = lastSegmentPair->getTrajectory3D();
307
308 // Move the reference point of the start fit to the first observed position
309 double resetPerpSOffset = startTrajectory3D.setLocalOrigin(track.front().getRecoPos3D());
310 track.setStartTrajectory3D(startTrajectory3D);
311
312 // Move the reference point of the end fit to the last observed position
313 endTrajectory3D.setLocalOrigin(track.back().getRecoPos3D());
314 track.setEndTrajectory3D(endTrajectory3D);
315
316 for (CDCRecoHit3D& recoHit3D : track) {
317 recoHit3D.shiftArcLength2D(-resetPerpSOffset);
318 }
319
320 return track;
321}
const CDCSegment2D * getToSegment() const
Getter for the to segment.
CDCTrajectory3D & getTrajectory3D() const
Getter for the three dimensional trajectory.
const CDCSegment2D * getFromSegment() const
Getter for the from segment.
CDCTrack()=default
Default constructor for ROOT compatibility.
double setLocalOrigin(const ROOT::Math::XYZVector &localOrigin)
Setter for the origin of the local coordinate system.

◆ condense() [2/3]

CDCTrack condense ( const Path< const CDCSegmentTriple > & segmentTriplePath)
static

Reconstructs the hit content of the segment triple track to a CDCTrack averaging overlapping parts.

Definition at line 199 of file CDCTrack.cc.

200{
201 CDCTrack track;
202 // B2DEBUG(200,"Length of segmentTripleTrack is " << segmentTripleTrack.size() );
203 if (segmentTriplePath.empty()) return track;
204
205 Path<const CDCSegmentTriple>::const_iterator itSegmentTriple = segmentTriplePath.begin();
206 const CDCSegmentTriple* firstSegmentTriple = *itSegmentTriple++;
207
208 // Set the start fits of the track to the ones of the first segment
209 CDCTrajectory3D startTrajectory3D = firstSegmentTriple->getTrajectory3D();
210
211
212 double perpSOffset = 0.0;
213 appendReconstructed(firstSegmentTriple->getStartSegment(),
214 firstSegmentTriple->getTrajectory3D(),
215 perpSOffset,
216 track);
217
218 appendReconstructed(firstSegmentTriple->getMiddleSegment(),
219 firstSegmentTriple->getTrajectory3D(),
220 perpSOffset, track);
221
222 while (itSegmentTriple != segmentTriplePath.end()) {
223
224 const CDCSegmentTriple* secondSegmentTriple = *itSegmentTriple++;
225 B2ASSERT("Two segment triples do not overlap in their axial segments",
226 firstSegmentTriple->getEndSegment() == secondSegmentTriple->getStartSegment());
227
228 perpSOffset = appendReconstructedAverage(firstSegmentTriple->getEndSegment(),
229 firstSegmentTriple->getTrajectory3D(),
230 perpSOffset,
231 secondSegmentTriple->getTrajectory3D(),
232 track);
233
234 appendReconstructed(secondSegmentTriple->getMiddleSegment(),
235 secondSegmentTriple->getTrajectory3D(),
236 perpSOffset, track);
237
238 firstSegmentTriple = secondSegmentTriple;
239
240 }
241
242 const CDCSegmentTriple* lastSegmentTriple = firstSegmentTriple;
243
244 appendReconstructed(lastSegmentTriple->getEndSegment(),
245 lastSegmentTriple->getTrajectory3D(),
246 perpSOffset, track);
247
248 // Set the end fits of the track to the ones of the last segment
249 CDCTrajectory3D endTrajectory3D = lastSegmentTriple->getTrajectory3D();
250
251 // Set the reference point on the trajectories to the last reconstructed hit
252 double resetPerpSOffset = startTrajectory3D.setLocalOrigin(track.front().getRecoPos3D());
253 track.setStartTrajectory3D(startTrajectory3D);
254
255 endTrajectory3D.setLocalOrigin(track.back().getRecoPos3D());
256 track.setEndTrajectory3D(endTrajectory3D);
257
258 for (CDCRecoHit3D& recoHit3D : track) {
259 recoHit3D.shiftArcLength2D(-resetPerpSOffset);
260 }
261
262 return track;
263}
const CDCStereoSegment2D * getMiddleSegment() const
Getter for the middle stereo segment.
const CDCAxialSegment2D * getEndSegment() const
Getter for the end axial segment.
const CDCTrajectory3D & getTrajectory3D() const
Getter for the three dimensional helix trajectory.
const CDCAxialSegment2D * getStartSegment() const
Getter for the start axial segment.

◆ condense() [3/3]

CDCTrack condense ( const Path< const CDCTrack > & trackPath)
static

concatenates several tracks from a path

FIXME : arc lengths are not set properly

Definition at line 166 of file CDCTrack.cc.

167{
168 if (trackPath.empty()) {
169 return CDCTrack();
170 } else if (trackPath.size() == 1) {
171 return CDCTrack(*(trackPath[0]));
172 } else {
173 CDCTrack result;
174 for (const CDCTrack* track : trackPath) {
175 for (const CDCRecoHit3D& recoHit3D : *track) {
176 result.push_back(recoHit3D);
178 }
179 }
180
181 CDCTrajectory3D startTrajectory3D = trackPath.front()->getStartTrajectory3D();
182 CDCTrajectory3D endTrajectory3D = trackPath.back()->getStartTrajectory3D();
183
184 double resetPerpSOffset =
185 startTrajectory3D.setLocalOrigin(result.front().getRecoPos3D());
186 result.setStartTrajectory3D(startTrajectory3D);
187
188 endTrajectory3D.setLocalOrigin(result.back().getRecoPos3D());
189 result.setEndTrajectory3D(endTrajectory3D);
190
191 for (CDCRecoHit3D& recoHit3D : result) {
192 recoHit3D.shiftArcLength2D(-resetPerpSOffset);
193 }
194
195 return result;
196 }
197}

◆ find()

MayBePtr< const CDCRecoHit3D > find ( const CDCWireHit & wireHit) const

Finds the first CDCRecoHit3D that is based on the given wire hit - nullptr if none.

Definition at line 369 of file CDCTrack.cc.

370{
371 auto hasWireHit = [&wireHit](const CDCRecoHit3D & recoHit3D) {
372 return recoHit3D.hasWireHit(wireHit);
373 };
374 auto itRecoHit3D = std::find_if(this->begin(), this->end(), hasWireHit);
375 return itRecoHit3D == this->end() ? nullptr : &*itRecoHit3D;
376}

◆ forwardTakenFlag()

void forwardTakenFlag ( bool takenFlag = true) const

Set the taken flag of all hits belonging to this track to the given value (default true), but do not touch the flag of the track itself.

Definition at line 407 of file CDCTrack.cc.

408{
409 for (const CDCRecoHit3D& recoHit3D : *this) {
410 recoHit3D.getWireHit().getAutomatonCell().setTakenFlag(takenFlag);
411 }
412}
void setTakenFlag(bool setTo=true)
Sets the taken flag to the given value. Default value true.
const CDCWireHit & getWireHit() const
Getter for the wire hit.
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
Definition CDCWireHit.h:287

◆ getAutomatonCell()

AutomatonCell & getAutomatonCell ( ) const
inline

Mutable getter for the automaton cell.

Definition at line 121 of file CDCTrack.h.

122 {
123 return m_automatonCell;
124 }

◆ getEndISuperLayer()

CDC::ISuperLayer getEndISuperLayer ( ) const
inline

Getter for the superlayer id the track ends in.

Definition at line 75 of file CDCTrack.h.

76 {
77 return back().getISuperLayer();
78 }

◆ getEndRecoPos3D()

const ROOT::Math::XYZVector & getEndRecoPos3D ( ) const
inline

Getter for the position of the last reconstructed hit.

Definition at line 87 of file CDCTrack.h.

88 {
89 return back().getRecoPos3D();
90 }

◆ getEndTrajectory3D()

const CDCTrajectory3D & getEndTrajectory3D ( ) const
inline

Getter for the three dimensional trajectory.

The trajectory should start at the END of the track and follow its direction.

Definition at line 115 of file CDCTrack.h.

116 {
117 return m_endTrajectory3D;
118 }

◆ getHasMatchingSegment()

bool getHasMatchingSegment ( ) const
inline

Get a flag which indicates that the track has a matching segment (probably set in the SegmentTrackCombiner).

This flag can be used for filter decisions (e.g. if the track is fake).

Definition at line 178 of file CDCTrack.h.

179 {
180 return m_hasMatchingSegment;
181 }

◆ getQualityIndicator()

float getQualityIndicator ( ) const
inline

Get the multivariate quality indicator in [0, 1] attached the CDCTrack.

Definition at line 184 of file CDCTrack.h.

185 {
186 return m_qualityIndicator;
187 }

◆ getStartISuperLayer()

CDC::ISuperLayer getStartISuperLayer ( ) const
inline

Getter for the superlayer id the track starts from.

Definition at line 69 of file CDCTrack.h.

70 {
71 return front().getISuperLayer();
72 }

◆ getStartRecoPos3D()

const ROOT::Math::XYZVector & getStartRecoPos3D ( ) const
inline

Getter for the position of the first reconstructed hit.

Definition at line 81 of file CDCTrack.h.

82 {
83 return front().getRecoPos3D();
84 }

◆ getStartTrajectory3D()

const CDCTrajectory3D & getStartTrajectory3D ( ) const
inline

Getter for the two dimensional trajectory.

The trajectory should start at the start of the track and follow its direction.

Definition at line 108 of file CDCTrack.h.

109 {
110 return m_startTrajectory3D;
111 }

◆ operator->()

AutomatonCell * operator-> ( ) const
inline

Indirection to the automaton cell for easier access to the flags.

Definition at line 127 of file CDCTrack.h.

128 {
129 return &m_automatonCell;
130 }

◆ operator<()

bool operator< ( const CDCTrack & track) const
inline

Comparison of track - no particular order has been defined so far, all tracks are equivalent.

Definition at line 59 of file CDCTrack.h.

60 {
61 return false;
62 }

◆ receiveMaskedFlag()

void receiveMaskedFlag ( ) const

Check all contained wire hits if one has the masked flag.

Set the masked flag of this segment in case at least one of the contained wire hits is flagged as masked.

Definition at line 396 of file CDCTrack.cc.

397{
398 for (const CDCRecoHit3D& recoHit3D : *this) {
399 const CDCWireHit& wireHit = recoHit3D.getWireHit();
400 if (wireHit.getAutomatonCell().hasMaskedFlag()) {
402 return;
403 }
404 }
405}
void setMaskedFlag(bool setTo=true)
Sets the masked flag to the given value. Default value true.
bool hasMaskedFlag() const
Gets the current state of the masked marker flag.
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
Definition CDCTrack.h:121

◆ reverse()

void reverse ( )

Reverse the track inplace.

Definition at line 338 of file CDCTrack.cc.

339{
340 if (empty()) return;
341
342 // Exchange the forward and backward trajectory and reverse them
344 m_startTrajectory3D.reverse();
345 m_endTrajectory3D.reverse();
346
347 const CDCRecoHit3D& lastRecoHit3D = back();
348 double lastPerpS = lastRecoHit3D.getArcLength2D();
349 double newLastPerpS = m_startTrajectory3D.calcArcLength2D(lastRecoHit3D.getRecoPos3D());
350
351 // Reverse the left right passage hypotheses and reverse the measured travel distance
352 for (CDCRecoHit3D& recoHit3D : *this) {
353 recoHit3D.reverse();
354 double perpS = recoHit3D.getArcLength2D();
355 recoHit3D.setArcLength2D(newLastPerpS + lastPerpS - perpS);
356 }
357
358 // Reverse the arrangement of hits.
359 std::reverse(begin(), end());
360}
const ROOT::Math::XYZVector & getRecoPos3D() const
Getter for the 3d position of the hit.
void reverse()
Turns the orientation in place.
double getArcLength2D() const
Getter for the travel distance in the xy projection.
void setArcLength2D(const double arcLength2D)
Setter for the travel distance in the xy projection.

◆ reversed()

CDCTrack reversed ( ) const

Return a reversed copy of the track.

Definition at line 362 of file CDCTrack.cc.

363{
364 CDCTrack reversedTrack(*this);
365 reversedTrack.reverse();
366 return reversedTrack;
367}

◆ setAndForwardMaskedFlag()

void setAndForwardMaskedFlag ( ) const

Set the masked flag of the automaton cell of this segment and forward the masked flag to all contained wire hits.

Definition at line 387 of file CDCTrack.cc.

388{
390 for (const CDCRecoHit3D& recoHit3D : *this) {
391 const CDCWireHit& wireHit = recoHit3D.getWireHit();
393 }
394}

◆ setEndTrajectory3D()

void setEndTrajectory3D ( const CDCTrajectory3D & endTrajectory3D)
inline

Setter for the three dimensional trajectory.

The trajectory should start at the END of the track and follow its direction.

Definition at line 101 of file CDCTrack.h.

102 {
103 m_endTrajectory3D = endTrajectory3D;
104 }

◆ setHasMatchingSegment()

void setHasMatchingSegment ( bool hasMatchingSegment = true)
inline

Set the flag which indicates that the track has a matching segment (probably only used in the SegmentTrackCombiner).

Definition at line 169 of file CDCTrack.h.

170 {
171 m_hasMatchingSegment = hasMatchingSegment;
172 }

◆ setQualityIndicator()

void setQualityIndicator ( const float qualityIndicator)
inline

Set the multivariate quality indicator in [0, 1] attached the CDCTrack.

Definition at line 190 of file CDCTrack.h.

191 {
192 m_qualityIndicator = qualityIndicator;
193 }

◆ setStartTrajectory3D()

void setStartTrajectory3D ( const CDCTrajectory3D & startTrajectory3D)
inline

Setter for the two dimensional trajectory.

The trajectory should start at the start of the track and follow its direction.

Definition at line 94 of file CDCTrack.h.

95 {
96 m_startTrajectory3D = startTrajectory3D;
97 }

◆ shiftToPositiveArcLengths2D()

void shiftToPositiveArcLengths2D ( bool doForAllTracks = false)

Set all arcLengths to have positive values by shifting them by pi*radius if they are negative.

This can only be done if the radius is not infinity (for example cosmics). The flag can be used to do this for all tracks (default is to do this only for curlers)

Definition at line 425 of file CDCTrack.cc.

426{
427 const CDCTrajectory2D& startTrajectory2D = getStartTrajectory3D().getTrajectory2D();
428 if (doForAllTracks or startTrajectory2D.isCurler(1.1)) {
429 const double shiftValue = startTrajectory2D.getLocalCircle()->arcLengthPeriod();
430 if (std::isfinite(shiftValue)) {
431 for (CDCRecoHit3D& recoHit : *this) {
432 if (recoHit.getArcLength2D() < 0) {
433 recoHit.shiftArcLength2D(shiftValue);
434 }
435 }
436 }
437 }
438}
void shiftArcLength2D(double arcLength2DOffSet)
Adjust the travel distance by the given value.
const CDCTrajectory3D & getStartTrajectory3D() const
Getter for the two dimensional trajectory.
Definition CDCTrack.h:108
bool isCurler(double factor=1) const
Checks if the trajectory leaves the outer radius of the CDC times the given tolerance factor.
const UncertainPerigeeCircle & getLocalCircle() const
Getter for the circle in local coordinates.
CDCTrajectory2D getTrajectory2D() const
Getter for the two dimensional trajectory.
double arcLengthPeriod() const
Getter for the arc length for a full round of the circle.

◆ sortByArcLength2D()

void sortByArcLength2D ( )

Sort the recoHits according to their perpS information.

Definition at line 414 of file CDCTrack.cc.

415{
416 std::stable_sort(begin(),
417 end(),
418 [](const CDCRecoHit3D & recoHit, const CDCRecoHit3D & otherRecoHit) {
419 double arcLength = recoHit.getArcLength2D();
420 double otherArcLength = otherRecoHit.getArcLength2D();
421 return lessFloatHighNaN(arcLength, otherArcLength);
422 });
423}

◆ splitIntoSegments()

std::vector< CDCSegment3D > splitIntoSegments ( ) const

Splits the track into segments.

Note : No trajectory information is copied

Definition at line 323 of file CDCTrack.cc.

324{
325 vector<CDCSegment3D> result;
326 ISuperLayer lastISuperLayer = -1;
327 for (const CDCRecoHit3D& recoHit3D : *this) {
328 ISuperLayer iSuperLayer = recoHit3D.getISuperLayer();
329 if (result.empty() or lastISuperLayer != iSuperLayer) {
330 result.emplace_back();
331 }
332 result.back().push_back(recoHit3D);
333 lastISuperLayer = iSuperLayer;
334 }
335 return result;
336}
CDC::ISuperLayer getISuperLayer() const
Getter for the superlayer id.
signed short ISuperLayer
The type of the layer and superlayer ids.
Definition ISuperLayer.h:24

◆ unsetAndForwardMaskedFlag()

void unsetAndForwardMaskedFlag ( ) const

Unset the masked flag of the automaton cell of this segment and of all contained wire hits.

Definition at line 378 of file CDCTrack.cc.

379{
381 for (const CDCRecoHit3D& recoHit3D : *this) {
382 const CDCWireHit& wireHit = recoHit3D.getWireHit();
384 }
385}
void unsetMaskedFlag()
Resets the masked flag to false.

Member Data Documentation

◆ m_automatonCell

AutomatonCell m_automatonCell
mutableprivate

Memory for the automaton cell.

Definition at line 197 of file CDCTrack.h.

◆ m_endTrajectory3D

CDCTrajectory3D m_endTrajectory3D
private

Memory for the three dimensional trajectory at the end of the track.

Definition at line 203 of file CDCTrack.h.

◆ m_hasMatchingSegment

bool m_hasMatchingSegment = false
private

Flag which indicates that the track had a matching segment (can be used for filter decisions)

Definition at line 210 of file CDCTrack.h.

◆ m_qualityIndicator

float m_qualityIndicator = NAN
private

Multivariate classifier output in [0, 1] correlated with probability that track is good match.

Used to reject fakes and clones. Implemented here to be forwarded to RecoTrack.

Definition at line 207 of file CDCTrack.h.

◆ m_startTrajectory3D

CDCTrajectory3D m_startTrajectory3D
private

Memory for the three dimensional trajectory at the start of the track.

Definition at line 200 of file CDCTrack.h.


The documentation for this class was generated from the following files: