#include <ErrorMatrixPropagator.h>
|
static TMatrixTSym< double > | propagateError (std::function< TVectorT< double >(const TVectorT< double > &)> f, const TVectorT< double > &inPar, TMatrixTSym< double > &inCov, double epsilon=0.001, double errorEpsilonRatio=1000) |
|
Definition at line 17 of file ErrorMatrixPropagator.h.
tauImpactParameter::ErrorMatrixPropagator::ErrorMatrixPropagator |
( |
| ) |
|
|
inline |
virtual tauImpactParameter::ErrorMatrixPropagator::~ErrorMatrixPropagator |
( |
| ) |
|
|
inlinevirtual |
TMatrixTSym< double > ErrorMatrixPropagator::propagateError |
( |
std::function< TVectorT< double >(const TVectorT< double > &)> |
f, |
|
|
const TVectorT< double > & |
inPar, |
|
|
TMatrixTSym< double > & |
inCov, |
|
|
double |
epsilon = 0.001 , |
|
|
double |
errorEpsilonRatio = 1000 |
|
) |
| |
|
static |
Definition at line 12 of file ErrorMatrixPropagator.cc.
References delta, geometryDiff::epsilon, relativeConstraints::error, f, i, j, mathSSE::sqrt(), and findQualityFiles::v.
Referenced by tauImpactParameter::ParticleBuilder::createLorentzVectorParticle(), tauImpactParameter::ParticleBuilder::createTrackParticle(), tauImpactParameter::TauA1NuConstrainedFitter::fit(), tauImpactParameter::TauA1NuConstrainedFitter::getMother(), tauImpactParameter::TrackHelixVertexFitter::getMother(), tauImpactParameter::TauA1NuConstrainedFitter::getRefitDaughters(), tauImpactParameter::TrackHelixVertexFitter::getRefitLorentzVectorParticles(), tauImpactParameter::TrackHelixVertexFitter::getRefitTracks(), tauImpactParameter::TauA1NuConstrainedFitter::getTauRotationSignificance(), tauImpactParameter::TrackTools::lorentzParticleAtPosition(), and tauImpactParameter::TauA1NuConstrainedFitter::TauA1NuConstrainedFitter().
14 TVectorT<double>
v=
f(inPar);
15 TMatrixT<double> Jacobian(inPar.GetNrows(),v.GetNrows());
16 for(
int i=0;
i<inPar.GetNrows();
i++){
17 TVectorT<double> ParPlusEpsilon=inPar;
20 if(delta*errorEpsilonRatio<error) delta=error/errorEpsilonRatio;
22 TVectorT<double> vp=
f(ParPlusEpsilon);
23 for(
int j=0;
j<v.GetNrows();
j++){
24 Jacobian(
i,
j)=(vp(
j)-
v(
j))/delta;
27 TMatrixTSym<double> newCov=inCov.SimilarityT(Jacobian);