returns a vector of PRDs belonging to the passed track.
It's basically for the convenience of users and is created purely from the passed track. i.e. there is no caching if you do it multiple times on the same track, you're being inefficient!!
111{
112 using PRDs_t = std::vector<const Trk::PrepRawData *>;
113
116
117
118 PRDtoTrackMap::TrackPrepRawDataMap::const_iterator itvec = prd_to_track_map.
m_trackPrepRawDataMap.find(&track);
119 if (itvec!=prd_to_track_map.m_trackPrepRawDataMap.end())
120 {
121 ATH_MSG_VERBOSE (
"found track in cache, return cached PRD vector for track");
122 return itvec->second;
123 }
124
125 if (!
track.measurementsOnTrack()) {
127 return {};
128 }
129
130
131
132
133
134
135
136
138 vec.reserve(
track.measurementsOnTrack()->size());
139
140 auto add_prd = [&
vec,
this] (
const Trk::RIO_OnTrack* rot) {
141 if (!rot) return;
142 const PrepRawData* prd = rot->prepRawData();
143 if (!prd) return;
144 const Identifier rot_id = prd->identify();
149 };
150 for (
const MeasurementBase* meas : *
track.measurementsOnTrack()) {
151 const Trk::RIO_OnTrack* rot = nullptr;
154 }
155 if (rot) {
156 add_prd(rot);
157 continue;
158 }
159 const Trk::CompetingRIOsOnTrack* competingROT = nullptr;
161 competingROT = static_cast<const Trk::CompetingRIOsOnTrack*>(meas);
162 }
163 if (!competingROT) { continue;}
165 for(
unsigned int i=0;
i<numROTs;++
i ){
166 const Trk::RIO_OnTrack* rot = &competingROT->
rioOnTrack(i);
167 add_prd(rot);
168 }
169 }
171
173}
#define ATH_MSG_WARNING(x)
std::vector< size_t > vec
virtual unsigned int numberOfContainedROTs() const =0
Number of RIO_OnTracks to be contained by this CompetingRIOsOnTrack.
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.