Skip to content

Commit 6877f7e

Browse files
authored
Merge pull request #80 from SBNSoftware/feature/hlay_crt_clustering_enums
Add useful enums for CRT sim/reco
2 parents 8493fc4 + 03bfb68 commit 6877f7e

2 files changed

Lines changed: 73 additions & 0 deletions

File tree

sbnobj/SBND/CRT/CRTEnums.cxx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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

sbnobj/SBND/CRT/CRTEnums.hh

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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

0 commit comments

Comments
 (0)