62 using ColumnArray_t = std::array<std::string, 6>;
63 std::vector<ColumnArray_t> summaryTable{ColumnArray_t{
"layer",
"sector",
"type",
64 "on-track",
"outlier",
"hole"}};
68 for (
const bool small: {
false,
true}) {
71 const unsigned onTrk =
value(cat, Status::OnTrack, lay, small);
72 const unsigned outlier =
value(cat, Status::Outlier, lay, small);
73 const unsigned hole =
value(cat, Status::Hole, lay, small);
74 if (onTrk + outlier + hole == 0u) {
78 (small ?
"small" :
"large"),
79 toString(cat), std::to_string(onTrk),
80 std::to_string(outlier), std::to_string(hole)});
84 std::array<std::size_t, 6> widths{};
85 for (
const ColumnArray_t& row : summaryTable) {
86 for (std::size_t c = 0 ; c < row.size(); ++c) {
87 widths[c] = std::max(widths[c], row[c].size());
90 for (
const ColumnArray_t& row : summaryTable) {
92 for (std::size_t c = 0; c < row.size(); ++c) {
93 const std::size_t W = widths[c] - row[c].size();
94 const std::size_t nWL = (W - W % 2) / 2;
95 const std::size_t nWR = (W - W % 2) / 2 + W%2;
96 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.