108 const ROOT::Math::XYZVector* svdTrackVector,
109 const ROOT::Math::XYZVector* cdcTrackVector)
111 if (not(svdTrackVector and cdcTrackVector)) {
120 m_variables.at(prefix +
"_diff_Z") = fabs(cdcTrackVector->Z() - svdTrackVector->Z());
121 m_variables.at(prefix +
"_diff_Pt") = fabs(cdcTrackVector->Rho() - svdTrackVector->Rho());
122 m_variables.at(prefix +
"_diff_Theta") = fabs(cdcTrackVector->Theta() - svdTrackVector->Theta());
123 m_variables.at(prefix +
"_diff_Phi") = fabs(cdcTrackVector->Phi() - svdTrackVector->Phi());
124 m_variables.at(prefix +
"_diff_Mag") = fabs(cdcTrackVector->R() - svdTrackVector->R());
125 m_variables.at(prefix +
"_diff_Eta") = fabs(cdcTrackVector->Eta() - svdTrackVector->Eta());
137 genfit::MeasuredStateOnPlane svdTrackStateOnPlane;
138 genfit::MeasuredStateOnPlane cdcTrackStateOnPlane;
143 cdcTrackStateOnPlane.extrapolateToCylinder(
m_CDC_wall_radius, center, direction);
144 svdTrackStateOnPlane.extrapolateToPlane(cdcTrackStateOnPlane.getPlane());
145 }
catch (genfit::Exception
const& e) {
147 B2WARNING(
"SubRecoTrackExtractor: SVDRecoTrack and/or CDCRecoTrack extrapolation to the CDCwall failed!\n"
148 <<
"-->" << e.what());
156 const ROOT::Math::XYZVector svdTrackPositionOnPlaneAtCDCWall = ROOT::Math::XYZVector(svdTrackStateOnPlane.getPos());
157 const ROOT::Math::XYZVector svdTrackMomentumOnPlaneAtCDCWall = ROOT::Math::XYZVector(svdTrackStateOnPlane.getMom());
158 const ROOT::Math::XYZVector cdcTrackPositionOnPlaneAtCDCWall = ROOT::Math::XYZVector(cdcTrackStateOnPlane.getPos());
159 const ROOT::Math::XYZVector cdcTrackMomentumOnPlaneAtCDCWall = ROOT::Math::XYZVector(cdcTrackStateOnPlane.getMom());
164 const TMatrixDSym invCovariance = (svdTrackStateOnPlane.getCov() + cdcTrackStateOnPlane.getCov()).Invert();
165 TVectorD stateDifference = cdcTrackStateOnPlane.getState() - svdTrackStateOnPlane.getState();
166 stateDifference *= invCovariance;
167 const float chi2 = stateDifference * (cdcTrackStateOnPlane.getState() - svdTrackStateOnPlane.getState());
170 }
catch (genfit::Exception
const& e) {
172 B2WARNING(
"SubRecoTrackExtractor: Matrix is singular!\n"
173 <<
"-->" << e.what());
188 genfit::MeasuredStateOnPlane svdTrackStateOnPlane;
189 genfit::MeasuredStateOnPlane cdcTrackStateOnPlane;
194 cdcTrackStateOnPlane.extrapolateToLine(linePoint, lineDirection);
195 svdTrackStateOnPlane.extrapolateToLine(linePoint, lineDirection);
196 }
catch (genfit::Exception
const& e) {
198 B2WARNING(
"SubRecoTrackExtractor: SVDRecoTrack and/or CDCRecoTrack extrapolation to POCA failed!\n"
199 <<
"-->" << e.what());
206 const ROOT::Math::XYZVector svdTrackPositionOnPlaneAtPOCA = ROOT::Math::XYZVector(svdTrackStateOnPlane.getPos());
207 const ROOT::Math::XYZVector svdTrackMomentumOnPlaneAtPOCA = ROOT::Math::XYZVector(svdTrackStateOnPlane.getMom());
208 const ROOT::Math::XYZVector cdcTrackPositionOnPlaneAtPOCA = ROOT::Math::XYZVector(cdcTrackStateOnPlane.getPos());
209 const ROOT::Math::XYZVector cdcTrackMomentumOnPlaneAtPOCA = ROOT::Math::XYZVector(cdcTrackStateOnPlane.getMom());