25 #include <TDatabasePDG.h>
32 pdgCode_(0), propDir_(0), debugLvl_(0)
38 pdgCode_(pdgCode), propDir_(propDir), debugLvl_(0)
44 TObject(rep), pdgCode_(rep.pdgCode_), propDir_(rep.propDir_), debugLvl_(rep.debugLvl_)
53 bool calcJacobianNoise)
const {
65 stateVec(0) = pos.X();
66 stateVec(1) = pos.Y();
67 stateVec(2) = pos.Z();
69 stateVec(3) = mom.X();
70 stateVec(4) = mom.Y();
71 stateVec(5) = mom.Z();
83 stateVec(0) = pos.X();
84 stateVec(1) = pos.Y();
85 stateVec(2) = pos.Z();
87 stateVec(3) = mom.X();
88 stateVec(4) = mom.Y();
89 stateVec(5) = mom.Z();
95 assert(particle !=
nullptr);
96 return particle->Charge()/(3.);
101 return TDatabasePDG::Instance()->GetParticle(
pdgCode_)->Mass();
107 TMatrixD& jacobian)
const {
119 const double defaultStepX = 1.E-5;
130 for (
size_t i = 0; i <
getDim(); ++i) {
133 double temp = stateCopy.
getState()(i) + defaultStepX / 2;
147 stepX = 2 * (temp - stateCopy.
getState()(i));
154 (stateCopy.
getState())(i) -= stepX / 2;
173 for (
size_t j = 0; j <
getDim(); ++j) {
174 double derivFull = (rightFull(j) - leftFull(j)) / 2 / stepX;
175 double derivShort = (rightShort(j) - leftShort(j)) / stepX;
177 jacobian(j, i) = 1./3.*(4*derivShort - derivFull);
185 if(particle !=
nullptr) {