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
00032 TwoBodyDecayTrajectoryState( const TsosContainer & tsos,
00033 const TwoBodyDecayParameters & param,
00034 double particleMass,
00035 const MagneticField* magField );
00036
00037 ~TwoBodyDecayTrajectoryState( void ) {}
00038
00039 inline bool isValid( void ) const { return theValidityFlag; }
00040
00041 inline double particleMass( void ) const { return theParticleMass; }
00042 inline const TwoBodyDecayParameters & decayParameters( void ) const { return theParameters; }
00043 inline const TsosContainer& trajectoryStates( bool useRefittedState = true ) const { return useRefittedState ? theRefittedTsos : theOriginalTsos; }
00044 inline const Derivatives& derivatives( void ) const { return theDerivatives; }
00045
00046 private:
00047
00048 void construct( const MagneticField* magField );
00049
00050 bool propagateSingleState( const GlobalTrajectoryParameters & gtp,
00051 const AlgebraicMatrix & startDeriv,
00052 const Surface & surface,
00053 const MagneticField* magField,
00054 TrajectoryStateOnSurface & tsos,
00055 AlgebraicMatrix & endDeriv );
00056
00057 bool theValidityFlag;
00058
00059 double theParticleMass;
00060
00061 TwoBodyDecayParameters theParameters;
00062 Derivatives theDerivatives;
00063 TsosContainer theOriginalTsos;
00064 TsosContainer theRefittedTsos;
00065
00066
00067 static const unsigned int nLocalParam = 5;
00068 static const unsigned int nDecayParam = TwoBodyDecayParameters::dimension;
00069 };
00070
00071
00072 #endif