00001
00009 #ifndef __TRACKMOMENTUMCONSTRAINT_H
00010 #define __TRACKMOMENTUMCONSTRAINT_H
00011
00012 #include "jbltools/kinfit/TrackConstraint.h"
00013 #include "FourVector.h"
00014
00015 class ParticleFitObject;
00016
00017 class TrackMomentumConstraint : public TrackConstraint {
00018 public:
00019 TrackMomentumConstraint (double pxfact_,
00020 double pyfact_,
00021 double pzfact_,
00022 double efact_=0,
00023 double value_ = 0
00024 );
00025 TrackMomentumConstraint (int axis,
00026 double value_ = 0
00027 );
00028 virtual ~TrackMomentumConstraint();
00029 virtual double getValue() const;
00030 virtual void getDerivatives (int idim, double der[]) const;
00031 virtual void add1stDerivativesToMatrix(int idim, double *M) const;
00032 virtual void add2ndDerivativesToMatrix(int idim, double *M, double lambda) const;
00033
00034 virtual void addToGlobalDerMatrix (double lambda, int idim, double *M) const;
00035
00036 virtual void invalidateCache() const;
00037
00038 protected:
00039 void updateCache() const;
00040
00041 FourVector factor;
00042 double value;
00043
00044 mutable bool cachevalid;
00045 mutable int nparams;
00046 };
00047
00048 #endif // __TRACKMOMENTUMCONSTRAINT_H