/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
TrackingTools/TrajectoryParametrization/interface/PerigeeTrajectoryError.h
76 строк
2 KB
cmsbuild
Merge pull request #46269 from Dr15Jones/fixPerigeeTrajectoryError
15 ноя 2024, 12:59
Не верифицирован
15 ноя 2024, 12:59
a254b79
Код
Авторство
О чём код?
#ifndef PerigeeTrajectoryError_H #define PerigeeTrajectoryError_H #include "TrackingTools/TrajectoryParametrization/interface/TrajectoryStateExceptions.h" #include "DataFormats/Math/interface/AlgebraicROOTObjects.h" #include "FWCore/Utilities/interface/Likely.h" /** * Class providing access to the <i> Perigee</i> parameters of a trajectory. * These parameters consist of <BR> * transverse curvature (signed), theta, phi, * transverse impact parameter (signed), longitudinal i.p. */ class PerigeeTrajectoryError { public: PerigeeTrajectoryError() : weightIsAvailable(false) {} // ~PerigeeTrajectoryError() {} /* PerigeeTrajectoryError(AlgebraicSymMatrix aPerigeeError): thePerigeeError(asSMatrix<5>(aPerigeeError)), weightIsAvailable(false) {} */ explicit PerigeeTrajectoryError(const AlgebraicSymMatrix55 &aPerigeeError) : thePerigeeError(aPerigeeError), weightIsAvailable(false) {} /** * The covariance matrix */ const AlgebraicSymMatrix55 &covarianceMatrix() const { return thePerigeeError; } /** * The weight matrix (inverse of the covariance matrix) * The error variable is 0 in case of success. */ const AlgebraicSymMatrix55 &weightMatrix(int &error) const { if UNLIKELY (!weightIsAvailable) calculateWeightMatrix(); error = inverseError; return thePerigeeWeight; } void calculateWeightMatrix() const; double transverseCurvatureError() const { return sqrt(thePerigeeError(0, 0)); } /** * The theta angle */ double thetaError() const { return sqrt(thePerigeeError(1, 1)); } /** * The phi angle */ double phiError() const { return sqrt(thePerigeeError(2, 2)); } /** * The (signed) transverse impact parameter */ double transverseImpactParameterError() const { return sqrt(thePerigeeError(3, 3)); } /** * The longitudinal impact parameter */ double longitudinalImpactParameterError() const { return sqrt(thePerigeeError(4, 4)); } private: AlgebraicSymMatrix55 thePerigeeError; mutable AlgebraicSymMatrix55 thePerigeeWeight; mutable int inverseError; mutable bool weightIsAvailable = false; }; #endif