File indexing completed on 2026-07-26 08:22:00
0001
0002
0003
0004
0005
0006
0007
0008 #pragma once
0009
0010 #include <cstdint>
0011 #include <string>
0012
0013 namespace traccc {
0014 enum class kalman_fitter_status : uint16_t {
0015 SUCCESS = 0u,
0016 ERROR_QOP_ZERO = 1u,
0017 ERROR_THETA_POLE = 2u,
0018 ERROR_INVERSION = 3u,
0019 ERROR_SMOOTHER_CHI2_NEGATIVE = 4u,
0020 ERROR_SMOOTHER_CHI2_NOT_FINITE = 5u,
0021 ERROR_SMOOTHER_INVALID_COVARIANCE = 6u,
0022 ERROR_SMOOTHER_SKIPPED_STATE = 7u,
0023 ERROR_UPDATER_INVALID_COVARIANCE = 8u,
0024 ERROR_UPDATER_SKIPPED_STATE = 9u,
0025 ERROR_GEOID_SEQUENCE_OVERFLOW = 10u,
0026 ERROR_PROPAGATION_FAILURE = 11u,
0027 ERROR_OTHER = 12u,
0028 MAX_STATUS = 13u
0029 };
0030
0031
0032 struct fitter_debug_msg {
0033 TRACCC_HOST std::string operator()() const {
0034 const std::string msg{"Kalman Fitter: "};
0035 switch (m_error_code) {
0036 using enum kalman_fitter_status;
0037 case SUCCESS: {
0038 return msg + "Success";
0039 }
0040 case ERROR_QOP_ZERO: {
0041 return msg + "Track qop is zero";
0042 }
0043 case ERROR_THETA_POLE: {
0044 return msg + "Track theta hit pole";
0045 }
0046 case ERROR_INVERSION: {
0047 return msg + "Failed matrix inversion";
0048 }
0049 case ERROR_SMOOTHER_CHI2_NEGATIVE: {
0050 return msg + "Negative chi2 in smoother";
0051 }
0052 case ERROR_SMOOTHER_CHI2_NOT_FINITE: {
0053 return msg + "Invalid chi2 in smoother";
0054 }
0055 case ERROR_SMOOTHER_INVALID_COVARIANCE: {
0056 return msg + "Invalid track covariance during smoothing";
0057 }
0058 case ERROR_SMOOTHER_SKIPPED_STATE: {
0059 return msg + "Skipped track state during smoothing";
0060 }
0061 case ERROR_UPDATER_INVALID_COVARIANCE: {
0062 return msg + "Invalid track covariance in forward fit";
0063 }
0064 case ERROR_UPDATER_SKIPPED_STATE: {
0065 return msg + "Skipped track state during forward fit";
0066 }
0067 case ERROR_GEOID_SEQUENCE_OVERFLOW: {
0068 return msg +
0069 "Geometry identifier sequence overflow in direct "
0070 "navigator";
0071 }
0072 case ERROR_PROPAGATION_FAILURE: {
0073 return msg + "Propagation failure";
0074 }
0075 case ERROR_OTHER: {
0076 return msg + "Unspecified error";
0077 }
0078 default: {
0079 return "Not a defined error code: " +
0080 std::to_string(static_cast<int>(m_error_code));
0081 }
0082 }
0083 }
0084
0085 kalman_fitter_status m_error_code{kalman_fitter_status::MAX_STATUS};
0086 };
0087
0088 }