CMS 3D CMS Logo

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
Vector3DBase
Definition: Vector3DBase.h:8
MultiTrackKinematicConstraintBaseT::numberOfEquations
virtual int numberOfEquations() const =0
MultiTrackKinematicConstraintT::m_jac_d
parametersDerivativeType m_jac_d
Definition: MultiTrackKinematicConstraintT.h:104
mps_fire.i
i
Definition: mps_fire.py:428
MultiTrackKinematicConstraintT::jac_d
double & jac_d(size_t i, size_t j) const
Definition: MultiTrackKinematicConstraintT.h:99
MultiTrackKinematicConstraintT::fillPositionDerivative
virtual void fillPositionDerivative() const =0
MultiTrackKinematicConstraintT::value
valueType const & value() const
Definition: MultiTrackKinematicConstraintT.h:61
AlgebraicObjects.h
MultiTrackKinematicConstraintBaseT::clone
virtual MultiTrackKinematicConstraintBaseT * clone() const =0
MultiTrackKinematicConstraintT::positionDerivativeType
ROOT::Math::SMatrix< double, DIM, 3 > positionDerivativeType
Definition: MultiTrackKinematicConstraintT.h:49
MultiTrackKinematicConstraintT::vl
valueType & vl() const
Definition: MultiTrackKinematicConstraintT.h:92
MultiTrackKinematicConstraintBaseT::~MultiTrackKinematicConstraintBaseT
virtual ~MultiTrackKinematicConstraintBaseT()
Definition: MultiTrackKinematicConstraintT.h:28
MultiTrackKinematicConstraintT::jac_d
parametersDerivativeType & jac_d() const
Definition: MultiTrackKinematicConstraintT.h:93
DIM
#define DIM(a)
Definition: LogEleMapdb.h:14738
MultiTrackKinematicConstraintT
Definition: MultiTrackKinematicConstraintT.h:39
MultiTrackKinematicConstraintT::parametersDerivative
parametersDerivativeType const & parametersDerivative() const
Definition: MultiTrackKinematicConstraintT.h:66
Point3DBase< float, GlobalTag >
MultiTrackKinematicConstraintT::fillValue
virtual void fillValue() const =0
MultiTrackKinematicConstraintT::valueType
ROOT::Math::SVector< double, DIM > valueType
Definition: MultiTrackKinematicConstraintT.h:45
MultiTrackKinematicConstraintBaseT::init
virtual void init(const std::vector< KinematicState > &states, const GlobalPoint &point, const GlobalVector &mf)=0
MultiTrackKinematicConstraintT::jac_e
positionDerivativeType & jac_e() const
Definition: MultiTrackKinematicConstraintT.h:94
MultiTrackKinematicConstraintT::vl
double & vl(size_t i) const
Definition: MultiTrackKinematicConstraintT.h:98
MultiTrackKinematicConstraintT::nDim
Definition: MultiTrackKinematicConstraintT.h:41
MultiTrackKinematicConstraintT::m_vl
valueType m_vl
Definition: MultiTrackKinematicConstraintT.h:103
MultiTrackKinematicConstraintT::parametersDerivativeType
ROOT::Math::SMatrix< double, DIM, 7 *NTRK > parametersDerivativeType
Definition: MultiTrackKinematicConstraintT.h:47
RefCountedKinematicVertex.h
MultiTrackKinematicConstraintBaseT
Definition: MultiTrackKinematicConstraintT.h:26
MultiTrackKinematicConstraintT::fillParametersDerivative
virtual void fillParametersDerivative() const =0
MultiTrackKinematicConstraintT::~MultiTrackKinematicConstraintT
~MultiTrackKinematicConstraintT() override
Definition: MultiTrackKinematicConstraintT.h:51
MultiTrackKinematicConstraintT::m_jac_e
positionDerivativeType m_jac_e
Definition: MultiTrackKinematicConstraintT.h:105
MultiTrackKinematicConstraintT::positionDerivative
positionDerivativeType const & positionDerivative() const
Definition: MultiTrackKinematicConstraintT.h:71
MultiTrackKinematicConstraintT::nTrk
Definition: MultiTrackKinematicConstraintT.h:41
RefCountedKinematicParticle.h
MultiTrackKinematicConstraintT::jac_e
double & jac_e(size_t i, size_t j) const
Definition: MultiTrackKinematicConstraintT.h:100
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
point
*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