This commit is contained in:
root
2025-04-28 14:35:09 +02:00
parent 7645e49794
commit cd7eb8401e
81 changed files with 1064 additions and 293 deletions

View File

@@ -13,6 +13,7 @@
"reference_marker_width": 100.0
},
"source": "SARBD02-DSCR051",
"source_type": "bsread",
"mirror_y": false,
"rotate": 0,
"mirror_x": false,

View File

@@ -1,10 +1,10 @@
{
"camera_calibration": {
"reference_marker": [
633,
731,
1456,
1008
551,
568,
1367,
847
],
"reference_marker_width": 6000.0,
"reference_marker_height": 2000.0,

View File

@@ -22,7 +22,7 @@
"source": "SARES11-SPEC125-M1",
"connections": 2,
"buffer_size": 0,
"forwarder_port": 9000,
"_forwarder_port": 9000,
"debug": true,
"protocol": "tcp",
"group": [

View File

@@ -22,7 +22,7 @@
"source": "SARES11-SPEC125-M3",
"connections": 2,
"buffer_size": 0,
"forwarder_port": 9006,
"_forwarder_port": 9006,
"debug": true,
"protocol": "tcp",
"group": [

View File

@@ -1,19 +1,19 @@
{
"camera_calibration": {
"reference_marker": [
259,
211,
263,
215
550,
929,
552,
931
],
"reference_marker_width": 16.71604938271605,
"reference_marker_height": 16.666666666666668,
"reference_marker_width": 4.179012345679013,
"reference_marker_height": 5.555555555555556,
"angle_horizontal": 0.0,
"angle_vertical": 0.0
},
"mirror_x": true,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"rotate": 3,
"roi": null,
"image_background": null,
"source_type": "bsread",

View File

@@ -1,13 +1,13 @@
{
"camera_calibration": {
"reference_marker": [
2842,
835,
3259,
1248
533,
592,
535,
594
],
"reference_marker_width": 2000.0,
"reference_marker_height": 2000.0,
"reference_marker_width": 10.256410256410257,
"reference_marker_height": 10.256410256410257,
"angle_horizontal": 0.0,
"angle_vertical": 0.0
},

View File

@@ -1,18 +1,18 @@
{
"camera_calibration": {
"reference_marker": [
1868,
1009,
2234,
1396
1068,
1017,
1070,
1019
],
"reference_marker_width": 2000.0,
"reference_marker_height": 2000.0,
"reference_marker_width": 19.333333333333332,
"reference_marker_height": 22.4,
"angle_horizontal": 0.0,
"angle_vertical": 0.0
},
"mirror_x": false,
"mirror_y": false,
"mirror_y": true,
"rotate": 0,
"roi": null,
"image_background": null,

View File

@@ -19,7 +19,7 @@
"source_type": "bsread",
"name": "SARES20-PROF141-M1",
"protocol": "tcp",
"source": "SLAAR21-LCAM-CS841",
"source": "SARES20-PROF141-M1",
"_debug": true,
"alias": [
"PROF_KB (SARES20-PROF141-M1) (SARES20-PROF141-M1)"

View File

@@ -1,19 +1,19 @@
{
"camera_calibration": {
"reference_marker": [
212,
313,
707,
807
417,
575,
428,
577
],
"reference_marker_width": 100.0,
"reference_marker_height": 100.0,
"reference_marker_width": 11.0,
"reference_marker_height": 2.0,
"angle_horizontal": 0.0,
"angle_vertical": 0.0
},
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"rotate": 3,
"roi": null,
"image_background": null,
"source_type": "bsread",

View File

@@ -13,7 +13,7 @@
},
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"rotate": 1,
"roi": null,
"image_background": null,
"source_type": "bsread",
@@ -21,7 +21,7 @@
"EXPOSURE": 9.9,
"HSSPEED": 1,
"REGIONX_START": 1,
"REGIONY_START": 500,
"REGIONY_START": 1.0,
"REGIONX_END": 2560.0,
"REGIONY_END": 2160.0,
"TRIGGER": 2,

View File

@@ -54,5 +54,18 @@
"protocol": "tcp",
"forwarder_port": 8890,
"_forwarder_port": 9090,
"no_client_timeout": 0
"no_client_timeout": 0,
"trigger_configuration": {
"server": "SGE-CPCW-73-EVR0",
"pulser": 5,
"values": {
"Evt-Trig0-SP": 14,
"Evt-Set0-SP": 0,
"Evt-Reset0-SP": 0,
"Delay-SP": 800.1,
"Width-SP": 5.0,
"SetReset-Sel.SCAN": 0
},
"SW_PULSID_SRC": 3
}
}

View File

@@ -8,7 +8,7 @@
"source_type": "epics",
"name": "SAROP10-PSETUP",
"source": "",
"Aramis camera_calib_datetime": "2025-02-12 16:57:11",
"Aramis camera_calib_datetime": "2025-04-25 12:31:53",
"Alvra camera_calib_datetime": "2024-09-26 10:16:24",
"Bernina camera_calib_datetime": "2024-09-25 15:48:01",
"Cristallina camera_calib_datetime": "2024-09-25 15:48:08"

View File

@@ -1,13 +1,13 @@
{
"camera_calibration": {
"reference_marker": [
843,
100,
1516,
1911
1096,
725,
1289,
1376
],
"reference_marker_width": 6000.0,
"reference_marker_height": 16000.0,
"reference_marker_width": 1420.0,
"reference_marker_height": 4790.0,
"angle_horizontal": 8.0,
"angle_vertical": 0.0
},

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM1",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM1",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM10",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM10",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM11",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM11",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM12",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM12",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM2",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM2",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM3",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM3",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM4",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM4",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM5",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM5",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM6",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM6",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM7",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM7",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM8",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM8",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -0,0 +1,14 @@
{
"camera_calibration": null,
"mirror_x": false,
"mirror_y": false,
"rotate": 0,
"source_type": "bsread",
"name": "SATES22-ADTEST1-CAM9",
"protocol": "tcp",
"source": "SATES22-ADTEST1-CAM9",
"_debug": true,
"group": [
"Photonics"
]
}

View File

@@ -1,5 +1,16 @@
{
"camera_calibration": null,
"camera_calibration": {
"reference_marker": [
219,
281,
316,
382
],
"reference_marker_width": 5000.0,
"reference_marker_height": 5000.0,
"angle_horizontal": 0.0,
"angle_vertical": 0.0
},
"mirror_x": true,
"mirror_y": false,
"rotate": 0,

View File

@@ -1,10 +1,10 @@
{
"camera_calibration": {
"reference_marker": [
195,
22,
1433,
1240
736,
100,
1828,
1175
],
"reference_marker_width": 5000.0,
"reference_marker_height": 5000.0,

View File

@@ -2,9 +2,9 @@
"camera_calibration": {
"reference_marker": [
64,
193,
223,
258,
415
429
],
"reference_marker_width": 500.0,
"reference_marker_height": 500.0,

View File

@@ -11,7 +11,7 @@
"angle_horizontal": 0.0,
"angle_vertical": 0.0
},
"mirror_x": false,
"mirror_x": true,
"mirror_y": false,
"rotate": 0,
"roi": null,

View File

@@ -27,10 +27,10 @@
"hardware_configuration": {
"EXPOSURE": 1.0,
"HSSPEED": 0.0,
"REGIONX_START": 1020.0,
"REGIONY_START": 840.0,
"REGIONX_END": 2810.0,
"REGIONY_END": 1180.0,
"REGIONX_START": 8.0,
"REGIONY_START": 810.0,
"REGIONX_END": 4104.0,
"REGIONY_END": 1200.0,
"TRIGGER": 1,
"TRIGGERSOURCE": 0,
"DELAY": 0.0,

View File

@@ -2,7 +2,7 @@
"camera_calibration": {
"reference_marker": [
68,
46,
64,
1655,
1594
],

View File

@@ -1,13 +1,13 @@
{
"camera_calibration": {
"reference_marker": [
55,
64,
65,
70
42,
37,
50,
44
],
"reference_marker_width": 10.0,
"reference_marker_height": 6.0,
"reference_marker_width": 8.0,
"reference_marker_height": 7.0,
"angle_horizontal": 0.0,
"angle_vertical": 0.0
},

View File

@@ -165,6 +165,7 @@
"SATOP21-PMOS127B-2D",
"SATOP31-PSRD175",
"SATOP31-PSRD132",
"#SATES22-ADTEST1-CAM1",
"SATFE10-PSRD066"
]
},

View File

@@ -0,0 +1,12 @@
{
"pipeline_type": "stream",
"name": "SARBD02-DSCR050_pref",
"input_pipeline": "SARBD02-DSCR050_sp",
"input_mode": "SUB",
"bsread_channels": [
"image"
],
"mode": "PUB",
"camera_name": "SARBD02-DSCR050",
"function": "propagate_camera_name"
}

View File

@@ -1,11 +1,16 @@
{
"camera_calibration": null,
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_region_of_interest": [
1213,
329,
576,
812
],
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"camera_name": "SARBD02-DSCR050",
"name": "SARBD02-DSCR050_sp",
"max_frame_rate": 10.1

View File

@@ -0,0 +1,12 @@
{
"pipeline_type": "stream",
"name": "SARBD02-DSCR051_pref",
"input_pipeline": "SARBD02-DSCR051_sp",
"input_mode": "SUB",
"bsread_channels": [
"image"
],
"mode": "PUB",
"camera_name": "SARBD02-DSCR051",
"function": "propagate_camera_name"
}

View File

@@ -0,0 +1,10 @@
{
"pipeline_type": "stream",
"name": "SARBD02-DSCR05x_merge",
"input_pipeline": "SARBD02-DSCR050_pref",
"input_mode": "SUB",
"input_pipeline2": "SARBD02-DSCR051_pref",
"input_mode2": "SUB",
"mode": "PUB",
"function": "propagate_stream"
}

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": "passive",
"image_background": "SARES11-SPEC125-M1_20250219_102506_385640",
"image_background": "SARES11-SPEC125-M1_20250315_152506_682314",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": "passive",
"image_background": "SARES11-SPEC125-M3_20240606_112442_775849",
"image_background": "SARES11-SPEC125-M3_20250328_104044_754691",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
@@ -15,20 +15,19 @@
0,
2048,
0,
100
250
],
"roi_signal": [
0,
2048,
0,
250
201,
450
],
"no_client_timeout": 0,
"pixel_bkg": 0,
"port": "9013",
"multiprocessing": false,
"_buffer_size": 5,
"processing_threads": 3,
"processing_threads": 0,
"thread_buffer_size": 20,
"send_buffer_size": 50,
"block": false,

View File

@@ -26,12 +26,12 @@
"down": "SARES21-PBPS141:Lnk9Ch0-PP_VAL_PD2",
"right": "SARES21-PBPS141:Lnk9Ch0-PP_VAL_PD3",
"left": "SARES21-PBPS141:Lnk9Ch0-PP_VAL_PD0",
"up_calib": 9.569377990430622e-05,
"down_calib": 9.10641980741015e-05,
"left_calib": 0.0002543379887358792,
"right_calib": 0.0001403215721404428,
"horiz_calib": -3.9446335571333027,
"vert_calib": -7.009396901398793,
"up_calib": 4.0268387189885095e-05,
"down_calib": 3.837274982195044e-05,
"left_calib": 0.00010659908000729991,
"right_calib": 5.903547370772529e-05,
"horiz_calib": -5.93887,
"vert_calib": -9.0057,
"uJ_calib": 941.943984588351,
"threshold": 0,
"queue_length": 300,
@@ -63,7 +63,7 @@
"xpos_dif_w_pvname": "SARES21-PBPS141:XPOS-DIF-HIST-W",
"ypos_dif_m_pvname": "SARES21-PBPS141:YPOS-DIF-HIST-M",
"ypos_dif_w_pvname": "SARES21-PBPS141:YPOS-DIF-HIST-W",
"port": "9013",
"port": "9018",
"calib_x_range": [
-0.3,
0.0,
@@ -94,5 +94,5 @@
0.11052246554408188,
0.11072063526778356
],
"calib_datetime": "2025-02-04 10:38:38"
"calib_datetime": "2025-04-04 15:05:51"
}

View File

@@ -26,12 +26,12 @@
"down": "SARFE10-PBPS053:Lnk9Ch0-PP_VAL_PD2",
"right": "SARFE10-PBPS053:Lnk9Ch0-PP_VAL_PD3",
"left": "SARFE10-PBPS053:Lnk9Ch0-PP_VAL_PD0",
"up_calib": 0.00013829131674353818,
"down_calib": 0.0001699166049303002,
"left_calib": 0.0005090965369217173,
"right_calib": 0.0002822696284654242,
"horiz_calib": -12610.610870857197,
"vert_calib": -5.60468323605931,
"up_calib": 8.252737102787511e-05,
"down_calib": 9.932451384623452e-05,
"left_calib": 0.0002898544003376224,
"right_calib": 0.0001714541229915864,
"horiz_calib": -3.6052981040446994,
"vert_calib": -5.712227095363798,
"uJ_calib": 834.5191797495979,
"threshold": 0,
"queue_length": 5000,
@@ -69,9 +69,9 @@
0.3
],
"calib_x_norm": [
0.0003110304161815265,
0.0008727618778698012,
0.00026345143637281765
0.08353620653149268,
0.0003093021467825846,
-0.08288553799134554
],
"calib_y_range": [
-0.3,
@@ -79,20 +79,20 @@
0.3
],
"calib_y_norm": [
0.05342287296039437,
8.477180321132363e-05,
-0.053630456323182404
0.05297838244709519,
0.00013686051846039786,
-0.052059458308041553
],
"calib_time": "2022-11-28 16:19:37",
"calib_datetime": "2025-01-29 09:27:54",
"calib_datetime": "2025-04-03 16:25:15",
"calib_x_norm_std": [
0.034715473382649,
0.03558681803923851,
0.035086184402555745
0.039097499054084266,
0.04318884492921968,
0.041594738954934915
],
"calib_y_norm_std": [
0.03742865145265283,
0.03426774362198103,
0.034107307070267115
0.047561029795043466,
0.04584223560113521,
0.04414664834114283
]
}

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": true,
"image_background": "SARFE10-PSSS059-LB_20241201_084602_840726",
"image_background": "SARFE10-PSSS059-LB_20250324_152234_841366",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,

View File

@@ -0,0 +1,26 @@
{
"name": "SARFE10-PSSS059-LB_sp_br",
"pipeline_type": "stream",
"bsread_address": "",
"bsread_channels": [
"SARFE10-PSSS059-LB:FIT-FWHM",
"SARFE10-PBPG050:FAST-PULSE-ENERGY"
],
"intensity": "SARFE10-PBPG050:FAST-PULSE-ENERGY",
"FWHM": "SARFE10-PSSS059-LB:FIT-FWHM",
"out_PV": "SARFE10-PSSS059-LB:FIT-BRT",
"mode": "PUB",
"allow_type_changes": false,
"abort_on_timeout": true,
"abort_on_error": true,
"debug": true,
"block": false,
"enforce_pid": true,
"enforce_timestamp": true,
"check_timestamp": true,
"stream_timeout": 20,
"function": "spectral_brightness.py",
"reload": true,
"no_client_timeout": 0,
"port": "9017"
}

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": true,
"image_background": "SARFE10-PSSS059_20240311_140723_555248",
"image_background": "SARFE10-PSSS059_20250317_121206_294441",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
@@ -8,7 +8,7 @@
"pipeline_type": "processing",
"camera_name": "SARFE10-PSSS059",
"name": "SARFE10-PSSS059_psss",
"function": "psss_2.py",
"function": "swissfel_spectral_processing.py",
"mode": "PUSH",
"allow_type_changes": false,
"no_client_timeout": 0,

View File

@@ -26,12 +26,12 @@
"down": "SAROP11-PBPS110:Lnk9Ch0-PP_VAL_PD2",
"right": "SAROP11-PBPS110:Lnk9Ch0-PP_VAL_PD3",
"left": "SAROP11-PBPS110:Lnk9Ch0-PP_VAL_PD0",
"up_calib": 9.737862278566756e-07,
"down_calib": 9.353619683200535e-07,
"left_calib": 1.0309994225495954e-06,
"right_calib": 1.0803571833705372e-06,
"horiz_calib": -3.815574774066874,
"vert_calib": -4.765031357737654,
"up_calib": 4.098127129673725e-06,
"down_calib": 4.259138962245459e-06,
"left_calib": 2.183005012581182e-06,
"right_calib": 2.4378049645254522e-06,
"horiz_calib": -4.665452678775223,
"vert_calib": -4.471600564729387,
"uJ_calib": 605.4608924473305,
"threshold": 0,
"queue_length": 1000,
@@ -69,9 +69,9 @@
0.3
],
"calib_x_norm": [
0.07875594604296668,
0.0007371884210029649,
-0.0784942811254248
0.06458675818610864,
0.00033689669329196073,
-0.06401812569356503
],
"calib_y_range": [
-0.3,
@@ -79,19 +79,19 @@
0.3
],
"calib_y_norm": [
0.06412401332876447,
8.368823342154213e-05,
-0.0617933112289628
0.06705606264028884,
-0.00046031410996389923,
-0.0671240796408925
],
"calib_datetime": "2025-02-18 12:35:39",
"calib_datetime": "2025-03-13 13:56:21",
"calib_x_norm_std": [
0.04337406366054226,
0.04308021833976918,
0.03941977018047361
0.09075244320195952,
0.0877275386080403,
0.0905045199152049
],
"calib_y_norm_std": [
0.04206756807633558,
0.0433518072679861,
0.040856758898731346
0.09006310930261463,
0.09317196133148388,
0.09861810436291076
]
}

View File

@@ -27,12 +27,12 @@
"down": "SAROP11-PBPS122:Lnk9Ch0-PP_VAL_PD2",
"right": "SAROP11-PBPS122:Lnk9Ch0-PP_VAL_PD3",
"left": "SAROP11-PBPS122:Lnk9Ch0-PP_VAL_PD0",
"up_calib": 6.101323855488045e-06,
"down_calib": 7.654460272371415e-06,
"left_calib": 3.668981334042787e-06,
"right_calib": 3.355588491029438e-06,
"horiz_calib": -4.619094947499179,
"vert_calib": -4.245916121265708,
"up_calib": 1.893276460318213e-05,
"down_calib": 2.3306024887105614e-05,
"left_calib": 8.257188295270447e-06,
"right_calib": 8.277311386229812e-06,
"horiz_calib": -5.297540191258623,
"vert_calib": -6.29549683664401,
"uJ_calib": 605.9512700123181,
"threshold": 0,
"queue_length": 1000,
@@ -70,14 +70,14 @@
0.3
],
"calib_x_norm": [
0.06665873277683025,
0.0007229623165680056,
-0.06323684348207421
0.056699918319259426,
-6.414005929787459e-05,
-0.05656019455162533
],
"calib_x_norm_std": [
0.07600711950147099,
0.07532881833515205,
0.07635620007810899
0.09941735065928761,
0.09644142804120188,
0.09652404146483615
],
"calib_y_range": [
-0.3,
@@ -85,14 +85,14 @@
0.3
],
"calib_y_norm": [
0.07117396482192535,
-3.0390768441330145e-05,
-0.07013829450295737
0.04720895487460161,
7.316327567623546e-05,
-0.04809726408934068
],
"calib_y_norm_std": [
0.0772216925343307,
0.07719104433527772,
0.0797284532174974
0.09985294158981244,
0.10707615783473319,
0.09659571295757036
],
"calib_datetime": "2025-02-18 20:43:22"
"calib_datetime": "2025-03-13 14:11:39"
}

View File

@@ -29,9 +29,9 @@
"reload": true,
"dark_buffer_length": 3,
"calibration": [
-7.19417023e-19,
-2.11969293e-16,
1.27745934e-12
-7.09793884e-19,
-2.19408437e-16,
1.2869905e-12
],
"roi": [
600,
@@ -39,7 +39,7 @@
],
"dpx_poly": 50,
"sigma_px": 30,
"reflen": 300,
"reflen": 200,
"window": false,
"is_laser_delayed": 1,
"is_laser_dark": 0,

View File

@@ -10,19 +10,19 @@
"check_timestamp": true,
"stream_timeout": 20,
"queue_length": 5000,
"down_calib": 5.5271338052768646e-05,
"down_calib": 3.4441678486821112e-06,
"xpos_odd_w_pvname": "SAROP21-PBPS103:XPOS-ODD-HIST-W",
"ypos_all_y_pvname": "SAROP21-PBPS103:YPOS-ALL-HIST-Y",
"ypos_all_w_pvname": "SAROP21-PBPS103:YPOS-ALL-HIST-W",
"name": "SAROP21-PBPS103_proc",
"vert_calib": -3.9807417215664214,
"vert_calib": -7.857205929014205,
"bsread_address": "",
"right": "SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD3",
"ypos_dif_w_pvname": "SAROP21-PBPS103:YPOS-DIF-HIST-W",
"ypos_odd_x_pvname": "SAROP21-PBPS103:YPOS-ODD-HIST-X",
"function": "pbps_full",
"port": "9009",
"left_calib": 3.604824697374967e-05,
"left_calib": 7.724151636342986e-06,
"down": "SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD2",
"ypos_odd_w_pvname": "SAROP21-PBPS103:YPOS-ODD-HIST-W",
"xpos_odd_y_pvname": "SAROP21-PBPS103:XPOS-ODD-HIST-Y",
@@ -32,7 +32,7 @@
"ypos_evn_x_pvname": "SAROP21-PBPS103:YPOS-EVN-HIST-X",
"uJ_calib": 605.9512700123181,
"xpos_evn_m_pvname": "SAROP21-PBPS103:XPOS-EVN-HIST-M",
"horiz_calib": -4.175061763210314,
"horiz_calib": -5.034588377303698,
"ypos_all_m_pvname": "SAROP21-PBPS103:YPOS-ALL-HIST-M",
"ypos_dif_m_pvname": "SAROP21-PBPS103:YPOS-DIF-HIST-M",
"bsread_channels": [
@@ -45,7 +45,7 @@
"ypos_evn_w_pvname": "SAROP21-PBPS103:YPOS-EVN-HIST-W",
"pipeline_type": "stream",
"ypos_all_x_pvname": "SAROP21-PBPS103:YPOS-ALL-HIST-X",
"right_calib": 4.0304963475642095e-05,
"right_calib": 8.358613122862118e-06,
"xpos_all_m_pvname": "SAROP21-PBPS103:XPOS-ALL-HIST-M",
"xpos_odd_m_pvname": "SAROP21-PBPS103:XPOS-ODD-HIST-M",
"left": "SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD0",
@@ -58,7 +58,7 @@
"ypos_evn_y_pvname": "SAROP21-PBPS103:YPOS-EVN-HIST-Y",
"xpos_odd_x_pvname": "SAROP21-PBPS103:XPOS-ODD-HIST-X",
"threshold": 0,
"up_calib": 5.3001316128682113e-05,
"up_calib": 3.381429158599253e-06,
"ypos_odd_m_pvname": "SAROP21-PBPS103:YPOS-ODD-HIST-M",
"xpos_all_x_pvname": "SAROP21-PBPS103:XPOS-ALL-HIST-X",
"up": "SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD1",
@@ -69,9 +69,9 @@
0.3
],
"calib_x_norm": [
0.07157285036301936,
0.0009591804161706151,
-0.07213759849478253
0.06233292421608874,
0.002018002684269913,
-0.05684265778478445
],
"calib_y_range": [
-0.3,
@@ -79,19 +79,19 @@
0.3
],
"calib_y_norm": [
0.0759725283653206,
4.616029717240383e-05,
-0.07475315090931972
0.03833798078739985,
0.0010236985633388389,
-0.03802504258511831
],
"calib_x_norm_std": [
0.4145522693878684,
0.4202877333619035,
0.41456184063790813
0.6418256445167525,
0.6759359880444116,
0.6554307724365318
],
"calib_y_norm_std": [
0.4247025133722662,
0.4190715808241909,
0.43243973416781073
0.6584007080383298,
0.6436547013306737,
0.6454721642147889
],
"calib_datetime": "2025-02-04 07:43:18"
"calib_datetime": "2025-04-04 10:40:33"
}

View File

@@ -27,12 +27,12 @@
"down": "SAROP21-PBPS133:Lnk9Ch0-PP_VAL_PD2",
"right": "SAROP21-PBPS133:Lnk9Ch0-PP_VAL_PD3",
"left": "SAROP21-PBPS133:Lnk9Ch0-PP_VAL_PD0",
"up_calib": 5.838256930010976e-05,
"down_calib": 5.656226328692814e-05,
"left_calib": 4.251148320184248e-05,
"right_calib": 4.290746473178029e-05,
"horiz_calib": -3.9629162576225854,
"vert_calib": -4.00319424718054,
"up_calib": 5.349312228228193e-05,
"down_calib": 5.145953654306361e-05,
"left_calib": 3.964746111932078e-05,
"right_calib": 3.9392026612622904e-05,
"horiz_calib": -4.027132099327991,
"vert_calib": -4.3256874948249155,
"uJ_calib": 605.4608924473305,
"threshold": 0,
"queue_length": 3000,
@@ -70,14 +70,14 @@
0.3
],
"calib_x_norm": [
0.07453998597401498,
-0.0008795250165549497,
-0.07686366754652377
0.07523729980148029,
0.00020716758487356637,
-0.07375210139052979
],
"calib_x_norm_std": [
0.4381208675777489,
0.4347076184147021,
0.42503328441644145
0.3755149062751643,
0.3786561572290592,
0.3748798320928806
],
"calib_y_range": [
-0.3,
@@ -85,14 +85,14 @@
0.3
],
"calib_y_norm": [
0.07326631259404506,
-0.002640333146191335,
-0.07661399871550019
0.0699176899290634,
-0.00030959523730942853,
-0.06878858525096673
],
"calib_y_norm_std": [
0.4356863724043072,
0.45144610429008286,
0.45181625007528115
0.37846861570249735,
0.38072721857616276,
0.3832545225535354
],
"calib_datetime": "2025-02-04 07:40:27"
"calib_datetime": "2025-04-04 10:39:32"
}

View File

@@ -26,12 +26,12 @@
"down": "SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD2",
"right": "SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD3",
"left": "SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD0",
"up_calib": 2.0663001325738166e-05,
"down_calib": 2.402537694855417e-05,
"left_calib": 5.218152156307452e-05,
"right_calib": 5.834052477535398e-05,
"horiz_calib": -3.771327659699711,
"vert_calib": -6.08541597358778,
"up_calib": 5.059538606264929e-07,
"down_calib": 5.64927448333758e-07,
"left_calib": 1.125846743706708e-06,
"right_calib": 1.3457517438143435e-06,
"horiz_calib": -4.719752799047021,
"vert_calib": -7.115673207163331,
"uJ_calib": 941.943984588351,
"threshold": 0,
"queue_length": 300,
@@ -70,14 +70,14 @@
0.3
],
"calib_x_norm": [
0.0802116924027993,
0.0005143083175209187,
-0.07888347358120712
0.06422228966212074,
-0.0003177089811439902,
-0.06290301234970237
],
"calib_x_norm_std": [
0.03360835426368963,
0.038265082191697865,
0.03675609144464779
0.05497993675328227,
0.05722297512373116,
0.05244845040249846
],
"calib_y_range": [
-0.3,
@@ -85,14 +85,14 @@
0.3
],
"calib_y_norm": [
0.0511850204634102,
0.00046261783581242737,
-0.04741136187169216
0.04291975949563341,
-0.0002750343024646076,
-0.04140114487023621
],
"calib_y_norm_std": [
0.03575638783183132,
0.03605698374111028,
0.038302105512007384
0.05799243003721293,
0.05228267176725063,
0.057094675167291845
],
"calib_datetime": "2025-02-05 10:23:15"
"calib_datetime": "2025-04-03 19:26:20"
}

