diff --git a/algo/detectors/trd/ReadoutConfig.h b/algo/detectors/trd/ReadoutConfig.h index a20bc9d1ab4ddb8e98a5f2165e3b46df5758660c..619e448e4e471f3c367a108f39e709defe4b0b93 100644 --- a/algo/detectors/trd/ReadoutConfig.h +++ b/algo/detectors/trd/ReadoutConfig.h @@ -87,7 +87,13 @@ namespace cbm::algo::trd void Init(const std::map<size_t, std::map<size_t, std::map<size_t, size_t>>>& addressMap, std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, size_t>>>>& channelMap); + /** @brief Get system time offset **/ + int64_t GetSystemTimeOffset() { return fSystemTimeOffset; }; + private: + // --- System time offset + int64_t fSystemTimeOffset = 0; + // --- TRD readout map // --- Map index: (equipment, crob, elink), map value: (ASIC address) std::map<uint16_t, std::vector<std::vector<uint16_t>>> fReadoutMap = {}; //! @@ -100,6 +106,7 @@ namespace cbm::algo::trd std::map<uint32_t, std::vector<int32_t>> fElinkTimeOffsetMap; CBM_YAML_PROPERTIES( + yaml::Property(&ReadoutConfig::fSystemTimeOffset, "timeOffset", "System time offset for TRD1D"), yaml::Property(&ReadoutConfig::fReadoutMap, "readoutMap", "TRD readout map", {}, YAML::Hex), yaml::Property(&ReadoutConfig::fChannelMap, "channelMap", "TRD channel map"), yaml::Property(&ReadoutConfig::fElinkTimeOffsetMap, "elinkTimeOffset", "TRD time offset per CRI&Elink combination") diff --git a/algo/detectors/trd/Unpack.cxx b/algo/detectors/trd/Unpack.cxx index 9a5fcdc1e58a7ccb3dc4ec5190a07e3bc81fb1d0..55eec70197cf9b5b7f422c854a9860f4b317633c 100644 --- a/algo/detectors/trd/Unpack.cxx +++ b/algo/detectors/trd/Unpack.cxx @@ -11,7 +11,6 @@ using fles::Subsystem; Unpack::Unpack(const ReadoutConfig& readout) : fReadout(readout) { - constexpr i64 SystemTimeOffset = 1300; constexpr std::array<u8, 2> SystemVersion = {0x01, 0x10}; // Create one algorithm per component for TRD and configure it with parameters @@ -29,7 +28,7 @@ Unpack::Unpack(const ReadoutConfig& readout) : fReadout(readout) auto addresses = fReadout.Map(equip, crob, elink); elinkPar.fAddress = addresses.first; // Asic address for this elink elinkPar.fChanAddress = addresses.second; // Channel addresses for this elink - elinkPar.fTimeOffset = SystemTimeOffset + fReadout.GetElinkTimeOffset(crob, elink); + elinkPar.fTimeOffset = fReadout.GetSystemTimeOffset() + fReadout.GetElinkTimeOffset(crob, elink); crobPar.fElinkParams.push_back(elinkPar); } par.fCrobParams.push_back(crobPar);