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
 Comparision of track - no particular order has been defined so far, all tracks are equivalent.
 
std::vector< CDCSegment3DsplitIntoSegments () const
 Splits the track into segments.
 
ISuperLayer getStartISuperLayer () const
 Getter for the superlayer id the track starts from.
 
ISuperLayer getEndISuperLayer () const
 Getter for the superlayer id the track ends in.
 
const Vector3DgetStartRecoPos3D () const
 Getter for the position of the first reconstructed hit.
 
const Vector3DgetEndRecoPos3D () 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)
 Concats 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.
 
bool m_hasMatchingSegment = false
 Flag which indicates that the track had a matching segment (can be used for filter decisions)
 
float m_qualityIndicator = NAN
 Multivariate classifier output in [0, 1] correlated with probability that track is good match.
 

Detailed Description

Class representing a sequence of three dimensional reconstructed hits.

Definition at line 41 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 133 of file CDCTrack.cc.

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

◆ CDCTrack() [2/2]

CDCTrack ( const CDCSegment2D segment)
explicit

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

Definition at line 138 of file CDCTrack.cc.

138 :
139 m_startTrajectory3D(segment.getTrajectory2D()),
140 m_endTrajectory3D(segment.getTrajectory2D())
141{
142 if (segment.empty()) return;
143
144 // Adjust the start point
145 const CDCRecoHit2D& startRecoHit2D = segment.front();
146 const CDCRecoHit2D& endRecoHit2D = segment.back();
147
148 Vector3D startPos3D(startRecoHit2D.getRecoPos2D(), 0.0);
149 Vector3D endPos3D(endRecoHit2D.getRecoPos2D(), 0.0);
150
153
154 for (const CDCRecoHit2D& recoHit2D : segment) {
155 const CDCRLWireHit& rlWireHit = recoHit2D.getRLWireHit();
156 Vector3D recoPos3D(recoHit2D.getRecoPos2D(), 0.0);
157 double perpS = m_startTrajectory3D.calcArcLength2D(recoPos3D);
158 push_back(CDCRecoHit3D(rlWireHit, recoPos3D, perpS));
159 }
160
161 // TODO: Maybe enhance the estimation of the z coordinate with the superlayer slopes.
162}
Class representing an oriented hit wire including a hypotheses whether the causing track passes left ...
Definition: CDCRLWireHit.h:41
Class representing a two dimensional reconstructed hit in the central drift chamber.
Definition: CDCRecoHit2D.h:47
Vector2D getRecoPos2D() const
Getter for the position in the reference plane.
Definition: CDCRecoHit2D.h:238
Class representing a three dimensional reconstructed hit.
Definition: CDCRecoHit3D.h:52
CDCTrajectory3D m_startTrajectory3D
Memory for the three dimensional trajectory at the start of the track.
Definition: CDCTrack.h:204
CDCTrajectory3D m_endTrajectory3D
Memory for the three dimensional trajectory at the end of the track.
Definition: CDCTrack.h:207
double calcArcLength2D(const Vector3D &point) const
Calculate the travel distance from the start position of the trajectory.
double setLocalOrigin(const Vector3D &localOrigin)
Setter for the origin of the local coordinate system.
A three dimensional vector.
Definition: Vector3D.h:33

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 263 of file CDCTrack.cc.

