Belle II Software development
CDCFitter2D< AFitMethod > Class Template Reference

Class implementing a fit for two dimensional trajectory circle using a generic fitting backend. More...

#include <CDCFitter2D.h>

Inheritance diagram for CDCFitter2D< AFitMethod >:

Public Member Functions

 CDCFitter2D ()
 Default constructor.
 
 ~CDCFitter2D ()
 Default destructor.
 
TrackingUtilities::CDCTrajectory2D fit (const CDCObservations2D &observations2D) const
 Fits a collection of observation drift circles.
 
TrackingUtilities::CDCTrajectory2D fit (CDCObservations2D &&observations2D) const
 Fits a collection of observation drift circles.
 
void update (TrackingUtilities::CDCTrajectory2D &trajectory2D, const CDCObservations2D &observations2D) const
 Update the trajectory with a fit to the observations.
 
void update (TrackingUtilities::CDCTrajectory2D &trajectory2D, CDCObservations2D &&observations2D) const
 Update the trajectory with a fit to the observations.
 
TrackingUtilities::CDCTrajectory2D fit (const TrackingUtilities::CDCTrack &track) const
 Fits the track.
 
TrackingUtilities::CDCTrajectory2D fit (const TrackingUtilities::CDCSegment3D &segment) const
 Fits the segment.
 
TrackingUtilities::CDCTrajectory2D fit (const TrackingUtilities::CDCSegment2D &fromSegment, const TrackingUtilities::CDCSegment2D &toSegment) const
 Fits to the two segments.
 
TrackingUtilities::CDCTrajectory2D fit (const TrackingUtilities::CDCSegment2D &segment) const
 Fits the segment.
 
TrackingUtilities::CDCTrajectory2D fit (const std::vector< const TrackingUtilities::CDCWireHit * > &wireHit) const
 Fits to the wire hit observations.
 
TrackingUtilities::CDCTrajectory2D fit (const std::vector< const CDC::CDCWire * > &wires) const
 Fits to the wire positions. Explicit specialisation to be used from python.
 
TrackingUtilities::CDCTrajectory2D fit (const TrackingUtilities::CDCWireHitSegment &wireHits) const
 Fits to the wire positions. Explicit specialisation to be used from python.
 
void update (TrackingUtilities::CDCTrajectory2D &trajectory2D, const TrackingUtilities::CDCSegment2D &segment) const
 Updates the given trajectory inplace from the given segment.
 
void update (TrackingUtilities::CDCTrajectory2D &trajectory2D, const TrackingUtilities::CDCAxialSegmentPair &axialSegmentPair) const
 Updates the given trajectory inplace from the given segment pair.
 
void useOnlyPosition ()
 Setup the fitter to use only the reconstructed positions of the hits.
 
void useOnlyOrientation ()
 Setup the fitter to use only reference position and the drift length with right left orientation.
 
void usePositionAndOrientation ()
 Setup the fitter to use both the reconstructed position and the reference position and the drift length with right left orientation.
 
void setFitVariance (EFitVariance fitVariance)
 Setup the fitter to use the given variance measure by default.
 

Private Member Functions

template<class AHits>
TrackingUtilities::CDCTrajectory2D fitGeneric (const AHits &hits) const
 Fits a collection of hit typs which are convertible to observation circles.
 
template<class AStartHits, class AEndHits>
TrackingUtilities::CDCTrajectory2D fitGeneric (const AStartHits &startHits, const AEndHits &endHits) const
 Fits together two collections of hit types which are convertible to observation circles.
 
template<class AHits>
void updateGeneric (TrackingUtilities::CDCTrajectory2D &trajectory2D, const AHits &hits) const
 Updates a given trajectory with a fit to a collection of hits types, which are convertible to observation circles.
 
template<class AStartHits, class AEndHits>
void updateGeneric (TrackingUtilities::CDCTrajectory2D &trajectory2D, const AStartHits &startHits, const AEndHits &endHits) const
 Updates a given trajectory with a fit to two collection of hit types, which are convertible to observation circles.
 

Private Attributes

bool m_usePosition = true
 Flag indicating the reconstructed position shall be used in the fit.
 
bool m_useOrientation = false
 Flag indicating the reference position and drift length with right left orientation shall be used in the fit.
 
EFitVariance m_fitVariance = EFitVariance::c_Proper
 Default variance to be used in the fit.
 

Detailed Description

template<class AFitMethod>
class Belle2::TrackFindingCDC::CDCFitter2D< AFitMethod >

Class implementing a fit for two dimensional trajectory circle using a generic fitting backend.

Definition at line 36 of file CDCFitter2D.h.

Constructor & Destructor Documentation

◆ CDCFitter2D()

template<class AFitMethod>
CDCFitter2D ( )

