|
|
Go to the documentation of this file.
17 nPar_((NFreeTrackPar - NFreeVertexPar) *
particles.
size() + NFreeVertexPar),
32 TDecompBK Inverter(
cov_);
33 double det =
cov_.Determinant();
34 if (!Inverter.Decompose()) {
36 <<
"Fit failed: unable to invert SYM gain matrix " << det <<
" \n"
70 TVectorT<double> dalpha = vprime -
val_;
71 double c2 = dalpha * (
cov_inv_ * dalpha);
76 std::vector<TrackParticle> refitParticles;
80 for (
int i = 0;
i < FreeParCov.GetNrows();
i++) {
82 for (
int j = 0;
j < FreeParCov.GetNrows();
j++) {
86 TVectorT<double> TrackPar =
computePar(FreePar);
87 TMatrixTSym<double> TrackCov =
96 return refitParticles;
100 std::vector<LorentzVectorParticle> refitParticles;
113 TMatrixTSym<double> LVCov =
115 refitParticles.push_back(
118 return refitParticles;
125 for (
int i = 0;
i <
par_.GetNrows();
i++) {
127 for (
int j = 0;
j <
par_.GetNrows();
j++) {
174 double v = (2.0 *
kappa * (x *
cos(phi) + y *
sin(phi)));
178 }
else if (
v <= -1.0) {
183 s = 1.0 / (2.0 *
kappa) * arcsinv;
204 TrackHelixVertexFitter::computedxydz(inpar,
p,
kappa, lam, phi, x, y, z,
s,
dxy,
dz);
214 int np(0), parsize(0);
216 double B = inpar(parsize +
BField0);
221 TrackHelixVertexFitter::computedxydz(inpar,
p,
kappa, lam, phi, x, y, z,
s,
dxy,
dz);
222 double phi1 = 2 *
s *
kappa + phi;
223 double bOverK =
B * (1.0 / fabs(
kappa));
237 int np(0), parsize(0);
239 for (
int p = 0;
p <
np;
p++) {
TMatrixTSym< double > cov_
static TVectorT< double > computeMotherLorentzVectorPar(const TVectorT< double > &inpar)
std::vector< TrackParticle > particles_
virtual TVector3 getVertex()
TMatrixTSym< double > parcov_
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)
TMatrixTSym< double > cov_inv_
virtual double updateChisquare(const TVectorT< double > &inpar)
Sin< T >::type sin(const T &t)
static TVectorT< double > computeLorentzVectorPar(const TVectorT< double > &inpar)
Cos< T >::type cos(const T &t)
virtual std::vector< TrackParticle > getRefitTracks()
static void parSizeInfo(const TVectorT< double > &inpar, int &np, int &parsize, bool hasextras=false)
virtual TString freeParName(int Par)
virtual TMatrixTSym< double > getVertexError()
static TVectorT< double > computePar(const TVectorT< double > &inpar)
static int measuredValueIndex(int TrackPar, int Particle)
Tan< T >::type tan(const T &t)
static TVectorT< double > computeTrackPar(const TVectorT< double > &inpar, int p=0)
static int freeParIndex(int Par, int Particle)
static const std::string B
virtual ~TrackHelixVertexFitter()
static void computedxydz(const TVectorT< double > &inpar, int particle, double &kappa, double &lam, double &phi, double &x, double &y, double &z, double &s, double &dxy, double &dz)
std::vector< LorentzVectorParticle > getRefitLorentzVectorParticles()
LorentzVectorParticle getMother(int pdgid)
TrackHelixVertexFitter(const std::vector< TrackParticle > &particles, const TVector3 &vguess)
math::XYZTLorentzVectorD LV
static const G4double kappa