Skip to content
Snippets Groups Projects
Select Git revision
  • 9c43ebb65d87320d63fae73ba1bd61c2e4f451d7
  • master default protected
  • nightly_master
  • online_mvd_readconf_cleanup protected
  • online_much_readconf_cleanup protected
  • jul25_patches
  • cleanup_rich_v25a
  • jul24_patches
  • nov23_patches
  • DC_2404
  • nighly_master
  • DC_Jan24
  • DC_Nov23
  • DC_Oct23
  • feb23_patches
  • L1Algo-dev9
  • dec21_patches protected
  • apr21_patches protected
  • dev_2025_46
  • dev_2025_45
  • dev_2025_44
  • dev_2025_43
  • dev_2025_42
  • dev_2025_41
  • dev_2025_40
  • dev_2025_39
  • dev_2025_38
  • dev_2025_37
  • dev_2025_36
  • dev_2025_35
  • dev_2025_34
  • dev_2025_33
  • dev_2025_32
  • dev_2025_31
  • dev_2025_30
  • RC_jul25
  • dev_2025_29
  • dev_2025_28
38 results

main.dox

Blame
  • MainConfig.cxx 3.35 KiB
    /* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
       SPDX-License-Identifier: GPL-3.0-only
       Authors: Volker Friese [committer] */
    
    #include "MainConfig.h"
    
    #include <fstream>
    
    #include <yaml-cpp/yaml.h>
    
    namespace cbm::algo
    {
    
      // -----   Load configuration from YAML file   --------------------------------
      void MainConfig::LoadYaml(const std::string& filename)
      {
        YAML::Node config = YAML::LoadFile(filename);
    
        // --- Digi trigger
        fTriggerDet       = ToCbmModuleIdCaseInsensitive(config["trigger"]["detector"].as<std::string>());
        fTriggerWin       = config["trigger"]["window"].as<double>();
        fTriggerThreshold = config["trigger"]["threshold"].as<size_t>();
        fTriggerDeadTime  = config["trigger"]["deadtime"].as<double>();
    
        // --- Event builder: (detector -> (tMin, tMax))
        if (auto eventbuilder = config["eventbuilder"]) {
          if (auto windows = eventbuilder["windows"]) {
            for (YAML::const_iterator it = windows.begin(); it != windows.end(); ++it) {
              auto det              = ToCbmModuleIdCaseInsensitive(it->first.as<std::string>());
              auto lower            = it->second[0].as<double>();
              auto upper            = it->second[1].as<double>();
              fEvtbuildWindows[det] = std::make_pair(lower, upper);
            }
          }
        }
    
        // --- Event selector parameters
        fSelectMinStationsSts = config["selector"]["minStationsSts"].as<size_t>();
        fSelectMinStationsTof = config["selector"]["minStationsTof"].as<size_t>();
        fSelectMinDigisBmon   = config["selector"]["minDigisBmon"].as<size_t>();
    
        // --- Branch persistence in output file
        fStoreTimeslice = config["store"]["timeslice"].as<bool>();
        fStoreTrigger   = config["store"]["triggers"].as<bool>();
        fStoreEvents    = config["store"]["events"].as<bool>();
    
        // --- QA publishing
        fHttpServerRefreshRate = config["qa"]["refreshrate"].as<int32_t>(fHttpServerRefreshRate);
      }
      // ----------------------------------------------------------------------------
    
    
      // -----   Save configuration to YAML file   ----------------------------------
      void MainConfig::SaveYaml(const std::string& filename)
      {
        YAML::Node config;
    
        // --- Digi trigger
        config["trigger"]["detector"]  = ToString(fTriggerDet);
        config["trigger"]["window"]    = fTriggerWin;
        config["trigger"]["threshold"] = fTriggerThreshold;
        config["trigger"]["deadtime"]  = fTriggerDeadTime;
    
        // --- Event builder: (detector -> (tMin, tMax))
        for (const auto& [key, value] : fEvtbuildWindows) {
          auto det = ToString(key);
          config["eventbuilder"]["windows"][det].push_back(value.first);
          config["eventbuilder"]["windows"][det].push_back(value.second);
        };
    
        // --- Event selector
        config["selector"]["minStationsSts"] = fSelectMinStationsSts;
        config["selector"]["minStationsTof"] = fSelectMinStationsTof;
        config["selector"]["minDigisBmon"]   = fSelectMinDigisBmon;
    
    
        // --- Branch persistence in output file
        config["store"]["timeslice"] = fStoreTimeslice;
        config["store"]["triggers"]  = fStoreTrigger;
        config["store"]["events"]    = fStoreEvents;
        // --- QA publishing
        config["qa"]["refreshrate"] = fHttpServerRefreshRate;
        // ---
        std::ofstream fout(filename);
        fout << config;
      }
      // ----------------------------------------------------------------------------
    
    } /* namespace cbm::algo */