rave is hosted by Hepforge, IPPP Durham
close Warning: Can't synchronize with repository "(default)" (/hepforge/svn/rave does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 5 and Version 6 of RaveKinematics


Ignore:
Timestamp:
Jan 25, 2008, 12:23:56 PM (17 years ago)
Author:
fmos
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RaveKinematics

    v5 v6  
    106106== Converting the input ==
    107107
    108 The kinematic fit makes heavy use of the !KinematicParticle class. It is used as an input as well as an output data class. Strictly spoken, the input data accepted by the kinematic fitting algorithms must be converted to !TransientTrackKinematicParticle classes. This class can be created from !Track objects by providing an additional mass hypothesis or from !Vector7D and !Covariance7D objects by providing the additional charge information. The two basic constructors are
     108The kinematic fit makes heavy use of the !KinematicParticle class. It is used as an input as well as an output data class. Strictly spoken, the input data accepted by the kinematic fitting algorithms must be converted to !TransientTrackKinematicParticle classes. This class can be created from !Track objects by providing an additional mass hypothesis or from !Vector7D and !Covariance7D objects by providing additional charge and fit information. The two basic constructors are
    109109
    110110{{{
    111111#!cpp
    112 rave::TransientTrackKinematicParticle (const rave::Track &initialTrack, const double &massGuess, const double &massSigma, boost::any origin=boost::any(), std::string tag="")
    113 rave::TransientTrackKinematicParticle (const rave::Vector7D &state, const rave::Covariance7D &error, const rave::Charge &charge, const double &chiSquared, const double &degreesOfFr, boost::any origin=boost::any(), std::string tag="")
     112using namespace rave;
     113TransientTrackKinematicParticle (const Track &initialTrack, const double &massGuess, const double &massSigma)
     114TransientTrackKinematicParticle (const Vector7D &state, const Covariance7D &error, const Charge &charge, const double &chiSquared, const double &degreesOfFr)
    114115}}}
     116
     117The construction of Track instances works as described for the vertex fit.
     118
     119In the example above, two instances of !KinematicParticle are created from the respective Vector7D and Covariance7D instances, which themselves are initialized with hardcoded numbers. The basic constructors for these two classes are
     120
     121{{{
     122#!cpp
     123using namespace rave;
     124Vector7D (double x,  double y,  double z, double px, double py, double pz, double m);
     125Covariance7D (double dxx, double dxy, double dxz, double dyy, double dyz, double dzz, double dxpx, double dxpy, double dxpz, double dypx, double dypy, double dypz, double dzpx, double dzpy, double dzpz, double dpxpx, double dpxpy, double dpxpz, double dpypy, double dpypz, double dpzpz, double dxm, double dym, double dzm, double dpxm, double dpym, double dpzm, double dmm);
     126}}}
     127
     128Pushed into a vector, those instances are handed over to the fitter together with a constraint.
     129
     130== Constraints ==
     131
     132Constraints are a central concept when it comes to kinematic fitting. Rave offers a certain set of constraints. The user can choose to apply any number of them to the problem at hand, but the calling convention of the fitter slightly depends on the type of constraint chosen.
     133
     134The available constraints are:
     135* Back-to-Back
     136* Four-Momentum
     137* Mass
     138* Momentum
     139* Pointing
     140* Simple pointing
     141* Smart pointing
     142* Two-track Mass
     143* Vertex
     144* (Multiple)
     145
     146Constraints are represented by instances of the !KinematicConstraint class. They cannot be created freely, but only by using the !KinematicConstraintBuilder. This builder offers a creation method for each type of constraint. The signatures of those methods are
     147
     148{{{
     149#!cpp
     150using namespace rave;
     151KinematicConstraint createBackToBackKinematicConstraint () const;
     152KinematicConstraint createFourMomentumKinematicConstraint (const Vector4D &momentum, const Vector4D &deviation) const;
     153KinematicConstraint createMassKinematicConstraint (const double &mass, const float sigma) const;
     154KinematicConstraint createMomentumKinematicConstraint (const Vector3D &momentum, const rave::Vector3D &deviation) const;
     155KinematicConstraint createPointingKinematicConstraint (const Point3D &reference) const;
     156KinematicConstraint createSimplePointingConstraint (const Point3D &reference) const;
     157KinematicConstraint createSmartPointingConstraint (const Point3D &reference) const;
     158KinematicConstraint createTwoTrackMassKinematicConstraint (const double &mass) const;
     159KinematicConstraint createVertexKinematicConstraint () const;
     160MultipleKinematicConstraint createMultipleKinematicConstraint () const;
     161}}}
     162
     163As is visible from these signatures, the !MultipleKinematicConstraint has a special role copared to the other constraints.