11 #include <ecl/modules/eclCompressBGOverlay/ECLCompressBGOverlayModule.h>
14 #include <ecl/dataobjects/ECLDsp.h>
15 #include <ecl/dataobjects/ECLWaveforms.h>
16 #include <ecl/digitization/EclConfiguration.h>
32 setDescription(
"Compress recorded waveforms for beam backround overlay in simulation.");
33 setPropertyFlags(c_ParallelProcessingCertified);
34 addParam(
"CompressionAlgorithm", m_compAlgo,
"Waveform compression algorithm", 0u);
35 addParam(
"eclWaveformsName", m_eclWaveformsName,
"Name of the collection with compressed waveforms", std::string(
""));
44 m_eclDsps.registerInDataStore();
45 m_eclWaveforms.registerInDataStore(m_eclWaveformsName);
46 m_comp = selectAlgo(m_compAlgo & 0xff);
48 B2FATAL(
"Unknown compression algorithm: " << m_compAlgo);
57 if (m_eclDsps.getEntries() != ec.
m_nch)
return;
60 unsigned short indx[ec.
m_nch], count = 0;
61 memset(indx, 0xff,
sizeof(indx));
62 for (
const auto& t : m_eclDsps) indx[t.getCellId() - 1] = count++;
65 for (
auto t : indx)
if (t >= ec.
m_nch)
return;
71 out.putNBits(m_compAlgo & 0xff, 8);
72 for (
int j = 0; j < ec.
m_nch; j++) {
73 m_eclDsps[indx[j]]->getDspA(FitA);
74 m_comp->compress(out, FitA);
79 m_eclWaveforms.assign(wf);
81 std::swap(out.getStore(), wf->
getStore());
87 if (m_comp)
delete m_comp;