264{
265 CDCTrack track;
266
267 //B2DEBUG(200,"Lenght of segmentTripleTrack is " << segmentTripleTrack.size() );
268 if (segmentPairPath.empty()) return track;
269
270 Path<const CDCSegmentPair>::const_iterator itSegmentPair = segmentPairPath.begin();
271 const CDCSegmentPair* firstSegmentPair = *itSegmentPair++;
272
273
274 // Keep the fit of the first segment pair to set it as the fit at the start of the track
275 CDCTrajectory3D startTrajectory3D = firstSegmentPair->getTrajectory3D();
276
277 double perpSOffset = 0.0;
278 appendReconstructed(firstSegmentPair->getFromSegment(),
279 firstSegmentPair->getTrajectory3D(),
280 perpSOffset, track);
281
282 while (itSegmentPair != segmentPairPath.end()) {
283
284 const CDCSegmentPair* secondSegmentPair = *itSegmentPair++;
285
286 B2ASSERT("Two segement pairs do not overlap in their segments",
287 firstSegmentPair->getToSegment() == secondSegmentPair->getFromSegment());
288
289 perpSOffset = appendReconstructedAverage(firstSegmentPair->getToSegment(),
290 firstSegmentPair->getTrajectory3D(),
291 perpSOffset,
292 secondSegmentPair->getTrajectory3D(),
293 track);
294
295 firstSegmentPair = secondSegmentPair;
296 }
297
298 const CDCSegmentPair* lastSegmentPair = firstSegmentPair;
299 appendReconstructed(lastSegmentPair->getToSegment(),
300 lastSegmentPair->getTrajectory3D(),
301 perpSOffset, track);
302
303 // Keep the fit of the last segment pair to set it as the fit at the end of the track
304 CDCTrajectory3D endTrajectory3D = lastSegmentPair->getTrajectory3D();
305
306 // Move the reference point of the start fit to the first observered position
307 double resetPerpSOffset = startTrajectory3D.setLocalOrigin(track.front().getRecoPos3D());
308 track.setStartTrajectory3D(startTrajectory3D);
309
310 // Move the reference point of the end fit to the last observered position
311 endTrajectory3D.setLocalOrigin(track.back().getRecoPos3D());
312 track.setEndTrajectory3D(endTrajectory3D);
313
314 for (CDCRecoHit3D& recoHit3D : track) {
315 recoHit3D.shiftArcLength2D(-resetPerpSOffset);
316 }
317
318 return track;
319}
Implements a path consisting of Module and/or Path objects.
Definition: Path.h:38
Class representing a pair of one reconstructed axial segement and one stereo segment in adjacent supe...
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.
Class representing a sequence of three dimensional reconstructed hits.
Definition: CDCTrack.h:41
Particle full three dimensional trajectory.

◆ 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 197 of file CDCTrack.cc.

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

Concats several tracks from a path.

FIXME : arc lengths are not set properly

Definition at line 164 of file CDCTrack.cc.

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

◆ 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 367 of file CDCTrack.cc.

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

◆ 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 405 of file CDCTrack.cc.

406{
407 for (const CDCRecoHit3D& recoHit3D : *this) {
408 recoHit3D.getWireHit().getAutomatonCell().setTakenFlag(takenFlag);
409 }
410}
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.
Definition: CDCRecoHit3D.h:238
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
Definition: CDCWireHit.h:286

◆ getAutomatonCell()

AutomatonCell & getAutomatonCell ( ) const
inline

Mutable getter for the automaton cell.

Definition at line 125 of file CDCTrack.h.

126 {
127 return m_automatonCell;
128 }
AutomatonCell m_automatonCell
Memory for the automaton cell.
Definition: CDCTrack.h:201

◆ getEndISuperLayer()

ISuperLayer getEndISuperLayer ( ) const
inline

Getter for the superlayer id the track ends in.

Definition at line 79 of file CDCTrack.h.

80 {
81 return back().getISuperLayer();
82 }

◆ getEndRecoPos3D()

const Vector3D & getEndRecoPos3D ( ) const
inline

Getter for the position of the last reconstructed hit.

Definition at line 91 of file CDCTrack.h.

92 {
93 return back().getRecoPos3D();
94 }

◆ 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 119 of file CDCTrack.h.

120 {
121 return m_endTrajectory3D;
122 }

◆ 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 182 of file CDCTrack.h.

183 {
185 }
bool m_hasMatchingSegment
Flag which indicates that the track had a matching segment (can be used for filter decisions)
Definition: CDCTrack.h:210

◆ getQualityIndicator()

float getQualityIndicator ( ) const
inline

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

Definition at line 188 of file CDCTrack.h.

189 {
190 return m_qualityIndicator;
191 }
float m_qualityIndicator
Multivariate classifier output in [0, 1] correlated with probability that track is good match.
Definition: CDCTrack.h:214

◆ getStartISuperLayer()

ISuperLayer getStartISuperLayer ( ) const
inline

Getter for the superlayer id the track starts from.

Definition at line 73 of file CDCTrack.h.

74 {
75 return front().getISuperLayer();
76 }

◆ getStartRecoPos3D()

const Vector3D & getStartRecoPos3D ( ) const
inline

Getter for the position of the first reconstructed hit.

Definition at line 85 of file CDCTrack.h.

86 {
87 return front().getRecoPos3D();
88 }

◆ 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 112 of file CDCTrack.h.

