61 using ColumnArray_t = std::array<std::string, 6>;
62 std::vector<ColumnArray_t> summaryTable{ColumnArray_t{
"layer",
"sector",
"type",
63 "on-track",
"outlier",
"hole"}};
67 for (
const bool small: {
false,
true}) {
70 const unsigned onTrk =
value(cat, Status::OnTrack, lay, small);
71 const unsigned outlier =
value(cat, Status::Outlier, lay, small);
72 const unsigned hole =
value(cat, Status::Hole, lay, small);
73 if (onTrk + outlier + hole == 0u) {
77 (small ?
"small" :
"large"),
78 toString(cat), std::to_string(onTrk),
79 std::to_string(outlier), std::to_string(hole)});
83 std::array<std::size_t, 6> widths{};
84 for (
const ColumnArray_t& row : summaryTable) {
85 for (std::size_t c = 0 ; c < row.size(); ++c) {
86 widths[c] = std::max(widths[c], row[c].size());
89 for (
const ColumnArray_t& row : summaryTable) {
91 for (std::size_t c = 0; c < row.size(); ++c) {
92 const std::size_t W = widths[c] - row[c].size();
93 const std::size_t nWL = (W - W % 2) / 2;
94 const std::size_t nWR = (W - W % 2) / 2 + W%2;
95 ostr<<
" "<<whiteSpaces(nWL)<<row[c]<<whiteSpaces(nWR)<<
" |";
unsigned translate(const HitCategory cat, const Status status, LayerIndex layer, const bool isSmall) const
Translates the 4 classification indices to a unique consecutive number (used for storage access)
value_type value(const HitCategory cat, const Status status, const LayerIndex layer, const bool isSmall) const
Returns the value type for a defined hit category & layer.