Changes for page The FLASH HDF5 structure

Last modified by sndueste on 2025/09/10 11:43

From version 96.1
edited by sndueste
on 2025/05/19 17:06
Change comment: There is no comment for this version
To version 89.11
edited by sndueste
on 2025/04/23 14:55
Change comment: Update document after refactoring.

Summary

Details

Page properties
Content
... ... @@ -111,22 +111,19 @@
111 111  == Complete list of recordable parameters ==
112 112  
113 113  The complete list for the relation between DOOCS names and HDF5 names for the recordable parameters can be found in [[DESY's Repository>>url:https://stash.desy.de/projects/CS/repos/pah/browse/src/camp/data/channel2HdfName.dat||shape="rect"]].
114 +
114 114  
115 115  == Most popular FLASH parameters and their names in HDF5, DOOCS and (raw) DAQ ==
116 116  
117 117  {{id name="DOOCSparameters"/}}
118 118  
120 +Note, the HDF group and data set names apply to our HDF tree version since vers. 0.3.0.
119 119  
122 +
120 120  === FLASH1 ===
121 121  
125 +==== Beamline info (FLASH1) ====
122 122  
123 -In the Shutdown 2024 / 2025  the complete photon diagnostic and experiment control was renewed and thus the Doocs names and also some HDF5 names had to be changed. The new naming will be documented here as soon as the systems are online again.
124 -
125 -The previously used naming scheme (2024 and before) can be found here:
126 -
127 -{{expand expanded="false" title="FLASH1 Naming scheme used until 2024"}}
128 -==== (% id="cke_bm_8853497S" style="display:none" %) (%%)Beamline info (FLASH1) ====
129 -
130 130  {{code language="none"}}/FL1/Beamlines/Attenuator/pressure{{/code}}
131 131  //always saved (PBD)//
132 132  DOOCS prop : {{code language="none"}}FLASH.FEL/GAS_DOSING/FL1.ATTENUATOR/PRESSURE{{/code}}
... ... @@ -133,6 +133,7 @@
133 133  DAQ channel: {{code language="none"}}FLASH.FEL/GAS_DOSING/FL1.ATTENUATOR/PRESSURE{{/code}}
134 134  desc: set pressure in the gas attenuator
135 135  units: mbar
133 +
136 136  
137 137  {{code language="none"}}/FL1/Beamlines/BL/Fast shutter/open{{/code}}
138 138  //always saved (PBD)//
... ... @@ -154,6 +154,7 @@
154 154  DAQ channel: {{code language="none"}}TTF2.FEL/BLFILTERS1/FILTER1/FW.MOTOR.POS{{/code}}
155 155  desc: Position of the BL filter wheel 1 - to correlate with the filter material please look [[here>>doc:FS-FLASH USER tmp.jddd-linked help pages.Filter-Units.Filter wheels in FLASH1 and FLASH2.WebHome]]
156 156  units: degree
155 +
157 157  
158 158  {{code language="none"}}/FL1/Beamlines/BL/Filters/BL filter wheel/position filter 2{{/code}}
159 159  //always saved (PBD)//
... ... @@ -161,6 +161,7 @@
161 161  DAQ channel: {{code language="none"}}TTF2.FEL/BLFILTERS2/FILTER2/FW.MOTOR.POS{{/code}}
162 162  desc: Position of the BL filter wheel 2 - to correlate with the filter material please look [[here>>doc:FS-FLASH USER tmp.jddd-linked help pages.Filter-Units.Filter wheels in FLASH1 and FLASH2.WebHome]]
163 163  units: degree
163 +
164 164  
165 165  {{code language="none"}}/FL1/Beamlines/PG/Filters/position filter 1{{/code}}
166 166  //always saved (PBD)//
... ... @@ -168,6 +168,7 @@
168 168  DAQ channel: {{code language="none"}}TTF2.FEL/BDAF1/BDA.F1/FW.MOTOR.POS{{/code}}
169 169  desc: Position of the PG filter wheel 1
170 170  units: degree
171 +
171 171  
172 172  {{code language="none"}}/FL1/Beamlines/PG/Filters/position filter 2{{/code}}
173 173  //always saved (PBD)//
... ... @@ -175,6 +175,7 @@
175 175  DAQ channel: {{code language="none"}}TTF2.FEL/BDAF2/BDA.F2/FW.MOTOR.POS{{/code}}
176 176  desc: Position of the PG filter wheel 2
177 177  units: degree
179 +
178 178  
179 179  {{code language="none"}}/FL1/Beamlines/PG/Filters/position filter 3{{/code}}
180 180  //always saved (PBD)//
... ... @@ -247,8 +247,8 @@
247 247  
248 248  {{code language="none"}}/FL1/Photon Diagnostic/GMD/Average energy/energy tunnel{{/code}}
249 249  //always saved (PBD)//
250 -(% style="color:#000000" %)DOOCS prop : {{code language="none"}}FLASH.FEL/XGM.PHOTONFLUX/FL1.TUNNEL/PHOTONFLUX.UJ{{/code}} (%%)
251 -(% style="color:#000000" %)DAQ channel: {{code language="none"}}FLASH.FEL/XGM.PHOTONFLUX/FL1.TUNNEL/PHOTONFLUX.UJ{{/code}}
252 +(% style="color:#000000" %)DOOCS prop : {{code language="none"}}FLASH.FEL/XGM.PHOTONFLUX/FL1.TUNNEL/PHOTONFLUX.UJ{{/code}} (%%)
253 +(% style="color:#000000" %)DAQ channel: {{code language="none"}}FLASH.FEL/XGM.PHOTONFLUX/FL1.TUNNEL/PHOTONFLUX.UJ{{/code}}
252 252  
253 253  desc : calibrated average SASE Energy/pulse measured in the TUNNEL upstream the gas attenuator
254 254  units : microJ
... ... @@ -257,8 +257,8 @@
257 257  {{code language="none"}}/FL1/Photon Diagnostic/GMD/Pulse resolved energy/energy tunnel{{/code}}
258 258  //always saved (PBD)//
259 259  
260 -(% style="color:#000000" %)DOOCS prop : (%%)
261 -(% style="color:#000000" %){{code language="none"}}FLASH.FEL/XGM.INTENSITY/FL1.TUNNEL/INTENSITY.TD{{/code}}DAQ channel: {{code language="none"}}FLASH.FEL/XGM.INTENSITY/FL1.TUNNEL/INTENSITY.TD{{/code}}
262 +(% style="color:#000000" %)DOOCS prop : 
263 +{{code language="none"}}FLASH.FEL/XGM.INTENSITY/FL1.TUNNEL/INTENSITY.TD{{/code}}DAQ channel: {{code language="none"}}FLASH.FEL/XGM.INTENSITY/FL1.TUNNEL/INTENSITY.TD{{/code}}
262 262  
263 263  desc : Energy per pulse measured in the Tunnel.  In addition measurement errors and beam position are included for EACH pulse in the pulse train  !! (see below)
264 264  units : a.u. (more or less µJ but need to be calibrated with the "Average energy" for good precision)** [[see here for help>>doc:FS-FLASH USER tmp.jddd-linked help pages.Calibrating the pulse resolved (electron) data from GMD.WebHome]]**
... ... @@ -265,6 +265,7 @@
265 265  
266 266  {{info title="GMD pulse resolved data structure"}}
267 267  For every pulse in the pulse train the information is saved:
270 +
268 268  
269 269  1. **Intensity per pulse** (a.u. (more or less µJ ))
270 270  1. Intensity per pulse (auxillary GMD) - not used
... ... @@ -278,7 +278,8 @@
278 278  The pulse energy and the error are plotted for the first bunch of the pulse trains saved in this 
279 279  file
280 280  
281 - [[image:image2021-2-9_10-51-6.png]]
284 +
285 +[[image:attach:image2021-2-9_10-51-6.png||height="250"]]
282 282  
283 283  
284 284  {{/info}}
... ... @@ -470,8 +470,8 @@
470 470  
471 471  //always saved (PBD)//
472 472  (% style="color:#172b4d" %)**FL1.SFELC**(%%)
473 -(% style="color:#000000" %)channel: FLASH.SDIAG/BAM/(% style="color:#172b4d" %)FL1.SFELC(% style="color:#000000" %)/ARRIVAL_TIME.ABSOLUTE.SA1.COMP(%%)
474 -(% style="color:#000000" %){{code language="none"}} DOOCS prop : FLASH.SDIAG/BAM//ARRIVAL_TIME.ABSOLUTE.SA1.COMPDAQ {{/code}}(% style="letter-spacing:0.0px" %)desc: Electron bunch arrival time measured  with the BAM  before the undulator (pulse resolved data). This one was newly installed in 2020.. The property contains only the arrival time of the bunches sent to FL1 (e.g. if there are 30 bunches in FL1 the first 30 values are the arrival time the remaining numbers still may have arbitrary numbers looking like a signal which they are not). These are the same values as the "raw" data below - just "cleaned". The values show a very good correlation to the arrival time  of the XUV pulses in the experiment (see help).
477 +(% style="color:#000000" %)channel: FLASH.SDIAG/BAM/(% style="color:#172b4d" %)FL1.SFELC(% style="color:#000000" %)/ARRIVAL_TIME.ABSOLUTE.SA1.COMP
478 +{{code language="none"}} DOOCS prop : FLASH.SDIAG/BAM//ARRIVAL_TIME.ABSOLUTE.SA1.COMPDAQ {{/code}}(% style="letter-spacing:0.0px" %)desc: Electron bunch arrival time measured  with the BAM  before the undulator (pulse resolved data). This one was newly installed in 2020.. The property contains only the arrival time of the bunches sent to FL1 (e.g. if there are 30 bunches in FL1 the first 30 values are the arrival time the remaining numbers still may have arbitrary numbers looking like a signal which they are not). These are the same values as the "raw" data below - just "cleaned". The values show a very good correlation to the arrival time  of the XUV pulses in the experiment (see help).
475 475  units: fs (bigger numbers (typically) indicate later arrival times of the electrons).
476 476  
477 477  
... ... @@ -507,6 +507,7 @@
507 507  DAQ channel: {{code language="none"}}PBD.BEAM.PROF.ML/DAQ.OUT.PROF.CCCED{{/code}}
508 508  desc: temporal profile of electron bunch, y axis in Ampers (FLASH1)
509 509  units: pixel
514 +
510 510  
511 511  {{code language="none"}}/FL1/Electron Diagnostic/Electron bunch profile/Expert stuff/TDS calibration constant{{/code}}
512 512  //always saved (PBD) - IF LOLA is ON and ACTIVATED in the PBD DAQ (talk to expert)//
... ... @@ -514,6 +514,7 @@
514 514  DAQ channel: = PBD.BEAM.PROF.ML/CCT=
515 515  desc: TDS calibration constant for the x-axis of the profiles: fs per pixel
516 516  units: fs per pixel
522 +
517 517  
518 518  {{code language="none"}}/FL1/Electron Diagnostic/Electron bunch profile/TDS profile width rms{{/code}}
519 519  //always saved (PBD) - IF LOLA is ON and ACTIVATED in the PBD DAQ (talk to expert)//
... ... @@ -529,7 +529,8 @@
529 529  DOOCS prop : {{code language="none"}}TTF2.DAQ/ENERGY.DOGLEG/E_INTRA_MEAN/VAL{{/code}}
530 530  DAQ channel: {{code language="none"}}PBD.ENERGY.DOGLEG/E_MEAN{{/code}}
531 531  desc: electron bunch energy (average over the bunch train)
532 -units: (% class="twikiNewLink" %)MeV
538 +units: (% class="twikiNewLink" %)MeV(%%)
539 +
533 533  
534 534  {{code language="none"}}/FL1/Electron Diagnostic/Electron energy/pulse resolved energy{{/code}}
535 535  //always saved (PBD)//
... ... @@ -545,27 +545,26 @@
545 545  DAQ channel: {{code language="none"}}PBD.ENERGY.DOGLEG/LAMBDA_MEAN{{/code}}
546 546  desc: Wavelength calculated by the electron bunch energy (average over the bunch train) (FLASH1)
547 547  units: nm
555 +
548 548  
549 549  [[Contents>>doc:||anchor="Contents"]]
550 550  
551 551  
552 -==== ====
553 -
554 -
555 555  ==== Timing information, rep rate etc.  (FLASH1) ====
556 556  
557 557  ===== bunch repetition rate =====
558 558  
559 -{{code language="none"}}/Timing/repetition rate{{/code}}
564 +{{code language="none"}}/FL1/Timing/repetition rate{{/code}}
560 560  //always saved (PBD)//
561 561  DOOCS prop : {{code language="none"}}FLASH.DIAG/TIMER/FLASHCPUTIME1.0/REP_RATE_KHZ.1{{/code}}
562 -DAQ channel: {{code language="none"}}FLASH.DIAG/TIMER/FLASHCPUTIME1.0/REP_RATE_KHZ.1{{/code}}
567 +DAQ channel: {{code language="none"}}TTF2.UTIL/LASER.CONTROL/GUN/PULSE_FREQ{{/code}}
563 563  desc: repetition rate of the bunches / pulses within the burst (FLASH1)
564 564  units: kHz
570 +
565 565  
566 566  ===== set number of pulses =====
567 567  
568 -(% style="color:#ff6600" %)(HDF5 name not yet implemented - see zraw)(% style="color:#ff0000" %){{code language="none"}}/Timing/set number of bunches {{/code}}(%%)
574 +(% style="color:#ff6600" %)(HDF5 name not yet implemented - see zraw)(% style="color:#ff0000" %){{code language="none"}}/FL1/Timing/set number of bunches {{/code}}(%%)
569 569  //always saved (PBD)//
570 570  DOOCS prop : {{code language="none"}}FLASH.DIAG/TIMINGINFO/TIME1.BUNCH_FIRST_INDEX.1 [4th number]{{/code}}
571 571  DAQ channel: {{code language="none"}}FLASH.DIAG/TIMINGINFO/TIME1.BUNCH_FIRST_INDEX.1 [4th number]{{/code}}
... ... @@ -580,6 +580,7 @@
580 580  DAQ channel: {{code language="none"}}TTF2.DIAG/PBD.TOROID.ML/12EXP{{/code}}
581 581  desc: Number of bunches measured BEHIND the undulator. If pulses are used for diagnostic of the protection system of the accelerator limits the number of bunches to be accelerated this is the actual number that created XUV radiation.The number is calculated by the DAQ middle layer server, (FLASH1)
582 582  units:
589 +
583 583  
584 584  ===== actual pulse pattern recorded after the undulator =====
585 585  
... ... @@ -589,6 +589,7 @@
589 589  DAQ channel: {{code language="none"}}TTF2.DIAG/PBD.TOROID.ML/12EXP{{/code}}
590 590  desc: The bunch pattern as function of time in a burst recorded by toroid diagnostic BEHIND the undulator. (FLASH1)
591 591  units:
599 +
592 592  
593 593  ===== Train ID =====
594 594  
... ... @@ -598,34 +598,24 @@
598 598  DAQ channel: {{code language="none"}}none{{/code}}
599 599  desc: Each 10 Hz burst has its unique train ID. For the HDF5 data set the ID is the same for all parameters with the same index (note camera images may be shifted by 1 ID - talk to the experts !)
600 600  units:
609 +
601 601  
602 -===== (% style="color:#e67e22" %)Train time(%%) =====
611 +===== Train time =====
603 603  
604 -(% style="color:#e67e22" %){{code language="none"}}/Timing/train time{{/code}}
613 +{{code language="none"}}/Timing/train time{{/code}}
605 605  desc:Local time as array of day, hour, minute, second, and centisecond. This data set is meant for visualization purposes only. For correlations use the train ID or the Unix time of the time stamp
606 606  units: d h min s cs
616 +
607 607  
608 -(% style="color:#e67e22" %){{code language="none"}}/Timing/time stamp{{/code}}
618 +{{code language="none"}}/Timing/time stamp{{/code}}
609 609  desc:first column: Local time in unix time. To get day, hour, minute, second you can use unix: e.g. date ~-~-date='@1553617729' or matlab, python etc
610 610  second column: microseconds
611 611  third column: Train ID of FLASH
622 +
612 612  
613 -currently it is saved as Unix time in : /zraw/FLASH.DIAG/TIMINGINFO/TIME1.BUNCH_FIRST_INDEX.1/dGroup/time
624 +[[Contents>>doc:||anchor="Contents"]]
614 614  
615 -{{expand expanded="false" title="Timestamp help for python"}}
616 - import time
617 617  
618 -# epoch time is found in /zraw/FLASH.DIAG/TIMINGINFO/TIME1.BUNCH_FIRST_INDEX.1/dGroup/time #!!! a leading 1 has to be added !!!
619 -# The time and date of the start of the data taking in the HDF file is encoded in the filename - to roughly check the time
620 -epoch_time = 1709051499.17 # Replace with your epoch time
621 -
622 -formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(epoch_time))
623 -print(formatted_time)
624 -{{/expand}}
625 -
626 -
627 -
628 -
629 629  ==== Pump Probe Laser (FLASH1) ====
630 630  
631 631  **PIGLET (PG laser)**
... ... @@ -741,9 +741,10 @@
741 741  * {{code language="none"}}number of samples{{/code}}: total number of samples recorded for each 10 Hz trigger
742 742  
743 743  [[Contents>>doc:||anchor="Contents"]]
744 -{{/expand}}
745 745  
746 746  
744 +
745 +
747 747  === FLASH2 ===
748 748  
749 749  There is analog to FLASH1 a permanently running "PhotonDagnostic DAQ FLASH2" (PBD2) and 2 User DAQs
... ... @@ -755,7 +755,8 @@
755 755  (% style="color:#000000" %)DOOCS prop : {{code language="none"}}FLASH.FEL/ATT.GAS_DOSING/FL2.HALL/PRESSURE{{/code}} (%%)
756 756  (% style="color:#000000" %)DAQ channel:  {{code language="none"}}FLASH.FEL/ATT.GAS_DOSING/FL2.HALL/PRESSURE{{/code}} (%%)
757 757  (% style="color:#000000" %)desc: set pressure in the gas attenuator (%%)
758 -(% style="color:#000000" %)units: mbar
757 +(% style="color:#000000" %)units: mbar(%%)
758 +
759 759  
760 760  {{code language="none"}}/FL2/Beamlines/FL20/Shutter/open{{/code}}
761 761  //always saved (PBD2)//
... ... @@ -771,6 +771,7 @@
771 771  DAQ channel: FLASH.FEL/FL20H.PH.MOTOR/MOTOR1.MOT3/FPOS
772 772  desc: Position of the BL filter wheel 1 - to correlate with the filter material please look **[[here>>doc:FS-FLASH USER tmp.jddd-linked help pages.Filter-Units.Filter wheels in FLASH1 and FLASH2.WebHome]]**
773 773  units: degree
774 +
774 774  
775 775  /FL2/Beamlines/Filter wheel/position wheel 2
776 776  always saved (PBD2)
... ... @@ -805,6 +805,7 @@
805 805  
806 806  {{info title="GMD pulse resolved data structure"}}
807 807  For every pulse in the pulse train the information is saved:
809 +
808 808  
809 809  1. **Intensity per pulse** (a.u. (more or less µJ ))
810 810  1. Intensity per pulse (auxillary GMD) - not used
... ... @@ -1102,6 +1102,7 @@
1102 1102  DAQ channel: {{code language="none"}}FLASH.DIAG/PBD2.TOROID.ML/3GUN/NUMBEROFBUNCHES.FLASH2{{/code}}
1103 1103  desc: Number of bunches measured BEHIND the undulator. If pulses are used for diagnostic of the protection system of the accelerator limits the number of bunches to be accelerated this is the actual number that created XUV radiation.The number is calculated by the DAQ middle layer server, (FLASH2)
1104 1104  units:
1107 +
1105 1105  
1106 1106  ===== actual pulse pattern recorded after the undulator =====
1107 1107  
... ... @@ -1111,6 +1111,7 @@
1111 1111  DAQ channel: {{code language="none"}}FLASH.DIAG/PBD2.TOROID.ML/9FL2BURN.PULSEPATTERN{{/code}}
1112 1112  desc: The bunch pattern as function of time in a burst recorded by toroide diagnostic BEHIND the undulator. (FLASH2)
1113 1113  units:
1117 +
1114 1114  
1115 1115  ===== Train ID =====
1116 1116  
... ... @@ -1120,40 +1120,26 @@
1120 1120  DAQ channel: {{code language="none"}}none{{/code}}
1121 1121  desc: Each 10 Hz burst has its unique train ID. For the HDF5 dataset the ID is the same for all parameters with the same index (note camera images may be shifted by 1 ID - talk to the experts !)
1122 1122  units:
1127 +
1123 1123  
1124 -===== (% style="color:#e67e22" %)Train time(%%) =====
1129 +===== Train time =====
1125 1125  
1126 -(% style="color:#e67e22" %)//always saved (PBD2)//(%%)
1127 -(% style="color:#e67e22" %){{code language="none"}}/Timing/train time{{/code}}
1131 +//always saved (PBD2)//
1132 +{{code language="none"}}/Timing/train time{{/code}}
1128 1128  desc:Local time as array of day, hour, minute, second, and centisecond. This dataset is meant for visualisation purposes only. For correlations use the train ID or the Unix time of the time stamp
1129 1129  units: d h min s cs
1135 +
1130 1130  
1131 1131  {{code language="none"}}
1132 1132  /Timing/time stamp
1133 1133  {{/code}}
1134 1134  
1135 -(% style="color:#e67e22" %)//always saved (PBD2)//(%%)
1136 -(% style="color:#e67e22" %)desc: first column: Local time in unix time. To get day, hour, minute, second you can use unix: e.g. date ~-~-date='@1553617729' or matlab, python etc
1141 +//always saved (PBD2)//
1142 +desc: first column: Local time in unix time. To get day, hour, minute, second you can use unix: e.g. date ~-~-date='@1553617729' or matlab, python etc
1137 1137  second column: microseconds
1138 1138  third column: Train ID of FLASH
1145 +
1139 1139  
1140 -
1141 -(% id="cke_bm_2455529S" style="display:none" %) (%%)currently it is saved as Unix time in : /zraw/FLASH.DIAG/TIMINGINFO/TIME1.BUNCH_FIRST_INDEX.1/dGroup/time
1142 -
1143 -{{expand expanded="false" title="Timestamp help for python"}}
1144 - import time
1145 -
1146 -# epoch time is found in /zraw/FLASH.DIAG/TIMINGINFO/TIME1.BUNCH_FIRST_INDEX.1/dGroup/time #!!! a leading 1 has to be added !!!
1147 -# The time and date of the start of the data taking in the HDF file is encoded in the filename - to roughly check the time
1148 -epoch_time = 1709051499.17 # Replace with your epoch time
1149 -
1150 -formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(epoch_time))
1151 -print(formatted_time)
1152 -{{/expand}}
1153 -
1154 -
1155 -
1156 -
1157 1157  [[Contents>>doc:||anchor="Contents"]]
1158 1158  
1159 1159