Skip to content
Snippets Groups Projects
DigiEventSelectorConfig.cxx 2.04 KiB
/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
   SPDX-License-Identifier: GPL-3.0-only
   Authors: Shreya Roy. Pierre-Alain Loizeau, Volker Friese [committer], Dominik Smith */

#include "DigiEventSelectorConfig.h"

#include "AlgoFairloggerCompat.h"


namespace cbm::algo::evbuild
{

  // -----   Constructor from YAML   ------------------------------------------
  DigiEventSelectorConfig::DigiEventSelectorConfig(YAML::Node config)
  {
    if (!config) return;
    if (auto numDigis = config["minDigis"]) {
      for (YAML::const_iterator it = numDigis.begin(); it != numDigis.end(); it++) {
        auto det   = ToCbmModuleIdCaseInsensitive(it->first.as<std::string>());
        auto value = it->second.as<size_t>();
        if (value > 0)
          fMinNumDigis[det] = value;
        else
          L_(warning) << "DigiEventSelectorConfig: Ignoring minimum 0 for digis in " << ::ToString(det);
      }
    }
    if (auto numLayers = config["minLayers"]) {
      for (YAML::const_iterator it = numLayers.begin(); it != numLayers.end(); it++) {
        auto det   = ToCbmModuleIdCaseInsensitive(it->first.as<std::string>());
        auto value = it->second.as<size_t>();
        if (value > 0)
          fMinNumLayers[det] = value;
        else
          L_(warning) << "DigiEventSelectorConfig: Ignoring minimum 0 for layers in " << ::ToString(det);
      }
    }
  }
  // --------------------------------------------------------------------------


  // -----   Save to YAML   ---------------------------------------------------
  YAML::Node DigiEventSelectorConfig::ToYaml() const
  {
    YAML::Node result;
    for (const auto& entry : fMinNumDigis) {
      auto det                = ToString(entry.first);
      result["minDigis"][det] = entry.second;
    }
    for (const auto& entry : fMinNumLayers) {
      auto det                 = ToString(entry.first);
      result["minLayers"][det] = entry.second;
    }
    return result;
  }
  // --------------------------------------------------------------------------


}  // namespace cbm::algo::evbuild