CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
MultiTrackKinematicConstraintT.h
Go to the documentation of this file.
1 #ifndef MultiTrackKinematicConstraintT_H
2 #define MultiTrackKinematicConstraintT_H
3 
7 
27 public:
29 
30  // initialize the constraint so it can precompute common qualtities to the three next call
31  virtual void init(const std::vector<KinematicState>& states, const GlobalPoint& point, const GlobalVector& mf) = 0;
32 
33  virtual int numberOfEquations() const = 0;
34 
35  virtual MultiTrackKinematicConstraintBaseT* clone() const = 0;
36 };
37 
38 template <int NTRK, int DIM>
40 public:
41  enum { nTrk = NTRK, nDim = DIM };
42 
44 
45  typedef ROOT::Math::SVector<double, DIM> valueType;
46 
47  typedef ROOT::Math::SMatrix<double, DIM, 7 * NTRK> parametersDerivativeType;
48 
49  typedef ROOT::Math::SMatrix<double, DIM, 3> positionDerivativeType;
50 
52 
61  valueType const& value() const {
62  fillValue();
63  return m_vl;
64  }
65 
68  return m_jac_d;
69  };
70 
73  return m_jac_e;
74  }
75 
76 private:
85  virtual void fillValue() const = 0;
86 
87  virtual void fillParametersDerivative() const = 0;
88 
89  virtual void fillPositionDerivative() const = 0;
90 
91 protected:
92  valueType& vl() const { return m_vl; }
93  parametersDerivativeType& jac_d() const { return m_jac_d; }
94  positionDerivativeType& jac_e() const { return m_jac_e; }
95 
96  // self & me() const { return *const_cast<self*>(this); }
97 
98  double& vl(size_t i) const { return m_vl(i); }
99  double& jac_d(size_t i, size_t j) const { return m_jac_d(i, j); }
100  double& jac_e(size_t i, size_t j) const { return m_jac_e(i, j); }
101 
102 private:
103  mutable valueType m_vl;
106 };
107 
108 #endif
double & jac_d(size_t i, size_t j) const
#define DIM(a)
ROOT::Math::SMatrix< double, DIM, 3 > positionDerivativeType
virtual int numberOfEquations() const =0
positionDerivativeType & jac_e() const
double & jac_e(size_t i, size_t j) const
parametersDerivativeType & jac_d() const
ROOT::Math::SVector< double, DIM > valueType
virtual void fillPositionDerivative() const =0
parametersDerivativeType const & parametersDerivative() const
positionDerivativeType const & positionDerivative() const
ROOT::Math::SMatrix< double, DIM, 7 *NTRK > parametersDerivativeType
virtual MultiTrackKinematicConstraintBaseT * clone() const =0
virtual void fillParametersDerivative() const =0
virtual void init(const std::vector< KinematicState > &states, const GlobalPoint &point, const GlobalVector &mf)=0
virtual void fillValue() const =0
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5