Default constructor.

Definition at line 27 of file CDCFitter2D.icc.h.

28 : m_usePosition(true)
29 , m_useOrientation(false)
30 , m_fitVariance(EFitVariance::c_Proper)
31 {
32 }

Member Function Documentation

◆ fit() [1/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( CDCObservations2D && observations2D) const

Fits a collection of observation drift circles.

Definition at line 44 of file CDCFitter2D.icc.h.

45 {
46 TrackingUtilities::CDCTrajectory2D result;
47 update(result, observations2D);
48 return result;
49 }

◆ fit() [2/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const CDCObservations2D & observations2D) const

Fits a collection of observation drift circles.

Definition at line 38 of file CDCFitter2D.icc.h.

39 {
40 return fit(CDCObservations2D(observations2D));
41 }

◆ fit() [3/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const std::vector< const CDC::CDCWire * > & wires) const

Fits to the wire positions. Explicit specialisation to be used from python.

Definition at line 90 of file CDCFitter2D.icc.h.

91 {
92 return fitGeneric(wires);
93 }

◆ fit() [4/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const std::vector< const TrackingUtilities::CDCWireHit * > & wireHit) const

Fits to the wire hit observations.

Definition at line 83 of file CDCFitter2D.icc.h.

85 {
86 return fitGeneric(wireHits);
87 }

◆ fit() [5/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const TrackingUtilities::CDCSegment2D & fromSegment,
const TrackingUtilities::CDCSegment2D & toSegment ) const

Fits to the two segments.

Definition at line 102 of file CDCFitter2D.icc.h.

104 {
105 return fitGeneric(fromSegment, toSegment);
106 }

◆ fit() [6/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const TrackingUtilities::CDCSegment2D & segment) const

Fits the segment.

Definition at line 77 of file CDCFitter2D.icc.h.

78 {
79 return fitGeneric(segment);
80 }

◆ fit() [7/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const TrackingUtilities::CDCSegment3D & segment) const

Fits the segment.

Definition at line 71 of file CDCFitter2D.icc.h.

72 {
73 return fitGeneric(segment);
74 }

◆ fit() [8/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const TrackingUtilities::CDCTrack & track) const

Fits the track.

Definition at line 65 of file CDCFitter2D.icc.h.

66 {
67 return fitGeneric(track);
68 }

◆ fit() [9/9]

template<class AFitMethod>
TrackingUtilities::CDCTrajectory2D fit ( const TrackingUtilities::CDCWireHitSegment & wireHits) const

Fits to the wire positions. Explicit specialisation to be used from python.

Definition at line 96 of file CDCFitter2D.icc.h.

97 {
98 return fitGeneric(wireHits);
99 }

◆ fitGeneric() [1/2]

template<class AFitMethod>
template<class AHits>
TrackingUtilities::CDCTrajectory2D fitGeneric ( const AHits & hits) const
private

Fits a collection of hit typs which are convertible to observation circles.

Definition at line 124 of file CDCFitter2D.icc.h.

125 {
126 TrackingUtilities::CDCTrajectory2D result;
127 updateGeneric(result, hits);
128 return result;
129 }

◆ fitGeneric() [2/2]

template<class AFitMethod>
template<class AStartHits, class AEndHits>
TrackingUtilities::CDCTrajectory2D fitGeneric ( const AStartHits & startHits,
const AEndHits & endHits ) const
private

Fits together two collections of hit types which are convertible to observation circles.

Definition at line 134 of file CDCFitter2D.icc.h.

135 {
136 TrackingUtilities::CDCTrajectory2D result;
137 updateGeneric(result, startHits, endHits);
138 return result;
139 }

◆ setFitVariance()

template<class AFitMethod>
void setFitVariance ( EFitVariance fitVariance)

Setup the fitter to use the given variance measure by default.

Definition at line 221 of file CDCFitter2D.icc.h.

222 {
223 m_fitVariance = fitVariance;
224 }

◆ update() [1/4]

template<class AFitMethod>
void update ( TrackingUtilities::CDCTrajectory2D & trajectory2D,
CDCObservations2D && observations2D ) const

Update the trajectory with a fit to the observations.

Definition at line 59 of file CDCFitter2D.icc.h.

60 {
61 AFitMethod::update(trajectory2D, observations2D);
62 }

◆ update() [2/4]

template<class AFitMethod>
void update ( TrackingUtilities::CDCTrajectory2D & trajectory2D,
const CDCObservations2D & observations2D ) const

Update the trajectory with a fit to the observations.

Definition at line 52 of file CDCFitter2D.icc.h.

54 {
55 return update(trajectory2D, CDCObservations2D(observations2D));
56 }

◆ update() [3/4]

template<class AFitMethod>
void update ( TrackingUtilities::CDCTrajectory2D & trajectory2D,
const TrackingUtilities::CDCAxialSegmentPair & axialSegmentPair ) const

Updates the given trajectory inplace from the given segment pair.

Definition at line 116 of file CDCFitter2D.icc.h.

118 {
119 return updateGeneric(trajectory2D, axialSegmentPair);
120 }

◆ update() [4/4]

template<class AFitMethod>
void update ( TrackingUtilities::CDCTrajectory2D & trajectory2D,
const TrackingUtilities::CDCSegment2D & segment ) const

Updates the given trajectory inplace from the given segment.

Definition at line 109 of file CDCFitter2D.icc.h.

111 {
112 updateGeneric(trajectory2D, segment);
113 }

◆ updateGeneric() [1/2]

template<class AFitMethod>
template<class AHits>
void updateGeneric ( TrackingUtilities::CDCTrajectory2D & trajectory2D,
const AHits & hits ) const
private

Updates a given trajectory with a fit to a collection of hits types, which are convertible to observation circles.

Definition at line 178 of file CDCFitter2D.icc.h.

179 {
180 CDCObservations2D observations2D;
181 observations2D.setFitVariance(m_fitVariance);
182
183 if (m_usePosition) {
184 observations2D.setFitPos(EFitPos::c_RecoPos);
185 observations2D.appendRange(hits);
186 }
187 if (m_useOrientation) {
188 observations2D.setFitPos(EFitPos::c_RLDriftCircle);
189 observations2D.appendRange(hits);
190 }
191
192 if (observations2D.size() < 4) {
193 trajectory2D.clear();
194 } else {
195 AFitMethod::update(trajectory2D, observations2D);
196 }
197 }

◆ updateGeneric() [2/2]

template<class AFitMethod>
template<class AStartHits, class AEndHits>
void updateGeneric ( TrackingUtilities::CDCTrajectory2D & trajectory2D,
const AStartHits & startHits,
const AEndHits & endHits ) const
private

Updates a given trajectory with a fit to two collection of hit types, which are convertible to observation circles.

Definition at line 143 of file CDCFitter2D.icc.h.

146 {
147 CDCObservations2D observations2D;
148 observations2D.setFitVariance(m_fitVariance);
149
150 if (m_usePosition) {
151 observations2D.setFitPos(EFitPos::c_RecoPos);
152 observations2D.appendRange(startHits);
153 }
154 if (m_useOrientation) {
155 observations2D.setFitPos(EFitPos::c_RLDriftCircle);
156 observations2D.appendRange(startHits);
157 }
158
159 if (m_usePosition) {
160 observations2D.setFitPos(EFitPos::c_RecoPos);
161 observations2D.appendRange(endHits);
162 }
163 if (m_useOrientation) {
164 observations2D.setFitPos(EFitPos::c_RLDriftCircle);
165 observations2D.appendRange(endHits);
166 }
167
168 if (observations2D.size() < 4) {
169 trajectory2D.clear();
170 } else {
171 AFitMethod::update(trajectory2D, observations2D);
172 }
173 }

◆ useOnlyOrientation()

template<class AFitMethod>
void useOnlyOrientation ( )

Setup the fitter to use only reference position and the drift length with right left orientation.

Definition at line 207 of file CDCFitter2D.icc.h.

208 {
209 m_usePosition = false;
210 m_useOrientation = true;
211 }

◆ useOnlyPosition()

template<class AFitMethod>
void useOnlyPosition ( )

Setup the fitter to use only the reconstructed positions of the hits.

Definition at line 200 of file CDCFitter2D.icc.h.

201 {
202 m_usePosition = true;
203 m_useOrientation = false;
204 }

◆ usePositionAndOrientation()

template<class AFitMethod>
void usePositionAndOrientation ( )

Setup the fitter to use both the reconstructed position and the reference position and the drift length with right left orientation.

Definition at line 214 of file CDCFitter2D.icc.h.

215 {
216 m_usePosition = true;
217 m_useOrientation = true;
218 }

Member Data Documentation

◆ m_fitVariance

template<class AFitMethod>
EFitVariance m_fitVariance = EFitVariance::c_Proper
private

Default variance to be used in the fit.

Definition at line 134 of file CDCFitter2D.h.

◆ m_useOrientation

template<class AFitMethod>
bool m_useOrientation = false
private

Flag indicating the reference position and drift length with right left orientation shall be used in the fit.

Definition at line 131 of file CDCFitter2D.h.

◆ m_usePosition

template<class AFitMethod>
bool m_usePosition = true
private

Flag indicating the reconstructed position shall be used in the fit.

Definition at line 128 of file CDCFitter2D.h.


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