Page History
...
(first use Matt's high-level utility to generate two event codes that run at 10Hz and 100Hz (periods 91000 and 9100 respectively)
(ps-4.5.26) drp-srcf-mon001:psana$ periodicgenerator -p 91000 9100 -s 0 0 -d '10Hz' '100Hz' >& 10hz_100hz.py
(now program sequence engine 0 and start it using the python code generated above. since we're programming engine 0, the first two event codes will be 272,273 according to the above table)
(this command must be executed on a node that can access the XPM PV's, e.g. drp-srcf-*)
(ps-4.5.26) drp-srcf-mon001:psana$ seqprogram --seq 0:10hz_100hz.py --pv DAQ:NEH:XPM:3 --start
** engine 0 fname 10hz_100hz.py **
descset None
seqcodes {0: '10Hz', 1: '100Hz'}
Remove -1
idx 2
Removing seq 2
[10, 1, 5, 3, 0, 0, 0, 0, 2, 0, 6, 2048, 0, 0, 0, 3, 2, 1, 3, 3, 0, 0, 2, 0, 6, 908, 0, 0, 0, 1, 5, 2, 0, 0, 0, 0, 3, 2, 1, 0, 8, 0, 0, 2, 0, 6, 2048, 0, 0, 0, 3, 2, 6, 3, 3, 0, 0, 2, 0, 6, 908, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0]
Confirmed ninstr 10
Sequence found at index 2
desc ['10Hz', '100Hz', '', '', '', '', '', '', '', '', '', '', 'burst', '', '', '']
seqcodes_pv epics:nt/NTTable:1.0
string[] labels [EventCode, Description, Rate, Enabled]
structure value
int[] EventCode [272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287]
string[] Description [10Hz, 100Hz, , , , , , , , , , , burst, , , ]
int[] Rate [11,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
byte[] Enabled [1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1]
string descriptor
alarm_t alarm
int severity 0
int status 0
string message
time_t timeStamp
long secondsPastEpoch 1683163040
int nanoseconds 339389440
int userTag 0(now query the xpm to see what is running in the 4 sequence engines, each having 4 event codes)
(ps-4.5.26) drp-srcf-mon001:psana$ pvget DAQ:NEH:XPM:3:SEQCODES
DAQ:NEH:XPM:3:SEQCODES 2023-05-03 18:17:31.339
EventCode Description Rate Enabled
272 10Hz 10 1
273 100Hz 102 1
274 0 1
275 0 1
276 0 0
277 0 0
278 0 0
279 0 0
280 0 0
281 0 0
282 0 0
283 0 0
284 burst 0 1
285 0 1
286 0 1
287 0 1
(ps-4.5.26) drp-srcf-mon001:psana$
Note: the periodicgenerator "repeat" argument specifies the number of repeats of the slowest event-code.
There is a similar "traingenerator" script which you can read about in Matt's documentation.
...
Some technical details from a discussion on March 23, 2023
currently start the XPM starts sequences on 1Hz boundary (e.g. every 910000 buckets). this slows down the daq scan steps, so support for a second mode is being considered:
...