artdaq_core_demo  v1_07_01
FragmentType.hh
1 #ifndef artdaq_demo_Overlays_FragmentType_hh
2 #define artdaq_demo_Overlays_FragmentType_hh
3 #include <unordered_map>
4 #include "artdaq-core/Data/Fragment.hh"
5 
6 namespace demo {
7 
11 namespace detail {
15 enum FragmentType : artdaq::Fragment::type_t
16 {
17  MISSED = artdaq::Fragment::FirstUserFragmentType,
18  TOY1 = artdaq::Fragment::FirstUserFragmentType + 1,
19  TOY2 = artdaq::Fragment::FirstUserFragmentType + 2,
20  ASCII = artdaq::Fragment::FirstUserFragmentType + 3,
21  UDP = artdaq::Fragment::FirstUserFragmentType + 4,
22  INVALID // Should always be last.
23 };
24 
25 // Safety check.
26 static_assert(artdaq::Fragment::isUserFragmentType(FragmentType::INVALID - 1), "Too many user-defined fragments!");
27 } // namespace detail
28 
30 
34 std::unordered_map<FragmentType, std::string> const names{
35  {FragmentType::MISSED, "MISSED"},
36  {FragmentType::TOY1, "TOY1"},
37  {FragmentType::TOY2, "TOY2"},
38  {FragmentType::ASCII, "ASCII"},
39  {FragmentType::UDP, "UDP"},
40  {FragmentType::INVALID, "UNKNOWN"}};
41 
47 FragmentType toFragmentType(std::string t_string);
48 
54 std::string fragmentTypeToString(FragmentType val);
55 
60 std::map<artdaq::Fragment::type_t, std::string> makeFragmentTypeMap();
61 } // namespace demo
62 #endif /* artdaq_demo_Overlays_FragmentType_hh */
std::unordered_map< FragmentType, std::string > const names
List of names (in the order defined below) of the User types defined in artdaq_core_demo.
Definition: FragmentType.hh:34
std::string fragmentTypeToString(FragmentType val)
Look up the name of the given FragmentType.
Definition: FragmentType.cc:18
FragmentType
User type codes defined by artdaq_core_demo.
Definition: FragmentType.hh:15
std::map< artdaq::Fragment::type_t, std::string > makeFragmentTypeMap()
Create a list of all Fragment types defined by this package, in the format that RawInput expects...
Definition: FragmentType.cc:28
FragmentType toFragmentType(std::string t_string)
Lookup the type code for a fragment by its string name.
Definition: FragmentType.cc:8