Compare commits

..

929 Commits
2.0.5 ... 2.3.0

Author SHA1 Message Date
8f9155e578 Merge branch 'main-rc' into b2.3.0 2020-11-30 16:23:50 +01:00
9df1eac3c1 Merge branch 'main-rc' into b2.2.0 2020-11-30 15:46:45 +01:00
5ededf9be4 Merge branch 'main-rc' into b2.1.1 2020-11-30 15:16:57 +01:00
3e8774798a Merge branch 'main-rc' into b2.1.0 2020-11-30 15:13:43 +01:00
1e6c6dea71 Merge remote branch 'slsDetectorCalibration/2.3' into 2.3 2017-12-12 11:14:05 +01:00
0e5d4d1d8e Merge remote branch 'slsDetectorCalibration/2.2' into 2.2 2017-12-12 11:14:01 +01:00
a2986784d3 Merge remote branch 'slsDetectorCalibration/2.1.1' into 2.1.1 2017-12-12 11:13:34 +01:00
975cbb576e Merge remote branch 'slsDetectorCalibration/2.1' into 2.1 2017-12-12 11:06:15 +01:00
081b809078 Merge remote branch 'slsDetectorGui/2.3' into 2.3 2017-12-04 16:47:35 +01:00
9263567cd8 Merge remote branch 'slsReceiverSoftware/2.3' into 2.3 2017-12-04 16:47:34 +01:00
58e90a85be Merge remote branch 'slsDetectorSoftware/2.3' into 2.3 2017-12-04 16:47:33 +01:00
025c836e25 Merge remote branch 'slsDetectorGui/2.2' into 2.2 2017-12-04 16:47:28 +01:00
5d5abae3f4 Merge remote branch 'slsReceiverSoftware/2.2' into 2.2 2017-12-04 16:47:28 +01:00
e2ad46386e Merge remote branch 'slsDetectorSoftware/2.2' into 2.2 2017-12-04 16:47:26 +01:00
308d44e452 Merge remote branch 'slsDetectorGui/2.1.1' into 2.1.1 2017-12-04 16:47:22 +01:00
69da61b1fb Merge remote branch 'slsReceiverSoftware/2.1.1' into 2.1.1 2017-12-04 16:47:22 +01:00
460168ce04 Merge remote branch 'slsDetectorSoftware/2.1.1' into 2.1.1 2017-12-04 16:47:21 +01:00
4e429c0d77 Merge remote branch 'slsDetectorGui/2.1' into 2.1 2017-12-04 16:45:34 +01:00
bf4fab549d Merge remote branch 'slsReceiverSoftware/2.1' into 2.1 2017-12-04 16:45:34 +01:00
f7705eb1da Merge remote branch 'slsDetectorSoftware/2.1' into 2.1 2017-12-04 16:45:32 +01:00
1afb9e3e48 manual 2017-03-29 11:23:44 +02:00
09d3372cc0 manual 2017-03-29 10:11:16 +02:00
cacb4c9d93 updaterev 2017-03-24 13:42:11 +01:00
86490226ed removing the return value usage in start acquisition callback, callbacks will be called if registered, and we will write files if file write enabled 2017-03-24 13:41:56 +01:00
eb203c93b2 removing the return value usage in start acquisition callback, callbacks will be called if registered, and we will write files if file write enabled 2017-03-24 13:41:30 +01:00
44be9829d4 removed anna from support as she prefered it 2017-03-23 15:38:24 +01:00
e450f5ec6a updaterev 2017-03-23 15:17:34 +01:00
70a7217353 changed the header size to a better number 2017-03-23 15:17:21 +01:00
7dfb1b7192 added a release text 2017-03-23 15:17:03 +01:00
da8d535dae updaterev 2017-03-23 14:09:01 +01:00
404be013a2 changes to new callback arguments without filepointer 2017-03-23 14:08:43 +01:00
6d4c0d0d46 modified users for new callback argument without filepointer 2017-03-23 14:07:56 +01:00
54371bc6be updaterev 2017-03-23 13:48:18 +01:00
5c230e2ac5 updaterev 2017-03-23 13:48:12 +01:00
0814f6369d udpaterev 2017-03-23 13:46:16 +01:00
9e658e7947 udpaterev 2017-03-23 13:46:02 +01:00
bf57be309f updated server 2017-03-23 13:44:44 +01:00
6f34dddb5a changed the file header size t0 1kb and changed its description in the header 2017-03-23 13:41:37 +01:00
c47f2f3449 solved the gui 4 bit bug where no data was displayed: due to byterperchannel being int and a 0 2017-03-23 13:31:22 +01:00
5dcacaae2a frame and packet counters for the delay was buggy, not looking at lsb and msb, fixed 2017-03-23 12:38:19 +01:00
aae4e3f993 removed unnessary printout 2017-03-20 11:22:35 +01:00
78958c7699 updaterev 2017-03-20 09:30:15 +01:00
575c9617c7 fixed gui for new header 2017-03-20 09:28:15 +01:00
1ab80b0517 updaterev 2017-03-20 09:28:02 +01:00
4b388f56b2 fixed gui for new header 2017-03-20 09:27:38 +01:00
fb91ba25f3 uncomment gui. insignificant 2017-03-20 09:26:13 +01:00
1413244617 update rev 2017-03-15 15:02:28 +01:00
dc77b07c92 update rev 2017-03-15 15:02:22 +01:00
9f68fc6f3b fixed call backs with new standard header 2017-03-15 15:00:25 +01:00
47a769e677 modified users receiver to have all objects defined in one 2017-03-15 15:00:01 +01:00
ecaa8e45a4 some changes to the command help 2017-03-15 14:52:19 +01:00
36e92c194d changes for callback to work 2017-03-14 08:23:47 +01:00
4a8f2b5a69 Merge branch '2.3-rc' of git.psi.ch:sls_detectors_software/sls_detectors_package into 2.3-rc 2017-03-14 08:22:29 +01:00
22e0332833 changes to callback 2017-03-14 08:21:27 +01:00
53be854efd including subframe number 2017-03-13 11:33:06 +01:00
0a1aaec708 resolved the recovering from receiver start error , but still does not acknowledge error in gui 2017-03-10 13:24:00 +01:00
1cbbf9409f manual 2017-03-09 09:23:57 +01:00
b16757e8d1 adapt eiger noise 2017-03-06 12:18:32 +01:00
6c3165b31a manual with new calibration scheme 2017-03-03 16:42:03 +01:00
e86e9361b6 removed std:: to make round compile 2017-03-03 16:00:22 +01:00
475f0692a0 Merge branch '2.3-rc' of git.psi.ch:sls_detectors_software/sls_detector_software into 2.3-rc 2017-02-28 13:42:16 +01:00
62de278f24 bug fix: loading trimbit file should not care about settings 2017-02-27 16:05:27 +01:00
9e9c109898 adding cmath and std:round interp 2017-02-22 11:31:01 +01:00
111f8beab3 updaterev 2017-02-10 11:51:29 +01:00
4c351ba686 updated server with version variables 2017-02-10 11:51:05 +01:00
a1f00518b8 updaterev 2017-02-10 11:50:24 +01:00
3d2264fa56 updaterev 2017-02-10 11:50:13 +01:00
3e9476cca2 updaterev 2017-02-10 11:49:58 +01:00
490e756622 added the servers 2017-02-03 12:31:33 +01:00
87ce1ed736 moved tau to settings file, removed gain and offset, setting threshold loads settings file, setting threshold only sets client variable 2017-02-03 12:29:44 +01:00
0896704de7 moved tau to settings file, removed gain and offset, setting threshold loads settings file, setting threshold only sets client variable 2017-02-03 12:29:33 +01:00
111856ed7b hv should work now 2017-01-06 15:16:05 +01:00
0fdbac981e should work for serial comm hv for 9m 2017-01-05 12:58:49 +01:00
bd1601c2eb fixwed the printing of errors but not error message 2016-12-19 11:37:14 +01:00
2d1c91c0e0 bug in sem for new scans 2016-12-16 14:59:55 +01:00
64843c1c76 made the scans work, where the the dummy message from rxr doesnt stop it from listening for the scans/measurement, only at set join thread 2016-12-16 14:46:54 +01:00
f464be38a3 xyrangechanged not checked for histogram 2016-12-16 14:46:02 +01:00
ed3129029d Merge branch '9m_rest' into 2.2-rc 2016-12-15 14:32:34 +01:00
983f517e07 added users to the package 2016-12-15 14:04:37 +01:00
2a508435c7 change the filenaming according to det position and not det id 2016-12-13 11:41:27 +01:00
3c0ce23bc2 fixed hardcoded port number, cleanup 2016-12-02 15:21:22 +00:00
a67f9d50de removed the allocating of memory for eiger and jungfrau to receive data via tcp from detector as this will not happen 2016-12-02 12:47:01 +01:00
28b0897dd7 fixed bug of crash when changing dr sometimes, latestdata was incorrectly inititalized 2016-12-02 08:55:07 +01:00
dd9387ef29 using detid to calculte zmq port in case of shmget error and det id does not start with 0 and 1 as in receiver zmq server ports 2016-12-02 08:53:08 +01:00
657d3e5759 first functional commit, still some workarounds. Can start, acquire, stop, restart 2016-12-01 15:59:12 +00:00
f61d819599 wip for Eiger9M 2016-12-01 07:43:46 +00:00
d9016c95de updated the server bins 2016-11-30 11:23:46 +01:00
ce086fe79d updaterev 2016-11-30 11:20:42 +01:00
790cef37ff updaterev 2016-11-30 11:20:16 +01:00
37ea7d425f updaterev 2016-11-30 11:17:38 +01:00
1fe810d9d1 uncommented imagereconstruction in normal checkout script and also added but commented tests repository 2016-11-30 11:16:59 +01:00
09645cbba8 bottom is defined as flippeddatax in config file, not anymore as argument for receiver 2016-11-30 10:36:46 +01:00
466f1506a5 bottom is defined as flippeddatax in config file, not anymore as argument for receiver 2016-11-30 10:36:34 +01:00
0c8ca874e4 image reconstruction should work now 2016-11-28 14:52:46 +01:00
5445552b17 removed bug where it shuts down socket and tries to read it as it is -1 2016-11-25 14:34:49 +01:00
af8c750b5a made the eiger like the jungfrau ignoring packets 2016-11-25 12:22:21 +01:00
52dbb7f9fc smaller changes to make arguments const 2016-11-25 12:22:00 +01:00
b131f268e0 added the check for detector and receiver online in refreshing tabs 2016-11-22 14:11:11 +01:00
c70f453de4 changed everything to depend on receiver online shared memory flag, and if it is online is only checked rarely 2016-11-22 14:01:07 +01:00
96d8478b46 gui ensuring receiver offline caught, also at progress 2016-11-22 13:59:27 +01:00
09d146ee55 changed a printout 2016-11-22 11:39:47 +01:00
9031b3998b removed warnings and zmq only when not mythen 2016-11-22 11:06:05 +01:00
394526a9c3 removed zmq threads from client and made it receive packets via for loop 2016-11-22 11:05:42 +01:00
55408118b1 removed some warnings and printsouts 2016-11-22 11:05:12 +01:00
0ed9ee0e5d fixing the 32 bit crash and empty plot using zmq 2016-11-21 12:02:45 +01:00
9d106f6c93 changed clock for jungfrau, maybe other debugging stuff outside this folder 2016-11-21 09:21:30 +01:00
21e4201bb8 updaterev 2016-11-14 11:57:57 +01:00
ebf102b8d9 updaterev 2016-11-14 11:57:53 +01:00
e6c7dfc440 adding exptime to receiver for file header 2016-11-14 11:57:34 +01:00
c639477f28 adding exptime to receiver for file header 2016-11-14 11:57:29 +01:00
45fc87240f write number of frames and period in file header 2016-11-11 16:08:18 +01:00
b980640a4c updaterev 2016-11-11 14:44:56 +01:00
7ffba557f6 updatereveiger 2016-11-11 14:44:42 +01:00
f13a42feeb eigerupdaterev 2016-11-11 14:43:55 +01:00
b1a3a224ff implemented high voltage for normal modules 2016-11-11 14:43:18 +01:00
4292bf1ce8 updaterev 2016-11-11 14:15:08 +01:00
c364b28922 updaterev 2016-11-11 14:14:59 +01:00
b1f658c439 file header with semi colon 2016-11-11 10:20:00 +01:00
9ee9fdea96 fixed eriks bug, must initialize const double values inside cpp not in h from gccc 4.4.6 onwards 2016-11-10 16:13:42 +01:00
7d860cc7cd fixed eriks bug, must initialize const double values inside cpp not in h from gccc 4.4.6 onwards 2016-11-10 16:13:22 +01:00
cec2e5c6b4 reverting to previous 2016-11-10 16:08:38 +01:00
5189640cd7 debugging for eriks pc 2016-11-10 16:02:31 +01:00
8298486f27 debugging for eriks pc 2016-11-10 15:57:04 +01:00
fd666605aa some changes for qwt7 and for higher gcc 2016-11-10 14:56:52 +01:00
acb900961a fixed time interval in receiveR 2016-11-10 14:37:26 +01:00
44d6b0ffc0 fixed time interval in receiveR 2016-11-10 14:37:18 +01:00
b55414cd38 fixed time interval in receiveR 2016-11-10 14:37:08 +01:00
70326f8b10 Merged developer branch with anna's modifications for chiptestboard 2016-11-10 13:27:18 +01:00
3c48065b5a removed the normal timer on the updateplot, it shold now plot as soon as it gets the data 2016-11-10 12:23:01 +01:00
6f43e9fcde the space in the makefile screwed up the compilation 2016-11-10 10:26:27 +01:00
37c0b5bdc1 done 2016-11-10 10:26:02 +01:00
753ed306d9 changes to include eiger in gui 2016-11-10 08:41:46 +01:00
a4d4b05c1d s 2016-11-09 15:35:22 +01:00
149610aa51 updaterev 2016-11-09 10:21:20 +01:00
f09e5ebad8 debugging 2016-11-09 10:18:33 +01:00
4a96b90296 debugging 2016-11-09 10:13:30 +01:00
f6b753f5d7 debugging 2016-11-09 09:36:42 +01:00
7cbd21651b debugging 2016-11-09 09:27:23 +01:00
6a2adb48aa debugging 2016-11-09 09:19:11 +01:00
b8ffe24c5f debugging 2016-11-09 09:16:36 +01:00
1a64fc30ca added the print temp losses 2016-11-08 16:37:15 +01:00
33d0563133 added the print temp losses 2016-11-08 16:36:17 +01:00
5f4a38416a added the print temp losses 2016-11-08 16:31:05 +01:00
964c76ac60 added the print temp losses 2016-11-08 16:08:48 +01:00
9b9876e287 added the print temp losses 2016-11-08 16:03:44 +01:00
7b2be5b009 debugging 2016-11-08 15:44:34 +01:00
d30e4a4d1c updaterev 2016-11-08 15:26:18 +01:00
400eef6712 updaterevjungfrau 2016-11-08 15:25:56 +01:00
475e217cc5 adding binary 2016-11-08 15:25:16 +01:00
0b5dc3a5a1 updaterev 2016-11-08 15:24:02 +01:00
5c9d610dc4 updaterev 2016-11-08 15:23:56 +01:00
a0b28503d0 updaterev 2016-11-08 15:23:48 +01:00
c2c7365566 works for jungfrau 2016-11-08 15:23:05 +01:00
dec82ab850 included datastream command earlier but not working yet 2016-11-08 15:21:56 +01:00
d335dfaae4 some print 2016-11-08 15:21:00 +01:00
2677fe3729 debugging progress and resettting serveraddress at start 2016-11-08 14:42:16 +01:00
38857d6845 debugging progresS 2016-11-08 14:12:19 +01:00
580b8ec649 manual 2016-11-08 13:38:53 +01:00
54658040dc debugging 2016-11-08 12:25:51 +01:00
7a0efe60c8 debugging 2016-11-08 12:23:42 +01:00
6b67122a8e debugging 2016-11-08 12:20:53 +01:00
5316316c66 debugging 2016-11-08 12:09:18 +01:00
7e9760559c debugging 2016-11-08 12:02:21 +01:00
a42854d9a7 debugging 2016-11-08 11:51:02 +01:00
c7adfd52f2 debugging 2016-11-08 11:43:56 +01:00
f7654f8c94 debugging 2016-11-08 11:35:00 +01:00
76435c5981 debugging 2016-11-08 11:27:49 +01:00
7ca629a128 debugging 2016-11-08 11:10:38 +01:00
55e0bbd04f debugging 2016-11-08 11:08:33 +01:00
b4461207a7 debugging 2016-11-08 11:07:13 +01:00
cf5978d730 debugging 2016-11-08 11:05:49 +01:00
385941d75e debugging 2016-11-08 10:31:53 +01:00
93f99f9aa8 debugging 2016-11-08 10:30:02 +01:00
6d04f1ad68 debugging 2016-11-08 10:28:29 +01:00
cb5fa6223a debugging 2016-11-08 10:24:37 +01:00
abfcfa7dea debugging 2016-11-08 10:22:31 +01:00
cb274095fd debugging 2016-11-08 10:19:14 +01:00
8aea36b4ef fixed jungfrau configure bug by getting rid of gb10reset at configure 2016-11-08 09:35:34 +01:00
96e79c7b99 debugged 2016-11-08 09:34:56 +01:00
9effdab69b debugging 2016-11-08 09:29:42 +01:00
2eade342ad debugging 2016-11-08 09:28:56 +01:00
cbd077e984 debugging 2016-11-08 09:28:05 +01:00
01db6b988b debugging 2016-11-08 09:22:18 +01:00
a5c4434ae8 debugging 2016-11-08 09:18:32 +01:00
8fd1b9b617 debugging 2016-11-08 09:08:09 +01:00
c6dbeda8b7 debugging 2016-11-08 09:03:07 +01:00
52cf790dde deletion of retval in getdatafrom, client 2016-11-07 17:57:03 +01:00
39a2317d8d somewhere 2016-11-07 17:34:41 +01:00
e4dcd1cb6b setting and getting printouts, changed the rx mess to 1000 2016-11-07 15:34:47 +01:00
a337feba7f showing old plot and firstimagE 2016-11-07 15:34:14 +01:00
1825ebd426 for now, leaving as before the background colors 2016-11-07 11:21:12 +01:00
96284fde87 for now, leaving as before the background colors 2016-11-07 11:19:20 +01:00
a17e65c22f switched background to white, used dark gray with bold option for info text 2016-11-07 10:55:09 +01:00
3a3e2e26d8 to see the receiver output 2016-11-07 10:29:56 +01:00
8caa9d8779 fixed jungfrau problem, changed set receiver to updatedetector before 2016-11-04 17:14:47 +01:00
ede6ccd720 removed prints 2016-11-04 14:23:46 +01:00
6df77b5ff2 removed prints 2016-11-04 14:21:59 +01:00
3f9c5af61c removed prints 2016-11-04 14:19:49 +01:00
57979ce970 removed prints 2016-11-04 14:17:51 +01:00
d673367667 removed prints 2016-11-04 14:11:31 +01:00
3b07fd602b removed prints 2016-11-04 14:09:19 +01:00
e2299b5269 removed prints 2016-11-04 13:49:16 +01:00
11d3392064 gui uncomments 2016-11-04 13:46:23 +01:00
25780a2b4f fixed jungfrau gui 2016-11-04 13:45:24 +01:00
947a0e5f41 memry allcation 2016-11-04 12:15:47 +01:00
e4a8933d97 memry allcation 2016-11-04 12:12:06 +01:00
771e5323b4 added binary 2016-11-04 12:10:36 +01:00
15cc7a21f5 uncomment gui 2016-11-04 12:09:54 +01:00
7aae906c62 debugging 2016-11-04 12:02:52 +01:00
79d5a24af4 debugging 2016-11-04 12:02:37 +01:00
ff1b2ac19a solving latestdata crash 2016-11-04 11:24:19 +01:00
11d3511460 trying different machine zmq 2016-11-04 11:03:24 +01:00
d4733543ab trying different machine zmq 2016-11-04 10:25:00 +01:00
78c1372950 trying different machine zmq 2016-11-04 10:20:30 +01:00
44eb790f2d trying different machine zmq 2016-11-03 17:16:53 +01:00
f7b7939ca1 trying different machine zmq 2016-11-03 17:12:41 +01:00
8c53ce9f87 trying different machine zmq 2016-11-03 17:06:02 +01:00
aee60c3dbc something 2016-11-03 16:39:14 +01:00
8066618345 something 2016-11-03 16:33:44 +01:00
493f3169f8 something 2016-11-03 16:26:41 +01:00
6f60f011d1 something 2016-11-03 16:26:11 +01:00
a659fa96dc debugging gui 2016-11-03 16:21:50 +01:00
fa9bac144f number of data call back threads made equal to numberoflistening threads 2016-11-03 16:04:24 +01:00
8b6689e167 moved an offset to get data 2016-11-03 15:49:32 +01:00
f865026c3d lastframe number bug 2016-11-03 15:08:18 +01:00
a6423b30dd Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detectors_package into developer 2016-11-03 14:54:04 +01:00
68241924a5 progress bug 2016-11-03 14:22:48 +01:00
b89f0a1663 progress bug 2016-11-03 14:22:37 +01:00
48ae4b4ec2 progress bug 2016-11-03 14:21:51 +01:00
4b65c3b694 progress bug 2016-11-03 14:17:53 +01:00
274fffa609 progress bug 2016-11-03 14:16:07 +01:00
5fb38694d3 progress bug 2016-11-03 14:01:24 +01:00
fbd0f01fa7 progress bug 2016-11-03 13:59:58 +01:00
37cdb3db4f progress bug 2016-11-03 13:57:43 +01:00
3a3e5668d7 progress bug 2016-11-03 13:56:31 +01:00
3ed427e7f0 progress bug 2016-11-03 13:55:03 +01:00
6498b20612 progress bug 2016-11-03 13:51:03 +01:00
0cc89efb20 progress bug 2016-11-03 13:47:24 +01:00
dfe39ef3e5 progress bug 2016-11-03 13:44:24 +01:00
26d8d6e108 creating new files 2016-11-03 13:40:26 +01:00
54458f0af0 creating new files 2016-11-03 13:37:30 +01:00
b7ead7e61e creating new files 2016-11-03 13:30:58 +01:00
20918f2d52 versioning done 2016-11-03 13:22:19 +01:00
7c58f43717 modifications for gitversioning 2016-11-03 13:21:40 +01:00
3f66504f89 included jungfrau for the gitversioning 2016-11-03 13:10:54 +01:00
eeaaef1a99 updaterev 2016-11-03 12:33:14 +01:00
df3e0f3f93 updaterev 2016-11-03 12:32:59 +01:00
404323e13a updaterev 2016-11-03 12:32:37 +01:00
7fdc127356 included bunch id in jungfrau header 2016-11-03 12:31:53 +01:00
4b99ff7fbe reset fpga implemented, changed receiver configuration warning prints, powerchip implemented 2016-11-03 12:31:34 +01:00
5523bc4a09 update manua 2016-11-03 12:11:33 +01:00
2eac6cc116 update manua 2016-11-03 12:08:51 +01:00
014175689f debugging 2016-11-03 09:25:30 +01:00
170d314540 debugging 2016-11-03 09:21:09 +01:00
b33ec4ac2e same files for all the jungfrau settings files 2016-11-03 09:17:02 +01:00
84bdf873ce introduced ignored packets and changed meaning of missing packets for jungfrau 2016-11-03 09:16:36 +01:00
0aecad6644 changed dac values, fixed settings bug of not looking at nchan,nchips, , fixed clock divider, changed usleep in configuremac 2016-11-03 09:16:01 +01:00
754a4f8bdc q for quit 2016-11-02 16:37:37 +01:00
40babc23a3 progress uncommented 2016-11-02 16:24:23 +01:00
941b3dbb02 progress uncommented 2016-11-02 16:09:22 +01:00
8efc455e58 lskjgf 2016-11-02 16:08:02 +01:00
5fd1818ec7 startframeindex corrected 2016-11-02 16:01:55 +01:00
8eb91bc46d startframeindex corrected 2016-11-02 15:56:10 +01:00
b8187a5bf2 startframeindex corrected 2016-11-02 15:49:46 +01:00
f0c82d9027 startframeindex corrected 2016-11-02 15:47:51 +01:00
b9caa1e1e1 startframeindex corrected 2016-11-02 15:45:45 +01:00
a4fcf622a9 startframeindex corrected 2016-11-02 15:44:28 +01:00
e2d6bf31a3 startframeindex corrected 2016-11-02 15:42:15 +01:00
ece614eb7e startframeindex corrected 2016-11-02 15:40:25 +01:00
f71378e67f frame number in header corected, create file logic 2016-11-02 15:25:23 +01:00
525831e8af increased max file size for jungfrau 2016-11-02 15:12:02 +01:00
55c35b6669 merged 2016-11-02 14:36:21 +01:00
237e761588 Merge branch 'developer' into jungfrautomerge 2016-11-02 14:33:03 +01:00
9069e2eba4 Merge branch 'developer' into jungfrautomerge 2016-11-02 14:33:03 +01:00
fa0580ccac to see the frames 2016-11-02 11:01:59 +01:00
5783e3f9d2 counters frame delay 2016-11-02 11:00:51 +01:00
50596d87d1 included the delay and frame counters 2016-11-02 10:56:13 +01:00
4035f9263a got rid completely of threaded proccessing 2016-11-02 07:28:29 +01:00
b9ac75330c removed all prints in generic 2016-11-01 16:36:32 +01:00
88d5e4c9a0 threadstarted not initialized 2016-11-01 16:36:19 +01:00
f0ac9a2e9c back to not asking getframescaught 2016-11-01 15:59:43 +01:00
1f3a418d93 make t crash 2016-11-01 15:02:14 +01:00
e0aee67dcd some changes 2016-11-01 14:06:45 +01:00
5de9ade51d some changes 2016-11-01 14:04:37 +01:00
7fc82723b5 some changes 2016-11-01 14:04:31 +01:00
8bb0249d5b reverted timeouts 2016-11-01 13:09:16 +01:00
19caeb3e38 something 2016-11-01 12:06:08 +01:00
0c257dbcdd something 2016-11-01 12:04:08 +01:00
a3cab06a40 something 2016-11-01 11:27:30 +01:00
92305a9f7a something 2016-11-01 11:27:17 +01:00
d6e78c19ad changing send, rc timeout 2016-11-01 11:09:28 +01:00
7374a37115 back with checking online, got rid of getframescaught altogether 2016-11-01 10:03:38 +01:00
59b5844de6 got rid of check if online 2016-11-01 09:55:38 +01:00
cf8bbad937 got rid of check if online 2016-11-01 09:46:29 +01:00
2edeb74213 got rid of check if online 2016-11-01 09:21:26 +01:00
9c7fb4da38 added gui stuff 2016-11-01 09:13:16 +01:00
2a7a11b80f changes 2016-11-01 09:12:58 +01:00
5b4528925d some changes 2016-11-01 08:10:52 +01:00
d6d6a050bd some changes 2016-11-01 08:06:21 +01:00
a7288dc0de some changes 2016-11-01 08:03:43 +01:00
a330706d86 sorta done 2016-10-31 17:05:07 +01:00
1c073b70bd changed 2016-10-31 17:04:49 +01:00
e2684e1f66 trying 2016-10-31 16:56:21 +01:00
d5c5a0e3c3 trying 2016-10-31 16:50:19 +01:00
6e0f9eaa78 trying 2016-10-31 16:47:10 +01:00
ca93ff798b trying 2016-10-31 16:43:50 +01:00
58228ed00f trying 2016-10-31 16:43:45 +01:00
d789b4a606 trying 2016-10-31 16:24:23 +01:00
ad304094ba trying 2016-10-31 16:21:31 +01:00
8b5612f4aa trying 2016-10-31 16:20:33 +01:00
81b162c465 trying 2016-10-31 16:19:10 +01:00
10a6bc7157 trying 2016-10-31 16:15:49 +01:00
a2b8d9beb9 trying 2016-10-31 16:12:11 +01:00
e7bddd54fa trying 2016-10-31 16:08:49 +01:00
59ade286c2 trying 2016-10-31 16:04:46 +01:00
13d225377d trying 2016-10-31 15:33:35 +01:00
21ccb211c1 trying 2016-10-31 15:29:40 +01:00
966b513f8f trying 2016-10-31 15:24:52 +01:00
cc11ff29bf trying 2016-10-31 15:22:27 +01:00
502a26beff trying 2016-10-31 15:14:40 +01:00
d2a4483e48 trying 2016-10-31 15:12:31 +01:00
f81ede500d trying 2016-10-31 15:06:38 +01:00
bd74a25072 trying 2016-10-31 14:53:58 +01:00
78cfbb92d8 trying 2016-10-31 14:49:39 +01:00
8f318f19ff trying 2016-10-31 14:48:50 +01:00
351d911f46 trying 2016-10-31 14:45:19 +01:00
89928246d2 trying 2016-10-31 14:41:12 +01:00
25e010a3d8 trying 2016-10-31 14:37:40 +01:00
e030a79aba trying 2016-10-31 14:36:13 +01:00
63d9e3ca5f trying 2016-10-31 14:34:47 +01:00
6a843b28d1 trying 2016-10-31 14:30:48 +01:00
cc2346be67 trying 2016-10-31 14:28:15 +01:00
e3455fe1ff trying 2016-10-31 14:24:23 +01:00
873d536729 trying 2016-10-31 14:13:00 +01:00
ac87ae3d5b some changes, almost done 2016-10-31 12:27:54 +01:00
eb68a69e38 merged with developer 2016-10-28 08:18:01 +02:00
5cc17a77c7 Merge branch 'developer' into jungfrauchange 2016-10-28 08:14:06 +02:00
4c6c078442 settimer returning -1 now instead of 1 for different values 2016-10-28 08:12:55 +02:00
f5f9e535de acquiring flag cleared at configuration file load 2016-10-28 07:58:39 +02:00
a1639a9a72 somehwere in btween 2016-10-27 11:32:30 +02:00
622e0a480e added single module binary 2016-10-27 10:26:13 +02:00
434fa863d0 shutdown bug 2016-10-27 09:48:04 +02:00
391ad67e8c changing the mess return from acq finished eiger server:trial for 9m lag bug 2016-10-27 09:20:21 +02:00
e908beb38a 9m try shutdown of client socket before close 2016-10-27 09:17:44 +02:00
c2c80c6bf6 root receiver crashing bug resolved 2016-10-27 08:50:44 +02:00
de53e48078 somewhere 2016-10-27 08:38:28 +02:00
7541c2bcf0 some more change 2016-10-27 08:28:30 +02:00
942f024761 changes to make jungfrau work 2016-10-27 08:27:31 +02:00
3c646c3545 untangled moench from jungfrau, quite a few changes 2016-10-27 07:26:47 +02:00
d38989b340 added 9m binary 2016-10-25 17:03:56 +02:00
b28c68127a check for why gui doesnt show all data 2016-10-25 16:48:04 +02:00
64094be4e3 check for why gui doesnt show all data 2016-10-25 16:45:52 +02:00
d1fd6f0883 check for why gui doesnt show all data 2016-10-25 16:22:31 +02:00
a8fb66483d check for why gui doesnt show all data 2016-10-25 16:22:09 +02:00
fde7d2359c check for why gui doesnt show all data 2016-10-25 16:22:03 +02:00
f2abf0fbfd check for why gui doesnt show all data 2016-10-25 16:08:36 +02:00
a6fecca2b8 check for why gui doesnt show all data 2016-10-25 16:05:39 +02:00
e6f17ed9d5 check for why gui doesnt show all data 2016-10-25 16:05:34 +02:00
d97f1c1677 check for why gui doesnt show all data 2016-10-25 16:02:56 +02:00
7a93fd8a58 check for why gui doesnt show all data 2016-10-25 16:00:18 +02:00
a7658b2b94 check for why gui doesnt show all data 2016-10-25 15:57:11 +02:00
64965e2a1a check for why gui doesnt show all data 2016-10-25 15:53:04 +02:00
51c0ca8c6e check for why gui doesnt show all data 2016-10-25 15:50:35 +02:00
ac4c758636 check for why gui doesnt show all data 2016-10-25 15:44:31 +02:00
cd6b952d64 check for why gui doesnt show all data 2016-10-25 15:44:24 +02:00
81190d29b0 check for why gui doesnt show all data 2016-10-25 15:38:38 +02:00
7803e94d79 check for why gui doesnt show all data 2016-10-25 15:38:32 +02:00
1e361bb3ba check for why gui doesnt show all data 2016-10-25 15:35:00 +02:00
f7898bc62b check for why gui doesnt show all data 2016-10-25 15:13:38 +02:00
994ccac75b check for why gui doesnt show all data 2016-10-25 15:03:13 +02:00
e312098e56 check for why gui doesnt show all data 2016-10-25 14:52:25 +02:00
7b36c63d8f fixed packetloss print 2016-10-25 14:08:31 +02:00
636d5840aa trying to fix packetloss print 2016-10-25 13:31:11 +02:00
4fb26f833a trying to fix packetloss print 2016-10-25 13:29:17 +02:00
0fddcd162d trying to fix packetloss print 2016-10-25 13:26:35 +02:00
173c5b9611 trying to fix packetloss print 2016-10-25 13:23:49 +02:00
38b2a272ee trying to fix packetloss print 2016-10-25 13:14:25 +02:00
28005b7875 trying to fix packetloss print 2016-10-25 12:29:56 +02:00
b38d71b298 trying to fix packetloss print 2016-10-25 12:26:53 +02:00
39b9fcba43 trying to fix packetloss print 2016-10-25 12:16:38 +02:00
58b48aefe2 changed the file max to test for 9m and trying to fix packetloss print 2016-10-25 12:08:46 +02:00
18c6e8208a removed bug, setting dr24 sets dr 32 also for eiger, also added server executable 2016-10-25 12:01:31 +02:00
7eda5f9de5 just finished the clock 2016-10-25 09:21:08 +02:00
31d48411db somewhere 2016-10-25 08:18:02 +02:00
94ff6cb092 moenchserver should not be in jungfrau folder 2016-10-24 13:57:39 +02:00
cf9c3d4f08 break symmetry in eiger writing 2016-10-24 11:13:56 +02:00
0cd9261332 merge fix 2016-10-20 09:17:42 +02:00
899adbce5b merge fixed 2016-10-20 09:17:32 +02:00
266506e67f merged with zmqdata 2016-10-20 08:54:29 +02:00
12574f4c05 merged zmqdata to developer 2016-10-20 08:46:48 +02:00
2f749bb91d Merge branch 'zmqdata' into developer 2016-10-20 08:40:19 +02:00
d1de27992b Merge branch '2.1.1-rc' into developer 2016-10-20 08:30:50 +02:00
dd0a1f60c6 proper update of progressfile bug 2016-10-20 08:30:38 +02:00
8bc2755759 Merge branch '2.1.1-rc' into developer 2016-10-20 08:25:04 +02:00
e819ed26e1 proper update of progressfile bug 2016-10-20 08:24:54 +02:00
7eafce87f9 fixed the print file packet loss progress bug 2016-10-20 08:13:42 +02:00
8d5259d653 Merge branch '2.1.1-rc' into developer 2016-10-20 07:56:07 +02:00
09c853ae26 fixed the print file packet loss progress bug 2016-10-20 07:55:56 +02:00
fa7536e1d1 merge with 2.1.1-rc to be latest 2016-10-20 07:38:08 +02:00
81d96a047d slsDetector/slsDetectorCommand.cpp 2016-10-20 07:31:53 +02:00
839896c7e6 fixed the print file packet loss progress bug 2016-10-19 15:53:26 +02:00
44a69e2aee improved locking a bit 2016-10-19 10:46:03 +02:00
121e9faf56 trying with the actual 1 getframescaught 2016-10-19 10:32:11 +02:00
673e7c8f20 removed asking only 1 for framescaugh 2016-10-19 10:22:35 +02:00
4a7e246604 removed asking only 1 for framescaugh 2016-10-19 10:21:29 +02:00
749c64204e done showing error when detectors not added in sharedmemory due to connect failure 2016-10-19 08:15:52 +02:00
e49f97a03c done showing error when detectors not added in sharedmemory due to connect failure 2016-10-19 08:10:42 +02:00
f535e11bba check not done 2016-10-18 15:31:48 +02:00
028ba57876 check for giving an error in gui if cannot connect to hostname 2016-10-18 15:06:01 +02:00
ca89835035 check for giving an error in gui if cannot connect to hostname 2016-10-18 15:03:44 +02:00
1e9ebc6f37 check for giving an error in gui if cannot connect to hostname 2016-10-18 14:50:25 +02:00
4bfbd24144 check for giving an error in gui if cannot connect to hostname 2016-10-18 14:47:52 +02:00
18046379ab bugfix:seg fault for giving an error in gui if cannot connect to hostname 2016-10-18 14:44:13 +02:00
8502a7b79f giving 2016-10-18 14:36:04 +02:00
0f8a33d71f overwriting 2016-10-18 14:31:05 +02:00
a7e8ff1c42 back 2016-10-18 14:05:05 +02:00
82884370b5 back 2016-10-18 14:05:05 +02:00
eec812f92c switched 2016-10-18 12:33:47 +02:00
cdaeff76d5 switched 2016-10-18 12:19:20 +02:00
de5037ae2b switched 2016-10-18 12:19:20 +02:00
208c12b72c trying 2016-10-18 12:12:08 +02:00
e00ad76e55 trying 2016-10-18 12:08:11 +02:00
3a6d97b4f3 trying 2016-10-18 12:08:11 +02:00
01366b7273 done 2016-10-18 11:10:42 +02:00
9f28cc686c done 2016-10-18 11:10:42 +02:00
37c0ea7453 almost there 2016-10-18 08:43:21 +02:00
1bade91254 almost there 2016-10-18 08:43:16 +02:00
b0bedc516d works for missing packets and image reconstruction 2016-10-14 16:08:43 +02:00
a6d9f681d8 works for missing packets and image reconstruction 2016-10-14 16:07:51 +02:00
5c4d55af6b random read, the current fnum shoud be sent, not the padded frame 2016-10-12 08:53:13 +02:00
e45b89695b somewhere 2016-10-11 12:35:49 +02:00
55c352a9cd somewhere 2016-10-11 12:35:48 +02:00
7f293115c4 moved f_activate to receiver funcs from detectors funcs 2016-10-10 08:43:18 +02:00
f59f40a659 ask only 1 for frames caught for 9m 2016-10-10 08:41:03 +02:00
64fd82f92c fixed bug in gui that overwrites the individual sls file path values with the multi value, included a febl and febr temp read 2016-10-10 08:39:46 +02:00
cd232fd732 fixed bug in gui that overwrites the individual sls file path values with the multi value 2016-10-10 08:17:34 +02:00
03cdda99ae fixed bug in temp front fpga 2016-10-07 15:54:46 +02:00
28f96f4b51 included a febl and febr temp read 2016-10-07 15:44:13 +02:00
f751e060b9 fixed bug that it does not display image 2 2016-10-07 15:13:20 +02:00
47516cafde works 2016-10-07 14:26:53 +02:00
6751132466 works 2016-10-07 14:26:41 +02:00
dce9911164 ask only 1 for frames caught for 9m 2016-10-07 13:48:45 +02:00
4d1c6a1940 ask only 1 for frames caught for 9m 2016-10-07 13:48:19 +02:00
d4122726ec ask only 1 for frames caught for 9m 2016-10-07 13:16:12 +02:00
16adb444b9 changed back the delay between framescaught 2016-10-07 13:12:57 +02:00
d54392c6eb increased delay to get framescaught from receiver for acquire form command line 2016-10-07 12:45:34 +02:00
51e45baeff removing check for read out 2016-10-07 12:14:08 +02:00
125c3a789a locking improved 2016-10-07 11:56:04 +02:00
831bd8e160 some changes for quitting gui and continuing with acquire from command line 2016-10-07 11:40:56 +02:00
1545d37f36 some changes for quitting gui and continuing with acquire from command line 2016-10-07 11:40:51 +02:00
dc16d52d49 switching off gui, and acqire should work 2016-10-07 10:21:22 +02:00
59f3aef703 back to subscriber publisher 2016-10-07 10:15:19 +02:00
b1dde586e1 back to subscriber publisher 2016-10-07 10:15:12 +02:00
cce93ebbcf removing the check for receiver to update data threads upon configuration 2016-10-07 07:54:26 +02:00
e6db70354c thread starting if rxr closed and others 2016-10-06 15:50:11 +02:00
ed8a779f7f thread starting if rxr closed and others 2016-10-06 15:50:02 +02:00
6f6199ad20 moved created socket outside innner and outer loop 2016-10-06 14:43:56 +02:00
54b78363b0 enabling datastream back to qdrawplot 2016-10-06 14:22:08 +02:00
65acd118c5 looks done 2016-10-06 13:51:23 +02:00
c5e7d44b15 looks done 2016-10-06 13:49:40 +02:00
2fdc4389e2 Merge branch '2.1' into 2.1.1-rc 2016-10-06 08:51:06 +02:00
5082435501 fixed bug in gui that overwrites the individual sls file path values with the multi value 2016-10-06 08:50:08 +02:00
de2de6315c somewhere 2016-10-06 08:44:00 +02:00
723df0e9fb somewhere 2016-10-06 08:43:14 +02:00
09e8bf4144 somewhere 2016-10-05 15:27:25 +02:00
6da59ca382 somewhere, but weird threads 2016-10-05 15:26:58 +02:00
bf54c15560 updated to have activate function implemented 2016-10-05 09:30:08 +02:00
489b623afd trying to get in changes for activate in receiver 2016-10-05 08:24:35 +02:00
39a1f16b33 Merge branch '2.1.1-rc' into developer 2016-10-04 15:16:04 +02:00
94667c5dde got rif of unnecessary usleep in lisetning 2016-10-04 15:15:08 +02:00
39baeade37 Merge branch 'developer' into zmqdata 2016-10-04 14:43:31 +02:00
13cff71faf got rid of activate function definition redeclaration in receiver funcs 2016-10-04 14:43:02 +02:00
9cfd914a3e Merge branch '2.1.1-rc' into developer 2016-10-04 14:35:19 +02:00
f6b7fd7aa3 merged thread error fix from developer 2016-10-04 14:29:25 +02:00
7ead69a761 merged with developer after it merged with 2.1.1-rc(deactivate) 2016-10-04 14:10:52 +02:00
a4bb3fe4dd merged with 2.1.1-rc inclding deactivate detectr and receiver 2016-10-04 14:06:47 +02:00
984698efad merged with developer a lot of bug fixes from 14 sep to 30 sep 2016-10-04 13:36:04 +02:00
2a4bd8022e works for deactivated server and receiver 2016-10-04 07:36:00 +02:00
0979d04693 works for deactivated server and receiver 2016-10-04 07:35:52 +02:00
1aec6a71a1 Merge branch '2.1' into developer 2016-09-30 15:13:34 +02:00
572047b72d was making 3 threads for each set detector type command, because it created standard receiver object each time 2016-09-30 15:13:12 +02:00
f513fb06fb switching the gpio definitions into function implementation 2016-09-30 07:56:54 +02:00
dcee737faf documentation 2016-09-29 15:45:43 +02:00
d3c4d52118 updaterev 2016-09-29 10:29:48 +02:00
01ed24263f updaterev 2016-09-29 10:29:24 +02:00
5ae3522028 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2016-09-29 10:28:37 +02:00
813b7ba6e7 added prgoramfpga functionality, currently gpio definitions required in /etc/rc file, will rectify in later commits 2016-09-29 10:28:27 +02:00
c093da38ae updaterev 2016-09-29 08:29:39 +02:00
4b7743b8ad update manual 2016-09-28 14:25:24 +02:00
8a80cb489d change server with new boundary for counts above teh max 2016-09-27 20:47:59 +02:00
5c81abdce0 jungfrau programming change 2016-09-26 12:00:23 +02:00
5f4a4b0d90 maybe fixed 16 bit rate corr eiger 2016-09-23 17:15:16 +02:00
1b61e10e36 forgot to add eiger binary 2016-09-23 14:32:21 +02:00
d904f7b32e adding 16 bit rate correction in eiger 2016-09-23 14:28:20 +02:00
c678199802 Merge branch '2.1-rc' into developer 2016-09-22 17:19:10 +02:00
953e513a2d updatereveiger 2016-09-22 17:18:35 +02:00
a7c180eb1c settings initially at UNINITIALIZED in eiger server 2016-09-22 17:16:49 +02:00
44870480be merging for gotthard, not done 2016-09-22 13:17:17 +02:00
1aff36efb8 small print out change 2016-09-21 16:37:52 +02:00
d0501c3139 creating and destroying sockets for each receiver start and stop in a single acquisition (to deal with scans etc) 2016-09-21 16:37:29 +02:00
d6ca7ecbc4 done for eiger, some checks for frameindex=-1,socket closing earlier than last socket etc 2016-09-20 15:12:26 +02:00
a1df8bdc15 done for eiger, some checks for frameindex=-1,socket closing earlier than last socket etc 2016-09-20 15:11:39 +02:00
acb5e50870 Merge branch 'developer' into zmqdata 2016-09-20 14:42:20 +02:00
9f2430cace enablingdatastream name change 2016-09-20 14:42:01 +02:00
7745bf5e0c Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detectors_package into developer 2016-09-20 10:44:11 +02:00
8c88de899a added in gitignore to ignore build and tests 2016-09-20 10:43:59 +02:00
bdcbdba2ab done with eiger 2016-09-20 10:42:49 +02:00
d751c626b3 done with eiger 2016-09-20 10:42:43 +02:00
611f3a26c2 only missing data left to be handled in zmqthread in receiver 2016-09-19 17:21:28 +02:00
904d21d0be only missing data left to be handled in zmqthread in receiver 2016-09-19 17:21:23 +02:00
6a244c1057 bug fixed, rapidjson parse error 2016-09-19 12:34:38 +02:00
38d477a1ad bug fixed, rapidjson parse error 2016-09-19 12:34:31 +02:00
189834bb53 autorcc is not available for cmake 2.8, use manual instead 2016-09-19 11:59:47 +02:00
82669103af added rapidjson lib 2016-09-16 17:22:44 +02:00
57e741c36c included json example with dummy values 2016-09-16 17:19:55 +02:00
f517eb7a41 included json example with dummy values 2016-09-16 17:19:37 +02:00
6abb1d2ae9 included json example with dummy values 2016-09-16 17:19:29 +02:00
e9a3310042 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_receiver_software into zmqdata 2016-09-16 15:41:20 +02:00
c16f251442 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into zmqdata 2016-09-16 15:41:05 +02:00
9c8f663b8e done 2016-09-16 12:49:39 +02:00
1263e80d21 done 2016-09-16 12:49:27 +02:00
895dae6d68 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_gui into zmqdata 2016-09-16 12:48:57 +02:00
e0dc25905b done 2016-09-16 12:48:32 +02:00
58713a90aa works, need to do json header and send dataready 2016-09-15 17:16:00 +02:00
1da4b07e73 works, need to do json header and send dataready 2016-09-15 17:15:55 +02:00
e1604a081f add missing pthread lib 2016-09-15 13:59:18 +02:00
7d86e62045 almost 2016-09-15 12:16:08 +02:00
a821442b1a almosst 2016-09-15 12:16:01 +02:00
0f9a841c4a almost done 2016-09-15 10:17:16 +02:00
7a55866966 manual 2016-09-14 17:41:07 +02:00
a80da4f677 Merge branch 'developer' into cmake 2016-09-14 14:38:54 +02:00
721249231f add missing preprocessor macro 2016-09-14 12:03:39 +02:00
c80b1c9a91 add missing preprossor macros 2016-09-14 11:58:39 +02:00
33807b7fac Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into zmqdata 2016-09-14 10:43:33 +02:00
557eccb74d almost there 2016-09-14 10:42:51 +02:00
3ed738b949 almost done 2016-09-09 17:52:07 +02:00
652d29f2d9 almost done 2016-09-09 17:51:36 +02:00
988426dc96 Added adc command for chiptestboard 2016-09-05 10:49:47 +02:00
258e671420 Merge branch 'cmake' into zmqdata 2016-09-05 10:43:13 +02:00
5f6b4c1b79 in between 2016-09-05 10:09:49 +02:00
1044fc68ab Merge branch 'cmake' of git.psi.ch:sls_detectors_software/sls_detectors_package into cmake 2016-09-02 16:28:28 +02:00
36904db3ca now GUI is compatible with qwt 6.1 2016-09-02 16:28:01 +02:00
fdffe8dc1e compatible with qwt 6.1 2016-09-02 16:22:34 +02:00
4a7d7ec9e1 Merge branch 'developer' into cmake 2016-09-02 16:00:04 +02:00
4eceb3b5f7 kinda 2016-09-02 15:47:28 +02:00
c940607088 Merge branch '2.1-rc' into developer 2016-09-01 18:12:59 +02:00
d2240884b4 settings dir for eiger 2016-09-01 18:10:49 +02:00
90d2e6b82a eiger manual 2016-09-01 15:50:36 +02:00
61d347b45d FindQwt returns qwt verison
This can be used to check compatibility
2016-09-01 14:42:47 +02:00
5b3ab9a2b4 soewhere 2016-09-01 13:34:02 +02:00
13aa0599af add variable for GUI libraries 2016-09-01 12:05:59 +02:00
eea2809136 in between 2016-09-01 11:22:28 +02:00
59d8584a9e README for compilation 2016-09-01 11:16:17 +02:00
0807e130e4 optionally build calibrationWizards 2016-09-01 11:14:29 +02:00
1a0550301b cmake config file from ROOT with compatibility fixes 2016-09-01 11:13:27 +02:00
6152ca66b4 add cmake configuration 2016-08-31 20:55:00 +02:00
f8b62bba64 add cmake configuration 2016-08-31 20:54:06 +02:00
b8944a3156 add cmake configuration 2016-08-31 20:51:15 +02:00
316ed783a8 add cmake configuration 2016-08-31 20:49:58 +02:00
a3369a7d21 separated 2016-08-31 17:23:44 +02:00
fbf6e2bff1 not done 2016-08-31 10:23:58 +02:00
6adc373e18 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2016-08-30 16:14:13 +02:00
8eea853a9a updaterev 2016-08-30 16:13:24 +02:00
aad1885bf5 updaterev 2016-08-30 16:13:18 +02:00
020e1b43f9 updaterev 2016-08-30 16:12:47 +02:00
be2bc15ab5 not done 2016-08-30 16:10:46 +02:00
13aa48e3ec Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2016-08-30 09:30:53 +02:00
d5f80831dd Changes to jctb server to correctly change the power supplies 2016-08-30 09:30:31 +02:00
5d52e41e37 adcs refresh only in developer tab 2016-08-24 17:10:07 +02:00
cf34103d1f Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2016-08-24 16:47:14 +02:00
079c7dc169 removed setup_beb.txt not required 2016-08-24 16:47:05 +02:00
e9b7a11cf6 in between 2016-08-24 16:23:43 +02:00
1f7fbcfae2 adding the git ignore change for the .log, .aux etc and for the jctbgui 2016-08-24 12:02:01 +02:00
f17a2ba2b8 in between 2016-08-24 11:54:15 +02:00
511d3e3970 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2016-08-22 14:33:09 +02:00
c6c11f6740 Added v_a command for chiptestboard 2016-08-22 14:32:42 +02:00
3703d06684 Added section on GOTTHARD data format to the manual 2016-08-18 11:53:37 +02:00
08fd848504 updatereveiger 2016-08-18 10:31:10 +02:00
4ac7df5b90 Added section on GOTTHARD data format to the manual 2016-08-18 09:09:35 +02:00
d13a76af25 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2016-08-17 10:30:15 +02:00
e0c45f4afd solved paralel start bug. due to handshaking deficit in thread start 2016-08-17 10:29:47 +02:00
0a2a88e23f in between 2016-08-17 09:33:59 +02:00
b90ca7b864 Added DACs for ne chiptestboard; fixed problem on dac14/highvoltage for moench 2016-08-16 15:15:24 +02:00
de8f04a058 removed jctb, use repository instead 2016-08-16 14:34:56 +02:00
b440c11a46 in between 2016-08-16 13:42:29 +02:00
f50f4752dd in between 2016-08-16 11:44:20 +02:00
7a3e08406a in between 2016-08-15 17:32:27 +02:00
46b23dba24 in between 2016-08-15 16:59:30 +02:00
fb8f49985b changes to test 2016-08-15 15:14:15 +02:00
3fbcbd5153 in between 2016-08-15 15:11:46 +02:00
b64af8dc8d starting 2016-08-15 12:10:16 +02:00
597f5e5d2a got rid of unnecesaary handshaking for -1 in dynamic range in receiver 2016-08-15 11:15:52 +02:00
1f9dc775f6 ensure receiver is updated when detector timer values are updated (force_update) 2016-08-12 17:44:28 +02:00
882202c2bc fixed bug show nth frame as in 2nd, 4th etc. 2016-08-12 13:48:30 +02:00
5b5e1e32b3 updaterev 2016-08-12 11:14:57 +02:00
4c2d28943f rate correction fixed for gui, removed auto made it defalt 2016-08-11 13:59:36 +02:00
cf74f9b138 fixed rate correction to not include 16 bit dr 2016-08-08 15:50:37 +02:00
5d3e925ed4 compatible with gcc 5.3.1 amd 6.1.1 2016-08-03 17:50:54 +02:00
9139451127 added 2 gain settings to eigeR 2016-08-03 10:34:10 +02:00
180038e485 updaterev 2016-07-22 10:41:54 +02:00
86308352cb added more accurate temperature sensors for eiger, and to gui 2016-07-22 10:41:35 +02:00
843dbffcd8 updaterev 2016-07-18 17:19:18 +02:00
6e4d4eed0e updating versions 2016-07-06 10:32:55 +02:00
be516e34b2 updating versions 2016-07-05 17:24:43 +02:00
cc896bd99c updating versions 2016-07-05 17:23:00 +02:00
6b0814c907 updating versions 2016-07-04 15:49:43 +02:00
d4dd7b5d8c added burst_trigger mode for eiger to replace trigger_readout mode 2016-07-04 15:44:59 +02:00
7db1136e65 versions update 2016-06-13 19:10:38 +02:00
328139434d fixed the zooming in plot tab. if x andy axis zoom set, it didnt take it for next measurement 2016-05-11 17:21:27 +02:00
14c78dc500 Changed make to $(MAKE) in Makefile for parallel compiling 2016-05-04 14:15:00 +02:00
e7dbbf4c1f undefined enum fixed 2016-03-15 17:33:40 +01:00
6ad6c9e8bb fixed undefined gain enum to a large number 2016-03-15 16:10:10 +01:00
1633cc3f01 incorporated rate correction of eiger into gui 2016-02-17 18:04:24 +01:00
615909f178 Merge branch 'release' into jungfrauv1.0 2016-02-03 15:00:53 +01:00
1230b63b29 Merge branch 'release', remote branch 'origin' into release 2016-02-02 11:21:07 +01:00
d489b34824 Test commit, added a space in makefile 2016-02-02 10:49:40 +01:00
700346fbbe some changes for gui for settings for jungfrau 2015-12-01 17:15:41 +01:00
b803f3a32a works for jungfrau 2015-11-27 17:30:45 +01:00
8ecc795574 corrected settings for eiger;removed loqwnoise to lowgain 2015-11-13 13:48:30 +01:00
da809171e9 output dir multi for all 2015-10-26 11:31:56 +01:00
73ebb2750c Better commandline parsing 2015-10-23 12:03:19 +02:00
2ed8b46ad0 displaying subframe index in gui 2015-09-23 11:50:47 +02:00
754d0b7911 included set all trimbits 2015-09-10 12:53:18 +02:00
1c41ea8898 changes to includes clkdivider and flags in gui 2015-09-10 11:28:39 +02:00
5c5e9d349a zmin zmax change finish 2015-07-27 19:18:32 +02:00
b1a9689caf solved some zmax zmin problems with gui 2015-07-27 18:53:16 +02:00
2d8ee637dc adc update not stopped between acquisition 2015-07-22 10:35:26 +02:00
db5412e599 propix integrated into gui 2015-07-22 10:06:38 +02:00
a5e18833de git rev in 2015-06-29 16:55:51 +02:00
7b2934fb73 git version update 2015-06-16 11:56:58 +02:00
e035eeaf08 not compulsory anymore for every frame for eiger 2015-06-12 17:44:30 +02:00
e0de23dd45 threshold to set all vcmp dacs for eiger 2015-04-01 12:17:55 +02:00
85416acbea indiviual dac control for each detector enabled in gui 2015-04-01 12:05:09 +02:00
5c14453c5d fixed histogram issues 2015-03-13 11:20:00 +01:00
2c6f0c49a7 lets gui know if old plot 2015-03-12 13:45:45 +01:00
a37eb65dbc new argv set merged 2015-03-06 10:57:06 +01:00
b091b7e1a9 Smallish changes? 2015-03-06 10:44:07 +01:00
71ad7ae2f0 some pointers deleted equalled to null 2015-03-05 15:30:21 +01:00
848569b216 print receiver configurations and some error messages upon exit 2015-03-02 14:04:27 +01:00
3fa5191705 so that the dacs dont go negative in the gui, default timer reduced to 200ms so more frames can be shown 2015-02-23 15:26:14 +01:00
4a755d96ce revision update 2015-01-14 10:43:41 +01:00
8dc41efad2 changed to linux argument type with -- 2014-12-01 10:54:31 +01:00
9b8325bd37 Merge branch 'master' into eiger_receiver 2014-11-17 15:04:42 +01:00
5acb1419af the version given to esrf 2014-10-16 14:14:34 +02:00
3d4b2e9fee Merge branch 'eiger_receiver_temp' into eiger_receiver
Conflicts:
	client/Makefile
