19 std::cerr <<
">>> exception thrown by KinematicParticleVertexFitter:\n"
21 <<
">>> candidate not fitted to common vertex" << std::endl;
33 if (bField_ ==
nullptr)
35 <<
"B-Field was not set up CandKinematicVertexFitter.\n"
36 <<
"the following method must be called before fitting a candidate:\n"
37 <<
" CandKinematicVertexFitter:.set( const MagneticField * )" << endl;
38 vector<RefCountedKinematicParticle>
particles;
40 vector<RecoCandidate::TrackType> trackTypes;
48 tree_->movePointerToTheTop();
51 if (
vertex->vertexIsValid()) {
54 vector<RefCountedKinematicParticle> treeParticles = tree_->daughterParticles();
55 vector<RefCountedKinematicParticle>::const_iterator particleIt = treeParticles.begin();
56 vector<Candidate *>::const_iterator daughterIt =
daughters.begin(), daughtersEnd =
daughters.end();
57 vector<RecoCandidate::TrackType>::const_iterator trackTypeIt = trackTypes.begin();
59 for (; daughterIt != daughtersEnd; ++particleIt, ++daughterIt, ++trackTypeIt) {
68 switch (*trackTypeIt) {
78 double mass = (*particleIt)->currentState().mass();
86 c.setChi2AndNdof(chi2_ =
vertex->chiSquared(), ndof_ =
vertex->degreesOfFreedom());
88 cov_(0, 0) =
err.cxx();
89 cov_(0, 1) =
err.cyx();
90 cov_(0, 2) =
err.czx();
91 cov_(1, 2) =
err.czy();
92 cov_(1, 1) =
err.cyy();
93 cov_(2, 2) =
err.czz();
94 c.setCovariance(cov_);
97 c.setChi2AndNdof(chi2_ = -1, ndof_ = 0);
105 vector<RecoCandidate::TrackType> &trackTypes,
107 size_t nDau =
c.numberOfDaughters();
109 for (
unsigned int j = 0;
j < nDau; ++
j) {
112 ostringstream message;
113 message <<
"Can't access in write mode candidate daughters. "
114 <<
"pdgId = " <<
c.pdgId() <<
".\n";
117 message <<
"Null daughter also found in read-only mode\n";
119 message <<
"Daughter found in read-only mode with id: " <<
d1->pdgId() <<
"\n";
123 if (
d->numberOfDaughters() > 0) {
126 if (vtxDau !=
nullptr && vtxDau->
vertexChi2() > 0) {
128 (*this).set(*vtxDau);
135 float mass_sigma =
mass * 0.000001;
140 tree_ = csFitter.
fit(mass_c, tree_);
160 float sigma =
mass * 1.e-6;
163 trackTypes.push_back(
type);
165 cerr <<
">>> warning: candidate of type " <<
d->pdgId() <<
" has no track reference." << endl;