Compare commits

...

543 Commits
udp ... 2.0.5

Author SHA1 Message Date
e48a92d9cd Merge remote branch 'slsDetectorCalibration/2.0.5' into 2.0.5 2017-12-12 11:02:57 +01:00
a2217e2066 Merge remote branch 'slsReceiverSoftware/2.0.5' into 2.0.5 2017-12-04 15:33:33 +01:00
aaa02706fc Merge remote branch 'slsDetectorSoftware/2.0.5' into 2.0.5 2017-12-04 15:31:52 +01:00
172fa66b1f hotfix for memory leak in server 2016-08-18 11:57:36 +02:00
e452bccea2 updaterev 2016-08-12 11:18:11 +02:00
b9d42d274c updated eiger server executable 2016-08-12 11:09:52 +02:00
0ec83b90e2 updated eiger server executable 2016-08-12 11:09:11 +02:00
1e79aaf8c7 manual 2016-08-11 11:59:13 +02:00
3c35a08ae8 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detectors_package into developer 2016-08-08 15:50:15 +02:00
fd35e56c2e to include lib path into the run path 2016-08-08 15:50:07 +02:00
60d5c8dd21 manual 2016-08-05 13:54:04 +02:00
9bee1a5aae update manual 2016-08-04 17:58:36 +02:00
b3ad45b1c9 wrongly put func def in receiver_funcs 2016-08-04 17:19:31 +02:00
658f3459ca changes to get rid of warnings 2016-08-03 17:02:40 +02:00
cbf136994b added 2 gain settings to eigeR 2016-08-03 10:33:51 +02:00
4181ae09ff noise with eiger writings 2016-07-29 17:50:09 +02:00
023dbfc281 typo 2016-07-28 11:09:56 +02:00
4946caedd1 manual 2016-07-21 13:37:24 +02:00
cef6dcd969 fake 2016-07-20 16:25:09 +02:00
ae3c51d2e1 fake 2016-07-20 16:18:45 +02:00
7ca8fc052a Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detectors_package into developer 2016-07-20 16:17:00 +02:00
aa4e35f5d5 update git versioning 2016-07-20 16:01:12 +02:00
23a5acccf5 manual 2016-07-20 11:43:43 +02:00
56a6dfb617 manual 2016-07-20 09:25:26 +02:00
86f1a5d082 updated versioning 2016-07-18 18:19:44 +02:00
c852463de1 updaterev 2016-07-18 18:18:08 +02:00
ed7d6b2995 bug fix: 16 bit returning overflow value instead of -1 for msising packet 2016-07-18 17:38:42 +02:00
2e894f33ce fixed bug of pointing to wrong missing packet header fo 10g and 1g32 bit 2016-07-18 11:06:29 +02:00
157d8cff5e added a script to clean shared memory 2016-07-15 18:51:04 +02:00
cb3f8b05a6 fixed 10g bug for 32 bit image reconstruction 2016-07-15 18:50:01 +02:00
56a0bbfcc1 bug filename with respect to frame number 2016-07-14 17:10:28 +02:00
eda342911f update versions 2016-07-14 16:23:29 +02:00
fd1f6d1ec6 update manual 2016-07-14 13:17:22 +02:00
3f0f1c6f64 update manuals 2016-07-13 13:56:22 +02:00
3fd3a5dc10 last frame number caught added to log 2016-07-12 16:21:50 +02:00
79e3cdd183 receiver crashing at file write disabled taking acquistion 2016-07-12 16:02:23 +02:00
322ed68b23 commit versions updated 2016-07-06 10:33:17 +02:00
779d8d1094 updating versions 2016-07-06 10:32:58 +02:00
96a88f9de2 added timestamp 2016-07-06 10:31:30 +02:00
347ecb9bb5 updating versions 2016-07-05 17:24:45 +02:00
980c1c02e6 updating versions 2016-07-05 17:23:05 +02:00
a65920377c feature with header in file 2016-07-05 17:17:34 +02:00
a7a3422ed2 feature with header in file 2016-07-05 16:53:21 +02:00
d9330fc345 feature: tau is now read from calib file. if not there, it is set to defalt in server value, but switched off. load trimbits will not touch rate correction 2016-07-05 12:03:05 +02:00
df04d9fb07 updating versions 2016-07-04 15:51:18 +02:00
d88253f643 versions update 2016-06-13 19:10:14 +02:00
75a50a7ae0 receiver udp parameters should be sent to receiver everytime if rx_hostname is set 2016-05-10 17:13:27 +02:00
2f2e73a66e Rate corrections are now passed in (ns) units. Improvement to the manual. 2016-04-27 15:41:44 +02:00
55a8c13b75 add Eiger short how-to manual. Still to be finished 2016-04-27 10:16:47 +02:00
5ca4b665c9 new default files 2016-04-13 16:16:20 +02:00
a8b21282ec Merge branch 'developer' into parallel 2016-04-12 14:56:20 +02:00
6ce87e69a0 Merge branch 'master' into parallel 2016-03-21 11:40:17 +01:00
f40691dcaf Merge branch 'master' into release 2016-03-21 11:21:59 +01:00
da960706dc renamed server exe 2016-03-21 11:21:44 +01:00
3abd28c468 Merge branch 'master' into release 2016-03-21 10:53:14 +01:00
7fd02d814a added server executables 2016-03-21 10:52:38 +01:00
d88b104aa8 bug fix for receiver call back 2016-03-15 15:28:50 +01:00
6261f5b47d corrected trimbit files 2016-03-14 16:21:39 +01:00
2cf34999a9 added threadfiles dir to library for compile 2016-03-14 09:51:42 +01:00
5a77d9e61b added new calibration files 2016-03-14 09:48:13 +01:00
4bb97fcfbf included calibration wizards in checkout script 2016-03-09 12:36:59 +01:00
a563b82001 Merge branch 'master' into release 2016-02-25 14:34:07 +01:00
83f3ab145e resolved conflict in merging with release 2016-02-25 14:17:32 +01:00
d4b388f434 unresolved conflict 2016-02-25 14:13:42 +01:00
bda8b69e05 Merge branch 'master' into release 2016-02-25 14:01:22 +01:00
683ea31963 removed comment entering missing zone 2016-02-25 13:56:23 +01:00
1ef91414d6 Merge branch 'release' of git.psi.ch:sls_detectors_software/sls_receiver_software into release 2016-02-25 13:51:34 +01:00
e508050be8 bug fix: converts any receiver other than eiger into a jungfrau receiver 2016-02-25 12:11:05 +01:00
ebdb21ccfe added iodelay with setttings 2016-02-24 18:10:59 +01:00
7eda239e45 Merge branch 'release' of git.psi.ch:sls_detectors_software/sls_detectors_package into release 2016-02-24 18:09:28 +01:00
59262c28c2 added iodelay with setttings 2016-02-24 18:09:16 +01:00
f113b1afbb Added status stopped 2016-02-22 15:07:05 +01:00
66eddb1afe Added stopped status 2016-02-22 14:00:22 +01:00
e2133317f5 add missing commands and cleanup 2016-02-12 14:32:03 +01:00
3225427043 spell check client manual 2016-02-12 14:04:54 +01:00
75a75f3328 update 2016-02-12 11:09:47 +01:00
bd91aea713 Some defs for JCTB receiver 2016-02-11 17:09:54 +01:00
5afb38c1ec changing the print outs 2016-02-08 10:40:33 +01:00
0c9806e17f jungfrau header changed 2016-02-04 12:39:05 +01:00
41f7743af9 included fifodepth for jungfrau. Needed else its stuck 2016-02-03 16:27:23 +01:00
e3d9fd1c02 Merge branch 'release' into jungfrauv1.0 2016-02-03 14:59:22 +01:00
c217cb0978 merging with release 2016-02-03 14:58:32 +01:00
ef8fbab1f4 10g bug fixed in previous branch merge 2016-02-03 11:34:47 +01:00
fed17eb8eb modified color of printout 2016-02-03 11:26:18 +01:00
72cfd7a1d7 all changes done with bugs solved. need to test with image reconstruction 2016-02-02 18:57:20 +01:00
f19031a736 all changes done 2016-02-02 18:52:24 +01:00
3045876a86 solved bug problem 2016-02-02 17:33:57 +01:00
8ca9157882 corrected checkout script 2016-02-02 11:37:40 +01:00
d0a38d203d Merge branch 'release' of git.psi.ch:sls_detectors_software/sls_detectors_package into release 2016-02-02 10:50:25 +01:00
b27e42f193 Merge branch 'release', remote branch 'origin' into release 2016-02-02 10:48:15 +01:00
0ce03226ee changed the checkout script to point to new remote repo 2016-02-02 10:42:59 +01:00
39c3a712e1 solved a bit, but not the create fiel problem 2016-02-01 17:57:43 +01:00
deb72feb91 still not resolved altho some changes 2016-01-19 14:39:58 +01:00
1477f67c4c eiger documentation 2016-01-15 14:39:02 +01:00
22cb739c7f start to update manuals for Eiger 2016-01-08 17:13:48 +01:00
09807aae49 Added slsReceiverScript and xterms 2015-12-16 16:14:18 +01:00
ff7a2d5185 Added slsReceiverScript and xterms 2015-12-15 16:31:18 +01:00
bb78d1af73 solved recover from root permission error 2015-12-15 11:59:17 +01:00
18eb1274c5 fixed fifodepth to return defualt size, also moved destroying and creating threads to fifostructure, had forgotten to override setnumberofframes calling fifostructure which is important for gotthard 2015-12-15 11:04:49 +01:00
0c28dcec4f added data structure file for m03 T mounting and data structure for m02 2015-12-03 10:17:26 +01:00
0f6fa37ca1 new default files 2015-12-02 16:50:03 +01:00
f16db2e6ca 10giga offset corrected 2015-12-02 09:39:16 +01:00
4dc8213cf6 added jungfrau settings directories 2015-12-01 16:46:07 +01:00
34508012a8 prevnumber is unsigned before bug 2015-12-01 16:39:01 +01:00
6498292ee4 max packets per file forgotten at 5 2015-11-27 17:09:33 +01:00
74b1baa9d8 solved packet loss problem 2015-11-27 17:07:57 +01:00
3b0e2e611c jungfrau works 2015-11-27 15:57:19 +01:00
a00df5da35 dummy value changed 2015-11-24 12:09:10 +01:00
a65ebbea99 merge to master 2015-11-23 12:40:24 +01:00
0d86439589 some cleanup for rest 2015-11-23 11:54:55 +01:00
8b0772abae got rid of memory leak when using gui 2015-11-19 14:21:04 +01:00
6600d82fc7 some small unimportant changes such as removign eiger header structure form generic socket and initializign differentlclients 2015-11-19 11:18:35 +01:00
995f28ca52 just minor edit changes 2015-11-17 15:27:52 +01:00
73f8d065b3 empty fifo at receiver start and comment waiting for packet 2015-11-17 12:27:18 +01:00
777f04331d implemented fifo depth configurable from client 2015-11-17 10:31:09 +01:00
003d0255c3 fifodepth def change, and listening packets count right 2015-11-16 11:48:50 +01:00
113e522399 refactoring and reducing overhead 2015-11-13 17:55:11 +01:00
c73d9f4103 merged and gotthard 2 det example 2015-11-13 17:44:24 +01:00
041bfc8992 remove cout 2015-11-13 15:46:42 +01:00
a6294a7737 default files 2015-11-13 12:12:40 +01:00
c2c428254e change eiger settings 2015-11-13 12:04:52 +01:00
4cf263027a change eiger setting dir 2015-11-13 11:51:17 +01:00
53f11c499d memory leak fixed 2015-11-12 13:49:09 +01:00
24438419d5 some changes for memory leak 2015-11-11 15:09:37 +01:00
0627668090 some changes for memory leak 2015-11-11 15:08:50 +01:00
455c9c5c80 some changes for memory leak 2015-11-09 17:16:24 +01:00
98ab99c53f fixed a bug of both threads not popping out(due to wrong frame packet) and end of acquisition wrongly inferred 2015-11-06 11:23:50 +01:00
667c1c0304 some small changes 2015-11-05 12:05:31 +01:00
0841467dc9 added xmap and ymap in moench02Ctb.h 2015-11-04 12:26:00 +01:00
e9f51e2ef5 put in the changes by Andrea to make it as static and remove as many destructors bugs 2015-11-02 17:33:10 +01:00
f77b78b5c6 changes to compile server in defs file 2015-11-02 15:55:15 +01:00
63507840e0 merging with master 2015-10-30 12:16:33 +01:00
5c5e2edbf9 done 2015-10-29 17:45:24 +01:00
1c9d01ea1c done 2015-10-29 17:39:47 +01:00
b5b7e7e529 done 2015-10-29 17:38:31 +01:00
4c85a27f10 done 2015-10-29 17:34:19 +01:00
963717215f done 2015-10-29 17:23:39 +01:00
9b449009ff log 2015-10-29 13:33:24 +01:00
eb5f481faa detector type bug fix 2015-10-29 11:21:57 +01:00
db54fbddde detector type bug fix 2015-10-29 11:20:08 +01:00
58bfa296be done 2015-10-28 17:40:55 +01:00
eee739625f Modified config_gen script 2015-10-28 11:08:19 +01:00
5f3de2057c df 2015-10-27 14:33:26 +01:00
837d0dce03 dsg 2015-10-27 09:31:08 +01:00
6d6725c4e8 df 2015-10-21 11:03:57 +02:00
8f66d63b08 Added config file generation tool 2015-10-20 16:16:49 +02:00
253383331f vg 2015-10-19 16:06:54 +02:00
169a91b6ac some 2015-10-16 10:47:21 +02:00
4fce397d20 eiger calibration files 2015-10-15 12:13:35 +02:00
a3e12e7955 somewhere 2015-10-15 12:11:06 +02:00
f141624477 again 2015-10-14 09:11:40 +02:00
5ac37c2154 some more 2015-10-13 15:22:30 +02:00
e915245c10 additional change 2015-10-08 17:09:43 +02:00
a3e88f96d6 some more changes 2015-10-08 12:19:07 +02:00
92b73e0e88 Merge branch 'partial_frames' into cleanup 2015-10-02 14:22:41 +02:00
9148f6365e changed last packet value literal to expression, not big in functionality 2015-10-02 12:05:16 +02:00
c392348def big change half done 2015-09-30 11:40:39 +02:00
a9958e3791 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_receiver_software 2015-09-24 10:53:59 +02:00
a4dfa6165a 4 bitand 32 bit mode for partial_frames offline analysis should work now 2015-09-23 17:01:06 +02:00
06b38e591c got rid of warnings 2015-09-23 12:34:21 +02:00
2f8a036b5e works for 16 and 8bit offline 2015-09-23 11:35:40 +02:00
102162ac1a made compatible to subframe in gui for partial_frame 2015-09-22 16:41:00 +02:00
7c0430572b included subframe into receiver and sends to gui 2015-09-22 16:21:41 +02:00
71cd046bed small change to ensure no crash at wrong frame read 2015-09-22 12:16:42 +02:00
8aed690113 doesnt crash at frame number 0 2015-09-22 11:56:37 +02:00
22ba839ad5 commenting out unnecessary lines 2015-09-22 11:39:33 +02:00
30b83861a4 10g partial_frames should also work now 2015-09-17 12:34:17 +02:00
5a4dfd128d 10g partial_frames should also work now 2015-09-17 12:29:16 +02:00
b3012acea2 bug fixxed for 10g writing filter, still debug mode 2015-09-17 12:03:11 +02:00
1b471bc675 partial_frames for 10g bug fixed specifzing literal 1024 for allowed packet size in startwritign 2015-09-17 09:14:00 +02:00
c7017eef5b 10g gui bottom offset bug fix 2015-09-15 15:41:58 +02:00
5368103efa 10g gui bottom offset bug fix 2015-09-15 15:40:54 +02:00
fe76ce9650 seems to run fine, only 16gb checked for fimware v 10 and software version v1.10.2 2015-09-15 15:31:29 +02:00
572b6fe29f f 2015-09-10 14:05:10 +02:00
4dba6d746d Merge branch 'master' into partial_frames 2015-09-10 13:08:01 +02:00
03c41a759f should work for 10g now 2015-09-04 17:40:13 +02:00
2ff8364aa8 some default calibration files for eiger 2015-09-04 15:57:17 +02:00
04578f7c69 added subframe exposure time settable 2015-09-03 15:17:31 +02:00
9dee6d41bd should work for 8 and 16 bit eiger 2015-09-03 12:05:25 +02:00
74366b3cfe halfway into new server 2015-09-03 12:00:37 +02:00
442e857bb3 some changes to receiver defs 2015-08-28 11:00:07 +02:00
ed1dc77bb3 some changes to receiver defs 2015-08-28 10:56:24 +02:00
41a4a9b611 some changes for 8 and 16 bit 2015-08-26 10:28:39 +02:00
b2c443af42 bug with 8 bit and 16 bt mode 2015-08-26 10:28:10 +02:00
9f55e8bfdd merging with master 2015-08-21 14:47:07 +02:00
0a0dfb2dc6 fixed problem with increasing file descriptor when connecting to receiver 2015-08-21 14:11:38 +02:00
8f6b8a8474 forgot to commit earlier 2015-08-21 10:54:14 +02:00
e732dbbeab should work properly 2015-08-21 10:05:29 +02:00
4813d7b598 should work properly 2015-08-21 10:04:55 +02:00
a29da27a42 works without problems except bottom doesnt get much for acquire 2015-08-20 17:36:41 +02:00
8d7445d347 changed startframeindex to 1 as thats whats written to file in eiger 2015-08-20 10:17:36 +02:00
587d357f3e resetting frame index for scans for eiger 2015-08-19 15:47:24 +02:00
5dd5c250f3 removing unnecessary prints 2015-08-19 14:55:15 +02:00
e8a5f81083 moving to fix another branch 2015-08-19 14:32:08 +02:00
80f33997d4 almost works test stage still 2015-08-17 15:37:28 +02:00
2950af9be1 need to chek 2015-08-13 14:46:57 +02:00
35cd736c4c nothing much, made it more compatible 2015-08-10 15:12:32 +02:00
0800e07315 partial frames shows missing packet when you map values 2015-08-10 15:11:45 +02:00
1e817c138f nothing much 2015-08-10 14:57:24 +02:00
0a24778ff8 missing packets should work now 2015-08-10 14:45:43 +02:00
52f83b9249 do not push, debug commands involved 2015-08-10 13:44:57 +02:00
e3d61d7020 do not push, debug commands involved 2015-08-10 13:42:58 +02:00
d2f53aaf64 bugs 2015-08-07 12:06:10 +02:00
6d0ee4e738 Merge branch 'master' into partial_frames 2015-08-05 12:08:44 +02:00
a4a0ea508e proper freeng after udpsocket shutdown 2015-08-05 12:08:28 +02:00
53cf4a7f67 Merge branch 'master' into partial_frames 2015-08-05 09:12:10 +02:00
a26cbced57 corrected 10g mapping for gui 2015-08-05 09:11:50 +02:00
4fbfe186ef done 2015-08-04 15:20:00 +02:00
902ab36705 almost done 2015-08-03 16:29:59 +02:00
d766d1ff37 merge with 10g fix from master 2015-07-30 12:00:38 +02:00
c0f2e5c6c2 onepacketsize not consistent for 10g bug fix 2015-07-30 11:00:36 +02:00
d49da66dae almost done with changes 2015-07-30 10:42:10 +02:00
e9a301dd97 merge master into partial_Frames, including changes of propix 2015-07-29 10:23:35 +02:00
fa156f337e sorta done without missing packet identifiers 2015-07-28 18:15:09 +02:00
f970baf1b8 write and copy to gui left 2015-07-27 12:36:45 +02:00
b4a540b6c2 propix settigns file added 2015-07-21 16:34:11 +02:00
4e52096991 included propix receiver 2015-07-21 16:25:56 +02:00
878c12d43e still long way to go 2015-07-21 13:36:14 +02:00
26a42d8f67 new way 2015-07-17 13:29:23 +02:00
ca9f195f0b starting of a new change 2015-07-16 13:33:34 +02:00
476d1b452f some changes 2015-07-10 16:04:29 +02:00
fbfafb98fd small change 2015-07-03 16:10:04 +02:00
88e96d45e7 getting dr from rxr fixed 2015-06-30 17:21:45 +02:00
3600fb6304 git rev in 2015-06-29 16:57:16 +02:00
4ebc9dffac git rev in 2015-06-29 16:55:26 +02:00
ceba5b8331 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_detector_calibration 2015-06-29 16:53:37 +02:00
51bd146178 flip bytes incorporated 2015-06-29 16:52:52 +02:00
90340d76b4 lookup table for the IR intensity 2015-06-26 16:55:38 +02:00
2a719390cb adding script for gifs 2015-06-26 16:32:10 +02:00
7e02a9d3d1 resolved flip bytes in eiger 2015-06-26 15:57:28 +02:00
47d51674b4 resolved flip bytes in eiger 2015-06-26 15:57:10 +02:00
49ef6659d4 eiger dynamic range offline header, moved eiger specific stuff from slsDetectorData to eigerHalfmodule 2015-06-26 15:45:38 +02:00
1f9f474670 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_detector_calibration 2015-06-26 11:53:01 +02:00
9041c48bbf offline headers for dynamic range, fixed port to be same 1 bit always 2015-06-26 11:52:17 +02:00
237c5286ca includes dynamic range in offline headers for eiger 2015-06-26 11:49:26 +02:00
b820ae0cad checkFrameNumber added to moench03 read data 2015-06-23 11:03:49 +02:00
92e1029fec Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_detector_calibration 2015-06-23 09:15:46 +02:00
1941ecb3c3 Adedde sturctures for moench03 10Gb data 2015-06-23 09:15:23 +02:00
23a21b373e modified readMoench03 by Marco 2015-06-18 14:16:43 +02:00
e16cda9509 fix a typo and makefile 2015-06-17 17:30:41 +02:00
aa94f2f7be write headers is compulsory for eiger and shouldnt be in makefile 2015-06-16 16:28:53 +02:00
8b282e3bbe write headers is compulsory for eiger 2015-06-16 16:28:24 +02:00
9a61841ac7 git version update 2015-06-16 12:00:02 +02:00
bcf8d40fd2 minor changes, but posted semaphore in stop receiver so rxr not waiting forever for gui when it will never come 2015-06-12 17:46:50 +02:00
d69c6df9ce 32 bit mode image reconstuction should work for frame numbers as well 2015-06-11 13:33:18 +02:00
67628c74e1 removed all the scripts for just gitall 2015-06-11 12:35:53 +02:00
aa29f12bb8 removed all the scripts for just gitall 2015-06-11 12:34:44 +02:00
13b35b319c removed all the scripts for just gitall 2015-06-11 12:34:15 +02:00
aca95703a9 tiny changes 2015-06-11 11:42:44 +02:00
a4de9a914a added a function to give frame number while reading next frame 2015-06-11 11:38:10 +02:00
b27f691d03 Revert "Solved merge conflicts"
This reverts commit c222221d18bd5db7d9a8c86071fe2fbdc0ce25ac.
2015-06-11 11:30:40 +02:00
28ed7d6b2d Solved merge conflicts 2015-06-11 11:25:49 +02:00
fdaca88225 includes 32 bit subframes 2015-06-10 13:26:51 +02:00
849d0de5cb not much valuable change 2015-06-10 12:23:38 +02:00
7046d2ad6e fixed merge 2015-05-28 14:46:46 +02:00
88ec090ee6 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_detector_calibration
Conflicts:
	slsDetectorData.h
2015-05-28 14:29:45 +02:00
7e8cf810fb main in moenchReadDataMT [multi threading] 2015-05-28 14:28:17 +02:00
4f88e831c4 checks if receiver udp object was created before executing functions and hence always returns a ret 2015-05-26 17:01:42 +02:00
cb51de145b Merge branch 'startlater' 2015-05-26 12:31:51 +02:00
99196aa272 ignore 16 byte messages 2015-05-26 12:08:21 +02:00
ee8b0b2ee7 knowing which repo 2015-05-22 10:22:53 +02:00
c840305189 starting receiver only at set detector type works 2015-05-21 17:39:17 +02:00
2cd2dbadc0 included scripts for diff and status 2015-05-21 11:18:04 +02:00
bbcd984df0 mapping of bottom and top for all bit modes work 2015-05-19 10:12:57 +02:00
92dfb366f6 gemma offline reading works 2015-05-19 10:12:09 +02:00
49b0dce727 not significant 2015-05-13 10:30:39 +02:00
11f6d883be Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_receiver_software 2015-05-12 14:28:48 +02:00
d9809925af debugging statements 2015-05-12 14:28:13 +02:00
992a298abc added dunny implementation as an example to combine TCPIP interface and custom UDP reciever 2015-04-21 15:09:50 +02:00
0c2bd83e96 moved getchannel back to slsdetectordata as it doesnt work for eiger 2015-04-15 15:49:52 +02:00
83a766914f not necessary merge 2015-04-15 14:48:27 +02:00
6b38ad10d1 eiger mapping of top 2015-04-15 14:43:37 +02:00
5731ead4cb eiger top mapping done. bottom doesnt work 2015-04-15 14:38:32 +02:00
a513ff2c79 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_receiver_software 2015-04-15 10:16:44 +02:00
1f6c5c26b4 eiger mapping for 32 bit done 2015-04-14 17:13:09 +02:00
15bbb099d3 for mapping 32 bit eiger 2015-04-14 17:11:56 +02:00
6cd28165ca top image reconstruct works with make flga 2015-04-10 17:11:26 +02:00
904462b582 xmap, ymap added again to slsDetectorData 2015-04-01 13:04:27 +02:00
48d672b918 Moved eiger related stuff from slsDetectorData to eigerHalfModule data, added xmap and ymap to slsDetectorData calss 2015-03-31 15:07:53 +02:00
db4e6ea678 still messing up 2015-03-31 14:50:45 +02:00
3c363d82e8 messing up while updating and merging 2015-03-31 14:45:45 +02:00
b5e8c104db printouts for eigermapping 2015-03-31 14:45:41 +02:00
5e59c86d72 Jungfrau10ModuleData modified 2015-03-31 14:41:06 +02:00
e35867227f writing frame number to the file for eiger 2015-03-30 17:16:31 +02:00
70c98a663d eiger mapping done 2015-03-27 17:42:23 +01:00
1611dde9d4 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_detectors_package 2015-03-25 15:37:31 +01:00
24bcb04372 included flag for eiger fifo debug 2015-03-25 15:37:07 +01:00
7924989fb1 some more changes for eiger mapping 2015-03-25 15:14:03 +01:00
9b11df1c31 a trial version of eiger mapping data 2015-03-24 10:42:22 +01:00
248848c666 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_receiver_software 2015-03-24 09:49:41 +01:00
1df89d4ce2 test 2015-03-23 11:41:19 +01:00
9e78bae614 solved bad_alloc 2015-03-23 11:18:24 +01:00
c9269d0f21 included a cstring include for compilation in slsReceiverData.h 2015-03-16 17:53:54 +01:00
36191396b2 added pull.sh and fetch.sh 2015-03-13 13:35:40 +01:00
89ad2112c6 difference between acquisition index and frame index 2015-03-12 12:25:23 +01:00
6063c712f7 copy first frame to latest data no matter what and also copy only if more than packets per frame 2015-03-10 15:04:50 +01:00
cd67991357 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_receiver_software 2015-03-06 10:43:22 +01:00
c7aea8f2a6 Some changes for the JCTB software 2015-03-06 10:43:05 +01:00
2f82469531 fifo debug with color done 2015-03-05 15:21:12 +01:00
985b4d71b4 Added jungfrau1.0 data structure (bad) and added xmap, ymap and getPixel method to the slsDetectorData base class 2015-03-05 13:04:31 +01:00
5682a6b458 moved startframeindice to before stop listening for gotthard 2015-02-25 10:34:57 +01:00
3ee146a2ca moved start of frame to after stoplistening, for eiger to ignore incomplete frames 2015-02-24 16:19:33 +01:00
651a13f811 so that gui can reread the same frame from receiver, guidataready is set to zero only once 2015-02-23 15:25:06 +01:00
8a79e94fa8 Added draft of moench02 JCTB data 2015-02-20 11:39:35 +01:00
59c3d26c96 added script ot checkout 2015-02-18 13:48:08 +01:00
e3e7b3a885 eiger settings files 2015-02-13 15:29:11 +01:00
6d8fcaa423 debugging output change 2015-02-13 11:58:36 +01:00
1e55577fc2 no change 2015-02-10 16:54:39 +01:00
c5f8067735 Merge branch 'dhanya_devel' 2015-02-10 16:44:57 +01:00
bea1791b4d initializing variables and copying ot gui only full frames 2015-02-10 12:21:31 +01:00
5735aff30c Added Moench03 common mode and photon finder/pedestal funcs 2015-02-10 10:15:16 +01:00
e975a75be9 some code refraction to get rid of memeory leakage 2015-02-04 16:11:13 +01:00
7fd12f97b4 some unnecessary printouts 2015-01-30 16:49:30 +01:00
f30833a460 got rid of unnecessary printouts in receiver 2015-01-30 15:03:35 +01:00
2b248eb793 unnecessary long wait in receiver 2015-01-30 10:58:30 +01:00
05755617f4 possibility of reading images, pedestal etc. for moench03 implemented 2015-01-29 11:20:24 +01:00
02a69a0a6c moench03Ctb data structure and readout funcs added 2015-01-27 17:34:20 +01:00
76c9d2c61b lot of couts and some pre and post 2015-01-14 10:48:36 +01:00
169c0a43ce updating version numbers 2014-12-08 10:25:42 +01:00
f79f3cf021 makefile crash if files dont exist in make clean, fixed 2014-12-08 09:17:56 +01:00
dc4e74087d makefile crash if files dont exist in make clean, fixed 2014-12-08 09:16:19 +01:00
294a8a3098 no change 2014-12-04 11:20:15 +01:00
52d3140a3a a version of receiver for gemma with bottom 2014-12-02 10:12:00 +01:00
6787c2e1e0 got rid of unnecessary usleep before transmitting in receiver 2014-12-01 17:18:26 +01:00
bc79546e4e changes for eiger to compensate for 16 bytes and return while at the same time works for first frame being less than expected :266240 2014-11-28 14:29:09 +01:00
5b2a896ed3 to return if it catches only 16 bytes or less than expected, but compensates for first frame being only 266240 for eiger 2014-11-28 14:28:56 +01:00
9ad65bc374 First commit 2014-11-27 09:30:14 +01:00
1d5580b0d4 JMCB max frames 2014-11-25 11:54:54 +01:00
4770d74c12 return even if eiger got only 16 bytes of a packet 2014-11-18 17:29:12 +01:00
2eaefaba3a added log level control 2014-11-18 10:51:52 +01:00
3921dc2bf8 added DEBUG flags
added REST, DEBUG description in make help
2014-11-18 10:50:38 +01:00
a2fdcce711 fixed non-rest compilation 2014-11-17 17:06:50 +01:00
9a43fb4082 put REST=no as default 2014-11-17 15:59:11 +01:00
f36d742cd3 Merge branch 'eiger_receiver' of gitorious.psi.ch:sls_det_software/sls_receiver_software into eiger_receiver 2014-11-17 15:52:43 +01:00
769f9b7e76 Merge branch 'master' into eiger_receiver 2014-11-17 14:59:41 +01:00
cc6ee10e10 added a temp eiger setup file in settingsdir 2014-11-17 14:48:35 +01:00
3324667d05 proper thread handling for the REST receiver 2014-11-12 11:54:48 +01:00
72bf64ff57 cleaning 2014-11-11 17:02:04 +01:00
7c51b06777 Merge branch 'master' into eiger_receiver
Conflicts:
	include/slsReceiverTCPIPInterface.h
	slsReceiver/slsReceiver.cpp
	src/UDPStandardImplementation.cpp
	src/slsReceiverTCPIPInterface.cpp

it compiles
2014-11-11 15:54:12 +01:00
eb0ca1c944 commented overloaded data members 2014-11-07 16:02:28 +01:00
3a07f0d785 fixed dr bug 2014-11-07 15:49:06 +01:00
9ec5541b58 removed hardcoded DR and nframes 2014-11-07 14:43:17 +01:00
8a63e7e184 added log printouts. Added hardcoded REST configuration 2014-11-05 11:44:00 +01:00
a690e4d830 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_receiver_software 2014-10-27 12:01:54 +01:00
72ba2ae901 offset added to receiver funcs 2014-10-27 12:01:29 +01:00
b85490b528 the version given to esrf 2014-10-16 14:14:20 +02:00
cd3a502167 Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_receiver_software 2014-10-15 09:22:40 +02:00
f2dddd88cd JUNGFRAU detector type added 2014-10-15 09:22:17 +02:00
e94e678f7d receiver bottom module included, and image reconstruction works for all bit modes, receiver still for a half module each, although two of them combined to make one module image 2014-10-14 15:42:32 +02:00
1679977cad some eiger setup file changes 2014-10-06 10:56:01 +02:00
665401669e udpport2 module 2014-09-26 11:19:26 +02:00
546d43dedb Merge branch 'eiger_receiver' of gitorious.psi.ch:sls_det_software/sls_receiver_software into eiger_receiver
Conflicts:
	include/UDPInterface.h
2014-09-22 14:46:34 +02:00
f05248cd32 fixes 2014-09-22 14:09:31 +02:00
e5864d4343 Added status resetting for REST 2014-09-22 11:45:01 +02:00
b427452f39 able to send data to eigerbe
tweaks on logging

added configuration_map, to flexibly pass options to the different receivers

some more fixes to method overloads

still very preliminary
2014-09-17 15:56:27 +02:00
5cfe7b4338 32 bit image, and 32 bit mode frame number for eiger fixed, startframeindex included in readframe for all det in tcpip class 2014-09-16 16:29:36 +02:00
cfacc6ad6e modified to support REST receiver, still not properly working 2014-09-15 16:52:53 +02:00
4971e26d7b modified Makefiles to support REST interface 2014-09-15 16:51:59 +02:00
7986746194 from private to protected 2014-09-15 16:33:57 +02:00
03b04bca74 Merge branch 'eiger_receiver' of gitorious.psi.ch:sls_det_software/sls_detectors_package into eiger_receiver
Conflicts:
	Makefile
2014-09-12 16:18:34 +02:00
388f96c046 Makefile updates 2014-09-12 16:16:10 +02:00
e0ee1fb386 fixed bug in config reading; added printout in MAkefile 2014-09-12 16:09:43 +02:00
102f9a2d05 updating Makefile 2014-09-12 13:46:48 +02:00
eb1f9db9af added build dir 2014-09-12 13:25:01 +02:00
50d049539e minor 2014-09-10 10:17:36 +02:00
3e0f618fbe cleaning 2014-09-10 10:09:29 +02:00
ce0b32b558 Merge branch 'eiger_receiver' into devel_leo
Conflicts:
	Makefile
	include/UDPInterface.h
	slsReceiver/Makefile
	slsReceiver/eigerReceiver/eigerReceiver.cpp
	slsReceiver/eigerReceiver/eigerReceiverDummy.cpp
	slsReceiver/eigerReceiver/eigerReceiverTest.cpp
2014-09-10 10:07:33 +02:00
59fc6fbaf8 moved .h into include. Second round of cleaning 2014-09-10 09:39:11 +02:00
3d08fc3e58 update gitignore 2014-09-10 09:20:49 +02:00
27780d02d8 cleaning the project 2014-09-10 09:19:35 +02:00
dc04efbbb1 working logger! 2014-09-09 18:13:31 +02:00
811bac16ec trying to make it work... 2014-09-09 17:16:51 +02:00
c2b885f230 version 2014-09-09 17:01:43 +02:00
c62594c7ab added REST and Standard implementations 2014-09-09 16:38:27 +02:00
51b610e32a added logger 2014-09-09 16:37:35 +02:00
59980a4b90 beginning of reimplementation of the REST interface 2014-09-09 15:46:58 +02:00
5641101705 added logger 2014-09-08 16:01:18 +02:00
87efbf764e cleaning 2014-09-08 11:45:52 +02:00
9a7e45aa56 cleaning 2014-09-08 11:45:33 +02:00
9489cb8040 moved config reading to utilities.h
using GetOpt for CLI option reading
2014-09-08 11:44:58 +02:00
dc6045a14c first factory-based version compiling, still very very preliminary 2014-09-05 16:54:32 +02:00
68dfe6f6a6 added old (workaround) EigerReceiver. Still not using slsReceiverBase 2014-08-05 11:08:11 +02:00
b50da5b198 updated makefile for eiger receiver 2014-08-05 11:05:24 +02:00
3e36b603f9 receiver nth frame and acquisition indices for eiger 2014-07-31 12:13:15 +02:00
91c0a083b3 argv, argc moved from tcpip interface to slsReceiver 2014-07-25 10:28:56 +02:00
4f04fc5457 removed callbacks from tcpip interface 2014-07-18 12:57:10 +02:00
b957cae85f added receiver interface, have not separated from eigerDummyReceiver yet 2014-07-18 12:27:32 +02:00
4814fd56c1 slsdetectorcalibration is a repository on its own 2014-07-16 15:34:58 +02:00
fd6bf1d34b added slsdetectorcalibration to gitignore 2014-07-16 10:44:53 +02:00
8b119f58ee switching master branch with separate_receiver branch
Merge branch 'master' into separate_receiver
2014-07-14 14:28:36 +02:00
b388d08dbe eiger dac settings 2014-07-11 16:59:09 +02:00
bbb0a05fca incorporating ten giga into the receiver 2014-07-11 12:53:53 +02:00
e11da6fd5b eiger dac files updated with dac units instead of mV 2014-07-11 12:51:42 +02:00
baac5df54e Julia's first test :) 2014-07-03 14:47:30 +02:00
b5193b9bc3 no change 2014-07-03 14:03:31 +02:00
34f3ba80f5 git ignore added 2014-07-03 13:59:11 +02:00
8369153d60 eiger receiver, receiving many packets at a time, with 16,8, 4 bitmode sort of working 2014-07-02 10:51:13 +02:00
5f82381b1e eiger gui works and can read frames, other gui functionalities not implemented 2014-06-18 16:35:34 +02:00
3a71049f1c added multiple listenign threads to incorporate multiple eiger ports, refactored the code a little bit 2014-06-16 16:53:36 +02:00
c922005f07 git version history 2014-06-03 13:56:16 +02:00
21a3b68d81 git version history 2014-06-03 12:06:57 +02:00
3d9071a0bb git version history 2014-06-03 12:03:37 +02:00
d133d7eb8f some changes on the eiger receiver side 2014-05-28 18:06:00 +02:00
4677f19437 separate receiver, and updated docs 2014-05-26 17:07:55 +02:00
90f5fb39db started receiver start on a separate thread and returns, whereas stop receiver will end udp, tcp socket and exit thread 2014-05-23 18:28:42 +02:00
1f2c98b0fa included the stop for receiver users, and the start returns 2014-05-23 18:24:52 +02:00
567501c6f7 included the stop receiver function for the users 2014-05-23 14:50:11 +02:00
75db3914f2 included more options in user client example, included these in the Makefile 2014-05-23 14:46:54 +02:00
188697b6da included more options in user client example, included these in the Makefile 2014-05-23 14:46:15 +02:00
6a3ee7fa77 receiverusers link corrected in manual 2014-05-22 14:03:08 +02:00
490830c94c no change really 2014-05-22 11:13:22 +02:00
abab3e53ad calibration wizards temp make solution 2014-05-21 15:16:31 +02:00
d2d5b23f7b calibration wizards temp make solution 2014-05-21 15:14:17 +02:00
af89269c0c ignoring binaries 2014-05-21 10:41:33 +02:00
a754b7928b dded bin to gitignore 2014-05-21 10:35:17 +02:00
81d863110c included exectuable folder and eclipse files in ignore 2014-05-21 10:30:05 +02:00
8c72246ce7 new separate receiver 2014-05-21 09:59:37 +02:00
96481b2b25 changes to create the new receiver 2014-05-20 16:56:51 +02:00
34598e9ff2 empty commit
new file:   .gitignore
	modified:   Makefile
2014-05-19 12:14:52 +02:00
c352fbec21 reverted singlephotondetector and slreceiverdata
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@51 113b152e-814d-439b-b186-022a431db7b5
2014-04-10 12:48:55 +00:00
f8aeb91752 put in the myroot1 definition
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@50 113b152e-814d-439b-b186-022a431db7b5
2014-04-10 09:08:13 +00:00
2eb798840d root sls
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@73 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2014-04-09 15:57:09 +00:00
9b05e59ebc git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@49 113b152e-814d-439b-b186-022a431db7b5 2014-04-08 14:17:49 +00:00
9297b14500 Jungfrau stuff updated
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@48 113b152e-814d-439b-b186-022a431db7b5
2014-04-08 12:42:57 +00:00
61781748bb Makefile sala refined
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@72 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2014-04-07 15:49:06 +00:00
0f881677d2 quite moenchTree creator for first nanoscope beamtime
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@47 113b152e-814d-439b-b186-022a431db7b5
2014-04-05 09:39:32 +00:00
d364374892 sala Makefile
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@71 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2014-04-01 10:01:46 +00:00
e1db8224c3 included over write functions in eiger class
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@70 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2014-03-25 15:57:10 +00:00
fb40e2236e changes from pcmoench01
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@46 113b152e-814d-439b-b186-022a431db7b5
2014-03-19 17:02:17 +00:00
98c0bd163e included without root writing
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@45 113b152e-814d-439b-b186-022a431db7b5
2014-03-07 12:07:40 +00:00
eee5f7f743 gotthard works for short frame
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@44 113b152e-814d-439b-b186-022a431db7b5
2014-02-20 13:24:52 +00:00
44fb8230cf gotthard compression works..without shortframe
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@43 113b152e-814d-439b-b186-022a431db7b5
2014-02-18 16:36:46 +00:00
26003dc867 added gotthard specific instructions
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@42 113b152e-814d-439b-b186-022a431db7b5
2014-02-13 10:53:30 +00:00
0a86011998 git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@41 113b152e-814d-439b-b186-022a431db7b5 2014-02-06 15:45:08 +00:00
b90287e724 New: jungfrau02CommonMode.h. Some extra documentation for Jungfrau.
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@40 113b152e-814d-439b-b186-022a431db7b5
2014-02-06 15:38:26 +00:00
6b7d0d8c55 readJungfrauData works
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@39 113b152e-814d-439b-b186-022a431db7b5
2014-02-06 10:46:11 +00:00
0e0ab98cd9 git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@38 113b152e-814d-439b-b186-022a431db7b5 2014-02-06 10:43:38 +00:00
835fa04a30 added script to read jungfrau data
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@37 113b152e-814d-439b-b186-022a431db7b5
2014-02-06 10:27:50 +00:00
8c2ed9dcf4 jungfrau classes not work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@36 113b152e-814d-439b-b186-022a431db7b5
2014-02-06 09:54:10 +00:00
a70b13d849 testing jungfrau stuff
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@35 113b152e-814d-439b-b186-022a431db7b5
2014-02-05 11:31:49 +00:00
33aee60ab6 now it should work also with jungfrau bis
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@34 113b152e-814d-439b-b186-022a431db7b5
2014-02-05 10:45:00 +00:00
02c85d4638 now it should work also with jungfrau
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@33 113b152e-814d-439b-b186-022a431db7b5
2014-02-05 10:43:14 +00:00
71c66775cc added Jungrfau02 - does not really work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@32 113b152e-814d-439b-b186-022a431db7b5
2014-02-05 10:35:29 +00:00
dd26dccde4 some modifications and demos
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@31 113b152e-814d-439b-b186-022a431db7b5
2014-02-04 11:25:33 +00:00
f3e58f95ea quadrant finding moved to singlePhotnDetector class
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@30 113b152e-814d-439b-b186-022a431db7b5
2014-02-03 13:58:07 +00:00
fea8670994 some modifications
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@29 113b152e-814d-439b-b186-022a431db7b5
2014-02-03 12:48:57 +00:00
d9a5e7e2a5 got rid of unncessary printouts
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@28 113b152e-814d-439b-b186-022a431db7b5
2014-01-30 17:51:11 +00:00
50acdf5628 filter runs from 1..159
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@27 113b152e-814d-439b-b186-022a431db7b5
2014-01-29 12:52:21 +00:00
849c5eb190 multi threadet version of moenchReadData
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@26 113b152e-814d-439b-b186-022a431db7b5
2014-01-29 11:27:02 +00:00
5c245d6c62 git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@25 113b152e-814d-439b-b186-022a431db7b5 2014-01-24 08:01:51 +00:00
c74ecc7894 git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@24 113b152e-814d-439b-b186-022a431db7b5 2014-01-24 08:01:15 +00:00
fa060c5dc0 dummy change
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@23 113b152e-814d-439b-b186-022a431db7b5
2014-01-21 09:24:24 +00:00
cbf781aba3 dummy change
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@22 113b152e-814d-439b-b186-022a431db7b5
2014-01-21 09:23:53 +00:00
37a52ebd32 read all photon data
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@21 113b152e-814d-439b-b186-022a431db7b5
2014-01-20 16:34:49 +00:00
4d71f07cde more debugging with moench
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@20 113b152e-814d-439b-b186-022a431db7b5
2014-01-20 16:16:08 +00:00
df64805059 bug in photon finder and memory leak corrected
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@19 113b152e-814d-439b-b186-022a431db7b5
2014-01-20 13:47:10 +00:00
e9d58fdee7 included cal lib
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@69 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2014-01-16 10:06:35 +00:00
0d0b1fd389 commented define myroot1 insinglephotondetector.h
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@18 113b152e-814d-439b-b186-022a431db7b5
2014-01-16 09:57:29 +00:00
facbce62cf Some bug fixes to slsReceiverData
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@17 113b152e-814d-439b-b186-022a431db7b5
2014-01-14 13:46:21 +00:00
574f9cf566 common mode
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@16 113b152e-814d-439b-b186-022a431db7b5
2014-01-07 13:39:25 +00:00
22f20507db Some improved documentation
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@15 113b152e-814d-439b-b186-022a431db7b5
2013-12-16 16:01:20 +00:00
0287f3c8a9 Installation instructions updated with subbestions by Andrea Parenti (DESY)
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@68 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-12-16 10:59:40 +00:00
4111c65e37 doxygen configuration file added
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@14 113b152e-814d-439b-b186-022a431db7b5
2013-12-16 09:48:16 +00:00
8d09f061da some doxy comments added
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@13 113b152e-814d-439b-b186-022a431db7b5
2013-12-12 16:05:24 +00:00
1ae2d78bf5 general funcs for pedestal subtraction, common mode, photon finding developed and implemented specifically for moench
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@12 113b152e-814d-439b-b186-022a431db7b5
2013-12-11 09:56:09 +00:00
01f87cff96 added general class to detect photons
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@11 113b152e-814d-439b-b186-022a431db7b5
2013-12-09 10:26:50 +00:00
b8462e24ef common mode subtraction now works for moench - bad channel mask added to the data structure
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@10 113b152e-814d-439b-b186-022a431db7b5
2013-12-04 11:12:13 +00:00
cf3e3db83e gotthard example set up shouldnt hve probes
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@67 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-11-29 11:57:21 +00:00
dc15bccaa6 some debugging of the post processing funcs
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@66 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-11-27 11:18:20 +00:00
4f7c6f633f common mode subtraction implemented
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@9 113b152e-814d-439b-b186-022a431db7b5
2013-11-25 11:03:04 +00:00
37196f14ca moenchReadData with ttree overwiting previous versions
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@8 113b152e-814d-439b-b186-022a431db7b5
2013-11-06 11:13:25 +00:00
957c73e200 Generalized moenchReadData to generate tree and cluster histos file
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@7 113b152e-814d-439b-b186-022a431db7b5
2013-11-06 11:10:01 +00:00
c562fff78b generalized several funcs for hit finding and looping over meonch data
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@6 113b152e-814d-439b-b186-022a431db7b5
2013-10-24 11:47:48 +00:00
b652a8560d moench multithread tree maker
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@5 113b152e-814d-439b-b186-022a431db7b5
2013-10-18 14:42:38 +00:00
b5992ed5b8 moench Tree Maker added
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@4 113b152e-814d-439b-b186-022a431db7b5
2013-10-18 12:26:31 +00:00
11abebfe7e moench data classes
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@3 113b152e-814d-439b-b186-022a431db7b5
2013-10-18 08:20:55 +00:00
6a1ffaeda0 added slsDetectorData class to readout (analog) detectors
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@2 113b152e-814d-439b-b186-022a431db7b5
2013-09-24 08:13:42 +00:00
7ca31b2a62 Classes, Libraries and Functions for Characterization and Calibration of SLS Detectors. First import.
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorCalibration@1 113b152e-814d-439b-b186-022a431db7b5
2013-09-19 14:30:30 +00:00
429c25142c small change
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@65 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-07-29 07:19:10 +00:00
bac70754cb added config file for 2 gotthard detectors
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@64 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-07-15 15:55:29 +00:00
7f2730e02d changed filenames to have detector number
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@63 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-07-10 15:56:55 +00:00
ac860afd19 fixed settings
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@62 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-06-21 14:19:41 +00:00
3ab9107b8e updated the eiger settings file to have everything in mV as we sent only int over network
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@61 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-06-19 09:26:39 +00:00
5639202dad changed gotthard settings file to have normal names which are checked when reading the settings file
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@60 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-06-17 13:20:45 +00:00
769566cf95 removed blank space in settings file in eiger
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@59 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-06-14 12:18:29 +00:00
e3509dc402 adding calibration to eiger
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@58 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-06-14 10:39:10 +00:00
453d9d9f92 updated eiger revision stuff
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@57 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-06-13 13:32:38 +00:00
419519a3d2 added some standard settings files for eiger
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@56 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-06-13 13:27:14 +00:00
708bc0134e removed settings and trimdir directories and only settingsdir for all detectors
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@55 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-05-16 14:35:45 +00:00
b86475a672 removed settings and trimdir directories and only settingsdir for all detectors
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@54 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-05-16 14:34:04 +00:00
a4a450f324 added moench to svn update
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@53 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-04-16 15:31:51 +00:00
ef3afe8b0f Added examples for client and receiver main
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@52 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-04-08 15:30:13 +00:00
c004e72fbb moved udpip before hostname for gotthard config
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@51 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-04-08 09:15:48 +00:00
c559a43262 static compilation now works
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@50 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-04-05 10:54:36 +00:00
31044e7567 slsReceiverUsers added to API documentation
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@49 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-04-04 15:16:33 +00:00
a19c989dd9 slsReceiverUsers added to API documentation
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@48 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-04-04 15:16:04 +00:00
8f4f778928 updated manual directory
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@47 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-01-28 16:23:26 +00:00
cff497337e added gotthard sample gotthard setup file as well
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@46 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-01-16 13:56:34 +00:00
4c9dfa564e changed gotthard config example
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@45 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-01-16 13:49:01 +00:00
b994e9d63f added rx_tcpport to examples
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@44 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2013-01-15 18:08:45 +00:00
f0ae4bfe31 removed exprtsoftware script outdated
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@43 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-19 17:08:39 +00:00
c9c8527bb4 included svn receiver in script
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@42 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-18 14:34:03 +00:00
c9a9d0103f versioning scripts now work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@41 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-17 15:40:30 +00:00
587c03b246 Added scripts to update version headers
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@40 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-17 14:56:01 +00:00
b573014a02 changed makefile since gui has a different fodlername
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@39 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-17 14:49:59 +00:00
67d3e34c08 changed makefile since its directory has changed relatively
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@38 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-17 14:35:34 +00:00
4a47657b9e using force to overwrite when exporting
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@37 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-17 08:21:17 +00:00
b4127fa31c gui svninfo added to script
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@36 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-14 13:45:23 +00:00
df144d90f1 added exportsoftware script which exports software and creates the svninfo.txt file for slsdetectorsoftware. others to be implemented
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@35 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-14 12:56:49 +00:00
824e4458ec removed docs from Makefile
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@34 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-13 11:38:08 +00:00
101c3b17ef examples directory with config files and scripts added
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@33 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-13 11:23:05 +00:00
3acf9bd469 docs
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@32 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-04 15:54:52 +00:00
c841c1111c test2
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@31 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-04 15:41:23 +00:00
2405c70805 some docs
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@30 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-12-04 15:36:02 +00:00
b32937f541 makefile again
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@29 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-11-22 08:29:19 +00:00
2ba3823c69 makefile changed
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@28 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-11-21 09:00:59 +00:00
bc1c3522d8 standard ch0 trimbit OK again
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@27 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-11-13 09:20:42 +00:00
4a8f89cea8 high gain trimbit OK again
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@26 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-11-13 09:20:24 +00:00
4f016db0c9 include gui in makefile,was commented out
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@25 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-11-13 08:38:42 +00:00
4d47efb847 changed slsDetectorReceiver to slsReceiver
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@24 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-10-24 13:11:31 +00:00
98945dce88 including receiver in makefile
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@23 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-10-24 12:34:14 +00:00
de6836493c Makefile adjusted for nonstatic
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@22 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-10-24 11:56:51 +00:00
f3ea217712 added instructions for the qt, qwt and root libraries
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@21 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-09-25 13:08:08 +00:00
1ffcbc5e6c command list added
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@20 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-09-25 12:35:09 +00:00
eb84dca0b4 make also takes care of the calibration wizards
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@19 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-09-25 12:23:49 +00:00
6988e11a44 make also takes care of the calibration wizards
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@18 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-09-25 12:19:41 +00:00
cc20af8d5d changed makefile to include guidir in clean
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@17 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-09-21 10:17:33 +00:00
0100eb1d0c makefile compiles also the GUI
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@16 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-09-21 08:45:43 +00:00
7a916df311 solved bug on retrieve detector setup?
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@15 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-06-19 13:32:51 +00:00
eadbd5c55c make file adjusted
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@14 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-06-15 08:00:49 +00:00
0ce9eb2dcb impplemented the possibility of setting the bad channels on a module basis
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@13 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-05-25 15:23:22 +00:00
098cd1939d added the slsDetectorAnalysis folder in include for Makefile for slsDetectorClient
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@12 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-04-04 09:33:57 +00:00
4535deae96 After the big changes...
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@11 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-04-03 15:31:27 +00:00
50224a3473 sls_detector binaries
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@10 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-03-15 12:46:16 +00:00
9d903f59ba changed the dacs of the settings for gotthard
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@9 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-01-17 10:52:48 +00:00
816fdee5a2 changed the dac values for all settings
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@8 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-01-17 10:48:41 +00:00
f67f0736b0 changed the dac values for gotthard in settings
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@7 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2012-01-13 13:54:24 +00:00
99854eec0f added highgain settings
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@6 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2011-11-28 11:18:25 +00:00
22eb152c27 settings
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@5 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2011-11-28 11:02:01 +00:00
193bb51247 gottharD: changed settings file
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@4 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2011-11-22 15:09:57 +00:00
be7ee15561 gotthard: changed the settings files
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@3 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2011-11-21 10:42:54 +00:00
09ef669f17 Gotthard software added to MAkefile and settings directory
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@2 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2011-10-13 11:41:48 +00:00
51f399f3ed first real import
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorsPackage@1 08cae9ef-cb74-4d14-b03a-d7ea46f178d7
2011-01-28 14:39:07 +00:00
374 changed files with 693262 additions and 134 deletions

10
.gitignore vendored Normal file
View File

@ -0,0 +1,10 @@
.cproject
.project
bin/
calibrationWizards/
slsDetectorGui/
slsDetectorSoftware/
slsReceiverSoftware/
slsDetectorCalibration/
slsImageReconstruction/
.settings

157
JCTBGui/JCTBGui.cpp Executable file
View File

@ -0,0 +1,157 @@
#include <TApplication.h>
#include <TColor.h>
#include <TStyle.h>
#include <TROOT.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include "multiSlsDetector.h"
#include "sls_detector_defs.h"
#include "sls_receiver_defs.h"
#include "jctbMain.h"
using namespace std;
int main(int argc, char **argv) {
string afname, cfname, pfname;
int id=0;
int af=0, cf=0, pf=0;
cout << " *** " << argc << endl;
for (int ia=0; ia<argc; ia++) {
if (strcmp(argv[ia],"-alias")==0) {
if (ia+1<argc) {
afname=argv[ia+1];
ia++;
af=1;
}
} else if (strcmp(argv[ia],"-config")==0) {
if (ia+1<argc) {
cfname=argv[ia+1];
ia++;
cf=1;
}
} else if (strcmp(argv[ia],"-par")==0) {
if (ia+1<argc) {
pfname=argv[ia+1];
ia++;
pf=1;
}
} else if (strcmp(argv[ia],"-id")==0) {
if (ia+1<argc) {
id=atoi(argv[ia+1]);
ia++;
}
}
}
cout << " *** " << endl;
/****** Create detector ****************/
multiSlsDetector *myDet=new multiSlsDetector(id);
myDet->setOnline(slsDetectorDefs::ONLINE_FLAG);
if (cf) {
myDet->readConfigurationFile(cfname);
} else
cout << "No config file specified" << endl;
cout << "Created multi detector id " << id << " hostname " << myDet->getHostname() << endl;
if (pf) {
myDet->retrieveDetectorSetup(pfname);
} else
cout << "No parameter file specified" << endl;
/***********Create GUI stuff *******************/
TApplication theApp("App",&argc,argv);
gStyle->SetDrawBorder(0);
gStyle->SetCanvasColor(kWhite);
gStyle->SetCanvasDefH(800);
gStyle->SetCanvasDefW(800);
gStyle->SetCanvasBorderMode(0);
gStyle->SetPadBorderMode(0);
gStyle->SetPaintTextFormat("5.2f");
gStyle->SetLineWidth(2);
gStyle->SetTextSize(1.1);
gStyle->SetLabelSize(0.04,"xy");
gStyle->SetTitleSize(0.05,"xy");
gStyle->SetTitleOffset(1.0,"x");
gStyle->SetTitleOffset(1.1,"y");
gStyle->SetPadTopMargin(0.15);
gStyle->SetPadRightMargin(0.15);
gStyle->SetPadBottomMargin(0.15);
gStyle->SetPadLeftMargin(0.15);
gStyle->SetLegendBorderSize(1);
gStyle->SetFrameBorderMode(0);
gStyle->SetFrameFillColor(kWhite);
// gStyle->SetLegendFillColor(kWhite);
gStyle->SetTitleFillColor(kWhite);
gStyle->SetFillColor(kWhite);
gStyle->SetStatFontSize(0.03);
gStyle->SetStatBorderSize(1);
gStyle->SetStatFormat("6.4g");
gStyle->SetStatX(0.95);
gStyle->SetStatY(0.95);
gStyle->SetStatW(0.2);
gStyle->SetStatH(0.2);
gStyle->SetTitleX(0.1);
gStyle->SetTitleY(0.95);
gStyle->SetTitleBorderSize(0);
gStyle->SetTitleFontSize(0.05);
gROOT->SetStyle("Default");
TColor::InitializeColors();
const Int_t NRGBs = 5;
const Int_t NCont = 90;
Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
Double_t red[NRGBs] = { 0.00, 0.00, 0.87, 1.00, 0.51 };
Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
Double_t blue[NRGBs] = { 0.51, 1.00, 0.12, 0.00, 0.00 };
TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
gStyle->SetNumberContours(NCont);
gROOT->ForceStyle();
jctbMain *mf=new jctbMain(gClient->GetRoot(),myDet);
cout << " *** " << argc << endl;
for (int ia=0; ia<argc; ia++)
cout << argv[ia] << endl;
cout << " *** " << endl;
if (af)
mf->loadAlias(afname);
else
cout << "no alias specified" << endl;
theApp.Run();
return 0;
}

29
JCTBGui/Makefile Executable file
View File

@ -0,0 +1,29 @@
SRC=jctbDict.cpp jctbMain.cpp jctbDacs.cpp jctbDac.cpp jctbPattern.cpp jctbSignals.cpp jctbSignal.cpp jctbAdcs.cpp jctbAcquisition.cpp
INCS=jctbSignals.h jctbSignal.h jctbPattern.h jctbDacs.h jctbDac.h jctbMain.h jctbAdcs.h jctbAcquisition.h
LINKDEF=jctbLinkDef.h
INCDIR=-I../slsReceiverSoftware/include/ -I../slsDetectorSoftware/multiSlsDetector/ -I../slsDetectorSoftware/slsDetector -I../slsDetectorSoftware/commonFiles -I../slsDetectorSoftware/slsDetectorAnalysis -I../slsDetectorSoftware/slsDetectorUsers -I../slsDetectorSoftware/usersFunctions
LDFLAG=-L../bin -lSlsDetector -L/usr/lib64/ -lpthread
MAIN=JCTBGui.cpp
DESTDIR?=../bin
all: $(DESTDIR)/JCTBGui
doc:
cd manual && make DESTDIR=$(DESTDIR)
htmldoc:
cd manual && make html DESTDIR=$(DESTDIR)
jctbDict.cpp: $(INCS) $(LINKDEF)
rootcint -f jctbDict.cpp -c $(INCS) $(LINKDEF)
$(DESTDIR)/JCTBGui: $(SRC) $(MAIN) $(LINKDEF) $(INCS)
g++ -DMYROOT `root-config --cflags --glibs` -lMinuit $(LDFLAG) -o JCTBGui $(INCDIR) $(SRC) $(MAIN)
mv JCTBGui $(DESTDIR)
clean:
rm -f JCTBGui *.o jctbDict.*

176
JCTBGui/example.alias Executable file
View File

@ -0,0 +1,176 @@
# this is a comment (every line starting with no keyword is such)
# space in label not allowed (tbf)
#BITX bitName plotFlag plotColorRGB (from 0!)
#BIT1 compTestOUT 1 2 #you can put comments also here (leave a space bef. #)
BIT1 compTestIN
BIT32 curON
BIT2 side_clk
BIT3 side_din
BIT4 clear_shr
BIT5 bottom_din
BIT6 bottom_clk
BIT7 gHF
BIT31 bypassCDS
BIT8 ENprechPRE
BIT9 res
BIT30 pulseOFF
BIT27 connCDS #INVERTED NAME to match logical behaviour, chipname disconnCDS
BIT24 Dsg_1
BIT25 Dsg_2
BIT23 Dsg_3
BIT10 sto0
BIT11 sto1
BIT12 sto2
BIT13 resCDS
BIT14 prechargeConnect
BIT15 pulse
BIT21 PCT_mode
BIT16 res_DGS
#BIT26 dbit1
#BIT27 dbit0
#CMOS_IN
#CMOS_IN1 out_DGS
#LVDS_IN
# now the names of ADC channels (lt. 12 characters)
ADC1 T_boa.(C)
ADC2 Va+
ADC3 Vdd_ps
ADC4 Vsh
ADC5 Vcc_int
ADC6 Vcc_iochip
ADC7 Vcc1.8A
ADC8 Vcc1.8D
ADC9 T_chip
ADC10 _nc
ADC11 _nc
ADC12 _Vcc_io # 0.068 ohm resistor
ADC13 _nc # 0.068 ohm resistor
ADC14 _Va # 0.068 ohm resistor
ADC15 _nc
ADC16 _vdd_ana
I1 _I_va(mA) # this values are computed as spec.
I1a 2 #by the following lines ((ADCa-ADCb)/R)
I1b 14 # all the values comes mainly from the adapter board
I1r 0.068
I2 _I_vdd(mA) #
I2a 3
I2b 16
I2r 0.068 #
I3 _nn
I3a 14
I3b 2
I3r 0.068
I4 _I_io(mA)
I4a 6
I4b 12
I4r 0.068 #shuld be 5000000 for mA readout
# now the names of DAC channels (lt. 12 characters)
DAC7 vbp_colbuf
DAC8 vIpreCDS
DAC9 vIpre
DAC10 VprechPre
DAC11 prechargeV
DAC12 ibias_SFP
DAC1 vcasc_SFP
DAC3 VPH
DAC4 VPL
DAC2 ibias_CS
DAC5 vrefDGS
DAC6 vIpreDGS
DAC1 vcascSFP
DAC13 s2d_vcascp
#POT1 s2d_vcascn
DAC14 vin_com
DAC15 vout_com
DAC16 vb_sda
# number (1-16) of the adc "reading" the pot controlled VR. (should be always 2)
DACFORPOTVR 2
#SCHEMATIC jungfrau01_ADP.pdf #those files are located in doc/ folder

228
JCTBGui/jctbAcquisition.cpp Executable file
View File

@ -0,0 +1,228 @@
#include <TGButtonGroup.h>
#include <TGNumberEntry.h>
#include <TGLabel.h>
#include <TList.h>
#include <TThread.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include "jctbAcquisition.h"
#include "multiSlsDetector.h"
#include "sls_detector_defs.h"
using namespace std;
jctbAcquisition::jctbAcquisition(TGVerticalFrame *page, multiSlsDetector *det) : TGGroupFrame(page,"Acquisition",kVerticalFrame), myDet(det) {
page->AddFrame(this,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
MapWindow();
TGHorizontalFrame *hframe=new TGHorizontalFrame(this, 800,50);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
hframe->MapWindow();
char tit[100];
cFileSave= new TGCheckButton(hframe, "Output file: ");
hframe->AddFrame(cFileSave,new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 5, 5, 5, 5));
cFileSave->MapWindow();
cFileSave->SetTextJustify(kTextRight);
cFileSave->Connect("Toggled(Bool_t)","jctbAcquisition",this,"setFsave(Bool_t)");
eFname = new TGTextEntry(hframe, (myDet->getFileName()).c_str());
hframe->AddFrame(eFname,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
eFname->MapWindow();
eFname->Resize(150,30);
eFname->Connect("ReturnPressed()","jctbAcquisition",this,"setFname()");
TGLabel *label=new TGLabel(hframe,"index: ");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
label->MapWindow();
label->SetTextJustify(kTextRight);
eFindex = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELNoLimits);
hframe->AddFrame( eFindex,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eFindex->MapWindow();
eFindex->Resize(150,30);
TGTextEntry *e= eFindex->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbAcquisition",this,"setFindex()");
hframe=new TGHorizontalFrame(this, 800,50);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
hframe->MapWindow();
label=new TGLabel(hframe,"Output directory: ");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
label->MapWindow();
label->SetTextJustify(kTextRight);
eOutdir = new TGTextEntry(hframe, (myDet->getFilePath()).c_str());
hframe->AddFrame(eOutdir,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
eOutdir->MapWindow();
eOutdir->Resize(150,30);
eOutdir->Connect("ReturnPressed()","jctbAcquisition",this,"setOutdir()");
hframe=new TGHorizontalFrame(this, 800,50);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
hframe->MapWindow();
bStatus=new TGTextButton(hframe, "Start");
hframe->AddFrame(bStatus,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
bStatus->MapWindow();
bStatus->Connect("Clicked()","jctbAcquisition",this,"toggleAcquisition()");
acqThread = new TThread("acqThread",
jctbAcquisition::ThreadHandle,(void*)this);
// acqThread->Run();
myDet->registerProgressCallback(&progressCallback,(void*)this);
myDet->registerDataCallback(&dataCallback, (void*)this);
}
int jctbAcquisition::dataCallback(detectorData *data, int index, void* pArgs) {
cout <<"------"<< index << " " << data->npoints << " "<< data->npy << endl;
}
void jctbAcquisition::setOutdir() {
myDet->setFilePath(eOutdir->GetText());
// // cout << "setting dac! "<< id << endl;
// myDet->setDAC(dacsEntry->GetIntNumber(), (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
// getValue();
}
void jctbAcquisition::setFname() {
myDet->setFileName(eFname->GetText());
// int val=myDet->setDAC(-1, (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
// char s[100];
// sprintf(s,"%d",val);
// dacsValue->SetText(s);
// return val;
}
void jctbAcquisition::setFindex() {
myDet->setFileIndex(eFindex->GetNumber());
}
void jctbAcquisition::setFsave(Bool_t b) {
myDet->enableWriteToFile(b);
eFname->SetState(b);
eOutdir->SetState(b);
}
void jctbAcquisition::update() {
eFname->SetText((myDet->getFileName()).c_str());
eOutdir->SetText((myDet->getFilePath()).c_str());
eFindex->SetNumber(myDet->getFileIndex());
cFileSave->SetOn(myDet->enableWriteToFile());
eFname->SetState(cFileSave->IsOn());
eOutdir->SetState(cFileSave->IsOn());
eFindex->SetState(cFileSave->IsOn());
}
void jctbAcquisition::toggleAcquisition() {
if (acqThread->GetState()==1 || acqThread->GetState()==6) {
bStatus->SetText("Stop");
acqThread->Run();
//myDet->startAcquisition();
StopFlag=0;
} else {
StopFlag=1;
myDet->stopAcquisition();
bStatus->SetText("Start");
// acqThread->Kill();
}
}
void jctbAcquisition::acquisitionFinished() {
bStatus->SetText("Start");
}
void jctbAcquisition::startAcquisition(){
cout << "Detector started " << endl;
myDet->acquire();
}
void* jctbAcquisition::ThreadHandle(void *arg)
{
jctbAcquisition *acq = static_cast<jctbAcquisition*>(arg);
int i=0;
acq->startAcquisition();
acq->acquisitionFinished();
// while(!(classInstance->StopFlag))
// {
// cout << "thread " << i++ << endl;
// usleep(100000);
// }
//myDet->readFrame();
}
int jctbAcquisition::progressCallback(double f,void* arg) {
// jctbAcquisition *acq = static_cast<jctbAcquisition*>(arg);
cout << "*********" << f << "*******" << endl;
}

60
JCTBGui/jctbAcquisition.h Executable file
View File

@ -0,0 +1,60 @@
#ifndef JCTBACQUISITION_H
#define JCTBACQUISITION_H
#include <TGFrame.h>
class TGTextEntry;
class TGLabel;
class TGNumberEntry;
class TGCheckButton;
class TThread;
class TGTextButton;
class multiSlsDetector;
class detectorData;
#include <string>
using namespace std;
class jctbAcquisition : public TGGroupFrame {
private:
TGTextEntry *eOutdir;
TGTextEntry *eFname;
TGNumberEntry *eFindex;
TGCheckButton *cFileSave;
TGTextButton *bStatus;
// TGTextButton
TThread *acqThread;
multiSlsDetector* myDet;
public:
jctbAcquisition(TGVerticalFrame*, multiSlsDetector*);
void setOutdir();
void setFname();
void setFsave(Bool_t);
void setFindex();
void toggleAcquisition();
static void* ThreadHandle(void *arg);
void update();
void acquisitionFinished();
void startAcquisition();
static int progressCallback(double,void*);
static int dataCallback(detectorData*, int, void*);
int StopFlag;
ClassDef(jctbAcquisition,0)
};
#endif

215
JCTBGui/jctbAdcs.cpp Executable file
View File

@ -0,0 +1,215 @@
#include <TApplication.h>
#include <TGClient.h>
#include <TCanvas.h>
#include <TF1.h>
#include <TRandom.h>
#include <TGButton.h>
#include <TRootEmbeddedCanvas.h>
#include <TGButtonGroup.h>
#include <TGNumberEntry.h>
#include <TGLabel.h>
#include <TList.h>
#include <TGFileDialog.h>
#include <TGComboBox.h>
#include <TH2F.h>
#include <TColor.h>
#include <TH1F.h>
#include <TGraphErrors.h>
#include <TGColorSelect.h>
#include <THStack.h>
#include <TGTab.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include "jctbAdcs.h"
#include "multiSlsDetector.h"
using namespace std;
jctbAdc::jctbAdc(TGVerticalFrame *page, int i, multiSlsDetector *det)
: TGHorizontalFrame(page, 800,800), id(i), myDet(det) {
TGHorizontalFrame *hframe=this;
char tit[100];
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
sprintf(tit, "ADC%d", id);
sAdcLabel= new TGLabel(hframe, tit);
hframe->AddFrame(sAdcLabel,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
sAdcLabel->MapWindow();
sAdcLabel->SetTextJustify(kTextLeft);
sAdcEnable= new TGCheckButton(hframe, "Enable");
hframe->AddFrame( sAdcEnable,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
sAdcEnable->MapWindow();
sAdcEnable->SetOn(kTRUE);
sAdcEnable->SetEnabled(kFALSE);
sAdcPlot= new TGCheckButton(hframe, "Plot");
hframe->AddFrame( sAdcPlot,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
sAdcPlot->MapWindow();
sAdcPlot->Connect("Toggled(Bool_t)","jctbAdc",this,"ToggledPlot(Bool_t)");
fColorSel = new TGColorSelect(hframe, id+1, 0);
hframe->AddFrame(fColorSel, new TGLayoutHints(kLHintsTop |
kLHintsLeft, 2, 0, 2, 2));
fColorSel->SetColor(TColor::Number2Pixel(id+1));
};
void jctbAdc::setAdcAlias(char *tit, int plot, int color) {
if (tit)
sAdcLabel->SetText(tit);
if (plot)
sAdcPlot->SetOn(kTRUE,kTRUE);
else
sAdcPlot->SetOn(kFALSE,kTRUE);
if (color>=0)
fColorSel->SetColor(color);
fColorSel->SetEnabled(sAdcPlot->IsOn());
}
string jctbAdc::getAdcAlias() {
char line[1000];
sprintf(line,"ADC%d %s %d %x\n",id,sAdcLabel->GetText()->Data(),sAdcPlot->IsOn(),fColorSel->GetColor());
return string(line);
}
void jctbAdc::update() {
}
void jctbAdc::ToggledPlot(Bool_t b){
Long_t mask=b<<id;
ToggledAdcPlot(mask);
fColorSel->SetEnabled(b);
}
void jctbAdc::ToggledAdcPlot(Int_t b){
Emit("ToggledAdcPlot(Int_t)", id);
}
jctbAdcs::jctbAdcs(TGVerticalFrame *page, multiSlsDetector *det)
: TGGroupFrame(page,"Adcs",kVerticalFrame), myDet(det) {
SetTitlePos(TGGroupFrame::kLeft);
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
MapWindow();
char tit[100];
TGHorizontalFrame* hframe=new TGHorizontalFrame(this, 800,800);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
int idac=0;
TGHorizontalFrame* hhframe=new TGHorizontalFrame(this, 800,800);
AddFrame(hhframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hhframe->MapWindow();
TGVerticalFrame *vframe;
for (idac=0; idac<NADCS; idac++) {
if (idac%16==0) {
vframe=new TGVerticalFrame(hhframe, 400,800);
hhframe->AddFrame(vframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
vframe->MapWindow();
}
sAdc[idac]=new jctbAdc(vframe,idac,myDet);
}
}
void jctbAdcs::update() {
;
}
int jctbAdcs::setAdcAlias(string line) {
int is=-1, plot=0, color=-1;
char tit[100];
int narg=sscanf(line.c_str(),"ADC%d %s %d %x",&is,tit,&plot, &color);
if (narg<2)
return -1;
if (narg!=3)
color=-1;
if (is>=0 && is<NADCS) {
sAdc[is]->setAdcAlias(tit,plot,color);
}
return is;
}
string jctbAdcs::getAdcAlias() {
ostringstream line;
for (int is=0; is<NADCS; is++)
line << sAdc[is]->getAdcAlias();
return line.str();
}

83
JCTBGui/jctbAdcs.h Executable file
View File

@ -0,0 +1,83 @@
#ifndef JCTBADCS_H
#define JCTBADCS_H
#include <TGFrame.h>
#define NADCS 32
class TRootEmbeddedCanvas;
class TGButtonGroup;
class TGVerticalFrame;
class TGHorizontalFrame;
class TGTextEntry;
class TGLabel;
class TGNumberEntry;
class TH2F;
class TGComboBox;
class TGCheckButton;
class TGColorSelect;
class THStack;
class TGraphErrors;
class TGTextButton;
class TGTab;
class TGraph;
class multiSlsDetector;
#include <string>
using namespace std;
class jctbAdc : public TGHorizontalFrame {
private:
TGLabel *sAdcLabel;
TGCheckButton *sAdcEnable;
TGCheckButton *sAdcPlot;
TGColorSelect *fColorSel;
TGraph *gADC;
int id;
multiSlsDetector *myDet;
public:
jctbAdc(TGVerticalFrame *page, int i, multiSlsDetector *det);
void setAdcAlias(char *tit, int plot, int color);
string getAdcAlias();
void ToggledAdcPlot(Int_t b);
void ToggledPlot(Bool_t b);
void update();
ClassDef(jctbAdc,0)
};
class jctbAdcs : public TGGroupFrame {
private:
jctbAdc *sAdc[NADCS];
multiSlsDetector *myDet;
public:
jctbAdcs(TGVerticalFrame *page, multiSlsDetector *det);
int setAdcAlias(string line);
string getAdcAlias();
void update();
ClassDef(jctbAdcs,0)
};
#endif

122
JCTBGui/jctbDac.cpp Executable file
View File

@ -0,0 +1,122 @@
#include <TGButtonGroup.h>
#include <TGNumberEntry.h>
#include <TGLabel.h>
#include <TList.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include "jctbDac.h"
#include "multiSlsDetector.h"
#include "sls_detector_defs.h"
using namespace std;
jctbDac::jctbDac(TGGroupFrame *page, int idac, multiSlsDetector *det) : TGHorizontalFrame(page, 800,50) , id(idac), myDet(det) {
TGHorizontalFrame *hframe=this;
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
MapWindow();
char tit[100];
sprintf(tit, "DAC %d:",idac);
dacsLabel= new TGLabel(hframe, tit);
hframe->AddFrame(dacsLabel,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
dacsLabel->MapWindow();
dacsLabel->SetTextJustify(kTextLeft);
dacsEntry = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 65535);
hframe->AddFrame(dacsEntry,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
dacsEntry->MapWindow();
dacsEntry->Resize(150,30);
dacsUnit= new TGCheckButton(hframe, "mV");
hframe->AddFrame( dacsUnit,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
dacsUnit->MapWindow();
sprintf(tit, "xxx");
dacsValue= new TGLabel(hframe, tit);
hframe->AddFrame( dacsValue,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
dacsValue->MapWindow();
dacsValue->SetTextJustify(kTextLeft);
TGTextEntry *e=dacsEntry->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbDac",this,"setValue()");
// cout << "(((((((((((((((((((((((((((((((" << dacsEntry->GetListOfSignals()->At(0)->IsA() << endl;
}
int jctbDac::setLabel(char *tit, int mv) {
if(tit)
dacsLabel->SetText(tit);
if (mv>0)
dacsUnit->SetOn(kTRUE,kTRUE);
else if (mv==0)
dacsUnit->SetOn(kFALSE,kTRUE);
return id;
}
string jctbDac::getLabel() {
ostringstream line;
line << "DAC" << dec << id << " " << dacsUnit->IsOn() << endl;
return line.str();
}
void jctbDac::setValue() {
// cout << "setting dac! "<< id << endl;
myDet->setDAC(dacsEntry->GetIntNumber(), (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
getValue();
}
int jctbDac::getValue() {
int val=myDet->setDAC(-1, (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
char s[100];
cout << "dac " << id << " " << val << endl;
sprintf(s,"%d",val);
dacsValue->SetText(s);
return val;
}

44
JCTBGui/jctbDac.h Executable file
View File

@ -0,0 +1,44 @@
#ifndef JCTBDAC_H
#define JCTBDAC_H
#include <TGFrame.h>
class TGTextEntry;
class TGLabel;
class TGNumberEntry;
class TGCheckButton;
class multiSlsDetector;
#include <string>
using namespace std;
class jctbDac : public TGHorizontalFrame {
private:
TGLabel *dacsLabel;
TGNumberEntry *dacsEntry;
TGCheckButton *dacsUnit;
TGLabel *dacsValue;
int id;
multiSlsDetector* myDet;
public:
jctbDac(TGGroupFrame*, int , multiSlsDetector*);
void setValue();
int getValue();
int setLabel(char *tit, int mv);
string getLabel();
ClassDef(jctbDac,0)
};
#endif

88
JCTBGui/jctbDacs.cpp Executable file
View File

@ -0,0 +1,88 @@
#include <stdio.h>
#include <iostream>
#include <fstream>
#include "jctbDac.h"
#include "jctbDacs.h"
#include "multiSlsDetector.h"
#include "sls_detector_defs.h"
using namespace std;
jctbDacs::jctbDacs(TGVerticalFrame *page, multiSlsDetector *det) : TGGroupFrame(page,"DACs",kVerticalFrame) , myDet(det){
SetTitlePos(TGGroupFrame::kLeft);
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
MapWindow();
// cout << "window mapped " << endl;
for (int idac=0; idac<NDACS; idac++) {
dacs[idac]=new jctbDac(this, idac, myDet);
}
}
int jctbDacs::setDacAlias(string line) {
int is=-1, mv=0;
char tit[100];
int narg=sscanf(line.c_str(),"DAC%d %s %d",&is,tit,&mv);
if (narg<2)
return -1;
if (is>=0 && is<NDACS)
dacs[is]->setLabel(tit,mv);
return is;
}
string jctbDacs::getDacAlias() {
ostringstream line;
for (int i=0; i<NDACS; i++)
line << dacs[i]->getLabel() << endl;
return line.str();
}
string jctbDacs::getDacParameters() {
ostringstream line;
for (int i=0; i<NDACS; i++) {
//line << "dacs:" << i << " " << dacs[i]->getValue << endl;
line << "dac:" << i << " " << dacs[i]->getValue() << endl;
}
return line.str();
}
void jctbDacs::update() {
for (int idac=0; idac<NDACS; idac++) {
dacs[idac]->getValue();
}
}

40
JCTBGui/jctbDacs.h Executable file
View File

@ -0,0 +1,40 @@
#ifndef JCTBDACS_H
#define JCTBDACS_H
#include <TGFrame.h>
#define NDACS 16
class multiSlsDetector;
class jctbDac;
#include <string>
using namespace std;
class jctbDacs : public TGGroupFrame {
private:
jctbDac *dacs[NDACS];
multiSlsDetector* myDet;
public:
jctbDacs(TGVerticalFrame *page, multiSlsDetector*);
int setDacAlias(string line);
string getDacAlias();
string getDacParameters();
void update();
ClassDef(jctbDacs,0)
};
#endif

4274
JCTBGui/jctbDict.cpp Executable file

File diff suppressed because it is too large Load Diff

98
JCTBGui/jctbDict.h Executable file
View File

@ -0,0 +1,98 @@
/********************************************************************
* jctbDict.h
* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED
* FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX().
* CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE.
********************************************************************/
#ifdef __CINT__
#error jctbDict.h/C is only for compilation. Abort cint.
#endif
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define G__ANSIHEADER
#define G__DICTIONARY
#define G__PRIVATE_GVALUE
#include "G__ci.h"
#include "FastAllocString.h"
extern "C" {
extern void G__cpp_setup_tagtablejctbDict();
extern void G__cpp_setup_inheritancejctbDict();
extern void G__cpp_setup_typetablejctbDict();
extern void G__cpp_setup_memvarjctbDict();
extern void G__cpp_setup_globaljctbDict();
extern void G__cpp_setup_memfuncjctbDict();
extern void G__cpp_setup_funcjctbDict();
extern void G__set_cpp_environmentjctbDict();
}
#include "TObject.h"
#include "TMemberInspector.h"
#include "jctbSignals.h"
#include "jctbSignal.h"
#include "jctbPattern.h"
#include "jctbDacs.h"
#include "jctbDac.h"
#include "jctbMain.h"
#include "jctbAdcs.h"
#include "jctbAcquisition.h"
#include <algorithm>
namespace std { }
using namespace std;
#ifndef G__MEMFUNCBODY
#endif
extern G__linked_taginfo G__jctbDictLN_TClass;
extern G__linked_taginfo G__jctbDictLN_TBuffer;
extern G__linked_taginfo G__jctbDictLN_TMemberInspector;
extern G__linked_taginfo G__jctbDictLN_TObject;
extern G__linked_taginfo G__jctbDictLN_string;
extern G__linked_taginfo G__jctbDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
extern G__linked_taginfo G__jctbDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__jctbDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
extern G__linked_taginfo G__jctbDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
extern G__linked_taginfo G__jctbDictLN_TGObject;
extern G__linked_taginfo G__jctbDictLN_TQObject;
extern G__linked_taginfo G__jctbDictLN_TGWindow;
extern G__linked_taginfo G__jctbDictLN_TGFrame;
extern G__linked_taginfo G__jctbDictLN_TGCompositeFrame;
extern G__linked_taginfo G__jctbDictLN_TGLayoutHints;
extern G__linked_taginfo G__jctbDictLN_iteratorlEbidirectional_iterator_tagcOTObjectmUcOlongcOconstsPTObjectmUmUcOconstsPTObjectmUaNgR;
extern G__linked_taginfo G__jctbDictLN_TGTextButton;
extern G__linked_taginfo G__jctbDictLN_TGVerticalFrame;
extern G__linked_taginfo G__jctbDictLN_TGHorizontalFrame;
extern G__linked_taginfo G__jctbDictLN_TGMainFrame;
extern G__linked_taginfo G__jctbDictLN_TGGroupFrame;
extern G__linked_taginfo G__jctbDictLN_TGNumberEntry;
extern G__linked_taginfo G__jctbDictLN_multiSlsDetector;
extern G__linked_taginfo G__jctbDictLN_jctbSignal;
extern G__linked_taginfo G__jctbDictLN_jctbSignals;
extern G__linked_taginfo G__jctbDictLN_TGTextEntry;
extern G__linked_taginfo G__jctbDictLN_TGLabel;
extern G__linked_taginfo G__jctbDictLN_TGCheckButton;
extern G__linked_taginfo G__jctbDictLN_TH1I;
extern G__linked_taginfo G__jctbDictLN_TGColorSelect;
extern G__linked_taginfo G__jctbDictLN_TRootEmbeddedCanvas;
extern G__linked_taginfo G__jctbDictLN_TGButtonGroup;
extern G__linked_taginfo G__jctbDictLN_TGTab;
extern G__linked_taginfo G__jctbDictLN_jctbLoop;
extern G__linked_taginfo G__jctbDictLN_jctbWait;
extern G__linked_taginfo G__jctbDictLN_jctbPattern;
extern G__linked_taginfo G__jctbDictLN_jctbDac;
extern G__linked_taginfo G__jctbDictLN_jctbDacs;
extern G__linked_taginfo G__jctbDictLN_TGMenuBar;
extern G__linked_taginfo G__jctbDictLN_TGPopupMenu;
extern G__linked_taginfo G__jctbDictLN_TGDockableFrame;
extern G__linked_taginfo G__jctbDictLN_jctbAdcs;
extern G__linked_taginfo G__jctbDictLN_jctbAcquisition;
extern G__linked_taginfo G__jctbDictLN_jctbMain;
extern G__linked_taginfo G__jctbDictLN_TGraph;
extern G__linked_taginfo G__jctbDictLN_jctbAdc;
extern G__linked_taginfo G__jctbDictLN_TThread;
extern G__linked_taginfo G__jctbDictLN_detectorData;
/* STUB derived class for protected member access */

11
JCTBGui/jctbLinkDef.h Executable file
View File

@ -0,0 +1,11 @@
#pragma link C++ class jctbMain;
#pragma link C++ class jctbDacs;
#pragma link C++ class jctbDac;
#pragma link C++ class jctbSignals;
#pragma link C++ class jctbSignal;
#pragma link C++ class jctbAdc;
#pragma link C++ class jctbAdcs;
#pragma link C++ class jctbLoop;
#pragma link C++ class jctbWait;
#pragma link C++ class jctbPattern;
#pragma link C++ class jctbAcquisition;

665
JCTBGui/jctbMain.cpp Executable file
View File

@ -0,0 +1,665 @@
#include <TApplication.h>
#include <TGClient.h>
#include <TCanvas.h>
#include <TF1.h>
#include <TRandom.h>
#include <TGButton.h>
#include <TRootEmbeddedCanvas.h>
#include <TGButtonGroup.h>
#include <TGNumberEntry.h>
#include <TGLabel.h>
#include <TList.h>
#include <TGFileDialog.h>
#include <TGComboBox.h>
#include <TH2F.h>
#include <TColor.h>
#include <TH1F.h>
#include <TGraphErrors.h>
#include <THStack.h>
#include <TGTab.h>
#include <TApplication.h>
#include <TGMenu.h>
#include <TGDockableFrame.h>
//#include <TGMenuBar.h>
//#include <TGPopupMenu.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include "multiSlsDetector.h"
#include "jctbMain.h"
#include "jctbDacs.h"
#include "jctbSignals.h"
#include "jctbPattern.h"
#include "jctbAdcs.h"
#include "jctbAcquisition.h"
using namespace std;
jctbMain::jctbMain(const TGWindow *p, multiSlsDetector *det)
: TGMainFrame(p,800,800) {
myDet=det;
Connect("CloseWindow()", "jctbMain", this, "CloseWindow()");
// fMenuDock = new TGDockableFrame(this);
// AddFrame(fMenuDock, new TGLayoutHints(kLHintsExpandX, 0, 0, 1, 0));
// fMenuDock->SetWindowName("GuiTest Menu");
fMenuBarLayout = new TGLayoutHints(kLHintsTop | kLHintsExpandX);
fMenuBarItemLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0);
fMenuBarHelpLayout = new TGLayoutHints(kLHintsTop | kLHintsRight);
fMenuFile = new TGPopupMenu(gClient->GetRoot());
int im=0;
fMenuFile->AddEntry("Open Alias", im++);
fMenuFile->AddEntry("Save Alias", im++);
fMenuFile->AddSeparator();
fMenuFile->AddEntry("Open Parameters", im++);
fMenuFile->AddEntry("Save Parameters", im++);
fMenuFile->AddSeparator();
fMenuFile->AddEntry("Open Configuration", im++);
fMenuFile->AddEntry("Save Configuration", im++);
fMenuFile->AddSeparator();
fMenuFile->AddEntry("Open Pattern", im++);
fMenuFile->AddEntry("Save Pattern", im++);
fMenuFile->AddSeparator();
fMenuFile->AddEntry("Exit", im++);
fMenuFile->Connect("Activated(Int_t)", "jctbMain", this,
"HandleMenu(Int_t)");
// fMenuFile->Connect("PoppedUp()", "TestMainFrame", this, "HandlePopup()");
// fMenuFile->Connect("PoppedDown()", "TestMainFrame", this, "HandlePopdown()");
// fCascade2Menu = new TGPopupMenu(gClient->GetRoot());
// fCascade2Menu->AddEntry("ID = 2&3", im++);
// fCascade2Menu->AddEntry("ID = 2&4", im++);
// fCascade2Menu->AddEntry("ID = 2&5", im++);
// fCascade1Menu = new TGPopupMenu(gClient->GetRoot());
// fCascade1Menu->AddEntry("ID = 4&1", 41);
// fCascade1Menu->AddEntry("ID = 4&2", 42);
// fCascade1Menu->AddEntry("ID = 4&3", 43);
// fCascade1Menu->AddSeparator();
// fCascade1Menu->AddPopup("Cascade&d 2", fCascade2Menu);
// fCascadeMenu = new TGPopupMenu(gClient->GetRoot());
// fCascadeMenu->AddEntry("ID = 5&1", 51);
// fCascadeMenu->AddEntry("ID = 5&2", 52);
// fCascadeMenu->AddEntry("ID = 5&3", 53);
// fCascadeMenu->AddSeparator();
// fCascadeMenu->AddPopup("&Cascaded 1", fCascade1Menu);
// fMenuTest = new TGPopupMenu(gClient->GetRoot());
// fMenuTest->AddLabel("Test different features...");
// fMenuTest->AddSeparator();
// fMenuTest->AddEntry("&Dialog...", im++);
// fMenuTest->AddEntry("&Message Box...", im++);
// fMenuTest->AddEntry("&Sliders...", im++);
// fMenuTest->AddEntry("Sh&utter...", im++);
// fMenuTest->AddEntry("&List Directory...", im++);
// fMenuTest->AddEntry("&File List...", im++);
// fMenuTest->AddEntry("&Progress...", im++);
// fMenuTest->AddEntry("&Number Entry...", im++);
// fMenuTest->AddEntry("F&ont Dialog...", im++);
// fMenuTest->AddSeparator();
// fMenuTest->AddEntry("Add New Menus", im++);
// fMenuTest->AddSeparator();
// fMenuTest->AddPopup("&Cascaded menus", fCascadeMenu);
// fMenuView = new TGPopupMenu(gClient->GetRoot());
// fMenuView->AddEntry("&Dock", im++);
// fMenuView->AddEntry("&Undock", im++);
// fMenuView->AddSeparator();
// fMenuView->AddEntry("Enable U&ndock", im++);
// fMenuView->AddEntry("Enable &Hide", im++);
// fMenuView->DisableEntry(im);
// fMenuDock->EnableUndock(kTRUE);
// fMenuDock->EnableHide(kTRUE);
// fMenuView->CheckEntry(im);
// fMenuView->CheckEntry(im);
// // When using the DockButton of the MenuDock,
// // the states 'enable' and 'disable' of menus have to be updated.
// fMenuDock->Connect("Undocked()", "TestMainFrame", this, "HandleMenu(=M_VIEW_UNDOCK)");
// fMenuHelp = new TGPopupMenu(gClient->GetRoot());
// fMenuHelp->AddEntry("&Contents", im++);
// fMenuHelp->AddEntry("&Search...", im++);
// fMenuHelp->AddSeparator();
// fMenuHelp->AddEntry("&About", im++);
// fMenuNew1 = new TGPopupMenu();
// fMenuNew1->AddEntry("Remove New Menus", im++);
// fMenuNew2 = new TGPopupMenu();
// fMenuNew2->AddEntry("Remove New Menus", im++);
// Menu button messages are handled by the main frame (i.e. "this")
// HandleMenu() method.
// fMenuFile->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fMenuFile->Connect("PoppedUp()", "TestMainFrame", this, "HandlePopup()");
// fMenuFile->Connect("PoppedDown()", "TestMainFrame", this, "HandlePopdown()");
// fMenuTest->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fMenuView->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fMenuHelp->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fCascadeMenu->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fCascade1Menu->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fCascade2Menu->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fMenuNew1->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
// fMenuNew2->Connect("Activated(Int_t)", "TestMainFrame", this,
// "HandleMenu(Int_t)");
TGVerticalFrame *vframe=new TGVerticalFrame(this, 800,1200); //main frame
fMenuBar = new TGMenuBar(vframe, 1, 1, kHorizontalFrame);
fMenuBar->AddPopup("&File", fMenuFile, fMenuBarItemLayout);
// fMenuBar->AddPopup("&Test", fMenuTest, fMenuBarItemLayout);
// fMenuBar->AddPopup("&View", fMenuView, fMenuBarItemLayout);
// fMenuBar->AddPopup("&Help", fMenuHelp, fMenuBarHelpLayout);
vframe->AddFrame(fMenuBar, fMenuBarLayout);
TGHorizontalFrame* hpage=new TGHorizontalFrame(vframe, 800,1200); //horizontal frame. Inside there should be the tab and the canvas
mtab=new TGTab(hpage, 1500, 1200); //tab!
// page=new TGVerticalFrame(mtab, 1500,1200);
TGCompositeFrame *tf = mtab->AddTab("DACs");
TGVerticalFrame *page=new TGVerticalFrame(tf, 1500,1200);
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
dacs=new jctbDacs(page, myDet);
tf = mtab->AddTab("Signals");
page=new TGVerticalFrame(tf, 1500,1200);
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
sig=new jctbSignals(page, myDet);
tf = mtab->AddTab("ADCs");
page=new TGVerticalFrame(tf, 1500,1200);
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
adcs=new jctbAdcs(page, myDet);
tf = mtab->AddTab("Pattern");
page=new TGVerticalFrame(tf, 1500,1200);
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
pat=new jctbPattern(page, myDet);
tf = mtab->AddTab("Acquisition");
page=new TGVerticalFrame(tf, 1500,1200);
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
acq=new jctbAcquisition(page, myDet);
hpage->AddFrame(mtab,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
vframe->AddFrame(hpage,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
AddFrame(vframe,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
vframe->MapWindow();
hpage->MapWindow();
mtab->MapWindow();
page->MapWindow();
// Sets window name and shows the main frame
SetWindowName("JCTB Gui");
MapSubwindows();
MapWindow();
Resize(1500,1200);
// // Creates widgets of the example
fEcanvas = new TRootEmbeddedCanvas ("Ecanvas",hpage,800,800);
fEcanvas->Resize();
fEcanvas->GetCanvas()->Update();
hpage->AddFrame(fEcanvas, new TGLayoutHints(kLHintsBottom | kLHintsCenterX | kLHintsExpandX | kLHintsExpandY, 10,10,10,10));
fEcanvas->MapWindow();
hpage->MapSubwindows();
mtab->Connect("Selected(Int_t)","jctbMain",this,"tabSelected(Int_t)");
tabSelected(0);
}
void jctbMain::CloseWindow() {
gApplication->Terminate();
}
void jctbMain::HandleMenu(Int_t id)
{
// Handle menu items.
switch (id) {
case 0: // fMenuFile->AddEntry("Open Alias", im++);
cout << "Open Alias" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
printf("Open file: %s (dir: %s)\n", fi.fFilename);
// dir = fi.fIniDir;
loadAlias(fi.fFilename);
}
break;
case 1: // fMenuFile->AddEntry("Save Alias", im++);
cout << "Save Alias" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
printf("Save file: %s (dir: %s)\n", fi.fFilename);
// dir = fi.fIniDir;
saveAlias(fi.fFilename);
}
break;
case 2: //fMenuFile->AddEntry("Open Parameters", im++);
cout << "Open Parameters" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
// dir = fi.fIniDir;
loadParameters(fi.fFilename);
}
break;
case 3: //fMenuFile->AddEntry("Save Parameters", im++);
cout << "Save Parameters" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
// dir = fi.fIniDir;
saveParameters(fi.fFilename);
}
break;
case 4: // fMenuFile->AddEntry("Open Configuration", im++);
cout << "Open configuration" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
// dir = fi.fIniDir;
}
break;
case 5: // fMenuFile->AddEntry("Save Configuration", im++);
cout << "Save configuration" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
// dir = fi.fIniDir;
}
break;
case 6: //fMenuFile->AddEntry("Open Pattern", im++);
cout << "Open pattern" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
// dir = fi.fIniDir;
}
break;
case 7: //fMenuFile->AddEntry("Save Pattern", im++);
cout << "Save pattern" << endl;
{
static TString dir(".");
TGFileInfo fi;
//fi.fFileTypes = filetypes;
fi.fIniDir = StrDup(dir);
printf("fIniDir = %s\n", fi.fIniDir);
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
// dir = fi.fIniDir;
}
break;
case 8: // fMenuFile->AddEntry("Exit", im++);
CloseWindow();
default:
printf("Menu item %d selected\n", id);
break;
}
}
int jctbMain::loadConfiguration(string fname) {
myDet->readConfigurationFile(fname);
// string line;
// int i;
// ifstream myfile (fname.c_str());
// if (myfile.is_open())
// {
// while ( getline (myfile,line) )
// {
// }
// myfile.close();
// }
// else cout << "Unable to open file";
return 0;
}
int jctbMain::saveConfiguration(string fname) {
string line;
int i;
ofstream myfile (fname.c_str());
if (myfile.is_open())
{
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
int jctbMain::loadParameters(string fname) {
myDet->retrieveDetectorSetup(fname);
// string line;
// int i;
// ifstream myfile (fname.c_str());
// if (myfile.is_open())
// {
// while ( getline (myfile,line) )
// {
// }
// myfile.close();
// }
// else cout << "Unable to open file";
return 0;
}
int jctbMain::saveParameters(string fname) {
string line;
int i;
ofstream myfile (fname.c_str());
if (myfile.is_open())
{
myfile << dacs->getDacParameters();
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
int jctbMain::loadAlias(string fname) {
string line;
int i;
ifstream myfile (fname.c_str());
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
// cout << line ;
if (sscanf(line.c_str(),"BIT%d",&i)>0) {
//cout << "*******" << line<< endl;
sig->setSignalAlias(line);
// cout << line ;
} else if (sscanf(line.c_str(),"DAC%d",&i)>0) {
dacs->setDacAlias(line);
// cout << "+++++++++" << line<< endl;
} else if (sscanf(line.c_str(),"ADC%d",&i)>0) {
adcs->setAdcAlias(line);
// cout << "---------" << line<< endl;
} // else
// cout << "<<<<<<<" << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
int jctbMain::saveAlias(string fname) {
string line;
int i;
ofstream myfile (fname.c_str());
if (myfile.is_open())
{
//while ( getline (myfile,line) )
// {
// cout << line ;
//if (sscanf(line.c_str(),"BIT%d",&i)>0) {
//cout << "*******" << line<< endl;
myfile << sig->getSignalAlias();
// cout << line ;
// } else if (sscanf(line.c_str(),"DAC%d",&i)>0) {
myfile << dacs->getDacAlias();
// cout << "+++++++++" << line<< endl;
// } else if (sscanf(line.c_str(),"ADC%d",&i)>0) {
myfile << adcs->getAdcAlias();
// cout << "---------" << line<< endl;
// } // else
// cout << "<<<<<<<" << line << endl;
//}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
void jctbMain::tabSelected(Int_t i) {
// cout << "Selected tab " << i << endl;
// cout << "Current tab is " << mtab->GetCurrent() << endl;
switch (i) {
case 0: //dacs
dacs->update();
break;
case 1: //signals
sig->update();
break;
case 2: //adcs
adcs->update();
break;
case 3: //pattern
pat->update();
break;
case 4: //acq
acq->update();
break;
default:
;
}
}

94
JCTBGui/jctbMain.h Executable file
View File

@ -0,0 +1,94 @@
#ifndef JCTBMAIN_H
#define JCTBMAIN_H
#include <TGFrame.h>
class TRootEmbeddedCanvas;
class TGButtonGroup;
class TGVerticalFrame;
class TGHorizontalFrame;
class TGTextEntry;
class TGLabel;
class TGNumberEntry;
class TH2F;
class TGComboBox;
class TGCheckButton;
class THStack;
class TGraphErrors;
class TGTextButton;
class TGTab;
class TGMenuBar;
class TGPopupMenu;
class TGDockableFrame;
class TGLayoutHints;
class jctbDacs;
class jctbSignals;
class multiSlsDetector;
class jctbPattern;
class jctbAdcs;
class jctbAcquisition;
#include <string>
using namespace std;
class jctbMain : public TGMainFrame {
private:
multiSlsDetector *myDet;
TRootEmbeddedCanvas *fEcanvas;
TRootEmbeddedCanvas *fModulecanvas;
TGButtonGroup *br;
TGTab *mtab;
jctbDacs *dacs;
jctbSignals *sig;
jctbAdcs *adcs;
jctbPattern *pat;
jctbAcquisition *acq;
TGDockableFrame *fMenuDock;
TGMenuBar *fMenuBar;
TGPopupMenu *fMenuFile, *fMenuTest, *fMenuView, *fMenuHelp;
TGPopupMenu *fCascadeMenu, *fCascade1Menu, *fCascade2Menu;
TGPopupMenu *fMenuNew1, *fMenuNew2;
TGLayoutHints *fMenuBarLayout, *fMenuBarItemLayout, *fMenuBarHelpLayout;
public:
jctbMain(const TGWindow *p, multiSlsDetector *det);
int loadAlias(string fname);
int saveAlias(string fname);
int loadParameters(string fname);
int saveParameters(string fname);
int loadConfiguration(string fname);
int saveConfiguration(string fname);
void tabSelected(Int_t);
void CloseWindow();
void HandleMenu(Int_t);
ClassDef(jctbMain,0)
};
#endif

532
JCTBGui/jctbPattern.cpp Executable file
View File

@ -0,0 +1,532 @@
#include <TApplication.h>
#include <TGClient.h>
#include <TCanvas.h>
#include <TF1.h>
#include <TRandom.h>
#include <TGButton.h>
#include <TRootEmbeddedCanvas.h>
#include <TGButtonGroup.h>
#include <TGNumberEntry.h>
#include <TGLabel.h>
#include <TList.h>
#include <TGFileDialog.h>
#include <TGComboBox.h>
#include <TH2F.h>
#include <TColor.h>
#include <TH1F.h>
#include <TGraphErrors.h>
#include <THStack.h>
#include <TGTab.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include "jctbPattern.h"
#include "multiSlsDetector.h"
using namespace std;
jctbLoop::jctbLoop(TGGroupFrame *page, int i, multiSlsDetector *det) : TGHorizontalFrame(page, 800,800), id(i), myDet(det) {
TGHorizontalFrame *hframe=this;
char tit[100];
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
MapWindow();
sprintf(tit, "Loop %d Repetitions: ", id);
TGLabel *label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eLoopNumber = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELNoLimits);
hframe->AddFrame( eLoopNumber,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eLoopNumber->MapWindow();
eLoopNumber->Resize(150,30);
TGTextEntry *e= eLoopNumber->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbLoop",this,"setNLoops()");
sprintf(tit, "Start Address: ");
label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eLoopStartAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 1024);
hframe->AddFrame( eLoopStartAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eLoopStartAddr->MapWindow();
eLoopStartAddr->Resize(150,30);
eLoopStartAddr->SetState(kFALSE);
label= new TGLabel(hframe, "Stop Address: ");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eLoopStopAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 1024);
hframe->AddFrame( eLoopStopAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eLoopStopAddr->MapWindow();
eLoopStopAddr->Resize(150,30);
eLoopStopAddr->SetState(kFALSE);
}
void jctbLoop::setNLoops() {
int start, stop, n;
start=-1;
stop=-1;
n=eLoopNumber->GetNumber();
myDet->setCTBPatLoops(id,start, stop,n);
}
void jctbLoop::update() {
int start, stop, n;
start=-1;
stop=-1;
n=-1;
myDet->setCTBPatLoops(id,start, stop,n);
eLoopStartAddr->SetHexNumber(start);
eLoopStopAddr->SetHexNumber(stop);
eLoopNumber->SetNumber(n);
}
jctbWait::jctbWait(TGGroupFrame *page, int i, multiSlsDetector *det) : TGHorizontalFrame(page, 800,800), id(i), myDet(det) {
char tit[100];
TGHorizontalFrame *hframe=this;
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
MapWindow();
sprintf(tit, "Wait %d (run clk): ", id);
TGLabel *label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eWaitTime = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELNoLimits);
hframe->AddFrame( eWaitTime,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eWaitTime->MapWindow();
eWaitTime->Resize(150,30);
TGTextEntry *e= eWaitTime->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbWait",this,"setWaitTime()");
sprintf(tit, "Wait Address: ");
label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eWaitAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 1024);
hframe->AddFrame( eWaitAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eWaitAddr->MapWindow();
eWaitAddr->Resize(150,30);
eWaitAddr->SetState(kFALSE);
}
void jctbWait::setWaitTime() {
Long64_t t=eWaitTime->GetNumber();
t=myDet->setCTBPatWaitTime(id,t);
}
void jctbWait::update() {
int start, stop, n, addr;
Long64_t t=-1;
t=myDet->setCTBPatWaitTime(id,t);
addr=myDet->setCTBPatWaitAddr(id,-1);
eWaitAddr->SetHexNumber(addr);
eWaitTime->SetNumber(t);
}
jctbPattern::jctbPattern(TGVerticalFrame *page, multiSlsDetector *det)
: TGGroupFrame(page,"Pattern",kVerticalFrame), myDet(det) {
SetTitlePos(TGGroupFrame::kLeft);
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
MapWindow();
char tit[100];
TGHorizontalFrame* hframe=new TGHorizontalFrame(this, 800,800);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
sprintf(tit, "ADC Clock Frequency (MHz): ");
TGLabel *label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eAdcClkFreq = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 40);
hframe->AddFrame( eAdcClkFreq,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eAdcClkFreq->MapWindow();
eAdcClkFreq->Resize(150,30);
TGTextEntry *e= eAdcClkFreq->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbPattern",this,"setAdcFreq()");
label= new TGLabel(hframe, " Phase (0.15ns step): ");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eAdcClkPhase = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 200);
hframe->AddFrame( eAdcClkPhase,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eAdcClkPhase->MapWindow();
eAdcClkPhase->Resize(150,30);
e= eAdcClkPhase->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbPattern",this,"setAdcPhase()");
hframe=new TGHorizontalFrame(this, 800,800);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
sprintf(tit, "Run Clock Frequency (MHz): ");
label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eRunClkFreq = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 160);
hframe->AddFrame( eRunClkFreq,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eRunClkFreq->MapWindow();
eRunClkFreq->Resize(150,30);
e= eRunClkFreq->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbPattern",this,"setRunFreq()");
label= new TGLabel(hframe, " Phase (0.15ns step): ");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eRunClkPhase = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 200);
hframe->AddFrame( eRunClkPhase,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eRunClkPhase->MapWindow();
eRunClkPhase->Resize(150,30);
e= eRunClkPhase->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbPattern",this,"setRunPhase()");
hframe=new TGHorizontalFrame(this, 800,800);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
sprintf(tit, "Number of frames: ");
label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eFrames = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELNoLimits);
hframe->AddFrame( eFrames,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eFrames->MapWindow();
eFrames->Resize(150,30);
e= eFrames->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbPattern",this,"setFrames()");
label= new TGLabel(hframe, " Period (s): ");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
ePeriod = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELNoLimits);
hframe->AddFrame( ePeriod,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
ePeriod->MapWindow();
ePeriod->Resize(150,30);
e= ePeriod->TGNumberEntry::GetNumberEntry();
e->Connect("ReturnPressed()","jctbPattern",this,"setPeriod()");
hframe=new TGHorizontalFrame(this, 800,800);
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
sprintf(tit, "Start Address: ");
label= new TGLabel(hframe, tit);
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eStartAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 1024);
hframe->AddFrame( eStartAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eStartAddr->MapWindow();
eStartAddr->Resize(150,30);
eStartAddr->SetState(kFALSE);
label= new TGLabel(hframe, "Stop Address: ");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eStopAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELLimitMinMax,
0, 1024);
hframe->AddFrame( eStopAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eStopAddr->MapWindow();
eStopAddr->Resize(150,30);
eStopAddr->SetState(kFALSE);
int idac=0;
for (idac=0; idac<NLOOPS; idac++) {
eLoop[idac]=new jctbLoop(this,idac,myDet);
}
for (idac=0; idac<NWAITS; idac++) {
eWait[idac]=new jctbWait(this,idac,myDet);
}
}
void jctbPattern::update() {
int start, stop, n, addr;
Long_t t;
eAdcClkFreq->SetNumber(myDet->setSpeed(slsDetectorDefs::ADC_CLOCK,-1));
eRunClkFreq->SetNumber(myDet->setSpeed(slsDetectorDefs::CLOCK_DIVIDER,-1));
//ADC_PHASE
//PHASE_SHIFT
eFrames->SetNumber(myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,-1));
ePeriod->SetNumber(((Double_t)myDet->setTimer(slsDetectorDefs::FRAME_PERIOD,-1))*1E-9);
start=-1;
stop=-1;
n=-1;
myDet->setCTBPatLoops(-1,start, stop,n);
eStartAddr->SetHexNumber(start);
eStopAddr->SetHexNumber(stop);
for (int iloop=0; iloop<NLOOPS; iloop++) {
eLoop[iloop]->update();
}
for (int iwait=0; iwait<NWAITS; iwait++) {
eWait[iwait]->update();
}
}
void jctbPattern::setFrames() {
myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,eFrames->GetNumber());
}
void jctbPattern::setPeriod() {
myDet->setTimer(slsDetectorDefs::FRAME_PERIOD,eFrames->GetNumber()*1E9);
}
void jctbPattern::setAdcFreq() {
myDet->setSpeed(slsDetectorDefs::ADC_CLOCK,eAdcClkFreq->GetNumber());
}
void jctbPattern::setRunFreq() {
myDet->setSpeed(slsDetectorDefs::CLOCK_DIVIDER,eRunClkFreq->GetNumber());
}
void jctbPattern::setAdcPhase() {
myDet->setSpeed(slsDetectorDefs::ADC_PHASE,eAdcClkPhase->GetNumber());
}
void jctbPattern::setRunPhase() {
myDet->setSpeed(slsDetectorDefs::PHASE_SHIFT,eRunClkPhase->GetNumber());
}

124
JCTBGui/jctbPattern.h Executable file
View File

@ -0,0 +1,124 @@
#ifndef JCTBPATTERN_H
#define JCTBPATTERN_H
#include <TGFrame.h>
#define NLOOPS 3
#define NWAITS 3
#define NADCS 32
#define PATLEN 1024
class TRootEmbeddedCanvas;
class TGButtonGroup;
class TGVerticalFrame;
class TGHorizontalFrame;
class TGTextEntry;
class TGLabel;
class TGNumberEntry;
class TH2F;
class TGComboBox;
class TGCheckButton;
class THStack;
class TGraphErrors;
class energyCalibration;
class TGTextButton;
class TGTab;
class multiSlsDetector;
#include <string>
using namespace std;
class jctbLoop : public TGHorizontalFrame {
private:
TGNumberEntry *eLoopStartAddr;
TGNumberEntry *eLoopStopAddr;
TGNumberEntry *eLoopNumber;
int id;
multiSlsDetector *myDet;
public:
jctbLoop(TGGroupFrame *page, int i,multiSlsDetector *det);
void setNLoops();
void update();
ClassDef(jctbLoop,0)
};
class jctbWait : public TGHorizontalFrame {
private:
TGNumberEntry *eWaitAddr;
TGNumberEntry *eWaitTime;
int id;
multiSlsDetector *myDet;
public:
jctbWait(TGGroupFrame *page, int i,multiSlsDetector *det);
void setWaitTime();
void update();
ClassDef(jctbWait,0)
};
class jctbPattern : public TGGroupFrame {
private:
TGNumberEntry *eAdcClkFreq;
TGNumberEntry *eRunClkFreq;
TGNumberEntry *eAdcClkPhase;
TGNumberEntry *eRunClkPhase;
TGNumberEntry *eStartAddr;
TGNumberEntry *eStopAddr;
TGNumberEntry *eFrames;
TGNumberEntry *ePeriod;
jctbLoop *eLoop[NLOOPS];
jctbWait *eWait[NWAITS];
char pat[PATLEN*8];
multiSlsDetector *myDet;
public:
jctbPattern(TGVerticalFrame *page, multiSlsDetector *det);
void update();
void setAdcFreq();
void setRunFreq();
void setAdcPhase();
void setRunPhase();
void setFrames();
void setPeriod();
ClassDef(jctbPattern,0)
};
#endif

186
JCTBGui/jctbSignal.cpp Executable file
View File

@ -0,0 +1,186 @@
#include <TGButton.h>
#include <TRootEmbeddedCanvas.h>
#include <TGButtonGroup.h>
#include <TGNumberEntry.h>
#include <TGLabel.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <TColor.h>
#include <TGColorSelect.h>
#include "jctbSignal.h"
#include "multiSlsDetector.h"
using namespace std;
jctbSignal::jctbSignal(TGFrame *page, int i, multiSlsDetector *det)
: TGHorizontalFrame(page, 800,50), myDet(det), id(i), hsig(NULL) {
TGHorizontalFrame *hframe=this;
char tit[100];
sprintf(tit, "BIT%d ",id);
sLabel= new TGLabel(hframe, tit);
hframe->AddFrame( sLabel,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
sLabel->MapWindow();
sLabel->SetTextJustify(kTextLeft);
sOutput= new TGCheckButton(hframe, "Out");
hframe->AddFrame( sOutput,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
sOutput->MapWindow();
sOutput->Connect("Toggled(Bool_t)","jctbSignal",this,"ToggledOutput(Bool_t)");
sClock= new TGCheckButton(hframe, "Clk");
hframe->AddFrame( sClock,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
sClock->MapWindow();
sClock->Connect("Toggled(Bool_t)","jctbSignal",this,"ToggledClock(Bool_t)");
sPlot= new TGCheckButton(hframe, "Plot");
hframe->AddFrame( sPlot,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
sPlot->MapWindow();
sPlot->Connect("Toggled(Bool_t)","jctbSignal",this,"ToggledPlot(Bool_t)");
fColorSel = new TGColorSelect(hframe, id+1, 0);
hframe->AddFrame(fColorSel, new TGLayoutHints(kLHintsTop |
kLHintsLeft, 2, 0, 2, 2));
fColorSel->SetColor(TColor::Number2Pixel(id+1));
ToggledOutput(kFALSE);
if (id==63) {
sOutput->SetOn(kTRUE);
sClock->SetOn(kFALSE);
sOutput->SetEnabled(kFALSE);
sClock->SetEnabled(kFALSE);
}
}
int jctbSignal::setSignalAlias(char *tit, int plot, int col) {
if (tit)
sLabel->SetText(tit);
if (plot>0) {
sPlot->SetOn(kTRUE,kTRUE);
} else if (plot==0)
sPlot->SetOn(kFALSE,kTRUE);
if (col>=0)
fColorSel->SetColor(col);//TColor::Number2Pixel(col+1));
fColorSel->SetEnabled(sPlot->IsOn());
return 0;
}
string jctbSignal::getSignalAlias() {
ostringstream oss;
oss << "BIT" << dec << id << " " << sLabel->GetText()->Data() << " " << sPlot->IsOn() << hex << " " << fColorSel->GetColor() << endl;
return oss.str();
}
int jctbSignal::setOutput(Long64_t r) {
// cout << hex << r << dec <<endl;
Long64_t mask=((Long64_t)1<<id);
if (r&mask)
sOutput->SetOn(kTRUE,kTRUE);
else
sOutput->SetOn(kFALSE,kTRUE);
return sOutput->IsOn();
}
int jctbSignal::setClock(Long64_t r) {
Long64_t mask=((Long64_t)1<<id);
// cout << hex << r << dec <<endl;
if (r&mask)
sClock->SetOn(kTRUE,kTRUE);
else
sClock->SetOn(kFALSE,kTRUE);
return sClock->IsOn();
}
int jctbSignal::isClock() { sClock->IsOn();}
int jctbSignal::isOutput() { sOutput->IsOn();}
int jctbSignal::isPlot() { sPlot->IsOn();}
void jctbSignal::ToggledOutput(Bool_t b) {
Long_t mask=b<<id;
ToggledSignalOutput(b<<id);
if (b) {
sClock->SetEnabled(kTRUE);
sPlot->SetEnabled(kTRUE);
if ( sPlot->IsOn())
fColorSel->SetEnabled(kTRUE);
else
fColorSel->SetEnabled(kFALSE);
} else {
sClock->SetEnabled(kFALSE);
sPlot->SetEnabled(kFALSE);
fColorSel->SetEnabled(kFALSE);
}
}
void jctbSignal::ToggledClock(Bool_t b){
Long_t mask=b<<id;
ToggledSignalClock(mask);
}
void jctbSignal::ToggledPlot(Bool_t b){
Long_t mask=b<<id;
ToggledSignalPlot(mask);
fColorSel->SetEnabled(b);
}
void jctbSignal::ToggledSignalOutput(Int_t b) {
Emit("ToggledSignalOutput(Int_t)", id);
}
void jctbSignal::ToggledSignalClock(Int_t b){
Emit("ToggledSignalClock(Int_t)", id);
}
void jctbSignal::ToggledSignalPlot(Int_t b){
Emit("ToggledSignalPlot(Int_t)", id);
}

71
JCTBGui/jctbSignal.h Executable file
View File

@ -0,0 +1,71 @@
#ifndef JCTBSIGNAL_H
#define JCTBSIGNAL_H
#include <TGFrame.h>
class TGTextEntry;
class TGLabel;
class TGNumberEntry;
class TGCheckButton;
class TH1I;
class TGTextButton;
class TGColorSelect;
class multiSlsDetector;
#include <string>
using namespace std;
class jctbSignal : public TGHorizontalFrame {
// RQ_OBJECT("jctbSignal")
private:
TGLabel *sLabel;
TGCheckButton *sOutput;
TGCheckButton *sClock;
TGCheckButton *sPlot;
TGLabel *sValue;
TGNumberEntry *sEntry;
TGColorSelect *fColorSel;
multiSlsDetector *myDet;
Int_t id;
TH1I *hsig;
public:
jctbSignal(TGFrame *page, int i, multiSlsDetector *det);
int setSignalAlias(char *tit, int plot, int col);
string getSignalAlias();
TH1I *getPlot() {return hsig;};
int setOutput(Long64_t);
int setClock(Long64_t);
void ToggledOutput(Bool_t);
void ToggledClock(Bool_t);
void ToggledPlot(Bool_t);
int isClock();
int isOutput();
int isPlot();
void ToggledSignalOutput(Int_t); //*SIGNAL*
void ToggledSignalClock(Int_t); //*SIGNAL*
void ToggledSignalPlot(Int_t); //*SIGNAL*
ClassDef(jctbSignal,0)
};
#endif

257
JCTBGui/jctbSignals.cpp Executable file
View File

@ -0,0 +1,257 @@
#include <TApplication.h>
#include <TGClient.h>
#include <TCanvas.h>
#include <TF1.h>
#include <TRandom.h>
#include <TGButton.h>
#include <TRootEmbeddedCanvas.h>
#include <TGButtonGroup.h>
#include <TGNumberEntry.h>
#include <TGLabel.h>
#include <TList.h>
#include <TGFileDialog.h>
#include <TGComboBox.h>
#include <TH2F.h>
#include <TColor.h>
#include <TH1F.h>
#include <TGraphErrors.h>
#include <THStack.h>
#include <TGTab.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include "jctbSignals.h"
#include "jctbSignal.h"
#include "multiSlsDetector.h"
using namespace std;
#define DEFAULTFN "run_0.encal"
jctbSignals::jctbSignals(TGVerticalFrame *page, multiSlsDetector *det)
: TGGroupFrame(page,"IO Signals",kVerticalFrame), myDet(det) {
SetTitlePos(TGGroupFrame::kLeft);
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
MapWindow();
cout << "window mapped " << endl;
TGHorizontalFrame *hframe;
char tit[100];
TGHorizontalFrame* hhframe=new TGHorizontalFrame(this, 800,800);
AddFrame(hhframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hhframe->MapWindow();
TGVerticalFrame *vframe;
int idac=0;
for (idac=0; idac<NIOSIGNALS; idac++) {
if (idac%27==0) {
vframe=new TGVerticalFrame(hhframe, 400,800);
hhframe->AddFrame(vframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
vframe->MapWindow();
}
signals[idac]=new jctbSignal(vframe,idac,myDet);
signals[idac]->Connect(" ToggledSignalOutput(Int_t)","jctbSignals",this,"ToggledOutReg(Int_t)");
signals[idac]->Connect(" ToggledSignalClock(Int_t)","jctbSignals",this,"ToggledClockReg(Int_t)");
signals[idac]->Connect(" ToggledSignalPlot(Int_t)","jctbSignals",this,"ToggledPlot(Int_t)");
vframe->AddFrame(signals[idac],new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
signals[idac]->MapWindow();
}
idac=63;
signals[idac]=new jctbSignal(vframe,idac,myDet);
vframe->AddFrame(signals[idac],new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
signals[idac]->MapWindow();
sprintf(tit,"ADC Latch");
signals[idac]->setSignalAlias(tit,-1,-1);
signals[idac]->Connect(" ToggledSignalOutput(Int_t)","jctbSignals",this,"ToggledOutReg(Int_t)");
signals[idac]->Connect(" ToggledSignalClock(Int_t)","jctbSignals",this,"ToggledClockReg(Int_t)");
signals[idac]->Connect(" ToggledSignalPlot(Int_t)","jctbSignals",this,"ToggledPlot(Int_t)");
hframe=new TGHorizontalFrame(vframe, 800,50);
vframe->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
TGLabel *label= new TGLabel(hframe, "IO Control Register");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eIOCntrlRegister = new TGNumberEntry(hframe, 0, 16,999, TGNumberFormat::kNESHex,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELNoLimits);
hframe->AddFrame(eIOCntrlRegister,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eIOCntrlRegister->MapWindow();
eIOCntrlRegister->Resize(150,30);
hframe=new TGHorizontalFrame(vframe, 800,50);
vframe->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
hframe->MapWindow();
label= new TGLabel(hframe, "Clock Control Register");
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
label->MapWindow();
label->SetTextJustify(kTextLeft);
eClkCntrlRegister = new TGNumberEntry(hframe, 0, 16,999, TGNumberFormat::kNESHex,
TGNumberFormat::kNEANonNegative,
TGNumberFormat::kNELNoLimits);
hframe->AddFrame(eClkCntrlRegister,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eClkCntrlRegister->MapWindow();
eClkCntrlRegister->Resize(150,30);
eIOCntrlRegister->SetState(kFALSE);
eClkCntrlRegister->SetState(kFALSE);
}
int jctbSignals::setSignalAlias(string line) {
int is=-1, plot=0, col=-1;
char tit[100];
int narg=sscanf(line.c_str(),"BIT%d %s %d %d",&is,tit,&plot,&col);
if (narg<2)
return -1;
if (is>=0 && is<NIOSIGNALS) {
signals[is]->setSignalAlias(tit,plot,col);
}
return is;
}
string jctbSignals::getSignalAlias() {
ostringstream oss;
for (int is=0; is<NIOSIGNALS; is++)
oss << signals[is]->getSignalAlias() << endl;
return oss.str();
}
void jctbSignals::update() {
Long64_t oreg=myDet->setCTBWord(-1,-1);
Long64_t creg=myDet->setCTBWord(-2,-1);
char val[1000];
cout << hex << oreg << dec << endl;
cout << hex << creg << dec << endl;
sprintf(val,"%llX",oreg);
// eIOCntrlRegister->SetHexNumber(oreg);
eIOCntrlRegister->SetText(val);
sprintf(val,"%llX",creg);
// eClkCntrlRegister->SetHexNumber(creg);
eClkCntrlRegister->SetText(val);
for (int idac=0; idac<NIOSIGNALS; idac++) {
signals[idac]->setOutput(oreg);
signals[idac]->setClock(creg);
}
}
void jctbSignals::ToggledOutReg(Int_t mask) {
char val[1000];
Long64_t oreg=myDet->setCTBWord(-1,-1);
Long64_t m=((Long64_t)1)<<mask;
if (signals[mask]->isOutput())
oreg|=m;
else
oreg&=~m;
cout << dec << sizeof(Long64_t) << " " << mask << " " << hex << m << " ioreg " << oreg << endl;
myDet->setCTBWord(-1,oreg);
oreg=myDet->setCTBWord(-1,-1);
cout << dec << sizeof(Long64_t) << " " << mask << " " << hex << m << " ioreg " << oreg << endl;
sprintf(val,"%llX",oreg);
// eIOCntrlRegister->SetHexNumber(oreg);
eIOCntrlRegister->SetText(val);
// eIOCntrlRegister->SetNumber(oreg);
}
void jctbSignals::ToggledClockReg(Int_t mask){
char val[1000];
Long64_t oreg=myDet->setCTBWord(-2,-1);
Long64_t m=((Long64_t)1)<<mask;
if (signals[mask]->isClock())
oreg|=m;
else
oreg&=~m;
cout << hex << "clkreg " << oreg << endl;
myDet->setCTBWord(-2,oreg);
oreg=myDet->setCTBWord(-2,-1);
sprintf(val,"%llX",oreg);
// eIOCntrlRegister->SetHexNumber(oreg);
eClkCntrlRegister->SetText(val);
}
void jctbSignals::ToggledPlot(Int_t mask) {
if (signals[mask]->isPlot())
cout << "plot signal " << mask << endl;
else
cout << "unplot signal " << mask << endl;
}

44
JCTBGui/jctbSignals.h Executable file
View File

@ -0,0 +1,44 @@
#ifndef JCTBSIGNALS_H
#define JCTBSIGNALS_H
#include <TGFrame.h>
#define NSIGNALS 64
#define NIOSIGNALS 52
#define ADCLATCH 63
class TGNumberEntry;
class multiSlsDetector;
class jctbSignal;
#include <string>
using namespace std;
class jctbSignals : public TGGroupFrame {
private:
jctbSignal *signals[NSIGNALS];
TGNumberEntry *eIOCntrlRegister;
TGNumberEntry *eClkCntrlRegister;
multiSlsDetector *myDet;
public:
jctbSignals(TGVerticalFrame *page, multiSlsDetector *det);
int setSignalAlias(string line);
string getSignalAlias();
void update();
void ToggledOutReg(Int_t);
void ToggledClockReg(Int_t);
void ToggledPlot(Int_t);
ClassDef(jctbSignals,0)
};
#endif

186
Makefile Executable file
View File

@ -0,0 +1,186 @@
# do not change below this line#
# Include common definitions
include Makefile.include
INSTALLROOT ?= $(PWD)
BINDIR ?= $(INSTALLROOT)/bin
DOCDIR ?= $(INSTALLROOT)/docs
LIBDIR ?= $(INSTALLROOT)/bin
INCDIR ?= $(INSTALLROOT)/include
WD = $(shell pwd)
LIBRARYDIR = $(WD)/slsDetectorSoftware
LIBRARYRXRDIR = $(WD)/slsReceiverSoftware
CLIENTDIR = $(LIBRARYDIR)/slsDetectorClient
GUIDIR = $(WD)/slsDetectorGui
RECEIVERDIR = $(LIBRARYRXRDIR)
CALWIZDIR = $(WD)/calibrationWizards
MANDIR = $(WD)/manual
CALIBDIR = $(WD)/slsDetectorCalibration
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)
INCLUDESRXR += -I. -I$(LIBRARYRXRDIR)/include -I$(CALIBDIR) -I$(ASM)
#LIBFLAGRXR +=
$(info )
$(info #######################################)
$(info # Compiling slsDetectorsPackage #)
$(info #######################################)
$(info )
.PHONY: all nonstatic static lib libreceiver textclient receiver gui stextclient sreceiver
all: lib textclient receiver gui
nonstatic: lib libreceiver textclient receiver gui
static: lib libreceiver stextclient sreceiver gui
lib:
cd $(LIBRARYDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' INCLUDES='$(INCLUDES)'
libreceiver:
cd $(LIBRARYRXRDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' INCLUDES='$(INCLUDESRXR)'
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)'
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'
calWiz:
cd $(CALWIZDIR) && $(MAKE) DESTDIR=$(BINDIR) #FLAGS=$(FLAGS) LDFLAGDET=$(LDFLAGDET) INCLUDES=$(INCLUDES)
gui: slsDetectorGUI
doc:
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
cd manual && make all DESTDIR=$(DOCDIR)
htmldoc:
make doc
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
cd manual && make html DESTDIR=$(DOCDIR)
clean:
cd $(BINDIR) && rm -rf sls_detector_* slsDetectorGui slsReceiver angularCalibrationWizard energyCalibrationWizard
cd $(LIBDIR) && rm -rf libSlsDetector.so libSlsDetector.a libSlsReceiver.so libSlsReceiver.a
cd $(LIBRARYDIR) && $(MAKE) clean
cd $(LIBRARYRXRDIR) && $(MAKE) clean
cd $(CLIENTDIR) && $(MAKE) clean
cd $(GUIDIR) && $(MAKE) clean
cd $(CALWIZDIR) && $(MAKE) clean
cd manual && $(MAKE) clean
cd $(DOCDIR) && rm -rf *
#install_lib:
# cd $(LIBRARYDIR) && $(MAKE) install DESTDIR=$(LIBDIR) INCLUDES=$(INCLUDES)
# cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR)
mythen_virtual:
cd $(LIBRARYDIR) && $(MAKE) mythenVirtualServer DESTDIR=$(BINDIR)
gotthard_virtual:
cd $(LIBRARYDIR) && $(MAKE) gotthardVirtualServer DESTDIR=$(BINDIR)
install_client: textclient slsReceiver
install_gui: gui
confinstall:
make conf;\
make install
install_lib:
make lib;\
make libreceiver; \
make textclient; \
make slsReceiver; \
make doc; \
make htmldoc; \
cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR); \
cd $(LIBRARYRXRDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);
install:
make install_lib; \
make gui; \
make calWiz; \
cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);\
cd $(LIBRARYRXRDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);
conf:
set -e; \
. ./configure; \
@echo "INSTALLROOT is $(INSTALLROOT)"
@echo "BINDIR is $(BINDIR)"
@echo "LIBDIR is $(LIBDIR)"
@echo "INCDIR is $(INCDIR)"
@echo "DOCDIR is $(DOCDIR)"
help:
@echo "Targets:"
@echo "make all compile library, text clients, data reciever"
@echo "make lib compile library"
@echo "make libreceiver compile receiver library"
@echo "make textclient compile the slsDetectorClient dynamically linking the libraries"
@echo "make stextclient compile slsDetectorClient statically linking the libraries"
@echo "make receiver compile the slsReciever dynamically linking the libraries"
@echo "make sreceiver compile the slsReciever statically linking the libraries"
@echo "make gui compile slsDetectorGUI - requires a working Qt4 and Qwt installation"
@echo "make calWiz compile the calibration wizards - requires a working Root installation"
@echo "make doc compile pdf documentation"
@echo "make htmldoc compile html (and pdf) documentation"
@echo "make install_lib installs the libraries, the text clients, the documentation and the includes for the API"
@echo "make install installs all software, including the gui, the cal wizards and the includes for the API"
@echo "make confinstall installs all software, including the gui, the cal wizards and the includes for the API, prompting for the install paths"
@echo "make clean remove object files and executables"
@echo "make help lists possible targets"
@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 ""
@echo "Variables - to change them run <source configure> :"
@echo "INSTALLROOT=<yourdir>: installation root di r, default $PWD"
@echo "BINDIR=<yourbin>: binary installation dir below INSTALLROOT, default bin"
@echo "LIBDIR=<yourlib>: library installation dir below INSTALLROOT, default lib"
@echo "INCDIR=<yourincludes>: header installation dir below INSTALLROOT, default include"
@echo "DOCDIR=<yourdoc>: documentation installation dir below INSTALLROOT, default doc"

61
Makefile.include Executable file
View File

@ -0,0 +1,61 @@
##############################################################
# Generic
##############################################################
CC = g++
CXX = $(CC)
ASM=$(shell echo "/lib/modules/`uname -r`/build/include")
LDFLAGDET = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -lpthread
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -lpthread
FLAGS= -Wall #-DEIGER_DEBUG2 -DEIGER_DEBUG -DEIGER_DEBUG3 #-DFIFO_DEBUG
# -DVERBOSE
# Setting up the verbose flags
ifeq ($(DEBUG),1)
FLAGS = -Wall -DVERBOSE
endif
ifeq ($(DEBUG),2)
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
##############################################################
REST = no
#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
##############################################################
# ROOTSLS specific. Set this to yes, if you want to compile
# ROOTSLS code: in this case, you need also root libraries
##############################################################
ROOTSLS = no
ROOTFLAGS = $(shell root-config --cflags --glibs) -DMYROOT1 #-DALLFILE_DEBUG #-DMYROOT1
ifeq ($(ROOTSLS),yes)
LDFLAGRXR = -L$(LIBDIR) -lSlsReceiver $(ROOTFLAGS) -DROOTSLS
endif

15
checkout.sh Executable file
View File

@ -0,0 +1,15 @@
#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

1
cleansharedmemory.sh Normal file
View File

@ -0,0 +1 @@
for i in seq `ipcs -m | cut -d ' ' -f1`; do ipcrm -M $i; done;

15
commitVersions.sh Normal file
View File

@ -0,0 +1,15 @@
sh updateSvnVersion.sh
cd slsDetectorGui
git commit -a -m "updating versions"
git push origin developer:developer
cd ../slsDetectorSoftware
git commit -a -m "updating versions"
git push origin developer:developer
cd ../slsReceiverSoftware
git commit -a -m "updating versions"
git push origin developer:developer
cd ..

58
configure vendored Executable file
View File

@ -0,0 +1,58 @@
##!/bin/bash
: ${INSTALLROOT=$PWD}
read -p "Installation directory [default:\"$INSTALLROOT\"]:" -e t3
if [ -z "$t3" ]
then
echo
else
INSTALLROOT=$t3
fi
echo "INSTALLROOT will be \"$INSTALLROOT\""
export INSTALLROOT
: ${BINDIR="bin"}
read -p "Binaries directory [default:\"$BINDIR\"]:" -e t4
if [ -z "$t4" ]
then
BINDIR=$INSTALLROOT/$BINDIR
else
BINDIR=$INSTALLROOT/$t4
fi
echo "BINDIR will be \"$BINDIR\""
export BINDIR
: ${LIBDIR="bin"}
read -p "Libraries directory [default:\"$LIBDIR\"]:" -e t5
if [ -z "$t5" ]
then
LIBDIR=$INSTALLROOT/$LIBDIR
else
LIBDIR=$INSTALLROOT/$t5
fi
echo "LIBDIR will be \"$LIBDIR\""
export LIBDIR
: ${INCDIR="include"}
read -p "Includes directory [default:\"$INCDIR\"]:" -e t6
if [ -z "$t6" ]
then
INCDIR=$INSTALLROOT/$INCDIR
else
INCDIR=$INSTALLROOT/$t6
fi
echo "INCDIR will be \"$INCDIR\""
export INCDIR
: ${DOCDIR="doc"}
read -p "Documentation directory [default:\"$DOCDIR\"]:" -e t7
if [ -z "$t7" ]
then
DOCDIR=$INSTALLROOT/$DOCDIR
else
DOCDIR=$INSTALLROOT/$t7
fi
echo "DOCDIR will be \"$DOCDIR\""
export DOCDIR

24
examples/ang.off Executable file
View File

@ -0,0 +1,24 @@
module 0 center 6.395E+02 +- 0.00E+00 conversion 6.5660E-05 +- 7.10E-09 offset 0.00000 +- 0.00015
module 1 center 6.395E+02 +- 0.00E+00 conversion 6.5650E-05 +- 7.09E-09 offset 5.00211 +- 0.00015
module 2 center 6.395E+02 +- 0.00E+00 conversion 6.5625E-05 +- 7.09E-09 offset 10.00733 +- 0.00015
module 3 center 6.395E+02 +- 0.00E+00 conversion 6.5618E-05 +- 7.09E-09 offset 15.00742 +- 0.00015
module 4 center 6.395E+02 +- 0.00E+00 conversion 6.5642E-05 +- 7.15E-09 offset 20.00620 +- 0.00015
module 5 center 6.395E+02 +- 0.00E+00 conversion 6.5612E-05 +- 7.09E-09 offset 25.00281 +- 0.00015
module 6 center 6.395E+02 +- 0.00E+00 conversion 6.5623E-05 +- 6.93E-09 offset 30.00704 +- 0.00015
module 7 center 6.395E+02 +- 0.00E+00 conversion 6.5605E-05 +- 7.10E-09 offset 34.99715 +- 0.00015
module 8 center 6.395E+02 +- 0.00E+00 conversion 6.5643E-05 +- 7.21E-09 offset 39.99533 +- 0.00015
module 9 center 6.395E+02 +- 0.00E+00 conversion 6.5638E-05 +- 7.09E-09 offset 44.99969 +- 0.00015
module 10 center 6.395E+02 +- 0.00E+00 conversion 6.5638E-05 +- 6.94E-09 offset 49.99859 +- 0.00015
module 11 center 6.395E+02 +- 0.00E+00 conversion 6.5644E-05 +- 7.10E-09 offset 54.99499 +- 0.00015
module 12 center 6.395E+02 +- 0.00E+00 conversion 6.5618E-05 +- 7.09E-09 offset 59.99120 +- 0.00015
module 13 center 6.395E+02 +- 0.00E+00 conversion 6.5607E-05 +- 7.11E-09 offset 64.98880 +- 0.00015
module 14 center 6.395E+02 +- 0.00E+00 conversion 6.5609E-05 +- 7.09E-09 offset 69.98205 +- 0.00015
module 15 center 6.395E+02 +- 0.00E+00 conversion 6.5611E-05 +- 7.09E-09 offset 74.98379 +- 0.00015
module 16 center 6.395E+02 +- 0.00E+00 conversion 6.5619E-05 +- 4.72E-09 offset 79.98559 +- 0.00015
module 17 center 6.395E+02 +- 0.00E+00 conversion 6.5604E-05 +- 7.09E-09 offset 84.98376 +- 0.00015
module 18 center 6.395E+02 +- 0.00E+00 conversion 6.5605E-05 +- 7.09E-09 offset 89.98307 +- 0.00015
module 19 center 6.395E+02 +- 0.00E+00 conversion 6.5616E-05 +- 7.09E-09 offset 94.98907 +- 0.00015
module 20 center 6.395E+02 +- 0.00E+00 conversion 6.5634E-05 +- 7.08E-09 offset 99.97965 +- 0.00015
module 21 center 6.395E+02 +- 0.00E+00 conversion 6.5608E-05 +- 4.16E-09 offset 104.99732 +- 0.00016
module 22 center 6.395E+02 +- 0.00E+00 conversion 6.5608E-05 +- 7.09E-09 offset 109.98646 +- 0.00015
module 23 center 6.395E+02 +- 0.00E+00 conversion 6.5649E-05 +- 7.09E-09 offset 114.98765 +- 0.00015

5
examples/bad.chans Normal file
View File

@ -0,0 +1,5 @@
15
1528
5000
6513

View File

@ -0,0 +1,47 @@
#!/bin/bash
# local variables
dir=/home/l_msdetect/martin/sls_detectors_package/settingsdir/eiger
# HOSTNAMES is special
# Beside of the hostname line it also defines the amount of (half) modules
# for the body part
# take care for the last space
HOSTNAMES="beb031 beb025 "
## header contains constant values at the beginning of the file
header=(
detsizechan="2048 512"
)
## the body part is for each half module
# counters will count automatically
# the number behind ':' indicates the incrementation value
counters=(
rx_tcpport="1958:1"
rx_udpport="50001:2"
rx_udpport2="50002:2"
)
# constant values
constants=(
rx_hostname="mpc1975"
lock=0
settingsdir=$dir
caldir=$dir
)
# lists contains space separated lists each value for each half module
lists=(
#detectorip="10.1.1.214 10.1.1.213 10.1.1.216 10.1.1.211 10.1.1.215 10.1.1.210 10.1.1.217 10.1.1.212"
)
## footer contains constant values for the end of the file
footer=(
outdir=/home/l_msdetect/martin/out
threaded=1
clkdivider=2
)

View File

@ -0,0 +1,71 @@
#!/bin/bash
if [ "$1" == "--help" ]; then
echo This tool generates config files.
echo Please edit the variables in the script
echo and run $0 \> output.config.
exit
fi
if [ "$1" == "" ]; then
echo This script generates config files for slsDetector out of config_gen files
echo Please specify the config_gen file
exit
fi
. $1
function get_name_value
{
name=${1%%=*}
value=${1#*=}
}
function shift_var
{
shifts=$1
shift
shift $shifts
value=$1
}
echo hostname ${HOSTNAMES// /+}
for i in "${header[@]}"; do
get_name_value "$i"
echo $name $value
done
echo
num=0
for host in $HOSTNAMES; do
for i in "${counters[@]}"; do
get_name_value "$i"
value2=${value%%:*}
inc=${value#*:}
echo $num:$name $((value2+$((num*$inc))))
done
for i in "${lists[@]}"; do
get_name_value "$i"
shift_var $num $value
echo $num:$name $value
done
for i in "${constants[@]}"; do
get_name_value "$i"
echo $num:$name $value
done
echo
num=$((num+1))
done
for i in "${footer[@]}"; do
get_name_value "$i"
echo $name $value
done
exit

View File

@ -0,0 +1,47 @@
#!/bin/bash
# local variables
dir=/home/l_msdetect/martin/sls_detectors_package/settingsdir/eiger
# HOSTNAMES is special
# Beside of the hostname line it also defines the amount of (half) modules
# for the body part
# take care for the last space
HOSTNAMES="beb074 beb071 beb064 beb102 beb087 beb088 beb072 beb073 "
## header contains constant values at the beginning of the file
header=(
detsizechan="4096 512"
)
## the body part is for each half module
# counters will count automatically
# the number behind ':' indicates the incrementation value
counters=(
rx_tcpport="1991:1"
rx_udpport="50011:2"
rx_udpport2="50012:2"
)
# constant values
constants=(
rx_hostname="10.1.1.100"
rx_udpip="10.1.1.100"
lock=0
settingsdir=$dir
caldir=$dir
)
# lists contains space separated lists each value for each half module
lists=(
detectorip="10.1.1.214 10.1.1.213 10.1.1.216 10.1.1.211 10.1.1.215 10.1.1.210 10.1.1.217 10.1.1.212"
)
## footer contains constant values for the end of the file
footer=(
outdir=/home/l_msdetect/martin/out
threaded=1
)

35
examples/gotthard.config Normal file
View File

@ -0,0 +1,35 @@
type Gotthard+
0:hostname bchip007
#0:port 1952
#0:stopport 1953
#0:rx_tcpport 1956 must also have this in receiver config file
0:settingsdir /home/l_maliakal_d/mySoft/newMythenSoftware/settingsdir/gotthard
0:angdir 1.000000
0:moveflag 0.000000
0:lock 0
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
0:rx_udpip 129.129.202.98
0:rx_hostname pc6898
0:outdir /bigRAID/datadir_gotthard/rec_test_data
0:vhighvoltage 120
master -1
sync none
outdir /bigRAID/datadir_gotthard/rec_test_data
ffdir /home/l_maliakal_d
headerbefore none
headerafter none
headerbeforepar none
headerafterpar none
badchannels none
angconv none
globaloff 0.000000
binsize 0.001000
threaded 1

View File

@ -0,0 +1,32 @@
fname run
index 0
dr 16
settings veryhighgain
threshold 0
exptime 0.000002990
period 0.000024984
delay 0.999999968
gates 1
frames 300000.000000000
cycles 1.000000000
timing auto
fineoff 0.000000
startscript none
startscriptpar none
stopscript none
stopscriptpar none
scriptbefore none
scriptbeforepar none
scriptafter none
scriptafterpar none
scan0script none
scan0par none
scan0prec 0
scan0steps 0
scan1script none
scan1par none
scan1prec 0
scan1steps 0
ratecorr 0.000000
flatfield none
badchannels none

32
examples/mythen.config Normal file
View File

@ -0,0 +1,32 @@
type Mythen+
0:hostname mcs1x21
0:port 1952
0:stopport 1953
0:settingsdir /afs/psi.ch/user/b/bergamaschi
0:outdir /afs/psi.ch/user/b/bergamaschi
0:angdir 1.000000
0:moveflag 1.000000
0:lock 0
0:caldir /afs/psi.ch/user/b/bergamaschi
0:ffdir /afs/psi.ch/user/b/bergamaschi
0:nmod 1
0:waitstates 13
0:setlength 3
0:clkdivider 6
0:extsig:0 gate_in_active_high
0:extsig:1 trigger_in_rising_edge
0:extsig:2 off
0:extsig:3 off
master -1
sync none
outdir /afs/psi.ch/user/b/bergamaschi
ffdir /afs/psi.ch/user/b/bergamaschi
headerbefore none
headerafter none
headerbeforepar none
headerafterpar none
badchannels none
angconv none
globaloff 0.000000
binsize 0.001000
threaded 1

1
examples/receiver.config Normal file
View File

@ -0,0 +1 @@
dataport 1955

36
examples/scripts/.parab Normal file
View File

@ -0,0 +1,36 @@
header before
Thu May 31 11:28:55 CEST 2012
run=-1
acquisition time = 1.000000 second(s)
mythen gain mode = standard
threshold energy = 6255 eV
bad channel list = /sls/X04SA/data/x04sa/newMythenSoftware/cal/bad_both.chans
angle calibration conversion = /sls/X04SA/data/x04sa/newMythenSoftware/cal/ang_both_20120422_good2.off
beamline offset = 5.088000 deg
fine offset = 0.000000 deg
Flat field corrections = 0.000000
Dead time corrections tau = 0 ns
X04SA-ES2-TH2:RO.RBV 11.99985 deg
X04SA-OP-MOX2:ROX.RBV 9.17041130 deg
X04SA-OP-MOX1:ROX.RBV 9.17683938 deg
X04SA-DCM:E2 12.4054 keV
X04SA-ID-GAP:READ 5.015 mm
ARIDI-PCT:CURRENT 401 mA
X04SA-ES2-OVEN:TEMP_RBV 1768.00 C
X04SA-ES2-SAM:TR3 0.00000 mm
X04SA-ES2-SAM:TR2 0.00000 mm
X04SA-ES2-SAM:TR1 0.00000 mm
X04SA-ES2-LT1:TR2.RBV 1213.25000 mm
X04SA-ES2-SV1:t2.D 0.090
X04SA-ES2-SV1:t2.C 1.800
X04SA-ES2-SH1:t2.D 0.150
X04SA-ES2-SH1:t2.C 8.300
X04SA-ES2-FI8:SET "Out" (SEVR:INVALID STAT:UDF)
X04SA-ES2-SC:CH6 46071870
Thu May 31 11:29:01 CEST 2012
header after
X04SA-ES2-SC:CH6 46177281
X04SA-ES2-TH2:RO.RBV 11.99985 deg
X04SA-ID-GAP:READ 5.015 mm
ARIDI-PCT:CURRENT 401 mA
X04SA-ES2-OVEN:TEMP_RBV 1768.00 C

View File

@ -0,0 +1,142 @@
#! /bin/awk -f
# this is an awk script to start a run
# you first need to run inimodule.awk to initialize
# the pattern, set Vc and set the trimbits
#
#####################################################################
# revision history #
#####################################################################
# 31.10.2001 first version #
#####################################################################
# #
# Bernd Schmitt #
# #
# bernd.schmitt@psi.ch #
# #
#####################################################################
# #
# modifications: #
# #
# 1.3.2002 BS adapted for use with DCB #
# #
# 25.5.2002 BS adapted to new convert program #
# #
# 29.5.2002 sleep -> usleep for meas. time , TS #
# #
#####################################################################
BEGIN {
# initialize variables
NPAR=3
PAR[1]="nrun"
PAR[2]="fn"
PAR[3]="par"
# initialize default values
PARVAL[1] = 100
PARVAL[2] = "microstrip_july2007"
PARVAL[3]=0
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
# read command line defined variables
if (ARGC>1) {
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
for (i=1; i<=ARGC; i++) {
printf("%s \n", ARGV[i]);
nsplit=split(ARGV[i],array,"=")
VAR = array[1];
VAL = array[2];
for (j=1; j<=NPAR; j++) {
if ( VAR==PAR[j] ) {
PARVAL[j] = VAL
}
}
}
}
run=PARVAL[1]
fn=PARVAL[2]
par=PARVAL[3]
# print command line arguments
for (i=1; i<=NPAR; i++){
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
}
printf("\n\n");
# generate parameter file
fnamep=fn".parab"
printf("header before\n")>> fnamep
system("date >>"fnamep)
printf("run=%i \n", run ) >> fnamep
#print detector parameters to file
if (par==1) {
command="sls_detector_get exptime| awk -F \" \" '{print $2}'"
command | getline var
printf("acquisition time = %11.6f second(s)\n", var) >> fnamep
command="sls_detector_get settings| awk -F \" \" '{print $2}'"
command | getline var
printf("settings = %s\n", var) >> fnamep;
command="sls_detector_get threshold| awk -F \" \" '{print $2}'"
command | getline var
printf("threshold energy = %d eV\n", var) >> fnamep;
command="sls_detector_get badchannels| awk -F \" \" '{print $2}'"
command | getline var
printf("bad channel list = %s\n",var) >> fnamep;
command="sls_detector_get angconv| awk -F \" \" '{print $2}'"
command | getline var
printf("angle calibration conversion = %s\n",var) >> fnamep;
command="sls_detector_get globaloff| awk -F \" \" '{print $2}'"
command | getline var
printf("beamline offset = %f deg\n", var) >> fnamep;
command="sls_detector_get fineoff| awk -F \" \" '{print $2}'"
command | getline var
printf("fine offset = %f deg\n", var) >> fnamep;
command="sls_detector_get flatfield| awk -F \" \" '{print $2}'"
command | getline var
printf("Flat field corrections = %s\n",var) >> fnamep;
command="sls_detector_get ratecorr| awk -F \" \" '{print $2}'"
command | getline var
printf("Dead time corrections tau = %d ns\n",var) >> fnamep;
}
#print beamline parameters to file
#read detector position
system("caget X04SA-ES2-TH2:RO.RBV >>"fnamep)
#read I0
system("caget X04SA-ES2-SC:CH6>>"fnamep)
}

87
examples/scripts/ScanScript.awk Executable file
View File

@ -0,0 +1,87 @@
#! /bin/awk -f
# this is an awk script to start a run
# you first need to run inimodule.awk to initialize
# the pattern, set Vc and set the trimbits
#
#####################################################################
# revision history #
#####################################################################
# 31.10.2001 first version #
#####################################################################
# #
# Bernd Schmitt #
# #
# bernd.schmitt@psi.ch #
# #
#####################################################################
# #
# modifications: #
# #
# 1.3.2002 BS adapted for use with DCB #
# #
# 25.5.2002 BS adapted to new convert program #
# #
# 29.5.2002 sleep -> usleep for meas. time , TS #
# #
#####################################################################
BEGIN {
# initialize variables
NPAR=4
PAR[1]="nrun"
PAR[2]="fn"
PAR[3]="var"
PAR[4]="par"
# initialize default values
PARVAL[1] = 100
PARVAL[2] = "myfname"
PARVAL[3] = 0
PARVAL[2] = "none"
# read command line defined variables
if (ARGC>1) {
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
for (i=1; i<=ARGC; i++) {
nsplit=split(ARGV[i],array,"=")
VAR = array[1];
VAL = array[2];
for (j=1; j<=NPAR; j++) {
if ( VAR==PAR[j] ) {
PARVAL[j] = VAL
}
}
}
}
run=PARVAL[1]
fn=PARVAL[2]
var=PARVAL[3]
par=PARVAL[4]
# print command line arguments
for (i=1; i<=NPAR; i++){
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
}
#execute you command hereafter e.g. change temperature etc.
}

View File

@ -0,0 +1,100 @@
#! /bin/awk -f
# this is an awk script to start a run
# you first need to run inimodule.awk to initialize
# the pattern, set Vc and set the trimbits
#
#####################################################################
# revision history #
#####################################################################
# 31.10.2001 first version #
#####################################################################
# #
# Bernd Schmitt #
# #
# bernd.schmitt@psi.ch #
# #
#####################################################################
# #
# modifications: #
# #
# 1.3.2002 BS adapted for use with DCB #
# #
# 25.5.2002 BS adapted to new convert program #
# #
# 29.5.2002 sleep -> usleep for meas. time , TS #
# #
#####################################################################
BEGIN {
# initialize variables
NPAR=7
PAR[1]="nrun"
PAR[2]="fn"
PAR[3]="par"
PAR[4]="sv0"
PAR[5]="sv1"
PAR[6]="p0"
PAR[7]="p1"
# initialize default values
PARVAL[1] = 100
PARVAL[2] = "myfname"
PARVAL[3] = 1
PARVAL[4] = 0
PARVAL[5] = 0
PARVAL[6] = "none"
PARVAL[7] = "none"
# read command line defined variables
if (ARGC>1) {
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
for (i=1; i<=ARGC; i++) {
nsplit=split(ARGV[i],array,"=")
VAR = array[1];
VAL = array[2];
for (j=1; j<=NPAR; j++) {
if ( VAR==PAR[j] ) {
PARVAL[j] = VAL
}
}
}
}
run=PARVAL[1]
fn=PARVAL[2]
"par"PAR[3]=
sv0=PAR[4]
sv1=PAR[5]
p0=PAR[6]
p1=PAR[7]
# print command line arguments
for (i=1; i<=NPAR; i++){
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
}
# printf("\n\n");
# system("close_shutter_g95")
# execute your actions hereafter
if (par==1) {
#open shutter
} else {
#close shutter
}
}

View File

@ -0,0 +1,79 @@
#! /bin/awk -f
# this is an awk script to start a run
# you first need to run inimodule.awk to initialize
# the pattern, set Vc and set the trimbits
#
#####################################################################
# revision history #
#####################################################################
# 31.10.2001 first version #
#####################################################################
# #
# Bernd Schmitt #
# #
# bernd.schmitt@psi.ch #
# #
#####################################################################
# #
# modifications: #
# #
# 1.3.2002 BS adapted for use with DCB #
# #
# 25.5.2002 BS adapted to new convert program #
# #
# 29.5.2002 sleep -> usleep for meas. time , TS #
# #
#####################################################################
BEGIN {
# initialize variables
NPAR=2
PAR[1]="nrun"
PAR[2]="par"
# initialize default values
PARVAL[1] = 100
PARVAL[2] = "none"
# read command line defined variables
if (ARGC>1) {
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
for (i=1; i<=ARGC; i++) {
nsplit=split(ARGV[i],array,"=")
VAR = array[1];
VAL = array[2];
for (j=1; j<=NPAR; j++) {
if ( VAR==PAR[j] ) {
PARVAL[j] = VAL
}
}
}
}
run=PARVAL[1]
par=PARVAL[2]
# print command line arguments
for (i=1; i<=NPAR; i++){
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
}
#execute action hereafter
}

View File

@ -0,0 +1,23 @@
#!/bin/bash
STARTPORT=$1
AMOUNT=$2
if [ "$2" == "" ]; then
echo Syntax: $0 STARTPORT AMOUNT
echo Example: $0 1991 8 gives you 8 receivers starting with port 1991
fi
declare -A ARG
count=0
for i in `seq $STARTPORT $((STARTPORT+$((AMOUNT-1))))`; do
if [ "$((count%2))" == "0" ]; then
ARG[$count]="slsReceiver --rx_tcpport $i"
else
ARG[$count]="slsReceiver --rx_tcpport $i --mode 1"
fi
count=$((count+1))
done
xterms -k "${ARG[@]}"

42
examples/scripts/xterms Executable file
View File

@ -0,0 +1,42 @@
#!/bin/bash
# This script starts several xterms, one for each argument
# If the first argument is -k the script waits for you pressing Ctr-C and kills all started xterms afterwards.
#
# example:
# xterms "ls -lah; sleep 4" "runprogramm -f 2"
if [ "$1" == "-k" ]; then
DOKILL=1
shift
fi
LINE=0
COLUMN=-330
for i in `seq 1 $#`; do
COLUMN=$((COLUMN+$((i%2))*330))
echo xterm -g 50x20+${COLUMN}+${LINE} -e ${!i} &
xterm -g 50x20+${COLUMN}+${LINE} -e ${!i} &
PID[$i]=$!
LINE=$((i%2*330))
done
#for i in `seq 0 $(($#-1))`; do
# LINES=$(((i-i%4)/4))
# arg=$((i+1))
# xterm -g 50x20+$(((i%4)*330))+$((LINES*330)) -e ${!arg} &
# PID[$i]=$!
#done
if [ "$DOKILL" != "1" ]; then
exit
fi
while (true); do
read
done
for i in ${PID[@]}; do
kill $i
done

View File

@ -0,0 +1,66 @@
#####Any line with a # is not read######
detsizechan 2560 1
#type Gotthard+
hostname bchip007+bchip009+
#0:hostname bchip007
#0:port 1952
#0:stopport 1953
#0:rx_tcpport 1956
0:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
0:angdir 1.000000
0:moveflag 0.000000
0:lock 0
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
0:rx_udpip 10.1.1.1
0:rx_hostname 129.129.202.134
0:outdir /data/speedt
0:vhighvoltage 120
#1:hostname bchip009
#1:port 1952
#1:stopport 1953
1:rx_tcpport 1957
1:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
1:angdir 1.000000
1:moveflag 0.000000
1:lock 0
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
1:rx_udpip 10.1.2.1
1:rx_hostname 129.129.202.134
1:outdir /data/speedt
1:vhighvoltage 120
master -1
sync none
outdir /data/speedt
ffdir /home/l_msdetect
headerbefore none
headerafter none
headerbeforepar none
headerafterpar none
badchannels none
angconv none
globaloff 0.000000
binsize 0.001000
threaded 1

View File

@ -0,0 +1,64 @@
#####Any line with a # is not read######
#type Gotthard+
hostname bchip007+bchip009+
#0:hostname bchip007
#0:port 1952
#0:stopport 1953
#0:rx_tcpport 1956
0:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
0:angdir 1.000000
0:moveflag 0.000000
0:lock 0
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
#0:rx_udpip 10.1.1.1
#0:rx_hostname 129.129.202.134
0:outdir /data/speedt
0:vhighvoltage 120
#1:hostname bchip009
#1:port 1952
#1:stopport 1953
1:rx_tcpport 1957
1:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
1:angdir 1.000000
1:moveflag 0.000000
1:lock 0
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
#1:rx_udpip 10.1.2.1
#1:rx_hostname 129.129.202.134
1:outdir /data/speedt
1:vhighvoltage 120
master -1
sync none
outdir /data/speedt
ffdir /home/l_msdetect
headerbefore none
headerafter none
headerbeforepar none
headerafterpar none
badchannels none
angconv none
globaloff 0.000000
binsize 0.001000
threaded 1

25
genVersionHeader.sh Executable file
View File

@ -0,0 +1,25 @@
#####! /bin/awk -f
if [ $# -lt 3 ]
then
echo "wrong usage"
exit -1
fi
fin=$1
ftmp=$2
fout=$3
#dat=echo "date '+%Y%m%d'"
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

8
gitall.sh Executable file
View File

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

51
manual/Makefile Normal file
View File

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

65
manual/index.html Normal file
View File

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

View File

@ -0,0 +1,28 @@
INCLUDES = -I .
SRC_DET = mainClient.cpp
SRC_REC = mainReceiver.cpp
LIBDIR = ../../bin
LDFLAG_DET = -L$(LIBDIR) -lSlsDetector -L/usr/lib64/ -lpthread
LDFLAG_REC = -L$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -lpthread
DESTDIR ?= ../docs
#all: detUser detReceiver
all: docs
docs:
doxygen slsDetectorUsers.doxy
detUser:$(SRC_DET)
echo "creating client"
g++ -o detUser $(SRC_DET) $(INCLUDES) $(LDFLAG_DET) -lm -lstdc++
detReceiver:$(SRC_REC)
echo "creating receiver"
g++ -o detReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
clean:
echo "cleaning"
rm -rf detUser detReceiver slsDetectorUsersDocs

BIN
manual/manual-api/detReceiver Executable file

Binary file not shown.

BIN
manual/manual-api/detUser Executable file

Binary file not shown.

View File

@ -0,0 +1 @@
../../slsDetectorSoftware/slsDetectorAnalysis/detectorData.h

View File

@ -0,0 +1,86 @@
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. When set to YES local
# methods, which are defined in the implementation section but not in
# the interface are included in the documentation.
# If set to NO (the default) only methods in the interface are included.
EXTRACT_LOCAL_METHODS = YES
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default
# anonymous namespace are hidden.
EXTRACT_ANON_NSPACES = NO
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
# If set to NO (the default) these declarations will be included in the
# documentation.
HIDE_FRIEND_COMPOUNDS = NO
INTERNAL_DOCS = NO
SHOW_INCLUDE_FILES = NO
SHOW_FILES = NO
SHOW_NAMESPACES = NO
COMPACT_LATEX = YES
PAPER_TYPE = a4
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_HIDE_INDICES = YES
PREDEFINED = __cplusplus
INPUT = slsDetector/slsDetectorUsers.h slsDetector/slsDetectorBase.h commonFiles/sls_detector_defs.h slsDetector/slsDetector.h MySocketTCP/MySocketTCP.h usersFunctions/usersFunctions.h multiSlsDetector/multiSlsDetector.h commonFiles/sls_detector_defs.h slsDetector/slsDetectorUtils.h slsDetector/slsDetectorBase.h slsDetector/slsDetectorCommand.h slsDetector/slsDetectorActions.h multiSlsDetector/multiSlsDetector.h slsDetectorAnalysis/detectorData.h slsDetectorAnalysis/energyConversion.h slsDetectorAnalysis/postProcessing.h slsDetectorAnalysis/angularConversion.h slsDetectorAnalysis/fileIO.h multiSlsDetector/multiSlsDetectorClient.h multiSlsDetector/multiSlsDetectorCommand.h slsDetectorAnalysis/angularConversionStatic.h slsDetectorAnalysis/angleConversionConstant.h slsDetectorAnalysis/enCalLogClass.h slsDetectorAnalysis/angCalLogClass.h slsDetectorAnalysis/badChannelCorrections.h slsDetectorAnalysis/fileIOStatic.h slsReceiverInterface/receiverInterface.h slsReceiver/slsReceiver_funcs.h slsReceiver/slsReceiverFunctionList.h slsReceiver/receiver_defs.h
OUTPUT_DIRECTORY = docs

View File

@ -0,0 +1,100 @@
/**
\file mainClient.cpp
This file is an example of how to implement the slsDetectorUsers class
You can compile it linking it to the slsDetector library
gcc mainClient.cpp -L lib -l SlsDetector -lm -lpthread
where lib is the location of libSlsDetector.so
*/
#include <iostream>
#include "slsDetectorUsers.h"
#include "detectorData.h"
/** 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)
{
std::cout << "dataCallback: " << pData->npoints << " " << pData->npy << "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]);
/** slsDetectorUsers is instantiated */
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;
/** registering data callback */
pDetector->registerDataCallback(&dataCallback, NULL);
/** 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;
}
/** 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;
/** 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();
while (1) {
usleep(100000);
status = pDetector->getDetectorStatus();
if (status == 0 || status == 1|| status == 3)
break;
}
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;
}

View File

@ -0,0 +1,103 @@
/* A simple server in the internet domain using TCP
The port number is passed as an argument
*/
/**
\file mainReceiver.cpp
This file is an example of how to implement the slsDetectorUsers class
You can compile it linking it to the slsDetector library
gcc mainReceiver.cpp -L lib -l SlsDetector -lm -lpthread
where lib is the location of libSlsDetector.so
*/
#include "slsReceiverUsers.h"
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
int ret = 0;
/*
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;
/*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;
}

View File

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

View File

@ -0,0 +1 @@
../../slsDetectorSoftware/slsDetector/slsDetectorUsers.h

View File

@ -0,0 +1,29 @@
<!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

@ -0,0 +1,34 @@
<!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

@ -0,0 +1,316 @@
<!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

@ -0,0 +1,95 @@
<!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>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
<!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

@ -0,0 +1,332 @@
<!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

@ -0,0 +1,46 @@
<!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

@ -0,0 +1,35 @@
<!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

@ -0,0 +1,358 @@
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.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,31 @@
<!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

@ -0,0 +1,165 @@
<!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

@ -0,0 +1,151 @@
<!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

@ -0,0 +1,43 @@
<!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

@ -0,0 +1,36 @@
<!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

@ -0,0 +1,36 @@
<!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

@ -0,0 +1,49 @@
<!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

@ -0,0 +1,97 @@
<!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

@ -0,0 +1,132 @@
<!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

@ -0,0 +1,112 @@
<!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

@ -0,0 +1,73 @@
<!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

@ -0,0 +1,22 @@
<!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

@ -0,0 +1,24 @@
<!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

@ -0,0 +1,258 @@
<!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

@ -0,0 +1,38 @@
<!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

@ -0,0 +1,64 @@
<!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

@ -0,0 +1,35 @@
<!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.

After

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,102 @@
/* 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

@ -0,0 +1,17 @@
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

@ -0,0 +1,6 @@
\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

@ -0,0 +1,171 @@
\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}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,164 @@
\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

@ -0,0 +1,11 @@
\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

@ -0,0 +1,77 @@
\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}

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