21#ifndef TRKMOMCALCULATOR_HH
22#define TRKMOMCALCULATOR_HH
23#include "CLHEP/Matrix/Matrix.h"
24#include "CLHEP/Matrix/SymMatrix.h"
25#include "CLHEP/Vector/ThreeVector.h"
32using CLHEP::Hep3Vector;
33using CLHEP::HepMatrix;
34using CLHEP::HepSymMatrix;
35using CLHEP::HepVector;
58 HepSymMatrix& xxCov, HepSymMatrix& ppCov, HepMatrix& xpCov );
60 static bool weightToCov(
const HepSymMatrix& inXX,
const HepSymMatrix& inPP,
61 const HepMatrix& inXP, HepSymMatrix& outXX, HepSymMatrix& outPP,
85 HepVector& pos, HepVector& mom, HepSymMatrix& xxWeight,
86 HepSymMatrix& ppWeight, HepMatrix& xpWeight );
89 static double calcCurvPtMom(
const Hep3Vector&,
double curvature,
const MdcPatRec::BField& );
90 static Hep3Vector calcCurvVecMom(
const Hep3Vector&,
double curvature,
96 static int calcCurvCharge(
const Hep3Vector&,
double curvature,
const MdcPatRec::BField& );
104 HepSymMatrix& xxCov, HepSymMatrix& ppCov, HepMatrix& xpCov );
107 HepSymMatrix& xxCov, HepSymMatrix& ppCov, HepMatrix& xpCov );
110 HepSymMatrix& xxCov, HepSymMatrix& ppCov, HepMatrix& xpCov );
113 HepVector& x0, HepVector& p0, HepSymMatrix& xxCov,
114 HepSymMatrix& ppCov, HepMatrix& xpCov );
117 HepVector& pos, HepVector& mom, HepSymMatrix& xxWeight,
118 HepSymMatrix& ppWeight, HepMatrix& xpWeight );
121 double fltlen, HepVector& pos, HepVector& mom,
122 HepSymMatrix& xxWeight, HepSymMatrix& ppWeight,
123 HepMatrix& xpWeight );
126 HepVector& pos, HepVector& mom, HepSymMatrix& xxWeight,
127 HepSymMatrix& ppWeight, HepMatrix& xpWeight );
129 static int nearestInt(
double );
static int charge(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
static BesVectorErr errMom(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
static double ptMom(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
static HepMatrix posmomCov(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
virtual ~TrkMomCalculator()
static void getAllCovs(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen, HepSymMatrix &xxCov, HepSymMatrix &ppCov, HepMatrix &xpCov)
static Hep3Vector vecMom(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen)
static bool weightToCov(const HepSymMatrix &inXX, const HepSymMatrix &inPP, const HepMatrix &inXP, HepSymMatrix &outXX, HepSymMatrix &outPP, HepMatrix &outXP)
static void getAllWeights(const TrkSimpTraj &, const MdcPatRec::BField &, double fltlen, HepVector &pos, HepVector &mom, HepSymMatrix &xxWeight, HepSymMatrix &ppWeight, HepMatrix &xpWeight)