View File

@@ -27,12 +27,12 @@
"down": "SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD2",
"right": "SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD3",
"left": "SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD0",
"up_calib": 1.6851641518400307e-05,
"down_calib": 1.731276521425032e-05,
"left_calib": 3.5225258482946746e-05,
"right_calib": 5.32543294704773e-05,
"horiz_calib": -3.7083644088588854,
"vert_calib": -6.385756369199804,
"up_calib": 5.520345954869785e-07,
"down_calib": 5.619057169946393e-07,
"left_calib": 1.0781825161854172e-06,
"right_calib": 1.7591006509263466e-06,
"horiz_calib": -2.951379555975132,
"vert_calib": -5.5751155038433415,
"uJ_calib": 605.9512700123181,
"threshold": 0.0,
"queue_length": 300,
@@ -71,14 +71,14 @@
0.3
],
"calib_x_norm": [
0.08330142517421746,
0.0005900059046785689,
-0.07849497179439337
0.11031392780555577,
0.000928620923623025,
-0.09298083270238598
],
"calib_x_norm_std": [
0.04214173720839463,
0.04071682040666387,
0.03921332842278094
0.06272526898974226,
0.06648517579759342,
0.05664085326165932
],
"calib_y_range": [
-0.3,
@@ -86,14 +86,14 @@
0.3
],
"calib_y_norm": [
0.04703494881570425,
-0.00033516601182954854,
-0.04692416351340982
0.053727058023198666,
-3.663064961326165e-05,
-0.053894030649560734
],
"calib_y_norm_std": [
0.04079830358928786,
0.04217188377789602,
0.03974387367182228
0.061694021446861605,
0.06711504500830567,
0.06812822215629918
],
"calib_datetime": "2025-02-05 10:24:47"
"calib_datetime": "2025-04-03 19:27:23"
}

View File

@@ -2,16 +2,8 @@
"image_background_enable": false,
"image_background": "SATBD02-DSCR050_20250217_170917_808358",
"image_threshold": null,
"image_region_of_interest": [
495,
1573,
90,
1964
],
"image_good_region": {
"threshold": 0.1,
"gfscale": 9.0
},
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"camera_name": "SATBD02-DSCR050",

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": "passive",
"image_background": "SATES21-CAMS-PATT1_20250219_141109_108477",
"image_background": "SATES21-CAMS-PATT1_20250401_153642_380292",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
@@ -20,16 +20,16 @@
"project_axis": 0,
"reload": true,
"roi_background": [
466,
752,
91,
2356
106,
935,
0,
2435
],
"roi_signal": [
178,
474,
91,
2356
106,
935,
0,
2435
],
"enforce_pid": true,
"enforce_timestamp": true,

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM10_proc",
"camera_name": "SATES22-ADTEST1-CAM10",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM11_proc",
"camera_name": "SATES22-ADTEST1-CAM11",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM12_proc",
"camera_name": "SATES22-ADTEST1-CAM12",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM1_proc",
"camera_name": "SATES22-ADTEST1-CAM1",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,12 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"camera_name": "SATES22-ADTEST1-CAM1",
"name": "SATES22-ADTEST1-CAM1_sp",
"max_frame_rate": 5.1
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM2_proc",
"camera_name": "SATES22-ADTEST1-CAM2",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM3_proc",
"camera_name": "SATES22-ADTEST1-CAM3",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM4_proc",
"camera_name": "SATES22-ADTEST1-CAM4",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM5_proc",
"camera_name": "SATES22-ADTEST1-CAM5",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM6_proc",
"camera_name": "SATES22-ADTEST1-CAM6",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM7_proc",
"camera_name": "SATES22-ADTEST1-CAM7",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM8_proc",
"camera_name": "SATES22-ADTEST1-CAM8",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -0,0 +1,16 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"name": "SATES22-ADTEST1-CAM9_proc",
"camera_name": "SATES22-ADTEST1-CAM9",
"function": "Laser_Quick_Int.py",
"mode": "PUSH",
"allow_type_changes": false,
"block": false,
"reload": true
}

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": true,
"image_background": "SATES30-RIXS-CAM01_20241214_181504_911351",
"image_background": "SATES30-RIXS-CAM01_20250325_105110_535588",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
@@ -12,7 +12,7 @@
"mode": "PUB",
"allow_type_changes": false,
"block": false,
"threshold": 120.0,
"threshold": 100.0,
"threshold_file": "",
"_max_frame_rate": 5.1,
"libs": "",

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": false,
"image_background": "SATES31-CAMS187-RIXS1_20240529_115656_199325",
"image_background": "SATES31-CAMS187-RIXS1_20250222_100737_996974",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,

