200 finalTracks = originalTracks;
201 return StatusCode::SUCCESS;
212 for ( ; trackIt != trackItE; ++trackIt ) {
214 ATH_MSG_DEBUG(
"Dealing with track: " << trackCount <<
" / " << originalTracks->
size());
216 bool acceptedTrack =
true;
220 ATH_MSG_DEBUG(
"Track selection OK for track: " << trackCount);
221 const Trk::Perigee* measuredPerigee = (*trackIt)->perigeeParameters();
222 if(!measuredPerigee){
227 if(!(measuredPerigee->covariance()) ){
240 double correctedQoverP(0), correctedQoverPError(0);
244 correctedQoverP = measuredPerigee->parameters()[
Trk::qOverP];
245 correctedQoverPError = 1e6;
248 double correctedD0(0), correctedD0Error(0);
252 correctedD0 = measuredPerigee->parameters()[
Trk::d0];
253 correctedD0Error = 1e6;
256 double correctedZ0(0), correctedZ0Error(0);
260 correctedZ0 = measuredPerigee->parameters()[
Trk::z0];
261 correctedZ0Error = 1e6;
269 std::vector<Trk::DefinedParameter> constrainedPars;
270 constrainedPars.push_back( constrainedD0 ) ;
271 constrainedPars.push_back( constrainedZ0 ) ;
272 constrainedPars.push_back( constrainedqOverP ) ;
275 constrainedCov.setZero();
276 constrainedCov( 0, 0 ) = correctedD0Error;
277 constrainedCov( 1, 1 ) = correctedZ0Error;
278 constrainedCov( 2, 2 ) = correctedQoverPError;
284 std::move(constrainedCov), *surf) ;
288 std::vector<const Trk::MeasurementBase*> vecOfMB;
289 if (pmot) vecOfMB.push_back(pmot);
294 for (;it!=itend;++it)
295 vecOfMB.push_back(*it);
298 it = (*trackIt)->outliersOnTrack()->begin();
299 itend = (*trackIt)->outliersOnTrack()->end();
301 for (;it!=itend;++it)
302 vecOfMB.push_back(*it);
306 vecOfMB, *measuredPerigee,
310 if (constrainedFittedTrack){
313 if(!constrainedPerigee){
317 <<
" pt: " << 1/measuredPerigee->parameters()[
Trk::qOverP] * 1e-3 * sin(measuredPerigee->parameters()[
Trk::theta])
318 <<
" d0: " << measuredPerigee->parameters()[
Trk::d0]
319 <<
" z0: " << measuredPerigee->parameters()[
Trk::z0] );
320 ATH_MSG_DEBUG(
"constraint values --> momentum: " << 1/correctedQoverP * 1e-3
321 <<
" pt: " << 1/correctedQoverP * 1e-3 * sin(measuredPerigee->parameters()[
Trk::theta])
322 <<
" d0: " << correctedD0
323 <<
" z0: " << correctedZ0 );
325 <<
" pt: " << 1/constrainedPerigee->parameters()[
Trk::qOverP] * 1e-3 * sin(constrainedPerigee->parameters()[
Trk::theta])
326 <<
" d0: " << constrainedPerigee->parameters()[
Trk::d0]
327 <<
" z0: " << constrainedPerigee->parameters()[
Trk::z0] );
330 const Track* track = *trackIt;
331 constrainedFittedTrack->
setTrackSummary( std::make_unique<Trk::TrackSummary> (*track->trackSummary()) );
346 ->fit(Gaudi::Hive::currentContext(),
352 if(unconstrainedFittedTrack) {
364 ATH_MSG_WARNING(
"Problem with recording AlignmentConstrainedTracks to StoreGate!");
366 return StatusCode::SUCCESS;
373 return StatusCode::SUCCESS;
460 if( measuredPerigee->parameters()[
Trk::qOverP] > 0)
465 double pt = fabs(1./(measuredPerigee->parameters()[
Trk::qOverP]))* sin(measuredPerigee->parameters()[
Trk::theta]) *1e-3;
466 double eta = -log(tan(measuredPerigee->parameters()[
Trk::theta]/2.));
467 double phi = measuredPerigee->parameters()[
Trk::phi];
472 double constraintErr =
m_etaphiMap_P->GetBinError(binNumber);
477 delta = delta * 0.001;
479 correctedQoverP = measuredPerigee->parameters()[
Trk::qOverP] * (1.+
charge *pt *delta );
480 correctedQoverPError = perr;
483 double qoverpFracError = perr/
pow(measuredPerigee->parameters()[
Trk::qOverP], 2);
484 qoverpFracError +=
pow(constraintErr,2);
485 correctedQoverPError = qoverpFracError*correctedQoverP*correctedQoverP;
489 ATH_MSG_DEBUG(
" == input pt: " << pt <<
" deltaSagitta: " << delta <<
" final pt: " << sin(measuredPerigee->parameters()[
Trk::theta]) * 1e-3/correctedQoverP);