Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:22:00

0001 /** TRACCC library, part of the ACTS project (R&D line)
0002  *
0003  * (c) 2022-2024 CERN for the benefit of the ACTS project
0004  *
0005  * Mozilla Public License Version 2.0
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 /// Convert a status code into a human readable string
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 }  // namespace traccc