Compare commits

...

495 Commits

Author SHA1 Message Date
53423a42ac slsDetectorSoftware eiger and jungfrau server version API updated 2018-07-10 15:04:59 +02:00
c2b1eef75c slsDetectorSoftware: removed warnings, and made compilable via make 2018-07-10 14:58:18 +02:00
f5a86bbfe1 slsReceiverSoftware: removed hdf5 static cpp file 2018-07-10 12:31:55 +02:00
9af0ec74b6 slsReceiver: updated help in slsMultiReceiver 2018-07-06 16:32:42 +02:00
45de361b22 slsReceiver: added an executable slsMultiReceiver to have the option to have one process create multiple child processes for multiple receivers with configurable tcp port and callback enable 2018-07-06 16:26:29 +02:00
260f237990 slsDetectorSoftware, changing shm name prefix for environment 2018-07-06 15:41:09 +02:00
37dd5fb902 slsDetectorSoftware: sharedmemory, appends environment variable of SLS_SHM_NAME to shm name 2018-07-06 15:30:06 +02:00
ecd0c810ca slsDetectorSoftware: Sharedmemory removed private methodf or removeshm, removed static isexisting as the usecases are all member method 2018-07-06 15:18:34 +02:00
7c29327b47 saving bit field in hdf5 as string of 512 bytes instead of 512 bits for the time being, will be updated when a better option is figured out 2018-07-06 12:00:35 +02:00
c366e94a96 bit field for missing packets, added commands r_padding and r_discardpolicy, hdf5 bitfield metadata left to do 2018-07-05 13:47:20 +02:00
ca8cb33569 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-06-29 14:53:07 +02:00
7db6b7bca8 slsDetectorSoftware: command line should print same file when loading or saving to trimbits file 2018-06-29 14:52:52 +02:00
7e16f3ebeb Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-06-29 13:47:48 +02:00
233c145791 manual 2018-06-29 13:47:34 +02:00
d7cc9fc023 slsDetectorSoftware: moved offsets from multi shm to sls shm, and moved updated offsets and createthreadpool to end of addmultipledetectors, so that it is not done each time per detector 2018-06-29 12:21:15 +02:00
ed1135566a slsReceiver: maximum frames per file written to master files for both binary and hdf5, note the version number change for these master file format 2018-06-28 18:30:34 +02:00
3595c586d4 slsDetectorSoftware: slsDetectorUsers: added burst_trigger 2018-06-28 18:10:37 +02:00
11de3dfde2 slsDetectorSoftware: trimen in multi does not check for each value in slsdet, fixed 2018-06-28 18:06:53 +02:00
14d227f8db jungfrau server fix (3.1.3): delay after trigger set at testbus 2018-06-28 16:19:19 +02:00
144bd7124b updated clean shared memory script if anyone is using it 2018-06-28 10:48:42 +02:00
f6660c0dac slsDetectorSoftware: updated shared memory to have _sls_ instead of _single_, and updated versions 2018-06-28 10:37:46 +02:00
73ac8bab38 commenting out printout 2018-06-28 08:58:34 +02:00
d76568d6d9 jungfrau server, merge fix binaries 2018-06-28 08:55:14 +02:00
72f47b2375 Merge branch 'developer' into sharedmem 2018-06-28 08:51:25 +02:00
3114512c3f sharedmem: sls_detector_acquire multi and sls index scaning, error message when trying to acquire from a differet multi shm id, updateoffset and create threadpool after adding slsdetectors 2018-06-27 17:20:05 +02:00
95254619c6 sharedmem: config, sethostname call freesharedmemory and call setupmulti, freesharedmemoy(nonstatic) also cleans up member variables to make it consistent with shm, sharedmemory pointer set to 0 in non static free shared memory to be able to continue within application, sethostname frees memory only if detectors found in shm, add calls addmultipledetectors, replace replaces a detector in sls detector level, should also take lines in config file that has comments in between while ignoring the comments, sethostname in slsdetector also updates client, adding object in sls when creating new shm complains if shm existed and must delete again, removed remove commands 2018-06-27 15:38:03 +02:00
a0016cb005 sharedmem: working, need to add replace 2018-06-27 10:05:05 +02:00
0b140111b3 sharedmem: more modifications on command line to remove features such as id, remove, add 2018-06-26 12:10:50 +02:00
d7831f6c64 sharedmem: command line refactor, fixing to do 2018-06-25 19:18:00 +02:00
a97b725f43 sharedmem: command line done, fixing to do 2018-06-25 19:14:41 +02:00
69c71e48f6 sharedmem: updated slsdetector, changes left 2018-06-25 18:19:19 +02:00
54fc63dd55 manual 2018-06-22 15:28:33 +02:00
5e9871720b sharedmem: slsdetector being modified intensively 2018-06-21 18:26:50 +02:00
55517e6d4c sharedmem: done with multi .h, sls and command line left 2018-06-20 17:12:48 +02:00
2853f97fe7 sharedmem: done with multi, sls and command line left to do 2018-06-20 14:06:10 +02:00
fc0f8ef9da more changes for multi for shared mem 2018-06-19 16:38:18 +02:00
99bf6446fe shared mem in the middle of modifying multi 2018-06-18 17:51:30 +02:00
283dfa2b05 manual 2018-06-13 11:39:52 +02:00
5316fed5d4 manual 2018-06-13 11:38:45 +02:00
dda013a85b manual 2018-06-12 19:02:04 +02:00
2eecf43fbb multi sharedmemory, basic done, left to go thru whole file, and slsDetector left to do 2018-06-12 18:00:26 +02:00
eba0fa277d manual 2018-06-12 15:52:19 +02:00
e6e3561dcb manual 2018-06-12 12:26:38 +02:00
b294b3e8b1 in progress with integratign new shm in multi 2018-06-12 12:14:55 +02:00
025e7b8f44 manual 2018-06-08 13:48:29 +02:00
aa25d86310 manual 2018-06-06 19:25:06 +02:00
a7551cca4e Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-06-06 16:53:10 +02:00
8e79f9094a manual 2018-06-06 16:52:51 +02:00
2dece5c635 jungfrau server: reading power status (fixed in firmware) 2018-06-06 16:15:30 +02:00
24db58e615 jungfrau server required firmware version on server changed from 0x2018 to 0x18 2018-06-06 10:23:06 +02:00
bab7d8e3fb Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-06-01 11:05:03 +02:00
2339fb2a0e slsDetectorSoftware: bug fix, changing dr didnt change the databytesinclgappixels immediately 2018-06-01 11:04:54 +02:00
378392c0f5 fixed return storage cell 2018-05-29 18:10:36 +02:00
fcde40b854 minor 2018-05-29 17:26:27 +02:00
ceed0eaa9b generic call for hostname and sgetDetectorsType 2018-05-29 16:59:55 +02:00
e3088d822f removed commented section 2018-05-29 16:09:09 +02:00
27ebd9c713 applying callDetectorMember in getTimerLeft 2018-05-29 16:08:08 +02:00
f33b3cdc79 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-05-29 15:55:42 +02:00
b0ea458d3a slsReceiver: hdf5 use relative links now, fill -1 also for data file creation (for deactivated ones) 2018-05-29 15:55:33 +02:00
7e2f2cd31b Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-05-29 15:52:04 +02:00
6cf7bf2e06 using callDetectorMember for portType 2018-05-29 15:51:55 +02:00
fc7ae98eee using parallel call for checkCompatibility 2018-05-29 15:45:13 +02:00
542dda8ece slsReceiver: deactivated no longer writes 0xFFFF, creates empty files 2018-05-29 14:32:14 +02:00
0f6cb4dc41 Merge branch 'developer' into gotthardversioning 2018-05-29 12:14:59 +02:00
ecc970bc73 gotthard server: check client api version done 2018-05-29 12:14:46 +02:00
15aaa93130 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-05-28 19:17:37 +02:00
34b659fa15 first draft of gotthard versioning 2018-05-28 19:17:06 +02:00
cf8b0de433 slsReceiver, slsDetector, eiger and jungfrau server: client checks firmware and software an dreceiver compatibility for each time shared memory is cleaned up 2018-05-28 19:11:34 +02:00
32c1a45e11 minor 2018-05-28 18:46:08 +02:00
da1b6ad62d more generalization in multi 2018-05-28 17:12:19 +02:00
49d6dcb6e2 templated functions in multi 2018-05-28 13:23:30 +02:00
22ef1cee8b Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-05-28 12:22:35 +02:00
9d3fdaaadc minor clean 2018-05-28 12:22:25 +02:00
06f84585af compareRetrun.. to minusOneIf.. 2018-05-28 11:55:11 +02:00
a970bacbe5 slsDetectorGui: JCTB does not kill itself for wrong settings anymore 2018-05-28 11:29:35 +02:00
5be2979fff slsReceiver: fix to default number of frames per file, also set to 10k 2018-05-28 11:18:13 +02:00
4765849613 minor 2018-05-25 17:09:23 +02:00
05ed8dca4e more cleanup 2018-05-25 17:02:01 +02:00
4f600f3129 even more 2018-05-25 16:32:40 +02:00
4b72d685f3 migrating more multiSlsDetector calls to the generic function 2018-05-25 15:39:28 +02:00
bbd7e7906a replacing pulsechip with a generic algorithm 2018-05-25 15:10:57 +02:00
f735baf9d7 more cleaning 2018-05-25 12:21:36 +02:00
ad14381ab4 replacing ReceiverReadTimer, Frequency calibratePedestal 2018-05-25 11:44:39 +02:00
7702865409 replacing slsDetectorMember calls with generic function 2018-05-25 11:38:59 +02:00
2f8c1b453e renaming generic call 2018-05-25 11:06:33 +02:00
883317dd28 replaced logic in getSettingsFile 2018-05-25 10:46:36 +02:00
8ed67119b9 replacing logic in getLastClientIP and getReceiverLastClientIP with generic function 2018-05-25 10:39:34 +02:00
f45e2b4ab9 changed type of getCalDir to std::string 2018-05-25 10:30:02 +02:00
abdf4b1ada converting to Qstring 2018-05-25 10:19:09 +02:00
228d624d8f general function for returning first or concatenated string 2018-05-25 10:01:51 +02:00
e0c9805ee8 clang-format on multiDetector 2018-05-25 08:23:59 +02:00
4eef81fbe9 clean up of multiSlsDetector::getSettingsDir 2018-05-24 18:14:02 +02:00
301600e720 chaning return type of getSettingsDir and setSettingsDir to std::string 2018-05-24 17:47:12 +02:00
4d4e4a4ce7 first draft of versioning of client 2018-05-24 16:58:07 +02:00
ad3ac2cdee Merge branch 'developer' into versioning 2018-05-24 16:56:39 +02:00
b10abd07ee first draft of api versioning with client 2018-05-24 16:51:21 +02:00
e65b416215 cleaning up sgetDetectorsType 2018-05-24 16:32:20 +02:00
24df69d57f cleaning up getHostname 2018-05-24 16:21:48 +02:00
183c306166 modify string name in multi checkOnline 2018-05-24 16:03:17 +02:00
1dfdcfcb7e finished removing using namespace std 2018-05-24 15:24:01 +02:00
212218396a removal of using namespace std from theadFiles 2018-05-24 14:47:45 +02:00
b78b8425fd ifstream and ofstream to std:: 2018-05-24 14:27:01 +02:00
12832a3a96 adding more std:: in slsDetectorActions.h 2018-05-24 14:24:10 +02:00
621b7cfb2a adding std:: where needed 2018-05-24 14:11:30 +02:00
a67d9e60da removing more using namespace std 2018-05-24 13:47:48 +02:00
d71008bd10 removing using namespace std from headers in slsDetector 2018-05-24 12:18:25 +02:00
a154d0a088 slsDetectorUsers: added setthreshold without trimbits for eiger 2018-05-23 16:39:52 +02:00
c5262458d5 eiger and jungfrau server, updated virtual versions with start and stop acquisition 2018-05-23 15:28:39 +02:00
cb635d800a eiger server: added overflow, noverflow to the flags to show/not show saturation when there is overflow in any of the single subframes in 32 bit mode 2018-05-22 18:43:13 +02:00
0ed82d4ef7 settingsdir for gotthard, jungfrau, propix, moench deleted, as these are default values in server 2018-05-22 15:13:26 +02:00
bdf9373e0d gotthard and jungfrau servers do not need to send whole module for sending settings anymore 2018-05-22 14:52:53 +02:00
3f61206289 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-05-22 10:59:20 +02:00
e19a27bf62 eiger server: bug fix for saving trimbits to file, was copying from destination to source in server 2018-05-22 10:59:04 +02:00
a1831c38ed replace lostFocus with editingFinished for QT 2018-05-18 17:05:35 +02:00
c4b8c6385f Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-05-18 16:36:29 +02:00
f393751771 r_framesperfile configurable to have infinite frames in file with option 0 2018-05-18 16:35:50 +02:00
94ce042401 slsReceiver, fixed virtual hdf5 last row random values bug 2018-05-18 14:51:18 +02:00
49b8024c43 added logger.h to publig headers 2018-05-18 14:15:17 +02:00
8b39443197 slsReciever, slsDetector: configurable number of images per file, removed all the receiver threads from using generalData->maxframesperfile, yet to do: infinite images, bug fix, virtual hdf5 has -1 for all pixels in last image 2018-05-18 13:47:10 +02:00
dcce66ee9f slsReceiver: debug, insignificant 2018-05-17 15:57:16 +02:00
563b1bb8b7 slsDetectorGui:added subexptime and subperiod to gui 2018-05-17 15:34:35 +02:00
b4d9a6a09d slsReceiver, slsDetector(eiger server), client: added sub period to receiver, fixed eiger subperiod updates to client, added subperiod and subexptime to users, fixed hdf5 warnings 2018-05-17 12:34:18 +02:00
51fd9ed423 added subperiod in command line 2018-05-16 09:13:43 +02:00
23d73ae5ae jungfrau server: programming allowed only in -update or -dev mode, -dev strictly for Carlos, in update mode one can only do programming 2018-05-11 13:42:46 +02:00
8986b008dd jungfrau server: programfpga: handling bus error, and printing a message for user to restart servers when done in client command line 2018-05-09 15:57:18 +02:00
30f1e6ad3f eiger and jungfrau server, updated binaries 2018-05-09 15:28:34 +02:00
02cc284422 added binaries 2018-05-09 15:27:28 +02:00
e6c0304af1 jungfrau server: programfpga: stop server also mapped during a reset, binaries added 2018-05-09 15:16:04 +02:00
16fe4d305e Merge branch 'progfpga' into esrfchanges 2018-05-09 11:21:07 +02:00
68e9648854 created programming mode, where only programming is allowed, one has to restart servers afterwards 2018-05-09 11:20:54 +02:00
0417a7e97d fixing warnings 2018-05-07 10:44:00 +02:00
6653cc9cb1 slsDetectorSoftware: jungfrau program fpga: mkstemp being used instead of creating file at source location 2018-05-03 11:22:02 +02:00
a37bbc50fe updated server binaries 2018-05-02 17:48:46 +02:00
5b01b4cbd8 Merge branch 'developer' into esrfchanges 2018-05-02 16:57:03 +02:00
d3a0319863 esrf changes: Listener, DataProcessor, DataStreamer, Fifo, ZmqSocket constructors return an exception when it fails 2018-05-02 16:49:27 +02:00
fdd19bc316 slsReceiver: udp socket buffer size, additional prints 2018-05-01 12:01:33 +02:00
1152555663 esrf changes: rx_udpsocksize sets/gets udp socket buffer size to be set, rx_realudpsocksize gets the real udp sock size buffer. At receiver config and at rx_udpsocksize command, dummy udp sockets created to know if set udp sock size fails (if fail, set to previous value), and also to get the real udp sock buffer size 2018-05-01 11:55:48 +02:00
516336963e [CTB] - Modified memory map address shift for the interface between FPGA and Blackfin SOM. Shift has to be set to 1 since the basic AMC data transfers is 8-bit and not 16-bit. 2018-04-27 15:11:37 +02:00
99281e2690 esrf changes: previous commit compile 2018-04-26 16:43:07 +02:00
501d2478a5 Merge branch 'jungfraunew' into esrfchanges 2018-04-26 16:37:33 +02:00
08b6eb78c5 gui: always mask out gain bit for jungfrau, even if missing packet 2018-04-26 16:32:03 +02:00
d096a5efeb jungfrau server: default storage cell start is 0xf 2018-04-26 16:30:27 +02:00
9f24bb0a98 jungfrauserver: bug fix: settings read correctly, forceswitchg2 mainly 2018-04-26 15:49:09 +02:00
173d8f740e esrf changes: slsReceiver: better checking of socket buffer pars. and warn on failures
* not done. The 'setsockopt(SO_RECVBUF)' system call cannot set the socket buffer
  size lager than the specified in net.core.rmem_max. The requested value
  was 2 GB (commit 3b0e2e6), which is far too large for this application,
  so it was restored to the acceptable 100 MB value.

* The syscall does not fail if the requested buffer size is larger than
  net.core.rmem_max. Use 'setsockopt(SO_RECVBUFFORCE)' to actually force a
  value larger than the system limit, which can be done if run in a
  privileged context (capability CAP_NET_ADMIN set).

* The real value is read with 'getsockopt(SO_RECVBUF)'. If it
  corresponds to twice the requested value (see 'man 7 socket'), it is
  printed in green, otherwise it is signalled in red.

* The 'setsockopt(SO_RECVBUFFORCE)' syscall removes the need to write to
  /proc/sys/net/core/rmem_max, so this was was suppressed in the
  'UDPStandardImplementation' constructor.

* The test on EIGER detectors before setting the system
  buffers was removed. Was there for 9m/2m eiger, but one can take care of
  memory requirements using a customizable max socket buffer size(only with
  permissions). to be implmented later.

* The file /proc/sys/net/core/netdev_max_backlog is first read by the
  receiver to check is the current value is OK. If it is not, the receiver
  directly writes the good value into the file (instead of delegating to
  the system shell), printing a red error message if there is an access
  error (non-privileged user).
2018-04-26 15:22:44 +02:00
16428f3828 esrf changes: CMake: support to be added and installed as a sub-project:
* Configure zmq as global imported library in slsReceiverSoftware
* Install zmq, necessary if linking to slsReceiver library
2018-04-25 18:24:08 +02:00
1247f760f2 virtual hdf file mapping fix for fnum-1 images 2018-04-25 17:39:09 +02:00
11475316fd eiger binary updated 2018-04-25 17:11:52 +02:00
a09c2e38a3 storage cell fix in gui for non jungfrau detectors 2018-04-25 17:03:25 +02:00
1c49fbb090 virtual hdf file mapping fnum-1 images, fixed 2018-04-25 16:52:14 +02:00
b5909044f6 slsReceiver: remove static members in Listener, DataProcessing and DataStreamer:
* Needed when more than one receiver is created by process
* Replace NumberofXxxx by explicit index in constructor
* Remove Error[Mask], use return value in constructor signature
* Replace RunningMask by individual Running flags
* Remove obsolete Mutex objects
2018-04-25 09:24:39 +02:00
62a88dadba Merge branch 'jungfraunew' of github.com:slsdetectorgroup/slsDetectorPackage into esrfchanges 2018-04-23 17:45:12 +02:00
e0bb7d74f4 esrf changes: eiver: initialise global optind variable before calling getopt_long: Needed when multiple receivers are instantiated in the same process 2018-04-23 17:43:54 +02:00
d09a1a0a95 esrf changes: users class added API functionality getNMods 2018-04-23 17:38:40 +02:00
d38108e527 esrf changes: slsReceiver: extend CircularFifo to support blocking/non-blocking transfers:
* Add blocking push (for performance) and non-blocking pop (for symmetry), default to blocking operations
* Fix memory fault if Fifo allocation fails
* Fix fifoFree initialisation to fifoSize elements (was fifoSize - 1)
2018-04-23 17:32:40 +02:00
c9675d111a jungfrau server: fixed the settings for gain2 stages 2018-04-23 16:11:04 +02:00
8f9c657fa0 esrf remove changes: VRS to interpolate, not copy 2018-04-23 14:41:01 +02:00
c35203ebfb fixed gitinfo 2018-04-23 14:19:55 +02:00
1069bf5979 esrf changes: slsDetector: fix setThresholdEnergy and slsDetectorAnalysis file read:
* slsDetector: Proper cleanup and return when no interpolation is possible
 * slsDetectorAnalysis: treat CAL DAC as irrelevant when interpolating settings for two energies(do not abort if different), also including VRS in copying
