|
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.
- Timestamp:
-
Jan 25, 2008, 12:23:56 PM (17 years ago)
- Author:
-
fmos
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v5
|
v6
|
|
106 | 106 | == Converting the input == |
107 | 107 | |
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 |
| 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 additional charge and fit information. The two basic constructors are |
109 | 109 | |
110 | 110 | {{{ |
111 | 111 | #!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 °reesOfFr, boost::any origin=boost::any(), std::string tag="") |
| 112 | using namespace rave; |
| 113 | TransientTrackKinematicParticle (const Track &initialTrack, const double &massGuess, const double &massSigma) |
| 114 | TransientTrackKinematicParticle (const Vector7D &state, const Covariance7D &error, const Charge &charge, const double &chiSquared, const double °reesOfFr) |
114 | 115 | }}} |
| 116 | |
| 117 | The construction of Track instances works as described for the vertex fit. |
| 118 | |
| 119 | In 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 |
| 123 | using namespace rave; |
| 124 | Vector7D (double x, double y, double z, double px, double py, double pz, double m); |
| 125 | Covariance7D (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 | |
| 128 | Pushed into a vector, those instances are handed over to the fitter together with a constraint. |
| 129 | |
| 130 | == Constraints == |
| 131 | |
| 132 | Constraints 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 | |
| 134 | The 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 | |
| 146 | Constraints 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 |
| 150 | using namespace rave; |
| 151 | KinematicConstraint createBackToBackKinematicConstraint () const; |
| 152 | KinematicConstraint createFourMomentumKinematicConstraint (const Vector4D &momentum, const Vector4D &deviation) const; |
| 153 | KinematicConstraint createMassKinematicConstraint (const double &mass, const float sigma) const; |
| 154 | KinematicConstraint createMomentumKinematicConstraint (const Vector3D &momentum, const rave::Vector3D &deviation) const; |
| 155 | KinematicConstraint createPointingKinematicConstraint (const Point3D &reference) const; |
| 156 | KinematicConstraint createSimplePointingConstraint (const Point3D &reference) const; |
| 157 | KinematicConstraint createSmartPointingConstraint (const Point3D &reference) const; |
| 158 | KinematicConstraint createTwoTrackMassKinematicConstraint (const double &mass) const; |
| 159 | KinematicConstraint createVertexKinematicConstraint () const; |
| 160 | MultipleKinematicConstraint createMultipleKinematicConstraint () const; |
| 161 | }}} |
| 162 | |
| 163 | As is visible from these signatures, the !MultipleKinematicConstraint has a special role copared to the other constraints. |
|