113 {
114 return m_startTrajectory3D;
115 }

◆ operator->()

AutomatonCell * operator-> ( ) const
inline

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

Definition at line 131 of file CDCTrack.h.

132 {
133 return &m_automatonCell;
134 }

◆ operator<()

bool operator< ( const CDCTrack track) const
inline

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

Definition at line 63 of file CDCTrack.h.

64 {
65 return false;
66 }

◆ 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 394 of file CDCTrack.cc.

395{
396 for (const CDCRecoHit3D& recoHit3D : *this) {
397 const CDCWireHit& wireHit = recoHit3D.getWireHit();
398 if (wireHit.getAutomatonCell().hasMaskedFlag()) {
400 return;
401 }
402 }
403}
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:125
Class representing a hit wire in the central drift chamber.
Definition: CDCWireHit.h:55

◆ reverse()

void reverse ( )

Reverse the track inplace.

Definition at line 336 of file CDCTrack.cc.

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

◆ reversed()

CDCTrack reversed ( ) const

Return a reversed copy of the track.

Definition at line 360 of file CDCTrack.cc.

361{
362 CDCTrack reversedTrack(*this);
363 reversedTrack.reverse();
364 return reversedTrack;
365}

◆ 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 385 of file CDCTrack.cc.

386{
388 for (const CDCRecoHit3D& recoHit3D : *this) {
389 const CDCWireHit& wireHit = recoHit3D.getWireHit();
391 }
392}

◆ 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 105 of file CDCTrack.h.

106 {
107 m_endTrajectory3D = endTrajectory3D;
108 }

◆ 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 173 of file CDCTrack.h.

174 {
175 m_hasMatchingSegment = hasMatchingSegment;
176 }

◆ setQualityIndicator()

void setQualityIndicator ( const float  qualityIndicator)
inline

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

Definition at line 194 of file CDCTrack.h.

195 {
196 m_qualityIndicator = qualityIndicator;
197 }

◆ 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 98 of file CDCTrack.h.

99 {
100 m_startTrajectory3D = startTrajectory3D;
101 }

◆ 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 423 of file CDCTrack.cc.

424{
425 const CDCTrajectory2D& startTrajectory2D = getStartTrajectory3D().getTrajectory2D();
426 if (doForAllTracks or startTrajectory2D.isCurler(1.1)) {
427 const double shiftValue = startTrajectory2D.getLocalCircle()->arcLengthPeriod();
428 if (std::isfinite(shiftValue)) {
429 for (CDCRecoHit3D& recoHit : *this) {
430 if (recoHit.getArcLength2D() < 0) {
431 recoHit.shiftArcLength2D(shiftValue);
432 }
433 }
434 }
435 }
436}
void shiftArcLength2D(double arcLength2DOffSet)
Adjust the travel distance by the given value.
Definition: CDCRecoHit3D.h:364
const CDCTrajectory3D & getStartTrajectory3D() const
Getter for the two dimensional trajectory.
Definition: CDCTrack.h:112
Particle trajectory as it is seen in xy projection represented as a circle.
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 cirlce 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 412 of file CDCTrack.cc.

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

◆ splitIntoSegments()

std::vector< CDCSegment3D > splitIntoSegments ( ) const

Splits the track into segments.

Note : No trajectory information is copied

Definition at line 321 of file CDCTrack.cc.

322{
323 vector<CDCSegment3D> result;
324 ISuperLayer lastISuperLayer = -1;
325 for (const CDCRecoHit3D& recoHit3D : *this) {
326 ISuperLayer iSuperLayer = recoHit3D.getISuperLayer();
327 if (result.empty() or lastISuperLayer != iSuperLayer) {
328 result.emplace_back();
329 }
330 result.back().push_back(recoHit3D);
331 lastISuperLayer = iSuperLayer;
332 }
333 return result;
334}
ISuperLayer getISuperLayer() const
Getter for the superlayer id.
Definition: CDCRecoHit3D.h:220

◆ unsetAndForwardMaskedFlag()

void unsetAndForwardMaskedFlag ( ) const

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

Definition at line 376 of file CDCTrack.cc.

377{
379 for (const CDCRecoHit3D& recoHit3D : *this) {
380 const CDCWireHit& wireHit = recoHit3D.getWireHit();
382 }
383}
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 201 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 207 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 214 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 204 of file CDCTrack.h.


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