Back to home page

EIC code displayed by LXR

 
 

    


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

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 <iostream>
0012 
0013 namespace Acts {
0014 
0015 ///  @enum BoundarySurfaceFace
0016 ///
0017 ///  Enum to describe the position of the BoundarySurface
0018 ///  respectively to the frame orientatin of the volume,
0019 ///  this is mainly meant for code readability.
0020 ///
0021 ///  The different numeration sequences can be found in the
0022 ///  documentation of the actual VolumeBounds implementations.
0023 ///
0024 ///  The order of faces is chosen to follow - as much as
0025 ///  possible - a circular structure.
0026 enum BoundarySurfaceFace {
0027   negativeFaceXY = 0,
0028   positiveFaceXY = 1,
0029   negativeFaceYZ = 2,
0030   positiveFaceYZ = 3,
0031   negativeFaceZX = 4,
0032   positiveFaceZX = 5,
0033   cylinderCover = 2,
0034   tubeInnerCover = 3,
0035   tubeOuterCover = 2,
0036   tubeSectorNegativePhi = 4,
0037   tubeSectorPositivePhi = 5,
0038   tubeSectorInnerCover = 3,
0039   tubeSectorOuterCover = 2,
0040   trapezoidFaceAlpha = 2,
0041   trapezoidFaceBeta = 3,
0042   index0 = 0,
0043   index1 = 1,
0044   index2 = 2,
0045   index3 = 3,
0046   index4 = 4,
0047   index5 = 5,
0048   index6 = 6,
0049   index7 = 7,
0050   index8 = 8,
0051   index9 = 9,
0052   index10 = 10,
0053   index11 = 11,
0054   undefinedFace = 99
0055 
0056 };
0057 
0058 inline std::ostream& operator<<(std::ostream& os, BoundarySurfaceFace& face) {
0059   os << "BoundarySurfaceFace::";
0060 
0061   switch (face) {
0062     case negativeFaceXY:
0063       os << "negativeFaceXY";
0064       break;
0065     case positiveFaceXY:
0066       os << "positiveFaceXY";
0067       break;
0068     case negativeFaceYZ:
0069       os << "negativeFaceYZ|cylinderCover|tubeOuterCover|tubeSectorOuterCover|"
0070             "trapezoidFaceAlpha";
0071       break;
0072     case positiveFaceYZ:
0073       os << "positiveFaceYZ|tubeInnerCover|tubeSectorInnerCover|"
0074             "trapezoidFaceBeta";
0075       break;
0076     case negativeFaceZX:
0077       os << "negativeFaceZX|tubeSectorNegativePhi";
0078       break;
0079     case positiveFaceZX:
0080       os << "positiveFaceZX|tubeSectorPositivePhi";
0081       break;
0082     case undefinedFace:
0083       os << "undefinedFace";
0084       break;
0085     default:
0086       os << face;
0087   }
0088 
0089   return os;
0090 }
0091 }  // namespace Acts