26 const std::vector<TrackFindingCDC::WithWeight<const CKFToPXDState*>>& previousStates =
pair->first;
29 const RecoTrack* seedTrack = previousStates.front()->getSeed();
30 B2ASSERT(
"Path without seed?", seedTrack);
32 const SpacePoint* spacePoint = state->getHit();
33 B2ASSERT(
"Path without hit?", spacePoint);
35 genfit::MeasuredStateOnPlane firstMeasurement;
36 if (state->mSoPSet()) {
37 firstMeasurement = state->getMeasuredStateOnPlane();
39 firstMeasurement = previousStates.back()->getMeasuredStateOnPlane();
53 Vector3D trackPositionAtHit(trackPositionAtHit2D, trackPositionAtHitZ);
54 Vector3D distance = trackPositionAtHit - hitPosition;
56 var<
named(
"distance")>() =
static_cast<Float_t
>(distance.norm());
57 var<
named(
"xy_distance")>() =
static_cast<Float_t
>(distance.xy().norm());
58 var<
named(
"z_distance")>() =
static_cast<Float_t
>(distance.z());
60 Vector3D mSoP_distance = position - hitPosition;
62 var<
named(
"mSoP_distance")>() =
static_cast<Float_t
>(mSoP_distance.norm());
63 var<
named(
"mSoP_xy_distance")>() =
static_cast<Float_t
>(mSoP_distance.xy().norm());
64 var<
named(
"mSoP_z_distance")>() =
static_cast<Float_t
>(mSoP_distance.z());
66 var<
named(
"same_hemisphere")>() = fabs(position.phi() - hitPosition.phi()) < TMath::PiOver2();
72 var<
named(
"number")>() = previousStates.size();
74 var<
named(
"pt")>() =
static_cast<Float_t
>(momentum.xy().norm());
76 var<
named(
"phi")>() =
static_cast<Float_t
>(momentum.phi());
86 B2ASSERT(
"Must be related to exactly 1 cluster", clusters.size() == 1);
87 var<
named(
"cluster_charge")>() = clusters[0]->getCharge();
88 var<
named(
"cluster_seed_charge")>() = clusters[0]->getSeedCharge();
89 var<
named(
"cluster_size")>() = clusters[0]->getSize();
90 var<
named(
"cluster_size_u")>() = clusters[0]->getUSize();
91 var<
named(
"cluster_size_v")>() = clusters[0]->getVSize();
98 var<
named(
"last_cluster_charge")>() = 0;
99 var<
named(
"last_cluster_seed_charge")>() = 0;
100 var<
named(
"last_cluster_size")>() = 0;
101 var<
named(
"last_cluster_size_u")>() = 0;
102 var<
named(
"last_cluster_size_v")>() = 0;
105 const SpacePoint* parentSpacePoint = parent->getHit();
106 if (parentSpacePoint) {
107 const VxdID& parentSensorInfo = parentSpacePoint->
getVxdID();
116 B2ASSERT(
"Must be related to exactly 1 cluster", parentclusters.size() == 1);
117 var<
named(
"last_cluster_charge")>() = parentclusters[0]->getCharge();
118 var<
named(
"last_cluster_seed_charge")>() = parentclusters[0]->getSeedCharge();
119 var<
named(
"last_cluster_size")>() = parentclusters[0]->getSize();
120 var<
named(
"last_cluster_size_u")>() = parentclusters[0]->getUSize();
121 var<
named(
"last_cluster_size_v")>() = parentclusters[0]->getVSize();
124 const double residual =
m_kalmanStepper.calculateResidual(firstMeasurement, *state);
125 var<
named(
"residual")>() = residual;
127 if (state->isFitted()) {
128 var<
named(
"chi2")>() =
static_cast<Float_t
>(state->getChi2());
133 const TMatrixDSym& cov5 = firstMeasurement.getCov();
134 const Float_t sigmaUV = std::sqrt(std::max(cov5(4, 4), cov5(3, 3)));
136 var<
named(
"residual_over_sigma")>() = residual / sigmaUV;