139 std::unique_ptr<Trk::PRDtoTrackMap> prd_to_track_map(
m_assoTool->createPRDtoTrackMap());
140 const EventContext& ctx = Gaudi::Hive::currentContext();
145 <<
" not found, exit ReFitTrack." <<
endmsg;
146 return StatusCode::SUCCESS;
154 std::unique_ptr<const Trk::PerigeeSurface> constrainSf;
155 std::unique_ptr<const Trk::RecVertex> constrainVx;
163 constrainSf = std::make_unique<Trk::PerigeeSurface>( constrainVx->position());
170 std::vector<std::unique_ptr<Trk::Track> > new_tracks;
178 std::unique_ptr<Trk::Track> newtrack;
181 bool passedSelection =
true;
191 unsigned int n_trt_hits;
192 if ((*itr)->trackSummary()) {
196 std::unique_ptr<const Trk::TrackSummary> summary(
m_trkSummaryTool->summaryNoHoleSearch(**itr));
199 if ( (**itr).measurementsOnTrack()->size() - n_trt_hits<3 )
203 if (passedSelection) {
206 const Trk::Perigee* origPerigee = (*itr)->perigeeParameters();
208 double od0 = origPerigee->parameters()[
Trk::d0];
209 double oz0 = origPerigee->parameters()[
Trk::z0];
210 double ophi0 = origPerigee->parameters()[
Trk::phi0];
211 double otheta = origPerigee->parameters()[
Trk::theta];
212 double oqOverP = origPerigee->parameters()[
Trk::qOverP];
213 ATH_MSG_DEBUG (
"Original parameters " << od0 <<
" " << oz0 <<
" " << ophi0 <<
" " << otheta <<
" " << oqOverP);
217 if (constrainVx && origPerigee){
221 std::unique_ptr<const Trk::TrackParameters> tp(
m_extrapolator->extrapolateTrack(ctx,
227 std::unique_ptr<Trk::VertexOnTrack> bsvxOnTrack( tpConstrainedSf ?
new Trk::VertexOnTrack(*constrainVx,*tpConstrainedSf) :
nullptr );
228 std::vector<const MeasurementBase*>
vec;
229 if (tpConstrainedSf)
vec.push_back(bsvxOnTrack.get() );
237 for ( ; measIter != measIterEnd; ++measIter)
238 vec.push_back((*measIter));
247 ->fit(Gaudi::Hive::currentContext(),
256 ->fit(Gaudi::Hive::currentContext(), **itr,
m_runOutlier, hypo));
266 dynamic_cast<const Trk::Perigee*
>(newtrack->perigeeParameters () );
267 if (aMeasPer==
nullptr){
268 msg(MSG::ERROR) <<
"Could not get Trk::MeasuredPerigee" <<
endmsg;
271 double d0 = aMeasPer->parameters()[
Trk::d0];
272 double z0 = aMeasPer->parameters()[
Trk::z0];
281 new_tracks.push_back(std::move(newtrack));
289 for(
const std::unique_ptr<Trk::Track> &new_track : new_tracks ) {
295 std::unique_ptr<TrackCollection> new_track_collection = std::make_unique<TrackCollection>();
296 new_track_collection->reserve(new_tracks.size());
297 for(std::unique_ptr<Trk::Track> &new_track : new_tracks ) {
299 new_track_collection->push_back(std::move(new_track));
305 return StatusCode::SUCCESS;
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses