120 {
121
123
125
128 if(
sc.isFailure() || !vtxTES ) {
130 return StatusCode::SUCCESS;
131 }
132
134
135 const Rec::TrackParticleContainer* tpbTES=nullptr;
137
140 if(
sc.isFailure() || !tpbTES ) {
142 return StatusCode::SUCCESS;
143 }
144 ATH_MSG_DEBUG(
"TrackParticleCandidate Collection successfully retrieved");
145 }
146 else {
148 if(
sc.isFailure() || !trkTES ) {
150 return StatusCode::SUCCESS;
151 }
152 ATH_MSG_DEBUG(
"TrackParticleCandidate Collection successfully retrieved");
153 }
154
155 std::map<std::string,TrackCollection*> trackmap;
156 std::map<std::string,Trk::TrackParticleBaseCollection*> tpbmap;
157
158
159
162 trackmap[thisKey] = tempTracks;
164
165 } else {
167 }
168 }
169
172 tpbmap[thisKey] = tempTpbs;
174 (
evtStore()->retrieve(tpbmap[thisKey],thisKey)).isSuccess()){
175 } else {
177 }
178 }
179
181
182 for (const Rec::TrackParticle* tpb: *tpbTES){
184 bool trackmatched = false;
185
186
188
189 int i_vtx = 0;
190
191
192
193 std::stringstream sss;
194 std::string oeNameString;
195 oeNameString.reserve(20);
196 for (const Trk::VxCandidate* vtx : *vtxTES){
198 i_vtx++;
199 const std::vector<Trk::VxTrackAtVertex*> & vertexTracks = *vtx->vxTrackAtVertex();
200 ATH_MSG_DEBUG(
"parent vertex has "<<vertexTracks.size()<<
" tracks, at position: "<<vtx->recVertex().position().x());
201 std::vector<Trk::VxTrackAtVertex*>::const_iterator tavI = vertexTracks.begin();
202 std::vector<Trk::VxTrackAtVertex*>::const_iterator tavIe= vertexTracks.end();
203 for (; tavI != tavIe; ++tavI){
205 if (trkPerigee == vxTrkPerigee) {trackmatched = true;}
206 }
207 Trk::TrackParticleBase *trkCopy1 = new Trk::TrackParticleBase((*tpb));
208 Trk::TrackParticleBase *trkCopy2 = new Trk::TrackParticleBase((*tpb));
209 if (!trackmatched){
210 oeNameString.clear();
213 sss.str("");
215 std::string oecontainerName = sss.str();
216 std::string allNameString = "all";
217 sss.str("");
219 std::string allcontainerName = sss.str();
220 ATH_MSG_DEBUG(
"found an unmatched trackparticlebase, giving it the key: "<< oecontainerName);
221 tpbmap[oecontainerName]->push_back(trkCopy1);
222 ATH_MSG_DEBUG(
"found an unmatched trackparticlebase, giving it the key: "<< allcontainerName);
223 tpbmap[allcontainerName]->push_back(trkCopy2);
227 }
228 if (trackmatched){
229 oeNameString.clear();
232 sss.str("");
234 std::string oecontainerName = sss.str();
235 std::string allNameString = "all";
236 sss.str("");
238 std::string allcontainerName = sss.str();
239 ATH_MSG_DEBUG(
"found a matched trackparticlebase, giving it the key: "<< oecontainerName);
240 tpbmap[oecontainerName]->push_back(trkCopy1);
241 ATH_MSG_DEBUG(
"found a matched trackparticlebase, giving it the key: "<< allcontainerName);
242 tpbmap[allcontainerName]->push_back(trkCopy2);
246 }
247 }
248 }
249 }
250 }
254
255 for (; trkItr != trkItrE; ++trkItr){
256 const Trk::Perigee* trkPerigee = (*trkItr)->perigeeParameters();
257 bool trackmatched = false;
258
259
262
264
265 int i_vtx = 0;
266
267
268
269 std::stringstream sss;
270 std::string oeNameString;
271 oeNameString.reserve(20);
272 for (; vtxItr != vtxItrE; ++vtxItr){
274 i_vtx++;
275 const std::vector<Trk::VxTrackAtVertex*> & vertexTracks = (*(*vtxItr)->vxTrackAtVertex());
276 ATH_MSG_DEBUG(
"parent vertex has "<<vertexTracks.size()<<
" tracks, at position: "<<(*vtxItr)->recVertex().position().x());
277 std::vector<Trk::VxTrackAtVertex*>::const_iterator tavI = vertexTracks.begin();
278 std::vector<Trk::VxTrackAtVertex*>::const_iterator tavIe= vertexTracks.end();
279 for (; tavI != tavIe; ++tavI){
281 if (trkPerigee == vxTrkPerigee) {trackmatched = true;}
282 }
283 Trk::Track *trkCopy1 = new Trk::Track((*(*trkItr)));
284 Trk::Track *trkCopy2 = new Trk::Track((*(*trkItr)));
285 if (!trackmatched){
286 oeNameString.clear();
289 sss.str("");
291 std::string oecontainerName = sss.str();
292 std::string allNameString = "all";
293 sss.str("");
295 std::string allcontainerName = sss.str();
296 ATH_MSG_DEBUG(
"found an unmatched track, giving it the key: "<< oecontainerName);
297 trackmap[oecontainerName]->push_back(trkCopy1);
298 ATH_MSG_DEBUG(
"found an unmatched track, giving it the key: "<< allcontainerName);
299 trackmap[allcontainerName]->push_back(trkCopy2);
303 }
304 if (trackmatched){
305 oeNameString.clear();
308 sss.str("");
310 std::string oecontainerName = sss.str();
311 std::string allNameString = "all";
312 sss.str("");
314 std::string allcontainerName = sss.str();
315 ATH_MSG_DEBUG(
"found a matched track, giving it the key: "<< oecontainerName);
316 trackmap[oecontainerName]->push_back(trkCopy1);
317 ATH_MSG_DEBUG(
"found a matched track, giving it the key: "<< allcontainerName);
318 trackmap[allcontainerName]->push_back(trkCopy2);
322 }
323 }
324 }
325 }
326 }
329 if(
evtStore()->record(tpbmap[key],key,
false).isFailure() ){
331 }
332 }
333 } else {
335 if(
evtStore()->record(trackmap[key],key,
false).isFailure() ){
337 }
338 }
339 }
342 return StatusCode::SUCCESS;
343}
#define ATH_MSG_WARNING(x)
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
Athena::TPCnvVers::Old VxContainer
ServiceHandle< StoreGateSvc > & evtStore()
DataModel_detail::const_iterator< DataVector > const_iterator
size_type size() const noexcept
Returns the number of elements in the collection.
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
DataVector< TrackParticleBase > TrackParticleBaseCollection
ParametersBase< TrackParametersDim, Charged > TrackParameters