71 double z = std::abs(
Tp.parameters()[1]);
121 if(!startingPatternPars.
production(&startingParameters))
return false;
139 0. , 0., 0., 0.,.00001};
141 if (
m_tools->isITkGeometry()) {
142 cv[5] =
m_ndf==2 ? .1 : .01;
658 double Xi2max =
m_xi2max;
if( isTwoSpacePointsSeed) Xi2max*=2.;
904 std::unique_ptr<Trk::TrackParameters> tp =
nullptr;
913 if (&tp->associatedSurface() !=
m_surface) {
918 std::unique_ptr<Trk::MeasurementBase> ro{};
926 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> pat(
937 0., 0., std::sqrt(
m_noise.covarianceAzim()), std::sqrt(
m_noise.covariancePola()));
939 auto meTemplate = std::make_unique<Trk::MaterialEffectsOnTrack>(
953 std::unique_ptr<Trk::TrackParameters> tpn{};
963 std::unique_ptr<Trk::MeasurementBase> ron(
m_riotool->correct(
966 fqn, std::move(ron), std::move(tpn), meTemplate->uniqueClone(), pat);
980(
bool change,
bool cov,
int Q)
986 std::unique_ptr<Trk::TrackParameters> tp =
nullptr;
997 if (&tp->associatedSurface() !=
m_surface) {
1003 std::unique_ptr<Trk::MeasurementBase> ro{};
1004 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> pat(
1028 ro = std::make_unique<InDet::SCT_ClusterOnTrack>(
sc, std::move(locp), std::move(cv), iH,
sc->globalPosition());
1032 ro = std::make_unique<InDet::PixelClusterOnTrack>(
1033 pc, std::move(locp), std::move(cv), iH, pc->globalPosition(), pc->gangedPixel());
1057 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
1071std::unique_ptr<Trk::TrackParameters>
1126 if(Model < 1 || Model > 2)
return;
1129 double q = useMomentum ?
m_invMoment : std::abs(
Tp.parameters()[4]);
1138 if (s < .01) s = 100.;
1142 if (s < .05) s = 20.;
1160 if(d < 1.e-5) d = 1.e-5;
1162 double covarianceAzim = covariancePola/d;
1164 double covarianceIMom;
1165 double correctionIMom;
1172 covarianceIMom = (.2*dp*dp)*(q*q);
1174 correctionIMom = 1.-dp;
1178 correctionIMom = .70;
1179 covarianceIMom = (correctionIMom-1.)*(correctionIMom-1.)*(q*q);
1182 if(Dir>0) correctionIMom = 1./correctionIMom;
1184 m_noise.set(covarianceAzim,covariancePola,covarianceIMom,correctionIMom);
1195std::unique_ptr<Trk::TrackParameters>
1244std::unique_ptr<Trk::TrackParameters>
1248 Tp.changeDirection();
1249 return Tp.convert(cov);
1330 return -(
P[0]*M[0]+
P[1]*M[1]);
1365 m_ndf == 2 ? w = 1.2*(Xc-X*.5) : w = Xc-X ;
if(w < -1.) w = -1.;
1381 double & StepLength,
1382 const EventContext& ctx ) {
1386 double globalParameters[64];
1406 StepLength = globalParameters[45];
1411 startingParameters, *
m_surface, outputParameters,
1415 double sinPhi,cosPhi,sinTheta,cosTheta;
1416 sincos(outputParameters.parameters()[2],&sinPhi,&cosPhi);
1417 sincos(outputParameters.parameters()[3],&sinTheta,&cosTheta);
1435 double & StepLength ) {
1436 bool useJac =
false;
1437 double globalParameters[64];
1456 StepLength = globalParameters[45];
1479 double* globalPars) {
1481 double sinPhi,cosPhi,cosTheta,sintheta;
1482 sincos(localParameters.parameters()[2],&sinPhi,&cosPhi);
1483 sincos(localParameters.parameters()[3],&sintheta,&cosTheta);
1484 if (
m_tools->isITkGeometry()) {
1485 if(std::abs(sintheta) < std::abs(localParameters.parameters()[4])*50.)
return false;
1490 throw(std::runtime_error(
"TrackParameters associated surface is null pointer in InDet::SiTrajectoryElement_xk::transformPlaneToGlobal"));
1496 double Ax[3] = {T(0,0),T(1,0),T(2,0)};
1497 double Ay[3] = {T(0,1),T(1,1),T(2,1)};
1500 globalPars[ 0] = localParameters.parameters()[0]*Ax[0]+localParameters.parameters()[1]*Ay[0]+T(0,3);
1501 globalPars[ 1] = localParameters.parameters()[0]*Ax[1]+localParameters.parameters()[1]*Ay[1]+T(1,3);
1502 globalPars[ 2] = localParameters.parameters()[0]*Ax[2]+localParameters.parameters()[1]*Ay[2]+T(2,3);
1504 globalPars[ 3] = cosPhi*sintheta;
1505 globalPars[ 4] = sinPhi*sintheta;
1506 globalPars[ 5] = cosTheta;
1508 globalPars[ 6] = localParameters.parameters()[4];
1510 if(std::abs(globalPars[6])<1.e-20) {
1511 if (globalPars[6] < 0){
1512 globalPars[6]=-1.e-20;
1514 else globalPars[6]= 1.e-20;
1521 globalPars[ 7] = Ax[0]; globalPars[14] = Ay[0]; globalPars[21] = 0.; globalPars[28] = 0.; globalPars[35] = 0.;
1522 globalPars[ 8] = Ax[1]; globalPars[15] = Ay[1]; globalPars[22] = 0.; globalPars[29] = 0.; globalPars[36] = 0.;
1523 globalPars[ 9] = Ax[2]; globalPars[16] = Ay[2]; globalPars[23] = 0.; globalPars[30] = 0.; globalPars[37] = 0.;
1524 globalPars[10] = 0.; globalPars[17] = 0.; globalPars[24] =-globalPars[4]; globalPars[31] = cosPhi*cosTheta; globalPars[38] = 0.;
1525 globalPars[11] = 0.; globalPars[18] = 0.; globalPars[25] = globalPars[3]; globalPars[32] = sinPhi*cosTheta; globalPars[39] = 0.;
1526 globalPars[12] = 0.; globalPars[19] = 0.; globalPars[26] = 0.; globalPars[33] = -sintheta; globalPars[40] = 0.;
1529 globalPars[42] = 0.;
1530 globalPars[43] = 0.;
1531 globalPars[44] = 0.;
1534 globalPars[45] = 0.;
1566 d[0]*Ax[0]+d[1]*Ax[1]+d[2]*Ax[2],
1567 d[0]*Ay[0]+d[1]*Ay[1]+d[2]*Ay[2],
1568 atan2(globalPars[4],globalPars[3]),
1569 acos(globalPars[5]),
1580 double A = Az[0]*globalPars[3]+Az[1]*globalPars[4]+Az[2]*globalPars[5];
1582 double s0 = Az[0]*globalPars[ 7]+Az[1]*globalPars[ 8]+Az[2]*globalPars[ 9];
1583 double s1 = Az[0]*globalPars[14]+Az[1]*globalPars[15]+Az[2]*globalPars[16];
1584 double s2 = Az[0]*globalPars[21]+Az[1]*globalPars[22]+Az[2]*globalPars[23];
1585 double s3 = Az[0]*globalPars[28]+Az[1]*globalPars[29]+Az[2]*globalPars[30];
1586 double s4 = Az[0]*globalPars[35]+Az[1]*globalPars[36]+Az[2]*globalPars[37];
1587 double T0 =(Ax[0]*globalPars[ 3]+Ax[1]*globalPars[ 4]+Ax[2]*globalPars[ 5])*
A;
1588 double T1 =(Ay[0]*globalPars[ 3]+Ay[1]*globalPars[ 4]+Ay[2]*globalPars[ 5])*
A;
1589 double n = 1./globalPars[6];
1595 Jac[ 0] = (Ax[0]*globalPars[ 7]+Ax[1]*globalPars[ 8])+(Ax[2]*globalPars[ 9]-
s0*T0);
1596 Jac[ 1] = (Ax[0]*globalPars[14]+Ax[1]*globalPars[15])+(Ax[2]*globalPars[16]-s1*T0);
1597 Jac[ 2] = (Ax[0]*globalPars[21]+Ax[1]*globalPars[22])+(Ax[2]*globalPars[23]-s2*T0);
1598 Jac[ 3] = (Ax[0]*globalPars[28]+Ax[1]*globalPars[29])+(Ax[2]*globalPars[30]-s3*T0);
1599 Jac[ 4] =((Ax[0]*globalPars[35]+Ax[1]*globalPars[36])+(Ax[2]*globalPars[37]-s4*T0))*n;
1601 Jac[ 5] = (Ay[0]*globalPars[ 7]+Ay[1]*globalPars[ 8])+(Ay[2]*globalPars[ 9]-
s0*T1);
1602 Jac[ 6] = (Ay[0]*globalPars[14]+Ay[1]*globalPars[15])+(Ay[2]*globalPars[16]-s1*T1);
1603 Jac[ 7] = (Ay[0]*globalPars[21]+Ay[1]*globalPars[22])+(Ay[2]*globalPars[23]-s2*T1);
1604 Jac[ 8] = (Ay[0]*globalPars[28]+Ay[1]*globalPars[29])+(Ay[2]*globalPars[30]-s3*T1);
1605 Jac[ 9] =((Ay[0]*globalPars[35]+Ay[1]*globalPars[36])+(Ay[2]*globalPars[37]-s4*T1))*n;
1610 double C = globalPars[3]*globalPars[3]+globalPars[4]*globalPars[4];
1614 P3 = globalPars[3]*
C;
1615 P4 =globalPars[4]*
C;
1624 double T2 =(P3*globalPars[43]-P4*globalPars[42])*
A;
1625 double C44 =
C*globalPars[44] *
A;
1627 Jac[10] = P3*globalPars[11]-P4*globalPars[10]-
s0*T2;
1628 Jac[11] = P3*globalPars[18]-P4*globalPars[17]-s1*T2;
1629 Jac[12] = P3*globalPars[25]-P4*globalPars[24]-s2*T2;
1630 Jac[13] = P3*globalPars[32]-P4*globalPars[31]-s3*T2;
1631 Jac[14] =(P3*globalPars[39]-P4*globalPars[38]-s4*T2)*n;
1633 Jac[15] =
C*globalPars[12]-
s0*C44;
1634 Jac[16] =
C*globalPars[19]-s1*C44;
1635 Jac[17] =
C*globalPars[26]-s2*C44;
1636 Jac[18] =
C*globalPars[33]-s3*C44;
1637 Jac[19] =(
C*globalPars[40]-s4*C44)*n;
1641 AmgSymMatrix(5) newCov = Trk::RungeKuttaUtils::newCovarianceMatrix(Jac, *startingParameters.covariance());
1645 const AmgSymMatrix(5) & t = *outputParameters.covariance();
1646 if(t(0, 0)<=0. || t(1, 1)<=0. || t(2, 2)<=0. || t(3, 3)<=0. || t(4, 4)<=0.)
return false;
1662(
bool Jac,
double* globalPars)
1665 const double Smin = .1 ;
1668 const double Shel = 5. ;
1670 const double dlt = .001 ;
1673 if(std::abs(globalPars[6]) > .05)
return false;
1677 double* R = &globalPars[ 0];
1679 double*
A = &globalPars[ 3];
1681 double* sA = &globalPars[42];
1682 double Pi = 149.89626*globalPars[6];
1684 double Pa = std::abs (globalPars[6]);
1688 if(
a==0.)
return false;
1691 double S0 = std::abs(S) ;
1705 else if( (Pa*S0) > .3) {
1706 if (S >0) S = 0.3 / Pa;
1724 if(std::abs(S) < Shel) Helix =
true;
1725 double S3=(1./3.)*S;
1731 double H0[3] = {f0[0]*PS2,
1735 double A0 =
A[1]*H0[2]-
A[2]*H0[1] ;
1736 double B0 =
A[2]*H0[0]-
A[0]*H0[2] ;
1737 double C0 =
A[0]*H0[1]-
A[1]*H0[0] ;
1739 double A2 = A0+
A[0] ;
1740 double B2 =
B0+
A[1] ;
1741 double C2 = C0+
A[2] ;
1743 double A1 = A2+
A[0] ;
1744 double B1 = B2+
A[1] ;
1745 double C1 = C2+
A[2] ;
1750 double gP[3]={R[0]+A1*S4,
1764 double H1[3] = {f[0]*PS2,
1767 double A3 = (
A[0]+B2*H1[2])-C2*H1[1] ;
1768 double B3 = (
A[1]+C2*H1[0])-A2*H1[2] ;
1769 double C3 = (
A[2]+A2*H1[1])-B2*H1[0] ;
1771 double A4 = (
A[0]+B3*H1[2])-C3*H1[1] ;
1772 double B4 = (
A[1]+C3*H1[0])-A3*H1[2] ;
1773 double C4 = (
A[2]+A3*H1[1])-B3*H1[0] ;
1775 double A5 = 2.*A4-
A[0] ;
1776 double B5 = 2.*B4-
A[1] ;
1777 double C5 = 2.*C4-
A[2] ;
1782 double gP[3]={R[0]+S*A4,
1795 double H2[3] = {f[0]*PS2,
1799 double A6 = B5*
H2[2]-C5*
H2[1] ;
1800 double B6 = C5*
H2[0]-A5*
H2[2] ;
1801 double C6 = A5*
H2[1]-B5*
H2[0] ;
1806 double EST = std::abs((A1+A6)-(A3+A4))+std::abs((B1+B6)-(B3+B4))+std::abs((C1+C6)-(C3+C4));
1815 if((!ste && S0 > std::abs(S)*100.) || std::abs(globalPars[45]+=S) > 2000.)
return false;
1818 double A0arr[3]{A0,
B0,C0};
1819 double A3arr[3]{A3,B3,C3};
1820 double A4arr[3]{A4,B4,C4};
1821 double A6arr[3]{A6,B6,C6};
1827 R[0]+=(A2+A3+A4)*
S3;
1828 A[0] = ((A0+2.*A3)+(A5+A6));
1829 R[1]+=(B2+B3+B4)*
S3;
1830 A[1] = ((
B0+2.*B3)+(B5+B6));
1831 R[2]+=(C2+C3+C4)*
S3;
1832 A[2] = ((C0+2.*C3)+(C5+C6));
1833 if(!
m_tools->isITkGeometry()){
1839 double D = 1./sqrt(
A[0]*
A[0]+
A[1]*
A[1]+
A[2]*
A[2]);
1840 A[0]*=D;
A[1]*=D;
A[2]*=D;
1845 if(
a==0.)
return false;
1847 double aSn = std::abs(Sn);
1865 double aS = std::abs(S);
1869 if(++it > 2)
return false;
1871 if (aSn < aS) S = Sn;
1876 else if( aSn < aS ) S = Sn;
1891(
bool Jac,
double* globalPars)
1893 double* R = &globalPars[ 0];
1894 double*
A = &globalPars[ 3];
1897 if(
a==0.)
return false;
1903 R[0]+=(
A[0]*S); R[1]+=(
A[1]*S); R[2]+=(
A[2]*S);
if(!Jac)
return true;
1907 for(
int i=7; i<42; i+=7) {
1909 double* dR = &globalPars[i ];
1910 double* dA = &globalPars[i+3];
1911 dR[0]+=(dA[0]*S); dR[1]+=(dA[1]*S); dR[2]+=(dA[2]*S);
1981 if(&E==
this)
return(*
this);
2044 const InDet::PixelClusterCollection::const_iterator* sibegin
2045 = std::any_cast<const InDet::PixelClusterCollection::const_iterator>(&
m_sibegin);
2046 const InDet::PixelClusterCollection::const_iterator* siend
2047 = std::any_cast<const InDet::PixelClusterCollection::const_iterator>(&
m_siend);
2048 if (sibegin==
nullptr or siend==
nullptr)
return 0;
2049 for (InDet::PixelClusterCollection::const_iterator p = *sibegin; p!=*siend; ++p) {
2053 const InDet::SCT_ClusterCollection::const_iterator* sibegin
2054 = std::any_cast<const InDet::SCT_ClusterCollection::const_iterator>(&
m_sibegin);
2055 const InDet::SCT_ClusterCollection::const_iterator* siend
2056 = std::any_cast<const InDet::SCT_ClusterCollection::const_iterator>(&
m_siend);
2057 if (sibegin==
nullptr or siend==
nullptr)
return 0;
2058 for (InDet::SCT_ClusterCollection::const_iterator p = *sibegin; p!=*siend; ++p) {
2062 const InDet::SiClusterCollection::const_iterator* sibegin
2063 = std::any_cast<const InDet::SiClusterCollection::const_iterator>(&
m_sibegin);
2064 const InDet::SiClusterCollection::const_iterator* siend
2065 = std::any_cast<const InDet::SiClusterCollection::const_iterator>(&
m_siend);
2066 if (sibegin==
nullptr or siend==
nullptr)
return 0;
2067 for (InDet::SiClusterCollection::const_iterator p = *sibegin; p!=*siend; ++p) {
2090 cl =
true;
return true;
2254 if (
m_tools->isITkGeometry()) {
2288 covX = c->width().phiR();
2290 covXY = c->localCovariance()(1,0);
2292 if(!
m_tools->useFastTracking()){
2293 if(covX < v(0,0)) covX=v(0,0);
2302 covY=c->width().z();
2304 if(!
m_tools->useFastTracking()){
2305 if(covY < v(1,1)) covY=v(1,1);
2321 if(i<0 || i>2)
return nullptr;
2383 if(
m_ndf==1)
return;
2386 if(colRow.x()==1. && colRow.y()==1.)
return;
2388 std::unique_ptr<Trk::TrackParameters> tr =
Tc.convert(
true);
2389 std::unique_ptr<const Trk::RIO_OnTrack> ri(
m_riotool->correct(*
m_cluster, *tr, Gaudi::Hive::currentContext()));
#define AmgSymMatrix(dim)
struct TBPatternUnitContext S2
struct TBPatternUnitContext S3
struct TBPatternUnitContext S1
This is a "hash" representation of an Identifier.
bool ForwardPropagationWithSearch(SiTrajectoryElement_xk &, const EventContext &)
Trk::TrackStateOnSurface * m_tsos[3]
int searchClustersSub(Trk::PatternTrackParameters &, SiClusterLink_xk *)
void precisePosCov(Trk::PatternTrackParameters &)
Trk::PatternTrackParameters m_parametersPredForward
Pattern track parameters.
double m_localDir[3]
the transform for this element
double m_xi2totalBackward
bool isNextClusterHoleB(bool &, double &)
bool BackwardPropagationFilter(SiTrajectoryElement_xk &, const EventContext &ctx)
bool BackwardPropagationSmoother(SiTrajectoryElement_xk &, bool, const EventContext &ctx)
Amg::MatrixX m_covariance
int searchClusters(Trk::PatternTrackParameters &, SiClusterLink_xk *)
std::unique_ptr< Trk::TrackParameters > trackParameters(bool, int)
bool ForwardPropagationWithoutSearch(SiTrajectoryElement_xk &, const EventContext &)
const Trk::IPatternParametersPropagator * m_proptool
bool lastTrajectorElement()
int numberClusters() const
const Trk::IRIO_OnTrackCreator * m_riotool
const Trk::PatternTrackParameters & parametersUB() const
observed
void setCluster(const InDet::SiCluster *)
Trk::TrackStateOnSurface * trackSimpleStateOnSurface(bool, bool, int)
const InDetDD::SiDetectorElement * m_detelement
void setTools(const InDet::SiTools_xk *)
Trk::PatternTrackParameters m_parametersPredBackward
For backward filtering / smoothing Predicted state, backward.
Trk::PatternTrackParameters m_parametersSM
bool initiateStatePrecise(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
const InDet::SiCluster * m_clusterOld
bool rungeKuttaToPlane(bool updateJacobian, double *globalPars)
Runge Kutta step to plane Updates the "globalPars" array, which is also used to pass the input.
const Trk::IPatternParametersUpdator * m_updatorTool
const InDet::SiCluster * m_cluster
bool firstTrajectorElement(const Trk::TrackParameters &, const EventContext &ctx)
void checkBoundaries(const Trk::PatternTrackParameters &pars)
bool initiateStateWithCorrection(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
Amg::Vector3D globalPosition()
const Trk::PatternTrackParameters & parametersPB() const
predicted
void setParametersB(Trk::PatternTrackParameters &)
Trk::NoiseOnSurface m_noise
std::unique_ptr< Trk::TrackParameters > trackParametersWithNewDirection(bool, int)
void setDeadRadLength(Trk::PatternTrackParameters &)
bool addClusterPreciseWithCorrection(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
bool addCluster(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
bool combineStates(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
const InDet::SiDetElementBoundaryLink_xk * m_detlink
bool transformGlobalToPlane(bool updateJacobian, double *globalPars, Trk::PatternTrackParameters &startingParameters, Trk::PatternTrackParameters &outputParameters)
Tramsform from global to plane surface Will take the global parameters in globalPars,...
int m_detstatus
0 (no clusters)
bool ForwardPropagationWithoutSearchPreciseWithCorrection(SiTrajectoryElement_xk &, const EventContext &)
bool transformPlaneToGlobal(bool, Trk::PatternTrackParameters &localParameters, double *globalPars)
Tramsform from plane to global Will take the surface and parameters from localParameters and populate...
double quality(int &) const
bool addClusterPrecise(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
double m_localTransform[13]
void setClusterB(const InDet::SiCluster *, double)
void eraseClusterForwardPropagation()
bool BackwardPropagationPrecise(SiTrajectoryElement_xk &, const EventContext &ctx)
Trk::TrackStateOnSurface * trackStateOnSurface(bool, bool, bool, int, const EventContext &ctx)
bool initiateState(Trk::PatternTrackParameters &inputPars, Trk::PatternTrackParameters &outputPars)
inputPars: input parameters.
static constexpr double s_oneOverTwelve
Trk::PatternTrackParameters m_parametersUpdatedForward
Updated state, forward.
bool propagateParameters(Trk::PatternTrackParameters &startingParameters, Trk::PatternTrackParameters &outParameters, double &step)
Start from 'startingParameters', propagate to current surface.
const InDet::SiCluster * m_clusterNoAdd
Trk::PatternTrackParameters m_parametersUpdatedBackward
Updated state, backward.
bool lastTrajectorElementPrecise()
const double & step() const
void setParametersF(Trk::PatternTrackParameters &)
void patternCovariances(const InDet::SiCluster *, double &, double &, double &) const
Private Methods.
const Trk::PRDtoTrackMap * m_prdToTrackMap
void noiseProduction(int, const Trk::PatternTrackParameters &, double rad_length=-1., bool useMomentum=false)
bool setDead(const Trk::Surface *)
MagField::AtlasFieldCache m_fieldCache
Trk::TrackStateOnSurface * tsos(int i)
const Trk::PatternTrackParameters & parametersPF() const
track parameters for forward filter / smoother predicted
InDet::SiClusterLink_xk m_linkBackward[10]
bool isNextClusterHoleF(bool &, double &)
checks if removing this cluster from the forward propagation would result in a critical number of hol...
bool propagate(Trk::PatternTrackParameters &startingParameters, Trk::PatternTrackParameters &outParameters, double &step, const EventContext &ctx)
Will propagate the startingParameters from their reference to the surface associated with this elemen...
const InDet::SiTools_xk * m_tools
const Trk::Surface * m_surface
Trk::TrackStateOnSurface * trackPerigeeStateOnSurface(const EventContext &ctx)
InDet::SiClusterLink_xk m_linkForward[10]
bool difference() const
check for a difference between forward and back propagation
bool straightLineStepToPlane(bool updateJacobian, double *globalPars)
Straight line step to plane Updates the "globalPars" array, which is also used to pass the input.
const double & correctionIMom() const
bool production(const TrackParameters *)
void addNoise(const NoiseOnSurface &, PropDirection)
void setParametersWithCovariance(const Surface *, const double *, const double *)
virtual const Surface & associatedSurface() const override final
Access to the Surface associated to the Parameters.
void setParameters(const Surface *, const double *)
void removeNoise(const NoiseOnSurface &, PropDirection)
bool initiate(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &)
bool iscovariance() const
Class describing the Line to which the Perigee refers to.
represents a deflection of the track caused through multiple scattering in material.
Abstract Base Class for tracking surfaces.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
virtual constexpr SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
represents the track state (measurement, material, fit parameters and quality) at a surface.
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
@ Scatterer
This represents a scattering point on the track, and so will contain TrackParameters and MaterialEffe...
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
ATH_ALWAYS_INLINE void propJacobian(double *ATH_RESTRICT P, const double *ATH_RESTRICT H0, const double *ATH_RESTRICT H1, const double *ATH_RESTRICT H2, const double *ATH_RESTRICT A, const double *ATH_RESTRICT A0, const double *ATH_RESTRICT A3, const double *ATH_RESTRICT A4, const double *ATH_RESTRICT A6, const double S3)
This provides an inline helper function for updating the jacobian during Runge-Kutta propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters
hold the test vectors and ease the comparison