1 #ifndef mu2e_artdaq_core_Overlays_CalorimeterFragmentReader_hh
2 #define mu2e_artdaq_core_Overlays_CalorimeterFragmentReader_hh
4 #include "artdaq-core/Data/Fragment.hh"
5 #include "cetlib_except/exception.h"
7 #include "mu2e-artdaq-core/Overlays/DetectorFragment.hh"
15 class CalorimeterFragmentReader;
25 mu2e::DetectorFragment::adc_t crystalID();
26 mu2e::DetectorFragment::adc_t apdID();
27 mu2e::DetectorFragment::adc_t time();
28 mu2e::DetectorFragment::adc_t numSamples();
29 std::vector<mu2e::DetectorFragment::adc_t> calorimeterADC();
33 mu2e::CalorimeterFragmentReader::CalorimeterFragmentReader(artdaq::Fragment
const &f)
36 mu2e::CalorimeterFragmentReader::~CalorimeterFragmentReader() {}
38 mu2e::DetectorFragment::adc_t mu2e::CalorimeterFragmentReader::crystalID()
42 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin() + 8), 127 - 12, 127 - 0);
45 mu2e::DetectorFragment::adc_t mu2e::CalorimeterFragmentReader::apdID()
48 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin() + 8), 127 - 16, 127 - 12);
51 mu2e::DetectorFragment::adc_t mu2e::CalorimeterFragmentReader::time()
53 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin() + 8), 127 - 32, 127 - 16);
56 mu2e::DetectorFragment::adc_t mu2e::CalorimeterFragmentReader::numSamples()
58 return mu2e::DetectorFragment::convertFromBinary(bitArray(dataBlockBegin() + 8), 127 - 48, 127 - 32);
61 std::vector<mu2e::DetectorFragment::adc_t> mu2e::CalorimeterFragmentReader::calorimeterADC()
63 std::vector<adc_t> theVector;
65 for (
size_t adcIdx = 0; adcIdx < numSamples(); adcIdx++) {
66 theVector.push_back(*((adc_t
const *)((dataBlockBegin() + 8 + 3) + adcIdx)));
71 void mu2e::CalorimeterFragmentReader::printAll()
74 <<
"Binary Representation: ";
75 printBitArray(bitArray(dataBlockBegin() + 8));
77 <<
"Crystal IDX: " << (int)crystalID() << std::endl;
79 <<
"APD ID: " << (int)apdID() << std::endl;
81 <<
"Time: " << (int)time() << std::endl;
83 <<
"Num Samples: " << (int)numSamples() << std::endl;
86 std::vector<mu2e::DetectorFragment::adc_t> ADCarray = calorimeterADC();
87 for (
size_t i = 0; i < ADCarray.size(); i++) {
88 std::cout << (int)ADCarray[i];
89 if (i < ADCarray.size() - 1) {
93 std::cout <<
"]}" << std::endl;