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