2018-04-23 13:31:05 +02:00
cac913831c esrf change: CMake: add support for GCC versions older than 6.1 2018-04-23 12:07:13 +02:00
03e781a0ac subperiod for eiger implemented in client side 2018-04-23 11:03:23 +02:00
a5a3d4bc78 added jungfrau server binary 2018-04-13 17:42:04 +02:00
bc70cc3a26 jungfrau server: added storage start, connected auto_comp_disable, changed adcphase, added ADC_PORT_INVERT_VAL, ADC_OFST_HALF_SPEED_VAL, minimum exposure time 2018-04-13 17:33:46 +02:00
e024774323 added storage cells 2018-04-13 15:05:43 +02:00
bdcccb7732 jungfrau server, changed api, fixed regdefs 2018-04-13 11:43:30 +02:00
5ff2e86060 jungfrau server configuring ASIC timer at server startup 2018-04-13 11:07:22 +02:00
70e193b0fd valgrind leak from tasks not deleting funcs 2018-04-13 09:35:18 +02:00
c3a9d3c342 fixed a valgrind error 2018-04-12 17:38:15 +02:00
d3c807975f adding a semaphore to handle end of acq 2018-04-12 15:50:27 +02:00
1c5250ea7f warning 2018-04-11 17:55:42 +02:00
7cb3b3f8de Merge branch 'developer' into zmqhandler 2018-04-09 18:21:59 +02:00
7cd35f24b8 added to users class receiverfifodepth, flowcontrol10g, 10gbe 2018-04-09 18:21:43 +02:00
28af3c2642 insignificant print 2018-04-09 17:44:55 +02:00
2bd8e6c166 zmq fixed to have additional json headers using rx_zmqjsonheader 2018-04-09 16:33:14 +02:00
ccdc7d22e9 gappixels also work with new zmq handler 2018-04-09 11:19:31 +02:00
3831896a78 Merge branch 'developer' into zmqhandler 2018-04-09 11:13:37 +02:00
9847729f3c gap pixels included in gui 2018-04-09 11:13:20 +02:00
0eff9e1401 debug print 2018-04-09 10:13:14 +02:00
4323a837ef Merge branch 'developer' into zmqhandler 2018-04-09 09:19:46 +02:00
649cb0aed9 added reset frames caught in to users class 2018-04-09 09:18:56 +02:00
8cf6e0cbd6 in between 2018-04-06 17:48:10 +02:00
753290b228 Merge branch 'developer' into zmqhandler 2018-04-06 12:19:16 +02:00
d28f293485 jungfrau and eiger server bug fix: module_firmware_version gets stuck as it expects an int, but should have been for module_serial_number 2018-04-06 12:15:57 +02:00
da010a03d7 added -std=c++98 to CXX flags 2018-04-04 18:07:33 +02:00
72b71f3fcd Merge branch 'developer' into zmqhandler 2018-04-04 14:57:24 +02:00
e4868671ae bugfix: users api version numbering always gives a -1. 2018-04-04 14:56:55 +02:00
61897cbd41 in between 2018-04-04 14:27:53 +02:00
9e8d3e598f added enablegappixels to users class 2018-03-28 10:41:52 +02:00
252e924f92 separated start gui button into start and stop to prevent multiple click syndrome 2018-03-27 17:49:01 +02:00
fe2ba8621b updating versioning to only have date 2018-03-27 11:00:15 +02:00
b8bdbf4da6 updaterev 2018-03-26 18:10:14 +02:00
5340b8ef24 added error mask for loading/writing config file to be caught by python 2018-03-26 18:07:10 +02:00
807189a492 Working for gotthard double modules 2018-03-26 10:30:44 +02:00
593f5b6c65 Working for gotthard double modules 2018-03-26 10:12:04 +02:00
b029f1fa26 Common mode added, working for gotthard double modules 2018-03-26 09:07:27 +02:00
14546247e4 adding a receiver callback to be able to give modified size from the callback 2018-03-22 14:34:03 +01:00
a74e8f68f7 size change in receiver call back API now streamed, gui allows smaller packet size than expected to be caught and replaced the rest with 0xFF 2018-03-21 17:08:38 +01:00
a1936cb884 updated docu 2018-03-21 09:10:11 +01:00
a36b715eab resolved conflicts from merging 3.1.1 in here 2018-03-21 09:03:31 +01:00
17c20748bc updated links in serverbin 2018-03-21 08:28:49 +01:00
d5f8a1b4e7 updated doc 2018-03-20 17:37:48 +01:00
70ce8c1653 updated doc 2018-03-20 17:35:39 +01:00
5203a0d621 updated doc 2018-03-20 16:40:56 +01:00
59ad15b54e eiger server bug fix: in 10giga mode always used the 1g ip (dhcp ip) if detectorip is before tengiga in config file 2018-03-20 16:36:45 +01:00
afac5be3c3 updated release notes 2018-03-20 12:20:15 +01:00
688dd15fe9 Jungfrau bug fix: cannot give same adcphase value to pll, updated recommended default of adcphase for half speed and quarter speed, updated client manuals for both adcphase and clkdivider 2018-03-20 12:12:38 +01:00
98752e1cdb manual 2018-03-20 11:40:37 +01:00
d59f419370 manual 2018-03-20 11:32:09 +01:00
9ba3fb9279 removed using namespace std from multiSlsDetector 2018-03-16 10:51:27 +01:00
50111bcea7 removed unused variable in slsDetector 2018-03-16 10:41:30 +01:00
ab06c33107 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-03-15 12:27:05 +01:00
10209b75df some changes in slsCalibration for moench 2018-03-15 12:26:45 +01:00
40210ae26f jungfrauserver adcphase fix: bug was if adcphase was same as previous value, it still shifted 2018-03-14 17:20:26 +01:00
dd6301d66d updated for compilation 2018-03-14 16:19:30 +01:00
b58c3e8951 solving merging conflicts from 3.1.0 to developer 2018-03-14 15:45:35 +01:00
85aa47b835 updated link in documentation 2018-03-12 16:38:01 +01:00
da9b0bdc0b updated link in documentation 2018-03-12 16:27:45 +01:00
258de4947a updated doc 2018-03-12 15:46:20 +01:00
9197ab6e4b sls detector install omitted, added 2018-03-12 15:36:36 +01:00
6c1c203782 documentation updated 2018-03-12 15:01:23 +01:00
721d2a30f2 read me updated 2018-03-12 14:25:39 +01:00
72970c9669 updated binaries, updated manuals, updated git versioning 2018-03-12 14:21:02 +01:00
b389402d64 Merge branch '3.1.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 3.1.0-rc 2018-03-08 17:13:20 +01:00
0d2dd93498 changed setBit and getBit to uint32_t 2018-03-08 17:13:13 +01:00
fee6465213 eiger and jungfrau servers int to uint32_t for read and write registers 2018-03-08 16:46:15 +01:00
8b02aa9e91 Merge branch '3.1.0-rc' of github.com:slsdetectorgroup/slsDetectorPackage into 3.1.0-rc 2018-03-08 16:08:45 +01:00
339956e5de changed from int to uint32_t in read and writeRegister 2018-03-08 16:08:31 +01:00
deb59530ab eiger gui fix: delay after trigger and number of gates upon measurements tab refresh doesnt exist for eiger/jungfrau 2018-03-08 15:49:01 +01:00
ec5e779225 added binary 2018-03-08 15:19:11 +01:00
3878212ffd jungfrau server adcphase not responding to a get properly 2018-03-08 15:17:14 +01:00
7649865a8f jungfrau bug fix: adc phase corrected to correctly return value in -1 2018-03-08 14:02:02 +01:00
06cdf8ad92 overloading access operator 2018-02-28 17:34:55 +01:00
28101bed22 updated binaries 2018-02-27 14:37:46 +01:00
1f6c289fd4 gotthard server : bugfix for getting id 2018-02-27 14:33:58 +01:00
675d69392a updating versions 2018-02-27 12:52:48 +01:00
61e7c0148f updating versions to 3.1.0 2018-02-27 12:40:53 +01:00
7364f674ed [JUNGFRAU] - Modified memory map address shift for the interface between FPGA and Blackfin SOM. Shift has to be set to 1 since the basic AMC data transfers is 8-bit and not 16-bit. 2018-02-22 11:15:24 +01:00
a536f8ac9b added png and Qt in CMakesList for gui 2018-02-19 17:44:57 +01:00
d48ca4a9fe merge from 3.0.1 in readme and makefle for manual 2018-02-09 14:12:27 +01:00
459b588b9f merge from 3.0.1 for gotthard 25um server start acq delay 2018-02-08 15:17:52 +01:00
8bf03a7712 Merge branch '3.0.1' into developer 2018-02-08 15:16:49 +01:00
895f8ccf81 Merge branch '3.0.1' into developer 2018-02-08 14:51:20 +01:00
a654febb7e merge from 3.0.1 parallalize dr 2018-02-07 15:48:39 +01:00
aa190fda7a merge from 3.0.1: eiger server detip and mac client updated back 2018-02-07 15:24:44 +01:00
897cbac27d merge from 3.0.1 for server binaries (adcphase,server dates, temp control, settings file 2018-02-07 11:02:36 +01:00
3da6a6df65 merge conflict removed, jungfrau server and eiger server re compiled 2018-02-05 12:33:05 +01:00
08fda2b662 in between in terms of mythen3 server, done with setdac and set power 2018-02-01 17:48:43 +01:00
6af3a6d33a Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-01-31 11:46:17 +01:00
b11b2dcfa9 in between stage 2018-01-31 11:45:34 +01:00
3782a56ef2 second My3 commit 2018-01-30 11:02:08 +01:00
e95b444908 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2018-01-30 10:25:21 +01:00
d1ef6bf94b some fixes in the cluster finder 2018-01-30 10:24:56 +01:00
3aeb3f58d1 first mythen3Server commit 2018-01-22 14:01:46 +01:00
09a707d7ff Merge branch '3.0.1' into developer 2018-01-19 16:12:36 +01:00
f264691dc1 renamed sebastians interpolation - must be edited to avoid root 2018-01-18 18:08:55 +01:00
3854c82b90 added iterative interpolation 2018-01-18 18:07:58 +01:00
92b4b3324e first mythen3 server commit 2018-01-18 09:25:06 +01:00
ac536ebdf7 cluster finder for phoenix data (i.e. old raw data format) 2018-01-15 11:52:28 +01:00
59c0861131 Merge branch '3.0.1' into developer 2017-12-19 17:51:31 +01:00
31589ce352 added and fixed gotthard 25um file and zmq photon finder 2017-12-19 13:40:05 +01:00
7602ffc5ac gotthard on the fly to be stested 2017-12-14 17:01:28 +01:00
13078d0ef2 gotthardDataStructures added 2017-12-14 17:00:30 +01:00
9f3468bd15 Merge branch 'developer' of github.com:slsdetectorgroup/slsDetectorPackage into developer 2017-12-14 16:59:04 +01:00
b50c1d966a on the fly moench photon finder and cluster saving 2017-12-14 16:58:22 +01:00
65a91c519e Merge branch '3.0.1' into developer 2017-12-14 14:29:16 +01:00
5958cf9278 Merge remote branch 'slsDetectorCalibration/developer' into developer 2017-12-12 11:14:38 +01:00
f6e1c21137 Merge branch '3.0.1' into developer 2017-12-12 09:05:50 +01:00
d2319459df Merge branch '3.0.1' into developer 2017-12-11 18:03:01 +01:00
d6bdbf8524 Merge branch '3.0.1' into developer 2017-12-11 13:51:20 +01:00
4c0a16cd75 Merge branch '3.0.1' into developer 2017-12-11 11:13:32 +01:00
e39d0aee56 Merge branch '3.0.1' into developer 2017-12-11 10:51:28 +01:00
1e849097ea merge conflict fixed in filename bug 2017-12-08 12:09:10 +01:00
7577d03e75 Merge branch '3.0.1' into developer 2017-12-08 11:50:15 +01:00
6e876d79ee conflict merged fix, lockin in stop and startandreadallnowait, r_restreamstop moved to stop 2017-12-08 11:45:29 +01:00
4718378d0a corrected bug fix in r_restreamstop 2017-12-06 19:21:28 +01:00
24c305ec59 solved conflicts from merge of version being used to binary 2017-12-06 19:07:06 +01:00
1bf7b4a6a1 directory restuctured 2017-12-06 09:10:13 +01:00
2f3dc8d109 Merge branch '3.0.1' into developer 2017-12-06 08:44:21 +01:00
7e932bf84b Merge branch '3.0.1' into developer 2017-12-05 16:04:26 +01:00
98e09b29d5 merge conflict solved -1 in adc in gui 2017-12-05 15:39:02 +01:00
a51f4f1252 Merge branch '3.0.1' into developer 2017-12-05 14:49:32 +01:00
2d14da545d Merge branch '3.0.1' into developer 2017-12-05 13:47:09 +01:00
9150556209 merge from 3.0.1 added more to write config/paramters 2017-12-05 13:42:35 +01:00
3b684c4662 Merge branch '3.0.1' into developer 2017-12-05 13:41:26 +01:00
0ef52138e1 merge conflict sorted, removing rest 2017-12-05 11:25:10 +01:00
28211af5af Makefile for Receiver merged incorrectly sometime back, also in archived project 2017-12-05 11:23:35 +01:00
2ae5a959fe fix in receiver merge conflict (before the respos merge) 2017-12-04 18:35:57 +01:00
263d702535 Merge remote branch 'slsDetectorGui/developer' into developer 2017-12-04 16:48:32 +01:00
7512f818cb Merge remote branch 'slsReceiverSoftware/developer' into developer 2017-12-04 16:48:32 +01:00
25023f6971 Merge remote branch 'slsDetectorSoftware/developer' into developer 2017-12-04 16:48:30 +01:00
9f152ce1f3 merge conflict resolved 2017-12-01 12:44:34 +01:00
12348ac76c merge conflict fix 2017-12-01 09:20:44 +01:00
0e26734023 restreaming stop fix 2017-11-30 19:13:55 +01:00
fd64ba289e Merge branch '3.0.1' into developer 2017-11-30 19:07:21 +01:00
6f3898441e merge conflict from 3.0.1 to restream stop from recieveR 2017-11-30 19:05:47 +01:00
5b88203bd9 merge conflict from 3.0.1 to restream stop from recieveR 2017-11-30 19:05:35 +01:00
385e6714cc merge conflict from 3.0.1 to restream stop from recieveR 2017-11-30 19:05:19 +01:00
1edb41242c ensure gui gets measurement finished after dummy packet received from receiver/ext process 2017-11-29 15:22:10 +01:00
397344a264 Merge branch '3.0.1' into developer 2017-11-29 12:13:09 +01:00
e17e4c3171 Merge branch '3.0.1' into developer 2017-11-28 18:50:27 +01:00
8bba57e77d fix to not have sls_receiver_defs in zmqSocket.h incldue 2017-11-28 16:32:15 +01:00
7c1423d654 zmqip fix to restart reciever streaming form command line, fix to not have sls_receiver_defs in zmqSocket.h incldue 2017-11-28 16:31:43 +01:00
8388d1f503 using file index from zmq 2017-11-28 14:45:48 +01:00
6a41b5ce3a using file index from zmq 2017-11-28 14:45:29 +01:00
1c606df752 using file index from zmq 2017-11-28 14:45:01 +01:00
1e85482d09 make updated 2017-11-28 11:30:23 +01:00
a89847538d merge ocnflict for white background 2017-11-28 11:29:15 +01:00
130f3d2e6f Merge branch '3.0.1' into developer 2017-11-28 11:18:43 +01:00
57fc89a6bb comment users 2017-11-28 10:51:05 +01:00
f49998ccd9 Merge branch '3.0.1' into developer 2017-11-28 10:35:24 +01:00
41f24489bc zmqip in users fixed 2017-11-28 10:33:40 +01:00
addf964901 Merge branch '3.0.1' into developer 2017-11-28 09:37:09 +01:00
bca7c649d7 Merge branch '3.0.1' into developer 2017-11-28 09:37:09 +01:00
747e9af431 Merge branch '3.0.1' into developer 2017-11-28 09:26:55 +01:00
620f7651a0 Merge branch '3.0.1' into developer 2017-11-28 09:24:57 +01:00
4466213882 makng the zmq work without external flag 2017-11-27 17:06:27 +01:00
ca19993149 makng the zmq work without external flag 2017-11-27 17:06:18 +01:00
e29371ca8d makng the zmq work without external flag 2017-11-27 17:06:11 +01:00
3439ccbec9 updates for merge for r_readfreq without reciever 2017-11-23 18:30:48 +01:00
a0c9018455 Merge branch '3.0.1' into developer 2017-11-23 18:24:34 +01:00
f0431bd873 Merge branch '3.0.1' into developer 2017-11-23 18:24:33 +01:00
ab5229bcbf bugfix zmq ip was being overwritten 2017-11-23 17:48:30 +01:00
585661412c Merge branch '3.0.1' into developer 2017-11-23 17:20:13 +01:00
935fecefde copy zmq ip even if receiver not online, else it is lost 2017-11-23 17:18:40 +01:00
2c276db579 solved merge conflict in changes to use ZmqSocket.h externally 2017-11-23 16:35:31 +01:00
a57e8edd88 jctb setting dr correctly 2017-11-23 16:15:38 +01:00
2ac170db98 removed data streaming shutdown from command line to allow external gui 2017-11-23 11:52:46 +01:00
ab93835ce2 merge conflict to include datastreaming in client comment 2017-11-23 10:29:08 +01:00
43140811bd one measurement in users class 2017-11-23 10:25:35 +01:00
34908edd6a Merge branch '3.0.1' into developer 2017-11-23 10:22:03 +01:00
29f3387d73 Merge branch '3.0.1' into developer 2017-11-23 09:34:22 +01:00
a1d325a115 Merge branch '3.0.1' into developer 2017-11-23 09:20:22 +01:00
3034cf87d0 changes that might be reverted in detser 2017-11-23 09:20:20 +01:00
0b45d73e0c Merge branch '3.0.1' into developer 2017-11-22 18:02:45 +01:00
c0bfe46aa1 enabling client in developer user api 2017-11-22 18:00:41 +01:00
26829585dc Merge branch '3.0.1' into developer 2017-11-22 17:47:28 +01:00
c0a1f83691 Merge branch '3.0.1' into developer 2017-11-22 17:43:49 +01:00
fb3c903c04 Merge branch '3.0.1' into developer 2017-11-22 17:06:51 +01:00
db6947cc9c Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-11-22 15:08:33 +01:00
590fac9e07 making nx and ny available for jctb in call back 2017-11-22 15:08:09 +01:00
400585be6a Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-11-22 12:34:28 +01:00
dcfa6fb100 Fixed filename problem with CPU readout and trimval command for mythen 2017-11-22 12:34:14 +01:00
39a20e1616 comment 2017-11-22 11:34:55 +01:00
114c45c04a making gui work temporarily for jctb 2017-11-22 09:27:42 +01:00
4159e83fd6 making gui work temporarily for jctb 2017-11-22 09:27:01 +01:00
3a26c95c0d Merge branch '3.0.1' into developer 2017-11-21 15:46:21 +01:00
f2f00fec06 Merge branch '3.0.1' into developer 2017-11-21 15:35:19 +01:00
7f58b77dfb Merge branch '3.0.1' into developer 2017-11-21 15:12:32 +01:00
5d34358f44 changin zmqip in rxr should also restart streaming 2017-11-21 15:11:29 +01:00
8328b30cbd removed merge conflicts from bug fix of zmq buffering while acquire from command line 2017-11-21 14:58:07 +01:00
9c55cb4974 removed merge conflicts from bug fix of zmq buffering while acquire from command line 2017-11-21 14:57:52 +01:00
a0ad1fb3a3 Merge branch '3.0.1' into developer 2017-11-21 14:15:59 +01:00
2067f47f34 Merge branch '3.0.1' into developer 2017-11-21 14:15:59 +01:00
46aeee00f1 somewhere 2017-11-21 12:30:58 +01:00
5f0575236e Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-11-21 12:10:33 +01:00
45e0cf71eb put trimval should work also for MYTHEN 2017-11-21 12:09:52 +01:00
bd228fac27 bug fix in cleanup code, indexing 2017-11-20 17:19:03 +01:00
b7ca7f5319 just cleanuped code 2017-11-20 17:15:13 +01:00
11c9ab16f9 Merge branch '3.0.1' into developer 2017-11-20 16:44:21 +01:00
e6d22a97e2 Merge branch '3.0.1' into developer 2017-11-20 15:14:13 +01:00
99037449f4 in between moench stuff 2017-11-20 14:23:32 +01:00
97260510f2 gap pixels should be allowed to set to 0 for other detectors 2017-11-20 09:43:41 +01:00
662f502d4c zmq always needs an ip in header 2017-11-17 17:40:57 +01:00
c5c23e73d5 works zmq separated for client and rx, ports and ip included in expert advanced mode 2017-11-17 17:39:04 +01:00
70e4c6e2a2 zmq separated for client and rx, ports and ip included in expert advanced mode 2017-11-17 17:37:00 +01:00
428855d801 in between 2017-11-17 14:02:00 +01:00
2e234f1bbd Merge branch '3.0.1' into developer 2017-11-17 11:36:02 +01:00
1dee950870 merge conflict from 3.0.1 2017-11-17 11:35:15 +01:00
51499fa503 merge conflict from 3.0.1 2017-11-17 11:35:02 +01:00
dcf4d98a75 show warnings, update binaries conflict from merge 2017-11-17 11:33:52 +01:00
28e2ebf75a merge conflict resolved from 3.0.1 2017-11-17 09:40:42 +01:00
bf89dd44f3 updated binaries 2017-11-16 12:34:12 +01:00
d9fcac0236 updated merge from 3.0 hotfix setdac 2017-11-16 12:32:38 +01:00
7f256c868b fixed bug for 1D detector in slsDetectorData 2017-11-15 14:39:35 +01:00
06b9efd229 modifications for on the fly analysis working at cSAXS 2017-11-15 12:23:21 +01:00
9ad0fd0bc9 modifications for on the fly analysis working at cSAXS 2017-11-15 12:21:58 +01:00
7c9958db04 updated binary merge from 3.0 regarding settings 2017-11-15 10:36:55 +01:00
956625bb50 Merge branch '3.0' into developer 2017-11-15 10:35:20 +01:00
4f74f6d08f Merge branch '3.0.1' into developer 2017-11-14 15:19:14 +01:00
2d962dfead Merge branch '3.0.1' into developer 2017-11-14 12:43:19 +01:00
db2fef5d69 conflict resolved in merge from 3.0.1 to include file index in zmq streaming 2017-11-14 12:14:26 +01:00
cf4498cf78 Merge branch '3.0.1' into developer 2017-11-14 10:59:01 +01:00
c127eebeaa Merge branch '3.0.1' into developer 2017-11-14 09:13:39 +01:00
363aa9124e Merge branch '3.0.1' into developer 2017-11-14 09:08:16 +01:00
8872f86e31 Merge branch '3.0.1' into developer 2017-11-13 15:32:47 +01:00
4c4a26c0e3 Merge branch '3.0.1' into developer 2017-11-13 13:39:39 +01:00
e33ba2cd76 merge from 3.0.1 compiling with rpath and updating detector binaries 2017-11-13 12:32:08 +01:00
1af065fdb1 infinite loop with gettotalnumberofchannels in gappixels initialization resulting in bus error fix 2017-11-13 11:13:26 +01:00
678ef89e17 conflict resolved from merge developer to gappixels insignificant 2017-11-10 16:54:18 +01:00
dc70c45ef2 Merge branch 'developer' into gappixels 2017-11-10 16:53:14 +01:00
c0ec315b04 Merge branch 'developer' into gappixels 2017-11-10 16:53:14 +01:00
6fa4e4cef8 Merge branch '3.0.1' into gappixels 2017-11-10 16:37:28 +01:00
3886a0c9ad merge fix from 3.0.1 regarding gethostbyname thread safety 2017-11-10 16:37:20 +01:00
5b65d44303 Merge branch '3.0.1' into developer 2017-11-10 16:34:43 +01:00
23ddb3d4b5 merge fix from 3.0.1 regarding gethostbyname thread safety 2017-11-10 16:34:31 +01:00
a2210c0118 Merge branch '3.0.1' into gappixels 2017-11-09 14:08:04 +01:00
6d0f751104 Merge branch '3.0.1' into developer 2017-11-09 14:07:48 +01:00
3c6d572369 including dynamic range in gui call back 2017-11-02 11:02:40 +01:00
7ba90f98fc including dynamic range in gui call back 2017-11-02 11:02:22 +01:00
589a5c7852 Merge branch '3.0.1' into gappixels 2017-11-02 10:55:05 +01:00
0df4576874 Merge branch '3.0.1' into developer 2017-11-02 10:54:40 +01:00
82f503aa09 dynamic range also updates offsets, 4 bit mode gap pixels work in call back from gui 2017-10-31 12:50:31 +01:00
3da8bca462 allowing receiver to know of gap pixels enable even in 4 bit mode, but not doing anything useful 2017-10-31 12:39:36 +01:00
9d4c14b724 gap pixels should now work for 4 bit mode and a bug fix in decoding for 4 bit mode 2017-10-31 12:38:42 +01:00
6ff249c3f2 Merge branch 'developer' into gappixels 2017-10-27 16:18:52 +02:00
e12229633c update binaries 2017-10-27 16:18:21 +02:00
b75dde4613 merge bug fix of set module 2017-10-27 16:17:12 +02:00
f6989d5539 merge bug fix of set module 2017-10-27 16:16:38 +02:00
7ff23b25b3 merge bug fix of set module 2017-10-27 16:16:29 +02:00
79bce5e006 4 bit mode works without gappixels 2017-10-26 16:01:18 +02:00
9c82a8f726 temp in between, trying to get 4 bitmode to work without gap pixels 2017-10-26 11:19:58 +02:00
6812961836 temp in between, trying to get 4 bitmode to work without gap pixels 2017-10-26 11:09:55 +02:00
003239cddd gap pixels for 4 bit mode restrictions, not completed 2017-10-24 14:16:08 +02:00
ce7386e230 merge solved from developer, xcoord from detector if given 2017-10-23 17:21:45 +02:00
fde4194f9b merged with developer, receiver call back merged with no call back 2017-10-23 17:12:00 +02:00
7f9ac86862 Merge branch 'developer' into gappixels 2017-10-23 17:09:13 +02:00
16a939c0c0 Merge branch '3.0.1' into developer 2017-10-23 17:08:12 +02:00
4084e2c31e updated release doc 2017-10-23 17:06:12 +02:00
1f138abac1 fix in receiver as x, y and z are properly integrated with detector server for eiger and jungfrau, and handling previous versions of detector where x y and z were all 0 (hardcoding them in 1 d) 2017-10-23 12:21:41 +02:00
d2fd0cbee9 x y and z coordinates are pushed into eiger server and its fixed in appropriate client side as well 2017-10-23 12:20:18 +02:00
210bcb081d xcoord should not be hardcoded for this version for eiger and jungfrau 2017-10-20 10:49:02 +02:00
673b7f1652 merge conflict fixed with developer 2017-10-19 15:36:28 +02:00
b6ae3300a9 merge conflict fixed with developer(patches for file write disable, xcoord) 2017-10-19 15:35:34 +02:00
801817b749 bug fix to the merge 2017-10-19 14:41:12 +02:00
1cddb9a542 merge from 3.0.1 with patches for file write disable 2017-10-18 17:53:55 +02:00
927e776353 Merge branch 'developer' into gappixels 2017-10-12 15:09:35 +02:00
36a200ceba Merge branch 'developer' into gappixels 2017-10-12 15:09:30 +02:00
0fe43c75f2 merge branch developer into gappixels, added .project into gitignore 2017-10-12 15:08:32 +02:00
4d92744dea .project added to gitignore 2017-10-12 15:08:12 +02:00
ae72df7b14 .project added to gitignore 2017-10-12 15:07:54 +02:00
e814aee300 .project added to gitignore 2017-10-12 15:07:33 +02:00
4f2af046d3 Merge branch 'developer' into gappixels 2017-10-12 14:58:41 +02:00
91588ecc21 Merge branch 'developer' into gappixels 2017-10-12 14:58:25 +02:00
d2767afa7c added the eiger server binary with merges from 3.0.1 2017-10-12 14:57:12 +02:00
311059d748 merge fix from 3.0.1 which includes server without crash, multi settimer -1 bug, need to recompile eiger server for this branch 2017-10-12 14:42:57 +02:00
10e57319bf moench03OnTheFlyAnalysis multipthreaded with interpolation works 2017-10-12 10:31:11 +02:00
2e5f64d9bc gap pixels for 8, 16, 32 in receiver at udp level 2017-10-05 15:59:07 +02:00
0d92b11055 print out comment, not print if mythen else access to null 2017-10-05 15:58:37 +02:00
4260dc0baf conflict resolution 2017-10-03 15:18:56 +02:00
0f302e3446 conflict resolution 2017-10-03 15:17:15 +02:00
e54767b69d conflict resolution with developer 2017-10-03 15:12:56 +02:00
812606a7b4 conflict resolution with developer 2017-10-03 15:12:49 +02:00
fc025bd28b conflict resolution with developer 2017-10-03 15:12:35 +02:00
34f10b382e one more conflict resolved from mergin with 3.0.1 (silent mode, this had changes for zmq source ip) 2017-10-03 15:01:30 +02:00
0b82aabd2b merge with 3.0.1 conflicts resolved 2017-10-03 14:52:53 +02:00
03a2f979a9 fixing merge conflict in error_Defs 2017-10-03 14:32:30 +02:00
4669d408d4 somewhere in between 2017-10-03 12:09:31 +02:00
c594870fdd Merge branch 'realgappixels' into gappixels 2017-10-03 10:49:47 +02:00
34062b6e0b fixed 32 bit gui masking problem in qdrawplot (conversion from char* to double) mythen clause not activated 2017-10-03 10:49:26 +02:00
7cde5dbe38 changes upto the receiver, not incl gui 2017-10-03 10:44:08 +02:00
bb817733ff changes upto the receiver, not incl gui 2017-10-03 10:44:05 +02:00
7cf7d9eb79 changes upto the receiver, not incl gui 2017-10-03 10:44:01 +02:00
907ab2f0bd changes upto the receiver, not incl gui 2017-10-03 10:43:47 +02:00
d0b379a2d5 double* changed to char* in gui data call back, effect in receiver is change in zmqsocket.h from int* to char* 2017-10-02 13:21:49 +02:00
afc08f8c30 double* changed to char* in gui data call back, decoding to be done by caller. enablegappixels skeleton created 2017-10-02 13:21:38 +02:00
5a7800768b double* to char* in detector call back. 2017-10-02 13:20:19 +02:00
63c0fe863d missing packets 0xffff are also anded with the mask, fixed 2017-09-29 18:33:41 +02:00
fa79a36089 should work, but jungfrau needs debugging 2017-09-29 16:43:07 +02:00
9bdb361d08 works but needs to be verified. the void* in call back 2017-09-29 11:39:36 +02:00
1a8b0692fe works but needs to be verified. the void* in call back 2017-09-29 11:39:10 +02:00
352ade6457 just skeleton of gappixels 2017-09-27 17:08:00 +02:00
986826cbe9 x y z and id are written to the udp header for eiger 2017-09-26 16:39:02 +02:00
e0d82ad92d only 3d positins in x y z coord, so receiver not overwriting them 2017-09-22 15:29:28 +02:00
663fd557ff client gives now 3d positions of detector to be configured in udp header, only in jungfrau firmware till now 2017-09-22 15:28:57 +02:00
5a8f30fee8 Merge branch '3.0.1' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-09-22 12:28:24 +02:00
e8bb186ff8 removed setframeindexenable from being set by client, redundant. removed read_frame from list of functions, obsolete. 2017-09-22 12:25:08 +02:00
ab27437604 removed setframeindexenable from going to the receiver, it can figure it out on its own now 2017-09-22 12:23:39 +02:00
c2f6e5b20c modifying to adjust to common basic tests debug mode for jungfrau 2017-09-21 17:58:10 +02:00
7e0481eeff renamed server names 2017-09-21 16:45:40 +02:00
2b3d2bb4d7 removed changing number of samples by setting dynamic range 2017-09-21 16:36:33 +02:00
d8803ca5e4 improved library structure for analog detectors and interpolation t.b.t. 2017-09-21 15:03:43 +02:00
2bd5386c29 Merge branch '3.0.1' into developer 2017-09-21 13:35:16 +02:00
c5ff578d10 Merge branch '3.0.1' into developer 2017-09-21 13:35:16 +02:00
6eb5167c70 Merge branch '3.0.1' into developer 2017-09-21 13:35:16 +02:00
862169e178 jungfrau with the option to start in debug mode to bypass the checks and tests 2017-09-20 16:20:39 +02:00
e2832d2e1b Merge branch '3.0.1' into developer 2017-09-19 17:19:37 +02:00
092487c08e Merge branch '3.0.1' into developer 2017-09-19 17:19:36 +02:00
b78dcf869b Merge branch '3.0' into developer 2017-09-15 13:27:18 +02:00
c635b19941 fixed jungfrau image after programfpga, fixed resetfpga 2017-09-14 15:55:55 +02:00
5ff574b33f made default streamer to be the ip related to hostname, otherwise can be specified from the client, also made it compatible with chip test board detector now 2017-09-12 15:04:56 +02:00
49378e6d09 added streamsrcip command to be able to change the interface from which receiver streams data from 2017-09-12 14:33:11 +02:00
aef462da32 merge error fixed 2017-09-08 09:31:26 +02:00
1ba325e902 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-09-07 11:27:52 +02:00
1c14b146a2 T1 data structure from CPU added 2017-09-04 14:28:30 +02:00
e95ffde95d T1 data structure finally correct 2017-09-04 14:26:28 +02:00
4ed3859c75 Merge branch 'virtualclass' into developer 2017-09-01 15:40:28 +02:00
069d044e17 fixed gain plot, aspect ratio, 1/4size of mainplat, keeping limits also for gain plot at start up, removing gain plot titles 2017-09-01 15:37:05 +02:00
272167435d gainplot added, masking done separately before converting to double 2017-09-01 12:04:04 +02:00
277dc2cfd9 gainplot added for jungfrau, aspect ratio check in gui added, npixels-1 as endpixel bug fix 2017-09-01 12:03:09 +02:00
1510fa71d3 T1 data structure fixed 2017-09-01 10:08:07 +02:00
ca865a6636 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-08-16 09:27:48 +02:00
3aeb15648c Anna's modifications 2017-08-11 15:55:07 +02:00
52e1bd32b9 Anna's modifications 2017-08-11 15:52:08 +02:00
0b6aeac364 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-06-27 10:40:19 +02:00
ffd3cb6511 Merge branch 'developer' of git.psi.ch:sls_detectors_software/sls_detector_software into developer 2017-06-26 13:03:08 +02:00
dfb8a1f7ad small modifications for jctb and moench03 module 2017-06-26 13:03:01 +02:00
432 changed files with 41286 additions and 35771 deletions

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
set (CALIBRATE OFF)
option (USE_HDF5 "HDF5 File format" OFF)
@ -7,7 +7,12 @@ option (USE_TEXTCLIENT "Text Client" OFF)
option (USE_RECEIVER "Receiver" OFF)
option (USE_GUI "GUI" OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-misleading-indentation")
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++98 -Wno-misleading-indentation")
else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98")
endif ()
find_package(Qt4)
find_package(Qwt 6)
@ -31,8 +36,10 @@ endif (USE_TEXTCLIENT)
if (USE_RECEIVER)
add_subdirectory(slsReceiverSoftware)
add_subdirectory(manual/manual-api)
endif (USE_RECEIVER)
if (USE_GUI)
if (QT4_FOUND AND QWT_FOUND)
add_subdirectory(slsDetectorGui)

View File

@ -23,7 +23,7 @@ CALIBDIR = $(WD)/slsDetectorCalibration
TABSPACE := "\t"
INCLUDES=-I. -I$(LIBRARYDIR)/commonFiles -I$(LIBRARYDIR)/slsDetector -I$(LIBRARYDIR)/usersFunctions -I$(LIBRARYDIR)/multiSlsDetector -I$(LIBRARYDIR)/slsDetectorUtils -I$(LIBRARYDIR)/slsDetectorCommand -I$(LIBRARYDIR)/slsDetectorAnalysis -I$(LIBRARYDIR)/slsReceiverInterface -I$(LIBRARYRXRDIR)/include -I$(LIBRARYDIR)/threadFiles -I$(ASM)
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$(LIBRARYDIR)/sharedMemory -I$(ASM)
INCLUDESRXR += -I. -I$(LIBRARYRXRDIR)/include -I$(CALIBDIR) -I$(ASM)
#LIBFLAGRXR +=

View File

@ -1,10 +1,13 @@
### Documentation
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support)
### Binaries
Documentation to obtain the binaries via the conda package is available [here.](https://github.com/slsdetectorgroup/sls_detector_software)
### Source code
One can also obtain the source code from this repository and compile while realizing the setup dependencies as required.
```
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch 3.0.1
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
```
#### Setup dependencies
@ -41,6 +44,9 @@ Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]<br>
* -g: Build/Rebuilds only gui<br>
* -j: Number of threads to compile through<br>
Basic Option:
./cmk.sh -b
For only make:
./cmk.sh

View File

@ -1,350 +1 @@
SLS Detector Package 3.0.1 released on 2018-02-12
=================================================
INTRODUCTION
This document describes the differences between 3.0.0 and 3.0.1 release.
The conda package of the binaries can be downloaded from
https://github.com/erikfrojdh/sls_detector_software.git
The conda package of the python API wrap-around to the software package is at
https://github.com/slsdetectorgroup/sls_detector.git
Manual (both HTML and pdf versions) are provided in
manual/docs/
Documentation from Source Code can be found for the Command Line and C++ API in
html:
manual/docs/html/slsDetectorClientDocs/index.html
manual/docs/html/slsDetectorUsersDocs/index.html
pdf:
manual/docs/pdf/slsDetectorClientDocs.pdf
manual/docs/pdf/slsDetectorUsersDocs.pdf
Documentation to the python API is available at
https://slsdetectorgroup.github.io/sls_detector/
Example including binaries for detector and receiver user classes can be found in
manual/manual-api
User documentation can also be accessed directly at this location:
https://www.psi.ch/detectors/users-support
If you have any software related questions or comments, please send them to:
dhanya.thattil@psi.ch
anna.bergamaschi@psi.ch
If you have any python related questions or comments, please send them to:
erik.frojdh@psi.ch
CONTENTS
- Firmware Requirements
- Changes in User Interface
- New Features
- Resolved Issues
- Known Issues
Firmware Requirements
=====================
Please refer to the link below for more details on the firmware versions.
https://www.psi.ch/detectors/firmware.
Gotthard
========
Minimum compatible version : old one
Latest version : 08.02.2018 (50um and 25um Master)
09.02.2018 (25 um Slave)
-Can not be upgraded remotely.
Eiger
=====
Minimum compatible version : 16
Latest version : 21
-Can be upgraded remotely via bit files.
Jungfrau
========
Minimum compatible version : 13.11.2017
Latest version : 13.11.2017
-Can be upgraded remotely via sls_detector_put programfpga <pof>.
Changes in User Interface
=========================
Client
------
1. Additional functions added for advanced users in users class:
(setSpeed, setClockDivider, setReadOutFlags, setDac, getADC,
setAllTrimbits, startReceiver, stopReceiver,
startAcquisition non blocking, setReceiverSilentMode, setHighVoltage,
enableDataStreamingToClient, enableDataStreamingFromReceiver,
setReceiverDataStreamingOutPort, setClientDataStreamingInPort)
2. Zmq set up for client and receiver are separated.
zmqport for client and rx_zmqport for receiver. By default, they are the
same for the slsDetectorGui to work.
3. Users example also works without config file, where detector already
configured in shared memory.
4. Use "sls_detector_get busy 0" to clear acquiring flag in shared memory
caused due to an earlier interrupted acquisition from Ctrl+C"
5. Set bit, clear bit, read register and write register cannot give -1 for
inconsistent values from multiple detectors. One has to check error from
API or read the values individually.
6. multiSlsDetector::char* getSettingsFile() function signature has been
changed to string getSettingsFile().
Receiver
--------
7. Modified the help manaual/main-api/mainReceiver.cpp to make it more
robust (handling child process exit) and flexible to determine upon
start up the number of receivers (child processes), the start TCP port
and whether to call back data.
detReceiver is now executed with [start tcp port] [number of receivers]
[1 for call back, 0 for none] as arguments.
By default, start tcp port is 1954, number of receivers is 1, and call
back is initiated.
8. rx_datastream to enable/disable data streaming in receiver. Using the GUI
or registering data call back in client automatically enables zmq in
receiver and client. "externalgui" is removed from the command line. Use
this command instead.
9. Rx_tcpport argument to the slsReceiver can be given using -t.
Eg. slsReceiver -t1955
New Features
============
Package
-------
1. In addition to the C++ API, the Python API is also now provided.
2. CMAKE now with debug flag and rpath, show warnings, compile only certain
components (such as receiver or gui)
3. One repository for entire package and made available at github.
4. One can do --version or -v to all the binaries to find out the release
version of the particular executable.
5. All the software version numbers have only date in format YYMMDD.
Client
------
6. Parallelized more commands to detector. Beneficial for large detectors.
(setTimer, setFileIndex, setOnline, setReceiverOnline, getReceiverStatus,
resetFramesCaught, setFrameIndex, setFileName, getFramesCaughtByReceiver,
setDynamicRange, setRateCorrection)
Option to also use "sls_detector_put threaded 0" to improve speed by
eliminating progress display during acquisition. Effective only for
large detectors.
Detector Server
---------------
7. (Eiger) Virtual class to execute on pc.
8. One can now read temperatures during acquisition. It goes via the stop
server.
9. (Jungfrau) One can start server in "debug" mode and then program the
new firmware via software command "sls_detector_put programfpga xx.pof".
10. (Jungfrau) Server can exit on start up if either the firmware or the
server is incompatible with each other.
11. (Jungfrau) One is able to set transmission delay (ms) of image for each
individual detector using "txndelay_frame" command. Beneficial for
large detectors.
12. (Jungfrau) One can set a threshold temperature (temp_threshold) and
enable the temperature control feature (temp_control). When the
temperature (temp_fpga) overshoots the threshold temperature, it will
set the temperature event (temp_event) and power off the chip. One must
then switch off the detector and check cooling. Switching back on starts
with defaults.
13. (25um Gotthard) Added start acquisition delay to master module.
14. (Gotthard) New constraints include minimum exposure time is 186 ns and
minimum period is 1278 ns + current exposure time.
Receiver
--------
14. The detectorip and rx_udpip does not have to be in the same subnet anymore.
Add the following commands after rx_hostname in config file to overwrite
mac configuration:
rx_udpmac [router mac]
configuremac 0
15. Added silent mode to receiver using command r_silent [i] from client.
It might be beneficial for max frame rate applications.
16. Receiver print out can handle black or white backgrounds.
17. zmq package included updated to v4.0.8.
18. Zmq streaming from receiver also sends file index in json header.
Gui
---
18. If acquisition is done, but "stop dummy packet" to the gui was lost in
the network, stop acquisition command will restream it so that the gui
doesnt hang forever. This is used only for very fast detectors like
Moench.
Resolved Issues
===============
Client
------
1. gethostbyname used in connecting to sockets was not thread safe for
multiple detectors. Using getaddrinfo for stability in multi threaded
environment.
2. Updated writing content of config and parameter dump into files.
3. More locking to handle main and processing threads using the threadpool.
Removing unlock twice, which is undefined behavior.
Detector Server
---------------
4. (Eiger) The hardware MAC of the detector is used during configuration
and relayed back to client. Similarly, hardware IP for 1 Gbe data mode.
5. (Eiger) Status will return error if there was the unlikely trouble
reading status register in the front end board. Earlier, it would only
return idle.
6. (Jungfrau) patch server v3.0.0.6.3
Able to set settings, high voltage now correctly reads 0 when
switched off, dacs are properly set.
7. (Jungfrau) FPGA reset and programming FPGA firmware via software is done
properly
8. (Gotthard) patch server v3.0.0.5.1
Able to read temperature properly.
9. (Gotthard) butst mode if set too fast had unwanted behavior such as
sending same image continuously. Now it is handled to display error
and stop acquisition.
10. (Gotthard) completely removed the possibility to set timing modes
other than auto and trigger as they are not implemented anyway. Also
signal index 1, 2 and 3 are reserved and hence, cannot be configured for
an external trigger.
11. Non Mythen and non Eiger detectors can also now get settings file from
board.
12. (Gotthard) Did not get first few images initially after configuring MAC
of detector. Fixed.
Receiver
--------
12. Made it easier to disable the standard receiver and fixing bugs related
to the use of a custom one.
13. (Jungfrau) HDF5 dimensions (npixelsY) required for mapping fixed.
14. patch2-v3.0.0-slsReceiverSoftware.patch
x, y and z coordinates in the call backs and the files are hardcoded
for this release.
15. Rest implementation (not used by standard receiver) removed.
Gui
---
16. patch1-v3.0.0-slsDetectorGui.patch
(Eiger) In expert mode and in advanced tab, when trimbits
loaded are different for every pixel, the gui complains and sets
all trimbits to zero. This has been resolved. Now, the "Set All
Trimbits" field is just set to -1.
17. Fixed segmentation fault of xputsn properly.
18. Upon clicking on "Start", clears acquiring flag in shared memory
caused due to an earlier interrupted acquisition from Ctrl+C"
19. Fixed plotting twice caused due to unzooming the first time.
20. Removed option for compression in Gui as it is not available currently.
21. Can also show Jungfrau multi detector in x direction in gui.
22. Switching tabs sometimes results in delay and gates fields being incorrectly
enabled. Fixed.
Known Issues
============
Client
------
1. File name prefix can only be done at multi deector level. Changing at
individual detector level will not include scan or position variables.
Detector Server
---------------
2. Standard header fills x-coord in 1D. y-coord and z-coord is not
implemented (3D).
Receiver
--------
3. HDF5 compression and filters are not implemented yet.

View File

@ -1 +1 @@
for i in seq `ipcs -m | cut -d ' ' -f1`; do ipcrm -M $i; done;
rm /dev/shm/slsDetectorPackage*;

View File

@ -3,12 +3,8 @@ hostname bchip007
#0:port 1952
#0:stopport 1953
#0:rx_tcpport 1956 must also have this in receiver config file
0:settingsdir /home/l_maliakal_d/mySoft/newMythenSoftware/settingsdir/gotthard
0:angdir 1.000000
0:moveflag 0.000000
0:lock 0
0:caldir /home/l_maliakal_d/mySoft/newMythenSoftware/settingsdir/gotthard
0:ffdir /home/l_maliakal_d
0:extsig:0 off
#0:detectorip 129.129.202.9
0:detectormac 00:aa:bb:cc:dd:ee
@ -20,7 +16,6 @@ hostname bchip007
master -1
sync none
outdir /bigRAID/datadir_gotthard/rec_test_data
ffdir /home/l_maliakal_d
headerbefore none
headerafter none
headerbeforepar none
@ -29,4 +24,4 @@ badchannels none
angconv none
globaloff 0.000000
binsize 0.001000
threaded 1

View File

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

View File

@ -1,11 +1,6 @@
detsizechan 1024 1024
hostname bchip048+bchip052+
settingsdir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
caldir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
lock 0
0:rx_udpport 50004
0:rx_udpip 10.1.1.100
0:rx_udpmac F4:52:14:2F:32:00
@ -22,9 +17,9 @@ lock 0
rx_hostname pcmoench01
powerchip 1
extsig:0 trigger_in_rising_edge
timing auto
#extsig:0 trigger_in_rising_edge
#timing trigger
outdir /external_pool/jungfrau_data/softwaretest
threaded 1

View File

@ -8,13 +8,11 @@ hostname bchip007+bchip009+
#0:port 1952
#0:stopport 1953
#0:rx_tcpport 1956
0:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
0:angdir 1.000000
0:moveflag 0.000000
0:lock 0
0:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
0:ffdir /home/l_msdetect
0:extsig:0 off
0:detectorip 10.1.1.2
#0:detectormac 00:aa:bb:cc:dd:ee
#0:rx_udpport 50001
@ -28,13 +26,11 @@ hostname bchip007+bchip009+
#1:port 1952
#1:stopport 1953
1:rx_tcpport 1957
1:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
1:angdir 1.000000
1:moveflag 0.000000
1:lock 0
1:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
1:ffdir /home/l_msdetect
1:extsig:0 off
1:detectorip 10.1.2.2
#1:detectormac 00:aa:bb:cc:dd:ee
1:rx_udpport 50004
@ -56,4 +52,4 @@ badchannels none
angconv none
globaloff 0.000000
binsize 0.001000
threaded 1

View File

@ -1,13 +0,0 @@
No implementation found for style `graphicx'
No implementation found for style `eucal'
No implementation found for style `amsxtra'
No implementation found for style `upref'
No implementation found for style `layout'
No implementation found for style `calc'
No implementation found for style `framed'
? brace missing for \
Substitution of arg to newlabelxx delayed.
? brace missing for \textit

View File

@ -1,101 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2008 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Footnotes</TITLE>
<META NAME="description" CONTENT="Footnotes">
<META NAME="keywords" CONTENT="slsDetectors-FAQ">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2008">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="slsDetectors-FAQ.css">
</HEAD>
<BODY >
<DL>
<DT><A NAME="foot1316">... tab&nbsp;</A><A
HREF="MYTHEN.html#tex2html20"><SUP>3.1</SUP></A></DT>
<DD>The default name of the calibrated trimfiles is <I>trimbits/beamline/</I><I>settings</I><I>/noise.snxxx</I> where <I>settings</I> is the chosen settings. You can change it in <I>src/qDetector.h</I> and then recompile the acquisition program as described in&nbsp;<A HREF="#sec:installation"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
SRC="file:/usr/share/latex2html/icons/crossref.png"></A>.
<PRE>.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
</PRE>
</DD>
<DT><A NAME="foot1317">....snxxx&nbsp;</A><A
HREF="MYTHEN.html#tex2html21"><SUP>3.2</SUP></A></DT>
<DD>The default name of the calibration file <I>calibration/</I><I>settings</I><I>.snxxx</I> where <I>settings</I> is the chosen settings. You can change it in <I>src/qDetector.h</I> and then recompile the acquisition program.
<PRE>.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
</PRE>
</DD>
</DL>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -1,41 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2008 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>SLS Detectors
Frequently Asked Questions</TITLE>
<META NAME="description" CONTENT="SLS Detectors
Frequently Asked Questions">
<META NAME="keywords" CONTENT="slsDetectors-FAQ">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2008">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="slsDetectors-FAQ.css">
</HEAD>
<BODY >
<P>
<H1 ALIGN=CENTER>SLS Detectors
<BR>
Frequently Asked Questions</H1>
<P ALIGN=CENTER><STRONG>Anna Bergamaschi</STRONG>
</P>
<BR><P ALIGN=CENTER><B>Date:</B> February 27, 2018</P>
<HR>
<BR><HR>
</BODY>
</HTML>

View File

@ -1,134 +0,0 @@
# LaTeX2HTML 2008 (1.71)
# Associate internals original text with physical files.
$key = q/sec:usersFunc/;
$ref_files{$key} = "$dir".q|How_can_detector_movement_p.html|;
$noresave{$key} = "$nosave";
$key = q/sec:merging/;
$ref_files{$key} = "$dir".q|How_are_different_positions.html|;
$noresave{$key} = "$nosave";
$key = q/sec:timing/;
$ref_files{$key} = "$dir".q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/fig:gating/;
$ref_files{$key} = "$dir".q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/sec:improvetrimming/;
$ref_files{$key} = "$dir".q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/fig:multidet/;
$ref_files{$key} = "$dir".q|How_can_I_control_many.html|;
$noresave{$key} = "$nosave";
$key = q/eq:acqflow/;
$ref_files{$key} = "$dir".q|Which_is_sequence_acquisiti.html|;
$noresave{$key} = "$nosave";
$key = q/fig:autotiming/;
$ref_files{$key} = "$dir".q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/sec:3/;
$ref_files{$key} = "$dir".q|Scaling_Poisson_variates.html|;
$noresave{$key} = "$nosave";
$key = q/fig:samplefluo/;
$ref_files{$key} = "$dir".q|How_do_I_chose_comparator.html|;
$noresave{$key} = "$nosave";
$key = q/fig:settings/;
$ref_files{$key} = "$dir".q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:2/;
$ref_files{$key} = "$dir".q|Advanced_binning.html|;
$noresave{$key} = "$nosave";
$key = q/fig:effidet/;
$ref_files{$key} = "$dir".q|Sensors.html|;
$noresave{$key} = "$nosave";
$key = q/sec:11/;
$ref_files{$key} = "$dir".q|Basic_binning.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thrscanfluo/;
$ref_files{$key} = "$dir".q|How_do_I_chose_comparator.html|;
$noresave{$key} = "$nosave";
$key = q/sec:dataFormat/;
$ref_files{$key} = "$dir".q|In_which_data_format_are.html|;
$noresave{$key} = "$nosave";
$key = q/fig:mythensett/;
$ref_files{$key} = "$dir".q|Frontend_electronics.html|;
$noresave{$key} = "$nosave";
$key = q/sec:sync/;
$ref_files{$key} = "$dir".q|How_can_several_controllers.html|;
$noresave{$key} = "$nosave";
$key = q/fig:badff/;
$ref_files{$key} = "$dir".q|Why_isn_t_my_flat_field_fla.html|;
$noresave{$key} = "$nosave";
$key = q/fig:datareceiver/;
$ref_files{$key} = "$dir".q|How_can_I_configure_data.html|;
$noresave{$key} = "$nosave";
$key = q/fig:effiback/;
$ref_files{$key} = "$dir".q|Sensors.html|;
$noresave{$key} = "$nosave";
$key = q/fig:trig/;
$ref_files{$key} = "$dir".q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/fig:ffsetup/;
$ref_files{$key} = "$dir".q|Dynamic_acquisition_flat_fi.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thresholdscanuntrimmed/;
$ref_files{$key} = "$dir".q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/fig:trimdistribution/;
$ref_files{$key} = "$dir".q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:angcal/;
$ref_files{$key} = "$dir".q|How_is_channel_number_cover.html|;
$noresave{$key} = "$nosave";
$key = q/sec:trimdir/;
$ref_files{$key} = "$dir".q|What_are_settings_calibrati.html|;
$noresave{$key} = "$nosave";
$key = q/fig:trimplot/;
$ref_files{$key} = "$dir".q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thresholdscantrimmed/;
$ref_files{$key} = "$dir".q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:noisetrim/;
$ref_files{$key} = "$dir".q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:encal/;
$ref_files{$key} = "$dir".q|In_what_consists_energy_cal.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thrscan/;
$ref_files{$key} = "$dir".q|How_do_I_chose_comparator.html|;
$noresave{$key} = "$nosave";
1;

View File

@ -1,269 +0,0 @@
# LaTeX2HTML 2008 (1.71)
# Associate labels original text with physical files.
$key = q/sec:usersFunc/;
$external_labels{$key} = "$URL/" . q|How_can_detector_movement_p.html|;
$noresave{$key} = "$nosave";
$key = q/sec:merging/;
$external_labels{$key} = "$URL/" . q|How_are_different_positions.html|;
$noresave{$key} = "$nosave";
$key = q/sec:timing/;
$external_labels{$key} = "$URL/" . q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/fig:gating/;
$external_labels{$key} = "$URL/" . q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/sec:improvetrimming/;
$external_labels{$key} = "$URL/" . q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/fig:multidet/;
$external_labels{$key} = "$URL/" . q|How_can_I_control_many.html|;
$noresave{$key} = "$nosave";
$key = q/eq:acqflow/;
$external_labels{$key} = "$URL/" . q|Which_is_sequence_acquisiti.html|;
$noresave{$key} = "$nosave";
$key = q/fig:autotiming/;
$external_labels{$key} = "$URL/" . q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/sec:3/;
$external_labels{$key} = "$URL/" . q|Scaling_Poisson_variates.html|;
$noresave{$key} = "$nosave";
$key = q/fig:samplefluo/;
$external_labels{$key} = "$URL/" . q|How_do_I_chose_comparator.html|;
$noresave{$key} = "$nosave";
$key = q/fig:settings/;
$external_labels{$key} = "$URL/" . q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:2/;
$external_labels{$key} = "$URL/" . q|Advanced_binning.html|;
$noresave{$key} = "$nosave";
$key = q/fig:effidet/;
$external_labels{$key} = "$URL/" . q|Sensors.html|;
$noresave{$key} = "$nosave";
$key = q/sec:11/;
$external_labels{$key} = "$URL/" . q|Basic_binning.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thrscanfluo/;
$external_labels{$key} = "$URL/" . q|How_do_I_chose_comparator.html|;
$noresave{$key} = "$nosave";
$key = q/sec:dataFormat/;
$external_labels{$key} = "$URL/" . q|In_which_data_format_are.html|;
$noresave{$key} = "$nosave";
$key = q/fig:mythensett/;
$external_labels{$key} = "$URL/" . q|Frontend_electronics.html|;
$noresave{$key} = "$nosave";
$key = q/sec:sync/;
$external_labels{$key} = "$URL/" . q|How_can_several_controllers.html|;
$noresave{$key} = "$nosave";
$key = q/fig:badff/;
$external_labels{$key} = "$URL/" . q|Why_isn_t_my_flat_field_fla.html|;
$noresave{$key} = "$nosave";
$key = q/fig:datareceiver/;
$external_labels{$key} = "$URL/" . q|How_can_I_configure_data.html|;
$noresave{$key} = "$nosave";
$key = q/fig:effiback/;
$external_labels{$key} = "$URL/" . q|Sensors.html|;
$noresave{$key} = "$nosave";
$key = q/fig:trig/;
$external_labels{$key} = "$URL/" . q|How_can_I_synchronize_my.html|;
$noresave{$key} = "$nosave";
$key = q/fig:ffsetup/;
$external_labels{$key} = "$URL/" . q|Dynamic_acquisition_flat_fi.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thresholdscanuntrimmed/;
$external_labels{$key} = "$URL/" . q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/fig:trimdistribution/;
$external_labels{$key} = "$URL/" . q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:angcal/;
$external_labels{$key} = "$URL/" . q|How_is_channel_number_cover.html|;
$noresave{$key} = "$nosave";
$key = q/sec:trimdir/;
$external_labels{$key} = "$URL/" . q|What_are_settings_calibrati.html|;
$noresave{$key} = "$nosave";
$key = q/fig:trimplot/;
$external_labels{$key} = "$URL/" . q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thresholdscantrimmed/;
$external_labels{$key} = "$URL/" . q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:noisetrim/;
$external_labels{$key} = "$URL/" . q|MYTHEN.html|;
$noresave{$key} = "$nosave";
$key = q/sec:encal/;
$external_labels{$key} = "$URL/" . q|In_what_consists_energy_cal.html|;
$noresave{$key} = "$nosave";
$key = q/fig:thrscan/;
$external_labels{$key} = "$URL/" . q|How_do_I_chose_comparator.html|;
$noresave{$key} = "$nosave";
1;
# LaTeX2HTML 2008 (1.71)
# labels from external_latex_labels array.
$key = q/sec:usersFunc/;
$external_latex_labels{$key} = q|1.10|;
$noresave{$key} = "$nosave";
$key = q/sec:merging/;
$external_latex_labels{$key} = q|5.2|;
$noresave{$key} = "$nosave";
$key = q/sec:timing/;
$external_latex_labels{$key} = q|1.8|;
$noresave{$key} = "$nosave";
$key = q/fig:gating/;
$external_latex_labels{$key} = q|1.4|;
$noresave{$key} = "$nosave";
$key = q/sec:improvetrimming/;
$external_latex_labels{$key} = q|3.4.1|;
$noresave{$key} = "$nosave";
$key = q/fig:multidet/;
$external_latex_labels{$key} = q|1.1|;
$noresave{$key} = "$nosave";
$key = q/eq:acqflow/;
$external_latex_labels{$key} = q|1.7|;
$noresave{$key} = "$nosave";
$key = q/fig:autotiming/;
$external_latex_labels{$key} = q|1.3|;
$noresave{$key} = "$nosave";
$key = q/sec:3/;
$external_latex_labels{$key} = q|5.2.6|;
$noresave{$key} = "$nosave";
$key = q/fig:samplefluo/;
$external_latex_labels{$key} = q|3.4|;
$noresave{$key} = "$nosave";
$key = q/fig:settings/;
$external_latex_labels{$key} = q|3.1|;
$noresave{$key} = "$nosave";
$key = q/sec:2/;
$external_latex_labels{$key} = q|5.2.3|;
$noresave{$key} = "$nosave";
$key = q/fig:effidet/;
$external_latex_labels{$key} = q|2.1|;
$noresave{$key} = "$nosave";
$key = q/sec:11/;
$external_latex_labels{$key} = q|5.2.2|;
$noresave{$key} = "$nosave";
$key = q/fig:thrscanfluo/;
$external_latex_labels{$key} = q|3.3|;
$noresave{$key} = "$nosave";
$key = q/sec:dataFormat/;
$external_latex_labels{$key} = q|1.11|;
$noresave{$key} = "$nosave";
$key = q/fig:mythensett/;
$external_latex_labels{$key} = q|2.3|;
$noresave{$key} = "$nosave";
$key = q/sec:sync/;
$external_latex_labels{$key} = q|1.9|;
$noresave{$key} = "$nosave";
$key = q/fig:badff/;
$external_latex_labels{$key} = q|3.5|;
$noresave{$key} = "$nosave";
$key = q/fig:datareceiver/;
$external_latex_labels{$key} = q|1.2|;
$noresave{$key} = "$nosave";
$key = q/fig:effiback/;
$external_latex_labels{$key} = q|2.2|;
$noresave{$key} = "$nosave";
$key = q/fig:trig/;
$external_latex_labels{$key} = q|1.6|;
$noresave{$key} = "$nosave";
$key = q/fig:ffsetup/;
$external_latex_labels{$key} = q|3.6|;
$noresave{$key} = "$nosave";
$key = q/fig:thresholdscanuntrimmed/;
$external_latex_labels{$key} = q|3.7|;
$noresave{$key} = "$nosave";
$key = q/fig:trimdistribution/;
$external_latex_labels{$key} = q|3.8|;
$noresave{$key} = "$nosave";
$key = q/sec:angcal/;
$external_latex_labels{$key} = q|5.1|;
$noresave{$key} = "$nosave";
$key = q/sec:trimdir/;
$external_latex_labels{$key} = q|1.4|;
$noresave{$key} = "$nosave";
$key = q/fig:trimplot/;
$external_latex_labels{$key} = q|3.9|;
$noresave{$key} = "$nosave";
$key = q/fig:thresholdscantrimmed/;
$external_latex_labels{$key} = q|3.10|;
$noresave{$key} = "$nosave";
$key = q/sec:noisetrim/;
$external_latex_labels{$key} = q|3.4.1|;
$noresave{$key} = "$nosave";
$key = q/sec:encal/;
$external_latex_labels{$key} = q|3.5|;
$noresave{$key} = "$nosave";
$key = q/fig:thrscan/;
$external_latex_labels{$key} = q|3.2|;
$noresave{$key} = "$nosave";
1;

View File

@ -1,30 +0,0 @@
/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
.MATH { font-family: "Century Schoolbook", serif; }
.MATH I { font-family: "Century Schoolbook", serif; font-style: italic }
.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
/* implement both fixed-size and relative sizes */
SMALL.XTINY { font-size : xx-small }
SMALL.TINY { font-size : x-small }
SMALL.SCRIPTSIZE { font-size : smaller }
SMALL.FOOTNOTESIZE { font-size : small }
SMALL.SMALL { }
BIG.LARGE { }
BIG.XLARGE { font-size : large }
BIG.XXLARGE { font-size : x-large }
BIG.HUGE { font-size : larger }
BIG.XHUGE { font-size : xx-large }
/* heading styles */
H1 { }
H2 { }
H3 { }
H4 { }
H5 { }
/* mathematics styles */
DIV.displaymath { } /* math displays */
TD.eqno { } /* equation-number cells */
/* document-specific styles come next */

View File

@ -1,41 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2008 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>SLS Detectors
Frequently Asked Questions</TITLE>
<META NAME="description" CONTENT="SLS Detectors
Frequently Asked Questions">
<META NAME="keywords" CONTENT="slsDetectors-FAQ">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2008">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="slsDetectors-FAQ.css">
</HEAD>
<BODY >
<P>
<H1 ALIGN=CENTER>SLS Detectors
<BR>
Frequently Asked Questions</H1>
<P ALIGN=CENTER><STRONG>Anna Bergamaschi</STRONG>
</P>
<BR><P ALIGN=CENTER><B>Date:</B> February 27, 2018</P>
<HR>
<BR><HR>
</BODY>
</HTML>

Binary file not shown.

View File

@ -0,0 +1,17 @@
add_executable(slsMultiReceiver
mainReceiver.cpp
)
set_target_properties(slsMultiReceiver PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
target_link_libraries(slsMultiReceiver
slsReceiverShared
pthread
zmq
rt
)
install(TARGETS slsMultiReceiver
RUNTIME DESTINATION bin)

View File

@ -77,7 +77,6 @@ int main(int argc, char **argv) {
pDetector->enableDataStreamingToClient(1);
/** - ensuring detector status is idle before starting acquisition. exiting if not idle */
int status = pDetector->getDetectorStatus();
if (status != 0){
@ -94,7 +93,7 @@ int main(int argc, char **argv) {
/** - start measurement */
pDetector->startMeasurement();
std::cout << "measurement finished" << std::endl;
std::cout << "measurement finished" << std::endl; usleep(1*1000*1000);
/** - returning when acquisition is finished or data are avilable */

View File

@ -54,7 +54,7 @@ void sigInterruptHandler(int p){
*/
void printHelp() {
cprintf(RESET, "Usage:\n"
"./detReceiver [start_tcp_port] [num_receivers] [1 for call back, 0 for none]\n\n");
"./slsMultiReceiver(detReceiver) [start_tcp_port] [num_receivers] [1 for call back, 0 for none]\n\n");
exit(EXIT_FAILURE);
}
@ -86,42 +86,77 @@ void AcquisitionFinished(uint64_t frames, void*p){
cprintf(BLUE, "#### AcquisitionFinished: frames:%llu ####\n",frames);
}
/**
* Get Receiver Data Call back
* Prints in different colors(for each receiver process) the different headers for each image call back.
* @param frameNumber frame number
* @param expLength real time exposure length (in 100ns) or sub frame number (Eiger 32 bit mode only)
* @param packetNumber number of packets caught for this frame
* @param bunchId bunch id from beamline
* @param timestamp time stamp in 10MHz clock (not implemented for most)
* @param modId module id (not implemented for most)
* @param xCoord x coordinates (detector id in 1D)
* @param yCoord y coordinates (not implemented)
* @param zCoord z coordinates (not implemented)
* @param debug debug values if any
* @param roundRNumber (not implemented)
* @param detType detector type see :: detectorType
* @param version version of standard header (structure format)
* @param metadata sls_receiver_header metadata
* @param datapointer pointer to data
* @param datasize data size in bytes
* @param datasize data size in bytes.
* @param p pointer to object
*/
void GetData(uint64_t frameNumber, uint32_t expLength, uint32_t packetNumber, uint64_t bunchId, uint64_t timestamp,
uint16_t modId, uint16_t xCoord, uint16_t yCoord, uint16_t zCoord, uint32_t debug, uint16_t roundRNumber, uint8_t detType, uint8_t version,
char* datapointer, uint32_t datasize, void* p){
void GetData(char* metadata, char* datapointer, uint32_t datasize, void* p){
slsReceiverDefs::sls_receiver_header* header = (slsReceiverDefs::sls_receiver_header*)metadata;
slsReceiverDefs::sls_detector_header detectorHeader = header->detHeader;
PRINT_IN_COLOR (modId?modId:xCoord,
PRINT_IN_COLOR (detectorHeader.modId?detectorHeader.modId:detectorHeader.xCoord,
"#### %d GetData: ####\n"
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu\t\ttimestamp: %llu\t\tmodId: %u\t\t"
"xCoord: %u\t\tyCoord: %u\t\tzCoord: %u\t\tdebug: %u\t\troundRNumber: %u\t\tdetType: %u\t\t"
"version: %u\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
xCoord, frameNumber, expLength, packetNumber, bunchId, timestamp, modId,
xCoord, yCoord, zCoord, debug, roundRNumber, detType, version,
((uint8_t)(*((uint8_t*)(datapointer)))), datasize);
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu"
"\t\ttimestamp: %llu\t\tmodId: %u\t\t"
"xCoord: %u\t\tyCoord: %u\t\tzCoord: %u\t\tdebug: %u"
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
//"\t\tpacketsMask:%s"
"\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
detectorHeader.xCoord, detectorHeader.frameNumber,
detectorHeader.expLength, detectorHeader.packetNumber, detectorHeader.bunchId,
detectorHeader.timestamp, detectorHeader.modId,
detectorHeader.xCoord, detectorHeader.yCoord, detectorHeader.zCoord,
detectorHeader.debug, detectorHeader.roundRNumber,
detectorHeader.detType, detectorHeader.version,
//header->packetsMask.to_string().c_str(),
((uint8_t)(*((uint8_t*)(datapointer)))), datasize);
}
/**
* Get Receiver Data Call back (modified)
* Prints in different colors(for each receiver process) the different headers for each image call back.
* @param metadata sls_receiver_header metadata
* @param datapointer pointer to data
* @param datasize data size in bytes.
* @param revDatasize new data size in bytes after the callback.
* This will be the size written/streamed. (only smaller value is allowed).
* @param p pointer to object
*/
void GetData(char* metadata, char* datapointer, uint32_t &revDatasize, void* p){
slsReceiverDefs::sls_receiver_header* header = (slsReceiverDefs::sls_receiver_header*)metadata;
slsReceiverDefs::sls_detector_header detectorHeader = header->detHeader;
PRINT_IN_COLOR (detectorHeader.modId?detectorHeader.modId:detectorHeader.xCoord,
"#### %d GetData: ####\n"
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu"
"\t\ttimestamp: %llu\t\tmodId: %u\t\t"
"xCoord: %u\t\tyCoord: %u\t\tzCoord: %u\t\tdebug: %u"
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
//"\t\tpacketsMask:%s"
"\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
detectorHeader.xCoord, detectorHeader.frameNumber,
detectorHeader.expLength, detectorHeader.packetNumber, detectorHeader.bunchId,
detectorHeader.timestamp, detectorHeader.modId,
detectorHeader.xCoord, detectorHeader.yCoord, detectorHeader.zCoord,
detectorHeader.debug, detectorHeader.roundRNumber,
detectorHeader.detType, detectorHeader.version,
//header->packetsMask.to_string().c_str(),
((uint8_t)(*((uint8_t*)(datapointer)))), revDatasize);
// if data is modified, eg ROI and size is reduced
revDatasize = 26000;
}
/**
* Example of main program using the slsReceiverUsers class
*
@ -209,7 +244,8 @@ int main(int argc, char *argv[]) {
/* - Call back for raw data */
cprintf(BLUE, "Registering GetData() \n");
receiver->registerCallBackRawDataReady(GetData,NULL);
if (withCallback == 1) receiver->registerCallBackRawDataReady(GetData,NULL);
else if (withCallback == 2) receiver->registerCallBackRawDataModifyReady(GetData,NULL);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

View File

@ -18,17 +18,28 @@
\tableofcontents
\section{Usage}
\subsection{Short description}
Figure ~\ref{boards} show the readout board basic components on an Eiger half module. An half module can read up to 4 readout chips.
\begin{figure}[t]
\begin{center}
\includegraphics[width=1\textwidth]{Boards}
\end{center}
\caption{Picture with most relevant components of the EIGER readout system. The readout system starts with the Front End Boards (FEB) which performs data descrambling (also converts the packets from 12 $\to$ 16 bits) and rate correction. The BackEndBoard (BEB) has 2x2GB DDR2 memories and can perform data buffering (storing images on board) and data summation (16 bit $\to$ 32 bits). The controls to the detector are passed through the 1Gb, while in most installations, the data are sent out through the 10GB ethernet connection.}
\label{boards}
\end{figure}
\subsection{Mandatory setup - Hardware}
An EIGER single module (500~kpixels) needs:
\begin{itemize}
\item A chilled (water+alcohol) at approximately 21~$^{\circ}$C, which needs to dissipate 85~W. For the 9M, a special cooling liquid is required: 2/3 deionized water and 1/3 ESA Type 48.
\item A chilled (water+alcohol) at 21~$^{\circ}$C for a single module (500k pixels), which needs to dissipate 85~W (every module, i.e. for two half boards). For the 9M, 1.5M, a special cooling liquid is required: 2/3 deionized water and 1/3 ESA Type 48. This is important as the high temperature generated by the boards accelerate the corrosion due to Cu/Al reaction and the blockage of the small channels where the liquid flows, in particular near the face of the detector and if it is a parallel flow and not a single loop. The 9M and 1.5M run at 19~$^{\circ}$C.
\item A power supply (12~V, 8~A). For the 9~M, a special cpu is give to remotely switch on and off the detector: see section~\ref{bchip100}.
\item 2$\times$1~Gb/s Ethernet connectors to control the detector and, optionally, receive data at low rate. A DHCP server that gives IPs to the 1~Gb/s connectors of the detector is needed. Note that flow control has to be enabled on the switch you are using.
\item 2$\times$10~Gb/s transceivers to optionally, receive data at high rate.
\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, if you plan to read the data out from there. If not, you need to implement delays in the sending out of the data.
\item 2$\times$10~Gb/s transceivers to optionally, receive data at high rate. The 10Gb/s transceiver need to match the wavelength (long/short range) of the fibers chosen by the beamline infrastructure.
\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.
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.) The username under which the receiver runs is the owner of the data files, if using our implementation. 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}
@ -41,7 +52,7 @@ Figure~\ref{fig:1} shows the relationship between the \textbf{Client} (which sit
The Client talks to control over 1~Gb Ethernet connection using TCP/IP to the detector and to the receiver. The detector sends data in UDP packets to the receiver. This data sending can be done over 1~Gb/s or 10~Gb/s.
\begin{itemize}
\item \textbf{Switch on the detector only after having started the chiller: the 500k single module and the 1.5M at cSAXS have a hardware temperature sensor, which will power off the boards if the temperature is too high. Note that the detector will be power on again as soon as the temperature has been lowered. The 9M will not boot up without the correct waterflow and temperature has it has an integrated flowmeter.}
\item \textbf{Switch on the detector only after having started the chiller: the 500k single module and the 1.5M at cSAXS/OMNY have a hardware temperature sensor, which will power off the boards if the temperature is too high. Note that the detector will be power on again as soon as the temperature has been lowered. The 9M will not boot up without the correct waterflow and temperature has it has an integrated flowmeter.}
\item \textbf{Switch on the detector only after having connected all the cables and network. EIGER is unable to get IP address after it has been switched on without a proper network set up. In that case switch off and on the detector again.}
\end{itemize}
@ -73,28 +84,22 @@ You can also Check temperatures and water flow in a browser (from the same subne
\subsection{Mandatory setup - Receiver}
The receiver is a process run on a PC closely connected to the detector. Open one receiver for every half module board (remember, a module has two receivers!!!) . Go to {\tt{slsDetectorsPackage/bin/}}, \textbf{slsReceiver} should be started on the machine expected to receive the data from the detector.
The receiver is a process run on a PC closely connected to the detector. Open one receiver for every half module board (remember, a module has two receivers!!!) . Go to {\tt{slsDetectorsPackage/build/bin/}}, \textbf{slsReceiver} should be started on the machine expected to receive the data from the detector.
\begin{itemize}
\item {\tt{./slsReceiver --rx\_tcpport xxxx}}
\item {\tt{./slsReceiver --rx\_tcpport yyyy}}
\end{itemize}
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.
where xxxx, yyyy are the tcp port numbers. Use 1955 and 1956 for example. The receiver for the bottom is open without arguments but still in the configuration file one needs to write {\tt{n:flippeddatax 1}}, where {\tt{2n+1}} indicated the half module number, 1 if it is a module.
\\ Open as many receiver as half module boards. A single module has two half module boards.
From the software version 3.0.1, one can decide weather start a zmq callback from the receiver to the client (for example to visualize data in the slsDetectorGui or another gui). If the zmq steam is not required (cased of the command line for example, one can switch off the streaming with {\tt{./sls\_detector\_put rx\_datastream 0}}, enable it with {\tt{./sls\_detector\_put rx\_datastream 1}}. In the case of inizialising the stream to use the slsDetectorGui, nothing needs to be taken care of by the user. If instead you want to stream the streaming on different channels, the zmq port of the client can be set stealing from the slsDetectorGui stream having {\tt{./sls\_detector\_put n:zmqport 300y}}, where n is each half module independently, matching the receiver stream {\tt{./sls\_detector\_put n:rx\_zmqport 300y}}.
From the software version 3.0.1, one can decide weather start a zmq callback from the receiver to the client (for example to visualize data in the slsDetectorGui or another gui). If the zmq steam is not required (cased of the command line for example, one can switch off the streaming with {\tt{./sls\_detector\_put rx\_datastream 0}}, enable it with {\tt{./sls\_detector\_put rx\_datastream 1}}. In the case of inizialising the stream to use the slsDetectorGui, nothing needs to be taken care of by the user. If instead you want to stream the streaming on different channels, the zmq port of the client can be set stealing from the slsDetectorGui stream having {\tt{./sls\_detector\_put zmqport 300y}}. Note that if this is done globally (not for every half module n independently, then the client automatically takes into account that for every half module, there are 2 zmq stream. The receiver stream {\tt{./sls\_detector\_put rx\_zmqport 300y}} has to match such that the GUI can work.
If one desires to set the zmqport manually, he offset has to be taken into account: {\tt{./sls\_detector\_put 0:rx\_zmqport 300y}}, {\tt{./sls\_detector\_put 1:rx\_zmqport 300y+2}} and so on..
There is an example code that can be compiled in {\tt{manual/manual-api/mainReceiver.cpp}} and gives the executable {\tt{./detReceiver}}, use it with two or more receivers to open all receivers in one single terminal: {\tt{./detReceiver startTCPPort numReceivers withCallback}}, where startTCPPort assumes the other ports are consecutively increased.
\subsection{Mandatory setup - Client}
\underline{In the case of cSAXS, the detector software is installed on:}\\
\underline{/sls/X12SA/data/x12saop/EigerPackage/slsDetectorsPackage}
The command line interface consists in these main functions:
\begin{description}
\item[sls\_detector\_acquire] to acquire data from the detector
@ -166,15 +171,15 @@ 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{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{dr 32/16/8/4}} 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 (also referred to as full, half, quarter speed). Note that autosumming mode ({\tt{dr 32}} only works at {clkdivider 2}=quarter speed). By selecting Refer to readout timing specifications in~section\ref{timing} for how to set the detector.
\item {\tt{flags continuous/storeinram}}. Allows to take frame continuously or storing them on memory. Normally {\tt{continuous}} should be used. Enabling the {\tt{stroreinram}} mode allows you to obtain the maximum frame rate, but at the expenses to have to receive the data all at the end of the acquisition. Refer to readout timing specifications in section~\ref{timing} for how to set the detector.
\item {\tt{flags continuous/storeinram}}. Allows to take frame continuously or storing them on memory. Users should use the {\tt{continuous}} flags. Enabling the {\tt{stroreinram}} flag makes the data to be sent out all at the end of the acquisition. Refer to readout timing specifications in section~\ref{timing} for how to set the detector. Examples will be given in section~\ref{}.
\end{itemize}
One should notice that, by default, by choosing the option {\tt{dr 32}}, then the software automatically sets the detector to {\tt{clkdivider 2}}. By choosing the option {\tt{dr 16}}, the software automatically sets the detector to {\tt{clkdivider 1}}. One needs to choose {\tt{clkdivider 0}} after setting the {\tt{dr 16}} option to have the fastest frame rate.
We would recommend expert users (beamline people) to write their parameters file for the users.
\section{API versioning}
\section{API versioning} \label{api}
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}
@ -194,12 +199,18 @@ Killing and starting the server on the boards allows you to check the firmware v
\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
sls_detector_put 0-settings standard
sls_detector_put 0-threshold energy_in_eV standard
\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}}.
The threshold at 6000 eV , for example would be set as:{\tt{sls\_detector\_put 0-threshold 6000 standard}}.
For \E, at the moment normally only {\tt{standard}} settings are possible.
{\tt{lowgain}}, {\tt{verylowgain}}, {\tt{veryhighgain}} and {\tt{highgain}} are theoretically possible, but we never calibrate like this. They could be implemented later if needed.
Notice that setting the threshold actually loads the trimbit files (and interpolate them between the closest calibration energies) so it is time consuming.
The threshold is expressed in (eV) as the proper threshold setting, i.e. normally is set to 50\% of the beam energy.
We have added a special command, {\tt{thresholdnotb}}, which allows to scan the threshold energy without reloading the trimbits at every stage. One can either keep the trimbits at a specific value (es.32 if the range of energies to scan is large) or use the trimbits from a specific energy (like a central energy).
\begin{verbatim}
@ -216,12 +227,7 @@ sls_detector_put 0-period 0[time_is_s]
\end{verbatim}
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 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.
\underline{At cSAXS, the {\tt{settingsdir}} and {\tt{caldir}} are in}\\\underline{/sls/X12SA/data/x12saop/EigerPackage/calibrations/}\\
%\underline{At cSAXS, the {\tt{settingsdir}} and {\tt{caldir}} are in}\\\underline{/sls/X12SA/data/x12saop/EigerPackage/calibrations/}\\
You need to setup where the files will be written to
\begin{verbatim}
@ -247,23 +253,28 @@ 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}
You can then reset to zero the number of frames caught, then start the receiver and the detector:
\begin{enumerate}
\item {\tt{sls\_detector\_put 0-resetframescaught 0}}
\item {\tt{sls\_detector\_put 0-receiver start}}
\item {\tt{sls\_detector\_put 0-status start}}
\end{itemize}
\end{enumerate}
You can poll the detector status using:
\begin{verbatim}
sls_detector_get 0-status
\end{verbatim}
When the detector is {\tt{idle}}, then you need to stop the receiver doing:
\begin{itemize}
When the detector is {\tt{idle}}, then the acquisition is done but the receiver could still be receiving data. If you want, you can check if the receiver is finished receiving as many frames as you were expecting (this is optional but required for many many frames acquisition or when using some delays to send data at very high frame rate.
\begin{enumerate}
\setcounter{enumi}{3}
\item {\tt{sls\_detector\_get framescaught}}
\end{enumerate}
Then you can stop the receiver as well now:
\begin{enumerate}
\setcounter{enumi}{4}
\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}
\end{enumerate}
The detector will not accept other commands while acquiring. If an acquisition wishes to be properly aborted, then:
\begin{itemize}
@ -275,7 +286,7 @@ this same command can be used after a non proper abortion of the acquisition to
IMPORTANT: to have faster readout and smaller dead time, one can configure {\tt{clkdivider}}, i.e. the speed at which the data are read, i.e. 200/100/50~MHz for {\tt{clkdivider 0/1/2}} and the dead time between frames through {\tt{flags parallel}}, i.e. acquire and read at the same time or acquire and then read out.
The configuration of this timing variables allows to achieve different frame rates. NOTE THAT IN EIGER, WHATEVER YOU DO, THE FRAME RATE LIMITATIONS COME FROM THE NETWORK BOTTLENECK AS THE HARDWARE GOES FASTER THAN THE DATA OUT.
In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from the boards (independent on how the chip is set), the continuous frame rates are listed in table~\ref{tcont}:
In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from the boards (independent on how the chip is set), the continuous frame rates are listed in table~\ref{tcont}.
\begin{table}
\begin{tabular}{|c|c|c|c|}
\hline
@ -294,10 +305,9 @@ GbE & dynamic range & continuos maximum frame rate(Hz) & minimum period ($\mu$s)
10 & 4 & \textbf{10240} & 98\\
\hline
\end{tabular}
\caption{Frame rate limits for the CONTINUOS streaming out of images.}
\caption{Frame rate limits for the CONTINUOS streaming out of images, i.e. the data rate out is just below 1Gb/s or 10Gb/s.}
\label{tcont}\end{table}
Note that in the {\tt{continuous}} flag mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuous one can be achieved. Still, this extra buffering is possible till the memories are not saturated.
The number of images that can be stored on memories are listed in table~\ref{timgs}:
Note that in the {\tt{continuous}} flag mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuous one can be achieved. Still, this extra buffering is possible till the memories are not saturated. The number of images that can be stored on the DDR2 on board memories are listed in table~\ref{timgs}.
\begin{table}
\begin{tabular}{|c|c|}
\hline
@ -314,72 +324,184 @@ dynamic range & images\\
\label{timgs}
\end{table}
The maximum frame rate achievable with 10~GbE, {\tt{dr 16}}, {\tt{flags continuous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{6.1~kHz}. This is currently limited by the connection between the Front End Board and the Backend board. We expect the 32 bit mode limit to be \textbf{2~kHz} ({\tt{clkdivider 2}}).
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, internally, 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.
In table~\ref{tframes} is a list of all the readout times in the different configurations:
\subsection{Minimum time between frames and Maximum frame rate}
We need to leave enough time between an exposure and the following. This time is a combination of the time required by the chip, by the readout boards and eventually extra time to reduce some appearance of cross talk noise between the digital and analog parts of the chip.
\textbf{It is essential to set the {\tt{period}} of the detector, defined as the {\tt{exptime}} plus an extra time, that needs to be at least the chip/board readout time. If this is set wrong (it is $<$ {\tt{exptime}} plus chip/board readout time), then the detector takes the minimum time it can, but you are in a not controlled frame rate situation.}
The expected time difference between frames given by the pure chip readout time is in Table~\ref{tchipro}.
\begin{tiny}
\begin{table}
\begin{flushleft}
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\begin{tabular}{|c|c|c|c|}
\hline
\tiny{dr} & \tiny{clkdivider} & \tiny{flags} & \tiny{readout t($\mu$s)} & \tiny{max frame rate (kHz)} & \tiny{max exptime ($\mu$s)} & \tiny{min period ($\mu$s)} & \tiny{max imgs (nominal/our network)}\\
\tiny{dr} & \tiny{clkdivider} & \tiny{expected chip readout t($\mu$s)} & \tiny{measured chip readout t($\mu$s)}\\
\hline
4 & 0 & parallel & 3.4 & 22 & 40 & 44 & 30k/50k\\
\hline
4 & 0 & nonparallel & 44 & 21 & 3 & 49 & 30k/50k\\
\hline
4 & 1 & parallel & 6 & 10.5 & 85 & 92 & 30k/100k\\
\hline
4 & 1 & nonparallel & 88.7 & 10.5 & 3 & 93 & 30k/100k\\
\hline
4 & 2 & parallel & 11.2 & 5.4 & 185 & 197 & infinite\\
\hline
4 & 2 & nonparallel & 176.5 & 5.4 & 3 & 180 & infinite\\
4 & 0 & 41 & 40\\
4 & 1 & 82 & 84\\
4 & 2 & 123 & 172\\
\hline
\hline
8 & 0 & parallel & 3.4 & 11.1 & 85 & 89 & 15k/24k\\
\hline
8 & 0 & nonparallel & 85.7 & 11.1 & 3 & 91 & 15k/24k\\
\hline
8 & 1 & parallel & 6.1 & 5.7 & 174 & 181 & 15k/52k\\
\hline
8 & 1 & nonparallel & 170.5 & 5.7 & 3 & 175 & 15k/52k\\
\hline
8 & 2 & parallel & 11.2 & 2.9 & 330 & 342 & infinite\\
\hline
8 & 2 & nonparallel & 340.3 & 2.9 & 3 & 344 & infinite\\
8 & 0 & 82 & 82\\
8 & 1 & 164 & 167\\
8 & 2 & 328 & 336\\
\hline
\hline
16 & 0 & parallel & 3.4 & 6 & 164 & 168 & 8k/12k\\
\hline
16 & 0 & nonparallel & 126 & 3.4& 164 & 295 & 8k/23k\\
\hline
16 & 1 & parallel & 6.1 & 2.9& 339 & 346 & 8k/28k\\
\hline
16 & 1 & nonparallel & 255 & 1.7& 339 & 592 & infinite\\
\hline
16 & 2 & parallel & 11 & 1.5& 66 & 78 & infinite \\
\hline
16 & 2 & nonparallel & 504 & 0.85 & 7 & 512 & infinite\\
\hline
\hline
32 & 2 & parallel & 11 & 2& & &\\
\hline
32 & 2 & nonparallel & 504 & $<2$& & &\\
12 & 0 & 123 &122\\
12 & 1 & 246 & 251\\
12 & 2 & 491 & 500\\
\hline
\end{tabular}
\caption{Readout settings. The {\tiny{min exptime}} possible is 5$-$10~$\mu$s. This is due to the time to pass the pixel enable signal in the whole chip.}
\caption{Readout time required from the chip to readout the pixels. The numbers are obtained using equation~\ref{dtnonparallel}.}
\label{tchipro}
\end{flushleft}
\end{table}
\end{tiny}
The {\tt{period}} is s is defined as:
\begin{equation} \label{period}
\textrm{period} = \textrm{exptime} + \textrm{minimum time between frames}
\end{equation}
where the 'minimum time between frames' and the minimum period will be discussed in Table~\ref{tframes}.
\begin{tiny}
\begin{table}
\begin{flushleft}
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
\tiny{dr} & \tiny{clkdivider} & \tiny{flags} & \tiny{t between frames($\mu$s) } & \tiny{max frame rate (kHz)} & \tiny{min period ($\mu$s)} & \tiny{max imgs (nominal/our network)}\\
\hline
4 & 0 & parallel & 3.4 & 22 & 44 & 30k/50k\\
\hline
4 & 1 & parallel & 6 & 10.5 & 92 & 30k/100k\\
\hline
4 & 2 & parallel & 11.2 & 5.4 & 197 & infinite\\
\hline
\hline
8 & 0 & parallel & 3.4 & 11.1 & 89 & 15k/24k\\
\hline
8 & 1 & parallel & 6.1 & 5.7 & 181 & 15k/52k\\
\hline
8 & 2 & parallel & 11.2 & 2.9 & 342 & infinite\\
\hline
\hline
16 & 0 & parallel & 3.4 & 6.1 & (126+38)* =164 & 8k/12k\\
\hline
16 & 0 & nonparallel & 126 & 5.6 & (126+52)*= 179 & 8k/23k\\
\hline
16 & 1 & parallel & 6.1 & 3.9 & 257 & 8k/28k\\
\hline
16 & 1 & nonparallel & 255 & 3.3 & 303 & infinite\\
\hline
16 & 2 & parallel & 11 & 1.9 & 526 & infinite \\
\hline
16 & 2 & nonparallel & 504 & 1.8 & 555 & infinite\\
\hline
%32 & 2 & parallel & 11 & 2& & &\\
%\hline
%32 & 2 & nonparallel & 504 & $<2$& & &\\
%\hline
\end{tabular}
\caption{Readout settings. The {\tiny{min exptime}} possible is 5$-$10~$\mu$s. This is due to the time to pass the pixel enable signal in the whole chip. The time between frames has been measured with the oscilloscope and the maximum frames rate has been tested with an external gating from a pulse generator at known frequence. The minimum period is obtained as 1/$\textrm{max frame rate}$.}
\label{tframes}
\end{flushleft}
\end{table}
\end{tiny}
\textbf{As if you run too fast, the detector could become noisier, it is important to match the detector settings to your frame rate. This can be done having more parameters files and load the one suitable with your experiment.} We experienced that {\tt{highgain}} settings could not be used at 6~kHz.
\textbf{We recommend to use the detector in 32 bit mode with {\tt{clkdivider 2}}, {\tt{flags parallel}}. We recommend to use the detector in 16 bit mode with {\tt{clkdivider 1}}, {\tt{flags parallel}}}. In general, choose first the desired dead time: this will tell you if you want to run in parallel or non parallel mode. Then, choose the maximum frame rate you want to aim, not exceeding what you aim for not to increase the noise.
\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 with low energy settings could not reach 6~kHz and no noise.
In 16 bit mode, it could make sense, in case of noise and low threshold to either reduce the frame rate:
\begin{equation}
\textrm{new period} = \textrm{exptime} + \textrm{minimum time between frames} + (\textrm{10$-$20 }\mu \textrm{s})
\end{equation}
to let the signal settle or, if the frame rate is important, leave the {\tt{period}} at the same value but reduce the {\tt{exptime}}:
\begin{equation}
\textrm{new exptime} = \textrm{old exptime} - (\textrm{10$-$20 }\mu \textrm{s})
\end{equation}
In general, choose first the desired dead time: this will tell you if you want to run in parallel or non parallel mode, although most likely it is parallel mode. Then, choose the maximum frame rate you want to aim, not exceeding what you aim for not to increase the noise. In 4 and 8 bit modes it makes no sense to run nonparallel as the exposure time is too small compared to the readout time.
\subsubsection{4 and 8 bit mode}
In {\tt{parallel}} mode, the minimum time between frames is due to the time required to latch the values of the counter with capacitors. These values are determined in firmware and they can be estimated as:
\begin{equation} \label{dtparallel}
\textrm{time between frames, parallel} = 4 \mu s \cdot (clkdivider+1)
\end{equation}
This time is independent on the {\tt{dr}}.
In {\tt{nonparallel}} mode, it is easily possible to calculate the required asic readout time.
Indeed a block of (8*256) pixels are readout, the bits pixel are the {\tt{dr}} and the speed of readout is 5ns/bit *({\tt{clkdivider}}+1) :
\begin{equation}\label{dtnonparallel}
\textrm{asics readout time} = 5ns/bit \cdot 2^{(clkdivider+1)} \cdot dr \cdot (8*256) + 4 \mu s \cdot (clkdivider+1)
\end{equation}
While we expose the next frame, we still need to readout the previous frame, so we need to guarantee that the period is large enough at least to readout the frame. So the maximum frame rate has to be $1/(\textrm{asic readout time})$. The minimum period has to be equal to the asic readout time.
\subsubsection{16 bit mode}
A similar situation happens in 16 bit mode, where this is more complicated because of three things:
\begin{enumerate}
\item The chip actual {\tt{dr}} is 12 bit
\item The chip is readout as 12-bit/pixel, but the FEB inflates the pixel values to 16-bits when it passes to the BEB. This means that effectively the FEB to BEB connection limits the data throughput in the same way as if the {\tt{dr}} of the chip would really be 16 bits.
\item While in 4 and 8 bit mode it makes no sense to run in {\tt{nonparallel}} mode as the exptime/dead time ratio would be not advantageous, in 16 bit mode, one can choose how to run more freely.
\end{enumerate}
If we are in parallel mode, the dead time between frames, is also here described by equation~\ref{dtparallel}. If we are in {\tt{nonparallel}} mode, the dead time between frames is defined by \ref{dtnonparallel} ONLY for {\tt{clkdivider}} 1 and 2. So the maximum frame rate has to be $1/(\textrm{chip readout time})$ in this case. Only for {\tt{clkdivider}} 0 we hit some limitation in the bandwidth of The FEB $\to$ BEB connection. In this case, the maximum frame rate is lowered compared to what expected.
\subsubsection{32 bit mode}
The autosumming mode of Eiger is the intended for long exposure times (frame rate of order of 100Hz, PILATUS like). A single acquisition is broken down into many smaller 12-bit acquisitions, each of a {\tt{subexptime}} of 2.621440~ms by default. Normally, this is a good default value to sustain an intensity of $10^6$ photons/pixel/s with no saturation. To change the value of {\tt{subexptime}} see section~\ref{advanced}.
The time between 12-bit subframes are listed in table~\ref{t32bitframe}.
\begin{tiny}
\begin{table}
\begin{flushleft}
\begin{tabular}{|c|c|c|c|c|c|}
\hline
\tiny{dr} & \tiny{clkdivider} & \tiny{flags} & \tiny{t difference between subframes($\mu$s)} & \tiny{max internal subframe rate (kHz)} & \tiny{maximum frame rate (Hz)}\\
\hline
32 & 2 & parallel & 12 & 2 & 170\\
\hline
32 & 2 & nonparallel & 504 & $<2$ & 160\\
\hline
\end{tabular}
\caption{Timing for the 32bit case. The maximum frame rate has been computed assuming 2 subframes of default {\tt{subexptime}} of 2.62144 ms.}
\label{t32bitframe}
\end{flushleft}
\end{table}
\end{tiny}
\textbf{The exposure time brokend up rounding up to the full next complete subframe that can be started.}
The number of subframes composing a single 32bit acquisition can be calculated as:
\begin{equation}
\textrm{\# subframes}= (int) (\frac{\textrm{exptime (s)}}{\textrm{subexptime (s) + difference between frames (s)}}+0.5)
%\label{esubframes}
\end{equation}
This also means that {\tt{exptime}}$<${\tt{subexptime}} will be rounded to{\tt{subexptime}}. If you want shorter acquisitions, either reduce the {\tt{subexptime}} or switch two 16-bit mode (you can always sum offline if needed).
The UDP header will contain, after you receive the data, the effective number of subframe per image (see section~\ref{UDP}) as "SubFrame Num or Exp Time", i.e. the number of subframes recorded (32 bit eiger).
The effective time the detector has recorded data can be computed as:
\begin{equation}
\textrm{effective exptime}=(\textrm{subexptime})\cdot (\textrm{\# subframes})
%\label{esubframes}
\end{equation}
In the future release, a configurable extra time difference between subframes will be introduced for the parallel mode, so that some noise appearing in detectors at low threshold can be removed. This will enlarge the time difference between frames form the default 12~$\mu$s to something configurable, expected to be 15-40~$\mu$s (for the 9M it is currently 200~$\mu$s due to a noisier module).
\section{External triggering options}\label{triggering}
The detector can be setup such to receive external triggers. Connect a LEMO signal to the TRIGGER IN connector in the Power Distribution Board (see Fig.). 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{figure}[t]
\begin{center}
\includegraphics[width=.4\textwidth]{tiggerIN}
\end{center}
\caption{\textbf{Trigger INPUT} (looking at a single module from the back, top) is the \textbf{rightmost, down}.}
\label{triggerIN}
\end{figure}
\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]
sls_detector_put 0-frames x
@ -390,17 +512,17 @@ No timeout is expected between the start of the acquisition and the arrival of t
Here are the implemented options so far:
\begin{itemize}
\item {\tt{auto}} is the software controlled acquisition, where {\tt{exptime}} and {\tt{period}} have to be set.
\item {\tt{trigger}} 1 frame taken for 1 trigger. You {\tt{frames}} needs to be 1 always, {\tt{cycles}} can be changed and defines how many triggers are considered. In the GUI this is called trigger exposure series.
\item {\tt{burst\_trigger}} gets only 1 trigger, but allows to take many frames. With {\tt{frames}} one can change the number of frames. {\tt{cycles}} needs to be 1. In the gui it is called trigger readout.
\item{\tt{gating}} allows to get a frame only when the trigger pulse is gating. Note that in this case the exp time and period only depend on the gating signal. {\tt{cycles}} allows to select how many gates to consider.
\item {\tt{auto}} is the software controlled acquisition (does not use triggers), where {\tt{exptime}} and {\tt{period}} have to be set. Set number of cycles (i.e. triggers) to 1 using {\tt{cycles}}. Set number of frames using {\tt{frames}}.
\item {\tt{trigger}} 1 frame taken for 1 trigger. Your {\tt{frames}} needs to be 1 always, {\tt{cycles}} can be changed and defines how many triggers are considered. {\tt{exptime}} needs to be set. In the GUI this is called trigger exposure series.
\item {\tt{burst\_trigger}} gets only 1 trigger, but allows to take many frames. With {\tt{frames}} one can change the number of frames. {\tt{cycles}} needs to be 1. {\tt{exptime}} and {\tt{period}} have to be set. In the gui it is called trigger readout.
\item{\tt{gating}} allows to get a frame only when the trigger pulse is gating. Note that in this case the exp time and period only depend on the gating signal. {\tt{cycles}} allows to select how many gates to consider. Set number of frames to 1 using {\tt{frames}}.
\end{itemize}
Hardware-wise, the ENABLE OUT signal outputs when the chips are really acquiring. This means that the single subframes will be output in 32 bit mode. The TRIGGER OUT outputs the sum-up-signal at the moment (which is useless). This will be changed in the future to output the envelop of the enable signal.
We are planning to change some functionality, i.e. unify the {\tt{trigger}} and {\tt{burst}} trigger modes and make both {\tt{frames}} and {\tt{cycles}} configurable at the same time.
\section{Autosumming and rate corrections}
\section{Autosumming and rate corrections} \label{advanced}
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.
@ -417,7 +539,7 @@ In the EIGER on board server, this look-up table is generated assuming that the
n_d= n_i \cdot exp(-n_i \cdot \tau),
\label{rate}
\end{equation}
where $\tau$ represents an effective parameter for the dead time and the loss in efficiency. The look-up table is necessary as we are interested to obtain $c_i(c_d)$ and equation~\ref{rate} is not invertible. One needs to notice that the paralizable counter model to create a look-up tables applies only if photons arrive with a continuous pattern (like at the SLS). If photons are structured in fewer but intenser bunches, deviations may arise. This is the case for some operation modes at the ESRF. For those cases we are studying how to correct, probably from a simulated correction tables if an analytical curve cannot be found.
where $\tau$ represents an effective parameter for the dead time and the loss in efficiency. The look-up table is necessary as we are interested to obtain $c_i(c_d)$ and equation~\ref{rate} is not invertible. One needs to notice that the paralyzable counter model to create a look-up tables applies only if photons arrive with a continuous pattern (like at the SLS). If photons are structured in fewer but intenser bunches, deviations may arise. This is the case for some operation modes at the ESRF. For those cases we are studying how to correct, probably from a simulated correction tables if an analytical curve cannot be found.
\textbf{In the new calibration scheme, $\tau$ is given as a function of the energy. It is loaded from the trimbit files and interpolation between two trimbit files are performed.} One needs to make sure the appropriate $\tau$ value is written in the trimbit files, then need to load the appropriate {\tt{settings}} and {\tt{vthreshold}} before.
Online rate corrections can be activated for {\tt{dr=32}}. They are particularly useful in the autosumming mode as every single subframe is corrected before summing it. To correct for rate, the subframe duration has to be known to the correction algorithm. Rate corrections for {\tt{dr=16}} will be activated as well in the next firmware release.
@ -454,20 +576,37 @@ Here is a list of limits that should be checked:
If \textbf{dr} is 32 and \textbf{clkdivider} is not 2, whatever the detector gets out is wrong (the boards cannot properly keep up)
\item If the variable \textbf{frames} is greater than what the memory can store (table~\ref{timgs}) and the frame rate exceed the continuos streaming (table~\ref{tcont}), limits on the maximum number of images need to be implemented if the period is lower than the one listed in table~\ref{tcont}. Check table~\ref{tframes} to see the different cases.
\item Running at a speed that does not support the frame rate you are asking: see table~\ref{tframes} to check if the frame rate (\textbf{period}) you are asking is compatible with the \textbf{clkdivider} you are asking.
\item Running at a redout time that does not support the frame rate you are asking. Check table~\ref{tframes} to check if the frame rate (\textbf{period}) you are asking is compatible with the \textbf{flags} you are asking.
\item Running at a readout time that does not support the frame rate you are asking. Check table~\ref{tframes} to check if the frame rate (\textbf{period}) you are asking is compatible with the \textbf{flags} you are asking.
\item The minimum allowed value for \textbf{exptime} should be 10~$\mu$s.
\item By default the {\textbf{subexptime}} is set to 2.621440~ms. Values smaller than 500~$\mu$s do not make sense. The maximum value is 5.2~s. This limits should be checked.
\end{enumerate}
Here is a list of parameters that should be reset:
\begin{enumerate}
\item \textbf{resetframescaught} should be reset to zero after every acquisition taken with {\tt{receiver start}},{\tt{status start}},{\tt{receiver stop}}. If the acquisition is taken with {\tt{sls\_detector\_acquire}}, there is no need to reset this.
\item After changing the {\tt{timing}} mode of the detector, one should reset to '1' the unused value, in that specific timing mode, between \textbf{frames} and \textbf{cycles}. See section~\ref{triggering} for how to use the timing. At the present moment the detector will acquire more frames than planned if the variable not used between \textbf{frames} and \textbf{cycles} is not reset. In future releases, the unused variable will be ignored. Still resetting is a good practice.
\end{enumerate}
\section{1Gb/s, 10Gb/s links}
\subsection{Checking the 1Gb/s, 10Gb/s physical links}\label{led}
LEDs on the backpanel board at the back of each half module signal:
\begin{itemize}
\item the 1Gb/s physical link is signaled by the most external LED (should be green)
\item the 10Gb/s physical link is signaled by the second most external LED next to the 1Gb/s one (should be green)
\item the 1Gb/s physical link is signaled by the most external LED (should be green). For top half modules is at the extreme left. For bottom half modules is at the extreme right.
\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}
\begin{figure}[t]
\begin{center}
\includegraphics[width=.7\textwidth]{LEDSim}
\end{center}
\caption{1 and 10GB LEDs position.}
\label{fLEDs}
\end{figure}
\subsection{Delays in sending for 1Gb/s, 10Gb/s, 10Gb flow control, receiver fifo}
Extremely advanced options allow to:
@ -486,10 +625,10 @@ Extremely advanced options allow to:
\end{verbatim}
As example:
\begin{verbatim}
for X in \$(seq 0 4); do ./sls_detector_put \$X:txndelay_left \$((X*100000)); done
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
./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.
@ -539,9 +678,15 @@ Very important is to activate the flow control in 10Gb (in 1Gb it is on by defau
\end{verbatim}
Set the transmission delays as explained in the manual.
It can help to increase the fifo size of the receiver to {\tt{rx\_fifodepth}} to 1000 images
\begin{verbatim}
./sls_detector_put rx_fifodepth 1000
\end{verbatim}
One needs to keep into account that in 16 bit mode for 1 image we expect each slsReceiver to allocate 0.5MB. So for 1000 images, we expect 500MB memory for each receiver. This can be monitored in Linux with "top" or "free -m".
\section{Offline processing and monitoring}
\subsection{Data out of the detector: UDP packets}
\subsection{Data out of the detector: UDP packets}\label{UDP}
The current UDP header format is described in figure~\ref{UDPheader}.
\begin{figure}[t]
@ -608,9 +753,9 @@ Header Version : 1 byte
Note that if one wants to reconstruct the real time the detector was acquiring in 32 bit (autosumming mode), one would have to multiply the SubExptime (ns) for the SubFrame Number.
\subsection{Offline image reconstruction}
The offline image reconstruction is in {\tt{slsDetectorsPackage/slsImageReconstruction}}.
The offline image reconstruction{\tt{slsImageReconstruction}} is not part of the package anymore.
The detector writes a raw file per receiver. An offline image reconstruction executable has been written to collate the possible files together and produce cbf files. The executable uses the CBFlib-0.9.5 library (downloaded from the web as it download some architecture dependent packages at installation).\\
The detector writes 2 raw files per receiver. An offline image reconstruction executable has been written to collate the possible files together and produce cbf files. The executable uses the CBFlib-0.9.5 library (downloaded from the web as it download some architecture dependent packages at installation).\\
\underline{At cSAXS, the CBFlib-0.9.5 has been compiled -such that the required packages are}\\\underline{ downloaded in /sls/X12SA/data/x12saop/EigerPackage/CBFlib-0.9.5.}\\
To use it for a single module:
@ -626,7 +771,7 @@ cbfMaker [filename] [pixels x] [pixels y] ([singlemodulelongside_x] [start det])
\end{verbatim}
eg.
{\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 {\tt{[singlemodulelongside\_x]}} {\tt{[option to interpolate gap pixels]}} 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]
@ -694,7 +839,15 @@ Start the server again:
\begin{verbatim}
./eigerDetectorServer &
\end{verbatim}
\textbf{Note that the server appropriate for the software version used is located inside the package: {\tt{slsDetectorsPackage/serverBin/eigerDetectorServerxx.yy.}}}.
To copy the detector server on many boards, a script can be implemented on the lines of:
\begin{verbatim}
for i in beb111 beb070;
do ssh root@$i killall eigerDetectorServer;
scp eigerDetectorServer root@$i:~/executables/eigerDetectorServer ;
ssh root@$i sync; done
\end{verbatim}
\section{Loading firmware bitfiles}
@ -708,7 +861,7 @@ cd executables
./boot_recovery
\end{verbatim}
\end{enumerate}
In both case, after booting, only the central one should be on green and red alternating.
In both case, after booting, only the central LED should be on green and red alternating.
From a terminal, do:
\begin{verbatim}
@ -769,17 +922,9 @@ To load the special noise file look at {\tt{settingsdir/eiger/standard/eigernois
sls_detector_put trimbits ../settingsdir/eiger/standard/eigernoise
\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}
\section{Troubleshooting}
\subsection{Cannot successfully finish an acquisition}
\subsubsection{only master module return from acquisition}
\subsubsection{Only master module return from acquisition}
When no packets are received AND detector states in 'running status'. Widest list of causes.
Query the status of each half module till the maximum number {\tt{N}}, {\tt{for i in \$(seq\ 0\ N); do sls\_detector\_get \$i:status; done}}, to check if there are half modules that are still running.
@ -790,7 +935,7 @@ If only the master modules return but ALL the other half modules do not:
\item It can be that the synchronization cable is not connected or the termination board at the synchronization does not work. Check.
\end{itemize}
\subsubsection{a few modules do not return from acquisition}
\subsubsection{A few modules do not return from acquisition}
If only a few modules are still running but the others return, it is a real problem with a backend board or a synchronization bug.
If you can, ssh into the board, kill and start the eigerDetectorServer again (see Section~\ref{server} for how to do this). Keep the terminal with the output from the eigerDetectorServer and repeat the acquisition.
\begin{itemize}
@ -800,11 +945,33 @@ If you can, ssh into the board, kill and start the eigerDetectorServer again (se
\subsection{No packets (or very little) are received}
In both cases running \textbf{wireshark} set to receive UDP packets on the ethernet interface of the receiver (filter the UDPport$>=$xxxx, where xxxx is written in the configuration file) can help you understanding if NO packets are seen or some packets are seen. You have to set the buffer size of the receiving device in wireshark to 100Mbyte minimum. If no packets are received, check that your receiving interface and detector UDPIPs are correct (if in 10Gb). Most of the time in this case it is a basic configuration problem.
If some packets are received, but not all, then it is an optimization problem:
It can help looking at the receiver output, shown in an example here:
\begin{verbatim}
Missing Packets : 224064
Complete Frames : 3499
Last Frame Caught : 3499
\end{verbatim}
The {\tt{Last Frame Caught}}, meaning the packet from the last frame that was sent out by the detector, can help in understanding the problem:
\begin{enumerate}
\item If some packets are received, but not all, it could be a network optimization problem. In this case, the {\tt{Last Frame Caught}} will be a value close to the expected number of frames with missing frames distributed over the whole frame range. In this case:
\begin{itemize}
\item For receiving data over 1Gb, the switch must have FLOW CONTROL enabled
\item If using 10GbE, check that the 10Gb link is active on the backpanel board. Then refer to Section~\ref{10g} to see how to configure the 10Gb ports on the receiving machine correctly.
\end{itemize}
\item If the {\tt{Last Frame Caught}} value is much lower than the expected frames and you are missing a bunch of frames from a point onwards, and you are using {\tt{receiver start, status start}}: then it can be that you are stopping the receiver too early. In particular when you are using {\tt{delay}} it might be that there is some time between when the detector is already done and in {\tt{idle}} state but the receiver is still receiving data. Check with {\tt{./sls\_detector\_get framescaught}} if the receiver is already done before doing {\tt{./sls\_detector\_put receiver stop}}.
\item If the {\tt{Last Frame Caught}} value is much lower than the expected frames and you are missing a bunch of frames from a point onwards and you are running at a higher frame rate than the continuous framerate (see table~\ref{tcont}) with more images than the size of the memory (see table~\ref{timgs}). It might be that you are running out of memory to store images. There is no protection for this. see point~\ref{outmemory}
\end{enumerate}
\subsection{'Got Frame Number Zero from Firmware'}\label{outmemory}
In this case, you have run out of memory size (see table~\ref{timgs} for the size) on the boards so you are trying to store on the DDR2 memories more images that they can contain and the network is not fast enough to send everything out from the 10GbE.
So if you see:
\begin{verbatim}
Got Frame Number Zero from Firmware. Discarding Packet
\end{verbatim}
it means that you run out of memory at the previous acquisition. The cure is taking 2 or 3 SINGLE images in a raw to clear out the memories.
\subsection{The module seems dead, no lights on BEBs, no IP addresses}
\begin{itemize}
@ -820,7 +987,7 @@ If the 1G LED (see Section~\ref{led}) on the backpanel board is not green:
\item The IP address is assigned only at booting up of the boards. Try to reboot in case the board booted before it could have an IP address.
\item Check that you did not run out of IP addresses
\end{itemize}
Check that the board is not in recovery mode (i.e. the central LED on the back is stable green). In this case reboot the board with the soft reset or power cycle it.
Check that the board is not in recovery mode (i.e. the central LED on the back is stable green, see Fig~\ref{fLEDs}). In this case reboot the board with the soft reset or power cycle it.
If the 1Gb LED on the backpanel board is green (see Section~\ref{led}):
\begin{itemize}
@ -835,6 +1002,14 @@ It is connected to the TCPport which the receiver uses:
%%%#To display only open UDP ports try the following command: netstat -vaun
\end{itemize}
\subsection{The client ignores the commands}
Make sure that in the configuration file you do not have {\tt{lock 1}} activated, as this will let only one username from one IP address talk to the detector.
To deactivate it, you need to run {\tt{lock 0}} from the client session where you locked it.
\subsection{Zmq socket is blocked}
It is connected to the TCPport which is used. In rare cases, it might be that the TCP port crashes. To find out which process uses the TCPPOrt do: \textbf{netstat -nlp | grep xxxx}, where xxxx is the tcpport number. To display open ports and established TCP connections, enter: \textbf{netstat -vatn}. Kill the process.
\subsection{Client has \textbf{shmget error}}
Note that occasionally if there is a shared memory of a different size (from an older software version), it will return also a line like this:
\begin{verbatim}
@ -843,14 +1018,18 @@ Note that occasionally if there is a shared memory of a different size (from an
This needs to be cleaned with {\tt{ipcs -m}} and then {\tt{ipcrm -M xxx}}, where xxx are the keys with nattch 0. Alternative in the main slsDetectorFolder there is a script that can be used as {\tt{sh cleansharedmemory.sh}}. Note that you need to run the script with the account of the client user, as the shared memory belongs to the client. It is good procedure to implement an automatic cleanup of the shared memory if the client user changes often.
\subsection{Measure the HV}
For every system but not the 9M:
For every system:
\begin{itemize}
\item Software-wise measure it (now the software returns the measured value), with {\tt{sls\_detector\_get vhighvoltage}}. The returned value is the HV (for proper Eiger setting is approximately 150~V) if it is correctly set. If two master modules are presents (multi systems), the average is returned (still to be tested). If one asks for the individual $n$ half module bias voltage through {\tt{sls\_detector\_get n:vhighvoltage}}, if the $n$ module is a master, the actual voltage will be returned. If it is a slave, -999 will be returned.
\item Hardware-wise measure value of HV on C14 on the power distribution board. Check also that the small HV connector cable is really connected.
\item Hardware-wise (opening the detector) measure value of HV on C14 on the power distribution board. Check also that the small HV connector cable is really connected.
\end{itemize}
The 2M system at ESRF has a HV enable signal that needs to be shortcut in order to overwrite vacuum protections (when not in vacuum).
The 1.5M for OMNY has a relay system that enables HV only when the vacuum is good.
For both systems, it makes sense not to set the HV while running the configuration file but set it at a later stage when sure about the vacuum.
\subsection{The image now has a vertical line}
Check if the vertical line has a length of 256 pixels and a width of 8 columns. In this case it is a dataline beeing bad. It can be either a wirebond problem or a frontend board problem. try to read the FEB temperature (see Section~\ref{}) and report the problem to the SLSDetector group. Most likely it will be a long term fix by checking the hardware.
Check if the vertical line has a length of 256 pixels and a width of 8 columns. In this case it is a dataline being bad. It can be either a wirebond problem or a frontend board problem. try to read the FEB temperature (see Section~\ref{}) and report the problem to the SLSDetector group. Most likely it will be a long term fix by checking the hardware.
\subsection{The image now has more vertical lines}
@ -860,7 +1039,7 @@ If you see strange lines in vertical occurring at period patterns, it is a memor
Depending on your network setup, to speed up the ssh to the boards from a pc with internal dhcp server running: \textbf{iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE; echo "1" > /proc/sys/net/ipv4/ip\_forward}, where eth1 has to be the 1Gb network device on the pc
\subsection{Check firmware version installed on BEB}
Follow some steps described in Section~\label{server}.
You can either ask in the client as described in section~\ref{api}, or login to the boards directly. Follow some steps described in Section~\ref{server}.
\begin{verbatim}
ssh root@bebxxx #password is root
killall eigerDetectorServer # kill server and stopserver
@ -870,7 +1049,7 @@ cd executables/
Scroll up in the terminal till you find {\tt{Firmware Version: xx}}
\subsection{Check if half-module is a master, a slave, a top or a bottom}
Follow some steps described in Section~\label{server}.
Follow some steps described in Section~\ref{server}.
\begin{verbatim}
ssh root@bebxxx #password is root
killall eigerDetectorServer # kill server and stopserver
@ -882,8 +1061,33 @@ Scroll up in the terminal till you find:\\
*************** MASTER/SLAVE ***************\\
*************** NORMAL/SPECIAL ***************\\
\subsection{'Cannot connect to socket'}
This error is typically due to the detector server not running. For why, see section~\ref{servernot}.
\subsection{Detector server is not running}\label{servernot}
The detector server could not be running: either the detector was powered off, or it powered off itself due to too high temperature or, in the case of the 9M, if the waterflow sensor detected no flux and powered it off (the chiller stops occasionally as cSAXS).
If the powering and the temperature are OK, instead, it can be that the firmware version is incompatible to the server version and/or the client software version. So check the consistency of firmware/software/server versions.
\subsection{'Acquire has already started' error message}
If you see the client returning the following error message:\\
``Acquire has already started. If previous acquisition terminated unexpectedly, reset busy flag to restart.(sls\_detector\_put busy 0)''\\
You need to run the command:
\begin{verbatim}
./sls_detector_put busy 0
\end{verbatim}
\subsection{There is noise running the detector in 32-bit}
Short story (for now): You are running in {\tt{parallel}} mode, switch {\tt{flags}} to non {\tt{nonparallel}} mode.
Long story: If you are running the detector in 32-bit (autosumming), there might be some noise, particularly at lower thereshold energies. This is due to the fact that the analog part of the chips require some latency time to settle which is larger than the redout time. At the present moment it is possible to run the detector only in {\tt{parallel}} or {\tt{nonparallel}} mode, respectively with readout times between frames of 12~$\mu$s and 504~$\mu$s. If you switch {\tt{flags}} to non {\tt{nonparallel}} mode you will giveenough time for teh signals to settle. For future realeas we are planning to introduce some configurable delay, such that you can remain with the {\tt{parallel}} flag, but can obtain a configurable dead time between frames in the range 12$-$504~$\mu$s.
\subsection{There is noise running the detector at high frame rate(4,8,16 bit)}
If are running in {\tt{parallel}} mode, in particular at low thereshold energies, you might encounter some noise. The reason is that the analog part of the chips require some latency time to settle which is larger than the redout time.
\begin{enumerate}
\item You can lower the frame rate and relax requirements on period:
At low frame rate, you normally leave enough time between the end of the acquisition and the starting of the next, so you should not see this effect. In any case setting a {\tt{period}}={\tt{exptime}}+readout time from Table~\ref{tchipro} +extra 20$\mu$s cures the problem. The 20$\mu$s could also be 10~$\mu$s, they are very hardware dependent.
\item The frame rate requirement are stingent (as for time resolved measurements): the only option here is to reduce the {\tt{exptime}} to let the extra 20~$\mu$s (or 10)~$\mu$s. The {\tt{period}} remains the same.
\end{enumerate}
\section{Client checks - command line}
@ -1025,7 +1229,74 @@ where {\tt{number}} is a string that should be interpreted as an int for 0/1 me
\end{enumerate}
\section{Complete data out rate tables}
In table~\ref{tframescomplete} is a list of all the readout times in the different configurations.
\begin{tiny}
\begin{table}
\begin{flushleft}
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
\tiny{dr} & \tiny{clkdivider} & \tiny{flags} & \tiny{readout t($\mu$s)} & \tiny{max frame rate (kHz)} & \tiny{min period ($\mu$s)} & \tiny{max imgs (nominal/our network)}\\
\hline
4 & 0 & parallel & 3.4 & 22 & 44 & 30k/50k\\
\hline
4 & 0 & nonparallel & 44 & 21 & 49 & 30k/50k\\
\hline
4 & 1 & parallel & 6 & 10.5 & 92 & 30k/100k\\
\hline
4 & 1 & nonparallel & 88.7 & 10.5 & 93 & 30k/100k\\
\hline
4 & 2 & parallel & 11.2 & 5.4 & 197 & infinite\\
\hline
4 & 2 & nonparallel & 176.5 & 5.4 & 180 & infinite\\
\hline
\hline
8 & 0 & parallel & 3.4 & 11.1 & 89 & 15k/24k\\
\hline
8 & 0 & nonparallel & 85.7 & 11.1 & 91 & 15k/24k\\
\hline
8 & 1 & parallel & 6.1 & 5.7 & 181 & 15k/52k\\
\hline
8 & 1 & nonparallel & 170.5 & 5.7 & 175 & 15k/52k\\
\hline
8 & 2 & parallel & 11.2 & 2.9 & 342 & infinite\\
\hline
8 & 2 & nonparallel & 340.3 & 2.9 & 344 & infinite\\
\hline
\hline
16 & 0 & parallel & 3.4 & 6.1 & 164 & 8k/12k\\
\hline
16 & 0 & nonparallel & 126 & 5.6& 179 & 8k/23k\\
\hline
16 & 1 & parallel & 6.1 & 3.9& 257 & 8k/28k\\
\hline
16 & 1 & nonparallel & 255 & 3.3& 303 & infinite\\
\hline
16 & 2 & parallel & 11 & 1.9 & 526 &infinite \\
\hline
16 & 2 & nonparallel & 504 & 1.8 & 555 & infinite\\
\hline
\hline
32 & 2 & parallel & 11 & 2 & &\\
\hline
32 & 2 & nonparallel & 504 & $<2$ & &\\
\hline
\end{tabular}
\caption{Readout settings. The {\tiny{min exptime}} possible is 5$-$10~$\mu$s. This is due to the time to pass the pixel enable signal in the whole chip.}
\label{tframescomplete}
\end{flushleft}
\end{table}
\end{tiny}
Table~\ref{tx} shows the bandwidth of data trasnferring between the FEB and BEB and of the DDR2 memory access. the GTX lanes are only capable of 25.6~Gbit/s. This limits the 12/16 bit frame rate. The 2$\times$DDR2 memories have a bandwidth or 2$\cdot$25.6~Gb/s=51.2~Gb/s. Due to this memory access bandwidth, the 32 bit autosumming mode can only run in {\tt{clkdivider}} 2.
\begin{figure}[t]
\begin{center}
\includegraphics[width=1.\textwidth]{TansmissionRates}
\end{center}
\caption{Transmission bandwidth for the FEB $\to$BEB transfer (second column) and the DDR2 memories (fourth column). }
\label{tx}
\end{figure}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

View File

@ -4,31 +4,46 @@ DESTDIR=../docs
TEX=latex
MAINTEXS= slsDetectorInstall.tex slsDetectors-FAQ.tex
MAINTEXS2= slsDetectorInstall.tex
MAINTEXS=slsDetectors-FAQ.tex
TEXS=slsDetector-softFAQ.tex singlePhotonCounting-FAQ.tex angConv-FAQ.tex generalDet-FAQ.tex
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
PDFS2 = $(MAINTEXS2:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
HTMLS2 = $(MAINTEXS2:%.tex=%)
all: pdf html
echo $(PWD)
echo $(PDFS)
echo $(PDFS2)
echo $(HTMLS)
echo $(HTMLS2)
pdf: $(PDFS)
pdf: $(PDFS) $(PDFS2)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
mv $(PDFS) $(DESTDIR)/pdf
mv $(PDFS2) $(DESTDIR)/pdf
html: $(HTMLS)
html: $(HTMLS) $(HTMLS2)
$(HTMLS): $(TEXS) $(MAINTEXS)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
$(shell test -d $(DESTDIR)/html/$@ && rm -fr $(DESTDIR)/html/$@)
echo "***************************** $@"
latex $@.tex
latex2html $@.tex
mv $@ $(DESTDIR)/html
$(HTMLS2): $(MAINTEXS2)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
$(shell test -d $(DESTDIR)/html/$@ && rm -fr $(DESTDIR)/html/$@)
@ -53,7 +68,7 @@ $(HTMLS): $(TEXS) $(MAINTEXS)
clean:
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(PDFS2) $(HTMLS) $(HTMLS2)
rm -rf $(DESTDIR)/html/slsDetectors-FAQ
rm -rf $(DESTDIR)/html/slsDetectorInstall
rm -rf $(DESTDIR)/pdf/slsDetectors-FAQ.pdf

View File

@ -28,9 +28,10 @@
The SLS detectors software is intended to control the detectors developed by
the SLS Detectors group. The detectors currently supported are:
MYTHEN, GOTTHARD, EIGER and JUNGFRAU.\bigskip
\indent MYTHEN, GOTTHARD, EIGER and JUNGFRAU.
\noindent The package provides software for the distributed system that comprises of
The package provides software for the distributed system that comprises of
detectors, data receivers (to process detector data), and the client (to control
or monitor the system). The client and data receivers can be embedded in
the user's acquisitions system. Furthermore, the package also provides some
@ -78,18 +79,28 @@ However, only control commands work, not the data acquisition itself.
\section{Install Binaries via Conda}
This section is useful only if one wants to download only the binaries for
specific distribution and use the package via command line. Please refer later
sections to download source code and compile them.\bigskip
sections to download source code and compile them.
\noindent One can download and install Miniconda via
\url{https://conda.io/miniconda.html} \bigskip
One can download and install Miniconda via
\noindent The conda package uses Travis CI for continuous integration with
\url{https://conda.io/miniconda.html}
The conda package uses Travis CI for continuous integration with
automatic deployment to Anaconda Cloud. One can download only the package or the
package including the python interface. \bigskip
package including the python interface.
\noindent After the installation, the binaries will be available in your path.
After the installation, the binaries will be available in your path.
Please remember to clear shared memory after installation.
\begin{verbatim}
#displays list of shared memeory segments
ipcs -m
#remove segments that have nattach equal to zero. They key is the first column
ipcrm -M [key]
\end{verbatim}
\begin{itemize}
\item Only the package
@ -102,10 +113,10 @@ conda config --add channels slsdetectorgroup
conda install sls_detector_software
#Install specific release (GLIBC2.14)
conda install sls_detector_software=3.0.1
conda install sls_detector_software=3.1.0
#Scientific Linux 6 version (GLIBC2.12)
conda install sls_detector_software=SL6_3.0.1
conda install sls_detector_software=SL6_3.1.0
\end{verbatim}
\item The package including Python interface
\begin{verbatim}
@ -117,10 +128,10 @@ conda config --add channels sls_detector
conda install sls_detector
#Install specific release (GLIBC2.14)
conda install sls_detector=3.0.1
conda install sls_detector=3.1.0
#Scientific Linux 6 version (GLIBC2.12)
conda install sls_detector=SL6_3.0.1
conda install sls_detector=SL6_3.1.0
\end{verbatim}
\end{itemize}
@ -137,13 +148,13 @@ acquisition system, or if one wants to download the source code and compile.
\begin{verbatim}
#Clone source code with specific release
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch
3.0.1
3.1.0
\end{verbatim}
\item The package including Python interface
\begin{verbatim}
#Clone source code with specific release
git clone https://github.com/slsdetectorgroup/sls_detector.git --branch
3.0.1
3.1.0
\end{verbatim}
\end{itemize}
@ -194,9 +205,10 @@ required. One can install it:
\item via download from:\\
\url{
https://download.qt.io/archive/qt/4.8/4.8.2/qt-everywhere-opensource-src-4.8.2.t
ar.gz} \bigskip
ar.gz}
\noindent To install:
To install:
\begin{verbatim}
> gunzip qt-everywhere-opensource-src-4.8.2.tar.gz
> tar xvf qt-everywhere-opensource-src-4.8.2.tar
@ -207,14 +219,17 @@ ar.gz} \bigskip
By default Qt4 will be installed in /usr/local/Trolltech/Qt-4.8.2/.
\end{itemize}
\noindent \textbf{Setup Environment}
\noindent One has to ensure that \verb=PATH= and \verb=LD_LIBRARY_PATH= have
\textbf{Setup Environment}
One has to ensure that \verb=PATH= and \verb=LD_LIBRARY_PATH= have
been updated to include Qt4 install path, binaries and libraries.
Confirm by executing \verb=qmake -v= and ensuring the result points to Qt4 (not
Qt3 or Qt5). \bigskip
Qt3 or Qt5).
\noindent If the environment is not set up, one can add the libraries and
If the environment is not set up, one can add the libraries and
executables to the .bashrc by adding
\verb=LD_LIBRARY_PATH= and \verb=PATH=:
\begin{verbatim}
@ -228,9 +243,10 @@ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
Before installing Qwt, one must install Qt
and ensure that \verb=QTDIR=, \verb=LD_LIBRARY_PATH= and \verb=PATH= point to
the correct Qt4
version. \bigskip
version.
\noindent A Qwt version equal or higher than 6 is required. One can
A Qwt version equal or higher than 6 is required. One can
install it:
\begin{itemize}
\item via YUM:
@ -240,9 +256,9 @@ install it:
\item via download from:\\
\url{
https://sourceforge.net/projects/qwt/files/qwt/6.0.0/qwt-6.0.0.zip/download}
\bigskip
\noindent To install:
To install:
\begin{verbatim}
> cd qwt-6.0.0
> qmake
@ -252,12 +268,14 @@ https://sourceforge.net/projects/qwt/files/qwt/6.0.0/qwt-6.0.0.zip/download}
By default Qwt will be installed int /usr/local/qwt-6.0.0
\end{itemize}
\noindent \textbf{Setup Environment}
\textbf{Setup Environment}
\noindent One has to ensure that \verb=QWTDIR= and \verb=LD_LIBRARY_PATH= have
been updated to include Qwt install path and libraries. \bigskip
\noindent If the environment is not set up, one can add the libraries to the
One has to ensure that \verb=QWTDIR= and \verb=LD_LIBRARY_PATH= have
been updated to include Qwt install path and libraries.
If the environment is not set up, one can add the libraries to the
.bashrc by adding \verb=LD_LIBRARY_PATH=:
\begin{verbatim}
export QWTDIR=/usr/local/qwt-6.0.0/
@ -324,6 +342,8 @@ Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]
Some example options for compilation:
Most basic option: \verb=./cmk.sh -b=
For only make: \verb=./cmk.sh=
For make clean;make: \verb=./cmk.sh -c=
@ -367,6 +387,65 @@ sls_detector_help sls_detector_put slsReceiver
\subsection{Setting environment variables}
One can set up the environment variables in the following ways.
\subsubsection{Using .bashrc file}
\begin{enumerate}
\item \verb=emacs ~/.bashrc=
\item Add the following function \verb=setup_slsdet= and replace \verb=path=
with absolute path of installed directory
\begin{verbatim}
function setup_slsdet
{
export PKGPATH=[path]
export LD_LIBRARY_PATH=$PKGPATH/slsDetectorPackage/build/bin:$LD_LIBRARY_PATH
export PATH=$PKGPATH/slsDetectorPackage/build/bin:$PATH
cd $PKGPATH/slsDetectorPackage/build/bin
}
\end{verbatim}
\item \verb=source ~/.bashrc=
\item Next time, just run \verb=setup_slsdet= to load the environment
variables.
\end{enumerate}
One can also add the GUI environment variables if installed locally by adding
the following in the function \verb=setup_sldet= \\
\begin{verbatim}
export QTDIR=/path-where-it-is/Qt-4.8.2
export QWTDIR=/path-where-it-is/qwt-6.0.1
export QWT3D=/path-where-it-is/qwtplot3d
export QMAKESPEC=$QTDIR/mkspecs/linux-g++
export LD_LIBRARY_PATH=$QTDIR/lib:$QWTDIR/lib:$QWT3D/lib:$LD_LIBRARY _PATH
export PATH=$QTDIR/bin:$PATH
\end{verbatim}
\subsubsection{Without .bashrc file}
Go to binaries folder slsDetectorPackage/build/bin and execute the following:
\begin{verbatim}
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
export PATH=$PWD:$PATH
\end{verbatim}
\subsection{Clean Shared Memory}
It is very crucial to clean the shared memory, before using a new version of
the SLS Detector Package or a different detector type.
One can use the \verb=cleansharedmemory.sh= script available under the
slsDetector Package.
One can also just use the following commands to clean the shared memory
segments one by one.
\begin{verbatim}
#displays list of shared memeory segments
ipcs -m
#remove segments that have nattach equal to zero. They key is the first column
ipcrm -M [key]
\end{verbatim}
\section{Software Upgrade}
The upgrade of the package could require an upgrade of the on-board detector
@ -379,7 +458,7 @@ themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{Firmware}
\subsubsection{MYTHEN Firmware}
To upgrade the firmware you need either a working version of the Altera
Quartus software or of the Quartus programmer, which can easily be downloaded
@ -389,9 +468,10 @@ from: \\
\noindent Normally, installation of the software and of the driver for the
USB-Blaster (provided together with the MYTHEN detector) are simpler under
Windows. \bigskip
Windows.
\noindent Under Windows, the first time that you connect the USB-Blaster to one
Under Windows, the first time that you connect the USB-Blaster to one
of your USB ports, you will be asked to install new hardware. Set the path to
search for the driver to:
\verb=C:\altera\80sp1\qprogrammer\drivers\usb-blasterp= (where
@ -414,7 +494,7 @@ your cable (pin1 corresponds) and that you have selected the correct programming
connector.
\end{enumerate}
\subsubsection{On-board Software}
\subsubsection{MYTHEN On-board Software}
\begin{enumerate}
\item Connect to the board using telnet:
\begin{verbatim}
@ -454,6 +534,297 @@ acqusition program correctly start.
\end{enumerate}
\subsection{GOTTHARD}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{GOTTHARD Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: \\
\indent \indent 11.01.2013 \\
\indent Latest version: \\
\indent \indent 08.02.2018 (50um and 25um Master) \\
\indent \indent 09.02.2018 (25 um Slave) \\
Normally, the firmware will be upgraded by us as it requires programming the
FPGA via the USB-Blaster.
To upgrade the firmware you need either a working version of the Altera
Quartus software or of the Quartus programmer, which can easily be downloaded
from: \\
\url{https://www.altera.com/download/programming/quartus2/pq2-index.jsp}
Normally, installation of the software and of the driver for the
USB-Blaster (provided together with the MYTHEN detector) are simpler under
Windows.
Under Windows, the first time that you connect the USB-Blaster to one
of your USB ports, you will be asked to install new hardware. Set the path to
search for the driver to:
\verb=C:\altera\80sp1\qprogrammer\drivers\usb-blasterp= (where
\verb=C:\altera\80sp1\qprogrammer\= is assumed to be ther path where your
Quartus version is installed).
\begin{enumerate}
\item After starting the Quartus programmer, click on Hardware Setup and in the
"Currently selected hardware" window select USB-Blaster.
\item In the Mode combo box select "Active Serial Programming".
\item Plug the end of your USB-Blaster WITH THE ADAPTER PROVIDED in the
connector ASMI on the MCS board taking care that pin1 corresponds to the one
indexed and with the rectangualr pad.
\item Click on add file and from select the programming file provided when
the upgrade has been reccomended.
\item Check "Program/Configure" and "Verify".
\item Push the start button and wait until the programming process is
finished (progress bar top left).
\item In case the programmer gives you error messages, check the polarity of
your cable (pin1 corresponds) and that you have selected the correct programming
connector.
\end{enumerate}
\subsubsection{GOTTHARD On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
\begin{enumerate}
\item Install tftp if the pc does not have it.
\item Copy the server from serverBin folder to /tftpboot (or equivalent tftp
folder) of the pc
\item Copy the server to the detector by:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/gotthardDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Copy new on-board server from pc to the blackfin using: \\
\verb=tftp pcxxx -r gotthardDetectorServerxxx -g=
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/gotthardDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=gotthardDetectorServerxxx= \\
\verb=gotthardDetectorServerxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
\subsection{EIGER}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{EIGER Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: 16 \\
\indent Latest version: 20 \\
\begin{enumerate}
\item One must get the latest package's corresponding bit files from the SLS
Detector Group.
\item If one does not have the bcp script, that should also be obtained from
the SLS Detector Group. It is required to program the bit files and requires
that tftp be installed on the pc.
\item Run the following to update firmware
\begin{verbatim}
#update back end fpga
bcp download.bit bebxxx:/fw0
#update front left fpga
bcp download.bit bebxxx:/febl
#update front right fpga
bcp download.bit bebxxx:/febr
#update kernel
bcp download.bit bebxxx:/kernel
\end{verbatim}
Please update bit files with great caution as it could make your board
inaccessible, if done incorrectly.
\end{enumerate}
\subsubsection{EIGER On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
Update the on-board software without connecting to the detector
\begin{verbatim}
#password for the boards: root
#Kill existing servers that are running on the detector
ssh root@beb031 killall eigerDetectorServer;
#Copy on-board server to detector inside executables folder
scp ~/path-where-it-is/eigerDetectorServerxxx root@bebxxx:~/executables;
#Overwrite the actual eigerDetectorServer on board
scp ~/path-where-it-is/eigerDetectorServerxxx
root@bebxxx:~/executables/eigerDetectorServer;
#sync
ssh root@bebxxx sync;
#reboot the eiger board
\end{verbatim}
\bigskip One can connect to the detector by:
\begin{verbatim}
ssh root@bebxxx
password: root
\end{verbatim}
The on-board server is in ~/executables folder and respawned at startup in \\
\verb=/etc/rc5.d/S50board_com.sh=
\subsection{JUNGFRAU}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{JUNGFRAU Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: 13.11.2017 \\
\indent Latest version: 13.11.2017 \\
At times, one has to update the firmware, which then also requires updating the
on-board software.
\textbf{\textit{Jungfrau firmware can be upgraded via the SLS Detector Package
binaries from the command line.}}
\begin{enumerate}
\item One must get the latest package's corresponding POF file from the SLS
Detector Group.
\item Update the latest SLS Detector package installed.
\item Update the on-board software as per the instructions in the next
section.
\item Start the on-board server in debug mode:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Start the server in debug mode using: \\
\verb=./jungfrauDetectorServerxxx -debug= \\
Leave this console on to come back to it later.
\end{enumerate}
\item From the command line of the pc, clear shared memory \\
\verb=./sls_detector_get free= \\
If one gets shmget error, please clean the shared memory properly using the
script in \verb=slsDetectorPackage/cleansharedmemory.sh=
\item Add the detector to shared memory using \\
\verb=./sls_detector_put hostname bchipxxx=
\item Program the FPGA using \\
\verb=./sls_detector_put programfpga xxx.pof=
\item Once the programming is done:
\begin{enumerate}
\item Switch to the console that has the debug server running and kill it
using Ctrl+C and ensure no jungfrauDetectorServers are
running
\item Restart the new server to see if it runs with the new firmware \\
\verb=./jungfrauDetectorServerxxx= \\
If the server didn't start properly, please contact us with the error message
shown when starting the server up, else continue with the following steps.
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=jungfrauDetectorServervxxx= \\
\verb=jungfrauDetectorServervxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
\subsubsection{JUNGFRAU On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
\begin{enumerate}
\item Install tftp if the pc does not have it.
\item Copy the server from serverBin folder to /tftpboot (or equivalent tftp
folder) of the pc
\item Copy the server to the detector by:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Copy new on-board server from pc to the blackfin using: \\
\verb=tftp pcxxx -r jungfrauDetectorServervxxx -g=
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=jungfrauDetectorServervxxx= \\
\verb=jungfrauDetectorServervxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
\begin{comment}
\section{Detector system architecture}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1 +0,0 @@
../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.6

View File

@ -0,0 +1 @@
../slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer

View File

@ -0,0 +1 @@
../slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServer_virtual

View File

@ -1 +0,0 @@
../slsDetectorSoftware/jungfrauDetectorServer/bin/jungfrauDetectorServerv3.0.0.6.3

View File

@ -1 +0,0 @@
../slsDetectorSoftware/moenchDetectorServer/moenchDetectorServerv2.0.3

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
Vref 660
VcascN 650
VcascP 1480
Vout 1520
Vcasc 1320
Vin 1350
Vref_comp 350
Vib_test 2001

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
Vref 660
VcascN 650
VcascP 1480
Vout 1520
Vcasc 1320
Vin 1350
Vref_comp 350
Vib_test 2001

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
Vref 660
VcascN 650
VcascP 1480
Vout 1520
Vcasc 1320
Vin 1350
Vref_comp 350
Vib_test 2001

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
Vref 660
VcascN 650
VcascP 1480
Vout 1520
Vcasc 1320
Vin 1350
Vref_comp 350
Vib_test 2001

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
Vref 660
VcascN 650
VcascP 1480
Vout 1520
Vcasc 1320
Vin 1350
Vref_comp 350
Vib_test 2001

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
VDAC0 1220
VDAC1 3000
VDAC2 1053
VDAC3 1450
VDAC4 750
VDAC5 1000
VDAC6 480
VDAC7 420

View File

@ -1 +0,0 @@
dynamicgain

View File

@ -1 +0,0 @@
dynamicgain

View File

@ -1 +0,0 @@
dynamicgain

View File

@ -1 +0,0 @@
dynamicgain

View File

@ -1 +0,0 @@
dynamicgain

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
VDAC0 660
VDAC1 650
VDAC2 1480
VDAC3 1520
VDAC4 1320
VDAC5 1350
VDAC6 887
VDAC7 2001

View File

@ -1 +0,0 @@
227 5.6

View File

@ -1,8 +0,0 @@
VDAC0 660
VDAC1 650
VDAC2 1480
VDAC3 1520
VDAC4 1320
VDAC5 1350
VDAC6 887
VDAC7 2001

View File

@ -1 +0,0 @@
227 5.6

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