Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:10:43

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 <limits>
0014 #include <type_traits>
0015 
0016 namespace ActsAlignment {
0017 
0018 /// Collection of bit masks to enable steering which alignment degree of freedom
0019 /// should be float. should be initialized, and which should be left invalid.
0020 /// These mask values can be combined using binary operators, so
0021 /// (AlignmentMask::Center0 | AlignmentMask::Center1) will instruct
0022 /// alignment for geometry object center x and y
0023 /// The enum is used as a strong type wrapper around the bits to prevent
0024 /// autoconversion from integer
0025 enum struct AlignmentMask : std::uint8_t {
0026   None = 0,
0027   Center0 = 1 << 0,
0028   Center1 = 1 << 1,
0029   Center2 = 1 << 2,
0030   Rotation0 = 1 << 3,
0031   Rotation1 = 1 << 4,
0032   Rotation2 = 1 << 5,
0033 
0034   All = std::numeric_limits<std::uint8_t>::max(),  // should be all ones
0035 };
0036 
0037 ACTS_DEFINE_ENUM_BITWISE_OPERATORS(AlignmentMask)
0038 
0039 }  // namespace ActsAlignment