修复了能量和信号幅度的转换关系
parent
f3d316ab52
commit
0d655f077d
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -712,6 +712,24 @@ class DataWriterV4:
|
|||
f.write("# 8个信号为一组,每组内从后往前导出(逆序排列: 8,7,6,5,4,3,2,1, 16,15...)\n")
|
||||
f.write("# 格式: 事件ID | 组内序号 | 十六进制编码 | 解析结果\n")
|
||||
f.write(f"# 能量转换: mV = keV × {self.energy_K} + {self.energy_B}\n")
|
||||
|
||||
# 写入模拟参数
|
||||
f.write("#\n")
|
||||
f.write("# 模拟参数:\n")
|
||||
|
||||
# 同步脉冲参数
|
||||
sync_pulses = self.config.get('simulation', {}).get('sync_pulses', [])
|
||||
for i, pulse in enumerate(sync_pulses, 1):
|
||||
count = pulse.get('count', 0)
|
||||
period = pulse.get('period', 0)
|
||||
f.write(f"# 同步脉冲{i}: 个数={count}, 周期={period} (10ns)\n")
|
||||
|
||||
# 能量和AD转换参数
|
||||
energy_conversion = self.config.get('simulation', {}).get('energy_conversion', {})
|
||||
energy_K = energy_conversion.get('K', 1.0)
|
||||
energy_B = energy_conversion.get('B', 0.0)
|
||||
f.write(f"# 能量转换参数: K={energy_K}, B={energy_B} (mV = keV × K + B)\n")
|
||||
|
||||
f.write("#" * 120 + "\n")
|
||||
|
||||
for event_idx, event_signals in enumerate(all_events):
|
||||
|
|
@ -1164,6 +1182,24 @@ class DataWriterV4:
|
|||
f.write("# 注: 能量为0的探测器不显示\n")
|
||||
f.write("#" * 120 + "\n\n")
|
||||
|
||||
# 写入模拟参数
|
||||
f.write("#\n")
|
||||
f.write("# 模拟参数:\n")
|
||||
|
||||
# 同步脉冲参数
|
||||
sync_pulses = self.config.get('simulation', {}).get('sync_pulses', [])
|
||||
for i, pulse in enumerate(sync_pulses, 1):
|
||||
count = pulse.get('count', 0)
|
||||
period = pulse.get('period', 0)
|
||||
f.write(f"# 同步脉冲{i}: 个数={count}, 周期={period} (10ns)\n")
|
||||
|
||||
# 能量和AD转换参数
|
||||
energy_conversion = self.config.get('simulation', {}).get('energy_conversion', {})
|
||||
energy_K = energy_conversion.get('K', 1.0)
|
||||
energy_B = energy_conversion.get('B', 0.0)
|
||||
f.write(f"# 能量转换参数: K={energy_K}, B={energy_B} (mV = keV × K + B)\n")
|
||||
f.write("#" * 120 + "\n\n")
|
||||
|
||||
total_signals = len(encoded_signals)
|
||||
|
||||
# 预先计算每个信号对应的事件ID
|
||||
|
|
@ -1202,13 +1238,13 @@ class DataWriterV4:
|
|||
# 构建信号描述,只显示能量不为0的探测器
|
||||
signal_desc = []
|
||||
if energies[0] > 0:
|
||||
det1_kev = energies[0] / 2.0 # 假设K=2.0
|
||||
det1_kev = (energies[0] - self.energy_B) / self.energy_K if self.energy_K != 0 else 0
|
||||
signal_desc.append(f"Det1:{det1_kev:.0f}keV")
|
||||
if energies[1] > 0:
|
||||
det2_kev = energies[1] / 2.0
|
||||
det2_kev = (energies[1] - self.energy_B) / self.energy_K if self.energy_K != 0 else 0
|
||||
signal_desc.append(f"Det2:{det2_kev:.0f}keV")
|
||||
if energies[2] > 0:
|
||||
det3_kev = energies[2] / 2.0
|
||||
det3_kev = (energies[2] - self.energy_B) / self.energy_K if self.energy_K != 0 else 0
|
||||
signal_desc.append(f"Det3:{det3_kev:.0f}keV")
|
||||
|
||||
# 如果没有探测器有能量,显示无信号
|
||||
|
|
|
|||
|
|
@ -2,9 +2,8 @@ detectors:
|
|||
detector1:
|
||||
allow_replacement: true
|
||||
energy_distribution:
|
||||
high: 2000.0
|
||||
low: 1000.0
|
||||
type: uniform
|
||||
type: constant
|
||||
value: 100.0
|
||||
name: detector1
|
||||
sample_space_size: 100000
|
||||
timestamp_distribution:
|
||||
|
|
@ -14,9 +13,8 @@ detectors:
|
|||
detector2:
|
||||
allow_replacement: true
|
||||
energy_distribution:
|
||||
mean: 1000.0
|
||||
std: 60.0
|
||||
type: normal
|
||||
type: constant
|
||||
value: 200.0
|
||||
name: detector2
|
||||
sample_space_size: 100000
|
||||
timestamp_distribution:
|
||||
|
|
@ -26,9 +24,8 @@ detectors:
|
|||
detector3:
|
||||
allow_replacement: true
|
||||
energy_distribution:
|
||||
loc: 260.0
|
||||
scale: 50.0
|
||||
type: exponential
|
||||
type: constant
|
||||
value: 300.0
|
||||
name: detector3
|
||||
sample_space_size: 100000
|
||||
timestamp_distribution:
|
||||
|
|
@ -41,44 +38,44 @@ hardware_control:
|
|||
port: 23
|
||||
simulation:
|
||||
energy_conversion:
|
||||
B: 0.0
|
||||
K: 1.0
|
||||
B: 100.0
|
||||
K: 2.0
|
||||
event_generation_mode: random
|
||||
num_events: 1
|
||||
output_file: RC_1ev_D1100KUU_D2100KNN_D3100KEE
|
||||
output_file: RC_1ev_D15KNE_D24KNU_D36KGN
|
||||
output_format: all
|
||||
packing_mode: combined
|
||||
signal_type: 112
|
||||
sync_pulse_signals:
|
||||
pulse1:
|
||||
detector1:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
detector2:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
detector3:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
pulse2:
|
||||
detector1:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
detector2:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
detector3:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
pulse3:
|
||||
detector1:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
detector2:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
detector3:
|
||||
max: 10
|
||||
max: 1
|
||||
min: 1
|
||||
pulse4:
|
||||
detector1:
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@ class MainConfigTab(ctk.CTkFrame):
|
|||
|
||||
ctk.CTkLabel(energy_conversion_frame, text="K:").pack(side="left", padx=10, pady=5)
|
||||
self.energy_K_var = ctk.StringVar(value="1.0")
|
||||
self.energy_K_var.trace_add('write', self._on_config_change)
|
||||
energy_K_entry = ctk.CTkEntry(
|
||||
energy_conversion_frame,
|
||||
textvariable=self.energy_K_var,
|
||||
|
|
@ -153,6 +154,7 @@ class MainConfigTab(ctk.CTkFrame):
|
|||
|
||||
ctk.CTkLabel(energy_conversion_frame, text="B:").pack(side="left", padx=10, pady=5)
|
||||
self.energy_B_var = ctk.StringVar(value="0.0")
|
||||
self.energy_B_var.trace_add('write', self._on_config_change)
|
||||
energy_B_entry = ctk.CTkEntry(
|
||||
energy_conversion_frame,
|
||||
textvariable=self.energy_B_var,
|
||||
|
|
|
|||
Loading…
Reference in New Issue