24 const std::vector<TrackFindingCDC::WithWeight<const CKFToSVDState*>>& previousStates =
pair->first;
27 const RecoTrack* cdcTrack = previousStates.front()->getSeed();
28 B2ASSERT(
"Path without seed?", cdcTrack);
30 const SpacePoint* spacePoint = state->getHit();
31 B2ASSERT(
"Path without hit?", spacePoint);
33 genfit::MeasuredStateOnPlane firstMeasurement;
34 if (state->mSoPSet()) {
35 firstMeasurement = state->getMeasuredStateOnPlane();
37 B2ASSERT(
"Previous state was not fitted?", previousStates.back()->mSoPSet());
38 firstMeasurement = previousStates.back()->getMeasuredStateOnPlane();
52 Vector3D trackPositionAtHit(trackPositionAtHit2D, trackPositionAtHitZ);
53 Vector3D distance = trackPositionAtHit - hitPosition;
55 var<
named(
"distance")>() =
static_cast<Float_t
>(distance.norm());
56 var<
named(
"xy_distance")>() =
static_cast<Float_t
>(distance.xy().norm());
57 var<
named(
"z_distance")>() =
static_cast<Float_t
>(distance.z());
59 Vector3D mSoP_distance = position - hitPosition;
61 var<
named(
"mSoP_distance")>() =
static_cast<Float_t
>(mSoP_distance.norm());
62 var<
named(
"mSoP_xy_distance")>() =
static_cast<Float_t
>(mSoP_distance.xy().norm());
63 var<
named(
"mSoP_z_distance")>() =
static_cast<Float_t
>(mSoP_distance.z());
65 var<
named(
"same_hemisphere")>() = fabs(position.phi() - hitPosition.phi()) < TMath::PiOver2();
70 var<
named(
"pt")>() =
static_cast<Float_t
>(momentum.xy().norm());
72 var<
named(
"phi")>() =
static_cast<Float_t
>(momentum.phi());
76 var<
named(
"number")>() = previousStates.size();
84 B2ASSERT(
"Must be related to exactly 2 clusters", clusters.size() == 2);
95 var<
named(
"last_cluster_1_time")>() = -999.9;
96 var<
named(
"last_cluster_2_time")>() = -999.9;
99 const SpacePoint* parentSpacePoint = parent->getHit();
100 if (parentSpacePoint) {
101 const VxdID& parentSensorInfo = parentSpacePoint->
getVxdID();
110 B2ASSERT(
"Must be related to exactly 2 clusters", parentclusters.size() == 2);
111 const SVDCluster* parentfirstCluster = parentclusters[0];
112 const SVDCluster* parentsecondCluster = parentclusters[1];
117 const double residual =
m_kalmanStepper.calculateResidual(firstMeasurement, *state);
118 var<
named(
"residual")>() = residual;
120 if (state->isFitted()) {
121 var<
named(
"chi2")>() =
static_cast<Float_t
>(state->getChi2());
126 const TMatrixDSym& cov5 = firstMeasurement.getCov();
127 const Float_t sigmaUV = std::sqrt(std::max(cov5(4, 4), cov5(3, 3)));
129 var<
named(
"residual_over_sigma")>() = residual / sigmaUV;