12#ifndef O2_MCH_RAW_ENCODER_BARE_ELINK_ENCODER_MERGER_H
13#define O2_MCH_RAW_ENCODER_BARE_ELINK_ENCODER_MERGER_H
23template <
typename CHARGESUM>
26 auto len = elinks[0].len();
27 for (
auto i = 1;
i < elinks.size();
i++) {
35template <
typename CHARGESUM>
41 auto e = std::max_element(elinks.begin(), elinks.end(),
43 return a.len() < b.len();
47 for (
auto& elink : elinks) {
48 elink.fillWithSync(e->len());
52template <
typename CHARGESUM>
56 for (
int j = jstart;
j < jend;
j += 2) {
57 for (
int k = 0; k <= 1; k++) {
58 bool v = elinks[
j / 2].get(
i + 1 - k);
59 uint64_t
mask =
static_cast<uint64_t
>(1) << (
j + k);
70template <
typename CHARGESUM>
73 int n = elinks[0].len();
75 for (
int i = 0;
i <
n - 1;
i += 2) {
83template <
typename CHARGESUM>
87 std::vector<uint64_t>& b64)
GLboolean GLboolean GLboolean b
GLenum GLenum GLsizei len
GLboolean GLboolean GLboolean GLboolean a
GLubyte GLubyte GLubyte GLubyte w
void elink2gbt(gsl::span< ElinkEncoder< BareFormat, CHARGESUM > > elinks, std::vector< uint64_t > &b64)
bool areElinksAligned(gsl::span< ElinkEncoder< BareFormat, CHARGESUM > > elinks)
uint64_t aggregate(gsl::span< ElinkEncoder< BareFormat, CHARGESUM > > elinks, int jstart, int jend, int i)
void align(gsl::span< ElinkEncoder< BareFormat, CHARGESUM > > elinks)