20#ifndef ALICEO2_FIT_RAWREADERBASEFIT_H_
21#define ALICEO2_FIT_RAWREADERBASEFIT_H_
39template <
typename DigitBlockFITtype,
typename DataBlockPMtype,
typename DataBlockTCMtype>
46 typedef std::conditional_t<DataBlockPMtype::sIsPadded, typename DataBlockPMtype::DataBlockInvertedPadding_t, DataBlockPMtype>
DataBlockPM_t;
47 typedef std::conditional_t<DataBlockTCMtype::sIsPadded, typename DataBlockTCMtype::DataBlockInvertedPadding_t, DataBlockTCMtype>
DataBlockTCM_t;
49 typedef std::conditional_t<DataBlockPMtype::sIsPadded, DataBlockPMtype, typename DataBlockPMtype::DataBlockInvertedPadding_t>
DataBlockPMpadded_t;
50 typedef std::conditional_t<DataBlockTCMtype::sIsPadded, DataBlockTCMtype, typename DataBlockTCMtype::DataBlockInvertedPadding_t>
DataBlockTCMpadded_t;
55 void reserve(std::size_t nElements, std::size_t nElemMap = 0)
57 auto& vecDataBlocksPM = RawReaderBase_t::template getVecDataBlocks<DataBlockPM_t>();
58 vecDataBlocksPM.reserve(nElements);
59 auto& vecDataBlocksTCM = RawReaderBase_t::template getVecDataBlocks<DataBlockTCM_t>();
60 vecDataBlocksTCM.reserve(nElements);
62 for (std::size_t iElem = 0; iElem < nElemMap; iElem++) {
68 template <
typename... T>
69 void process(
bool isPadded, gsl::span<const uint8_t> payload, uint16_t feeID, T&&... feeParameters)
71 if (LookupTable_t::Instance().isTCM(std::forward<T>(feeParameters)...)) {
74 RawReaderBase_t::template processBinaryData<DataBlockTCMpadded_t>(payload, feeID, std::forward<T>(feeParameters)...);
76 RawReaderBase_t::template processBinaryData<DataBlockTCM_t>(payload, feeID, std::forward<T>(feeParameters)...);
78 }
else if (LookupTable_t::Instance().isPM(std::forward<T>(feeParameters)...)) {
81 RawReaderBase_t::template processBinaryData<DataBlockPMpadded_t>(payload, feeID, std::forward<T>(feeParameters)...);
83 RawReaderBase_t::template processBinaryData<DataBlockPM_t>(payload, feeID, std::forward<T>(feeParameters)...);
88 LOG(error) <<
"Unregistered in ChannelMap link!";
std::conditional_t< DataBlockPMtype::sIsPadded, DataBlockPMtype, typename DataBlockPMtype::DataBlockInvertedPadding_t > DataBlockPMpadded_t
std::conditional_t< DataBlockTCMtype::sIsPadded, DataBlockTCMtype, typename DataBlockTCMtype::DataBlockInvertedPadding_t > DataBlockTCMpadded_t
void reserve(std::size_t nElements, std::size_t nElemMap=0)
std::conditional_t< DataBlockTCMtype::sIsPadded, typename DataBlockTCMtype::DataBlockInvertedPadding_t, DataBlockTCMtype > DataBlockTCM_t
DigitBlockFIT_t::LookupTable_t LookupTable_t
DigitBlockFITtype DigitBlockFIT_t
void process(bool isPadded, gsl::span< const uint8_t > payload, uint16_t feeID, T &&... feeParameters)
std::conditional_t< DataBlockPMtype::sIsPadded, typename DataBlockPMtype::DataBlockInvertedPadding_t, DataBlockPMtype > DataBlockPM_t
RawReaderBaseFIT()=default
RawReaderBase< DigitBlockFITtype, DataBlockPMtype, DataBlockTCMtype > RawReaderBase_t
~RawReaderBaseFIT()=default
std::map< InteractionRecord, DigitBlock_t > mMapDigits
RawDataMetric & addMetric(uint16_t feeID, uint8_t linkID, uint8_t epID, bool isRegisteredFEE=true)
TFitResultPtr fit(const size_t nBins, const T *arr, const T xMin, const T xMax, TF1 &func, std::string_view option="")
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"