View File

@@ -1,6 +1,10 @@
{
"image_background_enable": false,
"image_background": "SATOP11-PSAS079_20241208_143639_046414",
"image_background": "SATOP11-PSAS079_20250310_115010_052716",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"camera_name": "SATOP11-PSAS079",
"name": "SATOP11-PSAS079_psas",
@@ -13,7 +17,7 @@
"processing_threads": 6,
"thread_buffer_size": 30,
"abort_on_error": false,
"pixel_bkg": 1,
"pixel_bkg": 0,
"abort_on_timeout": true,
"debug": true,
"block": false,

View File

@@ -7,5 +7,6 @@
"image_slices": null,
"pipeline_type": "processing",
"camera_name": "SATOP21-PMOS127-2D",
"name": "SATOP21-PMOS127-2D_sp"
"name": "SATOP21-PMOS127-2D_sp",
"max_frame_rate": 3.1
}

View File

@@ -31,6 +31,10 @@
0.34,
0
],
"roi": [
600,
2000
],
"step_length": 150,
"edge_type": "rising",
"refinement": 1,
@@ -38,10 +42,14 @@
"dark_event": 154,
"fel_on_event": 76,
"use_dark": true,
"global_stage": "SLAAT01-LSCP-DRS1FNS:CH2:BSTART",
"feedback_buffer": 5000,
"feedback_deadband": 250,
"feedback_step": 0.1,
"feedback": {
"global_stage": "SLAAT31-LMOT-M816:MOT",
"feedback_output": "SLAAT01-LSCP-DRS1FNS:CH2:BSTART",
"feedback_buffer": 200,
"feedback_deadband": 50,
"feedback_target": 1450,
"feedback_step": 0.01
},
"filter_window": 101,
"filter": true
}

