Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:57:29

0001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayModel_h
0002 #define Alignment_TwoBodyDecay_TwoBodyDecayModel_h
0003 
0004 /** /class TwoBodyDecayModel
0005  *
0006  *  This class provides useful methods needed for the two-body decay model used
0007  * by implementations of e.g. class TwoBodyDecayEstimator or
0008  * TwoBodyDecayLinearizationPointFinder.
0009  *
0010  *  /author Edmund Widl
0011  */
0012 
0013 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecay.h"
0014 
0015 class TwoBodyDecayModel {
0016 public:
0017   TwoBodyDecayModel(double mPrimary = 91.1876, double mSecondary = 0.105658);
0018   ~TwoBodyDecayModel();
0019 
0020   /** Rotates a vector pointing in z-direction into the direction defined by
0021    * p=(px,py,pz).
0022    */
0023   AlgebraicMatrix rotationMatrix(double px, double py, double pz);
0024 
0025   /** Jacobian for transformation from curvilinear to cartesian representation
0026    * (needs the z-component of magnetic field in inverse GeV as input).
0027    */
0028   AlgebraicMatrix curvilinearToCartesianJacobian(double rho, double theta, double phi, double zMagField);
0029 
0030   /** Jacobian for transformation from curvilinear to cartesian representation
0031    * (needs the z-component of magnetic field in inverse GeV as input).
0032    */
0033   AlgebraicMatrix curvilinearToCartesianJacobian(const AlgebraicVector &curv, double zMagField);
0034 
0035   /** Convert vector from curvilinear to cartesian coordinates (needs the
0036    * z-component of magnetic field in inverse GeV as input).
0037    */
0038   AlgebraicVector convertCurvilinearToCartesian(const AlgebraicVector &curv, double zMagField);
0039 
0040   /** Momenta of the secondaries in cartesian repraesentation.
0041    */
0042   const std::pair<AlgebraicVector, AlgebraicVector> cartesianSecondaryMomenta(const AlgebraicVector &param);
0043 
0044   /** Momenta of the secondaries in cartesian repraesentation.
0045    */
0046   const std::pair<AlgebraicVector, AlgebraicVector> cartesianSecondaryMomenta(const TwoBodyDecay &tbd);
0047 
0048   /** Momenta of the secondaries in cartesian repraesentation.
0049    */
0050   const std::pair<AlgebraicVector, AlgebraicVector> cartesianSecondaryMomenta(const TwoBodyDecayParameters &tbdparam);
0051 
0052 private:
0053   double thePrimaryMass;
0054   double theSecondaryMass;
0055 };
0056 
0057 #endif