27 const EventContext& ctx = getContext();
29 if (!trackCollection.
isValid()) {
30 throw std::runtime_error(
"Cannot retrieve track collection");
35 ATH_MSG_INFO(
"Reading event " << eventInfo->eventNumber()
36 <<
" from run " << eventInfo->runNumber()
37 <<
" with timestamp " << eventInfo->timeStamp());
40 ATH_MSG_INFO(
"Retrieved track collection with " << trackCollection->size()
43 auto getListOfHits = [](
const Trk::Track* track) -> std::vector<const Trk::RIO_OnTrack*> {
44 std::vector<const Trk::RIO_OnTrack*> ret;
45 for (
const auto *tsos : *(track->trackStateOnSurfaces())) {
54 unsigned int index = crot->indexOfMaxAssignProb();
55 rot = &(crot->rioOnTrack(
index));
59 ret.emplace_back(rot);
64 auto makeChamberString = [&](
const std::vector<const Trk::RIO_OnTrack*>& hits) -> std::string {
65 std::set<std::string> chambers;
66 for (
const auto* rot : hits) {
68 m_idTool->idToFixedLongId(rot->identify());
73 std::string chambers_str;
75 for (
const auto&
str : chambers) {
77 chambers_str.append(
",");
79 chambers_str.append(
str);
86 for (
const Trk::Track* track : *trackCollection) {
88 ATH_MSG_INFO(
"Collected chambers: " << makeChamberString(getListOfHits(track)));
89 std::vector<Trk::AlignmentDeviation*> deviations;
92 const auto& hits = np->getListOfHits();
93 if (
const auto* tdev =
96 double sigma = tdev->getSigma();
98 std::format(
"TranslationNP U = {:14.6f} {:14.6f} {:14.6f}"
99 " sigma = {:8.6f} chambers = {}",
100 u.x(), u.y(), u.z(), sigma, makeChamberString(hits)));
101 }
else if (
const auto* rdev =
105 double sigma = rdev->getSigma();
107 "RotationNP C = {:14.6f} {:14.6f} {:14.6f} "
108 "A = {:14.6f} {:14.6f} {:14.6f} sigma = {:11.9f} chambers = {}",
109 c.x(), c.y(), c.z(),
a.x(),
a.y(),
a.z(), sigma, makeChamberString(hits)));
111 throw std::runtime_error(
"Deviation type is not implemented");
116 return StatusCode::SUCCESS;