2014-09-12 16:22:59 +02:00
13a54224eb updating makefiles 2014-09-12 16:22:22 +02:00
056fb4e119 updating Makefile 2014-09-12 13:47:19 +02:00
baf65e8318 some clone changes and setting the gui image read frequency to be one for eiger in gui 2014-09-10 14:39:02 +02:00
92c56739d9 version 2014-09-09 17:01:25 +02:00
0d66e62d10 fixed histogram for trimbits and threshold 2014-09-09 15:46:36 +02:00
705a25c9e0 fixed moench dac error 2014-08-29 16:42:26 +02:00
c33657f04d histogram for 2d and s curves 2014-08-05 11:30:36 +02:00
8a26eef0bf scans for 2d detectors should read every frame 2014-07-31 12:14:09 +02:00
7c58d3db46 enabling 10Gbe for eiger, advanced settings and also mV for dacs for all detectors 2014-07-11 12:56:11 +02:00
4d9bbeecc3 eiger receiver, receiving many packets at a time, with 16,8, 4 bitmode sort of working 2014-07-02 10:57:03 +02:00
b256e0b9e3 included eiger dacs to gui 2014-06-18 16:39:11 +02:00
0eaecc0e12 git version history 2014-06-03 13:56:39 +02:00
c985124b51 git version history 2014-06-03 12:07:35 +02:00
891c67f3d0 added gitignore for gui 2014-05-23 14:52:12 +02:00
ea1878f848 changes in makefile to make a separate receiver 2014-05-20 17:17:20 +02:00
9c5e2aa5b7 compiling with and without root defined in makefile.include
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@269 af1100a4-978c-4157-bff7-07162d2ba061
2014-04-09 10:29:11 +00:00
02c4a5e18e Makefile sala refined
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@268 af1100a4-978c-4157-bff7-07162d2ba061
2014-04-07 15:50:23 +00:00
bf2d8937f4 got rid of trigger frame and trigger window to merge with other timing modes
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@267 af1100a4-978c-4157-bff7-07162d2ba061
2014-03-26 14:06:59 +00:00
ef983c151f small variation
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@266 af1100a4-978c-4157-bff7-07162d2ba061
2014-03-26 10:07:27 +00:00
36171dc5a0 changed #triggers to #frames for trigger frame and trigger window for eiger
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@265 af1100a4-978c-4157-bff7-07162d2ba061
2014-03-13 14:19:43 +00:00
6d708e620a changed #triggers to #frames for trigger frame and trigger window for eiger
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@264 af1100a4-978c-4157-bff7-07162d2ba061
2014-03-13 14:13:58 +00:00
c338de941d bug fix changing prbes did not change other items as planned, signal lost
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@263 af1100a4-978c-4157-bff7-07162d2ba061
2014-03-04 14:18:07 +00:00
e7d22b1b39 compression enabled in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@262 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-27 10:53:27 +00:00
d0b12f4197 fixed a bug in measurement tab
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@261 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-12 09:23:56 +00:00
69524e61f4 does not refresh measurement tab upon clicking start
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@260 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-10 17:01:34 +00:00
7ebd1643ee made measurement tab faster, not too many checks anymore
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@259 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-10 16:20:17 +00:00
f768886308 tried to reduce the time to refresh measurement and settings tab
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@258 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-07 12:33:07 +00:00
534be9f942 file dialogs now show option to show all files, trimbits is possible to open non existing file, copying clones does not get rid of the old plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@257 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-05 16:37:05 +00:00
28e0cae2e2 rescaled histogram plotting
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@256 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-04 11:22:58 +00:00
32e4af910d to reduce warning in between plotting
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@255 af1100a4-978c-4157-bff7-07162d2ba061
2014-02-03 13:10:53 +00:00
922c7ede92 removed an extra settings check
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@254 af1100a4-978c-4157-bff7-07162d2ba061
2014-01-31 16:32:31 +00:00
78e6dccf46 fixed angular conversion crashing problem and got rid of unnecssary prints
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@253 af1100a4-978c-4157-bff7-07162d2ba061
2014-01-31 14:12:14 +00:00
f738b218e1 svn rev updates
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@252 af1100a4-978c-4157-bff7-07162d2ba061
2014-01-30 17:52:00 +00:00
a1c58f152f got rid of unncessary printouts and MyApplication inqDetectorMain does not work.so bak to original
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@251 af1100a4-978c-4157-bff7-07162d2ba061
2014-01-30 17:50:41 +00:00
635a33ea85 fixed bug when trimming
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@250 af1100a4-978c-4157-bff7-07162d2ba061
2014-01-28 12:20:43 +00:00
3731bfd51e removed checkinfinity flags
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@249 af1100a4-978c-4157-bff7-07162d2ba061
2013-12-17 10:31:54 +00:00
5c1574ec90 updated binary of 2d to be negative an update the label enabling before each acquisition if disabled
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@248 af1100a4-978c-4157-bff7-07162d2ba061
2013-11-25 16:57:57 +00:00
6956ee3164 getting back to basics in zooming, using a flag to check for angle error
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@247 af1100a4-978c-4157-bff7-07162d2ba061
2013-11-25 16:00:35 +00:00
9f92f5cffa getting back to basics in zooming, using a flag to check for angle error
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@246 af1100a4-978c-4157-bff7-07162d2ba061
2013-11-25 15:59:30 +00:00
d421c0c9fe checked in threshold changes to binary
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@245 af1100a4-978c-4157-bff7-07162d2ba061
2013-10-14 08:33:40 +00:00
c32acebc35 fixed problem of period beign recalculated for each refresh
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@244 af1100a4-978c-4157-bff7-07162d2ba061
2013-10-10 09:09:55 +00:00
b9fcbf4697 changed order to pedestal binary then accumulate, also fxed a bug in that
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@243 af1100a4-978c-4157-bff7-07162d2ba061
2013-10-09 10:37:49 +00:00
c7bc397098 changed 1d line color to black
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@242 af1100a4-978c-4157-bff7-07162d2ba061
2013-10-04 08:58:10 +00:00
4c662270cd fixed zooming problem
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@241 af1100a4-978c-4157-bff7-07162d2ba061
2013-10-02 16:41:50 +00:00
38570080b9 revered changed to old version for negative threshold
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@240 af1100a4-978c-4157-bff7-07162d2ba061
2013-09-25 08:52:15 +00:00
a06a4ef8d7 reverted to old version for negative threshold
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@239 af1100a4-978c-4157-bff7-07162d2ba061
2013-09-25 08:50:36 +00:00
5e4e52936b spin poxes can get negative values for binary plotting
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@238 af1100a4-978c-4157-bff7-07162d2ba061
2013-09-24 13:29:06 +00:00
e3df740901 bug fix filename with an underscore was a problem
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@237 af1100a4-978c-4157-bff7-07162d2ba061
2013-09-20 13:11:57 +00:00
e7633f1e04 let threshold take negative numbers fixed
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@236 af1100a4-978c-4157-bff7-07162d2ba061
2013-09-20 10:25:40 +00:00
05d4290ace included stoptimer bug fix and also screwing up period updates in measurement tab
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@235 af1100a4-978c-4157-bff7-07162d2ba061
2013-09-18 15:29:21 +00:00
790966e3dd semaphores , no usleep in receiver
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@234 af1100a4-978c-4157-bff7-07162d2ba061
2013-09-04 13:10:18 +00:00
e6c94a1d62 fixed the zooming problems for 2d
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@233 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-29 15:15:24 +00:00
88f0b089b4 fixed the zooming problems for 2d
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@232 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-28 15:17:36 +00:00
3c30ef71cf fixed the zooming problems for 2d
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@231 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-28 15:02:17 +00:00
22de76c8b0 histogram included, improved ready every frame, and other stuff.. a working version
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@230 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-27 15:47:07 +00:00
d9444121b7 pedestal correction
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@229 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-16 14:07:46 +00:00
061bd4251c pedestalbug fixed, trylock changed to lock, binary has qtip
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@228 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-16 13:48:03 +00:00
3c92f26be7 fixed some probelems wuth scans for receiver and also scans for allframes/frameindex
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@227 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-16 12:59:48 +00:00
505328bcaa displaying statistics works now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@226 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-13 10:30:13 +00:00
eb48b1c492 checking if probes or threshold ..shouldnt check if its the wrong detector unnecessary err printouts
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@225 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-12 12:21:49 +00:00
440b244b66 checking conditions before trimming and settings include low noise now, so a few changes
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@224 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-12 10:28:42 +00:00
f2a77be1b2 layoutthreshold was disabled for mythen, changed that
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@223 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-08 14:30:10 +00:00
113ee269d4 added trimming checks
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@222 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-08 13:39:36 +00:00
038d3c11df set maximum number for probes in gui as 3
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@221 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-08 09:56:15 +00:00
1274b5532c set maximum number for probes in gui as 3
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@220 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-08 09:54:29 +00:00
daae091945 a HUGE number of changes in measurement tab, and changes probes to be still disabled until #frames>1 and set cycles to 1 if probes >1
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@219 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-08 09:53:28 +00:00
d6dccef65c added the tip that probes are enabled only in expert mode
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@218 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-07 09:36:42 +00:00
35d7359403 qdefs message changed everything from \n to <br>, helps for gray source as html
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@217 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-06 07:22:50 +00:00
ae35542193 ask before disabling file write and fixed the ccorrect source for it
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@216 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-05 15:36:36 +00:00
2c8df98bf8 included the error message source to debug errors because of too many slots and signals
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@215 af1100a4-978c-4157-bff7-07162d2ba061
2013-08-05 14:57:40 +00:00
4f2f7639af changed the start and stop receiver error messages to be displayed to the client and not jsus recever
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@214 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-30 14:55:17 +00:00
9cdbd74471 changed the start and stop receiver error messages to be displayed to the client and not jsus recever
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@213 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-30 14:50:01 +00:00
16b8bb967c proceed anyway if outdir doesnt exist implmented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@212 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-25 09:23:38 +00:00
676fe91e57 change outdir for all receivers in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@211 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-24 13:17:47 +00:00
57e801e5ea change outdir for all receivers in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@210 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-24 09:43:09 +00:00
77aec59da9 change outdir for all receivers in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@209 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-24 09:39:30 +00:00
68f360e395 change outdir for all receivers in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@208 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-24 09:38:55 +00:00
27a21cc258 change outdir for non receivers in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@207 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-24 08:31:30 +00:00
6ea6f44824 verifying output directory works for receiver based detectors.. before acquisition
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@206 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-23 08:39:15 +00:00
b6145510ad refresh output dir requires output dir to be set to really check if it exists
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@205 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-19 10:10:11 +00:00
d84f95456b included accumulate, pedestal and binary
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@204 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-17 14:54:42 +00:00
12f48fb0d2 form used ampersand
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@203 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-12 12:44:23 +00:00
bca0799b84 fixed gui bug: time interval must be set before acquisition
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@202 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-12 10:27:16 +00:00
0aef2f3b81 updated svn
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@201 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-12 09:25:05 +00:00
f618ed439d svn updated
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@200 af1100a4-978c-4157-bff7-07162d2ba061
2013-07-11 09:07:14 +00:00
390ca76130 small change in config file err msg
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@199 af1100a4-978c-4157-bff7-07162d2ba061
2013-06-25 11:30:54 +00:00
c0e735c0b9 updated svn
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@198 af1100a4-978c-4157-bff7-07162d2ba061
2013-06-21 14:28:45 +00:00
019b231a8c update svn
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@197 af1100a4-978c-4157-bff7-07162d2ba061
2013-06-19 09:34:58 +00:00
6dfa75430c svn info
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@196 af1100a4-978c-4157-bff7-07162d2ba061
2013-06-12 10:24:55 +00:00
d49a5cd7b4 bug fix: after cloning, signals still ocnnected
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@195 af1100a4-978c-4157-bff7-07162d2ba061
2013-06-07 11:16:53 +00:00
378f7715b9 update svn number
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@194 af1100a4-978c-4157-bff7-07162d2ba061
2013-06-03 08:18:34 +00:00
b915844822 2d pedestal implemented
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@193 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-28 07:04:53 +00:00
4f1dfe8b87 2d pedestal implemented
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@192 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-28 06:45:56 +00:00
1129702738 changed the receiver to be te one deicing frame factor, not gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@191 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-27 09:34:39 +00:00
141a982878 update svn rev
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@190 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-27 09:11:45 +00:00
6aeacf7b13 ordered the makefile a bit, needs more revising
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@189 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-23 12:26:08 +00:00
014dfd7eed receiver read frequency from gui can be set now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@188 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-21 13:43:30 +00:00
b0d8739439 update svn
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@187 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-17 10:20:45 +00:00
bf77cc10b2 small change
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@186 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-17 10:20:19 +00:00
7624d301a4 changed dac names for monech
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@185 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-16 12:12:51 +00:00
0e22e9c03c updated version
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@184 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-15 15:09:02 +00:00
acbb4774fc updated svn
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@183 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-15 13:28:01 +00:00
a843661d1b updated svn
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@182 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-15 13:27:00 +00:00
4214ef6be0 changed the tab order for the forms
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@181 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-15 13:07:07 +00:00
287a451904 optimized the plot a bit
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@180 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-15 12:50:11 +00:00
4fdacefdbe getting rid of undefined state in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@179 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-13 13:47:05 +00:00
e153c6fd58 fixed zmin zmax bug, automatically online when refreshing advanced tab bug, outdir not checking properly
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@178 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-08 17:32:38 +00:00
7701531ff3 fixed the undefined state of gui when acquisition stopped
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@177 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-07 14:20:43 +00:00
8e19beb410 changed to trackertextF for qwt6 to show z value for 2d plots
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@176 af1100a4-978c-4157-bff7-07162d2ba061
2013-05-06 15:04:24 +00:00
675ab8ceca bad channel not read on refresh or start up, makefile reverted to compile
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@175 af1100a4-978c-4157-bff7-07162d2ba061
2013-04-30 15:05:21 +00:00
35f151775e some debugging at the beamline, still crashing sl6 64bit, angular conversion etc.
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@174 af1100a4-978c-4157-bff7-07162d2ba061
2013-04-30 11:26:22 +00:00
4719fff09a sample 2d plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@173 af1100a4-978c-4157-bff7-07162d2ba061
2013-04-16 14:52:27 +00:00
c605c77037 adjusted gui for moench and proper 2d plots, which are not scans for 1ds
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@172 af1100a4-978c-4157-bff7-07162d2ba061
2013-04-16 13:43:28 +00:00
050bec703d defining everything to reduce null pointer errors, fixed zooming problem for scans
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@171 af1100a4-978c-4157-bff7-07162d2ba061
2013-04-10 13:34:52 +00:00
d56b2b480b edited the gui makefile to be able to compile withot errors from this directory
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@170 af1100a4-978c-4157-bff7-07162d2ba061
2013-04-04 07:23:19 +00:00
10e47581e0 gui_client more stable with 2 servers for stop and acquire
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@169 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-21 09:27:16 +00:00
303d84b24a reduced gui_client crashes
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@168 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-19 16:00:38 +00:00
b7629f6c67 included a flag to print log or not
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@167 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-15 08:11:52 +00:00
ebd6a9131b check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@166 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:53:24 +00:00
b0534f194a check error message in between implemented in gui, uncommented the displaying messages part
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@165 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:51:10 +00:00
7352407968 check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@164 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:50:49 +00:00
3e81c16f38 check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@163 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:50:41 +00:00
9e1029185f check error message in between implemented in gui, also fixed wrong ports being set:control:stop
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@162 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:48:30 +00:00
db1aaf041a check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@161 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:47:19 +00:00
4ac8439202 check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@160 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:46:35 +00:00
f809657ec4 check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@159 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:45:49 +00:00
bef3745693 check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@158 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:39:21 +00:00
5c78f148b6 check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@157 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:38:57 +00:00
7675b47474 check error message in between implemented in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@156 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:38:33 +00:00
3e4f76ed07 slsdet clear errormask fixed, qmessage not printing and displog fixed
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@155 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-13 15:36:37 +00:00
ab41ffb6bf there was a gap between start and get status
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@154 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-06 10:16:48 +00:00
448f333b1e changed the makefiles a bit to be included in slsDetectorsPAckage make
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@153 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-06 09:41:21 +00:00
499cf4db56 forgot client makefile for gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@152 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-06 09:21:15 +00:00
8a87f17811 included makefile changes for gui client
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@151 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-06 09:18:46 +00:00
22b51032dd client connecting to gui serveR done
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@150 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-04 15:27:57 +00:00
863b662c6b gui client works for just getting status
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@149 af1100a4-978c-4157-bff7-07162d2ba061
2013-03-01 13:21:07 +00:00
2fc324ab4b made advanced tab detector dependent. each set mac adress etc is done via slsdetector and not multi
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@148 af1100a4-978c-4157-bff7-07162d2ba061
2013-02-26 08:35:20 +00:00
0682d23abd made advanced tab detector dependent. each set mac adress etc is done via slsdetector and not multi
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@147 af1100a4-978c-4157-bff7-07162d2ba061
2013-02-26 08:34:47 +00:00
642d7d8c74 previous checkin is not a working version
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@146 af1100a4-978c-4157-bff7-07162d2ba061
2013-02-22 09:54:06 +00:00
4814962347 included setroi for multidet
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@145 af1100a4-978c-4157-bff7-07162d2ba061
2013-02-21 16:00:44 +00:00
f3eb9c924f included network tab in gui, correctedmulti to be able to clear sls detectors error mask,included coud not set up network parameter error
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@144 af1100a4-978c-4157-bff7-07162d2ba061
2013-02-07 17:34:16 +00:00
aec136cf21 added error mask properly inherited by base; mask exist only for cannot connect to detector, receiver and could not configure mac
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@143 af1100a4-978c-4157-bff7-07162d2ba061
2013-02-06 15:23:35 +00:00
1d1e5e1202 included shortframe in gui for time being its just adc selection
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@142 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-31 15:42:04 +00:00
6b311f931b included shortframe in gui for time being its just adc selection
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@141 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-31 15:34:31 +00:00
2ead554b7b fixed browse to show in red when disabled browse button for receiver, got rid of error message showing,
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@140 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-31 11:15:38 +00:00
64208d5edd dataoutput browse button disabled help in red
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@139 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-22 09:45:24 +00:00
0c529e09fb with all the svn revisions
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@138 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-16 13:59:41 +00:00
b10fedb8f3 cleared data in gui at beginning
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@137 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-16 10:19:14 +00:00
b94e9475a0 also catches cerr now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@136 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-15 17:36:04 +00:00
bb46b9afce also catches cerr now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@135 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-15 17:28:59 +00:00
6a3747638d also catches cerr now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@134 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-15 17:11:54 +00:00
ac79bb86fb initialized everything in gui to get rid of the initialization error
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@133 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-11 17:21:37 +00:00
0b05f67f9d included sls defs in every file so that int is 32 bit
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@132 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-11 09:59:29 +00:00
74654b1ebc got rid of the weird ui look, which was due to windows style from afs
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@131 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-08 16:28:32 +00:00
6560a325ce no change
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@130 af1100a4-978c-4157-bff7-07162d2ba061
2013-01-08 14:05:49 +00:00
c21d674e89 changed uint in qDebugStream so that qtabmessages work on 64bit machine
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@129 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-18 16:33:30 +00:00
dbad2a41d8 git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@128 af1100a4-978c-4157-bff7-07162d2ba061 2012-12-18 15:21:09 +00:00
dd7385cd88 included -f in config file
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@127 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-18 14:34:48 +00:00
b59b54e004 got rid of segmentation fault while loading settings file which didnt refresh actions tab etc
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@126 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-18 12:07:45 +00:00
46a4fee083 included the revision change
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@125 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-17 16:39:25 +00:00
5bb8bc4574 svn version headers generated, but not yet implemented in the code
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@124 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-17 15:51:44 +00:00
adc52782f8 gui svninfo added to script
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@123 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-14 13:45:38 +00:00
4ccb47203e manual removed from makefiile
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@122 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-13 11:36:50 +00:00
27ef53da4a made some change in static member used as index to avoid compile time error with new gcc
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@121 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-05 08:48:57 +00:00
1e705df5dc docs
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@120 af1100a4-978c-4157-bff7-07162d2ba061
2012-12-04 15:46:18 +00:00
bbb6e21607 included pedestal and also moved the frame index out of graph so it doesnt keep moving
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@119 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-30 17:05:06 +00:00
382554afe9 included spacebar as a shortcut to start and stop acq
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@118 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-30 09:51:52 +00:00
0b8f6cc925 changed the check for is a file using stat and not looking for a dot in file name
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@117 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-26 15:54:22 +00:00
95741a1c33 project file finally ok
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@116 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-22 10:11:54 +00:00
90e219d402 makefile again
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@115 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-22 08:29:47 +00:00
29a9678d3b makefile changed
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@114 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-21 09:01:33 +00:00
832287af9e fixed filedir for gotthard receiver problem
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@113 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-15 13:53:08 +00:00
f201a6a32b for receiver, display frame number since not in filename
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@112 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-15 11:18:56 +00:00
7a6bba3c77 fixed the problem with multiple frame scan, frame index and file index included in gui
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@111 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-14 13:39:04 +00:00
6e529f1c06 warings suppressed (directly with flag in .pro)
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@110 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-14 11:37:40 +00:00
854015532e gotthard works with receiver without tcp lock
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@109 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-12 15:47:55 +00:00
ba923b55b7 updated gui to work with receiver, start and stop receiver, show progress using callback
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@108 af1100a4-978c-4157-bff7-07162d2ba061
2012-11-07 17:01:24 +00:00
716b3530e8 zero value in 2D plot set to BG, logZ does not crash any longer (?)
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@107 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-25 08:37:18 +00:00
80e0cd7fa1 qwtsrc was commented out in pro file
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@106 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-24 11:52:55 +00:00
d083d80a29 got rid of sample plot for 2d again
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@105 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-24 11:47:20 +00:00
3759b48c6e editted QDrawPlot to include sample plot just before they do a 2d scan
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@104 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-24 11:35:16 +00:00
07ff5ce42d Some problems with LogZ solved, but stil crashing when unsetting logZ
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@103 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-24 10:39:05 +00:00
3e979fdece finally works also with qwt6 - 2D plot color scales changed to root's
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@102 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-24 09:44:31 +00:00
1d03067bd5 works with qwt5, but qwt6 except for 2D plots
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@101 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-23 10:30:32 +00:00
8715a416a0 Changes for Qwt6, but 2D plot still does not work...and should be checked if Qwt5 still works
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@100 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-22 15:34:14 +00:00
6cec748335 added the buttons
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@99 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-22 14:10:32 +00:00
04e04db2ad problem with segmentation fault when trying to capture config loading logs at start:fixed
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@98 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-19 10:21:56 +00:00
ce110a79c8 some small changes to comly with qt4.7 version..but it still does not work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@97 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-18 15:28:57 +00:00
34b3a8b01b bugfix: catching config count at the beginning caused it to crash. now it works without crashing. still to catch cerr output
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@96 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-16 09:44:09 +00:00
e104b1d529 messages capture config output, still to find a way to capture all cerr output
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@95 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-16 08:29:44 +00:00
863662a5eb enhancement: logy with arrow buttons
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@94 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-12 14:12:20 +00:00
353e9baa78 got rid of some unnecessary coutlines in plotting by dhanya
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@93 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-12 12:16:58 +00:00
4ada872aaa histogram for 1d detectors without scan implemened
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@92 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-12 11:58:47 +00:00
51faab3c7c enhancement:nth frame changed to red, instead of error and changing it back
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@91 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-11 09:17:54 +00:00
19b6ca2eda enhancement:nth frame changed to red, instead of error and changing it back
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@90 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-11 08:57:09 +00:00
f4dc6aab22 enhancement:nth frame changed to red, instead of error and changing it back
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@89 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-11 08:36:11 +00:00
ad171a3257 enhancement:plotting interval changed to red for error
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@88 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-10 15:42:23 +00:00
55f7145b1b bugfix:settings undefined and uninitialized not disabled anymore
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@87 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-10 12:12:00 +00:00
87410f09de check if outdir exists,indent Actions,degreeC,cascode,thresholdscan(ev),not saving data secondary title,got rid of 2d sampledata
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@86 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-10 10:25:31 +00:00
b703e52563 bug fix: got rid of title as measurement,as it should be empty
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@85 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-08 09:01:20 +00:00
918765e06f bug fix:output directory did not set when using browse. solved
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@84 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-01 16:00:39 +00:00
9fc66d571e bug fix: run index, plots only new data, lockimage for clone
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@83 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-01 15:45:47 +00:00
7eb48a300d bug fix: time interval disabled when angular conversion disabled.solved
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@82 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-01 09:36:39 +00:00
887303c820 bug fix: time interval disabled when angular conversion disabled.solved
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@81 af1100a4-978c-4157-bff7-07162d2ba061
2012-10-01 09:36:25 +00:00
87f79a9327 without very verbose
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@80 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 17:05:38 +00:00
1eb07b31f6 bug fix: plot tab refresh doesnt change plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@79 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 16:55:33 +00:00
bdabf9e649 bug fix: update measurement index, update index does not use sharedmemory, start run index updated after measurement
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@78 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 16:08:10 +00:00
cfce337c46 bug fix:scans: backward scan plotting works now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@77 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 15:51:29 +00:00
f4bd585ba2 bug fix:scans: backward scan plotting works now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@76 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 15:41:37 +00:00
bc5fddbe1e bug fix: tabactions: positions disabled label color
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@75 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 14:30:36 +00:00
c506fcf739 script fixed
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@74 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 13:47:25 +00:00
4e4b8b9beb ang conversion enables positions without having to do refresh
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@73 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 13:05:07 +00:00
4143c648d8 bug fixed: constant scan widget: use red label to indicate wrong to, numsteps neednt be an integer
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@72 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 12:52:49 +00:00
d56780d906 bug fixed: must wait to get data for scans
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@71 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 11:44:49 +00:00
e6e991bc64 fixed constant scan widget problem
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@70 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 11:34:18 +00:00
bf8a1ec0d2 fixed constant scan widget problem
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@69 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 11:31:15 +00:00
a79c5c6183 fixed advanced tab, optimize settings, threshold and exposure time enabling, histogram plotting crashing
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@68 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-25 07:22:04 +00:00
197de5c995 checked in the change about config file at the very start of gui and gui version
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@67 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-21 10:14:03 +00:00
96c805f7bf Makefile with clean label addded
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@66 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-21 08:37:34 +00:00
1273a3b1a1 added images
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@65 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-21 08:32:47 +00:00
cd0d1976bc changed qw dir
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@64 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-20 10:19:27 +00:00
8c250ed26a modified makefile
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@63 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-20 10:12:05 +00:00
12eeebb439 done
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@62 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-20 09:25:44 +00:00
4f1c03c879 removed possible chances of a shared memory access during acquisition, start button to entable tabs, to refresh plot tab and startstoptoggle
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@61 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-19 15:10:28 +00:00
d01852892b done
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@60 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-19 14:40:27 +00:00
ee264e9b56 change filename in plot only when you get to plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@59 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-17 12:20:01 +00:00
34d20aa712 change filename in plot only when you get to plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@58 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-17 12:12:25 +00:00
4527e9f61b should be completely done except for mods in mythen for debuggin
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@57 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-14 15:19:09 +00:00
38451caa7c should all be done now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@56 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-14 14:55:53 +00:00
62b14f4199 fixed gettrimbits, histogram(still more),start stop,scans,not accessign shared memory duign acquisition
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@55 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-12 15:44:23 +00:00
f7078c3700 updated number of measurements to be taken from the detector class
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@54 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-10 17:55:44 +00:00
b85e03adfd included images
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@53 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-07 16:33:24 +00:00
c9db2c4272 included images
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@52 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-07 16:29:32 +00:00
a4a0237711 trim tab works except for graph
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@51 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-07 08:17:16 +00:00
b67f3a83d8 stop signal works, call back works, number of probes to expert mode, angular works
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@50 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-05 08:42:03 +00:00
e32c1de0af stop signal works, call back works, number of probes to expert mode, angular works
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@49 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-05 07:33:55 +00:00
63fadd3633 added color to collapse in actions, changed angular for number of data to be received, corrected constant size scan widget
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@48 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-04 10:30:18 +00:00
a754e419fe loading and saving trimbits and calibration file works now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@47 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-03 09:35:01 +00:00
f0217ce9b1 loading and saving trimbits and calibration file works now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@46 af1100a4-978c-4157-bff7-07162d2ba061
2012-09-03 09:25:09 +00:00
a25b74c9ab angle done, more of trimming...save, load, yet to fix number of probes
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@45 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-31 15:09:13 +00:00
4686cb9c0e the angles should work now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@44 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-30 16:45:11 +00:00
c4d478484b deleted some forms not used
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@43 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-30 08:35:45 +00:00
fa5817ab77 constant size scan widget works properly now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@42 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-30 08:28:16 +00:00
86ccd014ab included position scan
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@41 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-29 09:07:05 +00:00
c9ecec183f included position scan
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@40 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-29 09:06:49 +00:00
51e7feb605 the scans work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@39 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-27 14:50:59 +00:00
ee3a54601c the scans work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@38 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-27 14:11:58 +00:00
73152572a5 a rough idea of a scan is implemented with all frames
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@37 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-21 16:52:41 +00:00
cc176ea404 updated plot to show index instead of frame number
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@36 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-21 12:05:22 +00:00
1ce04ef785 updated plot to show index instead of frame number
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@35 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-21 11:53:23 +00:00
40af9384b5 fixed the losing focus too often problem in rangeSizeWidget for scanwidget
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@34 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-17 14:31:47 +00:00
6c19d75359 included high voltage for developer tab in gotthard
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@33 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-17 13:16:02 +00:00
b21b4d066c included high voltage for developer tab in gotthard
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@32 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-17 13:12:08 +00:00
685e236828 energy calibration is not needed anymore
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@31 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-17 10:37:06 +00:00
92406bf6a8 energy calibration is not needed anymore
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@30 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-17 10:35:39 +00:00
423a47cd9e git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@29 af1100a4-978c-4157-bff7-07162d2ba061 2012-08-17 10:29:46 +00:00
30c11d7589 fixed the dac problem
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@28 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-15 17:21:05 +00:00
63bfdb9cb9 dacs and adcs work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@27 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-08 17:10:44 +00:00
a47d0a57f6 finished getting dacs and adcs..need to set it
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@26 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-07 19:11:54 +00:00
72c52de2fe included checkbox for enable file write
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@25 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-07 12:20:50 +00:00
bcb4710477 changed such that getdata returns if not really necessary to copy
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@24 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-07 10:19:15 +00:00
e88e24178c scans work as of now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@23 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-06 16:15:33 +00:00
2dbdf8ff17 fixed bugs to do with stacked trace and fixed file input range for scan
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@22 af1100a4-978c-4157-bff7-07162d2ba061
2012-08-03 16:52:21 +00:00
63f9d04981 actions without scan, positions, min plotimer=250,acquisition problem,error showing in actions tab
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@21 af1100a4-978c-4157-bff7-07162d2ba061
2012-07-27 10:01:35 +00:00
111608bdc8 included number of triggers for number of measurements, script and parameters work for non scan types
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@20 af1100a4-978c-4157-bff7-07162d2ba061
2012-07-24 15:39:36 +00:00
3b59d03526 going to start actions
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@19 af1100a4-978c-4157-bff7-07162d2ba061
2012-07-19 14:20:51 +00:00
d2b9b6ae1d interval between plots work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@18 af1100a4-978c-4157-bff7-07162d2ba061
2012-07-11 17:06:12 +00:00
6fb45c6c4b set current measurement dont work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@17 af1100a4-978c-4157-bff7-07162d2ba061
2012-07-04 15:09:29 +00:00
81ac62dd49 no plot histogram, messages work
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@16 af1100a4-978c-4157-bff7-07162d2ba061
2012-07-04 13:39:30 +00:00
ec0878d008 created messages tab-not working completely yet
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@15 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-28 08:35:21 +00:00
824da9d4c4 snapshot works,id works, conversion from seconds to ms,us etc works, number of measurements works
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@14 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-26 15:06:55 +00:00
b3de7a9051 made number of measurements static
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@13 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-20 15:26:31 +00:00
31b65642cb The timing mode works now
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@12 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-20 15:02:35 +00:00
69e6500522 All the ranges of the axes work properly without zooming in and out each time
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@11 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-19 15:01:40 +00:00
8246154032 Setting axes range and enabling/disabling zooming functionalities successfull
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@10 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-15 12:10:54 +00:00
2b02f94fe3 small changes from the meeting
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@9 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-08 10:21:30 +00:00
ef41286bf0 Got rid of tabAction form
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@8 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-06 15:45:46 +00:00
06ec6558a1 Got rid of tabAction form
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@7 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-06 15:44:33 +00:00
7a218418d1 Version 1 with the action tab working
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@6 af1100a4-978c-4157-bff7-07162d2ba061
2012-06-06 15:23:55 +00:00
20cc6d9a90 done with save plot and all resizing options
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@5 af1100a4-978c-4157-bff7-07162d2ba061
2012-05-29 16:49:30 +00:00
216a9ada7c made some changes to make clone and main window resize plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@4 af1100a4-978c-4157-bff7-07162d2ba061
2012-05-29 08:26:49 +00:00
4624c65398 made some changes to make clone and main window resize plot
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@3 af1100a4-978c-4157-bff7-07162d2ba061
2012-05-29 08:24:03 +00:00
934bbbd0c8 resize works
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@2 af1100a4-978c-4157-bff7-07162d2ba061
2012-05-23 16:00:35 +00:00
9f851d6156 Creating Classes, Libraries and Functions for the Common SLS Detector GUI
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorGui@1 af1100a4-978c-4157-bff7-07162d2ba061
2012-05-21 16:00:26 +00:00
342 changed files with 66926 additions and 23276 deletions

