19 unsigned long chn_reg = ((sts & 0x01) << 7) + ((snc & 0x01) << 6) + ((sg & 0x03) << 4) + ((st & 0x03) << 2) +
20 ((smn & 0x01) << 1) + ((sdf & 0x01) << 0);
21 std::bitset<8> bits(chn_reg);
22 size_t start_pos = (8 * 16 + 16) * chip + (16 - chn) * 8;
23 for (
size_t iBit = 0; iBit < 8; iBit++) {
24 BITS[iBit + start_pos - 8] = bits[iBit];
38 unsigned long global_reg = ((slk0 & 0x01) << 0) + ((stb1 & 0x01) << 1) + ((stb & 0x01) << 2) + ((s16 & 0x01) << 3) +
39 ((slk1 & 0x01) << 4) + ((sdc & 0x01) << 5) + ((0 & 0x03) << 6);
41 unsigned long dac_reg = (((dac & 0x01) / 0x01) << 7) + (((dac & 0x02) / 0x02) << 6) + (((dac & 0x04) / 0x04) << 5) +
42 (((dac & 0x08) / 0x08) << 4) + (((dac & 0x10) / 0x10) << 3) + (((dac & 0x20) / 0x20) << 2) +
43 (((swdac & 0x03)) << 0);
45 std::bitset<8> global_bits(global_reg);
46 std::bitset<8> dac_bits(dac_reg);
49 for (
size_t iBit = 0; iBit < 8; iBit++) {
50 bits[iBit] = global_bits[iBit];
51 bits[iBit + 8] = dac_bits[iBit];
54 size_t start_pos = (8 * 16 + 16) * chip + 16 * 8;
55 for (
size_t iBit = 0; iBit < 16; iBit++) {
56 BITS[iBit + start_pos] = bits[iBit];
77 for (
size_t chn = 0; chn < 16; chn++) {
78 set_ch(chip, chn, sts, snc, sg, st, smn, sdf);
80 set_global(chip, slk0, stb1, stb, s16, slk1, sdc, swdac, dac);
99 for (
size_t chip = 0; chip < 8; chip++) {
100 set_chip(chip, sts, snc, sg, st, smn, sdf, slk0, stb1, stb, s16, slk1, sdc, swdac, dac);
113 for (
size_t chip = 0; chip < 8; chip++) {
114 for (
size_t chn = 0; chn < 16; chn++) {
116 size_t start_pos = (8 * 16 + 16) * chip + (16 - chn) * 8;
118 BITS[6 + start_pos - 8] = snc & 0x1;
127 std::cout <<
"FE_ASIC_reg_mapping (binary):" << std::endl;
128 std::string bitString =
BITS.to_string<char, std::string::traits_type, std::string::allocator_type>();
129 for (
size_t iLine = 0; iLine < 36; iLine++) {
130 for (
size_t iByte = 0; iByte < 4; iByte++) {
131 for (
size_t iBit = 0; iBit < 8; iBit++) {
132 std::cout << bitString[iLine * 32 + iByte * 8 + iBit];
136 std::cout << std::endl;
144 { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2 },
145 { 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 },
146 { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2 },
147 { 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }
void set_chip(uint8_t chip=0, uint8_t sts=0, uint8_t snc=0, uint8_t sg=0, uint8_t st=0, uint8_t smn=0, uint8_t sdf=0, uint8_t slk0=0, uint8_t stb1=0, uint8_t stb=0, uint8_t s16=0, uint8_t slk1=0, uint8_t sdc=0, uint8_t swdac=0, uint8_t dac=0)
std::bitset< 1152 > get_bits() const
void set_collection_baseline(uint8_t snc)
static const uint8_t channel_wire_plane[8][16]
void set_global(uint8_t chip=0, uint8_t slk0=0, uint8_t stb1=0, uint8_t stb=0, uint8_t s16=0, uint8_t slk1=0, uint8_t sdc=0, uint8_t swdac=0, uint8_t dac=0)
void set_board(uint8_t sts=0, uint8_t snc=0, uint8_t sg=0, uint8_t st=0, uint8_t smn=0, uint8_t sdf=0, uint8_t slk0=0, uint8_t stb1=0, uint8_t stb=0, uint8_t s16=0, uint8_t slk1=0, uint8_t sdc=0, uint8_t swdac=0, uint8_t dac=0)
void set_ch(uint8_t chip=0, uint8_t chn=0, uint8_t sts=0, uint8_t snc=0, uint8_t sg=0, uint8_t st=0, uint8_t smn=0, uint8_t sdf=0)