672{
673 int unit = _extu(ptr_frag[2], 0, 32 - 2);
674 int size_L2 = _extu(ptr_frag[2], 2, 32 - 3);
677 const UINT32* ptr_reco = ptr_frag + 3;
678 const unsigned char* ptr_buff = reinterpret_cast<const unsigned char*> (ptr_frag + 3 + 48 + size_L2);
682
683 const unsigned char* ptr_ped4;
684 const unsigned char* ptr_ped5;
685 const unsigned char* ptr_amp5;
686 const unsigned char* ptr_amp6;
687 const unsigned char* ptr_raws;
688 const unsigned char* ptr_rawf;
689 const unsigned char* ptr_full;
690 const unsigned char* ptr_dump;
691
692 int cnt_ped4, cnt_ped5, cnt_amp5, cnt_amp6,
693 cnt_raws, cnt_rawf, cnt_full, cnt_null, cnt_dump;
694 cnt_ped4 = cnt_ped5 = cnt_amp5 = cnt_amp6 =
695 cnt_raws = cnt_rawf = cnt_full = cnt_null = cnt_dump = 0;
696
697 bad_bits[0] = pop_buf(&ptr_buff, 16);
698 bad_bits[1] = pop_buf(&ptr_buff, 16);
699 bad_bits[2] = pop_buf(&ptr_buff, 16);
700
702 for (i = 0;
i < 7; ++
i) u[i] = 0;
713 }
714
715 ptr_ped4 = ptr_buff;
716 ptr_ped5 = ptr_ped4 + cnt_ped4*1;
717 ptr_amp5 = ptr_ped5 + cnt_ped5*2;
718 ptr_amp6 = ptr_amp5 + cnt_amp5*3;
719 ptr_raws = ptr_amp6 + cnt_amp6*4;
720 ptr_rawf = ptr_raws + cnt_raws*5;
721 ptr_full = ptr_rawf + cnt_rawf*6;
722 ptr_dump = ptr_full + cnt_full*6;
723
725 if (chan % 16 == 0) bad16 = ~bad_bits[
chan/16];
726 bad = (bad16 & 0x1); bad16 >>= 1;
728
729 size = 0;
730 if (code ==
code_ped4) size = unpack_ped (ofw,
unit, chan, &ptr, &ptr_ped4, &gain, &ene, &time, u);
else
731 if (code ==
code_ped5) size = unpack_ped (ofw,
unit, chan, &ptr, &ptr_ped5, &gain, &ene, &time, u);
else
732 if (code ==
code_amp5) size = unpack_amp (ofw,
unit, chan, &ptr, &ptr_amp5, &gain, &ene, &time, u);
else
733 if (code ==
code_amp6) size = unpack_amp (ofw,
unit, chan, &ptr, &ptr_amp6, &gain, &ene, &time, u);
else
734 if (code ==
code_raws) size = unpack_raw (ofw,
unit, chan, &ptr, &ptr_raws, &gain, &ene, &time, u);
else
735 if (code ==
code_rawf) size = unpack_raw (ofw,
unit, chan, &ptr, &ptr_rawf, &gain, &ene, &time, u);
else
736 if (code ==
code_full) size = unpack_full(ofw, chan, &ptr, &ptr_full, &gain, &ene, &time, u);
else
737 if (code ==
code_dump) size = unpack_dump(ofw, chan, &ptr, &ptr_dump, &gain, &ene, &time, u);
else
738 if (code ==
code_null) size = unpack_null(ofw, chan, &ptr, &gain, &ene, &time, u);
739 if (size == 0) printf("\nTileRawChannel2Bytes5::unpack ERROR size = 0\n");
740
741
745 ChanData[
chan].ene_bin = ene;
747
751
752 for (i = 0;
i < 7; ++
i) ChanData[chan].s[i] = u[i];
753 }
754}
const double AMPLITUDE_FACTOR5_HG[4]
const double AMPLITUDE_FACTOR5_LG[4]
static int get_code(uint32_t reco)