139 std::unique_ptr<Trk::PRDtoTrackMap> prd_to_track_map(
m_assoTool->createPRDtoTrackMap());
144 <<
" not found, exit ReFitTrack." <<
endmsg;
145 return StatusCode::SUCCESS;
153 std::unique_ptr<const Trk::PerigeeSurface> constrainSf;
154 std::unique_ptr<const Trk::RecVertex> constrainVx;
162 constrainSf = std::make_unique<Trk::PerigeeSurface>( constrainVx->position());
169 std::vector<std::unique_ptr<Trk::Track> > new_tracks;
177 std::unique_ptr<Trk::Track> newtrack;
180 bool passedSelection =
true;
190 unsigned int n_trt_hits;
191 if ((*itr)->trackSummary()) {
195 std::unique_ptr<const Trk::TrackSummary> summary(
m_trkSummaryTool->summaryNoHoleSearch(ctx, **itr) );
198 if ( (**itr).measurementsOnTrack()->size() - n_trt_hits<3 )
202 if (passedSelection) {
205 const Trk::Perigee* origPerigee = (*itr)->perigeeParameters();
207 double od0 = origPerigee->parameters()[
Trk::d0];
208 double oz0 = origPerigee->parameters()[
Trk::z0];
209 double ophi0 = origPerigee->parameters()[
Trk::phi0];
210 double otheta = origPerigee->parameters()[
Trk::theta];
211 double oqOverP = origPerigee->parameters()[
Trk::qOverP];
212 ATH_MSG_DEBUG (
"Original parameters " << od0 <<
" " << oz0 <<
" " << ophi0 <<
" " << otheta <<
" " << oqOverP);
216 if (constrainVx && origPerigee){
220 std::unique_ptr<const Trk::TrackParameters> tp(
m_extrapolator->extrapolateTrack(ctx,
226 std::unique_ptr<Trk::VertexOnTrack> bsvxOnTrack( tpConstrainedSf ?
new Trk::VertexOnTrack(*constrainVx,*tpConstrainedSf) :
nullptr );
227 std::vector<const MeasurementBase*>
vec;
228 if (tpConstrainedSf)
vec.push_back(bsvxOnTrack.get() );
236 for ( ; measIter != measIterEnd; ++measIter)
237 vec.push_back((*measIter));
265 dynamic_cast<const Trk::Perigee*
>(newtrack->perigeeParameters () );
266 if (aMeasPer==
nullptr){
267 msg(MSG::ERROR) <<
"Could not get Trk::MeasuredPerigee" <<
endmsg;
270 double d0 = aMeasPer->parameters()[
Trk::d0];
271 double z0 = aMeasPer->parameters()[
Trk::z0];
280 new_tracks.push_back(std::move(newtrack));
288 for(
const std::unique_ptr<Trk::Track> &new_track : new_tracks ) {
294 std::unique_ptr<TrackCollection> new_track_collection = std::make_unique<TrackCollection>();
295 new_track_collection->reserve(new_tracks.size());
296 for(std::unique_ptr<Trk::Track> &new_track : new_tracks ) {
298 new_track_collection->push_back(std::move(new_track));
304 return StatusCode::SUCCESS;
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses