Skip to content
Snippets Groups Projects
Commit d514b83f authored by Guenter Quast's avatar Guenter Quast
Browse files

working config for RedPitaya pulse generator

parent 8cdc60de
Branches
No related tags found
No related merge requests found
...@@ -2,28 +2,34 @@ ...@@ -2,28 +2,34 @@
general: general:
runtime: 600 # desired runtime in seconds runtime: 600 # desired runtime in seconds
runevents: &number_of_events 100000 runevents: &number_of_events 100000
number_of_samples: &number_of_samples 2048 number_of_samples: &number_of_samples 1000
analogue_offset: &analogue_offset 0 analogue_offset: &analogue_offset 0
sample_time_ns: &sample_time_ns 32 # special settings for RedPitaya
decimation_index: &decimation 4 # decimation 0:1, i:2^(i+1) # data decimation factor, 0 is 8 ns/sample
sample_time_ns: &sample_time_ns 256 # for decimation 4
invert_channel1: &invert1 0
invert_channel2: &invert2 0
trigger_level: &trigger_level 50 trigger_level: &trigger_level 50
trigger_channel: &trigger_channel '1' trigger_channel: &trigger_channel '1'
trigger_direction: &trigger_direction 'rising' trigger_direction: &trigger_direction "rising" # or "falling"
pre_trigger_samples: &pre_trigger_samples 103 # 5% pre_trigger_samples: &pre_trigger_samples 103 # 5%
# dict for spectrum_filter, function find_peaks
find_peaks: find_peaks:
# signal_characteristics: 256ns/sample, duration 50µs ( ~200 samples)
sample_time_ns: *sample_time_ns sample_time_ns: *sample_time_ns
analogue_offset: *analogue_offset analogue_offset: *analogue_offset
number_of_samples: *number_of_samples number_of_samples: *number_of_samples
pre_trigger_samples: *pre_trigger_samples pre_trigger_samples: *pre_trigger_samples
peak_minimal_prominence: 50 # has to be positive and higher than avg. noise peaks to not cause havoc! peak_minimal_prominence: 200 # has to be positive and higher than avg. noise peaks to not cause havoc!
trigger_channel: *trigger_channel trigger_channel: *trigger_channel
peak_minimal_distance: 10 # minimal distance between two peaks in number of samples peak_minimal_distance: 400 # minimal distance between two peaks in number of samples
peak_minimal_width: 7 # in number of samples peak_minimal_width: 100 # in number of samples
trigger_channel: *trigger_channel trigger_channel: *trigger_channel
trigger_position_tolerance: 7 # in number of samples trigger_position_tolerance: 20 # in number of samples
# dict for RedPitaya redPoscidaq # dict for RedPitaya redPoscdaq
redP_to_rb: redP_to_rb:
ip_address: '192.168.0.103' ip_address: '192.168.0.103'
eventcount: *number_of_events eventcount: *number_of_events
...@@ -32,10 +38,11 @@ redP_to_rb: ...@@ -32,10 +38,11 @@ redP_to_rb:
pre_trigger_samples: *pre_trigger_samples pre_trigger_samples: *pre_trigger_samples
trigger_channel: *trigger_channel trigger_channel: *trigger_channel
trigger_level: *trigger_level trigger_level: *trigger_level
trigger_mode: 'norm' trigger_mode: "norm" # or "auto"
decimation_index: 0 # special settings for RedPitaya
invert_channel1: 0 decimation_index: *decimation
invert_channel2: 0 invert_channel1: *invert1
invert_channel2: *invert2
# Dict for simul_source.py # Dict for simul_source.py
simul_source: simul_source:
...@@ -79,5 +86,5 @@ plot_histograms: ...@@ -79,5 +86,5 @@ plot_histograms:
# define histograms # define histograms
histograms: histograms:
# name min max nbins ymax name lin/log # name min max nbins ymax name lin/log
chA_height: [50., 3000., 250, 5.9, "ph 1A", 0] ch1_height: [50., 3000., 250, 20., "ph 1A", 0]
chB_height: [50., 3000., 250, 5.9, "ph 1B", 0] ch2_height: [50., 3000., 250, 20., "ph 1B", 0]
...@@ -53,7 +53,8 @@ def find_peaks(source_list=None, sink_list=None, observe_list=None, config_dict= ...@@ -53,7 +53,8 @@ def find_peaks(source_list=None, sink_list=None, observe_list=None, config_dict=
peak_minimal_width = config_dict["peak_minimal_width"] peak_minimal_width = config_dict["peak_minimal_width"]
pre_trigger_samples = config_dict["pre_trigger_samples"] pre_trigger_samples = config_dict["pre_trigger_samples"]
trigger_channel = config_dict["trigger_channel"] trigger_channel = config_dict["trigger_channel"]
if trigger_channel not in ['A','B','C','D']: # if trigger_channel not in ['A','B','C','D']:
if trigger_channel not in ['1','2']:
trigger_channel = None trigger_channel = None
trigger_position_tolerance = config_dict["trigger_position_tolerance"] trigger_position_tolerance = config_dict["trigger_position_tolerance"]
......
...@@ -103,7 +103,7 @@ class rpControl(QMainWindow, Ui_MCPHA): ...@@ -103,7 +103,7 @@ class rpControl(QMainWindow, Ui_MCPHA):
""" """
Args: Args:
callback: function receiving recorded waveforms callback: function receiving recorded waveforms
conf_dict: a configuration dictionary conf_dict: a configuration dictionary
""" """
super(rpControl, self).__init__() super(rpControl, self).__init__()
...@@ -190,12 +190,12 @@ class rpControl(QMainWindow, Ui_MCPHA): ...@@ -190,12 +190,12 @@ class rpControl(QMainWindow, Ui_MCPHA):
self.pretrigger_fraction = 0.05 if "pre_trigger_samples" not in self.confd \ self.pretrigger_fraction = 0.05 if "pre_trigger_samples" not in self.confd \
else self.confd["pre_trigger_samples"]/self.sample_size else self.confd["pre_trigger_samples"]/self.sample_size
self.trigger_mode = 0 if "trigger_mode" not in self.confd \ self.trigger_mode = 0 if "trigger_mode" not in self.confd \
else 1 if self.confd["trigger_mode"] == "auto" else 0 else 1 if self.confd["trigger_mode"] == "auto" or self.confd["trigger_mode"] == 1 else 0
self.trigger_source = 0 if "trigger_channel" not in self.confd \ self.trigger_source = 0 if "trigger_channel" not in self.confd \
else int(self.confd["trigger_channel"])-1 else int(self.confd["trigger_channel"])-1
self.trigger_level = 500 if "trigger_level" not in self.confd else self.confd["trigger_level"] self.trigger_level = 500 if "trigger_level" not in self.confd else self.confd["trigger_level"]
self.trigger_slope = 0 if "trigger_direction" not in self.confd else\ self.trigger_slope = 0 if "trigger_direction" not in self.confd else\
0 if self.confd["trigger_direction"] == "rising" else 1 0 if self.confd["trigger_direction"]=="rising" or self.confd["trigger_direction"]=="1" else 1
self.decimation_index = 1 if "decimation_index" not in self.confd else \ self.decimation_index = 1 if "decimation_index" not in self.confd else \
self.confd["decimation_index"] self.confd["decimation_index"]
self.invert1 = 0 if "invert_channel1" not in self.confd else self.confd["invert_channel1"] self.invert1 = 0 if "invert_channel1" not in self.confd else self.confd["invert_channel1"]
......
...@@ -24,22 +24,22 @@ RingBuffer: ...@@ -24,22 +24,22 @@ RingBuffer:
- RB_1: - RB_1:
# raw input data buffer (from picoScope, file or simulation) # raw input data buffer (from picoScope, file or simulation)
number_of_slots: 16 number_of_slots: 16
channel_per_slot: 2048 channel_per_slot: 1000
data_type: data_type:
1: ['chA', "float32"] 1: ['ch1', "float32"]
2: ['chB', "float32"] 2: ['ch2', "float32"]
- RB_2: - RB_2:
# buffer with correct signature double pulse parameters # buffer with correct signature double pulse parameters
number_of_slots: 16 number_of_slots: 16
channel_per_slot: 1 channel_per_slot: 1
data_type: data_type:
data_type: data_type:
1: ['chA_height', "float32"] 1: ['ch1_height', "float32"]
2: ['chA_position', "int32"] 2: ['ch1_position', "int32"]
3: ['chA_integral', "float32"] 3: ['ch1_integral', "float32"]
4: ['chB_height', "float32"] 4: ['ch2_height', "float32"]
5: ['chB_position', "int32"] 5: ['ch2_position', "int32"]
6: ['chB_integral', "float32"] 6: ['ch2_integral', "float32"]
Functions: Functions:
# define functions and ringbuffer assignment # define functions and ringbuffer assignment
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment