442 frh = frag.get_header()
446 pulser_arr = np.empty(n_frames)
447 calibration_arr = np.empty(n_frames)
448 ready_arr = np.empty(n_frames)
449 context_arr = np.empty(n_frames)
450 wib_sync_arr = np.empty(n_frames)
451 femb_sync_arr = np.empty(n_frames)
452 cd_arr = np.empty(n_frames)
453 crc_err_arr = np.empty(n_frames)
454 link_valid_arr = np.empty(n_frames)
455 lol_arr = np.empty(n_frames)
456 colddata_ts0_arr = np.empty(n_frames)
457 colddata_ts1_arr = np.empty(n_frames)
459 for i
in range(n_frames):
462 pulser_arr[i] = wh.pulser
463 calibration_arr[i] = wh.calibration
464 ready_arr[i] = wh.ready
465 context_arr[i] = wh.context
467 wib_sync_arr[i] = wh.wib_sync
468 femb_sync_arr[i] = wh.femb_sync
471 crc_err_arr[i] = wh.crc_err
472 link_valid_arr[i] = wh.link_valid
475 colddata_ts0_arr[i] = wh.colddata_timestamp_0
476 colddata_ts1_arr[i] = wh.colddata_timestamp_1
491 colddata_ts0_diff = np.diff(colddata_ts0_arr)
492 colddata_ts0_diff[colddata_ts0_diff<0] = colddata_ts0_diff[colddata_ts0_diff<0]+0x8000
495 colddata_ts1_diff = np.diff(colddata_ts1_arr)
496 colddata_ts1_diff[colddata_ts1_diff<0] = colddata_ts1_diff[colddata_ts1_diff<0]+0x8000
499 ts_arr = self.
unpacker.np_array_timestamp(frag)
502 wh = self.
frame_obj(frag.get_data()).get_wibheader()
503 ts_diff_vals, ts_diff_counts = np.unique(np.diff(self.
unpacker.np_array_timestamp(frag)),return_counts=
True)
505 trigger=frh.trigger_number,
506 sequence=frh.sequence_number,
507 src_id=frh.element_id.id,
508 femb_id=(wh.channel>>1)&0x3,
509 colddata_id=wh.channel&0x1,
511 pulser_vals=pulser_change_val, pulser_idx=pulser_change_idx,
512 calibration_vals=calibration_change_val, calibration_idx=calibration_change_idx,
513 ready_vals=ready_change_val, ready_idx=ready_change_idx,
514 context_vals=context_change_val, context_idx=context_change_idx,
515 wib_sync_vals=wib_sync_change_val, wib_sync_idx=wib_sync_change_idx,
516 femb_sync_vals=femb_sync_change_val, femb_sync_idx=femb_sync_change_idx,
517 cd_vals=cd_change_val, cd_idx=cd_change_idx,
518 crc_err_vals=crc_err_change_val, crc_err_idx=crc_err_change_idx,
519 link_valid_vals=link_valid_change_val, link_valid_idx=link_valid_change_idx,
520 lol_vals=lol_change_val, lol_idx=lol_change_idx,
521 colddata_timestamp_0_diff_vals=colddata_ts0_diff_change_val,
522 colddata_timestamp_0_diff_idx=colddata_ts0_diff_change_idx,
523 colddata_timestamp_0_first=colddata_ts0_arr[0],
524 colddata_timestamp_1_diff_vals=colddata_ts1_diff_change_val,
525 colddata_timestamp_1_diff_idx=colddata_ts1_diff_change_idx,
526 colddata_timestamp_1_first=colddata_ts1_arr[0],
527 timestamp_dts_diff_vals=ts_diff_change_val, timestamp_dts_diff_idx=ts_diff_change_idx,
528 timestamp_dts_first=ts_arr[0],
534 frh = frag.get_header()
535 trigger_number = frh.trigger_number
542 if not (get_ana_data
or get_wvfm_data):
548 adcs = self.
unpacker.np_array_adc(frag)
550 channels = [ self.
channel_map.get_offline_channel_from_det_crate_slot_stream_chan(det, crate, slot, stream, c)
for c
in range(self.
N_CHANNELS_PER_FRAME) ]
551 planes = [ self.
channel_map.get_plane_from_offline_channel(uc)
for uc
in channels ]
552 elements = [ self.
channel_map.get_element_id_from_offline_channel(uc)
for uc
in channels ]
556 adc_mean = np.mean(adcs,axis=0)
557 adc_rms = np.std(adcs,axis=0)
558 adc_max = np.max(adcs,axis=0)
559 adc_min = np.min(adcs,axis=0)
560 adc_median = np.median(adcs,axis=0)
562 trigger=frh.trigger_number,
563 sequence=frh.sequence_number,
564 src_id=frh.element_id.id,
565 channel=channels[i_ch],
567 element=elements[i_ch],
568 wib_chan=wib_chans[i_ch],
569 adc_mean=adc_mean[i_ch],
570 adc_rms=adc_rms[i_ch],
571 adc_max=adc_max[i_ch],
572 adc_min=adc_min[i_ch],
575 timestamps = self.
unpacker.np_array_timestamp(frag)
576 ffts = np.abs(np.fft.rfft(adcs,axis=0))
578 trigger=frh.trigger_number,
579 sequence=frh.sequence_number,
580 src_id=frh.element_id.id,
581 channel=channels[i_ch],
583 element=elements[i_ch],
584 wib_chan=wib_chans[i_ch],
585 timestamps=timestamps,
589 return ana_data, wvfm_data