61 cluster_container_handle.
cptr();
62 if (not cluster_container) {
63 ATH_MSG_ERROR(
"[TrackTimeExtensionAlg] HGTD_ClusterContainer not found, "
65 return StatusCode::FAILURE;
71 if (not sdo_collection) {
73 "truth info available!");
79 ATH_MSG_ERROR(
"[TrackTimeExtensionAlg] McEventCollection not found, "
81 return StatusCode::FAILURE;
85 if (mc_coll->
size() > 0) {
86 hs_event = mc_coll->
at(0);
95 trk_ptkl_container_handle.
cptr();
96 if (not track_particles) {
97 ATH_MSG_ERROR(
"[TrackTimeExtensionAlg] TrackParticleContainer not found, "
99 return StatusCode::FAILURE;
104 for (
const auto* track_ptkl : *track_particles) {
107 <<
" pt: " << track_ptkl->pt());
111 if (std::abs(track_ptkl->eta()) <
m_eta_cut) {
121 if (track_ptkl->track() ==
nullptr) {
145 return StatusCode::SUCCESS;
173 std::vector<char> has_cluster_vec;
174 has_cluster_vec.reserve(n_hgtd_layers);
175 std::vector<float> chi2_vec;
176 chi2_vec.reserve(n_hgtd_layers);
177 std::vector<float> raw_time_vec;
178 raw_time_vec.reserve(n_hgtd_layers);
179 std::vector<float> time_vec;
180 time_vec.reserve(n_hgtd_layers);
181 std::vector<int> truth_vec;
182 truth_vec.reserve(n_hgtd_layers);
183 std::vector<char> is_shadowed_vec;
184 is_shadowed_vec.reserve(n_hgtd_layers);
185 std::vector<char> is_merged_vec;
186 is_merged_vec.reserve(n_hgtd_layers);
187 std::vector<char> primary_exists_vec;
188 primary_exists_vec.reserve(n_hgtd_layers);
190 for (
unsigned short i = 0; i < n_hgtd_layers; i++) {
192 const std::unique_ptr<const Trk::TrackStateOnSurface>& trk_state =
196 primary_exists_vec.push_back(primary_cluster !=
nullptr);
200 has_cluster_vec.emplace_back(
true);
202 chi2_vec.emplace_back(
203 trk_state->fitQualityOnSurface().chiSquared() /
204 trk_state->fitQualityOnSurface().doubleNumberDoF());
209 time_vec.emplace_back(cot->
time());
214 raw_time_vec.emplace_back(cluster->
time());
217 static const SG::AuxElement::Accessor<ElementLink<xAOD::TruthParticleContainer>>
218 acc_tpl(
"truthParticleLink");
220 if (acc_tpl.isAvailable(*track_ptkl)) {
221 const auto& truth_match_link = acc_tpl(*track_ptkl);
222 if (truth_match_link.isValid()) {
223 truth_particle = *truth_match_link;
228 bool is_shadowed =
false;
229 bool is_merged =
false;
231 if (truth_particle) {
233 cluster, truth_particle, sdo_collection, hs_event);
234 truth_origin = truth_info.origin;
235 is_shadowed = truth_info.is_shadowed;
236 is_merged = truth_info.is_merged;
241 truth_vec.emplace_back((
int)truth_origin);
242 is_shadowed_vec.emplace_back(is_shadowed);
243 is_merged_vec.emplace_back(is_merged);
246 has_cluster_vec.emplace_back(
false);
248 chi2_vec.emplace_back(-1.);
249 raw_time_vec.emplace_back(-1.);
250 time_vec.emplace_back(-1.);
251 truth_vec.emplace_back(-1);
252 is_shadowed_vec.emplace_back(
false);
253 is_merged_vec.emplace_back(
false);
271 return StatusCode::SUCCESS;