Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-21 07:46:20

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/Utilities/EnumBitwiseOperators.hpp"
0012 
0013 #include <cstdint>
0014 #include <iosfwd>
0015 
0016 namespace Acts {
0017 
0018 ///  This is a steering enum to tell which material update mode:
0019 /// - NoUpdate   : no update
0020 /// - PreUpdate  : update on approach of a surface
0021 /// - PostUpdate : update when leaving a surface
0022 /// - FullUpdate : update when passing a surface
0023 enum class MaterialUpdateMode : std::uint8_t {
0024   NoUpdate = 0,
0025   PreUpdate = 1,
0026   PostUpdate = 2,
0027   FullUpdate = PreUpdate | PostUpdate,
0028 };
0029 
0030 /// Enable bitwise operators for MaterialUpdateMode enum
0031 ACTS_DEFINE_ENUM_BITWISE_OPERATORS(MaterialUpdateMode);
0032 
0033 /// Stream operator for MaterialUpdateMode
0034 /// @param os Output stream
0035 /// @param mode MaterialUpdateMode to output
0036 /// @return Reference to output stream
0037 std::ostream& operator<<(std::ostream& os, MaterialUpdateMode mode);
0038 
0039 /// @enum NoiseUpdateMode to tell how to deal with noise term in covariance
0040 /// transport
0041 /// - removeNoise: subtract noise term
0042 /// - addNoise: add noise term
0043 enum class NoiseUpdateMode : int { removeNoise = -1, addNoise = 1 };
0044 
0045 /// Components of coordinate vectors.
0046 ///
0047 /// To be used to access coordinate components by named indices instead of magic
0048 /// numbers. This must be a regular `enum` and not a scoped `enum class` to
0049 /// allow implicit conversion to an integer. The enum value are thus visible
0050 /// directly in `namespace Acts`.
0051 ///
0052 /// This index enum is not user-configurable (in contrast e.g. to the track
0053 /// parameter index enums) since it must be compatible with varying
0054 /// dimensionality (2d-4d) and other access methods (`.{x,y,z}()` accessors).
0055 enum CoordinateIndices : unsigned int {
0056   // generic position-like access
0057   ePos0 = 0,
0058   ePos1 = 1,
0059   ePos2 = 2,
0060   eTime = 3,
0061   // generic momentum-like access
0062   eMom0 = ePos0,
0063   eMom1 = ePos1,
0064   eMom2 = ePos2,
0065   eEnergy = eTime,
0066   // Cartesian spatial coordinates
0067   eX = ePos0,
0068   eY = ePos1,
0069   eZ = ePos2,
0070 };
0071 
0072 }  // namespace Acts