File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #ifndef SBND_CRTENUMS_CXX
2+ #define SBND_CRTENUMS_CXX
3+
4+ #include " sbnobj/SBND/CRT/CRTEnums.hh"
5+
6+ sbnd::crt::CoordSet operator |(sbnd::crt::CoordSet lhs, sbnd::crt::CoordSet rhs) {
7+ return static_cast <sbnd::crt::CoordSet>(
8+ static_cast <std::underlying_type_t <sbnd::crt::CoordSet>>(lhs) |
9+ static_cast <std::underlying_type_t <sbnd::crt::CoordSet>>(rhs)
10+ );
11+ }
12+
13+ sbnd::crt::CoordSet operator &(sbnd::crt::CoordSet lhs, sbnd::crt::CoordSet rhs) {
14+ return static_cast <sbnd::crt::CoordSet>(
15+ static_cast <std::underlying_type_t <sbnd::crt::CoordSet>>(lhs) &
16+ static_cast <std::underlying_type_t <sbnd::crt::CoordSet>>(rhs)
17+ );
18+ }
19+
20+ #endif
Original file line number Diff line number Diff line change 1+ /* *
2+ * \brief Definitions of enums used in CRT objects
3+ *
4+ * \author Henry Lay (h.lay@lancaster.ac.uk)
5+ */
6+
7+ #ifndef SBND_CRTENUMS_HH
8+ #define SBND_CRTENUMS_HH
9+
10+ #include < stdint.h>
11+ #include < type_traits>
12+
13+ namespace sbnd ::crt {
14+
15+ // CRTTagger enum used to quickly refer to one of the seven SBND taggers.
16+
17+ enum CRTTagger {
18+ kUndefinedTagger = -1 ,
19+ kBottomTagger ,
20+ kSouthTagger ,
21+ kNorthTagger ,
22+ kWestTagger ,
23+ kEastTagger ,
24+ kTopLowTagger ,
25+ kTopHighTagger ,
26+
27+ kUpstreamTagger = kSouthTagger ,
28+ kDownstreamTagger = kNorthTagger
29+ };
30+
31+ // Often working in 1, 2 or 3 dimensions for CRT things, this enum allows us to define this easily.
32+ // It is defined like a bitset of flags such that the below operations can be defined usefully.
33+
34+ enum CoordSet : uint8_t {
35+ kUndefinedSet = 0 ,
36+ kX = 1 , // 001
37+ kY = 2 , // 010
38+ kZ = 4 , // 100
39+ kXY = 3 , // 011
40+ kXZ = 5 , // 101
41+ kYZ = 6 , // 110
42+ kXYZ = 7 , // 111
43+
44+ kThreeD = kXYZ
45+
46+ };
47+ }
48+
49+ extern sbnd::crt::CoordSet operator |(sbnd::crt::CoordSet lhs, sbnd::crt::CoordSet rhs);
50+
51+ extern sbnd::crt::CoordSet operator &(sbnd::crt::CoordSet lhs, sbnd::crt::CoordSet rhs);
52+
53+ #endif
You can’t perform that action at this time.
0 commit comments