00001 #include "mu2e-artdaq-core/Overlays/FragmentType.hh" 00002 00003 #include <algorithm> 00004 #include <cassert> 00005 #include <string> 00006 #include <vector> 00007 00008 mu2e::FragmentType mu2e::toFragmentType(std::string t_string) 00009 { 00010 std::transform(t_string.begin(), t_string.end(), t_string.begin(), toupper); 00011 auto it = std::find(names.begin(), names.end(), t_string); 00012 return (it == names.end()) 00013 ? FragmentType::INVALID 00014 : static_cast<FragmentType>(artdaq::Fragment::FirstUserFragmentType + (it - names.begin())); 00015 } 00016 00017 std::string mu2e::fragmentTypeToString(FragmentType val) 00018 { 00019 if (val < FragmentType::INVALID) { 00020 return names[val - FragmentType::MISSED]; 00021 } 00022 else 00023 { 00024 return "INVALID/UNKNOWN"; 00025 } 00026 } 00027 00028 std::map<artdaq::Fragment::type_t, std::string> mu2e::makeFragmentTypeMap() 00029 { 00030 auto output = artdaq::Fragment::MakeSystemTypeMap(); 00031 for (auto name : names) { 00032 output[toFragmentType(name)] = name; 00033 } 00034 return output; 00035 }