91 const std::vector<TrackFindingCDC::WithWeight<const CKFToSVDState*>>& previousStates =
pair->first;
94 const RecoTrack* cdcTrack = previousStates.front()->getSeed();
95 B2ASSERT(
"Path without seed?", cdcTrack);
97 const SpacePoint* spacePoint = state->getHit();
98 B2ASSERT(
"Path without hit?", spacePoint);
100 std::vector<TrackFindingCDC::WithWeight<const CKFToSVDState*>> allStates = previousStates;
101 allStates.emplace_back(state, 0);
105 var<
named(
"seed_cdc_hits")>() = cdcHits.size();
106 var<
named(
"seed_lowest_cdc_layer")>() = cdcHits.front()->getICLayer();
108 genfit::MeasuredStateOnPlane firstMeasurement;
109 if (state->mSoPSet()) {
110 firstMeasurement = state->getMeasuredStateOnPlane();
112 B2ASSERT(
"Previous state was not fitted?", previousStates.back()->mSoPSet());
113 firstMeasurement = previousStates.back()->getMeasuredStateOnPlane();
127 Vector3D trackPositionAtHit(trackPositionAtHit2D, trackPositionAtHitZ);
129 const auto calculateCharge = [](
const auto & s) {
130 return s.getCharge();
132 const auto calculateSeedCharge = [](
const auto & s) {
133 return s.getSeedCharge();
135 const auto calculateSize = [](
const auto & s) {
138 const auto calculateSNR = [](
const auto & s) {
141 const auto calculateChargeSizeRatio = [](
const auto & s) {
142 return s.getCharge() / s.getSize();
148 B2ASSERT(
"Must be related to exactly 2 clusters", clusters.size() == 2);
150 const SVDCluster* secondCluster = clusters[1];
152 var<
named(
"cluster_1_charge")>() = calculateCharge(*firstCluster);
153 var<
named(
"cluster_2_charge")>() = calculateCharge(*secondCluster);
154 var<
named(
"mean_rest_cluster_charge")>() = meanOver(allStates, calculateCharge);
155 var<
named(
"min_rest_cluster_charge")>() = minOver(allStates, calculateCharge);
156 var<
named(
"std_rest_cluster_charge")>() = stdOver(allStates, calculateCharge);
158 var<
named(
"cluster_1_seed_charge")>() = calculateSeedCharge(*firstCluster);
159 var<
named(
"cluster_2_seed_charge")>() = calculateSeedCharge(*secondCluster);
160 var<
named(
"mean_rest_cluster_seed_charge")>() = meanOver(allStates, calculateSeedCharge);
161 var<
named(
"min_rest_cluster_seed_charge")>() = minOver(allStates, calculateSeedCharge);
162 var<
named(
"std_rest_cluster_seed_charge")>() = stdOver(allStates, calculateSeedCharge);
164 var<
named(
"cluster_1_size")>() = calculateSize(*firstCluster);
165 var<
named(
"cluster_2_size")>() = calculateSize(*secondCluster);
166 var<
named(
"mean_rest_cluster_size")>() = meanOver(allStates, calculateSize);
167 var<
named(
"min_rest_cluster_size")>() = minOver(allStates, calculateSize);
168 var<
named(
"std_rest_cluster_size")>() = stdOver(allStates, calculateSize);
170 var<
named(
"cluster_1_snr")>() = calculateSNR(*firstCluster);
171 var<
named(
"cluster_2_snr")>() = calculateSNR(*secondCluster);
172 var<
named(
"mean_rest_cluster_snr")>() = meanOver(allStates, calculateSNR);
173 var<
named(
"min_rest_cluster_snr")>() = minOver(allStates, calculateSNR);
174 var<
named(
"std_rest_cluster_snr")>() = stdOver(allStates, calculateSNR);
176 var<
named(
"cluster_1_charge_over_size")>() = calculateChargeSizeRatio(*firstCluster);
177 var<
named(
"cluster_2_charge_over_size")>() = calculateChargeSizeRatio(*secondCluster);
178 var<
named(
"mean_rest_cluster_charge_over_size")>() = meanOver(allStates, calculateChargeSizeRatio);
179 var<
named(
"min_rest_cluster_charge_over_size")>() = minOver(allStates, calculateChargeSizeRatio);
180 var<
named(
"std_rest_cluster_charge_over_size")>() = stdOver(allStates, calculateChargeSizeRatio);
183 std::vector<const SpacePoint*> spacePoints;
187 spacePoints.push_back(sp);
191 if (spacePoints.size() >= 3) {
196 var<
named(
"quality_index_triplet")>() = 0;
197 var<
named(
"quality_index_circle")>() = 0;
198 var<
named(
"quality_index_helix")>() = 0;