Compare commits

...

1185 Commits

Author SHA1 Message Date
5e672fcd54 release txt fix 2021-10-08 19:13:03 +02:00
f01dd4c3af about gui 2021-10-08 19:00:40 +02:00
9b9bc3ffb9 bugfix to gui and updating gui about 2021-10-08 18:57:04 +02:00
1c3357c8f1 update release txt 2021-10-08 18:29:12 +02:00
2fa7718ffd minor 2021-10-08 18:26:43 +02:00
0fd263aef1 updated server bin folder 2021-10-08 18:25:46 +02:00
b9034dffe3 renamed server binaries 2021-10-08 18:23:14 +02:00
14cd1a465c binaries in 2021-10-08 18:17:20 +02:00
28ff54b323 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2021-10-08 18:15:44 +02:00
ecc9264481 updating license 2021-10-08 18:15:36 +02:00
36783067f2 fix server sizeof bug 2021-10-08 17:50:43 +02:00
3a5ceca522 Merge pull request #312 from slsdetectorgroup/jfcalib
Jfcalib
2021-10-08 17:45:48 +02:00
aceab74340 added pcbv2.0 fw compilation date 2021-10-08 17:43:31 +02:00
0ecc9a1c90 jf binary in 2021-10-08 17:36:13 +02:00
93c5b4aca6 jf 2.0 hw recalibrated with different settings 2021-10-08 17:34:40 +02:00
afdd8a90cd updated server and client binaries to 6.0.0-rc1 2021-10-08 16:09:36 +02:00
83b3488bc5 Merge pull request #311 from slsdetectorgroup/fixtests
Fixtests
2021-10-08 16:05:22 +02:00
388b68829c Merge branch 'developer' into fixtests 2021-10-08 15:42:56 +02:00
9717b7c414 Merge pull request #310 from slsdetectorgroup/currentsrc
currentsrc
2021-10-08 15:42:18 +02:00
7ac84f99ba Merge branch 'developer' into currentsrc 2021-10-08 15:41:58 +02:00
d433200f73 Merge pull request #309 from slsdetectorgroup/shmtests
fixed shm tests
2021-10-08 15:41:34 +02:00
cb32bfb0cd mythen3 works 2021-10-08 15:32:11 +02:00
6b843097e3 gotthard2 passes 2021-10-08 15:11:29 +02:00
4bcc1a24f0 eiger passed 2021-10-08 15:06:09 +02:00
6394fba85d removing trailing _ for members of currentsrcParameters 2021-10-08 12:52:37 +02:00
e6444bf060 fixed shm tests 2021-10-08 12:32:46 +02:00
41a585a969 Merge branch 'developer' into fixtests 2021-10-08 12:03:26 +02:00
5905404955 Merge pull request #308 from slsdetectorgroup/g2speed
G2speed
2021-10-08 12:03:10 +02:00
5b7918f50e Merge branch 'g2speed' into fixtests 2021-10-08 11:57:49 +02:00
29b9f71361 merge fix 2021-10-08 11:57:19 +02:00
bbae956619 updated eiger versioning 2021-10-08 11:55:05 +02:00
ddad045995 udpating tests 2021-10-08 11:50:28 +02:00
8d309fe051 Merge branch 'g2speed' into fixtests 2021-10-08 11:31:00 +02:00
635789ef85 Merge branch 'developer' into fixtests 2021-10-08 11:30:36 +02:00
3cb02b3d92 minor 2021-10-08 11:29:55 +02:00
5667d2bf30 updated release.txt 2021-10-08 11:08:24 +02:00
684fb81733 binaries in 2021-10-08 11:06:31 +02:00
8d3084d3e1 Merge branch 'g2speed' of github.com:slsdetectorgroup/slsDetectorPackage into g2speed 2021-10-08 11:05:43 +02:00
417bfbaf38 changing g_108MHz enum to g2_108MHZ (similarly 144), adding readoutspeedlist command 2021-10-08 11:05:25 +02:00
975c94fd4b added tests for speedLevel string conversions 2021-10-08 10:56:02 +02:00
b1ae47d189 Merge branch 'g2speed' of github.com:slsdetectorgroup/slsDetectorPackage into g2speed 2021-10-08 10:37:44 +02:00
37b1ac3de4 changed speed to readoutspeed in Detector.py 2021-10-08 10:37:34 +02:00
b4a5a5cd5e binaries in 2021-10-08 10:36:45 +02:00
e107842863 Merge branch 'g2speed' of github.com:slsdetectorgroup/slsDetectorPackage into g2speed 2021-10-08 10:35:19 +02:00
ad9eb7fc19 another bug fix typo 2021-10-08 10:35:09 +02:00
22d5898640 updated python bindings for functions and enums 2021-10-08 10:31:00 +02:00
b98ac198e7 binaries in 2021-10-08 09:45:46 +02:00
90968e1870 bugfix jungfrau readoutspeed from prev change 2021-10-08 09:45:10 +02:00
e3e3639829 binaries in and updated api versioning 2021-10-07 19:11:37 +02:00
6b0e6a72df changed speed to readoutspeed, added g2 speeds (108, 144) 2021-10-07 18:39:18 +02:00
e2aa426966 Merge pull request #307 from slsdetectorgroup/j1.1fix
J1.1fix
2021-10-07 16:46:27 +02:00
cfb604bbf4 Merge branch 'developer' into j1.1fix 2021-10-07 16:41:02 +02:00
81241bfc2c Merge pull request #305 from slsdetectorgroup/programsync
Programsync
2021-10-07 16:40:40 +02:00
961ecba34e binaries in 2021-10-07 16:40:20 +02:00
8aa7ced83e Merge branch 'developer' into j1.1fix 2021-10-07 16:14:50 +02:00
0482e3bc37 Merge branch 'developer' into programsync 2021-10-07 16:12:03 +02:00
9adc4cff27 Merge pull request #306 from slsdetectorgroup/deactivatedpadding
Deactivated padding
2021-10-07 16:11:38 +02:00
bb1ad0c905 merge fix 2021-10-07 16:11:19 +02:00
5977103312 Merge branch 'developer' into programsync 2021-10-07 16:09:53 +02:00
4d6ba67c27 Merge pull request #304 from slsdetectorgroup/changeport
changing ports only in shared memory
2021-10-07 16:09:07 +02:00
4662711aa4 Merge branch 'developer' into changeport 2021-10-07 16:08:48 +02:00
b4a51ad529 Merge pull request #303 from slsdetectorgroup/pycurrent
Python Current Source
2021-10-07 16:07:38 +02:00
c996300806 minor 2021-10-07 16:05:30 +02:00
91f8a07a9c jungfrau server fix around for unexplained high current in powerchip (temp sol: start readout to dstip of 0 and auto, then set back 2021-10-07 15:18:59 +02:00
2c6793633e jungfrau server: fixes for current source and configuring chipv1.1 2021-10-07 11:27:02 +02:00
fac7e0fbb0 WIP 2021-10-07 11:15:02 +02:00
5ed1e1f43f added currentsource example for python 2021-10-07 10:59:00 +02:00
e2d7d12b3e wip 2021-10-06 17:51:25 +02:00
46a8a2461c Removed Padding option for Deactivated half modules. 2021-10-06 15:11:17 +02:00
6360506924 moving rebootcontroller in programfpga to detector level to sync all modules 2021-10-06 14:39:12 +02:00
ea77331a4a updated release 2021-10-06 14:29:36 +02:00
34fb823675 changing ports only in shared memory and not going to detector/receiver server to change current tcp port 2021-10-06 14:24:57 +02:00
fcfbb7040a binaries in 2021-10-06 14:07:36 +02:00
1cf0a05247 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2021-10-06 14:06:34 +02:00
cdae61c7ff binaries in 2021-10-06 13:46:18 +02:00
5c3a408a89 jungfrau server: setting defaults for current source col registers when disabling current source, and 0.5 ms usleep between power chip and config chip to test 2021-10-06 13:41:50 +02:00
2fc2c34fad jungfrau server bug fix: always reading chipversion as 1.1 2021-10-06 13:38:22 +02:00
56b7dd3ca9 added currentsource to python 2021-10-05 17:13:32 +02:00
f51529bb3b binaries in 2021-10-05 13:24:31 +02:00
7d927a794e moduleid made into dec not hex 2021-10-05 13:23:09 +02:00
fb94ddec74 test fix 2021-10-04 17:18:33 +02:00
17e7e5058b tests fix 2021-10-04 13:28:18 +02:00
cbf69f4960 test fix 2021-10-04 13:09:59 +02:00
b4c115fc69 minor 2021-10-01 14:22:47 +02:00
221763b109 binaries in 2021-10-01 14:06:25 +02:00
594553434d bugfix moduleid 2021-10-01 14:05:38 +02:00
ee7ae9d947 minor 2021-09-30 17:24:06 +02:00
1cbfa54b99 release notes 2021-09-29 17:23:51 +02:00
edf72f06c2 release notes 2021-09-29 17:19:01 +02:00
6421c15387 release notes and help 2021-09-29 15:14:52 +02:00
9288d33a8f release notes and help 2021-09-29 12:15:58 +02:00
eeaebbe78c release docs 2021-09-28 17:00:40 +02:00
8e980d1ace minor 2021-09-28 16:10:41 +02:00
ffd62f2592 release notes 2021-09-28 16:00:16 +02:00
fd03bfa65e reverting soem changes 2021-09-28 15:41:57 +02:00
6ae48d0f3a server documentation 2021-09-28 15:20:14 +02:00
e0249685e1 binaries in 2021-09-27 15:31:45 +02:00
ec2a03132a g2: asic defaults refactored instead of hard coded 2021-09-27 15:31:24 +02:00
dc4e5bb561 binaries in 2021-09-27 14:54:42 +02:00
caf7df886c binaries in 2021-09-27 14:46:29 +02:00
61aa266436 jungfrau: current source defaults at configuring chip 2021-09-27 14:43:14 +02:00
a3f579b4cc jungfrau: removed chip version variable in server adn instead set it in fpga 2021-09-27 13:55:43 +02:00
14c4c989a5 binaries in 2021-09-27 12:24:33 +02:00
920a8a6e9e speed settings fixed in jungfrau 2021-09-27 12:24:14 +02:00
4c0323dd0a updating jungfrau chipv1.1 speed settings 2021-09-27 12:14:03 +02:00
dcec6eeaf9 Merge pull request #302 from slsdetectorgroup/udp_numdst
udp num dst
2021-09-17 17:44:28 +02:00
77a3cf85fe updated client api 2021-09-17 17:41:37 +02:00
3e5b6c07e3 binaries in 2021-09-17 17:41:16 +02:00
288edca78b minor 2021-09-17 17:40:28 +02:00
fd59c20975 g2 calibrated settings 2021-09-17 17:37:54 +02:00
6abf61e6f9 default value of special dacs of jungfrau 2021-09-17 17:04:00 +02:00
90b408d7a8 binaries in 2021-09-17 16:11:17 +02:00
dc671e6fcf udp_numdst readonly, udp_cleardst added 2021-09-17 16:09:57 +02:00
6151096823 wip 2021-09-17 15:14:57 +02:00
35ee7d857f Merge pull request #301 from slsdetectorgroup/jf2.0
Jf2.0
2021-09-17 13:48:27 +02:00
e223859d18 merge fix 2021-09-17 12:08:38 +02:00
cff758d2f2 Merge pull request #300 from slsdetectorgroup/framescaught
Framescaught
2021-09-17 12:05:25 +02:00
0d184ebd4b Merge branch 'developer' into framescaught 2021-09-17 11:37:01 +02:00
35d102c5ed Merge pull request #299 from slsdetectorgroup/naming
Naming
2021-09-17 11:36:22 +02:00
7d1bd280e4 naming fix in tests 2021-09-17 11:02:22 +02:00
c2202a97e1 minor fix 2021-09-17 11:00:40 +02:00
0e193615b9 Merge branch 'developer' into naming 2021-09-17 10:41:51 +02:00
90d8ad40c9 Merge pull request #298 from slsdetectorgroup/somefixes
Somefixes
2021-09-17 10:40:50 +02:00
5a08b9be86 binaries in 2021-09-17 10:40:18 +02:00
afa4e7ea7b bug fix in server 2021-09-17 10:39:06 +02:00
77bba794d9 Merge branch 'developer' into somefixes 2021-09-17 09:57:19 +02:00
3d728e5de4 Merge pull request #296 from slsdetectorgroup/progfpga
Progfpga
2021-09-17 09:55:56 +02:00
b7e8343ca4 binaries in 2021-09-17 08:42:48 +02:00
bebf1b0a13 jungfrau 2.0 calibrated settings 2021-09-17 08:41:30 +02:00
c1d1edee89 Merge branch 'naming' into framescaught 2021-09-16 16:48:18 +02:00
81b8f17b32 Merge branch 'somefixes' into naming 2021-09-16 16:47:21 +02:00
a88d1ff1e4 binaries in 2021-09-16 16:46:31 +02:00
cc95df7233 binaries in 2021-09-16 16:39:59 +02:00
b924723082 updated make files for virtual to have correct md5 path 2021-09-16 16:38:42 +02:00
7fd174c21e added _SLS to MD5 functions, added a separate lib for the md5 C code 2021-09-16 14:10:02 +02:00
2ff50750f5 moved md5 to slsSupportlib, added md5_helper.c 2021-09-16 11:34:16 +02:00
ba122fe2ad moved license into files 2021-09-16 10:57:04 +02:00
b98eee5b9a works with hdf5 2021-09-16 10:09:30 +02:00
cb6cbaeeec frames in file added for master file in receiver, binary done, hdf5 not done 2021-09-15 17:10:01 +02:00
732270f437 renaming sls and detectors to modules, multis to detector 2021-09-15 14:53:31 +02:00
1a712e1aa6 shm naming 2021-09-15 13:44:26 +02:00
74fde0a77c entry removed and using parsing for rr 2021-09-15 12:11:53 +02:00
7a9e6a13ec Merge branch 'progfpga' into somefixes 2021-09-15 11:41:52 +02:00
e7f566994a Merge branch 'developer' into progfpga 2021-09-15 11:41:00 +02:00
153dda5b97 Merge pull request #297 from slsdetectorgroup/parse
Relaxed parsing supporting RR
2021-09-15 11:40:11 +02:00
c2c3bd2fbb bianrie sin 2021-09-15 11:23:39 +02:00
2e36bb3a65 some clean up regarding trimbits 2021-09-15 11:22:45 +02:00
7eb64fc055 binaries in 2021-09-15 11:13:47 +02:00
8e40a408c5 check idle for jungfrau in flip rows 2021-09-15 11:10:02 +02:00
a17b7b1778 m3:connected module id 2021-09-15 11:06:39 +02:00
dbc541b4ea test case fix for moduleid and serialnumber 2021-09-15 10:19:16 +02:00
df2d0524a5 added back commented cmake 2021-09-15 10:03:57 +02:00
671bc62740 additional tests 2021-09-15 09:25:36 +02:00
3100ca448e fix for multi_id and commands starting with h 2021-09-15 09:15:14 +02:00
a961eead24 format and removed unused headers 2021-09-15 08:49:57 +02:00
ca35613b66 removed unsued functions in CmdParser 2021-09-15 08:44:48 +02:00
b937bbb058 binaries in 2021-09-14 17:15:01 +02:00
ff6f960ba9 works for nios (without checksum in flash) 2021-09-14 16:24:49 +02:00
fdd8b52ce1 binaries in 2021-09-14 16:01:05 +02:00
adaf56ca2e WIP 2021-09-14 15:14:08 +02:00
d599d75e0b not checking bfin flash for checksum due to bfin inconsistencies 2021-09-14 14:51:31 +02:00
78d8086e71 changes for nios similar to bfin 2021-09-14 14:41:49 +02:00
0f8869153e works for niosg 2021-09-14 10:30:04 +02:00
abf56ad643 WIP 2021-09-13 21:26:17 +02:00
b2cb99a0c2 wip 2021-09-13 17:23:36 +02:00
86b7409eed wip 2021-09-13 17:23:13 +02:00
cac5e40d8a wip 2021-09-13 17:22:39 +02:00
eb19ac1375 wip 2021-09-13 17:22:00 +02:00
52585c99a1 wip 2021-09-13 17:20:28 +02:00
4764305fd7 wip 2021-09-13 16:57:25 +02:00
47ab9ff1ec wip 2021-09-13 16:11:46 +02:00
083aeb200d wip 2021-09-10 17:51:03 +02:00
0feffa0235 wip 2021-09-10 17:45:17 +02:00
2b4a46458c wip 2021-09-10 17:40:38 +02:00
3402ccb2d0 wip 2021-09-10 17:36:11 +02:00
190f64689f wip 2021-09-10 17:32:43 +02:00
5b47b1e353 wip 2021-09-10 17:28:31 +02:00
7b3b0044bf wip 2021-09-10 17:24:28 +02:00
9cb352dec7 wip 2021-09-10 17:23:06 +02:00
bf6650115c wip 2021-09-10 17:09:40 +02:00
2622f461e3 wip 2021-09-10 17:06:27 +02:00
be4dfcf499 wip 2021-09-10 16:40:59 +02:00
ff5ab8413e wip 2021-09-10 16:40:04 +02:00
550c8f52ac wip 2021-09-10 16:36:16 +02:00
88e0d65ffc wip 2021-09-10 16:21:18 +02:00
11864e5de4 wip 2021-09-10 16:20:14 +02:00
32317510ad wip 2021-09-10 16:06:58 +02:00
bd5f85cdff wip 2021-09-10 16:05:27 +02:00
88c8f05387 wip 2021-09-10 16:05:00 +02:00
4dfd377d94 wip 2021-09-10 16:02:39 +02:00
b877997b98 wip 2021-09-10 16:01:36 +02:00
b844cc7702 wip 2021-09-10 15:41:17 +02:00
05647d4a8a wip 2021-09-10 15:36:31 +02:00
c1daba9595 wip 2021-09-10 15:35:57 +02:00
3bcfb2291a wip 2021-09-10 15:35:30 +02:00
a657450035 wip 2021-09-10 14:08:42 +02:00
cee94f65d2 wip 2021-09-10 14:08:13 +02:00
3785a314e6 wip 2021-09-10 14:07:36 +02:00
5b3e5e8d16 wip 2021-09-10 13:50:26 +02:00
b8086dcd70 fix for flash 2021-09-10 13:25:17 +02:00
9d30d51da7 updated jungfrau fm version for pcb 1.0 2021-09-10 08:28:29 +02:00
f4b8ffe684 binaries in after merge fix 2021-09-09 18:01:48 +02:00
9d4d667df1 Merge pull request #295 from slsdetectorgroup/modid
Modid
2021-09-09 17:58:03 +02:00
cb42fdfe3d binaries in after merge 2021-09-09 17:57:52 +02:00
a9f82985bc programs, but flashes checksum wrong 2021-09-09 17:52:36 +02:00
05c04008ae Update slsDetectorServer_defs.h
added note about detid difference
2021-09-09 12:12:17 +02:00
aea664f40c merge conflict and binaries in 2021-09-09 11:22:09 +02:00
c8ea0c8ede setmoduleid removed, moduleId changed to moduleIndex in client to minimize confusion 2021-09-09 11:17:24 +02:00
49e40ae8f2 binaries in after merge 2021-09-09 10:46:59 +02:00
00066e1e6c Merge pull request #294 from slsdetectorgroup/readnrows
Readnrows
2021-09-09 10:42:34 +02:00
094ca42e17 removed the temp for readnrows 2021-09-09 10:41:10 +02:00
9c17c41044 wip 2021-09-08 21:36:52 +02:00
9477e68586 wip 2021-09-08 21:30:20 +02:00
b458b9c517 wip 2021-09-08 21:15:59 +02:00
8f6344dda0 wip 2021-09-08 21:10:40 +02:00
1963439dbf wip 2021-09-08 21:07:57 +02:00
8647717fec wip 2021-09-08 21:07:25 +02:00
03823cf903 wip 2021-09-08 21:05:40 +02:00
c4ff4efaf0 wip 2021-09-08 21:02:25 +02:00
ee108889db wip 2021-09-08 21:02:11 +02:00
d9c0ce2d6d wip 2021-09-08 20:30:02 +02:00
8df19ec265 wip 2021-09-08 20:29:15 +02:00
a565592249 wip 2021-09-08 20:26:39 +02:00
f9ebda3365 wip 2021-09-08 20:23:56 +02:00
8a287279fe wip 2021-09-08 20:20:35 +02:00
e8f76e785d wip 2021-09-08 20:17:50 +02:00
2601c50c96 wip 2021-09-08 20:15:39 +02:00
91227a91c4 wip 2021-09-08 19:05:57 +02:00
bf5d761c60 wip 2021-09-08 19:01:16 +02:00
fff2a53fb9 wip 2021-09-08 18:59:38 +02:00
fb271e3a86 wip 2021-09-08 18:58:07 +02:00
dfa6f18ba3 Merge branch 'progfpga' of github.com:slsdetectorgroup/slsDetectorPackage into progfpga 2021-09-08 18:53:22 +02:00
0eb57b99d2 wip 2021-09-08 18:53:13 +02:00
09714d412a binaries in 2021-09-08 18:44:26 +02:00
c6af0d34fb wip 2021-09-08 18:28:40 +02:00
39b46f8c22 binaries in 2021-09-07 17:14:30 +02:00
00bbc03ebe wip 2021-09-07 17:13:55 +02:00
3703d701fb wip 2021-09-07 17:12:36 +02:00
7f06f90048 wip 2021-09-07 17:11:52 +02:00
790d995eab wip 2021-09-07 17:07:49 +02:00
072271d21b updated md5 in makefiles server 2021-09-07 17:05:31 +02:00
5830424783 updated md5 in makefiles server 2021-09-07 17:04:44 +02:00
04c3bc4b3c updated md5 in makefiles server 2021-09-07 17:03:45 +02:00
602bd1b25e updated md5 in makefiles server 2021-09-07 17:01:59 +02:00
9a22a1e530 binaries in 2021-09-07 16:44:35 +02:00
298028c584 Merge pull request #293 from slsdetectorgroup/roundrobin
Roundrobin
2021-09-07 16:42:06 +02:00
50c8f2d432 Merge branch 'developer' into roundrobin 2021-09-07 16:40:45 +02:00
5ed3832e15 binaries in 2021-09-07 16:35:55 +02:00
664c2ca80f wip done with md5 2021-09-07 16:33:52 +02:00
cd0161f90b test initializing UdpDestination 2021-09-07 15:35:23 +02:00
ba52bfb65e UDP struct uses IpAddr and MacAddr 2021-09-07 15:16:03 +02:00
b7f694142a replaced md5 in client 2021-09-07 14:10:50 +02:00
e8e76b6de2 wip 2021-09-07 13:51:31 +02:00
b753732197 refactoring 2021-09-07 13:33:59 +02:00
2aa16eac44 using md5.h 2021-09-07 13:29:11 +02:00
4571b1b91c moved openssl to slsSupportLib 2021-09-07 13:04:29 +02:00
bac4443091 renamed license 2021-09-07 13:04:06 +02:00
9d744deb4a binaries in 2021-09-07 12:23:38 +02:00
82c5bf15a6 replace udpDestination struct with a class that accepts ipaddr 2021-09-07 12:21:25 +02:00
905b40c76c resized mac sizes from 50 to 18, ip addresses to 16 2021-09-07 10:07:33 +02:00
abde0cffa1 openssl md5.h and md5.c combined from md5.h, md32_common.h, md5_dgst.c, md5_local.h to only have what we need 2021-09-06 17:24:37 +02:00
441fb8064f wip 2021-09-06 15:20:34 +02:00
8f26389348 wip 2021-09-03 18:00:44 +02:00
bf14c1659a wip 2021-09-03 18:00:26 +02:00
088a8ea924 wip 2021-09-03 17:57:16 +02:00
5d69f5433b wip 2021-09-03 17:57:13 +02:00
2993992c81 wip 2021-09-03 17:53:35 +02:00
b019b70697 wip 2021-09-03 17:52:12 +02:00
99153b4dc2 wip 2021-09-03 17:50:05 +02:00
74b55c2d5c wip 2021-09-03 17:47:32 +02:00
15343c3b18 wip 2021-09-03 17:44:36 +02:00
567f4bcab6 wip 2021-09-03 17:42:14 +02:00
665a44998b wip 2021-09-03 17:38:36 +02:00
e1ed49a843 wip 2021-09-03 17:34:55 +02:00
f1b31100db wip 2021-09-03 17:34:28 +02:00
a718d69368 wip 2021-09-03 17:29:27 +02:00
0c7ff62d8d wip 2021-09-03 16:29:53 +02:00
bb6abe4e93 wip 2021-09-03 15:48:36 +02:00
afd56703a2 accept tuple for counter list 2021-09-03 15:47:59 +02:00
5811ef0a11 wip 2021-09-03 15:35:31 +02:00
ecf38d6110 wip 2021-09-03 15:32:01 +02:00
8c02b6636d wip 2021-09-03 15:31:49 +02:00
d6d1d60800 wip 2021-09-03 15:26:13 +02:00
2eba0c9d74 wip 2021-09-03 15:24:59 +02:00
c5826e905b wip 2021-09-03 15:24:33 +02:00
f3744a10c6 wip 2021-09-03 15:22:41 +02:00
bd895148ea wip 2021-09-03 15:18:46 +02:00
c3a26fdcaf wip 2021-09-03 15:15:39 +02:00
2ef3dac39e wip 2021-09-03 14:55:42 +02:00
8c527bcc0d wip 2021-09-03 14:55:06 +02:00
8e58d1907d wip 2021-09-03 14:49:42 +02:00
8cc0804f99 wip 2021-09-03 14:43:31 +02:00
37acc9ec33 wip 2021-09-03 14:38:15 +02:00
ad05abed59 wip 2021-09-03 14:37:28 +02:00
2002a67ae2 wip 2021-09-03 14:36:33 +02:00
4badb1141c wip 2021-09-03 14:35:34 +02:00
20deeb8dcc wip 2021-09-03 13:17:27 +02:00
9c9f2d5c70 wip 2021-09-03 09:31:39 +02:00
3465f01e3d wip 2021-09-03 09:29:40 +02:00
a02e8099da wip 2021-09-03 08:53:08 +02:00
d0794ca0aa wip 2021-09-03 08:42:13 +02:00
82f022d46b wip 2021-09-03 08:15:36 +02:00
c4caacd2ed wip 2021-09-03 08:12:59 +02:00
cf96545f60 wip 2021-09-02 16:52:13 +02:00
ae52dc106b wip 2021-09-02 16:39:36 +02:00
0b3477bba1 wip 2021-09-02 16:37:23 +02:00
1f07e085ef wip 2021-09-02 16:36:13 +02:00
46ddf8ef90 wip 2021-09-02 16:20:48 +02:00
2b0989ecaf wip 2021-09-02 16:19:53 +02:00
5bdc28215e wip 2021-09-02 16:17:37 +02:00
22df4a8d5e wip 2021-09-02 16:12:48 +02:00
f0dce3c209 wip 2021-09-02 15:56:57 +02:00
c1d28e47d4 wip 2021-09-02 15:52:52 +02:00
4daac1a06a wip 2021-09-02 15:46:31 +02:00
e0f686231a wip 2021-09-02 15:37:28 +02:00
c6abc0b42a binaries in 2021-09-01 17:20:09 +02:00
bd4827c4df wip 2021-09-01 17:19:06 +02:00
640a7823bd wip 2021-09-01 17:14:28 +02:00
ab0dd0d49f wip 2021-09-01 17:13:11 +02:00
277e5c5b4a wip 2021-09-01 17:12:31 +02:00
210bc32e46 wip 2021-09-01 17:11:04 +02:00
cda82e5648 wip 2021-09-01 17:09:09 +02:00
a51deda2a4 moduleid for eiger m3 and g2, but set only for g2 2021-09-01 17:06:34 +02:00
25d03f949e partialread changed to readnrows 2021-08-31 16:46:49 +02:00
11b1d9f6db binaries in 2021-08-31 15:12:39 +02:00
861c81d57a wip 2021-08-31 14:42:36 +02:00
a9ab8a48e9 binaries in 2021-08-31 11:52:03 +02:00
7e0f077af6 done 2021-08-31 11:43:12 +02:00
631c71ed92 binaries in 2021-08-31 11:42:59 +02:00
204a4764b9 fixed for virtual servers rr 2021-08-31 11:42:17 +02:00
a8d3721812 Merge branch 'roundrobin' of github.com:slsdetectorgroup/slsDetectorPackage into roundrobin 2021-08-31 08:38:21 +02:00
60db0e9648 wip 2021-08-31 08:38:13 +02:00
eeb534c9fc binaries in 2021-08-30 14:52:40 +02:00
4e00286b35 Merge branch 'roundrobin' of github.com:slsdetectorgroup/slsDetectorPackage into roundrobin 2021-08-30 14:52:05 +02:00
6a8eafaa67 fix for jungfrau virtual rr 2021-08-30 14:51:56 +02:00
05be18eed8 biaries in 2021-08-30 14:22:40 +02:00
040aaec378 wip 2021-08-30 14:21:49 +02:00
171175afd1 fixed alignment of macs and port due to structure 2021-08-30 14:19:31 +02:00
0233afb8d2 eiger, refactoring converting ip and mac 2021-08-30 12:50:11 +02:00
7aa69ceb19 fixed for default ips and macs 2021-08-27 18:08:29 +02:00
edbccd3661 wip 2021-08-27 17:52:48 +02:00
765e9895b9 binaries in 2021-08-26 18:56:57 +02:00
97880d419a possible fix for eiger num udp 2021-08-26 18:56:29 +02:00
6d29819947 binaries in 2021-08-26 18:31:39 +02:00
7aab18ca47 Merge branch 'roundrobin' of github.com:slsdetectorgroup/slsDetectorPackage into roundrobin 2021-08-26 18:30:29 +02:00
719c29ae22 binaries in 2021-08-26 18:30:11 +02:00
b8eb8d2780 reset number of dest in eiger server start up 2021-08-26 18:02:40 +02:00
419b1a1bf9 eiger src ip fix 2021-08-26 17:57:42 +02:00
34d5d2da34 binaries in 2021-08-26 17:36:08 +02:00
0949e3ae18 wip 2021-08-26 17:30:07 +02:00
b07896b9de fix for num udp dest for jungfrau 2021-08-26 17:24:49 +02:00
18eeb716ad fix for first udp 2021-08-26 17:20:02 +02:00
19b428a91e minor 2021-08-26 16:55:30 +02:00
b75b9fa3b7 eiger round robin 2021-08-26 16:29:36 +02:00
4e0b2fe657 binaries in 2021-08-25 17:46:45 +02:00
41f0687671 merge fix 2021-08-25 17:26:15 +02:00
a80a413407 binaries in 2021-08-25 17:25:09 +02:00
eaa96b6785 mythen3 fix for settings error 2021-08-25 17:23:39 +02:00
c3eb6f4e8f binaries in 2021-08-25 17:05:01 +02:00
e28c5296c7 binaries in 2021-08-25 14:44:40 +02:00
9a4e18f42d Merge branch 'roundrobin' of github.com:slsdetectorgroup/slsDetectorPackage into roundrobin 2021-08-25 14:44:01 +02:00
b2541117b8 binaries in 2021-08-25 14:28:29 +02:00
1d989637e9 udp_firstdst for jungfrau 2021-08-25 14:27:06 +02:00
485b54994c jungfrau: connected number of destinations 2021-08-20 17:33:35 +02:00
2afe7112b2 udp destination entries configured properly 2021-08-20 17:02:05 +02:00
0c6911e469 srcip, srcmac and srcport added for other destination entries 2021-08-20 16:45:49 +02:00
493b58b754 clearer udp destination entry error 2021-08-20 15:57:51 +02:00
fc35b2b0de jungfrau: partial readout in firmware is not yet done, circumventing this 2021-08-20 15:42:01 +02:00
b37db1de72 ctb and moench: wrong firmware will set numchannels to 0 and this will throw when updating detector size, binaries in 2021-08-20 14:03:43 +02:00
9158a3c8b0 binaries in 2021-08-20 10:33:36 +02:00
b1939f9d47 bianries in 2021-08-19 15:50:46 +02:00
ab59f7db7b added udp_numdst 2021-08-19 15:50:02 +02:00
de4f06287d binaries in 2021-08-19 13:40:45 +02:00
e80baaaa44 eiger fix 2021-08-19 13:40:27 +02:00
89b11e87ef Merge branch 'developer' into roundrobin 2021-08-19 13:38:10 +02:00
3b93fa47f4 added doc on automatic start up of detector server 2021-08-19 13:37:40 +02:00
f8d8fcf48a wipg 2021-08-18 19:05:05 +02:00
d9f969ae6f wip 2021-08-17 18:05:47 +02:00
c4c16ad9c0 wip 2021-08-17 14:05:59 +02:00
f72f678d45 Merge branch 'developer' into roundrobin 2021-08-17 11:06:13 +02:00
6e85603f4c Merge pull request #292 from slsdetectorgroup/jpartialfix
Jpartialfix
2021-08-17 09:58:17 +02:00
7e829ce9b3 binarie sin 2021-08-17 09:55:02 +02:00
24f012e6c7 jungfrau: cannot set partial readout while acquiring 2021-08-17 09:53:34 +02:00
3d90c1527a Merge pull request #291 from slsdetectorgroup/j10partial
J10partial
2021-08-16 17:18:01 +02:00
6aaf7ec328 binaries in 2021-08-16 17:17:49 +02:00
33edb5c769 minor 2021-08-16 17:15:30 +02:00
75b992ed07 fixed for eiger 4 bit 2021-08-16 16:59:54 +02:00
cb22321006 fixed for eiger 4 bit 2021-08-16 16:59:35 +02:00
f8b5795c29 updated for partialread 2021-08-16 16:34:11 +02:00
334d58c3fd g2: fix for module id register 2021-08-16 15:38:19 +02:00
5f8dc7a7f0 fixes 2021-08-16 14:30:47 +02:00
5790e4961b wip 2021-08-13 17:10:46 +02:00
2548a0bfec updated client api 2021-08-13 12:35:22 +02:00
62d697e91f readnlines->partialread, better debugging for TCP socket interface bug 2021-08-13 12:34:50 +02:00
ec01f98c26 wip 2021-08-12 17:37:55 +02:00
eb652557b6 Merge pull request #290 from slsdetectorgroup/moduleid
G2: Moduleid
2021-08-12 11:24:02 +02:00
4e1a277c2a binaries in 2021-08-12 11:21:22 +02:00
200df88dcf module id instead of serial number 2021-08-12 11:16:10 +02:00
9e1716da56 Merge pull request #289 from slsdetectorgroup/g2features
G2features
2021-08-11 19:51:53 +02:00
2a44ec7d93 binaries in 2021-08-11 19:51:29 +02:00
58b734e843 binaries in 2021-08-11 19:51:13 +02:00
307abc7378 Merge branch 'g2features' of github.com:slsdetectorgroup/slsDetectorPackage into g2features 2021-08-11 19:50:36 +02:00
afad1a30bd minor 2021-08-11 19:50:29 +02:00
26d5f13faa binaries in 2021-08-11 19:43:31 +02:00
de6976599e redefined server definitions 2021-08-11 19:42:24 +02:00
be8172000f python fix for setserialnumber 2021-08-11 19:38:21 +02:00
a14434ad0a python fix for setserialnumber 2021-08-11 19:37:43 +02:00
3c04734b28 minor comment 2021-08-11 19:35:02 +02:00
c770bcfb7e minor comment 2021-08-11 19:34:23 +02:00
5ad124eebd binaries in 2021-08-11 19:32:33 +02:00
ff9eaaf3f3 serialnumber fixed to point to mod id reg 2021-08-11 19:30:25 +02:00
8e6a0cbfda python for setserialnumber 2021-08-11 19:01:15 +02:00
7494fb2b69 minor 2021-08-11 18:59:08 +02:00
c3a6293b68 binaries merge fix 2021-08-11 18:57:29 +02:00
aa8007da2a binaries in 2021-08-11 18:51:49 +02:00
6f54402aba g2: setting serialnumber allowed 2021-08-11 18:50:49 +02:00
9a777b13bb g2: dbitpipeline 2021-08-11 18:01:28 +02:00
7a76064223 vetoalg added hits and raw 2021-08-11 16:08:32 +02:00
0dbb6ff512 added module id register 2021-08-11 14:59:53 +02:00
0e797ba2ad g2: updated server config file 2021-08-11 14:44:48 +02:00
542c7dfb5a binary in 2021-08-11 14:42:22 +02:00
7c172898d9 jungfrau allow no config files to assume v1.0 2021-08-11 12:10:27 +02:00
799906a33a Merge pull request #288 from slsdetectorgroup/jungfrau1.1
Jungfrau features for chipv1.1
2021-08-11 11:56:49 +02:00
4e44f95e71 binaries in after merge fix 2021-08-11 11:56:14 +02:00
40f4fced30 binaries in 2021-08-11 11:51:08 +02:00
34c8cffadf Merge pull request #287 from slsdetectorgroup/j12currentsrc
Jungfrau features: 12. current source
2021-08-11 11:42:08 +02:00
f0a0243233 fixed tests 2021-08-11 11:12:28 +02:00
d5a3ddfe7e fixed 2021-08-11 10:46:20 +02:00
c7293f88d0 done 2021-08-10 21:01:36 +02:00
a0784d23bb jungfrau: currentsource 2021-08-10 20:39:07 +02:00
fce35e35a1 wip 2021-08-10 17:26:26 +02:00
7700be7df1 binaries in 2021-08-10 09:20:40 +02:00
7574a640bd merge bug fix 2021-08-10 09:19:43 +02:00
c716a87935 Merge pull request #286 from slsdetectorgroup/j14filtercell
Jungfrau features: 14. Filter cell
2021-08-09 12:14:21 +02:00
aaa9f9f4ad merge bug fix 2021-08-09 12:13:55 +02:00
3ca4c94b32 Merge branch 'jungfrau1.1' into j14filtercell 2021-08-09 12:04:24 +02:00
2a5fb9db57 Merge pull request #285 from slsdetectorgroup/j7filter
Jungfrau features: 7. filter resistor
2021-08-09 12:03:12 +02:00
c7c6d2d654 merge bugs 2021-08-09 11:56:51 +02:00
a32e19d74e moved a definition to server defs 2021-08-09 11:40:53 +02:00
f0c939e577 Merge branch 'jungfrau1.1' into j7filter 2021-08-06 19:16:37 +02:00
0438949536 Merge pull request #284 from slsdetectorgroup/j13flippeddatax
Jungfrau features: 13. flipped data x
2021-08-06 19:15:09 +02:00
7552ea1e75 merge fix 2021-08-06 16:43:00 +02:00
fd6e82e161 Merge branch 'j13flippeddatax' into j7filter 2021-08-06 16:41:51 +02:00
dc921733d0 merge fix 2021-08-06 16:41:39 +02:00
e92270565b changed gain mode. dynamic_gain_mode to dynamic only. binaries in 2021-08-06 16:38:05 +02:00
dd3f2db3c5 binaries in, merge fix 2021-08-06 16:18:28 +02:00
4986a5e61a Merge branch 'j13flippeddatax' into j7filter 2021-08-06 16:16:46 +02:00
e62fc1907f binaries in, merge fix 2021-08-06 16:16:25 +02:00
67916cc188 binaries in, merge fix 2021-08-06 16:14:53 +02:00
6c1f09b8f5 binaries in 2021-08-06 16:12:49 +02:00
f9dc668ba4 binaries in 2021-08-06 16:12:20 +02:00
cc3aede979 merge fix 2021-08-06 16:11:58 +02:00
2c53a134cd updated i3gbe to lll 2021-08-06 16:08:07 +02:00
39f03818f8 merge fix 2021-08-06 15:14:22 +02:00
76c8fcc7b9 Merge branch 'j13flippeddatax' into j7filter 2021-08-06 15:13:39 +02:00
bd7af28601 minor 2021-08-06 15:13:10 +02:00
cf257cbc65 merge fix 2021-08-06 15:08:21 +02:00
36b107bbae Merge branch 'jungfrau1.1' into j13flippeddatax 2021-08-06 15:07:04 +02:00
69ca1e7fee merge fix 2021-08-06 15:06:32 +02:00
9f6b951988 merge fix 2021-08-06 15:04:25 +02:00
bc5d6a0309 biaries in 2021-08-06 15:02:43 +02:00
64535c2143 set for vetoalg, although currently no difference 2021-08-06 15:02:06 +02:00
2934ccbf2c filter cell (only chipv1.1) 2021-08-06 14:42:41 +02:00
7bf6cc3995 wip 2021-08-06 13:25:55 +02:00
a5ba93088f Merge branch 'jungfrau1.1' into j13flippeddatax 2021-08-06 11:53:11 +02:00
5c0dabbe4f Merge pull request #283 from slsdetectorgroup/j11udpate
Jungfrau features: 11. update
2021-08-06 11:52:21 +02:00
0a58f13fe1 Merge branch 'j7filter' into j14filtercell 2021-08-06 09:18:44 +02:00
7bf03c02b7 python filterresitor 2021-08-06 09:01:51 +02:00
42257d8f67 wip 2021-08-06 08:18:34 +02:00
57534fcbee Merge branch 'j7filter' into j14filtercell 2021-08-05 17:51:08 +02:00
69356cf232 filterresitsitor only in chipv1.1 2021-08-05 17:50:46 +02:00
d3bbb50fc8 wip 2021-08-05 17:41:21 +02:00
074178848e minor 2021-08-05 17:29:43 +02:00
86126c7e27 filter resistor in 2021-08-05 16:56:53 +02:00
9312ef0d65 merge 2021-08-05 14:47:34 +02:00
619f3b71c1 flippeddataoverxaxis changed to flipRows 2021-08-05 14:44:25 +02:00
dd12c7c2f5 wip 2021-08-05 13:39:55 +02:00
c5d6dd0dd4 flippeddatax for jungfrau server 2021-08-05 12:39:04 +02:00
acd12bf2fa minor 2021-08-05 10:08:41 +02:00
cd396a1f11 wip 2021-08-04 17:28:51 +02:00
8f53845698 wip 2021-08-04 14:54:18 +02:00
1049e5fc71 wip 2021-08-04 14:35:07 +02:00
3802f22ebe wip 2021-08-04 14:03:27 +02:00
0e5e0f346b rewrote settings enums, gainmode enums 2021-08-04 13:07:48 +02:00
550810a3ca wip 2021-08-03 20:47:26 +02:00
6dfcd9607f Merge branch 'jungfrau1.1' into j11udpate 2021-08-03 20:31:43 +02:00
c7326504eb Merge pull request #282 from slsdetectorgroup/j9compdisable
Jungfrau features: 9. auto comp disable time
2021-08-03 20:29:56 +02:00
9370fd3ab0 refactor 2021-08-03 20:13:25 +02:00
5ba41894ef wip 2021-08-03 20:08:08 +02:00
0666afc642 added the other gain modes 2021-08-03 18:02:42 +02:00
e20022f139 jungfrau: settings should not be validated to undefined when special dacs are set individually 2021-08-03 14:51:00 +02:00
9c4ecf0506 jungfrau: comp disable time 2021-08-03 13:12:58 +02:00
44062f0226 Merge pull request #281 from slsdetectorgroup/revert-280-revert-279-j9compdisable
Revert "Revert "J9compdisable""
2021-08-02 17:15:57 +02:00
bdffcb1cf1 Revert "Revert "J9compdisable"" 2021-08-02 17:15:46 +02:00
044879a088 Merge pull request #280 from slsdetectorgroup/revert-279-j9compdisable
Revert "J9compdisable"
2021-08-02 17:11:45 +02:00
4a2d76164f Revert "J9compdisable" 2021-08-02 17:11:03 +02:00
15f4dd97b5 wip, jungfrau: auto comp disable has time for 1.1 chip 2021-08-02 17:10:46 +02:00
35251da015 Merge pull request #277 from slsdetectorgroup/j6mode
Jungfrau features: 6. mode (redone)
2021-08-02 17:05:07 +02:00
c57caa4931 Wbinaries in 2021-08-02 16:49:01 +02:00
dd98a10bda changes in jungfrau frimware 2021-08-02 16:48:15 +02:00
9c04344b79 automatically import enums to slsdet 2021-08-02 16:21:05 +02:00
c10dc203b2 binaries in 2021-08-02 12:45:56 +02:00
9ed3a294ce jungfrau: gainmode 2021-08-02 12:44:57 +02:00
526aa3273e Merge branch 'jungfrau1.1' into j6mode 2021-08-02 08:55:46 +02:00
fc7e73809a Merge pull request #278 from slsdetectorgroup/j8storagecells
Jungfrau features: 8. storagecells
2021-08-02 08:54:30 +02:00
6f81741931 fix for storagecell bitwise start 2021-07-30 15:51:23 +02:00
c989be1e17 minor 2021-07-30 15:35:57 +02:00
d64df39301 storagecells for jungfrauvchip1.1: cannot set addl, storagecelldealy and storagecell start is only from 0-3 2021-07-30 15:32:36 +02:00
02d01b8561 qip 2021-07-30 12:04:04 +02:00
6467b04c37 Merge pull request #275 from slsdetectorgroup/j5resetdacs
Jungfrau features: 5. resetdacs
2021-07-30 11:03:36 +02:00
a31b741f7b added python 2021-07-30 10:08:33 +02:00
6c15f5216d Merge branch 'jungfrau1.1' into j5resetdacs 2021-07-29 18:10:40 +02:00
770ce80473 Merge pull request #274 from slsdetectorgroup/j4defaultdacs
Jungfrau features: 4. defaultdacs
2021-07-29 18:09:58 +02:00
fc7efb2410 refactor 2021-07-29 18:08:41 +02:00
c0312c9bb6 wip done 2021-07-29 17:39:22 +02:00
3f08d6699c added test to check settings after resetdacs 2021-07-29 17:37:00 +02:00
9f11dae703 fix 2021-07-29 17:26:45 +02:00
9c03e83ef1 reset default dacs 2021-07-29 16:34:38 +02:00
e28d19f5be binaries in 2021-07-29 15:57:37 +02:00
a9663abc50 default dacs done 2021-07-29 15:56:32 +02:00
0665209389 Merge branch 'jungfrau1.1' into j4defaultdacs 2021-07-29 12:56:15 +02:00
ffc3d4ddd0 Merge pull request #269 from slsdetectorgroup/j3settings
Jungfrau features: 3. settings
2021-07-29 12:55:26 +02:00
6997a96aa4 binaries in 2021-07-29 12:52:48 +02:00
2732668548 refactor 2021-07-29 12:52:25 +02:00
e5b17fb8e2 wip 2021-07-29 12:45:05 +02:00
32b208f49f Merge branch 'j3settings' into j4defaultdacs 2021-07-29 10:31:04 +02:00
3f5661739e minor refactor 2021-07-29 10:29:23 +02:00
7a54ee8ea3 binaries in 2021-07-29 10:10:49 +02:00
b484f412ce refactor 2021-07-29 10:10:25 +02:00
4e268c329c refactor 2021-07-29 10:08:04 +02:00
b68cb8927a Merge branch 'jungfrau1.1' into j3settings 2021-07-29 09:11:22 +02:00
1161088ca5 Merge pull request #268 from slsdetectorgroup/j2configchip
Jungfrau features 2. config chip
2021-07-29 09:10:28 +02:00
de7f4489af defaultdac upto detector side, settings is undefined when none given 2021-07-28 20:11:58 +02:00
18bbfcaa5b using getlist in gui 2021-07-28 17:52:23 +02:00
7d933bad5e minor 2021-07-28 17:22:14 +02:00
89aff65182 get should not change parameters 2021-07-28 17:16:02 +02:00
d9ff946b1d jungfrau: special dacs have defined values for settings. getsettings give undefined if different values for special dacs 2021-07-28 16:44:57 +02:00
f8b14c694d jungfrau: special settings and configure chip if powered on (1.1 chip) 2021-07-28 13:34:32 +02:00
41bbe4e3cf merge conflict fix 2021-07-27 18:19:41 +02:00
a909874a15 binaries in 2021-07-27 18:17:13 +02:00
7535ea315b jungfrau server: chip configuration only for chip v 1.1 2021-07-27 18:16:30 +02:00
8cc9cd1c75 merge conflict fix 2021-07-27 17:58:01 +02:00
0eca60c791 Merge pull request #267 from slsdetectorgroup/jungfrauchip
Jungfrau features: 1. chip version
2021-07-27 17:56:10 +02:00
b15b66b82d jungfrau: chip1.1 incompatible with HW 1.0 2021-07-27 17:46:48 +02:00
6461fddc5d minor: server config fname size constst: binaries in 2021-07-27 17:38:02 +02:00
adf690cdcd merge fix conflict 2021-07-27 17:11:06 +02:00
122f0a4a87 merge from 5.2.0-rc 2021-07-27 17:08:59 +02:00
b634548a13 Merge pull request #273 from slsdetectorgroup/g2fix
g2moduleid
2021-07-27 17:05:15 +02:00
61198eed5f mythen3 binaries in 2021-07-27 17:04:48 +02:00
1e441af30b g2: allowing module id values for master and slave modules 2021-07-27 17:02:20 +02:00
252f5a3e7b eiger fix for status idle in blocking trigger, readyfortrigger is not up indefinitely, so have to look at status 2021-07-27 16:31:34 +02:00
10b8e7467a Wip 2021-07-25 22:49:40 +02:00
cce2511f7a removed forceswitch enum, removed fixgain1 and 2 from jungfrau settings (kept enum for g2 2021-07-23 17:12:48 +02:00
61a99c70df j: configurechip 2021-07-23 14:08:20 +02:00
e18d6d18e6 wip 2021-07-23 11:14:40 +02:00
0148710c4e binaries in 2021-07-23 11:01:42 +02:00
ba42120237 j:firmware versions 2021-07-23 11:01:26 +02:00
1d7915ef55 config file 2021-07-22 16:49:38 +02:00
cb293f9945 j: 1. chipversion 2021-07-22 16:48:35 +02:00
da4d47052d binaries in 2021-07-22 14:01:26 +02:00
5b05a30287 merge conflict fix 2021-07-22 13:52:55 +02:00
97ff58c978 binaries in 2021-07-22 13:48:17 +02:00
3d47db7e60 bug fix for virtual datastream and client 2021-07-22 13:47:18 +02:00
05b7e0ef42 conflict merge fix 2021-07-22 11:53:00 +02:00
da996314e7 merge conflict 2021-07-22 11:15:57 +02:00
fd6e44c396 Merge pull request #256 from slsdetectorgroup/disabledata
Disabledata
2021-07-21 17:02:25 +02:00
6e814ae6ec minor 2021-07-21 17:01:44 +02:00
7d3b7881d1 Merge pull request #265 from slsdetectorgroup/vetosel
G2: vetoalg
2021-07-21 16:47:12 +02:00
a301e223e9 python for datastream 2021-07-21 16:31:32 +02:00
10455b284e minor comment in python 2021-07-21 15:41:52 +02:00
ae0d1cc0d4 python support for vetoalg 2021-07-21 14:38:45 +02:00
d052efbd23 binaries in 2021-07-21 14:12:15 +02:00
69b04cc4f8 minor 2021-07-21 14:11:58 +02:00
3bee03bb3a minor 2021-07-21 14:11:27 +02:00
538b7d0925 minor 2021-07-21 14:10:34 +02:00
df300d29d2 minor 2021-07-21 14:08:47 +02:00
1e1c799223 eiger quad server: set and reset chip signals before and after trimming 2021-07-21 14:05:28 +02:00
91eba6a8b8 binaries in 2021-07-21 12:32:04 +02:00
8ba37e99a7 added enum left right top bottom 2021-07-21 09:25:27 +02:00
ec7ba7c508 wip to change to enum for portposition 2021-07-20 16:05:08 +02:00
cba49fbeae release update 2021-07-20 15:26:03 +02:00
d40d9d122b replace error 2021-07-20 15:05:43 +02:00
efe26b2b0d minor enum modif 2021-07-20 14:59:42 +02:00
e02493d4e4 veotalg for g2 2021-07-20 14:57:31 +02:00
af16ad4040 vetoalg: wip 2021-07-20 12:58:05 +02:00
206c48c7a0 Merge pull request #264 from slsdetectorgroup/g2features
vetostream
2021-07-20 10:01:02 +02:00
09391b767a support for scoped enums and operators in Python 2021-07-16 14:48:22 +02:00
1b348f9b3a binaries in 2021-07-15 21:17:29 +02:00
5e685ea5a6 resolving merge from 5.2.0-rc 2021-07-15 21:16:42 +02:00
4fd949a833 Merge pull request #259 from slsdetectorgroup/g2timejreset
G2timejreset
2021-07-15 21:06:09 +02:00
3922789245 Merge branch 'g2features' of github.com:slsdetectorgroup/slsDetectorPackage into g2features 2021-07-15 17:03:36 +02:00
7158dab9f5 fix to ensure numinterfaces is not called for g2 2021-07-15 17:03:29 +02:00
c3ad736d3c binaries in 2021-07-15 16:28:40 +02:00
780d4bfe0a gotthard2: vetostream (detector: only 3gbe, 10gbe via numudpinterfaces) 2021-07-15 16:21:17 +02:00
4d7fb4e4e0 wip 2021-07-15 14:48:41 +02:00
8354395f64 wip 2021-07-15 13:44:42 +02:00
a127f8c97a g2: badchanels moved to a new register base 2021-07-14 16:03:13 +02:00
1870ee8ae3 Merge branch '5.2.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 5.2.0-rc 2021-07-14 15:42:59 +02:00
823ceff328 minor 2021-07-14 15:42:53 +02:00
86d1a18ca1 binaries in 2021-07-14 15:28:53 +02:00
016d0d7fac jungfrau server: temporary fix made to reset core when stopping state machine. problem: stopping in trigger mode and then switching to auto mode blocks data streaming from detector 2021-07-14 15:28:09 +02:00
8308d2833d Merge branch '5.2.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 5.2.0-rc 2021-07-14 15:21:26 +02:00
6c0795ea63 done with all tests for time parameters for g2 2021-07-14 15:21:10 +02:00
76ca4374e4 added tests to check time parameters tolerance for g2 2021-07-14 15:10:52 +02:00
e1c76fb04a binaries in 2021-07-14 12:27:30 +02:00
2d182f3cee gotthard2 server: tolerance in time parameters fixed by adding 0.5 2021-07-14 12:26:29 +02:00
c6aaf2f8b1 binaries in 2021-07-14 09:41:50 +02:00
abb26adc76 fixes 2021-07-13 17:14:29 +02:00
f9feabaacf fix 2021-07-12 16:32:55 +02:00
ff4ca4af6c fix 2021-07-12 16:32:25 +02:00
fdf6632356 wip 2021-07-05 15:20:34 +02:00
5ad2299e83 binaries in 2021-07-02 19:55:45 +02:00
2d913b901d wip 2021-07-02 19:49:37 +02:00
c30716db12 Wip 2021-07-02 16:09:57 +02:00
0e4fd598b1 wip 2021-07-02 10:10:46 +02:00
4422ce61aa wip 2021-07-01 19:21:33 +02:00
eff15b3f89 wip 2021-07-01 16:11:40 +02:00
4b81cfbd6c wip 2021-07-01 16:10:33 +02:00
a1da362d2e Wip 2021-07-01 15:58:06 +02:00
0b3af803ce wip 2021-07-01 15:51:19 +02:00
cbdb05a3a8 wip 2021-07-01 15:11:22 +02:00
ece676ea76 Merge pull request #250 from slsdetectorgroup/stopacq
Stopacq
2021-07-01 14:37:02 +02:00
54b9b9938c binaries in after merge conflict 2021-07-01 14:35:29 +02:00
9d8c68b1d0 wip 2021-07-01 14:23:33 +02:00
0e7c643cf9 wip 2021-07-01 00:03:05 +02:00
5ad3205fe8 wip 2021-06-30 16:50:05 +02:00
fca9982b72 wip 2021-06-30 13:03:31 +02:00
d7dc1912ac wip rewrite 2021-06-29 20:45:52 +02:00
ee1a1563ba wip rewrite 2021-06-29 20:45:46 +02:00
1e6f695949 binaries in 2021-06-28 17:57:57 +02:00
d7669ca4d4 Merge branch 'stopacq' of github.com:slsdetectorgroup/slsDetectorPackage into stopacq 2021-06-28 17:57:19 +02:00
a20c2cdfb5 locking 2021-06-28 17:57:10 +02:00
9c7d13847e binaries in 2021-06-28 17:51:25 +02:00
8c1a813214 Merge branch 'stopacq' of github.com:slsdetectorgroup/slsDetectorPackage into stopacq 2021-06-28 17:51:07 +02:00
3618f17666 wip 2021-06-28 17:51:00 +02:00
b347afd6f3 binaries in 2021-06-28 17:48:40 +02:00
0ed59953de Merge branch 'stopacq' of github.com:slsdetectorgroup/slsDetectorPackage into stopacq 2021-06-28 17:48:17 +02:00
2044ea1cc7 wip 2021-06-28 17:48:11 +02:00
68299820fd binaries in 2021-06-28 17:46:07 +02:00
814e8898d8 wip 2021-06-28 17:42:37 +02:00
dd8082da0b wip 2021-06-28 17:41:02 +02:00
60d726b379 wip 2021-06-28 17:36:38 +02:00
04a0a475ad wip 2021-06-28 17:32:11 +02:00
ca02d4b007 wip 2021-06-28 17:27:25 +02:00
343e881a3f wip 2021-06-28 17:26:09 +02:00
c0aaa94587 wip 2021-06-28 17:24:27 +02:00
12cdab19e9 wip 2021-06-28 17:23:33 +02:00
5177ed74e5 wip 2021-06-28 17:20:37 +02:00
28fde55e4b wip 2021-06-28 17:14:20 +02:00
4b05ecd80b wip 2021-06-28 17:12:57 +02:00
a7d46b701a wip 2021-06-28 17:11:01 +02:00
1bad39fd69 wip 2021-06-28 17:10:33 +02:00
2a85e7c71e wip 2021-06-28 17:09:37 +02:00
4a4fbddb79 wip 2021-06-28 17:07:09 +02:00
f8c2da3c83 wip 2021-06-28 16:44:45 +02:00
9d666da4cf binaries in 2021-06-28 13:33:24 +02:00
18fe63f594 wip 2021-06-28 13:32:44 +02:00
3295d36f46 wip 2021-06-28 12:17:46 +02:00
c63f3b327f wip 2021-06-25 17:20:34 +02:00
0a0e9bf490 wip 2021-06-25 17:20:16 +02:00
3394d8659b wip 2021-06-25 17:18:50 +02:00
9746875014 wip 2021-06-25 17:16:08 +02:00
8b22b5dbe7 wip 2021-06-25 17:13:40 +02:00
1b525abfa1 wip 2021-06-25 17:11:36 +02:00
a097687a69 wip 2021-06-25 17:07:53 +02:00
1360fbac87 eiger: block trigger till next wait for trigger and give error if it wasnt ready when trigger sent 2021-06-25 16:56:48 +02:00
bdfd151a01 wip 2021-06-25 16:54:01 +02:00
bbb2473387 wip 2021-06-25 16:46:07 +02:00
b296109513 wip 2021-06-25 16:41:00 +02:00
0d01de451a wip 2021-06-25 16:24:26 +02:00
61d62c57bc binaries in 2021-06-25 15:43:06 +02:00
746cb6b49d wip 2021-06-25 15:29:37 +02:00
927d642bf7 wip 2021-06-25 11:21:47 +02:00
637b0ea9e1 wip 2021-06-25 09:16:23 +02:00
69be046131 wip 2021-06-24 17:56:07 +02:00
d3c6996d80 wip 2021-06-24 07:27:05 +02:00
61c5018a46 wip 2021-06-23 10:28:14 +02:00
01dfc08bbe qip 2021-06-23 08:42:56 +02:00
04645dfae2 wip 2021-06-23 08:34:15 +02:00
755738a42e wip 2021-06-22 20:50:50 +02:00
1ab3bb8496 bianries in 2021-06-21 16:35:31 +02:00
137b0cc288 merge from developer 2021-06-21 16:34:42 +02:00
e4bf8a5d97 binaries in 2021-06-21 16:33:28 +02:00
5ca4c7f943 merged from developer 2021-06-21 16:32:36 +02:00
1a88cbd266 Merge pull request #254 from slsdetectorgroup/patternrefactor
RefactorPatternRedundancy
2021-06-21 16:29:25 +02:00
d0faf64014 binaries in 2021-06-21 16:21:51 +02:00
6ca67632c0 wip 2021-06-21 16:21:12 +02:00
fc6a0d4a26 Wip 2021-06-21 14:08:08 +02:00
9c19fc3272 wip 2021-06-21 13:39:20 +02:00
789d0df81c wip 2021-06-21 12:31:35 +02:00
bb91375533 wip 2021-06-21 09:37:31 +02:00
665a3be6d8 wip 2021-06-18 19:38:47 +02:00
a8c0049f88 wip 2021-06-18 14:22:01 +02:00
fd2cc856b8 wip 2021-06-18 12:25:14 +02:00
2ae2f84441 wip 2021-06-17 17:39:49 +02:00
028edd0d08 wip 2021-06-17 07:13:27 +02:00
e110bfd5a7 usleep between sending frames and stop acquisition assures complete frames, require firmware update to remove usleep 2021-06-16 11:11:04 +02:00
ceeb4400a0 removing send complete frames fromstop acquisition 2021-06-16 10:25:49 +02:00
47d6ed053c removed slave master difference in stop acquiistion 2021-06-15 16:58:32 +02:00
74ca9d6fcc binaries in 2021-06-15 16:57:23 +02:00
370fe4628a wip 2021-06-15 16:56:16 +02:00
74903314ce wip 2021-06-15 16:31:29 +02:00
4ea53cd3bd Merge branch 'stopacq' of github.com:slsdetectorgroup/slsDetectorPackage into stopacq 2021-06-15 16:27:19 +02:00
994f0a71a6 wip 2021-06-15 16:27:09 +02:00
19b16bc6e8 binaries in 2021-06-15 15:01:07 +02:00
b740cb7312 Merge branch 'stopacq' of github.com:slsdetectorgroup/slsDetectorPackage into stopacq 2021-06-15 15:00:25 +02:00
bfdd62253a binaries in 2021-06-15 15:00:15 +02:00
22bcac4c0b gotthard stop server should also know if there is a master for ismaster() to work 2021-06-15 14:59:50 +02:00
1ae8ceb73c binaries in 2021-06-15 13:01:41 +02:00
b11f6c56e7 getmaster through stop server, allowing stopacq to first go to slave for eiger, eiger stop to first check reg value to send complete frames before calling stop 2021-06-15 12:59:54 +02:00
709293be68 Merge branch 'stopacq' of github.com:slsdetectorgroup/slsDetectorPackage into stopacq 2021-06-15 12:46:09 +02:00
f111ac733b without getmaster, getmaster needs to go to stop server 2021-06-15 12:45:58 +02:00
d0b2c13fa3 binaries in 2021-06-15 11:50:21 +02:00
130613f730 fix for stopacq 2021-06-15 11:48:38 +02:00
a9f892483d wip 2021-06-11 17:29:01 +02:00
26acde979f refactor on the gui from review missed out in pr 2021-06-11 11:54:22 +02:00
621bb6cbfd Merge pull request #252 from slsdetectorgroup/guicounters
added counters for m3 gui
2021-06-11 09:24:58 +02:00
b4d2f2ee1c wip 2021-06-10 18:27:42 +02:00
f01e5fd5ec moved counters in gui from data output tab to settings tab 2021-06-10 18:07:52 +02:00
1bcf10a211 minor 2021-06-10 15:43:17 +02:00
b9aa7bcc8e added counters for m3 gui 2021-06-10 15:41:49 +02:00
d0d9ffb3b6 binaries in 2021-06-10 12:11:45 +02:00
2b8e4c8981 Merge branch 'stopacq' of github.com:slsdetectorgroup/slsDetectorPackage into stopacq 2021-06-10 12:10:28 +02:00
0b2a4a879e removed masterflags enum, especially in gotthard server 2021-06-10 12:10:17 +02:00
6fa9d7f367 binaries in 2021-06-09 17:41:54 +02:00
bdc3a5f3d9 connect ismaster for eiger and gotthard1 and using ismaster to stop master last for eiger 2021-06-09 17:40:05 +02:00
4de8234478 eiger stop sends last frame, software or firmwarebug 2021-06-09 15:04:48 +02:00
08a588bb01 wip: eiger stop acquisition send complete frmes 2021-06-09 12:31:26 +02:00
2be8ee8079 udpated in python 2021-06-09 11:42:46 +02:00
6ca3f075b7 binaries in after merge fix 2021-06-08 12:31:13 +02:00
45992b28a5 merge fix 2021-06-08 12:29:33 +02:00
ac5dece221 Merge pull request #242 from slsdetectorgroup/m3dacfix
m3dacfix
2021-06-08 12:19:46 +02:00
6f54291a84 documentation, wip 2021-06-08 12:14:06 +02:00
e00c62a7a5 m3 server: fixed absolute addressing for isMaster 2021-06-08 11:37:11 +02:00
6e9ad425f8 binaries in 2021-06-08 09:49:10 +02:00
1e640d90de refactor minor 2021-06-08 09:47:15 +02:00
74f5c52bc9 binaries in 2021-06-08 08:29:26 +02:00
9e32c746cd WIP 2021-06-07 16:43:39 +02:00
1b068cdf2d wip 2021-06-07 15:06:34 +02:00
16a228415d binaries in 2021-06-07 15:00:56 +02:00
48cef99e62 eiger blocking trigger WIP, new fw, 3 bits: 1 for exp, 1 for falling exp toggle, 1 for rising exp toggle 2021-06-07 15:00:06 +02:00
238b6e8753 binaries in 2021-06-04 17:15:43 +02:00
6949e22bf8 wip 2021-06-04 16:52:48 +02:00
28c1e2491b wip 2021-06-04 16:52:19 +02:00
d33cf25a95 wip 2021-06-04 16:51:36 +02:00
b5790983ce wip 2021-06-04 16:31:51 +02:00
5e17c9c525 Merge branch 'blocktrigger' of github.com:slsdetectorgroup/slsDetectorPackage into blocktrigger 2021-06-04 12:35:53 +02:00
0afe093afc wip 2021-06-04 12:30:59 +02:00
215454d7cc Merge branch 'developer' into blocktrigger 2021-06-04 10:16:00 +02:00
81aa8c9ac5 wip 2021-06-04 10:15:37 +02:00
be6e2d7fb3 binaries in 2021-06-02 17:06:15 +02:00
cf5d2cd97e WIP 2021-06-02 17:05:40 +02:00
cf7828e0ce eiger server: blocking software trigger 2021-06-02 16:59:20 +02:00
201d304874 Better control of what is built (#247)
* allow for build only detector libs

* allow receiver libs only

* option for shared libraries
2021-06-02 16:09:28 +02:00
129ec6930f Merge pull request #246 from slsdetectorgroup/rxpartial
virtual prints extra missing packets instead of negative
2021-05-28 16:49:15 +02:00
65b022a946 binaries in 2021-05-28 15:39:02 +02:00
c5ee7ac958 tests updated 2021-05-28 15:37:32 +02:00
daae52ca63 m3: vthreshold set/get only enabled counters but remember value, vth always overwrite, disable counter sets vth to 2800, enable counter sets saved values 2021-05-27 17:25:55 +02:00
b1556faa36 virtual prints extra missing packets instead of negative 2021-05-27 11:33:00 +02:00
54c24b3de7 tests m3 for vth and counters 2021-05-26 19:55:47 +02:00
0a7b0a6d5e ctb tests dac fixed 2021-05-26 18:57:29 +02:00
a69e6e7faa other detectors dac tests 2021-05-26 18:51:10 +02:00
2809d2b83d tests dac depreciated fix for m3 2021-05-26 18:37:34 +02:00
47c3d7fc47 binaries in 2021-05-26 13:00:11 +02:00
3079e41c3b all loading pattern so far takes in logDEBUG5 print level as it is at detector start up. commands to call loadpattern can call logINFO level 2021-05-26 12:59:19 +02:00
89898beced m3:different exception message for vths when counter disabled 2021-05-26 12:23:46 +02:00
240ec12485 binaries in 2021-05-25 16:46:56 +02:00
ff4472aecf Merge branch 'm3dacfix' of github.com:slsdetectorgroup/slsDetectorPackage into m3dacfix 2021-05-25 16:46:08 +02:00
d9525e9a92 m3: vthreshold and vthx gives correct exception messages (binaries not in) 2021-05-25 16:46:01 +02:00
6ab640100b replaced trimfile name with sn0000 extension 2021-05-25 16:23:36 +02:00
9626b2b8f9 Merge branch 'm3dacfix' of github.com:slsdetectorgroup/slsDetectorPackage into m3dacfix 2021-05-25 15:09:52 +02:00
d05b0ef77f produced new mythen3 trimfiles with the gaincap for 4000,6000,8000,12000eV all trimbits to 0 2021-05-25 15:09:28 +02:00
bd8f51fb1a binaries in 2021-05-25 15:04:02 +02:00
9ac836c2f4 setting vthreshold exception message fix when not all counters enabled, appropriate message 2021-05-25 15:03:05 +02:00
45e7187e7c binaries in 2021-05-25 11:25:27 +02:00
a6a2a91fea m3 server: refactor 2021-05-20 16:46:10 +02:00
224c8d9f8d m3 server: setting counter mask, set vth[i] for counter[i] and its M_VTH1, not VTH1 2021-05-20 14:51:37 +02:00
ac613171ec added conda pkgs for moench 2021-05-11 10:22:15 +02:00
085ea3aee7 dont add detector id for .trim 2021-04-27 08:28:05 +02:00
c054ad3af3 Merge branch 'my3regs' into developer 2021-04-26 08:39:46 +02:00
28c7d533e9 fixed compile defs for moench zmq 2021-04-22 08:29:15 +02:00
fa6a685508 fixed moenchZmq executables 2021-04-21 17:25:51 +02:00
d5c10aa3e7 stop command: Support single (half)module stop 2021-04-21 15:40:51 +02:00
be5fee8126 M3: fixed gain bits with negative polarity 2021-04-12 16:44:47 +02:00
d9cd780386 p gaincap 0 2021-04-12 13:31:10 +02:00
55b4a92453 using setChipStatusRegister 2021-04-07 16:27:40 +02:00
0299d315d5 added command line option 2021-04-01 10:06:37 +02:00
779a2a0199 CSR in trim files 2021-04-01 08:09:04 +02:00
01c785271f WIP 2021-03-31 16:26:36 +02:00
05ddc5caaf pybind11 back to 2.6.2 2021-03-29 17:02:00 +02:00
fa25340e5c allow bitwise op on the gain cap 2021-03-29 16:14:10 +02:00
e65e7ac42f energyCalibration updated with Sophie's version 2021-03-29 15:35:27 +02:00
7d605c2c87 names 2021-03-29 14:50:08 +02:00
043d582616 initial implementation 2021-03-29 14:21:48 +02:00
7c4f9ee044 read back of csr 2021-03-26 17:46:11 +01:00
a2007b78e7 updated pybind also for my3regs 2021-03-23 11:48:35 +01:00
7004f43a9a Merge branch 'developer' into my3regs 2021-03-23 11:44:52 +01:00
2b3b5af303 report developer as version 2021-03-23 11:44:25 +01:00
7a67d7e88a minor cmake and servers now reflect developer 2021-03-23 10:54:01 +01:00
60e3fb8aab fixing conflics after merging back release to developer 2021-03-23 10:50:09 +01:00
2f2fe4dd47 Release of 5.1.0 (#237)
* Setting pattern from memory (#218)

* ToString accepts c-style arrays

* fixed patwait time bug in validation

* Introduced pattern class

* compile for servers too

* Python binding for Pattern

* added scanParameters in Python

* slsReceiver: avoid potential memory leak around Implementation::generalData

* additional constructors for scanPrameters in python

* bugfix: avoid potentital memory leak in receiver if called outside constructor context

* added scanParameters in Python

* additional constructors for scanPrameters in python

* M3defaultpattern (#227)

* default pattern for m3 and moench including Python bindings

* M3settings (#228)

* some changes to compile on RH7 and in the server to load the default chip status register at startup

* Updated mythen3DeectorServer_developer executable with correct initialization at startup

Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>
Co-authored-by: Anna Bergamaschi <anna.bergamaschi@psi.ch>

* Pattern.h as a public header files (#229)

* fixed buffer overflow but caused by using global instead of local enum

* replacing out of range trimbits with edge values

* replacing dac values that are out of range after interpolation

* updated pybind11 to 2.6.2

* Mythen3 improved synchronization (#231)

Disabling scans for multi module Mythen3, since there is no feedback of the detectors being ready
startDetector first starts the slaves then the master
acquire firs calls startDetector for the slaves then acquire on the master
getMaster to read back from hardware which one is master

* New server for JF to go with the new FW (#232)

* Modified Jungfrau speed settings for HW1.0 - FW fix version 1.1.1, compilation date 210218

* Corrected bug. DBIT clk phase is implemented in both HW version 1.0 and 2.0. Previous version did not update the DBIT phase shift on the configuration of a speed.

* fix for m3 scan with single module

* m3 fw version

* m3 server

* bugfix for bottom when setting quad

* new strategy for finding zmq based on cppzmq



Co-authored-by: Dhanya Thattil <dhanya.thattil@psi.ch>
Co-authored-by: Dhanya Thattil <33750417+thattil@users.noreply.github.com>
Co-authored-by: Alejandro Homs Puron <ahoms@esrf.fr>
Co-authored-by: Anna Bergamaschi <anna.bergamaschi@psi.ch>
Co-authored-by: Xiaoqiang Wang <xiaoqiangwang@gmail.com>
Co-authored-by: lopez_c <carlos.lopez-cuenca@psi.ch>
2021-03-22 14:43:11 +01:00
7955426682 my3: added function to change the gain + some functions for my3 flags added 2021-02-26 18:02:48 +01:00
63259ec5c8 Modified my3 functions for the pattern generator and moved to separate file; created loadPattern function - but should still be used in readDefaultPattern 2021-02-26 16:53:30 +01:00
e8fe203940 New server for JF to go with the new FW (#232)
* Modified Jungfrau speed settings for HW1.0 - FW fix version 1.1.1, compilation date 210218

* Corrected bug. DBIT clk phase is implemented in both HW version 1.0 and 2.0. Previous version did not update the DBIT phase shift on the configuration of a speed.

The new server has been compiled

Co-authored-by: lopez_c <carlos.lopez-cuenca@psi.ch>
2021-02-25 10:26:39 +01:00
10b315c2bd Mythen3 improved synchronization (#231)
Disabling scans for multi module Mythen3, since there is no feedback of the detectors being ready
startDetector first starts the slaves then the master
acquire firs calls startDetector for the slaves then acquire on the master
getMaster to read back from hardware which one is master
2021-02-08 13:28:37 +01:00
f35de3bc2b updated pybind11 to 2.6.2 2021-02-02 14:38:16 +01:00
4caf4cced2 replacing dac values that are out of range after interpolation 2021-01-26 18:11:18 +01:00
1eb70f63ad replacing out of range trimbits with edge values 2021-01-26 17:04:09 +01:00
997e5dd96c fixed buffer overflow but caused by using global instead of local enum 2021-01-26 16:15:40 +01:00
7aeb394514 Pattern.h as a public header files (#229)
It is used in Detector.h.
2021-01-18 08:30:34 +01:00
f9f50f1d84 M3settings (#228)
* added temp m3 settings files

* renames settings noise to trim

* get threshold for M3

* some changes to compile on RH7 and in the server to load the default chip status register at startup

* Updated mythen3DeectorServer_developer executable with correct initialization at startup

Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>
Co-authored-by: Anna Bergamaschi <anna.bergamaschi@psi.ch>
2021-01-14 12:34:13 +01:00
a62e068a9a M3defaultpattern (#227)
* default pattern for m3 and moench including Python bindings

Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>
2020-12-09 13:28:39 +01:00
85bc37f04d release updated 2020-12-04 17:01:57 +01:00
a3f5315015 updated RELEASE.txt 2020-12-04 16:49:49 +01:00
d63a182996 updated RELEASE.txt 2020-12-04 14:37:29 +01:00
f147c7bfcb updated RELEASE.txt 2020-12-04 14:36:08 +01:00
4218fe5f2f bugfix from 5.0.2: potentital memory leak in receiver if setDetectorType called directly from outside 2020-12-04 14:33:53 +01:00
511f5a7ca5 Update RELEASE.txt 2020-12-04 14:33:11 +01:00
a5ab5c1fa0 additional constructors for scanPrameters in python 2020-12-04 14:31:08 +01:00
8b7023d9a3 added scanParameters in Python 2020-12-04 14:27:57 +01:00
c8c7bca6e0 bugfix: avoid potentital memory leak in receiver if called outside constructor context 2020-12-04 14:18:16 +01:00
8ddc407e62 Merge pull request #226 from esrf-bliss/potential-generaldata-memory-leak
slsReceiver: avoid potential memory leak: Implementation::generalData
2020-12-04 14:15:12 +01:00
7a2827f693 additional constructors for scanPrameters in python 2020-12-04 13:50:08 +01:00
f4be0b8efa slsReceiver: avoid potential memory leak around Implementation::generalData 2020-12-04 13:20:50 +01:00
a6e23b0509 added scanParameters in Python 2020-12-01 18:40:45 +01:00
64de9f3ad0 Merge branch 'main-rc' into b5.0.1 2020-11-30 17:24:50 +01:00
390a842b97 Merge branch 'main-rc' into b5.0.0 2020-11-30 17:21:06 +01:00
040cc9c14f Merge branch 'main-rc' into b4.2.0 2020-11-30 17:14:08 +01:00
0a1c4992e2 Merge branch 'main-rc' into b4.1.1 2020-11-30 17:12:26 +01:00
59b56c764f Merge branch 'main-rc' into b4.1.0 2020-11-30 17:09:23 +01:00
ff7afd0de7 Merge branch 'main-rc' into b4.0.2 2020-11-30 17:05:39 +01:00
835e62425f Merge branch 'main-rc' into b4.0.1 2020-11-30 17:03:16 +01:00
c8cdbfc488 Merge branch 'main-rc' into b4.0.0 2020-11-30 17:00:57 +01:00
2f75143245 Merge branch 'main-rc' into b3.1.5 2020-11-30 16:58:53 +01:00
6f7c31b747 Merge branch 'main-rc' into b3.1.4 2020-11-30 16:57:17 +01:00
75c2d987c4 Merge branch 'main-rc' into b3.1.3 2020-11-30 16:56:01 +01:00
726f5eba29 Merge branch 'main-rc' into b3.1.2 2020-11-30 16:54:56 +01:00
4404ee717a Merge branch 'main-rc' into b3.1.1 2020-11-30 16:52:52 +01:00
54530ab103 Merge branch 'main-rc' into b3.1.0 2020-11-30 16:50:15 +01:00
6126780660 Merge branch 'main-rc' into b3.0.1 2020-11-30 16:45:00 +01:00
9b7f9b1be1 Merge branch 'main-rc' into b3.0.0 2020-11-30 16:42:35 +01:00
26c829d766 Merge branch 'main-rc' into b2.3.4 2020-11-30 16:38:04 +01:00
3fde5c5b55 Merge branch 'main-rc' into b2.3.3 2020-11-30 16:36:24 +01:00
3e5f546ebe Merge branch 'main-rc' into b2.3.2 2020-11-30 16:26:44 +01:00
9833a7d330 Merge branch 'main-rc' into b2.3.1 2020-11-30 16:25:23 +01:00
8f9155e578 Merge branch 'main-rc' into b2.3.0 2020-11-30 16:23:50 +01:00
9df1eac3c1 Merge branch 'main-rc' into b2.2.0 2020-11-30 15:46:45 +01:00
5ededf9be4 Merge branch 'main-rc' into b2.1.1 2020-11-30 15:16:57 +01:00
3e8774798a Merge branch 'main-rc' into b2.1.0 2020-11-30 15:13:43 +01:00
9048e7f6c4 Merge pull request #223 from slsdetectorgroup/savepatternbackup
Savepatternbackup
2020-11-30 14:00:31 +01:00
1ce56764fa binaries in 2020-11-30 13:59:55 +01:00
8c091eece2 WIP 2020-11-27 17:06:07 +01:00
d69e238e67 Python binding for Pattern 2020-11-27 17:05:39 +01:00
95fe1720c0 removed commented out lines 2020-11-27 14:44:15 +01:00
69f558c072 constexpr not compiling for rhel7 and warning left 2020-11-27 14:31:43 +01:00
e382df21b9 updated binaries, links in serverBin and deleted v5.0.0 binaries 2020-11-27 14:26:15 +01:00
8e773c97dd pattern load and save works 2020-11-27 14:19:38 +01:00
c043e74c07 wIP 2020-11-27 14:08:06 +01:00
d4518b2ca3 WIP 2020-11-27 13:56:57 +01:00
fd3108a61b WIP 2020-11-27 12:46:54 +01:00
e8fedfa55f uncommented WIP 2020-11-27 12:45:16 +01:00
0eb204bfd3 compile for servers too 2020-11-27 12:37:22 +01:00
d9b2a90651 Introduced pattern class 2020-11-27 10:03:15 +01:00
8ca1d9c50c python wrapper 2020-11-26 14:44:39 +01:00
baff0518bb WIP 2020-11-26 14:13:04 +01:00
2e669c585b WIP 2020-11-26 11:25:29 +01:00
ca0bc3e0f3 WIP 2020-11-26 10:29:09 +01:00
08ea179519 update client version to 5.0.1 2020-11-25 16:27:28 +01:00
557cab9c50 Merge branch '5.0.1-rc' into developer 2020-11-25 16:24:35 +01:00
8e6dfe9b0f update docs 2020-11-25 16:22:24 +01:00
6901368fd6 release update 2020-11-25 15:42:41 +01:00
3f1dbb7d67 release update 2020-11-25 15:32:57 +01:00
a12dd153ef WIP 2020-11-25 15:29:46 +01:00
f6126abe31 added cmake in release notes 2020-11-25 10:22:58 +01:00
8bf9f974a3 fixing typo 2020-11-24 20:39:36 +01:00
e63fa1d7c2 Setting pattern from memory (#218)
* ToString accepts c-style arrays

* added patternParameters to python

* fixed patwait time bug in validation

* moved load from file function to patterParameters

* server using patternparamters structure to get pattern

Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>
2020-11-24 20:32:07 +01:00
1e8dacf9b8 update release 2020-11-24 20:01:37 +01:00
58fb5321f0 WIP 2020-11-23 15:33:10 +01:00
9e8c8f4bbc Merge branch '5.0.1-rc' into developer 2020-11-23 11:55:30 +01:00
faf885d2e0 python change from tiemstamp to frametime 2020-11-23 11:26:59 +01:00
c120c70678 Merge branch '5.0.1-rc' into developer 2020-11-23 09:20:22 +01:00
d5dcc8e138 runtime, zmqwhm rx_zmqhwm in python 2020-11-23 09:15:10 +01:00
90a9cea670 better cmake for python and pybind11 2.6.1 2020-11-23 08:57:00 +01:00
2eea1882d2 updated broken python bindings 2020-11-23 08:42:05 +01:00
c6eefac0eb Merge branch 'main' into test 2020-11-20 14:30:32 +01:00
46e0c0abed Merge branch 'main' into test 2020-11-20 14:29:21 +01:00
a5f0f6eb34 Merge branch 'main' into test 2020-11-20 14:28:29 +01:00
62c86f56b1 Merge branch 'main' into test 2020-11-20 14:27:25 +01:00
77080a524a Merge branch 'main' into test 2020-11-20 14:26:37 +01:00
3dce1e46f9 Merge branch 'main' into test 2020-11-20 14:25:45 +01:00
08ecc1e52d Merge branch 'main' into test 2020-11-20 14:24:14 +01:00
8c1974b34e Merge branch 'main' into test 2020-11-20 14:13:20 +01:00
d89d349247 Merge branch 'main' into test 2020-11-20 14:10:35 +01:00
910961cf41 Merge branch 'main' into test 2020-11-20 14:05:53 +01:00
595b7aa5e8 Merge branch 'main' into test 2020-11-20 14:03:36 +01:00
f72ad4326f Merge branch 'main' into test 2020-11-20 14:00:47 +01:00
2306e44ae3 Merge branch 'main' into test 2020-11-20 13:02:36 +01:00
10fa57ebb9 binaries updated to reflected developer branch 2020-11-19 16:44:40 +01:00
0ca9115cb8 updating client api branch back to developer 2020-11-19 16:43:58 +01:00
06dbf82e93 clang-format 2020-11-18 18:01:39 +01:00
8565ac6cf2 update doc 2020-11-18 17:44:04 +01:00
a26f22a052 update doc 2020-11-18 17:35:48 +01:00
30f9d53520 update doc 2020-11-18 17:32:07 +01:00
7b81532f54 update doc 2020-11-18 17:27:34 +01:00
dcf0b58a6d update doc 2020-11-18 17:27:05 +01:00
e39ea64560 update doc 2020-11-18 17:10:43 +01:00
77dacdf40d wip doc 2020-11-18 16:24:28 +01:00
5397a9a78b update doc 2020-11-18 16:12:29 +01:00
3fbafb3c1d update doc 2020-11-18 14:38:54 +01:00
e3721e89e0 update doc 2020-11-18 14:34:01 +01:00
ec75728941 update doc 2020-11-18 14:22:36 +01:00
9b6a10d7ce cmk install directory and cmake 2020-11-18 12:22:19 +01:00
57904446f0 known issues firmware eiger stop 8 byte packet 2020-11-18 11:40:14 +01:00
3d48501d30 update documentation on customer receiver config 2020-11-18 11:33:35 +01:00
d364e5e2ec added custom receiver example 2020-11-18 11:17:15 +01:00
aacd7c4bec update client version 2020-11-18 10:44:35 +01:00
abfc0dc266 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2020-11-18 10:12:35 +01:00
85a6d82d9f bugfix hdf5 threshold ev 2020-11-18 10:12:27 +01:00
56be47669f more cmake cleaning 2020-11-18 09:43:07 +01:00
b96b1849cd minor 2020-11-18 09:15:17 +01:00
902919f2df minor 2020-11-18 09:11:48 +01:00
1efdc90719 clean 2020-11-18 08:57:35 +01:00
e852158b83 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2020-11-17 19:23:36 +01:00
f48eff49e9 gotthard2 server config file modified 2020-11-17 19:23:28 +01:00
f7ecabdb51 update release.txt 2020-11-17 19:07:56 +01:00
cbf61ed05e binaries in serverbin 2020-11-17 18:43:45 +01:00
8be579ea53 binaries name changed 2020-11-17 18:41:18 +01:00
7fcac35549 gui exception thrown from acquire caught properly in gui 2020-11-17 17:39:34 +01:00
6563965787 binaries in 2020-11-17 16:52:49 +01:00
73d582744e updated binaries for 5.0.0 2020-11-17 16:49:03 +01:00
fa8fdced5f updating client versioning 2020-11-17 16:46:39 +01:00
5142603103 update doc 2020-11-17 16:45:19 +01:00
2fa3ebd8e6 Merge pull request #216 from slsdetectorgroup/callbacksafe
Callbacksafe
2020-11-17 16:26:07 +01:00
a534271aff back to normal receiver 2020-11-17 16:21:39 +01:00
d2eed6177c Merge branch 'callbacksafe' of github.com:slsdetectorgroup/slsDetectorPackage into callbacksafe 2020-11-17 16:12:39 +01:00
ddf43dbd24 fix for Eiger firmware sending bad packets of size 8 bytes when doing a stop 2020-11-17 16:12:30 +01:00
bfe8cb7020 Merge branch 'callbacksafe' of github.com:slsdetectorgroup/slsDetectorPackage into callbacksafe 2020-11-17 15:33:13 +01:00
40f6eb8ede WIP 2020-11-17 15:33:09 +01:00
5c71dd7246 handling acquisitionfinished callback 2020-11-17 15:28:39 +01:00
146d605d19 gui callback exception caught 2020-11-17 14:01:53 +01:00
918f3f3fde handling get data rxr callback exceptions 2020-11-17 13:53:54 +01:00
a36a294515 handling acquisition finished callback exception 2020-11-17 13:38:22 +01:00
f19bc8880a handling start acq call back exception 2020-11-17 13:34:51 +01:00
0cb7d62ad5 throw startacq callback exception 2020-11-17 12:57:14 +01:00
5ee95cf811 tests wip 2020-11-17 11:16:34 +01:00
980d76a15a binaries in 2020-11-17 11:03:16 +01:00
4385df18b7 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2020-11-17 11:02:32 +01:00
121450b8cc binaries in 2020-11-17 11:02:23 +01:00
e7ecb38b29 gotthard2 bug fix vetophoton server client api 2020-11-17 11:01:17 +01:00
59e12bbed8 tests wip 2020-11-17 10:51:40 +01:00
bd76a66770 tests rx_missingpackets not working 2020-11-17 08:52:30 +01:00
f592b98beb tests eiger wip 2020-11-16 19:51:15 +01:00
a6d696a0f8 Nextframenumber (#215) 2020-11-16 17:26:12 +01:00
4c4e2ccb6b Defaultdacs (#214) 2020-11-13 08:31:02 +01:00
b6b9a5d598 updated release notes and changed a few command names, now->runtime, timestamp->frametime, nframes->framecounter, startingfnum->startframenumber 2020-11-12 16:48:49 +01:00
eb221e083d minor change 2020-11-11 11:04:37 +01:00
8d9382c25b udpating docs 2020-11-10 15:42:44 +01:00
5017818fb4 verbose upload anaconda 2020-11-09 14:54:41 +01:00
2020407438 adding namespace sls to public receiver api 2020-11-09 11:23:11 +01:00
121a3ad733 Static libraries (#213) 2020-11-03 18:54:11 +01:00
f6fff9d916 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2020-11-03 08:44:37 +01:00
707601832f minor fix to build 2020-11-03 08:44:29 +01:00
5687bdd6a2 test fix 2020-11-02 18:30:36 +01:00
e7a1960741 test fix 2020-11-02 18:27:10 +01:00
64be2e0297 test fix 2020-11-02 18:23:56 +01:00
66df5fe8ee test fix 2020-11-02 18:17:35 +01:00
08edf6f908 updated client api versions 2020-11-02 16:41:40 +01:00
bf8fdc377a updating sls subfolder in client api update 2020-11-02 16:41:23 +01:00
98fce317a8 binaries in 2020-11-02 16:39:06 +01:00
6838666802 Revert "updating sls subfolder in normal server bianries"
This reverts commit 420343eb31.
2020-11-02 16:36:10 +01:00
420343eb31 updating sls subfolder in normal server bianries 2020-11-02 16:34:23 +01:00
aca2dd645c Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2020-11-02 16:27:26 +01:00
9ad6c0992b updating sls subfolder in normal server bianries 2020-11-02 16:27:18 +01:00
a15d8dd30a Moving headers into include/sls (#212) 2020-11-02 16:05:28 +01:00
a57bbc084c removed manual folder 2020-10-30 16:45:01 +01:00
c0b3f4f34c updating links in doc 2020-10-30 16:43:45 +01:00
11a9d5bd4b Merge pull request #211 from slsdetectorgroup/depdoc
Include depreciated commands in documentation
2020-10-30 13:12:14 +01:00
3266b1380f updated note on dac commands 2020-10-30 13:10:05 +01:00
2f76afd8a6 added table under command line 2020-10-30 12:07:54 +01:00
139db216fe added function to read depreciated commands 2020-10-30 11:50:42 +01:00
d93fd4c655 removed manual client and gui 2020-10-29 16:48:18 +01:00
fe4bc60bd7 removed manual-api, moved to devdocs 2020-10-29 16:20:35 +01:00
e7597fb5d3 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2020-10-29 15:53:45 +01:00
a5c41d6b19 wip doc 2020-10-29 15:53:37 +01:00
7e4ea308dc added python 3.9 to the conda build 2020-10-29 09:18:40 +01:00
876207c8cd version 2020-04-14 16:49:51 +02:00
ec21624aeb updated git versions 2020-04-14 09:30:04 +02:00
1de5b85ce2 Merge branch '4.2.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 4.2.0-rc 2020-04-08 11:50:12 +02:00
b4e4033736 eiger: update tengiga instop server as well to fix transmitting for 10g 2020-04-08 11:49:28 +02:00
820bc01505 eiger: update tengiga instop server as well (no binaries yet) 2020-04-08 11:45:26 +02:00
4e54d1c318 eiger: default clkspeed full speed for dr 16 2020-04-07 09:35:43 +02:00
dec4183e0f updated release.txt 2020-04-07 09:25:30 +02:00
feed09f2f4 updated binaries 2020-04-07 09:18:50 +02:00
c6aa8d6072 eiger: default flag is parallel, updated release.txt, yet to update binaries 2020-04-07 09:12:25 +02:00
4ec38a071c eiger: removed print in server for addresstoall 2020-04-03 11:06:04 +02:00
0c4b721e13 eiger server: transmitting (data) status 2020-04-03 11:02:15 +02:00
fae884e658 change to release.txt 2020-04-03 10:03:10 +02:00
f20f084991 eiger receiver: changing dr changes rx_fifodepth to their defaults 2020-04-03 09:58:58 +02:00
20ce79872f updates release.txt 2020-04-03 09:41:04 +02:00
328375924f eiger client: clkdivider set to 0 for dr of 4, 8, 16 and to 2 for dr 32 2020-04-03 09:38:11 +02:00
a1d91e590e rx: fifodepth error will set fifodepth to 0 2020-04-02 18:24:18 +02:00
679db120b0 eiger server updated in serverbin 2020-04-02 17:49:46 +02:00
7a6797b23e zmq sockets client checked before creating them 2020-03-11 11:09:41 +01:00
93f8e8ecb3 updated release.txt, rxr optimization (no file buffering, write to every page at memory allocation, fix to fifo depth 2020-03-10 10:59:30 +01:00
d112956f79 eiger server: vcal=0, rx_fifodepth to greater than 32 bit, trimval argument range check, activate to both control and stop server, end of eiger server (if detectorip normal) set activate to 1 (for future eiger firmware), added setflippeddatax to users, removing warnings and check of detector size before accessing detector[0], updating subexptime also updated subperiod in master file, remove keeprunning in rxr that keeps it busy to semaphore 2020-03-10 09:25:41 +01:00
9649982932 sw trigger with acquire and parameter file understands submodules 2020-01-15 11:22:40 +01:00
eca2836703 Merge branch '4.1.1' of github.com:slsdetectorgroup/slsDetectorPackage into 4.1.1 2020-01-14 16:25:57 +01:00
d14c9600bb conda version 2020-01-14 16:24:10 +01:00
42971c94b7 updated versioning 2020-01-14 16:16:45 +01:00
b0fd4f4c44 updated release doc 2020-01-14 16:11:24 +01:00
06473cfcb2 bug fix: software trigger using control connect 2020-01-14 13:59:08 +01:00
6f2aad3836 updated temporary versioning 2020-01-06 19:01:44 +01:00
38aad40fef read/write of config/parameter file rewritten so that parameter file can take in slsdetector level commands 2020-01-06 18:16:41 +01:00
51c5520472 unregistering call back, detangling receiver streaming from callback 2020-01-06 11:51:19 +01:00
75838f77b3 unregistering call back, detangling receiver streaming from callback 2020-01-06 11:50:08 +01:00
54bedeaa0a software trigger via stop server instead of control server for sls_detector_acquire 2020-01-06 11:31:05 +01:00
b33b2edbd0 bug fix: locks in acquire 2020-01-06 11:29:11 +01:00
f7cb2b5dcd conda pkg 2019-10-08 12:48:51 +02:00
9ea3cbc8f1 Update RELEASE.txt 2019-10-04 10:56:14 +02:00
53bb677f8c eiger doc updated 2019-10-04 10:41:13 +02:00
663999a539 updated versions 2019-10-04 10:35:42 +02:00
98b45b32fd added jungfrau virtual binaries 2019-10-04 10:29:57 +02:00
74c08cd742 updated binaries in sererbin 2019-10-04 09:42:07 +02:00
696073b505 fixed eiger virtual software versions 2019-10-04 09:41:21 +02:00
e4645a8273 Update RELEASE.txt 2019-10-02 09:37:26 +02:00
c0cd25460d Update RELEASE.txt 2019-10-02 09:35:59 +02:00
e7e30693f0 transmission delays 2019-08-21 20:29:07 +02:00
dd96aac3cd build for conda 2019-08-20 12:24:39 +02:00
5697393a70 Merge branch '4.1.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 4.1.0-rc 2019-08-16 15:33:04 +02:00
052dd8058f updated eiger binary 2019-08-16 15:32:49 +02:00
4d99ce8c52 receiver master file includes quad, gap pixels enable, version updated for binary and hdf5 2019-08-14 20:33:40 +02:00
633c646239 eiger bug fix: 4 bit mode gap pixels, also added quad to shm 2019-08-14 15:31:18 +02:00
2a88bc6a1e Merge branch '4.1.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 4.1.0-rc 2019-08-14 10:43:15 +02:00
d8af2e594a eiger bug fix: quad mode, without gap pixels, data messed up 2019-08-14 10:42:54 +02:00
8da7c3e805 eiger manual 2019-08-13 16:57:22 +02:00
ddfbea76be eiger server bug fix: interrupt subframe wrong bit mapped, virtual compilation 2019-08-06 17:22:54 +02:00
c5f2275703 eiger serveR: minor fix for beb check quad fail 2019-07-31 15:20:25 +02:00
8c491f18fd quad enabled with gap pixels without the extra vertical pixel line 2019-07-31 13:00:12 +02:00
e07e2f2da0 eiger server bug fix: split quad and interruptframe into set and get to catch fails in set and when quad and interrupt subframe used together(different register values for tl and tr) 2019-07-31 10:58:49 +02:00
d981e1b8e5 eiger server: interrupt subframe, quad change flipping, registers set left and right separately 2019-07-29 15:19:46 +02:00
58e6338f9c eiger server for v24 2019-07-29 09:36:45 +02:00
27f3af5365 updated release text 2019-07-29 09:32:17 +02:00
350b4f0368 bug fix on quad: if no data streaming enabled in the beginning 2019-07-22 17:09:34 +02:00
445f3c66fd bug fix for previous commit to work for bottom module 2019-07-10 17:56:32 +02:00
1189b991e5 quad implemented 2019-07-10 17:39:43 +02:00
3e2b471ee1 client bug fix: framesl, cyclesl printed in float, fixed 2019-07-10 11:13:35 +02:00
8c76d5d52c updated release.txt 2019-06-14 09:19:34 +02:00
e7eee67fed Update RELEASE.txt 2019-06-13 11:44:43 +02:00
fade48dcfa updated release.rxt 2019-06-13 11:43:06 +02:00
8e58e7f8bf Updated release.txt : eiger firmware version 23 2019-06-13 11:41:50 +02:00
c8f56ee23c qwt 2019-06-13 10:44:45 +02:00
32d951e28a Merge branch '4.0.2' of github.com:slsdetectorgroup/slsDetectorPackage into 4.0.2 2019-06-13 09:01:47 +02:00
5c63c8fc8f gui bug fix: switching to tab plot while acquiring produced error messages 2019-06-13 09:01:39 +02:00
7b70274d4f checking online when refreshing (during acquire) is removed 2019-06-13 08:56:29 +02:00
1cd905c08b disable gui 2019-06-12 16:02:43 +02:00
13e809acd4 updated versions 2019-06-12 15:40:19 +02:00
46533b0411 updated server binaries 2019-06-12 15:37:17 +02:00
4f4de15d3a 1s sleep for large JF during powerchip 2019-06-12 14:53:52 +02:00
4f99aeabd2 bug fix: hdf5 printError still called once. replcaed with printErrorStack 2019-05-22 19:09:45 +02:00
f36a12e454 Release Notes typo: jungfrau min exptime is 50ns and not 50 us (#16) 2019-05-02 15:28:03 +02:00
5e246c0754 Merge branch '4.0.2-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 4.0.2-rc 2019-04-11 16:13:42 +02:00
518c6783cc Client (data call back API) and Gui (Eiger 4 bit mode with multiple images) bug fix: npixelsx and npixelsy was not updated to complete detector level when calling call back function to give complete image 2019-04-11 16:13:31 +02:00
0706564694 deploy only on specific branch 2019-04-11 09:31:27 +02:00
2108bbda66 Merge branch '4.0.2-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 4.0.2-rc 2019-04-08 18:06:19 +02:00
82feed1ab8 updated server binaries 2019-04-08 18:06:06 +02:00
4be0b5d436 jungfrau server bug fix: setting detector position gave error when switching between different sized detector configurations 2019-04-08 18:05:05 +02:00
f7eb256eb6 version 2019-03-15 14:45:44 +01:00
250fc26308 fixed deloyment 2019-03-15 14:40:12 +01:00
06a50520c1 gotthard server: bug fix get settings should not set default dacs 2019-03-11 14:54:53 +01:00
fc766055d4 receiver bug fix release text updated 2019-03-04 11:42:54 +01:00
828b1479c7 receiver bug fix jungfrau as root 2019-03-04 11:28:56 +01:00
22ed52605c receiverbug fixe affecting jungfrau receivers as root 2019-03-04 11:15:53 +01:00
a1a95ebb20 receiver bug fixaffecting Jungfrau receivers as root (optlen size as int), but setting buffer size is uint32_t size. setting it to uint64_t 2019-03-04 11:02:10 +01:00
d7ce5fedfd path 2019-02-12 15:06:15 +01:00
3a2682ffe7 missing headers updated build number 2019-02-12 14:46:56 +01:00
bf74a4135e travis 2019-02-11 10:25:58 +01:00
252ecf2769 travis 2019-02-11 10:15:57 +01:00
de01ab75e9 travis 2019-02-11 09:24:39 +01:00
5698da5f95 added conda recipe 2018-12-12 16:33:25 +01:00
7300d73675 udpate release 2018-11-30 15:34:15 +01:00
d4b467a641 update 2018-11-30 15:31:22 +01:00
7b71076180 update 2018-11-30 15:28:35 +01:00
9197d2b209 updated revisions 2018-11-30 15:27:39 +01:00
e094e41d89 updated releases.txt 2018-11-30 15:24:43 +01:00
512e1a3136 users bug fix:getting id(version) for single/multi detector, added resetframescaught in users 2018-11-30 14:39:01 +01:00
6d04c14bd6 users: added stopped to getrunstatus list 2018-11-30 11:35:31 +01:00
64183d8d6a gotthard server bug fix: updated a register for token timing for revision 2 boards 2018-11-30 11:27:06 +01:00
287efde54a Update RELEASE.txt 2018-08-17 18:01:13 +02:00
faa25b9e9f updated versioning 2018-08-17 17:57:53 +02:00
1b92b01a46 slsreceiver: removed warnings 2018-08-16 17:42:59 +02:00
4849063b6c client: unnecessary print while programming fpga 2018-08-16 12:21:26 +02:00
5cd020ae81 updated release.txt 2018-08-03 12:25:58 +02:00
160fabe02c slsDetectorSoftware: connect stop socket as well to confirm detector on line, also to prevent fclose closing socket 0 (if it never connected to stop socket). Future releases can use exception instead of using socketDescriptor 0 value to validate succesful constructor 2018-08-03 12:21:35 +02:00
90dd8e70e5 updated release.txt 2018-07-30 16:56:39 +02:00
08e121c71f slsDetectorSoftware: being able to get timer values individually from the users class since gotthard 25um master and slave will have different delay values 2018-07-30 16:49:15 +02:00
cb3b337a99 updated binary 2018-07-26 13:49:18 +02:00
5d9a952316 updated release.txt 2018-07-26 13:16:34 +02:00
8cc05c5848 gotthard server and slsDetectorSoftware: more accuracy when converting from double to int64_t by adding 0.5, improved clock precision of gotthard from 32.1 to 32.007729 2018-07-26 11:47:55 +02:00
d69d69e892 Merge branch '3.1.4-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 3.1.4-rc 2018-07-23 14:57:56 +02:00
07a120fc4a slsDetectorSoftware: users class setsettings(-1) gave undefined settings from slsDetector::setSettings. It has been fixed. 2018-07-23 14:57:27 +02:00
11e8796847 slsReceiver: HDF5: printError obsolete since hdf51.10.2 and so using printErrorStack() 2018-07-18 12:53:52 +02:00
f79b009978 updated release txt 2018-07-17 14:42:49 +02:00
3259bfb008 slsReceiver: HDF5: absolute to relative linking 2018-07-17 14:23:32 +02:00
934bc5b9db slsReceiver HDF5: unlimited x dimension (#images) by extending by numImages if caught more images, fixed virtual mapping, fixed linking for jungfrau single module (removed virtual_ in all namings 2018-07-17 14:07:23 +02:00
6d11faed87 updated binaries 2018-06-28 15:32:53 +02:00
35fc52dae7 3.1.3: Bug fix: jungfrau server: delay after trigger always set to 5 seconds 2018-06-28 15:31:09 +02:00
e599bfe56f updating br versioning --version for binaries 2018-06-12 12:26:30 +02:00
764becc271 updated release.txt 2018-06-12 12:23:24 +02:00
7462d1002d bug fix for memory leak for every multi threading command when using API 2018-06-12 12:17:30 +02:00
834794ad98 gotthard renamed binaries 2017-12-19 18:04:44 +01:00
56c504abbb Merge remote branch 'slsDetectorCalibration/2.3.4' into 2.3.4 2017-12-12 11:14:19 +01:00
4d6346e678 Merge remote branch 'slsDetectorCalibration/2.3.3' into 2.3.3 2017-12-12 11:14:15 +01:00
dc7e448759 Merge remote branch 'slsDetectorCalibration/2.3.2' into 2.3.2 2017-12-12 11:14:12 +01:00
e658cbacda Merge remote branch 'slsDetectorCalibration/2.3.1' into 2.3.1 2017-12-12 11:14:08 +01:00
1e6c6dea71 Merge remote branch 'slsDetectorCalibration/2.3' into 2.3 2017-12-12 11:14:05 +01:00
0e5d4d1d8e Merge remote branch 'slsDetectorCalibration/2.2' into 2.2 2017-12-12 11:14:01 +01:00
a2986784d3 Merge remote branch 'slsDetectorCalibration/2.1.1' into 2.1.1 2017-12-12 11:13:34 +01:00
975cbb576e Merge remote branch 'slsDetectorCalibration/2.1' into 2.1 2017-12-12 11:06:15 +01:00
e48a92d9cd Merge remote branch 'slsDetectorCalibration/2.0.5' into 2.0.5 2017-12-12 11:02:57 +01:00
befdcf7f36 Merge remote branch 'slsDetectorGui/2.3.4' into 2.3.4 2017-12-04 16:48:01 +01:00
02f5c472a8 Merge remote branch 'slsReceiverSoftware/2.3.4' into 2.3.4 2017-12-04 16:48:00 +01:00
75ed2cd2e4 Merge remote branch 'slsDetectorSoftware/2.3.4' into 2.3.4 2017-12-04 16:47:59 +01:00
3be045f9b6 Merge remote branch 'slsDetectorGui/2.3.3' into 2.3.3 2017-12-04 16:47:54 +01:00
8fae982802 Merge remote branch 'slsReceiverSoftware/2.3.3' into 2.3.3 2017-12-04 16:47:54 +01:00
128ec88b5f Merge remote branch 'slsDetectorSoftware/2.3.3' into 2.3.3 2017-12-04 16:47:52 +01:00
d5fc158330 Merge remote branch 'slsDetectorGui/2.3.2' into 2.3.2 2017-12-04 16:47:47 +01:00
864e6e4c81 Merge remote branch 'slsReceiverSoftware/2.3.2' into 2.3.2 2017-12-04 16:47:47 +01:00
343d96ff16 Merge remote branch 'slsDetectorSoftware/2.3.2' into 2.3.2 2017-12-04 16:47:46 +01:00
4142328437 Merge remote branch 'slsDetectorGui/2.3.1' into 2.3.1 2017-12-04 16:47:41 +01:00
6c797988c7 Merge remote branch 'slsReceiverSoftware/2.3.1' into 2.3.1 2017-12-04 16:47:41 +01:00
215c262981 Merge remote branch 'slsDetectorSoftware/2.3.1' into 2.3.1 2017-12-04 16:47:39 +01:00
081b809078 Merge remote branch 'slsDetectorGui/2.3' into 2.3 2017-12-04 16:47:35 +01:00
9263567cd8 Merge remote branch 'slsReceiverSoftware/2.3' into 2.3 2017-12-04 16:47:34 +01:00
58e90a85be Merge remote branch 'slsDetectorSoftware/2.3' into 2.3 2017-12-04 16:47:33 +01:00
025c836e25 Merge remote branch 'slsDetectorGui/2.2' into 2.2 2017-12-04 16:47:28 +01:00
5d5abae3f4 Merge remote branch 'slsReceiverSoftware/2.2' into 2.2 2017-12-04 16:47:28 +01:00
e2ad46386e Merge remote branch 'slsDetectorSoftware/2.2' into 2.2 2017-12-04 16:47:26 +01:00
308d44e452 Merge remote branch 'slsDetectorGui/2.1.1' into 2.1.1 2017-12-04 16:47:22 +01:00
69da61b1fb Merge remote branch 'slsReceiverSoftware/2.1.1' into 2.1.1 2017-12-04 16:47:22 +01:00
460168ce04 Merge remote branch 'slsDetectorSoftware/2.1.1' into 2.1.1 2017-12-04 16:47:21 +01:00
4e429c0d77 Merge remote branch 'slsDetectorGui/2.1' into 2.1 2017-12-04 16:45:34 +01:00
bf4fab549d Merge remote branch 'slsReceiverSoftware/2.1' into 2.1 2017-12-04 16:45:34 +01:00
f7705eb1da Merge remote branch 'slsDetectorSoftware/2.1' into 2.1 2017-12-04 16:45:32 +01:00
a2217e2066 Merge remote branch 'slsReceiverSoftware/2.0.5' into 2.0.5 2017-12-04 15:33:33 +01:00
aaa02706fc Merge remote branch 'slsDetectorSoftware/2.0.5' into 2.0.5 2017-12-04 15:31:52 +01:00
6a80bc5b54 new feature, set threshold without uploading trimbits 2017-06-27 13:00:38 +02:00
b9275646ad crazy amount of changes, both necessary and unnecessary;need to narrow down the real change later 2017-04-27 14:05:04 +02:00
9e2f2697c7 crazy amount of changes, both necessary and unnecessary;need to narrow down the real change later 2017-04-27 13:58:25 +02:00
b6b0df62b6 updaterev 2017-04-20 08:26:29 +02:00
0ba537e479 removed headersize compile error 2017-04-20 08:26:16 +02:00
75ddf535dc updaterev 2017-04-19 17:59:53 +02:00
b1de501bef updaterev 2017-04-19 17:59:46 +02:00
0f3a63f101 changed zmq default port starting at 40001 to be able to view in wireshark and removed headersize for warning 2017-04-19 17:42:38 +02:00
3b4b2d707f changes without ostringstream done 2017-04-19 10:17:39 +02:00
f405aa1733 split zmq_msg_t so its not reused 2017-04-19 10:17:30 +02:00
df0fdb7ecb changes without ostringstream done 2017-04-19 10:16:45 +02:00
91b7a87557 just started changin frm ostringstream 2017-04-18 15:32:01 +02:00
9468b9ca1e updaterev 2017-04-11 13:39:59 +02:00
d7982e178e updaterev 2017-04-11 13:39:53 +02:00
9cf5714a5b removing warnings shown from esrf debian 2017-04-11 13:39:35 +02:00
0c9ac8911a removing warnings shown from esrf debian 2017-04-11 13:39:28 +02:00
4730c8c0a9 updaterev 2017-04-11 13:31:49 +02:00
43efb8acfd removing warnings shown from esrf debian 2017-04-11 13:31:32 +02:00
6ecca8fcb0 updaterev 2017-04-11 09:03:26 +02:00
17cb63a57f updaterev 2017-04-11 09:03:19 +02:00
4f83fcb001 updaterev 2017-04-11 09:02:10 +02:00
ab94af6d29 removed verbose etc 2017-04-07 15:08:40 +02:00
7c725cc69b .c_str() must not access global variables from thread 2017-04-07 14:57:19 +02:00
f0198d2d2e alejandro's changes from ESRF 2017-04-07 14:50:17 +02:00
5ddccbdee4 changed all -lpthread to -pthread 2017-04-07 14:28:00 +02:00
8fb39b8c7e changed all -lpthread to -pthread 2017-04-07 14:27:27 +02:00
bd5293f4b1 changed all -lpthread to -pthread 2017-04-07 14:26:09 +02:00
b91180f5b2 changed all -lpthread to -pthread 2017-04-07 14:26:03 +02:00
7c3b5065a5 changed all -lpthread to -pthread 2017-04-07 14:25:09 +02:00
9aef802bea changed all -lpthread to -pthread 2017-04-07 14:24:49 +02:00
f7d85231f2 solved warnings except sscanf for uint64_t 2017-04-07 14:12:21 +02:00
5b3a911e8d solved warnings except sscanf for uint64_t 2017-04-07 14:11:34 +02:00
65f5e1c1ab strtok is not thread safe..used to set receiver udp ip etc to detector, fixed 2017-04-06 15:04:33 +02:00
839896c7e6 fixed the print file packet loss progress bug 2016-10-19 15:53:26 +02:00
4a7e246604 removed asking only 1 for framescaugh 2016-10-19 10:21:29 +02:00
7f293115c4 moved f_activate to receiver funcs from detectors funcs 2016-10-10 08:43:18 +02:00
f59f40a659 ask only 1 for frames caught for 9m 2016-10-10 08:41:03 +02:00
64fd82f92c fixed bug in gui that overwrites the individual sls file path values with the multi value, included a febl and febr temp read 2016-10-10 08:39:46 +02:00
cd232fd732 fixed bug in gui that overwrites the individual sls file path values with the multi value 2016-10-10 08:17:34 +02:00
172fa66b1f hotfix for memory leak in server 2016-08-18 11:57:36 +02:00
512 changed files with 25680 additions and 673114 deletions

View File

@ -18,7 +18,8 @@ Checks: '*,
-google-readability-todo, -google-readability-todo,
-google-readability-braces-around-statements, -google-readability-braces-around-statements,
-modernize-use-trailing-return-type, -modernize-use-trailing-return-type,
-readability-isolate-declaration' -readability-isolate-declaration,
-llvmlibc-*'
HeaderFilterRegex: \.h HeaderFilterRegex: \.h
AnalyzeTemporaryDtors: false AnalyzeTemporaryDtors: false

View File

@ -31,7 +31,7 @@ script:
deploy: deploy:
provider: script provider: script
script: find $HOME/miniconda/envs/testenv/conda-bld/${TRAVIS_OS_NAME}-64 -name "*.tar.bz2" -exec anaconda -t $CONDA_TOKEN upload --force {} \; script: find $HOME/miniconda/envs/testenv/conda-bld/${TRAVIS_OS_NAME}-64 -name "*.tar.bz2" -exec anaconda -v --show-traceback -t $CONDA_TOKEN upload --force {} \;
on: on:
branch: developer branch: developer
tags: true tags: true

View File

@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.12) cmake_minimum_required(VERSION 3.12)
project(slsDetectorPackage) project(slsDetectorPackage)
set(PROJECT_VERSION 5.0.0) set(PROJECT_VERSION 5.1.0)
include(CheckIPOSupported) include(CheckIPOSupported)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
@ -32,13 +32,16 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(SLS_MASTER_PROJECT ON) set(SLS_MASTER_PROJECT ON)
endif() endif()
option (SLS_USE_HDF5 "HDF5 File format" OFF) option(SLS_USE_HDF5 "HDF5 File format" OFF)
option (SLS_USE_TEXTCLIENT "Text Client" ON) option(SLS_BUILD_SHARED_LIBRARIES "Build shared libaries" ON)
option (SLS_USE_RECEIVER "Receiver" ON) option(SLS_USE_TEXTCLIENT "Text Client" ON)
option (SLS_USE_GUI "GUI" OFF) option(SLS_USE_DETECTOR "Detector libs" ON)
option (SLS_USE_SIMULATOR "Simulator" OFF) option(SLS_USE_RECEIVER "Receiver" ON)
option (SLS_USE_TESTS "TESTS" OFF) option(SLS_USE_RECEIVER_BINARIES "Receiver binaries" ON)
option (SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF) option(SLS_USE_GUI "GUI" OFF)
option(SLS_USE_SIMULATOR "Simulator" OFF)
option(SLS_USE_TESTS "TESTS" OFF)
option(SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF)
option(SLS_USE_SANITIZER "Sanitizers for debugging" OFF) option(SLS_USE_SANITIZER "Sanitizers for debugging" OFF)
option(SLS_USE_PYTHON "Python bindings" OFF) option(SLS_USE_PYTHON "Python bindings" OFF)
option(SLS_USE_CTBGUI "ctb GUI" OFF) option(SLS_USE_CTBGUI "ctb GUI" OFF)
@ -49,7 +52,7 @@ option(SLS_DEVEL_HEADERS "install headers for devel" OFF)
option(SLS_USE_MOENCH "compile zmq and post processing for Moench" OFF) option(SLS_USE_MOENCH "compile zmq and post processing for Moench" OFF)
# set(ClangFormat_BIN_NAME clang-format) # set(ClangFormat_BIN_NAME clang-format)
set(ClangFormat_EXCLUDE_PATTERNS "build/" set(ClangFormat_EXCLUDE_PATTERNS "build/"
"libs/" "libs/"
"slsDetectorCalibration/" "slsDetectorCalibration/"
"ctbGui/" "ctbGui/"
@ -61,20 +64,9 @@ find_package(ClangFormat)
#Enable LTO if available #Enable LTO if available
check_ipo_supported(RESULT SLS_LTO_AVAILABLE) check_ipo_supported(RESULT SLS_LTO_AVAILABLE)
message(STATUS "SLS_LTO_AVAILABLE:" ${SLS_LTO_AVAILABLE})
# # Use ld.gold if it is available and isn't disabled explicitly
# option(SLS_USE_LD_GOLD "Use GNU gold linker" ON)
# if (SLS_USE_LD_GOLD)
# execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
# if ("${LD_VERSION}" MATCHES "GNU gold")
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
# set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
# set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
# else ()
# message(WARNING "GNU gold linker isn't available, using the default system linker.")
# endif ()
# endif ()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
@ -104,6 +96,20 @@ target_compile_options(slsProjectWarnings INTERFACE
) )
#Settings for C code
add_library(slsProjectCSettings INTERFACE)
target_compile_features(slsProjectCSettings INTERFACE c_std_99)
target_compile_options(slsProjectCSettings INTERFACE
-Wall
-Wextra
-Wno-unused-parameter
-Wdouble-promotion
-Wformat=2
-Wredundant-decls
-Wdouble-promotion
-Werror=return-type
)
#Testing for minimum version for compilers #Testing for minimum version for compilers
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
@ -168,8 +174,37 @@ set(CMAKE_INSTALL_RPATH $ORIGIN)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(ZeroMQ_HINT "" CACHE STRING "Hint where ZeroMQ could be found")
#Adapted from: https://github.com/zeromq/cppzmq/
if (NOT TARGET libzmq)
if(ZeroMQ_HINT)
message(STATUS "Looking for ZeroMQ in: ${ZeroMQ_HINT}")
find_package(ZeroMQ 4
NO_DEFAULT_PATH
HINTS ${ZeroMQ_DIR}
)
else()
find_package(ZeroMQ 4 QUIET)
endif()
find_package(ZeroMQ 4 REQUIRED)
# libzmq autotools install: fallback to pkg-config
if(NOT ZeroMQ_FOUND)
message(STATUS "CMake libzmq package not found, trying again with pkg-config (normal install of zeromq)")
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/libzmq-pkg-config)
find_package(ZeroMQ 4 REQUIRED)
endif()
# TODO "REQUIRED" above should already cause a fatal failure if not found, but this doesn't seem to work
if(NOT ZeroMQ_FOUND)
message(FATAL_ERROR "ZeroMQ was not found, neither as a CMake package nor via pkg-config")
endif()
if (ZeroMQ_FOUND AND NOT TARGET libzmq)
message(FATAL_ERROR "ZeroMQ version not supported!")
endif()
endif()
if (SLS_USE_TESTS) if (SLS_USE_TESTS)
enable_testing() enable_testing()
@ -182,24 +217,16 @@ endif(SLS_USE_TESTS)
# Common functionallity to detector and receiver # Common functionallity to detector and receiver
add_subdirectory(slsSupportLib) add_subdirectory(slsSupportLib)
if (SLS_USE_TEXTCLIENT) if (SLS_USE_DETECTOR OR SLS_USE_TEXTCLIENT)
add_subdirectory(slsDetectorSoftware) add_subdirectory(slsDetectorSoftware)
endif (SLS_USE_TEXTCLIENT) endif ()
if (SLS_USE_RECEIVER) if (SLS_USE_RECEIVER)
if (SLS_USE_HDF5)
find_package(HDF5 1.10 COMPONENTS CXX REQUIRED)
endif (SLS_USE_HDF5)
add_subdirectory(slsReceiverSoftware) add_subdirectory(slsReceiverSoftware)
endif (SLS_USE_RECEIVER) endif (SLS_USE_RECEIVER)
if (SLS_USE_GUI) if (SLS_USE_GUI)
find_package(Qt4 REQUIRED) add_subdirectory(slsDetectorGui)
find_package(Qwt 6.1 REQUIRED)
if (QT4_FOUND AND QWT_FOUND)
add_subdirectory(slsDetectorGui)
endif()
endif (SLS_USE_GUI) endif (SLS_USE_GUI)
if (SLS_USE_SIMULATOR) if (SLS_USE_SIMULATOR)
@ -211,7 +238,7 @@ if (SLS_USE_INTEGRATION_TESTS)
endif (SLS_USE_INTEGRATION_TESTS) endif (SLS_USE_INTEGRATION_TESTS)
if (SLS_USE_PYTHON) if (SLS_USE_PYTHON)
set(PYBIND11_CPP_STANDARD -std=c++11) find_package (Python 3.6 COMPONENTS Interpreter Development)
add_subdirectory(libs/pybind11) add_subdirectory(libs/pybind11)
add_subdirectory(python) add_subdirectory(python)
endif(SLS_USE_PYTHON) endif(SLS_USE_PYTHON)

674
LICENSE Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

165
LICENSE.lesser Normal file
View File

@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View File

@ -4,7 +4,11 @@ Please do not update to any xxxx.xx.xx.dev0 tags. They are not releases, but tag
Use only releases with tags such as x.x.x or x.x.x-rcx. Use only releases with tags such as x.x.x or x.x.x-rcx.
### Documentation ### Documentation
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support) ##### 5.0.0 - Latest Release
Detailed documentation on the latest release can be found in the [software wiki](https://slsdetectorgroup.github.io/devdoc/index.html) and on the [official site](https://www.psi.ch/en/detectors/software).
##### Older Releases
Documentation is found in the package.
### Binaries ### Binaries
Binaries for the slsDetectorPackage are available through conda. Binaries for the slsDetectorPackage are available through conda.
@ -12,6 +16,7 @@ Binaries for the slsDetectorPackage are available through conda.
#Add conda channels #Add conda channels
conda config --add channels conda-forge conda config --add channels conda-forge
conda config --add channels slsdetectorgroup conda config --add channels slsdetectorgroup
conda config --set channel_priority strict
conda install slsdetlib #only shared lib and command line conda install slsdetlib #only shared lib and command line
conda install slsdet #python bindings (includes slsdetlib) conda install slsdet #python bindings (includes slsdetlib)
@ -29,10 +34,8 @@ git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
``` ```
#### Dependencies #### Dependencies
* Lib: c++11 compiler (gcc=>4.8), ZeroMQ 4
* Gui: Qt 4.8 and Qwt 6.0 Refer [this page](https://slsdetectorgroup.github.io/devdoc/dependencies.html) for dependencies.
* Calibration wizards and ctbGUI: ROOT
* Optional: HDF5
#### Compilation #### Compilation
@ -42,27 +45,39 @@ cmk.sh or directly with cmake for more control.
**1. Compile using script cmk.sh**<br> **1. Compile using script cmk.sh**<br>
After compiling, the libraries and executables will be found in `slsDetectorPackage/build/bin` directory<br> These are mainly aimed at those not familiar with using ccmake and cmake.
```
The binaries are generated in slsDetectorPackage/build/bin directory.
Usage: [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [-h] [-d <HDF5 directory>] [-j] <Number of threads> Usage: ./cmk.sh [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
-[no option]: only make -[no option]: only make
-c: Clean -c: Clean
-b: Builds/Rebuilds CMake files normal mode -b: Builds/Rebuilds CMake files normal mode
-p: Builds/Rebuilds Python API -p: Builds/Rebuilds Python API
-h: Builds/Rebuilds Cmake files with HDF5 package -h: Builds/Rebuilds Cmake files with HDF5 package
-d: HDF5 Custom Directory -d: HDF5 Custom Directory
-t: Build/Rebuilds only text client -k: CMake command
-r: Build/Rebuilds only receiver -l: Install directory
-g: Build/Rebuilds only gui -t: Build/Rebuilds only text client
-s: Simulator -r: Build/Rebuilds only receiver
-u: Chip Test Gui -g: Build/Rebuilds only gui
-j: Number of threads to compile through -s: Simulator
-e: Debug mode -u: Chip Test Gui
-i: Builds tests -j: Number of threads to compile through
-e: Debug mode
eg. Rebuild when you switch to a new build and compile in parallel: -i: Builds tests
./cmk.sh -bj5 -m: Manuals
-n: Manuals without compiling doxygen (only rst)
-z: Moench zmq processor
# get all options
./cmk.sh -?
# new build and compile in parallel:
./cmk.sh -bj5
```
**2. Compile without script**<br> **2. Compile without script**<br>
Use cmake to create out-of-source builds, by creating a build folder parallel to source directory. This would create a debug build with address sanitizers. Use cmake to create out-of-source builds, by creating a build folder parallel to source directory. This would create a debug build with address sanitizers.
``` ```
@ -71,3 +86,17 @@ Use cmake to create out-of-source builds, by creating a build folder parallel to
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON $ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON
$ make -j12 #or whatever number of threads wanted $ make -j12 #or whatever number of threads wanted
``` ```
To install binaries using CMake
```
git clone --recursive https://github.com/slsdetectorgroup/slsDetectorPackage.git
mkdir build && cd build
cmake ../slsDetectorPackage -DCMAKE_INSTALL_PREFIX=/your/install/path
make -j12 #or whatever number of cores you are using to build
make install
```
### Support
dhanya.thattil@psi.ch
erik.frojdh@psi.ch

View File

@ -1,70 +1,327 @@
SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2) SLS Detector Package 6.0.0-rc1 released on 08.10.2021 (Release Candidate 1)
=========================================================================== ===========================================================================
This document describes the differences between v6.0.0-rc1 and v5.1.0.
CONTENTS CONTENTS
-------- --------
1. Firmware Requirements 1. New or Changed Features
2. Download, Documentation & Support 2. Resolved Issues
3. Known Issues
4. Firmware Requirements
5. Download, Documentation & Support
1. Firmware Requirements
1. New or Changed Features
==========================
Client
------
1. [Jungfrau] Chip version
Features for chipv1.1 incorporated
Command line: chipversion, API: getchipVersion
gets chip version (1.0 or 1.1)
chipv1.1 requires config_jungfrau.txt on detector server.
2. [Jungfrau] Chip configuration (only chipv1.1)
powering on the chip and changing settings will configure the chip.
Hence, required before acquisition.
3. [Jungfrau] Settings and Gain mode
Settings can be gain0 and highgain0. Gain mode can be dynamicgain,
forceswitchg1, forceswitchg2, fixg1, fixg2, fixg0. fixg0 must be
used with EXTRA caution as you can damage the detector.
Changing settings also changes dac values of 3 dacs () and reconfigures
chip (only v1.1)
4. [Jungfrau] Storage cells (only chipv1.1)
Additional number of storage cells not applicable for chipv1.1.
Storage cell start is only allowed from 0 - 3 for chipv1.1
(0 - 15 for chipv1.0).
5. [Gotthard2][Jungfrau] Filter Resistor
Command line: filterresistor, API: getFilterResistor/ setFilterResistor
Previous Command: filter, setFilter/ getFilter
Set Filter resistor. Increasing values for increasing resistance.
[Jungfrau] only for chipv1.1. Options: [0|1]. Default is 1.
[Gotthard2] Options: [0|1|2|3]. Default is 0.
6. [Jungfrau] Filter cell (only chipv1.1)
Command line: filtercell, API: getFilterCell/ setFilterCell
Set filter cell. Options: [0-12]. Advanced user command.
7. [Jungfrau] Comparator disable time (only chipv1.1)
Command line: comp_disable_time, API: getComparatorDisableTime/
setComparatorDisableTime
One can customize the period to disable comparator.
8. [Eiger][Jungfrau] Flip rows
Command line: fliprows, API: getFlipRows/ setFlipRows
Previous command: flippeddatax, setBottom/ getBottom
[Jungfrau] Flips rows in detector only for HW v2.0.
slsReceiver and slsDetectorGui will not flip them again.
[Eiger] same as before.
9. [Eiger][Jungfrau] Read n rows
Command line: readnrows, API: getReadNRows/ setReadNRows
Previous Command: readnlines, getPartialReadout/ setPartialReadout
[Eiger] same as before
[Jungfrau] Options: 8 - 512, multiples of 8. Default is 512.
10. [Gotthard2][Jungfrau] Current source
Command line: currentsource, API: getCurrentSource, setCurrentSource
Enable or disable current source. Default is disabled.
[Gotthard2] Can only enable or disable.
[Jungfrau] Can choose to fix, select source and choose normal or low
current. Normal/ low only for chipv1.1.
Select source is 0-63 for chipv1.0 and a 64 bit mask for chipv1.1.
11. Default dac
Command line: defaultdac, API: getDefaultDac/ setDefaultDac
change default value of a dac
[Jungfrau][Mythen3] Also change default value of dac for particular
setting.
12. Reset dacs
Command line: resetdacs, API: resetToDefaultDacs
Previous command: defaultdacs
Resets dacs to their default values or hard coded values.
13. [Mythen3] Gain Capacitance
Command line: gaincaps, API: getGainCaps/ setGainCaps
Set various gain capacitances.
14. [Gotthard2] Veto Streaming from chip
Command line: veto, API: getVeto/ setVeto
This command used to mean veto streaming from detector. Now, it means
veto streaming from chip (New feature). Default is disabled.
15. [Gotthard2] Veto streaming from detector
Command line: vetostream, API: getVetoStream, setVetoStream
Options: None, local link interface, 10 10GbE, Both
Default: None
10GbE (as before) will enable 2 udp interfaces in receiver.
16. [Gotthard2] Veto algorithm
Command line: vetoalg, API: getVetoAlgorithm/ setVetoAlgorithm
Set veto algorithm for each interface.
Options: hits, raw
17. [Eiger][Gotthard2][Mythen3] Module ID
Command line: moduleid, API: getModuleId
Previous command (Eiger only): serialnumber, getSerialNumber
Unique id read from txt file on detector and streamed out in udp header.
18. [Gotthard2]
Command line: dbitpipeline, API: getDBITPipeline/ setDBITPipeline
Set pipeline to latch digital bits. Options: 0-7
19. [Eiger][Jungfrau] Round Robin commands
Command line, udp_dstlist, API: getDestinationUDPList/
setDestinationUDPList
Round robin commands at the moment does not configure the receiver.
Set multiple udp destinations in the detector to stream udp data packets
to. Upto 32 destinations. Refer documentation for details.
Command line, udp_numdst, API: getNumberofUDPDestinations
[Jungfrau] Command line, udp_firstdst, API: getFirstUDPDestination/
setFirstUDPDestination
20. Command Line Parsing
Parsing of detector index and module index has been modified to
integrate round robin index.
[detector index]-[module index]:[round robin index] [command]
It is backwards compatible.
For ease, one can also execute
sls_detector_put [module index] [command]
21. Clear Udp Destination
Command line, udp_cleardst, API: clearUDPDestinations
This is useful when changing receivers for a detector or for round robin
system.
22. Shared Memory Naming
Shared memory name has been changed to reflect a more appropriate naming
scheme.
23. [Eiger][Mythen3] Blocking trigger
Command line: blockingtrigger, API: sendSoftwareTrigger
Sends software trigger signal to detector and blocks till frames are
sent out for that trigger.
24. [Eiger] Data stream enable for ports
Command line: datastream, API: getDataStream/ setDataStream
Enable or disable each port. Default: enabled
25. Changing TCP ports
This will only affect shared memory and will not try to change the
current tcp port of the control/stop server in detector.
26. [Eiger][Jungfrau][Gotthard2] Speed
Command line: readoutspeed, readoutspeedlist API: getReadoutSpeed/ setReadoutSpeed /
getReadoutSpeedList
Previous command: speed, setSpeed/ getSpeed
[Eiger][Jungfrau] same as before.
[Gotthard2] New command to set readout speed. Options: 108, 144 (in MHz)
Detector servers
----------------
1. [Gotthard2] Bad Channels moved to a new register, default settings
including clock frequency changed
2. [Gotthard2] Updated config file in detector server
Virtual servers
----------------
1. Artifical pixel values increasing by every packet, instead of every pixel.
2. All possible features updated.
Receiver
--------
1. Frames caught in metadata
Frames caught by the master receiver is added to master file metadata.
Hdf5 and Binary version numbers changed to 6.3
2. Removed Padding option for Deactivated half modules.
3. Changing Receiver TCP ports
This will only affect shared memory and will not try to change the
current tcp port of the receiver.
Gui
----
1. [Mythen3] counters added in settings tab
2. Resolved Issues
==================
Detector Servers
----------------
1. [Gotthard2] Tolerance in time parameters.
Eg. 220 ns was being set to 215 ns, instead of 222ns.
2. [Jungfrau] Stopping in trigger mode and then switching to auto timing mode
blocks data streaming from detector. Workaround fix made in
detector server to reset core until next firmware release.
3. [Jungfrau][CTB][Moench][Gotthard][Gotthard2][Mythen3] Firmware Programming
Firmware programming incorporates more validations such as checksum of
program. Always ensure client and server are of same release before
programming firmware.
4. [Eiger] Stop sends last frame
Stop acquisition will now also send out all complete frames in fifo.
5. [Eiger] Bottom not rotated in quad mode. Fixed.
6. [Mythen3] counter mask effect on vthreshold
Setting counter mask changes vth daac values (ie. disabling sets to 2800),
vthreshold only changes for enabled counters, setting vth overwrites
dac even if counter disabled and when counters enabled, remembers set
values.
7. [Eiger] fast quad fix for loading trimbits
Receiver
--------
1. Disabled port or deactivated (half) modules will not create files.
- better control of what is built (PR)?
- cmake package has hardcoded path to zeromq library
3. Firmware Requirements
======================== ========================
Eiger Eiger
===== =====
Compatible version : 08.09.2020 (v27) Compatible version : 08.10.2021 (v29)
Jungfrau
========
Compatible version : 24.07.2020 (v1.1, PCB v1.0)
: 21.07.2020 (v2.1, PCB v2.0)
Gotthard
========
Compatible version : 08.02.2018 (50um and 25um Master)
: 09.02.2018 (25 um Slave)
Mythen3
=======
Compatible version : 25.09.2020 (development)
Gotthard2
=========
Compatible version : 25.09.2020 (development)
Moench
======
Compatible version : 10.05.2020 (v1.0)
Ctb
===
Compatible version : 10.05.2019 (v1.0)
Detector Upgrade
================
The following can be upgraded remotely:
Eiger via bit files
Jungfrau via command <.pof>
Mythen3 via command <.rbf>
Gotthard2 via command <.rbf>
Moench via command <.pof>
Ctb via command <.pof>
The following cannot be upgraded remotely:
Gotthard
Instructions available at
https://slsdetectorgroup.github.io/devdoc/firmware.html
and
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
Please refer to the link below for more details on the firmware versions.
https://www.psi.ch/en/detectors/firmware
2. Download, Documentation & Support Jungfrau
========
Compatible version : 31.08.2021 (v1.2, PCB v1.0)
: 08.10.2021 (v2.2, PCB v2.0)
Gotthard
========
Compatible version : 08.02.2018 (50um and 25um Master)
: 09.02.2018 (25 um Slave)
Mythen3
=======
Compatible version : 10.09.2021 (development)
Gotthard2
=========
Compatible version : 27.05.2021 (v1.0)
Moench
======
Compatible version : 05.10.2020 (v1.0)
Ctb
===
Compatible version : 05.10.2020 (v1.0)
Detector Upgrade
================
The following can be upgraded remotely:
Eiger via bit files
Jungfrau via command <.pof>
Mythen3 via command <.rbf>
Gotthard2 via command <.rbf>
Moench via command <.pof>
Ctb via command <.pof>
The following cannot be upgraded remotely:
Gotthard
Instructions available at
https://slsdetectorgroup.github.io/devdoc/firmware.html
and
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
5. Known Issues
===============
Receiver
--------
1. It does not handle readnrows or partial readout. Only the summary
is adjusted to print in red. However, it will still write complete
images with missing data padded. Roi will be implemented in future
that can be complimented with this feature to remove the additional
data in files.
2. Round robin is not implemented in receiver side, ie. one cannot configure
more than 1 receiver at a time. This will/might be done in the future.
6. Download, Documentation & Support
==================================== ====================================
Download Download
@ -91,6 +348,9 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
Consuming slsDetectorPackage: Consuming slsDetectorPackage:
https://slsdetectorgroup.github.io/devdoc/consuming.html https://slsdetectorgroup.github.io/devdoc/consuming.html
API Examples:
https://github.com/slsdetectorgroup/api-examples
Command Line Documentation: Command Line Documentation:
https://slsdetectorgroup.github.io/devdoc/commandline.html https://slsdetectorgroup.github.io/devdoc/commandline.html
@ -109,14 +369,18 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
Python API Example: Python API Example:
https://slsdetectorgroup.github.io/devdoc/pyexamples.html https://slsdetectorgroup.github.io/devdoc/pyexamples.html
Receivers (including custom receiver):
https://slsdetectorgroup.github.io/devdoc/receivers.html
https://slsdetectorgroup.github.io/devdoc/slsreceiver.html
TroubleShooting: TroubleShooting:
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
Further Documentation: Further Documentation:
https://www.psi.ch/en/detectors/documentation https://www.psi.ch/en/detectors/documentation
Old Release notes: Info on Releases:
https://www.psi.ch/en/detectors/latest-installation https://www.psi.ch/en/detectors/software
Support Support
@ -124,4 +388,4 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
dhanya.thattil@psi.ch dhanya.thattil@psi.ch
erik.frojdh@psi.ch erik.frojdh@psi.ch
anna.bergamaschi@psi.ch

View File

@ -1,112 +0,0 @@
# This file is originally from https://github.com/zeromq/azmq and distributed
# under Boost Software Lincese 1.0
# Boost Software License - Version 1.0 - August 17th, 2003
# Permission is hereby granted, free of charge, to any person or organization
# obtaining a copy of the software and accompanying documentation covered by
# this license (the "Software") to use, reproduce, display, distribute,
# execute, and transmit the Software, and to prepare derivative works of the
# Software, and to permit third-parties to whom the Software is furnished to
# do so, all subject to the following:
# The copyright notices in the Software and this entire statement, including
# the above license grant, this restriction and the following disclaimer,
# must be included in all copies of the Software, in whole or in part, and
# all derivative works of the Software, unless such copies or derivative
# works are solely in the form of machine-executable object code generated by
# a source language processor.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
# SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
# FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
# --------------------------------------------------------------------------------
# Find ZeroMQ Headers/Libs
# Variables
# ZMQ_ROOT - set this to a location where ZeroMQ may be found
#
# ZeroMQ_FOUND - True of ZeroMQ found
# ZeroMQ_INCLUDE_DIRS - Location of ZeroMQ includes
# ZeroMQ_LIBRARIES - ZeroMQ libraries
include(FindPackageHandleStandardArgs)
if (NOT ZMQ_ROOT)
set(ZMQ_ROOT "$ENV{ZMQ_ROOT}")
endif()
if (NOT ZMQ_ROOT)
find_path(_ZeroMQ_ROOT NAMES include/zmq.h)
else()
set(_ZeroMQ_ROOT "${ZMQ_ROOT}")
endif()
find_path(ZeroMQ_INCLUDE_DIRS NAMES zmq.h HINTS ${_ZeroMQ_ROOT}/include)
if (ZeroMQ_INCLUDE_DIRS)
set(_ZeroMQ_H ${ZeroMQ_INCLUDE_DIRS}/zmq.h)
function(_zmqver_EXTRACT _ZeroMQ_VER_COMPONENT _ZeroMQ_VER_OUTPUT)
set(CMAKE_MATCH_1 "0")
set(_ZeroMQ_expr "^[ \\t]*#define[ \\t]+${_ZeroMQ_VER_COMPONENT}[ \\t]+([0-9]+)$")
file(STRINGS "${_ZeroMQ_H}" _ZeroMQ_ver REGEX "${_ZeroMQ_expr}")
string(REGEX MATCH "${_ZeroMQ_expr}" ZeroMQ_ver "${_ZeroMQ_ver}")
set(${_ZeroMQ_VER_OUTPUT} "${CMAKE_MATCH_1}" PARENT_SCOPE)
endfunction()
_zmqver_EXTRACT("ZMQ_VERSION_MAJOR" ZeroMQ_VERSION_MAJOR)
_zmqver_EXTRACT("ZMQ_VERSION_MINOR" ZeroMQ_VERSION_MINOR)
_zmqver_EXTRACT("ZMQ_VERSION_PATCH" ZeroMQ_VERSION_PATCH)
message(STATUS "ZeroMQ version: ${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}.${ZeroMQ_VERSION_PATCH}")
# We should provide version to find_package_handle_standard_args in the same format as it was requested,
# otherwise it can't check whether version matches exactly.
if (ZeroMQ_FIND_VERSION_COUNT GREATER 2)
set(ZeroMQ_VERSION "${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}.${ZeroMQ_VERSION_PATCH}")
else()
# User has requested ZeroMQ version without patch part => user is not interested in specific patch =>
# any patch should be an exact match.
set(ZeroMQ_VERSION "${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}")
endif()
if (NOT ${CMAKE_CXX_PLATFORM_ID} STREQUAL "Windows")
find_library(ZeroMQ_LIBRARIES NAMES zmq HINTS ${_ZeroMQ_ROOT}/lib)
else()
find_library(
ZeroMQ_LIBRARY_RELEASE
NAMES
libzmq
"libzmq-${CMAKE_VS_PLATFORM_TOOLSET}-mt-${ZeroMQ_VERSION_MAJOR}_${ZeroMQ_VERSION_MINOR}_${ZeroMQ_VERSION_PATCH}"
HINTS
${_ZeroMQ_ROOT}/lib
)
find_library(
ZeroMQ_LIBRARY_DEBUG
NAMES
libzmq_d
"libzmq-${CMAKE_VS_PLATFORM_TOOLSET}-mt-gd-${ZeroMQ_VERSION_MAJOR}_${ZeroMQ_VERSION_MINOR}_${ZeroMQ_VERSION_PATCH}"
HINTS
${_ZeroMQ_ROOT}/lib)
# On Windows we have to use corresponding version (i.e. Release or Debug) of ZeroMQ because of `errno` CRT global variable
# See more at http://www.drdobbs.com/avoiding-the-visual-c-runtime-library/184416623
set(ZeroMQ_LIBRARIES optimized "${ZeroMQ_LIBRARY_RELEASE}" debug "${ZeroMQ_LIBRARY_DEBUG}")
endif()
endif()
find_package_handle_standard_args(ZeroMQ FOUND_VAR ZeroMQ_FOUND
REQUIRED_VARS ZeroMQ_INCLUDE_DIRS ZeroMQ_LIBRARIES
VERSION_VAR ZeroMQ_VERSION)
if (ZeroMQ_FOUND)
mark_as_advanced(ZeroMQ_INCLUDE_DIRS ZeroMQ_LIBRARIES ZeroMQ_VERSION
ZeroMQ_VERSION_MAJOR ZeroMQ_VERSION_MINOR ZeroMQ_VERSION_PATCH)
endif()

View File

@ -25,6 +25,12 @@ install(FILES
DESTINATION ${CMAKE_INSTALL_DIR} DESTINATION ${CMAKE_INSTALL_DIR}
) )
install(FILES
"${CMAKE_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake"
COMPONENT devel
DESTINATION ${CMAKE_INSTALL_DIR}/libzmq-pkg-config
)
if (PROJECT_LIBRARIES OR PROJECT_STATIC_LIBRARIES) if (PROJECT_LIBRARIES OR PROJECT_STATIC_LIBRARIES)
install( install(
EXPORT "${TARGETS_EXPORT_NAME}" EXPORT "${TARGETS_EXPORT_NAME}"

View File

@ -12,8 +12,21 @@ include(CMakeFindDependencyMacro)
set(SLS_USE_HDF5 "@SLS_USE_HDF5@") set(SLS_USE_HDF5 "@SLS_USE_HDF5@")
# Add optional dependencies here
find_package(ZeroMQ 4 QUIET)
# libzmq autotools install: fallback to pkg-config
if(NOT ZeroMQ_FOUND)
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/libzmq-pkg-config)
find_package(ZeroMQ 4 REQUIRED)
endif()
if(NOT ZeroMQ_FOUND)
message(FATAL_ERROR "ZeroMQ was NOT found!")
endif()
find_dependency(Threads) find_dependency(Threads)
# Add optional dependencies here
if (SLS_USE_HDF5) if (SLS_USE_HDF5)
find_dependency(HDF5) find_dependency(HDF5)
endif () endif ()

33
cmk.sh
View File

@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
CMAKE="cmake3"
BUILDDIR="build" BUILDDIR="build"
INSTALLDIR=""
HDF5DIR="/opt/hdf5v1.10.0" HDF5DIR="/opt/hdf5v1.10.0"
HDF5=0 HDF5=0
COMPILERTHREADS=0 COMPILERTHREADS=0
@ -22,13 +24,15 @@ CMAKE_PRE=""
CMAKE_POST="" CMAKE_POST=""
usage() { echo -e " usage() { echo -e "
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-j] <Number of threads> Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
-[no option]: only make -[no option]: only make
-c: Clean -c: Clean
-b: Builds/Rebuilds CMake files normal mode -b: Builds/Rebuilds CMake files normal mode
-p: Builds/Rebuilds Python API -p: Builds/Rebuilds Python API
-h: Builds/Rebuilds Cmake files with HDF5 package -h: Builds/Rebuilds Cmake files with HDF5 package
-d: HDF5 Custom Directory -d: HDF5 Custom Directory
-k: CMake command
-l: Install directory
-t: Build/Rebuilds only text client -t: Build/Rebuilds only text client
-r: Build/Rebuilds only receiver -r: Build/Rebuilds only receiver
-g: Build/Rebuilds only gui -g: Build/Rebuilds only gui
@ -75,7 +79,7 @@ For rebuilding only certain sections
" ; exit 1; } " ; exit 1; }
while getopts ":bpchd:j:trgeisumnz" opt ; do while getopts ":bpchd:k:l:j:trgeisumnz" opt ; do
case $opt in case $opt in
b) b)
echo "Building of CMake files Required" echo "Building of CMake files Required"
@ -99,6 +103,14 @@ while getopts ":bpchd:j:trgeisumnz" opt ; do
echo "New HDF5 directory: $OPTARG" echo "New HDF5 directory: $OPTARG"
HDF5DIR=$OPTARG HDF5DIR=$OPTARG
;; ;;
l)
echo "CMake install directory: $OPTARG"
INSTALLDIR="$OPTARG"
;;
k)
echo "CMake command: $OPTARG"
CMAKE="$OPTARG"
;;
j) j)
echo "Number of compiler threads: $OPTARG" echo "Number of compiler threads: $OPTARG"
COMPILERTHREADS=$OPTARG COMPILERTHREADS=$OPTARG
@ -252,7 +264,15 @@ else
fi fi
#install
if [ -n "$INSTALLDIR" ]; then
CMAKE_POST+=" -DCMAKE_INSTALL_PREFIX=$INSTALLDIR"
CMAKE_POST+=" -DCMAKE_FIND_ROOT_PATH=$INSTALLDIR"
fi
#enter build dir #enter build dir
#pushd $BUILDDIR;
cd $BUILDDIR; cd $BUILDDIR;
echo "in "$PWD echo "in "$PWD
@ -261,7 +281,7 @@ echo "in "$PWD
#cmake #cmake
if [ $REBUILD -eq 1 ]; then if [ $REBUILD -eq 1 ]; then
rm -f CMakeCache.txt rm -f CMakeCache.txt
BUILDCOMMAND="$CMAKE_PRE cmake3 $CMAKE_POST .." BUILDCOMMAND="$CMAKE_PRE $CMAKE $CMAKE_POST .."
echo $BUILDCOMMAND echo $BUILDCOMMAND
eval $BUILDCOMMAND eval $BUILDCOMMAND
fi fi
@ -305,6 +325,13 @@ else
fi fi
#install
if [ -n "$INSTALLDIR" ]; then
make install
# popd
# $CMAKE --build $BUILDDIR --target install
fi

View File

@ -8,13 +8,15 @@ cmake .. \
-DSLS_USE_TEXTCLIENT=ON \ -DSLS_USE_TEXTCLIENT=ON \
-DSLS_USE_RECEIVER=ON \ -DSLS_USE_RECEIVER=ON \
-DSLS_USE_GUI=ON \ -DSLS_USE_GUI=ON \
-DSLS_USE_MOENCH=ON\
-DSLS_USE_TESTS=ON \ -DSLS_USE_TESTS=ON \
-DSLS_USE_PYTHON=OFF \ -DSLS_USE_PYTHON=OFF \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DSLS_USE_HDF5=OFF\ -DSLS_USE_HDF5=OFF\
NCORES=$(getconf _NPROCESSORS_ONLN)
cmake --build . -- -j10 echo "Building using: ${NCORES} cores"
cmake --build . -- -j${NCORES}
cmake --build . --target install cmake --build . --target install
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2 CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2

View File

@ -2,6 +2,7 @@ python:
- 3.6 - 3.6
- 3.7 - 3.7
- 3.8 - 3.8
- 3.9
numpy: numpy:
- 1.17 - 1.17

View File

@ -1,3 +1,3 @@
#Copy the GUI #Copy the GUI
mkdir $PREFIX/bin mkdir -p $PREFIX/bin
cp build/bin/slsDetectorGui $PREFIX/bin/. cp build/install/bin/slsDetectorGui $PREFIX/bin/.

View File

@ -1,14 +1,10 @@
mkdir $PREFIX/lib mkdir -p $PREFIX/lib
mkdir $PREFIX/bin mkdir -p $PREFIX/bin
mkdir $PREFIX/include mkdir -p $PREFIX/include/sls
mkdir $PREFIX/include/slsDetectorPackage # mkdir $PREFIX/include/slsDetectorPackage
#Shared and static libraries #Shared and static libraries
# cp build/bin/libSlsDetector.so $PREFIX/lib/.
# cp build/bin/libSlsReceiver.so $PREFIX/lib/.
# cp build/bin/libSlsSupport.so $PREFIX/lib/.
cp build/install/lib/* $PREFIX/lib/ cp build/install/lib/* $PREFIX/lib/
#Binaries #Binaries
@ -20,5 +16,5 @@ cp build/install/bin/slsReceiver $PREFIX/bin/.
cp build/install/bin/slsMultiReceiver $PREFIX/bin/. cp build/install/bin/slsMultiReceiver $PREFIX/bin/.
cp build/install/include/* $PREFIX/include/ cp build/install/include/sls/* $PREFIX/include/sls
cp -r build/install/share/ $PREFIX/share cp -r build/install/share/ $PREFIX/share

View File

@ -0,0 +1,4 @@
#Copy the Moench executables
mkdir -p $PREFIX/bin
cp build/install/bin/moench04ZmqProcess $PREFIX/bin/.
cp build/install/bin/moenchZmqProcess $PREFIX/bin/.

View File

@ -59,6 +59,16 @@ outputs:
script: copy_lib.sh script: copy_lib.sh
requirements: requirements:
build:
- {{ compiler('c') }}
- {{compiler('cxx')}}
- libstdcxx-ng
- libgcc-ng
- zeromq
host:
- zeromq
run: run:
- libstdcxx-ng - libstdcxx-ng
- libgcc-ng - libgcc-ng
@ -78,6 +88,8 @@ outputs:
host: host:
- python - python
- {{ pin_subpackage('slsdetlib', exact=True) }}
run: run:
- libstdcxx-ng - libstdcxx-ng
@ -94,8 +106,29 @@ outputs:
- name: slsdetgui - name: slsdetgui
script: copy_gui.sh script: copy_gui.sh
requirements: requirements:
build:
- {{ compiler('c') }}
- {{compiler('cxx')}}
- {{ pin_subpackage('slsdetlib', exact=True) }}
- qwt 6.*
run: run:
- {{ pin_subpackage('slsdetlib', exact=True) }} - {{ pin_subpackage('slsdetlib', exact=True) }}
- qwt 6.* - qwt 6.*
- qt 4.8.* - qt 4.8.*
- expat - expat
- name: moenchzmq
script: copy_moench.sh
requirements:
build:
- {{ compiler('c') }}
- {{compiler('cxx')}}
- {{ pin_subpackage('slsdetlib', exact=True) }}
run:
- {{ pin_subpackage('slsdetlib', exact=True) }}
- expat

View File

@ -16,6 +16,7 @@
#include <TColor.h> #include <TColor.h>
#include <TTimer.h> #include <TTimer.h>
#include <TH2F.h> #include <TH2F.h>
#include <TSystem.h>
#include <stdio.h> #include <stdio.h>
@ -25,8 +26,8 @@
#include "ctbAcquisition.h" #include "ctbAcquisition.h"
#include "ctbDefs.h" #include "ctbDefs.h"
#include "Detector.h" #include "sls/Detector.h"
#include "sls_detector_defs.h" #include "sls/sls_detector_defs.h"
#include "ctbMain.h" #include "ctbMain.h"
#include "moench03CtbData.h" #include "moench03CtbData.h"
//#include "moench03TCtbData.h" //#include "moench03TCtbData.h"
@ -43,7 +44,7 @@
#include "moench04CtbZmqData.h" #include "moench04CtbZmqData.h"
#include "moench04CtbZmq10GbData.h" #include "moench04CtbZmq10GbData.h"
#include "deserializer.h" #include "deserializer.h"
#include "detectorData.h" #include "sls/detectorData.h"
#include "imageZmq16bit.h" #include "imageZmq16bit.h"
#include "imageZmq32bit.h" #include "imageZmq32bit.h"

View File

@ -25,7 +25,7 @@
#include "ctbAdcs.h" #include "ctbAdcs.h"
#include "ctbDefs.h" #include "ctbDefs.h"
#include "Detector.h" #include "sls/Detector.h"
using namespace std; using namespace std;

View File

@ -10,8 +10,8 @@
#include "ctbDacs.h" #include "ctbDacs.h"
#include "ctbDefs.h" #include "ctbDefs.h"
#include "Detector.h" #include "sls/Detector.h"
#include "sls_detector_defs.h" #include "sls/sls_detector_defs.h"
using namespace std; using namespace std;

View File

@ -4,8 +4,8 @@
#include <stdexcept> #include <stdexcept>
#include <chrono> #include <chrono>
//#include "sls_detector_exceptions.h" //#include "sls/sls_detector_exceptions.h"
//#include "ansi.h" //#include "sls/ansi.h"
#define RED "\x1b[31m" #define RED "\x1b[31m"
#define RESET "\x1b[0m" #define RESET "\x1b[0m"
#define BOLD "\x1b[1m" #define BOLD "\x1b[1m"

View File

@ -9,8 +9,8 @@
#include <fstream> #include <fstream>
#include <string> #include <string>
#include "Detector.h" #include "sls/Detector.h"
#include "sls_detector_defs.h" #include "sls/sls_detector_defs.h"
//#include "sls_receiver_defs.h" //#include "sls_receiver_defs.h"
#include "ctbMain.h" #include "ctbMain.h"
#include "ctbDefs.h" #include "ctbDefs.h"

View File

@ -34,7 +34,7 @@
#include <fstream> #include <fstream>
#include <string> #include <string>
#include "Detector.h" #include "sls/Detector.h"
#include "ctbDefs.h" #include "ctbDefs.h"
#include "ctbMain.h" #include "ctbMain.h"
#include "ctbDacs.h" #include "ctbDacs.h"

View File

@ -25,7 +25,7 @@
#include "ctbPattern.h" #include "ctbPattern.h"
#include "ctbDefs.h" #include "ctbDefs.h"
#include "Detector.h" #include "sls/Detector.h"
#include <chrono> #include <chrono>
using namespace std; using namespace std;

View File

@ -13,8 +13,8 @@
#include "ctbDefs.h" #include "ctbDefs.h"
#include "ctbDacs.h" #include "ctbDacs.h"
#include "ctbPowers.h" #include "ctbPowers.h"
#include "Detector.h" #include "sls/Detector.h"
#include "sls_detector_defs.h" #include "sls/sls_detector_defs.h"
using namespace std; using namespace std;

View File

@ -35,7 +35,7 @@
#include "ctbSignals.h" #include "ctbSignals.h"
#include "ctbDefs.h" #include "ctbDefs.h"
#include "Detector.h" #include "sls/Detector.h"
using namespace std; using namespace std;

View File

@ -10,8 +10,8 @@
#include "ctbSlowAdcs.h" #include "ctbSlowAdcs.h"
#include "ctbDefs.h" #include "ctbDefs.h"
#include "Detector.h" #include "sls/Detector.h"
#include "sls_detector_defs.h" #include "sls/sls_detector_defs.h"
using namespace std; using namespace std;

View File

@ -30,3 +30,18 @@ Commands
----------- -----------
.. include:: ../commands.rst .. include:: ../commands.rst
Depreciated commands
------------------------
.. note ::
All the dac commands are preceded with the **dac** command. Use command **daclist** to get correct list of dac command arguments for current detector.
.. csv-table:: Depreciated commands
:file: ../depreciated.csv
:widths: 35, 35
:header-rows: 1

View File

@ -9,7 +9,7 @@ CMake approaches.
One can test with :ref:`detector simulators<Virtual Detector Servers>` before testing the API with a real detector or when a real detector is not at hand. One can test with :ref:`detector simulators<Virtual Detector Servers>` before testing the API with a real detector or when a real detector is not at hand.
CMake: slsDetectorPackage as submodule in your project CMake: slsDetectorPackage as submodule in your project
--------------------------------------- ---------------------------------------------------------------
If you are using CMake to build your integration and want to build everything If you are using CMake to build your integration and want to build everything
in one go, we support adding slsDetectorPackage as a subfolder in your cmake project. in one go, we support adding slsDetectorPackage as a subfolder in your cmake project.
@ -91,7 +91,7 @@ manually when invoking g++. This can sometimes be handy for a quick try.
.. code-block:: cpp .. code-block:: cpp
#include "Detector.h" #include "sls/Detector.h"
#include <iostream> #include <iostream>
int main(){ int main(){

View File

@ -36,7 +36,7 @@ Running a config file [e1]
.. code-block:: cpp .. code-block:: cpp
#include "Detector.h" #include "sls/Detector.h"
... ...
sls::Detector det; sls::Detector det;
det.loadConfig("path/to/config/file.config"); det.loadConfig("path/to/config/file.config");
@ -105,7 +105,7 @@ as converting to floating point.
.. code-block:: cpp .. code-block:: cpp
#include "Detector.h" #include "sls/Detector.h"
#include <chrono> #include <chrono>
... ...
std::chrono::microseconds t0{500}; std::chrono::microseconds t0{500};

View File

@ -12,32 +12,7 @@ Download
- detector server corresponding to package in slsDetectorPackage/serverBin - detector server corresponding to package in slsDetectorPackage/serverBin
- bit files - `bit files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
.. list-table::
:widths: 25 10 30 25 10
:header-rows: 1
* - Software
- Hardware
- Firmware Date
- Firmware Link
- Comments
* - v5.0.0-rcx
-
- 08.09.2020
- `v27 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/eiger/v27/>`__
-
* - v4.0.0 - v4.2.0
-
- 30.07.2019
- `v24 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/eiger/v24/>`__
-
* - v3.1.0 - v3.1.5
-
- 17.08.2017
- `v20 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/eiger/v20/>`__
-
Upgrade Upgrade
^^^^^^^^ ^^^^^^^^
@ -116,37 +91,7 @@ Download
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
- detector server corresponding to package in slsDetectorPackage/serverBin - detector server corresponding to package in slsDetectorPackage/serverBin
- pof files - `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
.. list-table::
:widths: 25 10 30 25 10
:header-rows: 1
* - Software
- Hardware
- Firmware Date
- Firmware Link
- Comments
* - v5.0.0-rcx
- 2.0
- 21.07.2020
- `v2.1 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v2_1/jungfrau_v2_1.pof>`__
-
* - v5.0.0-rcx
- 1.0
- 24.07.2020
- `v1.1 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v1_1/jungfrau_v1_1.pof>`__
-
* - v4.0.1 - v4.2.0
- 1.0
- 06.12.2018
- `v0.7 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v0_7/jungfrau_v0_7.pof>`__
-
* - v3.1.0 - v3.1.5
- 1.0
- 13.11.2017
- `v0.6 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v0_6/jungfrau_v0_6.pof>`__
-
Upgrade (from v4.x.x) Upgrade (from v4.x.x)
@ -156,7 +101,7 @@ Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you
#. Tftp must be installed on pc. #. Tftp must be installed on pc.
#. Update client package to the latest (5.0.0-rc1). #. Update client package to the latest (5.x.x).
#. Disable server respawning or kill old server #. Disable server respawning or kill old server
.. code-block:: bash .. code-block:: bash
@ -204,11 +149,13 @@ Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you
jungfrauDetectorServervxxx --stop-server 1953 jungfrauDetectorServervxxx --stop-server 1953
Upgrade (from v5.0.0-rcx) Upgrade (from v5.0.0)
^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware. Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
Always ensure that the client and server software are of the same release.
#. Program from console #. Program from console
.. code-block:: bash .. code-block:: bash
@ -230,31 +177,8 @@ Download
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
- detector server corresponding to package in slsDetectorPackage/serverBin - detector server corresponding to package in slsDetectorPackage/serverBin
- pof files - `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
.. list-table::
:widths: 15 15 15 15 5
:header-rows: 1
* - Software
- Hardware
- Firmware Date
- Firmware Link
- Comments
* - All versions
- 50um
- 08.02.2018
- `50um <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/gotthard_I/50um/gotthard_I_50um.pof>`__
-
* - All versions
- 25um (master)
- 08.02.2018
- `25um (master) <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/gotthard_I/25um/master/gotthard_I_25um_master.pof>`__
-
* - All versions
- 25um (slave)
- 09.02.2018
- `25um (slave) <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/gotthard_I/25um/slave/gotthard_I_25um_slave.pof>`__
-
.. _firmware upgrade using blaster for blackfin: .. _firmware upgrade using blaster for blackfin:
@ -294,26 +218,14 @@ Download
- detector server corresponding to package in slsDetectorPackage/serverBin - detector server corresponding to package in slsDetectorPackage/serverBin
- rbf files - rbf files (in developement)
.. list-table::
:widths: 25 10 30 25 10
:header-rows: 1
* - Software
- Hardware
- Firmware Date
- Firmware Link
- Comments
* - v5.0.0-rcx
-
- 25.09.2020
-
- development
Upgrade (from v5.0.0-rcx) Upgrade (from v5.0.0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Always ensure that the client and server software are of the same release.
#. Program from console #. Program from console
.. code-block:: bash .. code-block:: bash
@ -337,25 +249,14 @@ Download
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
- detector server corresponding to package in slsDetectorPackage/serverBin - detector server corresponding to package in slsDetectorPackage/serverBin
- rbf files - rbf files (in development)
.. list-table::
:widths: 25 10 30 25 10
:header-rows: 1
* - Software
- Hardware
- Firmware Date
- Firmware Link
- Comments
* - v5.0.0-rcx
-
- 25.09.2020
-
- development
Upgrade (from v5.0.0-rcx) Upgrade (from v5.0.0)
^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
Always ensure that the client and server software are of the same release.
#. Program from console #. Program from console
.. code-block:: bash .. code-block:: bash
@ -375,32 +276,16 @@ Download
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
- detector server corresponding to package in slsDetectorPackage/serverBin - detector server corresponding to package in slsDetectorPackage/serverBin
- pof files - `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
.. list-table::
:widths: 25 10 30 25 10
:header-rows: 1
* - Software
- Hardware
- Firmware Date
- Firmware Link
- Comments
* - v5.0.0-rcx
- EPCQ128
- 05.10.2020
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/moench/EPCQ128/v1_0/moench_v1_0_201005.pof>`__
-
* - v5.0.0-rcx
- EPCS128
- 05.10.2020
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/moench/EPCS128/v1_0/moench_v1_0_201005.pof>`__
-
Upgrade (from v5.0.0-rcx) Upgrade (from v5.0.0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware. Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
Always ensure that the client and server software are of the same release.
#. Program from console #. Program from console
.. code-block:: bash .. code-block:: bash
@ -419,32 +304,16 @@ Download
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
- detector server corresponding to package in slsDetectorPackage/serverBin - detector server corresponding to package in slsDetectorPackage/serverBin
- pof files - `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
.. list-table::
:widths: 25 10 30 25 10
:header-rows: 1
* - Software
- Hardware
- Firmware Date
- Firmware Link
- Comments
* - v5.0.0-rcx
- EPCQ128
- 05.10.2020
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/ctb/EPCQ128/v1_0/ctb_v1_0_201005.pof>`__
-
* - v5.0.0-rcx
- EPCS128
- 05.10.2020
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/ctb/EPCS128/v1_0/ctb_v1_0_201005.pof>`__
-
Upgrade (from v5.0.0-rcx) Upgrade (from v5.0.0)
^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware. Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
Always ensure that the client and server software are of the same release.
#. Program from console #. Program from console
.. code-block:: bash .. code-block:: bash
@ -462,11 +331,12 @@ Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you
Firmware Troubleshooting with blackfin Firmware Troubleshooting with blackfin
---------------------------------------- ----------------------------------------
#. v4.x.x client after programming will most likely reboot the blackfin processor, regardless of error. 1. v4.x.x client after programming will most likely reboot the blackfin processor, regardless of error.
#. v5.x.x-rcx client after programming will not reboot the blackfin processor, if error occurred. 2. v5.x.x-rcx client after programming will not reboot the blackfin processor, if error occurred.
3. If a reboot occured with an incomplete firmware in flash, the blackfin will most likely not find the mtd3 drive. To see if this drive exists:
#. If a reboot occured with an incomplete firmware in flash, the blackfin will most likely not find the mtd3 drive. To see if this drive exists:
.. code-block:: bash .. code-block:: bash
# connect to the board # connect to the board
@ -482,28 +352,45 @@ Firmware Troubleshooting with blackfin
4. If one can see the mtd3 drive, one can already try to flash again using the **programfpga** command (without rebooting blackfin or detector). 4. If one can see the mtd3 drive, one can already try to flash again using the **programfpga** command (without rebooting blackfin or detector).
#. If one can't list it, read the next section to try to get the blackfin to list it. 5. If one can't list it, read the next section to try to get the blackfin to list it.
How to get back mtd3 drive remotely How to get back mtd3 drive remotely (copying new kernel)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This might take a few reruns (maybe even 10) until the mtd drive is accessed by the blackfin upon linux startup.
.. code-block:: bash .. code-block:: bash
# step 1: connect to the board # step 1: get the kernel image (uImage.lzma) from slsdetectorgroup
# and copy it to pc's tftp folder
# step 2: connect to the board
telnet bchipxxx telnet bchipxxx
# step 2: check if mtd3 drive listed #step 3: go to directory for space
more /proc/mtd cd /var/tmp/
# step 3: tell fpga not to touch flash and reboot # step 3: copy kernel to board
echo 9 > /sys/class/gpio/export; tftp pcxxx -r uImage.lzma -g
echo out > /sys/class/gpio/gpio9/direction;
echo 0 > /sys/class/gpio/gpio9/value; # step 4: verify kernel copied properly
ls -lrt
# step 5: erase flash
flash_eraseall /dev/mtd1
# step 6: copy new image to kernel drive
cat uImage.lzma > /dev/mtd1
# step 7:
sync
# step 8:
reboot reboot
# step 4: repeat steps 1 - 3 until you see the mtd3 drive # step 9: verification
telnet bchipxxx
uname -a # verify kernel date
more /proc/mtd # verify mtd3 is listed
Last Resort using USB Blaster Last Resort using USB Blaster
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -10,8 +10,8 @@
#include <vector> #include <vector>
#include "CmdProxy.h" #include "CmdProxy.h"
#include "Detector.h" #include "sls/Detector.h"
#include "sls_detector_defs.h" #include "sls/sls_detector_defs.h"
std::string replace_all(const std::string &src, const std::string &from, std::string replace_all(const std::string &src, const std::string &from,
const std::string &to) { const std::string &to) {
@ -51,4 +51,11 @@ int main() {
auto help = replace_all(tmp, "\n\t", "\n\t\t| "); auto help = replace_all(tmp, "\n\t", "\n\t\t| ");
fs << '\t' << cmd << usage << help << "\n"; fs << '\t' << cmd << usage << help << "\n";
} }
std::ofstream fs2("depreciated.csv");
fs2 << "Old, New\n";
auto cmds = proxy.GetDepreciatedCommands();
for (auto it : cmds) {
fs2 << it.first << ", " << it.second << '\n';
}
} }

View File

@ -21,6 +21,8 @@
Installation Installation
============================================== ==============================================
.. _build from source using cmake:
Build from source using CMake Build from source using CMake
--------------------------------- ---------------------------------
@ -47,25 +49,39 @@ The easiest way to configure options is to use the ccmake utility.
Build using cmk.sh script Build using cmk.sh script
------------------------- -------------------------
These are mainly aimed at those not familiar with using ccmake and cmake.
.. code-block:: bash .. code-block:: bash
The binaries are generated in slsDetectorPackage/build/bin directory. The binaries are generated in slsDetectorPackage/build/bin directory.
# new build and make with 9 parallel threads Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
./cmk.sh -cbj9 -[no option]: only make
-c: Clean
# build with python -b: Builds/Rebuilds CMake files normal mode
./cmk.sh -bpj9 -p: Builds/Rebuilds Python API
-h: Builds/Rebuilds Cmake files with HDF5 package
# build with GUI -d: HDF5 Custom Directory
./cmk.sh -bgj9 -k: CMake command
-l: Install directory
# build with hdf5 -t: Build/Rebuilds only text client
./cmk.sh -hj9 -d [path of hdf5 dir] -r: Build/Rebuilds only receiver
-g: Build/Rebuilds only gui
-s: Simulator
-u: Chip Test Gui
-j: Number of threads to compile through
-e: Debug mode
-i: Builds tests
-m: Manuals
-n: Manuals without compiling doxygen (only rst)
-z: Moench zmq processor
# get all options # get all options
./cmk.sh -? ./cmk.sh -?
# new build and compile in parallel:
./cmk.sh -bj5
Install binaries using conda Install binaries using conda
-------------------------------- --------------------------------

View File

@ -67,9 +67,6 @@ exposed to Python through pybind11.
.. autoclass:: readoutMode .. autoclass:: readoutMode
:undoc-members: :undoc-members:
.. autoclass:: masterFlags
:undoc-members:
.. autoclass:: burstMode .. autoclass:: burstMode
:undoc-members: :undoc-members:

View File

@ -219,7 +219,7 @@ The enums can be found in slsdet.enums
>>> [e for e in dir(slsdet.enums) if not e.startswith('_')] >>> [e for e in dir(slsdet.enums) if not e.startswith('_')]
['burstMode', 'clockIndex', 'dacIndex', ['burstMode', 'clockIndex', 'dacIndex',
'detectorSettings', 'detectorType', 'dimension', 'externalSignalFlag', 'detectorSettings', 'detectorType', 'dimension', 'externalSignalFlag',
'fileFormat', 'frameDiscardPolicy', 'masterFlags', 'fileFormat', 'frameDiscardPolicy',
'readoutMode', 'runStatus', 'speedLevel', 'timingMode', 'readoutMode', 'runStatus', 'speedLevel', 'timingMode',
'timingSourceType'] 'timingSourceType']

View File

@ -1,6 +1,6 @@
Receiver Receiver
============================================== ==============================================
.. doxygenclass:: Receiver .. doxygenclass:: sls::Receiver
:members: :members:
.. :undoc-members: .. :undoc-members:

View File

@ -48,3 +48,24 @@ Custom Receiver
| Cannot use "auto" for **udp_dstip**. | Cannot use "auto" for **udp_dstip**.
| Also ensure that there are no **rx_** commands in the config file. These commands are for configuring the slsReceiver. | Also ensure that there are no **rx_** commands in the config file. These commands are for configuring the slsReceiver.
Example of a custom receiver config file
* The main difference is the lack of **rx_** commands or file commands (eg. fwrite, fpath) and the udp_dstmac is required in config file.
.. code-block:: bash
# detector hostname
hostname bchip052
# udp destination port (receiver)
udp_dstport 50004
# udp destination ip (receiver)
udp_dstip 10.0.1.100
# udp source ip (same subnet as udp_dstip)
udp_srcip 10.0.1.184
# udp destination mac
udp_dstmac 22:47:d5:48:ad:ef

View File

@ -34,3 +34,62 @@ Detector Servers include:
* Client requests for detector status, stop acquisition, temperature, advanced read/write registers. * Client requests for detector status, stop acquisition, temperature, advanced read/write registers.
When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel. When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel.
Automatic start
------------------
One can start the on-board detector server automatically upon powering on the board.
#. Create a soft link to the binary on board
:
.. code-block:: bash
ln -sf someDetectorServervx.x.x someDetectorServer
#. Do the following depending on the detector type :
Eiger
.. code-block:: bash
# create script in rc5.d on the board
vi /etc/rc5.d/S50board_com.sh
# enter the following (edit server name)
#! /bin/sh
/home/root/executables/eigerDetectorServer &> /dev/null &
exit 0
Jungfrau | Moench | CTB | Gotthard I
.. code-block:: bash
# Edit inittab on board
vi /etc/inittab
# enter the following line
ttyS0::respawn:/./xxxDetectorServer
Gotthard II | Mythen III
.. code-block:: bash
# create script in init.d on board
vi /etc/init.d/S99detServer.sh
# enter the following (edit server name)
#! /bin/sh
cd /root >> /dev/null
/root/xxxDetectorServer >> /dev/null &
#. Sync, reboot and verify
:
.. code-block:: bash
sync
reboot
# verify
ps -ef | grep xxxDetectorServer

View File

@ -151,9 +151,20 @@ Please refer to Receiver PC Tuning options and slsReceiver Tuning under `Trouble
Using Callbacks Using Callbacks
---------------- ----------------
| One can get a callback in the receiver for each frame to: One can get a callback in the receiver for each frame to:
* manipulate the data that will be written to file, or * manipulate the data that will be written to file, or
* disable file writing in slsReceiver and take care of the data for each call back * disable file writing in slsReceiver and take care of the data for each call back
| When handling callbacks, the control should be returned as soon as possible, to prevent packet loss from fifo being full. When handling callbacks, the control should be returned as soon as possible, to prevent packet loss from fifo being full.
**Example**
* `main cpp file <https://github.com/slsdetectorgroup/api-examples/blob/master/e4-receiver_callbacks.cpp>`_
* `cmake file <https://github.com/slsdetectorgroup/api-examples/blob/master/CMakeLists.txt>`_.
* how to install the slsDetectorPackage is provided :ref:`here <build from source using cmake>`.
* compile the example **e4-rxr** by:
.. code-block:: bash
cmake ../path/to/your/source -DCMAKE_PREFIX_PATH=/path/to/sls/install
make

View File

@ -1,6 +1,10 @@
Troubleshooting Troubleshooting
================= =================
If something is missing, don't hesitate to
open an issue at our `github repo issues
<https://github.com/slsdetectorgroup/slsDetectorPackage/issues>`_.
Common Common
------ ------

View File

@ -60,6 +60,7 @@ Client
sls_detector_put virtual 2 1912 sls_detector_put virtual 2 1912
Use the same in the config file. Use the same in the config file.
Detector API has a method 'isVirtualDetectorServer' to check if on-board detector server is virtual.
Sample Config file Sample Config file

View File

@ -0,0 +1,39 @@
# detector hostname
hostname bchip052
# do not use any rx_ or "file" (eg. fwrite, fpath) commands, which go to slsReceiver/slsMultiReceiver
# udp destination port (receiver)
udp_dstport 50004
# udp destination ip (receiver)
udp_dstip 10.0.1.100
# udp source ip (same subnet as udp_dstip)
udp_srcip 10.0.1.184
# udp destination mac
udp_dstmac 22:47:d5:48:ad:ef
# PCBv2.0 (using 2 interfaces, top)
udp_dstport2 50005
udp_dstip2 10.0.2.100
udp_srcip2 10.0.2.184
udp_dstmac2 22:47:d5:48:ad:ff
# enable two interfaces
numinterfaces 2
# select inner interface(effective only when numinterfaces is 1)
#selinterface 1
# power on chip
powerchip 1
# high voltage
highvoltage 200
# timing to trigger
timing trigger

View File

@ -1,7 +1,8 @@
initialchecks 0 #initialchecks 0
############################################# #############################################
### edit with hostname or IP address of your detector ### edit with hostname or IP address of your detector
############################################ ############################################
#hostname bchip181+
hostname bchip181+ hostname bchip181+
############################################# #############################################
@ -27,7 +28,7 @@ rx_zmqport 50003
############################################# #############################################
### edit with 1 Gbs IP of PC where you will run the GUI ### edit with 1 Gbs IP of PC where you will run the GUI
############################################ ############################################
zmqip 129.129.202.136 zmqip 129.129.202.98
zmqport 50001 zmqport 50001
@ -39,11 +40,12 @@ rx_zmqstream 1
frames 100000 frames 100000
period 0.0006 period 0.0006
exptime 0.00035
############################################# #############################################
### edit with directory you want to write to ### edit with directory you want to write to
############################################ ############################################
fpath /mnt/moench_data/scratch/ fpath /mnt/moench_data/scratch1/
fwrite 0 fwrite 0

View File

@ -1,6 +1,6 @@
#include "DetectorImpl.h" #include "DetectorImpl.h"
#include "catch.hpp" #include "catch.hpp"
#include "string_utils.h" #include "sls/string_utils.h"
#include "tests/globals.h" #include "tests/globals.h"
#include <iostream> #include <iostream>

View File

@ -1,14 +1,14 @@
#include "catch.hpp" #include "catch.hpp"
#include "ClientSocket.h"
#include "DetectorImpl.h" #include "DetectorImpl.h"
#include "Module.h" #include "Module.h"
#include "logger.h" #include "sls/ClientSocket.h"
#include "sls_detector_defs.h" #include "sls/logger.h"
#include "sls/sls_detector_defs.h"
#include "Timer.h" #include "sls/Timer.h"
#include "sls_detector_funcs.h" #include "sls/sls_detector_funcs.h"
#include <iostream> #include <iostream>
#include <vector> #include <vector>
#define VERBOSE #define VERBOSE
@ -446,8 +446,8 @@ TEST_CASE("Chiptestboard Dbit offset, list, sampling, advinvert",
CHECK(m.readRegister(0x7b) == 0x1003E); CHECK(m.readRegister(0x7b) == 0x1003E);
} }
TEST_CASE("Eiger or Jungfrau startingfnum", TEST_CASE("Eiger or Jungfrau nextframenumber",
"[.eigerintegration][.jungfrauintegration][startingfnum]") { "[.eigerintegration][.jungfrauintegration][nextframenumber]") {
SingleDetectorConfig c; SingleDetectorConfig c;
// pick up multi detector from shm id 0 // pick up multi detector from shm id 0
@ -465,8 +465,8 @@ TEST_CASE("Eiger or Jungfrau startingfnum",
// starting fnum // starting fnum
uint64_t val = 8; uint64_t val = 8;
m.setStartingFrameNumber(val); m.setNextFrameNumber(val);
CHECK(m.getStartingFrameNumber() == val); CHECK(m.getNextFrameNumber() == val);
CHECK(m.acquire() == slsDetectorDefs::OK); CHECK(m.acquire() == slsDetectorDefs::OK);
CHECK(m.getReceiverCurrentFrameIndex() == val); CHECK(m.getReceiverCurrentFrameIndex() == val);
@ -474,21 +474,21 @@ TEST_CASE("Eiger or Jungfrau startingfnum",
CHECK(m.acquire() == slsDetectorDefs::OK); CHECK(m.acquire() == slsDetectorDefs::OK);
CHECK(m.getReceiverCurrentFrameIndex() == val); CHECK(m.getReceiverCurrentFrameIndex() == val);
CHECK_THROWS_AS(m.setStartingFrameNumber(0), sls::RuntimeError); CHECK_THROWS_AS(m.setNextFrameNumber(0), sls::RuntimeError);
if (m.getDetectorTypeAsString() == "Eiger") { if (m.getDetectorTypeAsString() == "Eiger") {
val = 281474976710655; val = 281474976710655;
} else if (m.getDetectorTypeAsString() == "Jungfrau") { } else if (m.getDetectorTypeAsString() == "Jungfrau") {
val = 18446744073709551615; val = 18446744073709551615;
} }
m.setStartingFrameNumber(val); m.setNextFrameNumber(val);
CHECK(m.getStartingFrameNumber() == val); CHECK(m.getNextFrameNumber() == val);
CHECK(m.acquire() == slsDetectorDefs::OK); CHECK(m.acquire() == slsDetectorDefs::OK);
CHECK(m.getReceiverCurrentFrameIndex() == val); CHECK(m.getReceiverCurrentFrameIndex() == val);
CHECK(m.getStartingFrameNumber() == (val + 1)); CHECK(m.getNextFrameNumber() == (val + 1));
} }
TEST_CASE("Eiger readnlines", "[.eigerintegration][readnlines]") { TEST_CASE("Eiger partialread", "[.eigerintegration][partialread]") {
SingleDetectorConfig c; SingleDetectorConfig c;
// pick up multi detector from shm id 0 // pick up multi detector from shm id 0
@ -501,16 +501,16 @@ TEST_CASE("Eiger readnlines", "[.eigerintegration][readnlines]") {
m.setDynamicRange(16); m.setDynamicRange(16);
m.enableTenGigabitEthernet(0); m.enableTenGigabitEthernet(0);
m.setReadNLines(256); m.setPartialReadout(256);
CHECK(m.getReadNLines() == 256); CHECK(m.getPartialReadout() == 256);
m.setReadNLines(1); m.setPartialReadout(1);
CHECK(m.getReadNLines() == 1); CHECK(m.getPartialReadout() == 1);
m.setDynamicRange(8); m.setDynamicRange(8);
m.setReadNLines(256); m.setPartialReadout(256);
CHECK(m.getReadNLines() == 256); CHECK(m.getPartialReadout() == 256);
CHECK_THROWS_AS(m.setReadNLines(1), sls::RuntimeError); CHECK_THROWS_AS(m.setPartialReadout(1), sls::RuntimeError);
CHECK(m.getReadNLines() == 256); CHECK(m.getPartialReadout() == 256);
CHECK_THROWS_AS(m.setReadNLines(0), sls::RuntimeError); CHECK_THROWS_AS(m.setPartialReadout(0), sls::RuntimeError);
m.setReadNLines(256); m.setPartialReadout(256);
} }

View File

@ -1,6 +1,6 @@
#include "DetectorImpl.h" #include "DetectorImpl.h"
#include "catch.hpp" #include "catch.hpp"
#include "string_utils.h" #include "sls/string_utils.h"
#include "tests/globals.h" #include "tests/globals.h"
#include <iostream> #include <iostream>

View File

@ -0,0 +1,27 @@
#From: https://github.com/zeromq/cppzmq/
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON)
find_package(PkgConfig)
pkg_check_modules(PC_LIBZMQ QUIET libzmq)
set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION})
find_library(ZeroMQ_LIBRARY NAMES libzmq.so libzmq.dylib libzmq.dll
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq-static.a libzmq.a libzmq.dll.a
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
if(ZeroMQ_LIBRARY OR ZeroMQ_STATIC_LIBRARY)
set(ZeroMQ_FOUND ON)
endif()
if (TARGET libzmq)
# avoid errors defining targets twice
return()
endif()
add_library(libzmq SHARED IMPORTED)
set_property(TARGET libzmq PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
set_property(TARGET libzmq PROPERTY IMPORTED_LOCATION ${ZeroMQ_LIBRARY})
add_library(libzmq-static STATIC IMPORTED ${PC_LIBZMQ_INCLUDE_DIRS})
set_property(TARGET libzmq-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
set_property(TARGET libzmq-static PROPERTY IMPORTED_LOCATION ${ZeroMQ_STATIC_LIBRARY})

View File

@ -1,51 +0,0 @@
DESTDIR?=docs
#manual-api manual-calwiz manual-client manual-gui manual-main
MAINDIRS= manual-main manual-api manual-calwiz manual-client manual-gui
#manual-calwiz manual-calwiz manual-gui manual-client manual-api
CLEANDIRS=$(MAINDIRS:manual-%=clean-%)
PDFDIRS=$(MAINDIRS:manual-%=pdf-%)
HTMLDIRS=$(MAINDIRS:manual-%=html-%)
ALLDIRS=$(MAINDIRS:manual-%=all-%)
all: $(ALLDIRS)
# $(shell test -d $(DESTDIR)/pdf && rm -fr $(DESTDIR)/pdf)
# mv pdf $(DESTDIR)
# $(shell test -d $(DESTDIR)/html && rm -fr $(DESTDIR)/html)
# mv html $(DESTDIR)
pdf: $(PDFDIRS)
# $(shell test -d $(DESTDIR)/pdf && rm -fr $(DESTDIR)/pdf)
# mv pdf $(DESTDIR)
html: $(HTMLDIRS)
# $(shell test -d $(DESTDIR)/html && rm -fr $(DESTDIR)/html)
# mv html $(DESTDIR)
clean: $(CLEANDIRS)
rm -fr $(DESTDIR)/pdf
rm -fr $(DESTDIR)/html
all-%:
echo
cd $(@:all-%=manual-%) && make all
pdf-%:
cd $(@:pdf-%=manual-%) && make pdf
html-%:
cd $(@:html-%=manual-%) && make html
clean-%:
cd $(@:clean-%=manual-%) && make clean
#<23><>$(@D)<29><> The directory part of the file name of the target, with the trailing slash removed. If the value of <20><>$@<40><> is dir/foo.o then <20><>$(@D)<29><> is dir. This value is . if <20><>$@<40><> does not contain a slash.
#<23><>$(@F)<29><> The file-within-directory part of the file name of the target. If the value of <20><>$@<40><> is dir/foo.o then <20><>$(@F)<29><> is foo.o. <20><>$(@F)<29><> is equivalent to <20><>$(notdir $@)<29><>.

View File

@ -1,65 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>SLS Detector Software Documentation</TITLE>
<META NAME="description" CONTENT="SLS Detector Software Documentation">
<META NAME="keywords" CONTENT="SLS Detectors">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<LINK REL="next" HREF="node1.html">
</HEAD>
<BODY >
<P>
<H1 ALIGN="CENTER">SLS Detector Software Documentation</H1>
<DIV>
</DIV>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"></A>
<UL>
<LI><A HREF="slsDetectors-FAQ/index.html">SLS Detectors Frequently Asked Questions</A> <BR>
Documents with general remarks about the detectors and the software that all users should read.
<A HREF="../pdf/slsDetectors-FAQ.pdf">*pdf*</A> <BR>
<BR>
<LI><A HREF="slsDetectorInstall/index.html">Installation</A> <BR>
Documentation for the installation of the SLS Detectors software library
<A HREF="../pdf/slsDetectorInstall.pdf">*pdf*</A> <BR>
<BR>
<LI><A HREF="slsDetectorClientHowTo/index.html">Command Line Interface</A> <BR>
Reference documentation for the command line interface sls_detector_put, sls_detector_get, sls_detector_acquire, sls_detector_help
<A HREF="../pdf/slsDetectorClientHowTo.pdf">*pdf*</A> <BR>
<BR>
<LI><A HREF="slsDetectorGuiHowTo/index.html">Graphical Users Interface</A> <BR>
Reference documentation for the GUI
<A HREF="../pdf/slsDetectorGuiHowTo.pdf">*pdf*</A> <BR>
<BR>
<LI><A HREF="calibrationWizardsHowTo/index.html">Calibration Wizards</A>
<UL>
<LI> Energy calibration <A HREF="../pdf/energyCalibrationHowTo.pdf">*pdf*</A>
<LI> Angular calibration <A HREF="../pdf/angularCalibrationHowTo.pdf">*pdf*</A>
</UL>
<BR>
<LI><A HREF="slsDetectorUsersDocs/index.html">Application Program Interface</A> <BR>
Doxygen documentation for using the slsDetectorUsers class
<A HREF="../pdf/slsDetectorUsersDocs.pdf">*pdf*</A> <BR>
<BR>
</UL>
<BR><HR>
<ADDRESS>
Anna Bergamaschi
</ADDRESS>
</BODY>
</HTML>

View File

@ -1,32 +0,0 @@
set(SOURCES
mainReceiver.cpp
)
include_directories(
../../slsSupportLib/include
../../slsReceiverSoftware/include
../../build/bin
../../slsdetectorSoftware/slsDetector
)
add_executable(slsMultiReceiver
${SOURCES}
)
target_link_libraries(slsMultiReceiver
slsReceiverShared
pthread
${ZeroMQ_LIBRARIES}
rt
)
if (HDF5_FOUND)
target_link_libraries(slsMultiReceiver ${HDF5_LIBRARIES})
endif ()
set_target_properties(slsMultiReceiver PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
install(TARGETS slsMultiReceiver DESTINATION bin)

View File

@ -1,62 +0,0 @@
PKGDIR = ../..
LIBDIR = $(PKGDIR)/bin
INCLUDES = -I . -I$(PKGDIR)/slsSupportLib/include -I$(LIBDIR) -I$(PKGDIR)/slsDetectorSoftware/slsDetector -I$(PKGDIR)/slsReceiversoftware/include
SRC_DET = mainClient.cpp
SRC_REC = mainReceiver.cpp
ZMQLIBDIR = $(PKGDIR)/slsSupportLib/include
LDFLAG_DET = -I. -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread -lrt -L$(ZMQLIBDIR) -Wl,-rpath=$(ZMQLIBDIR) -lzmq
LDFLAG_REC = -I. -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread -lrt -L$(ZMQLIBDIR) -Wl,-rpath=$(ZMQLIBDIR) -lzmq
DESTDIR ?= ../docs
HDF5 ?= no
HDF5_DIR ?= /opt/hdf5v1.10.0
ifeq ($(HDF5),yes)
LDFLAG_REC += -L$(HDF5_DIR)/lib -Wl,-rpath=$(HDF5_DIR)/lib -lhdf5 -lhdf5_cpp -lsz -lz -DHDF5C
endif
all: docs detUser slsMultiReceiver
#all: docs
docs: createdocs docspdf docshtml removedocs
createdocs: slsDetectorUsers.doxy mainClient.cpp mainReceiver.cpp
doxygen slsDetectorUsers.doxy
docspdf:
cd slsDetectorUsersDocs/latex && make
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
mv slsDetectorUsersDocs/latex/refman.pdf $(DESTDIR)/pdf/slsDetectorUsersDocs.pdf
docshtml:
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
$(shell test -d $(DESTDIR)/html/slsDetectorUsersDocs && rm -r $(DESTDIR)/html/slsDetectorUsersDocs)
mv slsDetectorUsersDocs/html $(DESTDIR)/html/slsDetectorUsersDocs
removedocs:
rm -rf slsDetectorUsersDocs;
detUser:$(SRC_DET)
echo "creating client"
mkdir -p bin
g++ -o bin/detUser $(SRC_DET) $(INCLUDES) $(LDFLAG_DET) -lm -lstdc++
slsMultiReceiver:$(SRC_REC)
echo "creating receiver"
echo $LDFLAG_REC
mkdir -p bin
g++ -o bin/slsMultiReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
cp bin/slsMultiReceiver $(LIBDIR)
clean:
echo "cleaning for manual-api"
rm -rf bin/detUser bin/slsMultiReceiver bin/detReceiver slsDetectorUsersDocs
rm -rf slsDetectorUsersDocs
rm -rf $(DESTDIR)/html/slsDetectorUsersDocs
rm -rf $(DESTDIR)/pdf/slsDetectorUsersDocs.pdf
rm -rf $(LIBDIR)/slsMultiReceiver

View File

@ -1,106 +0,0 @@
/**
\file mainClient.cpp
This file is an example of how to implement the slsDetectorUsers class
You can compile it linking it to the slsDetector library
g++ mainClient.cpp -L lib -lSlsDetector -L/usr/lib64/ -L lib2 -lzmq -pthread -lrt -lm -lstdc++
where,
lib is the location of libSlsDetector.so
lib2 is the location of the libzmq.a.
[ libzmq.a is required only when using data call backs and enabling data streaming from receiver to client.
It is linked in manual/manual-api from slsReceiverSoftware/include ]
*/
#include "slsDetectorUsers.h"
#include "detectorData.h"
#include <iostream>
#include <cstdlib>
/**
* Data Call back function defined
* @param pData pointer to data structure received from the call back
* @param iframe frame number of data passed
* @param isubframe sub frame number of data passed ( only valid for EIGER in 32 bit mode)
* @param pArg pointer to object
* \returns integer that is currently ignored
*/
int dataCallback(detectorData *pData, int iframe, int isubframe, void *pArg)
{
std::cout << " DataCallback:"
<< "\n nx : " << pData->npoints
<< "\n ny : " << pData->npy
<< "\n Frame number : " << iframe << std::endl;
}
/**
* Example of a main program using the slsDetectorUsers class
*
* - Arguments are optional
* - argv[1] : Configuration File
* - argv[2] : Measurement Setup File
* - argv[3] : Detector Id (default is zero)
*/
int main(int argc, char **argv) {
/** - if specified, set ID from argv[3] */
int id=0;
if (argc>=4)
id=atoi(argv[3]);
/** - slsDetectorUsers Object is instantiated with appropriate ID */
int ret = 1;
slsDetectorUsers *pDetector = new slsDetectorUsers (ret, id);
if (ret == 1) {
std::cout << "Error: Could not instantiate slsDetectorUsers" << std::endl;
return EXIT_FAILURE;
}
/** - if specified, load configuration file (necessary at least the first time it is called to properly configure advanced settings in the shared memory) */
if (argc>=2){
pDetector->readConfigurationFile(argv[1]);
std::cout << "Detector configured" << std::endl;
}
/** - set detector in shared memory online (in case no config file was used) */
pDetector->setOnline(1);
/** - set receiver in shared memory online (in case no config file was used) */
pDetector->setReceiverOnline(1);
/** - registering data callback */
pDetector->registerDataCallback(&dataCallback, NULL);
/** - ensuring detector status is idle before starting acquisition. exiting if not idle */
int status = pDetector->getDetectorStatus();
if (status != 0){
std::cout << "Detector not ready: " << slsDetectorUsers::runStatusType(status) << std::endl;
return 1;
}
/** - if provided, load detector settings */
if (argc>=3){
pDetector->retrieveDetectorSetup(argv[2]);
std::cout << "Detector measurement set-up done" << std::endl;
}
/** - start measurement */
pDetector->startMeasurement();
std::cout << "measurement finished" << std::endl;
/** - returning when acquisition is finished or data are avilable */
/** - delete slsDetectorUsers object */
delete pDetector;
return 0;
}

View File

@ -1,306 +0,0 @@
/**
\file mainReceiver.cpp
This file is an example of how to implement the slsReceiverUsers class
You can compile it linking it to the slsReceiver library
g++ mainReceiver.cpp -L lib -lSlsReceiver -L/usr/lib64/ -L lib2 -lzmq -pthread -lrt -lm -lstdc++
where,
lib is the location of lSlsReceiver.so
lib2 is the location of the libzmq.a.
[ libzmq.a is required only when using data call backs and enabling data streaming from receiver to client.
It is linked in manual/manual-api from slsReceiverSoftware/include ]
*/
#include "sls_detector_defs.h"
#include "slsReceiverUsers.h"
#include <csignal> //SIGINT
#include <cstdlib> //system
#include <cstring>
#include <iostream>
//#include "utilities.h"
//#include "logger.h"
#include <cerrno>
#include <string>
#include <sys/types.h> //wait
#include <sys/wait.h> //wait
#include <syscall.h> //tid
#include <unistd.h> //usleep
using namespace std;
/** Define Colors to print data call back in different colors for different recievers */
#define PRINT_IN_COLOR(c,f, ...) printf ("\033[%dm" f RESET, 30 + c+1, ##__VA_ARGS__)
/** Variable is true to continue running, set to false upon interrupt */
bool keeprunning;
/**
* Control+C Interrupt Handler
* Sets the variable keeprunning to false, to let all the processes know to exit properly
*/
void sigInterruptHandler(int p){
keeprunning = false;
}
/**
* prints usage of this example program
*/
void printHelp() {
cprintf(RESET, "Usage:\n"
"./slsMultiReceiver(detReceiver) [start_tcp_port] [num_receivers] [1 for call back, 0 for none]\n\n");
exit(EXIT_FAILURE);
}
/**
* Start Acquisition Call back
* slsReceiver writes data if file write enabled.
* Users get data to write using call back if registerCallBackRawDataReady is registered.
* @param filepath file path
* @param filename file name
* @param fileindex file index
* @param datasize data size in bytes
* @param p pointer to object
* \returns ignored
*/
int StartAcq(char* filepath, char* filename, uint64_t fileindex, uint32_t datasize, void*p){
cprintf(BLUE, "#### StartAcq: filepath:%s filename:%s fileindex:%llu datasize:%u ####\n",
filepath, filename, (long long unsigned int)fileindex, datasize);
cprintf(BLUE, "--StartAcq: returning 0\n");
return 0;
}
/**
* Acquisition Finished Call back
* @param frames Number of frames caught
* @param p pointer to object
*/
void AcquisitionFinished(uint64_t frames, void*p){
cprintf(BLUE, "#### AcquisitionFinished: frames:%llu ####\n",(long long unsigned int)frames);
}
/**
* Get Receiver Data Call back
* Prints in different colors(for each receiver process) the different headers for each image call back.
* @param metadata sls_receiver_header metadata
* @param datapointer pointer to data
* @param datasize data size in bytes.
* @param p pointer to object
*/
void GetData(char* metadata, char* datapointer, uint32_t datasize, void* p){
slsDetectorDefs::sls_receiver_header* header = (slsDetectorDefs::sls_receiver_header*)metadata;
slsDetectorDefs::sls_detector_header detectorHeader = header->detHeader;
PRINT_IN_COLOR (detectorHeader.modId?detectorHeader.modId:detectorHeader.row,
"#### %d GetData: ####\n"
"frameNumber: %lu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %lu"
"\t\ttimestamp: %lu\t\tmodId: %u\t\t"
"row: %u\t\tcolumn: %u\t\treserved: %u\t\tdebug: %u"
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
//"\t\tpacketsMask:%s"
"\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
detectorHeader.row, (long unsigned int)detectorHeader.frameNumber,
detectorHeader.expLength, detectorHeader.packetNumber, (long unsigned int)detectorHeader.bunchId,
(long unsigned int)detectorHeader.timestamp, detectorHeader.modId,
detectorHeader.row, detectorHeader.column, detectorHeader.reserved,
detectorHeader.debug, detectorHeader.roundRNumber,
detectorHeader.detType, detectorHeader.version,
//header->packetsMask.to_string().c_str(),
((uint8_t)(*((uint8_t*)(datapointer)))), datasize);
}
/**
* Get Receiver Data Call back (modified)
* Prints in different colors(for each receiver process) the different headers for each image call back.
* @param metadata sls_receiver_header metadata
* @param datapointer pointer to data
* @param datasize data size in bytes.
* @param revDatasize new data size in bytes after the callback.
* This will be the size written/streamed. (only smaller value is allowed).
* @param p pointer to object
*/
void GetData(char* metadata, char* datapointer, uint32_t &revDatasize, void* p){
slsDetectorDefs::sls_receiver_header* header = (slsDetectorDefs::sls_receiver_header*)metadata;
slsDetectorDefs::sls_detector_header detectorHeader = header->detHeader;
PRINT_IN_COLOR (detectorHeader.modId?detectorHeader.modId:detectorHeader.row,
"#### %d GetData: ####\n"
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu"
"\t\ttimestamp: %llu\t\tmodId: %u\t\t"
"row: %u\t\tcolumn: %u\t\treserved: %u\t\tdebug: %u"
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
//"\t\tpacketsMask:%s"
"\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
detectorHeader.row, (long long unsigned int)detectorHeader.frameNumber,
detectorHeader.expLength, detectorHeader.packetNumber, (long long unsigned int)detectorHeader.bunchId,
(long long unsigned int)detectorHeader.timestamp, detectorHeader.modId,
detectorHeader.row, detectorHeader.column, detectorHeader.reserved,
detectorHeader.debug, detectorHeader.roundRNumber,
detectorHeader.detType, detectorHeader.version,
//header->packetsMask.to_string().c_str(),
((uint8_t)(*((uint8_t*)(datapointer)))), revDatasize);
// if data is modified, eg ROI and size is reduced
revDatasize = 26000;
}
/**
* Example of main program using the slsReceiverUsers class
*
* - Defines in file for:
* - Default Number of receivers is 1
* - Default Start TCP port is 1954
*/
int main(int argc, char *argv[]) {
/** - set default values */
int numReceivers = 1;
int startTCPPort = 1954;
int withCallback = 0;
keeprunning = true;
/** - get number of receivers and start tcp port from command line arguments */
if ( (argc != 4) || (!sscanf(argv[1],"%d", &startTCPPort)) || (!sscanf(argv[2],"%d", &numReceivers)) || (!sscanf(argv[3],"%d", &withCallback)) )
printHelp();
cprintf(BLUE,"Parent Process Created [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
cprintf(RESET, "Number of Receivers: %d\n", numReceivers);
cprintf(RESET, "Start TCP Port: %d\n", startTCPPort);
cprintf(RESET, "Callback Enable: %d\n", withCallback);
/** - Catch signal SIGINT to close files and call destructors properly */
struct sigaction sa;
sa.sa_flags=0; // no flags
sa.sa_handler=sigInterruptHandler; // handler function
sigemptyset(&sa.sa_mask); // dont block additional signals during invocation of handler
if (sigaction(SIGINT, &sa, nullptr) == -1) {
cprintf(RED, "Could not set handler function for SIGINT\n");
}
/** - Ignore SIG_PIPE, prevents global signal handler, handle locally,
instead of a server crashing due to client crash when writing, it just gives error */
struct sigaction asa;
asa.sa_flags=0; // no flags
asa.sa_handler=SIG_IGN; // handler function
sigemptyset(&asa.sa_mask); // dont block additional signals during invocation of handler
if (sigaction(SIGPIPE, &asa, nullptr) == -1) {
cprintf(RED, "Could not set handler function for SIGPIPE\n");
}
/** - loop over number of receivers */
for (int i = 0; i < numReceivers; ++i) {
/** - fork process to create child process */
pid_t pid = fork();
/** - if fork failed, raise SIGINT and properly destroy all child processes */
if (pid < 0) {
cprintf(RED,"fork() failed. Killing all the receiver objects\n");
raise(SIGINT);
}
/** - if child process */
else if (pid == 0) {
cprintf(BLUE,"Child process %d [ Tid: %ld ]\n", i, (long)syscall(SYS_gettid));
char temp[10];
sprintf(temp,"%d",startTCPPort + i);
char* args[] = {(char*)"ignored", (char*)"--rx_tcpport", temp};
int ret = slsDetectorDefs::OK;
/** - create slsReceiverUsers object with appropriate arguments */
slsReceiverUsers *receiver = new slsReceiverUsers(3, args, ret);
if(ret==slsDetectorDefs::FAIL){
delete receiver;
exit(EXIT_FAILURE);
}
/** - register callbacks. remember to set file write enable to 0 (using the client)
if we should not write files and you will write data using the callbacks */
if (withCallback) {
/** - Call back for start acquisition */
cprintf(BLUE, "Registering StartAcq()\n");
receiver->registerCallBackStartAcquisition(StartAcq, nullptr);
/** - Call back for acquisition finished */
cprintf(BLUE, "Registering AcquisitionFinished()\n");
receiver->registerCallBackAcquisitionFinished(AcquisitionFinished, nullptr);
/* - Call back for raw data */
cprintf(BLUE, "Registering GetData() \n");
if (withCallback == 1) receiver->registerCallBackRawDataReady(GetData,nullptr);
else if (withCallback == 2) receiver->registerCallBackRawDataModifyReady(GetData,nullptr);
}
/** - start tcp server thread */
if (receiver->start() == slsDetectorDefs::FAIL){
delete receiver;
cprintf(BLUE,"Exiting Child Process [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
exit(EXIT_FAILURE);
}
/** - as long as keeprunning is true (changes with Ctrl+C) */
while(keeprunning)
pause();
/** - interrupt caught, delete slsReceiverUsers object and exit */
delete receiver;
cprintf(BLUE,"Exiting Child Process [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
exit(EXIT_SUCCESS);
break;
}
}
/** - Parent process ignores SIGINT (exits only when all child process exits) */
sa.sa_flags=0; // no flags
sa.sa_handler=SIG_IGN; // handler function
sigemptyset(&sa.sa_mask); // dont block additional signals during invocation of handler
if (sigaction(SIGINT, &sa, nullptr) == -1) {
cprintf(RED, "Could not set handler function for SIGINT\n");
}
/** - Print Ready and Instructions how to exit */
cout << "Ready ... " << endl;
cprintf(RESET, "\n[ Press \'Ctrl+c\' to exit ]\n");
/** - Parent process waits for all child processes to exit */
for(;;) {
pid_t childPid = waitpid (-1, nullptr, 0);
// no child closed
if (childPid == -1) {
if (errno == ECHILD) {
cprintf(GREEN,"All Child Processes have been closed\n");
break;
} else {
cprintf(RED, "Unexpected error from waitpid(): (%s)\n",strerror(errno));
break;
}
}
//child closed
cprintf(BLUE,"Exiting Child Process [ Tid: %ld ]\n", (long int) childPid);
}
cout << "Goodbye!" << endl;
return 0;
}

View File

@ -1,91 +0,0 @@
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. When set to YES local
# methods, which are defined in the implementation section but not in
# the interface are included in the documentation.
# If set to NO (the default) only methods in the interface are included.
EXTRACT_LOCAL_METHODS = YES
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default
# anonymous namespace are hidden.
EXTRACT_ANON_NSPACES = NO
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
# If set to NO (the default) these declarations will be included in the
# documentation.
HIDE_FRIEND_COMPOUNDS = NO
INTERNAL_DOCS = NO
SHOW_INCLUDE_FILES = YES
SHOW_FILES = YES
SHOW_NAMESPACES = NO
COMPACT_LATEX = YES
PAPER_TYPE = a4
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_HIDE_INDICES = YES
SOURCE_BROWSER = YES
PREDEFINED = __cplusplus
INPUT = ../../slsDetectorSoftware/slsDetector/slsDetectorUsers.h \
../../slDetectorSoftware/slsDetectorAnalysis/detectorData.h \
../../slsReceiverSoftware/include/slsReceiverUsers.h \
mainClient.cpp \
mainReceiver.cpp
OUTPUT_DIRECTORY = slsDetectorUsersDocs

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,56 +0,0 @@
DESTDIR?=../docs
#manual-api manual-calwiz manual-client manual-gui manual-main
TEX=latex
MAINTEXS= angularCalibrationHowTo.tex energyCalibrationHowTo.tex
TEXS=ancCal.tex enCal.tex installation.tex
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
all: pdf html
echo $(PWD)
echo $(PDFS)
echo $(HTMLS)
pdf: $(PDFS)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
mv $(PDFS) $(DESTDIR)/pdf
html: $(HTMLS)
$(HTMLS): $(TEXS) $(MAINTEXS)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
$(shell test -d $(DESTDIR)/html/$@ && rm -r $(DESTDIR)/html/$@)
latex $@.tex
latex2html -split 4 $@.tex
mv $@ $(DESTDIR)/html
%.dvi : %.tex $(TEXS)
latex $<
latex $<
%.ps : %.dvi
dvips -o $@ $<
%.pdf : %.ps
ps2pdf $< $@
clean:
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
rm -rf $(DESTDIR)/html/angularCalibrationHowTo
rm -rf $(DESTDIR)/html/energyCalibrationHowTo
rm -rf $(DESTDIR)/pdf/angularCalibrationHowTo.pdf
rm -rf $(DESTDIR)/pdf/energyCalibrationHowTo.pdf

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

View File

@ -1,171 +0,0 @@
In order to convert from strip number to 2$\theta$-angle, an accurate angular calibration of the detector must be performed (for details see the paper Bergamaschi, A. et al. (2010). J. Synchrotron Rad. 17, 653-668). \\
For this purpose, a series of patterns of a powder standard with symmetric peaks (e.g. silicon) must acquired while shifting the detector by an angular step of the order of about 2\% of the module size. During the measurement, a strong intensity peak (e.g. Si(111)) should pass through the field of view of every module such that it can be used as a reference angular position to perform the calibration of the modules position.\\
In a first step, the peak is fitted with a Gaussian in order to determine its position $C_{peak}$ in channel number for each of the acquired patterns.\\
In a second step, for each module $i$, the encoder position $\Theta_e$ is fitted as a function of the peak position $C_{peak}$ according to:
\begin{equation}\label{eq:angcal}
\Theta_e=\Theta_o^i-\arctan\Big(\frac{p \cdot (C_{peak}-C_{center}^i)}{R^i}\Big),
\end{equation}
where the parameters $\Theta_o^i$ is the angular offset with respect to the diffractometer zero position, $C_{center}^{i}$ is the central channel and $R^i$ is the distance of the module $i$ from the diffractometer center while $p=50~\mu m$ is the strip pitch of the detector. \\
Finally, the global offset of the detector system is precisely determined by refining a silicon pattern at a well-defined energy (i.e., knowing the position of the peak).
The same function of equation~\ref{eq:angcal}, with the parameters obtained from the calibration, is used in order to convert from channel number to 2$\theta$-angle.
The parallax at the borders of the modules due to the thickness of the silicon sensor is a function of the X-ray energy (higher energy X-rays are absorbed deeper inside the sensor) and is of the order of 0.2~mdeg at 12~keV and 0.5~mdeg at 30~keV. \\
The differences in pixel size due to the different portion of solid angle covered by the strips on the border of the modules and the higher efficiency due to the longer path of the X-rays in the sensor are removed by the flat field correction. This also normalizes additional differences in pixel size between channels which are also present because of mismatches in the strip sensor fabrication and in fluctuations of the channels threshold level.
Patterns acquired at different detector positions are generally merged together in order to fill the gaps between the modules and correct possibly bad functioning channels. In this procedure the data from different positions which are closer than 4~mdeg (the average pixel size) are averaged and the new position is set to the mean of the positions of the original points.
The position and width of the peaks results from a fit over several detector channels. Geometrical distortions might disturb this determination mainly because of errors in the angular calibration, fluctuations in the encoder position, variations between channels and parallax effects.\\
The resolution in locating the peak center and determining its width and integrated intensity has been estimated by acquiring several patterns of a LaB$_6$ sample in a 300~$\mu$m capillary with the detector shifted in 5~mdeg steps between 30.4 and 36.5 degrees. The 16~peaks acquired have been fitted with a Gaussian function plus background and the fluctuations on the fitted parameters have been calculated. The resulting average resolutions are 0.63$\pm$0.06~mdeg for the peak center and 0.22$\pm$0.05~mdeg for the peak Full-Width at Half-Maximum (FWHM) for an average peak FWHM of 27.0$\pm$2.5~mdeg. \\
These results show that the angular calibration allows a resolution in determining the peaks position and width which is appropriate for structural determination.
\section{Data acquisition}
The angular calibration consists in acquiring a set of diffraction patterns of a well known powder standard (e.g. Silicon) at different encoder positions. In order to facilitate the procedure, the sample should not emit fluorescent light and should present relatively symmetric peaks. \\
During the measurement, a strong intensity peak (e.g. Si(111)) should pass through the field of view of every module such that it can be used as a reference angular position to perform the calibration of the modules position. In general the highest peak will be used for the calibration, but this is not necessary in case there would be e.g. geometrical limitations for shifting the detector. \\ \textbf{Do not forget to properly position the beam stopper if the detector is scanned in front of the direct beam.}\\
The detector should be shifted of an angular step of the order of about 2\% of the module size, such that about 50 patterns can contribute to the fitting of the 3 parameters necessary for the angular calibration.\\
All the angular calibration procedure should be acquired using a trimmed detector with the threshold set at half of the X-ray energy (Assuming no fluorescent element in the standard). A flat field should also be acquired in order to precisely correct the data, while the X-ray intensity should be kept lower than about 100~kHz per strip in order to avoid the need for rate corrections.
A rough angular conversion file starting from a previous calibration or from the geometric characteristics of the mechanics is an advantage. The angular conversion file should contain a line for each module of the detector with its module number $i$, center $C_{center}^{i}$ and error, conversion radius $p/R^i$ and error, offset $\Theta_o^i$ and error:
\begin{verbatim}
module 0 center 639.5 +- 0 conversion 6.56E-05 +- 0 offset 0 +- 0
\end{verbatim}
Also the \textit{global offset} value of the beamline should be approximately known i.e. the angular position of channel 0 of module 0 when the motor is set at 0. \\
All the documentation assumes that the detector is oriented in the same direction as the encoder position i.e. large channel number at higher angles (both per module and absolute). If this is not the case, the \textit{angular direction} should be set to -1.
\subsection{Software}
For the acquisition ot the data you need to install the slsDetector software package (please refere to separate documentation). The use of the GUI is optional and all operations can be performed also using the text client.\\
Please make sure that you have edited the \\
\textit{slsDetectorSoftware/usersFunctions/angleFunction.h} \\
in order to match the angular conversion for your geometry and \\
\textit{slsDetectorSoftware/usersFunctions/usersFunctions.cpp} \\
in order to be able to move the detector and read out its position by using the slsDetector software.
In the following the command to acquire a dataset for the angular calibration with an exposure time of 1~s, and position shift
\begin{verbatim}
#setup angular calibration log mode
> sls_detector_put angcallog 1
#set exposure time to 1s
> sls_detector_put exptime 1.
#setup threshold scan
> sls_detector_put scan0script position
#setup the precision for the scan variable in the file name
> sls_detector_put scan0prec 2
#set scan range between 20deg and -60deg, step of -0.1deg
# (at 12.4 keV the Si(111) peak is at approx 19deg
> sls_detector_put scan0range 20 -60 -0.1
#acquire the data
> sls_detector_acquire
#unset angular calibration log mode
> sls_detector_put angcallog 0
\end{verbatim}
With the GUI you can obtain the same results by clicking on the \textit{Angular calibration} log button in the advanced tab (see figure~\ref{fig:guiangcallog}) and setting up the motor position scan in the Actions tab (see figure~\ref{fig:guiposscan}). The exposure time should also be set in the measurement tab.
Additional to the data files, the acquisition will produce a .angcal file containing an header and, for each step of the acquisition, the exect value of the motor position and the file name. \\
In case you forgot to enable the angcallog flag in the software, you can produce the file with the syntax as follows, assuming that you know the exact values of your encoder for each frame:
\begin{verbatim}
type Mythen
maxmod 32
nmod 32
angconv /scratch/angcal20120422/ang.off
globaloff 5.088
fineoff 0.0
angdir 1
ffdir /scratch/angcal20120422/
flatfield flatfield_E12keV_T6keV_0.raw
badchannels /scratch/cal/bad.chans
19.99998 angcal_S20.00_0
19.90001 angcal_S19.90_0
19.79999 angcal_S19.80_0
19.70002 angcal_S19.70_0
......
\end{verbatim}
\begin{figure}
\caption{Acquisition GUI window to enable the angular calibration log.} \label{fig:guiangcallog}
\includegraphics[width=\textwidth]{enable_angcal.eps}
\end{figure}
\begin{figure}
\caption{Acquisition GUI window to setup the motor position scan.} \label{fig:guiposscan}
\includegraphics[width=\textwidth]{position_scan.eps}
\end{figure}
\newpage
\section{Data analysis}
The data analysis consists in fitting with a gaussian the selected peak of the powder pattern for each position in order to determine its position is channel number as a function of the encoder position. \\
In a second step, for each module, the channel vs. encoder curve is fitted in order to extrapolate the three parameters necessary for the angular conversion and the result is written to file
\subsection{Software}
The software used for the angular calibration data analysis is based on root (see http://root.cern.ch).\\
This can be downloaded as binary or installed from sources. The version of the software should not play an important role, but up to now everything has been implemented and tested using version 5.20.
To start the data analysis simply launch:
\begin{verbatim}
> ./angularCalibrationWizard
\end{verbatim}
\begin{figure}
\caption{Overview of the nagular calibration dataset.} \label{fig:setangcal}
\includegraphics[width=\textwidth]{setupAngcal.eps}
\end{figure}
To setup the angular calibration dataset, the .angcal file should be selected (or digited) and the load button should be pressed to confirm. The parameters of the angular calibration are then read to the file and the data loaded for a quick overview (see figure~\ref{fig:setangcal}).\\
The software assumes that the data files (.raw) and the .encal file are in the same directory.\\
A 2D color plot will show a rebinned overview of the dataset. The peak to be fitted should be visible as a high intensity diagonal line passing through all the channels.
\begin{figure}
\caption{Preview of the fitting of the Si(111) peak for one of the detector positions.} \label{fig:peakfit}
\includegraphics[width=\textwidth]{peakFit.eps}
\end{figure}
For a more detailed view of the data, one can select an angular calibration step from the combo box, select the plot mode (raw data or processed data as a function of channel number, processed angular converted data, flat field data, or again an overview of the whole dataset). \\
By (right) clicking close to the axis you are able to zoom in/out, set the scale to logarithmic etc.\\
If the bad channel list, angular conversion file or flat field file are changed compared to the acquisition, they can be reloaded by editing the correspondent text entries and pressing enter.
In particular, the angular converted data should be checked in order to view the position of the selected peak. In this case, the plot will be zoomed to the angular region slected in the minimum and maximum angle entries. By pressing fit, the fit of the peak in the selected angular range will be shown (see figure~\ref{fig:peakfit}). It is useful to check that it works properly in several positions such that then the sequential fitting on all steps can give good results.
To automatically fit all positions simply press \textit{Proceed to Modules Calibration} and wait until all steps are fitted. This can take sometime, depending on the number of steps.
\begin{figure}
\caption{Window for fitting the angular calibration parameters of a module.} \label{fig:anglefit}
\includegraphics[width=\textwidth]{angleFit.eps}
\end{figure}
In the module calibration window (see figure~\ref{fig:anglefit}), you will be able to fit the channel number to encoder position curve to estimate the three angular calibration parameters for each module.\\
The entries show the angular calibration parameters used for approximate angular conversion in the previous step of the calibration. These can be edited and will be used as start parameters for the fit.
By clicking on the check box next to the parameters, the selected parameter will be set and fixed during the fit. Often the center is used as a fix parameter.\\
It is possible to navigate between modules by using the Previous and Next module buttons. To refit the current module (e.g. after changing one of the parameters) simply re-click on the module number.
After fitting all modules you can click on the \textit{Write Angular Calibration} button, select the file name to write to and save the calibration angulat calibration data. Please note that the offset of module 0 will always be 0 and the other values will be rescaled to its value. Therefore the global offset of the steup will always need to be specified for a proper angular conversion unless the home of the encoder will not be redifined.
\section{Setup calibration files}
To use the generated angular calibration files, using the text client:
\begin{verbatim}
sls_detector_put angconv /scratch/ang_new.off
\end{verbatim}
while for the GUI the file name should be specified in the configuration file (works also for the text client).
\end{document}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,17 +0,0 @@
\documentclass{article}
\usepackage{amssymb}
\usepackage[dvips]{graphicx}
\usepackage{verbatim}
\begin{document}
\title{Angular calibration wizard manual}
\author{Anna Bergamaschi}
\date{\today}
\maketitle
\section{Introduction}
\input{ancCal.tex}
\end{document}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

View File

@ -1,24 +0,0 @@
\documentclass{report}
\usepackage{amssymb}
\usepackage[dvips]{graphicx}
\usepackage{verbatim}
\begin{document}
\title{Calibration wizards manual}
\author{Anna Bergamaschi}
\date{\today}
\maketitle
\chapter{Installation}
\input{installation.tex}
\chapter{Energy calibration}
%\section{Introduction}
\input{enCal.tex}
\chapter{Angular calibration}
%\section{Introduction}
\input{ancCal.tex}
\end{document}

View File

@ -1,214 +0,0 @@
The choice of the level of the comparator threshold plays a very important role in counting systems since it influences the efficiency of the detector as well as its spatial resolution (for details see the paper Bergamaschi, A. et al. (2010). J. Synchrotron Rad. 17, 653-668).
Single-photon-counting detectors are sensitive to single photons and the only limitation on the fluctuations of the number of counts is given by the Poisson-like statistics of the X-ray quanta.
The digitized signal does not carry any information concerning the energy of the X-rays and all photons with an energy larger than the threshold are counted as one bit. This means that the choice of the correct comparator threshold level is critical in order to obtain good-quality data.\\
Figure~\ref{fig:thrscanexpl} shows the expected number of counts as a function of the threshold energy for $N_0$ monochromatic X-rays of energy $E_0$. This is often denominated S-curve and can be interpreted as the integral of the signal spectrum between the threshold level and infinity.
The dashed curve represents the behavior of an ideal counting system: nothing is counted for thresholds larger than the photon energy and all the $N_0$ X-rays are counted for thresholds lower than $E_0$.
The thick solid line represents the physical curve which also takes into account the electronic noise and the charge sharing between channels.
The intrinsic noise on the electronic signal is defined by the Equivalent Noise Charge ($ENC$). The $ENC$ describes noise in terms of the charge at the detector input needed to create the same output at the end of the analog chain and is normally expressed in electrons. For silicon sensors, it can be converted into energy units by considering 1~$e^-$=3.6~eV.
The value of the $ENC$ normally depends on the shaping settings of the analog chain and increases with shorter shaping times.
The resulting electronic signal spectrum is then given by a convolution between the radiation spectrum and the noise i.e., a Gaussian of standard deviation $ENC$.
The S-curve for a monochromatic radiation beam is well described by a Gaussian cumulative distribution $D$ with an additional increase at low threshold due to the baseline noise, as shown by the solid thin line.
Moreover, when a photon is absorbed in the region between two strips of the sensor, the generated charge is partially collected by the two nearest electronic channels. For this reason the physical S-curve is not flat but can be modeled by a decreasing straight line. The number of shared photons $N_S$ is given by the difference between the number of counts and the number of X-rays whose charge is completely collected by the strip (shown by the dotted line).
The number of counts in the physical case is equal to that in the ideal case for a threshold set at half the photon energy. This defines the optimal threshold level $E_t=E_0/2$.\\
The detector response $N$ as a function of the threshold energy $E_t$ is given by the sum of the noise counts $N_n$ and the counts originating from photons $N_\gamma$:
\begin{equation}
N_\gamma(E_t)=\frac{N_0}{2}\cdot\Big(1+C_s \frac{E_0-2E_t}{E_0}\Big)D \Big(\frac{E_0-E_t}{ENC} \Big), \label{eq:thrscan}
\end{equation}
where $C_s$ is the fraction of photons which produce a charge cloud which is shared between neighboring strips ($N_s=C_s N_0$).\\
By assuming a noise of Gaussian type, and considering its bandwidth limited by the shaping time $\tau_s$, the number of noise counts in the acquisition time $T$ can be approximated as:
\begin{equation}
N_n(E_t) \sim \frac{T}{\tau_s} D \Big(\frac{-E_t}{ENC} \Big). \label{eq:noisescan}
\end{equation}
The choice of the comparator threshold level $E_t$ influences not only the counting efficiency and noise performances, but also the spatial resolution and the counting statistics of the detector.
If the threshold is set at values higher than the ideal value $E_t=E_0/2$, a fraction of the photons absorbed in the sensor in the region between two strips is not counted thus reducing the detector efficiency but improving its spatial resolution (narrower strip size). On the other hand, if the threshold is set at values lower than $E_t$, part of the X-rays absorbed in the region between two strips are counted by both of them, resulting in a deterioration of the spatial resolution of the detector and of the fluctuations on the number of photons because of the increased multiplicity.
Furthermore, the threshold uniformity is particularly critical with regards to fluorescent radiation emitted by the sample under investigation. Since the emission of fluorescent light is isotropic, the data quality will be improved by setting the threshold high enough in order to discard the fluorescence background (see figure~\ref{fig:thrscanfluo}). \\
Moreover, setting the threshold too close to the energy of the fluorescent light gives rise to large fluctuations between channels in the number of counts since the threshold sits on the steepest part of the threshold scan curve for the fluorescent background. These differences cannot be corrected by using a flat-field normalization since the fluorescent component is not present in the reference image. For this reason, it is extremely important that the threshold uniformity over the whole detector is optimized. The threshold level must be set at least $\Sigma>3\,ENC$ away from both the fluorescent energy level and the X-ray energy in order to remove the fluorescence background while efficiently count the diffracted photons.
The comparator threshold is given by a global level which can be set on a module basis and adds to a component which is individually adjustable for each channel. In order to optimize the uniformity of the detector response it is important to properly adjust the threshold for all channels. \\
Since both the signal amplification stages and the comparator are linear, it is necessary to calibrate the detector offset $O$ and gain $G$ in order to correctly set its comparator threshold $V_t$ at the desired energy $E_t$:
\begin{equation}
V_{t}=O+G \cdot E_t.\label{eq:encal}
\end{equation}
This is initially performed by acquiring measurements while scanning the global threshold using different X-ray energies and calculating the median of the counts at each threshold value for each module $i$. The curves obtained for one of the detector modules at three energies are shown in figure~\ref{fig:modulecalibration}. The experimental data are then fitted according to equation~\ref{eq:thrscan} and for each module a linear relation is found between the X-ray energy and the estimated inflection point, as shown in the inset of figure~\ref{fig:modulecalibration}. The resulting offset $O_i$ and gain $G_i$ are used as a conversion factor between the threshold level and the energy.
\begin{figure}
\caption{Expected counts as a function of a threshold energy for a monochromatic beam of energy $E_0$=12~keV. $N_0$=10000 is the number of photons absorbed by the detector during the acquisition time. The dashed line represents the curve in an ideal case without electronic noise and charge sharing, the solid thin line with noise $ENC$=1~keV but without charge sharing and the solid thick line is the physical case with noise and $CS=$22~\% charge sharing. $N_S$ is the number of photons whose charge is shared between neighbouring strips ($CS=\frac{N_S}{N_0}$). The dotted line represents the number of photons whose charge is completely collected by a single strip.}\label{fig:thrscanexpl}
\includegraphics[width=\textwidth]{fig4.eps}
\end{figure}
\begin{figure}
\caption{Measured threshold scan at 12.5~keV with the three different settings. In the inset the fit of the experimental data with the expected curve as in function~\ref{eq:thrscan} is shown in the region of the inflection point.} \label{fig:expthrscan}
\includegraphics[width=\textwidth]{fig5.eps}
\end{figure}
\begin{figure}
\caption{Number of counts as a function of the threshold measured from a sample containing iron ($E_f$=5.9~keV) when using X-rays of energy $E_0$=12~keV. In this case, setting the threshold at $E_0/2$, which is very close to $E_f$, would give $\Delta \sim$10\% counts from the fluorescense background. Therefore the threshold should be set at an intermediate level $E_t$ between the two energy components with a distance of at least $\Sigma>3ENC$ from both $E_f$ and $E_0$.}\label{fig:thrscanfluo}
\includegraphics[width=\textwidth]{fig7.eps}
\end{figure}
Differences in gain and offset are present also between individual channels within a module and therefore the use of threshold equalization techniques (trimming) using the internal 6-bit DAC is needed in order to reduce the threshold dispersion.
Since both gain and offset have variations between channels, the optimal trimming should be performed as a function of the threshold energy.
Please not that trimming of the channels of the detector should be performed in advanced and is extremely important for a succeful energy calibration of the detector.
All energy calibration procedures should be applied to a trimmed detector and only an improvement of the existing trimbits can be performed afterwards, since it does not significatively affect the energy calibration.
\begin{figure}
\caption{Median of the number of counts as a function of the threshold for X-rays of 12.5, 17.5 and 25~keV for one of the detector modules using \textit{standard} settings. The solid line represents the fit of the experimental points with equation~\ref{eq:thrscan}. In the inset the linear fit between the X-ray energy and the position of the inflection point of the curves is shown.}\label{fig:modulecalibration}
\includegraphics[width=\textwidth]{fig8.eps}
\end{figure}
\newpage
\section{Data acquisition}
The energy calibration consists in acquiring threshold scans using the detector at at least 2 (better 3) energies. A monochromatic beam is ideal in this procedure, but beam obtained from some fluorescent sample is also good.\\
Please note that the statistic is important to succesfully analyze the data. Normally the exposure time for each step should be chosen in order to achieve at least 1000 counts per step.
If this is not possible it is better to reduce the scan range or enlarge the scan step rather than acquiring data with a too low statics.
With a quick acquisition or threshold scan it is useful to define the range of the scan and the exposure time. It is important to start from a threshold high enough that (almost) all channels of the detector have a negligible number of counts and that the plateau of the S-curve is long enough to correctly estimate the number of photons.
\subsection{Software}
For the acquisition ot the data you need to install the slsDetector software package (please refere to separate documentation). The use of the GUI is optional and all operations can be performed also using the text client.\\
In the following the command to acquire a dataset for the energy calibration with an exposure time of 1~s, and threshold scan range between 200 and 850 with a setp of 1 DAC unit.
\begin{verbatim}
> sls_detector_put encallog 1 #setup energy calibration
> sls_detector_put exptime 1. #set exposure time to 1s
> sls_detector_put scan0script threshold #setup threshold scan
> sls_detector_put scan0range 200 850 1 #set scan range between 200 and 850, step of 1
> sls_detector_acquire #acquire the data
> sls_detector_put encallog 0 #unset energy calibration
\end{verbatim}
With the GUI you can obtain the same results by clicking on the \textit{Energy Calibration} log button in the advanced tab (see figure~\ref{fig:guiencallog}) and setting up the threshold scan in the Actions tab (see figure~\ref{fig:guithrscan}). the exposure time should also be set in the measurement tab.
This procedure should be executed at at least 2 (better 3) energies.
Additional to the data files, the acquisition will produce a .encal file containing an header and, for each step of the acquisition, the threshold value and the file name. \\
In case you forgot to enable the encallog flag in the software, you can produce the file with the syntax as follows:
\begin{verbatim}
settings standard
type Mythen+
nmod 12
modulenumber:0 000
modulenumber:1 111
modulenumber:2 222
modulenumber:3 333
modulenumber:4 444
modulenumber:5 555
modulenumber:6 666
modulenumber:7 777
modulenumber:8 888
modulenumber:9 999
modulenumber:10 aaa
modulenumber:11 bbb
450 standard_12_4keV_S450_0
460 standard_12_4keV_S460_0
470 standard_12_4keV_S470_0
480 standard_12_4keV_S480_0
490 standard_12_4keV_S490_0
500 standard_12_4keV_S500_0
510 standard_12_4keV_S510_0
520 standard_12_4keV_S520_0
...
...
\end{verbatim}
\begin{figure}
\caption{Acquisition GUI window to enable the energy calibration log.} \label{fig:guiencallog}
\includegraphics[width=\textwidth]{GUI_Advanced.eps}
\end{figure}
\begin{figure}
\caption{Acquisition GUI window to setup the threshold scan.} \label{fig:guithrscan}
\includegraphics[width=\textwidth]{GUI_ThresholdScan.eps}
\end{figure}
\newpage
\section{Data analysis}
The data analysis consists in fitting the S-curves obtained from the datasets acquired as above and then performing a linear fit between the energy values and the inflection points.
\subsection{Software}
The software used for the energy calibration data analysis is based on root (see http://root.cern.ch).\\
This can be downloaded as binary or installed from sources. The version of the software should not play an important role, but up to now everything has been implemented and tested using version 5.20.
To start the data analysis simply launch:
\begin{verbatim}
> ./energyCalibrationWizard
\end{verbatim}
To add anew energy write the energy value and select (or digit) the name of the .encal file corresponding to that energy (see figure~\ref{fig:addenergy}).\\
The software assumes that the data files (.raw) and the .encal file are in the same directory.
Press \textit{Preview} and a 2D color plot will be displayed, showing the channel numbers on the X-axis, the threshold on the Y-axis, and the number of counts as a color scale.
By (right) clicking close to the axis you are able to zoom in/out, set the scale to logarithmic etc.\\
If the plot corresponds to your expectations press \textit{Add to list}. The energy value will be shown in the combo box on top and labels will display the settings of the detector, the number of modules, the number of channels per module and the modules serial numbers.
Add then all the other energies to the calibration always by editing the energy value and .encal file name, pressing \textit{preview} and \textit{add to list}.\\
If the settings, number of modules or serial numbers do not match, you will not be llowed to add the energy.\\
By using the \textit{selected energy actions} you can navigate in the combo box with list of energies, view the plots and eventually remove the ones you don't want to use in your calibration.\\
Once you have uploaded at least 2 energies, you will be allowed to \textit{proceed to module calibration}.
\begin{figure}
\caption{Window to add energies to the calibration.} \label{fig:addenergy}
\includegraphics[width=\textwidth]{addEnergy.eps}
\end{figure}
In the module calibration window (see figure~\ref{fig:calibratemodule}), you are still able to look at the calibration summary, and eventually return to the previous windown by pressing \textit{Back to energy setup}.\\
The canvas will show the plot of the S-curves relative to the median of the selected module, fitted with equation~\ref{eq:thrscan} and the linear fit between the energy values and the fitted inflection points.
Normally the points lie on a straight line (although often not perfect), therefore it should be simple to spot if there are problems in the fitting of some of the data.\\
If \textit{Manual save} is unclicked, the calibration files will be saved locally, with the extension automatically generated by using the modules serial numbers, every time a linear fit is performed (i.e. if you mess up wiht the linear fit you overwrite a previous good file!). If you click the checkbox, you need to save the calibration by pressing \textit{Write to file} for each module once you are happy with the fit.
To change the Y scale of the plot, edit the \textit{Counts} entry. After clicking of the energy button (eventually twice) the maximum of the histogram will be set to three times the value.
To re-fit one energy with modified range or start parameters, you should press the central button with the energy value once the energy is selected. The text color tells you which curve you are referring to.\\
You should set the range of the fit. In particular the maximum should be limited in order to avoid to enter the noise range (and can be pretty different for the various modules).\\
Normally the data are acquired by collecting holes from the detector and therefore the \textit{Invert axis} check button should be ckecked. Uncheck it in case your detector collects electrons (e.g. CdTe, Si n in p)
You can change the start values of the parameters of the fits by editing the number eneries. The label nearby will show you the actual value of the fitted parameters.\\
By checking the checkboxes you can fix the values to the ones you specify.\\
Normally it can be useful to fix the pedestal and pedestal slope to 0, unless you have a lot of 3rd armnonics contribution, primary beam background or similar.\\
Changing the starting value of the inflection point or of the number of counts can often help the fit to converge.\\
Normally it is not very useful to change the starting value for the noise or charge sharing slope.
The button \textit{Finished} will be enebled only once the calibration files have been generated for all modules.
\begin{figure}
\caption{Window to calibrate the modules.} \label{fig:calibratemodule}
\includegraphics[width=\textwidth]{calibrateModule.eps}
\end{figure}
\newpage
\section{Setup calibration files}
To use the genrated calibration files as default ones, copy them into your default \textit{caldir/settings} renaming them calibration.snxxx, where snxxx is the extension that the genrated files already have, which corresponds to the module serial number.\\
Fot this scope, a script as following can be used:
\begin{verbatim}
for i in $(ls newcal_standard.sn* | awk -F "." '{print $2}'); do \
mv newcal_standard.$i caldir/standard/calibration.$i; \
done
\end{verbatim}
By reloading the default detector settings, the calibration coefficients will be automatically loaded.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

View File

@ -1,16 +0,0 @@
\documentclass{article}
\usepackage{amssymb}
\usepackage[dvips]{graphicx}
\usepackage{verbatim}
\begin{document}
\title{Energy calibration wizard manual}
\author{Anna Bergamaschi}
\date{\today}
\maketitle
\section{Introduction}
\input{enCal.tex}
\end{document}

View File

@ -1,135 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 550
%%Title: /afs/psi.ch/project/mythen/mythen_datasheet/article/thrscan_expl.eps: c1
%%Creator: ROOT Version 5.17/02
%%CreationDate: Tue Oct 28 10:15:04 2008
%%EndComments
%%BeginProlog
80 dict begin
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
/mp {newpath /y exch def /x exch def} def
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
0 w3 neg d w3 neg 0 d cl s } def
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl fill gr} def
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl s gr} def
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
sub m w w d s} def
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
228 /Ocircumflex 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
237 /udieresis 238 /Udieresis 239 /aring 240 /odieresis 242 /Aring 243 /ydieresis
244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave
127 /atilde 128 /Atilde 129 /oacute 130 /Oacute 131 /iacute
132 /Iacute 133 /igrave 134 /Igrave 135 /otilde 136 /Otilde
137 /uacute 138 /Uacute] def
/Times-Roman /Times-Roman accvec ReEncode
/Times-Italic /Times-Italic accvec ReEncode
/Times-Bold /Times-Bold accvec ReEncode
/Times-BoldItalic /Times-BoldItalic accvec ReEncode
/Helvetica /Helvetica accvec ReEncode
/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
/Helvetica-Bold /Helvetica-Bold accvec ReEncode
/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
/Courier /Courier accvec ReEncode
/Courier-Oblique /Courier-Oblique accvec ReEncode
/Courier-Bold /Courier-Bold accvec ReEncode
/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
/oshow {gsave [] 0 sd true charpath stroke gr} def
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
text sw pop xs add /xs exch def} def
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
pop neg xs add /xs exch def} def
/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin 102 /intersection
103 /union 104 /propersuperset 105 /reflexsuperset 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright
118 /arrowdbldown 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
/Symbol /Special accspe ReEncode
%%EndProlog
%%BeginSetup
%%EndSetup
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 3 lw 1 1 1 c 2268 2199 0 0 bf black 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 1 1 1 c black 339 319 m 1815 X s 339 319 m
1815 X s
gsave 2268 2199 0 0 C 1652 151 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Energy \(keV\)) show NC gr 339 372 m -53 Y s 392 345 m -26 Y s 446 345 m -26 Y s 499 345 m -26 Y s 553 372 m -53 Y s 606 345 m -26 Y s 659 345 m -26 Y s 713 345 m -26
Y s 766 372 m -53 Y s 819 345 m -26 Y s 873 345 m -26 Y s 926 345 m -26 Y s 980 372 m -53 Y s 1033 345 m -26 Y s 1086 345 m -26 Y s 1140 345 m -26 Y s 1193 372 m -53 Y s 1246 345 m -26 Y s 1300 345 m -26 Y s 1353 345 m -26 Y s 1407 372 m -53 Y s
1460 345 m -26 Y s 1513 345 m -26 Y s 1567 345 m -26 Y s 1620 372 m -53 Y s 1673 345 m -26 Y s 1727 345 m -26 Y s 1780 345 m -26 Y s 1834 372 m -53 Y s 1887 345 m -26 Y s 1940 345 m -26 Y s 1994 345 m -26 Y s 2047 372 m -53 Y s 2047 372 m -53 Y s
2100 345 m -26 Y s 2154 345 m -26 Y s
gsave 2268 2199 0 0 C 316 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 527 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
gsave 2268 2199 0 0 C 741 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
gsave 2268 2199 0 0 C 954 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
gsave 2268 2199 0 0 C 1168 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr
gsave 2268 2199 0 0 C 1359 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
gsave 2268 2199 0 0 C 1573 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show NC gr
gsave 2268 2199 0 0 C 1786 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show NC gr
gsave 2268 2199 0 0 C 2000 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16) show NC gr 339 319 m 1761 Y s
gsave 2268 2199 0 0 C 85 1798 t 90 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Counts) show NC gr 393 319 m -54 X s 366 363 m -27 X s 366 407 m -27 X s 366 451 m -27 X s 393 495 m -54 X s 366 539 m -27 X s 366 583 m -27 X s 366 627 m -27 X s 393
671 m -54 X s 366 715 m -27 X s 366 759 m -27 X s 366 803 m -27 X s 393 847 m -54 X s 366 891 m -27 X s 366 935 m -27 X s 366 979 m -27 X s 393 1023 m -54 X s 366 1067 m -27 X s 366 1111 m -27 X s 366 1155 m -27 X s 393 1199 m -54 X s 366 1243 m
-27 X s 366 1287 m -27 X s 366 1331 m -27 X s 393 1375 m -54 X s 366 1419 m -27 X s 366 1463 m -27 X s 366 1507 m -27 X s 393 1552 m -54 X s 366 1596 m -27 X s 366 1640 m -27 X s 366 1684 m -27 X s 393 1728 m -54 X s 366 1772 m -27 X s 366 1816 m
-27 X s 366 1860 m -27 X s 393 1904 m -54 X s 366 1948 m -27 X s 366 1992 m -27 X s 366 2036 m -27 X s 393 2080 m -54 X s
gsave 2268 2199 0 0 C 285 282 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 145 459 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr
gsave 2268 2199 0 0 C 145 635 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4000) show NC gr
gsave 2268 2199 0 0 C 145 812 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6000) show NC gr
gsave 2268 2199 0 0 C 145 989 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8000) show NC gr
gsave 2268 2199 0 0 C 100 1162 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10000) show NC gr
gsave 2268 2199 0 0 C 100 1339 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12000) show NC gr
gsave 2268 2199 0 0 C 100 1516 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14000) show NC gr
gsave 2268 2199 0 0 C 100 1692 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16000) show NC gr
gsave 2268 2199 0 0 C 100 1869 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (18000) show NC gr
gsave 2268 2199 0 0 C 100 2043 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20000) show NC gr 9 lw 0.95 0.95 0.95 c black 584 2080 m 18 -143 d 18 -243 d 18 -158 d 19 -101 d 18 -63 d 18 -40 d 18 -25 d 18 -16 d 18 -12 d 18 -9 d 19 -7 d 18 -7 d
18 -6 d 18 -6 d 18 -5 d 18 -6 d 19 -6 d 18 -6 d 18 -6 d 18 -5 d 18 -6 d 18 -6 d 18 -6 d 19 -5 d 18 -6 d 18 -6 d 18 -6 d 18 -5 d 18 -6 d 18 -6 d 19 -6 d 18 -5 d 18 -6 d 18 -6 d 18 -6 d 18 -6 d 18 -5 d 19 -6 d 18 -7 d 18 -6 d 18 -7 d 18 -7 d 18 -8 d
18 -9 d 19 -11 d 18 -13 d 18 -16 d 18 -19 d 18 -22 d s 1473 981 m 18 -26 d 19 -31 d 18 -36 d 18 -39 d 18 -44 d 18 -46 d 18 -48 d 18 -49 d 19 -48 d 18 -46 d 18 -44 d 18 -39 d 18 -34 d 18 -30 d 18 -25 d 19 -20 d 18 -16 d 18 -12 d 18 -9 d 18 -7 d 18
-4 d 18 -3 d 19 -3 d 18 -1 d 18 -1 d 18 X 18 -1 d 182 X s[ 4 8] 0 sd 0.95 0.95 0.95 c black 348 996 m 889 X s 1237 996 m 37 X 18 -1 d 18 X 18 -1 d 18 -1 d 18 -3 d 18 -3 d 19 -5 d 18 -6 d 18 -9 d 18 -13 d 18 -16 d 18 -20 d 19 -24 d 18 -29 d 18 -34 d
18 -38 d 18 -42 d 18 -44 d 18 -45 d 19 -46 d 18 -44 d 18 -42 d 18 -39 d 18 -35 d 18 -30 d 18 -25 d 19 -21 d 18 -17 d 18 -12 d 18 -10 d 18 -7 d 18 -5 d 18 -4 d 19 -2 d 18 -2 d 18 -1 d 36 X 18 -1 d 146 X s 2127 319 m 18 X s[ ] 0 sd 3 lw 0.95 0.95
0.95 c black 584 2080 m 18 -263 d 18 -237 d 18 -152 d 19 -95 d 18 -58 d 18 -34 d 18 -19 d 18 -11 d 18 -6 d 18 -3 d 19 -1 d 18 -1 d 36 X 18 -1 d 418 X 18 -1 d 18 X 18 -1 d 18 -2 d 18 -3 d 18 -4 d 19 -6 d 18 -9 d 18 -12 d 18 -16 d 18 -21 d s 1473
1124 m 18 -26 d 19 -32 d 18 -38 d 18 -44 d 18 -49 d 18 -54 d 18 -57 d 18 -60 d 19 -59 d 18 -58 d 18 -54 d 18 -51 d 18 -44 d 18 -40 d 18 -33 d 19 -27 d 18 -21 d 18 -17 d 18 -13 d 18 -9 d 18 -6 d 18 -5 d 19 -3 d 18 -2 d 18 -1 d 18 -1 d 18 X 18 -1 d
164 X s[ 12 12] 0 sd 6 lw 339 1199 m 1281 X s 1620 1199 m -880 Y s 1620 319 m 534 X s[ 12 16 4 16] 0 sd 980 319 m 880 Y s
gsave 2268 2199 0 0 C 1695 319 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 1630 348 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
gsave 2268 2199 0 0 C 1054 319 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (t) show NC gr
gsave 2268 2199 0 0 C 989 348 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
gsave 2268 2199 0 0 C 439 1199 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 370 1228 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr [ ] 0 sd 1545 1067 m 43 X s 3 lw 1588 1086 m 32 -19 d -32 -18 d f 6 lw 1588 1086 m 32 -19 d -32 -18 d 37 Y cl s 3 lw 1545 1049 m -32 18 d 32 19 d f 6 lw
1545 1049 m -32 18 d 32 19 d -37 Y cl s
gsave 2268 2199 0 0 C 1501 1094 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (ENC) show NC gr 926 1029 m 139 Y s 3 lw 908 1168 m 18 31 d 18 -31 d f 6 lw 908 1168 m 18 31 d 18 -31 d -36 X cl s 3 lw 944 1029 m -18 -32 d -18 32 d f 6 lw 944 1029 m
-18 -32 d -18 32 d 36 X cl s
gsave 2268 2199 0 0 C 855 1048 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (S) show NC gr
gsave 2268 2199 0 0 C 786 1077 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr
gr gr
showpage
end
%%EOF

View File

@ -1,150 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 550
%%Title: /afs/psi.ch/user/b/bergamaschi/root_macros/paper/thrscanSettings.eps: c1_n4
%%Creator: ROOT Version 5.20/00
%%CreationDate: Wed Dec 3 14:58:49 2008
%%EndComments
%%BeginProlog
80 dict begin
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
/mp {newpath /y exch def /x exch def} def
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
0 w3 neg d w3 neg 0 d cl s } def
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl fill gr} def
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl s gr} def
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
sub m w w d s} def
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
/oshow {gsave [] 0 sd true charpath stroke gr} def
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
text sw pop xs add /xs exch def} def
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
pop neg xs add /xs exch def} def
%%EndProlog
%%BeginSetup
%%EndSetup
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2199 0 0 bf black 3 lw 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c black 340 330 m 1814 X s 6 lw
340 330 m 1814 X s
gsave 2268 2199 0 0 C 1530 123 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Energy \(keV\)) show NC gr 340 383 m -53 Y s 392 356 m -26 Y s 444 356 m -26 Y s 496 356 m -26 Y s 547 383 m -53 Y s 599 356 m -26 Y s 651 356 m -26 Y s 703 356 m -26
Y s 755 383 m -53 Y s 807 356 m -26 Y s 858 356 m -26 Y s 910 356 m -26 Y s 962 383 m -53 Y s 1014 356 m -26 Y s 1066 356 m -26 Y s 1118 356 m -26 Y s 1169 383 m -53 Y s 1221 356 m -26 Y s 1273 356 m -26 Y s 1325 356 m -26 Y s 1377 383 m -53 Y s
1429 356 m -26 Y s 1480 356 m -26 Y s 1532 356 m -26 Y s 1584 383 m -53 Y s 1636 356 m -26 Y s 1688 356 m -26 Y s 1740 356 m -26 Y s 1791 383 m -53 Y s 1843 356 m -26 Y s 1895 356 m -26 Y s 1947 356 m -26 Y s 1999 383 m -53 Y s 1999 383 m -53 Y s
2051 356 m -26 Y s 2102 356 m -26 Y s 2154 356 m -26 Y s
gsave 2268 2199 0 0 C 316 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 524 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
gsave 2268 2199 0 0 C 729 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
gsave 2268 2199 0 0 C 937 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
gsave 2268 2199 0 0 C 1145 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr
gsave 2268 2199 0 0 C 1330 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
gsave 2268 2199 0 0 C 1538 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show NC gr
gsave 2268 2199 0 0 C 1744 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show NC gr
gsave 2268 2199 0 0 C 1951 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16) show NC gr 340 330 m 1759 Y s
gsave 2268 2199 0 0 C 94 1177 t 90 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Normalized counts) show NC gr 395 330 m -55 X s 367 374 m -27 X s 367 418 m -27 X s 367 462 m -27 X s 395 506 m -55 X s 367 550 m -27 X s 367 594 m -27 X s 367 638 m
-27 X s 395 682 m -55 X s 367 726 m -27 X s 367 770 m -27 X s 367 814 m -27 X s 395 858 m -55 X s 367 902 m -27 X s 367 946 m -27 X s 367 990 m -27 X s 395 1034 m -55 X s 367 1078 m -27 X s 367 1122 m -27 X s 367 1166 m -27 X s 395 1210 m -55 X s
367 1254 m -27 X s 367 1298 m -27 X s 367 1342 m -27 X s 395 1386 m -55 X s 367 1430 m -27 X s 367 1474 m -27 X s 367 1518 m -27 X s 395 1562 m -55 X s 367 1606 m -27 X s 367 1650 m -27 X s 367 1693 m -27 X s 395 1737 m -55 X s 367 1781 m -27 X s
367 1825 m -27 X s 367 1869 m -27 X s 395 1913 m -55 X s 367 1957 m -27 X s 367 2001 m -27 X s 367 2045 m -27 X s 395 2089 m -55 X s
gsave 2268 2199 0 0 C 285 293 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 217 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.2) show NC gr
gsave 2268 2199 0 0 C 214 647 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.4) show NC gr
gsave 2268 2199 0 0 C 214 823 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.6) show NC gr
gsave 2268 2199 0 0 C 214 997 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.8) show NC gr
gsave 2268 2199 0 0 C 293 1171 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1) show NC gr
gsave 2268 2199 0 0 C 217 1348 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.2) show NC gr
gsave 2268 2199 0 0 C 214 1524 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.4) show NC gr
gsave 2268 2199 0 0 C 214 1701 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.6) show NC gr
gsave 2268 2199 0 0 C 214 1877 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.8) show NC gr
gsave 2268 2199 0 0 C 285 2051 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr 1 1 1 c 1112 857 1020 1210 bf 1020 1210 m 4 4 d 849 Y 1104 X 4 4 d -1112 X -857 Y f 1020 1210 m 4 4 d 1104 X 849 Y 4 4 d -857 Y -1112 X f black 3 lw 1 1
1 c 977 755 1132 1295 bf black 977 755 1132 1295 bl 1 1 1 c 977 755 1132 1295 bf black 977 755 1132 1295 bl 1 1 1 c black 1132 1295 m 977 X s 6 lw 1132 1295 m 977 X s 1132 1318 m -23 Y s 1156 1307 m -12 Y s 1180 1307 m -12 Y s 1205 1307 m -12 Y s
1229 1307 m -12 Y s 1254 1318 m -23 Y s 1278 1307 m -12 Y s 1303 1307 m -12 Y s 1327 1307 m -12 Y s 1352 1307 m -12 Y s 1376 1318 m -23 Y s 1400 1307 m -12 Y s 1425 1307 m -12 Y s 1449 1307 m -12 Y s 1474 1307 m -12 Y s 1498 1318 m -23 Y s 1523
1307 m -12 Y s 1547 1307 m -12 Y s 1572 1307 m -12 Y s 1596 1307 m -12 Y s 1621 1318 m -23 Y s 1645 1307 m -12 Y s 1669 1307 m -12 Y s 1694 1307 m -12 Y s 1718 1307 m -12 Y s 1743 1318 m -23 Y s 1767 1307 m -12 Y s 1792 1307 m -12 Y s 1816 1307 m
-12 Y s 1841 1307 m -12 Y s 1865 1318 m -23 Y s 1889 1307 m -12 Y s 1914 1307 m -12 Y s 1938 1307 m -12 Y s 1963 1307 m -12 Y s 1987 1318 m -23 Y s 2012 1307 m -12 Y s 2036 1307 m -12 Y s 2061 1307 m -12 Y s 2085 1307 m -12 Y s 2109 1318 m -23 Y s
gsave 1112 857 1020 1210 C 1100 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (10.5) show NC gr
gsave 1112 857 1020 1210 C 1239 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (11) show NC gr
gsave 1112 857 1020 1210 C 1345 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (11.5) show NC gr
gsave 1112 857 1020 1210 C 1479 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (12) show NC gr
gsave 1112 857 1020 1210 C 1587 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (12.5) show NC gr
gsave 1112 857 1020 1210 C 1724 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (13) show NC gr
gsave 1112 857 1020 1210 C 1832 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (13.5) show NC gr
gsave 1112 857 1020 1210 C 1969 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (14) show NC gr
gsave 1112 857 1020 1210 C 2077 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (14.5) show NC gr 1132 1295 m 755 Y s 1161 1295 m -29 X s 1146 1314 m -14 X s 1146 1333 m -14 X s 1146 1352 m -14 X s 1146 1371 m -14 X s 1161 1390 m -29 X s
1146 1409 m -14 X s 1146 1428 m -14 X s 1146 1446 m -14 X s 1146 1465 m -14 X s 1161 1484 m -29 X s 1146 1503 m -14 X s 1146 1522 m -14 X s 1146 1541 m -14 X s 1146 1560 m -14 X s 1161 1578 m -29 X s 1146 1597 m -14 X s 1146 1616 m -14 X s 1146
1635 m -14 X s 1146 1654 m -14 X s 1161 1673 m -29 X s 1146 1692 m -14 X s 1146 1711 m -14 X s 1146 1729 m -14 X s 1146 1748 m -14 X s 1161 1767 m -29 X s 1146 1786 m -14 X s 1146 1805 m -14 X s 1146 1824 m -14 X s 1146 1843 m -14 X s 1161 1862 m
-29 X s 1146 1880 m -14 X s 1146 1899 m -14 X s 1146 1918 m -14 X s 1146 1937 m -14 X s 1161 1956 m -29 X s 1146 1975 m -14 X s 1146 1994 m -14 X s 1146 2012 m -14 X s 1146 2031 m -14 X s 1161 2050 m -29 X s
gsave 1112 857 1020 1210 C 1108 1285 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0) show NC gr
gsave 1112 857 1020 1210 C 1085 1379 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.1) show NC gr
gsave 1112 857 1020 1210 C 1083 1473 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.2) show NC gr
gsave 1112 857 1020 1210 C 1083 1570 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.3) show NC gr
gsave 1112 857 1020 1210 C 1080 1664 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.4) show NC gr
gsave 1112 857 1020 1210 C 1083 1758 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.5) show NC gr
gsave 1112 857 1020 1210 C 1083 1852 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.6) show NC gr
gsave 1112 857 1020 1210 C 1083 1946 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.7) show NC gr
gsave 1112 857 1020 1210 C 1083 2040 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.8) show NC gr 3 lw 1 1 1 c black /w 24 def /w2 {w 2 div} def /w3 {w 3 div} def 1147 1989 1177 1978 1208 1964 1239 1951 1269 1934 1300 1916 1330 1896 1361 1874
1391 1850 1422 1824 1452 1795 1483 1764 1514 1730 1544 1695 1575 1659 1605 1621 1636 1583 1666 1547 1697 1513 1727 1480 1758 1449 1789 1422 1819 1398 1850 1376 1880 1358 1911 1344 1941 1332 1972 1323 2002 1315 2033 1310 2064 1306 2094 1303 32 { m20
} R 9 lw 0.95 0.95 0.95 c black 1136 1998 m 10 -3 d 10 -3 d 10 -4 d 10 -4 d 9 -3 d 10 -4 d 10 -4 d 10 -4 d 9 -4 d 10 -5 d 10 -5 d 10 -4 d 10 -5 d 9 -6 d 10 -5 d 10 -6 d 10 -6 d 9 -6 d 10 -7 d 10 -6 d 10 -7 d 10 -8 d 9 -7 d 10 -8 d 10 -8 d 10 -8 d 9
-9 d 10 -9 d 10 -9 d 10 -10 d 10 -10 d 9 -10 d 10 -10 d 10 -10 d 10 -11 d 10 -11 d 9 -11 d 10 -11 d 10 -12 d 10 -12 d 9 -11 d 10 -12 d 10 -12 d 10 -12 d 10 -12 d 9 -13 d 10 -12 d 10 -12 d 10 -12 d s 1616 1605 m 9 -12 d 10 -12 d 10 -12 d 10 -11 d 10
-12 d 9 -11 d 10 -11 d 10 -11 d 10 -11 d 9 -11 d 10 -10 d 10 -10 d 10 -10 d 10 -9 d 9 -9 d 10 -9 d 10 -8 d 10 -8 d 9 -8 d 10 -8 d 10 -7 d 10 -6 d 10 -7 d 9 -6 d 10 -6 d 10 -6 d 10 -5 d 9 -5 d 10 -4 d 10 -5 d 10 -4 d 10 -3 d 9 -4 d 10 -3 d 10 -3 d
10 -3 d 9 -3 d 10 -2 d 10 -2 d 10 -3 d 10 -1 d 9 -2 d 10 -2 d 10 -1 d 10 -1 d 9 -2 d 10 -1 d 10 -1 d 10 -1 d s 2095 1303 m 10 X s[ 12 12] 0 sd 3 lw 1 1 1 c black[ ] 0 sd 1147 1972 1177 1960 1208 1944 1239 1929 1269 1911 1300 1891 1330 1870 1361
1847 1391 1822 1422 1795 1452 1767 1483 1737 1514 1704 1544 1672 1575 1639 1605 1607 1636 1573 1666 1541 1697 1510 1727 1481 1758 1454 1789 1429 1819 1407 1850 1388 1880 1370 1911 1355 1941 1343 1972 1332 2002 1324 2033 1317 2064 1312 2094 1308 32
{ m24} R[ 12 12] 0 sd 9 lw 0.95 0.95 0.95 c black 1136 1982 m 10 -4 d 10 -3 d 10 -5 d 10 -4 d 9 -4 d 10 -5 d 10 -5 d 10 -5 d 9 -5 d 10 -5 d 10 -6 d 10 -5 d 10 -6 d 9 -6 d 10 -6 d 10 -6 d 10 -7 d 9 -7 d 10 -7 d 10 -7 d 10 -8 d 10 -7 d 9 -8 d 10 -8 d
10 -9 d 10 -8 d 9 -9 d 10 -9 d 10 -9 d 10 -9 d 10 -10 d 9 -9 d 10 -10 d 10 -10 d 10 -10 d 10 -10 d 9 -10 d 10 -11 d 10 -11 d 10 -10 d 9 -11 d 10 -10 d 10 -11 d 10 -11 d 10 -11 d 9 -11 d 10 -10 d 10 -11 d 10 -11 d s 1616 1592 m 9 -10 d 10 -11 d 10
-10 d 10 -10 d 10 -10 d 9 -10 d 10 -10 d 10 -10 d 10 -10 d 9 -9 d 10 -9 d 10 -9 d 10 -8 d 10 -9 d 9 -8 d 10 -8 d 10 -7 d 10 -8 d 9 -7 d 10 -7 d 10 -7 d 10 -6 d 10 -7 d 9 -5 d 10 -6 d 10 -6 d 10 -5 d 9 -4 d 10 -5 d 10 -5 d 10 -4 d 10 -4 d 9 -4 d 10
-3 d 10 -3 d 10 -4 d 9 -3 d 10 -2 d 10 -3 d 10 -2 d 10 -3 d 9 -2 d 10 -2 d 10 -2 d 10 -1 d 9 -2 d 10 -1 d 10 -2 d 10 -1 d s 2095 1308 m 10 -1 d s[ 4 8] 0 sd 3 lw 1 1 1 c black[ ] 0 sd 1147 2002 1177 1989 1208 1983 1239 1966 1269 1957 1300 1940
1330 1925 1361 1904 1391 1886 1422 1863 1452 1834 1483 1804 1514 1767 1544 1731 1575 1686 1605 1646 1636 1597 1666 1556 1697 1511 1727 1473 1758 1436 1789 1405 1819 1381 1850 1358 1880 1343 1911 1329 1941 1321 1972 1313 2002 1311 2033 1306 2064
1306 2094 1304 32 { m28} R[ 4 8] 0 sd 9 lw 0.95 0.95 0.95 c black 1136 2004 m 10 -3 d 10 -2 d 10 -3 d 10 -3 d 9 -3 d 10 -3 d 10 -3 d 10 -3 d 9 -4 d 10 -3 d 10 -4 d 10 -3 d 10 -4 d 9 -4 d 10 -4 d 10 -5 d 10 -4 d 9 -5 d 10 -5 d 10 -5 d 10 -6 d 10 -6
d 9 -6 d 10 -7 d 10 -7 d 10 -7 d 9 -7 d 10 -9 d 10 -8 d 10 -8 d 10 -10 d 9 -10 d 10 -10 d 10 -10 d 10 -11 d 10 -11 d 9 -11 d 10 -13 d 10 -12 d 10 -13 d 9 -13 d 10 -13 d 10 -14 d 10 -13 d 10 -14 d 9 -15 d 10 -14 d 10 -14 d 10 -14 d s 1616 1625 m 9
-15 d 10 -14 d 10 -14 d 10 -14 d 10 -14 d 9 -13 d 10 -14 d 10 -13 d 10 -13 d 9 -12 d 10 -12 d 10 -12 d 10 -11 d 10 -11 d 9 -10 d 10 -11 d 10 -9 d 10 -8 d 9 -9 d 10 -8 d 10 -8 d 10 -7 d 10 -7 d 9 -5 d 10 -6 d 10 -6 d 10 -5 d 9 -4 d 10 -4 d 10 -4 d
10 -3 d 10 -3 d 9 -3 d 10 -3 d 10 -2 d 10 -2 d 9 -2 d 10 -2 d 10 -1 d 10 -2 d 10 -1 d 9 -1 d 10 -1 d 10 -1 d 10 X 9 -1 d 10 X 10 -1 d 10 X s 2095 1303 m 10 -1 d s[ ] 0 sd 3 lw 1 1 1 c black 632 2089 645 1978 658 1730 671 1586 684 1490 697 1427 709
1390 722 1364 735 1345 748 1334 761 1324 774 1315 787 1309 800 1302 813 1295 826 1289 839 1282 852 1277 865 1270 878 1264 891 1258 904 1251 917 1246 930 1240 943 1234 956 1229 969 1222 982 1216 995 1210 1008 1204 1020 1196 1033 1193 1046 1186 1059
1180 1072 1173 1085 1169 1098 1163 1111 1156 1124 1150 1137 1145 1150 1140 1163 1133 1176 1127 1189 1120 1202 1115 1215 1109 1228 1101 1241 1095 1254 1087 1267 1081 50 { m20} R 632 2089 m 13 -111 d 13 -248 d 13 -144 d 13 -96 d 13 -63 d 12 -37 d 13
-26 d 13 -19 d 13 -11 d 13 -10 d 13 -9 d 13 -6 d 13 -7 d 13 -7 d 13 -6 d 13 -7 d 13 -5 d 13 -7 d 13 -6 d 13 -6 d 13 -7 d 13 -5 d 13 -6 d 13 -6 d 13 -5 d 13 -7 d 13 -6 d 13 -6 d 13 -6 d 12 -8 d 13 -3 d 13 -7 d 13 -6 d 13 -7 d 13 -4 d 13 -6 d 13 -7 d
13 -6 d 13 -5 d 13 -5 d 13 -7 d 13 -6 d 13 -7 d 13 -5 d 13 -6 d 13 -8 d 13 -6 d 13 -8 d 13 -6 d s 1267 1081 1280 1075 1293 1068 1306 1060 1319 1052 1331 1046 1344 1038 1357 1031 1370 1022 1383 1015 1396 1006 1409 998 1422 987 1435 977 1448 966 1461
954 1474 941 1487 925 1500 909 1513 890 1526 869 1539 847 1552 823 1565 796 1578 767 1591 735 1604 702 1617 668 1630 634 1642 598 1655 565 1668 532 1681 502 1694 473 1707 448 1720 425 1733 405 1746 389 1759 375 1772 364 1785 355 1798 348 1811 343
1824 340 1837 337 1850 335 1863 334 1876 333 1889 332 1902 332 50 { m20} R 1267 1081 m 13 -6 d 13 -7 d 13 -8 d 13 -8 d 12 -6 d 13 -8 d 13 -7 d 13 -9 d 13 -7 d 13 -9 d 13 -8 d 13 -11 d 13 -10 d 13 -11 d 13 -12 d 13 -13 d 13 -16 d 13 -16 d 13 -19 d
13 -21 d 13 -22 d 13 -24 d 13 -27 d 13 -29 d 13 -32 d 13 -33 d 13 -34 d 13 -34 d 12 -36 d 13 -33 d 13 -33 d 13 -30 d 13 -29 d 13 -25 d 13 -23 d 13 -20 d 13 -16 d 13 -14 d 13 -11 d 13 -9 d 13 -7 d 13 -5 d 13 -3 d 13 -3 d 13 -2 d 13 -1 d 13 -1 d 13
-1 d 13 X s 1902 332 1915 331 1928 331 1941 331 1953 331 1966 331 1979 331 1992 331 2005 331 2018 331 2031 331 2044 331 2057 331 2070 331 2083 331 2096 331 2109 331 2122 331 2135 331 2148 331 20 { m20} R 1902 332 m 13 -1 d 233 X s[ 12 12] 0 sd 1 1
1 c black[ ] 0 sd 748 2089 761 1386 774 1361 787 1345 800 1325 813 1319 826 1305 839 1294 852 1286 865 1279 878 1270 891 1263 904 1254 917 1247 930 1242 943 1235 956 1229 969 1223 982 1215 995 1210 1008 1204 1020 1197 1033 1191 1046 1185 1059 1181
1072 1174 1085 1168 1098 1161 1111 1155 1124 1148 1137 1142 1150 1136 1163 1130 1176 1124 1189 1116 1202 1110 1215 1104 1228 1097 1241 1091 1254 1083 1267 1076 1280 1069 1293 1061 1306 1054 1319 1046 1331 1038 1344 1030 1357 1022 1370 1011 1383
1004 50 { m24} R[ 12 12] 0 sd 748 2089 m 13 -703 d 13 -25 d 13 -16 d 13 -20 d 13 -6 d 13 -14 d 13 -11 d 13 -8 d 13 -7 d 13 -9 d 13 -7 d 13 -9 d 13 -7 d 13 -5 d 13 -7 d 13 -6 d 13 -6 d 13 -8 d 13 -5 d 13 -6 d 12 -7 d 13 -6 d 13 -6 d 13 -4 d 13 -7 d
13 -6 d 13 -7 d 13 -6 d 13 -7 d 13 -6 d 13 -6 d 13 -6 d 13 -6 d 13 -8 d 13 -6 d 13 -6 d 13 -7 d 13 -6 d 13 -8 d 13 -7 d 13 -7 d 13 -8 d 13 -7 d 13 -8 d 12 -8 d 13 -8 d 13 -8 d 13 -11 d 13 -7 d s[ ] 0 sd 1383 1004 1396 994 1409 983 1422 972 1435
961 1448 949 1461 935 1474 921 1487 903 1500 885 1513 866 1526 845 1539 821 1552 796 1565 769 1578 742 1591 711 1604 681 1617 651 1630 620 1642 589 1655 559 1668 530 1681 503 1694 477 1707 455 1720 434 1733 416 1746 400 1759 386 1772 374 1785 364
1798 356 1811 350 1824 345 1837 341 1850 339 1863 336 1876 334 1889 333 1902 332 1915 332 1928 331 1941 331 1953 331 1966 331 1979 331 1992 331 2005 331 2018 331 50 { m24} R[ 12 12] 0 sd 1383 1004 m 13 -10 d 13 -11 d 13 -11 d 13 -11 d 13 -12 d 13
-14 d 13 -14 d 13 -18 d 13 -18 d 13 -19 d 13 -21 d 13 -24 d 13 -25 d 13 -27 d 13 -27 d 13 -31 d 13 -30 d 13 -30 d 13 -31 d 12 -31 d 13 -30 d 13 -29 d 13 -27 d 13 -26 d 13 -22 d 13 -21 d 13 -18 d 13 -16 d 13 -14 d 13 -12 d 13 -10 d 13 -8 d 13 -6 d
13 -5 d 13 -4 d 13 -2 d 13 -3 d 13 -2 d 13 -1 d 13 -1 d 13 X 13 -1 d 90 X s[ ] 0 sd 2018 331 2031 331 2044 330 2057 330 2070 330 2083 330 2096 330 2109 330 2122 330 2135 330 2148 330 11 { m24} R[ 12 12] 0 sd 2018 331 m 13 X 13 -1 d 104 X s[ 4 8
] 0 sd 1 1 1 c black[ ] 0 sd 515 2089 528 2040 541 1779 554 1647 567 1615 580 1504 593 1472 606 1483 619 1425 632 1409 645 1423 658 1386 671 1377 684 1362 697 1374 709 1345 722 1340 735 1340 748 1322 761 1315 774 1314 787 1301 800 1295 813 1295 826
1281 839 1278 852 1268 865 1269 878 1256 891 1254 904 1249 917 1240 930 1235 943 1233 956 1228 969 1219 982 1217 995 1210 1008 1206 1020 1197 1033 1197 1046 1185 1059 1184 1072 1178 1085 1171 1098 1167 1111 1157 1124 1158 1137 1146 1150 1144 50 {
m28} R[ 4 8] 0 sd 515 2089 m 13 -49 d 13 -261 d 13 -132 d 13 -32 d 13 -111 d 13 -32 d 13 11 d 13 -58 d 13 -16 d 13 14 d 13 -37 d 13 -9 d 13 -15 d 13 12 d 12 -29 d 13 -5 d 13 X 13 -18 d 13 -7 d 13 -1 d 13 -13 d 13 -6 d 13 X 13 -14 d 13 -3 d 13 -10 d
13 1 d 13 -13 d 13 -2 d 13 -5 d 13 -9 d 13 -5 d 13 -2 d 13 -5 d 13 -9 d 13 -2 d 13 -7 d 13 -4 d 12 -9 d 13 X 13 -12 d 13 -1 d 13 -6 d 13 -7 d 13 -4 d 13 -10 d 13 1 d 13 -12 d 13 -2 d s[ ] 0 sd 1150 1144 1163 1135 1176 1133 1189 1123 1202 1122 1215
1111 1228 1108 1241 1103 1254 1091 1267 1088 1280 1077 1293 1076 1306 1063 1319 1059 1331 1050 1344 1044 1357 1034 1370 1031 1383 1019 1396 1014 1409 1006 1422 996 1435 989 1448 976 1461 971 1474 955 1487 947 1500 931 1513 917 1526 897 1539 881
1552 859 1565 832 1578 804 1591 770 1604 736 1617 694 1630 657 1642 612 1655 573 1668 531 1681 496 1694 461 1707 432 1720 409 1733 388 1746 374 1759 362 1772 354 1785 346 50 { m28} R[ 4 8] 0 sd 1150 1144 m 13 -9 d 13 -2 d 13 -10 d 13 -1 d 13 -11 d
13 -3 d 13 -5 d 13 -12 d 13 -3 d 13 -11 d 13 -1 d 13 -13 d 13 -4 d 12 -9 d 13 -6 d 13 -10 d 13 -3 d 13 -12 d 13 -5 d 13 -8 d 13 -10 d 13 -7 d 13 -13 d 13 -5 d 13 -16 d 13 -8 d 13 -16 d 13 -14 d 13 -20 d 13 -16 d 13 -22 d 13 -27 d 13 -28 d 13 -34 d
13 -34 d 13 -42 d 13 -37 d 12 -45 d 13 -39 d 13 -42 d 13 -35 d 13 -35 d 13 -29 d 13 -23 d 13 -21 d 13 -14 d 13 -12 d 13 -8 d 13 -8 d s[ ] 0 sd 1785 346 1798 345 1811 340 1824 340 1837 338 1850 337 1863 337 1876 335 1889 336 1902 335 1915 335 1928
335 1941 335 1953 334 1966 335 1979 335 1992 334 2005 334 2018 334 2031 334 2044 333 2057 334 2070 333 2083 333 2096 333 2109 333 2122 333 2135 333 2148 333 29 { m28} R[ 4 8] 0 sd 1785 346 m 13 -1 d 13 -5 d 13 X 13 -2 d 13 -1 d 13 X 13 -2 d 13 1 d
13 -1 d 39 X 12 -1 d 13 1 d 13 X 13 -1 d 39 X 13 -1 d 13 1 d 13 -1 d 78 X s[ ] 0 sd 6 lw 1 1 1 c 680 440 454 440 bf black 454 440 m 680 X s 1134 440 m 440 Y s 1134 880 m -680 X s 454 880 m -440 Y s
gsave 2268 2199 0 0 C 470 798 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Settings) show NC gr
gsave 2268 2199 0 0 C 621 678 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (standard) show NC gr 3 lw 479 715 m 119 X s 539 715 m20
gsave 2268 2199 0 0 C 621 567 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (fast) show NC gr [ 12 12] 0 sd 479 605 m 119 X s[ ] 0 sd 539 605 m24[ 12 12] 0 sd
gsave 2268 2199 0 0 C 621 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (highgain) show NC gr [ 4 8] 0 sd 479 495 m 119 X s[ ] 0 sd 539 495 m28[ 4 8] 0 sd
gr gr
showpage
end
%%EOF

View File

@ -1,103 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 564
%%Title: /afs/psi.ch/project/mythen/root_macros20100305/paper/fluoExp.eps: c1
%%Creator: ROOT Version 5.24/00
%%CreationDate: Thu Mar 11 12:55:25 2010
%%EndComments
%%BeginProlog
80 dict begin
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
/mp {newpath /y exch def /x exch def} def
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
0 w3 neg d w3 neg 0 d cl s } def
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl fill gr} def
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl s gr} def
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
sub m w w d s} def
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
/oshow {gsave [] 0 sd true charpath stroke gr} def
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
text sw pop xs add /xs exch def} def
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
pop neg xs add /xs exch def} def
%%EndProlog
%%BeginSetup
%%EndSetup
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2256 0 0 bf black 3 lw 1 1 1 c 1814 1806 340 338 bf black 1814 1806 340 338 bl 1 1 1 c 1814 1806 340 338 bf black 1814 1806 340 338 bl 1 1 1 c black /w 24
def /w2 {w 2 div} def /w3 {w 3 div} def 539 2040 548 1949 556 1891 565 1845 573 1812 582 1788 590 1767 599 1757 607 1741 616 1732 624 1722 633 1712 641 1704 650 1700 658 1685 667 1678 675 1671 683 1663 692 1659 700 1652 709 1642 717 1636 726 1631
734 1628 743 1618 751 1610 760 1610 768 1599 777 1597 785 1589 794 1584 802 1580 811 1571 819 1565 828 1561 836 1553 845 1546 853 1539 862 1531 870 1528 878 1515 887 1513 895 1506 904 1497 912 1493 921 1490 929 1478 938 1474 946 1468 955 1457 50 {
m2} R 955 1457 963 1451 972 1445 980 1434 989 1427 997 1421 1006 1405 1014 1400 1023 1385 1031 1373 1040 1368 1048 1356 1057 1345 1065 1331 1073 1324 1082 1310 1090 1304 1099 1291 1107 1278 1116 1268 1124 1256 1133 1248 1141 1240 1150 1231 1158
1222 1167 1208 1175 1204 1184 1197 1192 1186 1201 1185 1209 1177 1218 1172 1226 1163 1235 1152 1243 1155 1251 1147 1260 1142 1268 1137 1277 1133 1285 1132 1294 1123 1302 1124 1311 1118 1319 1113 1328 1109 1336 1103 1345 1100 1353 1094 1362 1095
1370 1092 50 { m2} R 1370 1092 1379 1088 1387 1085 1396 1079 1404 1073 1413 1064 1421 1063 1430 1058 1438 1054 1446 1053 1455 1048 1463 1043 1472 1038 1480 1034 1489 1032 1497 1026 1506 1020 1514 1018 1523 1009 1531 1007 1540 998 1548 994 1557 989
1565 983 1574 976 1582 966 1591 960 1599 951 1608 943 1616 935 1624 929 1633 915 1641 903 1650 893 1658 882 1667 869 1675 856 1684 846 1692 832 1701 814 1709 798 1718 779 1726 763 1735 745 1743 725 1752 704 1760 682 1769 661 1777 638 1786 619 50 {
m2} R 1786 619 1794 597 1803 579 1811 558 1819 536 1828 518 1836 500 1845 483 1853 467 1862 453 1870 438 1879 426 1887 415 1896 404 1904 394 1913 386 1921 378 1930 372 1938 367 1947 362 1955 359 1964 356 1972 352 1981 350 1989 348 1997 347 2006 345
2014 344 2023 343 2031 343 2040 343 2048 342 2057 342 2065 342 2074 341 2082 341 2091 341 2099 341 2108 341 2116 341 2125 341 2133 341 2142 341 2150 341 44 { m2} R 9 lw 0.95 0.95 0.95 c black 715 1630 m 15 -9 d 14 -9 d 14 -9 d 15 -9 d 14 -9 d 15 -9
d 14 -9 d 14 -9 d 15 -9 d 14 -10 d 15 -10 d 14 -11 d 15 -11 d 14 -11 d 14 -12 d 15 -13 d 14 -15 d 15 -15 d 14 -16 d 15 -16 d 14 -18 d 14 -18 d 15 -19 d 14 -19 d 15 -18 d 14 -19 d 14 -18 d 15 -17 d 14 -16 d 15 -15 d 14 -13 d 15 -13 d 14 -12 d 14 -11
d 15 -10 d 14 -10 d 15 -9 d 14 -9 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -7 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -7 d 15 -8 d s 1422 1060 m 14 -7 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -9 d 14 -10 d 14 -10 d 15 -11 d 14 -13 d 15
-14 d 14 -17 d 14 -18 d 15 -21 d 14 -23 d 15 -26 d 14 -29 d 15 -31 d 14 -34 d 14 -35 d 15 -36 d 14 -36 d 15 -35 d 14 -35 d 15 -32 d 14 -31 d 14 -27 d 15 -24 d 14 -21 d 15 -18 d 14 -14 d 14 -12 d 15 -10 d 14 -7 d 15 -5 d 14 -4 d 15 -3 d 14 -2 d 14
-2 d 15 -1 d 14 X 15 -1 d 57 X s 2128 341 m 15 X s 6 lw 340 338 m 1814 X s
gsave 2268 2256 0 0 C 1368 130 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (Threshold \(keV\)) show NC gr 347 393 m -55 Y s 407 366 m -28 Y s 468 366 m -28 Y s 528 366 m -28 Y s 588 393 m -55 Y s 648 366 m -28 Y s 708 366 m -28 Y s 768 366 m
-28 Y s 828 393 m -55 Y s 888 366 m -28 Y s 948 366 m -28 Y s 1008 366 m -28 Y s 1068 393 m -55 Y s 1129 366 m -28 Y s 1189 366 m -28 Y s 1249 366 m -28 Y s 1309 393 m -55 Y s 1369 366 m -28 Y s 1429 366 m -28 Y s 1489 366 m -28 Y s 1549 393 m -55
Y s 1609 366 m -28 Y s 1669 366 m -28 Y s 1729 366 m -28 Y s 1789 393 m -55 Y s 1850 366 m -28 Y s 1910 366 m -28 Y s 1970 366 m -28 Y s 2030 393 m -55 Y s 347 393 m -55 Y s 2030 393 m -55 Y s 2090 366 m -28 Y s 2150 366 m -28 Y s
gsave 2268 2256 0 0 C 324 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0) show NC gr
gsave 2268 2256 0 0 C 564 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (2) show NC gr
gsave 2268 2256 0 0 C 804 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (4) show NC gr
gsave 2268 2256 0 0 C 1044 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (6) show NC gr
gsave 2268 2256 0 0 C 1286 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (8) show NC gr
gsave 2268 2256 0 0 C 1503 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (10) show NC gr
gsave 2268 2256 0 0 C 1743 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (12) show NC gr
gsave 2268 2256 0 0 C 1980 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (14) show NC gr 340 338 m 1806 Y s
gsave 2268 2256 0 0 C 166 908 t 90 r /Helvetica-Bold findfont 104.36 sf 0 0 m (Normalized counts \(A.U.\)) show NC gr 395 338 m -55 X s 367 384 m -27 X s 367 429 m -27 X s 367 474 m -27 X s 395 519 m -55 X s 367 564 m -27 X s 367 609 m -27 X s
367 654 m -27 X s 395 699 m -55 X s 367 745 m -27 X s 367 790 m -27 X s 367 835 m -27 X s 395 880 m -55 X s 367 925 m -27 X s 367 970 m -27 X s 367 1015 m -27 X s 395 1061 m -55 X s 367 1106 m -27 X s 367 1151 m -27 X s 367 1196 m -27 X s 395 1241
m -55 X s 367 1286 m -27 X s 367 1331 m -27 X s 367 1376 m -27 X s 395 1422 m -55 X s 367 1467 m -27 X s 367 1512 m -27 X s 367 1557 m -27 X s 395 1602 m -55 X s 367 1647 m -27 X s 367 1692 m -27 X s 367 1737 m -27 X s 395 1783 m -55 X s 367 1828 m
-27 X s 367 1873 m -27 X s 367 1918 m -27 X s 395 1963 m -55 X s 367 2008 m -27 X s 367 2053 m -27 X s 367 2098 m -27 X s 395 2144 m -55 X s
gsave 2268 2256 0 0 C 282 307 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0) show NC gr
gsave 2268 2256 0 0 C 212 488 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.2) show NC gr
gsave 2268 2256 0 0 C 209 668 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.4) show NC gr
gsave 2268 2256 0 0 C 212 849 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.6) show NC gr
gsave 2268 2256 0 0 C 212 1029 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.8) show NC gr
gsave 2268 2256 0 0 C 293 1207 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1) show NC gr
gsave 2268 2256 0 0 C 212 1388 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.2) show NC gr
gsave 2268 2256 0 0 C 209 1568 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.4) show NC gr
gsave 2268 2256 0 0 C 212 1752 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.6) show NC gr
gsave 2268 2256 0 0 C 212 1932 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.8) show NC gr
gsave 2268 2256 0 0 C 282 2110 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (2) show NC gr [ 12 12] 0 sd 9 lw 0.95 0.95 0.95 c black 715 1449 m 15 -8 d 14 -8 d 14 -7 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 15
-8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -8 d 15
-8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d s 1422 1062 m 14 -7 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -9 d 15 -8 d 14 -9 d 15 -9 d 14 -10 d 14 -10 d 15 -11 d 14 -13 d 15 -14 d 14 -16 d 14 -18 d 15 -21 d 14 -23 d 15 -26 d 14 -29 d 15 -31 d 14 -33 d
14 -35 d 15 -36 d 14 -36 d 15 -36 d 14 -35 d 15 -32 d 14 -31 d 14 -27 d 15 -24 d 14 -21 d 15 -18 d 14 -15 d 14 -12 d 15 -9 d 14 -7 d 15 -5 d 14 -4 d 15 -3 d 14 -2 d 14 -2 d 15 -1 d 14 X 15 -1 d 57 X s 2128 341 m 15 X s[ 4 8] 0 sd 6 lw 1068 338 m
993 Y s 1429 338 m 720 Y s 1789 338 m 281 Y s[ 12 16 4 16] 0 sd 347 1331 m 721 X s 347 1256 m 721 X s
gsave 2268 2256 0 0 C 1842 601 t 0 r /Helvetica-Bold findfont 70.5136 sf 0 0 m (0) show NC gr
gsave 2268 2256 0 0 C 1777 629 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (E) show NC gr
gsave 2268 2256 0 0 C 1470 1061 t 0 r /Helvetica-Bold findfont 70.5136 sf 0 0 m (t) show NC gr
gsave 2268 2256 0 0 C 1405 1089 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (E) show NC gr
gsave 2268 2256 0 0 C 1108 1328 t 0 r /Helvetica-Bold findfont 70.5136 sf 0 0 m (f) show NC gr
gsave 2268 2256 0 0 C 1044 1360 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (E) show NC gr [ ] 0 sd 1068 519 m 361 X s 1397 537 m 32 -18 d -32 -18 d s 1100 501 m -32 18 d 32 18 d s 1429 519 m 360 X s 1758 537 m 31 -18 d -31 -18 d s 1461 501 m
-32 18 d 32 18 d s
gsave 2268 2256 0 0 C 1247 564 t 0 r /Symbol findfont 104.36 sf 0 0 m (S) show NC gr
gsave 2268 2256 0 0 C 1608 564 t 0 r /Symbol findfont 104.36 sf 0 0 m (S) show NC gr 588 1331 m -75 Y s 597 1272 m -9 -16 d -9 16 d s 579 1315 m 9 16 d 9 -16 d s
gsave 2268 2256 0 0 C 609 1269 t 0 r /Symbol findfont 84.6163 sf 0 0 m (D) show NC gr
gr gr
showpage
end
%%EOF

View File

@ -1,146 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 550
%%Title: /afs/psi.ch/user/b/bergamaschi/root_macros/paper/moduleCalibration.eps: c1_n3
%%Creator: ROOT Version 5.20/00
%%CreationDate: Tue Feb 24 16:20:36 2009
%%EndComments
%%BeginProlog
80 dict begin
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
/mp {newpath /y exch def /x exch def} def
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
0 w3 neg d w3 neg 0 d cl s } def
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl fill gr} def
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl s gr} def
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
sub m w w d s} def
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
/oshow {gsave [] 0 sd true charpath stroke gr} def
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
text sw pop xs add /xs exch def} def
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
pop neg xs add /xs exch def} def
%%EndProlog
%%BeginSetup
%%EndSetup
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2199 0 0 bf black 3 lw 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c black 340 330 m 1814 X s 6 lw
340 330 m 1814 X s
gsave 2268 2199 0 0 C 1279 123 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Threshold \(DACu\)) show NC gr 340 383 m -53 Y s 392 356 m -26 Y s 444 356 m -26 Y s 496 356 m -26 Y s 547 356 m -26 Y s 599 383 m -53 Y s 651 356 m -26 Y s 703 356 m
-26 Y s 755 356 m -26 Y s 807 356 m -26 Y s 858 383 m -53 Y s 910 356 m -26 Y s 962 356 m -26 Y s 1014 356 m -26 Y s 1066 356 m -26 Y s 1118 383 m -53 Y s 1169 356 m -26 Y s 1221 356 m -26 Y s 1273 356 m -26 Y s 1325 356 m -26 Y s 1377 383 m -53 Y
s 1429 356 m -26 Y s 1480 356 m -26 Y s 1532 356 m -26 Y s 1584 356 m -26 Y s 1636 383 m -53 Y s 1688 356 m -26 Y s 1740 356 m -26 Y s 1791 356 m -26 Y s 1843 356 m -26 Y s 1895 383 m -53 Y s 1947 356 m -26 Y s 1999 356 m -26 Y s 2051 356 m -26 Y s
2102 356 m -26 Y s 2154 383 m -53 Y s
gsave 2268 2199 0 0 C 271 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (400) show NC gr
gsave 2268 2199 0 0 C 530 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (450) show NC gr
gsave 2268 2199 0 0 C 789 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (500) show NC gr
gsave 2268 2199 0 0 C 1048 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (550) show NC gr
gsave 2268 2199 0 0 C 1308 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (600) show NC gr
gsave 2268 2199 0 0 C 1567 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (650) show NC gr
gsave 2268 2199 0 0 C 1826 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (700) show NC gr
gsave 2268 2199 0 0 C 2085 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (750) show NC gr 340 330 m 1759 Y s
gsave 2268 2199 0 0 C 100 1439 t 90 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Counts \(A.U.\)) show NC gr 395 330 m -55 X s 367 374 m -27 X s 367 418 m -27 X s 367 462 m -27 X s 395 506 m -55 X s 367 550 m -27 X s 367 594 m -27 X s 367 638 m
-27 X s 395 682 m -55 X s 367 726 m -27 X s 367 770 m -27 X s 367 814 m -27 X s 395 858 m -55 X s 367 902 m -27 X s 367 946 m -27 X s 367 990 m -27 X s 395 1034 m -55 X s 367 1078 m -27 X s 367 1122 m -27 X s 367 1166 m -27 X s 395 1210 m -55 X s
367 1254 m -27 X s 367 1298 m -27 X s 367 1342 m -27 X s 395 1386 m -55 X s 367 1430 m -27 X s 367 1474 m -27 X s 367 1518 m -27 X s 395 1562 m -55 X s 367 1606 m -27 X s 367 1650 m -27 X s 367 1693 m -27 X s 395 1737 m -55 X s 367 1781 m -27 X s
367 1825 m -27 X s 367 1869 m -27 X s 395 1913 m -55 X s 367 1957 m -27 X s 367 2001 m -27 X s 367 2045 m -27 X s 395 2089 m -55 X s
gsave 2268 2199 0 0 C 285 293 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 194 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (200) show NC gr
gsave 2268 2199 0 0 C 194 647 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (400) show NC gr
gsave 2268 2199 0 0 C 194 823 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (600) show NC gr
gsave 2268 2199 0 0 C 194 997 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (800) show NC gr
gsave 2268 2199 0 0 C 145 1174 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1000) show NC gr
gsave 2268 2199 0 0 C 145 1350 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1200) show NC gr
gsave 2268 2199 0 0 C 145 1527 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1400) show NC gr
gsave 2268 2199 0 0 C 145 1701 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1600) show NC gr
gsave 2268 2199 0 0 C 145 1877 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1800) show NC gr
gsave 2268 2199 0 0 C 145 2054 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr 3 lw 1 1 1 c black /w 24 def /w2 {w 2 div} def /w3 {w 3 div} def 858 330 864 330 869 330 874 330 879 330 884 330 889 330 895 330 900 330 905 330 910
330 915 330 920 330 926 330 931 330 936 330 941 330 946 330 951 330 957 330 962 330 967 330 972 330 977 330 982 330 988 330 993 330 998 330 1003 330 1008 330 1013 330 1019 330 1024 330 1029 330 1034 330 1039 330 1044 330 1050 330 1055 330 1060 330
1065 330 1070 330 1075 330 1081 330 1086 330 1091 330 1096 330 1101 330 1106 330 1112 330 50 { m26} R 1112 330 1117 330 1122 330 1127 330 1132 330 1137 330 1143 330 1148 330 1153 330 1158 330 1163 330 1168 330 1174 330 1179 330 1184 330 1189 330
1194 330 1199 330 1205 330 1210 330 1215 330 1220 330 1225 331 1230 331 1236 331 1241 331 1246 331 1251 331 1256 331 1261 331 1267 331 1272 331 1277 331 1282 331 1287 331 1292 331 1298 332 1303 332 1308 332 1313 333 1318 334 1323 335 1329 336 1334
338 1339 340 1344 343 1349 346 1354 349 1360 354 1365 360 50 { m26} R 1365 360 1370 366 1375 374 1380 383 1385 393 1391 405 1396 418 1401 433 1406 448 1411 464 1416 483 1422 501 1427 524 1432 545 1437 568 1442 591 1447 613 1453 635 1458 661 1463
685 1468 706 1473 728 1478 751 1484 771 1489 790 1494 810 1499 827 1504 844 1509 859 1515 874 1520 887 1525 900 1530 911 1535 922 1540 932 1546 943 1551 951 1556 960 1561 969 1566 977 1571 985 1577 991 1582 998 1587 1004 1592 1010 1597 1016 1602
1022 1608 1028 1613 1034 1618 1038 50 { m26} R 1618 1038 1623 1044 1628 1048 1633 1054 1639 1059 1644 1063 1649 1068 1654 1072 1659 1078 1664 1082 1670 1086 1675 1092 1680 1096 1685 1102 1690 1106 1695 1110 1701 1115 1706 1118 1711 1124 1716 1128
1721 1133 1726 1137 1732 1141 1737 1145 1742 1149 1747 1153 1752 1160 1757 1162 1763 1167 1768 1169 1773 1173 1778 1177 1783 1182 1788 1186 1794 1190 1799 1195 1804 1199 1809 1202 1814 1206 1819 1210 1825 1215 1830 1217 1835 1222 1840 1226 1845
1231 1850 1235 1856 1238 1861 1243 1866 1249 1871 1251 50 { m26} R 1871 1251 1876 1256 1881 1259 1887 1263 1892 1267 1897 1272 1902 1277 1907 1279 1912 1285 1918 1290 1923 1292 1928 1298 1933 1302 1938 1305 1943 1312 1949 1316 1954 1320 1959 1325
1964 1330 1969 1333 1974 1338 1980 1345 1985 1351 1990 1357 1995 1363 2000 1372 2005 1384 2011 1397 2016 1419 2021 1441 2026 1473 2031 1519 2036 1584 2042 1680 2047 1822 2052 2020 2057 2089 37 { m26} R 2150 2089 m26 9 lw 0.95 0.95 0.95 c black 782
330 m 434 X 16 1 d 48 X 16 1 d 16 1 d 16 4 d 16 7 d 17 12 d 16 21 d 16 32 d 16 45 d 16 58 d 16 68 d 16 73 d 16 74 d 16 68 d 16 58 d 16 47 d 16 37 d 16 28 d 16 22 d s 1569 987 m 16 18 d 17 16 d 16 14 d 16 15 d 16 14 d 16 13 d 16 14 d 16 14 d 16 14 d
16 14 d 16 14 d 16 14 d 16 13 d 16 14 d 16 14 d 16 14 d 17 14 d 16 14 d 16 13 d 16 14 d 16 14 d 16 14 d 16 14 d s[ 12 12] 0 sd 3 lw 1447 330 m 283 Y s[ ] 0 sd 1447 613 m20[ 12 12] 0 sd[ ] 0 sd 1 1 1 c black 864 330 889 330 900 330 905 330 910 330
915 330 920 330 926 330 931 330 936 330 941 330 946 330 951 330 957 330 962 330 967 330 972 331 977 331 982 331 988 331 993 331 998 332 1003 333 1008 333 1013 335 1019 336 1024 338 1029 340 1034 342 1039 345 1044 349 1050 353 1055 359 1060 366 1065
373 1070 382 1075 391 1081 402 1086 413 1091 428 1096 442 1101 456 1106 474 1112 493 1117 511 1122 532 1127 552 1132 571 1137 593 1143 614 50 { m27} R 1143 614 1148 634 1153 659 1158 677 1163 697 1168 717 1174 738 1179 757 1184 773 1189 788 1194
802 1199 820 1205 830 1210 842 1215 856 1220 870 1225 879 1230 888 1236 896 1241 904 1246 909 1251 918 1256 924 1261 930 1267 936 1272 942 1277 950 1282 955 1287 963 1292 968 1298 972 1303 974 1308 979 1313 985 1318 987 1323 991 1329 995 1334 1000
1339 1004 1344 1011 1349 1012 1354 1016 1360 1020 1365 1024 1370 1026 1375 1032 1380 1038 1385 1040 1391 1045 1396 1046 50 { m27} R 1396 1046 1401 1051 1406 1053 1411 1056 1416 1055 1422 1058 1427 1063 1432 1067 1437 1073 1442 1073 1447 1080 1453
1083 1458 1084 1463 1090 1468 1095 1473 1098 1478 1099 1484 1104 1489 1111 1494 1113 1499 1118 1504 1118 1509 1122 1515 1123 1520 1126 1525 1129 1530 1133 1535 1136 1540 1138 1546 1140 1551 1142 1556 1149 1561 1150 1566 1152 1571 1157 1577 1161
1582 1161 1587 1164 1592 1169 1597 1172 1602 1174 1608 1176 1613 1178 1618 1180 1623 1183 1628 1184 1633 1190 1639 1190 1644 1195 1649 1196 50 { m27} R 1649 1196 1654 1196 1659 1205 1664 1206 1670 1210 1675 1214 1680 1217 1685 1222 1690 1221 1695
1225 1701 1228 1706 1234 1711 1236 1716 1240 1721 1242 1726 1242 1732 1247 1737 1250 1742 1252 1747 1256 1752 1256 1757 1258 1763 1267 1768 1268 1773 1270 1778 1276 1783 1277 1788 1275 1794 1282 1799 1286 1804 1287 1809 1285 1814 1289 1819 1297
1825 1299 1830 1302 1835 1306 1840 1311 1845 1311 1850 1309 1856 1313 1861 1319 1866 1321 1871 1321 1876 1322 1881 1327 1887 1328 1892 1331 1897 1337 1902 1343 50 { m27} R 1902 1343 1907 1350 1912 1351 1918 1354 1923 1362 1928 1359 1933 1365 1938
1366 1943 1371 1949 1370 1954 1377 1959 1382 1964 1384 1969 1389 1974 1392 1980 1401 1985 1401 1990 1412 1995 1417 2000 1432 2005 1448 2011 1465 2016 1491 2021 1535 2026 1589 2031 1673 2036 1806 2042 2003 2047 2089 29 { m27} R 2150 2089 m27 9 lw
0.95 0.95 0.95 c black 348 330 m 601 X 16 1 d 15 X 16 1 d 16 3 d 16 5 d 16 10 d 15 16 d 16 24 d 16 35 d 16 46 d 16 57 d s 1123 528 m 16 64 d 15 67 d 16 66 d 16 59 d 16 51 d 16 40 d 15 32 d 16 24 d 16 18 d 16 14 d 16 12 d 15 11 d 16 10 d 16 10 d 16
10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d
16 10 d 16 10 d 15 10 d s 1897 1350 m 16 10 d s[ 12 12] 0 sd 3 lw 1140 330 m 284 Y s[ ] 0 sd 1140 614 m20[ 12 12] 0 sd[ ] 0 sd 1 1 1 c black 516 331 521 331 526 331 531 331 537 332 542 332 547 334 552 334 557 335 562 336 568 339 573 341 578 343
583 347 588 351 594 356 599 361 604 367 609 374 614 383 619 391 625 400 630 411 635 423 640 439 645 450 650 465 656 482 661 498 666 516 671 537 676 550 681 569 687 591 692 608 697 628 702 645 707 663 712 681 718 698 723 711 728 727 733 743 738 757
743 769 749 784 754 795 759 807 764 817 769 826 50 { m28} R 769 826 774 837 780 843 785 854 790 863 795 870 800 875 805 881 811 887 816 896 821 903 826 903 831 912 837 914 842 920 847 924 852 928 857 933 862 936 868 941 873 946 878 948 883 952 888
956 893 961 899 964 904 968 909 970 914 972 919 973 924 977 930 981 935 987 940 992 945 994 950 998 955 999 961 1002 966 1004 971 1009 976 1008 981 1009 986 1012 992 1016 997 1020 1002 1025 1007 1029 1012 1034 1017 1035 1023 1037 50 { m28} R 1023
1037 1028 1037 1033 1044 1038 1042 1043 1048 1048 1057 1054 1060 1059 1064 1064 1068 1069 1067 1074 1066 1080 1067 1085 1071 1090 1071 1095 1073 1100 1074 1105 1079 1111 1080 1116 1080 1121 1085 1126 1087 1131 1092 1136 1094 1142 1095 1147 1098
1152 1099 1157 1100 1162 1106 1167 1106 1173 1111 1178 1111 1183 1115 1188 1117 1193 1119 1198 1119 1204 1120 1209 1122 1214 1122 1219 1128 1224 1128 1229 1128 1235 1132 1240 1136 1245 1140 1250 1142 1255 1142 1260 1148 1266 1149 1271 1151 1276
1149 50 { m28} R 1276 1149 1281 1154 1286 1154 1292 1153 1297 1160 1302 1159 1307 1162 1312 1163 1317 1164 1323 1169 1328 1168 1333 1170 1338 1175 1343 1174 1348 1180 1354 1178 1359 1178 1364 1179 1369 1181 1374 1183 1379 1186 1385 1189 1390 1190
1395 1197 1400 1199 1405 1201 1410 1201 1416 1200 1421 1202 1426 1207 1431 1207 1436 1212 1441 1212 1447 1210 1452 1213 1457 1217 1462 1217 1467 1222 1472 1224 1478 1226 1483 1229 1488 1234 1493 1232 1498 1234 1503 1233 1509 1237 1514 1239 1519
1240 1524 1242 1529 1245 50 { m28} R 1529 1245 1535 1250 1540 1253 1545 1255 1550 1261 1555 1266 1560 1267 1566 1270 1571 1272 1576 1276 1581 1275 1586 1276 1591 1276 1597 1279 1602 1283 1607 1282 1612 1286 1617 1292 1622 1295 1628 1295 1633 1296
1638 1297 1643 1297 1648 1292 1653 1297 1659 1296 1664 1303 1669 1304 1674 1303 1679 1304 1684 1302 1690 1308 1695 1307 1700 1313 1705 1320 1710 1320 1715 1314 1721 1313 1726 1322 1731 1328 1736 1329 1741 1338 1747 1338 1752 1340 1757 1341 1762
1341 1767 1343 1772 1343 1778 1343 1783 1347 50 { m28} R 1783 1347 1788 1355 1793 1354 1798 1365 1803 1362 1809 1370 1814 1372 1819 1367 1824 1376 1829 1377 1834 1382 1840 1379 1845 1384 1850 1386 1855 1386 1860 1392 1865 1399 1871 1399 1876 1400
1881 1403 1886 1407 1891 1411 1896 1416 1902 1416 1907 1419 1912 1425 1917 1429 1922 1431 1927 1437 1933 1440 1938 1442 1943 1441 1948 1446 1953 1447 1958 1448 1964 1457 1969 1464 1974 1470 1979 1483 1984 1493 1990 1507 1995 1520 2000 1537 2005
1565 2010 1602 2015 1665 2021 1761 2026 1901 2031 2089 49 { m28} R 2150 2089 m28 9 lw 0.95 0.95 0.95 c black 348 330 m 155 X 16 1 d 16 1 d 15 3 d 16 5 d 15 8 d 16 12 d 15 19 d 16 26 d 15 35 d 16 44 d 15 51 d 16 56 d 16 59 d 15 57 d 16 53 d 15 46 d
16 39 d 15 31 d 16 24 d 15 18 d 16 14 d 16 11 d 15 9 d 16 8 d 15 7 d 16 8 d 15 7 d 16 7 d 15 6 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 15 6 d 16 7 d s 1110 1064 m 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 6 d 15 7
d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 6 d 15 7 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 6 d 15 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 6 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d
15 6 d 16 7 d 15 7 d 16 7 d s 1872 1402 m 15 7 d s[ 12 12] 0 sd 3 lw 693 330 m 278 Y s[ ] 0 sd 693 608 m20[ 12 12] 0 sd[ ] 0 sd 6 lw 1 1 1 c 1088 725 386 1320 bf black 3 lw 1 1 1 c 947 631 516 1407 bf black 947 631 516 1407 bl 1 1 1 c 947 631 516
1407 bf black 947 631 516 1407 bl 6 lw 516 1407 m 947 X s
gsave 1088 725 386 1320 C 1131 1336 t 0 r /Helvetica-Bold findfont 54.2909 sf 0 0 m (Energy \(keV\)) show NC gr 525 1426 m -19 Y s 553 1416 m -9 Y s 581 1416 m -9 Y s 609 1416 m -9 Y s 638 1426 m -19 Y s 666 1416 m -9 Y s 694 1416 m -9 Y s 722
1416 m -9 Y s 750 1426 m -19 Y s 779 1416 m -9 Y s 807 1416 m -9 Y s 835 1416 m -9 Y s 863 1426 m -19 Y s 891 1416 m -9 Y s 920 1416 m -9 Y s 948 1416 m -9 Y s 976 1426 m -19 Y s 1004 1416 m -9 Y s 1032 1416 m -9 Y s 1061 1416 m -9 Y s 1089 1426 m
-19 Y s 1117 1416 m -9 Y s 1145 1416 m -9 Y s 1173 1416 m -9 Y s 1202 1426 m -19 Y s 1230 1416 m -9 Y s 1258 1416 m -9 Y s 1286 1416 m -9 Y s 1314 1426 m -19 Y s 1343 1416 m -9 Y s 1371 1416 m -9 Y s 1399 1416 m -9 Y s 1427 1426 m -19 Y s 525 1426
m -19 Y s 1427 1426 m -19 Y s 1455 1416 m -9 Y s
gsave 1088 725 386 1320 C 510 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (10) show NC gr
gsave 1088 725 386 1320 C 621 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (12) show NC gr
gsave 1088 725 386 1320 C 735 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (14) show NC gr
gsave 1088 725 386 1320 C 846 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (16) show NC gr
gsave 1088 725 386 1320 C 960 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (18) show NC gr
gsave 1088 725 386 1320 C 1074 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (20) show NC gr
gsave 1088 725 386 1320 C 1185 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (22) show NC gr
gsave 1088 725 386 1320 C 1299 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (24) show NC gr
gsave 1088 725 386 1320 C 1410 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (26) show NC gr 516 1407 m 631 Y s
gsave 1088 725 386 1320 C 447 1578 t 90 r /Helvetica-Bold findfont 54.2909 sf 0 0 m (Threshold \(DACu\)) show NC gr 545 1411 m -29 X s 530 1438 m -14 X s 530 1465 m -14 X s 530 1493 m -14 X s 530 1520 m -14 X s 545 1548 m -29 X s 530 1575 m -14 X
s 530 1602 m -14 X s 530 1630 m -14 X s 530 1657 m -14 X s 545 1685 m -29 X s 530 1712 m -14 X s 530 1740 m -14 X s 530 1767 m -14 X s 530 1794 m -14 X s 545 1822 m -29 X s 530 1849 m -14 X s 530 1877 m -14 X s 530 1904 m -14 X s 530 1931 m -14 X s
545 1959 m -29 X s 545 1411 m -29 X s 545 1959 m -29 X s 530 1986 m -14 X s 530 2014 m -14 X s
gsave 1088 725 386 1320 C 467 1402 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (450) show NC gr
gsave 1088 725 386 1320 C 467 1538 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (500) show NC gr
gsave 1088 725 386 1320 C 467 1675 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (550) show NC gr
gsave 1088 725 386 1320 C 467 1812 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (600) show NC gr
gsave 1088 725 386 1320 C 467 1949 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (650) show NC gr 3 lw 666 1859 948 1697 1371 1460 3 { m20} R 6 lw 9 lw 0.95 0.95 0.95 c black 668 1856 m 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7
-4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4
d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d s 1015 1660 m 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7
-4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d s 1361 1464 m 7 -4 d s 6 lw 1 1 1 c 454 440 1587 440 bf black
gsave 2268 2199 0 0 C 1598 803 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (Energy) show NC gr
gsave 2268 2199 0 0 C 1701 687 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (12.50 keV) show NC gr 3 lw 1644 715 m26 6 lw
gsave 2268 2199 0 0 C 1701 578 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (17.50 keV) show NC gr 3 lw 1644 605 m27 6 lw
gsave 2268 2199 0 0 C 1701 467 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (25.00 keV) show NC gr 3 lw 1644 495 m28 6 lw
gr gr
showpage
end
%%EOF

View File

@ -1,18 +0,0 @@
The calibration wizards are based on the \textit{Root} software developed at CERN.\\
To install it, simply download it from the url \textit{http://root.cern.ch}.\\
You can either download the binaries for your system or install from source (which is time consuming, but possibly more stable).\\
The development and debugging of the wizards have been done using the root version 5.20, but it should be working also with newer versions.
After installing the root software, edit your .bashrc file to define the ROOTSYS enviroment variable, and add the binaries and libraries to your path, e.g.:
\begin{verbatim}
export ROOTSYS=/usr/local/root_sl5_32bit
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
export PATH=$ROOTSYS/bin:$PATH
\end{verbatim}
Then enter the calibrationWizards directory and compile:
\begin{verbatim}
make clean && make
\end{verbatim}
The two executables \textit{energyCalibrationWizard} and \textit{angularCalibrationWizard} should be generated, together with some documentation in pdf format inside the \textit{manual} directory.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

View File

@ -1,135 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 550
%%Title: /import/exchange/home/msdetect/Projects/detcalMCS/article/spectrum_expl.eps: c1_n2
%%Creator: ROOT Version 5.13/02
%%CreationDate: Thu Apr 26 09:47:57 2007
%%EndComments
%%BeginProlog
80 dict begin
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
/mp {newpath /y exch def /x exch def} def
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
0 w3 neg d w3 neg 0 d cl s } def
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl fill gr} def
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl s gr} def
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
sub m w w d s} def
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
228 /Ocircumflex 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
237 /udieresis 238 /Udieresis 239 /aring 240 /odieresis 242 /Aring 243 /ydieresis
244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave
127 /atilde 128 /Atilde 129 /oacute 130 /Oacute 131 /iacute
132 /Iacute 133 /igrave 134 /Igrave 135 /otilde 136 /Otilde
137 /uacute 138 /Uacute] def
/Times-Roman /Times-Roman accvec ReEncode
/Times-Italic /Times-Italic accvec ReEncode
/Times-Bold /Times-Bold accvec ReEncode
/Times-BoldItalic /Times-BoldItalic accvec ReEncode
/Helvetica /Helvetica accvec ReEncode
/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
/Helvetica-Bold /Helvetica-Bold accvec ReEncode
/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
/Courier /Courier accvec ReEncode
/Courier-Oblique /Courier-Oblique accvec ReEncode
/Courier-Bold /Courier-Bold accvec ReEncode
/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
/oshow {gsave [] 0 sd true charpath stroke gr} def
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
text sw pop xs add /xs exch def} def
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
pop neg xs add /xs exch def} def
/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin 102 /intersection
103 /union 104 /propersuperset 105 /reflexsuperset 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright
118 /arrowdbldown 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
/Symbol /Special accspe ReEncode
%%EndProlog
%%BeginSetup
%%EndSetup
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2199 0 0 bf black 3 lw 1 1 1 c 1588 1539 340 330 bf black 1588 1539 340 330 bl 1 1 1 c 1588 1539 340 330 bf black 1588 1539 340 330 bl 9 lw 1 1 1 c black 348 469 m 619 X 16
1 d 48 X 8 1 d 15 X 4 1 d 4 X 6 1 d 3 X 4 1 d 3 X 4 1 d 4 1 d 3 1 d 3 X 2 1 d 3 1 d 3 1 d 3 1 d 3 1 d 2 1 d 2 1 d 3 1 d 2 1 d 2 1 d 3 2 d 2 1 d 2 1 d 2 1 d s 1126 492 m 13 11 d 3 3 d 12 15 d 4 5 d 11 18 d 5 10 d 9 22 d 6 17 d 9 27 d 7 25 d 8 32 d 8
35 d 8 40 d 8 43 d 8 49 d 8 51 d 9 62 d 7 53 d 11 85 d 5 42 d 16 134 d 15 134 d 12 92 d 4 35 d 10 68 d 6 42 d 7 42 d 6 30 d 3 13 d 6 23 d 5 17 d 5 13 d 5 10 d 6 5 d 5 1 d 5 -3 d 6 -8 d 5 -11 d 5 -17 d 6 -22 d 5 -20 d 6 -32 d 6 -40 d 3 -20 d 7 -50 d
9 -69 d 7 -55 d 9 -81 d 16 -145 d 16 -146 d 11 -100 d 5 -39 d 9 -71 d 7 -55 d 8 -57 d 8 -54 d 7 -47 d 8 -46 d 8 -39 d 8 -36 d 8 -32 d 8 -27 d 9 -27 d 7 -18 d 10 -22 d 6 -10 d 11 -18 d 5 -6 d 13 -13 d 3 -2 d 16 -11 d 15 -7 d 16 -4 d 16 -3 d 16 -1 d
16 -1 d 16 -1 d 127 X s 1904 330 m 16 X s 6 lw 340 330 m 1588 X s
gsave 1285 123
t 0 r 0 0 m /Helvetica-Bold findfont 102.56 sf 0 0 m (Energy \(KeV\)) show gr 340 376 m -46 Y s 393 353 m -23 Y s 446 353 m -23 Y s 499 353 m -23 Y s 552 376 m -46 Y s 605 353 m -23 Y s 658 353 m -23 Y s 711 353 m -23 Y s 763 376 m -46 Y s 816
353 m -23 Y s 869 353 m -23 Y s 922 353 m -23 Y s 975 376 m -46 Y s 1028 353 m -23 Y s 1081 353 m -23 Y s 1134 353 m -23 Y s 1187 376 m -46 Y s 1240 353 m -23 Y s 1293 353 m -23 Y s 1346 353 m -23 Y s 1398 376 m -46 Y s 1451 353 m -23 Y s 1504 353
m -23 Y s 1557 353 m -23 Y s 1610 376 m -46 Y s 1663 353 m -23 Y s 1716 353 m -23 Y s 1769 353 m -23 Y s 1822 376 m -46 Y s 1822 376 m -46 Y s 1875 353 m -23 Y s 1928 353 m -23 Y s
gsave 316 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show gr
gsave 527 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show gr
gsave 738 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show gr
gsave 952 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show gr
gsave 1162 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show gr
gsave 1350 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show gr
gsave 1564 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show gr
gsave 1775 251
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show gr 340 330 m 1539 Y s
gsave 97 1450
t 90 r 0 0 m /Helvetica-Bold findfont 102.56 sf 0 0 m (Intensity) show gr 388 330 m -48 X s 364 400 m -24 X s 364 469 m -24 X s 364 539 m -24 X s 388 609 m -48 X s 364 679 m -24 X s 364 749 m -24 X s 364 818 m -24 X s 388 888 m -48 X s 364 958 m
-24 X s 364 1028 m -24 X s 364 1097 m -24 X s 388 1167 m -48 X s 364 1237 m -24 X s 364 1307 m -24 X s 364 1376 m -24 X s 388 1446 m -48 X s 364 1516 m -24 X s 364 1586 m -24 X s 364 1656 m -24 X s 388 1725 m -48 X s 388 1725 m -48 X s 364 1795 m
-24 X s 364 1865 m -24 X s
gsave 285 293
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show gr
gsave 194 573
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (200) show gr
gsave 194 852
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (400) show gr
gsave 194 1131
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (600) show gr
gsave 194 1410
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (800) show gr
gsave 145 1689
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (1000) show gr 3 lw 875 469 m 285 X 11 -1 d 10 X 11 -1 d 11 X 10 -1 d 11 -1 d 10 -1 d 9 -2 d 2 X 8 -1 d 3 -1 d 8 -2 d 2 X 8 -2 d 3 -1 d 7 -2 d 3 -1 d 8 -2 d 3 -1 d 7 -2 d 3 -2 d 8 -3 d 3 -1 d
8 -3 d 3 -1 d 8 -4 d 2 -1 d 9 -5 d 2 -1 d 9 -4 d 1 -1 d 11 -6 d 11 -6 d 10 -6 d -73 Y -518 X f 875 469 m 285 X 11 -1 d 10 X 11 -1 d 11 X 10 -1 d 11 -1 d 10 -1 d 9 -2 d 2 X 8 -1 d 3 -1 d 8 -2 d 2 X 8 -2 d 3 -1 d 7 -2 d 3 -1 d 8 -2 d 3 -1 d 7 -2 d 3
-2 d 8 -3 d 3 -1 d 8 -3 d 3 -1 d 8 -4 d 2 -1 d 9 -5 d 2 -1 d 9 -4 d 1 -1 d 11 -6 d 11 -6 d 10 -6 d s 1393 403 m 11 -6 d 10 -7 d 11 -6 d 10 -5 d 11 -6 d 9 -4 d 2 -1 d 8 -4 d 2 -1 d 8 -4 d 3 -1 d 8 -3 d 2 -1 d 8 -3 d 3 -1 d 8 -2 d 3 -1 d 7 -2 d 3 -1
d 8 -2 d 3 -1 d 8 -1 d 2 -1 d 9 -1 d 2 -1 d 10 -1 d 11 -1 d 11 -1 d 10 -1 d 11 -1 d 10 -1 d 32 X 11 -1 d 254 X -519 X f 1393 403 m 11 -6 d 10 -7 d 11 -6 d 10 -5 d 11 -6 d 9 -4 d 2 -1 d 8 -4 d 2 -1 d 8 -4 d 3 -1 d 8 -3 d 2 -1 d 8 -3 d 3 -1 d 8 -2 d
3 -1 d 7 -2 d 3 -1 d 8 -2 d 3 -1 d 8 -1 d 2 -1 d 9 -1 d 2 -1 d 10 -1 d 11 -1 d 11 -1 d 10 -1 d 11 -1 d 10 -1 d 32 X 11 -1 d 254 X s 1912 330 m 10 X -10 X f 1912 330 m 10 X s 6 lw 1335 1294 m 116 1 d s 3 lw 1451 1306 m 32 -11 d -31 -12 d f 6 lw 1451
1306 m 32 -11 d -31 -12 d -1 23 d cl s 3 lw 1335 1282 m -32 12 d 32 11 d f 6 lw 1335 1282 m -32 12 d 32 11 d -23 Y cl s
/xs 0 def (ENC) /Helvetica-Bold 82.6178 stwn gsave 1398 1139
t 0 r xs 2 div neg 0 t 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (ENC) show gr
gr gr
showpage
end
%%EOF

View File

@ -1,125 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 550
%%Title: /afs/psi.ch/project/mythen/mythen_datasheet/article/thr_scan_expl.eps: c1
%%Creator: ROOT Version 5.17/02
%%CreationDate: Mon Oct 27 10:29:18 2008
%%EndComments
%%BeginProlog
80 dict begin
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
/mp {newpath /y exch def /x exch def} def
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
0 w3 neg d w3 neg 0 d cl s } def
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl fill gr} def
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl s gr} def
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
sub m w w d s} def
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
228 /Ocircumflex 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
237 /udieresis 238 /Udieresis 239 /aring 240 /odieresis 242 /Aring 243 /ydieresis
244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave
127 /atilde 128 /Atilde 129 /oacute 130 /Oacute 131 /iacute
132 /Iacute 133 /igrave 134 /Igrave 135 /otilde 136 /Otilde
137 /uacute 138 /Uacute] def
/Times-Roman /Times-Roman accvec ReEncode
/Times-Italic /Times-Italic accvec ReEncode
/Times-Bold /Times-Bold accvec ReEncode
/Times-BoldItalic /Times-BoldItalic accvec ReEncode
/Helvetica /Helvetica accvec ReEncode
/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
/Helvetica-Bold /Helvetica-Bold accvec ReEncode
/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
/Courier /Courier accvec ReEncode
/Courier-Oblique /Courier-Oblique accvec ReEncode
/Courier-Bold /Courier-Bold accvec ReEncode
/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
/oshow {gsave [] 0 sd true charpath stroke gr} def
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
text sw pop xs add /xs exch def} def
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
pop neg xs add /xs exch def} def
/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin 102 /intersection
103 /union 104 /propersuperset 105 /reflexsuperset 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright
118 /arrowdbldown 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
/Symbol /Special accspe ReEncode
%%EndProlog
%%BeginSetup
%%EndSetup
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 3 lw 1 1 1 c 2268 2199 0 0 bf black 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 9 lw 0.95 0.95 0.95 c black 348 1996 m 18
-9 d 18 -9 d 19 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -8 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -8 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18
-9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18 -8 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d s 1237 1558 m 18 -9 d 19 -9 d 18 -10 d 18 -10 d 18 -10 d 18 -12 d 18 -12 d 18 -15 d 19 -17 d 18 -20 d 18
-24 d 18 -29 d 18 -35 d 18 -41 d 19 -48 d 18 -55 d 18 -61 d 18 -67 d 18 -72 d 18 -75 d 18 -76 d 19 -74 d 18 -72 d 18 -67 d 18 -61 d 18 -54 d 18 -46 d 18 -38 d 19 -32 d 18 -24 d 18 -19 d 18 -14 d 18 -10 d 18 -7 d 18 -5 d 19 -4 d 18 -2 d 18 -1 d 18
-1 d 18 X 18 -1 d 146 X s 2127 319 m 18 X s 3 lw 339 319 m 1815 X s 339 372 m -53 Y s 392 345 m -26 Y s 446 345 m -26 Y s 499 345 m -26 Y s 553 372 m -53 Y s 606 345 m -26 Y s 659 345 m -26 Y s 713 345 m -26 Y s 766 372 m -53 Y s 819 345 m -26 Y s
873 345 m -26 Y s 926 345 m -26 Y s 980 372 m -53 Y s 1033 345 m -26 Y s 1086 345 m -26 Y s 1140 345 m -26 Y s 1193 372 m -53 Y s 1246 345 m -26 Y s 1300 345 m -26 Y s 1353 345 m -26 Y s 1407 372 m -53 Y s 1460 345 m -26 Y s 1513 345 m -26 Y s 1567
345 m -26 Y s 1620 372 m -53 Y s 1673 345 m -26 Y s 1727 345 m -26 Y s 1780 345 m -26 Y s 1834 372 m -53 Y s 1887 345 m -26 Y s 1940 345 m -26 Y s 1994 345 m -26 Y s 2047 372 m -53 Y s 2047 372 m -53 Y s 2100 345 m -26 Y s 2154 345 m -26 Y s
gsave 2268 2199 0 0 C 316 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 527 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
gsave 2268 2199 0 0 C 741 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
gsave 2268 2199 0 0 C 954 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
gsave 2268 2199 0 0 C 1168 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr
gsave 2268 2199 0 0 C 1359 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
gsave 2268 2199 0 0 C 1573 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show NC gr
gsave 2268 2199 0 0 C 1786 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show NC gr
gsave 2268 2199 0 0 C 2000 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16) show NC gr 339 319 m 1761 Y s 393 319 m -54 X s 366 387 m -27 X s 366 456 m -27 X s 366 524 m -27 X s 393 592 m -54 X s 366 661 m -27 X s 366 729 m -27 X s 366
797 m -27 X s 393 865 m -54 X s 366 934 m -27 X s 366 1002 m -27 X s 366 1070 m -27 X s 393 1139 m -54 X s 366 1207 m -27 X s 366 1275 m -27 X s 366 1344 m -27 X s 393 1412 m -54 X s 366 1480 m -27 X s 366 1548 m -27 X s 366 1617 m -27 X s 393 1685
m -54 X s 366 1753 m -27 X s 366 1822 m -27 X s 366 1890 m -27 X s 393 1958 m -54 X s 393 1958 m -54 X s 366 2027 m -27 X s
gsave 2268 2199 0 0 C 285 282 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 145 556 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr
gsave 2268 2199 0 0 C 145 829 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4000) show NC gr
gsave 2268 2199 0 0 C 145 1103 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6000) show NC gr
gsave 2268 2199 0 0 C 145 1376 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8000) show NC gr
gsave 2268 2199 0 0 C 100 1650 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10000) show NC gr
gsave 2268 2199 0 0 C 100 1923 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12000) show NC gr [ 4 8] 0 sd 6 lw 339 1370 m 1121 X s[ ] 0 sd 3 lw 0.95 0.95 0.95 c black 348 1685 m 889 X s 1237 1685 m 18 X 19 -1 d 18 X 18 -2 d 18 -1 d 18 -3 d 18
-5 d 18 -6 d 19 -10 d 18 -13 d 18 -19 d 18 -24 d 18 -32 d 18 -41 d 19 -49 d 18 -59 d 18 -69 d 18 -76 d 18 -84 d 18 -89 d 18 -92 d 19 -92 d 18 -89 d 18 -85 d 18 -78 d 18 -70 d 18 -61 d 18 -51 d 19 -42 d 18 -33 d 18 -26 d 18 -20 d 18 -14 d 18 -10 d
18 -7 d 19 -5 d 18 -3 d 18 -2 d 18 -1 d 18 -1 d 18 X 19 -1 d 127 X s 2127 319 m 18 X s[ 12 12] 0 sd 6 lw 339 1685 m 1281 X s 1620 1685 m -1366 Y s 1620 319 m 534 X s[ 4 8] 0 sd 977 319 m 1368 Y s
gsave 2268 2199 0 0 C 1695 333 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 1630 362 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
gsave 2268 2199 0 0 C 1054 333 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (t) show NC gr
gsave 2268 2199 0 0 C 989 362 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
gsave 2268 2199 0 0 C 439 1698 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 370 1726 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr [ ] 0 sd 1545 1480 m 43 X s 3 lw 1588 1499 m 32 -19 d -32 -18 d f 6 lw 1588 1499 m 32 -19 d -32 -18 d 37 Y cl s 3 lw 1545 1462 m -32 18 d 32 19 d f 6 lw
1545 1462 m -32 18 d 32 19 d -37 Y cl s
gsave 2268 2199 0 0 C 1501 1521 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (ENC) show NC gr 926 1403 m 250 Y s 3 lw 908 1653 m 18 32 d 18 -32 d f 6 lw 908 1653 m 18 32 d 18 -32 d -36 X cl s 3 lw 944 1403 m -18 -32 d -18 32 d f 6 lw 944 1403 m
-18 -32 d -18 32 d 36 X cl s
gsave 2268 2199 0 0 C 855 1467 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (S) show NC gr
gsave 2268 2199 0 0 C 786 1496 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr
gr gr
showpage
end
%%EOF

View File

@ -1,88 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 550
%%Title: /afs/psi.ch/project/mythen/mythen_datasheet/article/thr_scan_fluo.eps: c1
%%Creator: ROOT Version 5.20/00
%%CreationDate: Wed Dec 10 17:16:38 2008
%%EndComments
%%BeginProlog
80 dict begin
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
/mp {newpath /y exch def /x exch def} def
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
0 w3 neg d w3 neg 0 d cl s } def
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl fill gr} def
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
4 {side} repeat cl s gr} def
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
sub m w w d s} def
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
/oshow {gsave [] 0 sd true charpath stroke gr} def
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
text sw pop xs add /xs exch def} def
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
pop neg xs add /xs exch def} def
%%EndProlog
%%BeginSetup
%%EndSetup
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 3 lw 1 1 1 c 2268 2199 0 0 bf black 1 1 1 c 1814 1761 345 330 bf black 1814 1761 345 330 bl 1 1 1 c 1814 1761 345 330 bf black 1814 1761 345 330 bl 9 lw 0.95 0.95 0.95 c black 354 1681 m 18
-4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -4 d 18 -4 d 19
-5 d 18 -8 d 18 -10 d 18 -14 d 18 -19 d 18 -24 d 18 -30 d 19 -33 d 18 -34 d 18 -32 d 18 -29 d 18 -24 d 18 -18 d 18 -13 d 19 -9 d 18 -6 d 18 -5 d 18 -3 d s 1243 1257 m 18 -3 d 18 -3 d 18 -3 d 19 -2 d 18 -3 d 18 -3 d 18 -4 d 18 -4 d 18 -7 d 18 -10 d
19 -18 d 18 -29 d 18 -43 d 18 -60 d 18 -79 d 18 -94 d 19 -104 d 18 -104 d 18 -97 d 18 -82 d 18 -63 d 18 -46 d 18 -29 d 19 -18 d 18 -10 d 18 -5 d 18 -2 d 18 -1 d 18 X 18 -1 d 345 X s 2132 330 m 18 X s 3 lw 345 330 m 1814 X s
gsave 2268 2199 0 0 C 1658 162 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Energy \(keV\)) show NC gr 345 383 m -53 Y s 405 357 m -27 Y s 466 357 m -27 Y s 526 357 m -27 Y s 587 357 m -27 Y s 647 383 m -53 Y s 708 357 m -27 Y s 768 357 m -27
Y s 829 357 m -27 Y s 889 357 m -27 Y s 950 383 m -53 Y s 1010 357 m -27 Y s 1071 357 m -27 Y s 1131 357 m -27 Y s 1192 357 m -27 Y s 1252 383 m -53 Y s 1313 357 m -27 Y s 1373 357 m -27 Y s 1434 357 m -27 Y s 1494 357 m -27 Y s 1555 383 m -53 Y s
1615 357 m -27 Y s 1676 357 m -27 Y s 1736 357 m -27 Y s 1797 357 m -27 Y s 1857 383 m -53 Y s 1917 357 m -27 Y s 1978 357 m -27 Y s 2038 357 m -27 Y s 2099 357 m -27 Y s 2159 383 m -53 Y s
gsave 2268 2199 0 0 C 322 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 624 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (5) show NC gr
gsave 2268 2199 0 0 C 903 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
gsave 2268 2199 0 0 C 1205 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (15) show NC gr
gsave 2268 2199 0 0 C 1507 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20) show NC gr
gsave 2268 2199 0 0 C 1809 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (25) show NC gr
gsave 2268 2199 0 0 C 2114 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (30) show NC gr 345 330 m 1761 Y s
gsave 2268 2199 0 0 C 105 1809 t 90 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Counts) show NC gr 399 330 m -54 X s 372 374 m -27 X s 372 419 m -27 X s 372 463 m -27 X s 399 507 m -54 X s 372 551 m -27 X s 372 595 m -27 X s 372 639 m -27 X s
399 683 m -54 X s 372 727 m -27 X s 372 771 m -27 X s 372 815 m -27 X s 399 859 m -54 X s 372 903 m -27 X s 372 947 m -27 X s 372 991 m -27 X s 399 1035 m -54 X s 372 1079 m -27 X s 372 1123 m -27 X s 372 1167 m -27 X s 399 1211 m -54 X s 372 1255
m -27 X s 372 1299 m -27 X s 372 1343 m -27 X s 399 1387 m -54 X s 372 1431 m -27 X s 372 1475 m -27 X s 372 1519 m -27 X s 399 1563 m -54 X s 372 1607 m -27 X s 372 1651 m -27 X s 372 1695 m -27 X s 399 1739 m -54 X s 372 1783 m -27 X s 372 1827 m
-27 X s 372 1871 m -27 X s 399 1915 m -54 X s 372 1959 m -27 X s 372 2003 m -27 X s 372 2047 m -27 X s 399 2091 m -54 X s
gsave 2268 2199 0 0 C 291 293 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 151 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr
gsave 2268 2199 0 0 C 151 647 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4000) show NC gr
gsave 2268 2199 0 0 C 151 823 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6000) show NC gr
gsave 2268 2199 0 0 C 151 1000 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8000) show NC gr
gsave 2268 2199 0 0 C 105 1174 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10000) show NC gr
gsave 2268 2199 0 0 C 105 1350 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12000) show NC gr
gsave 2268 2199 0 0 C 105 1527 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14000) show NC gr
gsave 2268 2199 0 0 C 105 1704 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16000) show NC gr
gsave 2268 2199 0 0 C 105 1880 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (18000) show NC gr
gsave 2268 2199 0 0 C 105 2054 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20000) show NC gr [ 12 12] 0 sd 6 lw 1555 330 m 441 Y s 1071 330 m 1083 Y s[ 4 8] 0 sd 1313 330 m 916 Y s
gsave 2268 2199 0 0 C 1624 752 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
gsave 2268 2199 0 0 C 1558 781 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
gsave 2268 2199 0 0 C 1140 1396 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (f) show NC gr
gsave 2268 2199 0 0 C 1074 1424 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
gsave 2268 2199 0 0 C 1336 1262 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (t) show NC gr
gsave 2268 2199 0 0 C 1271 1291 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr [ ] 0 sd 1071 595 m 242 X s 1281 613 m 32 -18 d -32 -19 d s 1102 576 m -31 19 d 31 18 d s 1313 595 m 242 X s 1523 613 m 32 -18 d -32 -19 d s 1344 576 m
-31 19 d 31 18 d s
gsave 2268 2199 0 0 C 1159 613 t 0 r /Symbol findfont 102.56 sf 0 0 m (S) show NC gr
gsave 2268 2199 0 0 C 1402 613 t 0 r /Symbol findfont 102.56 sf 0 0 m (S) show NC gr
gr gr
showpage
end
%%EOF

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 KiB

View File

@ -1,452 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
%%Title: Client2.eps
%%CreationDate: Fri Aug 5 09:34:34 2016
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
%%BoundingBox: 14 14 460 303
%%EndComments
%%BeginProlog
% Use own dictionary to avoid conflicts
10 dict begin
%%EndProlog
%%Page: 1 1
% Translate for offset
14.173228346456694 14.173228346456694 translate
% Translate to begin of first scanline
0 287.95876879026486 translate
445.43622047244094 -287.95876879026486 scale
% Image geometry
594 384 8
% Transformation matrix
[ 594 0 0 384 0 0 ]
currentfile /ASCII85Decode filter /RunLengthDecode filter
%%BeginData: 31939 ASCII Bytes
image
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcFg2"oFoZ
'H[e`!!&qHrrg8^"TZ_ss+p]+s+143rsIU:$Bk#\r3@:BT'?7Um#161!^$J+JcCQ+JcC<$k5PPL
*s9=VrrV*lQ0SANrCq4srrPOfbCT\Ls+13$s5s=_A,p6<rrJ.=li.(cD?+VArrPOfbCT\Ls+13$
s6'Can-/m4qYpT\OT,8.dog*Q17\@DlC:5@\L@YYo`+r^/c["e?Mh?@IE<cFaoBgm@8&GHrr2p)
6NG=0s7']HGSir%s,d83s+145rr]\0"8VZj&]P=#s8T"tD#_a\!).7:=TF'QrtM(*Du]j75QF_c
=obPA%`\PKVuUZ5rsD*nbQ%TLFoVKm7"PB"s+13$s6'C`Q2hTlrrW-I:]:;$9E;p/U]>cAs7-1T
rr3%l!,ql:#c[k[qu>gV-r9gA$VUQ:s8PFdbQ%S_BE%o2N.M"js+13$s6'C`OoQ'errU=CJ,TBO
U]>$,VZ<(_rrEQ^rr3%l!,ql:!j;TErr3&B!.XtI%AWu9s8PFdbQ%T1!,q@Xs,R,1s+145rr]A'
!;-$c!hfUGrVm)L!'pR^!13]b!=pj_rrSemDuTb<Y5iYCrrSkoK)P][d/ZH3s$He0s8Ual!#D4+
JcCi3JcC<$kPkYH!!'\+rrSnpBDqi7huH:IVZ<(_rrEW`rr3%l!,ql:!j;TFrr3%o!,)91#N,SP
s8PFdbPqMFls]tq;>YqEOoL"4UAkDr^0XF/rlb<C8H;rgrrUFF0`D"UciAFmVZ<(_rrEW`rr3%l
!,ql:!j;TFrr3&E!&4BO&C:E(s8PFdbQ%Ups8U@s!2G,FOoL"4V#L_iO\Ul&qjL6nbl7dr$NRI/
rs$`1s8FVNfDbdSRKVFGVZ<(_rrET_rr3%o!+l00!j;TFrr3*"/caN&rsG1th#ICA!6bEBC&\,6
i;e[bs,m>4s/,f!c"C:lrr)j!on6Dnc2Sj&(Bep8rr(>d>4hjpbm[5@s6qD"s8S\kQ2gm]"Y0NO
#fludcCrI\!,DK4#L*ZLqZ$%4PQ(Ri3<7)!s!#Yds5+"2JcCl4JcD_L"SSH`IH1,&#jZJ@i5/As
[eS>O#k*O+$4%\O\c2R-*nF1I@TBc7s2-\o0sg+[!!7uOs8HO4*hT#T!"t@Grr3\`;)_raZiC'P
Gldt9T`6)BBmimiJcCi3JcDeN"PRrrWquDg$MT,nHf<nO=(&B4JcF7"$2rQ$d,!O:mdBXss4I@&
s/uA)r2s%<f(8nDWD9f!r;QogQqiS2JcFI(/)R@L='0j+Lk0boE+W]h<EWX.=^G*2?<(08<E`^/
>%VA^GB\FjL2^q,kCN[,s+13SrrhJ99q1eHrr_=tJH#<C"2.Zgon!/%rs.YiHrjBpXl8@@$MWuV
k*/(B(IgjkJcGECJcE(V"TH,AA]aNC"5[a$f(8nD^.P.!JcFs6#jf'R>#oX>gA^%1$,Bjl)aBJT
s64HQs7H>Bs3L]Qn__X,]=Z,-eD9EboD\s_O\Ul&o)AgUBP6/jrr`4h;VH^%mf*R`^l)K"BqEcN
hu=/3BI=]VKB`F9l`"AWKn99rs+14$s!-p5Jn%nc=D2u<RAQ[>Lkp:o@9Qi9>$,O'Z,thbp<I;U
\c27$"ms!]<G'eJrr_IiOoBq3p&><la-0q5A!Y:5hZ"2AFY+OcGM`B"pUkZ:2E=ibG_,nes+14'
rs%eO<F_uXp$Mc!lbfQZH#[.B9j(Y3>?,!0>?+[(?r^3.=(muEqrn%]V,cfkrrV3]N5kl'qp1aE
<aUm)o\KN^k^kW1-u761s8C6#9K+k%M9Z#!dWg?Co`'LBg]%E8C,UkFZMt!\9ZcAq$ZZ4I%2&^B%
M8gD$iU)/qk$4i*tA2L$`F$-6N@**-PJ%NhYdBdMZKVs&HDf0LTWuE!#m:!/90P$rs8STU2F"9L
:cp0rs&"S4WG\R_>aH?iLEt02aMStp\b$ldWg?Co`'LBh#@SN<SI8-=Oj_W!qfoujo5^&8a-3S-
NM'aqkF>ortaHF$Bk#\r3@:BT)\ic!s$gMq5+T-\c)OA0gPd=H2nubs8Vir!7UuDV@<jBi;X&>W
c_BFJ$\@nrs&4g73!FMZMsk0n?6Oi2EYKJlM1A[dWg?Co`'LBh>[PBJ,]HI"7'iBla-Tmrd9Oar
rHN^rr3$I!5ng9#"8@glQ65Er;QiV':&Rs!Y,4^rr3Fn!$M:@s4.1=s8RrV0)beO%KP,[rr\Pe+
TCO'#N`7>=B9XIi7e2DrMra:*D<1)s8Vr3I76%R;O,u.rrLPmJcGBBJcFU,!pq?#qu6cK=H*'_r
rW16IHUV1Vu?Vs-NM'`rroP#s'u+AqYpSVN;ihY%fk5\rsdW]!9=+ZI0K$<s,-k1rVlp0!8%5M"
5*YSj6Q^Nm'q[O<cOtirn7;U\Q^3s6'_-Brs7,9:,b+$K?*o[rrLPmJcGBBJcFR+!_l>5qYpW+:
9M&*"1_*h<oX,\-NM'^rr_`p!64m8!U5^FrrN]2fDbdTf)Pg;s8F6<rr3%X!&+<N!Y5:_rr3)P!
!)BTrs822Md9CuT$mPhrs$VX,oen#li-nikFu6C2F)/foBlPYdWg?Co`'LBh>[R\o380irr`.`<
6i)T"iaQ!pA\7SrrOPJ_u0N:[K$F*p&>((!8%5M#E8^Js8U1@W;ceuMZ>F/rrN]2fDbdON;u38r
s8A>P@7O&QHK$Trs%(p.N:'hir8r`o<iI$2EG-<kNW!IdWg?Co`'LBh>[X^s8I[fp\Omlmr`=+^
AeJb=+9W<s7\V*j8T0.!5na7!gWg"o`#@2!8%8BRL'kbs8QsEp&=smMZ>F/rs0,8fDkH2#oVFir
t=a2-5oNS=^#!9Dh!h?YJ8E@n)OEPjF/g&.W<l:rs8PCK1@jZ:63odrrLPmJcGBBJcFR+!*]C%!
l[jiq>UQO?%hpgrr_.fF6ic("7'Q?n)aQN-NM'^rrS>`&G5u2%fd[t*&rE6s8Vs4>Q+R'MZ>F/r
s'&7+!hmdIdH_,&o$i.>B#:eZ,4W0agnC=Lj3T8r)j>7EIj7GZGP&Lo(W.gm>3kC-"P'prs7>D;
E-R'IDPd>rrLPmJcGBBJcFR+!*]@$!pWa^q#:H2:T"-2rr_J&AE!=`"3sT1rTF1^-NM'^rr]A'!
;,sa!Y5:_qYpW.!4De*!fI%3rVlp0!8$]>/nsfYqrcD@V3-.;=BJ^/??;!s[)q;"s7b^.a1%t5L
Nd?5=]ed/=_)SD*$JFnrVm/gW+%kI5%q.hhZ!W)G_,nes+14+rr?7#rr`7[@IX*m"9"cfa3">`m
s/-fp&>-nV+SbkrrOPJ_u0N:jo>Cop&>((!8%)I!al]<rVlqW!&+<N!Y5:_n,EH'm992_'D^_8\
"et.@9?Z9=(-?6U:8G/q#13qqiF$9qu6U$pUYK62`Xs0iS+;4dWg?Co`'LBh>[IYqYpWE9>UE'"
7pnLiQ_B)p5;klnc&^_HXGq#rrOPJ_u'H88H;rerrN]2fDGRLp'tg7rrS)Y0E(nP%fk5MrsEu/>
5u<<C422=c11fOp>O0$TSmkt=BA:N9<),trQU0k2E+<ecMcAp!Rc4Ds7H>Bs5!\T=S_t!pN(QQq
#:HT@XRdprr`.f:Uf`k"5@%5q<\+_-31p[rr^g[!3uG$!R6c+rrNZ1f),IKX8p09rrS&X0)beO%
KP)KrsF#0>5tG+mb5^ZCZtd,dViXms&rkm2FDZ#pXB-CdWg?Co`'LBh>[IXp\t<09>pT)"3490r
RLoNq3F[OrTaC`ZomaU"9'#8Zhj\5_\WH!gA_'#EE`#7s7ZTqa8>l<;BGf7rs<rN*<-!<pB(E9n
,E`>iEH8XW;Q\qfmi5c#h!XHs8Q8:U$L&)!Rc4Ds7H>Bs5!\T>5%suolY3Cq#:HqVGFtYrr]l*X
SqGa"8J0V548FTVHEm!-\:OZrt4^T2$sU1;n;o-s0"ll!&BB(rr3&h#Bp(G%D-ou!!$&YY=8Kl1
5PYorsF#0>5uod>?Y3(R-=PTdVjp@s&a")cMmpnG_,nes+14+rr?7$rrDrlrrUA:Z1n8#p4Q`+g
]%BFAUsUArrr%S:p9k%VuHgCiEG1>#L[OGs8Q8:nBV%7dWg?Co`'LBh>[IYrr3&r;:G@@"8e$[h
Y7$Pk%Jo+hZ!Yq9@E,*"7UtA\GlL.>,VB%Gi;iars-tjL]@BXC%0FJ!Rc4Ds7H>Bs5!\T>5eI&n
5R*rrr_:gJbJj<"3sZ,qr.PV]O1F!rr_S7<l4e7!G:o$rrRH(>2]DcdW'j<s&s.+cMmpnG_,nes
+14+rr?7#rrUt?S+lpa]hPg,rr`7t8@RXZ!n'sAm/I1MF'Hf`rrHj'W;cpDiEG1>#L[g@s8Q8:n
BV%7dWg?Co`'LBh>[IYr;Qo3S;MFcq#:HmN*+X)rr_tJ<7U.2!p*#CmJd:GCgkcerrHj'W;cpDi
EG1>#L[g@s8Q8:nBV%7dWg?Co`'LBh>[IYr;Qqk]Do9:l1b2[lY^V+p\t?XAo-etrrW$mipQgKf
OeaLpAY/8j/DtZGi;Z\rs-trGlReIC%0FJ!Rc4Ds7H>Bs5!\T>5\C)IbFc$hFk`Zrr^SEN;*)H"
3s`%q<S%]PHaNU"4:LniUm-NGi>V$!dN[-i;X&1GBj/f=D@9MrrLPmJcGBBJcFR+!*9$t!FY^%r
r`"6JG]'?"1M!trV-<nY"5__rrVI]rpg!ja]`iMo)A`8iTL4@T\obMkIKdU#'f*1s8W)tjSoJ5G
Bj/f>&!KOrrLPmJcGBBJcFR+!*]=#!*K-u!jbYVpAY6nUJ.ufrr`(U:sSS1!rQ-To)Ag-<IO6'r
rIc&kl1[I)W1Pri=iccrs3l.>6"X%X3:%qrs-trGlReIC%0FJ!Rc4Ds7H>Bs5!\T>5\C#=Si%"l
!0;JpAY6jOAWsjrr_S'B'/[a!H,78rr]]-L%4U2!Jf+frrSC7>2T>^iH/D:l2M3EdTZ\NqkpfC_
5Ol;p$;V_dX,p4s&s.+cMmpnG_,nes+14+rr?7#rr?3srrT,oe+N_Cnq'l[p\t?G<.su<s8SDXr
ri;':65)7rrIo'lMgsMJH&g1rrh;*qd-hursjh4>6"X%qu$*TqYf3]q!A"cdXQ!2s&s.+cMmpnG
_,nes+14+rr?7#rr?3rrr_V"H1pq2"7UkBa7oT9[n*Cqq#:AcFS>_;r2!)Tq!.k[OiQef"I"B9s
'"=["lX_+qd-i!rrRu(>5/$slKeHTdXQ!2s&s.+cMmpnG_,nes+14+rr?7#rr?3prrU&2Z1S%um
se<Kq#:HnPt]6qrr`%7MuNMO"SnQ]UAO0S!LCXirrJ=6rr2t%hu<o>GlRg@?FfG&!f,3-i;X&1I
qer_=D@9MrrLPmJcGBBJcFR+!*]@$!V'gprr`+V<nR'E"S7OI[/Tn$"7L>=k5PA^a\BMErri%Y:
9+9TrrJG'mJd3NJGoKJ>2T>\iHYA%!rH<7mJd6CdTYT/#L\*9s8Q59nBV%7dWg?Co`'LBh>[IYr
Vlo[F7T>5k%Jo+o`#'fP"hYGq>UZR?&Q^'GjtP/"S.CF[/T.d!M?mirrJ=6r;Qb#hu<`9Gl@XDq
d-i$rrRu(>2]DcdXQ!2s&s.+cMmpnG_,nes+14+rr?7$rrM)'nG`U5<J^>?rri4t9oec?rr_4@F
7K)+"7:Y<^>](mV6o^k!L&'2rr?6[rrM)'r;Qiq?FfP)!f,3-i;X&1Iqer_>&!KOrrLPmVuHkf,
V8W:s+14,rrMe$rVloQI.%":\k\Lco`#'n]2s.6rr3,pKN`*KqYpZ^GZ_uCrrJt'nG`NQJGT9G>
2T>\iHY8"!rH<7nG`QFdTYT/#L\91s8Q8:nBV%7dWkNd$EZu%!#7%-+A\U&]`/)o"q0eGs+14,r
rMV'rVloHL[G*Erif+aq=FUmeS/O<X\Z_3GiAQ"!ln*^h>[MYWq$)iPCWK/!*\:[!TA;"rrW((\
af\$LXKAars-u->6"V+C%0FJ!Rc5drsJW.!8%8Nk(<pY]^l('m#0-g!TN7hs1nX:kc&%Bf`)!9Y
kJ)&kc&%Bs6h3ap#l>UhQd([!Ush%rrLQ'li.+eY"b#MoD]'WD+=I's*3N"rrKC$h#@D^V=OWeP
CWH.!*\:[!TA;!rrW((\aob%LXK5]rs-u->6"V+C%0FJ!Rc5crrNf5hu3QWaUA<bo`#!k9lHO$q
#:NpT0j;7%K6>-Vpt_L`,l._bPV;GY!W0h)^c:MESgZo"oFoZ'H[e`!!&qkrrU#Fo_8@l`,l._b
Q$T,$gd$U"e^/?s6sb$rrLQ'kl1ao<.=*(rrLQ'rr3"DiV`]Wi_&@grrKL'oD\iTJG9'D>2T>\i
HY.t!rH<7oD\lIdTYT/#L\B2s8QD;nBV%7dWkHb!YYRkr;Qkh!$:q/rr`4;!,p*]!W)]As7u[%h
Co;"oDe`o)uuSprrMJEm/I,L!6b6=(AIt3e,T6@%10TFs5#F:P4S_OZ5`k9q#:E062:*P#!;n/s
8V*@l2LeNMuN_ZQ[Ji&C&S&4dYHub"3Fkaf_5=GdYIi%!I<JurrI)Cg]%;eSFlg^PCWB,!*\:[!
TA:trrW((\b,n'LXKAars-u->6"V:A+7eD!Rc5crrNi6hu*Knq\]C7s8VtQ??J8Cp](8a/c["e?
MfRcFZF42qYq'&]3]p-,nA&s``G/6=m,ea"l<Zi8NF<[rt`UU3>5QYs89QB'ANQ)+TORPs8RlTK
`:u]``G/6=m,h^]3]p-,nA&cs8)`tlQ65Er;QiV':%k_!rYi3m/I,S!6b3<!Y,4^rr34h!$M:,*
s9=VrrV*lQ21F]j;-A=rrPOfbNAg+rCq50rri<^Xmg''rrM#&jSoA@E`K@Bq>UKOGlI^DLXQ,#!
LCXXrrL$'p&>&VJG&pB>2T>\iHY(r!rH<7p&>)KdTYT/#L\B2s8QeCnBV%7dWkHb!YYRkqu7%0!
,_c9FpIjCirF`2rsPG!Du]i\#PnD[!/(.J/#GQ3;d!9(WOGOps3Lj"qu>"bcN!l!!m^hT9DAJ5"
"jDqT*PGOs8TD*>lOa;ju<;>s0kYqs3Lj"qkcUY;d!9(WUKl`rrQ^2B);N.Nf<<("9!*;Ds[K*6
NG=*rrN]2fDbdSf`2$4A,p6<rrJ.=q>UIp;"FVf6NG=/rrMunm/I1dD?+VRrr]/5iG&8j!TA:_r
rht]:P.U'rrM)'rr3"Sdes+GQG_JW!Q15srrJ=6o`"nihh_;Wp&>*j?Ffe0!fb6(i;X&1LKXZWB
k-YXrrLPmp&>(,!8m\R$\&.Qs8P4fr;Zd(7fNDqT)`g0s#gYcs8NEqq>U`#!&FHOk4p"5rr3-e!
4MhYJH#QPPQ8>l*5VXS(-hl.s8ObQg].<P-k#VGs,NcPs8!_Orr3<j!4Mp-!&FHOk5OiLqu6cf"
ou[>rrMAGrr4@p=^auZSGrQRS3s9d.0NN?s8SWB!$Fp?]3]p-,nA&sdog*Q17\@BrrPOfbPD/>%
fk5\rs%'T!8[n[`qo]9l&bcA!nI@Dr;QrW@9?)]\GcF46NG=-]k.r4rr4"Y=#gpskPsh;6`IUF"
B"gks.(bB+A6&@s7$/8C&S&4jE0;Z"O(Uc[/0e%!TA;&rrIo'r;Qe`_qY1lb)Q/q!L&'*rrCg1b
Q-_rrrW((\bH+*QGZnars-u-=o\M9A+7eD!Rc5crrNi6hu!E]JcJ^Ks5VW/s3([/rr3@u!,qo;j
4+,/bQ^0)rrTA(ErQ(?]`:V&:B`X(QGrpCrVm#js1JD'r_EbW-^Of41B?2/rsOngScA^Ro`+s)!
(d)b"u[ips/uECli6k^"1A13q=ah#`X^#gs/5p6s34RE9Pq.>!.t4M';#8Cs/&$];d!9(WQ#Ffs
8T"tD#OA86NG=*rrN]2fDbdSN;u2O!!E&errRQJdf'1Ncl^R5r\=Q#rr3m(!6`Z[#QWWZs0kYqs
3Lj"qor.A9Pq.>!.t4M!hTI2r;QgJ*bkTQ!UsgZrs/%(9@s4DiHYA%!Jf,$rrJG'g]%<&L\UlMP
CUFJ!rH<7q#:D]_cl!u#L\B2s8QeCnBV%7dWkHb!YYRkqu6_3!-A/>"oG*=ZO&_mrrSemDuTb?q
kSDA#s7t_!j;TFrr3%^!9sC\!g<W6qu6_[!9s=Z!]'i2rr3/i#Wr(6AcD]2OT=YBrrTA(F6il'r
rSJd'DDG-r?tJ?rsML#_>g;2HiO-:!C-S`%A*W=s8T)!1Ah+6r$YA>rrPjo_>aH96NG=*rsK>;f
DkH2#oVE^!#+l%!^?\Urr3&u/qEs$!gE\srr3?n!6bEB0EBl-qAd?NrsM'l[f<-'HiO-:!C-S`!
hTI2r;Qgk!+>d*!UsgYrrIB'rr3#XGlI^DLXQ,#!LCXXrrLQ'q>UJZJA(saqd-i/rrSM(>2]Dcd
YD$+s(Q!4cMmpnGkM(<'*-qersLI[\,ZK\/Xub>$Tn@f$_IE;s8U_'S,WEq48JmXY5iYCrrS)Y`
V]Z:M#b$^rrS)Y`VKN81B?2.rrc[/fQ,%3rrS)Y`VTT9Y5iY0s82ftOoQ'errU=CJ,TBOU]>$,V
Z<(_rrEQ^rr34q!,qo;Y5iVBrrU=CJ,TBKU]>$+rrPOfbPD/G%fd[t*&rE6s,m?nnG`P0!ri3!!
lb5YrVllfrVm6m!6bEB1B?20]`:V&:Bi^)QN*i_Qi@!c%57_\!hTI2r;Qh)!*T:#!W?6XrrIB'r
r3#XGlI^DLXQ,#!LCXXrrLf&qYpS[J@kg_qd-i0rrSM(>2]DcdYD$+s)MH8cMmpnGkM(<'*-qfr
s-UF-iF#?*^]l+!=M!grs#(qDu]VS6N6uc$Tn1a!j;TFrr3%r!-.r:"0/3uAGuN2rlLu:EW#h?W
rN)T!8IJP"NCF_62pl`!i5m:r;Qo"s/uEDli6k^"0DP'o_8@eT`B]Crs$jN5l[_^Qi@!c%kmq^#
G2!7s8T8&F8l1@T`B]CrrURJ5lUcb6NG=*rrN]2fDGRMXT/@nnc&V%#6"Q'P5s,-rsM0obQ%Su!
8IO9!9s@[!iH$brr3!00E1tQT)`g-rrQa3;uHXq>29,YGiAZ%!TA;&rrIo'r;Qe`_qY1liHY8"!
L&&ErrW((\blC.QGZnars-u->6"VI?1?/>!Rc5crrNf5hu3Qal6lhRs8U=D9`P.h"ZlY_$_dW4s
31O;s8Vp!3r/dWY5iYCrr_Bc#0-ZB%\]3S#6M42s8IhljoYh-rr31rQN-t?!8IJP"9'kTMuEYXj
oYh-rr3.qQN+,gF6il'rr_B`!5/(+!ho[-rVm)[!(['e!13]b!=pj_rs,.rDu]j@!-A/>!ho[-r
VlrW!([%g!^ct2q>UL,!8%,J"6KR`]^c"')?Kj:rrS#W\+ot26NG=0s"aZ0s,-lrqYpVp!13]b!
=pj_rrSemDuBV:@/sF-rr?6XrrIB'rr3#XGlI^DLXQ,#!LCXXrrM)'r;Qe]J@GO[qd-i2rrSM(>
2]DcdYD$+s*.i=cMmpnGkV.Er!*5Qs8V\b*>lBertsl""IlN/%i;_)s2Y0\cB//2S#pH:(Uqokr
rT,!CAn/RF8uMNH:Lg1s+^RS7r()*s8R0@#$lOF;#UFo-NMQlrrSDekPY>fF8uMNH:Lg1s/5p4l
i6h]!_EAqp\t<>!&4BO#1*?ss/,j`rr3!00E1tVT)`g0s/uEDrr3&E!&4BO!mgporr3$e!6b3<!
Y5:_qYpUg!*\pm!]g>Mrr3%s!+c'.!WL4?rsM0obQ%Su!8IOM!-.r:"KML"!13]b!=pj_rrSemD
uBV:;ZLG-rr?3WrrIH%rr3#XGlI^DLXQ,#!LCXXrrM;&rVln^J@5CYqd-i3rrSM(>2]DcdYCp(s
*.i=cMmpnGk_4FX]#3"(GR3U8XK&Hrtgt5%rUoW"'G9sraZ0RT9^'"DXh]K=SD[m-_;jh&s(`Gs
8@]q"<rWts8W(b,QT-Srr<#sLEH^DL\h%eGQ7_6Y5SA$mpc1o%K2&)"<rWts.1bA&s(`5s8)`te
dDJ_qu6lFOoPD5!8%5M#+>\Ms/,j`rr3!/0E1tVU&\d)s/uEDrr3*"/caN&rrSVlh#@<T6NG=*r
rNZ1f)#CKedDJ_qu6]AOo#(ZFTBbers7oq!j_k+reSJkrsV6pbQ%St!8IP9!sZdErro*^s/,j`r
r3!/0E1tQU&\d&rrP(jGPqI@>29,YLXQ2%!TA;&rrIo'r;Qe`_qY1ln7hn%!L&&?rrW((\c2U1Q
GZnars-u->6"VI?1?/>!Rc4Ds7H?eruT&o"ErMurR>gjo`+s9$qgBrn0aG"s.9:Vs8Vs".fTGQa
8d7+TnWP^rVm,I$qgBrn0aFurrP1\`qo];pB(E9q>Uf>(Bep8rr(>d>4h[k!mgq<rVm(W!!#N)3
-5&u)E@f;s8OGHdJs5g!!Z_T7o90aT)b/Vs8)sLrr3>H!$0@Ybl@MH>Bp)G!*S+W!Jf,&rrM8#r
r3"]`;KW9QG_JW"n67+s,qo;rs8L.\c;\q_curqrs-u->6"VI?1?/>!Rc4Ds7H?drs8(K2$sU1;
n;o+ruKZf2e#dns8Tto!&:hECB+Elq#C>("Wh/)!"t@Grr3/Q;)_raZi9t.d!5Zm8"fe[#-UJr!
&BB(qYpiiLG]DE*`KWKq#:@h;Z6VOrg+l2,F&3-s3Q#m!(V<Z!!#Nls8@]q"<rWts2-\o0sg+[!
!7uOs8HO4*hWK4]`c)pr;Qe%qq_8QLXQ2%!Ush&rrJG'r;Qe`_qY1poje$u6.iFA#IRn<s-CQ:n
DXBPdYD$+s*.f<cMmpnG_,nes-EZdi"kJ#rrZ#DiHY;#!H.2YrrIo'rr3#gC&\,5QG`Y#!LCXWr
rlU+s6`S5ZMt?D?Mjd&QG[EGDkl"bjo5S6LKa`XL0!fhrrLPmJcGBBQ2^on>lN+M"Kt>mh0Akt!
J/hXrrIo'rr3#gC&\,5QG`Y#!LCXWrr?7%rrVU^fX1Y[\R,14rsP.1C%18iHra<sYM\UE#L\B2s
8RjTnBV%7dWg?Co`(0U!hso;df0Kb>kS-FL]%/QS%[YX!Jf,&rrMV'rr3"b_u0N8QG_MX!qCYer
Vlre9\?fR!kDY7rVmLt]OOcZ[IO:rfVWgn=(@9&fC8;0#L\B2s8RjTnBV%7dWg?Co`(-T!Q1b_r
s%8Krr<#HL]%/QXK(+V!KtG$rrMV'rr3"b_u0N8QG_SZ"8S*Ua8>l<mS)9CrrT`;qu$I6WC.Zsi
1+=XC89G[s8V`3S:5-R='8p[Pd/6epA4dodYCs)s+aYEcMmpnG_,nes+14,rrLQ'r;Qf=Nns^9Q
G`_%!Ush&rrJG'r;Qe`_r1OsrhiMoq#:E`9\?rV!kDY7q>Uq.s2rdis6?q<=&j4.bOPN1(&$=tW
0)F7=BJ^/>%Mbk=\8YnLK<oirrLPmJcGBBJcFU,!Rcc$rrLu%h>[MA_uBZ:n7hn%!LCY$rrJG'i
Vs"p:RV+RrrVU^fY%4c\R,1.rrcN&EF?Z_rsnnns6%(TAm&/CJYL'<q=ssro'Yht=TADV<q+E7!
Rc4Ds7H>Bs5*bVdYIc#!VU!YrrJG'rr3#gC&\,5QG`Y#!LCX`rr^bO@*\BD!q&b7^Ae8F?MjKs$
X/,"W1O%fBiASHmem)%psug:HWsQT=BSd?GCPF:R@%M\s8S!VnBV%7dWg?Co`'LBhZ!W)L\q)O=
5ElWQG`_%!Ush&rrJG'r;Qe`_r^n%ib3/nM9kbm!q&b7_#FJH?MjHr&mFd@G52)q7I1!+?2sr:<
*!]&q#:fkj4hf%]T4a<s6j#gnBV%7dWg?Co`'LBhZ!W)L\q)P:&3ZG!LCY&rrMV$rr3"f]_qd1Q
G_nc#OctFg].;"hXUUImS):*rr@K)AcZA2o`#!'?MjEq!*]=#'3/<7s8QQtc8`'.doHGJm;uE`p
A+^ndR6a&-d6;ocMmpnG_,nes+14,rrLQ'qu6_s;XrZE!Lg_$rrN+&rr3"q[/Bq)QG_te"8RsVa
8Q#=C@:Tk!q&b7p&>"qhu<`9GkM(<\R,1*rr?7#s!(X)^&S+XggYKZs8RMro/hd.^0(F8j^D4h`
rFI^.%FH?C%0FJ!Rc4Ds7H>Bs5*bVdYI]!!n0a"i;WhS[/L")>5nO&V6p1#!LCXhrr`7t9="Hp!
F#KkrrVU^f_5=F>2T>\iHY(r!kDY7oD\eor;S!;o1Ij=;#OLqV>pRlY`!Y5s8S%mpIjEDpefqsJ
`m&:s(UuJrrLPmJcGBBJcFU,!Q1,srrV@Y`8U^sV6p4$!*]C%!N!1$rrJG'm/I1$9:btVrr?0gr
rVU^f_>CG>2T>\iHY+s!kDY7o)A\nr;RP1IHFm.PlFnW9]uG$fNPnPs8U$$ZCh-r$.X@ML]@BXs
(UuJrrLPmJcGBBJcFU,!Q15urr`"-NrJ)=!N!1%rr?7%rrJt'r;Qe`_s[O,crbtpq#:A.i9gOGm
S)7-rr?6[rrM)'q#:E+?Mj9m!*]:"'rtD;UAt8"I,RhB<rZXr9^i"ZX,#%#rsAO-g3ir#>5r=+c
MmpnG_,nes+14,rrL$'pAY2d?h!.V!N!1%rr?7%rrJt'r;Qe`_sm[.iFQuoq#:H^CN&S+rrVU^f
D5FH>2T>\iHY1u!kDY7nG`JlqYpT]h#76_RSd0gm/OYJf1D<'nY35drs?o'iHYD&>5r=+cMmpnG
_,nes+14,rrL$'rVlntl21J^dnIO<rrJt'rVlk$rr3"q[/Bq)QG`:n"7LAAg\CdNq2AG+l2LhQ9
\9.@!*\:[!TA;"rrT`;qsXOb>5\C(qH.-L:ZhHP'S]k@2oYgg8al]N;WQe]s8Q:&C%0FJ!Rc4Ds
7H>Bs5*bV_j:9$!o6Puqu6cmG]**8rrJt'rVlk$rr3"q[/Bq)QG`@p"8IgQbP2#<Y"?%`rrVX_f
DGRJ>2T>\iHY8"!kDY7mf*8gr;R1U9'lT;=TADt9N>E_rr3&gfD>LH%G"EX<6P=#GlReIs(UuJr
rLPmJcGBBJcFU,!Q16$rrV[eeGB1Hb=o8+rrKC$rVlk$rr3"q[/Bq)QG`Fr"9"ue\+fn)eP_P*j
So;M9\94B!*\:[!TA;$rrT`;qsFC`=T&14<+,G"s((Q95I^[M;#gRZD,u#Uq>U]YGlReIs(UuJr
rLPmJcGBBJcFU,!Pt*!rrJt'q>UQoLL'$,rrKL'rVlk$rr3"q[/Bq)QG`Is"1V-trV6BplYLG(i
VruJ9\97C!*\:[!TA;%rrT`;qs==_>5\CF=dZ>ks**:+I+/,qK$EaDL&]4lrr<#&EgQFuiHYD&>
5r=+cMmpnG_,nes+14,rrT*(rqucsce%pk"5R(<qX"4_[&*a$!*]C%!N!.#rrJG'q>UQB<f$JEr
r`(U:sRqt!q/h7rr2t%hu<`9GlI^E\R,1!rr?7#s!(A69[`o7r`?@ms8St#M0ZW2s,atpDGT?#:
\Nals8Q:&C%0FJ!Rc4Ds7H>Bs5!\VV.09"rrSXOrq69mY>2RorrKL'rVlk!rr3#)V>U>oQG`V""
6![2lhCD\[n<gXrrqjbfDkkShu<o>GlRfS?Mj$f!*]=#,I;1KBK`-j>ObPDs)Qsu^Q&9n`0/DRM
#[LZR,N;is'#G:nBV%7dWg?Co`'LBh#@Gl:ZMHS!hr`Zp&>-iN)e0lrrKL'rVlk$rr3#+V>U>oQ
G`\$"71/;htR-QgKfL-g&D3D9\9;Jhu<l=GlP<\qs"+\>5S=D]j4jQs8TcLlW[b)s'tFkkPqB\O
0ig)s7TpeD#aN=s(UuJrrLPmJcGBBJcFL)!od(Urr3&T9XXNm"7(#?iUQpK[&*a$!*]C%!OS^$r
s+k-s8VeM<6k7<"7p_Ik19P7mnD>:hu<i<Ge%/Xkl1Wdo`#l3;-7T)s1`g;9o)F5P/C8^s5e.fC
&e3:s(UuJrrL)`JcGBBJcFI($2ougbJsPYK4OBArr_"bETm#o!P4j#rr?7%rrKL'r;Qqd_u63'\
+fn)rKg=#e,KL<9K_54"5u@KqrdtZ>5S=&\Q;dlrqQL-OB?WcbQ$:0i(L2!_=21=s'#G:nBh1;q
1r52JcGBBJcFC&#jZPB9W7s?9sO<i"4LLulLk/X_j:9$!*]C%!OS^$rreXH9VMFZrr^;7VZ,!C!
UiA4rrV.Zqr[nY>5\C.\22t@U43.BmXSfGrVlrliVicU%?Y4o7!AV"C&e3:s(UuMrrT`([XnJLs
+14#rs/Fd9ZhX*?f^hY"4(4nk4elV_j:9$!*]C%!OS^$rrRI>p@nRhk%Ao0cMmn:hu<`PqrRhX>
5\C/<*&qss&Sp]1RditHN*pG]91;8rs[kigAh3BC&e3:s(UuOrr_4<6b.dJnc+1?e,K[AF^O-F=
,HbErr^\YCY\ac!Q16%rr?7%rrKL'r;QdZYk\5#qM\G-MuNc\r;RF2Hdi#pHeWRWe,TG\j8N+n_
fpb4rs\PFmf3=VC&e3:s(UuQrs&4M?,b9=SUph3s+13trs%%PMu7fj\+9P$h/$HCqu6]7QMpg`>
5nO&[&*a$!W@ZGrrT`+YDN8Z>5\CF;rgpQs'58!S@JV!TXLb.YQ+W>f`/HCM-br:n7hq&>5r=+f
)GfY9tUE)!rabKJcG?AJcF*s#QBouY2XD&eai_Cl$H72rVlft_j:9$!*]C%!OS]qrr_CkJbFp"!
*]=#,CI#;8V_*]<pEQ[s,G!,XJ5ap]pn7TI/j4o_=21=s'#G:nC[aCgK9@/rr3)V:/Ku%s7?8As
3CWL^e_\T^LV6Jo)AshR8&h5s21*"rr?7%rrKL'pAY6jL0`Pgrr?7#s!.>V?<U>#s,O@l<52$&>
O52cs1+SjQ%]2;kA:!"s8Q:&C%0jV%/,!Vk5OYmWbtbuJCoGQoDaCAc2S(9@t;)8Vc8?Co)Amm\
QWdNL].5Q<rW+"\srHo!l.I<K`;$PqYpTfq>UC6q-J>u1!KZbXfu*f@H!-d:&Y+c?iO=0s'#G:n
D!sPY"E5)<Ej9pWT4$T;=fA=oDaCAc2S.5U:X%#SF)qCR/6@Q!oT*JrVlk$rr3#:QMLO_mV.%AK
DtpTqu6cjTT\42ru0M/p&G'e;k9a?O8lYQWbhL6S,Z[ls'#G:nD4*SfiM6]LTA;9]r[fM>uS+]s
762@s3:QP^mP0!PuQ%PrgQTWrTsOa>5nO&_j:0!!iHdGqu6Y"M#RHYr;Qr_1SMTc]`.p4gV<F\r
tP=5OO=+.r_pMB5stJJ>6"V+s(Uu[rsnXFA`s*fd&WIpS#X$Srdk+=s+143rrMo3li.!_ZMsk1m
r`=(BC(7EZ2X1k!*]C%!Q16$rrh^eAjH=mrrM_&M#RHYr;R16;>:+g9`=rr@[9^%rVllarVm?#L
K9#us8Q:&s'#G:nDO<JW(k9_s5X-1s5s=ai_Ff%ea<A;QGWS"$/8X1fpqG\9re0]rr?7%rrL$'r
;Qlqh0mBArrLu%M#RHYr;RF2C$ks#EorfmaT)*3pA_!VBhcbFrru[,s'#G:nDaHMePVV1JcFa0J
cFp5#JEsqs6FN<lgOiSRDA\!$,o`$fTH!"9rIsfrrIo'q>UFurr3#:QM^[_pJ^qg!Q(+Xrr?7#s
!(UWL&_0hk#[G^s8SD!d7'W+p.P#Wk[7LobQ%TGs8Q:&C%13`"7^JIl[f)os+147rsSgaE8.eha
8X@_Q2C+O!OSTrrt)\9On\nPT1u*Xs-;A6G#lQYrr?7%rrL$'qu6\eWqu_rOi*"T!*]=#,@'MVL
#Gr0=jD9ls.6W>OL+ueX/Ge`?2sUqiW!*]s'#G:nE0`Qrh<32JcFU,JcG$8%J*o#s)KDP3U6YEY
"lIsrrM/!p\td'Z;?AIs8/QcRAJ;7s70@jrr?7%rrL$'r;Qim9`=hf!ET&Qrr?7#s!-5kZ@X^Vs
(gM7RJg7V=P.Zos20u*IZ"1*dX2!qs8Q:&C%1<c"4'f6rIP")s+149rrUkHci3qOWESlfhZ*WOK
iQn"rrW'Rrq6:"^0,@,s8B,tLSt1P>5S=">5nO&_j:6#!J.u]rrM"lL]7?Xqu7l.T:tWOs5$N%P
;SC#G1LE:s+eRL`*<9AqHa,)s8Q:&C%1Be"7L/Gmt(Mns+14:rs#].mH(eGcMmhMS5#lFs8V4pF
mo#'!A1qTrsIM!?IAfQ_,tj?Oo,.Y>5nO&_j:9$!T.2YrrH]XL]7?Xo`#lhH>:%ks5HlAHU1[2T
WiUJs3H>t>6"V+s(Uugrr`4j:<nFjg&HX'mf*RjI!i6ia$a%+rr3Af5tm:<[f?BQ;3h%QrrS0?r
UTspl>^4`s8UMWB[cnZ!*]C%!Q1*!rrHWeqYpW>6*l@H!*\di'\$DiH1_..9C6_*9&fkSs8Q:&C%
1Kh"3aW9rdk+%s+14=rsS0pZ2^M78'U0ihI-?_$EtLFDu]>,rh`H*q#:Ea3f3A+#ioi9k5YJ>GG
>'9!*9+!!Rcc&rrLVaqYpWe85+d<!*\Ob%FS-V9#(E+>6"V+s(Uujrr_S%EpnSZf)L=$nGa6K9\
KI@s3pC1cUi,Aqpk`Hn7OAF:B(7qp4Q`+q>UMN9>0fo"4^A2qtg<m>5nO+dYIl&n4N-Grr`("<6
g6u!*\:[#$V',>5r=+nG`UhQW)Cbs4%("s7-+#TjREkk"F"cq8n-,rJ5hmrVlg)^G8L9IJEjBj^
36'qu6cp92rCgrrQ^je,0.F>5nO*dYIkq:t>IC"7''6M1ts1?23@X#$V',>5r=+nc&[29;[:?df
4muoD^'3DiEB5cV3B%JR7(1B[0MtUS+=%s8Vt>,?!`%kPtS&;4[[`rrh7QF'#^<rr`3j&n1\;!*
]C%"O`(j:<`Y9"oFH]NbA?FrrHj'i;X!bs8Q:&C%1`o"6jHBo7?qhs+14Bs!?c&^AlSLB@>N+S\
1cu]R+k]Z"nZHs1871gccN6rr2rtrh`B(r;QrO9A,J%`Ua$2rg6L$r;Qb#rr3)F;bu0Grroc'Wf
(orK`;'enDO<N=9&;(s(Uuqrr`.\<S)g%ci8Rrp&>lF:?([@jRW>u?"(nUD1?*ra[]+MnRZ*Orr
3E+d/V!fq2PFSo6b$+rVm)`;Rc+E=N0k2%I\aH])Ma0>6"WO8U(15rs&D&:QO@7U4WCGC%1'\#$
V',>5r=+pAY319W`mGc2W@pp&>scA`f@cMjA)4bK?+M][<,/\aeNQ?cDD7l=0blrsQUk2f\l3s8
V%eI.R@;#lB*_l0j4%Y5Ink$1a-NS+KnCAoI#7rs/"O:7Cd:<SrB-!GV&]rru[,s'#G:nG*"ck$
`Z2JcEsoJcGEC/6^\*L>c`2TR$R3MIKu``(3_\qU<o$rcM_&RAn=.s8.d.<]L,fs8Tu/U]18m#h
<%8p@k%QJ)'Yq&H&_5-Xtp3s73I*?G?9-9<NjGs8N4f<,JJej8T<es8Q:&C%2!!"o=0B;,X*=s3
1Los7QCDFNjco:9MW5>>U1Tl2=BCHdH;G^&O["R*=l*Dnl;;s8V4c4'#ScjP9^);9/Y8%(T2mmf
1OT='C0Zf_>+>%+`LfAQE94lJ[XrW;V;Ir;R#bZ$B>PKY-d<rru[,s'#G:nGE4e]hPg3rrH0^Jc
F!pJcGEC+66dUoD=SFd\]g5Hd/Oo@'/auX+'o?s56XY\G8XWN;`ba`(;VC.(]HYo6ap(rVmtQ@T
7rsq"rO;JR2G[>?Ym!H"L/[=CmK*ma[q><,od+s7QBtr6^pC<b.ZIr9aLg>6"V+s(V!$rr_4dJb
K*C!p;/1JcF!pJcG?A+3.$Irp+H>j*WFZd!G_lFA1Ak9kUj&\]A+2IB@SiSc8Wtr.6ZVR/b,)s4
^h4pAP!srQp^6<Gn>Ili-noroi1roBOc1Nb2?pJ@=rus6]gkn@O<T<dM%6nc'#$s8Q:&C%20&q1
`25rr3,nY"FkXJcF!pJcG<@+oRs/a8aRaOPOAj8B:bHgJ7BSn4-Zhs,:<Uop8F)ec5LFrsS-DCd
e<Ts8Ti0VZ-Gl&EgWdCfX_A=]ng/=)E\gamal]j8TA>Uhs.=O2q%hrtJW9s'#G:nGfs[;g3Fu=&
iY$ooH_9s3:Rps7$%1n8r:)s/o,+a%&UEpA_p5Oh\cA;>PS<Q?,XsqF[uBrVm8Y9.Y?\s3UfEQV
>\Us2b3FpVi2!<Gn\iqYq",s8Q!sC!^+?o]k8jnGW@g^KLPes3:Rps6fn0gK0.*q1Mc$SNT'@s8
V4R8[Z9/BCrCT_hZEqMmp^Ye,K@T_Eg)-@K66)mr`=+JcE^h'^)ZE<`t*go)J_nqfQXP5s]q%`6
eM>"k'lD;L\Cls31Los6Tan[na++k%JnuGr8@Irr3j0WG/G2=k<Lf?IeB#6q=lhqZ$TpU-Crf9`
G%ogKK:(ir95ZKN2)RQhZ.3l2MRtd$\BEAO08(s8LF8afLb`H$=IfTYC;Ss2t@ms6K\,qM\J*s2
ds(fi9qMmf24>X.#lt;OrpL\U8>7r+*H6rVm9$I478J53DnF[na*hrsS%pRAt>7s8W##8]-,Zjo
5DOaQ%jO])R?]l2MmlBl3><VGFtA5W"Dps7gJNJA>fAnsQAVK`@a,enkAPrr3,e?5@8<rr3)tPu
Q&prsna<AuE8BLKRj!s8VjnkCNYas.'+?s6'D1c;^)+oQsm$Q8Lk+rr<"/9VT<uGddWh;2i]uOA
;PMp##fLpY/*nD#XG:mqc\'mf*@_:rrP6#4cN5s8U&uJcC<$SH"0?k5QS'VG4i*iF72qF$<(!rG
gMV`N.a)Roo^j?F`u6s7K76rr3/Y6oRQjM>mMWeQ@e+nG`N,_tj<9r)`pult_1PJcD8?JcFg2.J
A6piW$\cVV4sD9h4I1=_u=UYjod)fok7mohis5g%>1?s0jR?@ah4RrrTZ&Y4DSni+_ud"lO(os3
H7Is+13?s+140s"E>?I.R<-;9-.@Y''c;s&?a6s-J@0p">[-c2[g+R8NGQs8/'25*jc@s8VnR=O
m'D!L^Xsrs&9qiW%1rl@Jtds.'+?s5<o)^J:[*mrW+"Pqt[\hrKf[agI_p_+[JGs7U7%>dBa`^]
4?&E$?6nrVlucDJne6rrIH&qYpcl<l+g!A+G3NJcD5>JcFX-+T7a&cMuX(K]?r\;5001;-ch=AP
UPNs*Hk"\Ecj^]Dhg0!Sbforr^\GOo+qR!I`Yurrr7"c2W3VJcC<$RK%j<h>\,VF_Bk:[n<gR4\
\rSNW7nU:sT%>$I2V1<n*Ch`HYDVpAY2s::L'!!PEgWrre%]s.b:!s+13;s+14)rt!X]N;<@9;U
2L"4&Gs9:s]"<#Hf^NNo*Mabk1o;q2A;'qYpqA4`6ao[XN8sb?=gqs+13;s+14'ruAC:[K#Q/D<
6^;5:ri2n,Li1nbrLfq2@:+)7fM4rrV=]I/EpNq.#8lWiFA:Md>n)s+13:s+14&rt>-d<n76#<K
-$A=`1<1rdgn;qYgEulXe;"XC'oXrrT5kGkq@DU/b;r='`=es+138s+14$rt"7*Fmo@59Xi;D=^
'm3R*PU/#JU)iJr=rUY5&#"re#O_Ck;V;s+^Q)s4%&ibtOW*q2A>(WBEUqZfSX's8W&tI$7+qs,
2/EkDoB9rrr.+U]9aiJcC<$LAui)e,LiqVG4l+k%Ai"KNLE&53W%H<V_3OZ@]-Ss3Xh`Vr>Oms6
*7ts4g;jJcC<$LAui)dJkNaHt)(7c;9ea?:=)Y[Ju4bT]GEdG>mI.s7B#O6-.JIhZ'/ak^ibbs+
UK(s3L]hi*([)rh`H*r;XQ4Qt$*-BMd"Seo%.@bFM5[Z<-Vs@N7O^s53hV`.@rds+13pruo-NVZ
6@A>2.@sAE[mtJC[]]AH2OB8P/6*FStee2607GJcF^/!o"L.JcD\KJcEso+T%F'cMuj4I.OR;;G
`e>Y@G]S^Lga?BUf%T)d'5Mbl*+miVrstb?KPtW;hGKb5WIMChi;9a%N!"PtdTF8(mp83,n+Z^]
1;KHEPWlJcF[."RB4jDq9L>WW.PLaT!+-<K-hRSPdGrFB6sh>Wn2#9A9Da)je;-JcFU,"G"SniF
d`AWW.PL`r?dV::L8pG[KLi@WGJN\Q&"j4Y3\irdk++rrMgmrr3"0k(3Q4s+13hrt>-]=PNl1?%
hplaHLH;h',J4pOWA"rrJ@grr3#EH\)3ss+13frsn1&FRfCF8>^6fs0NVcl%/lhrrW-orr)it<V
(eAX8dbN_>an`;4[[_Iq8S+)m0$hs4[JRWLs+g!PFABs/Z0Ns1nX?rgum)b_&G;hgtg[rrGpkqu
6[mq18RIs+13arrr"?7hnksJcFC&!P+9frrK3kJcDhOJcEC_!P6R-s472N;tKkc!rYgkJcDkPJc
C<$OT,@$Jb]6GSuI;@XoEtPJcCi3!F"garrMpgJcDkPJcC<$OoGI8Dta23MnaiCY5a(QJcCl4!G
UB`rrMRhJcDnQJcC<$P5bRF?hF@!Fjbj@YQ'1RYl=dtJGFcrk5PI/c1M#:j(*`@YQ'1RZ2Xt";j
1;YJcFs6!V07]rrH`jJcDtSJcE%U#5(p;s2%k5JcG!7!K+V^rrLbjJcDtSJcE(V!qfL7rr3&:=8
@FIli."];"4Jc>jHt@Z2]CT[/U4#;p,%<!lA%7JcG*:!Lp4\rrL5kJcE"TJcE.X!qfL7qYpW6=8
@FImf*@e:&XP\!EA]Bs0DZUs0hq/oi'$.rrU&=q18S7rrK9kmf*<sOb*P<s+13ZrrVjlb4bi:_H
6Pas7$$h;>0GX!rbmjJcE(VJcE7[!qfL7o`#!0=8@FIo)Aa*L@"s?UOiHOs+13\rrVjlb4>Q6_H
6Pas7?6k=mt_W!rGalJcE+WJcE=]!qfL7nG`R,=8@FIp&>'AFmAu-P.-#B[/Y^W]Dhs*;p+P.!l
A%7JcGHD!Ft9WrrMdlJcE+WJcEC_!qfL7m/I.(=8@FIq#:BRAa'-pI`I$>[JtgX^&J0,;p+D*!l
A%7JcGQG!H?TQrrMFiJcE.XJcEIa!qfL7kl1_$=8@FIqu6]`>iu%eDV9U@[f:pY^]+B.;p+8&!l
A%7JcGZJ!J&5QrrM(kJcE1YJcEOc!qfL7jSo:u=8@FIrr3#j<94&[A)r4@\,V$Z_>aT0;p+,"!l
A%7JcGcM!KsnPrrLPjJcE4ZJcEUe!qfL7i;Wkq=8@FI!rGXij8T-\mt(MKs+13frrVjlb23."_H
6PbrrJsiir9%oM1P]:s+13grrVjlb2!!u_H6PcrrGpkiVrpQq18RVs+14&rr_Ja@b1,M!qfL7gA
_5k=8@RM!P46JrrK*jJcE:\OT,L]T0j;7%K6>-Vpt_L`,l._bOb`8oi'#crrU&=q1enM<:f&J!r
YgkJcE=]OoGdF0FF!7s89/B!1rHT!UPa2rrP:_bOkf9oi'#arrU&=q2#%OaaW+H!Lp0As185nrr
_R/"2Oj7!oO`WlMgqa9lKCu!^ct2p&>*d7!8.%!8$`?!7LM>!c:X,M>mT^le_XBq+cM@])Rrn!b
;:CqYpSVN9gKGrGDURm/I,S!6b'8!8@%E!K;g'rrIA1o;VfHMZ3_/ESUQpN4a`A]Dn)p"7QKp`q
o]9l&boE-du4,9JW.;s6?+AWOXG\;=sngSLsmb93o/9IE<cFaoBgm@8&GHrr)j'6NG=0nRd&k(e
<un!RcbmrrIB'JcGWI!G:<GrrM^lJcE@^PQ(`n!!E&jrt36\`rH(;!,V\[<WGg1ZrmB\rr3Y(!,
qn75QF_c=obPA%`\PKVuUZ4rs;$mbPtpls8UY<mJd48L[b<EGi=5Rr;Qf[AD7%aHd73B]`42q!g
Wg"pAY3m-r9gA$VUQ:s.fXAs8VWj5Q:ZlT)`g0s/H&Squ>gV-r9gA!_`U1rr3-h!6bB_BE%o2N:
$WGdYI>l!I3RSs8;ltHd:@F!TmpDs1JAqrrS>`&GH,*aoHqirs#8!B)eb/Qi@!c%57_\#G2!7s8
T8&ErQ(?aoHqirrStrB)_f86NG=06i_/pli."6L[b<EGi=5RrVloh<nREQBAnFA^&O;r"0DP'o_
8@eT`B]Crs$jN5l[_^Qi@!c%kmq^#G2!7s8T8&F8l1@T`B]CrrURJ5lUci6NG=0fc0u-TDn6X!R
cbmrrIB'JcG]K!K4VCrrL_iJcEF`PQ(aI!!'\+rrSnpBDqi7huH:IVZ<(_rrEW`rr34q!,qo;Y5
iYCrrSnpBDqi3huH:HrsD*nbQ%V/@K?I+qsOIbdYI>l!I3RSs8N$!q+]H?!F,#Ds1\MrrrPal>5
/$ublBHrrs$gMHiKuDQi@!c%kmq^#G2!7s8T8&F8l1@blBHrrrUOIHiF$P6NG=0f`1us/c_[7rr
LQ'nG`N6iIV%.rrJglf)GciK7X':s-!BaedDJ_qu6lFOoPD5!8%5M#+>\Ms/,j`rr3!/0E1tVU&
\d)s/uEDrr3*"/caN&rrSVlh#@<V6NG=0C&\,6i;e]%rrLQ'nG`N6iIV%.rrI=Qok"2XnG`NQA+
aF6@=eHms,m=&_\WH!gA_'#EE`#7s31sEqZ$%4PQ1ZT!1!TaqZSJKrs-UF*R:@5!,DK4#L*ZLqZ
$%4PPtLg3<7)!,0U#dhZ_U!rrLQ'nG`N6iIV$urr?6lrrHj'JcE"TOT,UTLG]DE*`KWKrVmnh;)
_raZiC'C2#oA;l"^8#M"q#LA-F#a/-$<Dg&D!TeknA8<O;])$da/#!(W\($u(,f\aBCtdYI>l!I
3RSs7$$g>4DOmC%-]RZ2]CT\c2]YL[b<EGi=5RnG`JlnG`N'n:CVEs+13\rrLQ'nG`N6iIV%!rr
MY&nG`MtpOW@Ls+13\rrLQ'nG`N6iIV%!rrMV'nG`JlJcDtSJcE:\!RcbmrrIB'JcG9?!Usgmrr
?5Rs02NSs1/.1dYI>l!I3RSs7-*in7hCl!*XsRYlB:S\c2]YL[b<EGi?pIrrAts!Usgmrr?5Rs0
2NSs5X+\irP+mrrLQ'nG`N6iS=J5!;-<k!2ohtltl1k!*XsRYlB^_$ZZ4I%2&^B%M8gD$iU)/qk
$4i*tA2L$E($o!!!rc'.e.[qu7:e!MjlN!!#rQY!W0h)^c:MESg!\!RcbmrrIB'nc/Uhq#C3krV
ulto`"mkVZ-\UGjt_5>(Q^Xs,I$dBh@Ogs!Ifas8/Pprr3_i0FF!7s89/B!1s5c!s$gMq5+T-\b
uI@0gPd=H2nubs8Vir!7UuDV@<jBli."6L[b<EGiA8or;c]orW)osrrE&urrD`lrrAqr!TA:mrr
?5Rs02N_rrHN^rr3$I!5ng9#"8@glQ65Er;R#[':&Ut%KP,[rr\Pe+TDB?#M&mDs8RrV0)beO%K
P,[rr\Pe+TCa-!RcbmrrIB'o`+pk!ri6#qu?ZrpAb-mp&>!lV>gSTGjt_5>(Q^Xs,I$YVu?Vs-N
M'`rroP#s'u+AqYpb[N;rng!8%5M"5*YSj8T&`I0K$<s,-k1rVlp0!8%5M"5*YSj6ZdHdYI>l!I
3Sqrr`?%rr<&rs8N)ms8N'!s8E#ps8N)ss8;r#rrM)'nG`JlqYpo)9E5&-/0H'2T([a8_Z,Gl![
ducr;Qlg"ou[>rs%_Ls8NT0fDbdUf)Pg;s8W'C:B(7pMZ>F/rrN]2fDbdPf)Pg;m/I+7L[b<EGi
A2mrrDusrrD`lrW)uurrDrrrrE&urrE#t!!'5&!Si(lrr?6ursJW.!8%8Nk(<pY]^u.(m#-Gpe,
P7(![ducr;Ql-!!E&jrrN]2fDbdON;u3BrrU:BW;ceuMZ>F/rrN]2fDbdON;u3/rrLQ'nG`N6iU
QsJ!;uls!;6Bl!<)rt!;uis!<)rt!36&"dYI>l!*K$r!YPLjrVluA$j=69rrW-nDh7r;s+p[V-N
M'^rrSJd'D;A2%fk5]o9ot'g&D!QD@?.:rrS)Y0E(nV%fk5]o9ot'g$AY=dYI>l!I3Sns8N)ss8
N)ts82lrs8N)ts8N)ts8N)ts8N)!rrLQ'nG`Jlq#:C/!8m_S".T?4q"OdjrGDURJcF4!M#RN(!5
na7!g3Npp&>7-!$<L,3.C5nrrW'6>Q+R'MZ>F/rs'&7+!hmdIdHA"!RcbmrrIB'nc/Uhr;ZcsqZ
$Qqrr;uurVultrVultr;Z]qXoAFGMt$`H>58+!'*-qfru:hQ!3?/"qh\X%3GS<gSLsmb94%YqM-
b<bCA3;Zh>`<2![ducr;Ql$!!)ZbrrN]2fD5FJ\cB/:rrS)Y0E(nP%fk5CrrLQ'nG`N6iUQsJ!;
uls!;c`q!<3#u!<)rt!<)ot!;ZZo!3Z>&_j9fl!*T*s!YYRkqu745!,_c9FpIjCirF`3s.9:0rr
31G#PnD[!/#k&h>`<2![ducr;Ql]!!'\*rrN]2fD5FJ?k`D8rrS)Y0E(nP%fk5CrrLQ'nG`N6iU
QsJ!;lfr!;lfr!<3#u!<)rt!<3#u!;HNn!3cD'_j9fl!*]0t!YYRkqu74W!)W^q4UCucrsD6qs.
9:0rr30c#lO`&$:]UHh>`<2![ducqu6^h!*]*r!Y5:_qYpWj%Vbk@!fI%3rVlp0!8$?4!Rcbmrr
IB'nc/Uhqu?Zrqu?Zrrr;uurVultrr;uup](6nYQ"X7SacXZ>58+!'*-qert'b^;ZHdWeGoQm#!
;kbT)`g/rs%N5s8U:I4+[Ffs+p[V-31p[rr^g[!3uG$#0i;1rsf%[qYpVu!5na7!f?t1rVlp/!7
p93!RcbmrrIB'nc/UhqZ$Qqr;Zcsrr;rts8W*!rVlitqu6WrrVultYQ"X1V==Kb>58+!'*-qerr
Qm7F8l1HqkSDA#s81eT)`g.rrr:qG-_K:JcFR+M>m\W'`bT:rt!!`"ErMurR>gjo`+Xf!6=s9!`
C*<r;R(K!$)"<s7ZTqa6!=%dYI>l!I3Sqs7lZls8)fps8N'!s8E#ss8N)qs8;r"rrKF&nG`Jlq#
:C/!8m\R&2+$ms8U_'S,WEq49,>Q!,ql:#1tMsrr3?fJcFR+MZ3mX=TAFLJa*(3&FYB3$4%\O\c
2W47K<EDM"^fI!q6G<rVm>=H4^,W<fF4O!!"d1p?2GVdYI>l!I3SOrr<%mrrJt'nG`Jlq#:C/!8
m_S#KQlmr;ZR66N6um$TnCgT)`g0s7m^&rr3!,4+[Ffs+13\rrLQ'nG`N6iR@i,!29DnT=OIk!*
]0t!YPLjrVml&-j@Ngs31O;s8Vp!3rf5S!+l31blCH;s7um[JcFR+JcE:\!RcbmrrIB'e,TFJU&
P.Y_sm[+=o&()r!*5Qs8V\b*>lBertsl""IlN/%i;_)a8d7+Tst.,S#pH:(UqnFs53j-s1/.1dY
I>l!I3RSs7-*iLXP\l!*]7!$E[5,!#I@9*(cLgr;RS!&J&dLE<B>:raZ0RTDt2h%rUoW"'G8Js5
3j-s2b3@cUIJ+!D/@ArrI[Foi2&m8(N7k!rm`'nG`JlJcDtSJcEdj!M+DarrW1:Vh+mJrrI0&nG
`JkJcDtSJcEai!M+DcrrW1:Vh+mIrrHd&nG`JlJcDtSJcE^h!M+DerrW1:Vh+mHrr?3jrr?5Rs0
2NSs2=p<ST`cf!rd&7JcGZJ!*Sdj!*XsRYlB:S_uBb.G2<0"rb\Qas82fr=7?.h=FpLVs+13err
J[6hu<cWD5VsbqYpOsn,EAkJcDtSJcERd!M+DmrrW1:Vh+mErrMb&n,EAkJcDtSJcEOc!M+Dorr
W1:Vh+mDrrLN'n,EAjJcDtSJcELb!M+DqrrW1:Vh+mCrrK%$n,EAkJcDtSJcEIa!M+DsrrW1:Vh
+mBrrI<!n,EAkqYp`&:]LJQP5bIm`E<0VIe0[8!!!`b+<XIOpAP!tY!W0h)^c:MESc9HhuA9-^&
J,(G3T#.rb\Qas7ZHm<:9bd>5A1#qZd,Kqu6[MU&P'!qZd,Qs8V56#TLGTrsAH&!7UuDV@<jBJc
F[.JcEC_!M+E"rrW1:Vh+mArrMmun,EF\AGH0+&cgecrrH$6rVlp3!8mbT"3CrS]`%j3%KP,[rr
\Pe+T?rliW"K/]Dho&G4#;2rb\Qas7QBm\!c^b!UsgurrNi6hu!ES<l=n9!YYRkr;Qkh!$:q7rr
N]2fDbdPf`2$4JcF^/JcE=]!M+E&rrW1:Vh+m?rrHKon,EFXC&%]0'*-qerrH3=rVlp4!8m_S"8
`r9X8`,#%fk5\rr^jQ!:5::iW"K/\c2]$G4GS6rb\Qas7H<ll!WrZ!TS=trrNi6hu!ES=2Y":!Y
YRkqu6_'!,_`8!Y5:_rr3%Z!'c&7i;\B.\GlT#G4Y_8rb\Qas7?6kE7++R!T&.trrNi6hu!ES=2
Y":!YYRkqu6_I!)W[p#S-pes7;Zc);0T@i;\B.\,QK"G4kk:rb\Qas7?6kb&-PG!RcburrNi6hu
!ES=2Y":!YYRkqu6_L!)igr#7geV,oemnm",2os+13YrrJ[6p\t<oD5VsboD\mN;t]PX!RQYtrr
Ni6hu!ES<l=n9!YYRkqu6_3!-A/>!Y5:_JcFI(JcE.X!M+E0rrW1:Vh+m>rrUP?kNr3L_j:)t!Z
M-oqu6[lc2IYD'*-qerrOhR\,QC/%fk44s4[L(s0Ve,STao1!rd&7JcGBB"5e-5na$2U_j:)t!^
6Uuqu6[Nmf!.e'*-qfrr^=B-iEuD!Y5:_JcFI(JcE(V!M+E4rrW1:Vh+mCrs&G^]SBI$e`m)7\"
WTs!f[1lr;Qf@7/[&d&cghfrr_O7"iL<=!Y,4]JcFI(JcE%U#+]r;s8Hl5L&VeEYc=IdQAC?BCg
L7G=B]d5bl$Z(!NWBursA?Q!.jM:nXh,VrVm6&#6<?Ts7;s*(qT\G"8;lta+=9Es+13Trrem9rb
\QdrsEJ5Wk#a`bgP>7qqqDSS\+Xr#P*0g"UcA]hYmH]X]#3"(GR3U8XK&Irs#Yr!!"d1p4<8!s+
13SrrS`JVh>!MC%0^R!KbBRs02NSs0)G&i.Ct0C%0^R!JJsRs02NSs7$$hbZ'-]fL,a2NU?`HC%
0^R!I3RSs02NSs7$$h*a4,NfSBT]%(G[)!GV&SrrI$'JcDtSJcG6>!<CQ!s4@8O4I5F8!GV&Srr
HC%JcDtSJcG6>!<CQ!s4@8O4I5F8!GV&Srr?2Qs0)HRs7$$h!7HGufDbk6QL=bRC%0^R!*OmQYQ
'1RnG`LhdXhGMrrG6Jmf*<%nCIU>=FpLUs+14>rrE,JJcF@%!Bc\9rrHj'fDbmM=b6UVs+14>rr
E,JJcF@%!Bc\9rrHj'fDbm6EIn.ns+14>rrE,JJcF@%!Bc\9rrHj'fDblpNIh,5s+14>rrE,JJc
F@%!Bc\9rrHj'fDblUVh+lOs+14>rrE,JJcF@%!Bc\9rrHj'fDbl4aFXAps+14>rrE,JJcF@%!B
c\9rrHj'fDbkbn:CVCs+14>rrE,JJcF@%!Bc\9rrHj'fDbhPJcDnQJcG6>!<CQ!s4@8O4I5F8!G
V&Trr?,Os/uBQs7$$h!7HGufDbk6QL=bRC%0dT!T\9Ps/uBQs7$$h!7HGufDbk6QL=bRC%0dT!N
r3Es8N(Ms5F!/s7$$h!7HGufDbk6QL=bRC%0dT!I<GWs8N)ks8N(Ms5F!/s7$$h!7HGufDbk6QL
=bRC%0dT!*/XjrrDioqZ-TprrD]k!!%TMi;\B.nG`LhdXhGMrrG6Jmf*<%nCdgBoj@Clr;c]orW
)osrrE&urrD`lrr@WMi;\B.nG`LhdXhGMrrG6Jmf*<%nCdgB[%6pjrr<-#!!)orrrDcmrrD`l!!%
TMhuA9-nG`LhdXhGMrrG6Jmf*<%nCdgBB]o*h"9AK%!!)orrrDcmrr<'!rW)fprrDusr;cHhquH
Zprr<-#!!%`QJcG6>!<CQ!s4@8O4I5F8!GV&WrrN*to)J^ir;Zcsp&G!ks8W*!qu?Zrrr;uurVl
itp&G$lrr;uurVuisKE$N&nG`LhdXhGMrrG6Jmf*<%nCmmC]oVaarrDusrrD`lrrE#trrDus!!)
utrrDThrrDusrrE&urr@ZNJcG6>!<CQsrsGl%!!!`b+<XIOp5o:T4I5F8!GV&WrrHQpo)J^ir;Z
csrVucqrr;uurVultrVultrVultnc/Uhr;Zcsrr;uuK)^E%nG`LhdaJ.&qZd,Qs8V56#TLGJrrM
JElMgnOMn8oh4I5F8!GV&XrrMFnnc/Uhr;ZcsqZ$Qqrr;uurVultrVultr;Z]qo`+pkr;Zcsrr;
uuK)^E%nG`LhdaA'r&cghfrr^@O"MFF-!rYi3li.%b9lIWC!Bc\9rrHj'g]%;'a7930!;uls!;c
`q!<3#u!<)rt!<)ot!;ZZo!;6Bl!;uls!<3#u!.t6%s7$$h!7K9p!YYRkr;Qkh!$:q0rr`4;!,q
6("9!*;Dn>rL4I5F8!GV&YrrMXhnGiLgqu?Zrqu?Zrrr;uurVultrr;uup](6npAb-mr;Zcsrr;
uuK)^E%nG`LhdaA'r'*-qfrr`-9!3?,!'ZO37'3XMuSLsmb94%Yu``G/6=m,ea+5UF.8NF<\s.(
bB+A6&@dog*Q17\@Ds80E7IE<cFaj0ne4I5F8!GV&YrrIJbnGiLgqu?Zrqu?Zrrr;uurVultrr;
uup](6npAb-mr;Zcsrr;uuK)^E%nG`LhdaA'r'*-qert&H9D?'XF9DAJ5""jEMT)`g/s!bEMp]&
SB/c5Rp+3soc1'5c$s.9:0s8U(K`rH(;!,V]8VEb,[=]tg)cMmo-QL=bRC%0sY!T%,Ns8N)qs8N
)ss8N)us8E#us8N)trr<&rrr<&ts8N)ls8N)us8N)ts8N(Ns+14>rrE,JdJj7]!8m\R#(HVLs8!
_Orr3?k!4Mp"!,qo;qAd?NrrkXf[f%h/rr3@j!5&:2T)`g0r?tJ?rsML#_>jP8!&FHOk5N[+!Bc
\9rrHj'h>[LXiU[$E!;lfn!<)rt!!*&u!<)rt!;c`o!:p0f!;uls!.t6%s7$$h!7K9p!YYRkqu6
kP!)ij1!(d)b$T9Aus.9:0s8Tb48H)Bg2CFg1!6"j9!:g'g#+km6s2k=krVm+u!+u92Y5iUcrrG
6Jmf*<%nD=0GUQj+)!!%TMg])j)nG`LhdaA'r'*-qers!0;F8q@&l2(DbT)`g0s,d<Gqu6_]!7^
iE#+km6s.KFErVm,M!'pSaY5iXdrrG6Jmf*<%nDF6Ik#;9+s8N(Ms4dR)s7$$h!7K9p!YYRkqu6
jR!4Vud!6+g7#G2!7s8RuW`V]Z:M#b$\rs#(qDuZO3BDqi8huH:Is/uEDb5VK)QL=bRC%1'\!rc
6Yci="FJcFL)JcG6>!<CQqrrNi6hu*KZa8dUcs.o^8r;R)'s.9:0s8SnqEW#h=Whoc,rVm6(aoD
C5!,qn^!&4BO#LEHts8T8&F3=L`4I5F8!GV&]rrJ(SJcDVIJcG6>!<CQqrrNf5hu3Q]l6lhRs8V
3`#0-ZB$_`mdU&\d)s5jCf`r>uPTpG!L!j_k+reSJls.TL)s8FVNfDbdTRKVFGs/uEDb5VK)QL=
bRC%1*]!Q/W&s/#aHs7$$h!7K<q$N(,/f)PdAU)b)^rVmp\!!Z_T7o90aa8d7+U!.TY#$lOF;#U
EL!!#N)3-5*!%*/DhcCq$B9)ASW-^4Q0!iQ*6b5VK)QL=bRC%1-^!p<8OJcDSHJcG6>!<CQsrsG
l,!!!fi,ofLCoDJV0rJ)Ku,)?$ps8HO4*hWK2LEH^DL\h&Nrg+l2,F&3,rsSg:"Wj<9eknA8<O;
])"eI7F&s(_irrG6Jmf*<%nDjNMoi'n%s.o[Gs7$$h!7HGufDbk6QL=bRC%13`!r6!AJcDMFJcG
6>!<CQ!s4@8O4I5F8!GV&brrW+)]n-3Xs+14>rrE,JJcF@%!Bc\9rrHj'k5PMY>IT1`U&T]DnG`
LhdXhGMrrG6Jmf*<%nE9fQlVYTOs.KCCs7$$h!7HGufDbk6QL=bRC%1?d!lRgfZN'q)JcG6>JcG
6>!<CQ!s4@8O4I5F8!GV&grr_V*EqdBLrrD]krr@WMnGe(>nG`LhdXhGMrrG6Jmf*<%nEg/WkBL
"PirB#YqZ$Hnp&FmhrVulto`"mkJcG3=JcG6>!<CQ!s4@8O4I5F8!GV&mrrr>OO]5r<irArWqu?
Zrrr;uuq#C<nrVultrr;uup&G$lJcG3=JcG6>!<CQ!s4@8O4I5F8!GV'"rseqpi6oE=O`t#3>(4
<`iW&oX!ri6#qu?ZrrVlitq>^HppAb-mp&>!lJcG0<JcG6>!<CQ!s4@8O4I5F8&U7;VAm8D<>?b
?HGDDTj`o6jNrr`?%rr<&ss8N)ss8N)qs8N)ms8N'!s8E#ps8N)ss8;qKs7cPEs7$$h!7HGufDb
k6QF-\l!;uls!;uls!;lfr!;6Bk!<<*!!;lfr!<3#u!<)ot!.k1Fs+14>rrE,JJcF@%!Bc[Ts8N
)ss8N)ss8N)rs8N)ls8N)ts8N)srr<&ts8N(Ms7?8As7$$h!7HGufDbk6QF-\l!;uls!;uls!;l
fr!<)rq!<3#u!<)rt!<)rt!<)rt!.k1As+14>rrE,JJcF@%!Bc[Ts8N)ss8N)ss8N)rs8N)qs8N
)us8N)ts8N)ts8N)ss8;qKs7ZJDs7$$h!7HGufDbk6QF-\l!;uls!;uls!;lfr!;c`q!<3#u!<)
rt!<)ot!;ZZo!.k1Es+14>rrE,JJcF@%!Bc[Ts8N)ss8N)ss8N)qs8N)rs8N)us8N)ts8N)us8N
)ns8N(Ms7lVFs7$$h!7HGufDbk6QF-\l!;lcr!<)rt!;ZZp!;lfr!<3#u!<)rt!<3#u!;HNn!.k
1Fs+14>rrE,JJcF@%!Bc[Ts8N)rs8N)us8N)os8N)ss8N)us8E#us8N)trr<&rrr<&ts8N(Ms7l
VFs7$$h!7HGufDbk6QFHni!<)rq!;6Bh!<)rt!!*&u!<)rt!;c`o!.k1Ds+14>rrE,JJcF@%!Bc
[&rr<%Ms6BW8s7$$h!7HGufDbk6QA>M?!.k18s+14>rrEX]J\0RH!jifCL]@ASJcG$8JcG6>!N@
;p&_IZs'jpfgs+14<s+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
3$s0)HQ~>
%%EndData
showpage
%%Trailer
end
%%EOF

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 863 KiB

View File

@ -1,78 +0,0 @@
DESTDIR?=../docs
#manual-api manual-calwiz manual-client manual-gui manual-main
TEX=latex
MAINTEXS= slsDetectorClientHowTo.tex
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
all: docs pdf html
echo $(PWD)
echo $(PDFS)
echo $(HTMLS)
docs: createdocs docspdf docshtml removedocs
createdocs: slsDetectorClient.doxy slsDetectorCommand.cpp
doxygen slsDetectorClient.doxy
docspdf:
cd slsDetectorClientDocs/latex && make
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
mv slsDetectorClientDocs/latex/refman.pdf $(DESTDIR)/pdf/slsDetectorClientDocs.pdf
docshtml:
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
$(shell test -d $(DESTDIR)/html/slsDetectorClientDocs && rm -r $(DESTDIR)/html/slsDetectorClientDocs)
mv slsDetectorClientDocs/html $(DESTDIR)/html/slsDetectorClientDocs
removedocs:
rm -rf slsDetectorClientDocs;
pdf: $(PDFS)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
mv $(PDFS) $(DESTDIR)/pdf
html: $(HTMLS)
$(HTMLS): $(MAINTEXS)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
$(shell test -d $(DESTDIR)/html/$@ && rm -r $(DESTDIR)/html/$@)
latex $@.tex
latex2html -split 4 $@.tex
mv $@ $(DESTDIR)/html
%.dvi : %.tex
latex $<
latex $<
%.ps : %.dvi
dvips -o $@ $<
%.pdf : %.ps
ps2pdf $< $@
clean:
echo "cleaning for manual-client"
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
rm -rf slsDetectorClientDocs
rm -rf $(DESTDIR)/html/slsDetectorClientDocs
rm -rf $(DESTDIR)/html/slsDetectorClientHowTo
rm -rf $(DESTDIR)/pdf/slsDetectorClientDocs.pdf
rm -rf $(DESTDIR)/pdf/slsDetectorClientHowTo.pdf

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,180 +0,0 @@
/*acquisition commands */
"acquire"; // starts the detector, acquires, saves, postprocesses the data
"data"; // get all the data (detector should already be started)
"frame"; // get one frame (detector should already be started)
"status"; // can put start or stop, returns idel, error, running, data...
/*configuration commands */
"free";// frees shared memory
"add";// adds ne detector to multydetector structure
"remove";// removes detector from multidetector structure
"type"; // adds ne detector of type to multidetector structure - type can be Mythen , Gotthard...
"hostname"; // for slsDetector sets the hostname, for multislsdetector adds new detector with hostname
"id"; // returns the id of a detector
"master"; // sets/gets the master for synchronization of multidetector
"sync"; // sets/gets synchronization mode of a multidetector (none, trigger, gating, compementary)
"help";// help for a command
"exitserver";// shuts down detector server - do not use!
/* data processing commands */
"flatfield"; // sets/gets flatfield file
"ffdir"; // sets gets/ flatfield directory
"ratecorr"; // sets/gets rate correction tau in ns
"badchannels"; // sets/gets badchannel file
"angconv"; // sets/gets angularconversion file
"globaloff"; // sets/gets beamline globaloffset
"fineoff"; // sets/gets experiment fine offset
"binsize" ;// sets/gets angular binsize for angular conversion
"angdir" ;// sets/ get angular direction (1,-1)
"moveflag" ;// sets/gets moveflag for the detector (default is 1)
"threaded"; // sets/gets threaded mode (do not use!)
"darkimage"; // sets/gets the darkimage for the Gotthard detector
"gainimage"; // sets/gets the gainimage for the Gotthard detector
"readctr"; // read counters for the Gotthard detector
"resetctr"; //resets counters for the Gotthard detector
"resmat"; //reset or not the counter before the following acquisition (at the end of the acquisoition the counter is always reset) (very advanced! EIGER only)
/* trim/cal directories */
"settingsdir"; //sets/gets the directory where the settings files are
"trimdir"; // as settingsdir
"caldir"; //sets/gets the directory where the calibration files are
"trimen"; // sets/gets the energies at which the detector is trimmed (no implemented)
/* file name */
"outdir"; // sets/gets the output directory
"fname"; // sets/gets the file name
"index"; // sets/gets the start file index (Automatically incremented during the acquisition)
"online"; // checks if the detector is online
"checkonline"; // checks if the detector is online by testing the connection
"enablefwrite"; // enable/disable file writing
/* Acquisition actions */
"positions"; // sets/gets number of positions and their values
"startscript"; // sets/gets start script
"startscriptpar"; // sets/gets start script parameter
"stopscript"; // sets/gets stop script
"stopscriptpar"; // sets/gets stop script parameter
"scriptbefore"; // sets/gets scrip before
"scriptbeforepar"; //sets/gets scrip before parameter
"scriptafter"; // sets/gets script after
"scriptafterpar"; //sets/gets script after parameter
"headerafter"; // sets/gets header after script
"headerafterpar"; // sets/gets header after parameter
"headerbefore"; // sets/gets header before script
"headerbeforepar"; // sets/gets header before parameter
"scan0script"; // sets/gets scan0 script (or none,threshold, energy,position)
"scan0par"; // sets/gets scan0 parameter
"scan0prec"; // sets/gets scan0 precision (in file name)
"scan0steps"; // sets/gets scan0 number of steps and their values
"scan0range"; // sets/gets scan0 range (min, max, step)
"scan1script"; // sets/gets scan1 script (or none,threshold, energy,position)
"scan1par"; // sets/gets scan1 parameter
"scan1prec"; // sets/gets scan1 precision (in file name)
"scan1steps"; // sets/gets scan1 number of steps and their values
"scan1range"; // sets/gets scan1 range (min, max, step)
"encallog"; // sets/gets encallog mode (0,1) for energy calibration
"angcallog"; // sets/gets angcallog mode (0,1) for energy calibration
/* communication configuration */
"clientip"; // sets/gest client ip for Gotthard
"clientmac"; // sets/gest client mac for Gotthard
"servermac"; // sets/gest server mac for Gotthard
"configuremac"; // configure the detector mac for Gotthard
"port"; // sets control communication port
"stopport"; // sets status communication port
"dataport"; // sets data port
"lock"; // lock detector (no other PC can connect)
"lastclient"; // gest last conencted client
/* detector and data size */
"nmod"; // sets/gets number of modules
"maxmod"; // sets/gets maximum number of modules
"dr"; // sets/gets dynamic range
/* flags */
"flags"; // sets/gets readout flags (none, storeinram, tot)
"extsig"; // sets/gets configuration of the lemo conenctors
"timing"; // sets/gets detector timing mode (auto, gating, trigger)
/* versions/ serial numbers getId */
"moduleversion"; // gets module version
"detectornumber"; // gets detector mac address
"modulenumber"; // gets module serial number
"detectorversion"; // gets detector firmware version
"softwareversion"; // gets detector software version
"thisversion"; // get client software version
/* digital test and debugging */
"digitest"; // digital test of a module
"bustest"; // test of CPU-FPGA communication
"digibittest"; // for Gotthard
"acqtest"; // for Gotthard
"reg"; // read/write register - do not use!
/* settings, threshold */
"settings"; // set/gets settings (standard, fast, highgain)
"threshold"; // set threshold in eV
"trimbits"; // set/get trimbit value (for all channels!)
"trim"; // trim detector (noise, improve etc.)
/* r/w timers */
"exptime"; // sets/gets exposure time in s
"period"; // sets/gets frame period in s
"delay"; // sets/gets delay after trigger in s
"gates"; // sets/gets number of gates per frame in gated mode
"frames"; // sets/gets number of frames
"triggers"; // sets/gets number of triggers (use in trigger mode)
"probes"; // sets/gets number of probes (advanced!)
"measurements"; // sets/gets number of non-real time measurements
/* read only timers */
"exptimel"; // gets exposure time left
"periodl"; // gets period left
"delayl"; // gets delay left
"gatesl"; // gets number of gates left
"framesl"; // gets number of frames left
"triggersl"; // gets number of triggers left
"now"; // gets time stamp from the dteector
"timestamp"; // gets time stamp for the frames (fifo-style)
"framescaught";// gets the entire frames caught by receiver
"resetframescaught x"; resets the value of framescaught to x
/* speed */
"clkdivider"; // sets/gets readout clock divider (advanced!)
"setlength";// sets/gets readout set/clear length (advanced!)
"waitstates"; // sets/gets CPU waitstates (advanced!)
"totdivider"; // sets/gets tot ckdivider (advanced!)
"totdutycycle"; // sets/gets tot duty cycle (advanced!)
/* settings dump/retrieve */
"config"; // loads/save configuration file
"parameters"; // loads/save parameters file
"setup"; // loads/save complete detector setup
/* pots */
"vthreshold"; // sets/get vthreshold value (advanced! Mythen and Eiger)
"vcalibration"; // sets/get vcalibration value (advanced! Mythen)
"vtrimbit"; // sets/get vtrimbit value (advanced! Mythen)
"vpreamp"; // sets/get vpreamp value (advanced! Mythen)
"vshaper1"; // sets/get vshaper1 value (advanced! Mythen)
"vshaper2"; // sets/get vshaper2 value (advanced! Mythen)
"highvoltage"; // sets/get highvoltage value (advanced! Chiptest board and Eiger)
"vapower"; // sets/get vapower value (advanced! Chiptest board)
"vddpower"; // sets/get vddpower value (advanced! Chiptest board)
"vshpower"; // sets/get vshpower value (advanced! Chiptest board)
"viopower"; // sets/get viopower value (advanced! Chiptest board)
"vref_ds"; // sets/get vref_ds value (advanced! Gotthard)
"vcascn_pb"; // sets/get vcascn_pb value (advanced! Gotthard)
"vcascp_pb"; // sets/get vcascp_pb value (advanced! Gotthard)
"vout_cm"; // sets/get vout_cm value (advanced! Gotthard)
"vcasc_out"; // sets/get vcasc_out value (advanced! Gotthard)
"vin_cm"; // sets/get vin_cm value (advanced! Gotthard)
"vsvp"; // sets/get vsvp value (advanced! Eiger)
"vsvn"; // sets/get vsvn value (advanced! Eiger)
"vtr"; // sets/get vtr value (advanced! Eiger)
"vrf"; // sets/get vrf value (advanced! Eiger)
"vrs"; // sets/get vrs value (advanced! Eiger)
"vtgstv"; // sets/get vtgstv value (advanced! Eiger)
"vcmp_ll"; // sets/get vcmp_ll value (advanced! Eiger)
"vcmp_lr"; // sets/get vcmp_lr value (advanced! Eiger)
"vcall"; // sets/get vcall value (advanced! Eiger)
"vcmp_rl"; // sets/get vcmp_rl value (advanced! Eiger)
"vcmp_rr"; // sets/get vcmp_rr value (advanced! Eiger)
"rxb_rb"; // sets/get rxb_rb value (advanced! Eiger)
"rxb_lb"; // sets/get rxb_rb value (advanced! Eiger)
"vcp"; // sets/get vcp value (advanced! Eiger)
"vcn"; // sets/get vcn value (advanced! Eiger)
"vis"; // sets/get vis value (advanced! Eiger)
"iodelay"; // sets/get iodelay value (advanced! Eiger)
"vref_comp"; // sets/get vref_comp value (advanced! Gotthard)
"ib_test_c"; // sets/get ib_test_c value (advanced! Gotthard)
"temp_adc"; // get adc temperature (advanced! Gotthard)
"temp_fpga"; //get fpga temperature (advanced! Gotthard)
"pulsechip n"; //advanc ed! EIGER: pulses the chip $n$ times with the enable. If n$=-1$, the chip will be set into normal mode.
"pulse n x y"; // Pulses pixel at coordinates (x,y) $n$-times.
"pulsenmove n x y"; //Pulses pixel $n$-times and moves relatively by x value (x axis) and y value (y axis)

View File

@ -1,59 +0,0 @@
The slsDetectorGUI is based on Qt4 with Qwt libraries.
-Qt4.6 installation:
Download the opend source version:
ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz
To install:
gunzip qt-everywhere-opensource-src-4.6.2.tar.gz
tar xvf qt-everywhere-opensource-src-4.6.2.tar
./configure
make
make install
By default Qt4 will be installed int /usr/local/Trolltech/Qt-4.6.2/
Edit your .bashrc:
export QTDIR=/usr/local/Trolltech/Qt-4.6.2
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
If your system also have Qt3 installed, make sure that QTDIR, PATH and LD_LIBRARY_PATH point to Qt4 before installing Qwt (and of course compiling and running the GUI).
- Qwt5.2 installation
Download the sources:
svn co https://qwt.svn.sourceforge.net/svnroot/qwt/branches/qwt-5.2
To install:
cd qwt-5.2
qmake
make
make install
By default Qwt will be installed in /usr/local/qwt-5.2.3-svn/
Edit your .bashrc:
export QWTDIR=/usr/local/qwt-5.2.3-svn/
export LD_LIBRARY_PATH=$QWTDIR/lib:$LD_LIBRARY_PATH
- The calibration wizards are based on the cern root software
Download the sources
svn co https://root.cern.ch/svn/root/trunk root
To install:
cd root
./configure --enable-qt
make
make install
edit your .bashrc:
export ROOTSYS=/usr/local/root
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
You can also download the binaries, assuming that your linuc and gcc versions match:
http://root.cern.ch/drupal/content/production-version-534

Some files were not shown because too many files have changed in this diff Show More