diff --git a/src/toolbox_scs/constants.py b/src/toolbox_scs/constants.py index 72eee76545de975d59b7eeaa2c704c5b51f93a46..5ef8560a642057c793fb8582c98d57342b1b92a4 100644 --- a/src/toolbox_scs/constants.py +++ b/src/toolbox_scs/constants.py @@ -15,19 +15,24 @@ mnemonics = { "bunchpattern": {'source': 'SCS_RR_UTC/TSYS/TIMESERVER', 'key': 'readBunchPatternTable.value', 'dim': None}, - "bunchPatternTable": {'source': 'SCS_RR_UTC/TSYS/TIMESERVER', - 'key': 'bunchPatternTable.value', - 'dim': ['pulse_slot']}, + "bunchPatternTable": { + 'source': 'SCS_RR_UTC/TSYS/TIMESERVER:outputBunchPattern', + 'key': 'data.bunchPatternTable', + 'dim': ['pulse_slot']}, + "bunchPatternTable_old": { + 'source': 'SCS_RR_UTC/TSYS/TIMESERVER', + 'key': 'bunchPatternTable.value', + 'dim': ['pulse_slot']}, + "bunchPatternTable_SA3": { + 'source': 'SA3_BR_UTC/TSYS/TIMESERVER:outputBunchPattern', + 'key': 'data.bunchPatternTable', + 'dim': ['pulse_slot']}, "npulses_sase3": {'source': 'SCS_RR_UTC/MDL/BUNCH_DECODER', 'key': 'sase3.nPulses.value', 'dim': None}, "npulses_sase1": {'source': 'SCS_RR_UTC/MDL/BUNCH_DECODER', 'key': 'sase1.nPulses.value', 'dim': None}, - "bunchPatternTable_SA3": { - 'source': 'SA3_BR_UTC/TSYS/TIMESERVER:outputBunchPattern', - 'key': 'data.bunchPatternTable', - 'dim': ['pulse_slot']}, # Bunch Arrival Monitors "BAM414": {'source': 'SCS_ILH_LAS/DOOCS/BAM_414_B2:output', diff --git a/src/toolbox_scs/detectors/digitizers.py b/src/toolbox_scs/detectors/digitizers.py index 946f53d5777643978df7ca61ff98109facd38569..a679f690fd159d571902937192aede4bed85a380 100644 --- a/src/toolbox_scs/detectors/digitizers.py +++ b/src/toolbox_scs/detectors/digitizers.py @@ -232,6 +232,9 @@ def get_peaks(run, elif _mnemonics['bunchPatternTable']['source'] in run.all_sources: bpt = run.get_array(*_mnemonics['bunchPatternTable'].values()) pattern = bunchPattern + elif _mnemonics['bunchPatternTable_old']['source'] in run.all_sources: + bpt = run.get_array(*_mnemonics['bunchPatternTable_old'].values()) + pattern = bunchPattern if bunchPattern == 'None': bpt = None @@ -633,11 +636,16 @@ def check_peak_params(run, key, raw_trace=None, ntrains=200, params=None, if not plot: return params min_distance = 24 if "FastADC" in key else 440 - if _mnemonics['bunchPatternTable']['source'] in sel.all_sources \ - and bunchPattern != 'None': + if bunchPattern != 'None': + bp_params = None + else: + if _mnemonics['bunchPatternTable']['source'] in run.all_sources: + bp_mnemo = 'bunchPatternTable' + else: + bp_mnemo = 'bunchPatternTable_old' sel = run.select_trains(np.s_[:ntrains]) bp_params = {} - bpt = sel.get_array(*_mnemonics['bunchPatternTable'].values()) + bpt = sel.get_array(*_mnemonics[bp_mnemo].values()) mask = is_pulse_at(bpt, bunchPattern) pid = np.sort(np.unique(np.where(mask)[1])) bp_params['npulses'] = len(pid) @@ -647,8 +655,6 @@ def check_peak_params(run, key, raw_trace=None, ntrains=200, params=None, bp_params['period'] = np.diff(pid)[0] * min_distance print(f'bunch pattern {bunchPattern}: {bp_params["npulses"]} pulses,' + f' {bp_params["period"]} samples between two pulses') - else: - bp_params = None print(f'{title}: {params["npulses"]} pulses, {params["period"]}' + ' samples between two pulses') fig, ax = plotPeakIntegrationWindow(raw_trace, params, bp_params, show_all) diff --git a/src/toolbox_scs/detectors/xgm.py b/src/toolbox_scs/detectors/xgm.py index b57f21b58339c37400c1fd25c937d53facf19477..da0d1f164a917b2dfe0988c36443143d33775a62 100644 --- a/src/toolbox_scs/detectors/xgm.py +++ b/src/toolbox_scs/detectors/xgm.py @@ -60,11 +60,16 @@ def get_xgm(run, key=None, merge_with=None, keepAllSase=False, # check if bunch pattern table exists if bool(merge_with) and 'bunchPatternTable' in merge_with: bpt = merge_with['bunchPatternTable'] - log.debug('Using bpt from merge_with dataset.') + log.debug('Using bunchPatternTable merge_with dataset.') elif _mnemonics['bunchPatternTable']['source'] in run.all_sources: bpt = run.get_array(*_mnemonics['bunchPatternTable'].values()) - log.debug('Loaded bpt from extra_data run.') + log.debug(f'Loaded bpt from {_mnemonics["bunchPatternTable"]["source"]}.') + elif _mnemonics['bunchPatternTable_old']['source'] in run.all_sources: + bpt = run.get_array(*_mnemonics['bunchPatternTable_old'].values()) + log.debug('Loaded bpt from ' + + f'{_mnemonics["bunchPatternTable_old"]["source"]}.') else: + log.debug('Could not find bunchPatternTable in run.') bpt = None if key is None: diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py index 61fd8151273d5f662901c08413558d184bd3281a..44d8d26871ff6ce6b84ee6edea7ad929813ffd15 100644 --- a/src/toolbox_scs/load.py +++ b/src/toolbox_scs/load.py @@ -92,17 +92,25 @@ def load(proposalNB=None, runNB=None, # load pulse pattern info if _mnemonics['bunchPatternTable']['source'] in run.all_sources: bpt = run.get_array(*_mnemonics['bunchPatternTable'].values()) + log.info('Loading bunch pattern table from ' + + f'{_mnemonics["bunchPatternTable"]["source"]}') + keys.append("bunchPatternTable") + vals.append(bpt) + elif _mnemonics['bunchPatternTable_old']['source'] in run.all_sources: + bpt = run.get_array(*_mnemonics['bunchPatternTable_old'].values()) + log.info('Loading bunch pattern table from ' + + f'{_mnemonics["bunchPatternTable_old"]["source"]}') keys.append("bunchPatternTable") vals.append(bpt) elif _mnemonics['bunchPatternTable_SA3']['source'] in run.all_sources: - log.info('Did not find SCS bunch pattern table but found the SA3 one.') bpt = run.get_array(*_mnemonics['bunchPatternTable_SA3'].values()) + log.info('Loading bunch pattern table from ' + + f'{_mnemonics["bunchPatternTable_SA3"]["source"]}') keys.append("bunchPatternTable") vals.append(bpt) else: - log.warning('Source {} and {} not found in run. Skipping!'.format( - _mnemonics['bunchPatternTable']['source'], - _mnemonics['bunchPatternTable_SA3']['source'],)) + log.warning('Could not find bunch pattern table in run ' + + f'{runNB}. Skipping!') for f in fields: if type(f) == dict: # extracting mnemomic defined on the spot