760 def get_det_data_all(self,frag):
761 frh = frag.get_header()
762 trigger_number = frh.trigger_number
763
764 get_ana_data = (self.ana_data_prescale is not None and (trigger_number % self.ana_data_prescale)==0)
765 get_wvfm_data = (self.wvfm_data_prescale is not None and (trigger_number % self.wvfm_data_prescale)==0)
766
767 if not (get_ana_data or get_wvfm_data):
768 return None,None
769
770 ana_data = None
771 wvfm_data = None
772
773 adcs = self.unpacker.np_array_adc_stream(frag)
774 frame = self.frame_obj(frag.get_data())
775 dh = frame.get_header()
776 det, crate, slot, stream = self.get_det_crate_slot_stream(frag)
777 daphne_chans = [ frame.get_channel0(), frame.get_channel1(), frame.get_channel2(), frame.get_channel3() ]
778 channels = [ self.channel_map.get_offline_channel_from_det_crate_slot_stream_chan(det, crate, slot, stream, c) for c in daphne_chans ]
779
780 if get_ana_data:
781 adc_mean = np.mean(adcs,axis=0)
782 adc_rms = np.std(adcs,axis=0)
783 adc_max = np.max(adcs,axis=0)
784 adc_min = np.min(adcs,axis=0)
785 adc_median = np.median(adcs,axis=0)
786 ana_data = [ DAPHNEStreamAnalysisData(run=frh.run_number,
787 trigger=frh.trigger_number,
788 sequence=frh.sequence_number,
789 src_id=frh.element_id.id,
790 channel=channels[i_ch],
791 daphne_chan=daphne_chans[i_ch],
792 adc_mean=adc_mean[i_ch],
793 adc_rms=adc_rms[i_ch],
794 adc_max=adc_max[i_ch],
795 adc_min=adc_min[i_ch],
796 adc_median=adc_median[i_ch]) for i_ch in range(self.N_CHANNELS_PER_FRAME) ]
797 if get_wvfm_data:
798 timestamps = self.unpacker.np_array_timestamp_stream(frag)
799 ffts = np.abs(np.fft.rfft(adcs,axis=0))
800 wvfm_data = [ DAPHNEStreamWaveformData(run=frh.run_number,
801 trigger=frh.trigger_number,
802 sequence=frh.sequence_number,
803 src_id=frh.element_id.id,
804 channel=channels[i_ch],
805 daphne_chan=channels[i_ch],
806 adcs=adcs[:,i_ch],
807 timestamps=timestamps,
808 fft_mag=ffts[:,i_ch]) for i_ch in range(self.N_CHANNELS_PER_FRAME) ]
809 return ana_data, wvfm_data
810