Skip to content
Snippets Groups Projects
Commit caf3c29e authored by Felix Weiglhofer's avatar Felix Weiglhofer
Browse files

algo: Rename sts::ReadoutMapping to sts::ReadoutConfig.

parent 52a120e6
No related branches found
No related tags found
1 merge request!1171algo: read STS Unpacker setup from yaml.
......@@ -14,10 +14,10 @@ set(SRCS
base/Options.cxx
base/util/TimingsFormat.cxx
data/sts/LandauTable.cxx
data/sts/ReadoutSetup.cxx
evbuild/EventBuilder.cxx
trigger/TimeClusterTrigger.cxx
evselector/DigiEventSelector.cxx
detectors/sts/ReadoutConfig.cxx
detectors/sts/StsHitfinderChain.cxx
detectors/sts/StsReadoutConfig.cxx
detectors/sts/StsUnpackChain.cxx
......
/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Volker Friese [committer], Felix Weiglhofer */
#include "ReadoutSetup.h"
#include "ReadoutConfig.h"
#include "CbmStsAddress.h"
......@@ -14,40 +14,40 @@ using std::setw;
using namespace cbm::algo;
// --- Constructor ------------------------------------------------------------------
sts::ReadoutMapping::ReadoutMapping(const ReadoutSetup& config) { Init(config); }
sts::ReadoutConfig::ReadoutConfig(const ReadoutSetup& config) { Init(config); }
// ------------------------------------------------------------------------------------
// --- Equipment IDs --------------------------------------------------------------
std::vector<u16> sts::ReadoutMapping::GetEquipmentIds()
std::vector<u16> sts::ReadoutConfig::GetEquipmentIds()
{
std::vector<uint16_t> result;
for (auto& entry : fReadoutMapping)
for (auto& entry : fReadoutConfig)
result.push_back(entry.first);
return result;
}
// ------------------------------------------------------------------------------------
// --- Number of elinks for a component / equipment -------------------------------
size_t sts::ReadoutMapping::GetNumElinks(u16 equipmentId)
size_t sts::ReadoutConfig::GetNumElinks(u16 equipmentId)
{
size_t result = 0;
auto it = fReadoutMapping.find(equipmentId);
if (it != fReadoutMapping.end()) result = fReadoutMapping[equipmentId].size();
auto it = fReadoutConfig.find(equipmentId);
if (it != fReadoutConfig.end()) result = fReadoutConfig[equipmentId].size();
return result;
}
// ------------------------------------------------------------------------------------
size_t sts::ReadoutMapping::GetNumElinks()
size_t sts::ReadoutConfig::GetNumElinks()
{
size_t result = 0;
for (auto& entry : fReadoutMapping) {
for (auto& entry : fReadoutConfig) {
result += entry.second.size();
}
return result;
}
// --- Initialise the mapping structure --------------------------------------------
void sts::ReadoutMapping::Init(const ReadoutSetup& config)
void sts::ReadoutConfig::Init(const ReadoutSetup& config)
{
// The readout hierarchy is: component - CROB - FEB - ASIC (elink). Each elink
// connects one ASIC. One FEB comprises 8 ASICs and reads out one side of a module (sensor).
......@@ -68,7 +68,7 @@ void sts::ReadoutMapping::Init(const ReadoutSetup& config)
for (uint16_t compIdx = 0; compIdx < numComp; compIdx++) {
const auto& component = config.components.at(compIdx);
uint16_t equipment = component.equipmentId;
fReadoutMapping[equipment].resize(numElinksPerComp);
fReadoutConfig[equipment].resize(numElinksPerComp);
for (uint16_t crobIdx = 0; crobIdx < numCrobPerComp; crobIdx++) {
for (uint16_t elinkIdx = 0; elinkIdx < numElinksPerCrob; elinkIdx++) {
......@@ -97,7 +97,7 @@ void sts::ReadoutMapping::Init(const ReadoutSetup& config)
asicInModule = (moduleSide == 1 ? asicInFeb : asicInFeb + numAsicsPerFeb);
}
}
fReadoutMapping[equipment][elinkIdx] = {moduleAddress, asicInModule, isPulser};
fReadoutConfig[equipment][elinkIdx] = {moduleAddress, asicInModule, isPulser};
} //# elink
} //# CROB
......@@ -106,11 +106,11 @@ void sts::ReadoutMapping::Init(const ReadoutSetup& config)
// ------------------------------------------------------------------------------------
// --- Mapping (equimentId, elink) -> (address, ASIC) --------------------------------
sts::ReadoutMapping::Entry sts::ReadoutMapping::Map(uint16_t equipmentId, uint16_t elinkId)
sts::ReadoutConfig::Entry sts::ReadoutConfig::Map(uint16_t equipmentId, uint16_t elinkId)
{
Entry result {-1, 0, false};
auto equipIter = fReadoutMapping.find(equipmentId);
if (equipIter != fReadoutMapping.end()) {
auto equipIter = fReadoutConfig.find(equipmentId);
if (equipIter != fReadoutConfig.end()) {
if (elinkId < equipIter->second.size()) { result = equipIter->second.at(elinkId); }
}
return result;
......@@ -118,11 +118,11 @@ sts::ReadoutMapping::Entry sts::ReadoutMapping::Map(uint16_t equipmentId, uint16
// ------------------------------------------------------------------------------------
// ----- Print readout map ------------------------------------------------
std::string sts::ReadoutMapping::PrintReadoutMap()
std::string sts::ReadoutConfig::PrintReadoutMap()
{
std::stringstream ss;
for (auto& equipment : fReadoutMapping) {
for (auto& equipment : fReadoutConfig) {
auto eqId = equipment.first;
for (size_t elink = 0; elink < equipment.second.size(); elink++) {
auto address = equipment.second.at(elink).moduleAddress;
......
/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Volker Friese [committer], Felix Weiglhofer */
#ifndef CBM_ALGO_DATA_STS_READOUT_H
#define CBM_ALGO_DATA_STS_READOUT_H
#ifndef CBM_ALGO_DETECTOR_STS_READOUT_CONFIG_H
#define CBM_ALGO_DETECTOR_STS_READOUT_CONFIG_H
#include <map>
#include <string>
......@@ -70,7 +70,7 @@ namespace cbm::algo::sts
config::Property(&ReadoutSetup::elinks, "elinks", "Elinks", {}, YAML::Flow));
};
/** @class ReadoutMapping
/** @class ReadoutConfig
** @author Volker Friese <v.friese@gsi.de>
** @since 3 March 2022
** @brief Provides the hardware-to-software address mapping for the CBM-STS
......@@ -80,7 +80,7 @@ namespace cbm::algo::sts
** component. This is to be translated into the module address and the ASIC number within
** the module.
**/
class ReadoutMapping {
class ReadoutConfig {
public:
struct Entry {
......@@ -90,10 +90,10 @@ namespace cbm::algo::sts
};
/** @brief Empty mapping **/
ReadoutMapping() = default;
ReadoutConfig() = default;
/** @brief Constructor **/
ReadoutMapping(const ReadoutSetup&);
ReadoutConfig(const ReadoutSetup&);
/** @brief Equipment in the configuration
** @return Vector of equipment IDs
......@@ -124,7 +124,7 @@ namespace cbm::algo::sts
private:
// --- STS readout map
// --- Map index: (equipment, elink)
std::map<u16, std::vector<Entry>> fReadoutMapping = {}; //!
std::map<u16, std::vector<Entry>> fReadoutConfig = {}; //!
/** @brief Initialisation of readout map **/
void Init(const ReadoutSetup&);
......@@ -132,4 +132,4 @@ namespace cbm::algo::sts
} // namespace cbm::algo::sts
#endif // CBM_ALGO_DATA_STS_READOUT_H
#endif // CBM_ALGO_DETECTOR_STS_READOUT_CONFIG_H
......@@ -13,7 +13,7 @@
using namespace cbm::algo;
void sts::UnpackChain::Init(sts::ReadoutMapping config)
void sts::UnpackChain::Init(sts::ReadoutConfig config)
{
fConfig = config;
......
......@@ -12,9 +12,9 @@
#include <yaml-cpp/yaml.h>
#include "Prelude.h"
#include "ReadoutConfig.h"
#include "SubChain.h"
#include "UnpackSts.h"
#include "sts/ReadoutSetup.h"
class CbmStsDigi;
namespace fles
......@@ -28,12 +28,12 @@ namespace cbm::algo::sts
class UnpackChain : public SubChain {
public:
void Init(sts::ReadoutMapping config);
void Init(sts::ReadoutConfig config);
std::vector<CbmStsDigi> Run(const fles::Timeslice& ts);
private:
std::unordered_map<u16, UnpackSts> fAlgoSts;
std::optional<sts::ReadoutMapping> fConfig;
std::optional<sts::ReadoutConfig> fConfig;
};
} // namespace cbm::algo::sts
......
......@@ -35,7 +35,7 @@ void Reco::Init(const Options& opts)
fs::path stsUnpackParamsPath = opts.ParamsDir() / "StsReadout.yaml";
yaml = YAML::LoadFile(stsUnpackParamsPath.string());
sts::ReadoutSetup readoutConfig = config::Read<sts::ReadoutSetup>(yaml);
sts::ReadoutMapping mapping(readoutConfig);
sts::ReadoutConfig mapping(readoutConfig);
fUnpack.Init(mapping);
// STS Hitfinder
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment