Compare commits

..

1149 Commits

Author SHA1 Message Date
40210ae26f jungfrauserver adcphase fix: bug was if adcphase was same as previous value, it still shifted 2018-03-14 17:20:26 +01:00
dd6301d66d updated for compilation 2018-03-14 16:19:30 +01:00
b58c3e8951 solving merging conflicts from 3.1.0 to developer 2018-03-14 15:45:35 +01:00
85aa47b835 updated link in documentation 2018-03-12 16:38:01 +01:00
da9b0bdc0b updated link in documentation 2018-03-12 16:27:45 +01:00
258de4947a updated doc 2018-03-12 15:46:20 +01:00
9197ab6e4b sls detector install omitted, added 2018-03-12 15:36:36 +01:00
6c1c203782 documentation updated 2018-03-12 15:01:23 +01:00
721d2a30f2 read me updated 2018-03-12 14:25:39 +01:00
72970c9669 updated binaries, updated manuals, updated git versioning 2018-03-12 14:21:02 +01:00
b389402d64 Merge branch '3.1.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 3.1.0-rc 2018-03-08 17:13:20 +01:00
0d2dd93498 changed setBit and getBit to uint32_t 2018-03-08 17:13:13 +01:00
fee6465213 eiger and jungfrau servers int to uint32_t for read and write registers 2018-03-08 16:46:15 +01:00
8b02aa9e91 Merge branch '3.1.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 3.1.0-rc 2018-03-08 16:08:45 +01:00
339956e5de changed from int to uint32_t in read and writeRegister 2018-03-08 16:08:31 +01:00
deb59530ab eiger gui fix: delay after trigger and number of gates upon measurements tab refresh doesnt exist for eiger/jungfrau 2018-03-08 15:49:01 +01:00
ec5e779225 added binary 2018-03-08 15:19:11 +01:00
3878212ffd jungfrau server adcphase not responding to a get properly 2018-03-08 15:17:14 +01:00
7649865a8f jungfrau bug fix: adc phase corrected to correctly return value in -1 2018-03-08 14:02:02 +01:00
06cdf8ad92 overloading access operator 2018-02-28 17:34:55 +01:00
28101bed22 updated binaries 2018-02-27 14:37:46 +01:00
1f6c289fd4 gotthard server : bugfix for getting id 2018-02-27 14:33:58 +01:00
675d69392a updating versions 2018-02-27 12:52:48 +01:00
61e7c0148f updating versions to 3.1.0 2018-02-27 12:40:53 +01:00
12e4530702 changes to documentation 2018-02-27 12:09:36 +01:00
64c18469bd release changes, gui compile via anaconda changes 2018-02-27 10:29:56 +01:00
aa2c535b4f possibility to use router mac in config file to have detip and rx_udpip in different subnets 2018-02-26 18:31:49 +01:00
5849725b97 posisibility to overwrite rx_udpmac even with receiver 2018-02-26 18:22:07 +01:00
74f327a959 gotthard server: red in stopping server for debugging 2018-02-26 17:34:35 +01:00
f67323d1cc updated gotthard examples to not use extsig of indices 1, 2 and 3 2018-02-26 17:13:51 +01:00
de3bfd85a1 fixed gothard not taking initial images after configuring MAC of detector. 2018-02-26 17:07:12 +01:00
ac9d9f6a93 removing --f from the gui options help, bugfix gotthard auto to trigger to auto mode and changing tabs will result in num gates and delay being enabled 2018-02-26 16:58:45 +01:00
cef9ae39c3 gotthard dac fix vrefcomp from 887 to 350 2018-02-26 16:15:03 +01:00
d14234ee38 jungfrau server bianries 2018-02-26 14:43:53 +01:00
a4aa862ee4 bugfix jungfrau server : tdma bit also needs to be set to enable 2018-02-26 14:43:11 +01:00
0b017b886c added release documentation 2018-02-26 13:28:31 +01:00
7859df6aa3 bug fix: 1000+ errors on gui startup(setreceiveronline not done), removed gui mesage popup for different output paths, fixed jungfrau to have multiple detectors in x dir in gui 2018-02-26 12:44:32 +01:00
ebe1ff4563 jungfrau virtual server needed the stop server as well 2018-02-23 15:32:05 +01:00
c3d6852f97 fixed threshold returning 1 if a trimbit file missing for eiger, it now returns -1, as both values are different 2018-02-23 14:49:18 +01:00
bacc4073f7 png compile fails in gui, removing it from cmakelists.txt in gui 2018-02-23 14:10:53 +01:00
50b515f94d changes to documentation 2018-02-23 13:46:17 +01:00
1e479a5c77 Merge branch '3.0.1' of github.com:slsdetectorgroup/slsDetectorPackage into 3.0.1 2018-02-23 12:48:25 +01:00
9322c176f2 jungfrau server virtual 2018-02-23 12:48:11 +01:00
639fdac232 created jungfrau virtual server(in next commit), edited install manual to give out html pages without subsection toc, links, navigaion, spilit into as many sections etc for wiki page 2018-02-23 12:45:31 +01:00
7364f674ed [JUNGFRAU] - Modified memory map address shift for the interface between FPGA and Blackfin SOM. Shift has to be set to 1 since the basic AMC data transfers is 8-bit and not 16-bit. 2018-02-22 11:15:24 +01:00
a536f8ac9b added png and Qt in CMakesList for gui 2018-02-19 17:44:57 +01:00
76bd2c69bc added vrs to Eiger dacs to interpolate 2018-02-19 12:04:05 +01:00
77aa3fa215 added overloading of call operator for access detector 2018-02-16 15:25:35 +01:00
bc6fc51f6a linking cmake 2018-02-12 19:15:12 +01:00
9fe7293dab Merge branch '3.0.1' of github.com:slsdetectorgroup/slsDetectorPackage into 3.0.1 2018-02-09 16:14:57 +01:00
3e417fdaa7 update release 2018-02-09 16:14:47 +01:00
f8c90b6da6 gui cmake 2018-02-09 15:27:25 +01:00
b6e5fa1944 updated Readme.md 2018-02-09 15:00:12 +01:00
daff1c9a09 updated Readme.md 2018-02-09 14:46:49 +01:00
c7b345237a updated Readme.md 2018-02-09 14:44:59 +01:00
a12694b5d0 updated Readme.md 2018-02-09 14:42:03 +01:00
40ce08d33e updated Readme.md 2018-02-09 14:40:34 +01:00
19e77bf303 updated Readme.md 2018-02-09 14:39:16 +01:00
f95b9e8d8d updated Readme.md 2018-02-09 14:37:17 +01:00
9371208a2e updated Readme.md 2018-02-09 14:35:12 +01:00
472d96cd94 updated Readme.md 2018-02-09 14:33:04 +01:00
d48ca4a9fe merge from 3.0.1 in readme and makefle for manual 2018-02-09 14:12:27 +01:00
1609f1d495 release.txt is not pushed in by default 2018-02-09 14:06:09 +01:00
7a6b6e1fea updated Readme.md 2018-02-09 14:02:57 +01:00
1b6ca913b2 removed checkout.sh as it is a single repository now 2018-02-09 13:45:13 +01:00
18c2b8d725 updated Readme.md 2018-02-09 12:27:10 +01:00
a29e70c52f updated Readme.md 2018-02-09 12:26:19 +01:00
98010057ce updated Readme.md 2018-02-09 12:24:05 +01:00
14eff53798 updated Readme.md 2018-02-09 12:23:34 +01:00
2cf150bb30 updated Readme.md 2018-02-09 12:21:25 +01:00
d2a2a2729e updated Readme.md 2018-02-09 12:19:19 +01:00
298663f143 updated Readme.md 2018-02-09 12:15:45 +01:00
5c23fd6502 updated manuals 2018-02-09 11:25:21 +01:00
2429af754f added -t option in release.txt 2018-02-09 11:08:33 +01:00
ef574e6620 indentation in release 2018-02-09 10:23:26 +01:00
0dd0486aa5 indentation in release 2018-02-09 10:22:17 +01:00
7196bfb9a5 updated release.txt 2018-02-09 10:16:06 +01:00
459b588b9f merge from 3.0.1 for gotthard 25um server start acq delay 2018-02-08 15:17:52 +01:00
8bf03a7712 Merge branch '3.0.1' into developer 2018-02-08 15:16:49 +01:00
4338217bda jungfrau 25um server, added start acq delay to server config file 2018-02-08 15:16:23 +01:00
895f8ccf81 Merge branch '3.0.1' into developer 2018-02-08 14:51:20 +01:00
0cb5941fc4 Merge branch '3.0.1' into condatest 2018-02-08 13:52:51 +01:00
f7bf1ae2f1 gotthard server simplified trigger, remove synchronization and master for 50um, changed measurement time, fixed compiler bugs 2018-02-08 11:40:35 +01:00
dde032acc8 reverting locations 2018-02-08 10:54:07 +01:00
23c5a73285 Merge branch '3.0.1' into condatest 2018-02-08 10:36:06 +01:00
a654febb7e merge from 3.0.1 parallalize dr 2018-02-07 15:48:39 +01:00
94b61ea2c4 parallelized setting dynamic range 2018-02-07 15:45:59 +01:00
aa190fda7a merge from 3.0.1: eiger server detip and mac client updated back 2018-02-07 15:24:44 +01:00
a6b917851c finetuning printout 2018-02-07 15:22:19 +01:00
5198e67dbd made the detector ip and detector mac update client in configuremac 2018-02-07 15:16:16 +01:00
897cbac27d merge from 3.0.1 for server binaries (adcphase,server dates, temp control, settings file 2018-02-07 11:02:36 +01:00
ecf1e9fac1 bugfix: returning pointer to local variable, char* to string in function definition 2018-02-07 10:14:52 +01:00
618f6291cf server binaries for all, jungfgrauserver with adcphase returning something, serverclient interface fixed for others not using tempcontrol, detectornumber not used for settings file for non eiger/mythen, server dates removing rev number 2018-02-07 09:23:52 +01:00
3da6a6df65 merge conflict removed, jungfrau server and eiger server re compiled 2018-02-05 12:33:05 +01:00
e6bd874a88 modified jungfrau server and client to make auto_comp_disable a not yet implemented feature as it requires a firmware upgrade 2018-02-05 11:50:22 +01:00
5d04067973 added auto comp disable feature 2018-02-02 18:01:01 +01:00
c520f10409 jungfrau server binaries 2018-02-02 15:19:10 +01:00
1872deb1dd fix for temperature workaround for fpga 2018-02-02 15:17:40 +01:00
e6f475d7c4 jungfrau server changes in temperature control for fpga bug: default temp threshold and temp event cleared at start and power reg only reads enable and not status 2018-02-02 12:37:52 +01:00
aebc423fb2 Merge branch '3.0.1' into jungfrauchanges 2018-02-02 10:25:45 +01:00
08fda2b662 in between in terms of mythen3 server, done with setdac and set power 2018-02-01 17:48:43 +01:00
6af3a6d33a Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-01-31 11:46:17 +01:00
b11b2dcfa9 in between stage 2018-01-31 11:45:34 +01:00
ee9996908a test 2018-01-30 11:24:50 +01:00
caf2548391 path 2018-01-30 11:15:31 +01:00
8778fa0aca all files in bin 2018-01-30 11:05:43 +01:00
3782a56ef2 second My3 commit 2018-01-30 11:02:08 +01:00
e95b444908 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-01-30 10:25:21 +01:00
d1ef6bf94b some fixes in the cluster finder 2018-01-30 10:24:56 +01:00
d15fd90e8d hejhej 2018-01-29 17:31:32 +01:00
633284cbdd hej 2018-01-29 17:28:54 +01:00
a3293f4335 more headers 2018-01-29 17:27:32 +01:00
3d0d86eb19 another 2018-01-29 17:22:15 +01:00
915e0d19ca more 2018-01-29 17:20:44 +01:00
44b8f482f0 multiheader 2018-01-29 17:17:43 +01:00
e32a5263e8 file io stat 2018-01-29 17:15:00 +01:00
e8d0bea1a0 file io 2018-01-29 17:13:39 +01:00
1ecc194bf8 bc 2018-01-29 17:10:39 +01:00
fbb8efa5f4 angular static 2018-01-29 17:07:24 +01:00
b78b2bb678 angularConversion 2018-01-29 17:05:51 +01:00
d9116ec0b9 detectorData.h 2018-01-29 17:03:46 +01:00
b6f6122656 post processing header 2018-01-29 17:00:40 +01:00
80c301f88e oj 2018-01-29 16:58:31 +01:00
2feaa27c74 more 2018-01-29 16:56:27 +01:00
b398322fd2 det base 2018-01-29 16:54:34 +01:00
66e0049ded set of headers 2018-01-29 16:52:17 +01:00
7d48c2f8ee actions 2018-01-29 16:48:22 +01:00
988baca7f6 more inc 2018-01-29 16:46:03 +01:00
afd2cd1923 fimnc 2018-01-29 16:40:37 +01:00
2963d5c401 detector defs 2018-01-29 16:38:26 +01:00
2f59d58a50 receiver funcs 2018-01-29 16:33:35 +01:00
ca059db4e9 path 2018-01-29 16:30:44 +01:00
43a1d73522 ansi.h 2018-01-29 16:28:31 +01:00
87d539a040 header 2018-01-29 16:18:12 +01:00
3edac42ed3 remove png 2018-01-25 15:16:56 +01:00
17d26869b5 specific libpng version 2018-01-25 14:32:04 +01:00
933d34590b find png 2018-01-25 13:47:19 +01:00
eb57e3a1d3 gui install 2018-01-24 10:17:24 +01:00
2cc5557ec8 o 2018-01-24 10:05:45 +01:00
7f80b77060 t 2018-01-24 09:22:55 +01:00
ab4f364267 target zmq 2018-01-24 09:20:27 +01:00
3a18a0a6cf o 2018-01-23 17:49:40 +01:00
fd03cf5b0f and more targets 2018-01-23 17:46:35 +01:00
b3d6bc1800 targets 2018-01-23 17:37:54 +01:00
0242db7e7a target for install 2018-01-23 17:16:26 +01:00
3aeb3f58d1 first mythen3Server commit 2018-01-22 14:01:46 +01:00
09a707d7ff Merge branch '3.0.1' into developer 2018-01-19 16:12:36 +01:00
41240ac135 eiger manual 2018-01-19 16:05:15 +01:00
f264691dc1 renamed sebastians interpolation - must be edited to avoid root 2018-01-18 18:08:55 +01:00
3854c82b90 added iterative interpolation 2018-01-18 18:07:58 +01:00
92b4b3324e first mythen3 server commit 2018-01-18 09:25:06 +01:00
ac536ebdf7 cluster finder for phoenix data (i.e. old raw data format) 2018-01-15 11:52:28 +01:00
061abf7be0 jungfrau server: changes to ensure no update of detector during this, included power chip to read the status bit and give error if temp event is up 2018-01-11 16:52:08 +01:00
2d6e4c95a2 temp_threshold, temp_control, temp_event done 2018-01-11 15:37:24 +01:00
a87687199f jungfrau server: minor typo in previous ocmmit 2018-01-11 11:36:40 +01:00
d879379aa4 jungfrau server: incorporated transmission delay 2018-01-11 11:33:26 +01:00
8fc3d97e78 jungfrau server: changed delay to trigger delay to have better trigger being caught 2018-01-11 09:26:50 +01:00
beabd03be2 jungfrau server: (also previous commit) date changed to have only 6 nibbles in format yymmdd 2018-01-11 09:24:49 +01:00
348a426242 updating to have developer's debug mode, resetfpga, programfpga and added api versioning, changed software date to only have date 2018-01-11 09:14:45 +01:00
68d6c514a9 jungfrau server has same resetfpga, programfpga and debug mode as developer branch, eiger server has effects from debug flag, but not compiled 2018-01-10 15:49:40 +01:00
59c0861131 Merge branch '3.0.1' into developer 2017-12-19 17:51:31 +01:00
6690335971 gotthard server bug fix, temp read 2017-12-19 17:50:20 +01:00
bc8c706150 updated gotthard server binaries (3.0.0.6 was already used in 3.0.1) 2017-12-19 17:44:32 +01:00
e39bee0113 gotthard server bug fix, temp fail 2017-12-19 17:33:27 +01:00
a4dc00b252 gotthard server binary update 2017-12-19 17:08:28 +01:00
6438238b55 gotthard server bug fix, read temp 2017-12-19 17:06:45 +01:00
31589ce352 added and fixed gotthard 25um file and zmq photon finder 2017-12-19 13:40:05 +01:00
7602ffc5ac gotthard on the fly to be stested 2017-12-14 17:01:28 +01:00
13078d0ef2 gotthardDataStructures added 2017-12-14 17:00:30 +01:00
9f3468bd15 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2017-12-14 16:59:04 +01:00
b50c1d966a on the fly moench photon finder and cluster saving 2017-12-14 16:58:22 +01:00
65a91c519e Merge branch '3.0.1' into developer 2017-12-14 14:29:16 +01:00
0649626842 made the color fix for black/white backgrounds 2017-12-14 14:29:07 +01:00
5958cf9278 Merge remote branch 'slsDetectorCalibration/developer' into developer 2017-12-12 11:14:38 +01:00
e7f7e0f280 Merge remote branch 'slsDetectorCalibration/3.0.1' into 3.0.1 2017-12-12 11:14:30 +01:00
735b8ea206 Merge remote branch 'slsDetectorCalibration/3.0' into 3.0 2017-12-12 11:14:24 +01:00
f6e1c21137 Merge branch '3.0.1' into developer 2017-12-12 09:05:50 +01:00
8da5b8318f removed a few stuff from gitignore 2017-12-12 09:05:39 +01:00
d2319459df Merge branch '3.0.1' into developer 2017-12-11 18:03:01 +01:00
03de29de90 refine threadpool mutex, remove unlock before destroying, unlocking twice is undefined behaviour 2017-12-11 18:02:33 +01:00
d6bdbf8524 Merge branch '3.0.1' into developer 2017-12-11 13:51:20 +01:00
bb3e5351b4 solving warnings from latest linux 2017-12-11 13:51:11 +01:00
4c0a16cd75 Merge branch '3.0.1' into developer 2017-12-11 11:13:32 +01:00
d6a4f83a99 ignore misleading indentation 2017-12-11 11:13:25 +01:00
e39d0aee56 Merge branch '3.0.1' into developer 2017-12-11 10:51:28 +01:00
29d66e455d possible to make only certain components of system 2017-12-11 10:51:19 +01:00
1e849097ea merge conflict fixed in filename bug 2017-12-08 12:09:10 +01:00
e19d564364 bug fix no reciever could not set file name for mythen for eg., also bug fix that did not allow _s, _S, _p, _d as suffix to file name 2017-12-08 12:06:10 +01:00
7577d03e75 Merge branch '3.0.1' into developer 2017-12-08 11:50:15 +01:00
8c123982d2 get detector and receiver status only when necessary for stopacquisition 2017-12-08 11:50:10 +01:00
6e876d79ee conflict merged fix, lockin in stop and startandreadallnowait, r_restreamstop moved to stop 2017-12-08 11:45:29 +01:00
40a7b3983a put some locking in stop acquisition and startandreadallnowait (bugs threadpool with more evernts than normal due to main and processing thread with no locks for detector releated stuff, zmqthreadpool not required, r_restreamstop moved to status stop when idle 2017-12-08 11:40:07 +01:00
4718378d0a corrected bug fix in r_restreamstop 2017-12-06 19:21:28 +01:00
24c305ec59 solved conflicts from merge of version being used to binary 2017-12-06 19:07:06 +01:00
bf9905ad2a possible to use binary --version or -v to get the branch and versionid 2017-12-06 19:05:35 +01:00
c4a242e10a changed all variables from svn to git, included --version for receiver binary 2017-12-06 10:29:57 +01:00
1bf7b4a6a1 directory restuctured 2017-12-06 09:10:13 +01:00
2f3dc8d109 Merge branch '3.0.1' into developer 2017-12-06 08:44:21 +01:00
7436d6c8d3 updaterev 2017-12-06 08:44:07 +01:00
7e932bf84b Merge branch '3.0.1' into developer 2017-12-05 16:04:26 +01:00
b498043ea6 remember old read freq if not 0 in gui 2017-12-05 16:04:10 +01:00
98e09b29d5 merge conflict solved -1 in adc in gui 2017-12-05 15:39:02 +01:00
7aaf95a565 -1 in getadc fixed in gui as well 2017-12-05 15:37:34 +01:00
a51f4f1252 Merge branch '3.0.1' into developer 2017-12-05 14:49:32 +01:00
7b1f935da2 allowing to read adcs/temp during acquire 2017-12-05 14:49:20 +01:00
2d14da545d Merge branch '3.0.1' into developer 2017-12-05 13:47:09 +01:00
ce1ec97571 some indentation in writing config file 2017-12-05 13:47:01 +01:00
9150556209 merge from 3.0.1 added more to write config/paramters 2017-12-05 13:42:35 +01:00
3b684c4662 Merge branch '3.0.1' into developer 2017-12-05 13:41:26 +01:00
d00c837977 updated write config and write parameters list 2017-12-05 13:41:16 +01:00
0ef52138e1 merge conflict sorted, removing rest 2017-12-05 11:25:10 +01:00
28211af5af Makefile for Receiver merged incorrectly sometime back, also in archived project 2017-12-05 11:23:35 +01:00
536203b6dc one repo so need for gitall.sh 2017-12-05 11:16:22 +01:00
65b4c69847 REST implementation removed from slsReceiver 2017-12-05 11:03:52 +01:00
2ae5a959fe fix in receiver merge conflict (before the respos merge) 2017-12-04 18:35:57 +01:00
263d702535 Merge remote branch 'slsDetectorGui/developer' into developer 2017-12-04 16:48:32 +01:00
7512f818cb Merge remote branch 'slsReceiverSoftware/developer' into developer 2017-12-04 16:48:32 +01:00
25023f6971 Merge remote branch 'slsDetectorSoftware/developer' into developer 2017-12-04 16:48:30 +01:00
61791c078c Merge remote branch 'slsDetectorGui/3.0.1' into 3.0.1 2017-12-04 16:48:17 +01:00
36802cdb14 Merge remote branch 'slsReceiverSoftware/3.0.1' into 3.0.1 2017-12-04 16:48:17 +01:00
e26cf3b673 Merge remote branch 'slsDetectorSoftware/3.0.1' into 3.0.1 2017-12-04 16:48:15 +01:00
aab62fccc1 Merge remote branch 'slsDetectorGui/3.0' into 3.0 2017-12-04 16:48:09 +01:00
73ce4abd58 Merge remote branch 'slsReceiverSoftware/3.0' into 3.0 2017-12-04 16:48:08 +01:00
c12b137b79 Merge remote branch 'slsDetectorSoftware/3.0' into 3.0 2017-12-04 16:48:07 +01:00
9f152ce1f3 merge conflict resolved 2017-12-01 12:44:34 +01:00
d1e3d50a87 cosmetic print outs 2017-12-01 12:43:14 +01:00
a06f29f473 minor cosmetics 2017-12-01 11:23:17 +01:00
12348ac76c merge conflict fix 2017-12-01 09:20:44 +01:00
18422ce215 setbit and clear bit moved to slsdet, readreg, writereg,setbit,clearbit in multi cannot give -1, instead api gives error if checked 2017-12-01 09:18:42 +01:00
0e26734023 restreaming stop fix 2017-11-30 19:13:55 +01:00
fd64ba289e Merge branch '3.0.1' into developer 2017-11-30 19:07:21 +01:00
e9343a5bd0 remove warning 2017-11-30 19:07:05 +01:00
6f3898441e merge conflict from 3.0.1 to restream stop from recieveR 2017-11-30 19:05:47 +01:00
5b88203bd9 merge conflict from 3.0.1 to restream stop from recieveR 2017-11-30 19:05:35 +01:00
385e6714cc merge conflict from 3.0.1 to restream stop from recieveR 2017-11-30 19:05:19 +01:00
70bf6eb4cb restream stop from receiver 2017-11-30 18:39:08 +01:00
ca855e6d39 restream stop from receiver 2017-11-30 18:37:11 +01:00
2227265357 removed external gui flag, acquiring flag is now not reset in stop acquisition, slsdet does not have acquiring flag anymore, busy accomodating acquiringflag, acquire cleanup, in acquire made lock for receiver more local, moved setacquiringflag false to bottom of acquire 2017-11-30 16:25:23 +01:00
baee38802b wait state between acquistion finished and ready for next acquire in gui, check if acquiringflag is set then reset it 2017-11-30 16:20:26 +01:00
1edb41242c ensure gui gets measurement finished after dummy packet received from receiver/ext process 2017-11-29 15:22:10 +01:00
397344a264 Merge branch '3.0.1' into developer 2017-11-29 12:13:09 +01:00
712c9a4524 zmq connect earlier in gui to prevent losing first messages 2017-11-29 12:13:02 +01:00
e17e4c3171 Merge branch '3.0.1' into developer 2017-11-28 18:50:27 +01:00
b75985088d twice connect bug fix in zmq 2017-11-28 18:50:18 +01:00
8bba57e77d fix to not have sls_receiver_defs in zmqSocket.h incldue 2017-11-28 16:32:15 +01:00
7c1423d654 zmqip fix to restart reciever streaming form command line, fix to not have sls_receiver_defs in zmqSocket.h incldue 2017-11-28 16:31:43 +01:00
8388d1f503 using file index from zmq 2017-11-28 14:45:48 +01:00
6a41b5ce3a using file index from zmq 2017-11-28 14:45:29 +01:00
1c606df752 using file index from zmq 2017-11-28 14:45:01 +01:00
1e85482d09 make updated 2017-11-28 11:30:23 +01:00
a89847538d merge ocnflict for white background 2017-11-28 11:29:15 +01:00
130f3d2e6f Merge branch '3.0.1' into developer 2017-11-28 11:18:43 +01:00
a351fa8f28 switching from black to white background for receiver 2017-11-28 11:18:30 +01:00
4825ace129 switching from black to white background for receiver 2017-11-28 11:18:22 +01:00
57fc89a6bb comment users 2017-11-28 10:51:05 +01:00
ba71529ff2 comment in users 2017-11-28 10:50:35 +01:00
f49998ccd9 Merge branch '3.0.1' into developer 2017-11-28 10:35:24 +01:00
1fce54ec4b zmqport in users fixed 2017-11-28 10:35:06 +01:00
41f24489bc zmqip in users fixed 2017-11-28 10:33:40 +01:00
addf964901 Merge branch '3.0.1' into developer 2017-11-28 09:37:09 +01:00
bca7c649d7 Merge branch '3.0.1' into developer 2017-11-28 09:37:09 +01:00
1dd300f713 only call register call back which already enables streaming in client and receiver, added to postprocessing 2017-11-28 09:36:54 +01:00
d5c310a2db only call register call back which already enables streaming in client and receiveR 2017-11-28 09:36:14 +01:00
747e9af431 Merge branch '3.0.1' into developer 2017-11-28 09:26:55 +01:00
9f91b78696 update comments 2017-11-28 09:26:12 +01:00
620f7651a0 Merge branch '3.0.1' into developer 2017-11-28 09:24:57 +01:00
d1eab6f750 updated slsdetector users for zmqport set up 2017-11-28 09:24:40 +01:00
4466213882 makng the zmq work without external flag 2017-11-27 17:06:27 +01:00
ca19993149 makng the zmq work without external flag 2017-11-27 17:06:18 +01:00
e29371ca8d makng the zmq work without external flag 2017-11-27 17:06:11 +01:00
c0a114345b bug fix set error mask when setting wrong settings 2017-11-27 16:11:33 +01:00
386ef7766c zmq streaming should work with external gui now 2017-11-27 16:01:12 +01:00
375b1c9485 not required to restart client datastreaming due to connect everytime for acquire 2017-11-27 15:40:36 +01:00
3439ccbec9 updates for merge for r_readfreq without reciever 2017-11-23 18:30:48 +01:00
a0c9018455 Merge branch '3.0.1' into developer 2017-11-23 18:24:34 +01:00
f0431bd873 Merge branch '3.0.1' into developer 2017-11-23 18:24:33 +01:00
65d7922286 merge solved 2017-11-23 18:24:24 +01:00
eb89e9bf96 Merge branch '3.0.1' into zmqchange 2017-11-23 18:22:27 +01:00
9f733c1dfb Merge branch '3.0.1' into zmqchange 2017-11-23 18:22:26 +01:00
59b5fe9424 receiver read freq should save value in shm even if no receiver present 2017-11-23 18:22:03 +01:00
16e4fbf8dd receiver read freq should save value in shm even if no receiver present 2017-11-23 18:21:54 +01:00
d40a2e0efa receiver read freq should save value in shm even if no receiver present 2017-11-23 18:21:29 +01:00
ab5229bcbf bugfix zmq ip was being overwritten 2017-11-23 17:48:30 +01:00
5eb8402742 bugfix zmq streaming both on 2017-11-23 17:28:35 +01:00
585661412c Merge branch '3.0.1' into developer 2017-11-23 17:20:13 +01:00
dc5384f0f9 copy zmq port even if receiver not online, else it is lost 2017-11-23 17:20:07 +01:00
935fecefde copy zmq ip even if receiver not online, else it is lost 2017-11-23 17:18:40 +01:00
20dc338c90 when changing network parameter, switch off data streaming only if on 2017-11-23 17:00:12 +01:00
2c276db579 solved merge conflict in changes to use ZmqSocket.h externally 2017-11-23 16:35:31 +01:00
b14ea217ee Merge branch '3.0.1' into zmqchange 2017-11-23 16:34:14 +01:00
da3ca9f306 changes to use ZmqSocket.h externally without further changes 2017-11-23 16:28:02 +01:00
a57e8edd88 jctb setting dr correctly 2017-11-23 16:15:38 +01:00
ad64df01c7 somewhere 2017-11-23 14:53:40 +01:00
8538604c0f somewhere 2017-11-23 14:53:37 +01:00
d23c9d52ed somewhere 2017-11-23 14:53:33 +01:00
2ac170db98 removed data streaming shutdown from command line to allow external gui 2017-11-23 11:52:46 +01:00
ab93835ce2 merge conflict to include datastreaming in client comment 2017-11-23 10:29:08 +01:00
3b292bdeb6 need to enable data streaming for client 2017-11-23 10:27:59 +01:00
43140811bd one measurement in users class 2017-11-23 10:25:35 +01:00
34908edd6a Merge branch '3.0.1' into developer 2017-11-23 10:22:03 +01:00
856ad76247 included setreceiver online in users class, so that one can start using users without config file 2017-11-23 10:21:54 +01:00
29f3387d73 Merge branch '3.0.1' into developer 2017-11-23 09:34:22 +01:00
4749e8c4e4 modified users client to work without config and better print out 2017-11-23 09:34:12 +01:00
a1d325a115 Merge branch '3.0.1' into developer 2017-11-23 09:20:22 +01:00
3034cf87d0 changes that might be reverted in detser 2017-11-23 09:20:20 +01:00
447451231c modified users client to work without config and better print out 2017-11-22 18:09:16 +01:00
0b45d73e0c Merge branch '3.0.1' into developer 2017-11-22 18:02:45 +01:00
7860637b46 switching off data streaming from command line only in receiver start and not in receiver as a whoel put command 2017-11-22 18:02:36 +01:00
c0bfe46aa1 enabling client in developer user api 2017-11-22 18:00:41 +01:00
26829585dc Merge branch '3.0.1' into developer 2017-11-22 17:47:28 +01:00
ea3c722552 made a bin in manual api to be able to compile here 2017-11-22 17:47:16 +01:00
c0a1f83691 Merge branch '3.0.1' into developer 2017-11-22 17:43:49 +01:00
4ecbfada5b Merge branch '3.0.1' of git.psi.ch:sls_detectors_software/sls_detectors_package into 3.0.1 2017-11-22 17:43:12 +01:00
d47abb140f removed detreceivernocall 2017-11-22 17:43:00 +01:00
fb3c903c04 Merge branch '3.0.1' into developer 2017-11-22 17:06:51 +01:00
6753f8ba6c network parameter should return with extra plus at the end like hostname 2017-11-22 17:06:43 +01:00
db6947cc9c Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-11-22 15:08:33 +01:00
590fac9e07 making nx and ny available for jctb in call back 2017-11-22 15:08:09 +01:00
400585be6a Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-11-22 12:34:28 +01:00
dcfa6fb100 Fixed filename problem with CPU readout and trimval command for mythen 2017-11-22 12:34:14 +01:00
39a20e1616 comment 2017-11-22 11:34:55 +01:00
114c45c04a making gui work temporarily for jctb 2017-11-22 09:27:42 +01:00
4159e83fd6 making gui work temporarily for jctb 2017-11-22 09:27:01 +01:00
3a26c95c0d Merge branch '3.0.1' into developer 2017-11-21 15:46:21 +01:00
8c45f94496 updated npixelsy for jungfrau effecting hdf5 mapping 2017-11-21 15:46:10 +01:00
f2f00fec06 Merge branch '3.0.1' into developer 2017-11-21 15:35:19 +01:00
e023cb186f manual 2017-11-21 15:34:56 +01:00
7f58b77dfb Merge branch '3.0.1' into developer 2017-11-21 15:12:32 +01:00
fd4dd5b1e9 removed printout 2017-11-21 15:12:05 +01:00
5d34358f44 changin zmqip in rxr should also restart streaming 2017-11-21 15:11:29 +01:00
8328b30cbd removed merge conflicts from bug fix of zmq buffering while acquire from command line 2017-11-21 14:58:07 +01:00
9c55cb4974 removed merge conflicts from bug fix of zmq buffering while acquire from command line 2017-11-21 14:57:52 +01:00
a0ad1fb3a3 Merge branch '3.0.1' into developer 2017-11-21 14:15:59 +01:00
2067f47f34 Merge branch '3.0.1' into developer 2017-11-21 14:15:59 +01:00
167a6cff3e restart streaming if port changed in multi level, sls detector level:need to take care of it on your own 2017-11-21 13:42:11 +01:00
d00df32e49 changing zmq rxr port should restart data streaming 2017-11-21 13:39:49 +01:00
2cc11f1ff0 bug fix: enabledatastreaming get should return shared memory variable and not from receiver, bug fix:zmq buffering when acquire form command line, stopping sockets when command line acquire or receiver start, restarting sockets at change of port numbers and a refresh button for the same 2017-11-21 13:39:12 +01:00
49ba893d7e zmq buffering when acquire form command line, stopping sockets when command line acquire or receiver start, restarting sockets at change of port numbers and a refresh button for the same 2017-11-21 13:38:31 +01:00
46aeee00f1 somewhere 2017-11-21 12:30:58 +01:00
5f0575236e Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-11-21 12:10:33 +01:00
45e0cf71eb put trimval should work also for MYTHEN 2017-11-21 12:09:52 +01:00
bd228fac27 bug fix in cleanup code, indexing 2017-11-20 17:19:03 +01:00
b7ca7f5319 just cleanuped code 2017-11-20 17:15:13 +01:00
11c9ab16f9 Merge branch '3.0.1' into developer 2017-11-20 16:44:21 +01:00
d1d530f0e7 manual 2017-11-20 16:43:39 +01:00
e6d22a97e2 Merge branch '3.0.1' into developer 2017-11-20 15:14:13 +01:00
a0c014eb7d changed rate correction back to what it was before in users class, enabling sets defaults 2017-11-20 15:14:01 +01:00
99037449f4 in between moench stuff 2017-11-20 14:23:32 +01:00
97260510f2 gap pixels should be allowed to set to 0 for other detectors 2017-11-20 09:43:41 +01:00
662f502d4c zmq always needs an ip in header 2017-11-17 17:40:57 +01:00
c5c23e73d5 works zmq separated for client and rx, ports and ip included in expert advanced mode 2017-11-17 17:39:04 +01:00
70e4c6e2a2 zmq separated for client and rx, ports and ip included in expert advanced mode 2017-11-17 17:37:00 +01:00
23b415d837 streaming port set return same as get simple change 2017-11-17 14:04:03 +01:00
428855d801 in between 2017-11-17 14:02:00 +01:00
2e234f1bbd Merge branch '3.0.1' into developer 2017-11-17 11:36:02 +01:00
a79864a5ae bugfix enabledata streaming send int for update 2017-11-17 11:35:54 +01:00
1dee950870 merge conflict from 3.0.1 2017-11-17 11:35:15 +01:00
51499fa503 merge conflict from 3.0.1 2017-11-17 11:35:02 +01:00
dcf4d98a75 show warnings, update binaries conflict from merge 2017-11-17 11:33:52 +01:00
28e2ebf75a merge conflict resolved from 3.0.1 2017-11-17 09:40:42 +01:00
823d537825 fixed warnings 2017-11-17 09:26:20 +01:00
d7137e0c75 fixed segmentation fault issue of xputsn the right way, fixed warnings 2017-11-17 09:26:05 +01:00
2569ffbf10 fixed warnings, back to int warning in debugstream due to 64 bit 2017-11-17 08:53:05 +01:00
b020270734 edited cmake to show warnings 2017-11-17 08:46:59 +01:00
f647bdaa48 updated users class to reflect zmq changes (separation), fixed warnings 2017-11-17 08:46:43 +01:00
c1e735c1b4 fixed a few warnings 2017-11-17 08:46:04 +01:00
4097c37b31 in between 2017-11-16 16:01:31 +01:00
a89265faf8 Merge branch '3.0.1' into zmqseparate 2017-11-16 15:09:14 +01:00
8e0414d1b9 separating zmqport, enabling in client and receiver works 2017-11-16 15:01:22 +01:00
bbcf75bc09 separating zmqport, enabling in client and receiver works 2017-11-16 15:00:59 +01:00
065b4a8e0f including zmq port change in gui 2017-11-16 13:50:30 +01:00
2fca426ec0 Merge branch '3.0' into zmqseparate 2017-11-16 13:49:11 +01:00
bf89dd44f3 updated binaries 2017-11-16 12:34:12 +01:00
d9fcac0236 updated merge from 3.0 hotfix setdac 2017-11-16 12:32:38 +01:00
875ca44c0b updated server hotfix binary 2017-11-16 12:30:41 +01:00
4c9cc1b477 Merge branch '3.0' into 3.0.1 2017-11-16 12:29:34 +01:00
f340eef4bc updated server hotfix binary 2017-11-16 12:29:09 +01:00
f192164e32 fixed setdac bug that comes rarely, moved serialize spi to 32bit 2017-11-16 12:27:58 +01:00
c69ae52e76 somewhere 2017-11-16 09:12:57 +01:00
7dee07b9c5 somewhere 2017-11-16 09:12:54 +01:00
0e8d2de253 somewhere 2017-11-16 09:12:49 +01:00
fd34bab34b in between separating datastreaming in client and receiver 2017-11-15 17:19:07 +01:00
2b0d07387a in between separating datastreaming in client and receiver 2017-11-15 17:16:47 +01:00
eb4ab306c7 in between separating datastreaming in client and receiver 2017-11-15 17:16:37 +01:00
32d32dbcdc in between separating datastreaming in client and receiver 2017-11-15 16:16:59 +01:00
7f256c868b fixed bug for 1D detector in slsDetectorData 2017-11-15 14:39:35 +01:00
06b9efd229 modifications for on the fly analysis working at cSAXS 2017-11-15 12:23:21 +01:00
9ad0fd0bc9 modifications for on the fly analysis working at cSAXS 2017-11-15 12:21:58 +01:00
7c9958db04 updated binary merge from 3.0 regarding settings 2017-11-15 10:36:55 +01:00
956625bb50 Merge branch '3.0' into developer 2017-11-15 10:35:20 +01:00
6d6133be59 Merge branch '3.0' into zmqseparate 2017-11-15 10:34:30 +01:00
bee751cebb updated binaries 2017-11-15 09:31:49 +01:00
fee95d228e Merge branch '3.0' into 3.0.1 2017-11-15 09:29:05 +01:00
ea0c436fc8 updated binaries 2017-11-15 08:07:59 +01:00
90fb8258ca updated binaries 2017-11-14 17:52:51 +01:00
dd1cf42a73 proper fix for settings, including dacs 2017-11-14 17:51:13 +01:00
dda86cfe9b somewhere in separating zmq rxr and client 2017-11-14 16:26:17 +01:00
4f74f6d08f Merge branch '3.0.1' into developer 2017-11-14 15:19:14 +01:00
a3a30d9b50 manual 2017-11-14 15:18:39 +01:00
2d962dfead Merge branch '3.0.1' into developer 2017-11-14 12:43:19 +01:00
b814515d0a manual 2017-11-14 12:42:30 +01:00
db2fef5d69 conflict resolved in merge from 3.0.1 to include file index in zmq streaming 2017-11-14 12:14:26 +01:00
0ae706d9a5 file index sent along with zmq stream 2017-11-14 12:13:06 +01:00
6693d08331 fixed help of acquire doing an actual acquisition 2017-11-14 11:53:37 +01:00
cf4498cf78 Merge branch '3.0.1' into developer 2017-11-14 10:59:01 +01:00
4903164f95 added high voltage to users class 2017-11-14 10:58:54 +01:00
c127eebeaa Merge branch '3.0.1' into developer 2017-11-14 09:13:39 +01:00
ef257d12e7 prev bug fix of ratecorr for eiger from users, made simpler 2017-11-14 09:13:32 +01:00
363aa9124e Merge branch '3.0.1' into developer 2017-11-14 09:08:16 +01:00
7e0af1cc7c bugfix: users rate correction able to set for eiger 2017-11-14 09:08:08 +01:00
8872f86e31 Merge branch '3.0.1' into developer 2017-11-13 15:32:47 +01:00
52a9303a5e removed compression from gui in expert mode 2017-11-13 15:32:24 +01:00
409519a3db fixed the double plot due to unzooming in gui 2017-11-13 15:25:49 +01:00
4c4a26c0e3 Merge branch '3.0.1' into developer 2017-11-13 13:39:39 +01:00
70848c9891 bugfix ratecorr always gave back -100 2017-11-13 13:39:28 +01:00
e33ba2cd76 merge from 3.0.1 compiling with rpath and updating detector binaries 2017-11-13 12:32:08 +01:00
dedc00f1bd compiling with rflag 2017-11-13 12:28:27 +01:00
1af065fdb1 infinite loop with gettotalnumberofchannels in gappixels initialization resulting in bus error fix 2017-11-13 11:13:26 +01:00
678ef89e17 conflict resolved from merge developer to gappixels insignificant 2017-11-10 16:54:18 +01:00
dc70c45ef2 Merge branch 'developer' into gappixels 2017-11-10 16:53:14 +01:00
c0ec315b04 Merge branch 'developer' into gappixels 2017-11-10 16:53:14 +01:00
6fa4e4cef8 Merge branch '3.0.1' into gappixels 2017-11-10 16:37:28 +01:00
3886a0c9ad merge fix from 3.0.1 regarding gethostbyname thread safety 2017-11-10 16:37:20 +01:00
5b65d44303 Merge branch '3.0.1' into developer 2017-11-10 16:34:43 +01:00
23ddb3d4b5 merge fix from 3.0.1 regarding gethostbyname thread safety 2017-11-10 16:34:31 +01:00
e1c7176c00 Merge branch '3.0.1' of git.psi.ch:sls_detectors_software/sls_receiver_software into 3.0.1 2017-11-10 16:31:01 +01:00
53caebe0f3 replaced gethostbyname with getaddrinfo as it is not thread safe 2017-11-10 16:30:48 +01:00
739187943d replaced gethostbyname with getaddrinfo as it is not thread safe 2017-11-10 16:30:38 +01:00
a2210c0118 Merge branch '3.0.1' into gappixels 2017-11-09 14:08:04 +01:00
6d0f751104 Merge branch '3.0.1' into developer 2017-11-09 14:07:48 +01:00
fb0afc282d gotthard server, too fast now sets stopped bit high and stops acquisition, so polling status also made aware of stopped bit 2017-11-09 14:01:36 +01:00
d24ab31d87 gotthard fix 2017-11-09 13:44:38 +01:00
9255cdde8a bug fixx for the 9m gethostbyname being not thread safe 2017-11-09 13:42:57 +01:00
7c344d4a39 recompile with -fPIC flag 2017-11-08 15:14:34 +01:00
3c6d572369 including dynamic range in gui call back 2017-11-02 11:02:40 +01:00
7ba90f98fc including dynamic range in gui call back 2017-11-02 11:02:22 +01:00
589a5c7852 Merge branch '3.0.1' into gappixels 2017-11-02 10:55:05 +01:00
0df4576874 Merge branch '3.0.1' into developer 2017-11-02 10:54:40 +01:00
7157b2817d update to zmq 4.0.8
among other fixes, this fixes the tmpnam warning
2017-11-02 10:49:24 +01:00
82f503aa09 dynamic range also updates offsets, 4 bit mode gap pixels work in call back from gui 2017-10-31 12:50:31 +01:00
3da8bca462 allowing receiver to know of gap pixels enable even in 4 bit mode, but not doing anything useful 2017-10-31 12:39:36 +01:00
9d4c14b724 gap pixels should now work for 4 bit mode and a bug fix in decoding for 4 bit mode 2017-10-31 12:38:42 +01:00
6ff249c3f2 Merge branch 'developer' into gappixels 2017-10-27 16:18:52 +02:00
e12229633c update binaries 2017-10-27 16:18:21 +02:00
b75dde4613 merge bug fix of set module 2017-10-27 16:17:12 +02:00
f6989d5539 merge bug fix of set module 2017-10-27 16:16:38 +02:00
7ff23b25b3 merge bug fix of set module 2017-10-27 16:16:29 +02:00
acfd9acc6c update binaries 2017-10-27 16:09:46 +02:00
18d5fd5a35 update binaries 2017-10-27 16:08:52 +02:00
1881cb0010 updated binaries 2017-10-27 16:07:42 +02:00
1420921291 Merge branch '3.0' into 3.0.1 2017-10-27 15:47:15 +02:00
aab56ea943 updated jungfrau server binary 2017-10-27 15:39:55 +02:00
045a7cfcb1 removed settings bug, highvoltage returning 60 when switched off 2017-10-27 15:38:07 +02:00
92f988ddc1 somewhere 2017-10-27 14:00:57 +02:00
79bce5e006 4 bit mode works without gappixels 2017-10-26 16:01:18 +02:00
9c82a8f726 temp in between, trying to get 4 bitmode to work without gap pixels 2017-10-26 11:19:58 +02:00
6812961836 temp in between, trying to get 4 bitmode to work without gap pixels 2017-10-26 11:09:55 +02:00
003239cddd gap pixels for 4 bit mode restrictions, not completed 2017-10-24 14:16:08 +02:00
ce7386e230 merge solved from developer, xcoord from detector if given 2017-10-23 17:21:45 +02:00
fde4194f9b merged with developer, receiver call back merged with no call back 2017-10-23 17:12:00 +02:00
7f9ac86862 Merge branch 'developer' into gappixels 2017-10-23 17:09:13 +02:00
16a939c0c0 Merge branch '3.0.1' into developer 2017-10-23 17:08:12 +02:00
f4f03f659a color code in user example depending on modID, instead of xcoord 2017-10-23 17:07:45 +02:00
4084e2c31e updated release doc 2017-10-23 17:06:12 +02:00
e417885459 merge conflict in release, merged incorporating no call back and call back into one user example 2017-10-23 15:30:00 +02:00
65fd5a3057 merged without call back and call back into one user example 2017-10-23 15:26:04 +02:00
1f138abac1 fix in receiver as x, y and z are properly integrated with detector server for eiger and jungfrau, and handling previous versions of detector where x y and z were all 0 (hardcoding them in 1 d) 2017-10-23 12:21:41 +02:00
d2fd0cbee9 x y and z coordinates are pushed into eiger server and its fixed in appropriate client side as well 2017-10-23 12:20:18 +02:00
210bcb081d xcoord should not be hardcoded for this version for eiger and jungfrau 2017-10-20 10:49:02 +02:00
387b4ef457 updated release with patches notes 2017-10-19 17:09:50 +02:00
673b7f1652 merge conflict fixed with developer 2017-10-19 15:36:28 +02:00
b6ae3300a9 merge conflict fixed with developer(patches for file write disable, xcoord) 2017-10-19 15:35:34 +02:00
c755a5b602 bug fix to release.txt from the merge 2017-10-19 14:41:46 +02:00
801817b749 bug fix to the merge 2017-10-19 14:41:12 +02:00
1cddb9a542 merge from 3.0.1 with patches for file write disable 2017-10-18 17:53:55 +02:00
72b71cd680 merge from 3.0 hotfixes done 2017-10-18 17:39:19 +02:00
5388b54eff updaterev 2017-10-18 15:52:08 +02:00
75b94e6614 fixed file write enable bug from the last patch 2017-10-18 12:29:46 +02:00
4aa0c8e24e Merge branch '3.0.1' of git.psi.ch:sls_detectors_software/sls_detectors_package into 3.0.1 2017-10-17 12:14:40 +02:00
927e776353 Merge branch 'developer' into gappixels 2017-10-12 15:09:35 +02:00
36a200ceba Merge branch 'developer' into gappixels 2017-10-12 15:09:30 +02:00
0fe43c75f2 merge branch developer into gappixels, added .project into gitignore 2017-10-12 15:08:32 +02:00
4d92744dea .project added to gitignore 2017-10-12 15:08:12 +02:00
ae72df7b14 .project added to gitignore 2017-10-12 15:07:54 +02:00
e814aee300 .project added to gitignore 2017-10-12 15:07:33 +02:00
4f2af046d3 Merge branch 'developer' into gappixels 2017-10-12 14:58:41 +02:00
91588ecc21 Merge branch 'developer' into gappixels 2017-10-12 14:58:25 +02:00
d2767afa7c added the eiger server binary with merges from 3.0.1 2017-10-12 14:57:12 +02:00
311059d748 merge fix from 3.0.1 which includes server without crash, multi settimer -1 bug, need to recompile eiger server for this branch 2017-10-12 14:42:57 +02:00
40cb2993fb eiger manual 2017-10-12 12:15:43 +02:00
fe6e1c8868 new eiger server binary with status fixed 2017-10-12 11:48:43 +02:00
eb78ae0fe1 new eiger server binary with status fixed 2017-10-12 11:44:46 +02:00
8585a536ec fixed eiger server status problem, updating binary in next commit 2017-10-12 11:42:37 +02:00
338fb2af35 in betwee, fixed eiger server error 2017-10-12 11:38:26 +02:00
a6e520d969 in between stage: error in compiling eiger server with error status: include file 2017-10-12 11:35:31 +02:00
eb32335194 trying changes to server for error 2017-10-12 10:51:47 +02:00
10e57319bf moench03OnTheFlyAnalysis multipthreaded with interpolation works 2017-10-12 10:31:11 +02:00
a59309b13f minor bug fix if same client: client ip only 8 bytes instead of 16 bytes copied, added user class functionality for long term use:stopacquisition 2017-10-12 10:18:15 +02:00
f2f061ae18 bug fix: using int instead of int64_t , eg exptime is -1 on return 2017-10-12 09:47:13 +02:00
d30a839eff file writer class should be created only if file write enabled, x coord fixed to reflect hardcoded values as detector does not send this value yet 2017-10-10 16:54:50 +02:00
948eb455e2 editing release text, in between, need to still fix eiger server with new eror status functionality 2017-10-10 12:15:04 +02:00
44bf4c52ed changes for eiger server to return error if error 2017-10-06 13:48:06 +02:00
2e5f64d9bc gap pixels for 8, 16, 32 in receiver at udp level 2017-10-05 15:59:07 +02:00
0d92b11055 print out comment, not print if mythen else access to null 2017-10-05 15:58:37 +02:00
4260dc0baf conflict resolution 2017-10-03 15:18:56 +02:00
0f302e3446 conflict resolution 2017-10-03 15:17:15 +02:00
e54767b69d conflict resolution with developer 2017-10-03 15:12:56 +02:00
812606a7b4 conflict resolution with developer 2017-10-03 15:12:49 +02:00
fc025bd28b conflict resolution with developer 2017-10-03 15:12:35 +02:00
34f10b382e one more conflict resolved from mergin with 3.0.1 (silent mode, this had changes for zmq source ip) 2017-10-03 15:01:30 +02:00
0b82aabd2b merge with 3.0.1 conflicts resolved 2017-10-03 14:52:53 +02:00
03a2f979a9 fixing merge conflict in error_Defs 2017-10-03 14:32:30 +02:00
2aed12dcb9 updaterev 2017-10-03 14:18:33 +02:00
96caf728c8 setting receiver to none properly, ten giga set in shared memoery properly if no receiver involved 2017-10-03 14:17:48 +02:00
4669d408d4 somewhere in between 2017-10-03 12:09:31 +02:00
c594870fdd Merge branch 'realgappixels' into gappixels 2017-10-03 10:49:47 +02:00
34062b6e0b fixed 32 bit gui masking problem in qdrawplot (conversion from char* to double) mythen clause not activated 2017-10-03 10:49:26 +02:00
7cde5dbe38 changes upto the receiver, not incl gui 2017-10-03 10:44:08 +02:00
bb817733ff changes upto the receiver, not incl gui 2017-10-03 10:44:05 +02:00
7cf7d9eb79 changes upto the receiver, not incl gui 2017-10-03 10:44:01 +02:00
907ab2f0bd changes upto the receiver, not incl gui 2017-10-03 10:43:47 +02:00
d0b379a2d5 double* changed to char* in gui data call back, effect in receiver is change in zmqsocket.h from int* to char* 2017-10-02 13:21:49 +02:00
afc08f8c30 double* changed to char* in gui data call back, decoding to be done by caller. enablegappixels skeleton created 2017-10-02 13:21:38 +02:00
5a7800768b double* to char* in detector call back. 2017-10-02 13:20:19 +02:00
63c0fe863d missing packets 0xffff are also anded with the mask, fixed 2017-09-29 18:33:41 +02:00
fa79a36089 should work, but jungfrau needs debugging 2017-09-29 16:43:07 +02:00
9bdb361d08 works but needs to be verified. the void* in call back 2017-09-29 11:39:36 +02:00
1a8b0692fe works but needs to be verified. the void* in call back 2017-09-29 11:39:10 +02:00
352ade6457 just skeleton of gappixels 2017-09-27 17:08:00 +02:00
e51d178eaa added silent mode functionality and modified users class for it, updated manuals 2017-09-27 10:18:20 +02:00
0a446c425b added users functions for silent mode 2017-09-27 10:17:48 +02:00
6a8aad4c2b added silent mode in receiver during real time acquisition, doesnt print packet loss regularly or file name created each time 2017-09-27 10:11:31 +02:00
af98d2bb53 added silent mode in receiver during real time acquisition, doesnt print packet loss regularly or file name created each time 2017-09-27 10:09:02 +02:00
986826cbe9 x y z and id are written to the udp header for eiger 2017-09-26 16:39:02 +02:00
e0d82ad92d only 3d positins in x y z coord, so receiver not overwriting them 2017-09-22 15:29:28 +02:00
663fd557ff client gives now 3d positions of detector to be configured in udp header, only in jungfrau firmware till now 2017-09-22 15:28:57 +02:00
5a8f30fee8 Merge branch '3.0.1' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-09-22 12:28:24 +02:00
e8bb186ff8 removed setframeindexenable from being set by client, redundant. removed read_frame from list of functions, obsolete. 2017-09-22 12:25:08 +02:00
ab27437604 removed setframeindexenable from going to the receiver, it can figure it out on its own now 2017-09-22 12:23:39 +02:00
1c3b9c603c manual 2017-09-21 20:26:35 +02:00
c2f6e5b20c modifying to adjust to common basic tests debug mode for jungfrau 2017-09-21 17:58:10 +02:00
7e0481eeff renamed server names 2017-09-21 16:45:40 +02:00
2b3d2bb4d7 removed changing number of samples by setting dynamic range 2017-09-21 16:36:33 +02:00
d8803ca5e4 improved library structure for analog detectors and interpolation t.b.t. 2017-09-21 15:03:43 +02:00
7134d0d0ed temp_adc not in eiger for usersclass (esrf). get adc in millicelsius 2017-09-21 14:51:32 +02:00
2bd5386c29 Merge branch '3.0.1' into developer 2017-09-21 13:35:16 +02:00
c5ff578d10 Merge branch '3.0.1' into developer 2017-09-21 13:35:16 +02:00
6eb5167c70 Merge branch '3.0.1' into developer 2017-09-21 13:35:16 +02:00
5873b5c9a8 negligible indentation change 2017-09-21 13:34:54 +02:00
271664f577 changes to users class to call dac and adc by string name 2017-09-21 12:54:03 +02:00
f2be03be05 example for adc index in users 2017-09-21 11:51:38 +02:00
7e37a1da4b change in user functions 2017-09-21 11:16:29 +02:00
18f014fd9e added in users class startreceiver, stop receiver, start status 2017-09-21 11:05:20 +02:00
11d58beec2 updaterev 2017-09-20 19:00:20 +02:00
88b1a5c66a updaterev 2017-09-20 19:00:15 +02:00
a250565f44 updaterev 2017-09-20 19:00:09 +02:00
378f4f0891 updated release doc 2017-09-20 18:59:48 +02:00
45ee8b2a2b changes usleep back to normal in postprocessing 2017-09-20 18:27:54 +02:00
fda9c85bb3 included threaded 0 as a possibility 2017-09-20 17:07:51 +02:00
862169e178 jungfrau with the option to start in debug mode to bypass the checks and tests 2017-09-20 16:20:39 +02:00
850ae77b43 in between modifying release.txt 2017-09-19 17:32:02 +02:00
e2832d2e1b Merge branch '3.0.1' into developer 2017-09-19 17:19:37 +02:00
092487c08e Merge branch '3.0.1' into developer 2017-09-19 17:19:36 +02:00
6b6ad6efe0 added one without call back 2017-09-19 16:47:56 +02:00
ae066fab93 modified userReceiver to make it work 2017-09-19 16:33:05 +02:00
41db424837 got rid of usleep, changed to pause() 2017-09-19 16:32:15 +02:00
3a79f0ad9b parallelizing file name has its consequences, file name prefix edited only in multi level 2017-09-19 11:37:54 +02:00
15b86a50d5 added advanced user stuff for esrf 2017-09-19 10:05:55 +02:00
5b0fd60775 parallelized ratecorrection 2017-09-18 17:49:08 +02:00
90f899c936 replaced post incrementing by pre incrementing 2017-09-18 17:20:38 +02:00
a95e2efdb0 parallelized settimer, setfileindex, setonline, setreceiveronline, getreceiverstatus, resetframescaught, setFrameIndex, setFileName, getFramesCaughtByReceiver; added getFramesCaughtbyAnyreceiver to avoid threadpool and to use in post processing 2017-09-18 16:47:22 +02:00
54d231d3c6 parallelized set timer, file index 2017-09-15 14:51:43 +02:00
b78dcf869b Merge branch '3.0' into developer 2017-09-15 13:27:18 +02:00
bcea5a99a1 1. bug fix: loading trimbits and gui complains of different trimbits and sets them all to zero. This is fixed. It just loads -1 to gui. 2. Advanced Tab made slightly better aligned 2017-09-15 09:36:44 +02:00
e6125c3c7f base fix for parallelism made more efficient 2017-09-15 09:20:43 +02:00
67cdfe8b41 in between 2017-09-14 16:58:39 +02:00
c635b19941 fixed jungfrau image after programfpga, fixed resetfpga 2017-09-14 15:55:55 +02:00
5ff574b33f made default streamer to be the ip related to hostname, otherwise can be specified from the client, also made it compatible with chip test board detector now 2017-09-12 15:04:56 +02:00
49378e6d09 added streamsrcip command to be able to change the interface from which receiver streams data from 2017-09-12 14:33:11 +02:00
aef462da32 merge error fixed 2017-09-08 09:31:26 +02:00
1ba325e902 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-09-07 11:27:52 +02:00
1c14b146a2 T1 data structure from CPU added 2017-09-04 14:28:30 +02:00
e95ffde95d T1 data structure finally correct 2017-09-04 14:26:28 +02:00
4ed3859c75 Merge branch 'virtualclass' into developer 2017-09-01 15:40:28 +02:00
069d044e17 fixed gain plot, aspect ratio, 1/4size of mainplat, keeping limits also for gain plot at start up, removing gain plot titles 2017-09-01 15:37:05 +02:00
c37d3feae9 update revision 2017-09-01 13:59:18 +02:00
c086e9c19f allow for slow joiner in zmq 2017-09-01 13:58:00 +02:00
272167435d gainplot added, masking done separately before converting to double 2017-09-01 12:04:04 +02:00
277dc2cfd9 gainplot added for jungfrau, aspect ratio check in gui added, npixels-1 as endpixel bug fix 2017-09-01 12:03:09 +02:00
be37e315c9 compile with gdb flag 2017-09-01 12:01:35 +02:00
1510fa71d3 T1 data structure fixed 2017-09-01 10:08:07 +02:00
91f3db6691 separated virtual master and slave executables 2017-08-30 15:38:43 +02:00
56aa4be358 added eiger virtual class. eiger server minor bug fix. 1. copying local trimbits over from module (in effect same thing)2.rate correction table calculated each time and now only when period is different 2017-08-30 15:29:58 +02:00
7099bc3286 removed users folder, redundant as user documentation in manual-api 2017-08-28 14:17:10 +02:00
35dcdd62c9 links to libraries in manual 2017-08-28 14:15:57 +02:00
84b0f9a91b updaterev 2017-08-28 12:05:48 +02:00
91fece87b2 updaterev 2017-08-28 12:05:42 +02:00
05c5ad711b solving the issue of deleting context by setting linger to 0 so that all open sockets are closed 2017-08-28 12:03:15 +02:00
ad4fdcfa1a eiger manual 2017-08-26 13:32:00 +02:00
2efe9cd40b Eiger manual 2017-08-26 09:01:56 +02:00
07594e0607 eiger manual 2017-08-25 16:14:53 +02:00
c4c063534e update user doc 2017-08-25 15:56:30 +02:00
705e1a762c updating user documentation 2017-08-25 15:46:42 +02:00
a8b41ca813 updating user documentation 2017-08-25 15:46:16 +02:00
0de9682e72 Merge branch '3.0' of git.psi.ch:sls_detectors_software/sls_detectors_package into 3.0 2017-08-25 15:45:37 +02:00
ce0aa98b3f updated users documentation 2017-08-25 15:42:56 +02:00
57fee3d5ef eiger manual 2017-08-25 14:24:42 +02:00
891e76af0a gotthard bug fix documented 2017-08-25 12:22:40 +02:00
67e92fdf68 Merge branch '3.0' into developer 2017-08-25 12:08:26 +02:00
13186e1ee2 modified examples 2017-08-25 12:08:14 +02:00
14f97cbc10 Merge branch '3.0' into developer 2017-08-24 18:42:32 +02:00
6d2072f198 removed unnecessary print in makefile for manual 2017-08-24 18:41:56 +02:00
a78bc86bca adc reader standalone for blackfin as well 2017-08-24 18:41:30 +02:00
5e11e0a7db added adc reader standalone 2017-08-24 18:40:52 +02:00
319d883880 modified user example in manual/manual-api and regenerated documentation 2017-08-24 16:47:27 +02:00
2d52058a55 Printing thread Ids created and exited, others (if others) are zmqs internal threading, moved all zmq socket type to publish subscriber type: (non blocking in send if no client) as per Aldos gui and probably faster, as only clients to receiver standard impl is aldos gui/slsDetectorGui/xiaoqiangs call back via detector class 2017-08-24 16:06:00 +02:00
e5c84fd11c external gui unused variables 2017-08-24 16:03:31 +02:00
598d163173 new gotthard server in bin 2017-08-24 16:02:51 +02:00
6f09a5abff Merge branch 'developer' into 3.0 2017-08-24 14:09:36 +02:00
fbb04f5ebe Merge branch 'externalgui' into developer 2017-08-23 19:06:59 +02:00
0bea688a83 changes for external gui 2017-08-23 19:06:40 +02:00
19d973f5d6 Merge branch '3.0' into externalgui 2017-08-23 18:26:46 +02:00
92d5143f81 Merge branch '3.0' into developer 2017-08-23 18:26:36 +02:00
6332025bbc frames caught in 9m was only looking at 1st receiver, now made to average 2017-08-23 18:26:25 +02:00
bdccddfe97 in between 2017-08-23 18:24:48 +02:00
a236a7a9aa Merge branch '3.0' into externalgui 2017-08-23 18:01:58 +02:00
72c4cbe871 Merge branch '3.0' into developer 2017-08-23 18:01:48 +02:00
7ffd9b87b8 bug fix:removed 0x prefix for dr 2017-08-23 18:01:34 +02:00
a657bac1b1 removed a print 2017-08-23 18:01:02 +02:00
f4e2b819d2 changes for external gui 2017-08-23 16:31:32 +02:00
634fbc748e compile libraries with -fPIC flag 2017-08-23 16:13:36 +02:00
8fde83499e Merge branch '3.0' into developer 2017-08-23 12:10:29 +02:00
5e90386fda manual 2017-08-23 12:09:42 +02:00
2116070f02 Merge branch '3.0' into externalgui 2017-08-23 10:11:57 +02:00
02c193118b Merge branch '3.0' into developer 2017-08-23 09:41:27 +02:00
33894509e6 Merge branch '3.0' into developer 2017-08-23 09:41:26 +02:00
b208acf4a0 moved doxy.config to here 2017-08-23 09:41:10 +02:00
02f4b5f546 manual-main fixed, detaildoc not, but for developers and in next release 2017-08-23 09:40:53 +02:00
b2513cad23 Merge branch '3.0' into developer 2017-08-22 19:43:49 +02:00
4f28df03ab trials 2017-08-22 19:43:26 +02:00
a7dab9a257 updating user documentation. another update required 2017-08-22 19:42:52 +02:00
ca756dbeee Merge branch '3.0' into developer 2017-08-22 19:40:47 +02:00
760ca98ee4 updating user documentation. another update required 2017-08-22 19:40:20 +02:00
960dc5c62f removing the print 2017-08-21 10:40:15 +02:00
03d9e1d182 check should be before and after the push or pull 2017-08-21 09:24:26 +02:00
25886044ab Merge branch '3.0' into developer 2017-08-21 09:21:41 +02:00
4dd7cafe32 Merge branch '3.0' into developer 2017-08-21 09:21:41 +02:00
f78a7b201b updated master file to reflect all files(not just eiger) 2017-08-18 18:35:55 +02:00
4e374eb2cd updaterev 2017-08-18 18:35:30 +02:00
5b80ef6d04 changes to release 2017-08-18 18:35:04 +02:00
cc5862533e changes for the statistic moved to listener 2017-08-18 17:57:31 +02:00
d58dd1d035 reset fifo statistic at measurement startup 2017-08-18 17:24:56 +02:00
3b497eca36 reset fifo statistic at measurement startup 2017-08-18 17:23:52 +02:00
f4a11533be removed prints 2017-08-18 17:02:09 +02:00
fe24c8fb86 changed check 2017-08-18 17:00:28 +02:00
608f292e4f moved statistics to listener 2017-08-18 16:50:19 +02:00
9868ca3eca Merge branch '3.0-rc' into developer 2017-08-18 16:13:51 +02:00
de3c62fea4 Merge branch '3.0-rc' into developer 2017-08-18 16:13:51 +02:00
4b6144c489 updated server binaries 2017-08-18 16:13:33 +02:00
4838d6c037 updated server binaries 2017-08-18 16:13:09 +02:00
ec4be4f2c0 bugfix: framesl was not conected, exptime default time is 10 us 2017-08-18 16:11:49 +02:00
e93f53f459 changes for min fifo level 2017-08-18 15:59:18 +02:00
efad86335f made fifo bound volatile 2017-08-18 15:29:15 +02:00
70c2165df4 check of fifo level before trying to push in successfully 2017-08-18 15:21:30 +02:00
c1ea73d21c some changes for release txt 2017-08-18 14:03:11 +02:00
181616fb67 Merge branch '3.0-rc' into developer 2017-08-17 17:24:30 +02:00
ed8e41a02c Merge branch '3.0-rc' into developer 2017-08-17 17:24:30 +02:00
37f881017a updating command line docu. 2017-08-17 17:24:20 +02:00
cda7814c21 timing put for delay and period 2017-08-17 17:23:13 +02:00
c87cb5d051 Merge branch '3.0-rc' into developer 2017-08-17 17:16:59 +02:00
70a55428bc removed 2 files in doxygen always generated 2017-08-17 17:16:41 +02:00
8c0b4ac216 Merge branch '3.0-rc' into developer 2017-08-17 17:13:40 +02:00
60292ca0f8 added to .gitignore 2017-08-17 17:13:30 +02:00
fecac2c4d2 Merge branch '3.0-rc' into developer 2017-08-17 17:10:52 +02:00
9167d113dc command line doc. done 2017-08-17 17:10:32 +02:00
04ebc85fcc command line doc. done 2017-08-17 17:09:59 +02:00
de5986e5dd Merge branch '3.0-rc' into developer 2017-08-17 17:09:05 +02:00
7cfc6a9fd9 Merge branch '3.0-rc' into developer 2017-08-17 17:09:04 +02:00
e0c29190a2 command line doc. done 2017-08-17 17:08:55 +02:00
ff7b6c5abe Merge branch '3.0-rc' of git.psi.ch:sls_detectors_software/sls_detector_software into 3.0-rc 2017-08-17 17:04:57 +02:00
269227b093 Merge branch '3.0-rc' into developer 2017-08-17 17:04:30 +02:00
355c0a8c11 command line docu. more coming up 2017-08-17 17:04:29 +02:00
be95de0963 Merge branch '3.0-rc' of git.psi.ch:sls_detectors_software/sls_detector_software into 3.0-rc 2017-08-17 17:04:27 +02:00
0dd6567ce4 changed some sections in the documentation 2017-08-17 17:04:07 +02:00
638a69ad23 Merge branch '3.0-rc' into developer 2017-08-17 17:02:43 +02:00
7115ac19b6 command line docu. more coming up 2017-08-17 17:02:42 +02:00
b20f994ac4 Merge branch '3.0-rc' into developer 2017-08-17 16:59:08 +02:00
4adf3e9385 command line docu. more coming up 2017-08-17 16:59:07 +02:00
ae13fbce72 changed some sections in the documentation 2017-08-17 16:57:06 +02:00
68840b4544 Merge branch '3.0-rc' into developer 2017-08-17 16:50:18 +02:00
e2af1de83f Merge branch '3.0-rc' of git.psi.ch:sls_detectors_software/sls_detectors_package into 3.0-rc 2017-08-17 16:49:54 +02:00
7156d2e7b3 updated client docu. more coming up 2017-08-17 16:49:48 +02:00
e2d451a400 Merge branch '3.0-rc' into developer 2017-08-17 16:46:49 +02:00
3189bd5359 command line docu. more coming up 2017-08-17 16:46:48 +02:00
c3fce9822f Merge branch '3.0-rc' into developer 2017-08-17 16:40:35 +02:00
ca02a8fd72 manual 2017-08-17 16:39:48 +02:00
3c3a5062bd Merge branch '3.0-rc' into developer 2017-08-17 16:25:05 +02:00
edfa8493d8 command line docu. more coming up 2017-08-17 16:25:04 +02:00
52223e61d4 Merge branch '3.0-rc' into developer 2017-08-17 16:25:02 +02:00
827ce17fac command line docu. more coming up 2017-08-17 16:25:01 +02:00
96700d42b4 Merge branch '3.0-rc' into developer 2017-08-17 14:34:24 +02:00
56e61de863 command line docu. more coming up 2017-08-17 14:34:09 +02:00
2932a954ab Merge branch '3.0-rc' into developer 2017-08-17 14:32:46 +02:00
de7bb0b979 command line docu. more coming up 2017-08-17 14:32:45 +02:00
6ef4aa9715 Merge branch '3.0-rc' into developer 2017-08-17 14:32:44 +02:00
e333eb15cd command line docu. more coming up 2017-08-17 14:32:43 +02:00
80c8ff9f20 Merge branch '3.0-rc' into developer 2017-08-17 14:17:16 +02:00
3da71c9274 command line docu. more coming up 2017-08-17 14:17:10 +02:00
3a887eb604 Merge branch '3.0-rc' into developer 2017-08-17 14:17:05 +02:00
c6549694a8 command line docu. more coming up 2017-08-17 14:16:54 +02:00
b9cd0054a9 Merge branch '3.0-rc' into developer 2017-08-17 13:56:09 +02:00
cf5137723d command line docu update. more coming 2017-08-17 13:56:00 +02:00
945a7ed10f Merge branch '3.0-rc' into developer 2017-08-17 13:55:52 +02:00
5ef0012518 command line docu update. more coming 2017-08-17 13:55:44 +02:00
94e3874545 docu for bug fix eiger serbver 2017-08-17 12:07:57 +02:00
722fb58010 bugfix:trimval gave first pixel value and not -1 if all are different 2017-08-17 12:04:54 +02:00
d63933b2de fixed 9m hv 2017-08-17 11:09:26 +02:00
c6c0819a5e Merge branch '3.0-rc' into developer 2017-08-16 19:06:24 +02:00
45681f86ce update client command doc 2017-08-16 19:06:17 +02:00
50c5c12523 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detectors_package into developer 2017-08-16 19:05:42 +02:00
4f773120b2 Merge branch '3.0-rc' into developer 2017-08-16 19:05:36 +02:00
4ffefc99a2 Merge branch '3.0-rc' into developer 2017-08-16 19:05:28 +02:00
16fc44b3ab update client command doc 2017-08-16 19:05:17 +02:00
e8cfadaae3 Merge branch '3.0-rc' into developer 2017-08-16 18:46:19 +02:00
ac6720e27d appears double in the intro list 2017-08-16 18:46:10 +02:00
65c76e10be Merge branch '3.0-rc' into developer 2017-08-16 18:37:30 +02:00
ae7255953d compile error bug fix 2017-08-16 18:37:10 +02:00
0bbee8d91e Merge branch '3.0-rc' into developer 2017-08-16 18:21:01 +02:00
24d6d2c24a Merge branch '3.0-rc' of git.psi.ch:sls_detectors_software/sls_detectors_package into 3.0-rc 2017-08-16 18:18:48 +02:00
28e9605ab7 eiger documentation 2017-08-16 18:18:31 +02:00
6b28201f72 comments merged 2017-08-16 17:50:46 +02:00
ae49c04dcd added documentation to slsDetectorCommand.cpp 2017-08-16 17:29:04 +02:00
87abe15227 Merge branch '3.0-rc' into developer 2017-08-16 17:28:09 +02:00
5f90db723c increased default fifo depth for gotthard 2017-08-16 17:27:31 +02:00
2ab90ae2ed Merge branch 'faststreamer' into 3.0-rc 2017-08-16 17:25:25 +02:00
4b7970c191 Merge branch '3.0-rc' of git.psi.ch:sls_detectors_software/sls_detectors_package into 3.0-rc 2017-08-16 17:23:50 +02:00
3cf092d058 updating cmd line help 2017-08-16 17:23:37 +02:00
0be51b69fb Merge branch '3.0-rc' into developer 2017-08-16 17:12:40 +02:00
57537a350f updating cmd line help; other detectors other than eiger will complain cannot set timer 14 (subexptime) when setting receiver 2017-08-16 17:12:23 +02:00
2b030abf0d sync eiger manual 2017-08-16 16:32:53 +02:00
e8217b0867 do not complain when setting timers 2017-08-16 16:26:57 +02:00
83bb7c99ea removed gotthard server binary..was for developer branch 2017-08-16 16:05:53 +02:00
24d0d776b7 new gotthard server binary 2017-08-16 16:04:47 +02:00
f4b01bc18b rst to sw1 for all 2017-08-16 16:03:57 +02:00
509d81ba7d Merge branch '3.0-rc' into developer 2017-08-16 11:50:26 +02:00
eaed8bab08 Merge branch '3.0-rc' into developer 2017-08-16 11:50:13 +02:00
3c59b3b8dd updated command line doc 2017-08-16 11:50:01 +02:00
2935722b98 updated command line doc 2017-08-16 11:49:55 +02:00
af5f61bd95 updated command line doc 2017-08-16 11:13:40 +02:00
8bc039c95f updated command line doc 2017-08-16 11:13:32 +02:00
b0b3701fcf moved the output dir of slsdetectorClientDocs 2017-08-16 11:11:26 +02:00
c489aeb9dc moved the output dir of slsdetectorClientDocs 2017-08-16 11:11:13 +02:00
db983c5439 moved the output dir of slsdetectorClientDocs 2017-08-16 11:10:56 +02:00
ca6fff9648 Merge branch '3.0-rc' into developer 2017-08-16 11:04:28 +02:00
5de120f7e7 more changes to client docu. more coming up. removed slsDetectorClientDocs from here 2017-08-16 11:03:22 +02:00
c21f7f371a more changes to client docu. more coming up 2017-08-16 10:42:27 +02:00
03cc80dc3c more changes to client docu. more coming up 2017-08-16 10:36:25 +02:00
413a944e70 fixed problem with datastream help 2017-08-16 10:11:39 +02:00
25ece55d7f more changes to client docu. more coming up 2017-08-16 10:09:27 +02:00
ca865a6636 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-08-16 09:27:48 +02:00
4d493504e3 Merge branch '3.0-rc' into developer 2017-08-15 18:42:51 +02:00
bb917b70f3 more changes to client docu. more coming up 2017-08-15 18:42:41 +02:00
c0d0ebb104 Merge branch '3.0-rc' into developer 2017-08-15 18:31:12 +02:00
f8060ef757 more changes to client docu. more coming up 2017-08-15 18:29:07 +02:00
193139f06f Merge branch '3.0-rc' into developer 2017-08-15 18:08:01 +02:00
f92a6e58d3 Merge branch '3.0-rc' into developer 2017-08-15 18:07:17 +02:00
8e1a841b42 in between command line documentation 2017-08-15 18:06:45 +02:00
6a2c0ac86d added command line documentation in release.txt 2017-08-15 18:06:20 +02:00
9bb8a94c55 updated README 2017-08-15 14:14:47 +02:00
f8bb6a04a9 so that the first image shows 2017-08-15 14:10:43 +02:00
1e7932f09c switched back to 200ms 2017-08-15 14:00:34 +02:00
02b6228856 updated eiger server 2017-08-15 13:59:03 +02:00
bcf5e1fc0b updated server binary 2017-08-14 15:07:36 +02:00
3fb92aa9dd changes done 2017-08-14 13:33:24 +02:00
77d688e508 changes done 2017-08-14 13:33:11 +02:00
1ec3a69e29 print memory allocated properly 2017-08-14 10:49:08 +02:00
3aeb15648c Anna's modifications 2017-08-11 15:55:07 +02:00
52e1bd32b9 Anna's modifications 2017-08-11 15:52:08 +02:00
aca3b4ca1b Merge branch '3.0-rc' into developer 2017-08-10 19:09:58 +02:00
0c6fcc1186 cannot put for get busy 2017-08-10 19:09:46 +02:00
92ae104f39 Merge branch '3.0-rc' into developer 2017-08-10 18:46:42 +02:00
ae6884949b Merge branch '3.0-rc' into developer 2017-08-10 18:46:42 +02:00
1a313e4d5d moved receiver start to status start and to startandreadall (acquire), parallelized status start, moved prepare and clean up to multi level and called by start and stop receiver for gotthard, moench and propix 2017-08-10 18:46:21 +02:00
e8d83a085f moved receiver start to status start and to startandreadall (acquire), parallelized status start, moved prepare and clean up to multi level and called by start and stop receiver for gotthard, moench and propix 2017-08-10 18:46:10 +02:00
c724756b5f included subexptime in metadata for hdf5 2017-08-10 17:33:32 +02:00
ad3e3ce255 sending and writing subexptime in the receiver files, adding 0x in front of all numbers printed in command line which is hexa 2017-08-10 17:25:28 +02:00
f084efd263 sending and writing subexptime in the receiver files, adding 0x in front of all numbers printed in command line which is hexa 2017-08-10 17:25:18 +02:00
af079f3168 posisibility to read adnd write registers in the front end board for eiger 2017-08-10 14:49:02 +02:00
11943c4b5c merge insignificant conflicts 2017-08-10 11:19:36 +02:00
389f356a3a high voltage reflects the master only, if 2 masters reflects -1 2017-08-10 11:09:44 +02:00
0219d09067 sub frame number for eiger in master ascii file, instead of exposure length 2017-08-10 11:07:56 +02:00
df11f41416 reworked version 2017-08-10 10:04:00 +02:00
97330b65ca to handle frame number 0s from firmware 2017-08-09 18:47:55 +02:00
eed951016b frame number 0 from firmware in eiger is dealt with 2017-08-09 18:13:23 +02:00
39847c5db6 esrf bug, shut down socket, but being processed and object deleted, fixed 2017-08-09 17:25:23 +02:00
12592c1206 updaterev 2017-08-09 17:24:43 +02:00
cb90c3722d esrf bug, shut down socket, but being processed and object deleted, fixed 2017-08-09 17:24:34 +02:00
851914f0ae manuals 2017-08-08 20:04:28 +02:00
e85973ec8b manuals 2017-08-08 19:48:32 +02:00
7a30ab25bd Merge branch '3.0-rc' into developer 2017-08-08 19:16:10 +02:00
5a45f15c7f fixed the frameindex bug (always 0) 2017-08-08 19:15:57 +02:00
558e5e2e9a added busy command, converted get frames etc to an integer output 2017-08-08 19:15:20 +02:00
82d21b6971 changes to release.txt to include busy command and the frameindex bugfix 2017-08-08 19:13:22 +02:00
ccc60dacf4 updated release.txt and the cmk.sh help script 2017-08-08 16:24:33 +02:00
517dfdf523 Merge branch '3.0-rc' into developer 2017-08-08 14:59:07 +02:00
43ba40ec4c updaterev 2017-08-08 14:51:47 +02:00
557d190236 changes for rest implementation 2017-08-08 14:51:32 +02:00
5c6a99afca changes for rest implementation 2017-08-08 14:51:00 +02:00
c98c5e469b added warning in makefile 2017-08-08 07:06:43 +02:00
d827ccc115 backported changes implemented in 2.3.2.rest 2017-08-08 06:55:52 +02:00
a40d18f8b2 last packet even if many padded packets in between should be written (from carryoverflag) 2017-08-07 19:58:48 +02:00
0cd18a3b7a more comments 2017-08-07 10:39:29 +02:00
ebe01104e7 Merge branch '3.0-rc' of git.psi.ch:sls_detectors_software/sls_detectors_package into 3.0-rc 2017-08-07 10:31:17 +02:00
6b8b6b4b3d no need of quotes for gitall.sh 2017-08-07 10:31:11 +02:00
31026576f4 delete cache before (re-)running cmake 2017-08-07 09:54:03 +02:00
2c58bc6a5c included numbe of compiler threads 2017-08-04 19:12:44 +02:00
3ed2bcf3fa added cmk.sh to build cmake files and compile 2017-08-04 18:54:22 +02:00
8f1e8b1196 cmake withotu hdf5 2017-08-04 15:40:44 +02:00
c0d6958e37 no changE 2017-08-04 15:40:21 +02:00
d2d2959237 Merge branch '3.0-rc' into developer 2017-08-04 14:21:31 +02:00
c31ee2d76f allowing -1 in gui for spinbox 2017-08-04 14:20:51 +02:00
dc318d3f47 updaterev 2017-08-04 14:20:33 +02:00
429bf7f13d updaterev 2017-08-04 14:20:21 +02:00
96ce9ed7c1 if timer gives -1 in multi, it should not multiply answer with 1e-9 to get in seconds in slsdetectorocmmand 2017-08-04 14:09:56 +02:00
41288302f4 fixed resolution for exptime, period and delay in server 2017-08-04 14:01:17 +02:00
039092f292 bug fix: changes for the multipurpose reg in configuremac 2017-08-04 11:21:32 +02:00
fbee70818a 25 um server using a config.txt file 2017-08-03 14:16:18 +02:00
5027f66d77 changed usleep 2017-07-28 12:20:54 +02:00
f5773de068 changes for single images with index 0 not realized as caught and therefore no virtual file created, fixed 2017-07-28 12:16:07 +02:00
88b6fabb0d bug did not give error when switching to hdf5 2017-07-28 11:54:22 +02:00
37dd32f1b0 version 2017-07-28 11:30:21 +02:00
5713cd6092 addin usleep to reduce cpu 2017-07-28 11:28:03 +02:00
3174bd1c85 addin usleep to reduce cpu 2017-07-28 11:27:35 +02:00
eb4da5ff0c removed print of elapsed time 2017-07-28 10:19:33 +02:00
98d5758ba1 Merge branch 'developer' into 3.0-rc 2017-07-27 14:40:50 +02:00
c49c07b34a Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detectors_package into developer 2017-07-27 14:40:25 +02:00
058fcd8aba Merge branch 'cmakefix' into developer 2017-07-27 14:40:17 +02:00
699cce713b Merge branch 'cmakefix' into 3.0-rc 2017-07-27 14:40:01 +02:00
a88aa53d82 comment to compile statically 2017-07-27 14:39:00 +02:00
7fa13a5d5d compatible with cmake 2.8.8 2017-07-27 14:28:14 +02:00
56b420d68b manual 2017-07-27 14:20:46 +02:00
efd49ae92a removing individual hdf5 path from cmakelists 2017-07-27 13:55:23 +02:00
71204172df simplify hdf5 linking 2017-07-27 12:51:10 +02:00
6cb387e3a8 tab->space reformat 2017-07-27 12:45:27 +02:00
05b32ce26c find hdf5 cxx component 2017-07-27 12:44:21 +02:00
b920e52218 default no for hdf5 and rest 2017-07-27 12:31:12 +02:00
f07816a0d1 hdf5 works now, but needs fixes 2017-07-27 12:08:51 +02:00
c7d4582efa versioning 2017-07-27 12:08:28 +02:00
77dc4d3d77 solved some warnings 2017-07-27 12:08:12 +02:00
1d073b6897 sort of works, but needs simpler fix 2017-07-27 12:07:44 +02:00
56aaaf2e07 changes for the cmake 2017-07-27 10:18:07 +02:00
e360077e09 changes for the cmake 2017-07-27 10:17:55 +02:00
0fcf768772 basename for hdf5 fixes 2017-07-27 09:31:14 +02:00
a5f3de61a9 should be able to compile in pcmoench as l_msdetect 2017-07-26 15:09:29 +02:00
915fd41bf6 should be able to compile in pcmoench as l_msdetect 2017-07-26 15:09:24 +02:00
497f5289e6 new eiger server in serverbins 2017-07-26 11:37:23 +02:00
8a8e76e839 added usleep to remove the 100%cpu, removed a insignificant printout 2017-07-26 11:36:31 +02:00
086beea501 nothing really 2017-07-26 11:35:56 +02:00
1a522c6696 removed ui include files as they are generated anyway for every make 2017-07-26 11:14:17 +02:00
91f8987b6c removed ui include files as they are generated anyway for every make 2017-07-26 11:12:56 +02:00
5771a3c722 includes in gui 2017-07-25 13:56:27 +02:00
9d8faae375 fixed front end board temp 2017-07-25 13:55:27 +02:00
2ddf4117d0 from package to compile receiver library as well 2017-07-25 12:25:24 +02:00
68cbb63355 adding the form include files back into git 2017-07-25 12:15:58 +02:00
7df21e1790 updated server bins 2017-07-13 14:45:10 +02:00
c25239a398 updaterev 2017-07-13 14:44:52 +02:00
04165a9da8 rest implementation, index issues 2017-07-13 14:44:34 +02:00
0bacb903ea rest implementation, index issues 2017-07-13 14:44:03 +02:00
a1fd34ebb6 for users ensured proper destructors, and ctrl c should kill it 2017-07-13 12:18:45 +02:00
126ad92ed8 can set zmqport from receiver 2017-07-13 12:18:19 +02:00
e3667f6827 can set zmqport from receiver 2017-07-13 12:18:07 +02:00
39560969f4 can set zmqport from receiver, ensured proper destructors, and ctrl c should kill it 2017-07-13 12:17:49 +02:00
f1a77c4146 resolved issue with source not being looked at for compiling 2017-07-11 13:27:27 +02:00
68b1959a85 excluding detector server directories in makefile 2017-07-11 11:16:37 +02:00
931a5840e8 changes to gotthard server to include write adc, and also changes to fix the dma=dma+1 2017-07-11 10:54:21 +02:00
f430152f61 moved common git evaluation variables to the common folder 2017-07-10 11:22:56 +02:00
e0b886e2cc moved the versioning files back to include 2017-07-10 11:22:32 +02:00
ef9fd77850 some more changes to make file for automatic versioning, but changes to cpp file does not affect make, need to include that 2017-07-10 11:20:50 +02:00
672c42a20e some more changes to make file for automatic versioning 2017-07-10 11:20:26 +02:00
dbce25fdea some more changes to make file for automatic versioning 2017-07-10 11:20:15 +02:00
a583f3d6e2 some more changes to make file for automatic versioning 2017-07-10 11:18:41 +02:00
cf0ef68cda fixed adc and num dacs for jungfrau in gui 2017-07-06 18:34:00 +02:00
be6925c504 fixed temperature for jungfrau in server, also for negative values 2017-07-06 16:07:01 +02:00
14bba171e7 conflict gitversion 2017-07-03 17:45:06 +02:00
1e50bc4cc0 conflict git 2017-07-03 17:44:52 +02:00
374b07a126 merge developer 2017-07-03 17:42:06 +02:00
460a44a9b1 made updatereceiver to actually update client in parameters that it can 2017-07-03 17:37:31 +02:00
f944d7cae4 made updatereceiver to actually update client in parameters that it can 2017-07-03 17:37:24 +02:00
b4309a9f60 changed jungfrau temperature conversion but binary to follow 2017-07-03 14:45:44 +02:00
539ab79e99 changed jungfrau temperature conversion 2017-07-03 14:45:29 +02:00
99dad79572 Somewhere 2017-07-03 13:46:06 +02:00
26f9b1ccbd Somewhere 2017-07-03 13:45:45 +02:00
da4ffb235c ensuring set detector type is the first call 2017-07-03 13:32:10 +02:00
b03e35a8d6 sorted receiver client interface, more consistent 2017-07-03 13:31:17 +02:00
f8c04a6a51 sorted the receiver client interface, more manageable 2017-06-30 18:17:33 +02:00
7033d43e61 changed makefile to find libraries 2017-06-30 12:21:48 +02:00
bd9f19f6c7 changed the makefile a bit to find libraries 2017-06-30 12:20:42 +02:00
a4c07ba9a0 added black background for reciever to see gray font better 2017-06-30 12:19:27 +02:00
4b9a8c1dad makefiles and versioning update complete 2017-06-29 17:10:28 +02:00
b05e9c194a makefiles and versioning update complete 2017-06-29 17:10:10 +02:00
c01931e5a6 makefiles and versioning update complete 2017-06-29 17:09:46 +02:00
7afbd8f0f0 makefiles and versioning update complete 2017-06-29 17:09:34 +02:00
b6eb4cbb61 testing changes 2017-06-29 10:18:51 +02:00
21e1fcf693 trying with gui makefile changes 2017-06-29 09:27:26 +02:00
cfff7969e3 changes for Makefile dependencies 2017-06-28 18:52:43 +02:00
6bfbb075c8 ensuring fiel permissions 2017-06-28 18:18:30 +02:00
1a74ceca3e ensuring file permissions 2017-06-28 18:16:55 +02:00
7990dd6f77 fixed makefile and included correct versioning while compiling 2017-06-28 18:13:47 +02:00
f4857355b6 fixed new header for eiger 2017-06-28 16:53:01 +02:00
81d68bebc6 Merge branch 'developer' into eigerheaderchange 2017-06-28 11:30:46 +02:00
8992d51787 correct binary jungfrau 2017-06-28 11:26:35 +02:00
e79827384a included update git versionign in each server, removing the main one 2017-06-28 11:24:30 +02:00
4905f49108 added updateversion into makefile while compiling 2017-06-28 11:23:19 +02:00
073d30bf61 added updateversion into makefile while compiling 2017-06-28 11:21:10 +02:00
3515951bb8 added updateversion into makefile while compiling 2017-06-28 11:18:55 +02:00
fde7ddf832 added updateversion into makefile while compiling 2017-06-28 11:00:21 +02:00
7a8d0b8dad added updateversion into makefile while compiling 2017-06-28 10:57:39 +02:00
56645a48af added updateversion into makefile while compiling 2017-06-28 10:54:27 +02:00
a7d3006cda added updateversion into makefile while compiling 2017-06-28 10:48:03 +02:00
c2624daa9a uncommented a print 2017-06-28 10:27:40 +02:00
2126e2a723 added updategit 2017-06-28 10:24:49 +02:00
c2980b3c44 changes for setting threshold without trimbits for eiger 2017-06-28 10:24:07 +02:00
ca358e4d17 changes to the eiger and jungfrau server regarding getnumberofchans etc a typo bug resulting in could not allocate 2017-06-27 17:46:32 +02:00
22796d0d27 updaterev 2017-06-27 17:43:19 +02:00
e6f1a90ed7 changes 2017-06-27 14:57:43 +02:00
0b6aeac364 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-06-27 10:40:19 +02:00
5dd2f273fc eigerserver changes, need to include martins changes 2017-06-27 10:22:55 +02:00
ffd3cb6511 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-06-26 13:03:08 +02:00
dfb8a1f7ad small modifications for jctb and moench03 module 2017-06-26 13:03:01 +02:00
1ed4407c11 parallelizing adcs and dacs 2017-06-23 17:26:46 +02:00
f7e4dbc99e getadc must specify -1 for imod, as imod in multi might be default 0 2017-06-23 17:26:33 +02:00
57ae305c7d parallelized enabledatastreaming 2017-06-22 16:59:41 +02:00
5d75d8371b unnecessary printout 2017-06-22 16:59:18 +02:00
bbbd4731d7 ensuring acquire, p receiver start and the gui enables and disables data streaming accordingly. those with api will have to know what they want before acquiring 2017-06-22 16:44:29 +02:00
df01ca7e4b ensuring acquire, p receiver start and the gui enables and disables data streaming accordingly. those with api will have to know what they want before acquiring 2017-06-22 16:44:13 +02:00
931e750d65 fixed gui starting up without the config file 2017-06-22 15:26:00 +02:00
697fc5b85e updaterev 2017-06-22 14:36:22 +02:00
cd86c708dc updaterev 2017-06-22 14:36:02 +02:00
cffdf7fede updaterev 2017-06-22 14:33:24 +02:00
c05b89a77d updating exe 2017-06-22 14:32:52 +02:00
f66950d312 fixed the 9m master server having to be rebooted for hv to work 2017-06-22 14:32:24 +02:00
98cb8de478 when using userReceiver with many instances of the receiver in one program, the index will keep increasing, hence need to adjust zmq port and det index in file name 2017-06-22 12:27:17 +02:00
1dc774d229 comments 2017-06-21 17:08:47 +02:00
1c7ff1dd8c adding printouts , resetting an image size for each listen image, if last image is not complete, it should be checked with rc==0 and not if itis transmitting, else it doesnt send last incomplete image 2017-06-21 17:07:45 +02:00
fe73e09aa4 removing unnecessary printouts, ensuring lost packets are 0xff 2017-06-21 17:05:47 +02:00
b2caec384f removing receiver print config from gui 2017-06-21 17:03:41 +02:00
1c221d5844 insignificant uncommented gui in makefile 2017-06-20 12:47:25 +02:00
8b3864969c updated server exe 2017-06-20 12:45:13 +02:00
cbd1570a8c fixed gui getting stuck (wrong datathreadmask more than 64 bits cuz of 72 sockets), gotthard detector receiver updated 2017-06-20 12:43:28 +02:00
df71899244 fixed gui getting stuck (wrong datathreadmask more than 64 bits cuz of 72 sockets), gotthard detector server udpated 2017-06-20 12:40:28 +02:00
48f853aa1a fixed gui getting stuck (wrong datathreadmask more than 64 bits cuz of 72 sockets) 2017-06-20 12:38:59 +02:00
e2e25f6e62 changed API for setting network parameter to remove memory leak, fixed lock issues in streaming print outs to gui, deleted return from threadpool in the right place 2017-06-19 14:29:45 +02:00
68bbea17d1 removed fifo buffer size print out (fifo buffer size removed earlier) 2017-06-19 14:20:17 +02:00
2ec1e08081 changed API for setting network parameter to remove memory leak, fixed lock issues in streaming print outs to gui 2017-06-19 14:19:30 +02:00
3007694b77 bug (from eiger_newheader) with imagesize of fifo different from actual image size 2017-06-16 13:53:27 +02:00
c2af014dad new server 2017-06-14 12:07:58 +02:00
a46a8cc686 updaterev 2017-06-14 11:41:11 +02:00
9ab2c1eb1f new server 2017-06-14 11:40:35 +02:00
84d07a3e0c updaterev 2017-06-14 11:39:07 +02:00
8d6ceccf87 updaterev 2017-06-14 11:38:28 +02:00
5176ad521f merged with annas, removed a <<< head merge conflict 2017-06-14 11:36:44 +02:00
feb1ef4ea5 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-06-14 11:28:24 +02:00
00e742e0e0 took out also the ADC and serialspi 2017-06-14 11:28:16 +02:00
a95dbd2215 made some functions common 2017-06-14 10:43:15 +02:00
cbbdd8eeab Merged to developer 2017-06-13 15:30:33 +02:00
8caab4e562 Modicfications for chiptestboard and moench03 module 2017-06-13 15:28:45 +02:00
1537bb3298 more detail in printf 2017-06-13 12:59:26 +02:00
cb7b8713cf fixed the precision problem in converting double to long long int (0.0000325 *1E9), cant find another example 2017-06-13 12:58:56 +02:00
3d8903b2da updaterev 2017-06-12 18:54:58 +02:00
7f01ccc83f updaterev 2017-06-12 18:53:42 +02:00
e1eba8dec3 new servers 2017-06-12 18:53:18 +02:00
3fbbeea434 update rev 2017-06-12 18:51:52 +02:00
47e5504203 updaterev 2017-06-12 18:50:55 +02:00
d41abc2b1c added new jungfraustructure, wiht common detector tcp interface 2017-06-12 18:50:18 +02:00
b46da37932 new server for change in cleanup of servers 2017-06-12 18:39:06 +02:00
d862f10d5c Merge branch 'developer' into jungfrau_cleanup 2017-06-12 18:30:56 +02:00
74ca3fcc9a jungfrau server works 2017-06-12 18:27:59 +02:00
73c97f1381 solved many bugs, but cannot get data in eiger 2017-06-09 16:05:40 +02:00
f516d24089 solved many bugs, but cannot get data in eiger 2017-06-09 16:05:22 +02:00
132a9bbfe9 solved many bugs, but cannot get data in eiger 2017-06-09 16:02:58 +02:00
e10bf9d897 done, but need to compile 2017-06-09 11:42:32 +02:00
c755a8974c done, but need to compile 2017-06-09 11:42:25 +02:00
0254ff0281 cleaning up of servers 2017-06-02 19:29:34 +02:00
2465eafff0 somewhere in between 2017-05-30 19:00:11 +02:00
5481e19709 manual 2017-05-30 16:40:47 +02:00
5dbfbdb82b improved readNextFrame for moench 10G streaming; implemented many photons finder 2017-05-30 12:21:48 +02:00
f74710998d mannnnyyyy changes to jungfrau serverin structure, also to eiger structure a bit 2017-05-26 18:14:44 +02:00
db75f1c81e manual, rate corr 2017-05-26 17:47:08 +02:00
046ac97a9b now need to move it to a new server 2017-05-24 17:42:33 +02:00
b8f0dd5f38 cleaned most of it, just need confirmation from carlos 2017-05-24 17:33:03 +02:00
0ea61a1e3f somewhere 2017-05-24 11:05:37 +02:00
c012f2cda3 change for eiger 10g to work 2017-05-23 10:09:35 +02:00
978af1009e somewhere in between cleaning up 2017-05-22 14:53:15 +02:00
39a985cbba modifying registers_m.h wrt Carlos firmware document, modified detector initialization in firmware_funcs.c and related files 2017-05-19 18:27:11 +02:00
06d60c981d memset of the entire memory in the beginning, cuz mpc2012 shows leak at runtime 2017-05-19 13:45:15 +02:00
0e2d0f07e8 getting hostname from ip (for all, cuz hostname can have dots too 2017-05-19 10:21:33 +02:00
e8e9e12302 changes to header old and new, still memory leak for jungfrau 2017-05-19 10:16:16 +02:00
781fea0a96 fifo fill level included 2017-05-18 16:01:35 +02:00
4aa73c607f print loss 2017-05-18 13:59:40 +02:00
a276b6b7f5 fixed bug rx_hostname being hostname or ip in zmqsockt, and num packets correctly reflects num good frames 2017-05-18 10:53:29 +02:00
ea875a14f9 fixed bug when rx_hostname was an ip and using zmqsocket 2017-05-17 15:58:12 +02:00
cb008bb700 removed unnecessary functions in listener and dataprocessor and ensure processedin measurement is not same saas processed frames in acqustion 2017-05-17 15:37:51 +02:00
4633c142a8 hdf5 by default disabled in makefile 2017-05-16 14:49:37 +02:00
001d6415bf removing thread prioritization for writer, streamer and tcp threads 2017-05-16 14:45:48 +02:00
a182ca3660 jungfrau end column fixed 2017-05-16 11:18:36 +02:00
bd363b2c93 jungfrau finally works with new header 2017-05-15 17:02:37 +02:00
205a3780d5 changes for jungfrau new header 2017-05-15 15:00:04 +02:00
5e82b50a00 to not include hdf5 if no is given in Makefile.include 2017-05-12 15:29:34 +02:00
476f3162af including hardcoded xcord from software 2017-05-12 14:50:20 +02:00
b7291dffb9 hdf5 basic works 2017-05-12 14:33:01 +02:00
15424149cd removed leak from postprocessing, moved delete task to earlier in threadpool and deleting threadpool 2017-05-12 10:32:16 +02:00
f53770a2fc some changes to remove possible warnings 2017-05-11 14:41:07 +02:00
0e9cf558b4 Modified JUNGFRAU_MODULE_ID to match the detector type definition that is tx. with the new header. 2017-05-10 16:47:10 +02:00
95bf19a417 deleting socket and insignificant changes 2017-05-08 15:08:59 +02:00
8471765e30 insignificant 2017-05-08 14:48:29 +02:00
6d7fb07a4c fixing the standard header pointers for it to work 2017-05-08 12:33:31 +02:00
1e8c7bd637 not necessary to check file name 2017-05-08 12:33:00 +02:00
a1fc93b398 changes including warnings and zmq 2017-05-04 17:52:58 +02:00
0722ef3125 changes including warnings and zmq 2017-05-04 17:52:47 +02:00
49b4ae2f56 changed zmq method, and resolved warnings and from esrf 2017-05-03 17:57:56 +02:00
e2d1d58acf Alejandro changes from ESRF 2017-05-02 08:36:36 +02:00
44339d3b89 c_Str() not access global variables from thread 2017-05-02 08:25:45 +02:00
404bb4a653 changed -lpthread to -pthread 2017-05-02 08:15:11 +02:00
066550d38c zmq changes for no dummy data end 2017-05-01 14:02:13 +02:00
020eaded36 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-05-01 13:11:16 +02:00
445da80df8 resolved warnings, also from esrf: todo: include changes in zmq 2017-05-01 13:11:10 +02:00
f937b8ca5d Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-05-01 12:21:07 +02:00
7901b6f463 Modified "calcChecksum" function in jungfrauDetectorServer/firmware_funcs.c to compute properly the new IP header checksum for a new application header of 48 bytes. 2017-05-01 12:14:06 +02:00
e9f6dcf479 strtok is not thread safe..used to set receiver udp ip etc to detector, fixed 2017-05-01 10:24:16 +02:00
264485c8ff changed all -lpthread to -pthread 2017-05-01 09:53:37 +02:00
3525bb3f9f changed all -lpthread to -pthread 2017-05-01 09:44:33 +02:00
78d1504d66 changed all -lpthread to -pthread 2017-05-01 09:39:19 +02:00
c6cb499758 added the jungfrau binary 2017-04-28 13:41:08 +02:00
bc57ea5725 added the binary 2017-04-28 11:31:12 +02:00
27f752ff9e removed wrong edits in merging (not reflected in git browser, weird); changing server names anyway 2017-04-28 11:30:09 +02:00
b401a6c33b in between stage 2017-04-04 11:20:38 +02:00
faefcc4799 Merge branch '2.3' into developer 2017-03-29 11:25:28 +02:00
671587c029 manual 2017-03-29 10:09:52 +02:00
fb0b0b96ec need to automize parameter passing 2017-03-24 16:58:17 +01:00
72d89fefc3 modified release 2017-03-24 16:58:00 +01:00
a11313fe96 removed copies 2017-03-24 15:15:30 +01:00
aba3a67b80 Merge branch '2.3' into developer 2017-03-24 14:20:38 +01:00
2bb8fa596a from the merge of 2.3 2017-03-24 12:22:49 +01:00
bb52676f50 merged from 2.3 without udpstandard 2017-03-24 10:34:31 +01:00
536f8937cb merging 2017-03-24 09:10:09 +01:00
e8b14f8c8a done 2017-03-24 08:26:10 +01:00
aca09bcd4e done 2017-03-24 08:25:50 +01:00
fdb4fa28db retrying 2017-03-24 08:22:50 +01:00
93362963e2 removed changes for test 2017-03-24 08:12:38 +01:00
33a7375c72 changes to test 2017-03-24 08:12:10 +01:00
97bad0fcb9 changes 2017-03-24 08:06:09 +01:00
059711af37 retrying a test 2017-03-24 07:59:36 +01:00
f0c5106764 trying a test 2017-03-24 07:59:14 +01:00
4182615aa9 trying a test 2017-03-24 07:58:27 +01:00
ff2c42e921 Merge branch '2.3' into developer 2017-03-23 15:38:48 +01:00
b9eb3d5a52 somewere stuck with virtual template overloading 2017-03-23 11:56:17 +01:00
78078f4ef3 esrf suggestion for volatile in multithread threadpool 2017-03-23 11:55:56 +01:00
ea66f2d12f manual 2017-03-20 14:51:18 +01:00
de16c2a7f1 manual 2017-03-20 12:42:28 +01:00
911ff49238 changes for merges from 2.3 incl standard packet header 2017-03-20 11:22:07 +01:00
6731c39ce2 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detectors_package into developer 2017-03-20 10:48:54 +01:00
81eade8ede Merge branch '2.3' into developer 2017-03-20 10:48:38 +01:00
4d5506a0a8 manual 2017-03-15 15:52:19 +01:00
cad8ffc0c6 resolved the recovering from receiver start error , but still does not acknowledge error in gui 2017-03-10 13:07:33 +01:00
8ebbfbb84b incl. prev commit: Included file overwrite, format and changed the functonality of filewrite enable and file path 2017-03-10 12:21:19 +01:00
2ef44ec70b somewhere 2017-03-10 10:51:47 +01:00
978b54dff9 somewhere 2017-03-10 10:51:37 +01:00
300b014f73 somewhere 2017-03-10 10:51:28 +01:00
1e94ec0c6a fixed short gotthard 2017-03-09 13:28:03 +01:00
86018684c9 made it work for gotthard 2017-03-09 11:40:48 +01:00
300bf85dae uncommented extra comments 2017-03-09 11:40:26 +01:00
0ff79b7d5a manual 2017-03-09 09:21:50 +01:00
0dccd78567 not yet gotthard 2017-03-08 14:37:00 +01:00
0e4c7a9494 adjusted for jungfrau 2017-03-07 14:59:38 +01:00
679e747b5c Merge branch '2.3-rc' into developer 2017-03-07 07:30:40 +01:00
daaf13d99c manual with new calibration scheme 2017-03-03 16:45:25 +01:00
50f8366bc2 small changes for jungfrau, but also for the gui 2017-03-03 15:57:48 +01:00
f3bf331b5f solved bug of decoding data with distorted image 2017-03-03 13:48:47 +01:00
73ec3903bf added data structures for mythen3.01 and adcsar2 for jctb 2017-03-03 13:10:14 +01:00
85cc0d8184 Merge branch 'developer' into hdf5 2017-03-03 10:09:44 +01:00
7e00d9f395 Merge branch 'developer' into hdf5 2017-03-03 10:06:34 +01:00
bd7f3567f8 Merge branch 'developer' into hdf5 2017-03-03 09:33:53 +01:00
bd0f72c60e removed std:: in front of round, else compile error 2017-03-03 09:12:19 +01:00
2505369c08 updaterev 2017-03-03 09:07:46 +01:00
ab4572f544 updaterev 2017-03-03 09:07:36 +01:00
80fb0a99a8 Merge branch '2.3-rc' into hdf5 2017-03-03 09:06:49 +01:00
bdff083402 Merge branch '2.3-rc' into hdf5 2017-03-03 09:05:40 +01:00
053e05628f callback 2017-03-03 08:50:55 +01:00
d8b0a13ee2 changed to have only one virtual file with bunch id, subfnum and data datasets all linked in master file 2017-03-03 08:39:53 +01:00
537260879a created virtual datasets for bunchid and subframenumber 2017-03-02 11:43:11 +01:00
a7309be567 created links to virtual files in master file 2017-03-01 08:44:43 +01:00
829ba49c1c moving subframenumber into a 32 bit number, also in stremer, changing json header to mention 4 bit and version number 2017-02-28 15:30:53 +01:00
fa6d18e9b2 moving subframenumber into a 32 bit number 2017-02-28 15:29:53 +01:00
fd42fad045 Added sebastians python script for interpolation - final debug version 2017-02-28 15:13:58 +01:00
447c5bb8fe gui works 2017-02-28 13:42:56 +01:00
2024eb5d6e gui works 2017-02-28 13:14:18 +01:00
cf8b53adff gui works 2017-02-28 13:14:06 +01:00
3aac30b8ee added zmqasocket 2017-02-27 16:06:58 +01:00
3b07afe3fc in the process of streamer 2017-02-27 15:38:46 +01:00
d90db50a60 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-02-23 12:05:55 +01:00
f12df80c5b some changes for chiptest board and mythen server now compiles 2017-02-23 12:05:34 +01:00
936dfea8a7 works so far, no gui yet 2017-02-22 12:01:00 +01:00
9e21583331 virtual, master all works, still to do rewriting file in an acquisition 2017-02-21 15:13:59 +01:00
19460a03f5 sending position id and num detectors in x and y dir 2017-02-21 15:13:27 +01:00
72c2fbee9c manual eiger 2017-02-21 09:20:16 +01:00
2cd38fefcd master hdf5 does not work, but so far good 2017-02-16 12:48:15 +01:00
549e346ad4 Merge branch '2.3-rc' into hdf5 2017-02-10 11:56:37 +01:00
54f92fb26c changed namings 2017-02-10 10:41:01 +01:00
b260d08225 somewhere 2017-02-10 10:08:00 +01:00
c89f6e649c fnum wrong, need to add file features 2017-02-07 08:52:27 +01:00
5287441a65 removed warning 2017-02-07 08:52:05 +01:00
9b3f4a3a66 commonFiles/error_defs.h 2017-02-03 14:34:05 +01:00
1decd2dd89 Merge branch '2.3-rc' into hdf5 2017-02-03 14:30:09 +01:00
d95aaa2089 somewhere in between.. next step include generalData pointer in listerner and dataprocessor calss in constructor and a setter 2017-01-31 08:42:16 +01:00
01d54a7a4c Complete rewrite of receiver, with new changes 2017-01-27 15:40:36 +01:00
70a7d83175 somewhere 2017-01-18 15:22:05 +01:00
f6927ad1bf in between 2017-01-17 10:56:01 +01:00
bd31ac1d52 changes to variable name 2017-01-17 10:55:43 +01:00
b16d087fd1 Merge branch '2.2-rc' into hdf5 2017-01-06 15:17:40 +01:00
3563f0deec Merge branch '2.2-rc' into developer 2017-01-06 15:17:14 +01:00
adb5ab5ed1 chunked upto 1000 and new dataset every 10000 2017-01-03 12:11:55 +01:00
abb5bfb6e4 creating new datasets every 10,000 images in same file 2017-01-03 08:57:59 +01:00
987aeda6fb sorted out problem with CPU read out 2016-12-22 17:24:53 +01:00
d847a289a4 changed progress prints, file naming etc 2016-12-21 10:53:56 +01:00
66c488b79a working so far 2016-12-20 14:13:00 +01:00
aa99d289c3 added library path in makefile.include so that you dont have to do ld_library_path 2016-12-19 18:04:59 +01:00
bb9208f8ee some changes to the group 2016-12-19 16:58:08 +01:00
3eea80a121 compiles after merging 2016-12-19 13:50:25 +01:00
68b13a0ecd merged to developer 2016-12-19 12:26:53 +01:00
12cd3d07a2 some changes for jctb 2016-12-19 12:05:59 +01:00
ebf44704b2 merged error defs 2016-12-19 11:39:14 +01:00
d555bc6e75 fixwed the printing of errors but not error message 2016-12-19 11:33:16 +01:00
b5f7dc29af Merge branch '2.2-rc' into hdf5 2016-12-16 15:00:22 +01:00
b403aa20a6 Merge branch '2.2-rc' into hdf5 2016-12-16 14:51:08 +01:00
33092b6d85 Merge branch '9m_rest' into developer 2016-12-15 14:34:05 +01:00
aaab8d697a Merge branch '9m_rest' into hdf5 2016-12-15 14:33:38 +01:00
8b8d8449f2 Merge branch 'developer' into hdf5 2016-12-15 14:05:29 +01:00
545c5530e3 added moenchT1 data structure 2016-12-15 13:58:55 +01:00
ae48a0e251 made some groups and force closing 2016-12-15 09:26:25 +01:00
62ba3838ef included c++ lib 2016-12-14 18:19:40 +01:00
cdcb413241 removed hdf5 c, only c++ 2016-12-14 18:19:29 +01:00
f8b34a16dd converted to c++ 2016-12-14 18:15:47 +01:00
a971d87008 Merge branch '2.2-rc' into hdf5 2016-12-13 13:23:06 +01:00
aba3319427 moving towards c++ api 2016-12-12 14:24:39 +01:00
d3200dc76f moving towards c++ api 2016-12-12 14:24:24 +01:00
e7621a6cd0 moving towards c++ api 2016-12-12 14:24:11 +01:00
d6793a0802 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_calibration into developer 2016-12-05 16:01:00 +01:00
37ba8f9a71 added moench03 T CPU data structure 2016-12-05 16:00:34 +01:00
cb879c61ca changes for new chipterboard -now works with reduced dynamic range and analog/digital readout 2016-11-09 11:36:59 +01:00
506 changed files with 59251 additions and 46793 deletions

10
.gitignore vendored
View File

@ -1,17 +1,11 @@
.cproject
.project
bin/
calibrationWizards/
slsDetectorGui/
slsDetectorSoftware/
slsReceiverSoftware/
slsDetectorCalibration/
slsImageReconstruction/
.settings
JCTBGui/
*.aux
*.log
*.out
*.toc
build
tests
docs/
RELEASE.txt

View File

@ -1,21 +1,50 @@
cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set (CALIBRATE OFF)
option (USE_HDF5 "HDF5 File format" OFF)
option (USE_TEXTCLIENT "Text Client" OFF)
option (USE_RECEIVER "Receiver" OFF)
option (USE_GUI "GUI" OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-misleading-indentation")
find_package(Qt4)
find_package(Qwt 6)
find_package(CBF)
find_package(Doxygen)
find_package(PNG REQUIRED)
add_subdirectory(slsDetectorSoftware)
add_subdirectory(slsReceiverSoftware)
add_subdirectory(slsImageReconstruction)
if (QT4_FOUND AND QWT_FOUND)
add_subdirectory(slsDetectorGui)
endif()
if (USE_HDF5)
find_package(HDF5 1.10 COMPONENTS CXX)
endif (USE_HDF5)
if (DEFINED ENV{ROOTSYS})
find_package(ROOT)
if (ROOT_FOUND)
add_subdirectory(calibrationWizards)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_INSTALL_RPATH "$ORIGIN")
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
if (USE_TEXTCLIENT)
add_subdirectory(slsDetectorSoftware)
endif (USE_TEXTCLIENT)
if (USE_RECEIVER)
add_subdirectory(slsReceiverSoftware)
endif (USE_RECEIVER)
if (USE_GUI)
if (QT4_FOUND AND QWT_FOUND)
add_subdirectory(slsDetectorGui)
endif()
endif (USE_GUI)
if (CALIBRATE)
if (DEFINED ENV{ROOTSYS})
find_package(ROOT)
if (ROOT_FOUND)
add_subdirectory(calibrationWizards)
endif()
endif()
endif()
endif(CALIBRATE)

98
Makefile Normal file → Executable file
View File

@ -5,10 +5,11 @@ include Makefile.include
INSTALLROOT ?= $(PWD)
BINDIR ?= $(INSTALLROOT)/bin
DOCDIR ?= $(INSTALLROOT)/docs
DOCDIR ?= $(INSTALLROOT)/manual/docs
LIBDIR ?= $(INSTALLROOT)/bin
INCDIR ?= $(INSTALLROOT)/include
DETAILDOC ?= $(INSTALLROOT)/docs
WD = $(shell pwd)
LIBRARYDIR = $(WD)/slsDetectorSoftware
LIBRARYRXRDIR = $(WD)/slsReceiverSoftware
@ -19,6 +20,8 @@ CALWIZDIR = $(WD)/calibrationWizards
MANDIR = $(WD)/manual
CALIBDIR = $(WD)/slsDetectorCalibration
TABSPACE := "\t"
INCLUDES=-I. -I$(LIBRARYDIR)/commonFiles -I$(LIBRARYDIR)/slsDetector -I$(LIBRARYDIR)/usersFunctions -I$(LIBRARYDIR)/multiSlsDetector -I$(LIBRARYDIR)/slsDetectorUtils -I$(LIBRARYDIR)/slsDetectorCommand -I$(LIBRARYDIR)/slsDetectorAnalysis -I$(LIBRARYDIR)/slsReceiverInterface -I$(LIBRARYRXRDIR)/include -I$(LIBRARYDIR)/threadFiles -I$(ASM)
@ -27,14 +30,15 @@ INCLUDESRXR += -I. -I$(LIBRARYRXRDIR)/include -I$(CALIBDIR) -I$(ASM)
$(info )
$(info #######################################)
$(info # Compiling slsDetectorsPackage #)
$(info # In slsDetectorsPackage Makefile #)
$(info #######################################)
$(info )
.PHONY: all nonstatic static lib libreceiver textclient receiver gui stextclient sreceiver
all: lib textclient receiver gui
#all: lib textclient receiver gui
all: textclient receiver gui
nonstatic: lib libreceiver textclient receiver gui
@ -42,39 +46,61 @@ static: lib libreceiver stextclient sreceiver gui
lib:
cd $(LIBRARYDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' INCLUDES='$(INCLUDES)'
cd $(LIBRARYDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
libreceiver:
cd $(LIBRARYRXRDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' INCLUDES='$(INCLUDESRXR)'
cd $(LIBRARYRXRDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
stextclient: slsDetectorClient_static
slsDetectorClient: textclient
slsDetectorClient_static: lib
cd $(CLIENTDIR) && $(MAKE) static_clients FLAGS='$(FLAGS)' LIBS='$(LDFLAGDET)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' INCLUDES='$(INCLUDES)'
textclient: lib
cd $(CLIENTDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)'
slsDetectorClient_static: #lib
cd $(CLIENTDIR) && $(MAKE) static_clients FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
textclient: #lib
cd $(CLIENTDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
slsReceiver: receiver
slsReceiver_static: receiver
receiver: libreceiver
cd $(RECEIVERDIR) && $(MAKE) receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)'
sreceiver: libreceiver
cd $(RECEIVERDIR) && $(MAKE) static_receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)'
slsDetectorGUI: lib
cd $(GUIDIR) && $(MAKE) DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' INCLUDES='$(INCLUDES)' LDFLAGDET='-L$(LIBDIR) -lSlsDetector'
receiver: #libreceiver
# cd $(RECEIVERDIR) && $(MAKE) receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
cd $(RECEIVERDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
sreceiver: #libreceiver
cd $(RECEIVERDIR) && $(MAKE) static_receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
slsDetectorGUI: #lib
cd $(GUIDIR) && $(MAKE) DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' INCLUDES='$(INCLUDES)' LDFLAGDET='$(LDFLAGDETONLY)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
calWiz:
cd $(CALWIZDIR) && $(MAKE) DESTDIR=$(BINDIR) #FLAGS=$(FLAGS) LDFLAGDET=$(LDFLAGDET) INCLUDES=$(INCLUDES)
@ -91,6 +117,26 @@ htmldoc:
make doc
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
cd manual && make html DESTDIR=$(DOCDIR)
detaildoc: createdocs docspdf docshtml removedocs
createdocs: $(LIBRARYDIR)/doxy.config
doxygen $(LIBRARYDIR)/doxy.config
docspdf:
cd slsDetectorPackageDocs/latex && make
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
$(shell test -d $(DETAILDOC)/pdf || mkdir -p $(DETAILDOC)/pdf)
mv slsDetectorPackageDocs/latex/refman.pdf $(DETAILDOC)/pdf/slsDetectorPackageDocs.pdf
docshtml:
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
$(shell test -d $(DETAILDOC)/html || mkdir -p $(DETAILDOC)/html)
$(shell test -d $(DETAILDOC)/html/slsDetectorPackageDocs && rm -r $(DETAILDOC)/html/slsDetectorPackageDocs)
mv slsDetectorPackageDocs/html $(DETAILDOC)/html/slsDetectorPackageDocs
removedocs:
rm -rf slsDetectorPackageDocs;
clean:
@ -103,7 +149,8 @@ clean:
cd $(CALWIZDIR) && $(MAKE) clean
cd manual && $(MAKE) clean
cd $(DOCDIR) && rm -rf *
rm -rf slsDetectorPackageDocs;
rm -rf $(DETAILDOC)
#install_lib:
@ -174,7 +221,6 @@ help:
@echo ""
@echo ""
@echo "Makefile variables"
@echo "REST=yes compile REST-aware Receiver (POCO and JsonBox libraries required)"
@echo "DEBUG=1,2 set debug level to 1 (VERBOSE) or 2 (VERYVERBOSE)"
@echo ""
@echo ""

View File

@ -5,40 +5,32 @@
CC = g++
CXX = $(CC)
ASM=$(shell echo "/lib/modules/`uname -r`/build/include")
LDFLAGDETONLY = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector
LDFLAGDET = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread
FLAGS= -Wall -pthread #-DEIGER_DEBUG2 -DEIGER_DEBUG -DEIGER_DEBUG3 #-DFIFO_DEBUG
FLAGS= -Wall -pthread #-DEIGER_DEBUG2
# -DVERBOSE
# Setting up the verbose flags
ifeq ($(DEBUG),1)
FLAGS = -Wall -pthread -DVERBOSE
FLAGS = -Wall -DVERBOSE
endif
ifeq ($(DEBUG),2)
FLAGS = -Wall -pthread -DVERYVERBOSE
FLAGS = -Wall -DVERYVERBOSE
endif
##############################################################
# EigerSLS specific. Set this to yes, if you want to compile
# EigerSLS code: in this case, you need also POCO and JsonBox
# libraries
# HDF5 specific. Set this to yes, if you want to compile
# HDF5 code: in this case, you need HDF5 libraries
##############################################################
REST = no
HDF5 = no
HDF5_DIR = /opt/hdf5v1.10.0
#POCODIR = /afs/psi.ch/user/s/sala/public/poco-slp_5.7-32bit
#JSONBOXDIR = /afs/psi.ch/user/s/sala/public/JsonBox-slp_5.7-32bit
POCODIR = /afs/psi.ch/user/s/sala/public/poco-slp_6.4-64bit
JSONBOXDIR = /afs/psi.ch/user/s/sala/public/JsonBox-slp_6.4-64bit
#POCODIR = /home/sala/Programs/poco-ubuntu_13.10-64bit
#JSONBOXDIR = /home/sala/Programs/JsonBox-ubuntu_13.10-64bit
RESTFLAGS = -L$(POCODIR)/lib -Wl,-rpath=$(POCODIR)/lib -L$(JSONBOXDIR) -Wl,-rpath=$(JSONBOXDIR)/lib -lPocoNet -lPocoFoundation -lJsonBox
ifeq ($(REST),yes)
LDFLAGRXR = -L$(LIBDIR) -lSlsReceiver $(RESTFLAGS) -DREST
INCLUDESRXR = $(EIGERFLAGS) -I$(POCODIR)/include -I$(JSONBOXDIR)/include
endif
ifeq ($(HDF5),yes)
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L$(HDF5_DIR)/lib -Wl,-rpath=$(HDF5_DIR)/lib -lhdf5 -lhdf5_cpp -lsz -lz -DHDF5C -L/usr/lib64/ -pthread
INCLUDESRXR = -I$(HDF5_DIR)/include
endif
##############################################################
@ -55,6 +47,11 @@ ifeq ($(ROOTSLS),yes)
endif
define colorecho
@tput setaf 6
@echo $1
@tput sgr0
endef

View File

@ -1,42 +1,88 @@
# slsDetector package
### Documentation
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support)
### Binaries
Documentation to obtain the binaries via the conda package is available [here.](https://github.com/slsdetectorgroup/sls_detector_software)
## Installation
### Get source
The source code is organised into several submodules, and the top level module is
sls_detectors_package.
### Source code
One can also obtain the source code from this repository and compile while realizing the setup dependencies as required.
```
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
```
$ git clone git@git.psi.ch:sls_detectors_software/sls_detectors_package.git
$ cd sls_detectors_package
$ ./checkout.sh
```
### Setup dependencies
The GUI client requires Qt 4.8 and Qwt 6.0
#### Setup dependencies
* Gui Client <br>
Requirements: Qt 4.8 and Qwt 6.0
```
export QTDIR=/usr/local/Trolltech/
export QWTDIR=/usr/local/qwt-6.0.1/
```
If either of them does not exist, the GUI client will not be built.
The calibration wizards require ROOT
* Calibration wizards<br>
Requirements: ROOT
```
export ROOTSYS=/usr/local/root-5.34
```
### Compile
Use cmake to create out-of-source builds, by creating an build folder parallel to source directory.
#### Compilation
Compiling can be done in two ways.
**1. Compile using script cmk.sh**<br>
After compiling, the libraries and executables will be found in `slsDetectorPackage/build/bin` directory<br>
Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]<br>
* -[no option]: only make<br>
* -c: Clean<br>
* -b: Builds/Rebuilds CMake files normal mode<br>
* -h: Builds/Rebuilds Cmake files with HDF5 package<br>
* -d: HDF5 Custom Directory<br>
* -t: Build/Rebuilds only text client<br>
* -r: Build/Rebuilds only receiver<br>
* -g: Build/Rebuilds only gui<br>
* -j: Number of threads to compile through<br>
Basic Option:
./cmk.sh -b
For only make:
./cmk.sh
For make clean;make:
./cmk.sh -c
For using hdf5 without custom dir /blabla:
./cmk.sh -h -d /blabla
For rebuilding cmake without hdf5
./cmk.sh -b
For using multiple cores to compile faster:
./cmk.sh -j9<br>
For rebuilding only certain sections<br>
./cmk.sh -tg #only text client and gui<br>
./cmk.sh -r #only receiver<br>
**2. Compile without script**<br>
Use cmake to create out-of-source builds, by creating a build folder parallel to source directory.
```
$ cd ..
$ mkdir sls_detectors_package-build
$ cd sls_detectors_package-build
$ cmake ../sls_detectors_package
$ mkdir slsDetectorPackage-build
$ cd slsDetectorPackage-build
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=OFF
$ make
```
The libraries and executables will be found at `bin` directory
Use the following as an example to compile statically and using specific hdf5 folder
```
$ HDF5_ROOT=/opt/hdf5v1.10.0 cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=ON
```
After compiling, the libraries and executables will be found at `bin` directory
```
$ ls bin/
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a libSlsReceiver.so

View File

@ -1,28 +1,52 @@
SLS Detector Package 2.3.0 released on 2017-03-23
================================================================================
SLS Detector Package 3.1.1 released on 2018-03-12
=================================================
INTRODUCTION
This document describes the differences between previous versions and 2.3.0 releases.
This document describes the differences between 3.1.0 and 3.1.0 releases.
Manuals can be found under the 'manual' folder.
The conda package of the binaries can be downloaded from
https://github.com/slsdetectorgroup/sls_detector_software.git
The Python interface to the software package (including the package) is at
https://github.com/slsdetectorgroup/sls_detector.git
Manual (both HTML and pdf versions) are provided in
manual/docs/
User documentation and other help can be accessed directly at this location:
Documentation from Source Code can be found for the Command Line and for the API in
html:
manual/docs/html/slsDetectorClientDocs/index.html
manual/docs/html/slsDetectorUsersDocs/index.html
pdf:
manual/docs/pdf/slsDetectorClientDocs.pdf
manual/docs/pdf/slsDetectorUsersDocs.pdf
Example including binaries for detector and receiver user classes can be found in
manual/manual-api
User documentation can also be accessed directly at this location:
https://www.psi.ch/detectors/users-support
If you have any software related questions or comments, please send them to:
dhanya.thattil@psi.ch
anna.bergamaschi@psi.ch
If you have any python related questions or comments, please send them to:
erik.frojdh@psi.ch
CONTENTS
- Firmware Requirements
- Changes in User Interface
- New Features
- Resolved Issues
@ -30,106 +54,60 @@ CONTENTS
Firmware Requirements
=====================
Please refer to the link below for more details on the firmware versions.
https://www.psi.ch/detectors/firmware.
Gotthard
========
Minimum compatible version : 11.01.2013
Latest version : 08.02.2018 (50um and 25um Master)
09.02.2018 (25 um Slave)
-Can not be upgraded remotely.
Eiger
=====
Minimum compatible version : 16
Latest version : 20
-Can be upgraded remotely via bit files.
Jungfrau
========
Minimum compatible version : 13.11.2017
Latest version : 13.11.2017
-Can be upgraded remotely via sls_detector_put programfpga <pof>.
Changes in User Interface
=========================
This release supports the following features:
Receiver
--------
- The files will be written in this format in the default mode:
* ASCII file header of 1024 bytes (only for EIGER detectors)
* series of images, each preceded by a Standard Header image
(header described below)
=========================
- Stanard Header image header in file and call back
arguments defined. It is in the following format defined as
sls_detector_header defined in
slsReceiverSoftware/include/sls_receiver_defs.h
Mostly 0 if not applicatble or implemented, but updated in next release
from firmware.
* Frame Number : 8 bytes # Image Number
* Exposure Length : 4 bytes # sub frame number in 32 bit mode
Eiger.
* Packet Number : 4 bytes # Number of packets in an image
* Bunch ID : 8 bytes # Bunch Id in beamline for jungfrau.
* Timestamp : 8 bytes # Not implemened
* Module Id : 2 bytes # Not implemented
* X Coordinate : 2 bytes # Id of part of detector in 1D
* Y Coordinate : 2 bytes # Not implemented
* Z Coordinate : 2 bytes # Not implemented
* Debug : 4 bytes # Not implemented
* Round Robin Number : 2 bytes # Not implemented
* Detector Type : 1 byte # Detector type defined by enum
detectorType in slsReceiverSoftware
/include/sls_receiver_defs.h
* Header Version : 1 byte # 1
- The call back value for Start Acquisition Call back is insignificant at the
moment and left for future use. Instead, the following rules apply:
* If file write is enabled from the client, we will write the files.
* If callbacks are registered, they will be called.
For example, the user prefers to write the data himself, one must disable
file write (so we dont write) and register the callbacks (so the user gets
the data).
New Features
============
Eiger
-----
- Tau is moved to settings file, Gain and offset are removed from calibration
file. Put settings only sets client variable, whereas putting threshold loads
settings files to the server.
- Mode argument in starting up receiver is removed. FlippedData command is used
in config file to specify bottom.
Receiver
--------
- Image Reconstruction from the files are different as packet headers are not
stored and a standard image header is used.
General
-------
- Users folder that gives an example on how to user the slsDetectorUsers and
slsReceiverUsers class.
- Data is streamed from Receiver to Gui via ZMQ if gui call back defined.
Resolved Issues
===============
Eiger
-----
- Frame and packet counters in server to check delays were buggy.
Known Issues
============
- X, Y and Z Coordinates do not exactly define the position of the
detector in 3d. This will be defined in the next release. Other header
parameters will be complete in the next release.
- Too many split files per detector especially for Eiger. Next Release will
have a HDF5 version, with virtual file mapping all the split files in an
acquisition.
- This version is tested only for Eiger and Jungfrau.

View File

@ -1,17 +0,0 @@
#git clone $1@git.psi.ch:sls_det_software/sls_detectors_package.git slsDetectorsPackage
#cd slsDetectorsPackage
git clone $1@git.psi.ch:sls_detectors_software/sls_detector_software.git slsDetectorSoftware
git clone $1@git.psi.ch:sls_detectors_software/sls_detector_gui.git slsDetectorGui
git clone $1@git.psi.ch:sls_detectors_software/sls_receiver_software.git slsReceiverSoftware
git clone $1@git.psi.ch:sls_detectors_software/sls_detector_calibration.git slsDetectorCalibration
#git clone $1@git.psi.ch:sls_detectors_software/sls_image_reconstruction.git slsImageReconstruction
git clone $1@git.psi.ch:sls_detectors_software/calibration_wizards.git calibrationWizards
#git clone git@git.psi.ch:sls_detectors_software/tests.git tests

193
cmk.sh Executable file
View File

@ -0,0 +1,193 @@
#!/bin/bash
BUILDDIR="build"
HDF5DIR="/opt/hdf5v1.10.0"
HDF5=0
COMPILERTHREADS=0
TEXTCLIENT=0
RECEIVER=0
GUI=0
CLEAN=0
REBUILD=0
CMAKE_PRE=""
CMAKE_POST=""
usage() { echo -e "
Usage: $0 [-c] [-b] [-h] [-d <HDF5 directory>] [-j]
-[no option]: only make
-c: Clean
-b: Builds/Rebuilds CMake files normal mode
-h: Builds/Rebuilds Cmake files with HDF5 package
-d: HDF5 Custom Directory
-t: Build/Rebuilds only text client
-r: Build/Rebuilds only receiver
-g: Build/Rebuilds only gui
-j: Number of threads to compile through
For only make:
./cmk.sh
For make clean;make:
./cmk.sh -c
For using hdf5 without default dir /opt/hdf5v1.10.0:
./cmk.sh -h
For using hdf5 without custom dir /blabla:
./cmk.sh -h -d /blabla
For rebuilding cmake without hdf5 (Use this if you had previously run with hdf5 and now you dont want it)
./cmk.sh -b
For using multiple cores to compile faster:
(all these options work)
./cmk.sh -j9
./cmk.sh -cj9 #with clean
./cmk.sh -hj9 #with hdf5
./cmk.sh -j9 -h #with hdf
For rebuilding only certain sections
./cmk.sh -tg #only text client and gui
./cmk.sh -r #only receiver
" ; exit 1; }
while getopts ":bchd:j:trg" opt ; do
case $opt in
b)
echo "Building of CMake files Required"
REBUILD=1
;;
c)
echo "Clean Required"
CLEAN=1
;;
h)
echo "Building of CMake files with HDF5 option Required"
HDF5=1
REBUILD=1
;;
d)
echo "New HDF5 directory: $OPTARG"
HDF5DIR=$OPTARG
;;
j)
echo "Number of compiler threads: $OPTARG"
COMPILERTHREADS=$OPTARG
;;
t)
echo "Compiling Options: Text Client"
TEXTCLIENT=1
REBUILD=1
;;
r)
echo "Compiling Options: Receiver"
RECEIVER=1
REBUILD=1
;;
g)
echo "Compiling Options: GUI"
GUI=1
REBUILD=1
;;
\?)
echo "Invalid option: -$OPTARG"
usage
exit 1
;;
:)
echo "Option -$OPTARG requires an argument."
usage
exit 1
;;
esac
done
if [ $TEXTCLIENT -eq 0 ] && [ $RECEIVER -eq 0 ] && [ $GUI -eq 0 ]; then
CMAKE_POST+=" -DUSE_TEXTCLIENT=ON -DUSE_RECEIVER=ON -DUSE_GUI=ON "
echo "Compile Option: TextClient, Receiver and GUI"
else
if [ $TEXTCLIENT -eq 1 ]; then
CMAKE_POST+=" -DUSE_TEXTCLIENT=ON "
echo "Compile Option: TextClient"
fi
if [ $RECEIVER -eq 1 ]; then
CMAKE_POST+=" -DUSE_RECEIVER=ON "
echo "Compile Option: Receiver"
fi
if [ $GUI -eq 1 ]; then
CMAKE_POST+=" -DUSE_GUI=ON "
echo "Compile Option: GUI"
fi
fi
#build dir doesnt exist
if [ ! -d "$BUILDDIR" ] ; then
echo "No Build Directory. Building of Cmake files required"
mkdir $BUILDDIR;
REBUILD=1
else
#rebuild not requested, but no makefile
if [ $REBUILD -eq 0 ] && [ ! -f "$BUILDDIR/Makefile" ] ; then
echo "No Makefile. Building of Cmake files required"
REBUILD=1
fi
fi
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
#hdf5 rebuild
if [ $HDF5 -eq 1 ]; then
CMAKE_PRE+="HDF5_ROOT="$HDF5DIR
CMAKE_POST+=" -DUSE_HDF5=ON "
#normal mode rebuild
else
CMAKE_POST+=" -DUSE_HDF5=OFF "
fi
#enter build dir
cd $BUILDDIR;
echo "in "$PWD
#cmake
if [ $REBUILD -eq 1 ]; then
rm -f CMakeCache.txt
BUILDCOMMAND="$CMAKE_PRE cmake $CMAKE_POST .."
echo $BUILDCOMMAND
eval $BUILDCOMMAND
fi
#make clean
if [ $CLEAN -eq 1 ]; then
make clean;
fi
#make
if [ $COMPILERTHREADS -gt 0 ]; then
BUILDCOMMAND="make -j$COMPILERTHREADS"
echo $BUILDCOMMAND
eval $BUILDCOMMAND
else
make
fi

22
evalVersionVariables.sh Normal file
View File

@ -0,0 +1,22 @@
GITREPO1='git remote -v'
GITREPO2=" | grep \"fetch\" | cut -d' ' -f1"
BRANCH1='git branch -v'
BRANCH2=" | grep '*' | cut -d' ' -f2"
REPUID1='git log --pretty=format:"%H" -1'
AUTH1_1='git log --pretty=format:"%cn" -1'
AUTH1_2=" | cut -d' ' -f1"
AUTH2_1='git log --pretty=format:"%cn" -1'
AUTH2_2=" | cut -d' ' -f2"
FOLDERREV1='git log --oneline . ' #used for all the individual server folders
FOLDERREV2=" | wc -l" #used for all the individual server folders
REV1='git log --oneline '
REV2=" | wc -l"
GITREPO=`eval $GITREPO1 $GITREPO2`
BRANCH=`eval $BRANCH1 $BRANCH2`
REPUID=`eval $REPUID1`
AUTH1=`eval $AUTH1_1 $AUTH1_2`
AUTH2=`eval $AUTH2_1 $AUTH2_2`
REV=`eval $REV1 $REV2`
FOLDERREV=`eval $FOLDERREV1 $FOLDERREV2`

View File

@ -0,0 +1,33 @@
detsizechan 1024 512
#detetctor geometry, long side of the module first
hostname beb059+beb058+
#1Gb detector hostname for controls
0:rx_tcpport 1991
#tcpport for the first halfmodule
0:rx_udpport 50011
#udp port first quadrant, first halfmodule
0:rx_udpport2 50012
#udp port second quadrant, first halfmodule
0:rx_udpip 10.0.30.210
#udp IP of the receiver over 10Gb
0:detectorip 10.0.30.100
#first half module 10 Gb IP
1:rx_tcpport 1992
#tcpport for the second halfmodule
1:rx_udpport 50013
#udp port first quadrant, second halfmodule
1:rx_udpport2 50014
#udp port second quadrant, second halfmodule
1:rx_udpip 10.0.40.210
#udp IP of the receiver over 10Gb,
#can be the same or different from 0:rx_udpip
1:detectorip 10.0.40.101
#second half module 10 Gb IP
rx_hostname x12sa-vcons
#1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1

24
examples/eiger_1Gb.config Normal file
View File

@ -0,0 +1,24 @@
detsizechan 1024 512
#detetctor geometry, long side of the module first
hostname beb059+beb058+
#1Gb detector hostname for controls
0:rx_tcpport 1991
#tcpport for the first halfmodule
0:rx_udpport 50011
#udp port first quadrant, first halfmodule
0:rx_udpport2 50012
#udp port second quadrant, first halfmodule
1:rx_tcpport 1992
#tcpport for the second halfmodule
1:rx_udpport 50013
#udp port first quadrant, second halfmodule
1:rx_udpport2 50014
#udp port second quadrant, second halfmodule
rx_hostname x12sa-vcons
#1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1

View File

@ -1,5 +1,5 @@
type Gotthard+
0:hostname bchip007
hostname bchip007
#0:port 1952
#0:stopport 1953
#0:rx_tcpport 1956 must also have this in receiver config file
@ -10,9 +10,6 @@ type Gotthard+
0:caldir /home/l_maliakal_d/mySoft/newMythenSoftware/settingsdir/gotthard
0:ffdir /home/l_maliakal_d
0:extsig:0 off
0:extsig:1 off
0:extsig:2 off
0:extsig:3 off
#0:detectorip 129.129.202.9
0:detectormac 00:aa:bb:cc:dd:ee
0:rx_udpport 50004

18
examples/jungfrau.config Normal file
View File

@ -0,0 +1,18 @@
hostname bchip038+
settingsdir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
caldir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
lock 0
0:rx_udpport 50004
0:rx_udpip 10.1.1.100
0:detectorip 10.1.1.10
rx_hostname pcmoench01
powerchip 1
timing auto
outdir /external_pool/jungfrau_data/softwaretest
threaded 1

View File

@ -0,0 +1,30 @@
detsizechan 1024 1024
hostname bchip048+bchip052+
settingsdir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
caldir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
lock 0
0:rx_udpport 50004
0:rx_udpip 10.1.1.100
0:rx_udpmac F4:52:14:2F:32:00
0:detectorip 10.1.1.10
0:detectormac 00:aa:bb:cc:dd:33
1:rx_tcpport 1955
1:rx_udpport 50005
1:rx_udpip 10.1.1.100
1:rx_udpmac F4:52:14:2F:32:00
1:detectorip 10.1.1.11
1:detectormac 00:aa:bb:cc:dd:33
rx_hostname pcmoench01
powerchip 1
extsig:0 trigger_in_rising_edge
timing auto
outdir /external_pool/jungfrau_data/softwaretest
threaded 1

View File

@ -2,7 +2,6 @@
detsizechan 2560 1
#type Gotthard+
hostname bchip007+bchip009+
#0:hostname bchip007
@ -16,9 +15,6 @@ hostname bchip007+bchip009+
0:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
0:ffdir /home/l_msdetect
0:extsig:0 off
0:extsig:1 off
0:extsig:2 off
0:extsig:3 off
0:detectorip 10.1.1.2
#0:detectormac 00:aa:bb:cc:dd:ee
#0:rx_udpport 50001
@ -39,9 +35,6 @@ hostname bchip007+bchip009+
1:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
1:ffdir /home/l_msdetect
1:extsig:0 off
1:extsig:1 off
1:extsig:2 off
1:extsig:3 off
1:detectorip 10.1.2.2
#1:detectormac 00:aa:bb:cc:dd:ee
1:rx_udpport 50004

View File

@ -15,11 +15,11 @@ fout=$3
#dat=echo "date '+%Y%m%d'"
echo "in: $fin tmp: $ftmp out: $fout"
echo "Updating $fout"
#echo "in: $fin tmp: $ftmp out: $fout"
#awk 'NR==FNR {if ($3=="Date:") {l[FNR]=$4; gsub("-","",l[FNR]);} else { if (match($0,"Rev")) {l[FNR]=$(NF);} else {l[FNR]="\""$(NF)"\"";};};next} {$0=$1" "$2" "l[FNR]}1' $fin $ftmp > $fout
awk 'BEGIN {l[0]=0; "date +%Y%m%d" | getline l[1]; l[2]="\"/\""; l[3]="\"nobody\""; l[3]="\"nobody\""; l[4]="\"0000-0000-0000\"";} \
NR==FNR {if (match($0,"Rev")) {l[0]="0x"$(NF);} else if (match($0,"Date")) {l[1]="0x"$4; gsub("-","",l[1]);} else if (match($0,"URL")) {l[2]="\""$(NF)"\"";} else if (match($0,"Author")) {l[3]="\""$(NF)"\"";} else if (match($0,"UUID")) {l[4]="\""$(NF)"\"";};next;}
{if (match($2,"REV")) {$0=$1" "$2" "l[0];} else if (match($2,"DATE")) {$0=$1" "$2" "l[1];} else if (match($2,"URL")) {$0=$1" "$2" "l[2];} else if (match($2,"AUTH")) {$0=$1" "$2" "l[3];} else if (match($2,"UUID")) {$0=$1" "$2" "l[4];}}1' $fin $ftmp > $fout
NR==FNR {if (match($0,"Rev")) {l[0]="0x"$(NF);} else if (match($0,"Date")) {l[1]="0x"$4; gsub("-","",l[1]);} else if (match($0,"URL")) {l[2]="\""$(NF)"\"";} else if (match($0,"Author")) {l[3]="\""$(NF)"\"";} else if (match($0,"UUID")) {l[4]="\""$(NF)"\"";} else if (match($0,"Branch")) {l[5]="\""$(NF)"\"";};next;}
{if (match($2,"REV")) {$0=$1" "$2" "l[0];} else if (match($2,"DATE")) {$0=$1" "$2" "l[1];} else if (match($2,"URL")) {$0=$1" "$2" "l[2];} else if (match($2,"AUTH")) {$0=$1" "$2" "l[3];} else if (match($2,"UUID")) {$0=$1" "$2" "l[4];} else if (match($2,"BRANCH")) {$0=$1" "$2" "l[5];}}1' $fin $ftmp > $fout

View File

@ -1,8 +0,0 @@
#!/bin/bash
git $1
for i in sls*/; do
cd $i
echo $i
git $1
cd ..
done

View File

@ -1,11 +1,11 @@
DESTDIR?=../docs
DESTDIR?=docs
#manual-api manual-calwiz manual-client manual-gui manual-main
MAINDIRS= 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-%)
@ -14,18 +14,18 @@ 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)
# $(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)
# $(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)
# $(shell test -d $(DESTDIR)/html && rm -fr $(DESTDIR)/html)
# mv html $(DESTDIR)
clean: $(CLEANDIRS)
rm -fr $(DESTDIR)/pdf
@ -45,7 +45,7 @@ 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><>.
#<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,28 +1,52 @@
INCLUDES = -I .
SRC_DET = mainClient.cpp
SRC_REC = mainReceiver.cpp
LIBDIR = ../../bin
LDFLAG_DET = -L$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread
LDFLAG_REC = -L$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread
LIBDIR = .
LDFLAG_DET = -I. -L$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread -lrt -L. -lzmq
LDFLAG_REC = -I. -L$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread -lrt -L. -lzmq
DESTDIR ?= ../docs
#all: detUser detReceiver
all: docs
all: docs detUser detReceiver
#all: docs
docs:
doxygen slsDetectorUsers.doxy
docs: createdocs docspdf docshtml removedocs
createdocs: slsDetectorUsers.doxy slsDetectorUsers.h detectorData.h slsReceiverUsers.h 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"
g++ -o detUser $(SRC_DET) $(INCLUDES) $(LDFLAG_DET) -lm -lstdc++
mkdir -p bin
g++ -o bin/detUser $(SRC_DET) $(INCLUDES) $(LDFLAG_DET) -lm -lstdc++
detReceiver:$(SRC_REC)
echo "creating receiver"
g++ -o detReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
mkdir -p bin
g++ -o bin/detReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
clean:
echo "cleaning"
rm -rf detUser detReceiver slsDetectorUsersDocs
echo "cleaning for manual-api"
rm -rf bin/detUser bin/detReceiver slsDetectorUsersDocs
rm -rf slsDetectorUsersDocs
rm -rf $(DESTDIR)/html/slsDetectorUsersDocs
rm -rf $(DESTDIR)/pdf/slsDetectorUsersDocs.pdf

1
manual/manual-api/ansi.h Symbolic link
View File

@ -0,0 +1 @@
../../slsReceiverSoftware/include/ansi.h

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
../../build/bin/libSlsDetector.so

View File

@ -0,0 +1 @@
../../build/bin/libSlsReceiver.so

1
manual/manual-api/libzmq.a Symbolic link
View File

@ -0,0 +1 @@
../../slsReceiverSoftware/include/libzmq.a

View File

@ -4,97 +4,102 @@
This file is an example of how to implement the slsDetectorUsers class
You can compile it linking it to the slsDetector library
gcc mainClient.cpp -L lib -l SlsDetector -lm -pthread
g++ mainClient.cpp -L lib -lSlsDetector -L/usr/lib64/ -L lib2 -lzmq -pthread -lrt -lm -lstdc++
where lib is the location of libSlsDetector.so
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 <iostream>
#include "slsDetectorUsers.h"
#include "detectorData.h"
#include <iostream>
#include <cstdlib>
/** Definition of the data callback which simply prints out the number of points received and teh frame number */
int dataCallback(detectorData *pData, int iframe, void *pArg)
/**
* 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: " << pData->npoints << " " << pData->npy << "Frame number: " << iframe << std::endl;
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 */
int main(int argc, char *argv[]) {
int id=0;
int status;
/** if specified, argv[2] is used as detector ID (default is 0)*/
if (argc>=3)
id=atoi(argv[2]);
/**
* 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 is instantiated */
slsDetectorUsers *pDetector = new slsDetectorUsers (id);
/** - slsDetectorUsers Object is instantiated with appropriate ID */
slsDetectorUsers *pDetector = new slsDetectorUsers (id);
/** if specified, argv[1] is used as detector config 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]);
/** Setting the detector online (should be by default */
pDetector->setOnline(1);
/** Load setup file if argv[2] specified */
if (argc>=3)
pDetector->retrieveDetectorSetup( argv[2]);
else{
/** defining the detector size */
int minX, minY=0, sizeX, sizeY=1;
pDetector->getDetectorSize(minX, minY, sizeX, sizeY);
std::cout << "X: Start=" << minX << ", Size= " << sizeX << std::endl;
std::cout << "Y: Start=" << minY << ", Size= " << sizeY << std::endl;
pDetector->setDetectorSize(0,0,7680,1);
std::cout << pDetector->getDetectorDeveloper() << std::endl;
/** - 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;
}
/** registering data callback */
pDetector->registerDataCallback(&dataCallback, NULL);
/** - set detector in shared memory online (in case no config file was used) */
pDetector->setOnline(1);
/** checking detector status and exiting if not idle */
status = pDetector->getDetectorStatus();
if (status != 0){
std::cout << "Detector not ready: " << slsDetectorUsers::runStatusType(status) << std::endl;
return 1;
}
/** - set receiver in shared memory online (in case no config file was used) */
pDetector->setReceiverOnline(1);
/** checking and setting detector settings */
std::cout << "settings: " << slsDetectorUsers::getDetectorSettings(pDetector->setSettings()) << std::endl;
pDetector->setSettings(slsDetectorUsers::getDetectorSettings("veryhighgain"));
std::cout << "settings: " << slsDetectorUsers::getDetectorSettings(pDetector->setSettings()) << std::endl;
/** - registering data callback */
pDetector->registerDataCallback(&dataCallback, NULL);
/** - if receiver exists, enable data streaming from receiver to get the data */
pDetector->enableDataStreamingFromReceiver(1);
/** - create zmq sockets in client to enable data streaming in of data from receiver/different process */
pDetector->enableDataStreamingToClient(1);
/** Settings exposure time to 10ms */
pDetector->setExposureTime(10000000);
/** Settings exposure time to 100ms */
pDetector->setExposurePeriod(100000000);
/** Settingsnumber of frames to 30 */
pDetector->setNumberOfFrames(30);
}
/** start measurement */
pDetector->startMeasurement();
/** - 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;
}
while (1) {
usleep(100000);
status = pDetector->getDetectorStatus();
if (status == 0 || status == 1|| status == 3)
break;
}
/** - if provided, load detector settings */
if (argc>=3){
pDetector->retrieveDetectorSetup(argv[2]);
std::cout << "Detector measurement set-up done" << std::endl;
}
char *temp[] = {"receiver", NULL};
/** returning when acquisition is finished or data are avilable */
std::cout << "answer to a get command:" << pDetector->getCommand(1,temp,0) << std::endl;
delete pDetector;
return 0;
/** - start measurement */
pDetector->startMeasurement();
std::cout << "measurement finished" << std::endl; usleep(1*1000*1000);
/** - returning when acquisition is finished or data are avilable */
/** - delete slsDetectorUsers object */
delete pDetector;
return 0;
}

View File

@ -1,103 +1,270 @@
/* A simple server in the internet domain using TCP
The port number is passed as an argument
*/
/**
\file mainReceiver.cpp
\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
This file is an example of how to implement the slsDetectorUsers class
You can compile it linking it to the slsDetector library
g++ mainReceiver.cpp -L lib -lSlsReceiver -L/usr/lib64/ -L lib2 -lzmq -pthread -lrt -lm -lstdc++
gcc mainReceiver.cpp -L lib -l SlsDetector -lm -pthread
where,
where lib is the location of libSlsDetector.so
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_receiver_defs.h"
#include "slsReceiverUsers.h"
#include <iostream>
#include <string.h>
#include <signal.h> //SIGINT
#include <cstdlib> //system
//#include "utilities.h"
//#include "logger.h"
#include <sys/types.h> //wait
#include <sys/wait.h> //wait
#include <string>
#include <unistd.h> //usleep
#include <errno.h>
#include <syscall.h> //tid
using namespace std;
int main(int argc, char *argv[]) {
int ret = 0;
/** 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__)
/*
Instantiate the slsReceieverUsers class
The port number is passed as an argument
*/
slsReceiverUsers *receiver = new slsReceiverUsers(argc, argv, ret);
/*
return if could not open TCP socket for interfacing to client
*/
if(ret==1)
return -1;
/** Variable is true to continue running, set to false upon interrupt */
bool keeprunning;
/*register callbacks */
/*
callback arguments are
filepath
filename
fileindex
datasize
return value is
0 raw data ready callback takes care of open,close,write file
1 callback writes file, we have to open, close it
2 we open, close, write file, callback does not do anything
registerCallBackStartAcquisition(int (*func)(char*, char*,int, int, void*),void *arg);
*/
//receiver->registerCallBackStartAcquisition(func,arg);
/*
callback argument is
total farmes caught
registerCallBackAcquisitionFinished(void (*func)(int, void*),void *arg);
*/
//receiver->registerCallBackAcquisitionFinished(func,arg);
/*
args to raw data ready callback are
framenum
datapointer
file descriptor
guidatapointer (NULL, no data required)
NEVER DELETE THE DATA POINTER
REMEMBER THAT THE CALLBACK IS BLOCKING
registerCallBackRawDataReady(void (*func)(int, char*, FILE*, char*, void*),void *arg);
*/
//receiver->registerCallBackRawDataReady(func,arg);
/* start receiver to listen for commands from the client (and data from detectors when expected */
receiver->start();
/** sleep for 10 s*/
usleep(10000000);
/** stop udp socket and tcp socket and thread */
receiver->stop();
return 0;
/**
* 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"
"./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, 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",frames);
}
/**
* Get Receiver Data Call back
* Prints in different colors(for each receiver process) the different headers for each image call back.
* @param frameNumber frame number
* @param expLength real time exposure length (in 100ns) or sub frame number (Eiger 32 bit mode only)
* @param packetNumber number of packets caught for this frame
* @param bunchId bunch id from beamline
* @param timestamp time stamp in 10MHz clock (not implemented for most)
* @param modId module id (not implemented for most)
* @param xCoord x coordinates (detector id in 1D)
* @param yCoord y coordinates (not implemented)
* @param zCoord z coordinates (not implemented)
* @param debug debug values if any
* @param roundRNumber (not implemented)
* @param detType detector type see :: detectorType
* @param version version of standard header (structure format)
* @param datapointer pointer to data
* @param datasize data size in bytes
* @param p pointer to object
*/
void GetData(uint64_t frameNumber, uint32_t expLength, uint32_t packetNumber, uint64_t bunchId, uint64_t timestamp,
uint16_t modId, uint16_t xCoord, uint16_t yCoord, uint16_t zCoord, uint32_t debug, uint16_t roundRNumber, uint8_t detType, uint8_t version,
char* datapointer, uint32_t datasize, void* p){
PRINT_IN_COLOR (modId?modId:xCoord,
"#### %d GetData: ####\n"
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu\t\ttimestamp: %llu\t\tmodId: %u\t\t"
"xCoord: %u\t\tyCoord: %u\t\tzCoord: %u\t\tdebug: %u\t\troundRNumber: %u\t\tdetType: %u\t\t"
"version: %u\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
xCoord, frameNumber, expLength, packetNumber, bunchId, timestamp, modId,
xCoord, yCoord, zCoord, debug, roundRNumber, detType, version,
((uint8_t)(*((uint8_t*)(datapointer)))), datasize);
}
/**
* 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, NULL) == -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, NULL) == -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 = slsReceiverDefs::OK;
/** - create slsReceiverUsers object with appropriate arguments */
slsReceiverUsers *receiver = new slsReceiverUsers(3, args, ret);
if(ret==slsReceiverDefs::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, NULL);
/** - Call back for acquisition finished */
cprintf(BLUE, "Registering AcquisitionFinished()\n");
receiver->registerCallBackAcquisitionFinished(AcquisitionFinished, NULL);
/* - Call back for raw data */
cprintf(BLUE, "Registering GetData() \n");
receiver->registerCallBackRawDataReady(GetData,NULL);
}
/** - start tcp server thread */
if (receiver->start() == slsReceiverDefs::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, NULL) == -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, NULL, 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,29 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="classdetectorData.html">detectorData</a></td><td class="indexvalue">Data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) </td></tr>
<tr><td class="indexkey"><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td class="indexvalue">Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc </td></tr>
<tr><td class="indexkey"><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td class="indexvalue">Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data </td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData Member List</h1>This is the complete list of members for <a class="el" href="classdetectorData.html">detectorData</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a>(double *val=NULL, double *err=NULL, double *ang=NULL, double p_ind=-1, const char *fname=&quot;&quot;, int np=-1, int ny=1)</td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">~detectorData</a>()</td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td><code> [inline]</code></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,316 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>detectorData Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData Class Reference</h1><!-- doxytag: class="detectorData" -->data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="detectorData_8h-source.html">detectorData.h</a>&gt;</code>
<p>
<a href="classdetectorData-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a> (double *val=NULL, double *err=NULL, double *ang=NULL, double p_ind=-1, const char *fname=&quot;&quot;, int np=-1, int ny=1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The constructor. <a href="#3f8538f5f634295fc40682b8aed47b31"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">~detectorData</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The destructor deletes also the arrays pointing to data/errors/angles if not NULL. <a href="#d32a037cc2bd6e8caf4556cbd4b88ec7"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the data <a href="#0f4e31d65f9616e83a2e5521453d0364"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the errors <a href="#29cb1c6bb5635e918ae28505ccd0d8f9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the angles (NULL if no angular conversion) <a href="#cc9f9708b9ff2d840208cae843fb4b7a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">file index <a href="#976b3287d46aed032487bbeed74132da"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a> [1000]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">file name <a href="#91d1e3466878def295a531c01bdeef6b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of points <a href="#50aabf6f2c40587f8e915cf4913a2cfe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">dimensions in y coordinate <a href="#c289d259e7fd9445a9c04976a82cb324"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00009">9</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="3f8538f5f634295fc40682b8aed47b31"></a><!-- doxytag: member="detectorData::detectorData" ref="3f8538f5f634295fc40682b8aed47b31" args="(double *val=NULL, double *err=NULL, double *ang=NULL, double p_ind=-1, const char *fname=&quot;&quot;, int np=-1, int ny=1)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">detectorData::detectorData </td>
<td>(</td>
<td class="paramtype">double *&nbsp;</td>
<td class="paramname"> <em>val</em> = <code>NULL</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&nbsp;</td>
<td class="paramname"> <em>err</em> = <code>NULL</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&nbsp;</td>
<td class="paramname"> <em>ang</em> = <code>NULL</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&nbsp;</td>
<td class="paramname"> <em>p_ind</em> = <code>-1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>fname</em> = <code>&quot;&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>np</em> = <code>-1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>ny</em> = <code>1</code></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
The constructor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>pointer to the data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>err</em>&nbsp;</td><td>pointer to errors </td></tr>
<tr><td valign="top"></td><td valign="top"><em>ang</em>&nbsp;</td><td>pointer to the angles </td></tr>
<tr><td valign="top"></td><td valign="top"><em>f_ind</em>&nbsp;</td><td>file index </td></tr>
<tr><td valign="top"></td><td valign="top"><em>fname</em>&nbsp;</td><td>file name to which the data are saved </td></tr>
<tr><td valign="top"></td><td valign="top"><em>np</em>&nbsp;</td><td>number of points in x coordinate defaults to the number of detector channels (1D detector) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>ny</em>&nbsp;</td><td>dimension in y (1D detector) </td></tr>
</table>
</dl>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00020">20</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
References <a class="el" href="detectorData_8h-source.html#l00031">fileName</a>.
</div>
</div><p>
<a class="anchor" name="d32a037cc2bd6e8caf4556cbd4b88ec7"></a><!-- doxytag: member="detectorData::~detectorData" ref="d32a037cc2bd6e8caf4556cbd4b88ec7" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">detectorData::~detectorData </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
The destructor deletes also the arrays pointing to data/errors/angles if not NULL.
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00025">25</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
References <a class="el" href="detectorData_8h-source.html#l00029">angles</a>, <a class="el" href="detectorData_8h-source.html#l00028">errors</a>, and <a class="el" href="detectorData_8h-source.html#l00025">values</a>.
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="cc9f9708b9ff2d840208cae843fb4b7a"></a><!-- doxytag: member="detectorData::angles" ref="cc9f9708b9ff2d840208cae843fb4b7a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double* <a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">detectorData::angles</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
pointer to the angles (NULL if no angular conversion)
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00029">29</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00025">~detectorData()</a>.
</div>
</div><p>
<a class="anchor" name="29cb1c6bb5635e918ae28505ccd0d8f9"></a><!-- doxytag: member="detectorData::errors" ref="29cb1c6bb5635e918ae28505ccd0d8f9" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double* <a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">detectorData::errors</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
pointer to the errors
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00028">28</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00025">~detectorData()</a>.
</div>
</div><p>
<a class="anchor" name="91d1e3466878def295a531c01bdeef6b"></a><!-- doxytag: member="detectorData::fileName" ref="91d1e3466878def295a531c01bdeef6b" args="[1000]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">detectorData::fileName</a>[1000] </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
file name
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00031">31</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00020">detectorData()</a>.
</div>
</div><p>
<a class="anchor" name="50aabf6f2c40587f8e915cf4913a2cfe"></a><!-- doxytag: member="detectorData::npoints" ref="50aabf6f2c40587f8e915cf4913a2cfe" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">detectorData::npoints</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
number of points
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00032">32</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="mainClient_8cpp-source.html#l00019">dataCallback()</a>.
</div>
</div><p>
<a class="anchor" name="c289d259e7fd9445a9c04976a82cb324"></a><!-- doxytag: member="detectorData::npy" ref="c289d259e7fd9445a9c04976a82cb324" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">detectorData::npy</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
dimensions in y coordinate
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00033">33</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="mainClient_8cpp-source.html#l00019">dataCallback()</a>.
</div>
</div><p>
<a class="anchor" name="976b3287d46aed032487bbeed74132da"></a><!-- doxytag: member="detectorData::progressIndex" ref="976b3287d46aed032487bbeed74132da" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">detectorData::progressIndex</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
file index
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00030">30</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
</div>
</div><p>
<a class="anchor" name="0f4e31d65f9616e83a2e5521453d0364"></a><!-- doxytag: member="detectorData::values" ref="0f4e31d65f9616e83a2e5521453d0364" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double* <a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">detectorData::values</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
pointer to the data
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00025">25</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00025">~detectorData()</a>.
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="detectorData_8h-source.html">detectorData.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,95 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>slsDetectorUsers Member List</h1>This is the complete list of members for <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">addFrame</a>(double *data, double pos, double i0, double t, string fname, double var)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">dumpDetectorSetup</a>(string const fname)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">enableAngularConversion</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">enableCountRateCorrection</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">enableFlatFieldCorrection</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">enablePixelMaskCorrection</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">enableWriteToFile</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">finalizeDataset</a>(double *a, double *v, double *e, int &amp;np)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">getBeamEnergy</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">getCommand</a>(int narg, char *args[], int pos=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">getDetectorDeveloper</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">getDetectorFirmwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">getDetectorSerialNumber</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">getDetectorSettings</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">getDetectorSettings</a>(int s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">getDetectorSize</a>(int &amp;x0, int &amp;y0, int &amp;nx, int &amp;ny)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">getDetectorSoftwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">getDetectorType</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">getFileIndex</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">getFileName</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">getFilePath</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">getFlatFieldCorrectionDir</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">getFlatFieldCorrectionFile</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">getMaximumDetectorSize</a>(int &amp;nx, int &amp;ny)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">getModuleFirmwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">getModuleSerialNumber</a>(int imod=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">getPositions</a>(double *pos=NULL)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">getThisSoftwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">getThresholdEnergy</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">getTimingMode</a>(int f)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">getTimingMode</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">initDataset</a>(int refresh)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">putCommand</a>(int narg, char *args[], int pos=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">readConfigurationFile</a>(string const fname)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">registerAcquisitionFinishedCallback</a>(int(*func)(double, int, void *), void *pArg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">registerConnectChannelsCallback</a>(int(*func)(void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">registerDataCallback</a>(int(*userCallback)(detectorData *d, int f, void *), void *pArg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">registerDisconnectChannelsCallback</a>(int(*func)(void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">registerGetI0Callback</a>(double(*func)(int, void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">registerGetPositionCallback</a>(double(*func)(void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">registerGoToPositionCallback</a>(int(*func)(double, void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">registerGoToPositionNoWaitCallback</a>(int(*func)(double, void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">registerRawDataCallback</a>(int(*userCallback)(double *p, int n, void *), void *pArg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">retrieveDetectorSetup</a>(string const fname)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">runStatusType</a>(int s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">setBeamEnergy</a>(int e_eV)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">setBitDepth</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">setDelayAfterTrigger</a>(double t=-1, bool inseconds=false)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">setDetectorSize</a>(int x0=-1, int y0=-1, int nx=-1, int ny=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">setExposurePeriod</a>(double t=-1, bool inseconds=false)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">setExposureTime</a>(double t=-1, bool inseconds=false)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">setFileIndex</a>(int i)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">setFileName</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">setFilePath</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">setFlatFieldCorrectionDir</a>(string dir)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">setFlatFieldCorrectionFile</a>(string fname=&quot;&quot;)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">setNumberOfCycles</a>(int64_t t=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">setNumberOfFrames</a>(int64_t t=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">setNumberOfGates</a>(int64_t t=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">setOnline</a>(int const online=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">setPositions</a>(int nPos, double *pos)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">setReceiverMode</a>(int n=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>(int isettings=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">setThresholdEnergy</a>(int e_eV)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">setTimingMode</a>(int pol=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a>(int id=0)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">startMeasurement</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">stopMeasurement</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">~slsDetectorUsers</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,35 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers Member List</h1>This is the complete list of members for <a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">closeFile</a>(int p)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">getReceiverVersion</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">receiver</a></td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">registerCallBackAcquisitionFinished</a>(void(*func)(int nf, void *), void *arg)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">registerCallBackRawDataReady</a>(void(*func)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *), void *arg)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">registerCallBackStartAcquisition</a>(int(*func)(char *filepath, char *filename, int fileindex, int datasize, void *), void *arg)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a>(int argc, char *argv[], int &amp;success)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">~slsReceiverUsers</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,332 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsReceiverUsers Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers Class Reference</h1><!-- doxytag: class="slsReceiverUsers" -->Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>&gt;</code>
<p>
<a href="classslsReceiverUsers-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a> (int argc, char *argv[], int &amp;success)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">~slsReceiverUsers</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">closeFile</a> (int p)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">getReceiverVersion</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">registerCallBackStartAcquisition</a> (int(*func)(char *filepath, char *filename, int fileindex, int datasize, void *), void *arg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">registerCallBackAcquisitionFinished</a> (void(*func)(int nf, void *), void *arg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">registerCallBackRawDataReady</a> (void(*func)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *), void *arg)</td></tr>
<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static slsReceiverTCPIPInterface *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">receiver</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
<p>
<a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a> is a class that can be instantiated in the users software to receive the data from the detectors. Callbacks can be defined for processing and/or saving data
<p>
<p>
Definition at line <a class="el" href="slsReceiverUsers_8h-source.html#l00021">21</a> of file <a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="79a82ba94fbb19761c7701aa3901b8b1"></a><!-- doxytag: member="slsReceiverUsers::slsReceiverUsers" ref="79a82ba94fbb19761c7701aa3901b8b1" args="(int argc, char *argv[], int &amp;success)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">slsReceiverUsers::slsReceiverUsers </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>argv</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&nbsp;</td>
<td class="paramname"> <em>success</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Constructor reads config file, creates socket, assigns function table <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>argc</em>&nbsp;</td><td>from command line </td></tr>
<tr><td valign="top"></td><td valign="top"><em>argv</em>&nbsp;</td><td>from command line </td></tr>
<tr><td valign="top"></td><td valign="top"><em>succecc</em>&nbsp;</td><td>socket creation was successfull </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="9b45943d81ce7a09543aa446de857cb0"></a><!-- doxytag: member="slsReceiverUsers::~slsReceiverUsers" ref="9b45943d81ce7a09543aa446de857cb0" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">slsReceiverUsers::~slsReceiverUsers </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Destructor
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="bad0b3265826da2d9ebf48e59e9d5787"></a><!-- doxytag: member="slsReceiverUsers::closeFile" ref="bad0b3265826da2d9ebf48e59e9d5787" args="(int p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::closeFile </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>p</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Close File and exits receiver server
</div>
</div><p>
<a class="anchor" name="f206092e2744e12ce6b717f4181d91a2"></a><!-- doxytag: member="slsReceiverUsers::getReceiverVersion" ref="f206092e2744e12ce6b717f4181d91a2" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t slsReceiverUsers::getReceiverVersion </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get get Receiver Version <dl compact><dt><b>Returns:</b></dt><dd>id </dd></dl>
</div>
</div><p>
<a class="anchor" name="7471d2945e8650eece86258e6ca56156"></a><!-- doxytag: member="slsReceiverUsers::registerCallBackAcquisitionFinished" ref="7471d2945e8650eece86258e6ca56156" args="(void(*func)(int nf, void *), void *arg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::registerCallBackAcquisitionFinished </td>
<td>(</td>
<td class="paramtype">void(*)(int nf, void *)&nbsp;</td>
<td class="paramname"> <em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
register callback for end of acquisition <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>end of acquisition callback. Argument nf is total frames caught </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>nothing </dd></dl>
</div>
</div><p>
<a class="anchor" name="343b9fac505e8c08a7fbf9efdd0f5762"></a><!-- doxytag: member="slsReceiverUsers::registerCallBackRawDataReady" ref="343b9fac505e8c08a7fbf9efdd0f5762" args="(void(*func)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *), void *arg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::registerCallBackRawDataReady </td>
<td>(</td>
<td class="paramtype">void(*)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *)&nbsp;</td>
<td class="paramname"> <em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
register callback to be called when data are available (to process and/or save the data). <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>raw data ready callback. arguments are framenum datapointer datasize file descriptor guidatapointer (NULL, no data required) </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>nothing </dd></dl>
</div>
</div><p>
<a class="anchor" name="5d4bb9244008d0bc570778230d30c5e3"></a><!-- doxytag: member="slsReceiverUsers::registerCallBackStartAcquisition" ref="5d4bb9244008d0bc570778230d30c5e3" args="(int(*func)(char *filepath, char *filename, int fileindex, int datasize, void *), void *arg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::registerCallBackStartAcquisition </td>
<td>(</td>
<td class="paramtype">int(*)(char *filepath, char *filename, int fileindex, int datasize, void *)&nbsp;</td>
<td class="paramname"> <em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
register calbback for starting the acquisition <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>callback to be called when starting the acquisition. Its arguments are filepath filename fileindex data size</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 callback takes care of open,close,write file; 1 callback writes file, we have to open, close it; 2 we open, close, write file, callback does not do anything </dd></dl>
</div>
</div><p>
<a class="anchor" name="ef40b4987367b8a0116bcb66534dd7b7"></a><!-- doxytag: member="slsReceiverUsers::start" ref="ef40b4987367b8a0116bcb66534dd7b7" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int slsReceiverUsers::start </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
starts listening on the TCP port for client comminication <dl compact><dt><b>Returns:</b></dt><dd>0 for success or 1 for FAIL in creating TCP server </dd></dl>
<p>
Referenced by <a class="el" href="mainReceiver_8cpp-source.html#l00025">main()</a>.
</div>
</div><p>
<a class="anchor" name="394001d873a4b7912865a971d4d25f87"></a><!-- doxytag: member="slsReceiverUsers::stop" ref="394001d873a4b7912865a971d4d25f87" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::stop </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
stops listening to the TCP &amp; UDP port and exit receiver program
<p>
Referenced by <a class="el" href="mainReceiver_8cpp-source.html#l00025">main()</a>.
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="8f262724fb99ecd3976214710d82dd18"></a><!-- doxytag: member="slsReceiverUsers::receiver" ref="8f262724fb99ecd3976214710d82dd18" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">slsReceiverTCPIPInterface* <a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">slsReceiverUsers::receiver</a><code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="slsReceiverUsers_8h-source.html#l00087">87</a> of file <a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>.
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,46 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>detectorData.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData.h</h1><a href="detectorData_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
<a name="l00003"></a>00003 <span class="preprocessor">#include &lt;cstring&gt;</span>
<a name="l00004"></a>00004 <span class="preprocessor">#ifndef DETECTOR_DATA_H</span>
<a name="l00005"></a>00005 <span class="preprocessor"></span><span class="preprocessor">#define DETECTOR_DATA_H</span>
<a name="l00006"></a>00006 <span class="preprocessor"></span>
<a name="l00009"></a><a class="code" href="classdetectorData.html">00009</a> <span class="keyword">class </span><a class="code" href="classdetectorData.html">detectorData</a> {
<a name="l00010"></a>00010 <span class="keyword">public</span>:
<a name="l00020"></a><a class="code" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">00020</a> <a class="code" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a>(<span class="keywordtype">double</span> *val=NULL, <span class="keywordtype">double</span> *err=NULL, <span class="keywordtype">double</span> *ang=NULL, <span class="keywordtype">double</span> p_ind=-1, <span class="keyword">const</span> <span class="keywordtype">char</span> *fname=<span class="stringliteral">""</span>, <span class="keywordtype">int</span> np=-1, <span class="keywordtype">int</span> ny=1) : <a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>(val), <a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>(err), <a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>(ang), <a class="code" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a>(p_ind), <a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a>(np), <a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a>(ny){strcpy(<a class="code" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a>,fname);};
<a name="l00025"></a><a class="code" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">00025</a> <a class="code" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">~detectorData</a>() {<span class="keywordflow">if</span> (<a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>) <span class="keyword">delete</span> [] <a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>; <span class="keywordflow">if</span> (<a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>) <span class="keyword">delete</span> [] <a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>; <span class="keywordflow">if</span> (<a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>) <span class="keyword">delete</span> [] <a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>;};
<a name="l00026"></a>00026 <span class="comment">//private:</span>
<a name="l00027"></a>00027 <span class="keywordtype">double</span> *<a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>;
<a name="l00028"></a><a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">00028</a> <span class="keywordtype">double</span> *<a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>;
<a name="l00029"></a><a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">00029</a> <span class="keywordtype">double</span> *<a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>;
<a name="l00030"></a><a class="code" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">00030</a> <span class="keywordtype">double</span> <a class="code" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a>;
<a name="l00031"></a><a class="code" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">00031</a> <span class="keywordtype">char</span> <a class="code" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a>[1000];
<a name="l00032"></a><a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">00032</a> <span class="keywordtype">int</span> <a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a>;
<a name="l00033"></a><a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">00033</a> <span class="keywordtype">int</span> <a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a>;
<a name="l00034"></a>00034 };
<a name="l00035"></a>00035
<a name="l00036"></a>00036
<a name="l00037"></a>00037 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,35 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>detectorData.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData.h File Reference</h1><code>#include &lt;unistd.h&gt;</code><br>
<code>#include &lt;cstring&gt;</code><br>
<p>
<a href="detectorData_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html">detectorData</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) <a href="classdetectorData.html#_details">More...</a><br></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,358 +0,0 @@
BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
font-family: Geneva, Arial, Helvetica, sans-serif;
}
BODY,TD {
font-size: 90%;
}
H1 {
text-align: center;
font-size: 160%;
}
H2 {
font-size: 120%;
}
H3 {
font-size: 100%;
}
CAPTION { font-weight: bold }
DIV.qindex {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.nav {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.navtab {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
TD.navtab {
font-size: 70%;
}
A.qindex {
text-decoration: none;
font-weight: bold;
color: #1A419D;
}
A.qindex:visited {
text-decoration: none;
font-weight: bold;
color: #1A419D
}
A.qindex:hover {
text-decoration: none;
background-color: #ddddff;
}
A.qindexHL {
text-decoration: none;
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
A.qindexHL:hover {
text-decoration: none;
background-color: #6666cc;
color: #ffffff;
}
A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
A.codeRef:link { font-weight: normal; color: #0000FF}
A.codeRef:visited { font-weight: normal; color: #0000FF}
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
.fragment {
font-family: monospace, fixed;
font-size: 95%;
}
PRE.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin-top: 4px;
margin-bottom: 4px;
margin-left: 2px;
margin-right: 8px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
padding-bottom: 4px;
}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
DIV.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
BODY {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
TD.indexkey {
background-color: #e8eef2;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TD.indexvalue {
background-color: #e8eef2;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TR.memlist {
background-color: #f0f0f0;
}
P.formulaDsp { text-align: center; }
IMG.formulaDsp { }
IMG.formulaInl { vertical-align: middle; }
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.mdescRight {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.memItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplParams {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
color: #606060;
background-color: #FAFAFA;
font-size: 80%;
}
.search { color: #003399;
font-weight: bold;
}
FORM.search {
margin-bottom: 0px;
margin-top: 0px;
}
INPUT.search { font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
TD.tiny { font-size: 75%;
}
a {
color: #1A41A8;
}
a:visited {
color: #2A3798;
}
.dirtab { padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
TH.dirtab { background: #e8eef2;
font-weight: bold;
}
HR { height: 1px;
border: none;
border-top: 1px solid black;
}
/* Style for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
padding: 4px;
background-color: #eef3f5;
border-width: 1px;
border-style: solid;
border-color: #dedeee;
-moz-border-radius: 8px 8px 8px 8px;
}
.memname {
white-space: nowrap;
font-weight: bold;
}
.memdoc{
padding-left: 10px;
}
.memproto {
background-color: #d5e1e8;
width: 100%;
border-width: 1px;
border-style: solid;
border-color: #84b0c7;
font-weight: bold;
-moz-border-radius: 8px 8px 8px 8px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
font-style: italic;
}
/* End Styling for detailed member documentation */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin:0.5em;
}
.directory { font-size: 9pt; font-weight: bold; }
.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
.directory > h3 { margin-top: 0; }
.directory p { margin: 0px; white-space: nowrap; }
.directory div { display: none; margin: 0px; }
.directory img { vertical-align: -30%; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,31 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>File Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="detectorData_8h.html">detectorData.h</a> <a href="detectorData_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="mainClient_8cpp.html">mainClient.cpp</a> <a href="mainClient_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="mainReceiver_8cpp.html">mainReceiver.cpp</a> <a href="mainReceiver_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="slsDetectorUsers_8h.html">slsDetectorUsers.h</a> <a href="slsDetectorUsers_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="slsReceiverUsers_8h.html">slsReceiverUsers.h</a> <a href="slsReceiverUsers_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,165 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_v"><span>v</span></a></li>
<li><a href="#index_~"><span>~</span></a></li>
</ul>
</div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
<li>addFrame()
: <a class="el" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">slsDetectorUsers</a><li>angles
: <a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">detectorData</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>closeFile()
: <a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">slsReceiverUsers</a></ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>detectorData()
: <a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a><li>dumpDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
<li>enableAngularConversion()
: <a class="el" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">slsDetectorUsers</a><li>enableCountRateCorrection()
: <a class="el" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">slsDetectorUsers</a><li>enableFlatFieldCorrection()
: <a class="el" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">slsDetectorUsers</a><li>enablePixelMaskCorrection()
: <a class="el" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">slsDetectorUsers</a><li>enableWriteToFile()
: <a class="el" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">slsDetectorUsers</a><li>errors
: <a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">detectorData</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>fileName
: <a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">detectorData</a><li>finalizeDataset()
: <a class="el" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>getBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">slsDetectorUsers</a><li>getCommand()
: <a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">slsDetectorUsers</a><li>getDetectorDeveloper()
: <a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">slsDetectorUsers</a><li>getDetectorFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">slsDetectorUsers</a><li>getDetectorSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">slsDetectorUsers</a><li>getDetectorSettings()
: <a class="el" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">slsDetectorUsers</a><li>getDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">slsDetectorUsers</a><li>getDetectorSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">slsDetectorUsers</a><li>getDetectorStatus()
: <a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">slsDetectorUsers</a><li>getDetectorType()
: <a class="el" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">slsDetectorUsers</a><li>getFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">slsDetectorUsers</a><li>getFileName()
: <a class="el" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">slsDetectorUsers</a><li>getFilePath()
: <a class="el" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">slsDetectorUsers</a><li>getFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">slsDetectorUsers</a><li>getFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">slsDetectorUsers</a><li>getMaximumDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">slsDetectorUsers</a><li>getModuleFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">slsDetectorUsers</a><li>getModuleSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">slsDetectorUsers</a><li>getPositions()
: <a class="el" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">slsDetectorUsers</a><li>getReceiverVersion()
: <a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">slsReceiverUsers</a><li>getThisSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">slsDetectorUsers</a><li>getThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">slsDetectorUsers</a><li>getTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>initDataset()
: <a class="el" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>npoints
: <a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">detectorData</a><li>npy
: <a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">detectorData</a></ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>progressIndex
: <a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">detectorData</a><li>putCommand()
: <a class="el" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>readConfigurationFile()
: <a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">slsDetectorUsers</a><li>receiver
: <a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">slsReceiverUsers</a><li>registerAcquisitionFinishedCallback()
: <a class="el" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">slsDetectorUsers</a><li>registerCallBackAcquisitionFinished()
: <a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">slsReceiverUsers</a><li>registerCallBackRawDataReady()
: <a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">slsReceiverUsers</a><li>registerCallBackStartAcquisition()
: <a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">slsReceiverUsers</a><li>registerConnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">slsDetectorUsers</a><li>registerDataCallback()
: <a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">slsDetectorUsers</a><li>registerDisconnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">slsDetectorUsers</a><li>registerGetI0Callback()
: <a class="el" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">slsDetectorUsers</a><li>registerGetPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">slsDetectorUsers</a><li>registerGoToPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">slsDetectorUsers</a><li>registerGoToPositionNoWaitCallback()
: <a class="el" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">slsDetectorUsers</a><li>registerRawDataCallback()
: <a class="el" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">slsDetectorUsers</a><li>retrieveDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">slsDetectorUsers</a><li>runStatusType()
: <a class="el" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>setBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">slsDetectorUsers</a><li>setBitDepth()
: <a class="el" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">slsDetectorUsers</a><li>setDelayAfterTrigger()
: <a class="el" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">slsDetectorUsers</a><li>setDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">slsDetectorUsers</a><li>setExposurePeriod()
: <a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">slsDetectorUsers</a><li>setExposureTime()
: <a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">slsDetectorUsers</a><li>setFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">slsDetectorUsers</a><li>setFileName()
: <a class="el" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">slsDetectorUsers</a><li>setFilePath()
: <a class="el" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">slsDetectorUsers</a><li>setFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">slsDetectorUsers</a><li>setFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">slsDetectorUsers</a><li>setNumberOfCycles()
: <a class="el" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">slsDetectorUsers</a><li>setNumberOfFrames()
: <a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">slsDetectorUsers</a><li>setNumberOfGates()
: <a class="el" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">slsDetectorUsers</a><li>setOnline()
: <a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">slsDetectorUsers</a><li>setPositions()
: <a class="el" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">slsDetectorUsers</a><li>setReceiverMode()
: <a class="el" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">slsDetectorUsers</a><li>setSettings()
: <a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">slsDetectorUsers</a><li>setThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">slsDetectorUsers</a><li>setTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">slsDetectorUsers</a><li>slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a><li>slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a><li>start()
: <a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">slsReceiverUsers</a><li>startMeasurement()
: <a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">slsDetectorUsers</a><li>stop()
: <a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">slsReceiverUsers</a><li>stopMeasurement()
: <a class="el" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
<li>values
: <a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">detectorData</a></ul>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
<li>~detectorData()
: <a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">detectorData</a><li>~slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">slsDetectorUsers</a><li>~slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">slsReceiverUsers</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,151 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members - Functions</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li id="current"><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_~"><span>~</span></a></li>
</ul>
</div>
<p>
&nbsp;
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
<li>addFrame()
: <a class="el" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>closeFile()
: <a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">slsReceiverUsers</a></ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>detectorData()
: <a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a><li>dumpDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
<li>enableAngularConversion()
: <a class="el" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">slsDetectorUsers</a><li>enableCountRateCorrection()
: <a class="el" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">slsDetectorUsers</a><li>enableFlatFieldCorrection()
: <a class="el" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">slsDetectorUsers</a><li>enablePixelMaskCorrection()
: <a class="el" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">slsDetectorUsers</a><li>enableWriteToFile()
: <a class="el" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>finalizeDataset()
: <a class="el" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>getBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">slsDetectorUsers</a><li>getCommand()
: <a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">slsDetectorUsers</a><li>getDetectorDeveloper()
: <a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">slsDetectorUsers</a><li>getDetectorFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">slsDetectorUsers</a><li>getDetectorSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">slsDetectorUsers</a><li>getDetectorSettings()
: <a class="el" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">slsDetectorUsers</a><li>getDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">slsDetectorUsers</a><li>getDetectorSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">slsDetectorUsers</a><li>getDetectorStatus()
: <a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">slsDetectorUsers</a><li>getDetectorType()
: <a class="el" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">slsDetectorUsers</a><li>getFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">slsDetectorUsers</a><li>getFileName()
: <a class="el" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">slsDetectorUsers</a><li>getFilePath()
: <a class="el" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">slsDetectorUsers</a><li>getFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">slsDetectorUsers</a><li>getFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">slsDetectorUsers</a><li>getMaximumDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">slsDetectorUsers</a><li>getModuleFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">slsDetectorUsers</a><li>getModuleSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">slsDetectorUsers</a><li>getPositions()
: <a class="el" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">slsDetectorUsers</a><li>getReceiverVersion()
: <a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">slsReceiverUsers</a><li>getThisSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">slsDetectorUsers</a><li>getThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">slsDetectorUsers</a><li>getTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>initDataset()
: <a class="el" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>putCommand()
: <a class="el" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>readConfigurationFile()
: <a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">slsDetectorUsers</a><li>registerAcquisitionFinishedCallback()
: <a class="el" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">slsDetectorUsers</a><li>registerCallBackAcquisitionFinished()
: <a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">slsReceiverUsers</a><li>registerCallBackRawDataReady()
: <a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">slsReceiverUsers</a><li>registerCallBackStartAcquisition()
: <a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">slsReceiverUsers</a><li>registerConnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">slsDetectorUsers</a><li>registerDataCallback()
: <a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">slsDetectorUsers</a><li>registerDisconnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">slsDetectorUsers</a><li>registerGetI0Callback()
: <a class="el" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">slsDetectorUsers</a><li>registerGetPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">slsDetectorUsers</a><li>registerGoToPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">slsDetectorUsers</a><li>registerGoToPositionNoWaitCallback()
: <a class="el" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">slsDetectorUsers</a><li>registerRawDataCallback()
: <a class="el" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">slsDetectorUsers</a><li>retrieveDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">slsDetectorUsers</a><li>runStatusType()
: <a class="el" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>setBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">slsDetectorUsers</a><li>setBitDepth()
: <a class="el" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">slsDetectorUsers</a><li>setDelayAfterTrigger()
: <a class="el" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">slsDetectorUsers</a><li>setDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">slsDetectorUsers</a><li>setExposurePeriod()
: <a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">slsDetectorUsers</a><li>setExposureTime()
: <a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">slsDetectorUsers</a><li>setFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">slsDetectorUsers</a><li>setFileName()
: <a class="el" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">slsDetectorUsers</a><li>setFilePath()
: <a class="el" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">slsDetectorUsers</a><li>setFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">slsDetectorUsers</a><li>setFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">slsDetectorUsers</a><li>setNumberOfCycles()
: <a class="el" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">slsDetectorUsers</a><li>setNumberOfFrames()
: <a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">slsDetectorUsers</a><li>setNumberOfGates()
: <a class="el" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">slsDetectorUsers</a><li>setOnline()
: <a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">slsDetectorUsers</a><li>setPositions()
: <a class="el" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">slsDetectorUsers</a><li>setReceiverMode()
: <a class="el" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">slsDetectorUsers</a><li>setSettings()
: <a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">slsDetectorUsers</a><li>setThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">slsDetectorUsers</a><li>setTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">slsDetectorUsers</a><li>slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a><li>slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a><li>start()
: <a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">slsReceiverUsers</a><li>startMeasurement()
: <a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">slsDetectorUsers</a><li>stop()
: <a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">slsReceiverUsers</a><li>stopMeasurement()
: <a class="el" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
<li>~detectorData()
: <a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">detectorData</a><li>~slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">slsDetectorUsers</a><li>~slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">slsReceiverUsers</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,43 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members - Variables</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li id="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
&nbsp;
<p>
<ul>
<li>angles
: <a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">detectorData</a><li>errors
: <a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">detectorData</a><li>fileName
: <a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">detectorData</a><li>npoints
: <a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">detectorData</a><li>npy
: <a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">detectorData</a><li>progressIndex
: <a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">detectorData</a><li>receiver
: <a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">slsReceiverUsers</a><li>values
: <a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">detectorData</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,36 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li id="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
</ul>
</div>
Here is a list of all file members with links to the files they belong to:
<p>
<ul>
<li>dataCallback()
: <a class="el" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">mainClient.cpp</a><li>main()
: <a class="el" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainReceiver.cpp</a>, <a class="el" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainClient.cpp</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,36 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li id="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li id="current"><a href="globals_func.html"><span>Functions</span></a></li>
</ul>
</div>
&nbsp;
<p>
<ul>
<li>dataCallback()
: <a class="el" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">mainClient.cpp</a><li>main()
: <a class="el" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainReceiver.cpp</a>, <a class="el" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainClient.cpp</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,49 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Main Page</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li id="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<h1></h1>
<p>
<h1>API for SLS detectors data acquisition</h1>
<p>
<hr>
<p>
Although the SLS detectors group delvelops several types of detectors (1/2D, counting/integrating etc.) it is common interest of the group to use a common platfor for data acquisition<p>
The architecture of the acquisitions system is intended as follows: <ul>
<li>A socket server running on the detector (or more than one in some special cases) </li>
<li>C++ classes common to all detectors for client-server communication. These can be supplied to users as libraries and embedded also in acquisition systems which are not developed by the SLS </li>
<li>the possibility of using a Qt-based graphical user interface (with eventually root analisys capabilities) </li>
<li>the possibility of running all commands from command line. In order to ensure a fast operation of this so called "text client" the detector parameters should not be re-initialized everytime. For this reason a shared memory block is allocated where the main detector flags and parameters are stored </li>
<li>a Root library for data postprocessing and detector calibration (energy, angle).</li>
</ul>
<a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> is a class to control the detector which should be instantiated by the users in their acquisition software (EPICS, spec etc.). A callback for dislaying the data can be registered. More advanced configuration functions are not implemented and can be written in a configuration file tha can be read/written.<p>
<a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a> is a class to receive the data for detectors with external data receiver (e.g. GOTTHARD). Callbacks can be registered to process the data or save them in specific formats.<p>
<a class="el" href="classdetectorData.html">detectorData</a> is a structure containing the data and additional information which is used to return the data e.g. to the GUI for displaying them.<p>
You can find examples of how this classes can be instatiated in <a class="el" href="mainClient_8cpp.html">mainClient.cpp</a> and <a class="el" href="mainReceiver_8cpp.html">mainReceiver.cpp</a><p>
<dl compact><dt><b>Authors:</b></dt><dd><a href="mailto:anna.bergamaschi@psi.ch">Anna Bergamaschi</a>, <a href="mailto:dhanya.maliakal@psi.ch">Dhanya Maliakal</a> </dd></dl>
<dl compact><dt><b>Version:</b></dt><dd>0.2 <h2>Currently supported detectors</h2>
</dd></dl>
<ul>
<li>MYTHEN </li>
<li>GOTTHARD controls </li>
<li>GOTTHARD data receiver <h3>Coming soon</h3>
</li>
</ul>
<ul>
<li>EIGER </li>
</ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,97 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainClient.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainClient.cpp</h1><a href="mainClient_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="slsDetectorUsers_8h.html">slsDetectorUsers.h</a>"</span>
<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="detectorData_8h.html">detectorData.h</a>"</span>
<a name="l00016"></a>00016
<a name="l00017"></a>00017
<a name="l00019"></a><a class="code" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">00019</a> <span class="keywordtype">int</span> <a class="code" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">dataCallback</a>(<a class="code" href="classdetectorData.html">detectorData</a> *pData, <span class="keywordtype">int</span> iframe, <span class="keywordtype">void</span> *pArg)
<a name="l00020"></a>00020 {
<a name="l00021"></a>00021 std::cout &lt;&lt; <span class="stringliteral">"dataCallback: "</span> &lt;&lt; pData-&gt;<a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a> &lt;&lt; <span class="stringliteral">" "</span> &lt;&lt; pData-&gt;<a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a> &lt;&lt; <span class="stringliteral">"Frame number: "</span> &lt;&lt; iframe &lt;&lt; std::endl;
<a name="l00022"></a>00022 }
<a name="l00023"></a>00023
<a name="l00024"></a>00024
<a name="l00026"></a><a class="code" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">00026</a> <span class="keywordtype">int</span> <a class="code" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[]) {
<a name="l00027"></a>00027 <span class="keywordtype">int</span> <span class="keywordtype">id</span>=0;
<a name="l00028"></a>00028 <span class="keywordtype">int</span> status;
<a name="l00030"></a>00030 <span class="keywordflow">if</span> (argc&gt;=3)
<a name="l00031"></a>00031 <span class="keywordtype">id</span>=atoi(argv[2]);
<a name="l00032"></a>00032
<a name="l00033"></a>00033
<a name="l00034"></a>00034
<a name="l00036"></a>00036 <a class="code" href="classslsDetectorUsers.html">slsDetectorUsers</a> *pDetector = <span class="keyword">new</span> <a class="code" href="classslsDetectorUsers.html">slsDetectorUsers</a> (<span class="keywordtype">id</span>);
<a name="l00037"></a>00037
<a name="l00038"></a>00038
<a name="l00040"></a>00040 <span class="keywordflow">if</span> (argc&gt;=2)
<a name="l00041"></a>00041 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">readConfigurationFile</a>(argv[1]);
<a name="l00042"></a>00042
<a name="l00044"></a>00044 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">setOnline</a>(1);
<a name="l00045"></a>00045
<a name="l00047"></a>00047 <span class="keywordflow">if</span> (argc&gt;=3)
<a name="l00048"></a>00048 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">retrieveDetectorSetup</a>( argv[2]);
<a name="l00049"></a>00049 <span class="keywordflow">else</span>{
<a name="l00051"></a>00051 <span class="keywordtype">int</span> minX, minY=0, sizeX, sizeY=1;
<a name="l00052"></a>00052 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">getDetectorSize</a>(minX, minY, sizeX, sizeY);
<a name="l00053"></a>00053 std::cout &lt;&lt; <span class="stringliteral">"X: Start="</span> &lt;&lt; minX &lt;&lt; <span class="stringliteral">", Size= "</span> &lt;&lt; sizeX &lt;&lt; std::endl;
<a name="l00054"></a>00054 std::cout &lt;&lt; <span class="stringliteral">"Y: Start="</span> &lt;&lt; minY &lt;&lt; <span class="stringliteral">", Size= "</span> &lt;&lt; sizeY &lt;&lt; std::endl;
<a name="l00055"></a>00055 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">setDetectorSize</a>(0,0,7680,1);
<a name="l00056"></a>00056 std::cout &lt;&lt; pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">getDetectorDeveloper</a>() &lt;&lt; std::endl;
<a name="l00057"></a>00057
<a name="l00059"></a>00059 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">registerDataCallback</a>(&amp;<a class="code" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">dataCallback</a>, NULL);
<a name="l00060"></a>00060
<a name="l00062"></a>00062 status = pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>();
<a name="l00063"></a>00063 <span class="keywordflow">if</span> (status != 0){
<a name="l00064"></a>00064 std::cout &lt;&lt; <span class="stringliteral">"Detector not ready: "</span> &lt;&lt; <a class="code" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">slsDetectorUsers::runStatusType</a>(status) &lt;&lt; std::endl;
<a name="l00065"></a>00065 <span class="keywordflow">return</span> 1;
<a name="l00066"></a>00066 }
<a name="l00067"></a>00067
<a name="l00069"></a>00069 std::cout &lt;&lt; <span class="stringliteral">"settings: "</span> &lt;&lt; <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">slsDetectorUsers::getDetectorSettings</a>(pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>()) &lt;&lt; std::endl;
<a name="l00070"></a>00070 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>(<a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">slsDetectorUsers::getDetectorSettings</a>(<span class="stringliteral">"veryhighgain"</span>));
<a name="l00071"></a>00071 std::cout &lt;&lt; <span class="stringliteral">"settings: "</span> &lt;&lt; <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">slsDetectorUsers::getDetectorSettings</a>(pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>()) &lt;&lt; std::endl;
<a name="l00072"></a>00072
<a name="l00074"></a>00074 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">setExposureTime</a>(10000000);
<a name="l00075"></a>00075
<a name="l00077"></a>00077 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">setExposurePeriod</a>(100000000);
<a name="l00078"></a>00078
<a name="l00080"></a>00080 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">setNumberOfFrames</a>(30);
<a name="l00081"></a>00081 }
<a name="l00083"></a>00083 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">startMeasurement</a>();
<a name="l00084"></a>00084
<a name="l00085"></a>00085 <span class="keywordflow">while</span> (1) {
<a name="l00086"></a>00086 usleep(100000);
<a name="l00087"></a>00087 status = pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>();
<a name="l00088"></a>00088 <span class="keywordflow">if</span> (status == 0 || status == 1|| status == 3)
<a name="l00089"></a>00089 <span class="keywordflow">break</span>;
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="keywordtype">char</span> *temp[] = {<span class="stringliteral">"receiver"</span>, NULL};
<a name="l00094"></a>00094 std::cout &lt;&lt; <span class="stringliteral">"answer to a get command:"</span> &lt;&lt; pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">getCommand</a>(1,temp,0) &lt;&lt; std::endl;
<a name="l00095"></a>00095
<a name="l00096"></a>00096 <span class="keyword">delete</span> pDetector;
<a name="l00097"></a>00097
<a name="l00098"></a>00098 <span class="keywordflow">return</span> 0;
<a name="l00099"></a>00099 }
<a name="l00100"></a>00100
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,132 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainClient.cpp File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainClient.cpp File Reference</h1><code>#include &lt;iostream&gt;</code><br>
<code>#include &quot;<a class="el" href="slsDetectorUsers_8h-source.html">slsDetectorUsers.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="detectorData_8h-source.html">detectorData.h</a>&quot;</code><br>
<p>
<a href="mainClient_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">dataCallback</a> (<a class="el" href="classdetectorData.html">detectorData</a> *pData, int iframe, void *pArg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This file is an example of how to implement the <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> class You can compile it linking it to the slsDetector library<p>
gcc <a class="el" href="mainClient_8cpp.html">mainClient.cpp</a> -L lib -l SlsDetector -lm -lpthread<p>
where lib is the location of libSlsDetector.so
<p>
Definition in file <a class="el" href="mainClient_8cpp-source.html">mainClient.cpp</a>.<hr><h2>Function Documentation</h2>
<a class="anchor" name="21ef7438e7f0ed24a190513fb8e6af8a"></a><!-- doxytag: member="mainClient.cpp::dataCallback" ref="21ef7438e7f0ed24a190513fb8e6af8a" args="(detectorData *pData, int iframe, void *pArg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int dataCallback </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classdetectorData.html">detectorData</a> *&nbsp;</td>
<td class="paramname"> <em>pData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>iframe</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>pArg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Definition of the data callback which simply prints out the number of points received and teh frame number
<p>
Definition at line <a class="el" href="mainClient_8cpp-source.html#l00019">19</a> of file <a class="el" href="mainClient_8cpp-source.html">mainClient.cpp</a>.
<p>
References <a class="el" href="detectorData_8h-source.html#l00032">detectorData::npoints</a>, and <a class="el" href="detectorData_8h-source.html#l00033">detectorData::npy</a>.
<p>
Referenced by <a class="el" href="mainClient_8cpp-source.html#l00026">main()</a>.
</div>
</div><p>
<a class="anchor" name="0ddf1224851353fc92bfbff6f499fa97"></a><!-- doxytag: member="mainClient.cpp::main" ref="0ddf1224851353fc92bfbff6f499fa97" args="(int argc, char *argv[])" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
example of a main program using the <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> class
<p>
if specified, argv[2] is used as detector ID (default is 0)<p>
<a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> is instantiated<p>
if specified, argv[1] is used as detector config file (necessary at least the first time it is called to properly configure advanced settings in the shared memory)<p>
Setting the detector online (should be by default<p>
Load setup file if argv[2] specified<p>
defining the detector size<p>
registering data callback<p>
checking detector status and exiting if not idle<p>
checking and setting detector settings<p>
Settings exposure time to 10ms<p>
Settings exposure time to 100ms<p>
Settingsnumber of frames to 30<p>
start measurement<p>
returning when acquisition is finished or data are avilable
<p>
Definition at line <a class="el" href="mainClient_8cpp-source.html#l00026">26</a> of file <a class="el" href="mainClient_8cpp-source.html">mainClient.cpp</a>.
<p>
References <a class="el" href="mainClient_8cpp-source.html#l00019">dataCallback()</a>, <a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">slsDetectorUsers::getCommand()</a>, <a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">slsDetectorUsers::getDetectorDeveloper()</a>, <a class="el" href="slsDetectorUsers_8h-source.html#l00575">slsDetectorUsers::getDetectorSettings()</a>, <a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">slsDetectorUsers::getDetectorSize()</a>, <a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">slsDetectorUsers::getDetectorStatus()</a>, <a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">slsDetectorUsers::readConfigurationFile()</a>, <a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">slsDetectorUsers::registerDataCallback()</a>, <a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">slsDetectorUsers::retrieveDetectorSetup()</a>, <a class="el" href="slsDetectorUsers_8h-source.html#l00557">slsDetectorUsers::runStatusType()</a>, <a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">slsDetectorUsers::setDetectorSize()</a>, <a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">slsDetectorUsers::setExposurePeriod()</a>, <a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">slsDetectorUsers::setExposureTime()</a>, <a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">slsDetectorUsers::setNumberOfFrames()</a>, <a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">slsDetectorUsers::setOnline()</a>, <a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">slsDetectorUsers::setSettings()</a>, and <a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">slsDetectorUsers::startMeasurement()</a>.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,112 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainReceiver.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainReceiver.cpp</h1><a href="mainReceiver_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* A simple server in the internet domain using TCP</span>
<a name="l00002"></a>00002 <span class="comment"> The port number is passed as an argument </span>
<a name="l00003"></a>00003 <span class="comment">*/</span>
<a name="l00004"></a>00004
<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="slsReceiverUsers_8h.html">slsReceiverUsers.h</a>"</span>
<a name="l00019"></a>00019
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00022"></a>00022 <span class="keyword">using namespace </span>std;
<a name="l00023"></a>00023
<a name="l00024"></a>00024
<a name="l00025"></a><a class="code" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">00025</a> <span class="keywordtype">int</span> <a class="code" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[]) {
<a name="l00026"></a>00026 <span class="keywordtype">int</span> ret = 0;
<a name="l00027"></a>00027
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="comment">/*</span>
<a name="l00030"></a>00030 <span class="comment"> Instantiate the slsReceieverUsers class</span>
<a name="l00031"></a>00031 <span class="comment"> The port number is passed as an argument</span>
<a name="l00032"></a>00032 <span class="comment">*/</span>
<a name="l00033"></a>00033 <a class="code" href="classslsReceiverUsers.html">slsReceiverUsers</a> *receiver = <span class="keyword">new</span> <a class="code" href="classslsReceiverUsers.html">slsReceiverUsers</a>(argc, argv, ret);
<a name="l00034"></a>00034
<a name="l00035"></a>00035 <span class="comment">/*</span>
<a name="l00036"></a>00036 <span class="comment"> return if could not open TCP socket for interfacing to client </span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038 <span class="keywordflow">if</span>(ret==1)
<a name="l00039"></a>00039 <span class="keywordflow">return</span> -1;
<a name="l00040"></a>00040
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="comment">/*register callbacks */</span>
<a name="l00043"></a>00043
<a name="l00044"></a>00044
<a name="l00045"></a>00045 <span class="comment">/*</span>
<a name="l00046"></a>00046 <span class="comment"> callback arguments are</span>
<a name="l00047"></a>00047 <span class="comment"> filepath</span>
<a name="l00048"></a>00048 <span class="comment"> filename</span>
<a name="l00049"></a>00049 <span class="comment"> fileindex</span>
<a name="l00050"></a>00050 <span class="comment"> datasize</span>
<a name="l00051"></a>00051 <span class="comment"> </span>
<a name="l00052"></a>00052 <span class="comment"> return value is </span>
<a name="l00053"></a>00053 <span class="comment"> 0 raw data ready callback takes care of open,close,write file</span>
<a name="l00054"></a>00054 <span class="comment"> 1 callback writes file, we have to open, close it</span>
<a name="l00055"></a>00055 <span class="comment"> 2 we open, close, write file, callback does not do anything</span>
<a name="l00056"></a>00056 <span class="comment"></span>
<a name="l00057"></a>00057 <span class="comment"></span>
<a name="l00058"></a>00058 <span class="comment"> registerCallBackStartAcquisition(int (*func)(char*, char*,int, int, void*),void *arg);</span>
<a name="l00059"></a>00059 <span class="comment"> */</span>
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="comment">//receiver-&gt;registerCallBackStartAcquisition(func,arg);</span>
<a name="l00062"></a>00062
<a name="l00063"></a>00063
<a name="l00064"></a>00064 <span class="comment">/*</span>
<a name="l00065"></a>00065 <span class="comment"> callback argument is</span>
<a name="l00066"></a>00066 <span class="comment"> total farmes caught</span>
<a name="l00067"></a>00067 <span class="comment"> registerCallBackAcquisitionFinished(void (*func)(int, void*),void *arg);</span>
<a name="l00068"></a>00068 <span class="comment"> */</span>
<a name="l00069"></a>00069
<a name="l00070"></a>00070
<a name="l00071"></a>00071 <span class="comment">//receiver-&gt;registerCallBackAcquisitionFinished(func,arg);</span>
<a name="l00072"></a>00072
<a name="l00073"></a>00073
<a name="l00074"></a>00074
<a name="l00075"></a>00075 <span class="comment">/*</span>
<a name="l00076"></a>00076 <span class="comment"> args to raw data ready callback are</span>
<a name="l00077"></a>00077 <span class="comment"> framenum</span>
<a name="l00078"></a>00078 <span class="comment"> datapointer</span>
<a name="l00079"></a>00079 <span class="comment"> file descriptor</span>
<a name="l00080"></a>00080 <span class="comment"> guidatapointer (NULL, no data required)</span>
<a name="l00081"></a>00081 <span class="comment"> </span>
<a name="l00082"></a>00082 <span class="comment"> NEVER DELETE THE DATA POINTER</span>
<a name="l00083"></a>00083 <span class="comment"> REMEMBER THAT THE CALLBACK IS BLOCKING</span>
<a name="l00084"></a>00084 <span class="comment"></span>
<a name="l00085"></a>00085 <span class="comment"> registerCallBackRawDataReady(void (*func)(int, char*, FILE*, char*, void*),void *arg);</span>
<a name="l00086"></a>00086 <span class="comment"></span>
<a name="l00087"></a>00087 <span class="comment"> */</span>
<a name="l00088"></a>00088
<a name="l00089"></a>00089 <span class="comment">//receiver-&gt;registerCallBackRawDataReady(func,arg);</span>
<a name="l00090"></a>00090
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="comment">/* start receiver to listen for commands from the client (and data from detectors when expected */</span>
<a name="l00093"></a>00093 receiver-&gt;<a class="code" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a>();
<a name="l00094"></a>00094
<a name="l00096"></a>00096 usleep(10000000);
<a name="l00097"></a>00097
<a name="l00099"></a>00099 receiver-&gt;<a class="code" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a>();
<a name="l00100"></a>00100
<a name="l00101"></a>00101 <span class="keywordflow">return</span> 0;
<a name="l00102"></a>00102 }
<a name="l00103"></a>00103
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,73 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainReceiver.cpp File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainReceiver.cpp File Reference</h1><code>#include &quot;<a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>&quot;</code><br>
<code>#include &lt;iostream&gt;</code><br>
<p>
<a href="mainReceiver_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This file is an example of how to implement the <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> class You can compile it linking it to the slsDetector library<p>
gcc <a class="el" href="mainReceiver_8cpp.html">mainReceiver.cpp</a> -L lib -l SlsDetector -lm -lpthread<p>
where lib is the location of libSlsDetector.so
<p>
Definition in file <a class="el" href="mainReceiver_8cpp-source.html">mainReceiver.cpp</a>.<hr><h2>Function Documentation</h2>
<a class="anchor" name="0ddf1224851353fc92bfbff6f499fa97"></a><!-- doxytag: member="mainReceiver.cpp::main" ref="0ddf1224851353fc92bfbff6f499fa97" args="(int argc, char *argv[])" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="mainReceiver_8cpp-source.html#l00025">25</a> of file <a class="el" href="mainReceiver_8cpp-source.html">mainReceiver.cpp</a>.
<p>
References <a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">slsReceiverUsers::start()</a>, and <a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">slsReceiverUsers::stop()</a>.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,22 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Namespace Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<h1>Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue"></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,24 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>std Namespace Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<h1>std Namespace Reference</h1>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,258 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsDetectorUsers.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsDetectorUsers.h</h1><a href="slsDetectorUsers_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef SLS_DETECTOR_USERS_H</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define SLS_DETECTOR_USERS_H</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004
<a name="l00005"></a>00005
<a name="l00016"></a>00016 <span class="keyword">class </span><a class="code" href="classdetectorData.html">detectorData</a>;
<a name="l00017"></a>00017 <span class="keyword">class </span>multiSlsDetector;
<a name="l00018"></a>00018 <span class="keyword">class </span>multiSlsDetectorCommand;
<a name="l00019"></a>00019
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;stdint.h&gt;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;string&gt;</span>
<a name="l00023"></a>00023
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="keyword">using namespace </span>std;
<a name="l00026"></a>00026
<a name="l00027"></a>00027
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="comment">/*</span>
<a name="l00030"></a>00030 <span class="comment"> \mainpage </span>
<a name="l00031"></a>00031 <span class="comment">&lt;CENTER&gt;&lt;H1&gt;API for SLS detectors data acquisition&lt;/H1&gt;&lt;/CENTER&gt;</span>
<a name="l00032"></a>00032 <span class="comment">&lt;HR&gt;</span>
<a name="l00033"></a>00033 <span class="comment">*/</span>
<a name="l00084"></a><a class="code" href="classslsDetectorUsers.html">00084</a> <span class="keyword">class </span><a class="code" href="classslsDetectorUsers.html">slsDetectorUsers</a>
<a name="l00085"></a>00085 {
<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="keyword">public</span>:
<a name="l00088"></a>00088
<a name="l00090"></a>00090 <a class="code" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>=0);
<a name="l00091"></a>00091
<a name="l00092"></a>00092
<a name="l00094"></a>00094 <span class="keyword">virtual</span> <a class="code" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">~slsDetectorUsers</a>();
<a name="l00095"></a>00095
<a name="l00096"></a>00096
<a name="l00097"></a>00097
<a name="l00102"></a>00102 string <a class="code" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">getDetectorDeveloper</a>();
<a name="l00103"></a>00103
<a name="l00104"></a>00104
<a name="l00105"></a>00105
<a name="l00110"></a>00110 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">setOnline</a>(<span class="keywordtype">int</span> <span class="keyword">const</span> online=-1);
<a name="l00111"></a>00111
<a name="l00116"></a>00116 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">startMeasurement</a>();
<a name="l00117"></a>00117
<a name="l00122"></a>00122 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">stopMeasurement</a>();
<a name="l00123"></a>00123
<a name="l00128"></a>00128 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>();
<a name="l00129"></a>00129
<a name="l00133"></a>00133 string <a class="code" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">getFilePath</a>();
<a name="l00134"></a>00134
<a name="l00140"></a>00140 string <a class="code" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">setFilePath</a>(string s);
<a name="l00141"></a>00141
<a name="l00146"></a>00146 string <a class="code" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">getFileName</a>();
<a name="l00147"></a>00147
<a name="l00154"></a>00154 string <a class="code" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">setFileName</a>(string s);
<a name="l00155"></a>00155
<a name="l00160"></a>00160 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">getFileIndex</a>();
<a name="l00161"></a>00161
<a name="l00167"></a>00167 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">setFileIndex</a>(<span class="keywordtype">int</span> i);
<a name="l00168"></a>00168
<a name="l00173"></a>00173 string <a class="code" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">getFlatFieldCorrectionDir</a>();
<a name="l00174"></a>00174
<a name="l00180"></a>00180 string <a class="code" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">setFlatFieldCorrectionDir</a>(string dir);
<a name="l00181"></a>00181
<a name="l00186"></a>00186 string <a class="code" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">getFlatFieldCorrectionFile</a>();
<a name="l00187"></a>00187
<a name="l00193"></a>00193 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">setFlatFieldCorrectionFile</a>(string fname=<span class="stringliteral">""</span>);
<a name="l00194"></a>00194
<a name="l00195"></a>00195
<a name="l00196"></a>00196
<a name="l00202"></a>00202 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">enableFlatFieldCorrection</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00203"></a>00203
<a name="l00209"></a>00209 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">enableCountRateCorrection</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00210"></a>00210
<a name="l00216"></a>00216 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">enablePixelMaskCorrection</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00217"></a>00217
<a name="l00223"></a>00223 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">enableAngularConversion</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00224"></a>00224
<a name="l00227"></a>00227 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">enableWriteToFile</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00228"></a>00228
<a name="l00235"></a>00235 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">setPositions</a>(<span class="keywordtype">int</span> nPos, <span class="keywordtype">double</span> *pos);
<a name="l00236"></a>00236
<a name="l00242"></a>00242 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">getPositions</a>(<span class="keywordtype">double</span> *pos=NULL);
<a name="l00243"></a>00243
<a name="l00252"></a>00252 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">setDetectorSize</a>(<span class="keywordtype">int</span> x0=-1, <span class="keywordtype">int</span> y0=-1, <span class="keywordtype">int</span> nx=-1, <span class="keywordtype">int</span> ny=-1);
<a name="l00253"></a>00253
<a name="l00254"></a>00254
<a name="l00263"></a>00263 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">getDetectorSize</a>(<span class="keywordtype">int</span> &amp;x0, <span class="keywordtype">int</span> &amp;y0, <span class="keywordtype">int</span> &amp;nx, <span class="keywordtype">int</span> &amp;ny);
<a name="l00272"></a>00272 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">getMaximumDetectorSize</a>(<span class="keywordtype">int</span> &amp;nx, <span class="keywordtype">int</span> &amp;ny);
<a name="l00273"></a>00273
<a name="l00274"></a>00274
<a name="l00280"></a>00280 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">setBitDepth</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00281"></a>00281
<a name="l00282"></a>00282
<a name="l00283"></a>00283
<a name="l00289"></a>00289 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>(<span class="keywordtype">int</span> isettings=-1);
<a name="l00290"></a>00290
<a name="l00295"></a>00295 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">getThresholdEnergy</a>();
<a name="l00296"></a>00296
<a name="l00297"></a>00297
<a name="l00303"></a>00303 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">setThresholdEnergy</a>(<span class="keywordtype">int</span> e_eV);
<a name="l00304"></a>00304
<a name="l00309"></a>00309 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">getBeamEnergy</a>();
<a name="l00310"></a>00310
<a name="l00311"></a>00311
<a name="l00317"></a>00317 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">setBeamEnergy</a>(<span class="keywordtype">int</span> e_eV);
<a name="l00318"></a>00318
<a name="l00326"></a>00326 <span class="keywordtype">double</span> <a class="code" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">setExposureTime</a>(<span class="keywordtype">double</span> t=-1, <span class="keywordtype">bool</span> inseconds=<span class="keyword">false</span>);
<a name="l00327"></a>00327
<a name="l00334"></a>00334 <span class="keywordtype">double</span> <a class="code" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">setExposurePeriod</a>(<span class="keywordtype">double</span> t=-1, <span class="keywordtype">bool</span> inseconds=<span class="keyword">false</span>);
<a name="l00335"></a>00335
<a name="l00342"></a>00342 <span class="keywordtype">double</span> <a class="code" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">setDelayAfterTrigger</a>(<span class="keywordtype">double</span> t=-1, <span class="keywordtype">bool</span> inseconds=<span class="keyword">false</span>);
<a name="l00343"></a>00343
<a name="l00349"></a>00349 int64_t <a class="code" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">setNumberOfGates</a>(int64_t t=-1);
<a name="l00350"></a>00350
<a name="l00356"></a>00356 int64_t <a class="code" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">setNumberOfFrames</a>(int64_t t=-1);
<a name="l00357"></a>00357
<a name="l00363"></a>00363 int64_t <a class="code" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">setNumberOfCycles</a>(int64_t t=-1);
<a name="l00364"></a>00364
<a name="l00365"></a>00365
<a name="l00371"></a>00371 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">setTimingMode</a>(<span class="keywordtype">int</span> pol=-1);
<a name="l00372"></a>00372
<a name="l00378"></a>00378 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">readConfigurationFile</a>(string <span class="keyword">const</span> fname);
<a name="l00379"></a>00379
<a name="l00380"></a>00380
<a name="l00387"></a>00387 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">dumpDetectorSetup</a>(string <span class="keyword">const</span> fname);
<a name="l00394"></a>00394 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">retrieveDetectorSetup</a>(string <span class="keyword">const</span> fname);
<a name="l00395"></a>00395
<a name="l00400"></a>00400 string <a class="code" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">getDetectorType</a>();
<a name="l00401"></a>00401
<a name="l00407"></a>00407 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">setReceiverMode</a>(<span class="keywordtype">int</span> n=-1);
<a name="l00408"></a>00408
<a name="l00414"></a>00414 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">registerDataCallback</a>(<span class="keywordtype">int</span>( *userCallback)(<a class="code" href="classdetectorData.html">detectorData</a>* d, <span class="keywordtype">int</span> f, <span class="keywordtype">void</span>*), <span class="keywordtype">void</span> *pArg);
<a name="l00415"></a>00415
<a name="l00421"></a>00421 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">registerRawDataCallback</a>(<span class="keywordtype">int</span>( *userCallback)(<span class="keywordtype">double</span>* p, <span class="keywordtype">int</span> n, <span class="keywordtype">void</span>*), <span class="keywordtype">void</span> *pArg);
<a name="l00422"></a>00422
<a name="l00428"></a>00428 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">initDataset</a>(<span class="keywordtype">int</span> refresh);
<a name="l00429"></a>00429
<a name="l00430"></a>00430
<a name="l00441"></a>00441 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">addFrame</a>(<span class="keywordtype">double</span> *data, <span class="keywordtype">double</span> pos, <span class="keywordtype">double</span> i0, <span class="keywordtype">double</span> t, string fname, <span class="keywordtype">double</span> var);
<a name="l00442"></a>00442
<a name="l00451"></a>00451 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">finalizeDataset</a>(<span class="keywordtype">double</span> *a, <span class="keywordtype">double</span> *v, <span class="keywordtype">double</span> *e, <span class="keywordtype">int</span> &amp;np);
<a name="l00452"></a>00452
<a name="l00457"></a>00457 int64_t <a class="code" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">getModuleFirmwareVersion</a>();
<a name="l00458"></a>00458
<a name="l00464"></a>00464 int64_t <a class="code" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">getModuleSerialNumber</a>(<span class="keywordtype">int</span> imod=-1);
<a name="l00465"></a>00465
<a name="l00470"></a>00470 int64_t <a class="code" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">getDetectorFirmwareVersion</a>();
<a name="l00471"></a>00471
<a name="l00476"></a>00476 int64_t <a class="code" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">getDetectorSerialNumber</a>();
<a name="l00477"></a>00477
<a name="l00482"></a>00482 int64_t <a class="code" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">getDetectorSoftwareVersion</a>();
<a name="l00483"></a>00483
<a name="l00488"></a>00488 int64_t <a class="code" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">getThisSoftwareVersion</a>();
<a name="l00489"></a>00489
<a name="l00495"></a>00495 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">registerAcquisitionFinishedCallback</a>(<span class="keywordtype">int</span>( *func)(<span class="keywordtype">double</span>,<span class="keywordtype">int</span>, <span class="keywordtype">void</span>*), <span class="keywordtype">void</span> *pArg);
<a name="l00496"></a>00496
<a name="l00502"></a>00502 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">registerGetPositionCallback</a>( <span class="keywordtype">double</span> (*func)(<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00507"></a>00507 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">registerConnectChannelsCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00512"></a>00512 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">registerDisconnectChannelsCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00517"></a>00517 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">registerGoToPositionCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">double</span>,<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00522"></a>00522 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">registerGoToPositionNoWaitCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">double</span>,<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00527"></a>00527 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">registerGetI0Callback</a>( <span class="keywordtype">double</span> (*func)(<span class="keywordtype">int</span>,<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00528"></a>00528
<a name="l00536"></a>00536 string <a class="code" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">putCommand</a>(<span class="keywordtype">int</span> narg, <span class="keywordtype">char</span> *args[], <span class="keywordtype">int</span> pos=-1);
<a name="l00537"></a>00537
<a name="l00545"></a>00545 string <a class="code" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">getCommand</a>(<span class="keywordtype">int</span> narg, <span class="keywordtype">char</span> *args[], <span class="keywordtype">int</span> pos=-1);
<a name="l00546"></a>00546
<a name="l00547"></a>00547 <span class="comment">/************************************************************************</span>
<a name="l00548"></a>00548 <span class="comment"></span>
<a name="l00549"></a>00549 <span class="comment"> STATIC FUNCTIONS</span>
<a name="l00550"></a>00550 <span class="comment"></span>
<a name="l00551"></a>00551 <span class="comment"> *********************************************************************/</span>
<a name="l00552"></a>00552
<a name="l00557"></a><a class="code" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">00557</a> <span class="keyword">static</span> string <a class="code" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">runStatusType</a>(<span class="keywordtype">int</span> s){ \
<a name="l00558"></a>00558 <span class="keywordflow">switch</span> (s) { \
<a name="l00559"></a>00559 <span class="keywordflow">case</span> 0: <span class="keywordflow">return</span> string(<span class="stringliteral">"idle"</span>); \
<a name="l00560"></a>00560 <span class="keywordflow">case</span> 1: <span class="keywordflow">return</span> string(<span class="stringliteral">"error"</span>); \
<a name="l00561"></a>00561 <span class="keywordflow">case</span> 2: <span class="keywordflow">return</span> string(<span class="stringliteral">"waiting"</span>); \
<a name="l00562"></a>00562 <span class="keywordflow">case</span> 3: <span class="keywordflow">return</span> string(<span class="stringliteral">"finished"</span>); \
<a name="l00563"></a>00563 <span class="keywordflow">case</span> 4: <span class="keywordflow">return</span> string(<span class="stringliteral">"data"</span>); \
<a name="l00564"></a>00564 <span class="keywordflow">case</span> 5: <span class="keywordflow">return</span> string(<span class="stringliteral">"running"</span>); \
<a name="l00565"></a>00565 <span class="keywordflow">default</span>: <span class="keywordflow">return</span> string(<span class="stringliteral">"unknown"</span>); \
<a name="l00566"></a>00566 }};
<a name="l00567"></a>00567
<a name="l00568"></a>00568
<a name="l00569"></a>00569
<a name="l00575"></a><a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">00575</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">getDetectorSettings</a>(string s){ \
<a name="l00576"></a>00576 <span class="keywordflow">if</span> (s==<span class="stringliteral">"standard"</span>) <span class="keywordflow">return</span> 0; \
<a name="l00577"></a>00577 <span class="keywordflow">if</span> (s==<span class="stringliteral">"fast"</span>) <span class="keywordflow">return</span> 1; \
<a name="l00578"></a>00578 <span class="keywordflow">if</span> (s==<span class="stringliteral">"highgain"</span>) <span class="keywordflow">return</span> 2; \
<a name="l00579"></a>00579 <span class="keywordflow">if</span> (s==<span class="stringliteral">"dynamicgain"</span>) <span class="keywordflow">return</span> 3; \
<a name="l00580"></a>00580 <span class="keywordflow">if</span> (s==<span class="stringliteral">"lowgain"</span>) <span class="keywordflow">return</span> 4; \
<a name="l00581"></a>00581 <span class="keywordflow">if</span> (s==<span class="stringliteral">"mediumgain"</span>) <span class="keywordflow">return</span> 5; \
<a name="l00582"></a>00582 <span class="keywordflow">if</span> (s==<span class="stringliteral">"veryhighgain"</span>) <span class="keywordflow">return</span> 6; \
<a name="l00583"></a>00583 <span class="keywordflow">return</span> -1; };
<a name="l00584"></a>00584
<a name="l00589"></a><a class="code" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">00589</a> <span class="keyword">static</span> string <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">getDetectorSettings</a>(<span class="keywordtype">int</span> s){\
<a name="l00590"></a>00590 <span class="keywordflow">switch</span>(s) { \
<a name="l00591"></a>00591 <span class="keywordflow">case</span> 0: <span class="keywordflow">return</span> string(<span class="stringliteral">"standard"</span>);\
<a name="l00592"></a>00592 <span class="keywordflow">case</span> 1: <span class="keywordflow">return</span> string(<span class="stringliteral">"fast"</span>);\
<a name="l00593"></a>00593 <span class="keywordflow">case</span> 2: <span class="keywordflow">return</span> string(<span class="stringliteral">"highgain"</span>);\
<a name="l00594"></a>00594 <span class="keywordflow">case</span> 3: <span class="keywordflow">return</span> string(<span class="stringliteral">"dynamicgain"</span>); \
<a name="l00595"></a>00595 <span class="keywordflow">case</span> 4: <span class="keywordflow">return</span> string(<span class="stringliteral">"lowgain"</span>); \
<a name="l00596"></a>00596 <span class="keywordflow">case</span> 5: <span class="keywordflow">return</span> string(<span class="stringliteral">"mediumgain"</span>); \
<a name="l00597"></a>00597 <span class="keywordflow">case</span> 6: <span class="keywordflow">return</span> string(<span class="stringliteral">"veryhighgain"</span>); \
<a name="l00598"></a>00598 <span class="keywordflow">default</span>: <span class="keywordflow">return</span> string(<span class="stringliteral">"undefined"</span>); \
<a name="l00599"></a>00599 }};
<a name="l00600"></a>00600
<a name="l00601"></a>00601
<a name="l00602"></a>00602
<a name="l00609"></a><a class="code" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">00609</a> <span class="keyword">static</span> string <a class="code" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">getTimingMode</a>(<span class="keywordtype">int</span> f){ \
<a name="l00610"></a>00610 <span class="keywordflow">switch</span>(f) { \
<a name="l00611"></a>00611 <span class="keywordflow">case</span> 0: <span class="keywordflow">return</span> string( <span class="stringliteral">"auto"</span>); \
<a name="l00612"></a>00612 <span class="keywordflow">case</span> 1: <span class="keywordflow">return</span> string(<span class="stringliteral">"trigger"</span>); \
<a name="l00613"></a>00613 <span class="keywordflow">case</span> 2: <span class="keywordflow">return</span> string(<span class="stringliteral">"ro_trigger"</span>); \
<a name="l00614"></a>00614 <span class="keywordflow">case</span> 3: <span class="keywordflow">return</span> string(<span class="stringliteral">"gating"</span>); \
<a name="l00615"></a>00615 <span class="keywordflow">case</span> 4: <span class="keywordflow">return</span> string(<span class="stringliteral">"triggered_gating"</span>); \
<a name="l00616"></a>00616 <span class="keywordflow">default</span>: <span class="keywordflow">return</span> string( <span class="stringliteral">"unknown"</span>); \
<a name="l00617"></a>00617 } };
<a name="l00618"></a>00618
<a name="l00625"></a><a class="code" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">00625</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">getTimingMode</a>(string s){ \
<a name="l00626"></a>00626 <span class="keywordflow">if</span> (s== <span class="stringliteral">"auto"</span>) <span class="keywordflow">return</span> 0; \
<a name="l00627"></a>00627 <span class="keywordflow">if</span> (s== <span class="stringliteral">"trigger"</span>) <span class="keywordflow">return</span> 1; \
<a name="l00628"></a>00628 <span class="keywordflow">if</span> (s== <span class="stringliteral">"ro_trigger"</span>) <span class="keywordflow">return</span> 2; \
<a name="l00629"></a>00629 <span class="keywordflow">if</span> (s== <span class="stringliteral">"gating"</span>) <span class="keywordflow">return</span> 3; \
<a name="l00630"></a>00630 <span class="keywordflow">if</span> (s== <span class="stringliteral">"triggered_gating"</span>) <span class="keywordflow">return</span> 4; \
<a name="l00631"></a>00631 <span class="keywordflow">return</span> -1; };
<a name="l00632"></a>00632
<a name="l00633"></a>00633 <span class="keyword">private</span>:
<a name="l00634"></a>00634 multiSlsDetector *myDetector;
<a name="l00635"></a>00635 multiSlsDetectorCommand *myCmd;
<a name="l00636"></a>00636 };
<a name="l00637"></a>00637
<a name="l00638"></a>00638 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,38 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsDetectorUsers.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsDetectorUsers.h File Reference</h1><code>#include &lt;stdint.h&gt;</code><br>
<code>#include &lt;string&gt;</code><br>
<p>
<a href="slsDetectorUsers_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc. <a href="classslsDetectorUsers.html#_details">More...</a><br></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,64 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsReceiverUsers.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers.h</h1><a href="slsReceiverUsers_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="preprocessor">#ifndef SLS_RECEIVER_USERS_H</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#define SLS_RECEIVER_USERS_H</span>
<a name="l00004"></a>00004 <span class="preprocessor"></span>
<a name="l00005"></a>00005 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include &lt;stdint.h&gt;</span>
<a name="l00007"></a>00007
<a name="l00008"></a>00008 <span class="keyword">class </span>slsReceiverTCPIPInterface;
<a name="l00009"></a>00009
<a name="l00021"></a><a class="code" href="classslsReceiverUsers.html">00021</a> <span class="keyword">class </span><a class="code" href="classslsReceiverUsers.html">slsReceiverUsers</a> {
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="keyword">public</span>:
<a name="l00031"></a>00031 <a class="code" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[], <span class="keywordtype">int</span> &amp;success);
<a name="l00032"></a>00032
<a name="l00033"></a>00033
<a name="l00035"></a>00035 <a class="code" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">~slsReceiverUsers</a>();
<a name="l00036"></a>00036
<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">closeFile</a>(<span class="keywordtype">int</span> p);
<a name="l00039"></a>00039
<a name="l00044"></a>00044 <span class="keywordtype">int</span> <a class="code" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a>();
<a name="l00045"></a>00045
<a name="l00047"></a>00047 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a>();
<a name="l00048"></a>00048
<a name="l00053"></a>00053 int64_t <a class="code" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">getReceiverVersion</a>();
<a name="l00054"></a>00054
<a name="l00064"></a>00064 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">registerCallBackStartAcquisition</a>(<span class="keywordtype">int</span> (*func)(<span class="keywordtype">char</span>* filepath, <span class="keywordtype">char</span>* filename,<span class="keywordtype">int</span> fileindex, <span class="keywordtype">int</span> datasize, <span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00065"></a>00065
<a name="l00066"></a>00066
<a name="l00074"></a>00074 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">registerCallBackAcquisitionFinished</a>(<span class="keywordtype">void</span> (*func)(<span class="keywordtype">int</span> nf, <span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00075"></a>00075
<a name="l00076"></a>00076
<a name="l00077"></a>00077
<a name="l00084"></a>00084 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">registerCallBackRawDataReady</a>(<span class="keywordtype">void</span> (*func)(<span class="keywordtype">int</span> framenumber, <span class="keywordtype">char</span>* datapointer, <span class="keywordtype">int</span> datasize, FILE* filedescriptor, <span class="keywordtype">char</span>* guidatapointer, <span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00085"></a>00085
<a name="l00086"></a>00086 <span class="comment">// made static to close thread files with ctrl+c</span>
<a name="l00087"></a><a class="code" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">00087</a> <span class="keyword">static</span> slsReceiverTCPIPInterface* <a class="code" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">receiver</a>;
<a name="l00088"></a>00088 };
<a name="l00089"></a>00089
<a name="l00090"></a>00090
<a name="l00091"></a>00091 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -1,35 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsReceiverUsers.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers.h File Reference</h1><code>#include &lt;stdio.h&gt;</code><br>
<code>#include &lt;stdint.h&gt;</code><br>
<p>
<a href="slsReceiverUsers_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data. <a href="classslsReceiverUsers.html#_details">More...</a><br></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,102 +0,0 @@
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
DIV.tabs
{
float : left;
width : 100%;
background : url("tab_b.gif") repeat-x bottom;
margin-bottom : 4px;
}
DIV.tabs UL
{
margin : 0px;
padding-left : 10px;
list-style : none;
}
DIV.tabs LI, DIV.tabs FORM
{
display : inline;
margin : 0px;
padding : 0px;
}
DIV.tabs FORM
{
float : right;
}
DIV.tabs A
{
float : left;
background : url("tab_r.gif") no-repeat right top;
border-bottom : 1px solid #84B0C7;
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
DIV.tabs A:hover
{
background-position: 100% -150px;
}
DIV.tabs A:link, DIV.tabs A:visited,
DIV.tabs A:active, DIV.tabs A:hover
{
color: #1A419D;
}
DIV.tabs SPAN
{
float : left;
display : block;
background : url("tab_l.gif") no-repeat left top;
padding : 5px 9px;
white-space : nowrap;
}
DIV.tabs INPUT
{
float : right;
display : inline;
font-size : 1em;
}
DIV.tabs TD
{
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
/* Commented Backslash Hack hides rule from IE5-Mac \*/
DIV.tabs SPAN {float : none;}
/* End IE5-Mac hack */
DIV.tabs A:hover SPAN
{
background-position: 0% -150px;
}
DIV.tabs LI#current A
{
background-position: 100% -150px;
border-width : 0px;
}
DIV.tabs LI#current SPAN
{
background-position: 0% -150px;
padding-bottom : 6px;
}
DIV.nav
{
background : none;
border : none;
border-bottom : 1px solid #84B0C7;
}

View File

@ -1,17 +0,0 @@
all: clean refman.pdf
refman.pdf: refman.tex
pdflatex refman.tex
makeindex refman.idx
pdflatex refman.tex
latex_count=5 ; \
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
do \
echo "Rerunning latex...." ;\
pdflatex refman.tex ;\
latex_count=`expr $$latex_count - 1` ;\
done
clean:
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf

View File

@ -1,6 +0,0 @@
\subsection{Class List}
Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList}
\item\contentsline{section}{\hyperlink{classdetectorData}{detector\-Data} (Data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) )}{\pageref{classdetectorData}}{}
\item\contentsline{section}{\hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} (Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc )}{\pageref{classslsDetectorUsers}}{}
\item\contentsline{section}{\hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users} (Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data )}{\pageref{classslsReceiverUsers}}{}
\end{CompactList}

View File

@ -1,171 +0,0 @@
\hypertarget{classdetectorData}{
\subsection{detector\-Data Class Reference}
\label{classdetectorData}\index{detectorData@{detectorData}}
}
data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
{\tt \#include $<$detector\-Data.h$>$}
\subsubsection*{Public Member Functions}
\begin{CompactItemize}
\item
\hyperlink{classdetectorData_3f8538f5f634295fc40682b8aed47b31}{detector\-Data} (double $\ast$val=NULL, double $\ast$err=NULL, double $\ast$ang=NULL, double p\_\-ind=-1, const char $\ast$fname=\char`\"{}\char`\"{}, int np=-1, int ny=1)
\begin{CompactList}\small\item\em The constructor. \item\end{CompactList}\item
\hyperlink{classdetectorData_d32a037cc2bd6e8caf4556cbd4b88ec7}{$\sim$detector\-Data} ()
\begin{CompactList}\small\item\em The destructor deletes also the arrays pointing to data/errors/angles if not NULL. \item\end{CompactList}\end{CompactItemize}
\subsubsection*{Public Attributes}
\begin{CompactItemize}
\item
double $\ast$ \hyperlink{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}{values}
\begin{CompactList}\small\item\em pointer to the data \item\end{CompactList}\item
double $\ast$ \hyperlink{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}{errors}
\begin{CompactList}\small\item\em pointer to the errors \item\end{CompactList}\item
double $\ast$ \hyperlink{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}{angles}
\begin{CompactList}\small\item\em pointer to the angles (NULL if no angular conversion) \item\end{CompactList}\item
double \hyperlink{classdetectorData_976b3287d46aed032487bbeed74132da}{progress\-Index}
\begin{CompactList}\small\item\em file index \item\end{CompactList}\item
char \hyperlink{classdetectorData_91d1e3466878def295a531c01bdeef6b}{file\-Name} \mbox{[}1000\mbox{]}
\begin{CompactList}\small\item\em file name \item\end{CompactList}\item
int \hyperlink{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}{npoints}
\begin{CompactList}\small\item\em number of points \item\end{CompactList}\item
int \hyperlink{classdetectorData_c289d259e7fd9445a9c04976a82cb324}{npy}
\begin{CompactList}\small\item\em dimensions in y coordinate \item\end{CompactList}\end{CompactItemize}
\subsubsection{Detailed Description}
data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
Definition at line 9 of file detector\-Data.h.
\subsubsection{Constructor \& Destructor Documentation}
\hypertarget{classdetectorData_3f8538f5f634295fc40682b8aed47b31}{
\index{detectorData@{detector\-Data}!detectorData@{detectorData}}
\index{detectorData@{detectorData}!detectorData@{detector\-Data}}
\paragraph[detectorData]{\setlength{\rightskip}{0pt plus 5cm}detector\-Data::detector\-Data (double $\ast$ {\em val} = {\tt NULL}, double $\ast$ {\em err} = {\tt NULL}, double $\ast$ {\em ang} = {\tt NULL}, double {\em p\_\-ind} = {\tt -1}, const char $\ast$ {\em fname} = {\tt \char`\"{}\char`\"{}}, int {\em np} = {\tt -1}, int {\em ny} = {\tt 1})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}\hfill}
\label{classdetectorData_3f8538f5f634295fc40682b8aed47b31}
The constructor.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em val}]pointer to the data \item[{\em err}]pointer to errors \item[{\em ang}]pointer to the angles \item[{\em f\_\-ind}]file index \item[{\em fname}]file name to which the data are saved \item[{\em np}]number of points in x coordinate defaults to the number of detector channels (1D detector) \item[{\em ny}]dimension in y (1D detector) \end{description}
\end{Desc}
Definition at line 20 of file detector\-Data.h.
References file\-Name.\hypertarget{classdetectorData_d32a037cc2bd6e8caf4556cbd4b88ec7}{
\index{detectorData@{detector\-Data}!~detectorData@{$\sim$detectorData}}
\index{~detectorData@{$\sim$detectorData}!detectorData@{detector\-Data}}
\paragraph[$\sim$detectorData]{\setlength{\rightskip}{0pt plus 5cm}detector\-Data::$\sim$detector\-Data ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}\hfill}
\label{classdetectorData_d32a037cc2bd6e8caf4556cbd4b88ec7}
The destructor deletes also the arrays pointing to data/errors/angles if not NULL.
Definition at line 25 of file detector\-Data.h.
References angles, errors, and values.
\subsubsection{Member Data Documentation}
\hypertarget{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}{
\index{detectorData@{detector\-Data}!angles@{angles}}
\index{angles@{angles}!detectorData@{detector\-Data}}
\paragraph[angles]{\setlength{\rightskip}{0pt plus 5cm}double$\ast$ \hyperlink{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}{detector\-Data::angles}}\hfill}
\label{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}
pointer to the angles (NULL if no angular conversion)
Definition at line 29 of file detector\-Data.h.
Referenced by $\sim$detector\-Data().\hypertarget{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}{
\index{detectorData@{detector\-Data}!errors@{errors}}
\index{errors@{errors}!detectorData@{detector\-Data}}
\paragraph[errors]{\setlength{\rightskip}{0pt plus 5cm}double$\ast$ \hyperlink{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}{detector\-Data::errors}}\hfill}
\label{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}
pointer to the errors
Definition at line 28 of file detector\-Data.h.
Referenced by $\sim$detector\-Data().\hypertarget{classdetectorData_91d1e3466878def295a531c01bdeef6b}{
\index{detectorData@{detector\-Data}!fileName@{fileName}}
\index{fileName@{fileName}!detectorData@{detector\-Data}}
\paragraph[fileName]{\setlength{\rightskip}{0pt plus 5cm}char \hyperlink{classdetectorData_91d1e3466878def295a531c01bdeef6b}{detector\-Data::file\-Name}\mbox{[}1000\mbox{]}}\hfill}
\label{classdetectorData_91d1e3466878def295a531c01bdeef6b}
file name
Definition at line 31 of file detector\-Data.h.
Referenced by detector\-Data().\hypertarget{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}{
\index{detectorData@{detector\-Data}!npoints@{npoints}}
\index{npoints@{npoints}!detectorData@{detector\-Data}}
\paragraph[npoints]{\setlength{\rightskip}{0pt plus 5cm}int \hyperlink{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}{detector\-Data::npoints}}\hfill}
\label{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}
number of points
Definition at line 32 of file detector\-Data.h.
Referenced by data\-Callback().\hypertarget{classdetectorData_c289d259e7fd9445a9c04976a82cb324}{
\index{detectorData@{detector\-Data}!npy@{npy}}
\index{npy@{npy}!detectorData@{detector\-Data}}
\paragraph[npy]{\setlength{\rightskip}{0pt plus 5cm}int \hyperlink{classdetectorData_c289d259e7fd9445a9c04976a82cb324}{detector\-Data::npy}}\hfill}
\label{classdetectorData_c289d259e7fd9445a9c04976a82cb324}
dimensions in y coordinate
Definition at line 33 of file detector\-Data.h.
Referenced by data\-Callback().\hypertarget{classdetectorData_976b3287d46aed032487bbeed74132da}{
\index{detectorData@{detector\-Data}!progressIndex@{progressIndex}}
\index{progressIndex@{progressIndex}!detectorData@{detector\-Data}}
\paragraph[progressIndex]{\setlength{\rightskip}{0pt plus 5cm}double \hyperlink{classdetectorData_976b3287d46aed032487bbeed74132da}{detector\-Data::progress\-Index}}\hfill}
\label{classdetectorData_976b3287d46aed032487bbeed74132da}
file index
Definition at line 30 of file detector\-Data.h.\hypertarget{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}{
\index{detectorData@{detector\-Data}!values@{values}}
\index{values@{values}!detectorData@{detector\-Data}}
\paragraph[values]{\setlength{\rightskip}{0pt plus 5cm}double$\ast$ \hyperlink{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}{detector\-Data::values}}\hfill}
\label{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}
pointer to the data
Definition at line 25 of file detector\-Data.h.
Referenced by $\sim$detector\-Data().
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
\hyperlink{detectorData_8h}{detector\-Data.h}\end{CompactItemize}

View File

@ -1,164 +0,0 @@
\hypertarget{classslsReceiverUsers}{
\subsection{sls\-Receiver\-Users Class Reference}
\label{classslsReceiverUsers}\index{slsReceiverUsers@{slsReceiverUsers}}
}
Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
{\tt \#include $<$sls\-Receiver\-Users.h$>$}
\subsubsection*{Public Member Functions}
\begin{CompactItemize}
\item
\hyperlink{classslsReceiverUsers_79a82ba94fbb19761c7701aa3901b8b1}{sls\-Receiver\-Users} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]}, int \&success)
\item
\hyperlink{classslsReceiverUsers_9b45943d81ce7a09543aa446de857cb0}{$\sim$sls\-Receiver\-Users} ()
\item
void \hyperlink{classslsReceiverUsers_bad0b3265826da2d9ebf48e59e9d5787}{close\-File} (int p)
\item
int \hyperlink{classslsReceiverUsers_ef40b4987367b8a0116bcb66534dd7b7}{start} ()
\item
void \hyperlink{classslsReceiverUsers_394001d873a4b7912865a971d4d25f87}{stop} ()
\item
int64\_\-t \hyperlink{classslsReceiverUsers_f206092e2744e12ce6b717f4181d91a2}{get\-Receiver\-Version} ()
\item
void \hyperlink{classslsReceiverUsers_5d4bb9244008d0bc570778230d30c5e3}{register\-Call\-Back\-Start\-Acquisition} (int($\ast$func)(char $\ast$filepath, char $\ast$filename, int fileindex, int datasize, void $\ast$), void $\ast$arg)
\item
void \hyperlink{classslsReceiverUsers_7471d2945e8650eece86258e6ca56156}{register\-Call\-Back\-Acquisition\-Finished} (void($\ast$func)(int nf, void $\ast$), void $\ast$arg)
\item
void \hyperlink{classslsReceiverUsers_343b9fac505e8c08a7fbf9efdd0f5762}{register\-Call\-Back\-Raw\-Data\-Ready} (void($\ast$func)(int framenumber, char $\ast$datapointer, int datasize, FILE $\ast$filedescriptor, char $\ast$guidatapointer, void $\ast$), void $\ast$arg)
\end{CompactItemize}
\subsubsection*{Static Public Attributes}
\begin{CompactItemize}
\item
static sls\-Receiver\-TCPIPInterface $\ast$ \hyperlink{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}{receiver}
\end{CompactItemize}
\subsubsection{Detailed Description}
Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
\hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users} is a class that can be instantiated in the users software to receive the data from the detectors. Callbacks can be defined for processing and/or saving data
Definition at line 21 of file sls\-Receiver\-Users.h.
\subsubsection{Constructor \& Destructor Documentation}
\hypertarget{classslsReceiverUsers_79a82ba94fbb19761c7701aa3901b8b1}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!slsReceiverUsers@{slsReceiverUsers}}
\index{slsReceiverUsers@{slsReceiverUsers}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[slsReceiverUsers]{\setlength{\rightskip}{0pt plus 5cm}sls\-Receiver\-Users::sls\-Receiver\-Users (int {\em argc}, char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]}, int \& {\em success})}\hfill}
\label{classslsReceiverUsers_79a82ba94fbb19761c7701aa3901b8b1}
Constructor reads config file, creates socket, assigns function table \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em argc}]from command line \item[{\em argv}]from command line \item[{\em succecc}]socket creation was successfull \end{description}
\end{Desc}
\hypertarget{classslsReceiverUsers_9b45943d81ce7a09543aa446de857cb0}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!~slsReceiverUsers@{$\sim$slsReceiverUsers}}
\index{~slsReceiverUsers@{$\sim$slsReceiverUsers}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[$\sim$slsReceiverUsers]{\setlength{\rightskip}{0pt plus 5cm}sls\-Receiver\-Users::$\sim$sls\-Receiver\-Users ()}\hfill}
\label{classslsReceiverUsers_9b45943d81ce7a09543aa446de857cb0}
Destructor
\subsubsection{Member Function Documentation}
\hypertarget{classslsReceiverUsers_bad0b3265826da2d9ebf48e59e9d5787}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!closeFile@{closeFile}}
\index{closeFile@{closeFile}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[closeFile]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::close\-File (int {\em p})}\hfill}
\label{classslsReceiverUsers_bad0b3265826da2d9ebf48e59e9d5787}
Close File and exits receiver server \hypertarget{classslsReceiverUsers_f206092e2744e12ce6b717f4181d91a2}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!getReceiverVersion@{getReceiverVersion}}
\index{getReceiverVersion@{getReceiverVersion}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[getReceiverVersion]{\setlength{\rightskip}{0pt plus 5cm}int64\_\-t sls\-Receiver\-Users::get\-Receiver\-Version ()}\hfill}
\label{classslsReceiverUsers_f206092e2744e12ce6b717f4181d91a2}
get get Receiver Version \begin{Desc}
\item[Returns:]id \end{Desc}
\hypertarget{classslsReceiverUsers_7471d2945e8650eece86258e6ca56156}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!registerCallBackAcquisitionFinished@{registerCallBackAcquisitionFinished}}
\index{registerCallBackAcquisitionFinished@{registerCallBackAcquisitionFinished}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[registerCallBackAcquisitionFinished]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::register\-Call\-Back\-Acquisition\-Finished (void($\ast$)(int nf, void $\ast$) {\em func}, void $\ast$ {\em arg})}\hfill}
\label{classslsReceiverUsers_7471d2945e8650eece86258e6ca56156}
register callback for end of acquisition \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em func}]end of acquisition callback. Argument nf is total frames caught \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]nothing \end{Desc}
\hypertarget{classslsReceiverUsers_343b9fac505e8c08a7fbf9efdd0f5762}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!registerCallBackRawDataReady@{registerCallBackRawDataReady}}
\index{registerCallBackRawDataReady@{registerCallBackRawDataReady}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[registerCallBackRawDataReady]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::register\-Call\-Back\-Raw\-Data\-Ready (void($\ast$)(int framenumber, char $\ast$datapointer, int datasize, FILE $\ast$filedescriptor, char $\ast$guidatapointer, void $\ast$) {\em func}, void $\ast$ {\em arg})}\hfill}
\label{classslsReceiverUsers_343b9fac505e8c08a7fbf9efdd0f5762}
register callback to be called when data are available (to process and/or save the data). \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em func}]raw data ready callback. arguments are framenum datapointer datasize file descriptor guidatapointer (NULL, no data required) \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]nothing \end{Desc}
\hypertarget{classslsReceiverUsers_5d4bb9244008d0bc570778230d30c5e3}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!registerCallBackStartAcquisition@{registerCallBackStartAcquisition}}
\index{registerCallBackStartAcquisition@{registerCallBackStartAcquisition}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[registerCallBackStartAcquisition]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::register\-Call\-Back\-Start\-Acquisition (int($\ast$)(char $\ast$filepath, char $\ast$filename, int fileindex, int datasize, void $\ast$) {\em func}, void $\ast$ {\em arg})}\hfill}
\label{classslsReceiverUsers_5d4bb9244008d0bc570778230d30c5e3}
register calbback for starting the acquisition \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em func}]callback to be called when starting the acquisition. Its arguments are filepath filename fileindex data size\end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]0 callback takes care of open,close,write file; 1 callback writes file, we have to open, close it; 2 we open, close, write file, callback does not do anything \end{Desc}
\hypertarget{classslsReceiverUsers_ef40b4987367b8a0116bcb66534dd7b7}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!start@{start}}
\index{start@{start}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[start]{\setlength{\rightskip}{0pt plus 5cm}int sls\-Receiver\-Users::start ()}\hfill}
\label{classslsReceiverUsers_ef40b4987367b8a0116bcb66534dd7b7}
starts listening on the TCP port for client comminication \begin{Desc}
\item[Returns:]0 for success or 1 for FAIL in creating TCP server \end{Desc}
Referenced by main().\hypertarget{classslsReceiverUsers_394001d873a4b7912865a971d4d25f87}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!stop@{stop}}
\index{stop@{stop}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[stop]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::stop ()}\hfill}
\label{classslsReceiverUsers_394001d873a4b7912865a971d4d25f87}
stops listening to the TCP \& UDP port and exit receiver program
Referenced by main().
\subsubsection{Member Data Documentation}
\hypertarget{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!receiver@{receiver}}
\index{receiver@{receiver}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[receiver]{\setlength{\rightskip}{0pt plus 5cm}sls\-Receiver\-TCPIPInterface$\ast$ \hyperlink{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}{sls\-Receiver\-Users::receiver}\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}\hfill}
\label{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}
Definition at line 87 of file sls\-Receiver\-Users.h.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
\hyperlink{slsReceiverUsers_8h}{sls\-Receiver\-Users.h}\end{CompactItemize}

View File

@ -1,11 +0,0 @@
\hypertarget{detectorData_8h}{
\subsection{detector\-Data.h File Reference}
\label{detectorData_8h}\index{detectorData.h@{detectorData.h}}
}
{\tt \#include $<$unistd.h$>$}\par
{\tt \#include $<$cstring$>$}\par
\subsubsection*{Classes}
\begin{CompactItemize}
\item
class \hyperlink{classdetectorData}{detector\-Data}
\begin{CompactList}\small\item\em data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) \item\end{CompactList}\end{CompactItemize}

View File

@ -1,77 +0,0 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doxygen}
\RequirePackage{calc}
\RequirePackage{array}
\pagestyle{fancyplain}
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\lhead[\fancyplain{}{\bfseries\thepage}]
{\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}]
{\fancyplain{}{\bfseries\thepage}}
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Mon May 26 17:07:05 2014 by Doxygen }]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Mon May 26 17:07:05 2014 by Doxygen }}
\cfoot{}
\newenvironment{Code}
{\footnotesize}
{\normalsize}
\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
\newenvironment{DocInclude}
{\footnotesize}
{\normalsize}
\newenvironment{VerbInclude}
{\footnotesize}
{\normalsize}
\newenvironment{Image}
{\begin{figure}[H]}
{\end{figure}}
\newenvironment{ImageNoCaption}{}{}
\newenvironment{CompactList}
{\begin{list}{}{
\setlength{\leftmargin}{0.5cm}
\setlength{\itemsep}{0pt}
\setlength{\parsep}{0pt}
\setlength{\topsep}{0pt}
\renewcommand{\makelabel}{\hfill}}}
{\end{list}}
\newenvironment{CompactItemize}
{
\begin{itemize}
\setlength{\itemsep}{-3pt}
\setlength{\parsep}{0pt}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}
}
{\end{itemize}}
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
\newlength{\tmplength}
\newenvironment{TabularC}[1]
{
\setlength{\tmplength}
{\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
\par\begin{tabular*}{\linewidth}
{*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
}
{\end{tabular*}\par}
\newcommand{\entrylabel}[1]{
{\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}}
\newenvironment{Desc}
{\begin{list}{}
{
\settowidth{\labelwidth}{40pt}
\setlength{\leftmargin}{\labelwidth}
\setlength{\parsep}{0pt}
\setlength{\itemsep}{-4pt}
\renewcommand{\makelabel}{\entrylabel}
}
}
{\end{list}}
\newenvironment{Indent}
{\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
\item[]\ignorespaces}
{\unskip\end{list}}
\setlength{\parindent}{0cm}
\setlength{\parskip}{0.2cm}
\addtocounter{secnumdepth}{1}
\sloppy
\usepackage[T1]{fontenc}

View File

@ -1,8 +0,0 @@
\subsection{File List}
Here is a list of all files with brief descriptions:\begin{CompactList}
\item\contentsline{section}{\hyperlink{detectorData_8h}{detector\-Data.h} }{\pageref{detectorData_8h}}{}
\item\contentsline{section}{\hyperlink{mainClient_8cpp}{main\-Client.cpp} }{\pageref{mainClient_8cpp}}{}
\item\contentsline{section}{\hyperlink{mainReceiver_8cpp}{main\-Receiver.cpp} }{\pageref{mainReceiver_8cpp}}{}
\item\contentsline{section}{\hyperlink{slsDetectorUsers_8h}{sls\-Detector\-Users.h} }{\pageref{slsDetectorUsers_8h}}{}
\item\contentsline{section}{\hyperlink{slsReceiverUsers_8h}{sls\-Receiver\-Users.h} }{\pageref{slsReceiverUsers_8h}}{}
\end{CompactList}

View File

@ -1,26 +0,0 @@
\subsection*{API for SLS detectors data acquisition}
Although the SLS detectors group delvelops several types of detectors (1/2D, counting/integrating etc.) it is common interest of the group to use a common platfor for data acquisition
The architecture of the acquisitions system is intended as follows: \begin{itemize}
\item A socket server running on the detector (or more than one in some special cases) \item C++ classes common to all detectors for client-server communication. These can be supplied to users as libraries and embedded also in acquisition systems which are not developed by the SLS \item the possibility of using a Qt-based graphical user interface (with eventually root analisys capabilities) \item the possibility of running all commands from command line. In order to ensure a fast operation of this so called \char`\"{}text client\char`\"{} the detector parameters should not be re-initialized everytime. For this reason a shared memory block is allocated where the main detector flags and parameters are stored \item a Root library for data postprocessing and detector calibration (energy, angle).\end{itemize}
\hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} is a class to control the detector which should be instantiated by the users in their acquisition software (EPICS, spec etc.). A callback for dislaying the data can be registered. More advanced configuration functions are not implemented and can be written in a configuration file tha can be read/written.
\hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users} is a class to receive the data for detectors with external data receiver (e.g. GOTTHARD). Callbacks can be registered to process the data or save them in specific formats.
\hyperlink{classdetectorData}{detector\-Data} is a structure containing the data and additional information which is used to return the data e.g. to the GUI for displaying them.
You can find examples of how this classes can be instatiated in \hyperlink{mainClient_8cpp}{main\-Client.cpp} and \hyperlink{mainReceiver_8cpp}{main\-Receiver.cpp}
\begin{Desc}
\item[Authors:]\href{mailto:anna.bergamaschi@psi.ch}{\tt Anna Bergamaschi}, \href{mailto:dhanya.maliakal@psi.ch}{\tt Dhanya Maliakal} \end{Desc}
\begin{Desc}
\item[Version:]0.2 \subsubsection*{Currently supported detectors}\end{Desc}
\begin{itemize}
\item MYTHEN \item GOTTHARD controls \item GOTTHARD data receiver \paragraph*{Coming soon}\end{itemize}
\begin{itemize}
\item EIGER \end{itemize}

View File

@ -1,79 +0,0 @@
\hypertarget{mainClient_8cpp}{
\subsection{main\-Client.cpp File Reference}
\label{mainClient_8cpp}\index{mainClient.cpp@{mainClient.cpp}}
}
{\tt \#include $<$iostream$>$}\par
{\tt \#include \char`\"{}sls\-Detector\-Users.h\char`\"{}}\par
{\tt \#include \char`\"{}detector\-Data.h\char`\"{}}\par
\subsubsection*{Functions}
\begin{CompactItemize}
\item
int \hyperlink{mainClient_8cpp_21ef7438e7f0ed24a190513fb8e6af8a}{data\-Callback} (\hyperlink{classdetectorData}{detector\-Data} $\ast$p\-Data, int iframe, void $\ast$p\-Arg)
\item
int \hyperlink{mainClient_8cpp_0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{CompactItemize}
\subsubsection{Detailed Description}
This file is an example of how to implement the \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} class You can compile it linking it to the sls\-Detector library
gcc \hyperlink{mainClient_8cpp}{main\-Client.cpp} -L lib -l Sls\-Detector -lm -lpthread
where lib is the location of lib\-Sls\-Detector.so
Definition in file \hyperlink{mainClient_8cpp-source}{main\-Client.cpp}.
\subsubsection{Function Documentation}
\hypertarget{mainClient_8cpp_21ef7438e7f0ed24a190513fb8e6af8a}{
\index{mainClient.cpp@{main\-Client.cpp}!dataCallback@{dataCallback}}
\index{dataCallback@{dataCallback}!mainClient.cpp@{main\-Client.cpp}}
\paragraph[dataCallback]{\setlength{\rightskip}{0pt plus 5cm}int data\-Callback (\hyperlink{classdetectorData}{detector\-Data} $\ast$ {\em p\-Data}, int {\em iframe}, void $\ast$ {\em p\-Arg})}\hfill}
\label{mainClient_8cpp_21ef7438e7f0ed24a190513fb8e6af8a}
Definition of the data callback which simply prints out the number of points received and teh frame number
Definition at line 19 of file main\-Client.cpp.
References detector\-Data::npoints, and detector\-Data::npy.
Referenced by main().\hypertarget{mainClient_8cpp_0ddf1224851353fc92bfbff6f499fa97}{
\index{mainClient.cpp@{main\-Client.cpp}!main@{main}}
\index{main@{main}!mainClient.cpp@{main\-Client.cpp}}
\paragraph[main]{\setlength{\rightskip}{0pt plus 5cm}int main (int {\em argc}, char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]})}\hfill}
\label{mainClient_8cpp_0ddf1224851353fc92bfbff6f499fa97}
example of a main program using the \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} class
if specified, argv\mbox{[}2\mbox{]} is used as detector ID (default is 0)
\hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} is instantiated
if specified, argv\mbox{[}1\mbox{]} is used as detector config file (necessary at least the first time it is called to properly configure advanced settings in the shared memory)
Setting the detector online (should be by default
Load setup file if argv\mbox{[}2\mbox{]} specified
defining the detector size
registering data callback
checking detector status and exiting if not idle
checking and setting detector settings
Settings exposure time to 10ms
Settings exposure time to 100ms
Settingsnumber of frames to 30
start measurement
returning when acquisition is finished or data are avilable
Definition at line 26 of file main\-Client.cpp.
References data\-Callback(), sls\-Detector\-Users::get\-Command(), sls\-Detector\-Users::get\-Detector\-Developer(), sls\-Detector\-Users::get\-Detector\-Settings(), sls\-Detector\-Users::get\-Detector\-Size(), sls\-Detector\-Users::get\-Detector\-Status(), sls\-Detector\-Users::read\-Configuration\-File(), sls\-Detector\-Users::register\-Data\-Callback(), sls\-Detector\-Users::retrieve\-Detector\-Setup(), sls\-Detector\-Users::run\-Status\-Type(), sls\-Detector\-Users::set\-Detector\-Size(), sls\-Detector\-Users::set\-Exposure\-Period(), sls\-Detector\-Users::set\-Exposure\-Time(), sls\-Detector\-Users::set\-Number\-Of\-Frames(), sls\-Detector\-Users::set\-Online(), sls\-Detector\-Users::set\-Settings(), and sls\-Detector\-Users::start\-Measurement().

View File

@ -1,35 +0,0 @@
\hypertarget{mainReceiver_8cpp}{
\subsection{main\-Receiver.cpp File Reference}
\label{mainReceiver_8cpp}\index{mainReceiver.cpp@{mainReceiver.cpp}}
}
{\tt \#include \char`\"{}sls\-Receiver\-Users.h\char`\"{}}\par
{\tt \#include $<$iostream$>$}\par
\subsubsection*{Functions}
\begin{CompactItemize}
\item
int \hyperlink{mainReceiver_8cpp_0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{CompactItemize}
\subsubsection{Detailed Description}
This file is an example of how to implement the \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} class You can compile it linking it to the sls\-Detector library
gcc \hyperlink{mainReceiver_8cpp}{main\-Receiver.cpp} -L lib -l Sls\-Detector -lm -lpthread
where lib is the location of lib\-Sls\-Detector.so
Definition in file \hyperlink{mainReceiver_8cpp-source}{main\-Receiver.cpp}.
\subsubsection{Function Documentation}
\hypertarget{mainReceiver_8cpp_0ddf1224851353fc92bfbff6f499fa97}{
\index{mainReceiver.cpp@{main\-Receiver.cpp}!main@{main}}
\index{main@{main}!mainReceiver.cpp@{main\-Receiver.cpp}}
\paragraph[main]{\setlength{\rightskip}{0pt plus 5cm}int main (int {\em argc}, char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]})}\hfill}
\label{mainReceiver_8cpp_0ddf1224851353fc92bfbff6f499fa97}
Definition at line 25 of file main\-Receiver.cpp.
References sls\-Receiver\-Users::start(), and sls\-Receiver\-Users::stop().

View File

@ -1,4 +0,0 @@
\subsection{Namespace List}
Here is a list of all namespaces with brief descriptions:\begin{CompactList}
\item\contentsline{section}{\hyperlink{namespacestd}{std} }{\pageref{namespacestd}}{}
\end{CompactList}

View File

@ -1,6 +0,0 @@
\hypertarget{namespacestd}{
\subsection{std Namespace Reference}
\label{namespacestd}\index{std@{std}}
}

View File

@ -1,57 +0,0 @@
\documentclass[a4paper]{article}
\usepackage{makeidx}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{float}
\usepackage{textcomp}
\usepackage{alltt}
\usepackage{times}
\ifx\pdfoutput\undefined
\usepackage[ps2pdf,
pagebackref=true,
colorlinks=true,
linkcolor=blue
]{hyperref}
\usepackage{pspicture}
\else
\usepackage[pdftex,
pagebackref=true,
colorlinks=true,
linkcolor=blue
]{hyperref}
\fi
\usepackage{doxygen}
\makeindex
\setcounter{tocdepth}{1}
\renewcommand{\footrulewidth}{0.4pt}
\begin{document}
\begin{titlepage}
\vspace*{7cm}
\begin{center}
{\Large Reference Manual}\\
\vspace*{1cm}
{\large Generated by Doxygen 1.4.7}\\
\vspace*{0.5cm}
{\small Mon May 26 17:07:05 2014}\\
\end{center}
\end{titlepage}
\pagenumbering{roman}
\tableofcontents
\pagenumbering{arabic}
\section{Main Page}
\label{index}\hypertarget{index}{}\input{index}
\section{Namespace Documentation}
\input{namespacestd}
\section{Class Documentation}
\input{classdetectorData}
\input{classslsDetectorUsers}
\input{classslsReceiverUsers}
\section{File Documentation}
\input{detectorData_8h}
\input{mainClient_8cpp}
\input{mainReceiver_8cpp}
\input{slsDetectorUsers_8h}
\input{slsReceiverUsers_8h}
\printindex
\end{document}

View File

@ -1,16 +0,0 @@
\hypertarget{slsDetectorUsers_8h}{
\subsection{sls\-Detector\-Users.h File Reference}
\label{slsDetectorUsers_8h}\index{slsDetectorUsers.h@{slsDetectorUsers.h}}
}
{\tt \#include $<$stdint.h$>$}\par
{\tt \#include $<$string$>$}\par
\subsubsection*{Namespaces}
\begin{CompactItemize}
\item
namespace \hyperlink{namespacestd}{std}
\end{CompactItemize}
\subsubsection*{Classes}
\begin{CompactItemize}
\item
class \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users}
\begin{CompactList}\small\item\em Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc. \item\end{CompactList}\end{CompactItemize}

View File

@ -1,11 +0,0 @@
\hypertarget{slsReceiverUsers_8h}{
\subsection{sls\-Receiver\-Users.h File Reference}
\label{slsReceiverUsers_8h}\index{slsReceiverUsers.h@{slsReceiverUsers.h}}
}
{\tt \#include $<$stdio.h$>$}\par
{\tt \#include $<$stdint.h$>$}\par
\subsubsection*{Classes}
\begin{CompactItemize}
\item
class \hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users}
\begin{CompactList}\small\item\em Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data. \item\end{CompactList}\end{CompactItemize}

View File

@ -1 +1 @@
../../slsReceiverSoftware/slsReceiver/slsReceiverUsers.h
../../slsReceiverSoftware/include/slsReceiverUsers.h

View File

@ -0,0 +1 @@
../../slsReceiverSoftware/include/sls_receiver_defs.h

View File

@ -0,0 +1 @@
../../slsReceiverSoftware/include/sls_receiver_funcs.h

1
manual/manual-api/zmq.h Symbolic link
View File

@ -0,0 +1 @@
../../slsReceiverSoftware/include/zmq.h

View File

@ -1,4 +1,4 @@
DESTDIR?=../
DESTDIR?=../docs
#manual-api manual-calwiz manual-client manual-gui manual-main
@ -12,26 +12,28 @@ TEXS=ancCal.tex enCal.tex installation.tex
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
#destdir?!?!?
all: $(PDFS) $(HTMLS)
all: pdf html
echo $(PWD)
echo $(PDFS)
echo $(HTMLS)
pdf: $(PDFS)
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
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
mv $@ $(DESTDIR)/html
%.dvi : %.tex $(TEXS)
@ -48,3 +50,7 @@ $(HTMLS): $(TEXS) $(MAINTEXS)
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -5,7 +5,11 @@
\usepackage{graphicx}
\usepackage{verbatim}
\usepackage{xspace}
\usepackage{hyperref}
\newcommand{\E}{EIGER\xspace}
\newcommand{\p}{sls\_detector\_put}
\newcommand{\g}{sls\_detector\_get}
\begin{document}
\title{\E - short manual}
@ -18,8 +22,8 @@
\subsection{Mandatory setup - Hardware}
An EIGER single module (500~kpixels) needs:
\begin{itemize}
\item A chilled (water+alcohol) at approximately 21~$^{\circ}$C, which needs to dissipate 85~W.
\item A power supply (12~V, 8~A).
\item A chilled (water+alcohol) at approximately 21~$^{\circ}$C, which needs to dissipate 85~W. For the 9M, a special cooling liquid is required: 2/3 deionized water and 1/3 ESA Type 48.
\item A power supply (12~V, 8~A). For the 9~M, a special cpu is give to remotely switch on and off the detector: see section~\ref{bchip100}.
\item 2$\times$1~Gb/s Ethernet connectors to control the detector and, optionally, receive data at low rate. A DHCP server that gives IPs to the 1~Gb/s connectors of the detector is needed. Note that flow control has to be enabled on the switch you are using.
\item 2$\times$10~Gb/s transceivers to optionally, receive data at high rate.
\end{itemize}
@ -36,6 +40,36 @@ Figure~\ref{fig:1} shows the relationship between the \textbf{Client} (which sit
The Client talks to control over 1~Gb Ethernet connection using TCP/IP to the detector and to the receiver. The detector sends data in UDP packets to the receiver. This data sending can be done over 1~Gb/s or 10~Gb/s.
\begin{itemize}
\item \textbf{Switch on the detector only after having started the chiller: the 500k single module and the 1.5M at cSAXS have a hardware temperature sensor, which will power off the boards if the temperature is too high. Note that the detector will be power on again as soon as the temperature has been lowered. The 9M will not boot up without the correct waterflow and temperature has it has an integrated flowmeter.}
\item \textbf{Switch on the detector only after having connected all the cables and network. EIGER is unable to get IP address after it has been switched on without a proper network set up. In that case switch off and on the detector again.}
\end{itemize}
\subsubsection{9M power supply interface: bchip100}\label{bchip100}
So the bchip100, which is a blackfin cpu, is located on the top side of the 9M and needs to be connected over 1Gb, to the same or a different network as the detector 1~GbE.
\begin{verbatim}
telnet bchip100
cd 9m/
\end{verbatim}
The directory contains some executables that are needed to make your detector to work:
\begin{verbatim}
./on #to switch modules on
./off #to switch modules off
./hvget #gets the current HV value
./waterflow #returns the current waterflow returned by the flowmeter
./temp #returns the water temperature returned by the flowmeter
\end{verbatim}
A watchdog is running on bchip100 to check for the flow and temperature. If outside of parameters ( flow$<$ 80 dl/min, temperature $\neq$21$\pm$2), the detector will be switched off.
Here is an explanation of the LED color scheme of the bchip100:
\begin{itemize}
\item NO LED Main Power off or Blackfin not ready, yet.
\item RED Too high temperature or too less water flow
Detector is shut down and locked.
Detector will be unlocked (YELLOW) automatically when conditions are good again.
\item YELLOW Detector is off and unlocked. Ready to be turned on.
\item GREEN Detector is on
\end{itemize}
You can also Check temperatures and water flow in a browser (from the same subnet where the 9M is: http://bchip100/status.cgi
\subsection{Mandatory setup - Receiver}
@ -48,9 +82,17 @@ The receiver is a process run on a PC closely connected to the detector. Open on
where xxxx, yyyy are the tcp port numbers. Use 1955 and 1956 for example. Note that in older version of the software {\tt{--mode 1}} was used only for the ``bottom'' half module. Now, the receiver for the bottom is open without arguments anymore, but still in the configuration file one needs to write {\tt{n:flippeddatax 1}}, where {\tt{n}} indicated the half module number, 1 if it is a module.
\\ Open as many receiver as half module boards. A single module has two half module boards.
From the software version 3.0.1, one can decide weather start a zmq callback from the receiver to the client (for example to visualize data in the slsDetectorGui or another gui). If the zmq steam is not required (cased of the command line for example, one can switch off the streaming with {\tt{./sls\_detector\_put rx\_datastream 0}}, enable it with {\tt{./sls\_detector\_put rx\_datastream 1}}. In the case of inizialising the stream to use the slsDetectorGui, nothing needs to be taken care of by the user. If instead you want to stream the streaming on different channels, the zmq port of the client can be set stealing from the slsDetectorGui stream having {\tt{./sls\_detector\_put n:zmqport 300y}}, where n is each half module independently, matching the receiver stream {\tt{./sls\_detector\_put n:rx\_zmqport 300y}}.
There is an example code that can be compiled in {\tt{manual/manual-api/mainReceiver.cpp}} and gives the executable {\tt{./detReceiver}}, use it with two or more receivers to open all receivers in one single terminal: {\tt{./detReceiver startTCPPort numReceivers withCallback}}, where startTCPPort assumes the other ports are consecutively increased.
\subsection{Mandatory setup - Client}
\underline{In the case of cSAXS, the detector software is installed on the x12sa-ed-1 machine:}\\
\underline{In the case of cSAXS, the detector software is installed on:}\\
\underline{/sls/X12SA/data/x12saop/EigerPackage/slsDetectorsPackage}
The command line interface consists in these main functions:
@ -60,7 +102,7 @@ The command line interface consists in these main functions:
\item[sls\_detector\_get] to retrieve detector parameters
\end{description}
First, your detector should always be configured for each PC that you might want to use for controlling the detector. All the examples given here show the command {\tt{0-}}, which could be omitted for the EIGER system $0$. In the case more EIGER systems are controlled at once, the call of {\tt{1-}},.. becomes compulsory.
First, your detector should always be configured for each PC that you might want to use for controlling the detector. All the examples given here show the command {\tt{0-}}, which could be omitted for the EIGER system $0$. In the case more EIGER systems are controlled at once, the call of {\tt{1-}},.. becomes compulsory.
To make sure the shared memory is cleaned, before starting, one should do:
\begin{verbatim}
@ -71,9 +113,9 @@ To do that:
sls_detector_put 0-config mydetector.config
\end{verbatim}
In the config file, if client, receiver and detector are using \textbf{1GbE} the following lines are mandatory:
In the config file, if client, receiver and detector are using \textbf{1GbE} the following lines are mandatory (see slsDetectorsPackage/examples/eiger\_1Gb.config):
\begin{verbatim}
detsizechan 1024 512 #detetctor geometry, long side of the module first
detsizechan 1024 512 #detector geometry, long side of the module first
hostname beb059+beb058+ #1Gb detector hostname for controls
0:rx_tcpport 1991 #tcpport for the first halfmodule
0:rx_udpport 50011 #udp port first quadrant, first halfmodule
@ -83,11 +125,12 @@ hostname beb059+beb058+ #1Gb detector hostname for controls
1:rx_udpport2 50014 #udp port second quadrant, second halfmodule
rx_hostname x12sa-vcons #1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1
\end{verbatim}
In the config file, if client, receiver and detector commands are on 1Gb, but detector data to receiver are sent using \textbf{10GbE} the following lines are mandatory:
In the config file, if client, receiver and detector commands are on 1Gb, but detector data to receiver are sent using \textbf{10GbE} the following lines are mandatory (see slsDetectorsPackage/examples/eiger\_10Gb.config):
\begin{verbatim}
detsizechan 1024 512 #detetctor geometry, long side of the module first
detsizechan 1024 512 #detector geometry, long side of the module first
hostname beb059+beb058+ #1Gb detector hostname for controls
0:rx_tcpport 1991 #tcpport for the first halfmodule
0:rx_udpport 50011 #udp port first quadrant, first halfmodule
@ -102,8 +145,17 @@ hostname beb059+beb058+ #1Gb detector hostname for controls
1:detectorip 10.0.40.101 #second half module 10 Gb IP
rx_hostname x12sa-vcons #1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1
\end{verbatim}
In the case you are developing your own receiver, then you need to remove the 1Gb receiver hostname {\tt{rx\_hostname}} and substitute it with the mac address of the device:
\begin{verbatim}
configuremac 0
rx_udpmac xx:xx:...
\end{verbatim}
One can configure all the detector settings in a parameter file {\tt{setup.det}}, which is loaded by doing:
\begin{verbatim}
sls_detector_put 0-parameters setup.det
@ -115,14 +167,13 @@ Other important settings that are configured in the {\tt{setup.det}} file are:
\item {\tt{tengiga 0/1}}, which sets whether the detector is enabled to send data through the 1~or the 10~Gb Ethernet.
\item {\tt{flags parallel/nonparallel}}, which sets whether the detector is set in parallel acquisition and readout or in sequential mode. This changes the readout time of the chip and affects the frame rate capability (faster is {\tt{parallel}}, with higher noise but needed when the frame rate is $>2$~kHz.
\item {\tt{dr 32/16}} sets the detector in autosumming mode (32 bit counter or not autosumming, 12 bit out of the chip). This is strictly connected to what is required for the readout clock of chip. See next point.
\item {\tt{clkdivider 0/1/2}}. Changes the readout clock: 200, 100, 50~MHz. Note that autosumming mode ({\tt{dr 32}} only works at {clkdivider 2}). By selecting Refer to readout timing specifications in~section\ref{timing} for how to set the detector.
\item {\tt{clkdivider 0/1/2}}. Changes the readout clock: 200, 100, 50~MHz (also referred to as full, half, quarter speed). Note that autosumming mode ({\tt{dr 32}} only works at {clkdivider 2}=quarter speed). By selecting Refer to readout timing specifications in~section\ref{timing} for how to set the detector.
\item {\tt{flags continuous/storeinram}}. Allows to take frame continuously or storing them on memory. Normally {\tt{continuous}} should be used. Enabling the {\tt{stroreinram}} mode allows you to obtain the maximum frame rate, but at the expenses to have to receive the data all at the end of the acquisition. Refer to readout timing specifications in section~\ref{timing} for how to set the detector.
\end{itemize}
One should notice that, by default, by choosing the option {\tt{dr 32}}, then the software automatically sets the detector to {\tt{clkdivider 2}}. By choosing the option {\tt{dr 16}}, the software automatically sets the detector to {\tt{clkdivider 1}}. One needs to choose {\tt{clkdivider 0}} after setting the {\tt{dr 16}} option to have the fastest frame rate.
We would recommend expert users (beamline people) to write their parameters file for the users.
\section{API versioning}
The eigerDetectorServer running on the boards has a versioning API scheme that will make it crash if used with a wrong firmware.
You can also check your versioning by hand with the code:
@ -138,6 +189,7 @@ returns the client version. The answer can be {\tt{thisversion 111220160718}}.
/sls_detector_get detectorversion
\end{verbatim}
returns the firmware version . The answer can be {\tt{detectorversion 11}}.
Killing and starting the server on the boards allows you to check the firmware version you have and also if your board is a top/bottom/master/slave.
\section{Setting up the threshold}
\begin{verbatim}
@ -149,6 +201,11 @@ The first line requires to specify how many ({\tt{N}}) and at which energies in
NORMALLY, in this new calibration scheme, only {\tt{settings standard}} will be provided to you, unless specific cases to be discussed.
The threshold at 6000 eV , for example would be set as:{\tt{sls\_detector\_put 0-threshold 6000}}.
We have added a special command, {\tt{thresholdnotb}}, which allows to scan the threshold energy without reloading the trimbits at every stage. One can either keep the trimbits at a specific value (es.32 if the range of energies to scan is large) or use the trimbits from a specific energy (like a central energy).
\begin{verbatim}
sls_detector_put 0-thresholdnotb energy_in_eV
\end{verbatim}
\section{Standard acquisition}
After you setup the setting and the threshold, you need to specify the exposure time, the number of real time frames and eventually how many real time frames should be acquired:
@ -218,17 +275,29 @@ this same command can be used after a non proper abortion of the acquisition to
IMPORTANT: to have faster readout and smaller dead time, one can configure {\tt{clkdivider}}, i.e. the speed at which the data are read, i.e. 200/100/50~MHz for {\tt{clkdivider 0/1/2}} and the dead time between frames through {\tt{flags parallel}}, i.e. acquire and read at the same time or acquire and then read out.
The configuration of this timing variables allows to achieve different frame rates. NOTE THAT IN EIGER, WHATEVER YOU DO, THE FRAME RATE LIMITATIONS COME FROM THE NETWORK BOTTLENECK AS THE HARDWARE GOES FASTER THAN THE DATA OUT.
In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from the boards (independent on how the chip is set):
\begin{itemize}
\item 1~GbE, {\tt{dr 16}}, {\tt{flags continous}}, \textbf{256~Hz}
\item 1~GbE, {\tt{dr 32}}, {\tt{flags continous}}, {\tt{clkdivider 2}}, \textbf{128~Hz}
\item 10~GbE, {\tt{dr 16}}, {\tt{flags continous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{2.56~kHz}
\item 10~GbE, {\tt{dr 32}}, {\tt{flags continuous}}, {\tt{clkdivider 2}}, \textbf{1.28~kHz}
\item 10~GbE, {\tt{dr 8}}, {\tt{flags continous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{5.12~kHz}
\item 10~GbE, {\tt{dr 4}}, {\tt{flags continous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{10.24~kHz}
\end{itemize}
Note that in the {\tt{continuous}} mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuos one can be achieved. Still, this extra buffering is possible till the memories are not saturated.
The number of images that can be stored on memories are:
In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from the boards (independent on how the chip is set), the continuous frame rates are listed in table~\ref{tcont}:
\begin{table}
\begin{tabular}{|c|c|c|c|}
\hline
GbE & dynamic range & continuos maximum frame rate(Hz) & minimum period ($\mu$s)\\
\hline
1 & 16 & \textbf{256} & 3901\\
\hline
1 & 32 & \textbf{128} & 7820\\
\hline
10 & 16 & \textbf{2560} & 391\\
\hline
10 & 32 & \textbf{1280}& 782\\
\hline
10 & 8 & \textbf{5120} & 196\\
\hline
10 & 4 & \textbf{10240} & 98\\
\hline
\end{tabular}
\caption{Frame rate limits for the CONTINUOS streaming out of images.}
\label{tcont}\end{table}
Note that in the {\tt{continuous}} flag mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuous one can be achieved. Still, this extra buffering is possible till the memories are not saturated.
The number of images that can be stored on memories are listed in table~\ref{timgs}:
\begin{table}
\begin{tabular}{|c|c|}
\hline
@ -241,38 +310,72 @@ dynamic range & images\\
16 & 7600\\
\hline
\end{tabular}
\caption{Amount of images that can be stored on board.}
\caption{Amount of images that can be stored on board. As while we store them, we start to send them out, the effective number of images could be larger than this, but it will depend on the network setup (how fats you stream out images).}
\label{timgs}
\end{table}
The maximum frame rate achievable with 10~GbE, {\tt{dr 16}}, {\tt{flags continuous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{6.1~kHz}. This is currently limited by the connection between the Front End Board and the Backend board. We expect the 32 bit mode limit to be \textbf{2~kHz} ({\tt{clkdivider 2}}).
In dynamic range {\tt{dr 8}} the frame rate is \textbf{11~kHz} and for{\tt{dr 4}} is \textbf{22~kHz}. For 4 and 8 bit mode the frame rate are directly limited by the speed of the detector chip and not by the readout boards.
Here is a list of all the readout times in the different configurations:
In table~\ref{tframes} is a list of all the readout times in the different configurations:
\begin{tiny}
\begin{table}
\begin{tabular}{|c|c|c|c|c|}
\begin{flushleft}
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\hline
dynamic range & clkdivider & mode & readout time ($\mu$s) & max frame rate (kHz)\\
\tiny{dr} & \tiny{clkdivider} & \tiny{flags} & \tiny{readout t($\mu$s)} & \tiny{max frame rate (kHz)} & \tiny{max exptime ($\mu$s)} & \tiny{min period ($\mu$s)} & \tiny{max imgs (nominal/our network)}\\
\hline
16 & 0 & parallel & 2.75 & 6\\
4 & 0 & parallel & 3.4 & 22 & 40 & 44 & 30k/50k\\
\hline
16 & 0 & nonparallel & 126 & 3.4\\
4 & 0 & nonparallel & 44 & 21 & 3 & 49 & 30k/50k\\
\hline
16 & 1 & parallel & 5.36 & 2.9\\
4 & 1 & parallel & 6 & 10.5 & 85 & 92 & 30k/100k\\
\hline
16 & 1 & nonparallel & 252 & 1.7\\
4 & 1 & nonparallel & 88.7 & 10.5 & 3 & 93 & 30k/100k\\
\hline
16 & 2 & parallel & 10.6 & 1.5\\
4 & 2 & parallel & 11.2 & 5.4 & 185 & 197 & infinite\\
\hline
16 & 2 & nonparallel & 504 & 0.85\\
4 & 2 & nonparallel & 176.5 & 5.4 & 3 & 180 & infinite\\
\hline
32 & 2 & parallel & 10.6 & 2\\
\hline
32 & 2 & nonparallel & 504 & $<2$\\
8 & 0 & parallel & 3.4 & 11.1 & 85 & 89 & 15k/24k\\
\hline
8 & 0 & nonparallel & 85.7 & 11.1 & 3 & 91 & 15k/24k\\
\hline
8 & 1 & parallel & 6.1 & 5.7 & 174 & 181 & 15k/52k\\
\hline
8 & 1 & nonparallel & 170.5 & 5.7 & 3 & 175 & 15k/52k\\
\hline
8 & 2 & parallel & 11.2 & 2.9 & 330 & 342 & infinite\\
\hline
8 & 2 & nonparallel & 340.3 & 2.9 & 3 & 344 & infinite\\
\hline
\hline
16 & 0 & parallel & 3.4 & 6 & 164 & 168 & 8k/12k\\
\hline
16 & 0 & nonparallel & 126 & 3.4& 164 & 295 & 8k/23k\\
\hline
16 & 1 & parallel & 6.1 & 2.9& 339 & 346 & 8k/28k\\
\hline
16 & 1 & nonparallel & 255 & 1.7& 339 & 592 & infinite\\
\hline
16 & 2 & parallel & 11 & 1.5& 66 & 78 & infinite \\
\hline
16 & 2 & nonparallel & 504 & 0.85 & 7 & 512 & infinite\\
\hline
\hline
32 & 2 & parallel & 11 & 2& & &\\
\hline
32 & 2 & nonparallel & 504 & $<2$& & &\\
\hline
\end{tabular}
\caption{Readout settings.}
\caption{Readout settings. The {\tiny{min exptime}} possible is 5$-$10~$\mu$s. This is due to the time to pass the pixel enable signal in the whole chip.}
\label{tframes}
\end{flushleft}
\end{table}
\end{tiny}
\textbf{As if you run too fast, the detector could become noisier, it is important to match the detector settings to your frame rate. This can be done having more parameters files and load the one suitable with your experiment.} We experienced that {\tt{highgain}} settings could not be used at 6~kHz.
\textbf{We recommend to use the detector in 32 bit mode with {\tt{clkdivider 2}}, {\tt{flags parallel}}. We recommend to use the detector in 16 bit mode with {\tt{clkdivider 1}}, {\tt{flags parallel}}}. In general, choose first the desired dead time: this will tell you if you want to run in parallel or non parallel mode. Then, choose the maximum frame rate you want to aim, not exceeding what you aim for not to increase the noise.
\section{External triggering options}
@ -293,7 +396,7 @@ Here are the implemented options so far:
\item{\tt{gating}} allows to get a frame only when the trigger pulse is gating. Note that in this case the exp time and period only depend on the gating signal. {\tt{cycles}} allows to select how many gates to consider.
\end{itemize}
Hardware-wise, the ENABLE OUT signal outputs when the chips are really acquiring. This means that the single subframes will be outputted in 32 bit mode. The TRIGGER OUT outputs the sum-up-signal at the moment (which is useless). This will be changed in the future to output the envelop of the enable signal.
Hardware-wise, the ENABLE OUT signal outputs when the chips are really acquiring. This means that the single subframes will be output in 32 bit mode. The TRIGGER OUT outputs the sum-up-signal at the moment (which is useless). This will be changed in the future to output the envelop of the enable signal.
We are planning to change some functionality, i.e. unify the {\tt{trigger}} and {\tt{burst}} trigger modes and make both {\tt{frames}} and {\tt{cycles}} configurable at the same time.
@ -308,6 +411,15 @@ sls_detector_put 0-subexptime [time_in_s]
One needs to realize that the readout time, for each subframe is 10.5~$\mu$s if the detector is in parallel mode. 500~$\mu$s if the detector is in non parallel mode. Note that in {\tt{dr 32}}, as the single frame readout from the chip is 500~$\mu$s, no {\tt{subexptime}}$<$500~$\mu$s can be set in {\tt{parallel}} mode. To have smaller {\tt{subexptime}}, you need the {\tt{nonparallel}} mode, although this will have a larger deadtime than the acquisition time.\\
Rate corrections are possible online (and the came procedure can be used offline) by creating a look-up table between the theoretically incident counter value $c_i$ and the detected counter value $c_d$.
In the EIGER on board server, this look-up table is generated assuming that the detected rate $n_d$ can be modeled as a function of the incident rate $n_i$ according to the paralyzable counter model:
\begin{equation}
n_d= n_i \cdot exp(-n_i \cdot \tau),
\label{rate}
\end{equation}
where $\tau$ represents an effective parameter for the dead time and the loss in efficiency. The look-up table is necessary as we are interested to obtain $c_i(c_d)$ and equation~\ref{rate} is not invertible. One needs to notice that the paralizable counter model to create a look-up tables applies only if photons arrive with a continuous pattern (like at the SLS). If photons are structured in fewer but intenser bunches, deviations may arise. This is the case for some operation modes at the ESRF. For those cases we are studying how to correct, probably from a simulated correction tables if an analytical curve cannot be found.
\textbf{In the new calibration scheme, $\tau$ is given as a function of the energy. It is loaded from the trimbit files and interpolation between two trimbit files are performed.} One needs to make sure the appropriate $\tau$ value is written in the trimbit files, then need to load the appropriate {\tt{settings}} and {\tt{vthreshold}} before.
Online rate corrections can be activated for {\tt{dr=32}}. They are particularly useful in the autosumming mode as every single subframe is corrected before summing it. To correct for rate, the subframe duration has to be known to the correction algorithm. Rate corrections for {\tt{dr=16}} will be activated as well in the next firmware release.
To activate the rate corrections, one should do:\\
\begin{verbatim}
@ -317,14 +429,39 @@ To deactivate:
\begin{verbatim}
sls_detector_put 0-ratecorr 0
\end{verbatim}
Default values for tau can be loaded from the trimbit files. In this case, one needs to make sure the appropriate tau value is written in the trimbit files, then need to load the appropriate {\tt{settings}} and {\tt{vthreshold}} before. Now to activate the rate corrections with the value written in the trimbit file or interpolated from there, once would do:
Now to activate the rate corrections with the value written in the trimbit file or interpolated from there, once would do:
\begin{verbatim}
sls_detector_put 0-ratecorr -1
\end{verbatim}
Every time either the rate corrections are activated, $\tau$ is changed or the subframe length is changed, then a new correction table is evaluated. Note that computing the correction table is time consuming.
\section{Dependent parameters and limits}
Here is a list of dependent parameters:
\begin{enumerate}
\item \textbf{dr} changes \textbf{clkdivider}: \textbf{dr} 16 $\to$ \textbf{clkdivider} 1. You can change it to (0, 1, 2); the frame rate changes accordingly to table~\ref{tframes}. Setting the \textbf{dr} to 32 changes \textbf{clkdivider} to 2. Only way \textbf{dr} 32 can work.
\end{enumerate}
Here is a list of "ignored'' parameters, meaning that if the parameters are not what the detector expects, it will ignore them, but there is no guarantee that you get what you think you are asking:
\begin{enumerate}
\item \textbf{period}. Assuming that you set the correct \textbf{exptime} according to the table~\ref{tframes}, the \textbf{period} to be used by the detector has to be $>=$ \textbf{exptime}+readout time (table~\ref{tframes}). Otherwise the detector will take data at the minimum possible period, which is \textbf{exptime}+readout times. \textbf{period} is not changed by the detector after the acquisition.
\end{enumerate}
Here is a list of limits that should be checked:
\begin{enumerate}
\item
If \textbf{dr} is 32 and \textbf{clkdivider} is not 2, whatever the detector gets out is wrong (the boards cannot properly keep up)
\item If the variable \textbf{frames} is greater than what the memory can store (table~\ref{timgs}) and the frame rate exceed the continuos streaming (table~\ref{tcont}), limits on the maximum number of images need to be implemented if the period is lower than the one listed in table~\ref{tcont}. Check table~\ref{tframes} to see the different cases.
\item Running at a speed that does not support the frame rate you are asking: see table~\ref{tframes} to check if the frame rate (\textbf{period}) you are asking is compatible with the \textbf{clkdivider} you are asking.
\item Running at a redout time that does not support the frame rate you are asking. Check table~\ref{tframes} to check if the frame rate (\textbf{period}) you are asking is compatible with the \textbf{flags} you are asking.
\item The minimum allowed value for \textbf{exptime} should be 10~$\mu$s.
\item By default the {\textbf{subexptime}} is set to 2.621440~ms. Values smaller than 500~$\mu$s do not make sense. The maximum value is 5.2~s. This limits should be checked.
\end{enumerate}
\section{1Gb/s, 10Gb/s links}
\subsection{Checking the 1Gb/s, 10Gb/s physical links}
\subsection{Checking the 1Gb/s, 10Gb/s physical links}\label{led}
LEDs on the backpanel board at the back of each half module signal:
\begin{itemize}
\item the 1Gb/s physical link is signaled by the most external LED (should be green)
@ -366,21 +503,26 @@ In the example before, it would be: {\tt{zzzz}}=4*100000+ 100000
./sls_detector_put rx_fifodepth xxxx
\end{verbatim}
{\tt{xxxx}} is 100 images by default.
\item Deactivate a half module (for ROI or debugging):
\item Deactivate a half module (for ROI or debugging). Note that the MASTER module SHOULD NOT be deactivated:
\begin{verbatim}
./sls_detector_put X:activated 0
./sls_detector_put X:activate 0
\end{verbatim}
where $X$ is the half module you want to deactivate.
The receiver at this point will return fake data (overflow) for this module. If you wish to eliminate the receiver overall for this module, then you need to run a configuration file where this module has been removed.
To activate back a module, do:
\begin{verbatim}
./sls_detector_put X:activated 1
./sls_detector_put X:activate 1
\end{verbatim}
\end{itemize}
\subsection{Setting up 10Gb correctly: experience so far}
\subsection{Setting up 10Gb correctly: experience so far}\label{10g}
For configuring well the 10Gb card not to loose packets, as root, do:
For configuring well the 10Gb card not to loose packets,
\begin{itemize}
\item MTU must be set up to 9000 (jumbo frames) on all the involved sides: detector, switch, server NIC
\item you should set up static MAC address tables with separated VLANs
\end{itemize}
As root, also do:
\begin{verbatim}
ethtool -G xth1 rx 4096, ethtool -C xth1 rx-usecs 100
\end{verbatim}
@ -398,6 +540,73 @@ Very important is to activate the flow control in 10Gb (in 1Gb it is on by defau
Set the transmission delays as explained in the manual.
\section{Offline processing and monitoring}
\subsection{Data out of the detector: UDP packets}
The current UDP header format is described in figure~\ref{UDPheader}.
\begin{figure}[t]
\begin{center}
\includegraphics[width=1.2\textwidth]{EIGERUDPHeader}
\end{center}
\caption{UDP header out of EIGER}
\label{UDPheader}
\end{figure}
\subsection{Data out of the slsReceiver}
For a module, the geometry of the ports are as in table~\ref{tports}:
\begin{table}
\begin{tabular}{|c|c|}
\hline
{\tt{0:rx\_udpport 50011}} & {\tt{0:rx\_udpport2 50012}}\\
\hline
{\tt{1:rx\_udpport 50013}} & {\tt{1:rx\_udpport2 50014}}\\
\hline
\end{tabular}
\caption{UDP port geometry for a single module, 4 UDP ports.}
\label{tports}
\end{table}
white the option {\tt{n:flippeddatax 1}}, which flips in vertical the content of the module. By convection, we usually use {\tt{1:flippeddatax 1}}, but one could flip the top instead.
\subsection{``raw'' files}
If you use the option of writing raw files, you will have a raw file for each UDP port (meaning most likely 2 chips), 4 files per module. In addition to the raw files, you will get also a ``master'' file, containing in ascii some detector general parameters and the explanation of how to interpret the data from the raw files.
The master file is named: {\tt{filename\_master\_0.raw}} and for version ``3.0'' of the slsDetectorSoftware looks like:
\begin{verbatim}
Version : 1.0
Dynamic Range : 16
Ten Giga : 1
Image Size : 262144 bytes
x : 512 pixels
y : 256 pixels
Total Frames : 1
Exptime (ns) : 1000000000
SubExptime (ns) : 2621440
Period (ns) : 1000000000
Timestamp : Thu Aug 17 10:55:19 2017
#Frame Header
Frame Number : 8 bytes
SubFrame Number : 4 bytes
Packet Number : 4 bytes
Bunch ID : 8 bytes
Timestamp : 8 bytes
Module Id : 2 bytes
X Coordinate : 2 bytes
Y Coordinate : 2 bytes
Z Coordinate : 2 bytes
Debug : 4 bytes
Round Robin Number : 2 bytes
Detector Type : 1 byte
Header Version : 1 byte
\end{verbatim}
Note that if one wants to reconstruct the real time the detector was acquiring in 32 bit (autosumming mode), one would have to multiply the SubExptime (ns) for the SubFrame Number.
\subsection{Offline image reconstruction}
The offline image reconstruction is in {\tt{slsDetectorsPackage/slsImageReconstruction}}.
@ -437,7 +646,7 @@ It is important to know, that the pixels at the edge between 2 chips count more
\subsection{Read temperatures/HV from boards}
With an updated kernel on the linux boards (ask to the SLS detector group for specifications), it is possible to monitor the temperature on the Back End Boards:
With an updated kernel on the linux boards (ask to the SLS detector group for specifications), it is possible to monitor the temperature on the boards:
\begin{verbatim}
temp_fpga #gets the temperature of the fpga
temp_fpgaext #gets the temperature close to the fpga
@ -462,11 +671,11 @@ The HV can also be set and read through the software:
./sls_detector_put vhighvoltage 150
./sls_detector_get vhighvoltage
\end{verbatim}
Note that the get {\tt{vhighvoltage}} would return the measured HV from the master module only.
Note that the get {\tt{vhighvoltage}} would return the measured HV from the master module only. If getting the vhighvoltage for individual halfmodules, only the master will have a value different from -999.
\appendix
\section{Kill the server, copy a new server, start the server}
\section{Kill the server, copy a new server, start the server}\label{server}
All the below operations are form a terminal and assume you login to the boards.\\
Kill current server:
\begin{verbatim}
@ -489,7 +698,19 @@ Start the server again:
\section{Loading firmware bitfiles}
A \textbf{bcp} executable (which needs \textbf{tftp} installed on the PC, is needed. First of all, you need to press something on the detector: to programm bitfiles (firmware files), do a hard reset with a pin/thin stuff in the holes at the very back of the module. They are between the top 7 LED and the bottom 1 and opposite for the other side. Push hard till all LEDs are alternating green and red. After booting only the central one should be on green and red alternating. From a terminal, do:
A \textbf{bcp} executable (which needs \textbf{tftp} installed on the PC, is needed.
\begin{enumerate}
\item Manual way: you need to press something on the detector. To program bitfiles (firmware files), do a hard reset with a pin/thin stuff in the holes at the very back of the module. They are between the top 7 LED and the bottom 1 and opposite for the other side. Push hard till all LEDs are alternating green and red.
\item Software way (possible only if you have the correct programs copied on your board. If not, as the sls detector group).
\begin{verbatim}
ssh root@bebxxx
cd executables
./boot_recovery
\end{verbatim}
\end{enumerate}
In both case, after booting, only the central one should be on green and red alternating.
From a terminal, do:
\begin{verbatim}
nc -p 3000 -u bebxxx 3000
\end{verbatim}
@ -522,7 +743,7 @@ sls_detector_put pulsechip -1 #to get out of testing mode
\end{verbatim}
Note that the answer will be $2 \cdot \textrm{{\tt{N}}} +2$ in this case.
\item \textbf{Pulse analogically:} You want to really check the analogical part of the detcetor, not just the readout.
\item \textbf{Pulse analogically:} You want to really check the analogical part of the detector, not just the readout.
\begin{verbatim}
sls_detector_put vcall 3600
@ -546,8 +767,6 @@ For debug purposes, we have created a noise pattern with a shape. If you reconst
To load the special noise file look at {\tt{settingsdir/eiger/standard/eigernoise.sn0xx}} in the package.
\begin{verbatim}
sls_detector_put trimbits ../settingsdir/eiger/standard/eigernoise
sls_detector_put vthreshold 4000
sls_detector_put vtr 4000
\end{verbatim}
\section{Running the (9M at cSAXS. For now)}
@ -558,5 +777,255 @@ sls_detector_put vtr 4000
\item p config ../../eiger\_9m\_10gb\_xbl-daq-27\_withbottom.config
\end{itemize}
\section{Troubleshooting}
\subsection{Cannot successfully finish an acquisition}
\subsubsection{only master module return from acquisition}
When no packets are received AND detector states in 'running status'. Widest list of causes.
Query the status of each half module till the maximum number {\tt{N}}, {\tt{for i in \$(seq\ 0\ N); do sls\_detector\_get \$i:status; done}}, to check if there are half modules that are still running.
If only the master modules return but ALL the other half modules do not:
\begin{itemize}
\item FEB LED 1 and or 3 become red while trying to acquire an image: reconnect or change the DDR2 memories. Technically it is a FIFO problem to communicate the data to the rest of the chain.
\item It can be that the master cable is not connected, check.
\item It can be that the synchronization cable is not connected or the termination board at the synchronization does not work. Check.
\end{itemize}
\subsubsection{a few modules do not return from acquisition}
If only a few modules are still running but the others return, it is a real problem with a backend board or a synchronization bug.
If you can, ssh into the board, kill and start the eigerDetectorServer again (see Section~\ref{server} for how to do this). Keep the terminal with the output from the eigerDetectorServer and repeat the acquisition.
\begin{itemize}
\item Check if the acquisition returned from the server or not. In case seek help from the SLSDetectorGroup.
\item In the server you read something along the lines of "cannot read top right address". It is communication between the front and backend board. Or FEB FPGA is not programmed. Try to program again FPGA, and make sure you program FPGA bit files 70x, if you have 70x FPGAs, or 30x, if you have 30x FPGAs. If still fails, tell the SLSDetectorGroup as it could be a hardware permanent failure.
\end{itemize}
\subsection{No packets (or very little) are received}
In both cases running \textbf{wireshark} set to receive UDP packets on the ethernet interface of the receiver (filter the UDPport$>=$xxxx, where xxxx is written in the configuration file) can help you understanding if NO packets are seen or some packets are seen. You have to set the buffer size of the receiving device in wireshark to 100Mbyte minimum. If no packets are received, check that your receiving interface and detector UDPIPs are correct (if in 10Gb). Most of the time in this case it is a basic configuration problem.
If some packets are received, but not all, then it is an optimization problem:
\begin{itemize}
\item For receiving data over 1Gb, the switch must have FLOW CONTROL enabled
\item If using 10GbE, check that the 10Gb link is active on the backpanel board. Then refer to Section~\ref{10g} to see how to configure the 10Gb ports on the receiving machine correctly.
\end{itemize}
\subsection{The module seems dead, no lights on BEBs, no IP addresses}
\begin{itemize}
\item Check the 2 fuses on the power distribution board. If one of the fuses is in shortcuircuit, then exchange it. Nominal values are 7 A and 5 A. Old modules with 5 A and 3 A could trip.
\item The module is not properly cooled and the temperature safety switch has killed the power to the backend boards.
\end{itemize}
\subsection{The module seems powered but no IP addresses}
If the 1G LED (see Section~\ref{led}) on the backpanel board is not green:
\begin{itemize}
\item Check that the 1Gb cable is plugged in.
\item Check that there is a DCHP server assigning IP addresses to the board.
\item The IP address is assigned only at booting up of the boards. Try to reboot in case the board booted before it could have an IP address.
\item Check that you did not run out of IP addresses
\end{itemize}
Check that the board is not in recovery mode (i.e. the central LED on the back is stable green). In this case reboot the board with the soft reset or power cycle it.
If the 1Gb LED on the backpanel board is green (see Section~\ref{led}):
\begin{itemize}
\item Check that the IP address has been refreshed on the PC you are trying to communicate to the detector from. Run on the PC as root the following command to update the DNS cache: \textbf{nscd -i hosts}
\end{itemize}
\subsection{Receiver cannot open socket}
It is connected to the TCPport which the receiver uses:
\begin{itemize}
\item The port is already in use by the same receiver already opened somewhere or by another process: check with \textbf{ps -uxc} your processes
\item In rare cases, it might be that the TCP port crashes. To find out which process uses the TCPPOrt do: \textbf{netstat -nlp | grep xxxx}, where xxxx is the tcpport number. To display open ports and established TCP connections, enter: \textbf{netstat -vatn}. Kill the process.
%%%#To display only open UDP ports try the following command: netstat -vaun
\end{itemize}
\subsection{Client has \textbf{shmget error}}
Note that occasionally if there is a shared memory of a different size (from an older software version), it will return also a line like this:
\begin{verbatim}
*** shmget error (server) ***-1
\end{verbatim}
This needs to be cleaned with {\tt{ipcs -m}} and then {\tt{ipcrm -M xxx}}, where xxx are the keys with nattch 0. Alternative in the main slsDetectorFolder there is a script that can be used as {\tt{sh cleansharedmemory.sh}}. Note that you need to run the script with the account of the client user, as the shared memory belongs to the client. It is good procedure to implement an automatic cleanup of the shared memory if the client user changes often.
\subsection{Measure the HV}
For every system but not the 9M:
\begin{itemize}
\item Software-wise measure it (now the software returns the measured value), with {\tt{sls\_detector\_get vhighvoltage}}. The returned value is the HV (for proper Eiger setting is approximately 150~V) if it is correctly set. If two master modules are presents (multi systems), the average is returned (still to be tested). If one asks for the individual $n$ half module bias voltage through {\tt{sls\_detector\_get n:vhighvoltage}}, if the $n$ module is a master, the actual voltage will be returned. If it is a slave, -999 will be returned.
\item Hardware-wise measure value of HV on C14 on the power distribution board. Check also that the small HV connector cable is really connected.
\end{itemize}
\subsection{The image now has a vertical line}
Check if the vertical line has a length of 256 pixels and a width of 8 columns. In this case it is a dataline beeing bad. It can be either a wirebond problem or a frontend board problem. try to read the FEB temperature (see Section~\ref{}) and report the problem to the SLSDetector group. Most likely it will be a long term fix by checking the hardware.
\subsection{The image now has more vertical lines}
If you see strange lines in vertical occurring at period patterns, it is a memory problem. The pattern is 4 columns periodic in 16 bit mode, 8 columns periodic in 8 bit mode and 2 columns periodic in 32 bit mode. Try to switch on and off (sometimes it is a strange initialization problem).
\subsection{ssh to the boards takes long}
Depending on your network setup, to speed up the ssh to the boards from a pc with internal dhcp server running: \textbf{iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE; echo "1" > /proc/sys/net/ipv4/ip\_forward}, where eth1 has to be the 1Gb network device on the pc
\subsection{Check firmware version installed on BEB}
Follow some steps described in Section~\label{server}.
\begin{verbatim}
ssh root@bebxxx #password is root
killall eigerDetectorServer # kill server and stopserver
cd executables/
./eigerDetectorServer&
\end{verbatim}
Scroll up in the terminal till you find {\tt{Firmware Version: xx}}
\subsection{Check if half-module is a master, a slave, a top or a bottom}
Follow some steps described in Section~\label{server}.
\begin{verbatim}
ssh root@bebxxx #password is root
killall eigerDetectorServer # kill server and stopserver
cd executables/
./eigerDetectorServer&
\end{verbatim}
Scroll up in the terminal till you find:\\
*************** TOP/BOTTOM ***************\\
*************** MASTER/SLAVE ***************\\
*************** NORMAL/SPECIAL ***************\\
\section{Client checks - command line}
Guide on returned strings:
\begin{enumerate}
\item \begin{verbatim}
sls_detector_get free
\end{verbatim}
Returns a list of shared memories cleaned (variable number depending on detector):
\begin{verbatim}
Shared memory 273612805 deleted
Shared memory 276922374 deleted
Shared memory 270270468 deleted
free freed
\end{verbatim}
Note that occasionally if there is a shared memory of a different size (from an older software version), it will return also a line like this:
\begin{verbatim}
*** shmget error (server) ***-1
\end{verbatim}
This needs to be cleaned with {\tt{ipcs -m}} and then {\tt{ipcrm -M xxx}}, where xxx are the keys with nattch 0.
\item \begin{verbatim}sls_detector_get settings
settings standard
\end{verbatim}
{\tt{standard}} is only if correct. {\tt{undefined}} or anything else is wrong.
\item \begin{verbatim}
sls_detector_get threshold
threshold xxxx
\end{verbatim}
Returns a string (xxxx) that can be interpreted as the threshold in eV. If it fails to set it, returns the last threshold it was set (which the detector still has). If settings are not defined or different trimbits are chosen, it will return "undefined".
\item \begin{verbatim}
sls_detector_get fname
fname string
\end{verbatim}
\item \begin{verbatim}
sls_detector_get exptime
exptime number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as a float in (s).
\item \begin{verbatim}
sls_detector_get period
period number
\end{verbatim}
where {\tt{nuymber}} is a string to be interpreted as a float in (s).
\item \begin{verbatim}
sls_detector_get frames
frames number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as an integer.
\item \begin{verbatim}
sls_detector_get cycles
cycles number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as an integer.
\item \begin{verbatim}
sls_detector_get status
status string
\end{verbatim}
where {\tt{string}} can be {\tt{idle}} or {\tt{running}}.
\item \begin{verbatim}
sls_detector_get index
status number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as an integer.
\item \begin{verbatim}
sls_detector_get dr
dr number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an integer (4/8/16/32).
\item \begin{verbatim}
sls_detector_get clkdivider
clkdivider number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an integer (0/1/2/3).
\item \begin{verbatim}
sls_detector_get flags
flags string1 string2
\end{verbatim}
where {\tt{string1}} is a string should be always {\tt{continous}} and {\tt{string2}} can be either {\tt{nonparallel}} or {\tt{parallel}}.
\item \begin{verbatim}
sls_detector_get timing
timing string
\end{verbatim}
where {\tt{string}} is a string which can be {\tt{auto/trigger/burst\_trigger/gating}}.
\item \begin{verbatim}
sls_detector_get enablefwrite
enablefwrite number
\end{verbatim}
where {\tt{number}} is a string which should be interpreted as an integer "0" or "1".
\item \begin{verbatim}
sls_detector_get framescaught
framescaught number
\end{verbatim}
where {\tt{number}} is a string which should be interpreted as an integer of the complete frames got by the receiver.
\item \begin{verbatim}
sls_detector_get frameindex
frameindex number
\end{verbatim}
where {\tt{number}} is a string which should be interpreted as an integer of the last frame number read from firmware. It comes from the receiver, though and reset after every acquisition series.
\item \begin{verbatim}
sls_detector_get subexptime
subexptime number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as a float in s. The default value is 0.002621440.
\item \begin{verbatim}
sls_detector_get ratecorr
ratecorr number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as a float in s. 0.000000 means correction off. Values above zero are the value of $\tau$ in ns.
\item \begin{verbatim}
sls_detector_get vhighvoltage
vhighvoltage number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an int and for proper Eiger setting is approximately 150~V if it is correctly set. If two master modules are presents (multi systems), the average is returned (still to be tested). If one asks for the individual $n$ half module bias voltage through {\tt{sls\_detector\_get n:vhighvoltage}}, if the $n$ module is a master, the actual voltage will be returned. If it is a slave, -999 will be returned.
\item \begin{verbatim}
sls_detector_get busy
busy number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an int for 0/1 meaning no/yes. This command tells if the sharedmemory has in memory that an acquisition has been started or not. It should allows to use the non blocking acquire, regardless of any delay to the detector getting into 'running' mode.
\end{enumerate}
\end{document}

View File

@ -1,6 +1,5 @@
DESTDIR?=../docs
#manual-api manual-calwiz manual-client manual-gui manual-main
@ -11,34 +10,50 @@ MAINTEXS= slsDetectorClientHowTo.tex
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
#TARGETS=$(join $(DESTDIR)/, $(notdir $(MAINTEXS:.tex=.pdf)))
#destdir?!?!?
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
#destdir?!?!?
all: $(PDFS) $(HTMLS)
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
@ -54,4 +69,10 @@ $(HTMLS): $(MAINTEXS)
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

View File

@ -81,6 +81,6 @@ LATEX_HIDE_INDICES = YES
PREDEFINED = __cplusplus
INPUT = slsDetector/slsDetectorUsers.h slsDetectorAnalysis/detectorData.h
INPUT = slsDetectorCommand.cpp
OUTPUT_DIRECTORY = slsDetectorUsersDocs
OUTPUT_DIRECTORY = slsDetectorClientDocs

View File

@ -125,7 +125,7 @@ Refer to detailed documentation to understand how the different timing modes wor
Refer to detailed documentation to understand how the different timing modes work.
\item[dr n] Sets the dynamic range n (in bits) of the data for a photon counting detector. For \E it can be set to 4, 8, 16 (but the real counter depth will still be limited to 12 bits) or 32 when one wants to activate the internal subframe summing mode.
\item[flags s] Sets some particular flags for your detector. For MYTHEN s can be \textit{none}, \textit{storeinram} (for buffered readout) or \textit{tot} (for time over threshold). For \E, s can be {\it{continous}} (for continous readout), \textit{storeinram} (for buffered readout), \textit{parallel} for parallel exposure to the next frame and readout of the previous frame, \textit{nonparallel} to decouple sequentially readout and exposure, \textit{safe} (rowclock interleaved).
\item[flags s] Sets some particular flags for your detector. For MYTHEN s can be \textit{none}, \textit{storeinram} (for buffered readout) or \textit{tot} (for time over threshold). For \E, s can be {\it{continous}} (for continous readout- still buffer on memories happens), \textit{storeinram} (for buffered readout. Do not use as has no graet advantages), \textit{parallel} for parallel exposure to the next frame and readout of the previous frame, \textit{nonparallel} to decouple sequentially readout and exposure, \textit{safe} (rowclock interleaved).
%\item[timestamp]
\item[help cmd] Returns the help for command cmd.
\item[lock] Locks (1) or unlocks (0) the detector to this particular control PC. An be unlocked again only from the same PC or by rebooting the detector.
@ -395,7 +395,7 @@ For some commands, an additional argument \verb=arg= is needed.
\subsection{Standard commands}
All the commends return two strings, where string1 is the command, string2 is teh actual returned string.
\begin{description}
\item[config fname]
@ -403,9 +403,11 @@ Dumps the current configuration of the detector to the file fname.
\item[parameters fname]
Dumps the current acquisition parameters of the detector to the file fname.
\item[settings]
Returns the current settings of the detector.
Returns the current settings of the detector. Returns a string
\item[threshold]
For photon counting detectors, returns the detector threshold in eV, -1 if undefined.
For photon counting detectors, returns the detector threshold in eV, -1 if undefined. Returns ``threshold value\_in\_eV''. If it fails, the returned threshold is the old set value.
\item[timing]
Returns the acquisition timing mode of the detector.
Refer to the detailed documentation to understand how the different timing modes work.
@ -415,10 +417,10 @@ Returns the path where the output files are saved to.
Returns the prefix of the file name for the data output.
\item[enablefwrite] Returns if data are written to file (1) or not (0).
\item[exptime]
Returns the exposure time of a single acquisition in seconds.
Returns the exposure time of a single acquisition in seconds. Example: "exptime 1.000000000''
Refer to detailed documentation to understand how the different timing modes work.
\item[period]
Returns the frames period (in s).
Returns the frames period (in s). Example: ``period 1.000000000''
Refer to detailed documentation to understand how the different timing modes work.
\item[delay]
Returns the delay after trigger in triggered mode (in s).
@ -427,18 +429,19 @@ Refer to detailed documentation to understand how the different timing modes wor
Returns the number of gates per frame in gated (stroboscopic) mode.
Refer to detailed documentation to understand how the different timing modes work.
\item[frames]
Returns the number of frames acquired sequentially per cycle (e.g. after each trigger), with the exposure time defined by exptime and the period defined by period (unless in gated mode).
Returns the number of frames acquired sequentially per cycle (e.g. after each trigger), with the exposure time defined by exptime and the period defined by period (unless in gated mode). Returned as a string to be interpreted as an integer ``frames integer''
Note that the total number of images is frames times cycles.
Refer to detailed documentation to understand how the different timing modes work.
\item[cycles n]
Returns the number of cycles (e.g. number of triggers).
Returns the number of cycles (e.g. number of triggers). Returned as atring to be interpreted as an integer ``cycles integer''
Note that the total number of images is frames times cycles.
Refer to detailed documentation to understand how the different timing modes work.
\item[probes] Returns the number of probes to accumulate for stroboscopic measurements.
Refer to detailed documentation to understand how the different timing modes work.
\item[measurements] Returns the number of repetitions of the acquisitions (non real time!).
Refer to detailed documentation to understand how the different timing modes work.
\item[dr] Returns the dynamic range n (in bits) of the data for a photon counting detector.
\item[dr] Returns the dynamic range n (in bits) of the data for a photon counting detector. Returns a string that should be interpreted as an integer.
\item[flags s] Returns the flags set for your detector.
\item[help cmd] Returns the help for command cmd.
\item[lock] Returns if the detector is locked to a single PC.
@ -576,9 +579,15 @@ Advanced commands to configure the detector system. Should be left to the config
\item[stopport]Returns the port used by the sockets to stop/get the status of the detector.
%\item[add s] Avoid using it. Adds the controller s to the detector structure.
%\item[remove i] Avoid using it. Removes the controller in position i from the detector structure.
\item[id[:i]] returns the id of the detector structure. i is the detector position in a multi detector system
\item[id[:i]] returns the id of the detector structure. i is the detector position in a multi detector system
\item[free] Avoid using it. Frees the shared memory.
\end{description}
Settable communication parameters:
\begin{description}
\item[txndelay\_left] \E advanced: Set transmission delay of sending the left port frame
\item[txndelay\_right] \E advanced: Set transmission delay of sending the right port frame
\item[txndelay\_frame] \E advanced: Set transmission delay of sending the entire frame In addition to left and right. This value has to be greater than the maximum of the transmission delays of each port.
\end{description}
\subsubsection{Receiver - GOTTHARD only}
@ -598,7 +607,7 @@ Advanced commands to configure the detector system. Should be left to the config
\item[r\_online b] Returns whether the receiver in online (1) or offline (0) mode.
\item[r\_checkonline] Returns whether the receiver in online (1) or offline (0) mode.
\item[framescaught] Returns the number of frames received.
\item[framescaught] Returns the number of frames received. Returns: "framescaught n''
\item[resetframescaught n] Sets the number of frames received to 1
\item[frameindex] Returns the index of the last frame received.
\item[r\_lock] Returns whether the receiver is locked (1) or unlocked (0).
@ -654,23 +663,31 @@ Advanced settings changing the analog or digital performance of the acquisition.
\item[ib\_test\_c] Returns ib\_test\_c
\item[vsvp] Returns vsvp
\item [vsvn] Returns vsvn
\item [vtr] Returns vtr
\item [vrf] Returns vrf
\item [vrs] Returns vrs
\item [vtgstv] Returns vtgstv
\item[vcmp\_ll] Returns vcmp\_ll
\item [vcmp\_lr] Returns vcmp\_lr
\item [vcmp\_rl] Returns vcmp\_rl
\item [vcmp\_rr] Returns vcmp\_rr
\item [vcall] Returns vcall
\item [rxb\_rb] Returns rxb\_rb
\item [rxb\_lb] Returns rxb\_rb
\item [vcp] Returns vcp
\item [vcn] Returns vcn
\item [vis] Returns vis
\item [vtr] Returns vtr trim strength (\E)
\item [vrf] Returns vrf preamp gain (\E)
\item [vrs] Returns vrs shaper gain (\E)
\item [vtgstv] Returns vtgstv (\E)
\item[vcmp\_ll] Returns vcmp\_ll (\E) leftmost chip theshold
\item [vcmp\_lr] Returns vcmp\_lr (\E) second to leftmost chip theshold
\item [vcmp\_rl] Returns vcmp\_rl (\E) second to rightmost chip theshold
\item [vcmp\_rr] Returns vcmp\_rr (\E) rightmost chip theshold
\item [vcall] Returns vcall calibration stength (\E)
\item [rxb\_rb] Returns rxb\_rb rightmost chip value to decode 0-1 in the readout
\item [rxb\_lb] Returns rxb\_lb leftmost chip value to decode 0-1 in the readout
\item [vcp] Returns vcp cascode p value (\E)
\item [vcn] Returns vcn cascode n value (\E)
\item [vis] Returns vis shaper current (\E)
\item [iodelay] Returns iodelay
\item[temp\_adc] Returns the temperature of the ADCs
\item[temp\_fpga] Returns the temperature of the FPGA.
\item[temp\_fpgaext] Returns the temperature close to the fpga (\E).
\item[temp\_10ge] Returns the temperature close to the 10GE (\E).
\item[temp\_dcdc] Returns the temperature close to the dc dc converter (\E).
\item[temp\_sodl] Returns the temperature close to the left so-dimm memory (\E).
\item[temp\_sodr] Returns the temperature close to the right so-dimm memory (\E).
\item[temp\_fpgafl] Returns the temperature of the left front end board fpga (\E).
\item[temp\_fpgafr] Returns the temperature of the right front end board fpga (\E).
\item[reg a] Write to register of address a the data d
\item[clkdivider] Returns the clock divider for the readout.
\item[setlength] Returns the length of the set/reset signals in the acquisition.

View File

@ -0,0 +1 @@
../../slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp

View File

@ -8,40 +8,32 @@ TEX=latex
MAINTEXS= slsDetectorGuiHowTo.tex
#TEXS=
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
#TARGETS=$(join $(DESTDIR)/, $(notdir $(MAINTEXS:.tex=.pdf)))
#destdir?!?!?
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
#destdir?!?!?
all: $(PDFS) $(HTMLS)
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)
$(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 $(TEXS)
latex $<
@ -57,3 +49,5 @@ $(HTMLS): $(TEXS) $(MAINTEXS)
clean:
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
rm -rf $(DESTDIR)/html/slsDetectorGuiHowTo
rm -rf $(DESTDIR)/pdf/slsDetectorGuiHowTo.pdf

View File

@ -1,42 +1,58 @@
DESTDIR=../
DESTDIR=../docs
TEX=latex
MAINTEXS= slsDetectors-FAQ.tex slsDetectorInstall.tex
MAINTEXS2= slsDetectorInstall.tex
MAINTEXS=slsDetectors-FAQ.tex
TEXS=slsDetector-softFAQ.tex singlePhotonCounting-FAQ.tex angConv-FAQ.tex generalDet-FAQ.tex
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
PDFS2 = $(MAINTEXS2:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
HTMLS2 = $(MAINTEXS2:%.tex=%)
#destdir?!?!?
all: $(PDFS) $(HTMLS)
all: pdf html
echo $(PWD)
echo $(PDFS)
echo $(PDFS2)
echo $(HTMLS)
echo $(HTMLS2)
pdf: $(PDFS)
pdf: $(PDFS) $(PDFS2)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
mv $(PDFS) $(DESTDIR)/pdf
mv $(PDFS) $(DESTDIR)/pdf
mv $(PDFS2) $(DESTDIR)/pdf
html: $(HTMLS)
html: $(HTMLS) $(HTMLS2)
$(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 -fr $(DESTDIR)/html/$@)
echo "***************************** $@"
latex $@.tex
latex2html -split 4 $@.tex
mv $(HTMLS) $(DESTDIR)/html
latex2html $@.tex
mv $@ $(DESTDIR)/html
$(HTMLS2): $(MAINTEXS2)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
$(shell test -d $(DESTDIR)/html/$@ && rm -fr $(DESTDIR)/html/$@)
echo "***************************** $@"
latex $@.tex
latex2html -split 16 -no_navigation -info "" -address "" -long_titles 5 -link 0 $@.tex
#-show_section_numbers $@.tex
# -local_icons
mv $@ $(DESTDIR)/html
%.dvi : %.tex $(TEXS)
@ -52,4 +68,8 @@ $(HTMLS): $(TEXS) $(MAINTEXS)
clean:
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(PDFS2) $(HTMLS) $(HTMLS2)
rm -rf $(DESTDIR)/html/slsDetectors-FAQ
rm -rf $(DESTDIR)/html/slsDetectorInstall
rm -rf $(DESTDIR)/pdf/slsDetectors-FAQ.pdf
rm -rf $(DESTDIR)/pdf/slsDetectorInstall.pdf

View File

@ -0,0 +1,674 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 548
%%Title: /afs/psi.ch/project/mythen/root_macros20100305/effiSiHardXRays2.eps: c1
%%Creator: ROOT Version 5.20/00
%%CreationDate: Tue Jan 29 15:39:22 2013
%%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 2191 0 0 bf black 3 lw 1 1 1 c 1951 1709 249 219 bf black 1951 1709 249 219 bl 1 1 1 c 1951 1709 249 219 bf black 1951 1709 249 219 bl 1 1 1 c 0.967333 0.186667 0 c 20 86
249 219 bf 0.673333 0.0666667 0 c 19 86 269 219 bf 0.608 0.04 0 c 20 86 288 219 bf 0.575333 0.0266667 0 c 19 86 308 219 bf 0.542667 0.0133333 0 c 20 86 327 219 bf 19 86 347 219 bf 20 86 366 219 bf 19 86 386 219 bf 20 86 405 219 bf 19 86 425 219 bf
20 86 444 219 bf 19 86 464 219 bf 20 86 483 219 bf 19 86 503 219 bf 20 86 522 219 bf 19 86 542 219 bf 20 86 561 219 bf 19 86 581 219 bf 20 86 600 219 bf 19 86 620 219 bf 20 86 639 219 bf 20 86 659 219 bf 19 86 679 219 bf 20 86 698 219 bf 19 86 718
219 bf 20 86 737 219 bf 19 86 757 219 bf 20 86 776 219 bf 19 86 796 219 bf 20 86 815 219 bf 19 86 835 219 bf 20 86 854 219 bf 19 86 874 219 bf 20 86 893 219 bf 19 86 913 219 bf 20 86 932 219 bf 19 86 952 219 bf 20 86 971 219 bf 19 86 991 219 bf 20
86 1010 219 bf 19 86 1030 219 bf 20 86 1049 219 bf 19 86 1069 219 bf 20 86 1088 219 bf 19 86 1108 219 bf 20 86 1127 219 bf 19 86 1147 219 bf 20 86 1166 219 bf 19 86 1186 219 bf 20 86 1205 219 bf 19 86 1225 219 bf 20 86 1244 219 bf 19 86 1264 219 bf
20 86 1283 219 bf 19 86 1303 219 bf 20 86 1322 219 bf 19 86 1342 219 bf 20 86 1361 219 bf 19 86 1381 219 bf 20 86 1400 219 bf 19 86 1420 219 bf 20 86 1439 219 bf 19 86 1459 219 bf 20 86 1478 219 bf 19 86 1498 219 bf 20 86 1517 219 bf 19 86 1537 219
bf 20 86 1556 219 bf 19 86 1576 219 bf 20 86 1595 219 bf 19 86 1615 219 bf 20 86 1634 219 bf 19 86 1654 219 bf 20 86 1673 219 bf 19 86 1693 219 bf 20 86 1712 219 bf 19 86 1732 219 bf 20 86 1751 219 bf 19 86 1771 219 bf 20 86 1790 219 bf 19 86 1810
219 bf 20 86 1829 219 bf 19 86 1849 219 bf 20 86 1868 219 bf 19 86 1888 219 bf 20 86 1907 219 bf 19 86 1927 219 bf 20 86 1946 219 bf 19 86 1966 219 bf 20 86 1985 219 bf 19 86 2005 219 bf 20 86 2024 219 bf 19 86 2044 219 bf 20 86 2063 219 bf 19 86
2083 219 bf 20 86 2102 219 bf 19 86 2122 219 bf 20 86 2141 219 bf 19 86 2161 219 bf 20 86 2180 219 bf 0.967333 0.186667 0 c 20 85 249 305 bf 0.706 0.08 0 c 19 85 269 305 bf 0.608 0.04 0 c 20 85 288 305 bf 0.575333 0.0266667 0 c 19 85 308 305 bf
0.542667 0.0133333 0 c 20 85 327 305 bf 19 85 347 305 bf 20 85 366 305 bf 19 85 386 305 bf 20 85 405 305 bf 19 85 425 305 bf 20 85 444 305 bf 19 85 464 305 bf 20 85 483 305 bf 19 85 503 305 bf 20 85 522 305 bf 19 85 542 305 bf 20 85 561 305 bf 19
85 581 305 bf 20 85 600 305 bf 19 85 620 305 bf 20 85 639 305 bf 20 85 659 305 bf 19 85 679 305 bf 20 85 698 305 bf 19 85 718 305 bf 20 85 737 305 bf 19 85 757 305 bf 20 85 776 305 bf 19 85 796 305 bf 20 85 815 305 bf 19 85 835 305 bf 20 85 854 305
bf 19 85 874 305 bf 20 85 893 305 bf 19 85 913 305 bf 20 85 932 305 bf 19 85 952 305 bf 20 85 971 305 bf 19 85 991 305 bf 20 85 1010 305 bf 19 85 1030 305 bf 20 85 1049 305 bf 19 85 1069 305 bf 20 85 1088 305 bf 19 85 1108 305 bf 20 85 1127 305 bf
19 85 1147 305 bf 20 85 1166 305 bf 19 85 1186 305 bf 20 85 1205 305 bf 19 85 1225 305 bf 20 85 1244 305 bf 19 85 1264 305 bf 20 85 1283 305 bf 19 85 1303 305 bf 20 85 1322 305 bf 19 85 1342 305 bf 20 85 1361 305 bf 19 85 1381 305 bf 20 85 1400 305
bf 19 85 1420 305 bf 20 85 1439 305 bf 19 85 1459 305 bf 20 85 1478 305 bf 19 85 1498 305 bf 20 85 1517 305 bf 19 85 1537 305 bf 20 85 1556 305 bf 19 85 1576 305 bf 20 85 1595 305 bf 19 85 1615 305 bf 20 85 1634 305 bf 19 85 1654 305 bf 20 85 1673
305 bf 19 85 1693 305 bf 20 85 1712 305 bf 19 85 1732 305 bf 20 85 1751 305 bf 19 85 1771 305 bf 20 85 1790 305 bf 19 85 1810 305 bf 20 85 1829 305 bf 19 85 1849 305 bf 20 85 1868 305 bf 19 85 1888 305 bf 20 85 1907 305 bf 19 85 1927 305 bf 20 85
1946 305 bf 19 85 1966 305 bf 20 85 1985 305 bf 19 85 2005 305 bf 20 85 2024 305 bf 19 85 2044 305 bf 20 85 2063 305 bf 19 85 2083 305 bf 20 85 2102 305 bf 19 85 2122 305 bf 20 85 2141 305 bf 19 85 2161 305 bf 20 85 2180 305 bf 0.956667 0.466667
0.04 c 20 85 249 390 bf 0.902 0.16 0 c 19 85 269 390 bf 0.771333 0.106667 0 c 20 85 288 390 bf 0.706 0.08 0 c 19 85 308 390 bf 0.673333 0.0666667 0 c 20 85 327 390 bf 0.640667 0.0533333 0 c 19 85 347 390 bf 0.608 0.04 0 c 20 85 366 390 bf 0.575333
0.0266667 0 c 19 85 386 390 bf 20 85 405 390 bf 19 85 425 390 bf 0.542667 0.0133333 0 c 20 85 444 390 bf 19 85 464 390 bf 20 85 483 390 bf 19 85 503 390 bf 20 85 522 390 bf 19 85 542 390 bf 20 85 561 390 bf 19 85 581 390 bf 20 85 600 390 bf 19 85
620 390 bf 20 85 639 390 bf 20 85 659 390 bf 19 85 679 390 bf 20 85 698 390 bf 19 85 718 390 bf 20 85 737 390 bf 19 85 757 390 bf 20 85 776 390 bf 19 85 796 390 bf 20 85 815 390 bf 19 85 835 390 bf 20 85 854 390 bf 19 85 874 390 bf 20 85 893 390 bf
19 85 913 390 bf 20 85 932 390 bf 19 85 952 390 bf 20 85 971 390 bf 19 85 991 390 bf 20 85 1010 390 bf 19 85 1030 390 bf 20 85 1049 390 bf 19 85 1069 390 bf 20 85 1088 390 bf 19 85 1108 390 bf 20 85 1127 390 bf 19 85 1147 390 bf 20 85 1166 390 bf
19 85 1186 390 bf 20 85 1205 390 bf 19 85 1225 390 bf 20 85 1244 390 bf 19 85 1264 390 bf 20 85 1283 390 bf 19 85 1303 390 bf 20 85 1322 390 bf 19 85 1342 390 bf 20 85 1361 390 bf 19 85 1381 390 bf 20 85 1400 390 bf 19 85 1420 390 bf 20 85 1439 390
bf 19 85 1459 390 bf 20 85 1478 390 bf 19 85 1498 390 bf 20 85 1517 390 bf 19 85 1537 390 bf 20 85 1556 390 bf 19 85 1576 390 bf 20 85 1595 390 bf 19 85 1615 390 bf 20 85 1634 390 bf 19 85 1654 390 bf 20 85 1673 390 bf 19 85 1693 390 bf 20 85 1712
390 bf 19 85 1732 390 bf 20 85 1751 390 bf 19 85 1771 390 bf 20 85 1790 390 bf 19 85 1810 390 bf 20 85 1829 390 bf 19 85 1849 390 bf 20 85 1868 390 bf 19 85 1888 390 bf 20 85 1907 390 bf 19 85 1927 390 bf 20 85 1946 390 bf 19 85 1966 390 bf 20 85
1985 390 bf 19 85 2005 390 bf 20 85 2024 390 bf 19 85 2044 390 bf 20 85 2063 390 bf 19 85 2083 390 bf 20 85 2102 390 bf 19 85 2122 390 bf 20 85 2141 390 bf 19 85 2161 390 bf 20 85 2180 390 bf 0.944286 0.542857 0.0514286 c 20 86 249 475 bf 0.967333
0.186667 0 c 19 86 269 475 bf 0.836667 0.133333 0 c 20 86 288 475 bf 0.771333 0.106667 0 c 19 86 308 475 bf 0.706 0.08 0 c 20 86 327 475 bf 0.673333 0.0666667 0 c 19 86 347 475 bf 0.640667 0.0533333 0 c 20 86 366 475 bf 0.608 0.04 0 c 19 86 386 475
bf 20 86 405 475 bf 0.575333 0.0266667 0 c 19 86 425 475 bf 20 86 444 475 bf 19 86 464 475 bf 20 86 483 475 bf 0.542667 0.0133333 0 c 19 86 503 475 bf 20 86 522 475 bf 19 86 542 475 bf 20 86 561 475 bf 19 86 581 475 bf 20 86 600 475 bf 19 86 620
475 bf 20 86 639 475 bf 20 86 659 475 bf 19 86 679 475 bf 20 86 698 475 bf 19 86 718 475 bf 20 86 737 475 bf 19 86 757 475 bf 20 86 776 475 bf 19 86 796 475 bf 20 86 815 475 bf 19 86 835 475 bf 20 86 854 475 bf 19 86 874 475 bf 20 86 893 475 bf 19
86 913 475 bf 20 86 932 475 bf 19 86 952 475 bf 20 86 971 475 bf 19 86 991 475 bf 20 86 1010 475 bf 19 86 1030 475 bf 20 86 1049 475 bf 19 86 1069 475 bf 20 86 1088 475 bf 19 86 1108 475 bf 20 86 1127 475 bf 19 86 1147 475 bf 20 86 1166 475 bf 19
86 1186 475 bf 20 86 1205 475 bf 19 86 1225 475 bf 20 86 1244 475 bf 19 86 1264 475 bf 20 86 1283 475 bf 19 86 1303 475 bf 20 86 1322 475 bf 19 86 1342 475 bf 20 86 1361 475 bf 19 86 1381 475 bf 20 86 1400 475 bf 19 86 1420 475 bf 20 86 1439 475 bf
19 86 1459 475 bf 20 86 1478 475 bf 19 86 1498 475 bf 20 86 1517 475 bf 19 86 1537 475 bf 20 86 1556 475 bf 19 86 1576 475 bf 20 86 1595 475 bf 19 86 1615 475 bf 20 86 1634 475 bf 19 86 1654 475 bf 20 86 1673 475 bf 19 86 1693 475 bf 20 86 1712 475
bf 19 86 1732 475 bf 20 86 1751 475 bf 19 86 1771 475 bf 20 86 1790 475 bf 19 86 1810 475 bf 20 86 1829 475 bf 19 86 1849 475 bf 20 86 1868 475 bf 19 86 1888 475 bf 20 86 1907 475 bf 19 86 1927 475 bf 20 86 1946 475 bf 19 86 1966 475 bf 20 86 1985
475 bf 19 86 2005 475 bf 20 86 2024 475 bf 19 86 2044 475 bf 20 86 2063 475 bf 19 86 2083 475 bf 20 86 2102 475 bf 19 86 2122 475 bf 20 86 2141 475 bf 19 86 2161 475 bf 20 86 2180 475 bf 0.888571 0.885714 0.102857 c 20 85 249 561 bf 0.956667
0.466667 0.04 c 19 85 269 561 bf 0.981429 0.314286 0.0171429 c 20 85 288 561 bf 1 0.2 0 c 19 85 308 561 bf 0.934667 0.173333 0 c 20 85 327 561 bf 0.869333 0.146667 0 c 19 85 347 561 bf 0.836667 0.133333 0 c 20 85 366 561 bf 0.804 0.12 0 c 19 85 386
561 bf 0.771333 0.106667 0 c 20 85 405 561 bf 0.738667 0.0933333 0 c 19 85 425 561 bf 0.706 0.08 0 c 20 85 444 561 bf 19 85 464 561 bf 0.673333 0.0666667 0 c 20 85 483 561 bf 19 85 503 561 bf 0.640667 0.0533333 0 c 20 85 522 561 bf 19 85 542 561 bf
20 85 561 561 bf 0.608 0.04 0 c 19 85 581 561 bf 20 85 600 561 bf 19 85 620 561 bf 20 85 639 561 bf 20 85 659 561 bf 0.575333 0.0266667 0 c 19 85 679 561 bf 20 85 698 561 bf 19 85 718 561 bf 20 85 737 561 bf 19 85 757 561 bf 20 85 776 561 bf 19 85
796 561 bf 20 85 815 561 bf 19 85 835 561 bf 0.542667 0.0133333 0 c 20 85 854 561 bf 19 85 874 561 bf 20 85 893 561 bf 19 85 913 561 bf 20 85 932 561 bf 19 85 952 561 bf 20 85 971 561 bf 19 85 991 561 bf 20 85 1010 561 bf 19 85 1030 561 bf 20 85
1049 561 bf 19 85 1069 561 bf 20 85 1088 561 bf 19 85 1108 561 bf 20 85 1127 561 bf 19 85 1147 561 bf 20 85 1166 561 bf 19 85 1186 561 bf 20 85 1205 561 bf 19 85 1225 561 bf 20 85 1244 561 bf 19 85 1264 561 bf 20 85 1283 561 bf 19 85 1303 561 bf 20
85 1322 561 bf 19 85 1342 561 bf 20 85 1361 561 bf 19 85 1381 561 bf 20 85 1400 561 bf 19 85 1420 561 bf 20 85 1439 561 bf 19 85 1459 561 bf 20 85 1478 561 bf 19 85 1498 561 bf 20 85 1517 561 bf 19 85 1537 561 bf 20 85 1556 561 bf 19 85 1576 561 bf
20 85 1595 561 bf 19 85 1615 561 bf 20 85 1634 561 bf 19 85 1654 561 bf 20 85 1673 561 bf 19 85 1693 561 bf 20 85 1712 561 bf 19 85 1732 561 bf 20 85 1751 561 bf 19 85 1771 561 bf 20 85 1790 561 bf 19 85 1810 561 bf 20 85 1829 561 bf 19 85 1849 561
bf 20 85 1868 561 bf 19 85 1888 561 bf 20 85 1907 561 bf 19 85 1927 561 bf 20 85 1946 561 bf 19 85 1966 561 bf 20 85 1985 561 bf 19 85 2005 561 bf 20 85 2024 561 bf 19 85 2044 561 bf 20 85 2063 561 bf 19 85 2083 561 bf 20 85 2102 561 bf 19 85 2122
561 bf 20 85 2141 561 bf 19 85 2161 561 bf 20 85 2180 561 bf 0.7975 0.984167 0.193333 c 20 86 249 646 bf 0.925714 0.657143 0.0685714 c 19 86 269 646 bf 0.956667 0.466667 0.04 c 20 86 288 646 bf 0.975238 0.352381 0.0228571 c 19 86 308 646 bf
0.987619 0.27619 0.0114286 c 20 86 327 646 bf 1 0.2 0 c 19 86 347 646 bf 0.967333 0.186667 0 c 20 86 366 646 bf 0.934667 0.173333 0 c 19 86 386 646 bf 0.902 0.16 0 c 20 86 405 646 bf 0.869333 0.146667 0 c 19 86 425 646 bf 0.836667 0.133333 0 c 20
86 444 646 bf 0.804 0.12 0 c 19 86 464 646 bf 20 86 483 646 bf 0.771333 0.106667 0 c 19 86 503 646 bf 20 86 522 646 bf 0.738667 0.0933333 0 c 19 86 542 646 bf 20 86 561 646 bf 0.706 0.08 0 c 19 86 581 646 bf 20 86 600 646 bf 19 86 620 646 bf
0.673333 0.0666667 0 c 20 86 639 646 bf 20 86 659 646 bf 19 86 679 646 bf 20 86 698 646 bf 0.640667 0.0533333 0 c 19 86 718 646 bf 20 86 737 646 bf 19 86 757 646 bf 20 86 776 646 bf 19 86 796 646 bf 0.608 0.04 0 c 20 86 815 646 bf 19 86 835 646 bf
20 86 854 646 bf 19 86 874 646 bf 20 86 893 646 bf 19 86 913 646 bf 20 86 932 646 bf 19 86 952 646 bf 0.575333 0.0266667 0 c 20 86 971 646 bf 19 86 991 646 bf 20 86 1010 646 bf 19 86 1030 646 bf 20 86 1049 646 bf 19 86 1069 646 bf 20 86 1088 646 bf
19 86 1108 646 bf 20 86 1127 646 bf 19 86 1147 646 bf 20 86 1166 646 bf 19 86 1186 646 bf 20 86 1205 646 bf 19 86 1225 646 bf 0.542667 0.0133333 0 c 20 86 1244 646 bf 19 86 1264 646 bf 20 86 1283 646 bf 19 86 1303 646 bf 20 86 1322 646 bf 19 86
1342 646 bf 20 86 1361 646 bf 19 86 1381 646 bf 20 86 1400 646 bf 19 86 1420 646 bf 20 86 1439 646 bf 19 86 1459 646 bf 20 86 1478 646 bf 19 86 1498 646 bf 20 86 1517 646 bf 19 86 1537 646 bf 20 86 1556 646 bf 19 86 1576 646 bf 20 86 1595 646 bf 19
86 1615 646 bf 20 86 1634 646 bf 19 86 1654 646 bf 20 86 1673 646 bf 19 86 1693 646 bf 20 86 1712 646 bf 19 86 1732 646 bf 20 86 1751 646 bf 19 86 1771 646 bf 20 86 1790 646 bf 19 86 1810 646 bf 20 86 1829 646 bf 19 86 1849 646 bf 20 86 1868 646 bf
19 86 1888 646 bf 20 86 1907 646 bf 19 86 1927 646 bf 20 86 1946 646 bf 19 86 1966 646 bf 20 86 1985 646 bf 19 86 2005 646 bf 20 86 2024 646 bf 19 86 2044 646 bf 20 86 2063 646 bf 19 86 2083 646 bf 20 86 2102 646 bf 19 86 2122 646 bf 20 86 2141 646
bf 19 86 2161 646 bf 20 86 2180 646 bf 0.61625 0.944583 0.376667 c 20 85 249 732 bf 0.888571 0.885714 0.102857 c 19 85 269 732 bf 0.919524 0.695238 0.0742857 c 20 85 288 732 bf 0.938095 0.580952 0.0571429 c 19 85 308 732 bf 0.956667 0.466667 0.04 c
20 85 327 732 bf 0.962857 0.428571 0.0342857 c 19 85 347 732 bf 0.975238 0.352381 0.0228571 c 20 85 366 732 bf 0.981429 0.314286 0.0171429 c 19 85 386 732 bf 0.987619 0.27619 0.0114286 c 20 85 405 732 bf 0.99381 0.238095 0.00571429 c 19 85 425 732
bf 1 0.2 0 c 20 85 444 732 bf 0.967333 0.186667 0 c 19 85 464 732 bf 0.934667 0.173333 0 c 20 85 483 732 bf 19 85 503 732 bf 0.902 0.16 0 c 20 85 522 732 bf 19 85 542 732 bf 0.869333 0.146667 0 c 20 85 561 732 bf 19 85 581 732 bf 0.836667 0.133333
0 c 20 85 600 732 bf 19 85 620 732 bf 0.804 0.12 0 c 20 85 639 732 bf 20 85 659 732 bf 19 85 679 732 bf 0.771333 0.106667 0 c 20 85 698 732 bf 19 85 718 732 bf 20 85 737 732 bf 19 85 757 732 bf 0.738667 0.0933333 0 c 20 85 776 732 bf 19 85 796 732
bf 20 85 815 732 bf 19 85 835 732 bf 0.706 0.08 0 c 20 85 854 732 bf 19 85 874 732 bf 20 85 893 732 bf 19 85 913 732 bf 20 85 932 732 bf 0.673333 0.0666667 0 c 19 85 952 732 bf 20 85 971 732 bf 19 85 991 732 bf 20 85 1010 732 bf 19 85 1030 732 bf
20 85 1049 732 bf 19 85 1069 732 bf 0.640667 0.0533333 0 c 20 85 1088 732 bf 19 85 1108 732 bf 20 85 1127 732 bf 19 85 1147 732 bf 20 85 1166 732 bf 19 85 1186 732 bf 20 85 1205 732 bf 19 85 1225 732 bf 20 85 1244 732 bf 19 85 1264 732 bf 0.608
0.04 0 c 20 85 1283 732 bf 19 85 1303 732 bf 20 85 1322 732 bf 19 85 1342 732 bf 20 85 1361 732 bf 19 85 1381 732 bf 20 85 1400 732 bf 19 85 1420 732 bf 20 85 1439 732 bf 19 85 1459 732 bf 20 85 1478 732 bf 19 85 1498 732 bf 20 85 1517 732 bf 19 85
1537 732 bf 0.575333 0.0266667 0 c 20 85 1556 732 bf 19 85 1576 732 bf 20 85 1595 732 bf 19 85 1615 732 bf 20 85 1634 732 bf 19 85 1654 732 bf 20 85 1673 732 bf 19 85 1693 732 bf 20 85 1712 732 bf 19 85 1732 732 bf 20 85 1751 732 bf 19 85 1771 732
bf 20 85 1790 732 bf 19 85 1810 732 bf 20 85 1829 732 bf 19 85 1849 732 bf 20 85 1868 732 bf 19 85 1888 732 bf 20 85 1907 732 bf 19 85 1927 732 bf 20 85 1946 732 bf 19 85 1966 732 bf 20 85 1985 732 bf 19 85 2005 732 bf 20 85 2024 732 bf 0.542667
0.0133333 0 c 19 85 2044 732 bf 20 85 2063 732 bf 19 85 2083 732 bf 20 85 2102 732 bf 19 85 2122 732 bf 20 85 2141 732 bf 19 85 2161 732 bf 20 85 2180 732 bf 0.54375 0.92875 0.45 c 20 86 249 817 bf 0.882381 0.92381 0.108571 c 19 86 269 817 bf
0.913333 0.733333 0.08 c 20 86 288 817 bf 0.931905 0.619048 0.0628571 c 19 86 308 817 bf 0.944286 0.542857 0.0514286 c 20 86 327 817 bf 0.956667 0.466667 0.04 c 19 86 347 817 bf 0.969048 0.390476 0.0285714 c 20 86 366 817 bf 0.975238 0.352381
0.0228571 c 19 86 386 817 bf 0.981429 0.314286 0.0171429 c 20 86 405 817 bf 0.987619 0.27619 0.0114286 c 19 86 425 817 bf 0.99381 0.238095 0.00571429 c 20 86 444 817 bf 1 0.2 0 c 19 86 464 817 bf 20 86 483 817 bf 0.967333 0.186667 0 c 19 86 503 817
bf 0.934667 0.173333 0 c 20 86 522 817 bf 19 86 542 817 bf 0.902 0.16 0 c 20 86 561 817 bf 19 86 581 817 bf 0.869333 0.146667 0 c 20 86 600 817 bf 19 86 620 817 bf 0.836667 0.133333 0 c 20 86 639 817 bf 20 86 659 817 bf 19 86 679 817 bf 0.804 0.12
0 c 20 86 698 817 bf 19 86 718 817 bf 20 86 737 817 bf 19 86 757 817 bf 0.771333 0.106667 0 c 20 86 776 817 bf 19 86 796 817 bf 20 86 815 817 bf 19 86 835 817 bf 0.738667 0.0933333 0 c 20 86 854 817 bf 19 86 874 817 bf 20 86 893 817 bf 19 86 913
817 bf 20 86 932 817 bf 0.706 0.08 0 c 19 86 952 817 bf 20 86 971 817 bf 19 86 991 817 bf 20 86 1010 817 bf 19 86 1030 817 bf 20 86 1049 817 bf 0.673333 0.0666667 0 c 19 86 1069 817 bf 20 86 1088 817 bf 19 86 1108 817 bf 20 86 1127 817 bf 19 86
1147 817 bf 20 86 1166 817 bf 19 86 1186 817 bf 20 86 1205 817 bf 0.640667 0.0533333 0 c 19 86 1225 817 bf 20 86 1244 817 bf 19 86 1264 817 bf 20 86 1283 817 bf 19 86 1303 817 bf 20 86 1322 817 bf 19 86 1342 817 bf 20 86 1361 817 bf 19 86 1381 817
bf 20 86 1400 817 bf 19 86 1420 817 bf 0.608 0.04 0 c 20 86 1439 817 bf 19 86 1459 817 bf 20 86 1478 817 bf 19 86 1498 817 bf 20 86 1517 817 bf 19 86 1537 817 bf 20 86 1556 817 bf 19 86 1576 817 bf 20 86 1595 817 bf 19 86 1615 817 bf 20 86 1634 817
bf 19 86 1654 817 bf 20 86 1673 817 bf 19 86 1693 817 bf 20 86 1712 817 bf 19 86 1732 817 bf 20 86 1751 817 bf 0.575333 0.0266667 0 c 19 86 1771 817 bf 20 86 1790 817 bf 19 86 1810 817 bf 20 86 1829 817 bf 19 86 1849 817 bf 20 86 1868 817 bf 19 86
1888 817 bf 20 86 1907 817 bf 19 86 1927 817 bf 20 86 1946 817 bf 19 86 1966 817 bf 20 86 1985 817 bf 19 86 2005 817 bf 20 86 2024 817 bf 19 86 2044 817 bf 20 86 2063 817 bf 19 86 2083 817 bf 20 86 2102 817 bf 19 86 2122 817 bf 20 86 2141 817 bf 19
86 2161 817 bf 20 86 2180 817 bf 0.3625 0.889167 0.633333 c 20 85 249 903 bf 0.76125 0.97625 0.23 c 19 85 269 903 bf 0.882381 0.92381 0.108571 c 20 85 288 903 bf 0.900952 0.809524 0.0914286 c 19 85 308 903 bf 0.913333 0.733333 0.08 c 20 85 327 903
bf 0.925714 0.657143 0.0685714 c 19 85 347 903 bf 0.938095 0.580952 0.0571429 c 20 85 366 903 bf 0.944286 0.542857 0.0514286 c 19 85 386 903 bf 0.950476 0.504762 0.0457143 c 20 85 405 903 bf 0.956667 0.466667 0.04 c 19 85 425 903 bf 0.962857
0.428571 0.0342857 c 20 85 444 903 bf 0.969048 0.390476 0.0285714 c 19 85 464 903 bf 0.975238 0.352381 0.0228571 c 20 85 483 903 bf 0.981429 0.314286 0.0171429 c 19 85 503 903 bf 20 85 522 903 bf 0.987619 0.27619 0.0114286 c 19 85 542 903 bf 20 85
561 903 bf 0.99381 0.238095 0.00571429 c 19 85 581 903 bf 20 85 600 903 bf 1 0.2 0 c 19 85 620 903 bf 20 85 639 903 bf 0.967333 0.186667 0 c 20 85 659 903 bf 19 85 679 903 bf 20 85 698 903 bf 0.934667 0.173333 0 c 19 85 718 903 bf 20 85 737 903 bf
19 85 757 903 bf 0.902 0.16 0 c 20 85 776 903 bf 19 85 796 903 bf 20 85 815 903 bf 0.869333 0.146667 0 c 19 85 835 903 bf 20 85 854 903 bf 19 85 874 903 bf 20 85 893 903 bf 0.836667 0.133333 0 c 19 85 913 903 bf 20 85 932 903 bf 19 85 952 903 bf 20
85 971 903 bf 19 85 991 903 bf 0.804 0.12 0 c 20 85 1010 903 bf 19 85 1030 903 bf 20 85 1049 903 bf 19 85 1069 903 bf 20 85 1088 903 bf 19 85 1108 903 bf 0.771333 0.106667 0 c 20 85 1127 903 bf 19 85 1147 903 bf 20 85 1166 903 bf 19 85 1186 903 bf
20 85 1205 903 bf 19 85 1225 903 bf 20 85 1244 903 bf 0.738667 0.0933333 0 c 19 85 1264 903 bf 20 85 1283 903 bf 19 85 1303 903 bf 20 85 1322 903 bf 19 85 1342 903 bf 20 85 1361 903 bf 19 85 1381 903 bf 20 85 1400 903 bf 0.706 0.08 0 c 19 85 1420
903 bf 20 85 1439 903 bf 19 85 1459 903 bf 20 85 1478 903 bf 19 85 1498 903 bf 20 85 1517 903 bf 19 85 1537 903 bf 20 85 1556 903 bf 19 85 1576 903 bf 20 85 1595 903 bf 19 85 1615 903 bf 0.673333 0.0666667 0 c 20 85 1634 903 bf 19 85 1654 903 bf 20
85 1673 903 bf 19 85 1693 903 bf 20 85 1712 903 bf 19 85 1732 903 bf 20 85 1751 903 bf 19 85 1771 903 bf 20 85 1790 903 bf 19 85 1810 903 bf 20 85 1829 903 bf 19 85 1849 903 bf 20 85 1868 903 bf 0.640667 0.0533333 0 c 19 85 1888 903 bf 20 85 1907
903 bf 19 85 1927 903 bf 20 85 1946 903 bf 19 85 1966 903 bf 20 85 1985 903 bf 19 85 2005 903 bf 20 85 2024 903 bf 19 85 2044 903 bf 20 85 2063 903 bf 19 85 2083 903 bf 20 85 2102 903 bf 19 85 2122 903 bf 20 85 2141 903 bf 19 85 2161 903 bf 20 85
2180 903 bf 0.25375 0.865417 0.743333 c 20 85 249 988 bf 0.61625 0.944583 0.376667 c 19 85 269 988 bf 0.7975 0.984167 0.193333 c 20 85 288 988 bf 0.87619 0.961905 0.114286 c 19 85 308 988 bf 0.894762 0.847619 0.0971429 c 20 85 327 988 bf 0.907143
0.771429 0.0857143 c 19 85 347 988 bf 0.913333 0.733333 0.08 c 20 85 366 988 bf 0.925714 0.657143 0.0685714 c 19 85 386 988 bf 0.931905 0.619048 0.0628571 c 20 85 405 988 bf 0.938095 0.580952 0.0571429 c 19 85 425 988 bf 0.944286 0.542857 0.0514286
c 20 85 444 988 bf 0.950476 0.504762 0.0457143 c 19 85 464 988 bf 0.956667 0.466667 0.04 c 20 85 483 988 bf 19 85 503 988 bf 0.962857 0.428571 0.0342857 c 20 85 522 988 bf 0.969048 0.390476 0.0285714 c 19 85 542 988 bf 20 85 561 988 bf 0.975238
0.352381 0.0228571 c 19 85 581 988 bf 20 85 600 988 bf 0.981429 0.314286 0.0171429 c 19 85 620 988 bf 20 85 639 988 bf 20 85 659 988 bf 0.987619 0.27619 0.0114286 c 19 85 679 988 bf 20 85 698 988 bf 0.99381 0.238095 0.00571429 c 19 85 718 988 bf 20
85 737 988 bf 19 85 757 988 bf 1 0.2 0 c 20 85 776 988 bf 19 85 796 988 bf 20 85 815 988 bf 19 85 835 988 bf 0.967333 0.186667 0 c 20 85 854 988 bf 19 85 874 988 bf 20 85 893 988 bf 0.934667 0.173333 0 c 19 85 913 988 bf 20 85 932 988 bf 19 85 952
988 bf 20 85 971 988 bf 19 85 991 988 bf 0.902 0.16 0 c 20 85 1010 988 bf 19 85 1030 988 bf 20 85 1049 988 bf 19 85 1069 988 bf 20 85 1088 988 bf 0.869333 0.146667 0 c 19 85 1108 988 bf 20 85 1127 988 bf 19 85 1147 988 bf 20 85 1166 988 bf 19 85
1186 988 bf 20 85 1205 988 bf 0.836667 0.133333 0 c 19 85 1225 988 bf 20 85 1244 988 bf 19 85 1264 988 bf 20 85 1283 988 bf 19 85 1303 988 bf 20 85 1322 988 bf 19 85 1342 988 bf 0.804 0.12 0 c 20 85 1361 988 bf 19 85 1381 988 bf 20 85 1400 988 bf
19 85 1420 988 bf 20 85 1439 988 bf 19 85 1459 988 bf 20 85 1478 988 bf 19 85 1498 988 bf 0.771333 0.106667 0 c 20 85 1517 988 bf 19 85 1537 988 bf 20 85 1556 988 bf 19 85 1576 988 bf 20 85 1595 988 bf 19 85 1615 988 bf 20 85 1634 988 bf 19 85 1654
988 bf 20 85 1673 988 bf 19 85 1693 988 bf 0.738667 0.0933333 0 c 20 85 1712 988 bf 19 85 1732 988 bf 20 85 1751 988 bf 19 85 1771 988 bf 20 85 1790 988 bf 19 85 1810 988 bf 20 85 1829 988 bf 19 85 1849 988 bf 20 85 1868 988 bf 19 85 1888 988 bf 20
85 1907 988 bf 19 85 1927 988 bf 0.706 0.08 0 c 20 85 1946 988 bf 19 85 1966 988 bf 20 85 1985 988 bf 19 85 2005 988 bf 20 85 2024 988 bf 19 85 2044 988 bf 20 85 2063 988 bf 19 85 2083 988 bf 20 85 2102 988 bf 19 85 2122 988 bf 20 85 2141 988 bf 19
85 2161 988 bf 20 85 2180 988 bf 0.145 0.841667 0.853333 c 20 86 249 1073 bf 0.54375 0.92875 0.45 c 19 86 269 1073 bf 0.725 0.968333 0.266667 c 20 86 288 1073 bf 0.83375 0.992083 0.156667 c 19 86 308 1073 bf 0.882381 0.92381 0.108571 c 20 86 327
1073 bf 0.888571 0.885714 0.102857 c 19 86 347 1073 bf 0.900952 0.809524 0.0914286 c 20 86 366 1073 bf 0.907143 0.771429 0.0857143 c 19 86 386 1073 bf 0.919524 0.695238 0.0742857 c 20 86 405 1073 bf 0.925714 0.657143 0.0685714 c 19 86 425 1073 bf
0.931905 0.619048 0.0628571 c 20 86 444 1073 bf 19 86 464 1073 bf 0.938095 0.580952 0.0571429 c 20 86 483 1073 bf 0.944286 0.542857 0.0514286 c 19 86 503 1073 bf 0.950476 0.504762 0.0457143 c 20 86 522 1073 bf 19 86 542 1073 bf 0.956667 0.466667
0.04 c 20 86 561 1073 bf 19 86 581 1073 bf 0.962857 0.428571 0.0342857 c 20 86 600 1073 bf 19 86 620 1073 bf 0.969048 0.390476 0.0285714 c 20 86 639 1073 bf 20 86 659 1073 bf 0.975238 0.352381 0.0228571 c 19 86 679 1073 bf 20 86 698 1073 bf 19 86
718 1073 bf 0.981429 0.314286 0.0171429 c 20 86 737 1073 bf 19 86 757 1073 bf 20 86 776 1073 bf 0.987619 0.27619 0.0114286 c 19 86 796 1073 bf 20 86 815 1073 bf 19 86 835 1073 bf 0.99381 0.238095 0.00571429 c 20 86 854 1073 bf 19 86 874 1073 bf 20
86 893 1073 bf 19 86 913 1073 bf 1 0.2 0 c 20 86 932 1073 bf 19 86 952 1073 bf 20 86 971 1073 bf 19 86 991 1073 bf 0.967333 0.186667 0 c 20 86 1010 1073 bf 19 86 1030 1073 bf 20 86 1049 1073 bf 19 86 1069 1073 bf 20 86 1088 1073 bf 0.934667
0.173333 0 c 19 86 1108 1073 bf 20 86 1127 1073 bf 19 86 1147 1073 bf 20 86 1166 1073 bf 19 86 1186 1073 bf 0.902 0.16 0 c 20 86 1205 1073 bf 19 86 1225 1073 bf 20 86 1244 1073 bf 19 86 1264 1073 bf 20 86 1283 1073 bf 19 86 1303 1073 bf 20 86 1322
1073 bf 0.869333 0.146667 0 c 19 86 1342 1073 bf 20 86 1361 1073 bf 19 86 1381 1073 bf 20 86 1400 1073 bf 19 86 1420 1073 bf 20 86 1439 1073 bf 19 86 1459 1073 bf 20 86 1478 1073 bf 0.836667 0.133333 0 c 19 86 1498 1073 bf 20 86 1517 1073 bf 19 86
1537 1073 bf 20 86 1556 1073 bf 19 86 1576 1073 bf 20 86 1595 1073 bf 19 86 1615 1073 bf 20 86 1634 1073 bf 0.804 0.12 0 c 19 86 1654 1073 bf 20 86 1673 1073 bf 19 86 1693 1073 bf 20 86 1712 1073 bf 19 86 1732 1073 bf 20 86 1751 1073 bf 19 86 1771
1073 bf 20 86 1790 1073 bf 19 86 1810 1073 bf 20 86 1829 1073 bf 19 86 1849 1073 bf 0.771333 0.106667 0 c 20 86 1868 1073 bf 19 86 1888 1073 bf 20 86 1907 1073 bf 19 86 1927 1073 bf 20 86 1946 1073 bf 19 86 1966 1073 bf 20 86 1985 1073 bf 19 86
2005 1073 bf 20 86 2024 1073 bf 19 86 2044 1073 bf 20 86 2063 1073 bf 19 86 2083 1073 bf 20 86 2102 1073 bf 0.738667 0.0933333 0 c 19 86 2122 1073 bf 20 86 2141 1073 bf 19 86 2161 1073 bf 20 86 2180 1073 bf 0.0725 0.825833 0.926667 c 20 85 249 1159
bf 0.435 0.905 0.56 c 19 85 269 1159 bf 0.61625 0.944583 0.376667 c 20 85 288 1159 bf 0.76125 0.97625 0.23 c 19 85 308 1159 bf 0.83375 0.992083 0.156667 c 20 85 327 1159 bf 0.87619 0.961905 0.114286 c 19 85 347 1159 bf 0.888571 0.885714 0.102857 c
20 85 366 1159 bf 0.894762 0.847619 0.0971429 c 19 85 386 1159 bf 0.900952 0.809524 0.0914286 c 20 85 405 1159 bf 0.907143 0.771429 0.0857143 c 19 85 425 1159 bf 0.913333 0.733333 0.08 c 20 85 444 1159 bf 0.919524 0.695238 0.0742857 c 19 85 464
1159 bf 0.925714 0.657143 0.0685714 c 20 85 483 1159 bf 19 85 503 1159 bf 0.931905 0.619048 0.0628571 c 20 85 522 1159 bf 0.938095 0.580952 0.0571429 c 19 85 542 1159 bf 20 85 561 1159 bf 0.944286 0.542857 0.0514286 c 19 85 581 1159 bf 20 85 600
1159 bf 0.950476 0.504762 0.0457143 c 19 85 620 1159 bf 20 85 639 1159 bf 0.956667 0.466667 0.04 c 20 85 659 1159 bf 19 85 679 1159 bf 0.962857 0.428571 0.0342857 c 20 85 698 1159 bf 19 85 718 1159 bf 20 85 737 1159 bf 0.969048 0.390476 0.0285714 c
19 85 757 1159 bf 20 85 776 1159 bf 19 85 796 1159 bf 0.975238 0.352381 0.0228571 c 20 85 815 1159 bf 19 85 835 1159 bf 20 85 854 1159 bf 0.981429 0.314286 0.0171429 c 19 85 874 1159 bf 20 85 893 1159 bf 19 85 913 1159 bf 20 85 932 1159 bf 0.987619
0.27619 0.0114286 c 19 85 952 1159 bf 20 85 971 1159 bf 19 85 991 1159 bf 20 85 1010 1159 bf 0.99381 0.238095 0.00571429 c 19 85 1030 1159 bf 20 85 1049 1159 bf 19 85 1069 1159 bf 20 85 1088 1159 bf 19 85 1108 1159 bf 1 0.2 0 c 20 85 1127 1159 bf
19 85 1147 1159 bf 20 85 1166 1159 bf 19 85 1186 1159 bf 20 85 1205 1159 bf 19 85 1225 1159 bf 0.967333 0.186667 0 c 20 85 1244 1159 bf 19 85 1264 1159 bf 20 85 1283 1159 bf 19 85 1303 1159 bf 20 85 1322 1159 bf 19 85 1342 1159 bf 0.934667 0.173333
0 c 20 85 1361 1159 bf 19 85 1381 1159 bf 20 85 1400 1159 bf 19 85 1420 1159 bf 20 85 1439 1159 bf 19 85 1459 1159 bf 20 85 1478 1159 bf 19 85 1498 1159 bf 0.902 0.16 0 c 20 85 1517 1159 bf 19 85 1537 1159 bf 20 85 1556 1159 bf 19 85 1576 1159 bf
20 85 1595 1159 bf 19 85 1615 1159 bf 20 85 1634 1159 bf 19 85 1654 1159 bf 0.869333 0.146667 0 c 20 85 1673 1159 bf 19 85 1693 1159 bf 20 85 1712 1159 bf 19 85 1732 1159 bf 20 85 1751 1159 bf 19 85 1771 1159 bf 20 85 1790 1159 bf 19 85 1810 1159
bf 20 85 1829 1159 bf 19 85 1849 1159 bf 0.836667 0.133333 0 c 20 85 1868 1159 bf 19 85 1888 1159 bf 20 85 1907 1159 bf 19 85 1927 1159 bf 20 85 1946 1159 bf 19 85 1966 1159 bf 20 85 1985 1159 bf 19 85 2005 1159 bf 20 85 2024 1159 bf 19 85 2044
1159 bf 20 85 2063 1159 bf 19 85 2083 1159 bf 0.804 0.12 0 c 20 85 2102 1159 bf 19 85 2122 1159 bf 20 85 2141 1159 bf 19 85 2161 1159 bf 20 85 2180 1159 bf 0 0.81 1 c 20 86 249 1244 bf 0.39875 0.897083 0.596667 c 19 86 269 1244 bf 0.58 0.936667
0.413333 c 20 86 288 1244 bf 0.68875 0.960417 0.303333 c 19 86 308 1244 bf 0.76125 0.97625 0.23 c 20 86 327 1244 bf 0.83375 0.992083 0.156667 c 19 86 347 1244 bf 0.87619 0.961905 0.114286 c 20 86 366 1244 bf 0.882381 0.92381 0.108571 c 19 86 386
1244 bf 0.888571 0.885714 0.102857 c 20 86 405 1244 bf 0.900952 0.809524 0.0914286 c 19 86 425 1244 bf 0.907143 0.771429 0.0857143 c 20 86 444 1244 bf 19 86 464 1244 bf 0.913333 0.733333 0.08 c 20 86 483 1244 bf 0.919524 0.695238 0.0742857 c 19 86
503 1244 bf 0.925714 0.657143 0.0685714 c 20 86 522 1244 bf 19 86 542 1244 bf 0.931905 0.619048 0.0628571 c 20 86 561 1244 bf 19 86 581 1244 bf 0.938095 0.580952 0.0571429 c 20 86 600 1244 bf 19 86 620 1244 bf 0.944286 0.542857 0.0514286 c 20 86
639 1244 bf 20 86 659 1244 bf 0.950476 0.504762 0.0457143 c 19 86 679 1244 bf 20 86 698 1244 bf 19 86 718 1244 bf 0.956667 0.466667 0.04 c 20 86 737 1244 bf 19 86 757 1244 bf 0.962857 0.428571 0.0342857 c 20 86 776 1244 bf 19 86 796 1244 bf 20 86
815 1244 bf 0.969048 0.390476 0.0285714 c 19 86 835 1244 bf 20 86 854 1244 bf 19 86 874 1244 bf 20 86 893 1244 bf 0.975238 0.352381 0.0228571 c 19 86 913 1244 bf 20 86 932 1244 bf 19 86 952 1244 bf 20 86 971 1244 bf 0.981429 0.314286 0.0171429 c 19
86 991 1244 bf 20 86 1010 1244 bf 19 86 1030 1244 bf 20 86 1049 1244 bf 19 86 1069 1244 bf 0.987619 0.27619 0.0114286 c 20 86 1088 1244 bf 19 86 1108 1244 bf 20 86 1127 1244 bf 19 86 1147 1244 bf 20 86 1166 1244 bf 0.99381 0.238095 0.00571429 c 19
86 1186 1244 bf 20 86 1205 1244 bf 19 86 1225 1244 bf 20 86 1244 1244 bf 19 86 1264 1244 bf 20 86 1283 1244 bf 1 0.2 0 c 19 86 1303 1244 bf 20 86 1322 1244 bf 19 86 1342 1244 bf 20 86 1361 1244 bf 19 86 1381 1244 bf 20 86 1400 1244 bf 0.967333
0.186667 0 c 19 86 1420 1244 bf 20 86 1439 1244 bf 19 86 1459 1244 bf 20 86 1478 1244 bf 19 86 1498 1244 bf 20 86 1517 1244 bf 19 86 1537 1244 bf 20 86 1556 1244 bf 0.934667 0.173333 0 c 19 86 1576 1244 bf 20 86 1595 1244 bf 19 86 1615 1244 bf 20
86 1634 1244 bf 19 86 1654 1244 bf 20 86 1673 1244 bf 19 86 1693 1244 bf 20 86 1712 1244 bf 0.902 0.16 0 c 19 86 1732 1244 bf 20 86 1751 1244 bf 19 86 1771 1244 bf 20 86 1790 1244 bf 19 86 1810 1244 bf 20 86 1829 1244 bf 19 86 1849 1244 bf 20 86
1868 1244 bf 19 86 1888 1244 bf 20 86 1907 1244 bf 0.869333 0.146667 0 c 19 86 1927 1244 bf 20 86 1946 1244 bf 19 86 1966 1244 bf 20 86 1985 1244 bf 19 86 2005 1244 bf 20 86 2024 1244 bf 19 86 2044 1244 bf 20 86 2063 1244 bf 19 86 2083 1244 bf 20
86 2102 1244 bf 19 86 2122 1244 bf 20 86 2141 1244 bf 0.836667 0.133333 0 c 19 86 2161 1244 bf 20 86 2180 1244 bf 0 0.729 0.951 c 20 85 249 1330 bf 0.29 0.873333 0.706667 c 19 85 269 1330 bf 0.47125 0.912917 0.523333 c 20 85 288 1330 bf 0.58
0.936667 0.413333 c 19 85 308 1330 bf 0.68875 0.960417 0.303333 c 20 85 327 1330 bf 0.76125 0.97625 0.23 c 19 85 347 1330 bf 0.7975 0.984167 0.193333 c 20 85 366 1330 bf 0.87 1 0.12 c 19 85 386 1330 bf 0.87619 0.961905 0.114286 c 20 85 405 1330 bf
0.882381 0.92381 0.108571 c 19 85 425 1330 bf 0.888571 0.885714 0.102857 c 20 85 444 1330 bf 0.894762 0.847619 0.0971429 c 19 85 464 1330 bf 0.900952 0.809524 0.0914286 c 20 85 483 1330 bf 19 85 503 1330 bf 0.907143 0.771429 0.0857143 c 20 85 522
1330 bf 0.913333 0.733333 0.08 c 19 85 542 1330 bf 20 85 561 1330 bf 0.919524 0.695238 0.0742857 c 19 85 581 1330 bf 20 85 600 1330 bf 0.925714 0.657143 0.0685714 c 19 85 620 1330 bf 20 85 639 1330 bf 0.931905 0.619048 0.0628571 c 20 85 659 1330 bf
19 85 679 1330 bf 0.938095 0.580952 0.0571429 c 20 85 698 1330 bf 19 85 718 1330 bf 20 85 737 1330 bf 0.944286 0.542857 0.0514286 c 19 85 757 1330 bf 20 85 776 1330 bf 19 85 796 1330 bf 0.950476 0.504762 0.0457143 c 20 85 815 1330 bf 19 85 835 1330
bf 20 85 854 1330 bf 0.956667 0.466667 0.04 c 19 85 874 1330 bf 20 85 893 1330 bf 19 85 913 1330 bf 20 85 932 1330 bf 0.962857 0.428571 0.0342857 c 19 85 952 1330 bf 20 85 971 1330 bf 19 85 991 1330 bf 20 85 1010 1330 bf 0.969048 0.390476 0.0285714
c 19 85 1030 1330 bf 20 85 1049 1330 bf 19 85 1069 1330 bf 20 85 1088 1330 bf 0.975238 0.352381 0.0228571 c 19 85 1108 1330 bf 20 85 1127 1330 bf 19 85 1147 1330 bf 20 85 1166 1330 bf 19 85 1186 1330 bf 0.981429 0.314286 0.0171429 c 20 85 1205 1330
bf 19 85 1225 1330 bf 20 85 1244 1330 bf 19 85 1264 1330 bf 20 85 1283 1330 bf 19 85 1303 1330 bf 0.987619 0.27619 0.0114286 c 20 85 1322 1330 bf 19 85 1342 1330 bf 20 85 1361 1330 bf 19 85 1381 1330 bf 20 85 1400 1330 bf 19 85 1420 1330 bf 20 85
1439 1330 bf 0.99381 0.238095 0.00571429 c 19 85 1459 1330 bf 20 85 1478 1330 bf 19 85 1498 1330 bf 20 85 1517 1330 bf 19 85 1537 1330 bf 20 85 1556 1330 bf 19 85 1576 1330 bf 20 85 1595 1330 bf 1 0.2 0 c 19 85 1615 1330 bf 20 85 1634 1330 bf 19 85
1654 1330 bf 20 85 1673 1330 bf 19 85 1693 1330 bf 20 85 1712 1330 bf 19 85 1732 1330 bf 20 85 1751 1330 bf 0.967333 0.186667 0 c 19 85 1771 1330 bf 20 85 1790 1330 bf 19 85 1810 1330 bf 20 85 1829 1330 bf 19 85 1849 1330 bf 20 85 1868 1330 bf 19
85 1888 1330 bf 20 85 1907 1330 bf 19 85 1927 1330 bf 20 85 1946 1330 bf 0.934667 0.173333 0 c 19 85 1966 1330 bf 20 85 1985 1330 bf 19 85 2005 1330 bf 20 85 2024 1330 bf 19 85 2044 1330 bf 20 85 2063 1330 bf 19 85 2083 1330 bf 20 85 2102 1330 bf
19 85 2122 1330 bf 20 85 2141 1330 bf 19 85 2161 1330 bf 0.902 0.16 0 c 20 85 2180 1330 bf 0 0.675 0.918333 c 20 86 249 1415 bf 0.2175 0.8575 0.78 c 19 86 269 1415 bf 0.39875 0.897083 0.596667 c 20 86 288 1415 bf 0.5075 0.920833 0.486667 c 19 86
308 1415 bf 0.61625 0.944583 0.376667 c 20 86 327 1415 bf 0.68875 0.960417 0.303333 c 19 86 347 1415 bf 0.725 0.968333 0.266667 c 20 86 366 1415 bf 0.7975 0.984167 0.193333 c 19 86 386 1415 bf 0.83375 0.992083 0.156667 c 20 86 405 1415 bf 0.87 1
0.12 c 19 86 425 1415 bf 0.87619 0.961905 0.114286 c 20 86 444 1415 bf 0.882381 0.92381 0.108571 c 19 86 464 1415 bf 0.888571 0.885714 0.102857 c 20 86 483 1415 bf 19 86 503 1415 bf 0.894762 0.847619 0.0971429 c 20 86 522 1415 bf 0.900952 0.809524
0.0914286 c 19 86 542 1415 bf 20 86 561 1415 bf 0.907143 0.771429 0.0857143 c 19 86 581 1415 bf 20 86 600 1415 bf 0.913333 0.733333 0.08 c 19 86 620 1415 bf 20 86 639 1415 bf 0.919524 0.695238 0.0742857 c 20 86 659 1415 bf 19 86 679 1415 bf
0.925714 0.657143 0.0685714 c 20 86 698 1415 bf 19 86 718 1415 bf 20 86 737 1415 bf 0.931905 0.619048 0.0628571 c 19 86 757 1415 bf 20 86 776 1415 bf 19 86 796 1415 bf 0.938095 0.580952 0.0571429 c 20 86 815 1415 bf 19 86 835 1415 bf 20 86 854 1415
bf 0.944286 0.542857 0.0514286 c 19 86 874 1415 bf 20 86 893 1415 bf 19 86 913 1415 bf 20 86 932 1415 bf 0.950476 0.504762 0.0457143 c 19 86 952 1415 bf 20 86 971 1415 bf 19 86 991 1415 bf 20 86 1010 1415 bf 0.956667 0.466667 0.04 c 19 86 1030 1415
bf 20 86 1049 1415 bf 19 86 1069 1415 bf 20 86 1088 1415 bf 0.962857 0.428571 0.0342857 c 19 86 1108 1415 bf 20 86 1127 1415 bf 19 86 1147 1415 bf 20 86 1166 1415 bf 19 86 1186 1415 bf 20 86 1205 1415 bf 0.969048 0.390476 0.0285714 c 19 86 1225
1415 bf 20 86 1244 1415 bf 19 86 1264 1415 bf 20 86 1283 1415 bf 19 86 1303 1415 bf 0.975238 0.352381 0.0228571 c 20 86 1322 1415 bf 19 86 1342 1415 bf 20 86 1361 1415 bf 19 86 1381 1415 bf 20 86 1400 1415 bf 19 86 1420 1415 bf 20 86 1439 1415 bf
0.981429 0.314286 0.0171429 c 19 86 1459 1415 bf 20 86 1478 1415 bf 19 86 1498 1415 bf 20 86 1517 1415 bf 19 86 1537 1415 bf 20 86 1556 1415 bf 19 86 1576 1415 bf 0.987619 0.27619 0.0114286 c 20 86 1595 1415 bf 19 86 1615 1415 bf 20 86 1634 1415 bf
19 86 1654 1415 bf 20 86 1673 1415 bf 19 86 1693 1415 bf 20 86 1712 1415 bf 19 86 1732 1415 bf 0.99381 0.238095 0.00571429 c 20 86 1751 1415 bf 19 86 1771 1415 bf 20 86 1790 1415 bf 19 86 1810 1415 bf 20 86 1829 1415 bf 19 86 1849 1415 bf 20 86
1868 1415 bf 19 86 1888 1415 bf 20 86 1907 1415 bf 19 86 1927 1415 bf 1 0.2 0 c 20 86 1946 1415 bf 19 86 1966 1415 bf 20 86 1985 1415 bf 19 86 2005 1415 bf 20 86 2024 1415 bf 19 86 2044 1415 bf 20 86 2063 1415 bf 19 86 2083 1415 bf 20 86 2102 1415
bf 19 86 2122 1415 bf 20 86 2141 1415 bf 0.967333 0.186667 0 c 19 86 2161 1415 bf 20 86 2180 1415 bf 0 0.675 0.918333 c 20 85 249 1501 bf 0.2175 0.8575 0.78 c 19 85 269 1501 bf 0.39875 0.897083 0.596667 c 20 85 288 1501 bf 0.5075 0.920833 0.486667
c 19 85 308 1501 bf 0.58 0.936667 0.413333 c 20 85 327 1501 bf 0.6525 0.9525 0.34 c 19 85 347 1501 bf 0.725 0.968333 0.266667 c 20 85 366 1501 bf 0.76125 0.97625 0.23 c 19 85 386 1501 bf 0.7975 0.984167 0.193333 c 20 85 405 1501 bf 0.83375 0.992083
0.156667 c 19 85 425 1501 bf 0.87 1 0.12 c 20 85 444 1501 bf 0.87619 0.961905 0.114286 c 19 85 464 1501 bf 0.882381 0.92381 0.108571 c 20 85 483 1501 bf 0.888571 0.885714 0.102857 c 19 85 503 1501 bf 0.894762 0.847619 0.0971429 c 20 85 522 1501 bf
19 85 542 1501 bf 0.900952 0.809524 0.0914286 c 20 85 561 1501 bf 19 85 581 1501 bf 0.907143 0.771429 0.0857143 c 20 85 600 1501 bf 19 85 620 1501 bf 0.913333 0.733333 0.08 c 20 85 639 1501 bf 20 85 659 1501 bf 0.919524 0.695238 0.0742857 c 19 85
679 1501 bf 20 85 698 1501 bf 0.925714 0.657143 0.0685714 c 19 85 718 1501 bf 20 85 737 1501 bf 19 85 757 1501 bf 0.931905 0.619048 0.0628571 c 20 85 776 1501 bf 19 85 796 1501 bf 20 85 815 1501 bf 0.938095 0.580952 0.0571429 c 19 85 835 1501 bf 20
85 854 1501 bf 19 85 874 1501 bf 20 85 893 1501 bf 0.944286 0.542857 0.0514286 c 19 85 913 1501 bf 20 85 932 1501 bf 19 85 952 1501 bf 0.950476 0.504762 0.0457143 c 20 85 971 1501 bf 19 85 991 1501 bf 20 85 1010 1501 bf 19 85 1030 1501 bf 20 85
1049 1501 bf 0.956667 0.466667 0.04 c 19 85 1069 1501 bf 20 85 1088 1501 bf 19 85 1108 1501 bf 20 85 1127 1501 bf 0.962857 0.428571 0.0342857 c 19 85 1147 1501 bf 20 85 1166 1501 bf 19 85 1186 1501 bf 20 85 1205 1501 bf 19 85 1225 1501 bf 20 85
1244 1501 bf 0.969048 0.390476 0.0285714 c 19 85 1264 1501 bf 20 85 1283 1501 bf 19 85 1303 1501 bf 20 85 1322 1501 bf 19 85 1342 1501 bf 20 85 1361 1501 bf 0.975238 0.352381 0.0228571 c 19 85 1381 1501 bf 20 85 1400 1501 bf 19 85 1420 1501 bf 20
85 1439 1501 bf 19 85 1459 1501 bf 20 85 1478 1501 bf 0.981429 0.314286 0.0171429 c 19 85 1498 1501 bf 20 85 1517 1501 bf 19 85 1537 1501 bf 20 85 1556 1501 bf 19 85 1576 1501 bf 20 85 1595 1501 bf 19 85 1615 1501 bf 20 85 1634 1501 bf 0.987619
0.27619 0.0114286 c 19 85 1654 1501 bf 20 85 1673 1501 bf 19 85 1693 1501 bf 20 85 1712 1501 bf 19 85 1732 1501 bf 20 85 1751 1501 bf 19 85 1771 1501 bf 20 85 1790 1501 bf 19 85 1810 1501 bf 0.99381 0.238095 0.00571429 c 20 85 1829 1501 bf 19 85
1849 1501 bf 20 85 1868 1501 bf 19 85 1888 1501 bf 20 85 1907 1501 bf 19 85 1927 1501 bf 20 85 1946 1501 bf 19 85 1966 1501 bf 20 85 1985 1501 bf 19 85 2005 1501 bf 1 0.2 0 c 20 85 2024 1501 bf 19 85 2044 1501 bf 20 85 2063 1501 bf 19 85 2083 1501
bf 20 85 2102 1501 bf 19 85 2122 1501 bf 20 85 2141 1501 bf 19 85 2161 1501 bf 20 85 2180 1501 bf 0 0.621 0.885667 c 20 86 249 1586 bf 0.145 0.841667 0.853333 c 19 86 269 1586 bf 0.32625 0.88125 0.67 c 20 86 288 1586 bf 0.435 0.905 0.56 c 19 86 308
1586 bf 0.5075 0.920833 0.486667 c 20 86 327 1586 bf 0.58 0.936667 0.413333 c 19 86 347 1586 bf 0.6525 0.9525 0.34 c 20 86 366 1586 bf 0.68875 0.960417 0.303333 c 19 86 386 1586 bf 0.76125 0.97625 0.23 c 20 86 405 1586 bf 0.7975 0.984167 0.193333 c
19 86 425 1586 bf 0.83375 0.992083 0.156667 c 20 86 444 1586 bf 19 86 464 1586 bf 0.87 1 0.12 c 20 86 483 1586 bf 0.87619 0.961905 0.114286 c 19 86 503 1586 bf 0.882381 0.92381 0.108571 c 20 86 522 1586 bf 19 86 542 1586 bf 0.888571 0.885714
0.102857 c 20 86 561 1586 bf 19 86 581 1586 bf 0.894762 0.847619 0.0971429 c 20 86 600 1586 bf 0.900952 0.809524 0.0914286 c 19 86 620 1586 bf 20 86 639 1586 bf 20 86 659 1586 bf 0.907143 0.771429 0.0857143 c 19 86 679 1586 bf 20 86 698 1586 bf
0.913333 0.733333 0.08 c 19 86 718 1586 bf 20 86 737 1586 bf 19 86 757 1586 bf 0.919524 0.695238 0.0742857 c 20 86 776 1586 bf 19 86 796 1586 bf 20 86 815 1586 bf 0.925714 0.657143 0.0685714 c 19 86 835 1586 bf 20 86 854 1586 bf 19 86 874 1586 bf
0.931905 0.619048 0.0628571 c 20 86 893 1586 bf 19 86 913 1586 bf 20 86 932 1586 bf 19 86 952 1586 bf 0.938095 0.580952 0.0571429 c 20 86 971 1586 bf 19 86 991 1586 bf 20 86 1010 1586 bf 19 86 1030 1586 bf 0.944286 0.542857 0.0514286 c 20 86 1049
1586 bf 19 86 1069 1586 bf 20 86 1088 1586 bf 19 86 1108 1586 bf 0.950476 0.504762 0.0457143 c 20 86 1127 1586 bf 19 86 1147 1586 bf 20 86 1166 1586 bf 19 86 1186 1586 bf 20 86 1205 1586 bf 19 86 1225 1586 bf 0.956667 0.466667 0.04 c 20 86 1244
1586 bf 19 86 1264 1586 bf 20 86 1283 1586 bf 19 86 1303 1586 bf 20 86 1322 1586 bf 0.962857 0.428571 0.0342857 c 19 86 1342 1586 bf 20 86 1361 1586 bf 19 86 1381 1586 bf 20 86 1400 1586 bf 19 86 1420 1586 bf 20 86 1439 1586 bf 19 86 1459 1586 bf
0.969048 0.390476 0.0285714 c 20 86 1478 1586 bf 19 86 1498 1586 bf 20 86 1517 1586 bf 19 86 1537 1586 bf 20 86 1556 1586 bf 19 86 1576 1586 bf 20 86 1595 1586 bf 0.975238 0.352381 0.0228571 c 19 86 1615 1586 bf 20 86 1634 1586 bf 19 86 1654 1586
bf 20 86 1673 1586 bf 19 86 1693 1586 bf 20 86 1712 1586 bf 19 86 1732 1586 bf 20 86 1751 1586 bf 0.981429 0.314286 0.0171429 c 19 86 1771 1586 bf 20 86 1790 1586 bf 19 86 1810 1586 bf 20 86 1829 1586 bf 19 86 1849 1586 bf 20 86 1868 1586 bf 19 86
1888 1586 bf 20 86 1907 1586 bf 19 86 1927 1586 bf 20 86 1946 1586 bf 0.987619 0.27619 0.0114286 c 19 86 1966 1586 bf 20 86 1985 1586 bf 19 86 2005 1586 bf 20 86 2024 1586 bf 19 86 2044 1586 bf 20 86 2063 1586 bf 19 86 2083 1586 bf 20 86 2102 1586
bf 19 86 2122 1586 bf 20 86 2141 1586 bf 0.99381 0.238095 0.00571429 c 19 86 2161 1586 bf 20 86 2180 1586 bf 0 0.594 0.869333 c 20 85 249 1672 bf 0.0725 0.825833 0.926667 c 19 85 269 1672 bf 0.25375 0.865417 0.743333 c 20 85 288 1672 bf 0.39875
0.897083 0.596667 c 19 85 308 1672 bf 0.47125 0.912917 0.523333 c 20 85 327 1672 bf 0.54375 0.92875 0.45 c 19 85 347 1672 bf 0.61625 0.944583 0.376667 c 20 85 366 1672 bf 0.6525 0.9525 0.34 c 19 85 386 1672 bf 0.68875 0.960417 0.303333 c 20 85 405
1672 bf 0.725 0.968333 0.266667 c 19 85 425 1672 bf 0.76125 0.97625 0.23 c 20 85 444 1672 bf 0.7975 0.984167 0.193333 c 19 85 464 1672 bf 0.83375 0.992083 0.156667 c 20 85 483 1672 bf 0.87 1 0.12 c 19 85 503 1672 bf 20 85 522 1672 bf 0.87619
0.961905 0.114286 c 19 85 542 1672 bf 0.882381 0.92381 0.108571 c 20 85 561 1672 bf 19 85 581 1672 bf 0.888571 0.885714 0.102857 c 20 85 600 1672 bf 19 85 620 1672 bf 0.894762 0.847619 0.0971429 c 20 85 639 1672 bf 20 85 659 1672 bf 0.900952
0.809524 0.0914286 c 19 85 679 1672 bf 20 85 698 1672 bf 19 85 718 1672 bf 0.907143 0.771429 0.0857143 c 20 85 737 1672 bf 19 85 757 1672 bf 0.913333 0.733333 0.08 c 20 85 776 1672 bf 19 85 796 1672 bf 20 85 815 1672 bf 0.919524 0.695238 0.0742857
c 19 85 835 1672 bf 20 85 854 1672 bf 19 85 874 1672 bf 20 85 893 1672 bf 0.925714 0.657143 0.0685714 c 19 85 913 1672 bf 20 85 932 1672 bf 19 85 952 1672 bf 0.931905 0.619048 0.0628571 c 20 85 971 1672 bf 19 85 991 1672 bf 20 85 1010 1672 bf 19 85
1030 1672 bf 20 85 1049 1672 bf 0.938095 0.580952 0.0571429 c 19 85 1069 1672 bf 20 85 1088 1672 bf 19 85 1108 1672 bf 20 85 1127 1672 bf 0.944286 0.542857 0.0514286 c 19 85 1147 1672 bf 20 85 1166 1672 bf 19 85 1186 1672 bf 20 85 1205 1672 bf 19
85 1225 1672 bf 20 85 1244 1672 bf 0.950476 0.504762 0.0457143 c 19 85 1264 1672 bf 20 85 1283 1672 bf 19 85 1303 1672 bf 20 85 1322 1672 bf 19 85 1342 1672 bf 0.956667 0.466667 0.04 c 20 85 1361 1672 bf 19 85 1381 1672 bf 20 85 1400 1672 bf 19 85
1420 1672 bf 20 85 1439 1672 bf 19 85 1459 1672 bf 20 85 1478 1672 bf 0.962857 0.428571 0.0342857 c 19 85 1498 1672 bf 20 85 1517 1672 bf 19 85 1537 1672 bf 20 85 1556 1672 bf 19 85 1576 1672 bf 20 85 1595 1672 bf 19 85 1615 1672 bf 0.969048
0.390476 0.0285714 c 20 85 1634 1672 bf 19 85 1654 1672 bf 20 85 1673 1672 bf 19 85 1693 1672 bf 20 85 1712 1672 bf 19 85 1732 1672 bf 20 85 1751 1672 bf 19 85 1771 1672 bf 20 85 1790 1672 bf 0.975238 0.352381 0.0228571 c 19 85 1810 1672 bf 20 85
1829 1672 bf 19 85 1849 1672 bf 20 85 1868 1672 bf 19 85 1888 1672 bf 20 85 1907 1672 bf 19 85 1927 1672 bf 20 85 1946 1672 bf 19 85 1966 1672 bf 0.981429 0.314286 0.0171429 c 20 85 1985 1672 bf 19 85 2005 1672 bf 20 85 2024 1672 bf 19 85 2044 1672
bf 20 85 2063 1672 bf 19 85 2083 1672 bf 20 85 2102 1672 bf 19 85 2122 1672 bf 20 85 2141 1672 bf 19 85 2161 1672 bf 20 85 2180 1672 bf 0 0.54 0.836667 c 20 85 249 1757 bf 0.03625 0.817917 0.963333 c 19 85 269 1757 bf 0.2175 0.8575 0.78 c 20 85 288
1757 bf 0.32625 0.88125 0.67 c 19 85 308 1757 bf 0.435 0.905 0.56 c 20 85 327 1757 bf 0.5075 0.920833 0.486667 c 19 85 347 1757 bf 0.54375 0.92875 0.45 c 20 85 366 1757 bf 0.61625 0.944583 0.376667 c 19 85 386 1757 bf 0.6525 0.9525 0.34 c 20 85 405
1757 bf 0.68875 0.960417 0.303333 c 19 85 425 1757 bf 0.725 0.968333 0.266667 c 20 85 444 1757 bf 0.76125 0.97625 0.23 c 19 85 464 1757 bf 0.7975 0.984167 0.193333 c 20 85 483 1757 bf 19 85 503 1757 bf 0.83375 0.992083 0.156667 c 20 85 522 1757 bf
0.87 1 0.12 c 19 85 542 1757 bf 20 85 561 1757 bf 0.87619 0.961905 0.114286 c 19 85 581 1757 bf 20 85 600 1757 bf 0.882381 0.92381 0.108571 c 19 85 620 1757 bf 20 85 639 1757 bf 0.888571 0.885714 0.102857 c 20 85 659 1757 bf 19 85 679 1757 bf
0.894762 0.847619 0.0971429 c 20 85 698 1757 bf 19 85 718 1757 bf 20 85 737 1757 bf 0.900952 0.809524 0.0914286 c 19 85 757 1757 bf 20 85 776 1757 bf 0.907143 0.771429 0.0857143 c 19 85 796 1757 bf 20 85 815 1757 bf 19 85 835 1757 bf 0.913333
0.733333 0.08 c 20 85 854 1757 bf 19 85 874 1757 bf 20 85 893 1757 bf 19 85 913 1757 bf 0.919524 0.695238 0.0742857 c 20 85 932 1757 bf 19 85 952 1757 bf 20 85 971 1757 bf 19 85 991 1757 bf 0.925714 0.657143 0.0685714 c 20 85 1010 1757 bf 19 85
1030 1757 bf 20 85 1049 1757 bf 19 85 1069 1757 bf 0.931905 0.619048 0.0628571 c 20 85 1088 1757 bf 19 85 1108 1757 bf 20 85 1127 1757 bf 19 85 1147 1757 bf 20 85 1166 1757 bf 0.938095 0.580952 0.0571429 c 19 85 1186 1757 bf 20 85 1205 1757 bf 19
85 1225 1757 bf 20 85 1244 1757 bf 19 85 1264 1757 bf 0.944286 0.542857 0.0514286 c 20 85 1283 1757 bf 19 85 1303 1757 bf 20 85 1322 1757 bf 19 85 1342 1757 bf 20 85 1361 1757 bf 19 85 1381 1757 bf 20 85 1400 1757 bf 0.950476 0.504762 0.0457143 c
19 85 1420 1757 bf 20 85 1439 1757 bf 19 85 1459 1757 bf 20 85 1478 1757 bf 19 85 1498 1757 bf 20 85 1517 1757 bf 0.956667 0.466667 0.04 c 19 85 1537 1757 bf 20 85 1556 1757 bf 19 85 1576 1757 bf 20 85 1595 1757 bf 19 85 1615 1757 bf 20 85 1634
1757 bf 19 85 1654 1757 bf 20 85 1673 1757 bf 0.962857 0.428571 0.0342857 c 19 85 1693 1757 bf 20 85 1712 1757 bf 19 85 1732 1757 bf 20 85 1751 1757 bf 19 85 1771 1757 bf 20 85 1790 1757 bf 19 85 1810 1757 bf 20 85 1829 1757 bf 0.969048 0.390476
0.0285714 c 19 85 1849 1757 bf 20 85 1868 1757 bf 19 85 1888 1757 bf 20 85 1907 1757 bf 19 85 1927 1757 bf 20 85 1946 1757 bf 19 85 1966 1757 bf 20 85 1985 1757 bf 19 85 2005 1757 bf 20 85 2024 1757 bf 0.975238 0.352381 0.0228571 c 19 85 2044 1757
bf 20 85 2063 1757 bf 19 85 2083 1757 bf 20 85 2102 1757 bf 19 85 2122 1757 bf 20 85 2141 1757 bf 19 85 2161 1757 bf 20 85 2180 1757 bf 0 0.513 0.820333 c 20 86 249 1842 bf 0 0.783 0.983667 c 19 86 269 1842 bf 0.145 0.841667 0.853333 c 20 86 288
1842 bf 0.29 0.873333 0.706667 c 19 86 308 1842 bf 0.3625 0.889167 0.633333 c 20 86 327 1842 bf 0.435 0.905 0.56 c 19 86 347 1842 bf 0.5075 0.920833 0.486667 c 20 86 366 1842 bf 0.54375 0.92875 0.45 c 19 86 386 1842 bf 0.58 0.936667 0.413333 c 20
86 405 1842 bf 0.61625 0.944583 0.376667 c 19 86 425 1842 bf 0.6525 0.9525 0.34 c 20 86 444 1842 bf 0.68875 0.960417 0.303333 c 19 86 464 1842 bf 0.725 0.968333 0.266667 c 20 86 483 1842 bf 0.76125 0.97625 0.23 c 19 86 503 1842 bf 20 86 522 1842 bf
0.7975 0.984167 0.193333 c 19 86 542 1842 bf 0.83375 0.992083 0.156667 c 20 86 561 1842 bf 19 86 581 1842 bf 0.87 1 0.12 c 20 86 600 1842 bf 19 86 620 1842 bf 0.87619 0.961905 0.114286 c 20 86 639 1842 bf 20 86 659 1842 bf 0.882381 0.92381 0.108571
c 19 86 679 1842 bf 20 86 698 1842 bf 19 86 718 1842 bf 0.888571 0.885714 0.102857 c 20 86 737 1842 bf 19 86 757 1842 bf 0.894762 0.847619 0.0971429 c 20 86 776 1842 bf 19 86 796 1842 bf 20 86 815 1842 bf 0.900952 0.809524 0.0914286 c 19 86 835
1842 bf 20 86 854 1842 bf 19 86 874 1842 bf 20 86 893 1842 bf 0.907143 0.771429 0.0857143 c 19 86 913 1842 bf 20 86 932 1842 bf 19 86 952 1842 bf 0.913333 0.733333 0.08 c 20 86 971 1842 bf 19 86 991 1842 bf 20 86 1010 1842 bf 19 86 1030 1842 bf
0.919524 0.695238 0.0742857 c 20 86 1049 1842 bf 19 86 1069 1842 bf 20 86 1088 1842 bf 19 86 1108 1842 bf 20 86 1127 1842 bf 0.925714 0.657143 0.0685714 c 19 86 1147 1842 bf 20 86 1166 1842 bf 19 86 1186 1842 bf 20 86 1205 1842 bf 19 86 1225 1842
bf 0.931905 0.619048 0.0628571 c 20 86 1244 1842 bf 19 86 1264 1842 bf 20 86 1283 1842 bf 19 86 1303 1842 bf 20 86 1322 1842 bf 19 86 1342 1842 bf 0.938095 0.580952 0.0571429 c 20 86 1361 1842 bf 19 86 1381 1842 bf 20 86 1400 1842 bf 19 86 1420
1842 bf 20 86 1439 1842 bf 19 86 1459 1842 bf 0.944286 0.542857 0.0514286 c 20 86 1478 1842 bf 19 86 1498 1842 bf 20 86 1517 1842 bf 19 86 1537 1842 bf 20 86 1556 1842 bf 19 86 1576 1842 bf 20 86 1595 1842 bf 0.950476 0.504762 0.0457143 c 19 86
1615 1842 bf 20 86 1634 1842 bf 19 86 1654 1842 bf 20 86 1673 1842 bf 19 86 1693 1842 bf 20 86 1712 1842 bf 19 86 1732 1842 bf 20 86 1751 1842 bf 0.956667 0.466667 0.04 c 19 86 1771 1842 bf 20 86 1790 1842 bf 19 86 1810 1842 bf 20 86 1829 1842 bf
19 86 1849 1842 bf 20 86 1868 1842 bf 19 86 1888 1842 bf 20 86 1907 1842 bf 19 86 1927 1842 bf 0.962857 0.428571 0.0342857 c 20 86 1946 1842 bf 19 86 1966 1842 bf 20 86 1985 1842 bf 19 86 2005 1842 bf 20 86 2024 1842 bf 19 86 2044 1842 bf 20 86
2063 1842 bf 19 86 2083 1842 bf 20 86 2102 1842 bf 19 86 2122 1842 bf 20 86 2141 1842 bf 0.969048 0.390476 0.0285714 c 19 86 2161 1842 bf 20 86 2180 1842 bf 1 1 1 c black 6 lw 249 219 m 1951 X s
gsave 2268 2191 0 0 C 1422 11 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Thickness \(mm\)) show NC gr 249 276 m -57 Y s 298 247 m -28 Y s 347 247 m -28 Y s 396 247 m -28 Y s 444 247 m -28 Y s 493 276 m -57 Y s 542 247 m -28 Y s 591 247 m -28
Y s 639 247 m -28 Y s 688 247 m -28 Y s 737 276 m -57 Y s 786 247 m -28 Y s 835 247 m -28 Y s 883 247 m -28 Y s 932 247 m -28 Y s 981 276 m -57 Y s 1030 247 m -28 Y s 1078 247 m -28 Y s 1127 247 m -28 Y s 1176 247 m -28 Y s 1225 276 m -57 Y s 1273
247 m -28 Y s 1322 247 m -28 Y s 1371 247 m -28 Y s 1420 247 m -28 Y s 1468 276 m -57 Y s 1517 247 m -28 Y s 1566 247 m -28 Y s 1615 247 m -28 Y s 1663 247 m -28 Y s 1712 276 m -57 Y s 1761 247 m -28 Y s 1810 247 m -28 Y s 1858 247 m -28 Y s 1907
247 m -28 Y s 1956 276 m -57 Y s 2005 247 m -28 Y s 2053 247 m -28 Y s 2102 247 m -28 Y s 2151 247 m -28 Y s 2200 276 m -57 Y s
gsave 2268 2191 0 0 C 225 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2191 0 0 C 476 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1) show NC gr
gsave 2268 2191 0 0 C 712 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
gsave 2268 2191 0 0 C 957 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (3) show NC gr
gsave 2268 2191 0 0 C 1199 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
gsave 2268 2191 0 0 C 1444 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (5) show NC gr
gsave 2268 2191 0 0 C 1687 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
gsave 2268 2191 0 0 C 1932 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (7) show NC gr
gsave 2268 2191 0 0 C 2177 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr 249 219 m 1709 Y s
gsave 2268 2191 0 0 C 83 1333 t 90 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Energy\(keV\)) show NC gr 303 333 m -54 X s 276 379 m -27 X s 276 424 m -27 X s 276 470 m -27 X s 276 515 m -27 X s 303 561 m -54 X s 276 606 m -27 X s 276 652 m -27 X
s 276 698 m -27 X s 276 743 m -27 X s 303 789 m -54 X s 276 834 m -27 X s 276 880 m -27 X s 276 925 m -27 X s 276 971 m -27 X s 303 1017 m -54 X s 276 1062 m -27 X s 276 1108 m -27 X s 276 1153 m -27 X s 276 1199 m -27 X s 303 1244 m -54 X s 276
1290 m -27 X s 276 1336 m -27 X s 276 1381 m -27 X s 276 1427 m -27 X s 303 1472 m -54 X s 276 1518 m -27 X s 276 1563 m -27 X s 276 1609 m -27 X s 276 1654 m -27 X s 303 1700 m -54 X s 276 1746 m -27 X s 276 1791 m -27 X s 276 1837 m -27 X s 276
1882 m -27 X s 303 1928 m -54 X s 303 333 m -54 X s 276 287 m -27 X s 276 242 m -27 X s
gsave 2268 2191 0 0 C 148 296 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
gsave 2268 2191 0 0 C 148 524 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20) show NC gr
gsave 2268 2191 0 0 C 148 752 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (30) show NC gr
gsave 2268 2191 0 0 C 148 980 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (40) show NC gr
gsave 2268 2191 0 0 C 148 1208 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (50) show NC gr
gsave 2268 2191 0 0 C 148 1436 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (60) show NC gr
gsave 2268 2191 0 0 C 148 1664 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (70) show NC gr
gsave 2268 2191 0 0 C 148 1892 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (80) show NC gr
gsave 2268 2191 0 0 C 268 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 78) show NC gr
gsave 2268 2191 0 0 C 365 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 459 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 556 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 652 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 749 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 849 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 75) show NC gr
gsave 2268 2191 0 0 C 365 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 459 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 556 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 652 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 749 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 849 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 45) show NC gr
gsave 2268 2191 0 0 C 365 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 83) show NC gr
gsave 2268 2191 0 0 C 464 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 95) show NC gr
gsave 2268 2191 0 0 C 561 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 652 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 749 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 849 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 37) show NC gr
gsave 2268 2191 0 0 C 365 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 75) show NC gr
gsave 2268 2191 0 0 C 464 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 90) show NC gr
gsave 2268 2191 0 0 C 561 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 96) show NC gr
gsave 2268 2191 0 0 C 658 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 755 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 849 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 584 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 365 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 467 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 61) show NC gr
gsave 2268 2191 0 0 C 561 584 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 74) show NC gr
gsave 2268 2191 0 0 C 658 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 82) show NC gr
gsave 2268 2191 0 0 C 755 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 88) show NC gr
gsave 2268 2191 0 0 C 855 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 92) show NC gr
gsave 2268 2191 0 0 C 952 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 94) show NC gr
gsave 2268 2191 0 0 C 1048 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 96) show NC gr
gsave 2268 2191 0 0 C 1145 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 97) show NC gr
gsave 2268 2191 0 0 C 1242 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 1342 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 1439 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 1536 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 1627 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 271 669 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 365 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 29) show NC gr
gsave 2268 2191 0 0 C 464 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 561 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 55) show NC gr
gsave 2268 2191 0 0 C 658 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 64) show NC gr
gsave 2268 2191 0 0 C 758 669 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 71) show NC gr
gsave 2268 2191 0 0 C 855 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 77) show NC gr
gsave 2268 2191 0 0 C 952 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 82) show NC gr
gsave 2268 2191 0 0 C 1048 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 86) show NC gr
gsave 2268 2191 0 0 C 1145 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 88) show NC gr
gsave 2268 2191 0 0 C 1245 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 91) show NC gr
gsave 2268 2191 0 0 C 1342 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 93) show NC gr
gsave 2268 2191 0 0 C 1439 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 94) show NC gr
gsave 2268 2191 0 0 C 1536 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 95) show NC gr
gsave 2268 2191 0 0 C 1632 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 96) show NC gr
gsave 2268 2191 0 0 C 1732 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 97) show NC gr
gsave 2268 2191 0 0 C 1829 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 1926 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 2023 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 2122 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 273 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 365 755 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 464 755 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 27) show NC gr
gsave 2268 2191 0 0 C 561 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 36) show NC gr
gsave 2268 2191 0 0 C 658 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 755 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 50) show NC gr
gsave 2268 2191 0 0 C 855 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 56) show NC gr
gsave 2268 2191 0 0 C 954 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 61) show NC gr
gsave 2268 2191 0 0 C 1048 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 66) show NC gr
gsave 2268 2191 0 0 C 1145 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 70) show NC gr
gsave 2268 2191 0 0 C 1242 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 73) show NC gr
gsave 2268 2191 0 0 C 1342 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 76) show NC gr
gsave 2268 2191 0 0 C 1439 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 79) show NC gr
gsave 2268 2191 0 0 C 1536 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 82) show NC gr
gsave 2268 2191 0 0 C 1632 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 84) show NC gr
gsave 2268 2191 0 0 C 1732 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 86) show NC gr
gsave 2268 2191 0 0 C 1829 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 87) show NC gr
gsave 2268 2191 0 0 C 1926 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 89) show NC gr
gsave 2268 2191 0 0 C 2023 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 90) show NC gr
gsave 2268 2191 0 0 C 2125 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 91) show NC gr
gsave 2268 2191 0 0 C 273 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 365 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 464 840 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 561 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 32) show NC gr
gsave 2268 2191 0 0 C 658 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 39) show NC gr
gsave 2268 2191 0 0 C 755 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 45) show NC gr
gsave 2268 2191 0 0 C 858 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 51) show NC gr
gsave 2268 2191 0 0 C 952 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 56) show NC gr
gsave 2268 2191 0 0 C 1048 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 60) show NC gr
gsave 2268 2191 0 0 C 1145 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 64) show NC gr
gsave 2268 2191 0 0 C 1242 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 68) show NC gr
gsave 2268 2191 0 0 C 1345 840 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 71) show NC gr
gsave 2268 2191 0 0 C 1439 840 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 74) show NC gr
gsave 2268 2191 0 0 C 1536 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 77) show NC gr
gsave 2268 2191 0 0 C 1632 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 79) show NC gr
gsave 2268 2191 0 0 C 1735 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 81) show NC gr
gsave 2268 2191 0 0 C 1829 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 83) show NC gr
gsave 2268 2191 0 0 C 1926 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 85) show NC gr
gsave 2268 2191 0 0 C 2023 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 87) show NC gr
gsave 2268 2191 0 0 C 2122 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 88) show NC gr
gsave 2268 2191 0 0 C 273 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 370 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 464 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 561 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 658 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 755 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 30) show NC gr
gsave 2268 2191 0 0 C 855 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 34) show NC gr
gsave 2268 2191 0 0 C 952 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 38) show NC gr
gsave 2268 2191 0 0 C 1048 926 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 42) show NC gr
gsave 2268 2191 0 0 C 1145 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 46) show NC gr
gsave 2268 2191 0 0 C 1242 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 49) show NC gr
gsave 2268 2191 0 0 C 1342 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 52) show NC gr
gsave 2268 2191 0 0 C 1439 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 55) show NC gr
gsave 2268 2191 0 0 C 1536 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 58) show NC gr
gsave 2268 2191 0 0 C 1635 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 61) show NC gr
gsave 2268 2191 0 0 C 1732 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 63) show NC gr
gsave 2268 2191 0 0 C 1829 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 66) show NC gr
gsave 2268 2191 0 0 C 1926 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 68) show NC gr
gsave 2268 2191 0 0 C 2023 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 70) show NC gr
gsave 2268 2191 0 0 C 2122 926 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 72) show NC gr
gsave 2268 2191 0 0 C 273 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 370 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 467 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 561 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 658 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 755 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 855 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 952 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1048 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 32) show NC gr
gsave 2268 2191 0 0 C 1145 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 35) show NC gr
gsave 2268 2191 0 0 C 1242 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 37) show NC gr
gsave 2268 2191 0 0 C 1342 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 40) show NC gr
gsave 2268 2191 0 0 C 1439 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 1536 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 45) show NC gr
gsave 2268 2191 0 0 C 1632 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 48) show NC gr
gsave 2268 2191 0 0 C 1732 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 50) show NC gr
gsave 2268 2191 0 0 C 1829 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 52) show NC gr
gsave 2268 2191 0 0 C 1926 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 54) show NC gr
gsave 2268 2191 0 0 C 2023 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 56) show NC gr
gsave 2268 2191 0 0 C 2122 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 58) show NC gr
gsave 2268 2191 0 0 C 273 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 370 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 470 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 561 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 658 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 755 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 855 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 952 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 1048 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 1145 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1245 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 31) show NC gr
gsave 2268 2191 0 0 C 1342 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 33) show NC gr
gsave 2268 2191 0 0 C 1439 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 35) show NC gr
gsave 2268 2191 0 0 C 1536 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 38) show NC gr
gsave 2268 2191 0 0 C 1632 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 40) show NC gr
gsave 2268 2191 0 0 C 1732 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 42) show NC gr
gsave 2268 2191 0 0 C 1829 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 44) show NC gr
gsave 2268 2191 0 0 C 1926 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 46) show NC gr
gsave 2268 2191 0 0 C 2023 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 48) show NC gr
gsave 2268 2191 0 0 C 2122 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 49) show NC gr
gsave 2268 2191 0 0 C 276 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 470 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 567 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 661 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 755 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 855 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 952 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1048 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 1145 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 1242 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 1342 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 1439 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1536 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 30) show NC gr
gsave 2268 2191 0 0 C 1632 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 32) show NC gr
gsave 2268 2191 0 0 C 1732 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 34) show NC gr
gsave 2268 2191 0 0 C 1829 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 36) show NC gr
gsave 2268 2191 0 0 C 1926 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 37) show NC gr
gsave 2268 2191 0 0 C 2023 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 39) show NC gr
gsave 2268 2191 0 0 C 2125 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 41) show NC gr
gsave 2268 2191 0 0 C 276 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 470 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 567 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 658 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 755 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 855 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 952 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 1048 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1145 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 1245 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 1342 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 1439 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 1536 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 1632 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1732 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 30) show NC gr
gsave 2268 2191 0 0 C 1832 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 31) show NC gr
gsave 2268 2191 0 0 C 1926 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 33) show NC gr
gsave 2268 2191 0 0 C 2023 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 34) show NC gr
gsave 2268 2191 0 0 C 2122 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 36) show NC gr
gsave 2268 2191 0 0 C 276 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 470 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 567 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 664 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 761 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 858 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 952 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1048 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1145 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1242 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1342 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1439 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 1538 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 1632 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 1732 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 1829 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 1926 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 2023 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 2122 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 29) show NC gr
gsave 2268 2191 0 0 C 276 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 470 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 567 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 664 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 761 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 860 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 952 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1051 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1145 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1242 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1342 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1439 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 1536 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1632 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1732 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 1832 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 1926 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 2023 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 2122 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 276 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 470 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 567 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 664 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 761 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 860 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 952 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1051 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1145 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1242 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1342 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1439 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1536 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1632 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1732 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 1829 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 1929 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 2023 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 2122 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 276 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 470 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 567 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 664 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 761 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 860 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 957 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1054 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1145 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1245 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1342 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1439 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1536 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1632 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1732 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 1829 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1926 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 2023 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 2122 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 273 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 0) show NC gr
gsave 2268 2191 0 0 C 373 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 470 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 567 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 664 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 761 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 860 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 957 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1054 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1151 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1242 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1345 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1442 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1536 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1632 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1732 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1829 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1926 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 2023 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 2122 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 273 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 0) show NC gr
gsave 2268 2191 0 0 C 373 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 470 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 567 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 664 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 761 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 860 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 957 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 1054 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1151 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1248 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1348 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1439 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1538 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1635 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1732 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1829 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1926 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 2023 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 2122 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 273 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 0) show NC gr
gsave 2268 2191 0 0 C 373 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 470 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 567 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 664 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 761 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 860 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 957 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 1054 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 1151 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1248 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1348 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1444 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1541 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1632 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1732 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1832 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1926 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 2023 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 2122 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr 1 1 1 c 1573 132 225 1951 bf black
gsave 2268 2191 0 0 C 305 1980 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Silicon Sensor Efficiency \(%\)) show NC gr
gr gr
showpage
end
%%EOF

File diff suppressed because it is too large Load Diff

View File

@ -3,135 +3,299 @@
\usepackage[dvips]{graphicx}
\usepackage{verbatim}
\usepackage{hyperref}
\usepackage{color}
\begin{document}
\title{SLS Detectors software installation}
\author{Anna Bergamaschi}
\author{Anna Bergamaschi, Dhanya Thattil}
\date{\today}
\maketitle
\tableofcontents
\clearpage
%setcounter{tocdepth}{4} and \setcounter{secnumdepth}{4}
The SLS detectors software is intended to control the detectors developed by the SLS Detectors group.
It provides a command line interface (text client), a graphical user interface (GUI) as well as an API that can be embedded in your acquisitions system, some tools for detector calibration and the software to receive the data from detector with high data throughput (e.g. GOTTHARD, EIGER).
\section{The software package}
\section{The Software Package}
The SLS detectors software is intended to control the detectors developed by
the SLS Detectors group. The detectors currently supported are:
\indent MYTHEN, GOTTHARD, EIGER and JUNGFRAU.
The complete software package is composed of several programs which can be installed (or locally compiled) depending on the needs:
The package provides software for the distributed system that comprises of
detectors, data receivers (to process detector data), and the client (to control
or monitor the system). The client and data receivers can be embedded in
the user's acquisitions system. Furthermore, the package also provides some
tools for detector calibration.
\subsection{Binaries}
\noindent The complete software package is composed of several programs which
can be installed (or locally compiled) depending on one's requirements:
\begin{itemize}
\item The \textbf{slsDetector shared and static libraries} which are necessary for all user interfaces. \\
The class slsDetectorUsers can be used as API from your acquisition software (see separate documentation).
\item The \textbf{command line interfaces (sls\_detector\_put, sls\_detector\_get, sls\_detector\_acquire, sls\_detector\_help)}, which are provided to communicate with the detectors using the command line and eventually to the data receiver
\item The \textbf{data receiver (slsReceiver)}, which can be run on a different machine, receives the data from the detector and interfaces to the control software via TCP/IP for defining e.g. the file name, output path and return status and progress of the acquisition
\item The \textbf{graphical user interface (slsDetectorGUI)} which provides a user friendly way of operating the detectors with online data preview
\item The \textbf{calibration wizards (energyCalibrationWizard, angularCalibrationWizard)} to analyze the data and produce the energy or angular calibration files
\item The \textbf{GOTTHARD and MYTHEN virtual servers} to simulate the detectors behavior (however only control commands work, not the data acquisition itself)
\item \textcolor{blue}{libSlsDetector.so, libSlsReceiver.so}:\\
The \textit{slsDetector shared and static libraries}, which are
necessary for all user interfaces. The \textit{C++ API} via the class
\textit{slsDetectorUsers} (installed with the default package) or the
\textit{Python API} via the class \textit{sls\_detector} (installed with the
package including Python API), which can be used from the user's acquisition
software to control the detectors and the data receivers.
\item \textcolor{blue}{sls\_detector\_put, sls\_detector\_get,
sls\_detector\_acquire, sls\_detector\_help}: \\
The \textit{command line interfaces}, which are provided to communicate with the
detectors and data receivers using the command line.
\item \textcolor{blue}{slsReceiver}: \\
The \textit{data receiver}, which can be run on a different machine than the
client, receives the data from the detector and processes it. The receiver can
be configured, controlled and monitored by the client.
\item \textcolor{blue}{slsDetectorGUI}: \\
The \textit{graphical user interface}, which provides a user friendly way
of operating the detectors and data receivers with online data preview.
\item \textcolor{blue}{energyCalibrationWizard,angularCalibrationWizard}: \\
The \textit{calibration wizards} to analyze the data and produce the energy or
angular calibration files.
\item The \textit{virtual Detector servers} to simulate the detectors behavior.
However, only control commands work, not the data acquisition itself.
\end{itemize}
Please refere to the SLS Detectors FAQ for additional documentation.
\section{Requirements}
The software is written in C/C++.\\
It needs to be able to access the shared memeory of the control PC and communicate to the detectors over TCP/IP. Therefore the detector should receive a proper IP address (either DHCP or static) and no firewall should be present between th control PC and the detector.
For installing the slsDetector shared and static libraries and the slsDetectorClient software, any Linux installation with a working gcc should be fine.
\section{Install Binaries via Conda}
This section is useful only if one wants to download only the binaries for
specific distribution and use the package via command line. Please refer later
sections to download source code and compile them.
The slsDetectorGUI is based on Qt4 with Qwt libraries.
The calibration wizards are based on the CERN Root data analysis framework.
One can download and install Miniconda via
To compile the software you will need the whole Qt4, Qwt and Root installation, including the header files.\\
To run the software, it is enough to have the Qt4, Qwt or Root libraries appended to the \verb=LD_LIBRARY_PATH=.
\url{https://conda.io/miniconda.html}
\subsection{Qt4 installation}
A Qt version equal or higher than 4.6 is required.
The conda package uses Travis CI for continuous integration with
automatic deployment to Anaconda Cloud. One can download only the package or the
package including the python interface.
After the installation, the binaries will be available in your path.
Please remember to clear shared memory after installation.
\begin{verbatim}
#displays list of shared memeory segments
ipcs -m
#remove segments that have nattach equal to zero. They key is the first column
ipcrm -M [key]
\end{verbatim}
\begin{itemize}
\item Only the package
\begin{verbatim}
#Add conda channels
conda config --add channels conda-forge
conda config --add channels slsdetectorgroup
#Install latest version
conda install sls_detector_software
#Install specific release (GLIBC2.14)
conda install sls_detector_software=3.1.0
#Scientific Linux 6 version (GLIBC2.12)
conda install sls_detector_software=SL6_3.1.0
\end{verbatim}
\item The package including Python interface
\begin{verbatim}
#Add conda channels
conda config --add channels conda-forge
conda config --add channels sls_detector
#Install latest version
conda install sls_detector
#Install specific release (GLIBC2.14)
conda install sls_detector=3.1.0
#Scientific Linux 6 version (GLIBC2.12)
conda install sls_detector=SL6_3.1.0
\end{verbatim}
\end{itemize}
\clearpage
\section{Install via Source Code}
This section is useful if one wants to use the API and embed it in their
acquisition system, or if one wants to download the source code and compile.
\subsection{Download Source Code}
\begin{itemize}
\item Only the package
\begin{verbatim}
#Clone source code with specific release
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch
3.1.0
\end{verbatim}
\item The package including Python interface
\begin{verbatim}
#Clone source code with specific release
git clone https://github.com/slsdetectorgroup/sls_detector.git --branch
3.1.0
\end{verbatim}
\end{itemize}
\subsection{Requirements}
These are the basic requirements to install and use the software. Fine Tuning
the system will be discussed in other documentation provided.
\begin{itemize}
\item \emph{C/C++}:\\
The software is written in C/C++. If Python API is used, it is a wrap around
to the C++ software. Any Linux installation with working libgcc should be
sufficient.
\item \emph{Shared Memory}:\\
Access to the shared memory of the control PC is required for the client.
\item \emph{Network}:\\
The control PC communicates to the detectors and data receivers over TCP/IP.
Therefore, the detector should receive a proper IP address (either DHCP or
static) and no firewall should be present between the control PC and the
detector.
\item \emph{Compilation}:\\
cmake is required to compile. make is also possible, but is harder to find
dependencies.
\item \emph{GUI}:\\
To use the GUI, one requires atleast Qt4.8.2 and Qwt6.0. Installation of these
are discussed in the next sections.
\item \emph{Calibration Wizards}:\\
They are based on the CERN Root data analysis framework. Installation of it is
discussed in the next sections.
\end{itemize}
\subsubsection{Qt4 Installation for GUI}
It must be installed before Qwt. A Qt version equal or higher than 4.6 is
required. One can install it:
\begin{itemize}
\item via YUM:
\begin{verbatim}
yum install qt-devel
\end{verbatim}
\item via download from:\\
\url{
https://download.qt.io/archive/qt/4.8/4.8.2/qt-everywhere-opensource-src-4.8.2.t
ar.gz}
You can retrieve the Qt4 libraries using YUM or download the open source version from e.g. \url{ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.8.1.tar.gz}
To install:
\begin{verbatim}
> gunzip qt-everywhere-opensource-src-4.6.2.tar.gz
> tar xvf qt-everywhere-opensource-src-4.6.2.tar
> gunzip qt-everywhere-opensource-src-4.8.2.tar.gz
> tar xvf qt-everywhere-opensource-src-4.8.2.tar
> ./configure
> make
> make install
\end{verbatim}
By default Qt4 will be installed in /usr/local/Trolltech/Qt-4.8.2/.
\end{itemize}
By default Qt4 will be installed int /usr/local/Trolltech/Qt-4.8.1/
Edit your .bashrc to define the enviroment variable \verb=QTDIR= and add the libraries and exacutables to your \verb=LD_LIBRARY_PATH= and \verb=PATH=:
\textbf{Setup Environment}
One has to ensure that \verb=PATH= and \verb=LD_LIBRARY_PATH= have
been updated to include Qt4 install path, binaries and libraries.
Confirm by executing \verb=qmake -v= and ensuring the result points to Qt4 (not
Qt3 or Qt5).
If the environment is not set up, one can add the libraries and
executables to the .bashrc by adding
\verb=LD_LIBRARY_PATH= and \verb=PATH=:
\begin{verbatim}
export QTDIR=/usr/local/Trolltech/Qt-4.8.1
export QTDIR=/usr/local/Trolltech/Qt-4.8.2
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
\end{verbatim}
If your system also have Qt3 installed, make sure that \verb=QTDIR=, \verb=PATH= and \verb=LD_LIBRARY_PATH= point to Qt4 before installing Qwt (and of course compiling and running the GUI).
\subsection{Qwt installation}
A Qwt version equal or higher than 5 is required.\\
Before installing it, make sure that your \verb=QTDIR=, \verb=LD_LIBRARY_PATH= and \verb=PATH= point to the correct Qt4 version.
\subsubsection{Qwt Installation for GUI}
Before installing Qwt, one must install Qt
and ensure that \verb=QTDIR=, \verb=LD_LIBRARY_PATH= and \verb=PATH= point to
the correct Qt4
version.
You can retrieve the Qwt libraries using YUM or download the open source version via svn:
A Qwt version equal or higher than 6 is required. One can
install it:
\begin{itemize}
\item via YUM:
\begin{verbatim}
> svn co https://qwt.svn.sourceforge.net/svnroot/qwt/branches/qwt-6.0
yum install qwt-devel
\end{verbatim}
\item via download from:\\
\url{
https://sourceforge.net/projects/qwt/files/qwt/6.0.0/qwt-6.0.0.zip/download}
To install:
\begin{verbatim}
> cd qwt-6.0
> cd qwt-6.0.0
> qmake
> make
> make install
\end{verbatim}
By default Qwt will be installed int /usr/local/qwt-6.0.0
\end{itemize}
By default Qwt will be installed in /usr/local/qwt-6.0
Edit your .bashrc to define the enviroment variable \verb=QWTDIR= and add the libraries to the \verb=LD_LIBRARY_PATH=:
\textbf{Setup Environment}
One has to ensure that \verb=QWTDIR= and \verb=LD_LIBRARY_PATH= have
been updated to include Qwt install path and libraries.
If the environment is not set up, one can add the libraries to the
.bashrc by adding \verb=LD_LIBRARY_PATH=:
\begin{verbatim}
export QWTDIR=/usr/local/qwt-6.0-svn/
export QWTDIR=/usr/local/qwt-6.0.0/
export LD_LIBRARY_PATH=$QWTDIR/lib:$LD_LIBRARY_PATH
\end{verbatim}
\subsection{Installation with YUM}
You must install the qt4 and qwt development package i.e.
\begin{verbatim}
> yum install qt-devel qwt-devel
\end{verbatim}
and then edit edit your .bashrc as follows
\begin{verbatim}
export ROOTSYS=/opt/root/5.28.00
export QTDIR=/usr/lib64/qt4
export QWTDIR=/usr/include/qwt
export PATH=$QTDIR:bin:$PATH
\end{verbatim}
You should then continue with the root installation.
To compile, you should edit the file slsDetectorGui/slsDetectorGui.pro as follows.\\
All lines containing \verb=$QTDIR= and \verb=$QWTDIR= should be commented, except in the INCLUDEPATH (\verb=$QWTDIR \=).\\
Moreover the \verb=LIBS= line should be changed \verb=-L$(QWTDIR)/lib= to \verb=-L$(QWTDIR)/lib64=.
\subsection{Root installation}
The software has been developed and tested with root 5.20, but any version should work.
Download the sources via svn:
\subsubsection{Root Installation for Calibration Wizards}
The software has been developed and tested with root 5.20, but any version
should work. One can download it from:
\begin{verbatim}
> svn co https://root.cern.ch/svn/root/trunk root
\end{verbatim}
To install:
\noindent To install:
\begin{verbatim}
> cd root
> ./configure --enable-qt
@ -139,120 +303,212 @@ To install:
> make install
\end{verbatim}
Edit your .bashrc to define the ROOTSYS enviroment variable and annd the libraries and executables to the \verb=LD_LIBRARY_PATH= and \verb=PATH=:
Edit your .bashrc to define the ROOTSYS enviroment variable and annd
the libraries and executables to the \verb=LD_LIBRARY_PATH= and \verb=PATH=:
\begin{verbatim}
export ROOTSYS=/usr/local/root
export ROOTSYS=/usr/local/root-5.34
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
\end{verbatim}
You can also download the binaries, assuming that your linuc and gcc versions match:
You can also download the binaries, assuming that your linux and gcc versions
match as in:
\begin{verbatim}
http://root.cern.ch/drupal/content/production-version-534
\end{verbatim}
\section{Compilation}
If you simply want to install the software in the working directory you can:
\subsection{Compilation}
One requires \verb=cmake= to compile and can be done in two ways:
\subsubsection{Using script cmk.sh}
The script uses \verb=cmake=. After compiling, the libraries and executables
will be found in `slsDetectorPackage/build/bin` directory.
Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]
\begin{itemize}
\item[make] compile the library, the command line interface and the receiver
\item[make lib] compile only the library
\item[make textclient] compile the command line interface (and the library, since it is required)
\item[make stextclient] compile the command line interface statically linking the library (and the library, since it is required)
\item[make receiver] compile the data reciever (and the library, since it is required)
\item[make sreceiver] compile the data reciever statically linking the library (and the library, since it is required)
\item[make gui] compile slsDetectorGUI - requires a working Qt4 and Qwt installation
\item[make calWiz] compile the calibration wizards - requires a working root installation
\item[make doc] compile documentation in pdf format
\item[make htmldoc] compile documentation in html format
\item[make install\_lib] installs the libraries, the text clients, the documentation and the includes for the API
\item[make install] installs all software, including the gui, the cal wizards and the includes for the API
\item[make confinstall] installs all software, including the gui, the cal wizards and the includes for the API, prompting for the install paths
\item[make clean] remove object files and executables
\item[make help] lists possible targets
\item[make mythen\_virtual] compile a virtual MYTHEN detector server (works for control commands, not for data taking)
\item[make gotthard\_virtual] compile a virtual GOTTHARD detector server (works for control commands, not for data taking)
\item -[no option]: only make
\item -c: Clean
\item -b: Builds/Rebuilds CMake files normal mode
\item -h: Builds/Rebuilds Cmake files with HDF5 package
\item -d: HDF5 Custom Directory
\item -t: Build/Rebuilds only text client
\item -r: Build/Rebuilds only receiver
\item -g: Build/Rebuilds only gui
\item -j: Number of threads to compile through
\end{itemize}
The path where the files binaries, libraries, documentation and includes will be installed can either be defined interactively by sourcing the \verb=configure= script (not executing!) or during compilation using \verb=make confinstall= or defined on the command line deifning one (or all) the following variables (normally \verb=INSTALLROOT= is enough:
\begin{itemize}
\item[INSTALLROOT] Directory where you want to install the software. Defaults to \verb=PWD=
\item[BINDIR] Directory where you want to install the binaries. Defaults to bin/
\item[INCDIR] Directory where you want to pute the header files. Defaults to include
\item[LIBDIR] Directory where you want to install the libraries. Defaults to bin/
\item[DOCDIR] Directory where you want to copy the documentation. Defaults to doc/
\end{itemize}
Some example options for compilation:
Most basic option: \verb=./cmk.sh -b=
For only make: \verb=./cmk.sh=
For make clean;make: \verb=./cmk.sh -c=
For using hdf5 without custom dir /blabla: \verb=./cmk.sh -h -d /blabla=
For rebuilding cmake without hdf5: \verb=./cmk.sh -b=
For using multiple cores to compile faster: \verb=./cmk.sh -j9=
For rebuilding only certain parts: \verb=./cmk.sh -tg= (only text client and
gui)
\subsubsection{Directly using cmake}
Use cmake to create out-of-source builds, by creating a build folder parallel to
source directory.
\begin{verbatim}
$ cd ..
$ mkdir slsDetectorPackage-build
$ cd slsDetectorPackage-build
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=OFF
$ make
\end{verbatim}
Use the following as an example to compile statically and using specific hdf5
folder
\begin{verbatim}
$ HDF5_ROOT=/opt/hdf5v1.10.0 cmake ../slsDetectorPackage
-DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=ON
\end{verbatim}
After compiling, the libraries and executables will be found at `bin` directory
\begin{verbatim}
$ ls bin/
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a
libSlsReceiver.so sls_detector_acquire sls_detector_get slsDetectorGui
sls_detector_help sls_detector_put slsReceiver
\end{verbatim}
To be able to run the executables, append the \verb=BINDIR= directory to your \verb=PATH= and \verb=LIBDIR= to the \verb=LD_LIBRARY_PATH=.
To run the GUI, you also need to add to your \verb=LD_LIBRARY_PATH= the Qt4 and Qwt libraries, without the need to install the whole Qt and Qwt developer package:
\begin{itemize}
\item libqwt.so.6
\item libQtGui.so.4
\item libQtCore.so.4
\item libQtSvg.so.4
\end{itemize}
\subsection{Setting environment variables}
One can set up the environment variables in the following ways.
To run the calibration wizards it is preferrable to have a complete Root installation (binaries), with \verb=ROOTSYS= defined and the libraries added to the \verb=LD_LIBRARY_PATH=.
\section{Detector upgrade}
Sometimes the upgarde of the communication software, can require an upgrade of the software and/or firmware running on the detector as well.\\
In these cases, the users are not expected to compile teh software themselves (which would require dedicated softwares) but only to download on the detector board the programming files and/or communication program provided by the SLS Detectors group.
\subsection{MYTHEN upgrade}
\subsubsection{Firmware upgrade}
To upgrade the firmware you need either a working version of the Altera Quartus software or of the Quartus programmer, which can easly be downloade from \\
\verb=https://www.altera.com/download/programming/quartus2/pq2-index.jsp= \\
Normally installation of the software and of the driver for the USB-Blaster (provided together with the MYTHEN detector) are simpler under Windows.\\
Under Windows, the first time that you connect the USB-Blasterto one of your USB ports, you will be asked to install new hardware. Set the path to search
for the driver to: \verb=C:\altera\80sp1\qprogrammer\drivers\usb-blasterp= (where \verb=C:\altera\80sp1\qprogrammer\= is assumed to be ther path where your Quartus version is installed).\\
\subsubsection{Using .bashrc file}
\begin{enumerate}
\item After starting the Quartus programmer, click on Hardware Setup and in the "Currently selected hardware" window select USB-Blaster.
\item In the Mode combo box select "Active Serial Programming".
\item Plug the end of your USB-Blaster WITH THE ADAPTER PROVIDED in the connector ASMI on the MCS board taking care that pin1 corresponds to the one indexed and with the rectangualr pad.
\item Click on add file and from select the programming file provided when the upgrade has been reccomended.
\item Check "Program/Configure" and "Verify".
\item Push the start button and wait until the programming process is finished (progress bar top left).
\item In case the programmer gives you error messages, check the polarity of your cable (pin1 corresponds) and that you have selected the correct programming connector.
\item \verb=emacs ~/.bashrc=
\item Add the following function \verb=setup_slsdet= and replace \verb=path=
with absolute path of installed directory
\begin{verbatim}
function setup_slsdet
{
export PKGPATH=[path]
export LD_LIBRARY_PATH=$PKGPATH/slsDetectorPackage/build/bin:$LD_LIBRARY_PATH
export PATH=$PKGPATH/slsDetectorPackage/build/bin:$PATH
cd $PKGPATH/slsDetectorPackage/build/bin
}
\end{verbatim}
\item \verb=source ~/.bashrc=
\item Next time, just run \verb=setup_slsdet= to load the environment
variables.
\end{enumerate}
\subsubsection{Software upgrade}
First telent to the board:
One can also add the GUI environment variables if installed locally by adding
the following in the function \verb=setup_sldet= \\
\begin{verbatim}
export QTDIR=/path-where-it-is/Qt-4.8.2
export QWTDIR=/path-where-it-is/qwt-6.0.1
export QWT3D=/path-where-it-is/qwtplot3d
export QMAKESPEC=$QTDIR/mkspecs/linux-g++
export LD_LIBRARY_PATH=$QTDIR/lib:$QWTDIR/lib:$QWT3D/lib:$LD_LIBRARY _PATH
export PATH=$QTDIR/bin:$PATH
\end{verbatim}
\subsubsection{Without .bashrc file}
Go to binaries folder slsDetectorPackage/build/bin and execute the following:
\begin{verbatim}
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
export PATH=$PWD:$PATH
\end{verbatim}
\subsection{Clean Shared Memory}
It is very crucial to clean the shared memory, before using a new version of
the SLS Detector Package or a different detector type.
One can use the \verb=cleansharedmemory.sh= script available under the
slsDetector Package.
One can also just use the following commands to clean the shared memory
segments one by one.
\begin{verbatim}
#displays list of shared memeory segments
ipcs -m
#remove segments that have nattach equal to zero. They key is the first column
ipcrm -M [key]
\end{verbatim}
\section{Software Upgrade}
The upgrade of the package could require an upgrade of the on-board detector
server and/or firmware running on the detector as well.
\subsection{MYTHEN}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{MYTHEN Firmware}
To upgrade the firmware you need either a working version of the Altera
Quartus software or of the Quartus programmer, which can easily be downloaded
from: \\
\url{https://www.altera.com/download/programming/quartus2/pq2-index.jsp}
\medskip
\noindent Normally, installation of the software and of the driver for the
USB-Blaster (provided together with the MYTHEN detector) are simpler under
Windows.
Under Windows, the first time that you connect the USB-Blaster to one
of your USB ports, you will be asked to install new hardware. Set the path to
search for the driver to:
\verb=C:\altera\80sp1\qprogrammer\drivers\usb-blasterp= (where
\verb=C:\altera\80sp1\qprogrammer\= is assumed to be ther path where your
Quartus version is installed).
\begin{enumerate}
\item After starting the Quartus programmer, click on Hardware Setup and in the
"Currently selected hardware" window select USB-Blaster.
\item In the Mode combo box select "Active Serial Programming".
\item Plug the end of your USB-Blaster WITH THE ADAPTER PROVIDED in the
connector ASMI on the MCS board taking care that pin1 corresponds to the one
indexed and with the rectangualr pad.
\item Click on add file and from select the programming file provided when
the upgrade has been reccomended.
\item Check "Program/Configure" and "Verify".
\item Push the start button and wait until the programming process is
finished (progress bar top left).
\item In case the programmer gives you error messages, check the polarity of
your cable (pin1 corresponds) and that you have selected the correct programming
connector.
\end{enumerate}
\subsubsection{MYTHEN On-board Software}
\begin{enumerate}
\item Connect to the board using telnet:
\begin{verbatim}
telnet mymcs.mydomain.com
username: root
password: pass
\end{verbatim}
\item Kill currently running servers and ensure \verb=/mnt/flash/root= exists.
\begin{verbatim}
killall mythenDetectorServer
ls /mnt/flash/root
#if the directory does not exist mkdir /mnt/flash/root
\end{verbatim}
To upgrade the software on the detector board transfer the provided software by ftp to the MCS:
\item Transfer the provided software by ftp to the MCS.
\begin{verbatim}
ftp mymcs.mydomain.com
username: root
@ -262,14 +518,312 @@ put mythenDetectorServer
quit
\end{verbatim}
After pressing reset on the board, the board should reboot.\\
\item After pressing reset on the board, the board should reboot.
\item If the program does not correctly start
\begin{enumerate}
\item Check by using the http interface that it is started by the inittab
(check that the file \verb=/mnt/etc/inittab= ends with the line \\
\verb=myid2:3:once:/mnt/flash/root/mythenDetectorServer=).
\item If program has not started, make the program executable by telnetting to
the MCS and executing: \\
\verb=chmod a+xrw /mnt/flash/root/mythenDetectorServer=
\item After pressing reset on the board, the board should reboot and the
acqusition program correctly start.
\end{enumerate}
\end{enumerate}
\subsection{GOTTHARD}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{GOTTHARD Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: \\
\indent \indent 11.01.2013 \\
\indent Latest version: \\
\indent \indent 08.02.2018 (50um and 25um Master) \\
\indent \indent 09.02.2018 (25 um Slave) \\
Normally, the firmware will be upgraded by us as it requires programming the
FPGA via the USB-Blaster.
To upgrade the firmware you need either a working version of the Altera
Quartus software or of the Quartus programmer, which can easily be downloaded
from: \\
\url{https://www.altera.com/download/programming/quartus2/pq2-index.jsp}
Normally, installation of the software and of the driver for the
USB-Blaster (provided together with the MYTHEN detector) are simpler under
Windows.
Under Windows, the first time that you connect the USB-Blaster to one
of your USB ports, you will be asked to install new hardware. Set the path to
search for the driver to:
\verb=C:\altera\80sp1\qprogrammer\drivers\usb-blasterp= (where
\verb=C:\altera\80sp1\qprogrammer\= is assumed to be ther path where your
Quartus version is installed).
\begin{enumerate}
\item After starting the Quartus programmer, click on Hardware Setup and in the
"Currently selected hardware" window select USB-Blaster.
\item In the Mode combo box select "Active Serial Programming".
\item Plug the end of your USB-Blaster WITH THE ADAPTER PROVIDED in the
connector ASMI on the MCS board taking care that pin1 corresponds to the one
indexed and with the rectangualr pad.
\item Click on add file and from select the programming file provided when
the upgrade has been reccomended.
\item Check "Program/Configure" and "Verify".
\item Push the start button and wait until the programming process is
finished (progress bar top left).
\item In case the programmer gives you error messages, check the polarity of
your cable (pin1 corresponds) and that you have selected the correct programming
connector.
\end{enumerate}
\subsubsection{GOTTHARD On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
\begin{enumerate}
\item Install tftp if the pc does not have it.
\item Copy the server from serverBin folder to /tftpboot (or equivalent tftp
folder) of the pc
\item Copy the server to the detector by:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/gotthardDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Copy new on-board server from pc to the blackfin using: \\
\verb=tftp pcxxx -r gotthardDetectorServerxxx -g=
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/gotthardDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=gotthardDetectorServerxxx= \\
\verb=gotthardDetectorServerxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
\subsection{EIGER}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{EIGER Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: 16 \\
\indent Latest version: 20 \\
\begin{enumerate}
\item One must get the latest package's corresponding bit files from the SLS
Detector Group.
\item If one does not have the bcp script, that should also be obtained from
the SLS Detector Group. It is required to program the bit files and requires
that tftp be installed on the pc.
\item Run the following to update firmware
\begin{verbatim}
#update back end fpga
bcp download.bit bebxxx:/fw0
#update front left fpga
bcp download.bit bebxxx:/febl
#update front right fpga
bcp download.bit bebxxx:/febr
#update kernel
bcp download.bit bebxxx:/kernel
\end{verbatim}
Please update bit files with great caution as it could make your board
inaccessible, if done incorrectly.
\end{enumerate}
\subsubsection{EIGER On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
Update the on-board software without connecting to the detector
\begin{verbatim}
#password for the boards: root
#Kill existing servers that are running on the detector
ssh root@beb031 killall eigerDetectorServer;
#Copy on-board server to detector inside executables folder
scp ~/path-where-it-is/eigerDetectorServerxxx root@bebxxx:~/executables;
#Overwrite the actual eigerDetectorServer on board
scp ~/path-where-it-is/eigerDetectorServerxxx
root@bebxxx:~/executables/eigerDetectorServer;
#sync
ssh root@bebxxx sync;
#reboot the eiger board
\end{verbatim}
\bigskip One can connect to the detector by:
\begin{verbatim}
ssh root@bebxxx
password: root
\end{verbatim}
The on-board server is in ~/executables folder and respawned at startup in \\
\verb=/etc/rc5.d/S50board_com.sh=
\subsection{JUNGFRAU}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{JUNGFRAU Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: 13.11.2017 \\
\indent Latest version: 13.11.2017 \\
At times, one has to update the firmware, which then also requires updating the
on-board software.
\textbf{\textit{Jungfrau firmware can be upgraded via the SLS Detector Package
binaries from the command line.}}
\begin{enumerate}
\item One must get the latest package's corresponding POF file from the SLS
Detector Group.
\item Update the latest SLS Detector package installed.
\item Update the on-board software as per the instructions in the next
section.
\item Start the on-board server in debug mode:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Start the server in debug mode using: \\
\verb=./jungfrauDetectorServerxxx -debug= \\
Leave this console on to come back to it later.
\end{enumerate}
\item From the command line of the pc, clear shared memory \\
\verb=./sls_detector_get free= \\
If one gets shmget error, please clean the shared memory properly using the
script in \verb=slsDetectorPackage/cleansharedmemory.sh=
\item Add the detector to shared memory using \\
\verb=./sls_detector_put hostname bchipxxx=
\item Program the FPGA using \\
\verb=./sls_detector_put programfpga xxx.pof=
\item Once the programming is done:
\begin{enumerate}
\item Switch to the console that has the debug server running and kill it
using Ctrl+C and ensure no jungfrauDetectorServers are
running
\item Restart the new server to see if it runs with the new firmware \\
\verb=./jungfrauDetectorServerxxx= \\
If the server didn't start properly, please contact us with the error message
shown when starting the server up, else continue with the following steps.
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=jungfrauDetectorServervxxx= \\
\verb=jungfrauDetectorServervxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
\subsubsection{JUNGFRAU On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
\begin{enumerate}
\item Install tftp if the pc does not have it.
\item Copy the server from serverBin folder to /tftpboot (or equivalent tftp
folder) of the pc
\item Copy the server to the detector by:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Copy new on-board server from pc to the blackfin using: \\
\verb=tftp pcxxx -r jungfrauDetectorServervxxx -g=
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=jungfrauDetectorServervxxx= \\
\verb=jungfrauDetectorServervxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
If the program does not correctly start either check by using the http interface that it is started by the inittab (check that the file \verb=/mnt/etc/inittab= ends with the line \verb=myid2:3:once:/mnt/flash/root/mythenDetectorServer= ). \\
Otherwise make the program executable by telnetting to the MCS and executing:
\verb=chmod a+xrw /mnt/flash/root/mythenDetectorServer=\\
After pressing reset on the board, the board should reboot and the acqusition program correctly start.
\begin{comment}
\section{Detector system architecture}
@ -333,7 +887,7 @@ You will need to configure more than one detector, only in case you want to oper
\subsection{MYTHEN}
In order to be able to properly operate your detector you need a directory where the trimbit files (needed to set the detector settings and eventually equalize the individual channel thresholds) which in the following will be named \textit{settingsdir} and a directory where the calibration files (needed to convert the threshold energy in DAC units) are stored which in the following will be named \textit{caldir}. \\
\textit{settingsdirdir} and \textit{caldir} can even be the same directory, and an example of it is given in the software package by the example directory \verb=trimdir=.
\textit{settingsdir} and \textit{caldir} can even be the same directory, and an example of it is given in the software package by the example directory \verb=trimdir=.
Since these directories are customized by producing trimbit files and calibration for each detector, make sure not to overwrite yours every time you upgrade the software.
\textit{settingsdir} should contain three subdirectories \verb=standard=, \verb=fast= and \verb=highgain= containing respectively the trimfiles \verb=standard.trim=, \verb=fast.trim= and \verb=highgain.trim= which contain the correct voltage settings for the detector although all the individual channel thresholds set to 0. The original files contained in the package should be used, infact in case of error the detector would not recognize the correct settings.\\
@ -346,7 +900,11 @@ The \textit{settingsdir} and \textit{caldir} should be properly configured for y
\subsection{GOTTHARD}
A \textit{settingsdir} should be configured, as the directory \verb=settings= in this software package.\\
It must contain the subdirectories \verb=dynamicgain=, \verb=gain1=, \verb=gain2=, \verb=gain3=, \verb=highgain=, \verb=lowgain=, \verb=mediumgain=, and \verb=veryhighgain= in order to properly configure the GOTTHARD detector using the various gain settings.
It must contain the subdirectories \verb=dynamicgain=, \verb=gain1=,
\verb=gain2=, \verb=gain3=, \verb=highgain=, \verb=lowgain=,
\verb=mediumgain=, and \verb=veryhighgain= in order to properly configure the
GOTTHARD detector using the various gain settings.
\end{comment}
\end{document}

View File

@ -98,7 +98,6 @@
\begin{document}
@ -112,23 +111,23 @@
\chapter{SLS Detectors Software}
\input{slsDetector-softFAQ}
\begin{comment}
%\begin{comment}
\chapter{General questions about detectors}
\input{generalDet-FAQ}
\end{comment}
% \end{comment}
\chapter{Single photon counting detectors}
\input{singlePhotonCounting-FAQ}
\begin{comment}
%\begin{comment}
\chapter{Charge Integrating detectors}
\input{chargeInt-FAQ}
\chapter{Angular conversion}
\input{angConv-FAQ}
\end{comment}
%\end{comment}
\end{document}

View File

@ -1 +0,0 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.3.0.16.2

View File

@ -0,0 +1 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_virtualMaster

View File

@ -0,0 +1 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_virtualSlave

View File

@ -0,0 +1 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.1.0.16.1

View File

@ -0,0 +1 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.1.0.21.0

View File

@ -1 +0,0 @@
../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv2.0.3

View File

@ -0,0 +1 @@
../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServer_virtual

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