|
ATLAS Offline Software
|
Go to the documentation of this file.
71 double z = std::abs(Tp.parameters()[1]);
121 if(!startingPatternPars.
production(&startingParameters))
return false;
139 0. , 0., 0., 0.,.00001};
142 cv[5] =
m_ndf==2 ? .1 : .01;
904 std::unique_ptr<Trk::TrackParameters>
tp =
nullptr;
918 std::unique_ptr<Trk::MeasurementBase> ro{};
926 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes>
pat(
939 auto meTemplate = std::make_unique<Trk::MaterialEffectsOnTrack>(
953 std::unique_ptr<Trk::TrackParameters> tpn{};
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;
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;
1070 std::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);
1194 std::unique_ptr<Trk::TrackParameters>
1243 std::unique_ptr<Trk::TrackParameters>
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.;
1381 const EventContext& ctx ) {
1385 double globalParameters[64];
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);
1435 bool useJac =
false;
1436 double globalParameters[64];
1478 double* globalPars) {
1480 double sinPhi,cosPhi,cosTheta,sintheta;
1481 sincos(localParameters.parameters()[2],&sinPhi,&cosPhi);
1482 sincos(localParameters.parameters()[3],&sintheta,&cosTheta);
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());
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];
1682 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));
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);
1982 m_fieldMode =
E.m_fieldMode ;
1983 m_status =
E.m_status ;
1984 m_detstatus =
E.m_detstatus ;
1985 m_inside =
E.m_inside ;
1986 m_nMissing =
E.m_nMissing ;
1987 m_stereo =
E.m_stereo ;
1988 m_detelement =
E.m_detelement ;
1989 m_detlink =
E.m_detlink ;
1990 m_surface =
E.m_surface ;
1991 m_sibegin =
E.m_sibegin ;
1992 m_siend =
E.m_siend ;
1993 m_cluster =
E.m_cluster ;
1994 m_clusterOld =
E.m_clusterOld ;
1995 m_clusterNoAdd =
E.m_clusterNoAdd;
1996 m_parametersPredForward =
E.m_parametersPredForward;
1997 m_parametersUpdatedForward =
E.m_parametersUpdatedForward;
1998 m_parametersPredBackward =
E.m_parametersPredBackward;
1999 m_parametersUpdatedBackward =
E.m_parametersUpdatedBackward;
2000 m_parametersSM =
E.m_parametersSM;
2002 m_xi2Forward =
E.m_xi2Forward ;
2003 m_xi2Backward =
E.m_xi2Backward ;
2004 m_xi2totalForward =
E.m_xi2totalForward ;
2005 m_xi2totalBackward =
E.m_xi2totalBackward;
2006 m_radlength =
E.m_radlength ;
2007 m_radlengthN =
E.m_radlengthN ;
2008 m_energylose =
E.m_energylose ;
2009 m_halflength =
E.m_halflength ;
2011 m_nlinksForward =
E.m_nlinksForward ;
2012 m_nlinksBackward =
E.m_nlinksBackward ;
2013 m_nholesForward =
E.m_nholesForward ;
2014 m_nholesBackward =
E.m_nholesBackward ;
2015 m_dholesForward =
E.m_dholesForward ;
2016 m_dholesBackward =
E.m_dholesBackward ;
2017 m_noisemodel =
E.m_noisemodel ;
2019 m_ndfForward =
E.m_ndfForward ;
2020 m_ndfBackward =
E.m_ndfBackward ;
2021 m_ntsos =
E.m_ntsos ;
2022 m_nclustersForward =
E.m_nclustersForward ;
2023 m_nclustersBackward =
E.m_nclustersBackward ;
2024 m_npixelsBackward =
E.m_npixelsBackward ;
2025 m_noise =
E.m_noise ;
2026 m_tools =
E.m_tools ;
2027 m_covariance =
E.m_covariance ;
2028 m_position =
E.m_position ;
2029 m_invMoment =
E.m_invMoment ;
2030 for(
int i=0;
i!=m_nlinksForward; ++
i) {m_linkForward[
i]=
E.m_linkForward[
i];}
2031 for(
int i=0;
i!=m_nlinksBackward; ++
i) {m_linkBackward[
i]=
E.m_linkBackward[
i];}
2032 for(
int i=0;
i!=m_ntsos ; ++
i) {m_tsos [
i]=
E.m_tsos [
i];}
2033 for(
int i=0;
i!=m_ntsos ; ++
i) {m_utsos[
i]=
E.m_utsos [
i];}
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;
2287 covX =
c->width().phiR();
2289 covXY =
c->localCovariance()(1,0);
2292 if(covX <
v(0,0)) covX=
v(0,0);
2301 covY=
c->width().z();
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);
2403 return searchClustersSub<InDet::SiClusterCollection::const_iterator>(Tp, L);
bool addClusterPrecise(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
const double & covariancePola() const
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
bool isNextClusterHoleF(bool &, double &)
checks if removing this cluster from the forward propagation would result in a critical number of hol...
const double & step() const
bool rungeKuttaToPlane(bool updateJacobian, double *globalPars)
Runge Kutta step to plane Updates the "globalPars" array, which is also used to pass the input.
const double & correctionIMom() const
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
struct TBPatternUnitContext S1
void setParametersWithCovariance(const Surface *, const double *, const double *)
virtual RIO_OnTrack * correct(const PrepRawData &hit, const TrackParameters &trk, const EventContext &ctx) const =0
abstract base method for the creation of RIO_OnTrack it takes a RIO (PrepRawData) and the given Track...
virtual bool propagate(const ::EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const =0
Interfaces WITH EventContext (new)
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
bool BackwardPropagationFilter(SiTrajectoryElement_xk &, const EventContext &ctx)
double m_localDir[3]
the transform for this element
virtual const Surface & associatedSurface() const override final
Access to the Surface associated to the Parameters.
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,...
bool propagateParameters(Trk::PatternTrackParameters &startingParameters, Trk::PatternTrackParameters &outParameters, double &step)
Start from 'startingParameters', propagate to current surface.
bool combineStates(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
Trk::TrackStateOnSurface * m_tsos[3]
void getFieldZR(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field valaue on the z-r plane at given position works only inside the solenoid.
bool initiateStateWithCorrection(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
Eigen::Matrix< double, 2, 1 > Vector2D
const InDet::SiDetElementBoundaryLink_xk * m_detlink
virtual bool addToState(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &, PatternTrackParameters &) const =0
add a PRD-level local position to a track state given by pattern track pars (no chi2 calculated).
bool lastTrajectorElement()
struct TBPatternUnitContext S3
const Trk::IRIO_OnTrackCreator * m_riotool
const InDet::SiCluster * m_cluster
bool isNextClusterHoleB(bool &, double &)
const Amg::MatrixX & localCovariance() const
return const ref to the error matrix
Amg::MatrixX m_covariance
represents a deflection of the track caused through multiple scattering in material.
std::unique_ptr< TrackParameters > convert(bool) const
bool setDead(const Trk::Surface *)
bool addClusterPreciseWithCorrection(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
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.
bool lastTrajectorElementPrecise()
void patternCovariances(const InDet::SiCluster *, double &, double &, double &) const
Private Methods.
void setCluster(const InDet::SiCluster *)
virtual bool addToStateOneDimension(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &, PatternTrackParameters &) const =0
add an explicitly one-dimensional measurement without chi2 calculation to pattern pars.
void setParameters(const Surface *, const double *)
double m_xi2totalBackward
const Trk::PatternTrackParameters & parametersUB() const
observed
Trk::TrackStateOnSurface * trackSimpleStateOnSurface(bool, bool, int)
#define AmgSymMatrix(dim)
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
void eraseClusterForwardPropagation()
const Trk::Surface * m_surface
int m_detstatus
0 (no clusters)
int numberClusters() const
void setParametersB(Trk::PatternTrackParameters &)
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
Trk::PatternTrackParameters m_parametersPredBackward
For backward filtering / smoothing Predicted state, backward.
void noiseProduction(int, const Trk::PatternTrackParameters &, double rad_length=-1., bool useMomentum=false)
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 Trk::PatternTrackParameters & parametersPB() const
predicted
void setTools(const InDet::SiTools_xk *)
double quality(int &) const
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
Trk::PatternTrackParameters m_parametersUpdatedForward
Updated state, forward.
bool ForwardPropagationWithSearch(SiTrajectoryElement_xk &, const EventContext &)
double m_localTransform[13]
bool firstTrajectorElement(const Trk::TrackParameters &, const EventContext &ctx)
Trk::PatternTrackParameters m_parametersUpdatedBackward
Updated state, backward.
const Trk::IPatternParametersUpdator * m_updatorTool
InDet::SiClusterLink_xk m_linkForward[10]
void removeNoise(const NoiseOnSurface &, PropDirection)
Trk::TrackStateOnSurface * trackStateOnSurface(bool, bool, bool, int)
Amg::Vector3D globalPosition()
const InDetDD::SiDetectorElement * m_detelement
bool initiateStatePrecise(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &)
int intersect(const Trk::PatternTrackParameters &, double &) const
Eigen::Affine3d Transform3D
bool initiateState(Trk::PatternTrackParameters &inputPars, Trk::PatternTrackParameters &outputPars)
inputPars: input parameters.
bool straightLineStepToPlane(bool updateJacobian, double *globalPars)
Straight line step to plane Updates the "globalPars" array, which is also used to pass the input.
void checkBoundaries(const Trk::PatternTrackParameters &pars)
Trk::NoiseOnSurface m_noise
Trk::PatternTrackParameters m_parametersPredForward
Pattern track parameters.
bool BackwardPropagationPrecise(SiTrajectoryElement_xk &, const EventContext &ctx)
const Trk::PatternTrackParameters & parametersPF() const
track parameters for forward filter / smoother predicted
void addNoise(const NoiseOnSurface &, PropDirection)
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
void setCovariance(const double *)
void set(const double &, const double &, const double &, const double &)
const InDet::SiCluster * cluster() const
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
bool BackwardPropagationSmoother(SiTrajectoryElement_xk &, bool, const EventContext &ctx)
bool iscovariance() const
void precisePosCov(Trk::PatternTrackParameters &)
Trk::TrackStateOnSurface * tsos(int i)
const Trk::PRDtoTrackMap * m_prdToTrackMap
represents the track state (measurement, material, fit parameters and quality) at a surface.
const Trk::IPatternParametersPropagator * m_proptool
virtual bool combineStates(PatternTrackParameters &, PatternTrackParameters &, PatternTrackParameters &) const =0
combine two track states into a resulting state.
const Amg::Vector2D & localPosition() const
return the local position reference
Trk::TrackStateOnSurface * trackPerigeeStateOnSurface(const EventContext &ctx)
bool initiate(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &)
Eigen::Matrix< double, 3, 1 > Vector3D
MagneticFieldMode magneticFieldMode() const
Returns the MagneticFieldMode as specified.
bool difference() const
check for a difference between forward and back propagation
bool ForwardPropagationWithoutSearchPreciseWithCorrection(SiTrajectoryElement_xk &, const EventContext &)
InDet::SiClusterLink_xk m_linkBackward[10]
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Trk::PatternTrackParameters m_parametersSM
void setParametersF(Trk::PatternTrackParameters &)
static constexpr double s_oneOverTwelve
MagField::AtlasFieldCache m_fieldCache
const InDet::SiWidth & width() const
return width class reference
int searchClusters(Trk::PatternTrackParameters &, SiClusterLink_xk *)
bool transformPlaneToGlobal(bool, Trk::PatternTrackParameters &localParameters, double *globalPars)
Tramsform from plane to global Will take the surface and parameters from localParameters and populate...
const InDet::SiCluster * m_clusterOld
void setDeadRadLength(Trk::PatternTrackParameters &)
bool addCluster(Trk::PatternTrackParameters &, Trk::PatternTrackParameters &, double &)
const InDet::SiCluster * m_clusterNoAdd
struct TBPatternUnitContext S2
@ Scatterer
This represents a scattering point on the track, and so will contain TrackParameters and MaterialEffe...
const Amg::Vector2D & colRow() const
bool production(const TrackParameters *)
const InDet::SiTools_xk * m_tools
Amg::Vector3D position() const
Amg::Vector3D momentum() const
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
std::unique_ptr< Trk::TrackParameters > trackParameters(bool, int)
const double & xi2() const
void diagonalization(double)
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
void setClusterB(const InDet::SiCluster *, double)
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
std::unique_ptr< Trk::TrackParameters > trackParametersWithNewDirection(bool, int)
const double & covarianceAzim() const
bool ForwardPropagationWithoutSearch(SiTrajectoryElement_xk &, const EventContext &)