#include <TwoBodyDecayTrajectoryState.h>
Definition at line 13 of file TwoBodyDecayTrajectoryState.h.
typedef std::pair< AlgebraicMatrix, AlgebraicMatrix > TwoBodyDecayTrajectoryState::Derivatives |
Definition at line 19 of file TwoBodyDecayTrajectoryState.h.
typedef std::pair< TrajectoryStateOnSurface, TrajectoryStateOnSurface > TwoBodyDecayTrajectoryState::TsosContainer |
Definition at line 18 of file TwoBodyDecayTrajectoryState.h.
TwoBodyDecayTrajectoryState::TwoBodyDecayTrajectoryState | ( | const TsosContainer & | tsos, |
const TwoBodyDecay & | tbd, | ||
double | particleMass, | ||
const MagneticField * | magField | ||
) |
The constructor takes the two trajectory states that are to be updated (typically the innermost trajectory states of two tracks) and the decay parameters.
Definition at line 21 of file TwoBodyDecayTrajectoryState.cc.
References construct().
: theValidityFlag( false ), theParticleMass( particleMass ), theParameters( tbd.decayParameters() ), theDerivatives( AlgebraicMatrix( nLocalParam, nDecayParam ), AlgebraicMatrix( nLocalParam, nDecayParam ) ), theOriginalTsos( tsos ) { construct( magField ); }
TwoBodyDecayTrajectoryState::TwoBodyDecayTrajectoryState | ( | const TsosContainer & | tsos, |
const TwoBodyDecayParameters & | param, | ||
double | particleMass, | ||
const MagneticField * | magField | ||
) |
The constructor takes the two trajectory states that are to be updated (typically the innermost trajectory states of two tracks) and the decay parameters.
Definition at line 35 of file TwoBodyDecayTrajectoryState.cc.
References construct().
: theValidityFlag( false ), theParticleMass( particleMass ), theParameters( param ), theDerivatives( AlgebraicMatrix( 5, 9 ), AlgebraicMatrix( 5, 9 ) ), theOriginalTsos( tsos ) { construct( magField ); }
TwoBodyDecayTrajectoryState::~TwoBodyDecayTrajectoryState | ( | void | ) | [inline] |
Definition at line 37 of file TwoBodyDecayTrajectoryState.h.
{}
void TwoBodyDecayTrajectoryState::construct | ( | const MagneticField * | magField | ) | [private] |
Definition at line 49 of file TwoBodyDecayTrajectoryState.cc.
References TwoBodyDecayModel::cartesianSecondaryMomenta(), derivatives(), TwoBodyDecayParameters::mass, p1, p2, propagateSingleState(), theDerivatives, theOriginalTsos, theParameters, theParticleMass, theRefittedTsos, theValidityFlag, TwoBodyDecayParameters::x, TwoBodyDecayParameters::y, and TwoBodyDecayParameters::z.
Referenced by TwoBodyDecayTrajectoryState().
{ // construct global trajectory parameters at the starting point TwoBodyDecayModel tbdDecayModel( theParameters[TwoBodyDecayParameters::mass], theParticleMass ); pair< AlgebraicVector, AlgebraicVector > secondaryMomenta = tbdDecayModel.cartesianSecondaryMomenta( theParameters ); GlobalPoint vtx( theParameters[TwoBodyDecayParameters::x], theParameters[TwoBodyDecayParameters::y], theParameters[TwoBodyDecayParameters::z] ); GlobalVector p1( secondaryMomenta.first[0], secondaryMomenta.first[1], secondaryMomenta.first[2] ); GlobalVector p2( secondaryMomenta.second[0], secondaryMomenta.second[1], secondaryMomenta.second[2] ); GlobalTrajectoryParameters gtp1( vtx, p1, theOriginalTsos.first.charge(), magField ); GlobalTrajectoryParameters gtp2( vtx, p2, theOriginalTsos.second.charge(), magField ); // contruct derivatives at the starting point TwoBodyDecayDerivatives tbdDerivatives( theParameters[TwoBodyDecayParameters::mass], theParticleMass ); pair< AlgebraicMatrix, AlgebraicMatrix > derivatives = tbdDerivatives.derivatives( theParameters ); AlgebraicMatrix deriv1( 6, 9, 0 ); deriv1.sub( 1, 1, AlgebraicMatrix( 3, 3, 1 ) ); deriv1.sub( 4, 4, derivatives.first ); AlgebraicMatrix deriv2( 6, 9, 0 ); deriv2.sub( 1, 1, AlgebraicMatrix( 3, 3, 1 ) ); deriv2.sub( 4, 4, derivatives.second ); // propgate states and derivatives from the starting points to the end points bool valid1 = propagateSingleState( gtp1, deriv1, theOriginalTsos.first.surface(), magField, theRefittedTsos.first, theDerivatives.first ); bool valid2 = propagateSingleState( gtp2, deriv2, theOriginalTsos.second.surface(), magField, theRefittedTsos.second, theDerivatives.second ); theValidityFlag = valid1 && valid2; return; }
const TwoBodyDecayParameters& TwoBodyDecayTrajectoryState::decayParameters | ( | void | ) | const [inline] |
Definition at line 42 of file TwoBodyDecayTrajectoryState.h.
References theParameters.
Referenced by TwoBodyDecayTrajectory::construct().
{ return theParameters; }
const Derivatives& TwoBodyDecayTrajectoryState::derivatives | ( | void | ) | const [inline] |
Definition at line 44 of file TwoBodyDecayTrajectoryState.h.
References theDerivatives.
Referenced by construct(), and TwoBodyDecayTrajectory::construct().
{ return theDerivatives; }
bool TwoBodyDecayTrajectoryState::isValid | ( | void | ) | const [inline] |
Definition at line 39 of file TwoBodyDecayTrajectoryState.h.
References theValidityFlag.
{ return theValidityFlag; }
double TwoBodyDecayTrajectoryState::particleMass | ( | void | ) | const [inline] |
Definition at line 41 of file TwoBodyDecayTrajectoryState.h.
References theParticleMass.
Referenced by TwoBodyDecayTrajectory::construct().
{ return theParticleMass; }
bool TwoBodyDecayTrajectoryState::propagateSingleState | ( | const GlobalTrajectoryParameters & | gtp, |
const AlgebraicMatrix & | startDeriv, | ||
const Surface & | surface, | ||
const MagneticField * | magField, | ||
TrajectoryStateOnSurface & | tsos, | ||
AlgebraicMatrix & | endDeriv | ||
) | [private] |
Definition at line 95 of file TwoBodyDecayTrajectoryState.cc.
References asHepMatrix(), AnalyticalCurvilinearJacobian::jacobian(), JacobianCurvilinearToLocal::jacobian(), JacobianCartesianToCurvilinear::jacobian(), AnalyticalPropagator::propagateWithPath(), and LargeD0_PixelPairStep_cff::propagator.
Referenced by construct().
{ AnalyticalPropagator propagator( magField ); // propagate state pair< TrajectoryStateOnSurface, double > tsosWithPath = propagator.propagateWithPath( FreeTrajectoryState( gtp ), surface ); // check if propagation was successful if ( !tsosWithPath.first.isValid() ) return false; // jacobian for transformation from cartesian to curvilinear frame at the starting point JacobianCartesianToCurvilinear cartToCurv( gtp ); const AlgebraicMatrix56& matCartToCurv = cartToCurv.jacobian(); // jacobian in curvilinear frame for propagation from the starting point to the end point AnalyticalCurvilinearJacobian curvJac( gtp, tsosWithPath.first.globalPosition(), tsosWithPath.first.globalMomentum(), tsosWithPath.second ); const AlgebraicMatrix55& matCurvJac = curvJac.jacobian(); // jacobian for transformation from curvilinear to local frame at the end point JacobianCurvilinearToLocal curvToLoc( surface, tsosWithPath.first.localParameters(), *magField ); const AlgebraicMatrix55& matCurvToLoc = curvToLoc.jacobian(); AlgebraicMatrix56 tmpDeriv = matCurvToLoc*matCurvJac*matCartToCurv; AlgebraicMatrix hepMatDeriv( asHepMatrix( tmpDeriv ) ); //AlgebraicMatrix hepMatDeriv = asHepMatrix< 5, 6 >( tmpDeriv ); // replace original state with new state tsos = tsosWithPath.first; // propagate derivative matrix endDeriv = hepMatDeriv*startDeriv; return true; }
const TsosContainer& TwoBodyDecayTrajectoryState::trajectoryStates | ( | bool | useRefittedState = true | ) | const [inline] |
Definition at line 43 of file TwoBodyDecayTrajectoryState.h.
References theOriginalTsos, and theRefittedTsos.
Referenced by TwoBodyDecayTrajectory::construct().
{ return useRefittedState ? theRefittedTsos : theOriginalTsos; }
const unsigned int TwoBodyDecayTrajectoryState::nDecayParam = TwoBodyDecayParameters::dimension [static, private] |
Definition at line 68 of file TwoBodyDecayTrajectoryState.h.
const unsigned int TwoBodyDecayTrajectoryState::nLocalParam = 5 [static, private] |
Definition at line 67 of file TwoBodyDecayTrajectoryState.h.
Definition at line 62 of file TwoBodyDecayTrajectoryState.h.
Referenced by construct(), and derivatives().
Definition at line 63 of file TwoBodyDecayTrajectoryState.h.
Referenced by construct(), and trajectoryStates().
Definition at line 61 of file TwoBodyDecayTrajectoryState.h.
Referenced by construct(), and decayParameters().
double TwoBodyDecayTrajectoryState::theParticleMass [private] |
Definition at line 59 of file TwoBodyDecayTrajectoryState.h.
Referenced by construct(), and particleMass().
Definition at line 64 of file TwoBodyDecayTrajectoryState.h.
Referenced by construct(), and trajectoryStates().
bool TwoBodyDecayTrajectoryState::theValidityFlag [private] |
Definition at line 57 of file TwoBodyDecayTrajectoryState.h.
Referenced by construct(), and isValid().