Skip to content
Snippets Groups Projects

Fix/da qoldformat corr

Merged Andrey Samartsev requested to merge fix/DAQoldformatCorr into master
4 unresolved threads
@@ -13,7 +13,7 @@ def get_pulseid_checksum(fname, h5path, h5path_idx):
with h5py.File(fname, "r") as infile:
count = np.squeeze(infile[f"{h5path_idx}/count"])
first = np.squeeze(infile[f"{h5path_idx}/first"])
last_index = int(first[count != 0][-1]+count[count != 0][-1])
last_index = int(first[count != 0][-1] + count[count != 0][-1])
first_index = int(first[count != 0][0])
pulseids = infile[f"{h5path}/pulseId"][first_index:
int(first[count != 0][1])]
@@ -25,7 +25,7 @@ def get_pulseid_checksum(fname, h5path, h5path_idx):
def _extr_gainparam_conffilename(fileName: str) -> Tuple[int]:
"""extracts target gain from config filename, if provided."""
vals = re.search(".*_TG(?P<TG>\d+.?\d+)", fileName)
vals = re.search(".*_TG(?P<TG>\\d+.?\\d+)", fileName)
if vals:
return vals.group('TG')
@@ -54,7 +54,7 @@ def get_dssc_ctrl_data(in_folder, slow_data_pattern,
encodedGainAll = {}
operatingFreqAll = {}
for i in range(16):
qm = 'Q{}M{}'.format(i//4+1, i % 4+1)
qm = 'Q{}M{}'.format(i // 4 + 1, i % 4 + 1)
targetGainAll[qm] = None
encodedGainAll[qm] = None
operatingFreqAll[qm] = None
@@ -66,59 +66,78 @@ def get_dssc_ctrl_data(in_folder, slow_data_pattern,
f = os.path.join(in_folder, quad_sd_pattern)
if os.path.exists(f):
ctrlDataFiles[quadrant+1] = f
ctrlDataFiles[quadrant + 1] = f
if len(ctrlDataFiles) == 0:
print("No Control Slow Data found!")
print("ERROR: no Control Slow Data found!")
return targetGainAll, encodedGainAll, operatingFreqAll
ctrlloc = h5py.File(next(iter(ctrlDataFiles.values())), 'r')[
'/METADATA/dataSources/deviceId'][0]
daq_format = None
ctrlloc = None
filename = next(iter(ctrlDataFiles.values()))
with h5py.File(filename, 'r') as ctlrh5file:
if '/METADATA/dataSources/deviceId' in ctlrh5file:
ctrlloc = ctlrh5file['/METADATA/dataSources/deviceId'][0]
daq_format = ctlrh5file['/METADATA/dataFormatVersion'][0].decode(
"utf-8")
elif '/METADATA/deviceId' in ctlrh5file:
ctrlloc = ctlrh5file['/METADATA/deviceId'][0]
else:
print("No Slow Control Data found in files!")
Please register or sign in to reply
return targetGainAll, encodedGainAll, operatingFreqAll
ctrlloc = ctrlloc.decode("utf-8")
ctrlloc = ctrlloc[:ctrlloc.find('/')]
tGain = {}
encodedGain = {}
operatingFreqs = {}
for quadrant, file in ctrlDataFiles.items():
if len(file):
h5file = h5py.File(file)
if not f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/epcRegisterFilePath/value' in h5file:
print(f"Slow control data file {file} is not usable")
continue
epcConfig = h5file[f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/epcRegisterFilePath/value'][0]\
.decode("utf-8")
epcConfig = epcConfig[epcConfig.rfind('/') + 1:]
print(f"EPC configuration: {epcConfig}")
targGain = _extr_gainparam_conffilename(epcConfig)
tGain[quadrant] = float(targGain) if targGain is not None else 0.0
# 0.0 is default value for TG
gainSettingsMap = {}
for coarseParam in ['fcfEnCap', 'csaFbCap', 'csaResistor']:
gainSettingsMap[coarseParam] = int(
h5file[f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/gain/{coarseParam}/value'][0])
irampSettings = h5file[f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/gain/irampFineTrm/value'][0]\
.decode("utf-8")
gainSettingsMap['trimmed'] = np.int64(
1) if irampSettings == "Various" else np.int64(0)
encodedGain[quadrant] = _get_gain_encoded_val(gainSettingsMap)
opFreq = h5file[f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/sequencer/cycleLength/value'][0]
# The Operating Frequency of the detector should be in MHz.
# Here the karabo operation mode is converted to acquisition rate:
# 22 corresponds to 4.5 MHz, 44 to 2.25 MHz, etc.
operatingFreqs[quadrant] = 4.5 * (22.0 / opFreq)
for quadrant in range(1,5):
if quadrant in ctrlDataFiles.keys():
file = ctrlDataFiles[quadrant]
with h5py.File(file) as h5file:
iramp_path = f"/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/gain/irampFineTrm/value"
if not daq_format:
tGain[quadrant] = 0.0 # 0.0 is default value for TG
if iramp_path in h5file:
irampSettings = h5file[iramp_path][0]
else:
irampSettings = "Various"
else:
epcConfig = h5file[f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/epcRegisterFilePath/value'][0]\
.decode("utf-8")
epcConfig = epcConfig[epcConfig.rfind('/') + 1:]
print(f"EPC configuration: {epcConfig}")
targGain = _extr_gainparam_conffilename(epcConfig)
tGain[quadrant] = float(
targGain) if targGain is not None else 0.0
irampSettings = h5file[iramp_path][0].decode("utf-8")
gainSettingsMap = {}
for coarseParam in ['fcfEnCap', 'csaFbCap', 'csaResistor']:
gainSettingsMap[coarseParam] = int(
h5file[f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/gain/{coarseParam}/value'][0])
gainSettingsMap['trimmed'] = np.int64(
1) if irampSettings == "Various" else np.int64(0)
encodedGain[quadrant] = _get_gain_encoded_val(gainSettingsMap)
opFreq = h5file[f'/RUN/{ctrlloc}/FPGA/PPT_Q{quadrant}/sequencer/cycleLength/value'][0]
# The Operating Frequency of the detector should be in MHz.
# Here the karabo operation mode is converted to acquisition rate:
# 22 corresponds to 4.5 MHz, 44 to 2.25 MHz, etc.
operatingFreqs[quadrant] = 4.5 * (22.0 / opFreq)
else:
print(f"no slow data for quadrant {quadrant} is found")
    • Suggested change
      135 print(f"no slow data for quadrant {quadrant} is found")
      135 print(f"ERROR: No slow data for quadrant {quadrant} is found")
Please register or sign in to reply
for varpair in [(targetGainAll, tGain), (encodedGainAll, encodedGain), (operatingFreqAll, operatingFreqs)]:
for varpair in [
(targetGainAll, tGain),
(encodedGainAll, encodedGain),
(operatingFreqAll, operatingFreqs)]:
for quadrant, value in varpair[1].items():
for module in range(1, 5):
qm = f'Q{quadrant}M{module}'
Loading