20 #include "art_root_io/TFileService.h" 34 #include "artdaq-core/Data/Fragment.hh" 35 #include "artdaq-core/Data/ContainerFragment.hh" 38 #include "dam/HeaderFragmentUnpack.hh" 39 #include "dam/DataFragmentUnpack.hh" 40 #include "dam/TpcFragmentUnpack.hh" 41 #include "dam/TpcStreamUnpack.hh" 42 #include "dam/access/WibFrame.hh" 43 #include "dam/access/Headers.hh" 44 #include "dam/access/TpcStream.hh" 45 #include "dam/access/TpcRanges.hh" 46 #include "dam/access/TpcToc.hh" 47 #include "dam/access/TpcPacket.hh" 48 #include "dam/RceFragmentUnpack.hh" 145 bool _processRCE(
art::Event &
evt, RawDigits& raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm);
146 bool _processFELIX(
art::Event &
evt, RawDigits& raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm);
147 bool _process_RCE_AUX(
const artdaq::Fragment& frag, RawDigits& raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm, uint32_t runNumber);
148 bool _process_FELIX_AUX(
const artdaq::Fragment& frag, RawDigits& raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm, uint32_t runNumber);
159 std::vector<int> emptyivec;
209 if (_make_histograms)
214 fIncorrectTickNumbers = tFileService->make<TH1D>(
"fIncorrectTickNumbers",
"Channels with Unexpected Number of Ticks", 45, -0.5, 14.5);
229 fParticipRCE = tFileService->make<TH1I>(
"fParticipRCE",
"Participating RCE channels", 130, 0.5, 15000.5);
233 fParticipFELIX = tFileService->make<TH1I>(
"fParticipFELIX",
"Participating FELIX channels", 100, 0.5, 3000.5);
237 fDuplicatesNumber = tFileService->make<TH1I>(
"fDuplicatesNumber",
"Number of Duplucated Channels", 200, 0.5, 200.5);
242 fErrorsNumber = tFileService->make<TH1D>(
"fErrorsNumber",
"Channels with Errors", 45, -0.5, 14.5);
243 fErrorsNumber->GetXaxis()->SetTitle(
"Number of channels with errors");
253 fFragSizeRCE = tFileService->make<TH1I>(
"fFragSizeRCE",
"RCE Fragment Size", 100, 0.5, 288000000.5);
254 fFragSizeRCE->GetXaxis()->SetTitle(
"Size of RCE Fragments (bytes)");
256 fFragSizeFELIX = tFileService->make<TH1I>(
"fFragSizeFELIX",
"FELIX Fragment Size", 100, 0.5, 57600000.5);
257 fFragSizeFELIX->GetXaxis()->SetTitle(
"Size of FELIX Fragments (bytes)");
259 fDeltaTimestamp = tFileService->make<TH1I>(
"fDeltaTimestamp",
"Delta Timestamp Between Frames", 101, -0.5, 100.5);
287 _processRCE(e,raw_digits,rd_timestamps,rd_ts_assocs,rdpm,tspm);
288 _processFELIX(e,raw_digits,rd_timestamps,rd_ts_assocs,rdpm,tspm);
303 MF_LOG_WARNING(
"IcebergTPCRawDecoder:") <<
"Wrong Total number of Channels " << raw_digits.size()
315 statuses.emplace_back(
true,
false,1);
324 unsigned int statword=0;
337 size_t n_rce_frags = 0;
341 bool have_data=
false;
342 bool have_data_nc=
false;
344 uint32_t runNumber = evt.
run();
354 for (
auto const& cont : *cont_frags)
356 rcebytes = rcebytes + (cont.sizeBytes());
361 for (
auto const& cont : *cont_frags)
364 bool process_flag =
true;
369 MF_LOG_WARNING(
"_process_RCE:") <<
" Small RCE fragment size: " << cont.sizeBytes() <<
" Discarding Event on request.";
377 MF_LOG_WARNING(
"_process_RCE:") <<
" Small RCE fragment size: " << cont.sizeBytes() <<
" Discarding just this fragment on request.";
379 process_flag =
false;
385 artdaq::ContainerFragment cont_frag(cont);
386 for (
size_t ii = 0; ii < cont_frag.block_count(); ++ii)
388 if (
_process_RCE_AUX(*cont_frag[ii], raw_digits, timestamps, tsassocs, rdpm, tspm, runNumber)) ++n_rce_frags;
408 for (
auto const& frag: *frags)
410 rcebytes = rcebytes + (frag.sizeBytes());
415 for(
auto const& frag: *frags)
417 bool process_flag =
true;
422 MF_LOG_WARNING(
"_process_RCE:") <<
" Small RCE fragment size: " << frag.sizeBytes() <<
" Discarding Event on request.";
430 MF_LOG_WARNING(
"_process_RCE:") <<
" Small RCE fragment size: " << frag.sizeBytes() <<
" Discarding just this fragment on request.";
432 process_flag =
false;
439 if (
_process_RCE_AUX(frag, raw_digits, timestamps,tsassocs, rdpm, tspm, runNumber)) ++n_rce_frags;
450 return have_data || have_data_nc;
457 const artdaq::Fragment& frag,
469 std::ios oldState(
nullptr);
470 oldState.copyfmt(std::cout);
472 std::cout <<
"RCE Fragment: all numbers in hex " <<
std::hex 473 <<
" SequenceID = " << frag.sequenceID()
474 <<
" fragmentID = " << frag.fragmentID()
475 <<
" fragmentType = " << (unsigned)frag.type()
476 <<
" Timestamp = " << frag.timestamp() <<
std::endl;
477 std::cout <<
"Offset Data";
478 artdaq::Fragment fragloc(frag);
479 unsigned char *dbegin =
reinterpret_cast<unsigned char *
>(fragloc.dataAddress());
480 size_t dsize = fragloc.dataSizeBytes();
482 for (
size_t bcounter=0; bcounter<dsize;++bcounter)
484 if ( (offcounter % 8) == 0 )
493 std::cout.copyfmt(oldState);
498 MF_LOG_WARNING(
"_process_RCE_AUX:") <<
" RCE fragment type " << (
int) frag.type() <<
" doesn't match expected value: " <<
_rce_fragment_type <<
" Discarding RCE fragment";
509 artdaq::Fragment cfragloc(frag);
510 size_t cdsize = cfragloc.dataSizeBytes();
511 const uint64_t* cdptr = (uint64_t
const*) (cfragloc.dataBeginBytes() + 12);
512 HeaderFragmentUnpack
const cdheader(cdptr);
514 if (cdsize>16) cdsize -= 16;
515 bool isOkay = RceFragmentUnpack::isOkay(cdptr,cdsize);
518 MF_LOG_WARNING(
"_process_RCE_AUX:") <<
"RCE Fragment isOkay failed: " << cdsize <<
" Discarding this fragment";
523 DataFragmentUnpack df(cdptr);
529 TString outfilename=
"rce";
530 outfilename += frag.sequenceID();
532 outfilename += frag.fragmentID();
533 outfilename+=
".fragment";
534 rce.
save(outfilename.Data());
535 std::cout <<
"Saved an RCE fragment with " << rce.
size() <<
" streams: " << outfilename <<
std::endl;
538 uint32_t ch_counter = 0;
539 for (
int i = 0; i < rce.
size(); ++i)
542 size_t n_ch = rce_stream->getNChannels();
543 size_t n_ticks = rce_stream->getNTicks();
544 auto const identifier = rce_stream->getIdentifier();
545 uint32_t crateNumber = identifier.getCrate();
546 uint32_t slotNumber = identifier.getSlot();
547 uint32_t fiberNumber = identifier.getFiber();
551 if (crateNumber == 0 || crateNumber > 6 || slotNumber > 4 || fiberNumber == 0 || fiberNumber > 4)
555 MF_LOG_WARNING(
"_process_RCE:") <<
"Bad crate, slot, fiber number, discarding fragment on request: " 556 << crateNumber <<
" " << slotNumber <<
" " << fiberNumber;
566 if (runNumber > 2572)
568 auto oldfiber = fiberNumber;
569 auto oldslot = slotNumber;
571 if (oldslot == 0 && oldfiber == 4)
576 if (oldslot == 1 && oldfiber == 4)
581 if (oldslot == 1 && oldfiber == 3)
586 if (oldslot == 0 && oldfiber == 3)
595 if (runNumber > 1530 && runNumber < 2572)
597 auto oldfiber = fiberNumber;
598 auto oldslot = slotNumber;
602 if (oldslot == 2 && oldfiber == 1)
607 if (oldslot == 1 && oldfiber == 1)
612 if (oldslot == 2 && oldfiber == 3)
617 if (oldslot == 1 && oldfiber == 3)
623 oldfiber = fiberNumber;
624 oldslot = slotNumber;
626 if (oldslot == 0 && oldfiber == 4)
631 if (oldslot == 1 && oldfiber == 4)
636 if (oldslot == 0 && oldfiber == 3)
641 if (oldslot == 1 && oldfiber == 3)
650 if ( slotNumber == 1 && fiberNumber == 1 )
655 if ( slotNumber == 2 && fiberNumber == 1 )
664 std::cout <<
"Printing coldata convert counts for slot: " << slotNumber <<
" fiber: " << fiberNumber <<
std::endl;
669 TpcStream
const &
stream = rce_stream->getStream ();
670 TpcToc toc (stream.getToc ());
671 TpcPacket pktRec (stream.getPacket ());
672 TpcPacketBody pktBdy (pktRec.getRecord ());
673 int npkts = toc.getNPacketDscs ();
674 for (
int ipkt = 0; ipkt < npkts; ++ipkt)
676 TpcTocPacketDsc pktDsc (toc.getPacketDsc (ipkt));
677 unsigned int o64 = pktDsc.getOffset64 ();
678 unsigned int pktType = pktDsc.getType ();
679 unsigned nWibFrames = pktDsc.getNWibFrames ();
680 WibFrame
const *wf = pktBdy.getWibFrames (pktType, o64);
681 for (
unsigned iwf = 0; iwf < nWibFrames; ++iwf)
683 auto const &colddata = wf->getColdData ();
684 auto cvt0 = colddata[0].getConvertCount ();
686 int diff = (
int) cvt0 - (
int) iwf;
687 std::cout <<
"Packet: " << ipkt <<
" WIB frame: " << iwf <<
" RCE coldata convert count: " << cvt0 <<
" Difference: " << diff <<
std::endl;
707 MF_LOG_WARNING(
"_process_RCE_AUX:") <<
"Nticks not the required value: " << n_ticks <<
" " 729 MF_LOG_WARNING(
"_process_RCE_AUX:") <<
"Nticks different for two channel streams: " << n_ticks
748 size_t buffer_size = n_ch * n_ticks;
754 MF_LOG_WARNING(
"_process_RCE_AUX:") <<
"n_ch*nticks too large: " << n_ch <<
" * " << n_ticks <<
" = " <<
765 if (
_buffer.capacity() < buffer_size)
774 int16_t* adcs =
_buffer.data();
775 bool sgmcdretcode = rce_stream->getMultiChannelData(adcs);
780 MF_LOG_WARNING(
"_process_RCE_AUX:") <<
"getMutliChannelData returns error flag: " 781 <<
" c:s:f:ich: " << crateNumber <<
" " << slotNumber <<
" " << fiberNumber <<
" Discarding Data";
793 for (
size_t i_ch = 0; i_ch < n_ch; i_ch++)
800 for (
size_t i_tick = 0; i_tick < n_ticks; i_tick++)
802 v_adc.push_back(adcs[i_tick]);
819 MF_LOG_WARNING(
"_process_RCE_AUX:") <<
"Duplicate Channel: " << offlineChannel
820 <<
" c:s:f:ich: " << crateNumber <<
" " << slotNumber <<
" " << fiberNumber <<
" " << i_ch <<
" Discarding Data";
837 auto uncompressed_nticks = v_adc.size();
846 raw::RawDigit raw_digit(offlineChannel, uncompressed_nticks, v_adc, cflag);
848 raw_digits.push_back(raw_digit);
851 timestamps.push_back(rdtimestamp);
854 auto const rawdigitptr = rdpm(raw_digits.size()-1);
855 auto const rdtimestampptr = tspm(timestamps.size()-1);
856 tsassocs.
addSingle(rawdigitptr,rdtimestampptr);
870 unsigned int n_felix_frags = 0;
875 bool have_data =
false;
876 bool have_data_nc =
false;
878 uint32_t runNumber = evt.
run();
887 size_t felixbytes = 0;
888 for (
auto const& cont : *cont_frags)
890 felixbytes = felixbytes + (cont.sizeBytes());
895 for (
auto const& cont : *cont_frags)
897 bool process_flag =
true;
902 MF_LOG_WARNING(
"_process_FELIX:") <<
" Small FELIX fragment size: " << cont.sizeBytes() <<
" Discarding Event on request.";
910 MF_LOG_WARNING(
"_process_FELIX:") <<
" Small FELIX fragment size: " << cont.sizeBytes() <<
" Discarding just this fragment on request.";
912 process_flag =
false;
918 artdaq::ContainerFragment cont_frag(cont);
919 for (
size_t ii = 0; ii < cont_frag.block_count(); ++ii)
921 if (
_process_FELIX_AUX(*cont_frag[ii], raw_digits, timestamps, tsassocs, rdpm, tspm, runNumber)) ++n_felix_frags;
938 size_t felixbytes = 0;
939 for (
auto const& frag: *frags)
941 felixbytes = felixbytes + (frag.sizeBytes());
946 for(
auto const& frag: *frags)
948 bool process_flag =
true;
953 MF_LOG_WARNING(
"_process_FELIX:") <<
" Small FELIX fragment size: " << frag.sizeBytes() <<
" Discarding Event on request.";
961 MF_LOG_WARNING(
"_process_FELIX:") <<
" Small FELIX fragment size: " << frag.sizeBytes() <<
" Discarding just this fragment on request.";
963 process_flag =
false;
969 if (
_process_FELIX_AUX(frag, raw_digits,timestamps, tsassocs, rdpm, tspm, runNumber)) ++n_felix_frags;
982 return have_data || have_data_nc;
1000 std::ios oldState(
nullptr);
1001 oldState.copyfmt(std::cout);
1003 std::cout <<
"FELIX Fragment: all numbers in hex " <<
std::hex 1004 <<
" SequenceID = " << frag.sequenceID()
1005 <<
" fragmentID = " << frag.fragmentID()
1006 <<
" fragmentType = " << (unsigned)frag.type()
1007 <<
" Timestamp = " << frag.timestamp() <<
std::endl;
1008 std::cout <<
"Offset Data";
1009 artdaq::Fragment fragloc(frag);
1010 unsigned char *dbegin =
reinterpret_cast<unsigned char *
>(fragloc.dataAddress());
1011 size_t dsize = fragloc.dataSizeBytes();
1012 size_t offcounter=0;
1013 for (
size_t bcounter=0; bcounter<dsize;++bcounter)
1015 if ( (offcounter % 8) == 0 )
1024 std::cout.copyfmt(oldState);
1045 std::unique_ptr<dune::FelixFragment> felixptr;
1046 std::unique_ptr<dune::Frame14FragmentUnordered> frame14ptr;
1067 slot = frame14ptr->
slot_no(0);
1072 if (frame_version == 0)
1074 std::cout <<
"ICEBERG frame_version = 0; skipping this fragment" <<
std::endl;
1121 if (crate == 0 || crate > 6 || slot > 4)
1126 MF_LOG_WARNING(
"_process_FELIX_AUX:") <<
"Invalid crate or slot: c=" << (
int) crate <<
" s=" << (
int) slot <<
" discarding FELIX data.";
1144 size_t first_coldata_convert_count = 0;
1151 first_coldata_convert_count = frame14ptr->
total_frames();
1153 std::cout <<
"FELIX Coldata convert count: " << (
int) first_coldata_convert_count <<
std::endl;
1158 unsigned n_frames = 0;
1176 MF_LOG_WARNING(
"_process_FELIX_AUX:") <<
"n_channels*n_frames too large: " << n_channels <<
" * " << n_frames <<
" = " <<
1196 for (
unsigned int iframe=0; iframe<n_frames; ++iframe)
1203 MF_LOG_WARNING(
"_process_FELIX_AUX:") <<
"WIB Errors on frame: " << iframe <<
" : " << felixptr->
wib_errors(iframe)
1204 <<
" Discarding Data";
1221 for(
unsigned ch = 0; ch < n_channels; ++ch) {
1224 std::vector<dune::adc_t> waveform( is14 ?
1227 for(
unsigned int nframe=0;nframe<waveform.size();nframe++){
1233 v_adc.push_back(waveform.at(nframe));
1238 unsigned int fiberloc = 0;
1243 else if (fiber == 2)
1249 MF_LOG_WARNING(
"_process_FELIX_AUX:") <<
" Fiber number " << (
int) fiber <<
" is expected to be 1 or 2 -- revisit logic";
1259 unsigned int chloc = ch;
1269 if (runNumber > 9745)
1271 auto slotloc3 = slot;
1272 auto fiberloc3 = fiberloc;
1276 unsigned int sfmap[10][4] =
1290 for (
size_t imap = 0; imap<10; ++imap)
1292 if (slot == sfmap[imap][0] && fiberloc == sfmap[imap][1])
1294 slotloc3 = sfmap[imap][2];
1295 fiberloc3 = sfmap[imap][3];
1301 std::cout <<
"Slot, fiber not understood in mapping from Run 7 to Run 5: " << (
int) slot <<
" " << (
int) fiberloc <<
std::endl;
1307 fiberloc = fiberloc3;
1314 auto slotloc2 = slot;
1315 auto fiberloc2 = fiberloc;
1317 if (runNumber > 2572)
1320 if (slot == 0 && fiberloc == 4)
1325 if (slot == 1 && fiberloc == 4)
1330 if (slot == 1 && fiberloc == 3)
1335 if (slot == 0 && fiberloc == 3)
1344 if ( slotloc2 == 1 && fiberloc2 == 1 )
1349 if ( slotloc2 == 2 && fiberloc2 == 1 )
1363 MF_LOG_WARNING(
"_process_FELIX_AUX:") <<
"Nticks not the required value: " << v_adc.size() <<
" " 1385 MF_LOG_WARNING(
"_process_FELIX_AUX:") <<
"Nticks different for two channel streams: " << v_adc.size()
1406 MF_LOG_WARNING(
"_process_FELIX_AUX:") <<
"Duplicate Channel: " << offlineChannel
1407 <<
" c:s:f:ich: " << (
int) crate <<
" " << (
int) slot <<
" " << (
int) fiber <<
" " << (
int) ch <<
" Discarding Data";
1422 auto n_ticks = v_adc.size();
1430 raw::RawDigit raw_digit(offlineChannel, n_ticks, v_adc, cflag);
1432 raw_digits.push_back(raw_digit);
1435 timestamps.push_back(rdtimestamp);
1439 uint64_t last_timestamp = (is14 ? frame14ptr->
timestamp(0) : felixptr->
timestamp(0));
1440 for (
size_t itick=1; itick<n_ticks; ++itick)
1442 uint64_t timestamp = (is14 ? frame14ptr->
timestamp(itick) : felixptr->
timestamp(itick));
1444 if (timestamp > last_timestamp)
1446 tdiff = timestamp - last_timestamp;
1450 tdiff = last_timestamp - timestamp;
1453 last_timestamp = timestamp;
1458 auto const rawdigitptr = rdpm(raw_digits.size()-1);
1459 auto const rdtimestampptr = tspm(timestamps.size()-1);
1460 tsassocs.
addSingle(rawdigitptr,rdtimestampptr);
1473 size_t asiz = v_adc.size();
1484 median = TMath::Median(asiz,v_adc.data());
1485 sigma = TMath::RMS(asiz,v_adc.data());
unsigned int duplicate_channels
static constexpr size_t num_ch_per_frame
size_t _rce_frag_small_size
bool _DiscardedCorruptData
bool _rce_drop_frags_with_badcsf
size_t _felix_buffer_size_checklimit
IcebergTPCRawDecoder & operator=(IcebergTPCRawDecoder const &)=delete
size_t total_frames() const
enum raw::_compress Compress_t
std::string _felix_input_container_instance
bool _duplicate_channel_checklist[15360]
bool _drop_small_felix_frags
Collection of charge vs time digitized from a single readout channel.
TpcStreamUnpack const * get_stream(int i) const
uint8_t slot_no(const unsigned &frame_ID=0) const
size_t _rce_buffer_size_checklimit
uint8_t slot_no(const unsigned &frame_ID=0) const
bool _enforce_no_duplicate_channels
uint8_t fiber_no(const unsigned &frame_ID=0) const
bool _felix_enforce_exact_crate_number
Handle< PROD > getHandle(SelectorBase const &) const
uint8_t crate_no(const unsigned &frame_ID=0) const
bool _felix_check_buffer_size
bool _processRCE(art::Event &evt, RawDigits &raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm)
EDProducer(fhicl::ParameterSet const &pset)
bool _enforce_full_tick_count
bool _rce_save_frags_to_files
void computeMedianSigma(raw::RawDigit::ADCvector_t &v_adc, float &median, float &sigma)
std::vector< short > ADCvector_t
Type representing a (compressed) vector of ADC counts.
bool _felix_drop_frags_with_badcsf
size_t total_frames() const
QTextStream & hex(QTextStream &s)
art::PtrMaker< raw::RawDigit > RDPmkr
bool _print_coldata_convert_count
const unsigned int _duplicate_channel_checklist_size
std::string _felix_input_label
void produce(art::Event &e) override
unsigned int _tick_count_this_event
unsigned int _full_tick_count
bool _process_FELIX_AUX(const artdaq::Fragment &frag, RawDigits &raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm, uint32_t runNumber)
bool _drop_small_rce_frags
art::Assns< raw::RawDigit, raw::RDTimeStamp > RDTsAssocs
bool _drop_events_with_small_rce_frags
int _felix_crate_number_to_check
unsigned int GetOfflineNumberFromDetectorElements(unsigned int crate, unsigned int slot, unsigned int fiber, unsigned int fembchannel, FelixOrRCE frswitch)
#define DEFINE_ART_MODULE(klass)
std::string _output_label
struct dune::tde::crate crate
bool _processFELIX(art::Event &evt, RawDigits &raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm)
bool _enforce_same_tick_count
T get(std::string const &key) const
TH1D * fIncorrectTickNumbers
uint64_t timestamp(const unsigned &frame_ID=0) const
IcebergTPCRawDecoder(fhicl::ParameterSet const &p)
ProductID put(std::unique_ptr< PROD > &&edp, std::string const &instance={})
uint16_t coldata_convert_count(const unsigned &frame_ID, const uint8_t &block_num) const
std::string _rce_input_label
bool removeCachedProduct(Handle< PROD > &) const
Q_EXPORT QTSManip setw(int w)
void save(const std::string &filepath) const
unsigned int _full_channel_count
size_t _felix_frag_small_size
uint8_t fiber_no(const unsigned &frame_ID=0) const
adc_v get_ADCs_by_channel(const uint8_t channel_ID) const
bool _drop_events_with_small_felix_frags
uint8_t frame_version(const unsigned &frame_ID=0) const
bool _initialized_tick_count_this_event
uint16_t wib_errors(const unsigned &frame_ID=0) const
unsigned int incorrect_ticks
std::vector< raw::RDTimeStamp > RDTimeStamps
uint8_t crate_no(const unsigned &frame_ID=0) const
bool _process_RCE_AUX(const artdaq::Fragment &frag, RawDigits &raw_digits, RDTimeStamps ×tamps, RDTsAssocs &tsassocs, RDPmkr &rdpm, TSPmkr &tspm, uint32_t runNumber)
void SetPedestal(float ped, float sigma=1.)
Set pedestal and its RMS (the latter is 0 by default)
void addSingle(Ptr< left_t > const &left, Ptr< right_t > const &right, data_t const &data)
static double tdiff(const art::Timestamp &ts1, const art::Timestamp &ts2)
adc_v get_ADCs_by_channel(const uint8_t block_ID, const uint8_t channel_ID) const
std::string _felix_input_noncontainer_instance
void Compress(std::vector< short > &adc, raw::Compress_t compress)
Compresses a raw data buffer.
std::string _rce_input_container_instance
#define MF_LOG_WARNING(category)
std::string _rce_input_noncontainer_instance
std::vector< int16_t > _buffer
Q_EXPORT QTSManip setfill(int f)
bool _rce_check_buffer_size
bool _enforce_full_channel_count
std::vector< Fragment > Fragments
std::vector< raw::RawDigit > RawDigits
double median(sqlite3 *db, std::string const &table_name, std::string const &column_name)
std::vector< raw::RDStatus > RDStatuses
QTextStream & endl(QTextStream &s)
unsigned int error_counter
art::PtrMaker< raw::RDTimeStamp > TSPmkr
uint64_t timestamp(const unsigned &frame_ID=0) const