11 ISvcLocator* pSvcLocator)
45 const std::vector<int>* destinies = destiniesHandle.
cptr();
58 seeds->
size() != destinies->size()) {
63 return StatusCode::FAILURE;
67 std::vector< const ActsTrk::MeasurementToTruthParticleAssociation* > truthAssociationMaps (DetectorType::nTypes,
nullptr);
83 std::size_t nElements = seeds->
size();
85 for (std::size_t
i(0);
i<nElements; ++
i) {
87 const Acts::BoundTrackParameters*
pars =
params->at(
i);
88 const int destiny = destinies->at(
i);
91 if (not
pars)
continue;
93 const auto& sps = seed->sp();
94 const auto& bottom = sps[0];
95 const auto& middle = sps[1];
96 const auto&
top = sps[2];
98 float bottomX = bottom->x() - beamPos.x();
99 float bottomY = bottom->y() - beamPos.y();
100 float bottomZ = bottom->z();
101 float bottomR = std::sqrt( bottomX * bottomX + bottomY * bottomY );
103 float middleX = middle->x() - beamPos.x();
104 float middleY = middle->y() - beamPos.y();
105 float middleZ = middle->z();
106 float middleR = std::sqrt( middleX * middleX + middleY * middleY );
108 float topX =
top->x() - beamPos.x();
109 float topY =
top->y() - beamPos.y();
110 float topZ =
top->z();
111 float topR = std::sqrt( topX * topX + topY * topY );
113 float probability = 0.f;
115 truthAssociationMaps,
137 auto monitor_delta_cotTheta_bm_mt =
Monitored::Scalar<float>(
"deltaCotTheta_BM_MT", monitor_cotTheta_mt - monitor_cotTheta_bm );
152 monitor_bottom_x, monitor_bottom_y, monitor_bottom_z, monitor_bottom_r,
153 monitor_middle_x, monitor_middle_y, monitor_middle_z, monitor_middle_r,
154 monitor_top_x, monitor_top_y, monitor_top_z, monitor_top_r,
155 monitor_seed_eta, monitor_seed_pt, monitor_seed_quality, monitor_seed_vtx_z,
156 monitor_delta_r_bt, monitor_delta_r_bm, monitor_delta_r_mt,
157 monitor_cotTheta_bm, monitor_cotTheta_mt, monitor_cotTheta_bt,
158 monitor_delta_cotTheta_bm_mt,
159 monitor_seed_probability);
162 monitor_bottom_x, monitor_bottom_y, monitor_bottom_z, monitor_bottom_r,
163 monitor_middle_x, monitor_middle_y, monitor_middle_z, monitor_middle_r,
164 monitor_top_x, monitor_top_y, monitor_top_z, monitor_top_r,
165 monitor_seed_eta, monitor_seed_pt, monitor_seed_quality, monitor_seed_vtx_z,
166 monitor_delta_r_bt, monitor_delta_r_bm, monitor_delta_r_mt,
167 monitor_cotTheta_bm, monitor_cotTheta_mt, monitor_cotTheta_bt,
168 monitor_delta_cotTheta_bm_mt,
169 monitor_seed_probability);
172 return StatusCode::SUCCESS;
176 const std::vector< const ActsTrk::MeasurementToTruthParticleAssociation* >& associationMaps,
177 float& probability)
const
179 bool hasTruthInfo =
false;
181 if (not map)
continue;
185 if (not hasTruthInfo)
186 return StatusCode::SUCCESS;
188 std::size_t nMeasurements = 0
ul;
189 std::unordered_map<std::size_t, int> particleIds {};
191 const auto& sps = seed.sp();
193 const auto& measurements = sp->measurements();
205 return StatusCode::FAILURE;
210 return StatusCode::FAILURE;
213 auto tps = truth->at(meas->index());
214 if (tps.empty())
continue;
216 for (
const auto*
tp : tps) {
218 particleIds.try_emplace(
pid, 0 );
223 if (not motherParticle)
continue;
226 if (
pid == motherPid)
continue;
227 particleIds.try_emplace( motherPid, 0 );
228 ++particleIds[motherPid];
236 float prob =
static_cast<float>(
nEntries) / nMeasurements;
240 return StatusCode::SUCCESS;