Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-22 08:48:36

0001 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
0002 
0003 #ifndef EDM4HEP_TrackState_H
0004 #define EDM4HEP_TrackState_H
0005 
0006 #include "edm4hep/CovMatrix6f.h"
0007 #include "edm4hep/Vector3f.h"
0008 #include <cstdint>
0009 #include <edm4hep/Constants.h>
0010 #include <ostream>
0011 
0012 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0013 #include "nlohmann/json_fwd.hpp"
0014 #endif
0015 
0016 namespace edm4hep {
0017 
0018 /** @class TrackState
0019  *  Parametrized description of a particle track
0020  *  @author:
0021  */
0022 class TrackState {
0023 public:
0024   std::int32_t
0025       location{}; ///< location of this track state, see edm4hep::TrackState::Location for the predefined values
0026   float D0{};     ///< transverse impact parameter
0027   float phi{};    ///< azimuthal angle of the track at this location (i.e. not phi0) [rad]
0028   float omega{};
0029   float Z0{};        ///< longitudinal impact parameter
0030   float tanLambda{}; ///< lambda is the dip angle of the track in r-z
0031   float time{};      ///< time of the track at this trackstate [ns]
0032   ::edm4hep::Vector3f
0033       referencePoint{}; ///< Reference point of the track parameters, e.g. the origin at the IP, or the position  of the
0034                         ///< first/last hits or the entry point into the calorimeter [mm]
0035   ::edm4hep::CovMatrix6f covMatrix{}; ///< covariance matrix of the track parameters.
0036 
0037   /// The predefined locations at which a TrackState can be defined
0038   ///
0039   /// NOTE: This is deliberately an *unscoped* enum with a fixed underlying type:
0040   /// - The implicit conversion to std::int32_t keeps all existing uses of
0041   ///   edm4hep::TrackState::AtIP (and friends) valid, e.g. assigning to the
0042   ///   location member or aggregate initialization of a TrackState.
0043   /// - cppyy picks up the enumerators of an unscoped enum directly, so
0044   ///   edm4hep.TrackState.AtIP keeps working from python.
0045   ///
0046   /// It is nevertheless a distinct type, which is useful in certain cases to avoid
0047   /// confusion with plain ints.
0048   enum Location : std::int32_t {
0049     AtOther = 0,             ///< any location other than the ones defined below
0050     AtIP = 1,                ///< at the interaction point
0051     AtFirstHit = 2,          ///< at the first hit of the track
0052     AtLastHit = 3,           ///< at the last hit of the track
0053     AtCalorimeter = 4,       ///< at the entry point into the calorimeter
0054     AtVertex = 5,            ///< at the vertex
0055     LastLocation = AtVertex, ///< the last of the predefined locations
0056   };
0057 
0058   /// Get the covariance matrix value for the two passed parameters
0059   constexpr float getCovMatrix(edm4hep::TrackParams parI, edm4hep::TrackParams parJ) const {
0060     return covMatrix.getValue(parI, parJ);
0061   }
0062   /// Set the covariance matrix value for the two passed parameters
0063   constexpr void setCovMatrix(float value, edm4hep::TrackParams parI, edm4hep::TrackParams parJ) {
0064     covMatrix.setValue(value, parI, parJ);
0065   }
0066 };
0067 
0068 std::ostream& operator<<(std::ostream& o, const TrackState& value);
0069 
0070 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0071 void to_json(nlohmann::json& j, const TrackState& value);
0072 #endif
0073 
0074 namespace v6 {
0075   using TrackState = edm4hep::TrackState;
0076 } // namespace v6
0077 
0078 // Definitions for older versions
0079 namespace v5 {
0080 
0081   class TrackState {
0082   public:
0083     std::int32_t location{}; ///< for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation
0084     float D0{};              ///< transverse impact parameter
0085     float phi{};             ///< azimuthal angle of the track at this location (i.e. not phi0) [rad]
0086     float omega{};
0087     float Z0{};        ///< longitudinal impact parameter
0088     float tanLambda{}; ///< lambda is the dip angle of the track in r-z
0089     float time{};      ///< time of the track at this trackstate [ns]
0090     ::edm4hep::Vector3f
0091         referencePoint{}; ///< Reference point of the track parameters, e.g. the origin at the IP, or the position  of
0092                           ///< the first/last hits or the entry point into the calorimeter [mm]
0093     ::edm4hep::CovMatrix6f covMatrix{}; ///< covariance matrix of the track parameters.
0094   };
0095 
0096 } // namespace v5
0097 namespace v4 {
0098 
0099   class TrackState {
0100   public:
0101     std::int32_t location{}; ///< for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation
0102     float D0{};              ///< transverse impact parameter
0103     float phi{};             ///< azimuthal angle of the track at this location (i.e. not phi0) [rad]
0104     float omega{};
0105     float Z0{};        ///< longitudinal impact parameter
0106     float tanLambda{}; ///< lambda is the dip angle of the track in r-z
0107     float time{};      ///< time of the track at this trackstate [ns]
0108     ::edm4hep::Vector3f
0109         referencePoint{}; ///< Reference point of the track parameters, e.g. the origin at the IP, or the position  of
0110                           ///< the first/last hits or the entry point into the calorimeter [mm]
0111     ::edm4hep::CovMatrix6f covMatrix{}; ///< covariance matrix of the track parameters.
0112   };
0113 
0114 } // namespace v4
0115 namespace v3 {
0116 
0117   class TrackState {
0118   public:
0119     std::int32_t location{}; ///< for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation
0120     float D0{};              ///< transverse impact parameter
0121     float phi{};             ///< azimuthal angle of the track at this location (i.e. not phi0) [rad]
0122     float omega{};
0123     float Z0{};        ///< longitudinal impact parameter
0124     float tanLambda{}; ///< lambda is the dip angle of the track in r-z
0125     float time{};      ///< time of the track at this trackstate [ns]
0126     ::edm4hep::Vector3f
0127         referencePoint{}; ///< Reference point of the track parameters, e.g. the origin at the IP, or the position  of
0128                           ///< the first/last hits or the entry point into the calorimeter [mm]
0129     ::edm4hep::CovMatrix6f covMatrix{}; ///< covariance matrix of the track parameters.
0130   };
0131 
0132 } // namespace v3
0133 namespace v2 {
0134 
0135   class TrackState {
0136   public:
0137     std::int32_t location{}; ///< for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation
0138     float D0{};              ///< transverse impact parameter
0139     float phi{};             ///< azimuthal angle
0140     float omega{};
0141     float Z0{};        ///< longitudinal impact parameter
0142     float tanLambda{}; ///< lambda is the dip angle of the track in r-z
0143     float time{};      ///< time of the track at this trackstate [ns]
0144     ::edm4hep::Vector3f
0145         referencePoint{}; ///< Reference point of the track parameters, e.g. the origin at the IP, or the position  of
0146                           ///< the first/last hits or the entry point into the calorimeter [mm]
0147     ::edm4hep::CovMatrix6f covMatrix{}; ///< covariance matrix of the track parameters.
0148   };
0149 
0150 } // namespace v2
0151 
0152 } // namespace edm4hep
0153 
0154 #endif