Go to the documentation of this file.00001 #ifndef Alignment_ReferenceTrajectories_TwoBodyDecayTrajectoryState_h
00002 #define Alignment_ReferenceTrajectories_TwoBodyDecayTrajectoryState_h
00003
00004 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00005 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecay.h"
00006
00010 class GlobalTrajectoryParameters;
00011
00012
00013 class TwoBodyDecayTrajectoryState
00014 {
00015
00016 public:
00017
00018 typedef std::pair< TrajectoryStateOnSurface, TrajectoryStateOnSurface > TsosContainer;
00019 typedef std::pair< AlgebraicMatrix, AlgebraicMatrix > Derivatives;
00020
00024 TwoBodyDecayTrajectoryState( const TsosContainer & tsos,
00025 const TwoBodyDecay & tbd,
00026 double particleMass,
00027 const MagneticField* magField,
00028 bool propagateErrors = false );
00029
00030 ~TwoBodyDecayTrajectoryState( void ) {}
00031
00032 inline bool isValid( void ) const { return theValidityFlag; }
00033
00034 inline double particleMass( void ) const { return theParticleMass; }
00035 inline const TwoBodyDecayParameters & decayParameters( void ) const { return theParameters; }
00036 inline const TsosContainer& trajectoryStates( bool useRefittedState = true ) const { return useRefittedState ? theRefittedTsos : theOriginalTsos; }
00037 inline const Derivatives& derivatives( void ) const { return theDerivatives; }
00038
00039 void rescaleError( double scale );
00040
00041 inline double primaryMass( void ) const { return thePrimaryMass; }
00042 inline double primaryWidth( void ) const { return thePrimaryWidth; }
00043
00044 private:
00045
00046 void construct( const MagneticField* magField,
00047 bool propagateErrors );
00048
00049 bool propagateSingleState( const FreeTrajectoryState & fts,
00050 const GlobalTrajectoryParameters & gtp,
00051 const AlgebraicMatrix & startDeriv,
00052 const Surface & surface,
00053 const MagneticField* magField,
00054 TrajectoryStateOnSurface & tsos,
00055 AlgebraicMatrix & endDeriv ) const;
00056
00057
00058 void setError( FreeTrajectoryState& fts,
00059 AlgebraicMatrix& derivative ) const;
00060
00061 bool theValidityFlag;
00062
00063 double theParticleMass;
00064
00065 TwoBodyDecayParameters theParameters;
00066 Derivatives theDerivatives;
00067 TsosContainer theOriginalTsos;
00068 TsosContainer theRefittedTsos;
00069
00070 double thePrimaryMass;
00071 double thePrimaryWidth;
00072
00073 static const unsigned int nLocalParam = 5;
00074 static const unsigned int nDecayParam = TwoBodyDecayParameters::dimension;
00075 };
00076
00077
00078 #endif