View File

@@ -1,6 +1,6 @@
{
"image_background_enable": true,
"image_background": "SATOP31-PMOS132-2D_20250216_112111_000879",
"image_background": "SATOP31-PMOS132-2D_20250311_183617_282213",
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,

View File

@@ -0,0 +1,11 @@
{
"image_background_enable": false,
"image_background": null,
"image_threshold": null,
"image_region_of_interest": null,
"image_good_region": null,
"image_slices": null,
"pipeline_type": "processing",
"camera_name": "X08DB-FE-CAM1",
"name": "X08DB-FE-CAM1_sp"
}

View File

@@ -3,7 +3,7 @@
"name": "jfj-cristall_db",
"mode": "PUSH",
"function": "propagate_with_prefix.py",
"prefix": "JFJ-CRISTALL:",
"prefix": "JF17T16V01j:",
"_input_pipeline": "jfj-cristall_db",
"input_stream": "tcp://sf-daqsync-18.psi.ch:9050",
"input_mode": "SUB",

View File

@@ -1,9 +1,9 @@
{
"#Bernina_tt_kb_restart_cam": "Bernina_tt_kb_restart_cam",
"#S10BC02-DSRM310_profiles": "S10BC02-DSRM310_profiles",
"#SARES11-SPEC125-M1_psen_db": "SARES11-SPEC125-M1_psen_db",
"#SARES11-SPEC125-M1_test": "SARES11-SPEC125-M1_test",
"#SARES11-SPEC125-M3_sp": "SARES11-SPEC125-M3_sp",
"#SARES11-SPEC125-M3_spec_db": "SARES11-SPEC125-M3_spec_db",
"#SARES11-XMI125-C4P1_db": "SARES11-XMI125-C4P1_db",
"#SARES11-XMI125-C4P1_xy_db": "SARES11-XMI125-C4P1_xy_db",
"#SARES12-CAMS128-M1_psen_db": "SARES12-CAMS128-M1_psen_db",
@@ -16,7 +16,6 @@
"#SAROP11-PPRM122_sp": "SAROP11-PPRM122_sp",
"#SAROP21-ATT01PD_proc": "SAROP21-ATT01PD_proc",
"#SAROP21-PPRM102_proc": "SAROP21-PPRM102_proc",
"#SAROP31-PPRM113_proc": "SAROP31-PPRM113_proc",
"#SATBD02-DSCR050_db": "SATBD02-DSCR050_db",
"#SATES21-ADTEST1-CAM1_proc": "SATES21-ADTEST1-CAM1_proc",
"#SATES21-ADTEST1-CAM1_sp": "SATES21-ADTEST1-CAM1_sp",
@@ -34,6 +33,7 @@
"#SATES21-CAMS154-GIGE4_proc": "SATES21-CAMS154-GIGE4_proc",
"#SATES21-CAMS154-GIGE5_proc": "SATES21-CAMS154-GIGE5_proc",
"#SATES21-CAMS154-GIGE6_proc": "SATES21-CAMS154-GIGE6_proc",
"#SATES22-ADTEST1-CAM1_sp": "SATES22-ADTEST1-CAM1_sp",
"#SATES30-CAMS182-GIGE2_profiles": "SATES30-CAMS182-GIGE2_profiles",
"#SATES30-RIXS-CAM01_sp": "SATES30-RIXS-CAM01_sp",
"#SATMA02_calib": "SATMA02_calib",
@@ -59,9 +59,14 @@
"Bernina_tt_kb_populate_pvs": "Bernina_tt_kb_populate_pvs",
"S10BD01-DSCR030_profiles": "S10BD01-DSCR030_profiles",
"SARBD01-DSCR110_sp1": "SARBD01-DSCR110_sp_rep",
"SARBD02-DSCR050_pref": "SARBD02-DSCR050_pref",
"SARBD02-DSCR050_sp": "SARBD02-DSCR050_sp",
"SARBD02-DSCR051_pref": "SARBD02-DSCR051_pref",
"SARBD02-DSCR051_sp": "SARBD02-DSCR051_sp",
"SARBD02-DSCR05x_merge": "SARBD02-DSCR05x_merge",
"SARCL01-DSCR170_profiles": "SARCL01-DSCR170_profiles",
"SARES11-SPEC125-M1_psen_db": "SARES11-SPEC125-M1_psen_db",
"SARES11-SPEC125-M2_db": "SARES11-SPEC125-M2_db",
"SARES11-SPEC125-M3_spec_db": "SARES11-SPEC125-M3_spec_db",
"SARES20-CAMS142-M3_proc": "SARES20-CAMS142-M3_proc",
"SARES20-CAMS142-M4_psen_db": "SARES20-CAMS142-M4_psen_db",
"SARES20-CAMS142-M5_psen_db": "SARES20-CAMS142-M5_psen_db",
@@ -74,6 +79,7 @@
"SARFE10-PBPS053_proc": "SARFE10-PBPS053_proc",
"SARFE10-PPRM064_proc": "SARFE10-PPRM064_proc",
"SARFE10-PSSS059-LB_psss": "SARFE10-PSSS059-LB_psss",
"SARFE10-PSSS059-LB_sp_br": "SARFE10-PSSS059-LB_sp_br",
"SARFE10-PSSS059_psss": "SARFE10-PSSS059_psss",
"SARFE10-PSSS059_sp_br": "SARFE10-PSSS059_sp_br",
"SAROP11-PBPS110_proc": "SAROP11-PBPS110_proc",
@@ -87,6 +93,7 @@
"SAROP21-PPRM138_proc": "SAROP21-PPRM138_proc",
"SAROP31-PBPS113_proc": "SAROP31-PBPS113_proc",
"SAROP31-PBPS149_proc": "SAROP31-PBPS149_proc",
"SAROP31-PPRM113_proc": "SAROP31-PPRM113_proc",
"SAROP31-PPRM150_proc": "SAROP31-PPRM150_proc",
"SATBD02-DSCR050_sp": "SATBD02-DSCR050_sp",
"SATBD02-DSCR050_sp1": "SATBD02-DSCR050_sp_rep",
@@ -94,6 +101,18 @@
"SATES21-CAMS154-GIGE9_proc": "SATES21-CAMS154-GIGE9_proc",
"SATES21-CAMS154-M1_spec_db": "SATES21-CAMS154-M1_spec_db",
"SATES21-CAMS154-M2_proc": "SATES21-CAMS154-M2_proc",
"SATES22-ADTEST1-CAM10_proc": "SATES22-ADTEST1-CAM10_proc",
"SATES22-ADTEST1-CAM11_proc": "SATES22-ADTEST1-CAM11_proc",
"SATES22-ADTEST1-CAM12_proc": "SATES22-ADTEST1-CAM12_proc",
"SATES22-ADTEST1-CAM1_proc": "SATES22-ADTEST1-CAM1_proc",
"SATES22-ADTEST1-CAM2_proc": "SATES22-ADTEST1-CAM2_proc",
"SATES22-ADTEST1-CAM3_proc": "SATES22-ADTEST1-CAM3_proc",
"SATES22-ADTEST1-CAM4_proc": "SATES22-ADTEST1-CAM4_proc",
"SATES22-ADTEST1-CAM5_proc": "SATES22-ADTEST1-CAM5_proc",
"SATES22-ADTEST1-CAM6_proc": "SATES22-ADTEST1-CAM6_proc",
"SATES22-ADTEST1-CAM7_proc": "SATES22-ADTEST1-CAM7_proc",
"SATES22-ADTEST1-CAM8_proc": "SATES22-ADTEST1-CAM8_proc",
"SATES22-ADTEST1-CAM9_proc": "SATES22-ADTEST1-CAM9_proc",
"SATES24-CAMS161-M1_spec_db": "SATES24-CAMS161-M1_spec_db",
"SATES30-CAMS182-GIGE1_profiles": "SATES30-CAMS182-GIGE1_profiles",
"SATES30-RIXS-CAM01_fit": "SATES30-RIXS-CAM01_fit",

View File

@@ -42,6 +42,7 @@
"SAROP11-PBPS122_proc:9010",
"SAROP31-PBPS113_proc:9013",
"SARFE10-PSSS059_sp_br:9005",
"SARFE10-PSSS059-LB_sp_br:9017",
"SAROP31-PBPS149_proc:9011",
"SAROP11-ATT01_proc:9016",
"SAROP21-PBPS133_proc:9008",
@@ -90,12 +91,12 @@
"SATBD01-DSCR120",
"SATBD01-DSCR210",
"SATBD02-DSCR050",
"SARBD02-DSCR050",
"SLG-LCAM-C103",
"SLG-LCAM-C111",
"SLG-LCAM-C071",
"SARBD01-DSCR050",
"SARBD02-DSCR050"
"SARBD02-DSCR050",
"SARBD02-DSCR051"
],
"enabled": true,
"expanding": false,
@@ -118,7 +119,10 @@
"SLG-LCAM-C103_proc:9006",
"SLG-LCAM-C111_proc:9008",
"SLG-LCAM-C071_proc:9009",
"test_merge_disp_sp:9007"
"test_merge_disp_sp:9007",
"SARBD02-DSCR051_pref",
"SARBD02-DSCR050_pref",
"SARBD02-DSCR05x_merge"
]
},
"http://sf-daqsync-11.psi.ch:8881": {
@@ -194,7 +198,7 @@
"expanding": false,
"instances": [
"#SAROP11-PBPS122_proc:9010",
"SARES11-SPEC125-M1_psen_db:9001",
"#SARES11-SPEC125-M1_psen_db:9001",
"#SARES11-SPEC125-M1_test:9009",
"#SARES11-SPEC125-M2_psen_db:9011",
"#SARES12-CAMS128-M1_psen_db:9003",
@@ -202,7 +206,7 @@
"#SARES11-SPEC125-M2_pp_db",
"SARES11-SPEC125-M2_db:9011",
"#SARES11-SPEC125-M3_sp",
"#SARES11-SPEC125-M3_spec_db",
"SARES11-SPEC125-M3_spec_db:9014",
"SAROP11-PPRM122_sp",
"SAROP11-PPRM122_proc:9012",
"SAROP11-PPRM110_proc:9013",
@@ -318,7 +322,19 @@
"cameras": [
"SATOP31-PMOS132-2D",
"SATOP21-PMOS127-2D",
"SATOP11-PSAS079"
"SATOP11-PSAS079",
"SATES22-ADTEST1-CAM1",
"SATES22-ADTEST1-CAM2",
"SATES22-ADTEST1-CAM3",
"SATES22-ADTEST1-CAM4",
"SATES22-ADTEST1-CAM5",
"SATES22-ADTEST1-CAM6",
"SATES22-ADTEST1-CAM7",
"SATES22-ADTEST1-CAM8",
"SATES22-ADTEST1-CAM9",
"SATES22-ADTEST1-CAM10",
"SATES22-ADTEST1-CAM11",
"SATES22-ADTEST1-CAM12"
],
"enabled": true,
"expanding": false,
@@ -333,7 +349,19 @@
"SATES21-ADTEST1-CAM2_proc:9072",
"SATES21-ADTEST1-CAM3_proc:9073",
"SATES21-ADTEST1-CAM4_proc:9074",
"SATES21-ADTEST1-CAM5_proc:9075"
"SATES21-ADTEST1-CAM5_proc:9075",
"SATES22-ADTEST1-CAM1_proc",
"SATES22-ADTEST1-CAM2_proc",
"SATES22-ADTEST1-CAM3_proc",
"SATES22-ADTEST1-CAM4_proc",
"SATES22-ADTEST1-CAM5_proc",
"SATES22-ADTEST1-CAM6_proc",
"SATES22-ADTEST1-CAM7_proc",
"SATES22-ADTEST1-CAM8_proc",
"SATES22-ADTEST1-CAM9_proc",
"SATES22-ADTEST1-CAM10_proc",
"SATES22-ADTEST1-CAM11_proc",
"SATES22-ADTEST1-CAM12_proc"
]
},
"http://sf-daqsync-18.psi.ch:8881": {

View File

@@ -11,8 +11,8 @@ import numpy as np
_logger = getLogger(__name__)
# Alvra spectral encoder constants/waveforms
px2fs = 2.125 # 2.35 calibration from 2023-06-22
px2fs2 = 2.1 # 2.34 calibration from 2023-06-22
px2fs = 2.31 #2.125 # 2.35 calibration from 2023-06-22
px2fs2 = 1.77 #2.1 # 2.34 calibration from 2023-06-22
lambdas = np.linspace(504.17385, 608.07410, num=2048) # calibration from 2023-04-25
#lambdas = 528.34 + 0.0261*np.arange(0,2048) # calibration from 2021-10-06
#lambdas = np.linspace(510.57796, 628.63459, num=2048) # calibration from 2022-05-18
@@ -79,7 +79,7 @@ def edge(filter_name, backgrounds, signals, peakback):
sig_deriv -= peakback
sig_deriv *= signal.tukey(2048) # just added Nov 20 2024
#peak_pos = 1024 - (np.argmax(sig_deriv[500:1500], axis=-1) + 500)
peak_pos = 1024 - (np.argmax(sig_deriv[400:1600], axis=-1) + 400)
peak_pos = 800 - (np.argmax(sig_deriv[400:1600], axis=-1) + 400) # I am grossed out
peak_amp = np.amax(sig_deriv[400:1600], axis=-1)
return peak_pos, peak_amp, sig_deriv, sig_uninterp

View File

@@ -13,16 +13,17 @@ def get_roi_projection(image, roi, axis):
return project.astype("int64")
def process_image(image, pulse_id, timestamp, x_axis, y_axis, parameters, bsdata=None):
camera_name = parameters.get("camera_name")
#return {camera_name + ".test": 1.0}
image = image.astype(int)
roi_signal = parameters.get("roi_signal")
roi_background = parameters.get("roi_background")
camera_name = parameters.get("camera_name")
roi_background = parameters.get("roi_background")
project_axis = parameters.get("project_axis", 0)
dark = parameters.get("background_data")
dark = dark.astype(int)
spectrum = get_roi_projection(image, roi_signal, project_axis)
background = get_roi_projection(dark, roi_signal, project_axis)
background = get_roi_projection(dark, roi_background, project_axis)
spectrum -= background

View File

@@ -20,22 +20,37 @@ def initialize(params):
initialized = True
def find_edge(data, step_length=50, edge_type="falling"):
# prepare a step function and refine it
def find_edge(data, step_length=50, edge_type="falling", roi=None):
"""
Find an edge in the given data using cross-correlation with a step waveform.
If a region-of-interest (roi) is provided as [start, end], the search is limited
to that slice of the data and the resulting edge position is offset appropriately.
"""
# If ROI is provided, slice the data accordingly.
if roi is not None:
data_roi = data[roi[0]:roi[1]]
else:
data_roi = data
# Prepare the step function.
step_waveform = np.ones(shape=(step_length,))
if edge_type == "rising":
step_waveform[: int(step_length / 2)] = -1
elif edge_type == "falling":
step_waveform[int(step_length / 2) :] = -1
step_waveform[int(step_length / 2):] = -1
# find edges
xcorr = signal.correlate(data, step_waveform, mode="valid")
# Perform cross-correlation on the (possibly sliced) data.
xcorr = signal.correlate(data_roi, step_waveform, mode="valid")
edge_position = np.argmax(xcorr)
xcorr_amplitude = np.amax(xcorr)
# correct edge_position for step_length
# Correct edge_position for step_length.
edge_position += np.floor(step_length / 2)
# If ROI is provided, add the offset to get the position in the full signal.
if roi is not None:
edge_position += roi[0]
return {
"edge_pos": edge_position,
"xcorr": xcorr,
@@ -71,7 +86,8 @@ def process(data, pulse_id, timestamp, params):
prof_sig_norm = prof_sig_savgol
if events[fel_on_event] and not events[dark_event]:
edge_results = find_edge(prof_sig_norm, step_length, edge_type)
# Limit the edge search to the region-of-interest provided in params.
edge_results = find_edge(prof_sig_norm, step_length, edge_type, roi=params.get("roi"))
edge_results["arrival_time"] = np.polyval(calib, edge_results["edge_pos"])
else:
edge_results = {
@@ -82,7 +98,7 @@ def process(data, pulse_id, timestamp, params):
}
edge_results["arrival_time"] = None
# Set bs outputs
# Set beam-synchronization outputs.
output = {}
for key, value in edge_results.items():
output[f"{device}:{key}"] = value
@@ -90,24 +106,9 @@ def process(data, pulse_id, timestamp, params):
output[f"{device}:raw_wf"] = prof_sig
output[f"{device}:raw_wf_savgol"] = prof_sig_savgol
# if events[dark_event]:
# output[f"{device}:dark_wf"] = prof_sig
# output[f"{device}:dark_wf_savgol"] = prof_sig_savgol
# else:
# output[f"{device}:dark_wf"] = None
# output[f"{device}:dark_wf_savgol"] = None
if buffer_dark:
output[f"{device}:avg_dark_wf"] = np.mean(buffer_dark, axis=0)
else:
#output[f"{device}:avg_dark_wf"] = np.zeros_like(prof_sig)
#Changed By Gobbo to avoid type errors
output[f"{device}:avg_dark_wf"] = None # np.zeros_like(prof_sig)
output[f"{device}:avg_dark_wf"] = None
# if buffer_savgol:
# output[f"{device}:avg_dark_wf_savgol"] = np.mean(buffer_savgol, axis=0)
# else:
# output[f"{device}:avg_dark_wf_savgol"] = None
return output
return output

View File

@@ -0,0 +1,10 @@
from logging import getLogger
def process(data, pulse_id, timestamp, params):
ret = dict()
prefix = params["camera_name"]
for c in data.keys():
ret[prefix+c] = data[c]
return ret

View File

@@ -0,0 +1,234 @@
from logging import getLogger
from cam_server.pipeline.data_processing import functions
from cam_server.utils import create_thread_pvs, epics_lock
from collections import deque
import json
import numpy as np
import scipy.signal
import numba
import time
import sys
from threading import Thread
# Configure Numba to use multiple threads
numba.set_num_threads(4)
_logger = getLogger(__name__)
# Shared state globals
global_roi = [0, 0]
initialized = False
sent_pid = -1
buffer = deque(maxlen=5)
channel_pv_names = None
base_pv_names = []
all_pv_names = []
global_ravg_length = 100
ravg_buffers = {}
@numba.njit(parallel=False)
def get_spectrum(image, background):
"""Compute background-subtracted spectrum via row-wise summation."""
y, x = image.shape
profile = np.zeros(x, dtype=np.float64)
for i in numba.prange(y):
for j in range(x):
profile[j] += image[i, j] - background[i, j]
return profile
def update_PVs(buffer, *pv_names):
"""Continuously read from buffer and write to EPICS PVs."""
pvs = create_thread_pvs(list(pv_names))
while True:
time.sleep(0.1)
try:
rec = buffer.popleft()
except IndexError:
continue
try:
for pv, val in zip(pvs, rec):
if pv and pv.connected and (val is not None):
pv.put(val)
except Exception:
_logger.exception("Error updating channels")
def initialize(params):
"""Initialize PV names, running-average settings, and launch update thread."""
global channel_pv_names, base_pv_names, all_pv_names, global_ravg_length
camera = params["camera_name"]
e_int = params["e_int_name"]
e_axis = params["e_axis_name"]
# Fit/result PV names
center_pv = f"{camera}:FIT-COM"
fwhm_pv = f"{camera}:FIT-FWHM"
fit_rms_pv = f"{camera}:FIT-RMS"
fit_res_pv = f"{camera}:FIT-RES"
# ROI PVs for dynamic read
ymin_pv = f"{camera}:SPC_ROI_YMIN"
ymax_pv = f"{camera}:SPC_ROI_YMAX"
axis_pv = e_axis
channel_pv_names = [ymin_pv, ymax_pv, axis_pv]
# Spectrum statistical PV names
com_pv = f"{camera}:SPECT-COM"
std_pv = f"{camera}:SPECT-RMS"
skew_pv = f"{camera}:SPECT-SKEW"
iqr_pv = f"{camera}:SPECT-IQR"
res_pv = f"{camera}:SPECT-RES" # will use IQR-based calc
# Base PVs for update thread (order matters)
base_pv_names = [
e_int, center_pv, fwhm_pv, fit_rms_pv,
fit_res_pv, com_pv, std_pv, skew_pv, iqr_pv, res_pv
]
# Running-average configuration
global_ravg_length = params.get('RAVG_length', global_ravg_length)
# Build list of running-average PVs (exclude e_int, e_axis, processing_parameters)
exclude = {
e_int,
e_axis,
f"{camera}:processing_parameters"
}
ravg_base = [pv for pv in base_pv_names if pv not in exclude]
ravg_pv_names = [pv + '-RAVG' for pv in ravg_base]
# All PVs (original + running average)
all_pv_names = base_pv_names + ravg_pv_names
# Start background thread for PV updates
thread = Thread(target=update_PVs, args=(buffer, *all_pv_names), daemon=True)
thread.start()
def process_image(image, pulse_id, timestamp, x_axis, y_axis, parameters, bsdata=None, background=None):
"""
Main entrypoint: subtract background, crop ROI, smooth, fit Gaussian,
compute metrics, queue PV updates (with running averages for skew and IQR).
Returns a dict of processed PV values (original channels only).
"""
global initialized, sent_pid, channel_pv_names, global_ravg_length, ravg_buffers
try:
if not initialized:
initialize(parameters)
initialized = True
# Dynamic ROI and axis PV read
ymin_pv, ymax_pv, axis_pv = create_thread_pvs(channel_pv_names)
if ymin_pv and ymin_pv.connected:
global_roi[0] = ymin_pv.value
if ymax_pv and ymax_pv.connected:
global_roi[1] = ymax_pv.value
if not (axis_pv and axis_pv.connected):
_logger.warning("Energy axis not connected")
return None
axis = axis_pv.value
if len(axis) < image.shape[1]:
_logger.warning("Energy axis length %d < image width %d", len(axis), image.shape[1])
return None
axis = axis[:image.shape[1]]
# Preprocess image
proc_img = image.astype(np.float32) - np.float32(parameters.get("pixel_bkg", 0))
nrows, _ = proc_img.shape
# Background image
bg_img = parameters.pop('background_data', None)
if not (isinstance(bg_img, np.ndarray) and bg_img.shape == proc_img.shape):
bg_img = None
else:
bg_img = bg_img.astype(np.float32)
# Crop ROI
ymin, ymax = int(global_roi[0]), int(global_roi[1])
if 0 <= ymin < ymax <= nrows:
proc_img = proc_img[ymin:ymax, :]
if bg_img is not None:
bg_img = bg_img[ymin:ymax, :]
# Extract spectrum
spectrum = get_spectrum(proc_img, bg_img) if bg_img is not None else np.sum(proc_img, axis=0)
# Smooth
smoothed = scipy.signal.savgol_filter(spectrum, 51, 3)
# Noise check and fit Gaussian
minimum, maximum = smoothed.min(), smoothed.max()
amplitude = maximum - minimum
skip = amplitude <= nrows * 1.5
offset, amp_fit, center, sigma = functions.gauss_fit_psss(
smoothed[::2], axis[::2], offset=minimum,
amplitude=amplitude, skip=skip, maxfev=10
)
# Compute normalized spectrum weights
sm_norm = smoothed / np.sum(smoothed)
# Statistical moments
spect_com = np.sum(axis * sm_norm)
spect_std = np.sqrt(np.sum((axis - spect_com)**2 * sm_norm))
spect_skew = np.sum((axis - spect_com)**3 * sm_norm) / (spect_std**3)
# Interquartile width (IQR)
cum = np.cumsum(sm_norm)
e25 = np.interp(0.25, cum, axis)
e75 = np.interp(0.75, cum, axis)
spect_iqr = e75 - e25
spect_sum = np.sum(spectrum)
camera = parameters["camera_name"]
# Original result dict
result = {
parameters["e_int_name"]: spectrum,
parameters["e_axis_name"]: axis,
f"{camera}:SPECTRUM_Y_SUM": spect_sum,
f"{camera}:FIT-COM": np.float64(center),
f"{camera}:FIT-FWHM": np.float64(2.355 * sigma),
f"{camera}:FIT-RMS": np.float64(sigma),
f"{camera}:FIT-RES": np.float64(2.355 * sigma / center * 1000),
f"{camera}:SPECT-COM": spect_com,
f"{camera}:SPECT-RMS": spect_std,
f"{camera}:SPECT-SKEW": spect_skew,
f"{camera}:SPECT-IQR": spect_iqr,
# Use IQR for relative spread instead of std
f"{camera}:SPECT-RES": np.float64(spect_iqr / spect_com * 1000),
f"{camera}:processing_parameters": json.dumps({"roi": global_roi})
}
# Prepare full values for PV update (including running averages)
exclude = {
parameters["e_int_name"],
parameters["e_axis_name"],
f"{camera}:processing_parameters"
}
ravg_results = {}
for base_pv in (pv for pv in base_pv_names if pv not in exclude):
buf = ravg_buffers.setdefault(base_pv, deque(maxlen=global_ravg_length))
buf.append(result.get(base_pv))
ravg_results[f"{base_pv}-RAVG"] = np.mean(buf)
# Merge for PV write
full_results = {**result, **ravg_results}
# Queue PV update if new pulse
if epics_lock.acquire(False):
try:
if pulse_id > sent_pid:
sent_pid = pulse_id
entry = tuple(full_results.get(pv) for pv in all_pv_names)
buffer.append(entry)
finally:
epics_lock.release()
return full_results
except Exception as ex:
_logger.warning("Processing error: %s", ex)
return {}