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(
1027 ro = std::make_unique<InDet::SCT_ClusterOnTrack>(
sc, std::move(locp), std::move(cv), iH,
sc->globalPosition());
1031 ro = std::make_unique<InDet::PixelClusterOnTrack>(
1032 pc, std::move(locp), std::move(cv), iH, pc->globalPosition(), pc->gangedPixel());
1056 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;
1070std::unique_ptr<Trk::TrackParameters>
1125 if(Model < 1 || Model > 2)
return;
1128 double q = useMomentum ?
m_invMoment : std::abs(
Tp.parameters()[4]);
1137 if (s < .01) s = 100.;
1141 if (s < .05) s = 20.;
1159 if(d < 1.e-5) d = 1.e-5;
1161 double covarianceAzim = covariancePola/d;
1163 double covarianceIMom;
1164 double correctionIMom;
1171 covarianceIMom = (.2*dp*dp)*(q*q);
1173 correctionIMom = 1.-dp;
1177 correctionIMom = .70;
1178 covarianceIMom = (correctionIMom-1.)*(correctionIMom-1.)*(q*q);
1181 if(Dir>0) correctionIMom = 1./correctionIMom;
1183 m_noise.set(covarianceAzim,covariancePola,covarianceIMom,correctionIMom);
1194std::unique_ptr<Trk::TrackParameters>
1243std::unique_ptr<Trk::TrackParameters>
1247 Tp.changeDirection();
1248 return Tp.convert(cov);
1329 return -(
P[0]*M[0]+
P[1]*M[1]);
1364 m_ndf == 2 ? w = 1.2*(Xc-X*.5) : w = Xc-X ;
if(w < -1.) w = -1.;
1380 double & StepLength,
1381 const EventContext& ctx ) {
1385 double globalParameters[64];
1405 StepLength = globalParameters[45];
1410 startingParameters, *
m_surface, outputParameters,
1414 double sinPhi,cosPhi,sinTheta,cosTheta;
1415 sincos(outputParameters.parameters()[2],&sinPhi,&cosPhi);
1416 sincos(outputParameters.parameters()[3],&sinTheta,&cosTheta);
1434 double & StepLength ) {
1435 bool useJac =
false;
1436 double globalParameters[64];
1455 StepLength = globalParameters[45];
1478 double* globalPars) {
1480 double sinPhi,cosPhi,cosTheta,sintheta;
1481 sincos(localParameters.parameters()[2],&sinPhi,&cosPhi);
1482 sincos(localParameters.parameters()[3],&sintheta,&cosTheta);
1483 if (
m_tools->isITkGeometry()) {
1484 if(std::abs(sintheta) < std::abs(localParameters.parameters()[4])*50.)
return false;
1489 throw(std::runtime_error(
"TrackParameters associated surface is null pointer in InDet::SiTrajectoryElement_xk::transformPlaneToGlobal"));
1495 double Ax[3] = {T(0,0),T(1,0),T(2,0)};
1496 double Ay[3] = {T(0,1),T(1,1),T(2,1)};
1499 globalPars[ 0] = localParameters.parameters()[0]*Ax[0]+localParameters.parameters()[1]*Ay[0]+T(0,3);
1500 globalPars[ 1] = localParameters.parameters()[0]*Ax[1]+localParameters.parameters()[1]*Ay[1]+T(1,3);
1501 globalPars[ 2] = localParameters.parameters()[0]*Ax[2]+localParameters.parameters()[1]*Ay[2]+T(2,3);
1503 globalPars[ 3] = cosPhi*sintheta;
1504 globalPars[ 4] = sinPhi*sintheta;
1505 globalPars[ 5] = cosTheta;
1507 globalPars[ 6] = localParameters.parameters()[4];
1509 if(std::abs(globalPars[6])<1.e-20) {
1510 if (globalPars[6] < 0){
1511 globalPars[6]=-1.e-20;
1513 else globalPars[6]= 1.e-20;
1520 globalPars[ 7] = Ax[0]; globalPars[14] = Ay[0]; globalPars[21] = 0.; globalPars[28] = 0.; globalPars[35] = 0.;
1521 globalPars[ 8] = Ax[1]; globalPars[15] = Ay[1]; globalPars[22] = 0.; globalPars[29] = 0.; globalPars[36] = 0.;
1522 globalPars[ 9] = Ax[2]; globalPars[16] = Ay[2]; globalPars[23] = 0.; globalPars[30] = 0.; globalPars[37] = 0.;
1523 globalPars[10] = 0.; globalPars[17] = 0.; globalPars[24] =-globalPars[4]; globalPars[31] = cosPhi*cosTheta; globalPars[38] = 0.;
1524 globalPars[11] = 0.; globalPars[18] = 0.; globalPars[25] = globalPars[3]; globalPars[32] = sinPhi*cosTheta; globalPars[39] = 0.;
1525 globalPars[12] = 0.; globalPars[19] = 0.; globalPars[26] = 0.; globalPars[33] = -sintheta; globalPars[40] = 0.;
1528 globalPars[42] = 0.;
1529 globalPars[43] = 0.;
1530 globalPars[44] = 0.;
1533 globalPars[45] = 0.;
1565 d[0]*Ax[0]+d[1]*Ax[1]+d[2]*Ax[2],
1566 d[0]*Ay[0]+d[1]*Ay[1]+d[2]*Ay[2],
1567 atan2(globalPars[4],globalPars[3]),
1568 acos(globalPars[5]),
1579 double A = Az[0]*globalPars[3]+Az[1]*globalPars[4]+Az[2]*globalPars[5];
1581 double s0 = Az[0]*globalPars[ 7]+Az[1]*globalPars[ 8]+Az[2]*globalPars[ 9];
1582 double s1 = Az[0]*globalPars[14]+Az[1]*globalPars[15]+Az[2]*globalPars[16];
1583 double s2 = Az[0]*globalPars[21]+Az[1]*globalPars[22]+Az[2]*globalPars[23];
1584 double s3 = Az[0]*globalPars[28]+Az[1]*globalPars[29]+Az[2]*globalPars[30];
1585 double s4 = Az[0]*globalPars[35]+Az[1]*globalPars[36]+Az[2]*globalPars[37];
1586 double T0 =(Ax[0]*globalPars[ 3]+Ax[1]*globalPars[ 4]+Ax[2]*globalPars[ 5])*
A;
1587 double T1 =(Ay[0]*globalPars[ 3]+Ay[1]*globalPars[ 4]+Ay[2]*globalPars[ 5])*
A;
1588 double n = 1./globalPars[6];
1594 Jac[ 0] = (Ax[0]*globalPars[ 7]+Ax[1]*globalPars[ 8])+(Ax[2]*globalPars[ 9]-
s0*T0);
1595 Jac[ 1] = (Ax[0]*globalPars[14]+Ax[1]*globalPars[15])+(Ax[2]*globalPars[16]-s1*T0);
1596 Jac[ 2] = (Ax[0]*globalPars[21]+Ax[1]*globalPars[22])+(Ax[2]*globalPars[23]-s2*T0);
1597 Jac[ 3] = (Ax[0]*globalPars[28]+Ax[1]*globalPars[29])+(Ax[2]*globalPars[30]-s3*T0);
1598 Jac[ 4] =((Ax[0]*globalPars[35]+Ax[1]*globalPars[36])+(Ax[2]*globalPars[37]-s4*T0))*n;
1600 Jac[ 5] = (Ay[0]*globalPars[ 7]+Ay[1]*globalPars[ 8])+(Ay[2]*globalPars[ 9]-
s0*T1);
1601 Jac[ 6] = (Ay[0]*globalPars[14]+Ay[1]*globalPars[15])+(Ay[2]*globalPars[16]-s1*T1);
1602 Jac[ 7] = (Ay[0]*globalPars[21]+Ay[1]*globalPars[22])+(Ay[2]*globalPars[23]-s2*T1);
1603 Jac[ 8] = (Ay[0]*globalPars[28]+Ay[1]*globalPars[29])+(Ay[2]*globalPars[30]-s3*T1);
1604 Jac[ 9] =((Ay[0]*globalPars[35]+Ay[1]*globalPars[36])+(Ay[2]*globalPars[37]-s4*T1))*n;
1609 double C = globalPars[3]*globalPars[3]+globalPars[4]*globalPars[4];
1613 P3 = globalPars[3]*
C;
1614 P4 =globalPars[4]*
C;
1623 double T2 =(P3*globalPars[43]-P4*globalPars[42])*
A;
1624 double C44 =
C*globalPars[44] *
A;
1626 Jac[10] = P3*globalPars[11]-P4*globalPars[10]-
s0*T2;
1627 Jac[11] = P3*globalPars[18]-P4*globalPars[17]-s1*T2;
1628 Jac[12] = P3*globalPars[25]-P4*globalPars[24]-s2*T2;
1629 Jac[13] = P3*globalPars[32]-P4*globalPars[31]-s3*T2;
1630 Jac[14] =(P3*globalPars[39]-P4*globalPars[38]-s4*T2)*n;
1632 Jac[15] =
C*globalPars[12]-
s0*C44;
1633 Jac[16] =
C*globalPars[19]-s1*C44;
1634 Jac[17] =
C*globalPars[26]-s2*C44;
1635 Jac[18] =
C*globalPars[33]-s3*C44;
1636 Jac[19] =(
C*globalPars[40]-s4*C44)*n;
1640 AmgSymMatrix(5) newCov = Trk::RungeKuttaUtils::newCovarianceMatrix(Jac, *startingParameters.covariance());
1644 const AmgSymMatrix(5) & t = *outputParameters.covariance();
1645 if(t(0, 0)<=0. || t(1, 1)<=0. || t(2, 2)<=0. || t(3, 3)<=0. || t(4, 4)<=0.)
return false;
1661(
bool Jac,
double* globalPars)
1664 const double Smin = .1 ;
1667 const double Shel = 5. ;
1669 const double dlt = .001 ;
1672 if(std::abs(globalPars[6]) > .05)
return false;
1676 double* R = &globalPars[ 0];
1678 double*
A = &globalPars[ 3];
1680 double* sA = &globalPars[42];
1681 double Pi = 149.89626*globalPars[6];
1683 double Pa = std::abs (globalPars[6]);
1687 if(
a==0.)
return false;
1690 double S0 = std::abs(S) ;
1704 else if( (Pa*S0) > .3) {
1705 if (S >0) S = 0.3 / Pa;
1723 if(std::abs(S) < Shel) Helix =
true;
1724 double S3=(1./3.)*S;
1730 double H0[3] = {f0[0]*PS2,
1734 double A0 =
A[1]*H0[2]-
A[2]*H0[1] ;
1735 double B0 =
A[2]*H0[0]-
A[0]*H0[2] ;
1736 double C0 =
A[0]*H0[1]-
A[1]*H0[0] ;
1738 double A2 = A0+
A[0] ;
1739 double B2 =
B0+
A[1] ;
1740 double C2 = C0+
A[2] ;
1742 double A1 = A2+
A[0] ;
1743 double B1 = B2+
A[1] ;
1744 double C1 = C2+
A[2] ;
1749 double gP[3]={R[0]+A1*S4,
1763 double H1[3] = {f[0]*PS2,
1766 double A3 = (
A[0]+B2*H1[2])-C2*H1[1] ;
1767 double B3 = (
A[1]+C2*H1[0])-A2*H1[2] ;
1768 double C3 = (
A[2]+A2*H1[1])-B2*H1[0] ;
1770 double A4 = (
A[0]+B3*H1[2])-C3*H1[1] ;
1771 double B4 = (
A[1]+C3*H1[0])-A3*H1[2] ;
1772 double C4 = (
A[2]+A3*H1[1])-B3*H1[0] ;
1774 double A5 = 2.*A4-
A[0] ;
1775 double B5 = 2.*B4-
A[1] ;
1776 double C5 = 2.*C4-
A[2] ;
1781 double gP[3]={R[0]+S*A4,
1794 double H2[3] = {f[0]*PS2,
1798 double A6 = B5*
H2[2]-C5*
H2[1] ;
1799 double B6 = C5*
H2[0]-A5*
H2[2] ;
1800 double C6 = A5*
H2[1]-B5*
H2[0] ;
1805 double EST = std::abs((A1+A6)-(A3+A4))+std::abs((B1+B6)-(B3+B4))+std::abs((C1+C6)-(C3+C4));
1814 if((!ste && S0 > std::abs(S)*100.) || std::abs(globalPars[45]+=S) > 2000.)
return false;
1817 double A0arr[3]{A0,
B0,C0};
1818 double A3arr[3]{A3,B3,C3};
1819 double A4arr[3]{A4,B4,C4};
1820 double A6arr[3]{A6,B6,C6};
1826 R[0]+=(A2+A3+A4)*
S3;
1827 A[0] = ((A0+2.*A3)+(A5+A6));
1828 R[1]+=(B2+B3+B4)*
S3;
1829 A[1] = ((
B0+2.*B3)+(B5+B6));
1830 R[2]+=(C2+C3+C4)*
S3;
1831 A[2] = ((C0+2.*C3)+(C5+C6));
1832 if(!
m_tools->isITkGeometry()){
1838 double D = 1./sqrt(
A[0]*
A[0]+
A[1]*
A[1]+
A[2]*
A[2]);
1839 A[0]*=D;
A[1]*=D;
A[2]*=D;
1844 if(
a==0.)
return false;
1846 double aSn = std::abs(Sn);
1864 double aS = std::abs(S);
1868 if(++it > 2)
return false;
1870 if (aSn < aS) S = Sn;
1875 else if( aSn < aS ) S = Sn;
1890(
bool Jac,
double* globalPars)
1892 double* R = &globalPars[ 0];
1893 double*
A = &globalPars[ 3];
1896 if(
a==0.)
return false;
1902 R[0]+=(
A[0]*S); R[1]+=(
A[1]*S); R[2]+=(
A[2]*S);
if(!Jac)
return true;
1906 for(
int i=7; i<42; i+=7) {
1908 double* dR = &globalPars[i ];
1909 double* dA = &globalPars[i+3];
1910 dR[0]+=(dA[0]*S); dR[1]+=(dA[1]*S); dR[2]+=(dA[2]*S);
1980 if(&E==
this)
return(*
this);
2043 const InDet::PixelClusterCollection::const_iterator* sibegin
2044 = std::any_cast<const InDet::PixelClusterCollection::const_iterator>(&
m_sibegin);
2045 const InDet::PixelClusterCollection::const_iterator* siend
2046 = std::any_cast<const InDet::PixelClusterCollection::const_iterator>(&
m_siend);
2047 if (sibegin==
nullptr or siend==
nullptr)
return 0;
2048 for (InDet::PixelClusterCollection::const_iterator p = *sibegin; p!=*siend; ++p) {
2052 const InDet::SCT_ClusterCollection::const_iterator* sibegin
2053 = std::any_cast<const InDet::SCT_ClusterCollection::const_iterator>(&
m_sibegin);
2054 const InDet::SCT_ClusterCollection::const_iterator* siend
2055 = std::any_cast<const InDet::SCT_ClusterCollection::const_iterator>(&
m_siend);
2056 if (sibegin==
nullptr or siend==
nullptr)
return 0;
2057 for (InDet::SCT_ClusterCollection::const_iterator p = *sibegin; p!=*siend; ++p) {
2061 const InDet::SiClusterCollection::const_iterator* sibegin
2062 = std::any_cast<const InDet::SiClusterCollection::const_iterator>(&
m_sibegin);
2063 const InDet::SiClusterCollection::const_iterator* siend
2064 = std::any_cast<const InDet::SiClusterCollection::const_iterator>(&
m_siend);
2065 if (sibegin==
nullptr or siend==
nullptr)
return 0;
2066 for (InDet::SiClusterCollection::const_iterator p = *sibegin; p!=*siend; ++p) {
2089 cl =
true;
return true;
2253 if (
m_tools->isITkGeometry()) {
2287 covX = c->width().phiR();
2289 covXY = c->localCovariance()(1,0);
2291 if(!
m_tools->useFastTracking()){
2292 if(covX < v(0,0)) covX=v(0,0);
2301 covY=c->width().z();
2303 if(!
m_tools->useFastTracking()){
2304 if(covY < v(1,1)) covY=v(1,1);
2320 if(i<0 || i>2)
return nullptr;
2382 if(
m_ndf==1)
return;
2385 if(colRow.x()==1. && colRow.y()==1.)
return;
2387 std::unique_ptr<Trk::TrackParameters> tr =
Tc.convert(
true);
2388 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 &)
Trk::TrackStateOnSurface * trackStateOnSurface(bool, bool, bool, int)
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)
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