1 #ifndef mu2e_artdaq_core_Overlays_DebugFragmentReader_hh
2 #define mu2e_artdaq_core_Overlays_DebugFragmentReader_hh
4 #include "artdaq-core/Data/Fragment.hh"
5 #include "cetlib/exception.h"
7 #include "mu2e-artdaq-core/Overlays/DetectorFragment.hh"
15 class DebugFragmentReader;
26 mu2e::DetectorFragment::adc_t serialFIFO_empty();
27 mu2e::DetectorFragment::adc_t serialFIFO_full();
28 mu2e::DetectorFragment::adc_t numEmptyFIFO();
29 mu2e::DetectorFragment::adc_t numFilledFIFO();
30 std::vector<mu2e::DetectorFragment::adc_t> debugData();
31 std::vector< std::vector<mu2e::DetectorFragment::adc_t> > debugInfo();
36 mu2e::DebugFragmentReader::DebugFragmentReader(artdaq::Fragment
const & f ) :
40 mu2e::DebugFragmentReader::~DebugFragmentReader() {
47 mu2e::DetectorFragment::adc_t mu2e::DebugFragmentReader::serialFIFO_empty() {
48 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin()),127-105,127-104);
51 mu2e::DetectorFragment::adc_t mu2e::DebugFragmentReader::serialFIFO_full() {
52 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin()),127-106,127-105);
55 mu2e::DetectorFragment::adc_t mu2e::DebugFragmentReader::numEmptyFIFO() {
56 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin()),127-120,127-112);
59 mu2e::DetectorFragment::adc_t mu2e::DebugFragmentReader::numFilledFIFO() {
60 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin()),127-128,127-120);
70 std::vector<mu2e::DetectorFragment::adc_t> mu2e::DebugFragmentReader::debugData() {
71 std::vector<adc_t> theVector;
73 for(
size_t curPacketNum=0; curPacketNum<packetCount(); curPacketNum++) {
74 for(
size_t adcIdx=1; adcIdx<8; adcIdx+=2) {
75 theVector.push_back( *((adc_t
const *)( (dataBlockBegin()+8+0) + adcIdx )) );
81 std::vector< std::vector<mu2e::DetectorFragment::adc_t> > mu2e::DebugFragmentReader::debugInfo() {
82 std::vector< std::vector<adc_t> > theVector;
84 for(
size_t curPacketNum=0; curPacketNum<packetCount(); curPacketNum++) {
85 std::bitset<128> bitarray;
86 fillBitArray(bitarray,dataBlockBegin()+8+curPacketNum*8);
87 for(
size_t adcIdx=0; adcIdx<8; adcIdx+=2) {
88 std::vector<adc_t> infoVector;
91 infoVector.push_back( convertFromBinary(bitarray,127-adcIdx*16-11,127-adcIdx*16-0) );
94 infoVector.push_back( convertFromBinary(bitarray,127-adcIdx*16-13,127-adcIdx*16-12) );
97 infoVector.push_back( convertFromBinary(bitarray,127-adcIdx*16-14,127-adcIdx*16-13) );
99 theVector.push_back(infoVector);
109 void mu2e::DebugFragmentReader::printAll() {
110 std::cout <<
"\t\t" <<
"Binary Representation: ";
111 printBitArray(bitArray(dataBlockBegin()+8));
113 std::cout <<
"\t\t" <<
"Packet Type: " << (int)packetType() << std::endl;
114 std::cout <<
"\t\t" <<
"Packet Count: " << (int)packetCount() << std::endl;
115 std::cout <<
"\t\t" <<
"Serial FIFO Empty: " << (int)serialFIFO_empty() << std::endl;
116 std::cout <<
"\t\t" <<
"Serial FIFO Full: " << (int)serialFIFO_full() << std::endl;
117 std::cout <<
"\t\t" <<
"# Empty FIFO Entries: " << (int)numEmptyFIFO() << std::endl;
118 std::cout <<
"\t\t" <<
"# Filled FIFO Entries: " << (int)numFilledFIFO() << std::endl;
120 std::cout <<
"\t\t" <<
"Debug Data: {[";
121 std::vector<mu2e::DetectorFragment::adc_t> ADCarray = debugData();
122 for(
size_t i=0; i<ADCarray.size(); i++) {
123 std::cout << (int)ADCarray[i];
124 if(i<ADCarray.size()-1) {
128 std::cout <<
"]}" << std::endl;
130 std::cout <<
"\t\t" <<
"Debug Info: {[";
131 std::vector< std::vector<mu2e::DetectorFragment::adc_t> > InfoArray = debugInfo();
132 for(
size_t i=0; i<InfoArray.size(); i++) {
133 std::cout <<
"{" << (int)InfoArray[i][0] <<
","
134 << (
int)InfoArray[i][1] << ","
135 << (
int)InfoArray[i][2] << "}";
136 if(i<InfoArray.size()-1) {
140 std::cout <<
"]}" << std::endl;