Skip to content

Commit c1a42c0

Browse files
committed
Combine all extended fragments succesfully
1 parent 0d9f644 commit c1a42c0

2 files changed

Lines changed: 17 additions & 17 deletions

File tree

sbndcode/Decoders/XARAPUCA/SBNDXARAPUCADecoder_module.cc

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class sbndaq::SBNDXARAPUCADecoder : public art::EDProducer {
133133
bool fverbose; /**< If `true` it increases verbosity of console output for detailed processing steps. */
134134

135135
// Class methods.
136-
void decode_fragment(uint64_t timestamp, uint64_t& nominal_frag_timestamp, int32_t& nominal_TTT, std::vector<size_t> & fragment_indices, const artdaq::Fragment& fragment, std::vector <raw::OpDetWaveform>& prod_wvfms, std::vector<std::vector<uint16_t>>& wvfms);
136+
void decode_fragment(uint64_t timestamp, uint64_t& nominal_frag_timestamp, int32_t& nominal_TTT, std::vector<size_t> & fragment_indices, const artdaq::Fragment& fragment, std::vector <raw::OpDetWaveform>& prod_wvfms, std::vector<std::vector<uint16_t>>& wvfms, bool last_one);
137137

138138
bool get_ptb_hlt_timestamp(art::Event& e, uint64_t corr_raw_timestamp, uint64_t & timestamp, uint16_t & hlt_code);
139139
bool get_spec_tdc_etrig_timestamp(art::Event& e, uint64_t corr_raw_timestamp, uint64_t & timestamp);
@@ -310,6 +310,7 @@ void sbndaq::SBNDXARAPUCADecoder::produce(art::Event& e)
310310
std::cout << "wvfms_size: " << wvfms.size() << std::endl;
311311
int32_t nominal_TTT = TTT_DEFAULT;
312312
uint64_t nominal_frag_timestamp = TTT_DEFAULT;
313+
bool last_one = false;
313314

314315
if (fverbose | fdebug_fragments_handle) std::cout << "\n > SBNDXARAPUCADecoder::produce: searching for V1740 fragments..." << std::endl;
315316

@@ -347,7 +348,8 @@ void sbndaq::SBNDXARAPUCADecoder::produce(art::Event& e)
347348

348349
for (size_t f = 0; f < num_caen_fragments; f++) {
349350
const artdaq::Fragment fragment = *container_fragment[f].get();
350-
decode_fragment(timestamp, nominal_frag_timestamp, nominal_TTT, fragment_indices, fragment, *prod_wvfms, wvfms);
351+
last_one = f == (num_caen_fragments - 1);
352+
decode_fragment(timestamp, nominal_frag_timestamp, nominal_TTT, fragment_indices, fragment, *prod_wvfms, wvfms, last_one);
351353
} // End CAEN V1740 fragments loop.
352354
}
353355
} // End Container fragments loop.
@@ -359,7 +361,8 @@ void sbndaq::SBNDXARAPUCADecoder::produce(art::Event& e)
359361
// It searches for all CAEN V1740 fragments.
360362
for (size_t f = 0; f < frag_handle_size; f++) {
361363
const artdaq::Fragment fragment = fragment_handle->at(f);
362-
decode_fragment(timestamp, nominal_frag_timestamp, nominal_TTT, fragment_indices, fragment, *prod_wvfms, wvfms);
364+
last_one = f == (frag_handle_size - 1);
365+
decode_fragment(timestamp, nominal_frag_timestamp, nominal_TTT, fragment_indices, fragment, *prod_wvfms, wvfms, last_one);
363366
} // End CAEN V1740 fragments loop.
364367
}
365368
} // End extracting CAEN V1740 fragments.
@@ -606,9 +609,7 @@ bool sbndaq::SBNDXARAPUCADecoder::get_ptb_hlt_timestamp(art::Event& e, uint64_t
606609
*
607610
*/
608611

609-
void sbndaq::SBNDXARAPUCADecoder::decode_fragment(uint64_t timestamp, uint64_t& nominal_frag_timestamp, int32_t& nominal_TTT, std::vector<size_t> & fragment_indices, const artdaq::Fragment& fragment, std::vector <raw::OpDetWaveform>& prod_wvfms, std::vector<std::vector<uint16_t>>& wvfms) {
610-
std::cout << "decode_wvfms_size: " << wvfms.size() << std::endl;
611-
612+
void sbndaq::SBNDXARAPUCADecoder::decode_fragment(uint64_t timestamp, uint64_t& nominal_frag_timestamp, int32_t& nominal_TTT, std::vector<size_t> & fragment_indices, const artdaq::Fragment& fragment, std::vector <raw::OpDetWaveform>& prod_wvfms, std::vector<std::vector<uint16_t>>& wvfms, bool last_one) {
612613
auto fragment_id = fragment.fragmentID() - ffragment_id_offset;
613614
auto it = std::find(fboard_id_list.begin(), fboard_id_list.end(), fragment_id);
614615
size_t board_idx;
@@ -678,8 +679,6 @@ void sbndaq::SBNDXARAPUCADecoder::decode_fragment(uint64_t timestamp, uint64_t&
678679
std::cout << "\t Number of samples per group (this fragment): " << num_samples_per_group << std::endl;
679680
}
680681

681-
//std::vector <std::vector <uint16_t> > wvfms(num_channels, std::vector<uint16_t>(num_samples_per_wvfm, 0));
682-
683682
// =============== Extracts timing information for this fragment =============== //
684683

685684
uint64_t frag_timestamp = fragment.timestamp(); // ns.
@@ -694,13 +693,7 @@ void sbndaq::SBNDXARAPUCADecoder::decode_fragment(uint64_t timestamp, uint64_t&
694693
//// =============== Start decoding the waveforms =============== //
695694
std::vector <std::vector <uint16_t> > fragment_wvfms(num_channels, std::vector<uint16_t>(num_samples_per_wvfm, 0));
696695
decode_waveforms(fragment, fragment_wvfms, header_size, num_channels, num_samples_per_wvfm, num_words_per_wvfms, num_samples_per_group);
697-
//
698-
//// =============== Shifts timing to the selected timing reference frame =============== //
699-
//
700-
//shift_time(fragment, TTT_ticks, TTT_end_ns, timestamp, num_samples_per_wvfm, ini_wvfm_timestamp, end_wvfm_timestamp);
701-
//dump_waveforms(prod_wvfms, wvfms, fragment_indices, board_idx, num_channels, ini_wvfm_timestamp, end_wvfm_timestamp);
702-
//combine_waveforms(wvfms, fragment_wvfms, num_channels);
703-
696+
704697
is_nominal_length = (num_nominal_samples_per_wvfm == num_samples_per_wvfm);
705698
is_first = (fragment_indices[board_idx] == 0);
706699

@@ -721,8 +714,15 @@ void sbndaq::SBNDXARAPUCADecoder::decode_fragment(uint64_t timestamp, uint64_t&
721714
std::cout << " EXTENDED fragment " << std::endl;
722715
combine_waveforms(wvfms, fragment_wvfms, num_channels);
723716
}
724-
717+
725718
fragment_indices[board_idx]++;
719+
720+
if (last_one) {
721+
std::cout << " LAST fragment " << std::endl;
722+
shift_time(TTT_ticks, nominal_TTT, nominal_frag_timestamp, timestamp, num_nominal_samples_per_wvfm, ini_wvfm_timestamp, end_wvfm_timestamp);
723+
dump_waveforms(prod_wvfms, wvfms, fragment_indices, board_idx, num_channels, ini_wvfm_timestamp, end_wvfm_timestamp);
724+
}
725+
726726
}
727727
}
728728

sbndcode/Decoders/XARAPUCA/xarapucadecoder.fcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ xarapucadecoder:
3232
# - Output data product instance name.
3333
waveforms_instance_name: "XARAPUCAChannels" # Name for the instance product containing the raw decoded waveforms.
3434
timing_ref_instance_name: "" # Name for the instance product containing the timing reference information.
35-
store_debug_waveforms: 2 # Number of waveforms to store (0: none, -1: all, n: first n waveforms).
35+
store_debug_waveforms: -1 # Number of waveforms to store (0: none, -1: all, n: first n waveforms).
3636
# - Debug options.
3737
debug_tdc_handle: false # (De)activates SPEC-TDC art::Handle information printing.
3838
debug_ptb_handle: false # (De)activates PTB art::Handle information printing.

0 commit comments

Comments
 (0)