13 #include <analysis/VertexFitting/TreeFitter/Origin.h>
14 #include <analysis/VertexFitting/TreeFitter/FitParams.h>
15 #include <analysis/dataobjects/Particle.h>
16 #include <framework/logging/Logger.h>
17 namespace TreeFitter {
20 const ConstraintConfiguration& config,
23 ParticleBase(
"Origin"),
24 m_constraintDimension(config.m_originDimension),
25 m_customOriginVertex(config.m_customOriginVertex),
26 m_customOriginCovariance(config.m_customOriginCovariance),
27 m_posVec(config.m_originDimension),
28 m_covariance(config.m_originDimension, config.m_originDimension),
29 m_isBeamSpot(config.m_ipConstraint),
30 m_inflationFactorCovZ(config.m_inflationFactorCovZ)
32 addDaughter(daughter, config, forceFitAll);
38 return ErrCode(ErrCode::Status::success);
48 status |= daughter->initMotherlessParticle(fitparams);
49 status |= daughter->initParticleWithMother(fitparams);
60 const TVector3& vertexVector =
m_beamSpot->getIPPosition();
61 const TMatrixDSym& covVertex =
m_beamSpot->getCovVertex();
74 const TVector3& vertexVector =
m_beamSpot->getIPPosition();
75 const TMatrixDSym& covVertex =
m_beamSpot->getCovVertex();
85 B2FATAL(
"Incorrect dimension of customOriginVertex or customOriginCovariance. customOriginVertex dim = "
88 B2WARNING(
"An element of customOriginCovariance diagonal is smaller than 0.");
89 return ErrCode(ErrCode::Status::badsetup);
106 B2FATAL(
"The Origin is nether beamspot nor custom. This is ether a configuration error or no beam parameters were found to build the beam spot.");
109 return ErrCode(ErrCode::Status::success);
117 fitpar.getCovariance()(posindex + row, posindex + row) = 1000 *
m_covariance(row, row);
120 status |= daughter->initCovariance(fitpar);
134 p.getH()(row, posindex + row) = -1;
136 for (
int col = 0; col <= row; ++col) {
141 return ErrCode(ErrCode::Status::success);
148 case Constraint::origin:
160 daughter->addToConstraintList(list, depth - 1);