7
.gitignore vendored
View File

@ -8,3 +8,10 @@ slsReceiverSoftware/
slsDetectorCalibration/
slsImageReconstruction/
.settings
JCTBGui/
*.aux
*.log
*.out
*.toc
build
tests

21
CMakeLists.txt Normal file
View File

@ -0,0 +1,21 @@
cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
find_package(Qt4)
find_package(Qwt 6)
find_package(CBF)
find_package(Doxygen)
add_subdirectory(slsDetectorSoftware)
add_subdirectory(slsReceiverSoftware)
add_subdirectory(slsImageReconstruction)
if (QT4_FOUND AND QWT_FOUND)
add_subdirectory(slsDetectorGui)
endif()
if (DEFINED ENV{ROOTSYS})
find_package(ROOT)
if (ROOT_FOUND)
add_subdirectory(calibrationWizards)
endif()
endif()

View File

@ -1,157 +0,0 @@
#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;
}

View File

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

View File

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

View File

@ -1,228 +0,0 @@
#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;
}

View File

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

View File

@ -1,215 +0,0 @@
#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();
}

View File

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

View File

@ -1,122 +0,0 @@
#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;
}

View File

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

View File

@ -1,88 +0,0 @@
#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();
}
}

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@ -1,665 +0,0 @@
#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:
;
}
}

View File

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

View File

@ -1,532 +0,0 @@
#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());
}

View File

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

View File

@ -1,186 +0,0 @@
#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);
}

View File

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

View File

@ -1,257 +0,0 @@
#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;
}

View File

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

View File

@ -19,7 +19,7 @@ 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)

44
README.md Normal file
View File

@ -0,0 +1,44 @@
# slsDetector package
## Installation
### Get source
The source code is organised into several submodules, and the top level module is
sls_detectors_package.
```
$ git clone git@git.psi.ch:sls_detectors_software/sls_detectors_package.git
$ cd sls_detectors_package
$ ./checkout.sh
```
### Setup dependencies
The GUI client requires Qt 4.8 and Qwt 6.0
```
export QTDIR=/usr/local/Trolltech/
export QWTDIR=/usr/local/qwt-6.0.1/
```
If either of them does not exist, the GUI client will not be built.
The calibration wizards require ROOT
```
export ROOTSYS=/usr/local/root-5.34
```
### Compile
Use cmake to create out-of-source builds, by creating an build folder parallel to source directory.
```
$ cd ..
$ mkdir sls_detectors_package-build
$ cd sls_detectors_package-build
$ cmake ../sls_detectors_package
$ make
```
The libraries and executables will be found at `bin` directory
```
$ ls bin/
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a libSlsReceiver.so
sls_detector_acquire sls_detector_get slsDetectorGui sls_detector_help sls_detector_put slsReceiver
```

135
RELEASE.txt Normal file
View File

@ -0,0 +1,135 @@
SLS Detector Package 2.3.0 released on 2017-03-23
================================================================================
INTRODUCTION
This document describes the differences between previous versions and 2.3.0 releases.
Manuals can be found under the 'manual' folder.
User documentation and other help can be accessed directly at this location:
https://www.psi.ch/detectors/users-support
If you have any software related questions or comments, please send them to:
dhanya.thattil@psi.ch
CONTENTS
- Changes in User Interface
- New Features
- Resolved Issues
- Known Issues
Changes in User Interface
=========================
This release supports the following features:
Receiver
--------
- The files will be written in this format in the default mode:
* ASCII file header of 1024 bytes (only for EIGER detectors)
* series of images, each preceded by a Standard Header image
(header described below)
- Stanard Header image header in file and call back
arguments defined. It is in the following format defined as
sls_detector_header defined in
slsReceiverSoftware/include/sls_receiver_defs.h
Mostly 0 if not applicatble or implemented, but updated in next release
from firmware.
* Frame Number : 8 bytes # Image Number
* Exposure Length : 4 bytes # sub frame number in 32 bit mode
Eiger.
* Packet Number : 4 bytes # Number of packets in an image
* Bunch ID : 8 bytes # Bunch Id in beamline for jungfrau.
* Timestamp : 8 bytes # Not implemened
* Module Id : 2 bytes # Not implemented
* X Coordinate : 2 bytes # Id of part of detector in 1D
* Y Coordinate : 2 bytes # Not implemented
* Z Coordinate : 2 bytes # Not implemented
* Debug : 4 bytes # Not implemented
* Round Robin Number : 2 bytes # Not implemented
* Detector Type : 1 byte # Detector type defined by enum
detectorType in slsReceiverSoftware
/include/sls_receiver_defs.h
* Header Version : 1 byte # 1
- The call back value for Start Acquisition Call back is insignificant at the
moment and left for future use. Instead, the following rules apply:
* If file write is enabled from the client, we will write the files.
* If callbacks are registered, they will be called.
For example, the user prefers to write the data himself, one must disable
file write (so we dont write) and register the callbacks (so the user gets
the data).
New Features
============
Eiger
-----
- Tau is moved to settings file, Gain and offset are removed from calibration
file. Put settings only sets client variable, whereas putting threshold loads
settings files to the server.
- Mode argument in starting up receiver is removed. FlippedData command is used
in config file to specify bottom.
Receiver
--------
- Image Reconstruction from the files are different as packet headers are not
stored and a standard image header is used.
General
-------
- Users folder that gives an example on how to user the slsDetectorUsers and
slsReceiverUsers class.
- Data is streamed from Receiver to Gui via ZMQ if gui call back defined.
Resolved Issues
===============
Eiger
-----
- Frame and packet counters in server to check delays were buggy.
Known Issues
============
- X, Y and Z Coordinates do not exactly define the position of the
detector in 3d. This will be defined in the next release. Other header
parameters will be complete in the next release.
- Too many split files per detector especially for Eiger. Next Release will
have a HDF5 version, with virtual file mapping all the split files in an
acquisition.
- This version is tested only for Eiger and Jungfrau.

View File

@ -10,6 +10,8 @@ git clone $1@git.psi.ch:sls_detectors_software/sls_receiver_software.git slsRece
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/sls_image_reconstruction.git slsImageReconstruction
git clone $1@git.psi.ch:sls_detectors_software/calibration_wizards.git calibrationWizards
#git clone git@git.psi.ch:sls_detectors_software/tests.git tests

11
cmake/FindCBF.cmake Normal file
View File

@ -0,0 +1,11 @@
FIND_PATH (CBF_INCLUDE_DIR
${CBF_DIR}/include
${CBF_DIR}/include/cbflib
)
FIND_LIBRARY (CBF_LIBRARY
NAMES cbf
HINTS ${CBF_DIR}/lib
)
INCLUDE ( FindPackageHandleStandardArgs )
FIND_PACKAGE_HANDLE_STANDARD_ARGS (CBF DEFAULT_MSG CBF_LIBRARY CBF_INCLUDE_DIR )

118
cmake/FindQwt.cmake Normal file
View File

@ -0,0 +1,118 @@
# Qt Widgets for Technical Applications
# available at http://www.http://qwt.sourceforge.net/
#
# The module defines the following variables:
# QWT_FOUND - the system has Qwt
# QWT_INCLUDE_DIR - where to find qwt_plot.h
# QWT_INCLUDE_DIRS - qwt includes
# QWT_LIBRARY - where to find the Qwt library
# QWT_LIBRARIES - aditional libraries
# QWT_MAJOR_VERSION - major version
# QWT_MINOR_VERSION - minor version
# QWT_PATCH_VERSION - patch version
# QWT_VERSION_STRING - version (ex. 5.2.1)
# QWT_ROOT_DIR - root dir (ex. /usr/local)
#=============================================================================
# Copyright 2010-2013, Julien Schueller
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of the FreeBSD Project.
#=============================================================================
find_path ( QWT_INCLUDE_DIR
NAMES qwt_plot.h
HINTS $ENV{QWTDIR} $ENV{QWTDIR}/src ${QT_INCLUDE_DIR}
PATH_SUFFIXES qwt qwt-qt3 qwt-qt4 qwt-qt5
)
set ( QWT_INCLUDE_DIRS ${QWT_INCLUDE_DIR} )
# version
set ( _VERSION_FILE ${QWT_INCLUDE_DIR}/qwt_global.h )
if ( EXISTS ${_VERSION_FILE} )
file ( STRINGS ${_VERSION_FILE} _VERSION_LINE REGEX "define[ ]+QWT_VERSION_STR" )
if ( _VERSION_LINE )
string ( REGEX REPLACE ".*define[ ]+QWT_VERSION_STR[ ]+\"(.*)\".*" "\\1" QWT_VERSION_STRING "${_VERSION_LINE}" )
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1" QWT_MAJOR_VERSION "${QWT_VERSION_STRING}" )
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\2" QWT_MINOR_VERSION "${QWT_VERSION_STRING}" )
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\3" QWT_PATCH_VERSION "${QWT_VERSION_STRING}" )
endif ()
endif ()
# check version
set ( _QWT_VERSION_MATCH TRUE )
if ( Qwt_FIND_VERSION AND QWT_VERSION_STRING )
if ( Qwt_FIND_VERSION_EXACT )
if ( NOT Qwt_FIND_VERSION VERSION_EQUAL QWT_VERSION_STRING )
set ( _QWT_VERSION_MATCH FALSE )
endif ()
else ()
if ( QWT_VERSION_STRING VERSION_LESS Qwt_FIND_VERSION )
set ( _QWT_VERSION_MATCH FALSE )
endif ()
endif ()
endif ()
find_library ( QWT_LIBRARY
NAMES qwt qwt-qt3 qwt-qt4 qwt-qt5
HINTS $ENV{QWTDIR}/lib ${QT_LIBRARY_DIR}
)
set ( QWT_LIBRARIES ${QWT_LIBRARY} )
# try to guess root dir from include dir
if ( QWT_INCLUDE_DIR )
string ( REGEX REPLACE "(.*)/include.*" "\\1" QWT_ROOT_DIR ${QWT_INCLUDE_DIR} )
# try to guess root dir from library dir
elseif ( QWT_LIBRARY )
string ( REGEX REPLACE "(.*)/lib[/|32|64].*" "\\1" QWT_ROOT_DIR ${QWT_LIBRARY} )
endif ()
# handle the QUIETLY and REQUIRED arguments
include ( FindPackageHandleStandardArgs )
if ( CMAKE_VERSION LESS 2.8.3 )
find_package_handle_standard_args( Qwt DEFAULT_MSG QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH )
else ()
find_package_handle_standard_args( Qwt REQUIRED_VARS QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH VERSION_VAR QWT_VERSION_STRING )
endif ()
mark_as_advanced (
QWT_LIBRARY
QWT_LIBRARIES
QWT_INCLUDE_DIR
QWT_INCLUDE_DIRS
QWT_MAJOR_VERSION
QWT_MINOR_VERSION
QWT_PATCH_VERSION
QWT_VERSION_STRING
QWT_ROOT_DIR
)

167
cmake/FindROOT.cmake Normal file
View File

@ -0,0 +1,167 @@
# - Finds ROOT instalation
# This module sets up ROOT information
# It defines:
# ROOT_FOUND If the ROOT is found
# ROOT_INCLUDE_DIR PATH to the include directory
# ROOT_LIBRARIES Most common libraries
# ROOT_GUI_LIBRARIES Most common libraries + GUI
# ROOT_LIBRARY_DIR PATH to the library directory
find_program(ROOT_CONFIG_EXECUTABLE root-config
PATHS $ENV{ROOTSYS}/bin)
if(NOT ROOT_CONFIG_EXECUTABLE)
set(ROOT_FOUND FALSE)
else()
set(ROOT_FOUND TRUE)
execute_process(
COMMAND ${ROOT_CONFIG_EXECUTABLE} --prefix
OUTPUT_VARIABLE ROOTSYS
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND ${ROOT_CONFIG_EXECUTABLE} --version
OUTPUT_VARIABLE ROOT_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND ${ROOT_CONFIG_EXECUTABLE} --incdir
OUTPUT_VARIABLE ROOT_INCLUDE_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND ${ROOT_CONFIG_EXECUTABLE} --libs
OUTPUT_VARIABLE ROOT_LIBRARIES
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND ${ROOT_CONFIG_EXECUTABLE} --glibs
OUTPUT_VARIABLE ROOT_GUI_LIBRARIES
OUTPUT_STRIP_TRAILING_WHITESPACE)
#set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lThread -lMinuit -lHtml -lVMC -lEG -lGeom -lTreePlayer -lXMLIO -lProof)
#set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lProofPlayer -lMLP -lSpectrum -lEve -lRGL -lGed -lXMLParser -lPhysics)
set(ROOT_LIBRARY_DIR ${ROOTSYS}/lib)
# Make variables changeble to the advanced user
mark_as_advanced(ROOT_CONFIG_EXECUTABLE)
if(NOT ROOT_FIND_QUIETLY)
message(STATUS "Found ROOT ${ROOT_VERSION} in ${ROOTSYS}")
endif()
endif()
include(CMakeParseArguments)
find_program(ROOTCINT_EXECUTABLE rootcint PATHS $ENV{ROOTSYS}/bin)
find_program(GENREFLEX_EXECUTABLE genreflex PATHS $ENV{ROOTSYS}/bin)
find_package(GCCXML)
#----------------------------------------------------------------------------
# function ROOT_GENERATE_DICTIONARY( dictionary
# header1 header2 ...
# LINKDEF linkdef1 ...
# OPTIONS opt1...)
function(ROOT_GENERATE_DICTIONARY dictionary)
CMAKE_PARSE_ARGUMENTS(ARG "" "" "LINKDEF;OPTIONS" "" ${ARGN})
#---Get the list of header files-------------------------
set(headerfiles)
foreach(fp ${ARG_UNPARSED_ARGUMENTS})
file(GLOB files ${fp})
if(files)
foreach(f ${files})
if(NOT f MATCHES LinkDef)
set(headerfiles ${headerfiles} ${f})
endif()
endforeach()
else()
set(headerfiles ${headerfiles} ${fp})
endif()
endforeach()
#---Get the list of include directories------------------
get_directory_property(incdirs INCLUDE_DIRECTORIES)
set(includedirs)
foreach( d ${incdirs})
set(includedirs ${includedirs} -I${d})
endforeach()
#---Get LinkDef.h file------------------------------------
set(linkdefs)
foreach( f ${ARG_LINKDEF})
if( IS_ABSOLUTE ${f})
set(linkdefs ${linkdefs} ${f})
else()
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/inc/${f})
set(linkdefs ${linkdefs} ${CMAKE_CURRENT_SOURCE_DIR}/inc/${f})
else()
set(linkdefs ${linkdefs} ${CMAKE_CURRENT_SOURCE_DIR}/${f})
endif()
endif()
endforeach()
#---call rootcint------------------------------------------
add_custom_command(OUTPUT ${dictionary}.cxx ${dictionary}.h
COMMAND ${ROOTCINT_EXECUTABLE} -cint -f ${dictionary}.cxx
-c ${ARG_OPTIONS} ${includedirs} ${headerfiles} ${linkdefs}
DEPENDS ${headerfiles} ${linkdefs})
endfunction()
#----------------------------------------------------------------------------
# function REFLEX_GENERATE_DICTIONARY(dictionary
# header1 header2 ...
# SELECTION selectionfile ...
# OPTIONS opt1...)
function(REFLEX_GENERATE_DICTIONARY dictionary)
CMAKE_PARSE_ARGUMENTS(ARG "" "" "SELECTION;OPTIONS" "" ${ARGN})
#---Get the list of header files-------------------------
set(headerfiles)
foreach(fp ${ARG_UNPARSED_ARGUMENTS})
file(GLOB files ${fp})
if(files)
foreach(f ${files})
set(headerfiles ${headerfiles} ${f})
endforeach()
else()
set(headerfiles ${headerfiles} ${fp})
endif()
endforeach()
#---Get Selection file------------------------------------
if(IS_ABSOLUTE ${ARG_SELECTION})
set(selectionfile ${ARG_SELECTION})
else()
set(selectionfile ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_SELECTION})
endif()
#---Get the list of include directories------------------
get_directory_property(incdirs INCLUDE_DIRECTORIES)
set(includedirs)
foreach( d ${incdirs})
set(includedirs ${includedirs} -I${d})
endforeach()
#---Get preprocessor definitions--------------------------
get_directory_property(defs COMPILE_DEFINITIONS)
foreach( d ${defs})
set(definitions ${definitions} -D${d})
endforeach()
#---Nanes and others---------------------------------------
set(gensrcdict ${dictionary}.cpp)
if(MSVC)
set(gccxmlopts "--gccxmlopt=\"--gccxml-compiler cl\"")
else()
#set(gccxmlopts "--gccxmlopt=\'--gccxml-cxxflags -m64 \'")
set(gccxmlopts)
endif()
#set(rootmapname ${dictionary}Dict.rootmap)
#set(rootmapopts --rootmap=${rootmapname} --rootmap-lib=${libprefix}${dictionary}Dict)
#---Check GCCXML and get path-----------------------------
if(GCCXML)
get_filename_component(gccxmlpath ${GCCXML} PATH)
else()
message(WARNING "GCCXML not found. Install and setup your environment to find 'gccxml' executable")
endif()
#---Actual command----------------------------------------
add_custom_command(OUTPUT ${gensrcdict} ${rootmapname}
COMMAND ${GENREFLEX_EXECUTABLE} ${headerfiles} -o ${gensrcdict} ${gccxmlopts} ${rootmapopts} --select=${selectionfile}
--gccxmlpath=${gccxmlpath} ${ARG_OPTIONS} ${includedirs} ${definitions}
DEPENDS ${headerfiles} ${selectionfile})
endfunction()

View File

@ -11,29 +11,30 @@
\title{\E - short manual}
\date{\today}
\maketitle
\tableofcontents
\section{Usage}
\subsection{Mandatory setup - Hardware}
A EIGER single module (500~kpixels) needs:
An EIGER single module (500~kpixels) needs:
\begin{itemize}
\item A chilled (water+alcohol) at approximately 21~$^{\circ}$C, which needs to dissipate 85~W.
\item A power supply (12~V, 8~A).
\item 2$\times$1~Gb/s ethernet connectors to control the detector and, optionally, receive data at low rate. A DHCP server that gives IPs to the 1~Gb/s connectors of the detector is needed.
\item 2$\times$1~Gb/s Ethernet connectors to control the detector and, optionally, receive data at low rate. A DHCP server that gives IPs to the 1~Gb/s connectors of the detector is needed. Note that flow control has to be enabled on the switch you are using.
\item 2$\times$10~Gb/s transceivers to optionally, receive data at high rate.
\end{itemize}
Figure~\ref{fig:1} shows the relationship between the \textbf{Client} (which sits on a beamline control PC), the \textbf{Receiver} (which can run in multiple instances on one or more PCs which receive data from the detector. The receiver(s) does not necessary have to be running on the same PC as the client.) It is important that the receiver is closely connected to the detector.
\end{itemize}
The equipment scales linearly with the number of modules.
Figure~\ref{fig:1} shows the relationship between the \textbf{Client} (which sits on a beamline control PC), the \textbf{Receiver} (which can run in multiple instances on one or more PCs which receive data from the detector. The receiver(s) does not necessary have to be running on the same PC as the client.) It is important that the receiver is closely connected to the detector (they have to be on the same network). Note that if you implement the 1Gb/s readout only: client, receiver and detector have to be all three in the same network. If you implement the 10Gb/s readout, then client, the 1~GbE of the detector and the receiver have to stay on the 1GbE. But the receiver data receiving device and the 10GbE detector can be on their private network, minimizing the missing packets.
\begin{figure}[t]
\begin{center}
\includegraphics[width=.8\textwidth]{Client2}
\end{center}
\caption{Communications protocol between the Client PC, the receiver pc and the detector.}
\caption{Communications protocol between the Client PC, the receiver PC and the detector.}
\label{fig:1}
\end{figure}
The Client talks to control over 1~Gb ethernet connection using TCP/IP to the detector and to the receiver. The detector sends data in UDP packets to the receiver. This data sending can be done over 1~Gb/s or 10~Gb/s.
The Client talks to control over 1~Gb Ethernet connection using TCP/IP to the detector and to the receiver. The detector sends data in UDP packets to the receiver. This data sending can be done over 1~Gb/s or 10~Gb/s.
\subsection{Mandatory setup - Receiver}
@ -42,10 +43,10 @@ The receiver is a process run on a PC closely connected to the detector. Open on
\begin{itemize}
\item {\tt{./slsReceiver --rx\_tcpport xxxx}}
\item {\tt{./slsReceiver --rx\_tcpport yyyy --mode 1}}
\item {\tt{./slsReceiver --rx\_tcpport yyyy}}
\end{itemize}
where xxxx, yyyy are the tcp port numbers. Use 1955 and 1956 for example. Note that {\tt{--mode 1}} is used only for the ``bottom'' half module. \\ Open as many receiver as half module boards. A single module has two half module boards.
where xxxx, yyyy are the tcp port numbers. Use 1955 and 1956 for example. Note that in older version of the software {\tt{--mode 1}} was used only for the ``bottom'' half module. Now, the receiver for the bottom is open without arguments anymore, but still in the configuration file one needs to write {\tt{n:flippeddatax 1}}, where {\tt{n}} indicated the half module number, 1 if it is a module.
\\ Open as many receiver as half module boards. A single module has two half module boards.
\subsection{Mandatory setup - Client}
@ -59,7 +60,6 @@ The command line interface consists in these main functions:
\item[sls\_detector\_get] to retrieve detector parameters
\end{description}
First, your detector should always be configured for each PC that you might want to use for controlling the detector. All the examples given here show the command {\tt{0-}}, which could be omitted for the EIGER system $0$. In the case more EIGER systems are controlled at once, the call of {\tt{1-}},.. becomes compulsory.
To make sure the shared memory is cleaned, before starting, one should do:
@ -70,9 +70,39 @@ To do that:
\begin{verbatim}
sls_detector_put 0-config mydetector.config
\end{verbatim}
Refer to sample configuration files to produce the appropriate one for your detector.
\underline{In the case of cSAXS the {\tt{mydetector.config}} *at present* is:}\\
\underline{/sls/X12SA/data/x12saop/EigerPackage/beb\_1.5M\_1Gb\_fiber.config}
In the config file, if client, receiver and detector are using \textbf{1GbE} the following lines are mandatory:
\begin{verbatim}
detsizechan 1024 512 #detetctor geometry, long side of the module first
hostname beb059+beb058+ #1Gb detector hostname for controls
0:rx_tcpport 1991 #tcpport for the first halfmodule
0:rx_udpport 50011 #udp port first quadrant, first halfmodule
0:rx_udpport2 50012 #udp port second quadrant, first halfmodule
1:rx_tcpport 1992 #tcpport for the second halfmodule
1:rx_udpport 50013 #udp port first quadrant, second halfmodule
1:rx_udpport2 50014 #udp port second quadrant, second halfmodule
rx_hostname x12sa-vcons #1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
\end{verbatim}
In the config file, if client, receiver and detector commands are on 1Gb, but detector data to receiver are sent using \textbf{10GbE} the following lines are mandatory:
\begin{verbatim}
detsizechan 1024 512 #detetctor geometry, long side of the module first
hostname beb059+beb058+ #1Gb detector hostname for controls
0:rx_tcpport 1991 #tcpport for the first halfmodule
0:rx_udpport 50011 #udp port first quadrant, first halfmodule
0:rx_udpport2 50012 #udp port second quadrant, first halfmodule
0:rx_udpip 10.0.30.210 #udp IP of the receiver over 10Gb
0:detectorip 10.0.30.100 #first half module 10 Gb IP
1:rx_tcpport 1992 #tcpport for the second halfmodule
1:rx_udpport 50013 #udp port first quadrant, second halfmodule
1:rx_udpport2 50014 #udp port second quadrant, second halfmodule
1:rx_udpip 10.0.40.210 #udp IP of the receiver over 10Gb,
can be the same or different from 0:rx_udpip
1:detectorip 10.0.40.101 #second half module 10 Gb IP
rx_hostname x12sa-vcons #1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
\end{verbatim}
One can configure all the detector settings in a parameter file {\tt{setup.det}}, which is loaded by doing:
\begin{verbatim}
@ -82,7 +112,7 @@ sls_detector_put 0-parameters setup.det
In the case of \E, the proper bias voltage of the sensor has to be setup, i.e. the {\tt{setup.det}} file needs to contain the line {\tt{vhighvoltage 150}}. Other detector functionality, which are rarely changed can be setup here.
Other important settings that are configured in the {\tt{setup.det}} file are:
\begin{itemize}
\item {\tt{tengiga 0/1}}, which sets whether the detector is enabled to send data through the 1~or the 10~Gb ethernet.
\item {\tt{tengiga 0/1}}, which sets whether the detector is enabled to send data through the 1~or the 10~Gb Ethernet.
\item {\tt{flags parallel/nonparallel}}, which sets whether the detector is set in parallel acquisition and readout or in sequential mode. This changes the readout time of the chip and affects the frame rate capability (faster is {\tt{parallel}}, with higher noise but needed when the frame rate is $>2$~kHz.
\item {\tt{dr 32/16}} sets the detector in autosumming mode (32 bit counter or not autosumming, 12 bit out of the chip). This is strictly connected to what is required for the readout clock of chip. See next point.
\item {\tt{clkdivider 0/1/2}}. Changes the readout clock: 200, 100, 50~MHz. Note that autosumming mode ({\tt{dr 32}} only works at {clkdivider 2}). By selecting Refer to readout timing specifications in~section\ref{timing} for how to set the detector.
@ -92,20 +122,45 @@ Other important settings that are configured in the {\tt{setup.det}} file are:
One should notice that, by default, by choosing the option {\tt{dr 32}}, then the software automatically sets the detector to {\tt{clkdivider 2}}. By choosing the option {\tt{dr 16}}, the software automatically sets the detector to {\tt{clkdivider 1}}. One needs to choose {\tt{clkdivider 0}} after setting the {\tt{dr 16}} option to have the fastest frame rate.
We would recommend expert users (beamline people) to write their parameters file for the users.
\subsection{Standard acquisition}
You will then need to setup the detector threshold and settings, the exposure time, the number of real time frames and eventually how many real time frames should be acquired:
\section{API versioning}
The eigerDetectorServer running on the boards has a versioning API scheme that will make it crash if used with a wrong firmware.
You can also check your versioning by hand with the code:
\begin{verbatim}
sls_detector_get softwareversion
\end{verbatim}
gets the server (slsDetectorSoftware) version (answer is something like: {\tt{softwareversion 111920160722}}.
\begin{verbatim}
sls_detector_get thisversion
\end{verbatim}
returns the client version. The answer can be {\tt{thisversion 111220160718}}.
\begin{verbatim}
/sls_detector_get detectorversion
\end{verbatim}
returns the firmware version . The answer can be {\tt{detectorversion 11}}.
\section{Setting up the threshold}
\begin{verbatim}
sls_detector_put 0-trimen N xxxx yyyy zzzz
sls_detector_put 0-settings standard #[veryhighgain/highgain/lowgain/verylowgain] also possible
sls_detector_put 0-threshold energy_in_eV
\end{verbatim}
The first line requires to specify how many ({\tt{N}}) and at which energies in eV {\{tt{xxxx}}, {\tt{yyyy}}, {\tt{zzzz}} and so on) trimmed files were generated (to allow for an interpolation). This line should normally be included into the {\tt{mydetector.config}} file and should be set for you by one of the detector group.
NORMALLY, in this new calibration scheme, only {\tt{settings standard}} will be provided to you, unless specific cases to be discussed.
The threshold at 6000 eV , for example would be set as:{\tt{sls\_detector\_put 0-threshold 6000}}.
\section{Standard acquisition}
After you setup the setting and the threshold, you need to specify the exposure time, the number of real time frames and eventually how many real time frames should be acquired:
\begin{verbatim}
sls_detector_put 0-settings [standard/highgain/lowgain]
sls_detector_put 0-threshold 6000
sls_detector_put 0-exptime 1[time_is_s]
sls_detector_put 0-frames 10
sls_detector_put 0-period 0[time_is_s]
\end{verbatim}
In this case 10 consecutive 1~s frames will be acquired. Note that {\tt{period}} defines the sum of the acquisition time and the desired dead time before the next frame. If {\tt{period}} is set to 0, then the next frame will start as soon as the detector is ready to take another acquisition. \\
In this acquisition 10 consecutive 1~s frames will be acquired. Note that {\tt{period}} defines the sum of the acquisition time and the desired dead time before the next frame. If {\tt{period}} is set to 0, then the next frame will start as soon as the detector is ready to take another acquisition. \\
For \E, at the moment 3 settings are possible: {\tt{standard}}, {\tt{lowgain}} and {\tt{highgain}}. According to the setting chosen, one can reach different energies. Refer to the settings requirements for your detector.\\
Notice that the option {\tt{settings standard/highgain/lowgain}} actually loads the trimbit files so it is time consuming. Only setting the {\tt{threshold}} does not load trimbit files.
For \E, at the moment 5 settings are possible: {\tt{standard}}, {\tt{lowgain}}, {\tt{verylowgain}}, {\tt{veryhighgain}} and {\tt{highgain}}. According to the setting chosen, one can reach different requirements (low noise or high rate). Refer to the settings requirements for your detector.\\
Notice that the option {\tt{settings standard/highgain/lowgain/veryhighgain/verylowgain}} actually loads the trimbit files so it is time consuming. Only setting the {\tt{threshold}} does not load trimbit files.
The threshold is expressed in (eV) as the proper threshold setting, i.e. normally is set to 50\% of the beam energy.
@ -123,19 +178,43 @@ To acquire simply type:
\begin{verbatim}
sls_detector_acquire 0-
\end{verbatim}
Note that acquiring is blocking.
You can poll the status of the detector with:
\begin{verbatim}
sls_detector_get status
\end{verbatim}
If the detector is still acquiring, the answer will return {\tt{running}}. If the detector has finished and ready for the next acquisition, then it will return {\tt{idle}}.
You can also ask for the status of the receiver, to know when it has returned and finished getting the data with:
\begin{verbatim}
sls_detector_get receiver
\end{verbatim}
There is a more complex way of performing an acquisition, that is useful for debugging and in case one wants a non blocking behavior:
\begin{itemize}
\item {\tt{sls\_detector\_put 0-receiver start}}
\item {\tt{sls\_detector\_put 0-status start}}
\end{itemize}
You can poll the detector status using:
\begin{verbatim}
sls_detector_get 0-status
\end{verbatim}
If the receiver has not yet received the finished signal by the detector, the answer will return {\tt{running}}. If the detector has finished and ready for the next acquisition, then it will return {\tt{idle}}.
When the detector is {\tt{idle}}, then you need to stop the receiver doing:
\begin{itemize}
\item {\tt{sls\_detector\_put 0-receiver stop}}
\end{itemize}
You can then reset to zero the number of frames caught, if you desire:
\begin{itemize}
\item {\tt{sls\_detector\_put 0-resetframescaught 0}}
\end{itemize}
The detector will not accept other commands while acquiring. If an acquisition wishes to be properly aborted, then:
\begin{verbatim}
sls_detector_put 0-status stop
\end{verbatim}
\begin{itemize}
\item {\tt{sls\_detector\_put 0-status stop}}
\end{itemize}
this same command can be used after a non proper abortion of the acquisition to reset to normal status the detector.
\subsection{Readout timing- maximum frame rate}\label{timing}
\section{Readout timing- maximum frame rate}\label{timing}
IMPORTANT: to have faster readout and smaller dead time, one can configure {\tt{clkdivider}}, i.e. the speed at which the data are read, i.e. 200/100/50~MHz for {\tt{clkdivider 0/1/2}} and the dead time between frames through {\tt{flags parallel}}, i.e. acquire and read at the same time or acquire and then read out.
The configuration of this timing variables allows to achieve different frame rates. NOTE THAT IN EIGER, WHATEVER YOU DO, THE FRAME RATE LIMITATIONS COME FROM THE NETWORK BOTTLENECK AS THE HARDWARE GOES FASTER THAN THE DATA OUT.
@ -150,7 +229,7 @@ In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from
\end{itemize}
Note that in the {\tt{continuous}} mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuos one can be achieved. Still, this extra buffering is possible till the memories are not saturated.
The number of images that can be stored on memories are:
\ \\
\begin{table}
\begin{tabular}{|c|c|}
\hline
dynamic range & images\\
@ -162,12 +241,14 @@ dynamic range & images\\
16 & 7600\\
\hline
\end{tabular}
\caption{Amount of images that can be stored on board.}
\end{table}
The maximum frame rate achievable with 10~GbE, {\tt{dr 16}}, {\tt{flags continuous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{6.1~kHz}. This is currently limited by the connection between the Front End Board and the Backend board. We expect the 32 bit mode limit to be \textbf{2~kHz} ({\tt{clkdivider 2}}).
In dynamic range {\tt{dr 8}} the frame rate is \textbf{11~kHz} and for{\tt{dr 4}} is \textbf{22~kHz}. For 4 and 8 bit mode the frame rate are directly limited by the speed of the detector chip and not by the readout boards.
Here is a list of all the readout times in the different configurations:
\ \\
\begin{table}
\begin{tabular}{|c|c|c|c|c|}
\hline
dynamic range & clkdivider & mode & readout time ($\mu$s) & max frame rate (kHz)\\
@ -189,11 +270,12 @@ dynamic range & clkdivider & mode & readout time ($\mu$s) & max frame rate (kHz)
32 & 2 & nonparallel & 504 & $<2$\\
\hline
\end{tabular}
\caption{Readout settings.}
\end{table}
\textbf{As if you run too fast, the detector could become noisier, it is important to match the detector settings to your frame rate. This can be done having more parameters files and load the one suitable with your experiment.} We experienced that {\tt{highgain}} settings could not be used at 6~kHz.
\subsection{External triggering options}
\section{External triggering options}
The detector can be setup such to receive external triggers. Connect a LEMO signal to the TRIGGER IN connector in the Power Distribution Board. The logic 0 for the board is passed by low level 0$-$0.7~V, the logic 1 is passed to the board with a signal between 1.2$-$5~V. Eiger is 50~$\Omega$ terminated. By default the positive polarity is used (negative should not be passed to the board).
\begin{verbatim}
sls_detector_put 0-timing [auto/trigger/burst_trigger/gating]
@ -214,9 +296,8 @@ Here are the implemented options so far:
Hardware-wise, the ENABLE OUT signal outputs when the chips are really acquiring. This means that the single subframes will be outputted in 32 bit mode. The TRIGGER OUT outputs the sum-up-signal at the moment (which is useless). This will be changed in the future to output the envelop of the enable signal.
We are planning to change some functionality, i.e. unify the {\tt{trigger}} and {\tt{burst}} trigger modes and make both {\tt{frames}} and {\tt{cycles}} configurable at the same time.
\subsection{Advanced autosumming and rate corrections}
\section{Autosumming and rate corrections}
In the case of autosumming mode, i.e, {\tt{dr 32}}, the acquisition time ({\tt{exptime}} is broken in as many subframes as they fit into the acquisition time minus all the subframes readout times. By default the {\tt{subexptime}} is set to 2.621440~ms. This implies that 12 bit counter of \E will saturate when the rate is above or equal to 1.57~MHz/pixel. The minimum value is of order of 10~ns (although as explained values smaller than 500~$\mu$s do not make sense). The maximum value is 5.2~s.
@ -227,7 +308,7 @@ sls_detector_put 0-subexptime [time_in_s]
One needs to realize that the readout time, for each subframe is 10.5~$\mu$s if the detector is in parallel mode. 500~$\mu$s if the detector is in non parallel mode. Note that in {\tt{dr 32}}, as the single frame readout from the chip is 500~$\mu$s, no {\tt{subexptime}}$<$500~$\mu$s can be set in {\tt{parallel}} mode. To have smaller {\tt{subexptime}}, you need the {\tt{nonparallel}} mode, although this will have a larger deadtime than the acquisition time.\\
Online rate corrections can be activated. They are particularly useful and implemented \textbf{only} in the autosumming mode, i.e. when {\tt{dr 32}} is activated as every single subframe is corrected before summing it. To correct for rate, the subframe duration has to be known to the correction algorithm.
Online rate corrections can be activated for {\tt{dr=32}}. They are particularly useful in the autosumming mode as every single subframe is corrected before summing it. To correct for rate, the subframe duration has to be known to the correction algorithm. Rate corrections for {\tt{dr=16}} will be activated as well in the next firmware release.
To activate the rate corrections, one should do:\\
\begin{verbatim}
sls_detector_put 0-ratecorr [tauval_in_ns]
@ -236,13 +317,87 @@ To deactivate:
\begin{verbatim}
sls_detector_put 0-ratecorr 0
\end{verbatim}
Default values for tau can be loaded from the calibration files. In this case, one needs to make sure the appropriate tau value is written in the calibration file, then need to load the appropriate {\tt{settings}} or {\tt{calibrations}} at least once before. Now to activate the rate corrections with the value written in the calibrations, once would do:
Default values for tau can be loaded from the trimbit files. In this case, one needs to make sure the appropriate tau value is written in the trimbit files, then need to load the appropriate {\tt{settings}} and {\tt{vthreshold}} before. Now to activate the rate corrections with the value written in the trimbit file or interpolated from there, once would do:
\begin{verbatim}
sls_detector_put 0-ratecorr -1
\end{verbatim}
Every time either the rate corrections are activated, $\tau$ is changed or the subframe length is changed, then a new correction table is evaluated. Note that computing the correction table is time consuming.
\section{1Gb/s, 10Gb/s links}
\subsection{Checking the 1Gb/s, 10Gb/s physical links}
LEDs on the backpanel board at the back of each half module signal:
\begin{itemize}
\item the 1Gb/s physical link is signaled by the most external LED (should be green)
\item the 10Gb/s physical link is signaled by the second most external LED next to the 1Gb/s one (should be green)
\end{itemize}
\subsection{Delays in sending for 1Gb/s, 10Gb/s, 10Gb flow control, receiver fifo}
Extremely advanced options allow to:
\begin{itemize}
\item Activate the flow control for 10~Gb/s~E (by default the 1~Gb/s~E is always active and cannot be switched off:
\begin{verbatim}
./sls_detector_put flowcontrol_10g 1
\end{verbatim}
\item Delay the transmission of the left port. This delay option is useful in the case of many simultaneous receivers running, such that it reduces the throughput to the receivers all at the same time. To be used board by board (i.e {\tt{X:, Y:,etc..}} with different units:
\begin{verbatim}
./sls_detector_put X:txndelay_left xxxx
\end{verbatim}
\item Transmission delay of the right port, same as above. The value here should be different from the left port to spread the transmission even more
\begin{verbatim}
./sls_detector_put X:txndelay_right yyyy
\end{verbatim}
As example:
\begin{verbatim}
for X in \$(seq 0 4); do ./sls_detector_put \$X:txndelay_left \$((X*100000)); done
\end{verbatim}
\begin{verbatim}
./sls_detector_put \$X:txndelay_right \$((X*100000)); X=\$((X+1)); done
\end{verbatim}
\item Set transmission delay of the entire frame. This is required as you want to finish sending the first frame to all receivers before starting sending the second frame to the receivers with shorter delay time. This value has to be greater than the maximum of the transmission delays of each port.
\begin{verbatim}
./sls_detector_put txndelay_frame zzzz
\end{verbatim}
In the example before, it would be: {\tt{zzzz}}=4*100000+ 100000
\item Readjust the size of the fifo of the receiver between listening and writing (useful when writing is limited)
\begin{verbatim}
./sls_detector_put rx_fifodepth xxxx
\end{verbatim}
{\tt{xxxx}} is 100 images by default.
\item Deactivate a half module (for ROI or debugging):
\begin{verbatim}
./sls_detector_put X:activated 0
\end{verbatim}
where $X$ is the half module you want to deactivate.
The receiver at this point will return fake data (overflow) for this module. If you wish to eliminate the receiver overall for this module, then you need to run a configuration file where this module has been removed.
To activate back a module, do:
\begin{verbatim}
./sls_detector_put X:activated 1
\end{verbatim}
\end{itemize}
\subsection{Setting up 10Gb correctly: experience so far}
For configuring well the 10Gb card not to loose packets, as root, do:
\begin{verbatim}
ethtool -G xth1 rx 4096, ethtool -C xth1 rx-usecs 100
\end{verbatim}
where {\tt{xth1}} can be replaced with the correct 10Gb device. To minimise loosing packets, priorities are set better as root user, so have the receiver as root.
To try to bypass being root, we trued something like this:
\begin{verbatim}
/etc/security/limits.conf username rtprio 99
\end{verbatim}
but somehow it did not fully worked so we kept the trick of being root.
Very important is to activate the flow control in 10Gb (in 1Gb it is on by default and not configurable)
\begin{verbatim}
./sls_detector_put flowcontrol_10g 1
\end{verbatim}
Set the transmission delays as explained in the manual.
\section{Offline processing and monitoring}
\subsection{Offline image reconstruction}
The offline image reconstruction is in {\tt{slsDetectorsPackage/slsImageReconstruction}}.
@ -258,12 +413,150 @@ eg.
To use it for a 1.5 multi modules:
\begin{verbatim}
cbfMaker [filename] [pixels x] [pixels y] [start det]
cbfMaker [filename] [pixels x] [pixels y] ([singlemodulelongside_x] [start det])
\end{verbatim}
eg.
{\tt cbfMaker /scratch/run\_63\_d0\_f000000000000\_3.raw 3072 512 0}.\\
\underline{The executable {\tt{bcfMakerMulti [file\_name\_with\_dir]}} contains the hardcoded}\\\underline{ geometry for the 1.5M at CSAXS.}
Missing packets in a frame and border pixels ($\times 2$ and $/times 4$ are given with value $-1$ at the present mode.
{\tt cbfMaker /scratch/run\_63\_d0\_f000000000000\_3.raw 3072 512 1 0}.\\
The {\tt{[singlemodulelongside\_x]}} and {\tt{[start det]}} param are optional. Defaults are ``1'', the detector long side is on the x coordinate and start to reconstruct from module 0.
The executables:
\begin{verbatim}
bcfMaker1.5M [file_name_with_dir]
bcfMaker9M [file_name_with_dir]
\end{verbatim}
contain the hardcoded geometry for the 1.5M (3 modules horizontal on the long side) and for the 9M at cSAXS: 6(short side)$\times$3 (long side) modules.\\
Missing packets in a frame and border pixels ($\times 2$ and $\times 4$ are given with value $-1$ at the present time.
It is important to know, that the pixels at the edge between 2 chips count more as double size. We can virtually introduced 1 virtual pixel per double larger pixel, so to have an even number of counts everywhere. Virtual pixels (not filled ) between module gaps are also inserted.
\begin{verbatim}
GapPixelsBetweenChips_x = 2;
GapPixelsBetweenChips_y = 2;
GapPixelsBetweenModules_x = 8;
GapPixelsBetweenModules_y = 36;
\end{verbatim}
\subsection{Read temperatures/HV from boards}
With an updated kernel on the linux boards (ask to the SLS detector group for specifications), it is possible to monitor the temperature on the Back End Boards:
\begin{verbatim}
temp_fpga #gets the temperature of the fpga
temp_fpgaext #gets the temperature close to the fpga
temp_10ge #gets the temperature close to the 10GE
temp_dcdc #gets the temperature close to the dc dc converter
temp_sodl #gets the temperature close to the left so-dimm memory
temp_sodr #gets the temperature close to the right so-dimm memory
temp_fpgafl #gets the temperature of the left front end board fpga
temp_fpgafr #gets the temperature of the right front end board fpga
\end{verbatim}
You need to use the command specifying from which board you desire the temperature readings, for example:
\begin{verbatim}
./sls_detector_get 0:temp_fpga
./sls_detector_get 1:temp_fpga
\end{verbatim}
In 500k--2M pixel systems there is a hardware temperature safety switch, which will cut power to the BEBs when reaching a too high temperature. For the 9M system, there is a temperature sensor read by the bchip100 PCU which will shutdown the detector when above a certain temperature.
The HV can also be set and read through the software:
\begin{verbatim}
./sls_detector_put vhighvoltage 150
./sls_detector_get vhighvoltage
\end{verbatim}
Note that the get {\tt{vhighvoltage}} would return the measured HV from the master module only.
\appendix
\section{Kill the server, copy a new server, start the server}
All the below operations are form a terminal and assume you login to the boards.\\
Kill current server:
\begin{verbatim}
ssh root@bebxxx #password is root
killall eigerDetectorServer # kill server and stopserver
\end{verbatim}
Copy a new version of the server (if necessary, otherwise skip it):
\begin{verbatim}
cd executables
scp user@pc:/path/eigerDetectorServerNewVersion .
chmod 777 eigerDetectorServerNewVersion
mv eigerDetectorServerNewVersion eigerDetectorServer
sync
\end{verbatim}
Start the server again:
\begin{verbatim}
./eigerDetectorServer &
\end{verbatim}
\section{Loading firmware bitfiles}
A \textbf{bcp} executable (which needs \textbf{tftp} installed on the PC, is needed. First of all, you need to press something on the detector: to programm bitfiles (firmware files), do a hard reset with a pin/thin stuff in the holes at the very back of the module. They are between the top 7 LED and the bottom 1 and opposite for the other side. Push hard till all LEDs are alternating green and red. After booting only the central one should be on green and red alternating. From a terminal, do:
\begin{verbatim}
nc -p 3000 -u bebxxx 3000
\end{verbatim}
where {\tt{xxx}} is the board number. It is enough top monitor with {\tt{nc}} only one board. Pres enter twice (till you see a prompt with the board hostname printed) and keep this terminal to monitor. It takes a bit of time to load the bitfiles, but the terminal tells you.\\
From another terminal you do:
\begin{verbatim}
./bcp feb_left.bit bebxxx:/febl
sleep 300; #or till the screen over netcat has told you Successful
./bcp feb_right.bit bebxxx:/febr
sleep 300; #or till the screen over netcat has told you Successful
./bcp download.bit bebxxx:/fw0
sleep 300; #or till the screen over netcat has told you Successful
\end{verbatim}
If you need to program a new kernel (only needed when told to do so):
\begin{verbatim}
./bcp kernel_local bebxxx:/kernel
sleep 300; #or till the screen over netcat has told you Successful
\end{verbatim}
do the same for the other boards. You can program in parallel many boards, but you cannot load two bitfiles on the same board till loading and copying one process has finished. So load all left febs together, then proceed to the right febs, then the bebs. Power off completely everything. Power it on.
\section{Pulsing the detector}
There are two ways to pulse the detector:
\begin{itemize}
\item \textbf{Pulse digitally:} when you are interested to the output readout and do not care about the analog response from the pixels:
\begin{verbatim}
sls_detector_put vthreshold 4000
sls_detector_put vtr 4000
sls_detector_put pulsechip N #to pulse N
sls_detector_put pulsechip -1 #to get out of testing mode
\end{verbatim}
Note that the answer will be $2 \cdot \textrm{{\tt{N}}} +2$ in this case.
\item \textbf{Pulse analogically:} You want to really check the analogical part of the detcetor, not just the readout.
\begin{verbatim}
sls_detector_put vcall 3600
sls_detector_put vthreshold 1700
sls_detector_put vrf 3100
for i in $(seq 0 7) ;
do px=$((-255+i));
sls_detector_put pulse 0 $px 0;
for j in $(seq 0 255) ; do
sls_detector_put pulsenmove N 0 1;
done;
done;
sls_detector_p resmat 0
sls_detector_acquire
\end{verbatim}
You read {\tt{N}} in every pixel if you are setup correctly.
\end{itemize}
\section{Load a noise pattern with shape}
For debug purposes, we have created a noise pattern with a shape. If you reconstruct correctly your image, you should be able to read ".EIGER'' in the same direction for both the top and bottom in normal human readable orientation.
To load the special noise file look at {\tt{settingsdir/eiger/standard/eigernoise.sn0xx}} in the package.
\begin{verbatim}
sls_detector_put trimbits ../settingsdir/eiger/standard/eigernoise
sls_detector_put vthreshold 4000
sls_detector_put vtr 4000
\end{verbatim}
\section{Running the (9M at cSAXS. For now)}
\begin{itemize}
\item login as {\tt{x12saop@xbl-daq-27}}
\item {\tt{setup\_eiger}} \#loads environmental variables and brings you to the right directory to execute commands
\item slsReceiverScript3 1991 36 \# from one shell.. opens 36 receivers
\item p config ../../eiger\_9m\_10gb\_xbl-daq-27\_withbottom.config
\end{itemize}
\end{document}

View File

@ -287,7 +287,7 @@ Please refer to SLS Detectors FAQ documentation for more detailed information ab
\item[rx\_udpport i] sets the communication port between detector and receiver. Should be left to the configuration file.
\item[rx\_hostname s] sets the hostname (or IP address) of the receiver for the TCP/IP interface with the client.
\item[rx\_udpip ip] sets the IP address of the receiver for the UDP interface with the detector.
\item[rx\_fifodepth v] sets receiver fifo depth to value v. Default for \E is 100.
\item[rx\_fifodepth v] sets receiver fifo depth to value v. Default for \E is 100 frames betweeen listening and writing.
\item[r\_online b] sets the receiver in online (1) or offline (0) mode.
%\item[r\_checkonline]
%\item[framescaught]

View File

@ -396,3 +396,43 @@ where the default functions performing these actions are implemented and modify
A simple high-level solution in case you need to maintain the software for several beamlines and don't want to recompile for all of them is to call external scripts.
\section{In which data format are written the data?} \label{sec:dataFormat}
For MYTHEN the data are writen in ASCII fomat, one file per frame, in columns, either channel number - counts for the \textit{.raw} files or angle (or channel number)-counts-error for the \textit{.dat} files.
For the other detectors the files are written in binary format, and must be decoded depending on the detector.
\subsection{GOTTHARD}
Each file contains 100 frames.
\begin{description}
\item[Normal mode]
Each frame is split into 2 packets of 1286 bytes each, where actual data is 1280 bytes each. Both the packets (incl header and footer) are written one after the other into the file.
Representation of each packet:
\begin{itemize}
\item
The first 4 bytes represents a number from which, the frame number and packet number can be derived.
If the number was 108601, increment it by 1 to get 108602.\\
Then this $(108602\&0xFFFFFFFE)>>1 = 54301$ is the frame number
and $(108602\&0x1) =0$ is the packet number.\\
0 is the packet on the left and 1 is the packet on the right.\\
On a side note, when you use the data call back, we also give you the derived frame number as an argument.
\item Data of 1280 bytes. 16 bits per pixel.
\item 2 bytes of insignificant footer.
\end{itemize}
\item[Short Frame Mode]
One Frame has only one packet of 518 bytes, where actual data is 512 bytes.
\begin{itemize}
\item first 4 bytes is the frame number. There is no packet number or increment required herecompared to the normal mode.
\item Data of 512 bytes.
\item 2 bytes of insignificant footer.
\end{itemize}
\end{description}
\subsection{EIGER}
\subsection{JUNGFRAU}

View File

@ -1 +1 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.0.5.14.0
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.3.0.16.2

View File

@ -1 +1 @@
../slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServerv2.0.3
../slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServerv2.2.1

View File

@ -1,4 +1,4 @@
3433.58 486.39
3470.99 483.471
3480.06 479.017
3409.62 476.202
3486.22 365.75
3518.43 368.23
3519.11 357.62
3491.49 365.08

View File

@ -1,4 +1,4 @@
3685.67 246.055
3732.38 246.328
3741.86 245.924
3696.84 246.167
3415.26 226.24
3406.35 223.45
3407.89 225.60
3385.72 220.54

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,4 @@
3538.73 389.187
3499.86 374.654
3462.84 364.88
3514.72 381.02
3419.26 282.68
3451.04 285.35
3451.30 277.63
3431.27 283.41

View File

@ -1,4 +0,0 @@
3538.73 389.187
3499.86 374.654
3462.84 364.88
3514.72 381.02

View File

@ -0,0 +1,4 @@
3381.13 493.21
3385.45 490.36
3374.03 492.96
3363.40 483.72

Binary file not shown.

View File

@ -1,4 +0,0 @@
3538.73 389.187
3499.86 374.654
3462.84 364.88
3514.72 381.02

View File

@ -0,0 +1,4 @@
3323.57 124.58
3336.87 124.85
3302.45 123.64
3338.19 124.44

Binary file not shown.

View File

@ -1,17 +1,8 @@
VDAC0 1250
VDAC1 600
VDAC2 3000
VDAC3 830
VDAC4 1630
VDAC0 1220
VDAC1 3000
VDAC2 1053
VDAC3 1450
VDAC4 750
VDAC5 1000
VDAC6 480
VDAC7 400
VDAC8 1500
VDAC9 3000
VDAC10 1053
VDAC11 1000
VDAC12 750
VDAC13 1220
VDAC14 0
VDAC15 0
VDAC7 420

View File

@ -0,0 +1 @@
dynamicgain

View File

@ -1 +0,0 @@
../dynamicgain/calibration.sn

View File

@ -1 +0,0 @@
../dynamicgain/settings.sn

View File

@ -0,0 +1 @@
dynamicgain

View File

@ -1 +0,0 @@
../dynamicgain/calibration.sn

View File

@ -1 +0,0 @@
../dynamicgain/settings.sn

View File

@ -0,0 +1 @@
dynamicgain

View File

@ -1 +0,0 @@
../dynamicgain/calibration.sn

View File

@ -1 +0,0 @@
../dynamicgain/settings.sn

View File

@ -0,0 +1 @@
dynamicgain

View File

@ -1 +0,0 @@
../dynamicgain/calibration.sn

View File

@ -1 +0,0 @@
../dynamicgain/settings.sn

View File

@ -0,0 +1 @@
dynamicgain

View File

@ -1 +0,0 @@
../dynamicgain/calibration.sn

View File

@ -1 +0,0 @@
../dynamicgain/settings.sn

View File

@ -19,169 +19,91 @@ public:
*/
eigerHalfModuleData(int dr, int np, int bsize, int dsize, bool top, double c=0): slsReceiverData<uint32_t>(xpixels, ypixels, np, bsize),
xtalk(c), bufferSize(bsize), actualDataSize(dsize), dynamicRange(dr), numberOfPackets(np), top(top),header_t(0), footer_t(0){
eigerHalfModuleData(bool t, bool l, int dr, int tg, int psize, int dsize, int npf, int x, int y, double c=0):
slsReceiverData<uint32_t>(x, y, npf, psize),
top(t), left(l),
dynamicRange(dr), tenGiga(tg),
packetSize(psize), onepacketdataSize(dsize), numberofPacketsPerFrame(npf),
xtalk(c),
header_t(0), footer_t(0){
tenGiga = false;
if(actualDataSize == TEN_GIGA_PACKET_SIZE)
tenGiga = true;
int **dMap;
uint32_t **dMask;
dMap=new int*[ypixels];
dMask=new uint32_t*[ypixels];
dMap=new int*[ny];
dMask=new uint32_t*[ny];
for (int i = 0; i < ypixels; i++) {
dMap[i] = new int[xpixels];
dMask[i] = new uint32_t[xpixels];
for (int i = 0; i < ny; i++) {
dMap[i] = new int[nx];
dMask[i] = new uint32_t[nx];
}
//Map
int totalNumberOfBytes = numberOfPackets * bufferSize;
int iPacket1 = 8;
int iPacket2 = (totalNumberOfBytes/2) + 8;
int iData1 = 0, iData2 = 0;
int totalNumberOfBytes = numberofPacketsPerFrame * packetSize;
int iPacket = 8;
int iData = 0;
int increment = (dynamicRange/8);
int ic_increment = 1;
if (dynamicRange == 4) {
increment = 1;
ic_increment = 2;
}
int iPort;
if(top){
for (int ir=0; ir<ypixels; ir++) {
for (int ic=0; ic<xpixels; ic = ic + ic_increment) {
iPort = ic / (xpixels/2);
if(!iPort){
dMap[ir][ic] = iPacket1;
iPacket1 += increment;
iData1 += increment;
//increment header
if(iData1 >= actualDataSize){
iPacket1 += 16;
iData1 = 0;
}
}else{
dMap[ir][ic] = iPacket2;
iPacket2 += increment;
iData2 += increment;
//increment header
if(iData2 >= actualDataSize){
iPacket2 += 16;
iData2 = 0;
}
for (int ir=0; ir<ny; ir++) {
for (int ic=0; ic<nx; ic = ic + ic_increment) {
dMap[ir][ic] = iPacket;
iPacket += increment;
iData += increment;
//increment header
if(iData >= onepacketdataSize){
iPacket += 16;
iData = 0;
}
}
}
}
//bottom
else{
iData1 = 0; iData2 = 0;
int numbytesperlineperport;
iData = 0;
int numbytesperline;
switch(dynamicRange){
case 4: numbytesperlineperport = 256; break;
case 8: numbytesperlineperport = 512; break;
case 16:numbytesperlineperport = 1024; break;
case 32:numbytesperlineperport = 2048; break;
case 4: numbytesperline = 256; break;
case 8: numbytesperline = 512; break;
case 16:numbytesperline = 1024; break;
case 32:numbytesperline = 2048; break;
}
iPacket = totalNumberOfBytes - numbytesperline - 8;
if((dynamicRange == 32) && (!tenGiga))
iPacket -= 16;
iPacket1 = (totalNumberOfBytes/2) - numbytesperlineperport - 8;
iPacket2 = totalNumberOfBytes - numbytesperlineperport - 8;
if (dynamicRange == 32){
if(numbytesperlineperport>actualDataSize){ //1Giga
iPacket1 -= 16;
iPacket2 -= 16;
}else{ //10Giga
;//iPacket1 -= numbytesperlineperport;
//iPacket2 -= numbytesperlineperport;
}
}
for (int ir=0; ir<ypixels; ir++) {
for (int ic=0; ic<xpixels; ic = ic + ic_increment) {
iPort = ic / (xpixels/2);
if(!iPort){
dMap[ir][ic] = iPacket1;
iPacket1 += increment;
iData1 += increment;
//--------------------32 bit -------------------------
if(dynamicRange == 32){
if(numbytesperlineperport>actualDataSize){ //1Giga
if(iData1 == numbytesperlineperport){
iPacket1 -= (numbytesperlineperport*2 + 16*3);//1giga
iData1 = 0;
}
if(iData1 == actualDataSize){
iPacket1 += 16;
}
}else{ //10Giga
if((iData1 % numbytesperlineperport)==0){
iPacket1 -= (numbytesperlineperport*2);
}
if(iData1 == actualDataSize){
iPacket1 -= 16;
iData1 = 0;
}
}
}//------------end of 32 bit -------------------------
else if((iData1 % numbytesperlineperport) == 0){
iPacket1 -= (numbytesperlineperport*2);
if(iData1 == actualDataSize){
iPacket1 -= 16;
iData1 = 0;
}
for (int ir=0; ir<ny; ir++) {
for (int ic=0; ic<nx; ic = ic + ic_increment) {
dMap[ir][ic] = iPacket;
iPacket += increment;
iData += increment;
//--------------------32 bit 1giga -------------------
if((dynamicRange == 32) && (!tenGiga)){
if(iData == numbytesperline){
iPacket -= (numbytesperline*2 + 16*3);
iData = 0;
}
//------------end of other bits -------------------------
}
//other port
else{
dMap[ir][ic] = iPacket2;
iPacket2 += increment;
iData2 += increment;
//--------------------32 bit -------------------------
if(dynamicRange == 32){
if(numbytesperlineperport>actualDataSize){ //1Giga
if(iData2 == numbytesperlineperport){
iPacket2 -= (numbytesperlineperport*2 + 16*3);
iData2 = 0;
}
if(iData2 == actualDataSize){
iPacket2 += 16;
}
}else{//10Giga
if((iData2 % numbytesperlineperport)==0){
iPacket2 -= (numbytesperlineperport*2);
}
if(iData2 == actualDataSize){
iPacket2 -= 16;
iData2 = 0;
}
}
}//------------end of 32 bit -------------------------
else if((iData2 % numbytesperlineperport) == 0){
iPacket2 -= (numbytesperlineperport*2);
if(iData2 == actualDataSize){
iPacket2 -= 16;
iData2 = 0;
}
if(iData == onepacketdataSize){
iPacket += 16;
}
}//------------end of 32 bit -------------------------
else if((iData % numbytesperline) == 0){
iPacket -= (numbytesperline*2);
if(iData == onepacketdataSize){
iPacket -= 16;
iData = 0;
}
//------------end of other bits -------------------------
}
//---------------------------------------------------
}
}
}
@ -190,16 +112,13 @@ public:
//Mask
for(int ir=0; ir<ypixels; ++ir)
for(int ic=0; ic<xpixels; ++ic)
for(int ir=0; ir<ny; ++ir)
for(int ic=0; ic<nx; ++ic)
dMask[ir][ic] = 0x0;
setDataMap(dMap);
setDataMask(dMask);
};
@ -211,7 +130,7 @@ public:
\returns frame number
*/
int getFrameNumber(char *buff){
footer_t = (eiger_packet_footer_t*)(buff + actualDataSize + sizeof(eiger_packet_header_t));
footer_t = (eiger_packet_footer_t*)(buff + onepacketdataSize + sizeof(eiger_packet_header_t));
return ((uint32_t)(*( (uint64_t*) footer_t)));
};
@ -224,7 +143,7 @@ public:
\returns packet number
*/
int getPacketNumber(char *buff){
footer_t = (eiger_packet_footer_t*)(buff + actualDataSize + sizeof(eiger_packet_header_t));
footer_t = (eiger_packet_footer_t*)(buff + onepacketdataSize + sizeof(eiger_packet_header_t));
return(*( (uint16_t*) footer_t->packetnum));
};
@ -287,10 +206,10 @@ public:
// ------check if missing packet, get to pixel at start of packet-----------------
//to get the starting of a packet, ix is divided by 512pixels because of 2 ports (except 1g 32 bit)
newix = ix - (ix%512);
//to get the starting of a packet (except 1g 32 bit)
newix = 0;
// 0.5 Lines per packet for 1g 32 bit
if(dynamicRange ==32 && !tenGiga)
if(dynamicRange == 32 && !tenGiga)
newix = ix - (ix%256);
//iy divided by linesperpacket depending on bitmode
@ -300,9 +219,11 @@ public:
newiy = (iy - (iy%linesperpacket));
header_t = (eiger_packet_header_t*)((char*)(data +(dataMap[newiy][newix]-8)));
if(*( (uint16_t*) header_t->missingpacket)==0xFFFF){
// cprintf(RED,"missing packet\n");
return -1;
uint16_t identifier = (uint16_t)*( (uint16_t*) header_t->missingpacket);
if(identifier==deactivatedPacketValue){
// cprintf(RED,"deactivated packet\n");
return -2;
}
// -----END OF CHECK -------------------------------------------------------------
@ -342,25 +263,188 @@ public:
*/
double getXTalk() {return xtalk;}
void getChannelArray(double* data, char* buffer){
for(int iy = 0; iy < ny; iy++){
for(int ix = 0; ix < nx; ix++){
data[iy*nx+ix] = getValue((char*)buffer,ix,iy);
//cprintf(BLUE,"%d,%d :%f\n",ix,iy,value);
}
}
}
int* decodeData(int *datain) {
int dataBytes = numberofPacketsPerFrame * onepacketdataSize;
int nch = nx*ny;
int* dataout = new int [nch];
char *ptr=(char*)datain;
char iptr;
const int bytesize=8;
int ival=0;
int ipos=0, ichan=0, ibyte;
switch (dynamicRange) {
case 4:
for (ibyte=0; ibyte<dataBytes; ++ibyte) {//for every byte (1 pixel = 1/2 byte)
iptr=ptr[ibyte]&0xff; //???? a byte mask
for (ipos=0; ipos<2; ++ipos) { //loop over the 8bit (twice)
ival=(iptr>>(ipos*4))&0xf; //pick the right 4bit
dataout[ichan]=ival;
ichan++;
}
}
break;
case 8:
for (ichan=0; ichan<dataBytes; ++ichan) {//for every pixel (1 pixel = 1 byte)
ival=ptr[ichan]&0xff; //????? a byte mask
dataout[ichan]=ival;
}
break;
case 16:
for (ichan=0; ichan<nch; ++ichan) { //for every pixel
ival=0;
for (ibyte=0; ibyte<2; ++ibyte) { //for each byte (concatenate 2 bytes to get 16 bit value)
iptr=ptr[ichan*2+ibyte];
ival|=((iptr<<(ibyte*bytesize))&(0xff<<(ibyte*bytesize)));
}
dataout[ichan]=ival;
}
break;
default:
//for every 32 bit (every element in datain array)
for (ichan=0; ichan<nch; ++ichan) { //for every pixel
ival=datain[ichan]&0xffffff;
dataout[ichan]=ival;
}
}
return dataout;
};
int* readNextFrameOnlyData(ifstream &filebin, int& fnum) {
int framesize = numberofPacketsPerFrame * onepacketdataSize;
int* data = new int[framesize/(sizeof(int))];
char *packet=new char[packetSize];
fnum = -1;
int pn=-1;
int dataoffset = 0;
if (filebin.is_open()) {
while (filebin.read(packet,packetSize)) {
fnum = getFrameNumber(packet); //cout << "fn:"<<fn<<endl;
pn = getPacketNumber(packet); //cout << "pn:"<<pn<<endl;
memcpy(((char*)data)+dataoffset,packet+DATA_PACKET_HEADER_SIZE,onepacketdataSize);
dataoffset+=onepacketdataSize;
if(pn == numberofPacketsPerFrame)
break;
}
}
delete [] packet;
if(!dataoffset){
delete [] data;
return NULL;
}
return data;
}
/*
when u get packet form next frames
//to remember the position to read next frame
filebin.seekg (position, filebin.beg);
position = filebin.tellg();
*/
int *readNextFramewithMissingPackets(ifstream &filebin, int& fnum) {
int* data = new int[(numberofPacketsPerFrame * onepacketdataSize)/(sizeof(int))];
char *packet=new char[packetSize];
fnum = -1;
int pnum = 0;
int fn = -1;
int pn =-1;
int dataoffset = 0;
int missingpackets;
if (filebin.is_open()) {
while (filebin.read(packet,packetSize)) {
fn = getFrameNumber(packet); //cout << "fn:"<<fn<<endl;
pn = getPacketNumber(packet); //cout << "pn:"<<pn<<endl;
//first packet
if(fnum == -1){
fnum = fn;
}
//next frame packet
else if (fnum != fn){
//set file reading to the last frame's packet in file
filebin.seekg(-packetSize, ios::cur);//filebin.beg
break;
}
//missing packets
missingpackets = pn - pnum - 1;
if(missingpackets){
memset(((char*)data)+dataoffset,0xFF,missingpackets*onepacketdataSize);
dataoffset+=(missingpackets*onepacketdataSize);
pnum+=missingpackets;
}
memcpy(((char*)data)+dataoffset,packet+DATA_PACKET_HEADER_SIZE,onepacketdataSize);
dataoffset+=onepacketdataSize;
pnum++;
if(pnum == numberofPacketsPerFrame)
break;
}
}
delete [] packet;
if(!pnum){
delete [] data;
return NULL;
}
//missing packets (added here to also catch end of file)
missingpackets = numberofPacketsPerFrame - pnum;
if(missingpackets){
memset(((char*)data)+dataoffset,0xFF,missingpackets*onepacketdataSize);
dataoffset+=(missingpackets*onepacketdataSize);
}
return data;
}
private:
/** Missing Packet identifier value */
const static uint16_t deactivatedPacketValue = 0xFEFE;
double xtalk; /**<output buffer crosstalk correction parameter */
const static int xpixels = 1024;
const static int ypixels = 256;
const int bufferSize;
const int actualDataSize;
const static int DATA_PACKET_HEADER_SIZE = 8;
const bool top;
const bool left;
const int dynamicRange;
const int numberOfPackets;
bool top;
bool tenGiga;
static const int TEN_GIGA_PACKET_SIZE = 4096;
const bool tenGiga;
const int packetSize;
const int onepacketdataSize;
const int numberofPacketsPerFrame;
double xtalk; /**<output buffer crosstalk correction parameter */
/** structure of an eiger packet*/

View File

@ -214,6 +214,7 @@ public:
} else {
// cout << "." << endl;;
np++;
//cout<<"np:"<<np<<endl;
}
}
}
@ -221,7 +222,10 @@ public:
return NULL;
};
virtual int* readNextFramewithMissingPackets(ifstream &filebin, int& fnum) {return NULL;}
virtual void getChannelArray(double* data, char* buffer){};
virtual int* readNextFrameOnlyData(ifstream &filebin, int& fnum) {return NULL;};
virtual int* decodeData(int* datain) {return NULL;};
private:
const int nPackets; /**<number of UDP packets constituting one frame */

5
slsDetectorGui/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
Makefile.gui
forms/include/
mocs/
objs/
qrc_icons.cpp

View File

@ -0,0 +1,130 @@
set(CMAKE_AUTOMOC ON)
set(SOURCES
slsDetectorPlotting/src/SlsQt1DPlot.cxx
slsDetectorPlotting/src/SlsQt1DZoomer.cxx
slsDetectorPlotting/src/SlsQt2DHist.cxx
slsDetectorPlotting/src/SlsQt2DPlot.cxx
slsDetectorPlotting/src/SlsQt2DPlotLayout.cxx
slsDetectorPlotting/src/SlsQtNumberEntry.cxx
src/qDetectorMain.cpp
src/qDrawPlot.cpp
src/qCloneWidget.cpp
src/qTabMeasurement.cpp
src/qTabDataOutput.cpp
src/qTabPlot.cpp
src/qTabActions.cpp
src/qActionsWidget.cpp
src/qScanWidget.cpp
src/qTabAdvanced.cpp
src/qTabSettings.cpp
src/qTabDebugging.cpp
src/qTabDeveloper.cpp
src/qTabMessages.cpp
src/qServer.cpp
)
set(FORMS
forms/form_detectormain.ui
forms/form_tab_measurement.ui
forms/form_tab_dataoutput.ui
forms/form_tab_plot.ui
forms/form_tab_advanced.ui
forms/form_tab_settings.ui
forms/form_tab_debugging.ui
forms/form_action.ui
forms/form_scan.ui
)
qt4_wrap_ui(FORMS_H ${FORMS})
set(HEADERS
slsDetectorPlotting/include/SlsQt1DPlot.h
slsDetectorPlotting/include/SlsQt1DZoomer.h
slsDetectorPlotting/include/SlsQt2DHist.h
slsDetectorPlotting/include/SlsQt2DPlot.h
slsDetectorPlotting/include/SlsQt2DPlotLayout.h
slsDetectorPlotting/include/SlsQt2DZoomer.h
slsDetectorPlotting/include/SlsQtValidators.h
slsDetectorPlotting/include/SlsQtNumberEntry.h
include/qDefs.h
include/qDebugStream.h
include/qDetectorMain.h
include/qDrawPlot.h
include/qCloneWidget.h
include/qTabMeasurement.h
include/qTabDataOutput.h
include/qTabPlot.h
include/qTabActions.h
include/qActionsWidget.h
include/qScanWidget.h
include/qTabAdvanced.h
include/qTabSettings.h
include/qTabDebugging.h
include/qTabDeveloper.h
include/qTabMessages.h
include/gitInfoGui.h
include/qServer.h
)
set(RESOURCES
include/icons.qrc
)
qt4_add_resources(RESOURCES_SRCS ${RESOURCES})
include_directories(
include
slsDetectorPlotting/include
../slsDetectorSoftware/commonFiles
../slsDetectorSoftware/slsReceiverInterface
../slsDetectorSoftware/slsDetector
../slsDetectorSoftware/slsDetectorAnalysis
../slsDetectorSoftware/multiSlsDetector
../slsDetectorSoftware/usersFunctions
../slsReceiverSoftware/include
${QT_INCLUDE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QWT_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
add_definitions(
-DDACS_INT -DVERBOSE -DPRINT_LOG
)
add_executable(slsDetectorGui
${SOURCES}
${HEADERS}
${FORMS_H}
${RESOURCES_SRCS}
)
set_target_properties(slsDetectorGui PROPERTIES
LINKER_LANGUAGE CXX
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
add_library(zmq STATIC IMPORTED )
set_target_properties(zmq PROPERTIES
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../slsReceiverSoftware/include/libzmq.a
)
target_link_libraries(slsDetectorGui
slsDetectorShared
${QT_QTCORE_LIBRARIES}
${QT_QTGUI_LIBRARIES}
${QWT_LIBRARIES}
pthread
zmq
rt
)
add_executable(gui_client
client/qClient.h
client/qClient.cpp
)
set_target_properties(gui_client PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)

59
slsDetectorGui/Makefile Normal file
View File

@ -0,0 +1,59 @@
# LEO: Won't compile without libSlsDetector
include ../Makefile.include
$(info )
$(info ##################################)
$(info # Compiling slsDetectorGui #)
$(info ##################################)
$(info )
PROG = $(DESTDIR)/slsDetectorGui
DESTDIR ?= ../bin
LIBDIR ?= $(DESTDIR)
DOCDIR ?= docs
LIBRARYDIR ?= ../slsDetectorSoftware
LIBRARYRXRDIR ?= ../slsReceiverSoftware
INCLUDES ?= $(LIBRARYDIR)/commonFiles -I$(LIBRARYRXRDIR)/MySocketTCP -I$(LIBRARYDIR)/slsReceiverInterface -I$(LIBRARYDIR)/slsDetector -I$(LIBRARYDIR)/slsDetectorAnalysis -I$(LIBRARYDIR)/multiSlsDetector -I$(LIBRARYDIR)/usersFunctions -I$(LIBRARYRXRDIR)/includes
#ifeq ( $(EIGERSLS), yes)
# LDFLAG += $(EIGERFLAGS)
#else ifeq ( $(ROOTSLS), yes)
# LDFLAG += $(ROOTFLAGS)
#endif
.PHONY: all lib clean mm doc htmldoc guiclient
all: lib $(PROG) Makefile.gui guiclient
lib:
cd ../ && $(MAKE) lib
clean:
if test -e Makefile.gui; then $(MAKE) -f Makefile.gui clean; $(MAKE) -f Makefile.gui mocclean; rm Makefile.gui; else $(MAKE) Makefile.gui; $(MAKE) -f Makefile.gui clean; $(MAKE) -f Makefile.gui mocclean; fi
cd client && $(MAKE) clean
# cd manual && make clean
Makefile.gui: mm
mm:
qmake -set QT_INSTALL_PREFIX $(QTDIR) && qmake -o Makefile.gui INCLUDES='$(INCLUDES)' DESTDIR=$(DESTDIR) SLSDETLIB=$(LIBDIR) SUBLIBS='$(LDFLAGDET)'
doc:
cd manual && $(MAKE) DESTDIR=$(DOCDIR)
htmldoc:
cd manual && $(MAKE) html DESTDIR=$(DOCDIR)
$(PROG): Makefile.gui $(DIR)
$(MAKE) -f Makefile.gui SLSDETLIB=$(LIBDIR) DESTDIR=$(DESTDIR) SUBLIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)'
guiclient:
echo $(WD)
cd client && $(MAKE) DESTDIR=$(DESTDIR)

View File

@ -0,0 +1,36 @@
CC = g++
CLAGS += -DVERBOSE #VERYBOSE
LDLIBS += -lm -lstdc++ -lpthread
LDIR = ../../slsDetectorSoftware
RDIR = ../../slsReceiverSoftware
INCLUDES = -I $(LDIR)/commonFiles -I $(LDIR)/slsDetector -I ../include -I $(RDIR)/include
SRC_CLNT = qClient.cpp $(RDIR)/src/MySocketTCP.cpp
PROGS = gui_client
DESTDIR ?= bin
INSTMODE = 0777
FINALDIR = ../../bin
OBJS = $(SRC_CLNT:.cpp=.o)
all: clean $(PROGS)
boot: $(OBJS)
$(PROGS):
echo $(OBJS)
mkdir -p $(DESTDIR)
gcc $(SRC_CLNT) $(INCLUDES) $(FLAGS) $(LDLIBS) -o $@
mv $(PROGS) $(FINALDIR)
clean:
rm -rf $(DESTDIR)/$(PROGS) *.o $(FINALDIR)/$(PROGS)

View File

@ -0,0 +1,234 @@
/*
* qClient.cpp
*
* Created on: Feb 27, 2013
* Author: Dhanya Maliakal
*/
// Qt Project Class Headers
#include "qClient.h"
// Project Class Headers
#include "MySocketTCP.h"
#include "slsDetectorBase.h"
// C++ Include Headers
#include <iostream>
#include <sstream>
using namespace std;
//-------------------------------------------------------------------------------------------------------------------------------------------------
int main(int argc, char *argv[]){
qClient *cl =new qClient(argv[1]);
cl->executeLine(argc-2, argv+2);
delete cl;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
qClient::qClient(char* hostname){
//create socket
mySocket = new MySocketTCP(hostname, DEFAULT_GUI_PORTNO);
if (mySocket->getErrorStatus()){
cout << "Error: could not connect to host:" << hostname << " with port " << DEFAULT_GUI_PORTNO << endl;
delete mySocket;
exit(-1);
}
//create socket to connect to stop server
myStopSocket = new MySocketTCP(hostname, DEFAULT_GUI_PORTNO+1);
if (myStopSocket->getErrorStatus()){
cout << "Error: could not connect to host:" << hostname << " with port " << DEFAULT_GUI_PORTNO + 1 << endl;
delete myStopSocket;
exit(-1);
}
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
qClient::~qClient() {
if(mySocket) delete mySocket;
if(myStopSocket) delete myStopSocket;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
int qClient::executeLine(int narg, char *args[]){
char arg[MAX_STR_LENGTH] = "";
int iarg = -1;
char answer[100];
string retval = "";
string cmd = args[0];
string argument;
//validate command structure
if(narg<1){
cout << "Error: no command parsed" << endl;
return FAIL;
}
//help
if (cmd == "help"){
retval = printCommands();
}
//file name
else if (cmd == "status"){
if(narg>1){
argument = args[1];
//start acquisition
if(argument == "start")
startAcquisition();
else if (argument == "stop")
stopAcquisition();
else{
cout << "Error: could not parse arguments: " << argument << endl;
printCommands();
return FAIL;
}
}
retval = getStatus();
}
else if (cmd == "acquire"){
startAcquisition(true);
retval = getStatus();
}
else if (cmd == "exit"){
return exitServer();
}
//unrecognized command
else{
cout << "Error: unrecognized command" << endl;
return FAIL;
}
//print result
cout << cmd << ": " << retval << endl;
return OK;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
string qClient::printCommands(){
ostringstream os;
os << "\nexit \t exits servers in gui" << std::endl;
os << "status \t gets status of acquisition in gui. - can be running or idle" << std::endl;
os << "status i starts/stops acquistion in gui-non blocking. i is start or stop" << std::endl;
os << "acquire starts acquistion in gui-blocking" << std::endl;
return os.str();
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
string qClient::getStatus(){
int fnum = F_GET_RUN_STATUS;
int ret = FAIL;
runStatus retval=ERROR;
int progress = 0;
char answer[100];
if (myStopSocket->Connect() >= 0) {
myStopSocket->SendDataOnly(&fnum,sizeof(fnum));
myStopSocket->ReceiveDataOnly(&ret,sizeof(ret));
myStopSocket->ReceiveDataOnly(&retval,sizeof(retval));
myStopSocket->ReceiveDataOnly(&progress,sizeof(progress));
myStopSocket->Disconnect();
}else
exit(-1);
sprintf(answer,"%d%% ",progress);
strcat(answer,slsDetectorBase::runStatusType((runStatus)retval).c_str());
return string(answer);
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
int qClient::startAcquisition(bool blocking){
int fnum = F_START_ACQUISITION;
if(blocking) fnum = F_START_AND_READ_ALL;
int ret = FAIL;
if (mySocket->Connect() >= 0) {
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret == FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Gui returned error: " << mess << std::endl;
}
mySocket->Disconnect();
}else
exit(-1);
return ret;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
int qClient::stopAcquisition(){
int fnum = F_STOP_ACQUISITION;
int ret = FAIL;
if (myStopSocket->Connect() >= 0) {
myStopSocket->SendDataOnly(&fnum,sizeof(fnum));
myStopSocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret == FAIL){
myStopSocket->ReceiveDataOnly(mess,sizeof(mess));
std::cout<< "Gui returned error: " << mess << std::endl;
}
myStopSocket->Disconnect();
}else
exit(-1);
return ret;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
int qClient::exitServer(){
int fnum = F_EXIT_SERVER;
int ret = FAIL;
if (myStopSocket->Connect() >= 0) {
myStopSocket->SendDataOnly(&fnum,sizeof(fnum));
myStopSocket->ReceiveDataOnly(&ret,sizeof(ret));
myStopSocket->ReceiveDataOnly(mess,sizeof(mess));
cout << mess << endl;
myStopSocket->Disconnect();
}else
exit(-1);
return ret;
}

View File

@ -0,0 +1,65 @@
/*
* qClient.h
*
* Created on: Feb 27, 2013
* Author: Dhanya Maliakal
*/
#ifndef QCLIENT_H
#define QCLIENT_H
/** Qt Project Class Headers */
/** Project Class Headers */
class MySocketTCP;
#include "sls_detector_defs.h"
/** C++ Include Headers */
#include <stdlib.h>
#include <string>
using namespace std;
/**
*@short Sets up the gui server
*/
class qClient: public virtual slsDetectorDefs{
public:
/** \short The constructor*/
qClient(char* hostname);
/** Destructor */
virtual ~qClient();
/**Execute command*/
int executeLine(int narg, char *args[]);
private:
/** Print list of commands */
string printCommands();
/** Start Acquisition
* @param blocking true if its a blocking acquistion
*/
int startAcquisition(bool blocking = false);
/** Stops Acquisition */
int stopAcquisition();
/** Gets run status */
string getStatus();
/** Exits Server */
int exitServer();
/** client socket */
MySocketTCP *mySocket;
/** client socket */
MySocketTCP *myStopSocket;
char mess[MAX_STR_LENGTH];
};
#endif /* QCLIENT_H */

View File

@ -8,9 +8,7 @@ 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
EXTRACT_PRIVATE = YES
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
@ -60,35 +58,49 @@ HIDE_UNDOC_CLASSES = NO
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
HAVE_DOT = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
INPUT = Beb.h Eiger.h FebControl.h FebInterface.h gitInfoEiger.h HardwareIO.h LocalLinkInterface.h sls_detector_funcs.h slsDetectorServer_defs.h sls_receiver_defs.h xfs_types.h communication_funcs.h EigerRegisterDefs.h Feb.h FebRegisterDefs.h gitInfoEigerTmp.h HardwareMMappingDefs.h sls_detector_defs.h slsDetectorFunctionList.h slsDetectorServer_funcs.h sls_receiver_funcs.h xparameters.h Beb.cxx BebServer.cxx Eiger.cxx EigerTest.cxx FebControl.cxx Feb.cxx FebInterface.cxx FebServer.cxx HardwareIO.cxx LocalLinkInterface.cxx LocalLinkTest.cxx Test.cxx
INPUT = \
slsDetectorPlotting/include/SlsQt1DPlot.h\
slsDetectorPlotting/src/SlsQt1DPlot.cxx
slsDetectorPlotting/include/SlsQt1DZoomer.h\
slsDetectorPlotting/src/SlsQt1DZoomer.cxx\
slsDetectorPlotting/include/SlsQt2DHist.h\
slsDetectorPlotting/src/SlsQt2DHist.cxx\
slsDetectorPlotting/include/SlsQt2DPlot.h\
slsDetectorPlotting/src/SlsQt2DPlot.cxx\
slsDetectorPlotting/include/SlsQt2DPlotLayout.h\
slsDetectorPlotting/src/SlsQt2DPlotLayout.cxx\
slsDetectorPlotting/include/SlsQtNumberEntry.h\
slsDetectorPlotting/src/SlsQtNumberEntry.cxx\
slsDetectorPlotting/include/SlsQt2DZoomer.h\
slsDetectorPlotting/include/SlsQtValidators.h\
include/qDetectorMain.h\
src/qDetectorMain.cpp\
include/qDrawPlot.h\
src/qDrawPlot.cpp\
include/qCloneWidget.h\
src/qCloneWidget.cpp\
include/qTabMeasurement.h\
src/qTabMeasurement.cpp\
include/qTabDataOutput.h\
src/qTabDataOutput.cpp\
include/qTabPlot.h\
src/qTabPlot.cpp\
include/qTabActions.h\
src/qTabActions.cpp\
include/qActionsWidget.h\
src/qActionsWidget.cpp\
include/qScanWidget.h\
src/qScanWidget.cpp\
include/qTabAdvanced.h\
src/qTabAdvanced.cpp\
include/qTabSettings.h\
src/qTabSettings.cpp\
include/qTabDebugging.h\
src/qTabDebugging.cpp\
include/qTabDeveloper.h\
src/qTabDeveloper.cpp\
include/qDefs.h
OUTPUT_DIRECTORY = docs

View File

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ActionsObject</class>
<widget class="QWidget" name="ActionsObject">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>680</width>
<height>25</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="5">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QComboBox" name="comboScript">
<item>
<property name="text">
<string>None</string>
</property>
</item>
<item>
<property name="text">
<string>Custom Script</string>
</property>
</item>
</widget>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="dispScript">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QLabel" name="lblParameter">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Additional Parameter:</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QPushButton" name="btnBrowse">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Browse</string>
</property>
<property name="icon">
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/browse.png</normaloff>:/icons/images/browse.png</iconset>
</property>
</widget>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="7">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="8">
<widget class="QLineEdit" name="dispParameter">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="../include/icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -0,0 +1,521 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DetectorMainObject</class>
<widget class="QMainWindow" name="DetectorMainObject">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>848</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Shadow">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Shadow">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>185</red>
<green>185</green>
<blue>185</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>185</red>
<green>185</green>
<blue>185</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>185</red>
<green>185</green>
<blue>185</blue>
</color>
</brush>
</colorrole>
<colorrole role="Shadow">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>89</red>
<green>89</green>
<blue>89</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="windowTitle">
<string>SLS Detector GUI</string>
</property>
<property name="inputMethodHints">
<set>Qt::ImhNone</set>
</property>
<property name="documentMode">
<bool>false</bool>
</property>
<property name="tabShape">
<enum>QTabWidget::Rounded</enum>
</property>
<property name="dockNestingEnabled">
<bool>false</bool>
</property>
<widget class="QWidget" name="centralwidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>395</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>524287</width>
<height>395</height>
</size>
</property>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>25</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="defaultUp">
<bool>false</bool>
</property>
<property name="nativeMenuBar">
<bool>true</bool>
</property>
<widget class="QMenu" name="menuUtilities">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="title">
<string>&amp;Utilities</string>
</property>
<addaction name="actionOpenSetup"/>
<addaction name="actionSaveSetup"/>
<addaction name="separator"/>
<addaction name="actionOpenConfiguration"/>
<addaction name="actionSaveConfiguration"/>
<addaction name="separator"/>
<addaction name="actionLoadTrimbits"/>
<addaction name="actionSaveTrimbits"/>
<addaction name="separator"/>
<addaction name="actionLoadCalibration"/>
<addaction name="actionSaveCalibration"/>
</widget>
<widget class="QMenu" name="menuModes">
<property name="title">
<string>&amp;Modes</string>
</property>
<addaction name="actionDebug"/>
<addaction name="actionExpert"/>
<addaction name="actionDockable"/>
<addaction name="actionListenGuiClient"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>&amp;Help</string>
</property>
<addaction name="actionAbout"/>
</widget>
<addaction name="menuUtilities"/>
<addaction name="menuModes"/>
<addaction name="menuHelp"/>
</widget>
<widget class="QDockWidget" name="dockWidgetPlot">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>36</width>
<height>422</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>524287</width>
<height>524287</height>
</size>
</property>
<property name="font">
<font>
<family>Sans Serif</family>
<pointsize>11</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Left Click :zoom in&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Righ&lt;/span&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;t Click &lt;/span&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;: zoom out by 1&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Middle Click : panning&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Ctrl+Right Click : zoom out to full size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="features">
<set>QDockWidget::NoDockWidgetFeatures</set>
</property>
<property name="allowedAreas">
<set>Qt::BottomDockWidgetArea</set>
</property>
<property name="windowTitle">
<string>SLS Detector Plot</string>
</property>
<attribute name="dockWidgetArea">
<number>8</number>
</attribute>
<widget class="QWidget" name="dockWidgetContentsPlot">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>400</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>119</red>
<green>119</green>
<blue>119</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
</widget>
</widget>
<action name="actionOpenSetup">
<property name="text">
<string>&amp;Load &amp;Setup</string>
</property>
<property name="font">
<font/>
</property>
</action>
<action name="actionSaveSetup">
<property name="text">
<string>&amp;Save &amp;Setup</string>
</property>
<property name="font">
<font/>
</property>
</action>
<action name="actionMeasurementWizard">
<property name="text">
<string>&amp;Measurement Wizard</string>
</property>
</action>
<action name="actionOpenConfiguration">
<property name="text">
<string>&amp;Load &amp;Configuration</string>
</property>
</action>
<action name="actionSaveConfiguration">
<property name="text">
<string>&amp;Save &amp;Configuration</string>
</property>
</action>
<action name="actionEnergyCalibration">
<property name="text">
<string>&amp;Energy Calibration</string>
</property>
</action>
<action name="actionAngularCalibration">
<property name="text">
<string>&amp;Angular Calibration</string>
</property>
</action>
<action name="actionDebug">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Debug</string>
</property>
</action>
<action name="actionBeamline">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Beamline</string>
</property>
</action>
<action name="actionExpert">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Expert</string>
</property>
</action>
<action name="actionConfiguration">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Configuration</string>
</property>
</action>
<action name="actionVersion">
<property name="text">
<string>&amp;Version</string>
</property>
</action>
<action name="actionAbout">
<property name="text">
<string>&amp;About</string>
</property>
</action>
<action name="actionDockable">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>D&amp;ockable Windows</string>
</property>
</action>
<action name="actionLoadTrimbits">
<property name="text">
<string>&amp;Load &amp;Trimbits</string>
</property>
</action>
<action name="actionSaveTrimbits">
<property name="text">
<string>&amp;Save &amp;Trimbits</string>
</property>
</action>
<action name="actionLoadCalibration">
<property name="text">
<string>&amp;Load C&amp;alibration</string>
</property>
</action>
<action name="actionSaveCalibration">
<property name="text">
<string>&amp;Save C&amp;alibration</string>
</property>
</action>
<action name="actionListenGuiClient">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>&amp;Listen to Gui Client</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,488 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ScanObject</class>
<widget class="QWidget" name="ScanObject">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>724</width>
<height>125</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="horizontalSpacing">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>5</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item row="2" column="2" rowspan="3" colspan="3">
<widget class="QGroupBox" name="group">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>180</width>
<height>0</height>
</size>
</property>
<property name="title">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<property name="horizontalSpacing">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>5</number>
</property>
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QRadioButton" name="radioRange">
<property name="toolTip">
<string>&lt;nobr&gt;
Defines scan range for a &lt;b&gt;Constant Step Size&lt;/b&gt; with the following constraints:
&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;
1. &lt;b&gt;Number of Steps&lt;/b&gt; &gt;=2.
&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;
2. &lt;b&gt;Size&lt;/b&gt; not equal to 0.
&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;
3. &lt;b&gt;From&lt;/b&gt; not equal to &lt;b&gt;To&lt;/b&gt;.
&lt;/nobr&gt;&lt;br&gt;</string>
</property>
<property name="text">
<string>Constant Step Size</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioCustom">
<property name="toolTip">
<string>&lt;nobr&gt;Measures only at specific values listed by the user.&lt;/nobr&gt;&lt;br&gt;
&lt;nobr&gt;Number of entries is restricted to &lt;b&gt;Number of Steps&lt;/b&gt; field.&lt;/nobr&gt;</string>
</property>
<property name="text">
<string>Specific Values</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioFile">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;Measures only at the specific values listed in a file.&lt;/nobr&gt;&lt;br&gt;
&lt;nobr&gt;Select the file, where these values are listed.&lt;/nobr&gt;</string>
</property>
<property name="text">
<string>Values from File</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QWidget" name="stackedWidget" native="true"/>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lblPrecision">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Precision:</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="spinPrecision">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lblParameter">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Additional Parameter:</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLineEdit" name="dispParameter">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lblSteps">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Number of Steps:</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="spinSteps">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="keyboardTracking">
<bool>false</bool>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>1000000</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QComboBox" name="comboScript">
<item>
<property name="text">
<string>None</string>
</property>
</item>
<item>
<property name="text">
<string>Energy Scan (eV)</string>
</property>
</item>
<item>
<property name="text">
<string>Threshold Scan</string>
</property>
</item>
<item>
<property name="text">
<string>Trimbits Scan</string>
</property>
</item>
<item>
<property name="text">
<string>Position Scan</string>
</property>
</item>
<item>
<property name="text">
<string>Custom Script</string>
</property>
</item>
</widget>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="dispScript">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnBrowse">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Browse</string>
</property>
<property name="icon">
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/browse.png</normaloff>:/icons/images/browse.png</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>30</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<tabstops>
<tabstop>comboScript</tabstop>
<tabstop>dispScript</tabstop>
<tabstop>btnBrowse</tabstop>
<tabstop>dispParameter</tabstop>
<tabstop>spinSteps</tabstop>
<tabstop>spinPrecision</tabstop>
<tabstop>radioRange</tabstop>
<tabstop>radioCustom</tabstop>
<tabstop>radioFile</tabstop>
</tabstops>
<resources>
<include location="../include/icons.qrc"/>
</resources>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,718 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TabDataOutputObject</class>
<widget class="QWidget" name="TabDataOutputObject">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>775</width>
<height>345</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QGroupBox" name="boxOutDir">
<property name="geometry">
<rect>
<x>15</x>
<y>30</y>
<width>747</width>
<height>116</height>
</rect>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
<property name="title">
<string>Output Directory</string>
</property>
<widget class="QFrame" name="frameOutput">
<property name="geometry">
<rect>
<x>5</x>
<y>10</y>
<width>731</width>
<height>96</height>
</rect>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>716</width>
<height>92</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="verticalSpacing">
<number>4</number>
</property>
<item row="1" column="2">
<widget class="QLineEdit" name="dispReadOutputDir">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="echoMode">
<enum>QLineEdit::Normal</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblDetector">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>2</red>
<green>2</green>
<blue>2</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>119</red>
<green>119</green>
<blue>119</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
<property name="text">
<string>Readout:</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="dispOutputDir">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="comboDetector">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>180</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="3">
<widget class="QPushButton" name="btnOutputBrowse">
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
<property name="text">
<string>Browse</string>
</property>
<property name="icon">
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/browse.png</normaloff>:/icons/images/browse.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
<widget class="QGroupBox" name="boxCorrection_2">
<property name="geometry">
<rect>
<x>15</x>
<y>160</y>
<width>746</width>
<height>170</height>
</rect>
</property>
<property name="title">
<string>Options</string>
</property>
<widget class="QWidget" name="gridLayoutWidget_3">
<property name="geometry">
<rect>
<x>17</x>
<y>21</y>
<width>192</width>
<height>137</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="3" column="0">
<widget class="QCheckBox" name="chkTenGiga">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Compression using Root. Available only for Gotthard in Expert Mode.
&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;
#r_compression#
&lt;/nobr&gt;</string>
</property>
<property name="text">
<string>10GbE</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="chkCompression">
<property name="toolTip">
<string>&lt;nobr&gt;
Compression using Root. Available only for Gotthard in Expert Mode.
&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;
#r_compression#
&lt;/nobr&gt;</string>
</property>
<property name="text">
<string>Compression</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="chkAngular">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Angular Conversion</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="chkDiscardBad">
<property name="text">
<string>Discard Bad Channels</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="gridLayoutWidget_2">
<property name="geometry">
<rect>
<x>255</x>
<y>21</y>
<width>476</width>
<height>76</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="verticalSpacing">
<number>6</number>
</property>
<item row="1" column="4">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="chkRate">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Rate:</string>
</property>
</widget>
</item>
<item row="0" column="8">
<widget class="QPushButton" name="btnFlatField">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Flat field corrections.
#flatfield# filename</string>
</property>
<property name="text">
<string>Browse</string>
</property>
<property name="icon">
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/browse.png</normaloff>:/icons/images/browse.png</iconset>
</property>
</widget>
</item>
<item row="0" column="2" colspan="6">
<widget class="QLineEdit" name="dispFlatField">
<property name="enabled">
<bool>false</bool>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="toolTip">
<string>Flat field corrections.
#flatfield# filename</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="chkFlatField">
<property name="toolTip">
<string>Flat field corrections.
#flatfield# filename</string>
</property>
<property name="text">
<string>Flat Field File:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="5">
<widget class="QLabel" name="lblDeadTime">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>2</red>
<green>2</green>
<blue>2</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>119</red>
<green>119</green>
<blue>119</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
<property name="text">
<string>Dead Time:</string>
</property>
</widget>
</item>
<item row="1" column="6" colspan="3">
<widget class="QSpinBox" name="spinDeadTime">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix">
<string>ns</string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>200000000</number>
</property>
</widget>
</item>
<item row="1" column="2" colspan="2">
<widget class="QPushButton" name="btnDefaultRate">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
</property>
<property name="text">
<string>Default</string>
</property>
<property name="icon">
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/calculate.png</normaloff>:/icons/images/calculate.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="Line" name="line">
<property name="geometry">
<rect>
<x>230</x>
<y>21</y>
<width>20</width>
<height>134</height>
</rect>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
<widget class="QWidget" name="widgetEiger" native="true">
<property name="geometry">
<rect>
<x>244</x>
<y>92</y>
<width>491</width>
<height>72</height>
</rect>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>11</x>
<y>4</y>
<width>475</width>
<height>62</height>
</rect>
</property>
<layout class="QGridLayout" name="gridEiger">
<item row="1" column="2">
<widget class="QComboBox" name="comboEigerFlags1">
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<item>
<property name="text">
<string>Continous</string>
</property>
</item>
<item>
<property name="text">
<string>Store in RAM</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblClkDivider">
<property name="maximumSize">
<size>
<width>105</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Clock Divider:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="comboEigerClkDivider">
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<item>
<property name="text">
<string>Full Speed</string>
</property>
</item>
<item>
<property name="text">
<string>Half Speed</string>
</property>
</item>
<item>
<property name="text">
<string>Quarter Speed</string>
</property>
</item>
<item>
<property name="text">
<string>Super Slow Speed</string>
</property>
</item>
</widget>
</item>
<item row="1" column="3">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lblEigerFlags">
<property name="maximumSize">
<size>
<width>105</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Flags:</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QComboBox" name="comboEigerFlags2">
<item>
<property name="text">
<string>Parallel</string>
</property>
</item>
<item>
<property name="text">
<string>Non Parallel</string>
</property>
</item>
<item>
<property name="text">
<string>Safe</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
<zorder>boxOutDir</zorder>
<zorder>boxCorrection_2</zorder>
<zorder>btnOutputBrowse</zorder>
</widget>
<tabstops>
<tabstop>dispReadOutputDir</tabstop>
<tabstop>chkFlatField</tabstop>
<tabstop>dispFlatField</tabstop>
<tabstop>btnFlatField</tabstop>
<tabstop>chkRate</tabstop>
</tabstops>
<resources>
<include location="../include/icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -0,0 +1,471 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TabDebuggingObject</class>
<widget class="QWidget" name="TabDebuggingObject">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>775</width>
<height>345</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>45</x>
<y>75</y>
<width>686</width>
<height>231</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="title">
<string>Tests</string>
</property>
<widget class="QWidget" name="gridLayoutWidget_2">
<property name="geometry">
<rect>
<x>15</x>
<y>110</y>
<width>141</width>
<height>51</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QCheckBox" name="chkDetectorFirmware">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Readout Firmware</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="chkDetectorSoftware">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Readout Software</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>15</x>
<y>185</y>
<width>656</width>
<height>36</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btnTest">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Run Test </string>
</property>
<property name="icon">
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/start.png</normaloff>:/icons/images/start.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="gridLayoutWidget_5">
<property name="geometry">
<rect>
<x>415</x>
<y>30</y>
<width>256</width>
<height>31</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QLabel" name="lblModule">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Module:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="comboModule">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="frame">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>All Modules</string>
</property>
</item>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="gridLayoutWidget_3">
<property name="geometry">
<rect>
<x>280</x>
<y>110</y>
<width>141</width>
<height>51</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QCheckBox" name="chkDetectorBus">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Readout Bus</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="chkDetectorMemory">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Readout Memory</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="gridLayoutWidget_6">
<property name="geometry">
<rect>
<x>530</x>
<y>110</y>
<width>141</width>
<height>26</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<widget class="QCheckBox" name="chkChip">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Chip</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="gridLayoutWidget_4">
<property name="geometry">
<rect>
<x>15</x>
<y>30</y>
<width>276</width>
<height>31</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="lblDetector">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Readout:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="comboDetector">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget_4">
<property name="geometry">
<rect>
<x>15</x>
<y>60</y>
<width>276</width>
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="lblStatusLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Status:</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="lblStatus">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>IDLE</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="gridLayoutWidget_7">
<property name="geometry">
<rect>
<x>530</x>
<y>135</y>
<width>141</width>
<height>26</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<widget class="QCheckBox" name="chkModuleFirmware">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="text">
<string>Module Firmware</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="Line" name="line">
<property name="geometry">
<rect>
<x>5</x>
<y>95</y>
<width>676</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="Line" name="line_2">
<property name="geometry">
<rect>
<x>5</x>
<y>165</y>
<width>676</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget_3">
<property name="geometry">
<rect>
<x>45</x>
<y>25</y>
<width>686</width>
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="btnGetInfo">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Get ID Information </string>
</property>
<property name="icon">
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/download.png</normaloff>:/icons/images/download.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<tabstops>
<tabstop>btnGetInfo</tabstop>
<tabstop>comboDetector</tabstop>
<tabstop>comboModule</tabstop>
<tabstop>btnTest</tabstop>
</tabstops>
<resources>
<include location="../include/icons.qrc"/>
</resources>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TabMessagesObject</class>
<widget class="QWidget" name="TabMessagesObject">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>775</width>
<height>345</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="1" column="1" rowspan="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="2" column="0" rowspan="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="0" column="0" colspan="3">
<widget class="QTextEdit" name="textEdit"/>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,248 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TabSettingsObject</class>
<widget class="QWidget" name="TabSettingsObject">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>775</width>
<height>345</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>30</x>
<y>20</y>
<width>316</width>
<height>171</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Settings:</string>
</property>
</widget>
</item>
<item row="0" column="2" colspan="2">
<widget class="QComboBox" name="comboSettings">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Settings of the detector.
#settings#</string>
</property>
<item>
<property name="text">
<string>Standard</string>
</property>
</item>
<item>
<property name="text">
<string>Fast</string>
</property>
</item>
<item>
<property name="text">
<string>High Gain</string>
</property>
</item>
<item>
<property name="text">
<string>Dynamic Gain</string>
</property>
</item>
<item>
<property name="text">
<string>Low Gain</string>
</property>
</item>
<item>
<property name="text">
<string>Medium Gain</string>
</property>
</item>
<item>
<property name="text">
<string>Very High Gain</string>
</property>
</item>
<item>
<property name="text">
<string>Low Noise</string>
</property>
</item>
<item>
<property name="text">
<string>Dynamic HG0</string>
</property>
</item>
<item>
<property name="text">
<string>Fix Gain 1</string>
</property>
</item>
<item>
<property name="text">
<string>Fix Gain 2</string>
</property>
</item>
<item>
<property name="text">
<string>Force Switch G1</string>
</property>
</item>
<item>
<property name="text">
<string>Force Switch G2</string>
</property>
</item>
<item>
<property name="text">
<string>Very Low Gain</string>
</property>
</item>
<item>
<property name="text">
<string>Undefined</string>
</property>
</item>
<item>
<property name="text">
<string>Uninitialized</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2" colspan="2">
<widget class="QSpinBox" name="spinThreshold">
<property name="keyboardTracking">
<bool>false</bool>
</property>
<property name="suffix">
<string> eV</string>
</property>
<property name="minimum">
<number>-100000</number>
</property>
<property name="maximum">
<number>100000</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
<property name="value">
<number>-1</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Number of Modules:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Dynamic Range:</string>
</property>
</widget>
</item>
<item row="3" column="2" colspan="2">
<widget class="QComboBox" name="comboDynamicRange">
<item>
<property name="text">
<string>1.67772e+07</string>
</property>
</item>
<item>
<property name="text">
<string>65535</string>
</property>
</item>
<item>
<property name="text">
<string>255</string>
</property>
</item>
<item>
<property name="text">
<string>7</string>
</property>
</item>
</widget>
</item>
<item row="2" column="2" colspan="2">
<widget class="QSpinBox" name="spinNumModules">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item row="1" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lblThreshold">
<property name="text">
<string>Threshold:</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<tabstops>
<tabstop>comboSettings</tabstop>
<tabstop>spinThreshold</tabstop>
<tabstop>spinNumModules</tabstop>
<tabstop>comboDynamicRange</tabstop>
</tabstops>
<resources>
<include location="../include/icons.qrc"/>
</resources>
<connections/>
</ui>

View File

@ -0,0 +1,9 @@
Path: slsDetectorsPackage/slsDetectorGui
URL: origin git@git.psi.ch:sls_detectors_software/sls_detector_gui.git
Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_detector_gui.git
Repsitory UUID: c43f58653a9b90aade45b9649810ff11225ca844
Revision: 379
Branch: 2.3-rc
Last Changed Author: Dhanya_Maliakal
Last Changed Rev: 379
Last Changed Date: 2016-12-16 14:46:02 +0100

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 833 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

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