11 #include <tracking/trackFindingVXD/variableExtractors/VariableExtractor.h>
12 #include <tracking/dataobjects/RecoTrack.h>
13 #include <tracking/spacePointCreation/SpacePointTrackCand.h>
15 #include <genfit/MeasuredStateOnPlane.h>
16 #include <root/TVector3.h>
17 #include <root/TMatrixDSym.h>
55 m_variables.at(
"PXD_QI") = isnan(pxdQI) ? 0. : pxdQI;
62 m_variables.at(
"CDC_QI") = isnan(cdcQI) ? 0. : cdcQI;
106 const TVector3* svdTrackVector,
107 const TVector3* cdcTrackVector)
109 if (not(svdTrackVector and cdcTrackVector)) {
118 m_variables.at(prefix +
"_diff_Z") = fabs(cdcTrackVector->Z() - svdTrackVector->Z());
119 m_variables.at(prefix +
"_diff_Pt") = fabs(cdcTrackVector->Pt() - svdTrackVector->Pt());
120 m_variables.at(prefix +
"_diff_Theta") = fabs(cdcTrackVector->Theta() - svdTrackVector->Theta());
121 m_variables.at(prefix +
"_diff_Phi") = fabs(cdcTrackVector->Phi() - svdTrackVector->Phi());
122 m_variables.at(prefix +
"_diff_Mag") = fabs(cdcTrackVector->Mag() - svdTrackVector->Mag());
123 m_variables.at(prefix +
"_diff_Eta") = fabs(cdcTrackVector->Eta() - svdTrackVector->Eta());
132 TVector3 center(0., 0., 0.);
133 TVector3 direction(0., 0., 1.);
141 cdcTrackStateOnPlane.extrapolateToCylinder(
m_CDC_wall_radius, center, direction);
142 svdTrackStateOnPlane.extrapolateToPlane(cdcTrackStateOnPlane.getPlane());
145 B2WARNING(
"SubRecoTrackExtractor: SVDRecoTrack and/or CDCRecoTrack extrapolation to the CDCwall failed!\n"
146 <<
"-->" << e.what());
154 const TVector3 svdTrackPositionOnPlaneAtCDCWall = svdTrackStateOnPlane.getPos();
155 const TVector3 svdTrackMomentumOnPlaneAtCDCWall = svdTrackStateOnPlane.getMom();
156 const TVector3 cdcTrackPositionOnPlaneAtCDCWall = cdcTrackStateOnPlane.getPos();
157 const TVector3 cdcTrackMomentumOnPlaneAtCDCWall = cdcTrackStateOnPlane.getMom();
162 const TMatrixDSym invCovariance = (svdTrackStateOnPlane.getCov() + cdcTrackStateOnPlane.getCov()).Invert();
163 TVectorD stateDifference = cdcTrackStateOnPlane.getState() - svdTrackStateOnPlane.getState();
164 stateDifference *= invCovariance;
165 const float chi2 = stateDifference * (cdcTrackStateOnPlane.getState() - svdTrackStateOnPlane.getState());
170 B2WARNING(
"SubRecoTrackExtractor: Matrix is singular!\n"
171 <<
"-->" << e.what());
183 const TVector3 linePoint(0., 0., 0.);
184 const TVector3 lineDirection(0., 0., 1.);
192 cdcTrackStateOnPlane.extrapolateToLine(linePoint, lineDirection);
193 svdTrackStateOnPlane.extrapolateToLine(linePoint, lineDirection);
196 B2WARNING(
"SubRecoTrackExtractor: SVDRecoTrack and/or CDCRecoTrack extrapolation to POCA failed!\n"
197 <<
"-->" << e.what());
204 const TVector3 svdTrackPositionOnPlaneAtPOCA = svdTrackStateOnPlane.getPos();
205 const TVector3 svdTrackMomentumOnPlaneAtPOCA = svdTrackStateOnPlane.getMom();
206 const TVector3 cdcTrackPositionOnPlaneAtPOCA = cdcTrackStateOnPlane.getPos();
207 const TVector3 cdcTrackMomentumOnPlaneAtPOCA = cdcTrackStateOnPlane.getMom();
This is the Reconstruction Event-Data Model Track.
bool wasFitSuccessful(const genfit::AbsTrackRep *representation=nullptr) const
Returns true if the last fit with the given representation was successful.
const genfit::MeasuredStateOnPlane & getMeasuredStateOnPlaneFromLastHit(const genfit::AbsTrackRep *representation=nullptr) const
Return genfit's MeasuredStateOnPlane for the last hit in a fit useful for extrapolation of measuremen...
float getQualityIndicator() const
Get the quality index attached to this RecoTrack given by one of the reconstruction algorithms....
const genfit::MeasuredStateOnPlane & getMeasuredStateOnPlaneFromFirstHit(const genfit::AbsTrackRep *representation=nullptr) const
Return genfit's MeasuredStateOnPlane for the first hit in a fit useful for extrapolation of measureme...
TO * getRelatedTo(const std::string &name="", const std::string &namedRelation="") const
Get the object to which this object has a relation.
Storage for (VXD) SpacePoint-based track candidates.
Exception class for error handling in GENFIT (provides storage for diagnostic information)
#StateOnPlane with additional covariance matrix.
Abstract base class for different kinds of events.