51 &recHits,
bool hitsAreReverse,
58 (materialEffects >= brokenLinesCoarse) ? 1 : refTsos.localParameters().mixedFormatVector().kSize,
59 (useBeamSpot ==
true) ? recHits.
size()+1 : recHits.
size(),
60 (materialEffects >= brokenLinesCoarse) ?
61 2*((useBeamSpot ==
true) ? recHits.
size()+1 : recHits.
size()) :
62 ( (materialEffects == breakPoints) ? 2*((useBeamSpot ==
true) ? recHits.
size()+1 : recHits.
size())-2 : 0) ,
63 (materialEffects >= brokenLinesCoarse) ?
64 2*((useBeamSpot ==
true) ? recHits.
size()+1 : recHits.
size())-4 :
65 ( (materialEffects == breakPoints) ? 2*((useBeamSpot ==
true) ? recHits.
size()+1 : recHits.
size())-2 : 0) )
72 fwdRecHits.reserve(recHits.size());
73 for (TransientTrackingRecHit::ConstRecHitContainer::const_reverse_iterator it=recHits.rbegin();
74 it != recHits.rend(); ++it) {
75 fwdRecHits.push_back(*it);
79 useBeamSpot, beamSpot);
83 useBeamSpot, beamSpot);
93 (materialEffects >= brokenLinesCoarse) ? 1 : nPar,
95 (materialEffects >= brokenLinesCoarse) ? 2*nHits : ( (materialEffects == breakPoints) ? 2*nHits-2 : 0 ),
96 (materialEffects >= brokenLinesCoarse) ? 2*nHits-4 : ( (materialEffects == breakPoints) ? 2*nHits-2 : 0 ) )
114 std::auto_ptr<MaterialEffectsUpdator> aMaterialEffectsUpdator
116 if (!aMaterialEffectsUpdator.get())
return false;
119 std::vector<AlgebraicMatrix> allJacobians;
125 std::vector<AlgebraicSymMatrix> allCurvatureChanges;
130 std::vector<AlgebraicMatrix> allProjections;
132 std::vector<AlgebraicSymMatrix> allDeltaParameterCovs;
136 std::vector<AlgebraicMatrix> allLocalToCurv;
138 std::vector<double> allSteps;
140 std::vector<AlgebraicMatrix> allCurvlinJacobians;
145 unsigned int iRow = 0;
155 if (!tsctbl.isValid()) {
156 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::construct"
157 <<
"TrajectoryStateClostestToBeamLine invalid. Skip track.";
166 std::pair< TrajectoryStateOnSurface, double > tsosWithPath =
169 if (!tsosWithPath.first.isValid())
return false;
184 allRecHits.push_back(bsRecHit);
189 TransientTrackingRecHit::ConstRecHitContainer::const_iterator itRecHit;
190 for ( itRecHit = recHits.begin(); itRecHit != recHits.end(); ++itRecHit ) {
192 allRecHits.push_back(hitPtr);
195 for ( itRecHit = allRecHits.begin(); itRecHit != allRecHits.end(); ++itRecHit ) {
205 allJacobians.push_back(fullJacobian);
208 const AlgebraicMatrix localToCurvilinear = asHepMatrix<5>(startTrafo.jacobian());
213 allLocalToCurv.push_back(localToCurvilinear);
214 allSteps.push_back(0.);
215 allCurvlinJacobians.push_back(firstCurvlinJacobian);
221 double nextStep = 0.;
224 if (!this->
propagate(previousHitPtr->det()->surface(), previousTsos,
225 hitPtr->det()->surface(), nextTsos,
226 nextJacobian, nextCurvlinJacobian, nextStep, propDir, magField)) {
230 allJacobians.push_back(nextJacobian);
231 fullJacobian = nextJacobian * previousChangeInCurvature * fullJacobian;
235 const AlgebraicMatrix localToCurvilinear = asHepMatrix<5>(startTrafo.jacobian());
236 allLocalToCurv.push_back(localToCurvilinear);
237 if (nextStep == 0.) {
238 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::construct"
239 <<
"step 0. from id " << previousHitPtr->geographicalId()
240 <<
" to " << hitPtr->det()->geographicalId() <<
".";
243 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::construct" <<
"Skip track.";
247 allSteps.push_back(nextStep);
248 allCurvlinJacobians.push_back(nextCurvlinJacobian);
258 if ( !updatedTsos.isValid() )
return false;
260 if (
theTsosVec.back().localParameters().charge() )
263 /
theTsosVec.back().localParameters().signedInverseMomentum();
267 allDeltaParameterCovs.push_back( asHepMatrix<5>(updatedTsos.localError().matrix()) );
268 allCurvatureChanges.push_back(previousChangeInCurvature);
274 previousHitPtr = hitPtr;
290 switch (materialEffects) {
297 allDeltaParameterCovs);
301 allDeltaParameterCovs, allLocalToCurv);
311 if (!msOK)
return false;
334 switch (materialEffects) {
371 const std::pair<TrajectoryStateOnSurface, double> tsosWithPath =
375 if (!tsosWithPath.first.isValid())
return false;
377 nextStep = tsosWithPath.second;
381 tsosWithPath.first.globalPosition(),
382 tsosWithPath.first.globalMomentum(),
383 tsosWithPath.second);
384 const AlgebraicMatrix curvilinearJacobian = asHepMatrix<5,5>(aJacobian.jacobian());
388 const AlgebraicMatrix localToCurvilinear = asHepMatrix<5>(startTrafo.jacobian());
392 const AlgebraicMatrix curvilinearToLocal = asHepMatrix<5>(endTrafo.jacobian());
396 newCurvlinJacobian = curvilinearJacobian;
397 newJacobian = curvilinearToLocal * curvilinearJacobian * localToCurvilinear;
398 newTsos = tsosWithPath.first;
416 hitPtr->clone(updatedTsos) : hitPtr);
418 const LocalPoint localMeasurement = newHitPtr->localPosition();
419 const LocalError localMeasurementCov = newHitPtr->localPositionError();
472 const std::vector<AlgebraicMatrix> &allProjections,
473 const std::vector<AlgebraicSymMatrix> &allCurvatureChanges,
474 const std::vector<AlgebraicSymMatrix> &allDeltaParameterCovs)
493 for (
unsigned int k = 1;
k < allJacobians.size(); ++
k) {
495 paramMaterialEffectsCov = paramMaterialEffectsCov.similarity(allJacobians[
k]);
498 deltaMaterialEffectsCov = paramMaterialEffectsCov.similarity(allProjections[k]);
505 paramMaterialEffectsCov += allDeltaParameterCovs[
k];
507 tempParameterCov = paramMaterialEffectsCov;
510 for (
unsigned int l = k+1;
l < allJacobians.size(); ++
l) {
511 tempParameterCov = allJacobians[
l] * allCurvatureChanges[
l] * tempParameterCov;
512 tempMeasurementCov = allProjections[
l] * tempParameterCov * allProjections[
k].T();
529 paramMaterialEffectsCov = paramMaterialEffectsCov.similarity(allCurvatureChanges[k]);
540 const std::vector<AlgebraicMatrix> &allProjections,
541 const std::vector<AlgebraicSymMatrix> &allCurvatureChanges,
542 const std::vector<AlgebraicSymMatrix> &allDeltaParameterCovs,
543 const std::vector<AlgebraicMatrix> &allLocalToCurv)
547 int offsetMeas =
nMeasPerHit * allJacobians.size();
552 MSprojection[0][1] = 1;
553 MSprojection[1][2] = 1;
558 for (
unsigned int k = 1;
k < allJacobians.size(); ++
k) {
561 tempJacobian = allJacobians[
k] * allCurvatureChanges[
k];
562 tempMSCov = allDeltaParameterCovs[
k-1].similarity(allLocalToCurv[
k-1]);
563 tempMSCovProj = tempMSCov.similarity(MSprojection);
569 tempMSJacProj = (allProjections[
k] * ( tempJacobian * allLocalToCurv[
k-1].inverse(ierr) )) * MSprojection.T();
571 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBp"
572 <<
"Inversion 1 for break points failed: " << ierr;
580 for (
unsigned int l =
k+1;
l < allJacobians.size(); ++
l) {
583 tempJacobian = allJacobians[
l] * allCurvatureChanges[
l] * tempJacobian;
584 tempMSJacProj = (allProjections[
l] * ( tempJacobian * allLocalToCurv[
k-1].inverse(ierr) )) * MSprojection.T();
586 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBp"
587 <<
"Inversion 2 for break points failed: " << ierr;
605 const std::vector<AlgebraicMatrix> &allProjections,
606 const std::vector<AlgebraicSymMatrix> &allCurvatureChanges,
607 const std::vector<AlgebraicSymMatrix> &allDeltaParameterCovs,
608 const std::vector<AlgebraicMatrix> &allLocalToCurv,
620 int offsetMeas =
nMeasPerHit*allCurvlinJacobians.size();
624 double cosLambda =
sqrt((p.
x()*p.
x()+p.
y()*p.
y())/(p.
x()*p.
x()+p.
y()*p.
y()+p.
z()*p.
z()));
628 QbypToCurv[0][0] = 1.;
630 AngleToCurv[1][1] = 1.;
631 AngleToCurv[2][0] = 1./cosLambda;
633 CurvToAngle[1][1] = 1.;
634 CurvToAngle[0][2] = cosLambda;
636 OffsetToCurv[3][0] = 1.;
637 OffsetToCurv[4][1] = 1.;
639 CurvToOffset[0][3] = 1.;
640 CurvToOffset[1][4] = 1.;
644 TrajToQbyp[0][0] = 1.;
646 TrajToOff1[0][1] = 1.;
647 TrajToOff1[1][2] = 1.;
649 TrajToOff2[0][3] = 1.;
650 TrajToOff2[1][4] = 1.;
653 AlgebraicMatrix JacCurvToOffsetL, JacOffsetToOffsetL, JacAngleToOffsetL, JacQbypToOffsetL, JacOffsetToAngleL;
654 AlgebraicMatrix JacCurvToOffsetN, JacOffsetToOffsetN, JacAngleToOffsetN, JacQbypToOffsetN, JacOffsetToAngleN;
658 JacCurvToOffsetN = CurvToOffset * allCurvlinJacobians[1];
659 JacOffsetToOffsetN = JacCurvToOffsetN * OffsetToCurv;
660 JacAngleToOffsetN = JacCurvToOffsetN * AngleToCurv;
661 JacQbypToOffsetN = JacCurvToOffsetN * QbypToCurv;
662 JacOffsetToAngleN = JacAngleToOffsetN.inverse(ierr);
664 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
665 <<
"Inversion 1 for fine broken lines failed: " << ierr;
668 JacOffsetToAngleC = -(JacOffsetToAngleN * JacOffsetToOffsetN);
669 JacQbypToAngleC = -(JacOffsetToAngleN * JacQbypToOffsetN);
671 AlgebraicMatrix JacTrajToAngle = JacQbypToAngleC * TrajToQbyp + JacOffsetToAngleC * TrajToOff1 + JacOffsetToAngleN * TrajToOff2;
676 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
677 <<
"Inversion 2 for fine broken lines failed: " << ierr;
688 for (
unsigned int k = 0;
k < allCurvlinJacobians.size(); ++
k) {
690 JacOffsetToMeas = (allProjections[
k] * allLocalToCurv[
k].inverse(ierr) ) * OffsetToCurv;
692 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
693 <<
"Inversion 3 for fine broken lines failed: " << ierr;
703 for (
unsigned int k = 1;
k < allCurvlinJacobians.size()-1; ++
k) {
710 tempMSCov = allDeltaParameterCovs[
k].similarity(allLocalToCurv[
k]);
711 tempMSCovProj = tempMSCov.similarity(CurvToAngle);
716 tempJacL = allCurvlinJacobians[
k] * tempJacobian;
717 JacCurvToOffsetL = CurvToOffset * tempJacL.inverse(ierr);
720 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
721 <<
"Inversion 4 for fine broken lines failed: " << ierr;
724 JacOffsetToOffsetL = JacCurvToOffsetL * OffsetToCurv;
725 JacAngleToOffsetL = JacCurvToOffsetL * AngleToCurv;
726 JacQbypToOffsetL = JacCurvToOffsetL * QbypToCurv;
727 JacOffsetToAngleL =-JacAngleToOffsetL.inverse(ierr);
729 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
730 <<
"Inversion 5 for fine broken lines failed: " << ierr;
733 tempJacobian = tempJacobian * allCurvatureChanges[
k];
734 tempJacN = allCurvlinJacobians[
n] * tempJacobian;
735 JacCurvToOffsetN = CurvToOffset * tempJacN;
736 JacOffsetToOffsetN = JacCurvToOffsetN * OffsetToCurv;
737 JacAngleToOffsetN = JacCurvToOffsetN * AngleToCurv;
738 JacQbypToOffsetN = JacCurvToOffsetN * QbypToCurv;
739 JacOffsetToAngleN = JacAngleToOffsetN.inverse(ierr);
741 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
742 <<
"Inversion 6 for fine broken lines failed: " << ierr;
745 JacOffsetToAngleC = -(JacOffsetToAngleL * JacOffsetToOffsetL + JacOffsetToAngleN * JacOffsetToOffsetN);
746 JacQbypToAngleC = -(JacOffsetToAngleL * JacQbypToOffsetL + JacOffsetToAngleN * JacQbypToOffsetN);
776 const std::vector<AlgebraicSymMatrix> &allDeltaParameterCovs,
777 const std::vector<AlgebraicMatrix> &allLocalToCurv,
778 const std::vector<double> &allSteps,
780 const double minStep)
792 double cosLambda =
sqrt((p.
x()*p.
x()+p.
y()*p.
y())/(p.
x()*p.
x()+p.
y()*p.
y()+p.
z()*p.
z()));
796 double delta (1.0/allSteps[1]);
807 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
808 <<
"Inversion 1 for coarse broken lines failed: " << ierr;
813 CurvToAngle[1][1] = 1.;
814 CurvToAngle[0][2] = cosLambda;
816 OffsetToCurv[3][0] = 1.;
817 OffsetToCurv[4][1] = 1.;
824 std::vector<unsigned int>
first(allSteps.size());
825 std::vector<unsigned int>
last (allSteps.size());
826 std::vector<unsigned int> plane(allSteps.size());
827 std::vector<double> sPlane(allSteps.size());
828 unsigned int nPlane = 0;
831 for (
unsigned int k = 1;
k < allSteps.size(); ++
k) {
833 if (fabs(allSteps[
k])>minStep) { nPlane += 1;
first[nPlane] =
k; }
836 sPlane[nPlane] += sTot;
838 if (nPlane < 2)
return false;
842 for (
unsigned int k = 0;
k <= nPlane; ++
k) { sPlane[
k] /= (double) (
last[
k]-
first[
k]+1); }
846 for (
unsigned int k = 0;
k < allSteps.size(); ++
k) {
849 JacOffsetToMeas = (allProjections[
k] * allLocalToCurv[
k].inverse(ierr) ) * OffsetToCurv;
851 edm::LogError(
"Alignment") <<
"@SUB=ReferenceTrajectory::addMaterialEffectsBrl"
852 <<
"Inversion 2 for coarse broken lines failed: " << ierr;
856 unsigned int iPlane = plane[
k];
866 if (fabs(sTot) < fabs(sPlane[iPlane])) { jPlane = (iPlane>0) ? iPlane - 1 : 1; }
867 else { jPlane = (iPlane<nPlane) ? iPlane + 1 : nPlane -1 ;}
869 double sDiff = sPlane[iPlane] - sPlane[jPlane];
870 double iFrac = (sTot - sPlane[jPlane]) / sDiff;
871 double jFrac = 1.0 - iFrac;
886 for (
unsigned int i = 1;
i < nPlane; ++
i) {
894 tempMSCov = allDeltaParameterCovs[
k].similarity(allLocalToCurv[
k]);
895 tempMSCovProj = tempMSCov.similarity(CurvToAngle);
900 double stepK = sPlane[
i] - sPlane[
l];
901 double stepN = sPlane[
n] - sPlane[
i];
902 double deltaK (1.0/stepK);
903 double deltaN (1.0/stepN);
908 theDerivatives[offsetMeas+
nMeasPerHit*iMsMeas+1][offsetPar+2*l+1] = deltaK;
910 theDerivatives[offsetMeas+
nMeasPerHit*iMsMeas ][offsetPar+2*
i ] = -(deltaK + deltaN);
911 theDerivatives[offsetMeas+
nMeasPerHit*iMsMeas+1][offsetPar+2*
i+1] = -(deltaK + deltaN);
913 theDerivatives[offsetMeas+
nMeasPerHit*iMsMeas ][offsetPar+2*
n ] = deltaN;
914 theDerivatives[offsetMeas+
nMeasPerHit*iMsMeas+1][offsetPar+2*n+1] = deltaN;
926 if (this->useRecHit(hitPtr)) {
928 switch (hitPtr->dimension()) {
930 return getHitProjectionMatrixT<1>(hitPtr);
932 return getHitProjectionMatrixT<2>(hitPtr);
934 return getHitProjectionMatrixT<3>(hitPtr);
936 return getHitProjectionMatrixT<4>(hitPtr);
938 return getHitProjectionMatrixT<5>(hitPtr);
940 throw cms::Exception(
"ReferenceTrajectory::getHitProjectionMatrix")
941 <<
"Unexpected hit dimension: " << hitPtr->dimension() <<
"\n";
950 template<
unsigned int N>
967 holder.
setup<
N>(&
r, &V, &H, &rMeas, &VMeas, dummyPars, dummyErr);
968 hitPtr->getKfComponents(holder);
AlgebraicMatrix theInnerTrajectoryToCurvilinear
double z0() const
z coordinate
AlgebraicMatrix getHitProjectionMatrix(const TransientTrackingRecHit::ConstRecHitPointer &recHit) const
ROOT::Math::SMatrix< double, D1, D1, ROOT::Math::MatRepSym< double, D1 > > SymMatrix
virtual bool addMaterialEffectsBrl(const std::vector< AlgebraicMatrix > &allJacobians, const std::vector< AlgebraicMatrix > &allProjections, const std::vector< AlgebraicSymMatrix > &allCurvChanges, const std::vector< AlgebraicSymMatrix > &allDeltaParaCovs, const std::vector< AlgebraicMatrix > &allLocalToCurv, const GlobalTrajectoryParameters >p)
const LocalTrajectoryParameters & localParameters() const
virtual bool construct(const TrajectoryStateOnSurface &referenceTsos, const TransientTrackingRecHit::ConstRecHitContainer &recHits, double mass, MaterialEffects materialEffects, const PropagationDirection propDir, const MagneticField *magField, bool useBeamSpot, const reco::BeamSpot &beamSpot)
AlgebraicMatrix theInnerLocalToTrajectory
virtual void fillMeasurementAndError(const TransientTrackingRecHit::ConstRecHitPointer &hitPtr, unsigned int iRow, const TrajectoryStateOnSurface &updatedTsos)
static const unsigned int nMeasPerHit
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
AlgebraicMatrix theDerivatives
unsigned int theNumberOfVirtualPars
Geom::Phi< T > phi() const
unsigned int theNumberOfVirtualMeas
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
SurfaceSide surfaceSide(const PropagationDirection dir) const
static BoundPlanePointer build(const PositionType &pos, const RotationType &rot, const Bounds *bounds, MediumProperties *mp=0)
AlgebraicVector theParameters
AlgebraicVector theMeasurements
virtual bool addMaterialEffectsBp(const std::vector< AlgebraicMatrix > &allJacobians, const std::vector< AlgebraicMatrix > &allProjections, const std::vector< AlgebraicSymMatrix > &allCurvChanges, const std::vector< AlgebraicSymMatrix > &allDeltaParaCovs, const std::vector< AlgebraicMatrix > &allLocalToCurv)
tuple TSCBLBuilderNoMaterial
GlobalVector magneticFieldInInverseGeV(const GlobalPoint &x) const
virtual bool propagate(const BoundPlane &previousSurface, const TrajectoryStateOnSurface &previousTsos, const BoundPlane &newSurface, TrajectoryStateOnSurface &newTsos, AlgebraicMatrix &newJacobian, AlgebraicMatrix &newCurvlinJacobian, double &nextStep, const PropagationDirection propDir, const MagneticField *magField) const
AlgebraicSymMatrix theTrajectoryPositionCov
double dydz() const
dydz slope
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
ROOT::Math::SMatrix< double, D1, D2, ROOT::Math::MatRepStd< double, D1, D2 > > Matrix
CLHEP::HepMatrix AlgebraicMatrix
FreeTrajectoryState * freeState(bool withErrors=true) const
ReferenceTrajectory(const TrajectoryStateOnSurface &referenceTsos, const TransientTrackingRecHit::ConstRecHitContainer &recHits, bool hitsAreReverse, const MagneticField *magField, MaterialEffects materialEffects, PropagationDirection propDir, double mass, bool useBeamSpot, const reco::BeamSpot &beamSpot)
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const
propagation to plane with path length
GlobalVector momentum() const
MaterialEffectsUpdator * createUpdator(MaterialEffects materialEffects, double mass) const
void setup(typename AlgebraicROOTObject< D >::Vector *params, typename AlgebraicROOTObject< D, D >::SymMatrix *errors, typename AlgebraicROOTObject< D, 5 >::Matrix *projection, ProjectMatrix< double, 5, D > *projFunc, typename AlgebraicROOTObject< D >::Vector *measuredParams, typename AlgebraicROOTObject< D, D >::SymMatrix *measuredErrors, const AlgebraicVector5 &tsosLocalParameters, const AlgebraicSymMatrix55 &tsosLocalErrors)
const AlgebraicSymMatrix55 & matrix() const
unsigned int theNumberOfHits
AlgebraicVector theTrajectoryPositions
virtual void fillDerivatives(const AlgebraicMatrix &projection, const AlgebraicMatrix &fullJacobian, unsigned int iRow)
const LocalTrajectoryError & localError() const
GlobalVector momentum() const
double dxdz() const
dxdz slope
TransientTrackingRecHit::ConstRecHitContainer theRecHits
GlobalPoint position() const
AlgebraicSymMatrix theMeasurementsCov
AlgebraicMatrix getHitProjectionMatrixT(const TransientTrackingRecHit::ConstRecHitPointer &recHit) const
std::vector< ConstRecHitPointer > ConstRecHitContainer
const AlgebraicVector & parameters() const
CLHEP::HepVector AlgebraicVector
ROOT::Math::SVector< double, D1 > Vector
ROOT::Math::SVector< double, 5 > AlgebraicVector5
const GlobalTrajectoryParameters & globalParameters() const
AlgebraicVector5 mixedFormatVector() const
const BoundPlane & surface() const
The nominal surface of the GeomDet.
Unlimited (trivial) bounds.
const Surface & surface() const
CLHEP::HepSymMatrix AlgebraicSymMatrix
std::vector< TrajectoryStateOnSurface > theTsosVec
double y0() const
y coordinate
virtual bool addMaterialEffectsCov(const std::vector< AlgebraicMatrix > &allJacobians, const std::vector< AlgebraicMatrix > &allProjections, const std::vector< AlgebraicSymMatrix > &allCurvChanges, const std::vector< AlgebraicSymMatrix > &allDeltaParaCovs)
virtual void fillTrajectoryPositions(const AlgebraicMatrix &projection, const AlgebraicVector &mixedLocalParams, unsigned int iRow)
unsigned int theNumberOfPars
bool useRecHit(const TransientTrackingRecHit::ConstRecHitPointer &hitPtr) const
AlgebraicROOTObject< D, 5 >::Matrix & projection()
double signedInverseMomentum() const
Signed inverse momentum q/p (zero for neutrals).
tuple size
Write out results.
double x0() const
x coordinate