17 #include "analysis/OrcaKinFit/MomentumConstraint.h"
18 #include "analysis/OrcaKinFit/ParticleFitObject.h"
19 #include <framework/logging/Logger.h>
32 namespace OrcaKinFit {
35 double pzfact_,
double value_)
46 MomentumConstraint::~MomentumConstraint() =
default;
60 if (pxfact != 0) totpx += foi->
getPx();
61 if (pyfact != 0) totpy += foi->
getPy();
62 if (pzfact != 0) totpz += foi->
getPz();
63 if (efact != 0) totE += foi->
getE();
65 return pxfact * totpx + pyfact * totpy + pzfact * totpz + efact * totE - value;
76 for (
int ilocal = 0; ilocal < fitobject->getNPar(); ilocal++) {
77 if (!fitobject->isParamFixed(ilocal)) {
78 int iglobal = fitobject->getGlobalParNum(ilocal);
79 assert(iglobal >= 0 && iglobal < idim);
81 const ParticleFitObject* foi =
dynamic_cast < ParticleFitObject*
>(fitobject);
83 if (pxfact != 0) d += pxfact * foi->getDPx(ilocal);
84 if (pyfact != 0) d += pyfact * foi->getDPy(ilocal);
85 if (pzfact != 0) d += pzfact * foi->getDPz(ilocal);
86 if (efact != 0) d += efact * foi->getDE(ilocal);
98 void MomentumConstraint::updateCache()
const
102 for (
int ilocal = 0; ilocal < fitobject->getNPar(); ilocal++) {
103 int iglobal = fitobject->getGlobalParNum(ilocal);
104 if (!fitobject->isParamFixed(ilocal)) {
105 assert(iglobal >= 0);
124 dderivatives[0] = efact;
125 dderivatives[1] = pxfact;
126 dderivatives[2] = pyfact;
127 dderivatives[3] = pzfact;
131 int MomentumConstraint::getVarBasis()
const