mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-17 07:17:13 +02:00
Compare commits
1040 Commits
Author | SHA1 | Date | |
---|---|---|---|
acf2ab4295 | |||
dd1690d7a1 | |||
1873cc9310 | |||
565858b6c6 | |||
7383b13f16 | |||
d5ce03918c | |||
c9dfa408db | |||
36a9bafbde | |||
15643c2320 | |||
71489b7106 | |||
7394833710 | |||
9c50a3ee1e | |||
fd79d59f4e | |||
c628ae2192 | |||
a56be25500 | |||
d74661a375 | |||
054e733cd5 | |||
fe4db54eb6 | |||
5be503c1bd | |||
58cdb5bd20 | |||
e18c191247 | |||
1a338346d5 | |||
d3d98db7e9 | |||
3f9ec695db | |||
6f50707cfb | |||
a5f26252b8 | |||
d032f43f11 | |||
0d53f83a2f | |||
a7dcfe4b31 | |||
b9a346a396 | |||
225e5490d2 | |||
95d89522d8 | |||
6fcb880538 | |||
65b8c9c5c1 | |||
0a7fd0a51a | |||
6834294437 | |||
afee45790f | |||
f0c789dc91 | |||
a0f250a487 | |||
fb25a01db5 | |||
da4dd0df7e | |||
4c6be26846 | |||
74acbb15f5 | |||
d65825e9ef | |||
e757e25fa1 | |||
14ec4cf1da | |||
ea4aaf743f | |||
61f290441e | |||
80fc7eb220 | |||
73a9c42f62 | |||
72c992bc74 | |||
f4e05f7a01 | |||
cb4f733350 | |||
a5022ff0ee | |||
cab2b335dc | |||
b442b17415 | |||
37e7471dc4 | |||
3b8c612103 | |||
08c0c59a28 | |||
7e01095684 | |||
500442fd6b | |||
b67c6dea08 | |||
c9215a6d9b | |||
1bdf83e101 | |||
1bd813d620 | |||
943a85cbd5 | |||
fc24558314 | |||
d23722a4b7 | |||
bc46d0f6ab | |||
532f76ed4f | |||
21db57dd89 | |||
dc5db905d4 | |||
48a684b95f | |||
276dc52196 | |||
e942678139 | |||
72a028eaf3 | |||
907257891d | |||
0a79ae523b | |||
90496bcee8 | |||
ed2894dafd | |||
a74c9498e2 | |||
403989e2f8 | |||
7e8d11098a | |||
f9c9a53c8c | |||
90b1b97ffa | |||
50003cbc08 | |||
a799c4d2e2 | |||
700f532b5a | |||
a098bc4674 | |||
13bbd54a21 | |||
d84e9652d3 | |||
1ce39c48c7 | |||
9ddff523cd | |||
f7618fbb93 | |||
8501e1fb1f | |||
6faa4c821f | |||
da291d535e | |||
adcde9fd49 | |||
dde99a16b3 | |||
b200a2efc1 | |||
fe281bd1b1 | |||
878eab9fc3 | |||
4259d49b63 | |||
4dac9f2193 | |||
cb8e4365e3 | |||
0251aa9e63 | |||
7c047cab4a | |||
572332f870 | |||
d90bf6c7df | |||
5c8c3ae3f3 | |||
18136fed9d | |||
fc42720208 | |||
e6505650cb | |||
ba6fdb9695 | |||
8361f2bb96 | |||
4ee4d66977 | |||
e14f6981a0 | |||
8158ef876c | |||
ebb6f53b21 | |||
e172df79f3 | |||
55bf73f3b7 | |||
c62ce0ce6b | |||
3a3628c475 | |||
9ba907f9f7 | |||
3f7c9529dd | |||
c7af9c9f3e | |||
0b17318f10 | |||
1f907b911e | |||
c5b621b684 | |||
946e6aa817 | |||
3682644e15 | |||
a6aaa2c3c6 | |||
ac64afe747 | |||
d19f6a3d0d | |||
eb025b54ef | |||
d77b353481 | |||
3bf6be41b4 | |||
7466c0bc8f | |||
713639d001 | |||
3cc4d25eb9 | |||
0d905923dd | |||
e747a5811f | |||
22b3229d94 | |||
7729e47685 | |||
f31fa92516 | |||
d106109f6c | |||
39b1f5bbf2 | |||
7ab3b25f87 | |||
0f6f20a720 | |||
1340408c2d | |||
b02bda053b | |||
75c40ad069 | |||
eaf05cfc44 | |||
f1e0bda08d | |||
3fb22dc20a | |||
ff5aa13073 | |||
4ec70d7995 | |||
fb6d8fd5d8 | |||
018660f392 | |||
8ef032aecd | |||
f529428773 | |||
006eff9213 | |||
e865d8febf | |||
ae6c7f5841 | |||
602c02f2f7 | |||
f3f83de690 | |||
7b7c4a2b86 | |||
9154478702 | |||
8fc45676b9 | |||
4ff0ef47eb | |||
7dc3ed77c7 | |||
e1e8ffe7b5 | |||
aa3542c1cb | |||
ce6c8cddf1 | |||
91c3926eca | |||
53fe5f5116 | |||
cda59c4beb | |||
77ca2c8a63 | |||
50f2165c55 | |||
056f650b92 | |||
3d54a4aa26 | |||
3a89c2a61e | |||
570a567a8c | |||
96e107221b | |||
b8b9921914 | |||
76d9890eea | |||
8f68e395bd | |||
9874f596f6 | |||
984a59a9d7 | |||
4614e0873a | |||
bb01f90e1f | |||
e02b11fd1e | |||
f8a612c0e2 | |||
68beba732e | |||
104bc6f619 | |||
66cf1825ea | |||
d8e497dbb3 | |||
60502cfa8f | |||
1cc7d512e0 | |||
dae07dabf3 | |||
c5e0b9def8 | |||
b089dc90cd | |||
4caf10c12b | |||
964bdf5fc3 | |||
34a43bcb67 | |||
32cbb11bb6 | |||
ad21d76af2 | |||
d4be1af378 | |||
51de419c2d | |||
339cb925c7 | |||
cac2c0b01d | |||
f8a29c3000 | |||
e71f68d31b | |||
d431443dda | |||
4ada8c79ed | |||
843edfbf06 | |||
a42ef3b591 | |||
44d9294270 | |||
c472a8f547 | |||
aaab1e306c | |||
ae0a54a774 | |||
ae33622da2 | |||
81cc6b0836 | |||
34acf553a1 | |||
a2f41c13b7 | |||
c4a453fdbd | |||
672c0f4a07 | |||
05af370883 | |||
a6022b7cec | |||
72316fa2ce | |||
65523dcc94 | |||
255a75a646 | |||
df40665c5e | |||
61c31ed44a | |||
928d778fb1 | |||
2ff5291f48 | |||
cd270160d8 | |||
911b2f678f | |||
8dbcfc2ca8 | |||
2d6cb52dfa | |||
57e7b51704 | |||
f6241f7a5e | |||
2dcf4a7144 | |||
33e2155db1 | |||
8472cca81f | |||
39a87ffcd9 | |||
5ea2cdb83d | |||
4bb1a612f1 | |||
110e57ff6c | |||
f108ec82ea | |||
74a2f07c7d | |||
a921368dea | |||
b432c70076 | |||
fdd6031add | |||
06fc48b115 | |||
bf3333b97b | |||
e7c65f44cb | |||
0063cc8eb2 | |||
27e6fc3c73 | |||
83e0eb8b01 | |||
7f8b5ac6c0 | |||
38cd10d4e6 | |||
05f657c106 | |||
b150db0fb3 | |||
f0c0f07701 | |||
4a95ee8362 | |||
16e9b272c7 | |||
340abec016 | |||
615d66d493 | |||
9f906a779e | |||
3560f81d8e | |||
4230517e69 | |||
4f21ad5122 | |||
2696b95014 | |||
bb0201385f | |||
22b16de6b5 | |||
9232776577 | |||
5096119ac3 | |||
876977392b | |||
9efb19a9b5 | |||
a8b37e3932 | |||
0883c73e88 | |||
ef7e9d73a5 | |||
65ad0bae51 | |||
71c50e5f66 | |||
3fa3e05bfd | |||
f9f485c99e | |||
b7cdfbb4d2 | |||
af300e0276 | |||
a84fcd2c82 | |||
6fc43fa06a | |||
e7879ee365 | |||
46bb9bc2d7 | |||
4a7cd051c1 | |||
d2c4827b31 | |||
d9e34e1657 | |||
bac32dcba9 | |||
e385618d09 | |||
1df4aba8ec | |||
fdfdfd9f43 | |||
c0c8c8e21a | |||
236f00c810 | |||
afff85b44b | |||
1425382dbb | |||
76c18f3303 | |||
7de6f157b5 | |||
02322bb3c2 | |||
4913c9c0b0 | |||
d73d8994c0 | |||
aeb3e222c6 | |||
045a28b5de | |||
3970ed2560 | |||
5a22e8b926 | |||
4638bf7cf8 | |||
da16c1101c | |||
67eea7ac36 | |||
c8e31ae6d7 | |||
809b0bdeb8 | |||
01696ca89b | |||
1bc4994be6 | |||
22b9562629 | |||
409a3977db | |||
81fbc45488 | |||
9980a419f3 | |||
e0207cfac1 | |||
07ff28e9e5 | |||
6bf9dbf6d3 | |||
7173785b29 | |||
89e293cb5a | |||
9ac8dab8af | |||
d132ad8d02 | |||
4117cda79b | |||
26cbfbdb30 | |||
3b9df5868e | |||
8fcec81a67 | |||
5be50785fb | |||
3d3e70c718 | |||
f1051246ad | |||
0fc76a81b0 | |||
b6db097800 | |||
c414d92b86 | |||
0358838dfb | |||
704b67c846 | |||
9ecafbf8d5 | |||
aa93aed4ed | |||
5490daa0a1 | |||
8ca8185d41 | |||
89aa0760c6 | |||
3cee36a3db | |||
364e0c6268 | |||
728cb35c37 | |||
1fb90ab98c | |||
25b5b02302 | |||
365ac835eb | |||
d61741c28b | |||
8656eeec25 | |||
f5745fcf18 | |||
c7ba79644a | |||
70aed474dc | |||
f3edd4dc56 | |||
a4bd2f1be7 | |||
73a45e1b5c | |||
4259363169 | |||
fcc7f7aef8 | |||
9808376207 | |||
be617577c9 | |||
e30ee445a1 | |||
8d6b8d66cc | |||
88649a00b6 | |||
b122c2fbdf | |||
7d574375b4 | |||
466d431081 | |||
cd4520b051 | |||
0129c2c686 | |||
f55bdd6eae | |||
36a1159f38 | |||
98e2ddbb74 | |||
fa12ab2858 | |||
afeee5501c | |||
b7153fe3e0 | |||
2db2694660 | |||
e1642cf37c | |||
086d22f1a3 | |||
52882cba20 | |||
27c7fd9a97 | |||
5d16ba7e16 | |||
d8c6f9141d | |||
e9dc3d8c38 | |||
62418c1316 | |||
835aa575b0 | |||
b42d65c5e2 | |||
150d27cf95 | |||
95ed9551c0 | |||
0f2ec47b5f | |||
fe895cd782 | |||
11bf6a5c58 | |||
8bce87c082 | |||
61f38bf5a9 | |||
cbc7066620 | |||
509ed9101f | |||
191cfa0abe | |||
f712847061 | |||
b875a95bd5 | |||
45f57ebeb7 | |||
0309eba3c6 | |||
f0448b3cec | |||
a18af0b726 | |||
6aa5cb8d3e | |||
479906a9eb | |||
28a503ed5a | |||
b3c5a431d0 | |||
43cde3609a | |||
9d2d8fe1d7 | |||
1826dd46cb | |||
cf6423dbbe | |||
8b1851e652 | |||
5913864cbb | |||
c2ef6d700e | |||
76296507ff | |||
03d2158472 | |||
bb7b676ca2 | |||
e1988bf088 | |||
8ef1a209c9 | |||
28572af3ab | |||
c57e528447 | |||
74e325edb4 | |||
e68499bb09 | |||
8ce6868e46 | |||
f5cca7a98f | |||
b9aa0f46e4 | |||
6cd780ae99 | |||
f2be834d55 | |||
e55e18d5e9 | |||
66900da476 | |||
13ec32c79a | |||
1ff35edb99 | |||
9a969c1549 | |||
039e1fd829 | |||
fc41d4313f | |||
4bd4364a3a | |||
4b697dd9db | |||
6470277e43 | |||
2453390cc3 | |||
fa694dbc4c | |||
ea1222ac5b | |||
cbed2e88c6 | |||
4cce1dbd7f | |||
1710177af4 | |||
5c79a1a1e8 | |||
0f02ffdc9a | |||
83d76267f9 | |||
9ff43efdc5 | |||
21c21a423d | |||
e479b7d4be | |||
8f0398681e | |||
b112cf81c4 | |||
589124845a | |||
90d1d0f8b8 | |||
1e564a1b33 | |||
5fe10c19a1 | |||
de5c298d99 | |||
2a1f6dc544 | |||
fc21a6763d | |||
fd8e1b2ef7 | |||
0803f1bc1f | |||
9995b74217 | |||
2823451c9d | |||
0f4bcf3a9d | |||
74d55db3f0 | |||
2b35101b17 | |||
f538b8b10b | |||
fb012aa9e9 | |||
82bad7fec6 | |||
717922f380 | |||
3250dda7eb | |||
dffac3014e | |||
586149f3e7 | |||
088dd2c9f8 | |||
89395bd990 | |||
3144f40068 | |||
2fe24c108b | |||
bbfe3b278f | |||
c9fd8ba569 | |||
faa4f09a82 | |||
1ca2e61a85 | |||
7fa51e2a8e | |||
adbd2b853d | |||
0e6d92118f | |||
3796182eb1 | |||
570651a9f8 | |||
afbc414afe | |||
ca0aa7144c | |||
3e5b8840b4 | |||
f1da831e10 | |||
06281ccae9 | |||
509946d964 | |||
95f9da9d70 | |||
4a663e9e50 | |||
b02dec8157 | |||
c361b9517c | |||
78823760b3 | |||
d80006a024 | |||
561777dad6 | |||
c1895c4bc8 | |||
7b66466186 | |||
ef1c52ddc1 | |||
7bd4b9d9d9 | |||
39d3ee2b15 | |||
401467c700 | |||
c9769579e3 | |||
7663d4ef53 | |||
9c1bc262e5 | |||
c17914e0a1 | |||
7d91a15834 | |||
43c46841c1 | |||
fc6c6985e6 | |||
14c63810d6 | |||
6f0eebfbb8 | |||
c8bed64b91 | |||
e1762605e8 | |||
62fff64d87 | |||
7a39822813 | |||
de9e83fd61 | |||
80d31bbb10 | |||
45171d82a4 | |||
9e050060f3 | |||
ed5a1cdf1c | |||
a8bdc1495c | |||
1c54dea9c7 | |||
cee286b6ad | |||
34588356e8 | |||
b6d63a8381 | |||
dd8aebb0ab | |||
261ac78743 | |||
0437bd0584 | |||
46578d1447 | |||
5566cfd24f | |||
5869c25658 | |||
0b7c202f98 | |||
4db34effda | |||
5a5d4eadf1 | |||
b9016fad12 | |||
a1ee681135 | |||
219318a52e | |||
89edf58f41 | |||
ef3df36e55 | |||
6d2302bcc1 | |||
939fc70284 | |||
6695b10354 | |||
94adba72bf | |||
1063e8b929 | |||
c9abeace8f | |||
5bfdbf59a2 | |||
1cd347a54d | |||
76eb09eb04 | |||
a936cc26cc | |||
92beb3aa2a | |||
543eb7bb60 | |||
2034362eca | |||
7245db5cc8 | |||
8c4a4b7182 | |||
11ad019d47 | |||
e29d73251e | |||
c14fb92c16 | |||
e4b80703ae | |||
2b2533f465 | |||
8f632db2a0 | |||
daa536077d | |||
bf1df92303 | |||
5e97bcde7f | |||
aa7dee1011 | |||
54313af2f8 | |||
ab302a5160 | |||
7a607c6dd1 | |||
83ff4ab112 | |||
fb631187fa | |||
8770c9f6fb | |||
6e0d7b91bd | |||
6433704086 | |||
aea0efa1b6 | |||
8ffa2c1d65 | |||
47f9ab4027 | |||
0d521b64b6 | |||
0fb6c8b823 | |||
d2731c77a3 | |||
40a9dce7e0 | |||
2ba89b8a45 | |||
4cfb35c176 | |||
4107938921 | |||
6d794cdf4b | |||
29cd944c11 | |||
e5ec218e5f | |||
0ac20a3bc8 | |||
c38f292613 | |||
faa9ecf97c | |||
6e32679def | |||
649451f824 | |||
83a65f85ab | |||
8eb5c19187 | |||
a1888bf7c9 | |||
fa929b138e | |||
7eb9cb1840 | |||
7e5e9faf1c | |||
9a9a8ae836 | |||
f2cca765be | |||
e8ededc1d1 | |||
dc1fbb8ce4 | |||
2cf539c16e | |||
bcca99e38c | |||
abfa627246 | |||
f9a88b0f79 | |||
5b4cc53f8c | |||
251f07a9ae | |||
75f98b27a3 | |||
c9fbd7afdf | |||
f228fde6f7 | |||
20f3fb19af | |||
cfe627d348 | |||
753387c34c | |||
83e0599a37 | |||
b8de1955e3 | |||
ac5d60155d | |||
7535decd7f | |||
8f2bacfd53 | |||
771b1e7877 | |||
e8cf366616 | |||
3350e3997e | |||
dae77a50e6 | |||
bb5782eb92 | |||
26faaa307b | |||
510d8717b5 | |||
bc4cf95d0e | |||
97417737b6 | |||
47c6954044 | |||
7af5d991d9 | |||
cace18e535 | |||
778fe17f2b | |||
6aa8eff6ea | |||
d92d696c2b | |||
abdc755dc2 | |||
2c842afbf4 | |||
6c662b1370 | |||
1a1533cad8 | |||
59085f7dc3 | |||
8f30394f63 | |||
f49e45ca6c | |||
ef1e41fc12 | |||
d0f761b2ad | |||
5825428779 | |||
0ed7d1e9b1 | |||
9168bc3ec9 | |||
158719e325 | |||
2a63548f40 | |||
bf83c9b3e2 | |||
c236cbf17b | |||
6793f5e530 | |||
63ebc03df0 | |||
df6b9e192b | |||
a1b2bed3aa | |||
ca8a1c046a | |||
a4cd4fd14a | |||
328279d315 | |||
92c767859f | |||
3eafcd69a7 | |||
aa992840b6 | |||
b17a49c06b | |||
1f308a5730 | |||
8e98bba9c5 | |||
963e9ee501 | |||
8d7a55c2df | |||
5a3caf22d4 | |||
4cd027507d | |||
a771c56f6f | |||
80c1c6428a | |||
b5070f384a | |||
bae41e74eb | |||
76901d4135 | |||
5e817d68da | |||
e5b42d411e | |||
3c0b57eaa1 | |||
5d4c35ddbe | |||
6a02264af6 | |||
6be983ca1c | |||
ab28615999 | |||
8995d3db8d | |||
7b37489cdc | |||
5a69c60205 | |||
f6e76145c1 | |||
28fe6eadb5 | |||
0d0429983b | |||
379d08dd03 | |||
bf43b003b6 | |||
dbb6accfbe | |||
a2f46aa2dd | |||
eb715e82cb | |||
8a64d055b3 | |||
6c0356ff90 | |||
7cc7d979e4 | |||
a44284834a | |||
27e48851e6 | |||
c554bbb2d3 | |||
c45f2a282c | |||
623b1de8a0 | |||
9328aadfa3 | |||
4a15b31b04 | |||
01e8414162 | |||
3b11000532 | |||
f38c1c8714 | |||
664c992028 | |||
02174f79d1 | |||
5f40e32924 | |||
ef8de7b2be | |||
7c740445dc | |||
f95a15c841 | |||
193ab75ebe | |||
062ab63289 | |||
50c1056eb2 | |||
14d10d2f8f | |||
5403656e79 | |||
26aa129004 | |||
945adebe2e | |||
753cbbd18c | |||
bfccc004e8 | |||
987404a14e | |||
a41b6f73d4 | |||
7871a78c8f | |||
e5be13f064 | |||
c15131f8f6 | |||
15c887f413 | |||
01d7831abf | |||
182e5fdadb | |||
fd655437ab | |||
88869c1746 | |||
c92d0e5ee2 | |||
549fef5680 | |||
79affe1ea4 | |||
2aaf59adb3 | |||
f9eed62a45 | |||
f818ac46b8 | |||
1e309b67ef | |||
22c820771a | |||
ae9691e848 | |||
4fce0dcd9c | |||
77fb8280f1 | |||
2dd98c6054 | |||
9101200283 | |||
da8e0060d3 | |||
85da65ca15 | |||
4fe067363a | |||
6057de2a6d | |||
f476266e5e | |||
066706872d | |||
f98c403f06 | |||
5dcc2ab35c | |||
d80c5e1c02 | |||
7acc201797 | |||
57a52ba2dc | |||
c011129c43 | |||
2ed8b85143 | |||
5ac2fc33ff | |||
c169e6b896 | |||
497d29db39 | |||
2fbf0d6996 | |||
16246407c5 | |||
4a89bef87b | |||
a146257b13 | |||
340b18ca83 | |||
271f6da92e | |||
9d20bf25c6 | |||
6668fef61a | |||
a455a95aab | |||
7f7a691b25 | |||
7536971b34 | |||
8ca11ec705 | |||
00d63e48bb | |||
146da0f20f | |||
993ba5926e | |||
44424bcbe3 | |||
3570795469 | |||
a9d61526ef | |||
2a5116f49a | |||
5e0408474d | |||
e7b11f3eb1 | |||
c1e374ed51 | |||
eb690437c9 | |||
f076c1cbb7 | |||
de9854e773 | |||
150d8f5fda | |||
b0a5a76065 | |||
77e610f5a5 | |||
0689c82e98 | |||
ce94364c73 | |||
1ed10acc01 | |||
2c57d5f72d | |||
0d867c91d9 | |||
845920f8cc | |||
eff4ba01b9 | |||
bcf0922b8d | |||
d689c415e4 | |||
e9caa53af0 | |||
81eb0217ad | |||
0e23665de5 | |||
044843c8b7 | |||
9d63875802 | |||
9aea183f5c | |||
f39f93b2c8 | |||
ed2e6e4e28 | |||
74348afcf6 | |||
a101e18d60 | |||
d9686e0b6a | |||
5f38165b07 | |||
9d859cb4c2 | |||
7772eb153d | |||
e37725ac12 | |||
f3c95148a7 | |||
b9b3055984 | |||
464ebe70f1 | |||
4f76219456 | |||
18b0e84fbf | |||
1c6e33064b | |||
a74f71be0e | |||
848884f6cf | |||
4690bd0b19 | |||
f7286d29fa | |||
eb666d8b05 | |||
148c979727 | |||
00775b543e | |||
904af4de06 | |||
eb69d7cb69 | |||
0ffd30e147 | |||
eda66e63a5 | |||
6e276770eb | |||
4fb19ceaa5 | |||
1840ad218a | |||
93a191f122 | |||
c532ecc2e8 | |||
25eecf7039 | |||
85d350b48b | |||
ec1ee635d5 | |||
18bbce70b1 | |||
fa822634aa | |||
93a86324fb | |||
9d21062f5a | |||
a099637b7e | |||
4dfdd6f10b | |||
4f6640a6f1 | |||
65a2a9eb06 | |||
169361d459 | |||
0144eff60b | |||
4f5f8408cf | |||
32d664a77d | |||
4a8c365447 | |||
4b46091be2 | |||
5190e2ab30 | |||
adc6cf214a | |||
fb7daf426f | |||
0e9c88dfa2 | |||
233d374a4d | |||
15aa42d328 | |||
14ee2087dc | |||
1e134276ca | |||
d9168803ae | |||
0090c183bf | |||
f5d62b50ce | |||
098601e717 | |||
898ee9b7b7 | |||
1fd15fadf8 | |||
db88f67cda | |||
0f08ddd454 | |||
f8e2522a11 | |||
5143295711 | |||
a59537088b | |||
dde98fc8b6 | |||
c0e3bbbc61 | |||
bf778b5336 | |||
99c44b2592 | |||
6569e4a8bf | |||
3ebfbb123d | |||
8d2bb3d678 | |||
e81e06696a | |||
99ad1d9228 | |||
33c86db019 | |||
f085b4ca1e | |||
7558c43b8c | |||
e332439020 | |||
ea44151cb1 | |||
3167aade45 | |||
44709b1384 | |||
717d68c217 | |||
c218d7dc00 | |||
30d38ecae9 | |||
254b918408 | |||
1506c70329 | |||
729441dcc6 | |||
90b9b57865 | |||
29a41c6b19 | |||
64a25a242b | |||
7b4f8c118b | |||
54ee4ec653 | |||
59bcf6a0d0 | |||
6462a7162e | |||
e15028e94c | |||
81e1221e0d | |||
953fc9bb48 | |||
91cf18c5d1 | |||
642989cab2 | |||
d438b53c68 | |||
6e49b77b08 | |||
5f94ca30f1 | |||
98cf908918 | |||
cb39a59508 | |||
b68ef6cbd0 | |||
eff64f99f2 | |||
2b1028d636 | |||
1da2761654 | |||
7c2e64d9fe | |||
340d708b12 | |||
3f517420af | |||
05c9fcfe19 | |||
dcae1b7a2b | |||
d8570bc9a9 | |||
e3bfdaf38e | |||
5188e600a2 | |||
45b3514118 | |||
2813cd5ac2 | |||
2d2287e189 | |||
c3eff0246a | |||
c911fe4c85 | |||
87a515a549 | |||
0b2d294a19 | |||
b62a6eff64 | |||
dde62f13d5 | |||
146b012eff | |||
95897085ec | |||
e53a71f88f | |||
274ec27934 | |||
1454cc8434 | |||
76c86cb5ac | |||
ec4aca0dd4 | |||
9f27478f95 | |||
ec1bdffa1a | |||
258a0f794c | |||
6caafaea00 | |||
727e52b9e8 | |||
fdd3ab2a60 | |||
a84bd1f881 | |||
1f8823a3b7 | |||
1f4d94b3cc | |||
effbc6f571 | |||
8c8aa175a6 | |||
42b1f9a623 | |||
9e23648801 | |||
6dc4634495 | |||
4b7d73a4ee | |||
0358749b3b | |||
333a23c7e2 | |||
802bd27e50 | |||
0909eabfaf | |||
2f7a0898d6 | |||
e89dd393e2 | |||
76dc6db5c0 | |||
9b321d2ee1 | |||
f7a6160e67 | |||
156ce6a2e5 | |||
9dc217aaa3 | |||
ae736cd0e5 | |||
c5962f40eb | |||
aab5418166 | |||
f61d14a2f1 | |||
836e4c51f3 | |||
b39c64032d | |||
3726ae3fd1 | |||
98c2d52200 | |||
54097ba21c | |||
b8b7966d79 | |||
a1c9947821 | |||
469d4e5c7c | |||
bd0eb22392 | |||
3a543daf55 | |||
c061baaaee | |||
b9fab9bc1f | |||
6cf5072293 | |||
8db1dfb2ce | |||
a54a570a78 | |||
3cfdc063fc | |||
9b521ade27 | |||
313216443a | |||
318a5fd9d5 | |||
dd2e9ff7f3 | |||
27c4d8652e | |||
927f30e55e | |||
51c2e78a31 | |||
a0004dc775 | |||
db4f345b47 | |||
195d28d091 | |||
d7bbcb24c9 | |||
6b94f266bf | |||
203d6465a1 | |||
43bbf66e85 | |||
b665ed87b4 | |||
29fbef7ced | |||
f3ca25d104 | |||
e4b141dda5 | |||
843a35d2f9 | |||
1e2395bd44 | |||
ed81ce2877 | |||
12945916b7 | |||
4367a39b98 | |||
519b09fcad | |||
84f56ff314 | |||
3e70f0cbfb | |||
96f7bf05c8 | |||
7eb05a3637 | |||
ca08cd9ec1 | |||
a0ecf056d8 | |||
479fa23acb | |||
fada085f0e | |||
b913c0059a | |||
dac60ad76d | |||
4de7bb51ed | |||
0801957203 | |||
2d7ffdd603 | |||
576157351e | |||
86a9aa9e38 | |||
928ed201f6 | |||
ae4473d631 | |||
cbe2956ee4 | |||
aff3a6ed20 | |||
e6b18f6a95 | |||
93550ebed7 | |||
8fb4393981 | |||
2bfe0a939d | |||
cfbc4c699f | |||
c0edbc8631 | |||
34bc596ea6 | |||
e172156829 | |||
1c13dd95a0 | |||
c836371b7c | |||
7426110e8a | |||
e84f5bec0b |
@ -1,16 +1,24 @@
|
|||||||
---
|
---
|
||||||
Checks: '*,
|
Checks: '*,
|
||||||
|
-altera-*,
|
||||||
-android-cloexec-fopen,
|
-android-cloexec-fopen,
|
||||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||||
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
||||||
-fuchsia*,
|
-fuchsia*,
|
||||||
-readability-else-after-return,
|
-readability-else-after-return,
|
||||||
-readability-avoid-const-params-in-decls,
|
-readability-avoid-const-params-in-decls,
|
||||||
|
-readability-identifier-length,
|
||||||
-cppcoreguidelines-pro-bounds-constant-array-index,
|
-cppcoreguidelines-pro-bounds-constant-array-index,
|
||||||
-cppcoreguidelines-pro-type-reinterpret-cast,
|
-cppcoreguidelines-pro-type-reinterpret-cast,
|
||||||
-llvm-header-guard,
|
-llvm-header-guard,
|
||||||
|
-modernize-use-nodiscard,
|
||||||
|
-misc-non-private-member-variables-in-classes,
|
||||||
-readability-static-accessed-through-instance,
|
-readability-static-accessed-through-instance,
|
||||||
-readability-braces-around-statements,
|
-readability-braces-around-statements,
|
||||||
|
-readability-isolate-declaration,
|
||||||
|
-readability-implicit-bool-conversion,
|
||||||
|
-readability-identifier-length,
|
||||||
|
-readability-identifier-naming,
|
||||||
-hicpp-signed-bitwise,
|
-hicpp-signed-bitwise,
|
||||||
-hicpp-no-array-decay,
|
-hicpp-no-array-decay,
|
||||||
-hicpp-braces-around-statements,
|
-hicpp-braces-around-statements,
|
||||||
@ -18,7 +26,6 @@ Checks: '*,
|
|||||||
-google-readability-todo,
|
-google-readability-todo,
|
||||||
-google-readability-braces-around-statements,
|
-google-readability-braces-around-statements,
|
||||||
-modernize-use-trailing-return-type,
|
-modernize-use-trailing-return-type,
|
||||||
-readability-isolate-declaration,
|
|
||||||
-llvmlibc-*'
|
-llvmlibc-*'
|
||||||
|
|
||||||
HeaderFilterRegex: \.h
|
HeaderFilterRegex: \.h
|
||||||
|
38
.github/workflows/cmake.yml
vendored
Normal file
38
.github/workflows/cmake.yml
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
name: CMake
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
env:
|
||||||
|
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||||
|
BUILD_TYPE: Debug
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
|
||||||
|
# You can convert this to a matrix build if you need cross-platform coverage.
|
||||||
|
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Configure and build using cmake
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: awalsh128/cache-apt-pkgs-action@latest
|
||||||
|
with:
|
||||||
|
packages: libzmq3-dev libhdf5-dev qtbase5-dev qt5-qmake libqt5svg5-dev
|
||||||
|
version: 1.0
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||||
|
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||||
|
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DSLS_USE_TESTS=ON -DSLS_USE_HDF5=ON -DSLS_USE_GUI=ON -DSLS_USE_MOENCH=ON -DSLS_USE_PYTHON=ON
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
# Build your program with the given configuration
|
||||||
|
run: cmake --build ${{github.workspace}}/build -j2 --config ${{env.BUILD_TYPE}}
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
working-directory: ${{github.workspace}}/build
|
||||||
|
# Execute tests defined by the CMake configuration.
|
||||||
|
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
||||||
|
run: ctest -C ${{env.BUILD_TYPE}} -j1
|
||||||
|
|
||||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -9,7 +9,7 @@ bin/
|
|||||||
*.o
|
*.o
|
||||||
*.so
|
*.so
|
||||||
.*
|
.*
|
||||||
build
|
build/
|
||||||
RELEASE.txt
|
RELEASE.txt
|
||||||
Testing/
|
Testing/
|
||||||
|
|
||||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
|||||||
[submodule "python/pybind11"]
|
|
||||||
path = libs/pybind11
|
|
||||||
url = https://github.com/pybind/pybind11.git
|
|
||||||
|
315
CMakeLists.txt
Executable file → Normal file
315
CMakeLists.txt
Executable file → Normal file
@ -1,13 +1,62 @@
|
|||||||
cmake_minimum_required(VERSION 3.12)
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
cmake_minimum_required(VERSION 3.14)
|
||||||
project(slsDetectorPackage)
|
project(slsDetectorPackage)
|
||||||
set(PROJECT_VERSION 5.1.0)
|
set(PROJECT_VERSION 7.0.0)
|
||||||
include(CheckIPOSupported)
|
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
||||||
|
|
||||||
cmake_policy(SET CMP0074 NEW)
|
cmake_policy(SET CMP0074 NEW)
|
||||||
include(cmake/project_version.cmake)
|
|
||||||
|
|
||||||
# Include additional modules that are used unconditionally
|
if (${CMAKE_VERSION} VERSION_GREATER "3.24")
|
||||||
|
cmake_policy(SET CMP0135 NEW) #Fetch content download timestamp
|
||||||
|
endif()
|
||||||
|
include(cmake/project_version.cmake)
|
||||||
|
include(cmake/SlsAddFlag.cmake)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Using FetchContent to get libzmq
|
||||||
|
include(FetchContent)
|
||||||
|
option(SLS_FETCH_ZMQ_FROM_GITHUB "Fetch zmq from github" OFF)
|
||||||
|
option(SLS_FETCH_PYBIND11_FROM_GITHUB "Fetch pybind11 from github" OFF)
|
||||||
|
|
||||||
|
if(SLS_FETCH_ZMQ_FROM_GITHUB)
|
||||||
|
# Opt in to pull down a zmq version from github instead of
|
||||||
|
# using the bundled verison
|
||||||
|
FetchContent_Declare(
|
||||||
|
libzmq
|
||||||
|
GIT_REPOSITORY https://github.com/zeromq/libzmq.git
|
||||||
|
GIT_TAG v4.3.4
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
# Standard behaviour use libzmq included in this repo (libs/libzmq)
|
||||||
|
FetchContent_Declare(
|
||||||
|
libzmq
|
||||||
|
URL ${CMAKE_SOURCE_DIR}/libs/libzmq/libzmq-4.3.4.tar.gz
|
||||||
|
URL_HASH MD5=cc20b769ac10afa352e5ed2769bb23b3
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Disable unwanted options from libzmq
|
||||||
|
set(BUILD_TESTS OFF CACHE BOOL "Switch off libzmq test build")
|
||||||
|
set(BUILD_SHARED OFF CACHE BOOL "Switch off libzmq shared libs")
|
||||||
|
set(WITH_PERF_TOOL OFF CACHE BOOL "")
|
||||||
|
set(ENABLE_CPACK OFF CACHE BOOL "")
|
||||||
|
set(ENABLE_CLANG OFF CACHE BOOL "")
|
||||||
|
set(ENABLE_CURVE OFF CACHE BOOL "")
|
||||||
|
set(ENABLE_DRAFTS OFF CACHE BOOL "")
|
||||||
|
|
||||||
|
# Using GetProperties and Populate to be able to exclude zmq
|
||||||
|
# from install (not possible with FetchContent_MakeAvailable(libzmq))
|
||||||
|
FetchContent_GetProperties(libzmq)
|
||||||
|
if(NOT libzmq_POPULATED)
|
||||||
|
FetchContent_Populate(libzmq)
|
||||||
|
add_subdirectory(${libzmq_SOURCE_DIR} ${libzmq_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
# If conda build, always set lib dir to 'lib'
|
# If conda build, always set lib dir to 'lib'
|
||||||
@ -21,7 +70,7 @@ string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
|
|||||||
|
|
||||||
# Set targets export name (used by slsDetectorPackage and dependencies)
|
# Set targets export name (used by slsDetectorPackage and dependencies)
|
||||||
set(TARGETS_EXPORT_NAME "${PROJECT_NAME_LOWER}-targets")
|
set(TARGETS_EXPORT_NAME "${PROJECT_NAME_LOWER}-targets")
|
||||||
#set(namespace "${PROJECT_NAME}::")
|
set(namespace "sls::")
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||||
|
|
||||||
@ -32,6 +81,8 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
|||||||
set(SLS_MASTER_PROJECT ON)
|
set(SLS_MASTER_PROJECT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
option(SLS_USE_HDF5 "HDF5 File format" OFF)
|
option(SLS_USE_HDF5 "HDF5 File format" OFF)
|
||||||
option(SLS_BUILD_SHARED_LIBRARIES "Build shared libaries" ON)
|
option(SLS_BUILD_SHARED_LIBRARIES "Build shared libaries" ON)
|
||||||
option(SLS_USE_TEXTCLIENT "Text Client" ON)
|
option(SLS_USE_TEXTCLIENT "Text Client" ON)
|
||||||
@ -44,14 +95,56 @@ option(SLS_USE_TESTS "TESTS" OFF)
|
|||||||
option(SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF)
|
option(SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF)
|
||||||
option(SLS_USE_SANITIZER "Sanitizers for debugging" OFF)
|
option(SLS_USE_SANITIZER "Sanitizers for debugging" OFF)
|
||||||
option(SLS_USE_PYTHON "Python bindings" OFF)
|
option(SLS_USE_PYTHON "Python bindings" OFF)
|
||||||
|
option(SLS_INSTALL_PYTHONEXT "Install the python extension in the install tree under CMAKE_INSTALL_PREFIX/python/" OFF)
|
||||||
option(SLS_USE_CTBGUI "ctb GUI" OFF)
|
option(SLS_USE_CTBGUI "ctb GUI" OFF)
|
||||||
option(SLS_BUILD_DOCS "docs" OFF)
|
option(SLS_BUILD_DOCS "docs" OFF)
|
||||||
option(SLS_BUILD_EXAMPLES "examples" OFF)
|
option(SLS_BUILD_EXAMPLES "examples" OFF)
|
||||||
option(SLS_TUNE_LOCAL "tune to local machine" OFF)
|
option(SLS_TUNE_LOCAL "tune to local machine" OFF)
|
||||||
option(SLS_DEVEL_HEADERS "install headers for devel" OFF)
|
option(SLS_DEVEL_HEADERS "install headers for devel" OFF)
|
||||||
option(SLS_USE_MOENCH "compile zmq and post processing for Moench" OFF)
|
option(SLS_USE_MOENCH "compile zmq and post processing for Moench" OFF)
|
||||||
|
option(SLS_USE_JUNGFRAU "compile post processing for Jungfrau" OFF)
|
||||||
|
|
||||||
|
#Convenience option to switch off defaults when building Moench binaries only
|
||||||
|
option(SLS_BUILD_ONLY_MOENCH "compile only Moench" OFF)
|
||||||
|
if(SLS_BUILD_ONLY_MOENCH)
|
||||||
|
message(STATUS "Build MOENCH binaries only!")
|
||||||
|
set(SLS_BUILD_SHARED_LIBRARIES OFF CACHE BOOL "Disabled for MOENCH_ONLY" FORCE)
|
||||||
|
set(SLS_USE_TEXTCLIENT OFF CACHE BOOL "Disabled for MOENCH_ONLY" FORCE)
|
||||||
|
set(SLS_USE_DETECTOR OFF CACHE BOOL "Disabled for MOENCH_ONLY" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER OFF CACHE BOOL "Disabled for MOENCH_ONLY" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER_BINARIES OFF CACHE BOOL "Disabled for MOENCH_ONLY" FORCE)
|
||||||
|
set(SLS_USE_MOENCH ON CACHE BOOL "Enable" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#Convenience option to switch off defaults when building Jungfrau binaries only
|
||||||
|
option(SLS_BUILD_ONLY_JUNGFRAU "compile only Jungfrau" OFF)
|
||||||
|
if(SLS_BUILD_ONLY_JUNGFRAU)
|
||||||
|
message(STATUS "Build JUNGFRAU binaries only!")
|
||||||
|
set(SLS_BUILD_SHARED_LIBRARIES OFF CACHE BOOL "Disabled for JUNGFRAU_ONLY" FORCE)
|
||||||
|
set(SLS_USE_TEXTCLIENT OFF CACHE BOOL "Disabled for JUNGFRAU_ONLY" FORCE)
|
||||||
|
set(SLS_USE_DETECTOR OFF CACHE BOOL "Disabled for JUNGFRAU_ONLY" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER OFF CACHE BOOL "Disabled for JUNGFRAU_ONLY" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER_BINARIES OFF CACHE BOOL "Disabled for JUNGFRAU_ONLY" FORCE)
|
||||||
|
set(SLS_USE_JUNGFRAU ON CACHE BOOL "Enable" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
option(SLS_EXT_BUILD "external build of part of the project" OFF)
|
||||||
|
if(SLS_EXT_BUILD)
|
||||||
|
message(STATUS "External build using already installed libraries")
|
||||||
|
set(SLS_BUILD_SHARED_LIBRARIES OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_TEXTCLIENT OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_DETECTOR OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_USE_RECEIVER_BINARIES OFF CACHE BOOL "Should already exist" FORCE)
|
||||||
|
set(SLS_MASTER_PROJECT OFF CACHE BOOL "No master proj in case of extbuild" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#Maybe have an option guarding this?
|
||||||
|
set(SLS_INTERNAL_RAPIDJSON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs/rapidjson)
|
||||||
|
|
||||||
|
set(SLS_INTERNAL_QWT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs/qwt-6.1.5)
|
||||||
|
|
||||||
# set(ClangFormat_BIN_NAME clang-format)
|
|
||||||
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
||||||
"libs/"
|
"libs/"
|
||||||
"slsDetectorCalibration/"
|
"slsDetectorCalibration/"
|
||||||
@ -62,11 +155,6 @@ set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
|||||||
${CMAKE_BINARY_DIR})
|
${CMAKE_BINARY_DIR})
|
||||||
find_package(ClangFormat)
|
find_package(ClangFormat)
|
||||||
|
|
||||||
#Enable LTO if available
|
|
||||||
check_ipo_supported(RESULT SLS_LTO_AVAILABLE)
|
|
||||||
message(STATUS "SLS_LTO_AVAILABLE:" ${SLS_LTO_AVAILABLE})
|
|
||||||
|
|
||||||
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
@ -75,70 +163,77 @@ if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
#Add two fake libraries to manage options
|
#Enable LTO if available
|
||||||
add_library(slsProjectOptions INTERFACE)
|
include(CheckIPOSupported)
|
||||||
add_library(slsProjectWarnings INTERFACE)
|
check_ipo_supported(RESULT SLS_LTO_AVAILABLE)
|
||||||
target_compile_features(slsProjectOptions INTERFACE cxx_std_11)
|
if((CMAKE_BUILD_TYPE STREQUAL "Release") AND SLS_LTO_AVAILABLE)
|
||||||
target_compile_options(slsProjectWarnings INTERFACE
|
message(STATUS "Building with link time optimization")
|
||||||
-Wall
|
else()
|
||||||
-Wextra
|
message(STATUS "Building without link time optimization")
|
||||||
-Wno-unused-parameter #Needs to be slowly mitigated
|
endif()
|
||||||
# -Wold-style-cast
|
|
||||||
-Wnon-virtual-dtor
|
|
||||||
-Woverloaded-virtual
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Wformat=2
|
|
||||||
-Wredundant-decls
|
|
||||||
# -Wconversion
|
|
||||||
-Wvla
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Werror=return-type
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
#Settings for C code
|
|
||||||
add_library(slsProjectCSettings INTERFACE)
|
|
||||||
target_compile_features(slsProjectCSettings INTERFACE c_std_99)
|
|
||||||
target_compile_options(slsProjectCSettings INTERFACE
|
|
||||||
-Wall
|
|
||||||
-Wextra
|
|
||||||
-Wno-unused-parameter
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Wformat=2
|
|
||||||
-Wredundant-decls
|
|
||||||
-Wdouble-promotion
|
|
||||||
-Werror=return-type
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#Testing for minimum version for compilers
|
if(SLS_EXT_BUILD)
|
||||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
# Find ourself in case of external build
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.2)
|
find_package(slsDetectorPackage ${PROJECT_VERSION} REQUIRED)
|
||||||
message(FATAL_ERROR "Clang version must be at least 3.2!")
|
endif()
|
||||||
endif()
|
|
||||||
target_compile_options(slsProjectWarnings INTERFACE -Wshadow) #Clag does not warn on constructor
|
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
|
||||||
message(FATAL_ERROR "GCC version must be at least 4.8!")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
|
|
||||||
|
|
||||||
|
# slsProjectOptions and slsProjectWarnings are used
|
||||||
|
# to control options for the libraries
|
||||||
|
if(NOT TARGET slsProjectOptions)
|
||||||
|
add_library(slsProjectOptions INTERFACE)
|
||||||
|
target_compile_features(slsProjectOptions INTERFACE cxx_std_11)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT TARGET slsProjectWarnings)
|
||||||
|
add_library(slsProjectWarnings INTERFACE)
|
||||||
|
target_compile_options(slsProjectWarnings INTERFACE
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wno-unused-parameter
|
||||||
|
# -Wold-style-cast
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wformat=2
|
||||||
|
-Wredundant-decls
|
||||||
|
# -Wconversion
|
||||||
|
-Wvla
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Werror=return-type
|
||||||
|
)
|
||||||
|
# Add or disable warnings depending on if the compiler supports them
|
||||||
|
# The function checks internally and sets HAS_warning-name
|
||||||
|
sls_enable_cxx_warning("-Wnull-dereference")
|
||||||
|
sls_enable_cxx_warning("-Wduplicated-cond")
|
||||||
|
sls_disable_cxx_warning("-Wclass-memaccess")
|
||||||
|
|
||||||
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
target_compile_options(slsProjectWarnings INTERFACE
|
target_compile_options(slsProjectWarnings INTERFACE
|
||||||
-Wno-missing-field-initializers)
|
-Wno-missing-field-initializers)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
|
|
||||||
target_compile_options(slsProjectWarnings INTERFACE
|
|
||||||
-Wno-misleading-indentation # mostly in rapidjson remove using clang format
|
|
||||||
-Wduplicated-cond
|
|
||||||
-Wnull-dereference )
|
|
||||||
|
|
||||||
endif()
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0)
|
|
||||||
target_compile_options(slsProjectWarnings INTERFACE
|
|
||||||
-Wno-class-memaccess )
|
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if (NOT TARGET slsProjectCSettings)
|
||||||
|
#Settings for C code
|
||||||
|
add_library(slsProjectCSettings INTERFACE)
|
||||||
|
target_compile_options(slsProjectCSettings INTERFACE
|
||||||
|
-std=gnu99 #fixed
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wno-unused-parameter
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wformat=2
|
||||||
|
-Wredundant-decls
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Werror=return-type
|
||||||
|
)
|
||||||
|
sls_disable_c_warning("-Wstringop-truncation")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
@ -154,68 +249,28 @@ if(SLS_TUNE_LOCAL)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
#rapidjson
|
if(SLS_MASTER_PROJECT)
|
||||||
add_library(rapidjson INTERFACE)
|
install(TARGETS slsProjectOptions slsProjectWarnings
|
||||||
target_include_directories(rapidjson INTERFACE
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libs/rapidjson>
|
|
||||||
)
|
|
||||||
|
|
||||||
# Install fake the libraries
|
|
||||||
install(TARGETS slsProjectOptions slsProjectWarnings rapidjson
|
|
||||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
set(CMAKE_INSTALL_RPATH $ORIGIN)
|
set(CMAKE_INSTALL_RPATH $ORIGIN)
|
||||||
# set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
|
||||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
||||||
|
|
||||||
|
|
||||||
set(ZeroMQ_HINT "" CACHE STRING "Hint where ZeroMQ could be found")
|
|
||||||
#Adapted from: https://github.com/zeromq/cppzmq/
|
|
||||||
if (NOT TARGET libzmq)
|
|
||||||
if(ZeroMQ_HINT)
|
|
||||||
message(STATUS "Looking for ZeroMQ in: ${ZeroMQ_HINT}")
|
|
||||||
find_package(ZeroMQ 4
|
|
||||||
NO_DEFAULT_PATH
|
|
||||||
HINTS ${ZeroMQ_DIR}
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
find_package(ZeroMQ 4 QUIET)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# libzmq autotools install: fallback to pkg-config
|
|
||||||
if(NOT ZeroMQ_FOUND)
|
|
||||||
message(STATUS "CMake libzmq package not found, trying again with pkg-config (normal install of zeromq)")
|
|
||||||
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/libzmq-pkg-config)
|
|
||||||
find_package(ZeroMQ 4 REQUIRED)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# TODO "REQUIRED" above should already cause a fatal failure if not found, but this doesn't seem to work
|
|
||||||
if(NOT ZeroMQ_FOUND)
|
|
||||||
message(FATAL_ERROR "ZeroMQ was not found, neither as a CMake package nor via pkg-config")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ZeroMQ_FOUND AND NOT TARGET libzmq)
|
|
||||||
message(FATAL_ERROR "ZeroMQ version not supported!")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (SLS_USE_TESTS)
|
if (SLS_USE_TESTS)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
endif(SLS_USE_TESTS)
|
endif(SLS_USE_TESTS)
|
||||||
|
|
||||||
|
|
||||||
|
if(NOT SLS_EXT_BUILD)
|
||||||
|
add_subdirectory(slsSupportLib)
|
||||||
# Common functionallity to detector and receiver
|
endif()
|
||||||
add_subdirectory(slsSupportLib)
|
|
||||||
|
|
||||||
if (SLS_USE_DETECTOR OR SLS_USE_TEXTCLIENT)
|
if (SLS_USE_DETECTOR OR SLS_USE_TEXTCLIENT)
|
||||||
add_subdirectory(slsDetectorSoftware)
|
add_subdirectory(slsDetectorSoftware)
|
||||||
@ -226,6 +281,7 @@ if (SLS_USE_RECEIVER)
|
|||||||
endif (SLS_USE_RECEIVER)
|
endif (SLS_USE_RECEIVER)
|
||||||
|
|
||||||
if (SLS_USE_GUI)
|
if (SLS_USE_GUI)
|
||||||
|
add_subdirectory(libs/qwt)
|
||||||
add_subdirectory(slsDetectorGui)
|
add_subdirectory(slsDetectorGui)
|
||||||
endif (SLS_USE_GUI)
|
endif (SLS_USE_GUI)
|
||||||
|
|
||||||
@ -238,8 +294,23 @@ if (SLS_USE_INTEGRATION_TESTS)
|
|||||||
endif (SLS_USE_INTEGRATION_TESTS)
|
endif (SLS_USE_INTEGRATION_TESTS)
|
||||||
|
|
||||||
if (SLS_USE_PYTHON)
|
if (SLS_USE_PYTHON)
|
||||||
find_package (Python 3.6 COMPONENTS Interpreter Development)
|
find_package (Python 3.6 COMPONENTS Interpreter Development.Module)
|
||||||
add_subdirectory(libs/pybind11)
|
if(SLS_FETCH_PYBIND11_FROM_GITHUB)
|
||||||
|
FetchContent_Declare(
|
||||||
|
pybind11
|
||||||
|
GIT_REPOSITORY https://github.com/pybind/pybind11
|
||||||
|
GIT_TAG v2.11.0
|
||||||
|
)
|
||||||
|
|
||||||
|
else()
|
||||||
|
FetchContent_Declare(
|
||||||
|
pybind11
|
||||||
|
URL ${CMAKE_SOURCE_DIR}/libs/pybind11/v2.11.0.tar.gz
|
||||||
|
URL_HASH MD5=90c4946e87c64d8d8fc0ae4edf35d780
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
FetchContent_MakeAvailable(pybind11)
|
||||||
|
|
||||||
add_subdirectory(python)
|
add_subdirectory(python)
|
||||||
endif(SLS_USE_PYTHON)
|
endif(SLS_USE_PYTHON)
|
||||||
|
|
||||||
@ -259,16 +330,18 @@ if(SLS_BUILD_DOCS)
|
|||||||
add_subdirectory(docs)
|
add_subdirectory(docs)
|
||||||
endif(SLS_BUILD_DOCS)
|
endif(SLS_BUILD_DOCS)
|
||||||
|
|
||||||
|
|
||||||
if(SLS_USE_MOENCH)
|
if(SLS_USE_MOENCH)
|
||||||
|
add_subdirectory(slsDetectorCalibration/tiffio)
|
||||||
add_subdirectory(slsDetectorCalibration/moenchExecutables)
|
add_subdirectory(slsDetectorCalibration/moenchExecutables)
|
||||||
endif(SLS_USE_MOENCH)
|
endif(SLS_USE_MOENCH)
|
||||||
|
|
||||||
|
if(SLS_USE_JUNGFRAU)
|
||||||
|
add_subdirectory(slsDetectorCalibration/tiffio)
|
||||||
|
add_subdirectory(slsDetectorCalibration/jungfrauExecutables)
|
||||||
|
endif(SLS_USE_JUNGFRAU)
|
||||||
|
|
||||||
if(SLS_MASTER_PROJECT)
|
if(SLS_MASTER_PROJECT)
|
||||||
# Set install dir CMake packages
|
|
||||||
set(CMAKE_INSTALL_DIR "share/cmake/${PROJECT_NAME}")
|
set(CMAKE_INSTALL_DIR "share/cmake/${PROJECT_NAME}")
|
||||||
# Set the list of exported targets
|
|
||||||
set(PROJECT_LIBRARIES slsSupportShared slsDetectorShared slsReceiverShared)
|
set(PROJECT_LIBRARIES slsSupportShared slsDetectorShared slsReceiverShared)
|
||||||
# Generate and install package config file and version
|
|
||||||
include(cmake/package_config.cmake)
|
include(cmake/package_config.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
17
COPYING
Normal file
17
COPYING
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
The SLS Detector Package is provided under:
|
||||||
|
|
||||||
|
SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
|
||||||
|
Being under the terms of the GNU Lesser General Public License version 3 or later,
|
||||||
|
according with:
|
||||||
|
|
||||||
|
LICENSES/LGPL-3.0
|
||||||
|
|
||||||
|
Source code under the Apache 2.0 License have the SPDX Identifier and are
|
||||||
|
according with:
|
||||||
|
|
||||||
|
LICENSES/ThirdParty/Apache-2.0
|
||||||
|
|
||||||
|
All contributions to the SLS Detector Package are subject to this COPYING file.
|
||||||
|
|
||||||
|
|
@ -1,3 +1,17 @@
|
|||||||
|
Valid-License-Identifier: GPL-3.0
|
||||||
|
Valid-License-Identifier: GPL-3.0+
|
||||||
|
SPDX-URL: https://spdx.org/licenses/GPL-3.0-or-later.html
|
||||||
|
Usage-Guide:
|
||||||
|
To use this license in source code, put one of the following SPDX
|
||||||
|
tag/value pairs into a comment according to the placement
|
||||||
|
guidelines in the licensing rules documentation.
|
||||||
|
For 'GNU Library General Public License (LGPL) version 3.0 only' use:
|
||||||
|
SPDX-License-Identifier: GPL-3.0
|
||||||
|
For 'GNU Library General Public License (LGPL) version 3.0 or any later
|
||||||
|
version' use:
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
License-Text:
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
@ -1,3 +1,17 @@
|
|||||||
|
Valid-License-Identifier: LGPL-3.0
|
||||||
|
Valid-License-Identifier: LGPL-3.0+
|
||||||
|
SPDX-URL: https://spdx.org/licenses/LGPL-3.0-or-later.html
|
||||||
|
Usage-Guide:
|
||||||
|
To use this license in source code, put one of the following SPDX
|
||||||
|
tag/value pairs into a comment according to the placement
|
||||||
|
guidelines in the licensing rules documentation.
|
||||||
|
For 'GNU Library General Public License (LGPL) version 3.0 only' use:
|
||||||
|
SPDX-License-Identifier: LGPL-3.0
|
||||||
|
For 'GNU Library General Public License (LGPL) version 3.0 or any later
|
||||||
|
version' use:
|
||||||
|
SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
License-Text:
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
210
LICENSES/Third Party/Apache-2.0
Normal file
210
LICENSES/Third Party/Apache-2.0
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
Valid-License-Identifier: Apache-2.0
|
||||||
|
SPDX-URL: https://spdx.org/licenses/Apache-2.0.html
|
||||||
|
Usage-Guide:
|
||||||
|
To use this license in source code, put one of the following SPDX
|
||||||
|
tag/value pairs into a comment according to the placement
|
||||||
|
guidelines in the licensing rules documentation.
|
||||||
|
SPDX-License-Identifier: Apache-2.0
|
||||||
|
License-Text:
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
279
README.md
279
README.md
@ -1,102 +1,233 @@
|
|||||||
### Note
|
## Dependencies
|
||||||
|
Before building from source make sure that you have the [software wiki](https://slsdetectorgroup.github.io/devdoc/dependencies.html) installed. If installing using conda, conda will manage the dependencies. Avoid also installing packages with pip.
|
||||||
|
|
||||||
Please do not update to any xxxx.xx.xx.dev0 tags. They are not releases, but tags for internal usage.
|
## Documentaion
|
||||||
Use only releases with tags such as x.x.x or x.x.x-rcx.
|
Detailed documentation can be found in the [software wiki](https://slsdetectorgroup.github.io/devdoc/index.html) and on the [official site](https://www.psi.ch/en/detectors/software).
|
||||||
|
|
||||||
### Documentation
|
## Installation
|
||||||
##### 5.0.0 - Latest Release
|
|
||||||
Detailed documentation on the latest release can be found in the [software wiki](https://slsdetectorgroup.github.io/devdoc/index.html) and on the [official site](https://www.psi.ch/en/detectors/software).
|
|
||||||
|
|
||||||
##### Older Releases
|
### 1. Install binaries using conda
|
||||||
Documentation is found in the package.
|
Conda is not only useful to manage python environments but can also
|
||||||
|
be used as a user space package manager. Dates in the tag (for eg. 2020.07.23.dev0)
|
||||||
|
are from the developer branch. Please use released tags for stability.
|
||||||
|
|
||||||
|
We have three different packages available:
|
||||||
|
* **slsdetlib** shared libraries and command line utilities
|
||||||
|
* **slsdetgui** GUI
|
||||||
|
* **slsdet** Python bindings
|
||||||
|
|
||||||
### Binaries
|
|
||||||
Binaries for the slsDetectorPackage are available through conda.
|
|
||||||
```
|
```
|
||||||
#Add conda channels
|
#Add channels for dependencies and our library
|
||||||
conda config --add channels conda-forge
|
conda config --add channels conda-forge
|
||||||
conda config --add channels slsdetectorgroup
|
conda config --add channels slsdetectorgroup
|
||||||
conda config --set channel_priority strict
|
conda config --set channel_priority strict
|
||||||
|
|
||||||
conda install slsdetlib #only shared lib and command line
|
#create and activate an environment with our library
|
||||||
conda install slsdet #python bindings (includes slsdetlib)
|
#replace 6.1.1 with the required tag
|
||||||
conda install slsdetgui #gui (includes qt4)
|
conda create -n myenv slsdetlib=6.1.1
|
||||||
|
conda activate myenv
|
||||||
#Install specific version
|
|
||||||
conda install slsdet=2020.03.02.dev0 #developer version from 3 March 2020
|
|
||||||
|
|
||||||
|
#ready to use
|
||||||
|
sls_detector_get exptime
|
||||||
|
etc ...
|
||||||
```
|
```
|
||||||
|
|
||||||
### Source code
|
|
||||||
One can also obtain the source code from this repository and compile.
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
# List available versions
|
||||||
|
# lib and binaries
|
||||||
|
conda search slsdetlib
|
||||||
|
# python
|
||||||
|
conda search slsdet
|
||||||
|
# gui
|
||||||
|
conda search slsdetgui
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Build from source
|
||||||
|
|
||||||
|
##### 2.1 Download Source Code from github
|
||||||
|
```
|
||||||
|
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch 7.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Pybind for Python**<br>
|
||||||
|
* **v7.0.0+**:
|
||||||
|
pybind11 packaged into 'libs/pybind'. No longer a submodule. No need for "recursive" or "submodule update".
|
||||||
|
|
||||||
|
* **Older versions**:
|
||||||
|
pybind11 is a submodule. Must be cloned using "recursive" and updated when switching between versions using the following commands.
|
||||||
|
|
||||||
```
|
```
|
||||||
#### Dependencies
|
# clone using recursive to get pybind11 submodule
|
||||||
|
git clone --recursive https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
||||||
|
|
||||||
Refer [this page](https://slsdetectorgroup.github.io/devdoc/dependencies.html) for dependencies.
|
# update submodule when switching between releases
|
||||||
|
cd slsDetectorPackage
|
||||||
|
git submodule update --init
|
||||||
#### Compilation
|
|
||||||
|
|
||||||
Compiling can be done in two ways. Either with the convenience script
|
|
||||||
cmk.sh or directly with cmake for more control.
|
|
||||||
|
|
||||||
**1. Compile using script cmk.sh**<br>
|
|
||||||
|
|
||||||
These are mainly aimed at those not familiar with using ccmake and cmake.
|
|
||||||
```
|
```
|
||||||
The binaries are generated in slsDetectorPackage/build/bin directory.
|
|
||||||
|
|
||||||
Usage: ./cmk.sh [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
##### 2.2 Build from source
|
||||||
-[no option]: only make
|
|
||||||
-c: Clean
|
|
||||||
-b: Builds/Rebuilds CMake files normal mode
|
###### Build using CMake
|
||||||
-p: Builds/Rebuilds Python API
|
|
||||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
```
|
||||||
-d: HDF5 Custom Directory
|
# outside slsDetecorPackage folder
|
||||||
-k: CMake command
|
mkdir build && cd build
|
||||||
-l: Install directory
|
|
||||||
-t: Build/Rebuilds only text client
|
# configure & generate Makefiles using cmake
|
||||||
-r: Build/Rebuilds only receiver
|
# by listing all your options (alternately use ccmake described below)
|
||||||
-g: Build/Rebuilds only gui
|
# cmake3 for some systems
|
||||||
-s: Simulator
|
cmake ../slsDetectorPackage -DCMAKE_INSTALL_PREFIX=/your/install/path
|
||||||
-u: Chip Test Gui
|
|
||||||
-j: Number of threads to compile through
|
# compiled to the build/bin directory
|
||||||
-e: Debug mode
|
make -j12 #or whatever number of cores you are using to build
|
||||||
-i: Builds tests
|
|
||||||
-m: Manuals
|
# install headers and libs in /your/install/path directory
|
||||||
-n: Manuals without compiling doxygen (only rst)
|
make install
|
||||||
-z: Moench zmq processor
|
```
|
||||||
|
|
||||||
|
Instead of the cmake command, one can use ccmake to get a list of options to configure and generate Makefiles at ease.
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
# ccmake3 for some systems
|
||||||
|
ccmake ..
|
||||||
|
|
||||||
|
# choose the options
|
||||||
|
# first press [c] - configure
|
||||||
|
# then press [g] - generate
|
||||||
|
```
|
||||||
|
|
||||||
|
|Example cmake options|Comment|
|
||||||
|
|---|---|
|
||||||
|
| -DSLS_USE_PYTHON=ON | Python |
|
||||||
|
| -DPython_FIND_VIRTUALENV=ONLY | Python from only the conda environment |
|
||||||
|
| -DZeroMQ_HINT=/usr/lib64 | Use system zmq instead |
|
||||||
|
| -DSLS_USE_GUI=ON | GUI |
|
||||||
|
|
||||||
|
|
||||||
|
###### Build using in-built cmk.sh script
|
||||||
|
|
||||||
|
```
|
||||||
|
The binaries are generated in slsDetectorPackage/build/bin directory.
|
||||||
|
|
||||||
|
Usage: ./cmk.sh [-b] [-c] [-d <HDF5 directory>] [e] [g] [-h] [i] [-j <Number of threads>]
|
||||||
|
[-k <CMake command>] [-l <Install directory>] [m] [n] [-p] [-q <Zmq hint directory>]
|
||||||
|
[r] [s] [t] [u] [z]
|
||||||
|
-[no option]: only make
|
||||||
|
-b: Builds/Rebuilds CMake files normal mode
|
||||||
|
-c: Clean
|
||||||
|
-d: HDF5 Custom Directory
|
||||||
|
-e: Debug mode
|
||||||
|
-g: Build/Rebuilds gui
|
||||||
|
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||||
|
-i: Builds tests
|
||||||
|
-j: Number of threads to compile through
|
||||||
|
-k: CMake command
|
||||||
|
-l: Install directory
|
||||||
|
-m: Manuals
|
||||||
|
-n: Manuals without compiling doxygen (only rst)
|
||||||
|
-p: Builds/Rebuilds Python API
|
||||||
|
-q: Zmq hint directory
|
||||||
|
-r: Build/Rebuilds only receiver
|
||||||
|
-s: Simulator
|
||||||
|
-t: Build/Rebuilds only text client
|
||||||
|
-u: Chip Test Gui
|
||||||
|
-z: Moench zmq processor
|
||||||
|
|
||||||
|
|
||||||
# get all options
|
# display all options
|
||||||
./cmk.sh -?
|
./cmk.sh -?
|
||||||
|
|
||||||
# new build and compile in parallel:
|
# new build and compile in parallel (recommended basic option):
|
||||||
./cmk.sh -bj5
|
./cmk.sh -cbj5
|
||||||
```
|
|
||||||
|
# new build, python and compile in parallel:
|
||||||
**2. Compile without script**<br>
|
./cmk.sh -cbpj5
|
||||||
Use cmake to create out-of-source builds, by creating a build folder parallel to source directory. This would create a debug build with address sanitizers.
|
|
||||||
```
|
#To use the system zmq (/usr/lib64) instead
|
||||||
$ mkdir build
|
./cmk.sh -cbj5 -q /usr/lib64
|
||||||
$ cd build
|
|
||||||
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON
|
|
||||||
$ make -j12 #or whatever number of threads wanted
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To install binaries using CMake
|
###### Build on old distributions
|
||||||
|
|
||||||
|
If your linux distribution doesn't come with a C++11 compiler (gcc>4.8) then
|
||||||
|
it's possible to install a newer gcc using conda and build the slsDetectorPackage
|
||||||
|
using this compiler
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone --recursive https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
#Create an environment with the dependencies
|
||||||
mkdir build && cd build
|
conda create -n myenv gxx_linux-64 cmake zmq
|
||||||
cmake ../slsDetectorPackage -DCMAKE_INSTALL_PREFIX=/your/install/path
|
conda activate myenv
|
||||||
make -j12 #or whatever number of cores you are using to build
|
|
||||||
make install
|
# outside slsDetecorPackage folder
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ../slsDetectorPackage -DCMAKE_PREFIX_PATH=$CONDA_PREFIX
|
||||||
|
make -j12
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Build slsDetectorGui (Qt5)
|
||||||
|
|
||||||
|
1. Using pre-built binary on conda
|
||||||
|
```
|
||||||
|
conda create -n myenv slsdetgui=7.0.0
|
||||||
|
conda activate myenv
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Using system installation on RHEL7
|
||||||
|
```
|
||||||
|
yum install qt5-qtbase-devel.x86_64
|
||||||
|
yum install qt5-qtsvg-devel.x86_64
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Using conda
|
||||||
|
```
|
||||||
|
#Add channels for dependencies and our library
|
||||||
|
conda config --add channels conda-forge
|
||||||
|
conda config --add channels slsdetectorgroup
|
||||||
|
conda config --set channel_priority strict
|
||||||
|
|
||||||
|
# create environment to compile
|
||||||
|
# on rhel7
|
||||||
|
conda create -n slsgui zeromq gxx_linux-64 gxx_linux-64 mesa-libgl-devel-cos6-x86_64 qt
|
||||||
|
# on fedora or newer systems
|
||||||
|
conda create -n slsgui zeromq qt
|
||||||
|
|
||||||
|
# when using conda compilers, would also need libgl, but no need for it on fedora unless maybe using it with ROOT
|
||||||
|
|
||||||
|
# activate environment
|
||||||
|
conda activate slsgui
|
||||||
|
|
||||||
|
# compile with cmake outside slsDetecorPackage folder
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ../slsDetectorPackage -DSLS_USE_GUI=ON
|
||||||
|
make -j12
|
||||||
|
|
||||||
|
# or compile with cmk.sh
|
||||||
|
cd slsDetectorPackage
|
||||||
|
./cmk.sh -cbgj9
|
||||||
|
```
|
||||||
|
|
||||||
|
###### Build documentation from package
|
||||||
|
The documentation for the slsDetectorPackage is build using a combination
|
||||||
|
of Doxygen, Sphinx and Breathe. The easiest way to install the dependencies
|
||||||
|
is to use conda
|
||||||
|
|
||||||
|
```
|
||||||
|
conda create -n myenv python sphinx_rtd_theme breathe
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
# using cmake or ccmake to enable DSLS_BUILD_DOCS
|
||||||
|
# outside slsDetecorPackage folder
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ../slsDetectorPackage -DSLS_BUILD_DOCS=ON
|
||||||
|
|
||||||
|
make docs # generate API docs and build Sphinx RST
|
||||||
|
make rst # rst only, saves time in case the API did not change
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Support
|
## Support
|
||||||
dhanya.thattil@psi.ch
|
dhanya.thattil@psi.ch
|
||||||
erik.frojdh@psi.ch
|
erik.frojdh@psi.ch
|
||||||
|
414
RELEASE.txt
Executable file → Normal file
414
RELEASE.txt
Executable file → Normal file
@ -1,327 +1,144 @@
|
|||||||
SLS Detector Package 6.0.0-rc1 released on 08.10.2021 (Release Candidate 1)
|
SLS Detector Package Major Release 7.x.x released on xx.xx.2023
|
||||||
===========================================================================
|
===============================================================
|
||||||
|
|
||||||
This document describes the differences between v6.0.0-rc1 and v5.1.0.
|
This document describes the differences between v7.x.x and v7.0.2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONTENTS
|
CONTENTS
|
||||||
--------
|
--------
|
||||||
1. New or Changed Features
|
1 New, Changed or Resolved Features
|
||||||
2. Resolved Issues
|
1.1 Compilation
|
||||||
3. Known Issues
|
1.2 Callback
|
||||||
4. Firmware Requirements
|
1.3 Python
|
||||||
5. Download, Documentation & Support
|
1.4 Client
|
||||||
|
1.5 Detector Server
|
||||||
|
1.6 Simulator
|
||||||
|
1.7 Receiver
|
||||||
|
1.8 Gui
|
||||||
|
2 On-board Detector Server Compatibility
|
||||||
|
3 Firmware Requirements
|
||||||
|
4 Kernel Requirements
|
||||||
|
5 Download, Documentation & Support
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1. New or Changed Features
|
1 New, Changed or Resolved Features
|
||||||
==========================
|
=====================================
|
||||||
|
|
||||||
Client
|
|
||||||
------
|
|
||||||
|
|
||||||
1. [Jungfrau] Chip version
|
- moench being made compatible with jungfrau 2.0 boards (jungfrau structure, away from ctb)
|
||||||
Features for chipv1.1 incorporated
|
- eiger febl and feb in versions
|
||||||
Command line: chipversion, API: getchipVersion
|
- fix ctb slow adcs
|
||||||
gets chip version (1.0 or 1.1)
|
|
||||||
chipv1.1 requires config_jungfrau.txt on detector server.
|
|
||||||
|
|
||||||
2. [Jungfrau] Chip configuration (only chipv1.1)
|
|
||||||
powering on the chip and changing settings will configure the chip.
|
|
||||||
Hence, required before acquisition.
|
|
||||||
|
|
||||||
3. [Jungfrau] Settings and Gain mode
|
|
||||||
Settings can be gain0 and highgain0. Gain mode can be dynamicgain,
|
|
||||||
forceswitchg1, forceswitchg2, fixg1, fixg2, fixg0. fixg0 must be
|
|
||||||
used with EXTRA caution as you can damage the detector.
|
|
||||||
Changing settings also changes dac values of 3 dacs () and reconfigures
|
|
||||||
chip (only v1.1)
|
|
||||||
|
|
||||||
4. [Jungfrau] Storage cells (only chipv1.1)
|
|
||||||
Additional number of storage cells not applicable for chipv1.1.
|
|
||||||
Storage cell start is only allowed from 0 - 3 for chipv1.1
|
|
||||||
(0 - 15 for chipv1.0).
|
|
||||||
|
|
||||||
5. [Gotthard2][Jungfrau] Filter Resistor
|
|
||||||
Command line: filterresistor, API: getFilterResistor/ setFilterResistor
|
|
||||||
Previous Command: filter, setFilter/ getFilter
|
|
||||||
Set Filter resistor. Increasing values for increasing resistance.
|
|
||||||
[Jungfrau] only for chipv1.1. Options: [0|1]. Default is 1.
|
|
||||||
[Gotthard2] Options: [0|1|2|3]. Default is 0.
|
|
||||||
|
|
||||||
6. [Jungfrau] Filter cell (only chipv1.1)
|
2 On-board Detector Server Compatibility
|
||||||
Command line: filtercell, API: getFilterCell/ setFilterCell
|
==========================================
|
||||||
Set filter cell. Options: [0-12]. Advanced user command.
|
|
||||||
|
|
||||||
7. [Jungfrau] Comparator disable time (only chipv1.1)
|
|
||||||
Command line: comp_disable_time, API: getComparatorDisableTime/
|
|
||||||
setComparatorDisableTime
|
|
||||||
One can customize the period to disable comparator.
|
|
||||||
|
|
||||||
8. [Eiger][Jungfrau] Flip rows
|
Eiger 7.0.0
|
||||||
Command line: fliprows, API: getFlipRows/ setFlipRows
|
Jungfrau 7.0.2
|
||||||
Previous command: flippeddatax, setBottom/ getBottom
|
Mythen3 7.0.0
|
||||||
[Jungfrau] Flips rows in detector only for HW v2.0.
|
Gotthard2 7.0.0
|
||||||
slsReceiver and slsDetectorGui will not flip them again.
|
Gotthard 7.0.0
|
||||||
[Eiger] same as before.
|
Moench 7.0.0
|
||||||
|
Ctb 7.0.0
|
||||||
9. [Eiger][Jungfrau] Read n rows
|
|
||||||
Command line: readnrows, API: getReadNRows/ setReadNRows
|
|
||||||
Previous Command: readnlines, getPartialReadout/ setPartialReadout
|
|
||||||
[Eiger] same as before
|
|
||||||
[Jungfrau] Options: 8 - 512, multiples of 8. Default is 512.
|
|
||||||
|
|
||||||
10. [Gotthard2][Jungfrau] Current source
|
|
||||||
Command line: currentsource, API: getCurrentSource, setCurrentSource
|
|
||||||
Enable or disable current source. Default is disabled.
|
|
||||||
[Gotthard2] Can only enable or disable.
|
|
||||||
[Jungfrau] Can choose to fix, select source and choose normal or low
|
|
||||||
current. Normal/ low only for chipv1.1.
|
|
||||||
Select source is 0-63 for chipv1.0 and a 64 bit mask for chipv1.1.
|
|
||||||
|
|
||||||
11. Default dac
|
|
||||||
Command line: defaultdac, API: getDefaultDac/ setDefaultDac
|
|
||||||
change default value of a dac
|
|
||||||
[Jungfrau][Mythen3] Also change default value of dac for particular
|
|
||||||
setting.
|
|
||||||
|
|
||||||
12. Reset dacs
|
|
||||||
Command line: resetdacs, API: resetToDefaultDacs
|
|
||||||
Previous command: defaultdacs
|
|
||||||
Resets dacs to their default values or hard coded values.
|
|
||||||
|
|
||||||
13. [Mythen3] Gain Capacitance
|
|
||||||
Command line: gaincaps, API: getGainCaps/ setGainCaps
|
|
||||||
Set various gain capacitances.
|
|
||||||
|
|
||||||
14. [Gotthard2] Veto Streaming from chip
|
|
||||||
Command line: veto, API: getVeto/ setVeto
|
|
||||||
This command used to mean veto streaming from detector. Now, it means
|
|
||||||
veto streaming from chip (New feature). Default is disabled.
|
|
||||||
|
|
||||||
15. [Gotthard2] Veto streaming from detector
|
|
||||||
Command line: vetostream, API: getVetoStream, setVetoStream
|
|
||||||
Options: None, local link interface, 10 10GbE, Both
|
|
||||||
Default: None
|
|
||||||
10GbE (as before) will enable 2 udp interfaces in receiver.
|
|
||||||
|
|
||||||
16. [Gotthard2] Veto algorithm
|
|
||||||
Command line: vetoalg, API: getVetoAlgorithm/ setVetoAlgorithm
|
|
||||||
Set veto algorithm for each interface.
|
|
||||||
Options: hits, raw
|
|
||||||
|
|
||||||
17. [Eiger][Gotthard2][Mythen3] Module ID
|
|
||||||
Command line: moduleid, API: getModuleId
|
|
||||||
Previous command (Eiger only): serialnumber, getSerialNumber
|
|
||||||
Unique id read from txt file on detector and streamed out in udp header.
|
|
||||||
|
|
||||||
18. [Gotthard2]
|
|
||||||
Command line: dbitpipeline, API: getDBITPipeline/ setDBITPipeline
|
|
||||||
Set pipeline to latch digital bits. Options: 0-7
|
|
||||||
|
|
||||||
19. [Eiger][Jungfrau] Round Robin commands
|
|
||||||
Command line, udp_dstlist, API: getDestinationUDPList/
|
|
||||||
setDestinationUDPList
|
|
||||||
Round robin commands at the moment does not configure the receiver.
|
|
||||||
Set multiple udp destinations in the detector to stream udp data packets
|
|
||||||
to. Upto 32 destinations. Refer documentation for details.
|
|
||||||
|
|
||||||
Command line, udp_numdst, API: getNumberofUDPDestinations
|
|
||||||
|
|
||||||
[Jungfrau] Command line, udp_firstdst, API: getFirstUDPDestination/
|
|
||||||
setFirstUDPDestination
|
|
||||||
|
|
||||||
20. Command Line Parsing
|
|
||||||
Parsing of detector index and module index has been modified to
|
|
||||||
integrate round robin index.
|
|
||||||
[detector index]-[module index]:[round robin index] [command]
|
|
||||||
|
|
||||||
It is backwards compatible.
|
|
||||||
For ease, one can also execute
|
|
||||||
sls_detector_put [module index] [command]
|
|
||||||
|
|
||||||
21. Clear Udp Destination
|
|
||||||
Command line, udp_cleardst, API: clearUDPDestinations
|
|
||||||
This is useful when changing receivers for a detector or for round robin
|
|
||||||
system.
|
|
||||||
|
|
||||||
22. Shared Memory Naming
|
|
||||||
Shared memory name has been changed to reflect a more appropriate naming
|
|
||||||
scheme.
|
|
||||||
|
|
||||||
23. [Eiger][Mythen3] Blocking trigger
|
|
||||||
Command line: blockingtrigger, API: sendSoftwareTrigger
|
|
||||||
Sends software trigger signal to detector and blocks till frames are
|
|
||||||
sent out for that trigger.
|
|
||||||
|
|
||||||
24. [Eiger] Data stream enable for ports
|
|
||||||
Command line: datastream, API: getDataStream/ setDataStream
|
|
||||||
Enable or disable each port. Default: enabled
|
|
||||||
|
|
||||||
25. Changing TCP ports
|
|
||||||
This will only affect shared memory and will not try to change the
|
|
||||||
current tcp port of the control/stop server in detector.
|
|
||||||
|
|
||||||
26. [Eiger][Jungfrau][Gotthard2] Speed
|
|
||||||
Command line: readoutspeed, readoutspeedlist API: getReadoutSpeed/ setReadoutSpeed /
|
|
||||||
getReadoutSpeedList
|
|
||||||
Previous command: speed, setSpeed/ getSpeed
|
|
||||||
[Eiger][Jungfrau] same as before.
|
|
||||||
[Gotthard2] New command to set readout speed. Options: 108, 144 (in MHz)
|
|
||||||
|
|
||||||
|
|
||||||
Detector servers
|
|
||||||
----------------
|
|
||||||
|
|
||||||
1. [Gotthard2] Bad Channels moved to a new register, default settings
|
|
||||||
including clock frequency changed
|
|
||||||
|
|
||||||
2. [Gotthard2] Updated config file in detector server
|
|
||||||
|
|
||||||
|
|
||||||
Virtual servers
|
On-board Detector Server Upgrade
|
||||||
----------------
|
--------------------------------
|
||||||
|
|
||||||
1. Artifical pixel values increasing by every packet, instead of every pixel.
|
From v6.1.0 (without tftp):
|
||||||
|
Using command 'updatedetectorserver'
|
||||||
2. All possible features updated.
|
From 5.0.0 (with tftp):
|
||||||
|
Using command 'copydetectorserver'
|
||||||
|
|
||||||
Receiver
|
|
||||||
--------
|
|
||||||
|
|
||||||
1. Frames caught in metadata
|
|
||||||
Frames caught by the master receiver is added to master file metadata.
|
|
||||||
Hdf5 and Binary version numbers changed to 6.3
|
|
||||||
|
|
||||||
2. Removed Padding option for Deactivated half modules.
|
|
||||||
|
|
||||||
3. Changing Receiver TCP ports
|
|
||||||
This will only affect shared memory and will not try to change the
|
|
||||||
current tcp port of the receiver.
|
|
||||||
|
|
||||||
Gui
|
|
||||||
----
|
|
||||||
|
|
||||||
1. [Mythen3] counters added in settings tab
|
|
||||||
|
|
||||||
|
|
||||||
2. Resolved Issues
|
|
||||||
==================
|
|
||||||
|
|
||||||
Detector Servers
|
|
||||||
----------------
|
|
||||||
|
|
||||||
1. [Gotthard2] Tolerance in time parameters.
|
|
||||||
Eg. 220 ns was being set to 215 ns, instead of 222ns.
|
|
||||||
|
|
||||||
2. [Jungfrau] Stopping in trigger mode and then switching to auto timing mode
|
|
||||||
blocks data streaming from detector. Workaround fix made in
|
|
||||||
detector server to reset core until next firmware release.
|
|
||||||
|
|
||||||
3. [Jungfrau][CTB][Moench][Gotthard][Gotthard2][Mythen3] Firmware Programming
|
|
||||||
Firmware programming incorporates more validations such as checksum of
|
|
||||||
program. Always ensure client and server are of same release before
|
|
||||||
programming firmware.
|
|
||||||
|
|
||||||
4. [Eiger] Stop sends last frame
|
|
||||||
Stop acquisition will now also send out all complete frames in fifo.
|
|
||||||
|
|
||||||
5. [Eiger] Bottom not rotated in quad mode. Fixed.
|
|
||||||
|
|
||||||
6. [Mythen3] counter mask effect on vthreshold
|
|
||||||
Setting counter mask changes vth daac values (ie. disabling sets to 2800),
|
|
||||||
vthreshold only changes for enabled counters, setting vth overwrites
|
|
||||||
dac even if counter disabled and when counters enabled, remembers set
|
|
||||||
values.
|
|
||||||
|
|
||||||
7. [Eiger] fast quad fix for loading trimbits
|
|
||||||
|
|
||||||
Receiver
|
|
||||||
--------
|
|
||||||
|
|
||||||
1. Disabled port or deactivated (half) modules will not create files.
|
|
||||||
|
|
||||||
|
|
||||||
- better control of what is built (PR)?
|
|
||||||
- cmake package has hardcoded path to zeromq library
|
|
||||||
|
|
||||||
|
|
||||||
3. Firmware Requirements
|
|
||||||
========================
|
|
||||||
|
|
||||||
Eiger
|
|
||||||
=====
|
|
||||||
Compatible version : 08.10.2021 (v29)
|
|
||||||
|
|
||||||
Jungfrau
|
|
||||||
========
|
|
||||||
Compatible version : 31.08.2021 (v1.2, PCB v1.0)
|
|
||||||
: 08.10.2021 (v2.2, PCB v2.0)
|
|
||||||
|
|
||||||
Gotthard
|
|
||||||
========
|
|
||||||
Compatible version : 08.02.2018 (50um and 25um Master)
|
|
||||||
: 09.02.2018 (25 um Slave)
|
|
||||||
|
|
||||||
Mythen3
|
|
||||||
=======
|
|
||||||
Compatible version : 10.09.2021 (development)
|
|
||||||
|
|
||||||
Gotthard2
|
|
||||||
=========
|
|
||||||
Compatible version : 27.05.2021 (v1.0)
|
|
||||||
|
|
||||||
Moench
|
|
||||||
======
|
|
||||||
Compatible version : 05.10.2020 (v1.0)
|
|
||||||
|
|
||||||
Ctb
|
|
||||||
===
|
|
||||||
Compatible version : 05.10.2020 (v1.0)
|
|
||||||
|
|
||||||
Detector Upgrade
|
|
||||||
================
|
|
||||||
|
|
||||||
The following can be upgraded remotely:
|
|
||||||
Eiger via bit files
|
|
||||||
Jungfrau via command <.pof>
|
|
||||||
Mythen3 via command <.rbf>
|
|
||||||
Gotthard2 via command <.rbf>
|
|
||||||
Moench via command <.pof>
|
|
||||||
Ctb via command <.pof>
|
|
||||||
|
|
||||||
The following cannot be upgraded remotely:
|
|
||||||
Gotthard
|
|
||||||
|
|
||||||
Instructions available at
|
Instructions available at
|
||||||
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
|
||||||
and
|
|
||||||
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
|
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3 Firmware Requirements
|
||||||
|
========================
|
||||||
|
|
||||||
5. Known Issues
|
|
||||||
===============
|
|
||||||
|
|
||||||
Receiver
|
Eiger 20.02.2023 (v31)
|
||||||
|
|
||||||
|
Jungfrau 04.11.2022 (v1.4, HW v1.0)
|
||||||
|
03.11.2022 (v2.4, HW v2.0)
|
||||||
|
|
||||||
|
Mythen3 24.01.2023 (v1.4)
|
||||||
|
|
||||||
|
Gotthard2 23.11.2022 (v0.3)
|
||||||
|
|
||||||
|
Gotthard 08.02.2018 (50um and 25um Master)
|
||||||
|
09.02.2018 (25 um Slave)
|
||||||
|
|
||||||
|
Moench 05.12.2022 (v0.3)
|
||||||
|
|
||||||
|
Ctb 03.04.2023 (v1.2?)
|
||||||
|
|
||||||
|
|
||||||
|
Detector Upgrade
|
||||||
|
----------------
|
||||||
|
|
||||||
|
The following can be upgraded remotely:
|
||||||
|
|
||||||
|
Eiger via bit files
|
||||||
|
Jungfrau via command <.pof>
|
||||||
|
Mythen3 via command <.rbf>
|
||||||
|
Gotthard2 via command <.rbf>
|
||||||
|
Moench via command <.pof>
|
||||||
|
Ctb via command <.pof>
|
||||||
|
|
||||||
|
Gotthard cannot be upgraded remotely
|
||||||
|
|
||||||
|
Except Eiger,
|
||||||
|
upgrade
|
||||||
|
Using command 'programfpga' or
|
||||||
|
|
||||||
|
udpate both server and firmware simultaneously
|
||||||
|
Using command 'update'
|
||||||
|
|
||||||
|
|
||||||
|
Instructions available at
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
4 Kernel Requirements
|
||||||
|
======================
|
||||||
|
|
||||||
|
Blackfin
|
||||||
--------
|
--------
|
||||||
1. It does not handle readnrows or partial readout. Only the summary
|
Latest version: Fri Oct 29 00:00:00 2021
|
||||||
is adjusted to print in red. However, it will still write complete
|
|
||||||
images with missing data padded. Roi will be implemented in future
|
Older ones will work, but might have issues with programming firmware via
|
||||||
that can be complimented with this feature to remove the additional
|
the package.
|
||||||
data in files.
|
|
||||||
|
|
||||||
2. Round robin is not implemented in receiver side, ie. one cannot configure
|
Nios
|
||||||
more than 1 receiver at a time. This will/might be done in the future.
|
-----
|
||||||
|
Compatible version: Mon May 10 18:00:21 CEST 2021
|
||||||
|
|
||||||
|
Kernel Upgrade
|
||||||
|
---------------
|
||||||
|
Eiger via bit files
|
||||||
|
Others via command
|
||||||
|
|
||||||
|
Commands: udpatekernel, kernelversion
|
||||||
|
Instructions available at
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/detector.html
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/pydetector.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
6. Download, Documentation & Support
|
|
||||||
|
5 Download, Documentation & Support
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
Download
|
Download
|
||||||
@ -334,7 +151,10 @@ This document describes the differences between v6.0.0-rc1 and v5.1.0.
|
|||||||
-------------
|
-------------
|
||||||
|
|
||||||
Installation:
|
Installation:
|
||||||
https://slsdetectorgroup.github.io/devdoc/installation.html#
|
https://slsdetectorgroup.github.io/devdoc/installation.html
|
||||||
|
|
||||||
|
Quick Start Guide:
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html
|
||||||
|
|
||||||
Firmware Upgrade:
|
Firmware Upgrade:
|
||||||
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
||||||
@ -354,9 +174,6 @@ This document describes the differences between v6.0.0-rc1 and v5.1.0.
|
|||||||
Command Line Documentation:
|
Command Line Documentation:
|
||||||
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
||||||
|
|
||||||
Quick Start Guide:
|
|
||||||
https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html
|
|
||||||
|
|
||||||
C++ API Documentation:
|
C++ API Documentation:
|
||||||
https://slsdetectorgroup.github.io/devdoc/detector.html
|
https://slsdetectorgroup.github.io/devdoc/detector.html
|
||||||
|
|
||||||
@ -373,8 +190,16 @@ This document describes the differences between v6.0.0-rc1 and v5.1.0.
|
|||||||
https://slsdetectorgroup.github.io/devdoc/receivers.html
|
https://slsdetectorgroup.github.io/devdoc/receivers.html
|
||||||
https://slsdetectorgroup.github.io/devdoc/slsreceiver.html
|
https://slsdetectorgroup.github.io/devdoc/slsreceiver.html
|
||||||
|
|
||||||
|
Detector UDP Header:
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/udpheader.html
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/udpdetspec.html
|
||||||
|
|
||||||
|
slsReceiver Zmq Format:
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/slsreceiver.html#zmq-json-header-format
|
||||||
|
|
||||||
TroubleShooting:
|
TroubleShooting:
|
||||||
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
|
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html#receiver-pc-tuning-options
|
||||||
|
|
||||||
Further Documentation:
|
Further Documentation:
|
||||||
https://www.psi.ch/en/detectors/documentation
|
https://www.psi.ch/en/detectors/documentation
|
||||||
@ -388,4 +213,3 @@ This document describes the differences between v6.0.0-rc1 and v5.1.0.
|
|||||||
|
|
||||||
dhanya.thattil@psi.ch
|
dhanya.thattil@psi.ch
|
||||||
erik.frojdh@psi.ch
|
erik.frojdh@psi.ch
|
||||||
|
|
||||||
|
@ -1,118 +0,0 @@
|
|||||||
# Qt Widgets for Technical Applications
|
|
||||||
# available at http://www.http://qwt.sourceforge.net/
|
|
||||||
#
|
|
||||||
# The module defines the following variables:
|
|
||||||
# QWT_FOUND - the system has Qwt
|
|
||||||
# QWT_INCLUDE_DIR - where to find qwt_plot.h
|
|
||||||
# QWT_INCLUDE_DIRS - qwt includes
|
|
||||||
# QWT_LIBRARY - where to find the Qwt library
|
|
||||||
# QWT_LIBRARIES - aditional libraries
|
|
||||||
# QWT_MAJOR_VERSION - major version
|
|
||||||
# QWT_MINOR_VERSION - minor version
|
|
||||||
# QWT_PATCH_VERSION - patch version
|
|
||||||
# QWT_VERSION_STRING - version (ex. 5.2.1)
|
|
||||||
# QWT_ROOT_DIR - root dir (ex. /usr/local)
|
|
||||||
|
|
||||||
#=============================================================================
|
|
||||||
# Copyright 2010-2013, Julien Schueller
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions are met:
|
|
||||||
#
|
|
||||||
# 1. Redistributions of source code must retain the above copyright notice, this
|
|
||||||
# list of conditions and the following disclaimer.
|
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
# this list of conditions and the following disclaimer in the documentation
|
|
||||||
# and/or other materials provided with the distribution.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
# The views and conclusions contained in the software and documentation are those
|
|
||||||
# of the authors and should not be interpreted as representing official policies,
|
|
||||||
# either expressed or implied, of the FreeBSD Project.
|
|
||||||
#=============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
find_path ( QWT_INCLUDE_DIR
|
|
||||||
NAMES qwt_plot.h
|
|
||||||
HINTS $ENV{QWTDIR} $ENV{QWTDIR}/src ${QT_INCLUDE_DIR}
|
|
||||||
PATH_SUFFIXES qwt qwt-qt3 qwt-qt4 qwt-qt5
|
|
||||||
)
|
|
||||||
|
|
||||||
set ( QWT_INCLUDE_DIRS ${QWT_INCLUDE_DIR} )
|
|
||||||
|
|
||||||
# version
|
|
||||||
set ( _VERSION_FILE ${QWT_INCLUDE_DIR}/qwt_global.h )
|
|
||||||
if ( EXISTS ${_VERSION_FILE} )
|
|
||||||
file ( STRINGS ${_VERSION_FILE} _VERSION_LINE REGEX "define[ ]+QWT_VERSION_STR" )
|
|
||||||
if ( _VERSION_LINE )
|
|
||||||
string ( REGEX REPLACE ".*define[ ]+QWT_VERSION_STR[ ]+\"(.*)\".*" "\\1" QWT_VERSION_STRING "${_VERSION_LINE}" )
|
|
||||||
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1" QWT_MAJOR_VERSION "${QWT_VERSION_STRING}" )
|
|
||||||
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\2" QWT_MINOR_VERSION "${QWT_VERSION_STRING}" )
|
|
||||||
string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\3" QWT_PATCH_VERSION "${QWT_VERSION_STRING}" )
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
# check version
|
|
||||||
set ( _QWT_VERSION_MATCH TRUE )
|
|
||||||
if ( Qwt_FIND_VERSION AND QWT_VERSION_STRING )
|
|
||||||
if ( Qwt_FIND_VERSION_EXACT )
|
|
||||||
if ( NOT Qwt_FIND_VERSION VERSION_EQUAL QWT_VERSION_STRING )
|
|
||||||
set ( _QWT_VERSION_MATCH FALSE )
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
if ( QWT_VERSION_STRING VERSION_LESS Qwt_FIND_VERSION )
|
|
||||||
set ( _QWT_VERSION_MATCH FALSE )
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
find_library ( QWT_LIBRARY
|
|
||||||
NAMES qwt qwt-qt3 qwt-qt4 qwt-qt5
|
|
||||||
HINTS $ENV{QWTDIR}/lib ${QT_LIBRARY_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
set ( QWT_LIBRARIES ${QWT_LIBRARY} )
|
|
||||||
|
|
||||||
|
|
||||||
# try to guess root dir from include dir
|
|
||||||
if ( QWT_INCLUDE_DIR )
|
|
||||||
string ( REGEX REPLACE "(.*)/include.*" "\\1" QWT_ROOT_DIR ${QWT_INCLUDE_DIR} )
|
|
||||||
# try to guess root dir from library dir
|
|
||||||
elseif ( QWT_LIBRARY )
|
|
||||||
string ( REGEX REPLACE "(.*)/lib[/|32|64].*" "\\1" QWT_ROOT_DIR ${QWT_LIBRARY} )
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments
|
|
||||||
include ( FindPackageHandleStandardArgs )
|
|
||||||
if ( CMAKE_VERSION LESS 2.8.3 )
|
|
||||||
find_package_handle_standard_args( Qwt DEFAULT_MSG QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH )
|
|
||||||
else ()
|
|
||||||
find_package_handle_standard_args( Qwt REQUIRED_VARS QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH VERSION_VAR QWT_VERSION_STRING )
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
mark_as_advanced (
|
|
||||||
QWT_LIBRARY
|
|
||||||
QWT_LIBRARIES
|
|
||||||
QWT_INCLUDE_DIR
|
|
||||||
QWT_INCLUDE_DIRS
|
|
||||||
QWT_MAJOR_VERSION
|
|
||||||
QWT_MINOR_VERSION
|
|
||||||
QWT_PATCH_VERSION
|
|
||||||
QWT_VERSION_STRING
|
|
||||||
QWT_ROOT_DIR
|
|
||||||
)
|
|
64
cmake/SlsAddFlag.cmake
Normal file
64
cmake/SlsAddFlag.cmake
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
include(CheckCCompilerFlag)
|
||||||
|
|
||||||
|
|
||||||
|
function(enable_cxx_warning flag target)
|
||||||
|
string(REPLACE "-W" "HAS_" flag_name ${flag})
|
||||||
|
check_cxx_compiler_flag(${flag} ${flag_name})
|
||||||
|
if(${flag_name})
|
||||||
|
target_compile_options(${target} INTERFACE ${flag})
|
||||||
|
message(STATUS "Adding: ${flag} to ${target}")
|
||||||
|
else()
|
||||||
|
message(STATUS "Flag: ${flag} not supported")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(enable_c_warning flag target)
|
||||||
|
string(REPLACE "-W" "HAS_" flag_name ${flag})
|
||||||
|
check_c_compiler_flag(${flag} ${flag_name})
|
||||||
|
if(${flag_name})
|
||||||
|
target_compile_options(${target} INTERFACE ${flag})
|
||||||
|
message(STATUS "Adding: ${flag} to ${target}")
|
||||||
|
else()
|
||||||
|
message(STATUS "Flag: ${flag} not supported")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(disable_cxx_warning flag target)
|
||||||
|
string(REPLACE "-W" "HAS_" flag_name ${flag})
|
||||||
|
check_cxx_compiler_flag(${flag} ${flag_name})
|
||||||
|
|
||||||
|
if(${flag_name})
|
||||||
|
string(REPLACE "-W" "-Wno-" neg_flag ${flag})
|
||||||
|
message(STATUS "Adding: ${neg_flag} to ${target}")
|
||||||
|
target_compile_options(${target} INTERFACE ${neg_flag})
|
||||||
|
else()
|
||||||
|
message(STATUS "Warning: ${flag} not supported no need to disable")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(disable_c_warning flag target)
|
||||||
|
string(REPLACE "-W" "HAS_" flag_name ${flag})
|
||||||
|
check_c_compiler_flag(${flag} ${flag_name})
|
||||||
|
if(${flag_name})
|
||||||
|
string(REPLACE "-W" "-Wno-" neg_flag ${flag})
|
||||||
|
message(STATUS "Adding: ${neg_flag} to ${target}")
|
||||||
|
target_compile_options(${target} INTERFACE ${neg_flag})
|
||||||
|
else()
|
||||||
|
message(STATUS "Warning: ${flag} not supported no need to disable")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
function(sls_disable_c_warning flag)
|
||||||
|
disable_c_warning(${flag} slsProjectCSettings)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(sls_enable_cxx_warning flag)
|
||||||
|
enable_cxx_warning(${flag} slsProjectWarnings)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(sls_disable_cxx_warning flag)
|
||||||
|
disable_cxx_warning(${flag} slsProjectWarnings)
|
||||||
|
endfunction()
|
@ -25,11 +25,6 @@ install(FILES
|
|||||||
DESTINATION ${CMAKE_INSTALL_DIR}
|
DESTINATION ${CMAKE_INSTALL_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
install(FILES
|
|
||||||
"${CMAKE_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake"
|
|
||||||
COMPONENT devel
|
|
||||||
DESTINATION ${CMAKE_INSTALL_DIR}/libzmq-pkg-config
|
|
||||||
)
|
|
||||||
|
|
||||||
if (PROJECT_LIBRARIES OR PROJECT_STATIC_LIBRARIES)
|
if (PROJECT_LIBRARIES OR PROJECT_STATIC_LIBRARIES)
|
||||||
install(
|
install(
|
||||||
|
@ -13,17 +13,6 @@ include(CMakeFindDependencyMacro)
|
|||||||
set(SLS_USE_HDF5 "@SLS_USE_HDF5@")
|
set(SLS_USE_HDF5 "@SLS_USE_HDF5@")
|
||||||
|
|
||||||
|
|
||||||
find_package(ZeroMQ 4 QUIET)
|
|
||||||
# libzmq autotools install: fallback to pkg-config
|
|
||||||
if(NOT ZeroMQ_FOUND)
|
|
||||||
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/libzmq-pkg-config)
|
|
||||||
find_package(ZeroMQ 4 REQUIRED)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT ZeroMQ_FOUND)
|
|
||||||
message(FATAL_ERROR "ZeroMQ was NOT found!")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_dependency(Threads)
|
find_dependency(Threads)
|
||||||
|
|
||||||
# Add optional dependencies here
|
# Add optional dependencies here
|
||||||
|
121
cmk.sh
121
cmk.sh
@ -1,4 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
CMAKE="cmake3"
|
CMAKE="cmake3"
|
||||||
BUILDDIR="build"
|
BUILDDIR="build"
|
||||||
INSTALLDIR=""
|
INSTALLDIR=""
|
||||||
@ -24,25 +26,25 @@ CMAKE_PRE=""
|
|||||||
CMAKE_POST=""
|
CMAKE_POST=""
|
||||||
|
|
||||||
usage() { echo -e "
|
usage() { echo -e "
|
||||||
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
Usage: $0 [-b] [-c] [-d <HDF5 directory>] [e] [g] [-h] [i] [-j <Number of threads>] [-k <CMake command>] [-l <Install directory>] [m] [n] [-p] [r] [s] [t] [u] [z]
|
||||||
-[no option]: only make
|
-[no option]: only make
|
||||||
-c: Clean
|
|
||||||
-b: Builds/Rebuilds CMake files normal mode
|
-b: Builds/Rebuilds CMake files normal mode
|
||||||
-p: Builds/Rebuilds Python API
|
-c: Clean
|
||||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
|
||||||
-d: HDF5 Custom Directory
|
-d: HDF5 Custom Directory
|
||||||
|
-e: Debug mode
|
||||||
|
-g: Build/Rebuilds gui
|
||||||
|
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||||
|
-i: Builds tests
|
||||||
|
-j: Number of threads to compile through
|
||||||
-k: CMake command
|
-k: CMake command
|
||||||
-l: Install directory
|
-l: Install directory
|
||||||
-t: Build/Rebuilds only text client
|
|
||||||
-r: Build/Rebuilds only receiver
|
|
||||||
-g: Build/Rebuilds only gui
|
|
||||||
-s: Simulator
|
|
||||||
-u: Chip Test Gui
|
|
||||||
-j: Number of threads to compile through
|
|
||||||
-e: Debug mode
|
|
||||||
-i: Builds tests
|
|
||||||
-m: Manuals
|
-m: Manuals
|
||||||
-n: Manuals without compiling doxygen (only rst)
|
-n: Manuals without compiling doxygen (only rst)
|
||||||
|
-p: Builds/Rebuilds Python API
|
||||||
|
-r: Build/Rebuilds only receiver
|
||||||
|
-s: Simulator
|
||||||
|
-t: Build/Rebuilds only text client
|
||||||
|
-u: Chip Test Gui
|
||||||
-z: Moench zmq processor
|
-z: Moench zmq processor
|
||||||
|
|
||||||
Rebuild when you switch to a new build and compile in parallel:
|
Rebuild when you switch to a new build and compile in parallel:
|
||||||
@ -79,69 +81,50 @@ For rebuilding only certain sections
|
|||||||
|
|
||||||
" ; exit 1; }
|
" ; exit 1; }
|
||||||
|
|
||||||
while getopts ":bpchd:k:l:j:trgeisumnz" opt ; do
|
while getopts ":bcd:eghij:k:l:mnpq:rstuz" opt ; do
|
||||||
case $opt in
|
case $opt in
|
||||||
b)
|
b)
|
||||||
echo "Building of CMake files Required"
|
echo "Building of CMake files Required"
|
||||||
REBUILD=1
|
REBUILD=1
|
||||||
;;
|
;;
|
||||||
p)
|
|
||||||
echo "Compiling Options: Python"
|
|
||||||
PYTHON=1
|
|
||||||
REBUILD=1
|
|
||||||
;;
|
|
||||||
c)
|
c)
|
||||||
echo "Clean Required"
|
echo "Clean Required"
|
||||||
CLEAN=1
|
CLEAN=1
|
||||||
;;
|
;;
|
||||||
h)
|
|
||||||
echo "Building of CMake files with HDF5 option Required"
|
|
||||||
HDF5=1
|
|
||||||
REBUILD=1
|
|
||||||
;;
|
|
||||||
d)
|
d)
|
||||||
echo "New HDF5 directory: $OPTARG"
|
echo "New HDF5 directory: $OPTARG"
|
||||||
HDF5DIR=$OPTARG
|
HDF5DIR=$OPTARG
|
||||||
;;
|
;;
|
||||||
l)
|
e)
|
||||||
echo "CMake install directory: $OPTARG"
|
echo "Compiling Options: Debug"
|
||||||
INSTALLDIR="$OPTARG"
|
DEBUG=1
|
||||||
|
;;
|
||||||
|
g)
|
||||||
|
echo "Compiling Options: GUI"
|
||||||
|
GUI=1
|
||||||
|
REBUILD=1
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
echo "Building of CMake files with HDF5 option Required"
|
||||||
|
HDF5=1
|
||||||
|
REBUILD=1
|
||||||
|
;;
|
||||||
|
i)
|
||||||
|
echo "Compiling Options: Tests"
|
||||||
|
TESTS=1
|
||||||
|
;;
|
||||||
|
j)
|
||||||
|
echo "Number of compiler threads: $OPTARG"
|
||||||
|
COMPILERTHREADS=$OPTARG
|
||||||
;;
|
;;
|
||||||
k)
|
k)
|
||||||
echo "CMake command: $OPTARG"
|
echo "CMake command: $OPTARG"
|
||||||
CMAKE="$OPTARG"
|
CMAKE="$OPTARG"
|
||||||
;;
|
;;
|
||||||
j)
|
l)
|
||||||
echo "Number of compiler threads: $OPTARG"
|
echo "CMake install directory: $OPTARG"
|
||||||
COMPILERTHREADS=$OPTARG
|
INSTALLDIR="$OPTARG"
|
||||||
;;
|
;;
|
||||||
t)
|
|
||||||
echo "Compiling Options: Text Client"
|
|
||||||
TEXTCLIENT=1
|
|
||||||
REBUILD=1
|
|
||||||
;;
|
|
||||||
r)
|
|
||||||
echo "Compiling Options: Receiver"
|
|
||||||
RECEIVER=1
|
|
||||||
REBUILD=1
|
|
||||||
;;
|
|
||||||
g)
|
|
||||||
echo "Compiling Options: GUI"
|
|
||||||
GUI=1
|
|
||||||
REBUILD=1
|
|
||||||
;;
|
|
||||||
e)
|
|
||||||
echo "Compiling Options: Debug"
|
|
||||||
DEBUG=1
|
|
||||||
;;
|
|
||||||
i)
|
|
||||||
echo "Compiling Options: Tests"
|
|
||||||
TESTS=1
|
|
||||||
;;
|
|
||||||
s)
|
|
||||||
echo "Compiling Options: Simulator"
|
|
||||||
SIMULATOR=1
|
|
||||||
;;
|
|
||||||
m)
|
m)
|
||||||
echo "Compiling Manuals"
|
echo "Compiling Manuals"
|
||||||
MANUALS=1
|
MANUALS=1
|
||||||
@ -150,14 +133,33 @@ while getopts ":bpchd:k:l:j:trgeisumnz" opt ; do
|
|||||||
echo "Compiling Manuals (Only RST)"
|
echo "Compiling Manuals (Only RST)"
|
||||||
MANUALS_ONLY_RST=1
|
MANUALS_ONLY_RST=1
|
||||||
;;
|
;;
|
||||||
z)
|
p)
|
||||||
echo "Compiling Moench Zmq Processor"
|
echo "Compiling Options: Python"
|
||||||
MOENCHZMQ=1
|
PYTHON=1
|
||||||
|
REBUILD=1
|
||||||
|
;;
|
||||||
|
r)
|
||||||
|
echo "Compiling Options: Receiver"
|
||||||
|
RECEIVER=1
|
||||||
|
REBUILD=1
|
||||||
|
;;
|
||||||
|
s)
|
||||||
|
echo "Compiling Options: Simulator"
|
||||||
|
SIMULATOR=1
|
||||||
|
;;
|
||||||
|
t)
|
||||||
|
echo "Compiling Options: Text Client"
|
||||||
|
TEXTCLIENT=1
|
||||||
|
REBUILD=1
|
||||||
;;
|
;;
|
||||||
u)
|
u)
|
||||||
echo "Compiling Options: Chip Test Gui"
|
echo "Compiling Options: Chip Test Gui"
|
||||||
CTBGUI=1
|
CTBGUI=1
|
||||||
;;
|
;;
|
||||||
|
z)
|
||||||
|
echo "Compiling Moench Zmq Processor"
|
||||||
|
MOENCHZMQ=1
|
||||||
|
;;
|
||||||
\?)
|
\?)
|
||||||
echo "Invalid option: -$OPTARG"
|
echo "Invalid option: -$OPTARG"
|
||||||
usage
|
usage
|
||||||
@ -252,7 +254,6 @@ if [ $TESTS -eq 1 ]; then
|
|||||||
echo "Tests Option enabled"
|
echo "Tests Option enabled"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#hdf5 rebuild
|
#hdf5 rebuild
|
||||||
if [ $HDF5 -eq 1 ]; then
|
if [ $HDF5 -eq 1 ]; then
|
||||||
# CMAKE_PRE+="HDF5_ROOT="$HDF5DIR
|
# CMAKE_PRE+="HDF5_ROOT="$HDF5DIR
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
mkdir build
|
mkdir build
|
||||||
mkdir install
|
mkdir install
|
||||||
@ -19,4 +21,4 @@ echo "Building using: ${NCORES} cores"
|
|||||||
cmake --build . -- -j${NCORES}
|
cmake --build . -- -j${NCORES}
|
||||||
cmake --build . --target install
|
cmake --build . --target install
|
||||||
|
|
||||||
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 1
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
echo "|<-------- starting python build"
|
echo "|<-------- starting python build"
|
||||||
cd python
|
cd python
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
python:
|
python:
|
||||||
- 3.6
|
|
||||||
- 3.7
|
|
||||||
- 3.8
|
- 3.8
|
||||||
- 3.9
|
- 3.9
|
||||||
|
- 3.10
|
||||||
|
- 3.11
|
||||||
|
|
||||||
numpy:
|
numpy:
|
||||||
- 1.17
|
- 1.17
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
mkdir $PREFIX/lib
|
mkdir $PREFIX/lib
|
||||||
mkdir $PREFIX/bin
|
mkdir $PREFIX/bin
|
||||||
mkdir $PREFIX/include
|
mkdir $PREFIX/include
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#Copy the GUI
|
#Copy the GUI
|
||||||
mkdir -p $PREFIX/bin
|
mkdir -p $PREFIX/bin
|
||||||
cp build/install/bin/slsDetectorGui $PREFIX/bin/.
|
cp build/install/bin/slsDetectorGui $PREFIX/bin/.
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
mkdir -p $PREFIX/lib
|
mkdir -p $PREFIX/lib
|
||||||
mkdir -p $PREFIX/bin
|
mkdir -p $PREFIX/bin
|
||||||
@ -17,4 +19,4 @@ cp build/install/bin/slsMultiReceiver $PREFIX/bin/.
|
|||||||
|
|
||||||
|
|
||||||
cp build/install/include/sls/* $PREFIX/include/sls
|
cp build/install/include/sls/* $PREFIX/include/sls
|
||||||
cp -r build/install/share/ $PREFIX/share
|
cp -rv build/install/share $PREFIX
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
#Copy the Moench executables
|
#Copy the Moench executables
|
||||||
mkdir -p $PREFIX/bin
|
mkdir -p $PREFIX/bin
|
||||||
cp build/install/bin/moench04ZmqProcess $PREFIX/bin/.
|
cp build/install/bin/moench* $PREFIX/bin/.
|
||||||
cp build/install/bin/moenchZmqProcess $PREFIX/bin/.
|
|
||||||
|
@ -17,8 +17,7 @@ requirements:
|
|||||||
- {{ compiler('c') }}
|
- {{ compiler('c') }}
|
||||||
- {{compiler('cxx')}}
|
- {{compiler('cxx')}}
|
||||||
- cmake
|
- cmake
|
||||||
- qwt 6.*
|
- qt 5.*
|
||||||
- qt 4.8.*
|
|
||||||
- zeromq
|
- zeromq
|
||||||
- xorg-libx11
|
- xorg-libx11
|
||||||
- xorg-libice
|
- xorg-libice
|
||||||
@ -111,12 +110,10 @@ outputs:
|
|||||||
- {{ compiler('c') }}
|
- {{ compiler('c') }}
|
||||||
- {{compiler('cxx')}}
|
- {{compiler('cxx')}}
|
||||||
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||||
- qwt 6.*
|
|
||||||
|
|
||||||
run:
|
run:
|
||||||
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||||
- qwt 6.*
|
- qt 5.*
|
||||||
- qt 4.8.*
|
|
||||||
- expat
|
- expat
|
||||||
|
|
||||||
- name: moenchzmq
|
- name: moenchzmq
|
||||||
|
@ -1 +1,3 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
ctest -j2
|
ctest -j2
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
|
|
||||||
find_package(ROOT CONFIG REQUIRED COMPONENTS Core Gui)
|
find_package(ROOT CONFIG REQUIRED COMPONENTS Core Gui)
|
||||||
@ -32,7 +34,7 @@ add_executable(ctbGui
|
|||||||
ctbAdcs.cpp
|
ctbAdcs.cpp
|
||||||
ctbPattern.cpp
|
ctbPattern.cpp
|
||||||
ctbAcquisition.cpp
|
ctbAcquisition.cpp
|
||||||
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/tiffIO.cpp
|
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/tiffio/src/tiffIO.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -41,6 +43,7 @@ target_include_directories(ctbGui PRIVATE
|
|||||||
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/dataStructures
|
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/dataStructures
|
||||||
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/interpolations
|
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/interpolations
|
||||||
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/
|
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/
|
||||||
|
${CMAKE_SOURCE_DIR}/slsDetectorCalibration/tiffio/include/
|
||||||
)
|
)
|
||||||
|
|
||||||
# Headders needed for ROOT dictionary generation
|
# Headders needed for ROOT dictionary generation
|
||||||
@ -59,7 +62,6 @@ set( HEADERS
|
|||||||
#set(ROOT_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
#set(ROOT_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
# ROOT dictionary generation
|
# ROOT dictionary generation
|
||||||
include("${ROOT_DIR}/RootMacros.cmake")
|
|
||||||
root_generate_dictionary(ctbDict ${HEADERS} LINKDEF ctbLinkDef.h)
|
root_generate_dictionary(ctbDict ${HEADERS} LINKDEF ctbLinkDef.h)
|
||||||
add_library(ctbRootLib SHARED ctbDict.cxx)
|
add_library(ctbRootLib SHARED ctbDict.cxx)
|
||||||
target_include_directories(ctbRootLib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
target_include_directories(ctbRootLib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
@ -84,4 +86,5 @@ target_link_libraries(ctbGui PUBLIC
|
|||||||
set_target_properties(ctbGui PROPERTIES
|
set_target_properties(ctbGui PROPERTIES
|
||||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
|
|
||||||
INCS=ctbMain.h ctbDacs.h ctbPattern.h ctbSignals.h ctbAdcs.h ctbAcquisition.h ctbPowers.h ctbSlowAdcs.h
|
INCS=ctbMain.h ctbDacs.h ctbPattern.h ctbSignals.h ctbAdcs.h ctbAcquisition.h ctbPowers.h ctbSlowAdcs.h
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
|
|
||||||
INCS=ctbMain.h ctbDacs.h ctbPattern.h ctbSignals.h ctbAdcs.h ctbAcquisition.h ctbPowers.h ctbSlowAdcs.h
|
INCS=ctbMain.h ctbDacs.h ctbPattern.h ctbSignals.h ctbAdcs.h ctbAcquisition.h ctbPowers.h ctbSlowAdcs.h
|
||||||
|
8
ctbGui/ctbAcquisition.cpp
Executable file → Normal file
8
ctbGui/ctbAcquisition.cpp
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
//#define TESTADC
|
//#define TESTADC
|
||||||
|
|
||||||
|
|
||||||
@ -826,14 +828,14 @@ void ctbAcquisition::setCanvas(TCanvas* c) {
|
|||||||
myCanvas->AddExec("dynamic",Form("((ctbAcquisition*)%p)->canvasClicked()",this));
|
myCanvas->AddExec("dynamic",Form("((ctbAcquisition*)%p)->canvasClicked()",this));
|
||||||
// myCanvas->AddExec("ex","canvasClicked()");
|
// myCanvas->AddExec("ex","canvasClicked()");
|
||||||
}
|
}
|
||||||
void ctbAcquisition::dataCallback(detectorData *data, long unsigned int index, unsigned int dum, void* pArgs) {
|
void ctbAcquisition::dataCallback(sls::detectorData *data, long unsigned int index, unsigned int dum, void* pArgs) {
|
||||||
|
|
||||||
// return
|
// return
|
||||||
((ctbAcquisition*)pArgs)->plotData(data,index);
|
((ctbAcquisition*)pArgs)->plotData(data,index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ctbAcquisition::plotData(detectorData *data, int index) {
|
int ctbAcquisition::plotData(sls::detectorData *data, int index) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
******************************************************************
|
******************************************************************
|
||||||
@ -986,7 +988,7 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
|
|||||||
ped=0;
|
ped=0;
|
||||||
aval=dataStructure->getValue(data->data,x,y);
|
aval=dataStructure->getValue(data->data,x,y);
|
||||||
//aval=dataStructure->getChannel(data->data,x,y);
|
//aval=dataStructure->getChannel(data->data,x,y);
|
||||||
cout << x << " " <<y << " "<< aval << endl;
|
// cout << x << " " <<y << " "<< aval << endl;
|
||||||
if (cbGetPedestal->IsOn()) {
|
if (cbGetPedestal->IsOn()) {
|
||||||
if (photonFinder) {
|
if (photonFinder) {
|
||||||
photonFinder->addToPedestal(aval,x,y);
|
photonFinder->addToPedestal(aval,x,y);
|
||||||
|
8
ctbGui/ctbAcquisition.h
Executable file → Normal file
8
ctbGui/ctbAcquisition.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#ifndef CTBACQUISITION_H
|
#ifndef CTBACQUISITION_H
|
||||||
#define CTBACQUISITION_H
|
#define CTBACQUISITION_H
|
||||||
#include <TGFrame.h>
|
#include <TGFrame.h>
|
||||||
@ -26,8 +28,8 @@ class TGTextButton;
|
|||||||
namespace sls
|
namespace sls
|
||||||
{
|
{
|
||||||
class Detector;
|
class Detector;
|
||||||
|
class detectorData;
|
||||||
};
|
};
|
||||||
class detectorData;
|
|
||||||
|
|
||||||
template <class dataType> class slsDetectorData;
|
template <class dataType> class slsDetectorData;
|
||||||
|
|
||||||
@ -199,10 +201,10 @@ class ctbAcquisition : public TGGroupFrame {
|
|||||||
void setBitGraph (int i ,int en, Pixel_t col);
|
void setBitGraph (int i ,int en, Pixel_t col);
|
||||||
void startAcquisition();
|
void startAcquisition();
|
||||||
static void progressCallback(double,void*);
|
static void progressCallback(double,void*);
|
||||||
static void dataCallback(detectorData*, long unsigned int, unsigned int, void*);
|
static void dataCallback(sls::detectorData*, long unsigned int, unsigned int, void*);
|
||||||
int StopFlag;
|
int StopFlag;
|
||||||
|
|
||||||
int plotData(detectorData*, int);
|
int plotData(sls::detectorData*, int);
|
||||||
|
|
||||||
void setPatternFile(const char* t);
|
void setPatternFile(const char* t);
|
||||||
|
|
||||||
|
2
ctbGui/ctbAdcs.cpp
Executable file → Normal file
2
ctbGui/ctbAdcs.cpp
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include <TApplication.h>
|
#include <TApplication.h>
|
||||||
#include <TGClient.h>
|
#include <TGClient.h>
|
||||||
#include <TCanvas.h>
|
#include <TCanvas.h>
|
||||||
|
2
ctbGui/ctbAdcs.h
Executable file → Normal file
2
ctbGui/ctbAdcs.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2
ctbGui/ctbDacs.cpp
Executable file → Normal file
2
ctbGui/ctbDacs.cpp
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
2
ctbGui/ctbDacs.h
Executable file → Normal file
2
ctbGui/ctbDacs.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
|
|
||||||
#ifndef CTBDACS_H
|
#ifndef CTBDACS_H
|
||||||
|
2
ctbGui/ctbDefs.h
Executable file → Normal file
2
ctbGui/ctbDefs.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
2
ctbGui/ctbGui.cpp
Executable file → Normal file
2
ctbGui/ctbGui.cpp
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include <TApplication.h>
|
#include <TApplication.h>
|
||||||
#include <TColor.h>
|
#include <TColor.h>
|
||||||
|
|
||||||
|
2
ctbGui/ctbLinkDef.h
Executable file → Normal file
2
ctbGui/ctbLinkDef.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#pragma link C++ class ctbMain;
|
#pragma link C++ class ctbMain;
|
||||||
#pragma link C++ class ctbDacs;
|
#pragma link C++ class ctbDacs;
|
||||||
#pragma link C++ class ctbDac;
|
#pragma link C++ class ctbDac;
|
||||||
|
2
ctbGui/ctbMain.cpp
Executable file → Normal file
2
ctbGui/ctbMain.cpp
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include <TApplication.h>
|
#include <TApplication.h>
|
||||||
#include <TGClient.h>
|
#include <TGClient.h>
|
||||||
#include <TCanvas.h>
|
#include <TCanvas.h>
|
||||||
|
2
ctbGui/ctbMain.h
Executable file → Normal file
2
ctbGui/ctbMain.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#ifndef CTBMAIN_H
|
#ifndef CTBMAIN_H
|
||||||
#define CTBMAIN_H
|
#define CTBMAIN_H
|
||||||
#include <TGFrame.h>
|
#include <TGFrame.h>
|
||||||
|
2
ctbGui/ctbPattern.cpp
Executable file → Normal file
2
ctbGui/ctbPattern.cpp
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include <TApplication.h>
|
#include <TApplication.h>
|
||||||
#include <TGClient.h>
|
#include <TGClient.h>
|
||||||
#include <TCanvas.h>
|
#include <TCanvas.h>
|
||||||
|
2
ctbGui/ctbPattern.h
Executable file → Normal file
2
ctbGui/ctbPattern.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#ifndef CTBPATTERN_H
|
#ifndef CTBPATTERN_H
|
||||||
#define CTBPATTERN_H
|
#define CTBPATTERN_H
|
||||||
#include <TGFrame.h>
|
#include <TGFrame.h>
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include <TGFrame.h>
|
#include <TGFrame.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#ifndef CTBPOWERS_H
|
#ifndef CTBPOWERS_H
|
||||||
#define CTBPOWERS_H
|
#define CTBPOWERS_H
|
||||||
|
|
||||||
|
2
ctbGui/ctbSignals.cpp
Executable file → Normal file
2
ctbGui/ctbSignals.cpp
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include <TApplication.h>
|
#include <TApplication.h>
|
||||||
#include <TGClient.h>
|
#include <TGClient.h>
|
||||||
#include <TCanvas.h>
|
#include <TCanvas.h>
|
||||||
|
2
ctbGui/ctbSignals.h
Executable file → Normal file
2
ctbGui/ctbSignals.h
Executable file → Normal file
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#ifndef CTBSIGNALS_H
|
#ifndef CTBSIGNALS_H
|
||||||
#define CTBSIGNALS_H
|
#define CTBSIGNALS_H
|
||||||
#include <TGFrame.h>
|
#include <TGFrame.h>
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
|
|
||||||
#ifndef CTBSLOWADCS_H
|
#ifndef CTBSLOWADCS_H
|
||||||
|
@ -1,110 +0,0 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/utsname.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
|
|
||||||
int iarg;
|
|
||||||
char fname[10000];
|
|
||||||
uint64_t word;
|
|
||||||
int val[64];
|
|
||||||
int bit[64];
|
|
||||||
FILE *fdin;
|
|
||||||
|
|
||||||
int nb=2;
|
|
||||||
int off=0;
|
|
||||||
int ioff=0;
|
|
||||||
int dr=24;
|
|
||||||
int idr=0;
|
|
||||||
int ib=0;
|
|
||||||
int iw=0;
|
|
||||||
bit[0]=19;
|
|
||||||
bit[1]=8;
|
|
||||||
// for (iarg=0; iarg<argc; iarg++) printf("%d %s\n",iarg, argv[iarg]);
|
|
||||||
|
|
||||||
if (argc<2) printf("Error: usage is %s fname [dr off b0 b1 bn]\n");
|
|
||||||
|
|
||||||
if (argc>2) dr=atoi(argv[2]);
|
|
||||||
if (argc>3) off=atoi(argv[3]);
|
|
||||||
if (argc>4) {
|
|
||||||
for (ib=0; ib<64; ib++) {
|
|
||||||
if (argc>4+ib) {
|
|
||||||
bit[ib]=atoi(argv[4+ib]);
|
|
||||||
nb++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
idr=0;
|
|
||||||
for (ib=0; ib<nb; ib++) {
|
|
||||||
val[ib]=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fdin=fopen(argv[1],"rb");
|
|
||||||
if (fdin==NULL) {
|
|
||||||
printf("Cannot open input file %s for reading\n",argv[1]);
|
|
||||||
return 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (fread((void*)&word, 8, 1, fdin)) {
|
|
||||||
// printf("%llx\n",word);
|
|
||||||
if (ioff<off) ioff++;
|
|
||||||
else {
|
|
||||||
|
|
||||||
for (ib=0; ib<nb; ib++) {
|
|
||||||
if (word&(1<<bit[ib])) val[ib]|=(1<<idr);
|
|
||||||
}
|
|
||||||
idr++;
|
|
||||||
if (idr==dr) {
|
|
||||||
idr=0;
|
|
||||||
fprintf(stdout,"%d\t",iw++);
|
|
||||||
for (ib=0; ib<nb; ib++) {
|
|
||||||
#ifdef HEX
|
|
||||||
fprintf(stdout,"%08llx\t",val[ib]);
|
|
||||||
#else
|
|
||||||
fprintf(stdout,"%lld\t",val[ib]);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
val[ib]=0;
|
|
||||||
}
|
|
||||||
fprintf(stdout,"\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if (idr!=0) {
|
|
||||||
fprintf(stdout,"%d\t",iw++);
|
|
||||||
for (ib=0; ib<nb; ib++) {
|
|
||||||
#ifdef HEX
|
|
||||||
fprintf(stdout,"%08llx\t",val[ib]);
|
|
||||||
#else
|
|
||||||
fprintf(stdout,"%lld\t",val[ib]);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
val[ib]=0;
|
|
||||||
}
|
|
||||||
fprintf(stdout,"\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fdin);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,177 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
usage to generate a patter test.pat from test.p
|
|
||||||
|
|
||||||
gcc -DINFILE="\"test.p\"" -DOUTFILE="\"test.pat\"" -o test.exe generator.c ; ./test.exe ; rm test.exe
|
|
||||||
|
|
||||||
|
|
||||||
*************************************************************************/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/utsname.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#define MAXLOOPS 3
|
|
||||||
#define MAXTIMERS 3
|
|
||||||
#define MAXWORDS 1024
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint64_t pat=0;
|
|
||||||
uint64_t iopat=0;
|
|
||||||
uint64_t clkpat=0;
|
|
||||||
|
|
||||||
int iaddr=0;
|
|
||||||
int waitaddr[3]={MAXWORDS,MAXWORDS,MAXWORDS};
|
|
||||||
int startloopaddr[3]={MAXWORDS,MAXWORDS,MAXWORDS};
|
|
||||||
int stoploopaddr[3]={MAXWORDS,MAXWORDS,MAXWORDS};
|
|
||||||
int start=0, stop=0;
|
|
||||||
uint64_t waittime[3]={0,0,0};
|
|
||||||
int nloop[3]={0,0,0};
|
|
||||||
|
|
||||||
char infile[10000], outfile[10000];
|
|
||||||
|
|
||||||
FILE *fd, *fd1;
|
|
||||||
uint64_t PAT[MAXWORDS];
|
|
||||||
|
|
||||||
|
|
||||||
int i,ii,iii,j,jj,jjj,pixx,pixy,memx,memy,muxout,memclk,colclk,rowclk,muxclk,memcol,memrow,loopcounter;
|
|
||||||
|
|
||||||
void setstart() {
|
|
||||||
start=iaddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setstop() {
|
|
||||||
stop=iaddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setinput(int bit) {
|
|
||||||
uint64_t mask=1;
|
|
||||||
mask=mask<<bit;
|
|
||||||
iopat &= ~mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setoutput(int bit) {
|
|
||||||
uint64_t mask=1;
|
|
||||||
mask=mask<<bit;
|
|
||||||
iopat |= mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setclk(int bit) {
|
|
||||||
uint64_t mask=1;
|
|
||||||
mask=mask<<bit;
|
|
||||||
iopat |= mask;
|
|
||||||
clkpat |= mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
void clearbit(int bit){
|
|
||||||
uint64_t mask=1;
|
|
||||||
mask=mask<<bit;
|
|
||||||
pat &= ~mask;
|
|
||||||
}
|
|
||||||
void setbit(int bit){
|
|
||||||
uint64_t mask=1;
|
|
||||||
mask=mask<<bit;
|
|
||||||
pat |= mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
int checkbit(int bit) {
|
|
||||||
uint64_t mask=1;
|
|
||||||
mask=mask<<bit;
|
|
||||||
return (pat & mask ) >>bit;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setstartloop(int iloop) {
|
|
||||||
if (iloop>=0 && iloop<MAXLOOPS)
|
|
||||||
startloopaddr[iloop]=iaddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void setstoploop(int iloop) {
|
|
||||||
if (iloop>=0 && iloop<MAXLOOPS)
|
|
||||||
stoploopaddr[iloop]=iaddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void setnloop(int iloop, int n) {
|
|
||||||
if (iloop>=0 && iloop<MAXLOOPS)
|
|
||||||
nloop[iloop]=n;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setwaitpoint(int iloop) {
|
|
||||||
if (iloop>=0 && iloop<MAXTIMERS)
|
|
||||||
waitaddr[iloop]=iaddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void setwaittime(int iloop, uint64_t t) {
|
|
||||||
if (iloop>=0 && iloop<MAXTIMERS)
|
|
||||||
waittime[iloop]=t;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void pw(){
|
|
||||||
if (iaddr<MAXWORDS)
|
|
||||||
PAT[iaddr]= pat;
|
|
||||||
fprintf(fd,"patword 0x%04x 0x%016llx\n",iaddr, pat);
|
|
||||||
iaddr++;
|
|
||||||
if (iaddr>=MAXWORDS) printf("ERROR: too many word in the pattern (%d instead of %d)!",iaddr, MAXWORDS);
|
|
||||||
}
|
|
||||||
|
|
||||||
int parseCommand(int clk, int cmdbit, int cmd, int length) {
|
|
||||||
int ibit;
|
|
||||||
clearbit(clk);
|
|
||||||
for (ibit=0; ibit<length; ibit++) {
|
|
||||||
if (cmd&(1>>ibit))
|
|
||||||
setbit(cmdbit);
|
|
||||||
else
|
|
||||||
clearbit(cmdbit);
|
|
||||||
pw();
|
|
||||||
/******/
|
|
||||||
setbit(clk);
|
|
||||||
pw();
|
|
||||||
/******/
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
main(void) {
|
|
||||||
int iloop=0;
|
|
||||||
fd=fopen(OUTFILE,"w");
|
|
||||||
#include INFILE
|
|
||||||
|
|
||||||
fprintf(fd,"patioctrl 0x%016llx\n",iopat);
|
|
||||||
fprintf(fd,"patclkctrl 0x%016llx\n",clkpat);
|
|
||||||
fprintf(fd,"patlimits 0x%04x 0x%04x\n",start, stop);
|
|
||||||
|
|
||||||
for (iloop=0; iloop<MAXLOOPS; iloop++) {
|
|
||||||
fprintf(fd,"patloop%d 0x%04x 0x%04x\n",iloop, startloopaddr[iloop], stoploopaddr[iloop]);
|
|
||||||
if ( startloopaddr[iloop]<0 || stoploopaddr[iloop]<= startloopaddr[iloop]) nloop[iloop]=0;
|
|
||||||
fprintf(fd,"patnloop%d %d\n",iloop, nloop[iloop]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (iloop=0; iloop<MAXTIMERS; iloop++) {
|
|
||||||
fprintf(fd,"patwait%d 0x%04x\n",iloop, waitaddr[iloop]);
|
|
||||||
if (waitaddr[iloop]<0) waittime[iloop]=0;
|
|
||||||
fprintf(fd,"patwaittime%d %lld\n",iloop, waittime[iloop]);
|
|
||||||
}
|
|
||||||
|
|
||||||
close((int)fd);
|
|
||||||
fd1=fopen(OUTFILEBIN,"w");
|
|
||||||
fwrite(PAT,sizeof(uint64_t),iaddr, fd1);
|
|
||||||
close((int)fd1);
|
|
||||||
}
|
|
@ -1,201 +0,0 @@
|
|||||||
//define signals and directions (Input, outputs, clocks)
|
|
||||||
|
|
||||||
|
|
||||||
#define compTestIN 1
|
|
||||||
setoutput(compTestIN);
|
|
||||||
|
|
||||||
#define curON 32
|
|
||||||
setoutput(curON);
|
|
||||||
|
|
||||||
#define side_clk 2
|
|
||||||
setclk(side_clk);
|
|
||||||
|
|
||||||
#define side_din 3
|
|
||||||
setoutput(side_din);
|
|
||||||
|
|
||||||
#define clear_shr 4
|
|
||||||
setoutput(clear_shr);
|
|
||||||
|
|
||||||
#define bottom_din 5
|
|
||||||
setoutput(bottom_din);
|
|
||||||
|
|
||||||
#define bottom_clk 6
|
|
||||||
setclk(bottom_clk);
|
|
||||||
|
|
||||||
#define gHG 7
|
|
||||||
setoutput(gHG);
|
|
||||||
|
|
||||||
#define bypassCDS 31
|
|
||||||
setoutput(bypassCDS);
|
|
||||||
|
|
||||||
|
|
||||||
#define ENprechPRE 8
|
|
||||||
setoutput(ENprechPRE);
|
|
||||||
|
|
||||||
|
|
||||||
#define res 9
|
|
||||||
setoutput(res);
|
|
||||||
|
|
||||||
#define pulseOFF 30
|
|
||||||
setoutput(pulseOFF);
|
|
||||||
|
|
||||||
#define connCDS 27
|
|
||||||
setoutput(connCDS);
|
|
||||||
|
|
||||||
#define Dsg_1 24
|
|
||||||
setoutput(Dsg_1);
|
|
||||||
|
|
||||||
|
|
||||||
#define Dsg_2 25
|
|
||||||
setoutput(Dsg_2);
|
|
||||||
|
|
||||||
|
|
||||||
#define Dsg_3 23
|
|
||||||
setoutput(Dsg_3);
|
|
||||||
|
|
||||||
#define sto0 10
|
|
||||||
setoutput(sto0);
|
|
||||||
|
|
||||||
#define sto1 11
|
|
||||||
setoutput(sto1);
|
|
||||||
|
|
||||||
#define sto2 12
|
|
||||||
setoutput(sto2);
|
|
||||||
|
|
||||||
#define resCDS 13
|
|
||||||
setoutput(resCDS);
|
|
||||||
|
|
||||||
#define prechargeConnect 14
|
|
||||||
setoutput(prechargeConnect);
|
|
||||||
|
|
||||||
#define pulse 15
|
|
||||||
setoutput(pulse);
|
|
||||||
|
|
||||||
#define PCT_mode 21
|
|
||||||
setoutput(PCT_mode);
|
|
||||||
|
|
||||||
#define res_DGS 16
|
|
||||||
setoutput(res_DGS);
|
|
||||||
|
|
||||||
#define adc_ena 17
|
|
||||||
setoutput(adc_ena);
|
|
||||||
|
|
||||||
|
|
||||||
#define CLKBIT 18
|
|
||||||
setclk(CLKBIT);
|
|
||||||
|
|
||||||
|
|
||||||
#define adc_sync 63
|
|
||||||
setoutput(adc_sync);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define PW pw()
|
|
||||||
#define SB(x) setbit(x)
|
|
||||||
#define CB(x) clearbit(x)
|
|
||||||
#define CLOCK clearbit(CLKBIT); pw();setbit(CLKBIT);pw()
|
|
||||||
#define LCLOCK clearbit(CLKBIT); pw();setbit(CLKBIT);pw();clearbit(CLKBIT); pw()
|
|
||||||
#define CLOCKS(x) for (i=0;i<x;i++) {clearbit(CLKBIT);pw(); setbit(CLKBIT); pw();}
|
|
||||||
#define STOP setstop();
|
|
||||||
#define START setstart();
|
|
||||||
#define REPEAT(x) for (i=0;i<(x);i++) {pw();}
|
|
||||||
#define DOFOR(x) for (j=0;j<(x);j++) {
|
|
||||||
// }
|
|
||||||
#define STARTUP1 CB(compTestIN);SB(clear_shr);CB(side_clk);CB(side_din);CB(bottom_din);CB(bottom_clk);
|
|
||||||
#define STARTUP2 CB(pulse);SB(PCT_mode);SB(pulseOFF);CB(curON);
|
|
||||||
#define STARTUP3 SB(res);SB(gHG);SB(ENprechPRE);
|
|
||||||
#define STARTUP4 SB(bypassCDS); CB(connCDS);CB(sto0);SB(sto1);SB(sto2);
|
|
||||||
#define STARTUP5 SB(resCDS);CB(Dsg_1);CB(Dsg_2);SB(Dsg_3);CB(prechargeConnect);SB(res_DGS);
|
|
||||||
#define STARTUP STARTUP1 STARTUP2 STARTUP3 STARTUP4 STARTUP5 PW;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//****NOTES****//
|
|
||||||
//FUNCTIONS
|
|
||||||
//Declare functions at the beginning
|
|
||||||
void load_pix(int nx, int ny)
|
|
||||||
{//SELECT PIXEL 1,1 for readout
|
|
||||||
SB(clear_shr);PW;PW;
|
|
||||||
CB(clear_shr);PW;PW;PW;PW;
|
|
||||||
|
|
||||||
SB(side_din);PW;
|
|
||||||
SB(side_clk);PW;
|
|
||||||
CB(side_din);
|
|
||||||
setstartloop(0); //loop on the rows
|
|
||||||
SB(side_clk);PW;
|
|
||||||
setstoploop(0); //finish loop on the rows
|
|
||||||
setnloop(0,ny); //set number row selected -can be changed dynamically
|
|
||||||
CB(side_clk);PW;
|
|
||||||
SB(bottom_din);PW;
|
|
||||||
SB(bottom_clk);PW;
|
|
||||||
CB(bottom_din);
|
|
||||||
setstartloop(1); //loop on the columns
|
|
||||||
SB(bottom_clk);PW;
|
|
||||||
setstoploop(1); //loop on the columns
|
|
||||||
setnloop(1,ny); //set number columns selected -can be changed dynamically
|
|
||||||
}
|
|
||||||
|
|
||||||
void load_col(void)
|
|
||||||
{//SELECT COLUMN 1 for readout
|
|
||||||
SB(clear_shr);PW;PW;
|
|
||||||
CB(clear_shr);PW;PW;PW;PW;
|
|
||||||
SB(bottom_din);PW;
|
|
||||||
SB(bottom_clk);PW;
|
|
||||||
CB(bottom_clk);PW;
|
|
||||||
CB(bottom_din);PW;
|
|
||||||
}
|
|
||||||
//END of FUNCTIONS
|
|
||||||
////////////////////////////////////////////////////////
|
|
||||||
//LET BYPASS PREAMP AND CDS and write on preamp out.//
|
|
||||||
//THIS ALLOWS CHECKING SOURCE FOLLOWERS //
|
|
||||||
////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
PW;
|
|
||||||
|
|
||||||
SB(5); PW;
|
|
||||||
|
|
||||||
CB(5); PW;
|
|
||||||
|
|
||||||
START; //pattern starts from here
|
|
||||||
STARTUP;
|
|
||||||
setwaitpoint(0); //set wait points
|
|
||||||
PW;
|
|
||||||
setwaittime(0,20); //wait time - can be changed dynamically
|
|
||||||
SB(adc_ena);PW;
|
|
||||||
printf("ADC sync %x %d %llx\n",iaddr,adc_sync, pat);
|
|
||||||
SB(adc_sync);PW;
|
|
||||||
printf("ADC sync %x %d %llx\n",iaddr, adc_sync, pat);
|
|
||||||
CB(gHG);
|
|
||||||
setwaitpoint(1); //set wait points
|
|
||||||
setwaittime(1,16); //wait time - can be changed dynamically
|
|
||||||
CB(adc_sync);PW;
|
|
||||||
load_pix(10, 20);
|
|
||||||
|
|
||||||
CB(res);
|
|
||||||
//CB(Dsg_3);PW;
|
|
||||||
CB(res_DGS);
|
|
||||||
setwaitpoint(2); //set wait points
|
|
||||||
setwaittime(2,1000); //wait time - can be changed dynamically
|
|
||||||
|
|
||||||
//SB(res_DGS);
|
|
||||||
//PW;
|
|
||||||
//SB(Dsg_3);
|
|
||||||
//
|
|
||||||
//CB(connCDS);
|
|
||||||
//TEST SIGNALS END
|
|
||||||
//
|
|
||||||
REPEAT(20)
|
|
||||||
|
|
||||||
//****************//
|
|
||||||
//*FINAL COMMANDS*//
|
|
||||||
//****************//
|
|
||||||
CB(adc_ena);PW;
|
|
||||||
//STARTUP;
|
|
||||||
STOP; PW; //stops here
|
|
||||||
//REPEAT(4);
|
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
find_package(Doxygen REQUIRED)
|
find_package(Doxygen REQUIRED)
|
||||||
find_package(Sphinx REQUIRED)
|
find_package(Sphinx REQUIRED)
|
||||||
|
|
||||||
@ -53,6 +55,9 @@ set(SPHINX_SOURCE_FILES
|
|||||||
src/troubleshooting.rst
|
src/troubleshooting.rst
|
||||||
src/receivers.rst
|
src/receivers.rst
|
||||||
src/slsreceiver.rst
|
src/slsreceiver.rst
|
||||||
|
src/udpheader.rst
|
||||||
|
src/udpconfig.rst
|
||||||
|
src/udpdetspec.rst
|
||||||
)
|
)
|
||||||
|
|
||||||
foreach(filename ${SPHINX_SOURCE_FILES})
|
foreach(filename ${SPHINX_SOURCE_FILES})
|
||||||
|
@ -21,10 +21,8 @@ the shared libraries these are needed:
|
|||||||
GUI
|
GUI
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
The GUI is currently using Qt4 but watch out for an upgrade to 5.
|
* Qt 5.9
|
||||||
|
* Qwt 6.1.5 (packaged in libs/)
|
||||||
* Qt 4.8
|
|
||||||
* Qwt 6.1
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
Python bindings
|
Python bindings
|
||||||
@ -34,6 +32,12 @@ Python bindings
|
|||||||
* pybind11 (packaged in libs/)
|
* pybind11 (packaged in libs/)
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------
|
||||||
|
Moench executables
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
* libtiff
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
Documentation
|
Documentation
|
||||||
-----------------------
|
-----------------------
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
Firmware Upgrade
|
Firmware Upgrade
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Eiger
|
Eiger
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
@ -18,30 +16,9 @@ Upgrade
|
|||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
#. Tftp must be already installed on your pc to use the bcp script.
|
#. Tftp must be already installed on your pc to use the bcp script.
|
||||||
|
|
||||||
#. Kill the on-board servers and copy new servers to the board.
|
#. Copy new servers to the board. See :ref:`how to upgrade detector servers<Detector Server Upgrade>` for more detals. A reboot should have started the new linked servers automatically. For Eiger, do not reboot yet as we need to program the firmware via bit files.
|
||||||
|
|
||||||
.. code-block:: bash
|
* This step is crucial when registers between firmwares change. Failure to do so will result in linux on boards to crash and boards can't be pinged anymore.
|
||||||
|
|
||||||
# Option 1: from detector console
|
|
||||||
# kill old server
|
|
||||||
ssh root@bebxxx
|
|
||||||
killall eigerDetectorServer
|
|
||||||
|
|
||||||
# copy new server
|
|
||||||
cd executables
|
|
||||||
scp user@pc:/path/eigerDetectorServerxxx .
|
|
||||||
chmod 777 eigerDetectorServerxxx
|
|
||||||
ln -sf eigerDetectorServerxxx eigerDetectorServer
|
|
||||||
sync
|
|
||||||
|
|
||||||
# Options 2: from client console for multiple modules
|
|
||||||
for i in bebxxx bebyyy;
|
|
||||||
do ssh root@$i killall eigerDetectorServer;
|
|
||||||
scp eigerDetectorServerxxx root@$i:~/executables/eigerDetectorServer;
|
|
||||||
ssh root@$i sync; done
|
|
||||||
|
|
||||||
|
|
||||||
* This is crucial when registers between firmwares change. Failure to do so will result in linux on boards to crash and boards can't be pinged anymore.
|
|
||||||
|
|
||||||
#. Bring the board into programmable mode using either of the 2 ways. Both methods result in only the central LED blinking.
|
#. Bring the board into programmable mode using either of the 2 ways. Both methods result in only the central LED blinking.
|
||||||
|
|
||||||
@ -50,8 +27,13 @@ Upgrade
|
|||||||
Do a hard reset for each half module on back panel boards, between the LEDs, closer to each of the 1G ethernet connectors. Push until all LEDs start to blink.
|
Do a hard reset for each half module on back panel boards, between the LEDs, closer to each of the 1G ethernet connectors. Push until all LEDs start to blink.
|
||||||
|
|
||||||
* Software:
|
* Software:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Option 1: if the old server is still running:
|
||||||
|
sls_detector_put execcommand "./boot_recovery"
|
||||||
|
|
||||||
|
# Option 2:
|
||||||
ssh root@bebxxx
|
ssh root@bebxxx
|
||||||
cd executables
|
cd executables
|
||||||
./boot_recovery
|
./boot_recovery
|
||||||
@ -79,11 +61,24 @@ Upgrade
|
|||||||
#update front right fpga
|
#update front right fpga
|
||||||
bcp download.bit bebxxx:/febr
|
bcp download.bit bebxxx:/febr
|
||||||
|
|
||||||
#update kernel (only if required by the SLS Detector Group)
|
#update kernel (only if required by us)
|
||||||
bcp download.bit bebxxx:/kernel
|
bcp download.bit bebxxx:/kernel
|
||||||
|
|
||||||
#. Reboot the detector.
|
#. Reboot the detector.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# In the first terminal where we saw "Succeess"
|
||||||
|
# reconfig febX is necessary only if you have flashed a new feb firmware
|
||||||
|
reconfig febl
|
||||||
|
reconfig febr
|
||||||
|
# will reboot controller
|
||||||
|
reconfig fw0
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
If the detector servers did not start up automatically after reboot, you need to add scripts to do that. See :ref:`Automatic start<Automatic start servers>` for more details.
|
||||||
|
|
||||||
Jungfrau
|
Jungfrau
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
@ -94,84 +89,50 @@ Download
|
|||||||
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v4.x.x)
|
Upgrade
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^
|
||||||
|
|
||||||
|
.. warning ::
|
||||||
|
|
||||||
|
In case you have had issues in the past with programming via software:
|
||||||
|
|
||||||
|
* 6.1.2 server has a fix for seamless fpga programming
|
||||||
|
|
||||||
|
* We recommend first updating the on-board detector server to 6.1.2 (with client 6.1.x) using command 'updatedetectorserver' or 'copydetectorserver'.
|
||||||
|
|
||||||
|
* Then use command 'programfpga' to only update firmware or use command 'update' to update firmware and server to the latest release.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
||||||
|
|
||||||
#. Tftp must be installed on pc.
|
|
||||||
|
|
||||||
#. Update client package to the latest (5.x.x).
|
|
||||||
|
|
||||||
#. Disable server respawning or kill old server
|
|
||||||
|
Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Option 1: if respawning enabled
|
# These instructions are for upgrades from v5.0.0. For earlier versions, please contact us.
|
||||||
telnet bchipxxx
|
|
||||||
# edit /etc/inittab
|
|
||||||
# comment out line #ttyS0::respawn:/jungfrauDetectorServervxxx
|
|
||||||
reboot
|
|
||||||
# ensure servers did not start up after reboot
|
|
||||||
telnet bchipxxx
|
|
||||||
ps
|
|
||||||
|
|
||||||
# Option 2: if respawning already disabled
|
# Always ensure that the client and server software are of the same release.
|
||||||
telnet bchipxxx
|
|
||||||
killall jungfrauDetectorServerv*
|
|
||||||
|
|
||||||
#. Copy new server and start in update mode
|
# copies server, links new server to jungfrauDetectorServer,
|
||||||
.. code-block:: bash
|
# removes old server from respawn, sets up new lnked server to respawn
|
||||||
|
# programs fpga, reboots
|
||||||
|
|
||||||
tftp pcxxx -r jungfrauDetectorServervxxx -g
|
# v5.0.0 - 6.0.0 (copies server from tftp folder of the pc)
|
||||||
chmod 777 jungfrauDetectorServervxxx
|
|
||||||
./jungfrauDetectorServervxxx -u
|
|
||||||
|
|
||||||
#. Program fpga from the client console
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sls_detector_get free
|
|
||||||
# Crucial that the next command executes without any errors
|
|
||||||
sls_detector_put hostname bchipxxx
|
|
||||||
sls_detector_put programfpga xxx.pof
|
|
||||||
|
|
||||||
#. After programming, kill 'update server' using Ctrl + C in server console.
|
|
||||||
|
|
||||||
#. Enable server respawning if needed
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
telnet bchipxxx
|
|
||||||
# edit /etc/inittab
|
|
||||||
# uncomment out line #ttyS0::respawn:/jungfrauDetectorServervxxx
|
|
||||||
# ensure the line has the new server name
|
|
||||||
reboot
|
|
||||||
# ensure both servers are running using ps
|
|
||||||
jungfrauDetectorServervxxx
|
|
||||||
jungfrauDetectorServervxxx --stop-server 1953
|
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
|
||||||
|
|
||||||
Always ensure that the client and server software are of the same release.
|
|
||||||
|
|
||||||
|
|
||||||
#. Program from console
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# copies server from tftp folder of pc, programs fpga,
|
|
||||||
# removes old server from respawn, sets up new server to respawn
|
|
||||||
# and reboots
|
|
||||||
sls_detector_put update jungfrauDetectorServervxxx pcxxx xx.pof
|
sls_detector_put update jungfrauDetectorServervxxx pcxxx xx.pof
|
||||||
|
|
||||||
|
# v6.1.1 - present (copies server from the full path provided)
|
||||||
|
sls_detector_put update jungfrauDetectorServervxxx xx.pof
|
||||||
|
|
||||||
# Or only program firmware
|
# Or only program firmware
|
||||||
sls_detector_put programfpga xxx.pof
|
sls_detector_put programfpga xxx.pof
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Gotthard
|
Gotthard I
|
||||||
---------
|
-----------
|
||||||
|
|
||||||
Download
|
Download
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
@ -186,7 +147,7 @@ Upgrade
|
|||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
.. warning ::
|
.. warning ::
|
||||||
| Gotthard firmware cannot be upgraded remotely and requires the use of USB-Blaster.
|
| Gotthard firmware cannot be upgraded remotely and requires the use of USB-Blaster.
|
||||||
| It is generally updated by the SLS Detector group.
|
| It is generally updated by us.
|
||||||
|
|
||||||
#. Download `Altera Quartus software or Quartus programmer <https://fpgasoftware.intel.com/20.1/?edition=standard&platform=linux&product=qprogrammer#tabs-4>`__.
|
#. Download `Altera Quartus software or Quartus programmer <https://fpgasoftware.intel.com/20.1/?edition=standard&platform=linux&product=qprogrammer#tabs-4>`__.
|
||||||
|
|
||||||
@ -197,7 +158,7 @@ Upgrade
|
|||||||
|
|
||||||
#. Plug the end of your USB-Blaster with the adaptor provided to the connector 'AS config' on the Gotthard board.
|
#. Plug the end of your USB-Blaster with the adaptor provided to the connector 'AS config' on the Gotthard board.
|
||||||
|
|
||||||
#. Click on 'Add file'. Select programming (pof) file provided by the SLS Detector group.
|
#. Click on 'Add file'. Select programming (pof) file provided by us.
|
||||||
|
|
||||||
#. Check "Program/Configure" and "Verify". Push the start button. Wait until the programming process is finished.
|
#. Check "Program/Configure" and "Verify". Push the start button. Wait until the programming process is finished.
|
||||||
|
|
||||||
@ -206,68 +167,75 @@ Upgrade
|
|||||||
#. Reboot the detector.
|
#. Reboot the detector.
|
||||||
|
|
||||||
|
|
||||||
Mythen3
|
Mythen III
|
||||||
-------
|
-----------
|
||||||
|
|
||||||
.. note ::
|
|
||||||
|
|
||||||
As it is still in developement, the rbf files must be picked up from the SLS Detector Group.
|
|
||||||
|
|
||||||
Download
|
Download
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- rbf files (in developement)
|
- `rbf files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0)
|
Upgrade
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^
|
||||||
|
|
||||||
Always ensure that the client and server software are of the same release.
|
Program from console
|
||||||
|
|
||||||
#. Program from console
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# copies server from tftp folder of pc, programs fpga,
|
# Always ensure that the client and server software are of the same release.
|
||||||
# and reboots (new server not respawned currently)
|
|
||||||
|
# copies server, links new server to mythen3DetectorServer,
|
||||||
|
# removes old server from respawn, sets up new lnked server to respawn
|
||||||
|
# programs fpga, reboots
|
||||||
|
|
||||||
|
# v5.0.0 - 6.0.0 (copies server from tftp folder of the pc)
|
||||||
sls_detector_put update mythen3DetectorServervxxx pcxxx xxx.rbf
|
sls_detector_put update mythen3DetectorServervxxx pcxxx xxx.rbf
|
||||||
|
|
||||||
|
# v6.1.1 - present (copies server from the full path provided)
|
||||||
|
sls_detector_put update mythen3DetectorServervxxx xxx.rbf
|
||||||
|
|
||||||
# Or only program firmware
|
# Or only program firmware
|
||||||
sls_detector_put programfpga xxx.rbf
|
sls_detector_put programfpga xxx.rbf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Gotthard2
|
|
||||||
-------------
|
|
||||||
|
|
||||||
.. note ::
|
.. note ::
|
||||||
|
|
||||||
As it is still in developement, the rbf files must be picked up from the SLS Detector Group.
|
If the detector servers did not start up automatically after reboot, you need to add scripts to do that. See :ref:`Automatic start<Automatic start servers>` for more details.
|
||||||
|
|
||||||
|
Gotthard II
|
||||||
|
-------------
|
||||||
|
|
||||||
Download
|
Download
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- rbf files (in development)
|
- `rbf files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
|
|
||||||
|
Upgrade
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
Upgrade (from v5.0.0)
|
Program from console
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Always ensure that the client and server software are of the same release.
|
|
||||||
|
|
||||||
#. Program from console
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# copies server from tftp folder of pc, programs fpga,
|
# Always ensure that the client and server software are of the same release.
|
||||||
# and reboots (new server not respawned currently)
|
|
||||||
|
# copies server, links new server to gotthard2DetectorServer,
|
||||||
|
# removes old server from respawn, sets up new lnked server to respawn
|
||||||
|
# programs fpga, reboots
|
||||||
|
|
||||||
|
# v5.0.0 - 6.0.0 (copies server from tftp folder of the pc)
|
||||||
sls_detector_put update gotthard2DetectorServervxxx pcxxx xxx.rbf
|
sls_detector_put update gotthard2DetectorServervxxx pcxxx xxx.rbf
|
||||||
|
|
||||||
|
# v6.1.1 - present (copies server from the full path provided)
|
||||||
|
sls_detector_put update gotthard2DetectorServervxxx xxx.rbf
|
||||||
|
|
||||||
# Or only program firmware
|
# Or only program firmware
|
||||||
sls_detector_put programfpga xxx.rbf
|
sls_detector_put programfpga xxx.rbf
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
If the detector servers did not start up automatically after reboot, you need to add scripts to do that. See :ref:`Automatic start<Automatic start servers>` for more details.
|
||||||
|
|
||||||
Moench
|
Moench
|
||||||
-------
|
-------
|
||||||
@ -279,21 +247,40 @@ Download
|
|||||||
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Upgrade
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
.. warning ::
|
||||||
|
|
||||||
|
In case you have had issues in the past with programming via software:
|
||||||
|
|
||||||
|
* 6.1.2 server has a fix for seamless fpga programming
|
||||||
|
|
||||||
|
* We recommend first updating the on-board detector server to 6.1.2 (with client 6.1.x) using command 'updatedetectorserver' or 'copydetectorserver'.
|
||||||
|
|
||||||
|
* Then use command 'programfpga' to only update firmware or use command 'update' to update firmware and server to the latest release.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
||||||
|
|
||||||
Always ensure that the client and server software are of the same release.
|
|
||||||
|
|
||||||
#. Program from console
|
Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# copies server from tftp folder of pc, programs fpga,
|
# Always ensure that the client and server software are of the same release.
|
||||||
# removes old server from respawn, sets up new server to respawn
|
|
||||||
# and reboots
|
# copies server, links new server to moenchDetectorServer,
|
||||||
|
# removes old server from respawn, sets up new lnked server to respawn
|
||||||
|
# programs fpga, reboots
|
||||||
|
|
||||||
|
# v5.0.0 - 6.0.0 (copies server from tftp folder of the pc)
|
||||||
sls_detector_put update moenchDetectorServervxxx pcxxx xx.pof
|
sls_detector_put update moenchDetectorServervxxx pcxxx xx.pof
|
||||||
|
|
||||||
|
# v6.1.1 - present (copies server from the full path provided)
|
||||||
|
sls_detector_put update moenchDetectorServervxxx xx.pof
|
||||||
|
|
||||||
# Or only program firmware
|
# Or only program firmware
|
||||||
sls_detector_put programfpga xxx.pof
|
sls_detector_put programfpga xxx.pof
|
||||||
|
|
||||||
@ -307,21 +294,28 @@ Download
|
|||||||
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Upgrade
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
||||||
|
|
||||||
Always ensure that the client and server software are of the same release.
|
|
||||||
|
|
||||||
#. Program from console
|
Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# copies server from tftp folder of pc, programs fpga,
|
# Always ensure that the client and server software are of the same release.
|
||||||
# removes old server from respawn, sets up new server to respawn
|
|
||||||
# and reboots
|
# copies server, links new server to ctbDetectorServer,
|
||||||
|
# removes old server from respawn, sets up new lnked server to respawn
|
||||||
|
# programs fpga, reboots
|
||||||
|
|
||||||
|
# v5.0.0 - 6.0.0 (copies server from tftp folder of the pc)
|
||||||
sls_detector_put update ctbDetectorServervxxx pcxxx xx.pof
|
sls_detector_put update ctbDetectorServervxxx pcxxx xx.pof
|
||||||
|
|
||||||
|
# v6.1.1 - present (copies server from the full path provided)
|
||||||
|
sls_detector_put update ctbDetectorServervxxx xx.pof
|
||||||
|
|
||||||
# Or only program firmware
|
# Or only program firmware
|
||||||
sls_detector_put programfpga xxx.pof
|
sls_detector_put programfpga xxx.pof
|
||||||
|
|
||||||
@ -354,43 +348,53 @@ Firmware Troubleshooting with blackfin
|
|||||||
|
|
||||||
5. If one can't list it, read the next section to try to get the blackfin to list it.
|
5. If one can't list it, read the next section to try to get the blackfin to list it.
|
||||||
|
|
||||||
How to get back mtd3 drive remotely (copying new kernel)
|
How to get back mtd3 drive remotely (udpating kernel)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
You have 2 alternatives to update the kernel.
|
||||||
|
|
||||||
.. code-block:: bash
|
1. Commands via software (>= v6.0.0)
|
||||||
|
|
||||||
# step 1: get the kernel image (uImage.lzma) from slsdetectorgroup
|
|
||||||
# and copy it to pc's tftp folder
|
|
||||||
|
|
||||||
# step 2: connect to the board
|
.. code-block:: bash
|
||||||
telnet bchipxxx
|
|
||||||
|
|
||||||
#step 3: go to directory for space
|
sls_detector_put updatekernel /home/...path-to-kernel-image
|
||||||
cd /var/tmp/
|
|
||||||
|
|
||||||
# step 3: copy kernel to board
|
|
||||||
tftp pcxxx -r uImage.lzma -g
|
|
||||||
|
|
||||||
# step 4: verify kernel copied properly
|
2. or command line
|
||||||
ls -lrt
|
|
||||||
|
|
||||||
# step 5: erase flash
|
|
||||||
flash_eraseall /dev/mtd1
|
|
||||||
|
|
||||||
# step 6: copy new image to kernel drive
|
|
||||||
cat uImage.lzma > /dev/mtd1
|
|
||||||
|
|
||||||
# step 7:
|
|
||||||
sync
|
|
||||||
|
|
||||||
# step 8:
|
|
||||||
reboot
|
|
||||||
|
|
||||||
# step 9: verification
|
|
||||||
telnet bchipxxx
|
|
||||||
uname -a # verify kernel date
|
|
||||||
more /proc/mtd # verify mtd3 is listed
|
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# step 1: get the kernel image (uImage.lzma) from slsdetectorgroup
|
||||||
|
# and copy it to pc's tftp folder
|
||||||
|
|
||||||
|
# step 2: connect to the board
|
||||||
|
telnet bchipxxx
|
||||||
|
|
||||||
|
#step 3: go to directory for space
|
||||||
|
cd /var/tmp/
|
||||||
|
|
||||||
|
# step 3: copy kernel to board
|
||||||
|
tftp pcxxx -r uImage.lzma -g
|
||||||
|
|
||||||
|
# step 4: verify kernel copied properly
|
||||||
|
ls -lrt
|
||||||
|
|
||||||
|
# step 5: erase flash
|
||||||
|
flash_eraseall /dev/mtd1
|
||||||
|
|
||||||
|
# step 6: copy new image to kernel drive
|
||||||
|
cat uImage.lzma > /dev/mtd1
|
||||||
|
|
||||||
|
# step 7:
|
||||||
|
sync
|
||||||
|
|
||||||
|
# step 8:
|
||||||
|
reboot
|
||||||
|
|
||||||
|
# step 9: verification
|
||||||
|
telnet bchipxxx
|
||||||
|
uname -a # verify kernel date
|
||||||
|
more /proc/mtd # verify mtd3 is listed
|
||||||
|
|
||||||
|
|
||||||
Last Resort using USB Blaster
|
Last Resort using USB Blaster
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
/**
|
/**
|
||||||
* Utility program to generate input files for the command line
|
* Utility program to generate input files for the command line
|
||||||
* documentation. Uses the string returned from sls_detector_help cmd
|
* documentation. Uses the string returned from sls_detector_help cmd
|
||||||
@ -43,6 +45,7 @@ int main() {
|
|||||||
|
|
||||||
for (const auto &cmd : commands) {
|
for (const auto &cmd : commands) {
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
|
std::cout << cmd << '\n';
|
||||||
proxy.Call(cmd, {}, -1, slsDetectorDefs::HELP_ACTION, os);
|
proxy.Call(cmd, {}, -1, slsDetectorDefs::HELP_ACTION, os);
|
||||||
|
|
||||||
auto tmp = os.str().erase(0, cmd.size());
|
auto tmp = os.str().erase(0, cmd.size());
|
||||||
|
@ -66,6 +66,15 @@ Welcome to slsDetectorPackage's documentation!
|
|||||||
virtualserver
|
virtualserver
|
||||||
serverdefaults
|
serverdefaults
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:caption: Detector UDP Header
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
udpheader
|
||||||
|
udpconfig
|
||||||
|
udpdetspec
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:caption: Receiver
|
:caption: Receiver
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
@ -1,100 +1,28 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. note ::
|
|
||||||
|
|
||||||
The default branch of our git repository is developer. It contains the
|
|
||||||
latest development version. It is expected to compile and work but
|
|
||||||
features might be added or tweaked. In some cases the API might also change
|
|
||||||
without being communicated. If absolute stability of the API is needed please
|
|
||||||
use one of the release versions.
|
|
||||||
|
|
||||||
.. warning ::
|
.. warning ::
|
||||||
|
|
||||||
Before building from source make sure that you have the
|
Before building from source make sure that you have the
|
||||||
:doc:`dependencies <../dependencies>` installed. If installing using conda, conda will
|
:doc:`dependencies <../dependencies>` installed. If installing using conda, conda will
|
||||||
manage the dependencies.
|
manage the dependencies. Avoid also installing packages with pip.
|
||||||
|
|
||||||
|
|
||||||
.. _Installation:
|
.. _Installation:
|
||||||
|
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
==============================================
|
===============
|
||||||
|
|
||||||
.. _build from source using cmake:
|
|
||||||
|
|
||||||
Build from source using CMake
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
Note that on some systems, for example RH7, cmake v3+ is available under the cmake3 alias.
|
|
||||||
It is also required to clone with the option --recursive to get the git submodules used
|
|
||||||
in the package.
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
git clone --recursive https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
|
||||||
mkdir build && cd build
|
|
||||||
cmake ../slsDetectorPackage -DCMAKE_INSTALL_PREFIX=/your/install/path
|
|
||||||
make -j12 #or whatever number of cores you are using to build
|
|
||||||
make install
|
|
||||||
|
|
||||||
The easiest way to configure options is to use the ccmake utility.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
#from the build directory
|
|
||||||
ccmake .
|
|
||||||
|
|
||||||
|
|
||||||
Build using cmk.sh script
|
|
||||||
-------------------------
|
|
||||||
These are mainly aimed at those not familiar with using ccmake and cmake.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
The binaries are generated in slsDetectorPackage/build/bin directory.
|
|
||||||
|
|
||||||
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
|
||||||
-[no option]: only make
|
|
||||||
-c: Clean
|
|
||||||
-b: Builds/Rebuilds CMake files normal mode
|
|
||||||
-p: Builds/Rebuilds Python API
|
|
||||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
|
||||||
-d: HDF5 Custom Directory
|
|
||||||
-k: CMake command
|
|
||||||
-l: Install directory
|
|
||||||
-t: Build/Rebuilds only text client
|
|
||||||
-r: Build/Rebuilds only receiver
|
|
||||||
-g: Build/Rebuilds only gui
|
|
||||||
-s: Simulator
|
|
||||||
-u: Chip Test Gui
|
|
||||||
-j: Number of threads to compile through
|
|
||||||
-e: Debug mode
|
|
||||||
-i: Builds tests
|
|
||||||
-m: Manuals
|
|
||||||
-n: Manuals without compiling doxygen (only rst)
|
|
||||||
-z: Moench zmq processor
|
|
||||||
|
|
||||||
# get all options
|
|
||||||
./cmk.sh -?
|
|
||||||
|
|
||||||
# new build and compile in parallel:
|
|
||||||
./cmk.sh -bj5
|
|
||||||
|
|
||||||
|
|
||||||
Install binaries using conda
|
Install binaries using conda
|
||||||
--------------------------------
|
-------------------------------
|
||||||
|
|
||||||
Conda is not only useful to manage python environments but can also
|
Conda is not only useful to manage python environments but can also
|
||||||
be used as a user space package manager.
|
be used as a user space package manager. Dates in the tag (for eg. 2020.07.23.dev0)
|
||||||
|
are from the developer branch. Please use released tags for stability.
|
||||||
|
|
||||||
We have three different packages available:
|
We have three different packages available:
|
||||||
|
|
||||||
* **slsdetlib**, shared libraries and command line utilities
|
* **slsdetlib** shared libraries and command line utilities
|
||||||
* **slsdetgui**, GUI
|
* **slsdetgui** GUI
|
||||||
* **slsdet**, Python bindings
|
* **slsdet** Python bindings
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -103,9 +31,9 @@ We have three different packages available:
|
|||||||
conda config --add channels slsdetectorgroup
|
conda config --add channels slsdetectorgroup
|
||||||
conda config --set channel_priority strict
|
conda config --set channel_priority strict
|
||||||
|
|
||||||
#cerate an environment with our library, then activate
|
#create and activate an environment with our library
|
||||||
#replace 2020.07.20.dev0 with the required tag
|
#replace 6.1.1 with the required tag
|
||||||
conda create -n myenv slsdetlib=2020.07.23.dev0
|
conda create -n myenv slsdetlib=6.1.1
|
||||||
conda activate myenv
|
conda activate myenv
|
||||||
|
|
||||||
#ready to use
|
#ready to use
|
||||||
@ -116,11 +44,145 @@ We have three different packages available:
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
#List available versions
|
#List available versions
|
||||||
|
# lib and binaries
|
||||||
|
conda search slsdetlib
|
||||||
|
# python
|
||||||
conda search slsdet
|
conda search slsdet
|
||||||
|
# gui
|
||||||
|
conda search slsdetgui
|
||||||
|
|
||||||
|
|
||||||
Build from source on old distributions
|
|
||||||
-----------------------------------------
|
|
||||||
|
Build from source
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
|
||||||
|
1. Download Source Code from github
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch 6.1.1
|
||||||
|
|
||||||
|
|
||||||
|
| **Pybind for Python**
|
||||||
|
| v7.0.0+:
|
||||||
|
| pybind11 packaged into 'libs/pybind'. No longer a submodule. No need for "recursive" or "submodule update".
|
||||||
|
|
|
||||||
|
| Older versions:
|
||||||
|
| pybind11 is a submodule. Must be cloned using "recursive" and updated when switching between versions using the following commands.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# clone using recursive to get pybind11 submodule
|
||||||
|
git clone --recursive https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
||||||
|
|
||||||
|
# update submodule when switching between releases
|
||||||
|
cd slsDetectorPackage
|
||||||
|
git submodule update --init
|
||||||
|
|
||||||
|
|
||||||
|
.. _build from source using cmake:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2. Build from Source
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Build using CMake
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# outside slsDetecorPackage folder
|
||||||
|
mkdir build && cd build
|
||||||
|
|
||||||
|
# configure & generate Makefiles using cmake
|
||||||
|
# by listing all your options (alternately use ccmake described below)
|
||||||
|
# cmake3 for some systems
|
||||||
|
cmake ../slsDetectorPackage -DCMAKE_INSTALL_PREFIX=/your/install/path
|
||||||
|
|
||||||
|
# compiled to the build/bin directory
|
||||||
|
make -j12 #or whatever number of cores you are using to build
|
||||||
|
|
||||||
|
# install headers and libs in /your/install/path directory
|
||||||
|
make install
|
||||||
|
|
||||||
|
|
||||||
|
Instead of the cmake command, one can use ccmake to get a list of options to configure and generate Makefiles at ease.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# ccmake3 for some systems
|
||||||
|
ccmake ..
|
||||||
|
|
||||||
|
# choose the options
|
||||||
|
# first press [c] - configure
|
||||||
|
# then press [g] - generate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
=============================== ===========================================
|
||||||
|
Example cmake options Comment
|
||||||
|
=============================== ===========================================
|
||||||
|
-DSLS_USE_PYTHON=ON Python
|
||||||
|
-DPython_FIND_VIRTUALENV=ONLY Python from only the conda environment
|
||||||
|
-DZeroMQ_HINT=/usr/lib64 Use system zmq instead
|
||||||
|
-DSLS_USE_GUI=ON GUI
|
||||||
|
=============================== ===========================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Build using in-built cmk.sh script
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
The binaries are generated in slsDetectorPackage/build/bin directory.
|
||||||
|
|
||||||
|
Usage: ./cmk.sh [-b] [-c] [-d <HDF5 directory>] [e] [g] [-h] [i] [-j <Number of threads>]
|
||||||
|
[-k <CMake command>] [-l <Install directory>] [m] [n] [-p] [-q <Zmq hint directory>]
|
||||||
|
[r] [s] [t] [u] [z]
|
||||||
|
-[no option]: only make
|
||||||
|
-b: Builds/Rebuilds CMake files normal mode
|
||||||
|
-c: Clean
|
||||||
|
-d: HDF5 Custom Directory
|
||||||
|
-e: Debug mode
|
||||||
|
-g: Build/Rebuilds gui
|
||||||
|
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||||
|
-i: Builds tests
|
||||||
|
-j: Number of threads to compile through
|
||||||
|
-k: CMake command
|
||||||
|
-l: Install directory
|
||||||
|
-m: Manuals
|
||||||
|
-n: Manuals without compiling doxygen (only rst)
|
||||||
|
-p: Builds/Rebuilds Python API
|
||||||
|
-q: Zmq hint directory
|
||||||
|
-r: Build/Rebuilds only receiver
|
||||||
|
-s: Simulator
|
||||||
|
-t: Build/Rebuilds only text client
|
||||||
|
-u: Chip Test Gui
|
||||||
|
-z: Moench zmq processor
|
||||||
|
|
||||||
|
|
||||||
|
# display all options
|
||||||
|
./cmk.sh -?
|
||||||
|
|
||||||
|
# new build and compile in parallel (recommended basic option):
|
||||||
|
./cmk.sh -cbj5
|
||||||
|
|
||||||
|
# new build, python and compile in parallel:
|
||||||
|
./cmk.sh -cbpj5
|
||||||
|
|
||||||
|
#To use the system zmq (/usr/lib64) instead
|
||||||
|
./cmk.sh -cbj5 -q /usr/lib64
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Build on old distributions
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
If your linux distribution doesn't come with a C++11 compiler (gcc>4.8) then
|
If your linux distribution doesn't come with a C++11 compiler (gcc>4.8) then
|
||||||
it's possible to install a newer gcc using conda and build the slsDetectorPackage
|
it's possible to install a newer gcc using conda and build the slsDetectorPackage
|
||||||
@ -131,12 +193,64 @@ using this compiler
|
|||||||
#Create an environment with the dependencies
|
#Create an environment with the dependencies
|
||||||
conda create -n myenv gxx_linux-64 cmake zmq
|
conda create -n myenv gxx_linux-64 cmake zmq
|
||||||
conda activate myenv
|
conda activate myenv
|
||||||
|
|
||||||
|
# outside slsDetecorPackage folder
|
||||||
|
mkdir build && cd build
|
||||||
cmake ../slsDetectorPackage -DCMAKE_PREFIX_PATH=$CONDA_PREFIX
|
cmake ../slsDetectorPackage -DCMAKE_PREFIX_PATH=$CONDA_PREFIX
|
||||||
make -j12
|
make -j12
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Build slsDetectorGui (Qt5)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
1. Using pre-built binary on conda
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
conda create -n myenv slsdetgui=7.0.0
|
||||||
|
conda activate myenv
|
||||||
|
|
||||||
|
|
||||||
|
2. Using system installation on RHEL7
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
yum install qt5-qtbase-devel.x86_64
|
||||||
|
yum install qt5-qtsvg-devel.x86_64
|
||||||
|
|
||||||
|
|
||||||
|
3. Using conda
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
#Add channels for dependencies and our library
|
||||||
|
conda config --add channels conda-forge
|
||||||
|
conda config --add channels slsdetectorgroup
|
||||||
|
conda config --set channel_priority strict
|
||||||
|
|
||||||
|
# create environment to compile
|
||||||
|
# on rhel7
|
||||||
|
conda create -n slsgui zeromq gxx_linux-64 gxx_linux-64 mesa-libgl-devel-cos6-x86_64 qt
|
||||||
|
# on fedora or newer systems
|
||||||
|
conda create -n slsgui zeromq qt
|
||||||
|
|
||||||
|
# when using conda compilers, would also need libgl, but no need for it on fedora unless maybe using it with ROOT
|
||||||
|
|
||||||
|
# activate environment
|
||||||
|
conda activate slsgui
|
||||||
|
|
||||||
|
# compile with cmake outside slsDetecorPackage folder
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ../slsDetectorPackage -DSLS_USE_GUI=ON
|
||||||
|
make -j12
|
||||||
|
|
||||||
|
# or compile with cmk.sh
|
||||||
|
cd slsDetectorPackage
|
||||||
|
./cmk.sh -cbgj9
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Build this documentation
|
Build this documentation
|
||||||
-------------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The documentation for the slsDetectorPackage is build using a combination
|
The documentation for the slsDetectorPackage is build using a combination
|
||||||
of Doxygen, Sphinx and Breathe. The easiest way to install the dependencies
|
of Doxygen, Sphinx and Breathe. The easiest way to install the dependencies
|
||||||
@ -144,11 +258,15 @@ is to use conda
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
conda create -n myenv python sphinx sphinx_rtd_theme
|
conda create -n myenv python sphinx_rtd_theme breathe
|
||||||
|
|
||||||
Then enable the option SLS_BUILD_DOCS to create the targets
|
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# using cmake or ccmake to enable DSLS_BUILD_DOCS
|
||||||
|
# outside slsDetecorPackage folder
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ../slsDetectorPackage -DSLS_BUILD_DOCS=ON
|
||||||
|
|
||||||
make docs # generate API docs and build Sphinx RST
|
make docs # generate API docs and build Sphinx RST
|
||||||
make rst # rst only, saves time in case the API did not change
|
make rst # rst only, saves time in case the API did not change
|
||||||
|
@ -71,4 +71,19 @@ exposed to Python through pybind11.
|
|||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoclass:: timingSourceType
|
.. autoclass:: timingSourceType
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
.. autoclass:: M3_GainCaps
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
.. autoclass:: portPosition
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
.. autoclass:: streamingInterface
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
.. autoclass:: vetoAlgorithm
|
||||||
|
:undoc-members:
|
||||||
|
|
||||||
|
.. autoclass:: gainMode
|
||||||
:undoc-members:
|
:undoc-members:
|
@ -10,27 +10,46 @@ open an issue in our our `github repo
|
|||||||
Setting exposure time
|
Setting exposure time
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
Setting and reading back exposure time can be done either using a Python datetime.timedelta
|
Setting and reading back exposure time can be done either using a Python
|
||||||
or by setting the time in seconds.
|
datetime.timedelta, DurationWrapper or by setting the time in seconds.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
# Set exposure time to 1.2 seconds
|
# Set exposure time to 1.2 seconds
|
||||||
>>> d.exptime = 1.2
|
>>> d.exptime = 1.2
|
||||||
|
>>> d.exptime = 5e-07
|
||||||
|
|
||||||
# Setting exposure time using timedelta
|
# Setting exposure time using timedelta (upto microseconds precision)
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
>>> d.exptime = dt.timedelta(seconds = 1.2)
|
>>> d.exptime = dt.timedelta(seconds = 1.2)
|
||||||
|
>>> d.exptime = dt.timedelta(seconds = 1, microseconds = 3)
|
||||||
|
|
||||||
# With timedelta any arbitrary combination of units can be used
|
# With timedelta any arbitrary combination of units can be used
|
||||||
>>> t = dt.timedelta(microseconds = 100, seconds = 5.3, minutes = .3)
|
>>> t = dt.timedelta(microseconds = 100, seconds = 5.3, minutes = .3)
|
||||||
|
|
||||||
|
# using DurationWrapper to set in seconds
|
||||||
|
>>> from slsdet import DurationWrapper
|
||||||
|
>>> d.exptime = DurationWrapper(1.2)
|
||||||
|
|
||||||
|
# using DurationWrapper to set in ns
|
||||||
|
>>> t = DurationWrapper()
|
||||||
|
>>> t.set_count(500)
|
||||||
|
>>> d.exptime = t
|
||||||
|
|
||||||
# To set exposure time for individual detector one have to resort
|
# To set exposure time for individual detector one have to resort
|
||||||
# to the C++ style API.
|
# to the C++ style API.
|
||||||
# Sets exposure time to 1.2 seconds for module 0, 6 and 12
|
# Sets exposure time to 1.2 seconds for module 0, 6 and 12
|
||||||
>>> d.setExptime(1.2, [0, 6, 12])
|
>>> d.setExptime(1.2, [0, 6, 12])
|
||||||
>>> d.setExptime(dt.timedelta(seconds = 1.2), [0, 6, 12])
|
>>> d.setExptime(dt.timedelta(seconds = 1.2), [0, 6, 12])
|
||||||
|
|
||||||
|
# to get in seconds
|
||||||
|
>>> d.period
|
||||||
|
181.23
|
||||||
|
|
||||||
|
# to get in DurationWrapper
|
||||||
|
>>> d.getExptime()
|
||||||
|
[sls::DurationWrapper(total_seconds: 181.23 count: 181230000000)]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
------------------------------------
|
------------------------------------
|
||||||
@ -220,8 +239,7 @@ Setting and getting times
|
|||||||
# This sets the exposure time for all modules
|
# This sets the exposure time for all modules
|
||||||
d.exptime = 0.5
|
d.exptime = 0.5
|
||||||
|
|
||||||
# exptime also accepts a python datetime.timedelta
|
# exptime also accepts a python datetime.timedelta (upto microseconds resolution)
|
||||||
# which can be used to set the time in almost any unit
|
|
||||||
t = dt.timedelta(milliseconds = 2.3)
|
t = dt.timedelta(milliseconds = 2.3)
|
||||||
d.exptime = t
|
d.exptime = t
|
||||||
|
|
||||||
@ -229,16 +247,25 @@ Setting and getting times
|
|||||||
t = dt.timedelta(minutes = 3, seconds = 1.23)
|
t = dt.timedelta(minutes = 3, seconds = 1.23)
|
||||||
d.exptime = t
|
d.exptime = t
|
||||||
|
|
||||||
|
# using DurationWrapper to set in seconds
|
||||||
|
>>> from slsdet import DurationWrapper
|
||||||
|
>>> d.exptime = DurationWrapper(1.2)
|
||||||
|
|
||||||
|
# using DurationWrapper to set in ns
|
||||||
|
>>> t = DurationWrapper()
|
||||||
|
>>> t.set_count(500)
|
||||||
|
>>> d.exptime = t
|
||||||
|
|
||||||
# exptime however always returns the time in seconds
|
# exptime however always returns the time in seconds
|
||||||
>>> d.exptime
|
>>> d.exptime
|
||||||
181.23
|
181.23
|
||||||
|
|
||||||
# To get back the exposure time for each module
|
# To get back the exposure time for each module
|
||||||
# it's possible to use getExptime, this also returns
|
# it's possible to use getExptime, this also returns
|
||||||
# the values as datetime.timedelta
|
# the values as DurationWrapper
|
||||||
|
|
||||||
>>> d.getExptime()
|
>>> d.getExptime()
|
||||||
[datetime.timedelta(seconds=181, microseconds=230000), datetime.timedelta(seconds=181, microseconds=230000)]
|
[sls::DurationWrapper(total_seconds: 181.23 count: 181230000000)]
|
||||||
|
|
||||||
# In case the values are the same it's possible to use the
|
# In case the values are the same it's possible to use the
|
||||||
# element_if_equal function to reduce the values to a single
|
# element_if_equal function to reduce the values to a single
|
||||||
@ -246,7 +273,8 @@ Setting and getting times
|
|||||||
|
|
||||||
>>> t = d.getExptime()
|
>>> t = d.getExptime()
|
||||||
>>> element_if_equal(t)
|
>>> element_if_equal(t)
|
||||||
datetime.timedelta(seconds=1)
|
sls::DurationWrapper(total_seconds: 1.2 count: 1200000000)
|
||||||
|
|
||||||
|
|
||||||
--------------
|
--------------
|
||||||
Reading dacs
|
Reading dacs
|
||||||
|
@ -6,7 +6,7 @@ Getting Started
|
|||||||
Which Python?
|
Which Python?
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
We require at lest Python 3.6 and strongly recommended that you don't use the system
|
We require at least Python 3.6 and strongly recommended that you don't use the system
|
||||||
Python installation. The examples in this documentation uses `conda
|
Python installation. The examples in this documentation uses `conda
|
||||||
<https://docs.conda.io/en/latest/miniconda.html>`_ since it provides good support
|
<https://docs.conda.io/en/latest/miniconda.html>`_ since it provides good support
|
||||||
also for non Python packages but there are also other alternatives like, pyenv.
|
also for non Python packages but there are also other alternatives like, pyenv.
|
||||||
@ -14,28 +14,35 @@ also for non Python packages but there are also other alternatives like, pyenv.
|
|||||||
Using something like conda also allows you to quickly switch beteen different Python
|
Using something like conda also allows you to quickly switch beteen different Python
|
||||||
environments.
|
environments.
|
||||||
|
|
||||||
.. warning ::
|
---------------------
|
||||||
|
Building from Source
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
If you are not installing slsdet binaries from conda, but instead building from
|
||||||
|
source, please refer to :ref:`the installation section<Installation>` for details.
|
||||||
|
|
||||||
|
Don't forget to compile with the option SLS_USE_PYTHON=ON to enable the Python
|
||||||
|
bindings or if you use the cmk.sh script -p.
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
Ensure that the sls det python lib compiled is for the expected python version.
|
||||||
|
For example, build/bin/_slsdet.cpython-39-x86_64-linux-gnu.so for Python v3.9.x
|
||||||
|
|
||||||
If you use conda avoid also installing packages with pip.
|
|
||||||
|
|
||||||
---------------------
|
---------------------
|
||||||
PYTHONPATH
|
PYTHONPATH
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
If you install slsdet using conda everything is set up and you can
|
If you install slsdet binaries using conda everything is set up and you can
|
||||||
directly start using the Python bindings. However, if you build
|
directly start using the Python bindings. However, if you build
|
||||||
from source you need to tell Python where to find slsdet. This
|
from source you need to tell Python where to find slsdet to use it. This
|
||||||
is be done by adding your build/bin directory to PYTHONPATH.
|
can be done by adding your build/bin directory to PYTHONPATH.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
export PYTHONPATH = /path/to/your/build/bin:$PYTHONPATH
|
export PYTHONPATH = /path/to/your/build/bin:$PYTHONPATH
|
||||||
|
|
||||||
.. note ::
|
|
||||||
|
|
||||||
Don't forget to compile with the option SLS_USE_PYTHON=ON to enable
|
|
||||||
the Python bindings or if you use the cmk.sh script -p.
|
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
Which detector class should I use?
|
Which detector class should I use?
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
@ -136,7 +143,7 @@ can use dir()
|
|||||||
'__str__', '__subclasshook__', '_adc_register', '_frozen',
|
'__str__', '__subclasshook__', '_adc_register', '_frozen',
|
||||||
'_register', 'acquire', 'adcclk', 'adcphase', 'adcpipeline',
|
'_register', 'acquire', 'adcclk', 'adcphase', 'adcpipeline',
|
||||||
'adcreg', 'asamples', 'auto_comp_disable', 'clearAcquiringFlag',
|
'adcreg', 'asamples', 'auto_comp_disable', 'clearAcquiringFlag',
|
||||||
'clearBit', 'clearROI', 'client_version', 'config', 'copyDetectorServer',
|
'clearBit', 'clearROI', 'client_version', 'config',
|
||||||
'counters', 'daclist', 'dacvalues', 'dbitclk', 'dbitphase' ...
|
'counters', 'daclist', 'dacvalues', 'dbitclk', 'dbitphase' ...
|
||||||
|
|
||||||
Since the list for Detector is rather long it's an good idea to filter it.
|
Since the list for Detector is rather long it's an good idea to filter it.
|
||||||
@ -146,9 +153,11 @@ their name.
|
|||||||
::
|
::
|
||||||
|
|
||||||
>>> [item for item in dir(d) if 'time' in item]
|
>>> [item for item in dir(d) if 'time' in item]
|
||||||
['exptime', 'getExptime', 'getExptimeForAllGates', 'getExptimeLeft',
|
['compdisabletime', 'exptime', 'exptimel', 'frametime', 'getExptime',
|
||||||
'getSubExptime', 'patwaittime0', 'patwaittime1', 'patwaittime2',
|
'getExptimeForAllGates', 'getExptimeLeft', 'getSubExptime', 'patwaittime',
|
||||||
'setExptime', 'setSubExptime', 'subdeadtime', 'subexptime']
|
'patwaittime0', 'patwaittime1', 'patwaittime2', 'runtime', 'setExptime',
|
||||||
|
'setSubExptime', 'subdeadtime', 'subexptime']
|
||||||
|
|
||||||
|
|
||||||
The above method works on any Python object but for convenience we also
|
The above method works on any Python object but for convenience we also
|
||||||
included two functions to find names. View prints the names one per line
|
included two functions to find names. View prints the names one per line
|
||||||
@ -160,6 +169,7 @@ while find returns a list of names.
|
|||||||
|
|
||||||
>>> view('exptime')
|
>>> view('exptime')
|
||||||
exptime
|
exptime
|
||||||
|
exptimel
|
||||||
getExptime
|
getExptime
|
||||||
getExptimeForAllGates
|
getExptimeForAllGates
|
||||||
getExptimeLeft
|
getExptimeLeft
|
||||||
@ -168,6 +178,7 @@ while find returns a list of names.
|
|||||||
setSubExptime
|
setSubExptime
|
||||||
subexptime
|
subexptime
|
||||||
|
|
||||||
|
|
||||||
>>> find('exptime')
|
>>> find('exptime')
|
||||||
['exptime', 'getExptime', 'getExptimeForAllGates', 'getExptimeLeft',
|
['exptime', 'getExptime', 'getExptimeForAllGates', 'getExptimeLeft',
|
||||||
'getSubExptime', 'setExptime', 'setSubExptime', 'subexptime']
|
'getSubExptime', 'setExptime', 'setSubExptime', 'subexptime']
|
||||||
@ -185,19 +196,39 @@ To access the documentation of a function directly from the Python prompt use he
|
|||||||
Help on property:
|
Help on property:
|
||||||
|
|
||||||
Period between frames, accepts either a value in seconds or datetime.timedelta
|
Period between frames, accepts either a value in seconds or datetime.timedelta
|
||||||
|
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
:getter: always returns in seconds. To get in datetime.delta, use getPeriod
|
:getter: always returns in seconds. To get in DurationWrapper, use getPeriod
|
||||||
|
|
||||||
Examples
|
Example
|
||||||
-----------
|
-----------
|
||||||
|
>>> # setting directly in seconds
|
||||||
>>> d.period = 1.05
|
>>> d.period = 1.05
|
||||||
>>> d.period = datetime.timedelta(minutes = 3, seconds = 1.23)
|
>>>
|
||||||
|
>>> # setting directly in seconds
|
||||||
|
>>> d.period = 5e-07
|
||||||
|
>>>
|
||||||
|
>>> # using timedelta (up to microseconds precision)
|
||||||
|
>>> from datatime import timedelta
|
||||||
|
>>> d.period = timedelta(seconds = 1, microseconds = 3)
|
||||||
|
>>>
|
||||||
|
>>> # using DurationWrapper to set in seconds
|
||||||
|
>>> from slsdet import DurationWrapper
|
||||||
|
>>> d.period = DurationWrapper(1.2)
|
||||||
|
>>>
|
||||||
|
>>> # using DurationWrapper to set in ns
|
||||||
|
>>> t = DurationWrapper()
|
||||||
|
>>> t.set_count(500)
|
||||||
|
>>> d.period = t
|
||||||
|
>>>
|
||||||
|
>>> # to get in seconds
|
||||||
>>> d.period
|
>>> d.period
|
||||||
181.23
|
181.23
|
||||||
>>> d.getPeriod()
|
>>>
|
||||||
[datetime.timedelta(seconds=181, microseconds=230000)]
|
>>> d.getExptime()
|
||||||
|
[sls::DurationWrapper(total_seconds: 181.23 count: 181230000000)]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----------------------
|
----------------------
|
||||||
@ -217,11 +248,12 @@ The enums can be found in slsdet.enums
|
|||||||
|
|
||||||
import slsdet
|
import slsdet
|
||||||
>>> [e for e in dir(slsdet.enums) if not e.startswith('_')]
|
>>> [e for e in dir(slsdet.enums) if not e.startswith('_')]
|
||||||
['burstMode', 'clockIndex', 'dacIndex',
|
['M3_GainCaps', 'burstMode', 'clockIndex', 'cls', 'dacIndex', 'detectorSettings',
|
||||||
'detectorSettings', 'detectorType', 'dimension', 'externalSignalFlag',
|
'detectorType', 'dimension', 'externalSignalFlag', 'fileFormat',
|
||||||
'fileFormat', 'frameDiscardPolicy',
|
'frameDiscardPolicy', 'gainMode', 'name', 'polarity', 'portPosition',
|
||||||
'readoutMode', 'runStatus', 'speedLevel', 'timingMode',
|
'readoutMode', 'runStatus', 'speedLevel', 'streamingInterface', 'timingMode',
|
||||||
'timingSourceType']
|
'timingSourceType', 'vetoAlgorithm']
|
||||||
|
|
||||||
|
|
||||||
# Even though importing using * is not recommended one could
|
# Even though importing using * is not recommended one could
|
||||||
# get all the enums like this:
|
# get all the enums like this:
|
||||||
|
@ -66,11 +66,15 @@ For a Single Module
|
|||||||
# sets destination udp ports (not needed, default is 50001)
|
# sets destination udp ports (not needed, default is 50001)
|
||||||
udp_dstport 50012
|
udp_dstport 50012
|
||||||
|
|
||||||
|
# 1g data out
|
||||||
# source udp ips must be same subnet at destintaion udp ips
|
# source udp ips must be same subnet at destintaion udp ips
|
||||||
udp_srcip 192.168.1.112
|
# udp_srcip 192.168.1.112
|
||||||
|
|
||||||
# destination udp ip picked up from rx_hostname (if auto)
|
# destination udp ip picked up from rx_hostname (if auto)
|
||||||
udp_dstip auto
|
# udp_dstip auto
|
||||||
|
|
||||||
|
# 10g data out
|
||||||
|
udp_srcip 10.30.20.200
|
||||||
|
udp_dstip 10.30.20.6
|
||||||
|
|
||||||
# set file path
|
# set file path
|
||||||
fpath /tmp
|
fpath /tmp
|
||||||
|
@ -4,41 +4,8 @@ Receivers
|
|||||||
Receiver processes can be run on same or different machines as the client, receives the data from the detector (via UDP packets).
|
Receiver processes can be run on same or different machines as the client, receives the data from the detector (via UDP packets).
|
||||||
When using the slsReceiver/ slsMultiReceiver, they can be further configured by the client control software (via TCP/IP) to set file name, file path, progress of acquisition etc.
|
When using the slsReceiver/ slsMultiReceiver, they can be further configured by the client control software (via TCP/IP) to set file name, file path, progress of acquisition etc.
|
||||||
|
|
||||||
Detector UDP Header
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
| The UDP data format for the packets consist of a common header for all detectors, followed by the data for that one packet.
|
To know more about detector receiver configuration, please check out :ref:`detector udp header and udp commands in the config file <detector udp header>`
|
||||||
|
|
||||||
**The SLS Detector Header**
|
|
||||||
|
|
||||||
.. table:: <-------------------------------- 8 bytes -------------------------------->
|
|
||||||
:align: center
|
|
||||||
:widths: 30,30,30,30
|
|
||||||
|
|
||||||
+--------------------------------------------------------------------+
|
|
||||||
|frameNumber |
|
|
||||||
+---------------------------------+----------------------------------+
|
|
||||||
|expLength |packetNumber |
|
|
||||||
+---------------------------------+----------------------------------+
|
|
||||||
|bunchId |
|
|
||||||
+--------------------------------------------------------------------+
|
|
||||||
|timestamp |
|
|
||||||
+----------------+----------------+----------------+-----------------+
|
|
||||||
|modId |row |column |reserved |
|
|
||||||
+----------------+----------------+----------------+--------+--------+
|
|
||||||
|debug |roundRNumber |detType |version |
|
|
||||||
+---------------------------------+----------------+--------+--------+
|
|
||||||
|
|
||||||
UDP configuration in Config file
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
#. UDP source port is hardcoded in detector server, starting at 32410.
|
|
||||||
#. **udp_dstport** : UDP destination port number. Port in receiver pc to listen to packets from the detector.
|
|
||||||
#. **udp_dstip** : IP address of UDP destination interface. IP address of interface in receiver pc to listen to packets from detector. If **auto** is used (only when using slsReceiver/ slsMultiReceiver), the IP of **rx_hostname** is picked up.
|
|
||||||
#. **udp_dstmac** : Mac address of UDP destination interface. MAC address of interface in receiver pc to list to packets from detector. Only required when using custom receiver, else slsReceiver/slsMultiReceiver picks it up from **udp_dstip**.
|
|
||||||
#. **udp_srcip** : IP address of UDP source interface. IP address of detector UDP interface to send packets from. Do not use for Eiger 1Gb interface (uses its hardware IP). For others, must be in the same subnet as **udp_dstip**.
|
|
||||||
#. **udp_srcmac** : MAC address of UDP source interface. MAC address of detector UDP interface to send packets from. Do not use for Eiger (uses hardware mac). For others, it is not necessary, but can help for switch and debugging to put unique values for each module.
|
|
||||||
|
|
||||||
|
|
||||||
Custom Receiver
|
Custom Receiver
|
||||||
----------------
|
----------------
|
||||||
|
@ -1,5 +1,14 @@
|
|||||||
Detector Servers
|
Getting Started
|
||||||
=================
|
===============
|
||||||
|
|
||||||
|
Detector Servers include:
|
||||||
|
* Control server [default port: 1952]
|
||||||
|
* Almost all client communication.
|
||||||
|
* Stop server [default port: 1953]
|
||||||
|
* Client requests for detector status, stop acquisition, temperature, advanced read/write registers.
|
||||||
|
|
||||||
|
When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel.
|
||||||
|
|
||||||
|
|
||||||
Location
|
Location
|
||||||
---------
|
---------
|
||||||
@ -14,28 +23,22 @@ Arguments
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
Possible arguments are:
|
Possible arguments are:
|
||||||
-v, --version : Software version
|
-v, --version : Software version
|
||||||
-p, --port <port> : TCP communication port with client.
|
-p, --port <port> : TCP communication port with client.
|
||||||
-g, --nomodule : [Mythen3][Gotthard2] Generic or No Module mode.
|
-g, --nomodule : [Mythen3][Gotthard2]
|
||||||
Skips detector type checks.
|
Generic or No Module mode. Skips detector type checks.
|
||||||
-f, --phaseshift <value> : [Gotthard] only. Sets phase shift.
|
-f, --phaseshift <value> : [Gotthard] only. Sets phase shift.
|
||||||
-d, --devel : Developer mode. Skips firmware checks.
|
-d, --devel : Developer mode. Skips firmware checks.
|
||||||
-u, --update : Update mode. Skips firmware checks and initial detector setup.
|
-u, --update : Update mode. Skips firmware checks and initial detector setup.
|
||||||
-s, --stopserver : Stop server. Do not use as it is created by control server
|
-i, --ignore-config : [Eiger][Jungfrau][Gotthard][Gotthard2][Moench]
|
||||||
|
Ignore config file.
|
||||||
|
-m, --master <master> : [Eiger][Mythen3][Gotthard][Gotthard2]
|
||||||
Basics
|
Set Master to 0 or 1. Precedence over config file. Only for virtual servers except Eiger.
|
||||||
------------
|
-t, --top <top> : [Eiger] Set Top to 0 or 1. Precedence over config file.
|
||||||
|
-s, --stopserver : Stop server. Do not use as it is created by control server
|
||||||
Detector Servers include:
|
|
||||||
* Control server [default port: 1952]
|
|
||||||
* Almost all client communication.
|
|
||||||
* Stop server [default port: 1953]
|
|
||||||
* Client requests for detector status, stop acquisition, temperature, advanced read/write registers.
|
|
||||||
|
|
||||||
When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel.
|
|
||||||
|
|
||||||
|
|
||||||
|
.. _Automatic start servers:
|
||||||
Automatic start
|
Automatic start
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@ -89,6 +92,8 @@ One can start the on-board detector server automatically upon powering on the bo
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sync
|
sync
|
||||||
|
|
||||||
|
# physically reboot for Gotthard II or Mythen III
|
||||||
reboot
|
reboot
|
||||||
|
|
||||||
# verify
|
# verify
|
||||||
|
@ -1,114 +1,66 @@
|
|||||||
Detector Server Upgrade
|
.. _Detector Server Upgrade:
|
||||||
=======================
|
Upgrade
|
||||||
|
========
|
||||||
|
|
||||||
|
|
||||||
Eiger
|
|
||||||
-------------
|
|
||||||
|
|
||||||
|
|
||||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
For Mythen3, Gotthard2 and Eiger, you need to add scripts to automatically start detector server upon power on. See :ref:`Automatic start<Automatic start servers>` for more details.
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
Eiger requires a manual reboot. Or killall the servers and restart the new linked one. If you are in the process of updating firmware, then don't reboot yet.
|
||||||
|
|
||||||
|
|
||||||
|
6.1.1+ (no tftp required)
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
#. Program from console
|
||||||
|
|
||||||
#. Kill old server and copy new server
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Option 1: from detector console
|
# the following command copies new server, creates a soft link to xxxDetectorServerxxx
|
||||||
# kill old server
|
# [Jungfrau][CTB][Moench] also deletes the old server binary and edits initttab to respawn server on reboot
|
||||||
ssh root@bebxxx
|
# Then, the detector controller will reboot (except Eiger)
|
||||||
killall eigerDetectorServer
|
sls_detector_put updatedetectorserver /complete-path-to-binary/xxxDetectorServerxxx
|
||||||
|
|
||||||
# copy new server
|
#. Copy the detector server specific config files or any others required to the detector:
|
||||||
cd executables
|
|
||||||
scp user@pc:/path/eigerDetectorServerxxx .
|
|
||||||
chmod 777 eigerDetectorServerxxx
|
|
||||||
ln -sf eigerDetectorServerxxx eigerDetectorServer
|
|
||||||
sync
|
|
||||||
|
|
||||||
# Options 2: from client console for multiple modules
|
.. code-block:: bash
|
||||||
for i in bebxxx bebyyy;
|
|
||||||
do ssh root@$i killall eigerDetectorServer;
|
|
||||||
scp eigerDetectorServerxxx root@$i:~/executables/eigerDetectorServer;
|
|
||||||
ssh root@$i sync; done
|
|
||||||
|
|
||||||
|
sls_detector_put execcommand "tftp pcxxx -r configxxx -g"
|
||||||
|
|
||||||
#. Reboot the detector.
|
5.0.0 - 6.1.1
|
||||||
|
--------------
|
||||||
|
|
||||||
Jungfrau
|
|
||||||
-------------
|
|
||||||
|
|
||||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
|
||||||
|
|
||||||
#. Install tftp and copy detector server binary to tftp folder
|
#. Install tftp and copy detector server binary to tftp folder
|
||||||
#. Program from console (only from 5.0.0-rcx)
|
#. Program from console
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# copies new server from pc tftp folder, respawns and reboots
|
# the following command copies new server from pc tftp folder, creates a soft link to xxxDetectorServerxxx
|
||||||
sls_detector_put copydetectorserver jungfrauDetectorServerxxx pcxxx
|
# [Jungfrau][CTB][Moench] also edits initttab to respawn server on reboot
|
||||||
|
# Then, the detector controller will reboot (except Eiger)
|
||||||
|
sls_detector_put copydetectorserver xxxDetectorServerxxx pcxxx
|
||||||
|
|
||||||
|
#. Copy the detector server specific config files or any others required to the detector:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sls_detector_put execcommand "tftp pcxxx -r configxxx -g"
|
||||||
|
|
||||||
|
|
||||||
Gotthard
|
Troubleshooting with tftp
|
||||||
---------
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
#. tftp write error: There is no space left. Please delete some old binaries and try again.
|
||||||
|
|
||||||
#. Install tftp and copy detector server binary to tftp folder
|
#. text file busy: You are trying to copy the same server.
|
||||||
#. Program from console (only from 5.0.0-rcx)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# copies new server from pc tftp folder, respawns and reboots
|
|
||||||
sls_detector_put copydetectorserver gotthardDetectorServerxxx pcxxx
|
|
||||||
|
|
||||||
|
|
||||||
|
< 5.0.0
|
||||||
|
--------
|
||||||
|
|
||||||
Mythen3
|
Please contact us.
|
||||||
-------
|
|
||||||
|
|
||||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
|
||||||
|
|
||||||
#. Install tftp and copy detector server binary to tftp folder
|
|
||||||
#. Program from console (only from 5.0.0-rcx)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# copies new server from pc tftp folder and reboots (does not respawn)
|
|
||||||
sls_detector_put copydetectorserver mythen3DetectorServerxxx pcxxx
|
|
||||||
|
|
||||||
|
|
||||||
Gotthard2
|
|
||||||
----------
|
|
||||||
|
|
||||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
|
||||||
|
|
||||||
#. Install tftp and copy detector server binary to tftp folder
|
|
||||||
#. Program from console (only from 5.0.0-rcx)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# copies new server from pc tftp folder and reboots (does not respawn)
|
|
||||||
sls_detector_put copydetectorserver gotthard2DetectorServerxxx pcxxx
|
|
||||||
|
|
||||||
|
|
||||||
Moench
|
|
||||||
------
|
|
||||||
|
|
||||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
|
||||||
|
|
||||||
#. Install tftp and copy detector server binary to tftp folder
|
|
||||||
#. Program from console (only from 5.0.0-rcx)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# copies new server from pc tftp folder, respawns and reboots
|
|
||||||
sls_detector_put copydetectorserver moenchDetectorServerxxx pcxxx
|
|
||||||
|
|
||||||
|
|
||||||
Ctb
|
|
||||||
---
|
|
||||||
|
|
||||||
**Location:** slsDetectorPackage/serverBin/ folder for every release.
|
|
||||||
|
|
||||||
#. Install tftp and copy detector server binary to tftp folder
|
|
||||||
#. Program from console (only from 5.0.0-rcx)
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# copies new server from pc tftp folder, respawns and reboots
|
|
||||||
sls_detector_put copydetectorserver ctbDetectorServerxxx pcxxx
|
|
@ -86,16 +86,199 @@ Client Commands
|
|||||||
sls_detector_get -h rx_framescaught
|
sls_detector_get -h rx_framescaught
|
||||||
|
|
||||||
|
|
||||||
|
ZMQ: Json Header Format
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
|
||||||
|
**Change in field names from slsDetectorPackage v6.x.x to v7.0.0**
|
||||||
|
|
||||||
|
* detSpec1 <- bunchId
|
||||||
|
* detSpec2 <- reserved
|
||||||
|
* detSpec3 <- debug
|
||||||
|
* detSpec4 <- roundRNumber
|
||||||
|
|
||||||
|
|
||||||
|
**Format**
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
{
|
||||||
|
"jsonversion": unsigned int,
|
||||||
|
"bitmode": unsigned int,
|
||||||
|
"fileIndex": unsigned long int,
|
||||||
|
"detshape": [
|
||||||
|
unsigned int,
|
||||||
|
unsigned int
|
||||||
|
],
|
||||||
|
"shape": [
|
||||||
|
unsigned int,
|
||||||
|
unsigned int
|
||||||
|
],
|
||||||
|
"size": unsigned int,
|
||||||
|
"acqIndex": unsigned long int,
|
||||||
|
"frameIndex": unsigned long int,
|
||||||
|
"progress": double,
|
||||||
|
"fname": string,
|
||||||
|
"data": unsigned int,
|
||||||
|
"completeImage": unsigned int,
|
||||||
|
|
||||||
|
"frameNumber": unsigned long long int,
|
||||||
|
"expLength": unsigned int,
|
||||||
|
"packetNumber": unsigned int,
|
||||||
|
"detSpec1": unsigned long int,
|
||||||
|
"timestamp": unsigned long int,
|
||||||
|
"modId": unsigned int,
|
||||||
|
"row": unsigned int,
|
||||||
|
"column": unsigned int,
|
||||||
|
"detSpec2": unsigned int,
|
||||||
|
"detSpec3": unsigned int,
|
||||||
|
"detSpec4": unsigned int,
|
||||||
|
"detType": unsigned int,
|
||||||
|
"version": unsigned int,
|
||||||
|
|
||||||
|
"flipRows": unsigned int,
|
||||||
|
"quad": unsigned int,
|
||||||
|
"addJsonHeader": {
|
||||||
|
string : string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| Field | Description |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| jsonversion | Version of the json header. |
|
||||||
|
| | Value at 4 for v6.x.x and v7.x.x |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| bitmode | Bits per pixel [4|8|16|32] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| fileIndex | Current file acquisition index |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| detshape | Geometry of the entire detector |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| shape | Geometry of the current port streamed out |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| size | Size of image of current port in bytesout |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| acqIndex | Frame number from the detector (redundant) |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| frameIndex | Frame number of current acquisition |
|
||||||
|
| | (Starting at 0) |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| progress | Progress of current acquisition in % |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| fname | Current file name |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| data | 1 if there is data following |
|
||||||
|
| | 0 if dummy header |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| completeImage| 1 if no missing packets for this frame |
|
||||||
|
| | in this port, else 0 |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| frameNumber | Frame number |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| expLength | subframe number (32 bit eiger) |
|
||||||
|
| | or real time exposure time in 100ns (others) |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| packetNumber | Number of packets caught for that frame |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| detSpec1 | See :ref:`here<Detector Specific Fields>` |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| timestamp | Timestamp with 10 MHz clock |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| modId | Module Id |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| row | Row number in detector |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| column | Column number in detector |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| detSpec2 | See :ref:`here<Detector Specific Fields>` |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| detSpec3 | See :ref:`here<Detector Specific Fields>` |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| detSpec4 | See :ref:`here<Detector Specific Fields>` |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| detType | Detector type enum |
|
||||||
|
| detSpec3 | See :ref:`Detector enum<Detector Enum>` |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| version | Detector header version. At 2 |
|
||||||
|
| | [From detector udp header] |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| flipRows | 1 if rows should be flipped. |
|
||||||
|
| | Usually for Eiger bottom. |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| quad | 1 if its an Eiger quad. |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
| addJsonHeader| Optional custom parameters that is required |
|
||||||
|
| | for processing code. |
|
||||||
|
+--------------+----------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
SLS Receiver Header Format
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
It is 112 bytes and consists of:
|
||||||
|
* 48 bytes of the SLS Detector Header (described in :ref:`the current detector header <detector udp header>`)
|
||||||
|
* 64 bytes of packet mask
|
||||||
|
|
||||||
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint64_t frameNumber;
|
||||||
|
uint32_t expLength;
|
||||||
|
uint32_t packetNumber;
|
||||||
|
uint64_t detSpec1;
|
||||||
|
uint64_t timestamp;
|
||||||
|
uint16_t modId;
|
||||||
|
uint16_t row;
|
||||||
|
uint16_t column;
|
||||||
|
uint16_t detSpec2;
|
||||||
|
uint32_t detSpec3;
|
||||||
|
uint16_t detSpec4;
|
||||||
|
uint8_t detType;
|
||||||
|
uint8_t version;
|
||||||
|
} sls_detector_header;
|
||||||
|
|
||||||
|
struct sls_receiver_header {
|
||||||
|
sls_detector_header detHeader; /**< is the detector header */
|
||||||
|
sls_bitset packetsMask; /**< is the packets caught bit mask */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
| The packetNumber in the SLS Receiver Header will be modified to number of packets caught by receiver for that frame. For eg. Jungfrau will have 128 packets per frame. If it is less, then this is a partial frame due to missing packets.
|
||||||
|
|
||||||
|
| Furthermore, the bit mask will specify which packets have been received.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
File format
|
File format
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
* The file name format is [fpath]/[fname]_dx_fy_[findex].raw, where x is module index and y is file index. **fname** is file name prefix and by default "run". **fpath** is '/' by default.
|
Master file is in json format.
|
||||||
|
|
||||||
* Each acquisition will have an increasing acquisition index or findex (if file write enabled). This can be retrieved by using **findex** command.
|
The file name format is [fpath]/[fname]_dx_fy_[findex].raw, where x is module index and y is file index. **fname** is file name prefix and by default "run". **fpath** is '/' by default.
|
||||||
|
|
||||||
* Each acquisition can have multiple files (the file index number **y**), with **rx_framesperfile** being the maximum number of frames per file. The default varies for each detector type.
|
|
||||||
|
|
||||||
* Some file name examples:
|
Each acquisition will have an increasing acquisition index or findex (if file write enabled). This can be retrieved by using **findex** command.
|
||||||
|
|
||||||
|
|
||||||
|
Each acquisition can have multiple files (the file index number **y**), with **rx_framesperfile** being the maximum number of frames per file. The default varies for each detector type.
|
||||||
|
|
||||||
|
|
||||||
|
Some file name examples:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -108,17 +291,19 @@ File format
|
|||||||
# second acquisition, first file
|
# second acquisition, first file
|
||||||
path-to-file/run_d0_f0_1.raw
|
path-to-file/run_d0_f0_1.raw
|
||||||
|
|
||||||
* Each acquisition will create a master file that can be enabled/disabled using **fmaster**. This should have parameters relevant to the acquisition.
|
|
||||||
|
|
||||||
* SLS Receiver Header consist of SLS Detector Header + 64 bytes of bitmask, altogether 112 bytes. The packetNumber in the sls detector header part, will be updated to number of packets caught by receiver for that frame. Furthermore, the bit mask will specify which packets have been received.
|
Each acquisition will create a master file that can be enabled/disabled using **fmaster**. This should have parameters relevant to the acquisition.
|
||||||
|
|
||||||
|
|
||||||
**Binary file format**
|
**Binary file format**
|
||||||
|
|
||||||
* This is the default file format.
|
This is the default file format.
|
||||||
|
|
||||||
* Each data file will consist of frames, each consisting of slsReceiver Header followed by data for 1 frame.
|
|
||||||
|
|
||||||
* Master file is of ASCII format and will also include the format of the slsReceiver Header.
|
Each data file will consist of frames, each consisting of slsReceiver Header followed by data for 1 frame.
|
||||||
|
|
||||||
|
|
||||||
|
Master file is of ASCII format and will also include the format of the slsReceiver Header.
|
||||||
|
|
||||||
|
|
||||||
**HDF5 file formats**
|
**HDF5 file formats**
|
||||||
@ -160,7 +345,7 @@ When handling callbacks, the control should be returned as soon as possible, to
|
|||||||
**Example**
|
**Example**
|
||||||
* `main cpp file <https://github.com/slsdetectorgroup/api-examples/blob/master/e4-receiver_callbacks.cpp>`_
|
* `main cpp file <https://github.com/slsdetectorgroup/api-examples/blob/master/e4-receiver_callbacks.cpp>`_
|
||||||
* `cmake file <https://github.com/slsdetectorgroup/api-examples/blob/master/CMakeLists.txt>`_.
|
* `cmake file <https://github.com/slsdetectorgroup/api-examples/blob/master/CMakeLists.txt>`_.
|
||||||
* how to install the slsDetectorPackage is provided :ref:`here <build from source using cmake>`.
|
* how to install the slsDetectorPackage with cmake is provided :ref:`here <build from source using cmake>`.
|
||||||
* compile the example **e4-rxr** by:
|
* compile the example **e4-rxr** by:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
@ -8,21 +8,24 @@ open an issue at our `github repo issues
|
|||||||
Common
|
Common
|
||||||
------
|
------
|
||||||
|
|
||||||
Missing Packets
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
Possible causes could be the following:
|
|
||||||
|
|
||||||
#. Receiver PC is not tuned for socket buffer size and input packet queue.
|
1. Total Failure of Packet Delivery
|
||||||
* Refer to :ref:`Increase rmem_default, rmem_max and max_backlog<Receiver PC Tuning>`
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
#. Wiring
|
#. Data cable plugged into the wrong interface on board (Jungfrau)
|
||||||
* Faulty wiring or connecting cable to incorrect interface.
|
* Please ensure that the data cable is plugged into the rightmost interface (default for single interface). The inner one is disabled for PCB v1.0 and must be selected via command for PCB v2.0.
|
||||||
|
|
||||||
#. Link up and speed
|
#. Link up and speed
|
||||||
* Check to see if there is a blue LED on board to signal that the link is up. Check ethtool and find if Link Deteced:Yes and Speed is acceptable (>10k).
|
* Check ethtool and find if Link Deteced:Yes and Speed is acceptable (>10k).
|
||||||
|
* Check to see if the 10G link is up (blue or red LED on board, close to SFP+). If not:
|
||||||
|
|
||||||
|
* Check transeiver and fibers are compatible (all MMF 850nm or all SMF 1030nm)
|
||||||
|
* Check fiber
|
||||||
|
* Check fiber polarity (if short range, unplug the link anywhere, and look at the light/dark pattern: dark has to mate with light)
|
||||||
|
|
||||||
#. Detector is not acquiring (Not Eiger)
|
#. Detector is not acquiring (Not Eiger)
|
||||||
* Take an acquisition with many images and using the following steps instead of acquire:
|
* Take an acquisition with many images and using the following steps instead of acquire:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sls_detector_put status start
|
sls_detector_put status start
|
||||||
@ -30,37 +33,63 @@ Possible causes could be the following:
|
|||||||
# which means the detector is acquiring.
|
# which means the detector is acquiring.
|
||||||
sls_detector_get framesl
|
sls_detector_get framesl
|
||||||
|
|
||||||
.. note ::
|
# If you are using multiple modules, the previous command can return -1 because each module will return different values. Then, check for a single module instead: sls_detector_get 0:framesl
|
||||||
|
|
||||||
If you are using multiple modules, the previous command can return -1 because each module will return different values. Then, check for a single module instead: sls_detector_get 0:framesl
|
|
||||||
|
|
||||||
#. Data cable plugged into the wrong interface on board (Jungfrau)
|
|
||||||
* Please ensure that the data cable is plugged into the rightmost interface. The middle one is disabled for PCB v1.0 and must be selected via command for PCB v2.0.
|
|
||||||
|
|
||||||
#. Detector is not sending data
|
#. Detector is not sending data (Except Eiger)
|
||||||
* Check the board to see if the green LED is blinking next to the data cable, which means that the detector is sending data.
|
* Check the board to see if the green LED close to SFP is blinking (detector is sending data). If not, detector is not operated properly (period too short/long, no trigger in trigger mode) or misconfigured and needs reboot.
|
||||||
|
|
||||||
#. Firewall or security feature
|
#. Power supply
|
||||||
* A firewall or some security feature could be blocking the reception of data.
|
* Check if power supply has enough current.
|
||||||
|
* For Jungfrau, refer to :ref:`Jungfrau Power Supply Troubleshooting<Jungfrau Troubleshooting Power Supply>`.
|
||||||
#. Ethernet interface not configured properly
|
|
||||||
* Ensure that the interfaces used are configured properly with the right mask and ip. Eg. use ifconfig and route commands to verify.
|
|
||||||
|
|
||||||
#. Ethernet interface not configured for Jumbo frames (10Gb)
|
#. Ethernet interface not configured for Jumbo frames (10Gb)
|
||||||
* Ensure that the interfaces used in receiver pc have MTU 9000 (jumbo frames) enabled.
|
* Ensure that the interfaces (on NIC and the switch) used in receiver pc have MTU 9000 (jumbo frames) enabled.
|
||||||
|
|
||||||
#. Detector IP (Not Eiger)
|
|
||||||
* Ensure it is valid and does not end if 0 or 255. Also ensure that the detector ip is in the same subnet as rx_udpip and the masking in the interface configuration ensures this rule.
|
|
||||||
|
|
||||||
#. Tcpdump or wireshark
|
#. Check if 'rx_frames' counter in 'ifconfig' do not increment for interface.
|
||||||
|
* If no, check switch configuration if present. Port counters of switch can also help to identify problem.
|
||||||
|
* If yes, but receiver software does not see it:
|
||||||
|
|
||||||
|
* Check no firewall (eg. firewalld) is present or add rules
|
||||||
|
* Check that selinux is disabled ( or add rules)
|
||||||
|
|
||||||
|
#. Source UDP IP in config file (Not Eiger)
|
||||||
|
* Ensure it is valid and does not end if 0 or 255. Also ensure that the source ip 'udp_srcip' is in the same subnet as destination ip 'udp_dstip' and the masking in the interface configuration ensures this rule.
|
||||||
|
* Eg. If interface IP is 102.10.10.110 and mask is 255.255.255.0, udp_srcip has to be 102.10.10.xxx (same subnet)
|
||||||
|
* Use ifconfig and route commands to verify etheret interface configuration
|
||||||
|
|
||||||
|
|
||||||
|
#. Netstat and netcat
|
||||||
|
* Try with netstat to see if its really listening to the right interface. Or netcat to see if you get packets.
|
||||||
|
|
||||||
|
#. Wireshark or Tcpdump
|
||||||
* Use one of these to confirm that you receive packets (with the right filtering ie. source and destination ports, ip).
|
* Use one of these to confirm that you receive packets (with the right filtering ie. source and destination ports, ip).
|
||||||
|
|
||||||
#. Check SFP modules
|
|
||||||
* Check if the SFP modules on both sides of the fiber are of same type.
|
|
||||||
|
2. Partial or Random Packet Loss (Performance)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
The following suggestions are for convenience. Please do not follow blindly, research each parameter and adapt it to your system.
|
||||||
|
|
||||||
|
#. Receiver PC is not tuned for socket buffer size and input packet queue or other parameters.
|
||||||
|
* Refer to :ref:`Receiver PC Tuning<Receiver PC Tuning>`
|
||||||
|
|
||||||
|
#. Wiring
|
||||||
|
* Faulty wiring or connecting cable to incorrect interface.
|
||||||
|
|
||||||
|
|
||||||
#. Pinging the subnet (receiving only a few number of packets each time)
|
#. Pinging the subnet (receiving only a few number of packets each time)
|
||||||
* If a switch is used between a receiver pc and detector instead of plugging the cables directly, one might have to ping any ip in the subnet of the Ethernet interface constantly so that it does not forget the ip during operation.
|
* If a switch is used between a receiver pc and detector instead of plugging the cables directly, one might have to ping any ip in the subnet of the Ethernet interface constantly so that it does not forget the ip during operation.
|
||||||
* Eg. if rx_udpip is 10.2.3.100, then ping constantly 10.2.3.xxx, where xxx is any ip other than 100.
|
* Eg. if rx_udpip is 10.2.3.100, then ping constantly 10.2.3.xxx, where xxx is any ip other than 100.
|
||||||
|
* Using slsReceiver, you can use a command that does this for you:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# arping the interface in a separate thread every minute
|
||||||
|
sls_detector_put rx_arping 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -68,6 +97,12 @@ Possible causes could be the following:
|
|||||||
|
|
||||||
Receiver PC Tuning Options
|
Receiver PC Tuning Options
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
| xth1 is example interface name in the following examples.
|
||||||
|
| These settings are lost at pc reboot.
|
||||||
|
|
||||||
#. Increase maximum receive socket buffer size and socket input packet queue.
|
#. Increase maximum receive socket buffer size and socket input packet queue.
|
||||||
* Temporarily (until shut down)
|
* Temporarily (until shut down)
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -111,6 +146,7 @@ Receiver PC Tuning Options
|
|||||||
# check how many GB memory you can allocate, to avoid swapping otherwise
|
# check how many GB memory you can allocate, to avoid swapping otherwise
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#. Modify ethtool settings.
|
#. Modify ethtool settings.
|
||||||
* rx ring parameters
|
* rx ring parameters
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -127,6 +163,9 @@ Receiver PC Tuning Options
|
|||||||
# check
|
# check
|
||||||
ethtool -c xth1
|
ethtool -c xth1
|
||||||
|
|
||||||
|
# enable adaptive xoalescence parameters
|
||||||
|
ethtool -C xth1 adaptive-rx on
|
||||||
|
|
||||||
# set to max value in your pc settings
|
# set to max value in your pc settings
|
||||||
ethtool -C xth1 rx-usecs 100
|
ethtool -C xth1 rx-usecs 100
|
||||||
|
|
||||||
@ -138,11 +177,43 @@ Receiver PC Tuning Options
|
|||||||
|
|
||||||
# set to max value in your pc settings
|
# set to max value in your pc settings
|
||||||
ethtool -A xth1 rx on
|
ethtool -A xth1 rx on
|
||||||
|
|
||||||
.. note ::
|
* generic receiver offload (might not always work)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
| xth1 is example interface name.
|
# check
|
||||||
| These settings are lost at pc reboot.
|
ethtool -k xth1
|
||||||
|
|
||||||
|
# enable generic receiver offload
|
||||||
|
ethtool -K xth1 gro
|
||||||
|
|
||||||
|
|
||||||
|
#. Disable power saving in CPU frequency scaling and set system to performance
|
||||||
|
* Check current policy (default might be powersave or schedutil)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# check current active governor and range of cpu freq policy
|
||||||
|
cpupower frequency-info --policy
|
||||||
|
# list all available governors for this kernel
|
||||||
|
cpupower frequency-info --governors
|
||||||
|
|
||||||
|
* Temporarily (until shut down)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# set to performance
|
||||||
|
sudo cpupower frequency-set -g performance
|
||||||
|
|
||||||
|
# or
|
||||||
|
cpufreq-info
|
||||||
|
for i in ‘seq 0 7‘; do cpufreq-set -c $i -g performance; done
|
||||||
|
|
||||||
|
* Permanently
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# edit /etc/sysconfig/cpupower to preference
|
||||||
|
|
||||||
|
# enable or disable permanently
|
||||||
|
sudo systemctl enable cpupower
|
||||||
|
|
||||||
#. Give user speicific user scheduling privileges.
|
#. Give user speicific user scheduling privileges.
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -155,18 +226,29 @@ Receiver PC Tuning Options
|
|||||||
|
|
||||||
This is also set if slsReceiver is run as root user.
|
This is also set if slsReceiver is run as root user.
|
||||||
|
|
||||||
|
#. Some more advanced options:
|
||||||
|
.. warning ::
|
||||||
|
|
||||||
#. Disable power saving in CPU frequency
|
Please do not try if you do not understand
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# or similar command depending on your distribution
|
#. reduce the number of queue per NIC to the number of expected streams: ethtool -L xth0 combined 2
|
||||||
cpupower frequency-info
|
#. assign each queue to its stream: ethtool -U xth0 flow-type tcp4 dst-port 50004 action 1
|
||||||
cpupower frequency-set -g performance
|
#. assign to each queue (IRQ) one CPU on the right socket: echo "3"> /proc/irq/47/smp_affinity_list #change the numbers looking at /proc/interrupts
|
||||||
|
#. disable irqbalance service
|
||||||
|
#. Be sure that the switch knows the receiver mac address. Most switches reset the mac lists every few minutes, and since the receiver only receives, there is not a periodic refresh of the mac list. In this case, one can set a fixed mac list in the switch, or setup some kind of script arping or pinging out from that interface (will be available in 7.0.0).
|
||||||
|
#. assign the receiver numa node (also with -m) to the socket where the NIC is attached. To know it, cat /sys/class/net/ethxxx/device/numa_node
|
||||||
|
#. ensure file system performance can handle sustained high data rate:
|
||||||
|
|
||||||
|
* One can use dd:
|
||||||
|
|
||||||
# or
|
.. code-block:: bash
|
||||||
cpufreq-info
|
|
||||||
for i in ‘seq 0 7‘; do cpufreq-set -c $i -g performance; done
|
dd if=/dev/zero of=/testpath/testfile bs=1M count=100000
|
||||||
|
* Or better fio (which needs to be installed)
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
fio --name=global –directory=/testpath/ --rw=write --ioengine=libaio --direct=0 --size=200G -- numjobs=2 --iodepth=1 --bs=1M –name=job
|
||||||
|
|
||||||
slsReceiver Tuning
|
slsReceiver Tuning
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
@ -174,18 +256,25 @@ slsReceiver Tuning
|
|||||||
#. Starting receiver as root to have scheduling privileges.
|
#. Starting receiver as root to have scheduling privileges.
|
||||||
|
|
||||||
#. For 10g, enable flow control
|
#. For 10g, enable flow control
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sls_detector_put flowcontrol10g 1
|
sls_detector_put flowcontrol10g 1
|
||||||
|
|
||||||
#. Increase slsReceiver fifo depth between listening and processing threads.
|
#. Increase slsReceiver ring buffer depth
|
||||||
|
This can be tuned depending on the number of receivers (modules) and memory available.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sls_detector_get rx_fifodepth
|
# sugggested not to use more than half memory of CPU socket in case of NUMA systems) for this
|
||||||
# sets number of frames in fifo to 5000
|
|
||||||
sls_detector_put rx_fifodepth 5000
|
sls_detector_get rx_fifodepth
|
||||||
|
# sets number of frames in fifo to 1024 ~1GB per receiver. Default is 2500
|
||||||
|
sls_detector_put rx_fifodepth 1024
|
||||||
|
|
||||||
|
#. Increase number of frames per file
|
||||||
|
This can reduce time taken to open and close files.
|
||||||
|
|
||||||
#. Increase number of frames per file to reduce time taken to open and close files.
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sls_detector_get rx_framesperfile
|
sls_detector_get rx_framesperfile
|
||||||
@ -193,10 +282,31 @@ slsReceiver Tuning
|
|||||||
# writes all frames into a single file
|
# writes all frames into a single file
|
||||||
sls_detector_put rx_framesperfile 0
|
sls_detector_put rx_framesperfile 0
|
||||||
|
|
||||||
|
#. Disable file write
|
||||||
|
This can ensure it is not the file system performance hampering high date rate.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sls_detector_put fwrite 0
|
||||||
|
|
||||||
|
|
||||||
Shared memory error
|
Shared memory error
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
| For errors due to access or size, delete shared memory files nd try again.
|
For errors due to access or size, use any of the following suggestions.
|
||||||
|
#. Delete shared memory files and try again
|
||||||
|
#. Use environment variable to use a different shared memory ending in jfxx
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# shared memory ending in jfxx
|
||||||
|
export SLSDETNAME=jfxx
|
||||||
|
|
||||||
|
#. USe a different multi shared memory ID
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sls_detector_put 2-config xxxx.config
|
||||||
|
# or
|
||||||
|
sls_detector_put 2-hostname bchipxxx
|
||||||
|
|
||||||
To list all shared memory files of sls detector package.
|
To list all shared memory files of sls detector package.
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -247,6 +357,19 @@ Possible causes could be the following:
|
|||||||
* For Jungfrau, refer to :ref:`Jungfrau Power Supply Troubleshooting<Jungfrau Troubleshooting Power Supply>`.
|
* For Jungfrau, refer to :ref:`Jungfrau Power Supply Troubleshooting<Jungfrau Troubleshooting Power Supply>`.
|
||||||
|
|
||||||
|
|
||||||
|
Cannot ping module (Nios)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
If you executed "reboot" command on the board, you cannot ping it anymore unless you power cycle. To reboot the controller, please use the software command ("rebootcontroller"), which talks to the microcontroller.
|
||||||
|
|
||||||
|
Gotthard2
|
||||||
|
---------
|
||||||
|
|
||||||
|
Cannot get data without a module attached
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
You cannot get data without a module attached as a specific pin is floating. Attach module to get data.
|
||||||
|
|
||||||
|
|
||||||
Gotthard
|
Gotthard
|
||||||
----------
|
----------
|
||||||
@ -294,6 +417,7 @@ Cannot get multi module data
|
|||||||
|
|
||||||
#. Check :ref:`Common Multi Module Troubleshooting<common troubleshooting multi module data>`
|
#. Check :ref:`Common Multi Module Troubleshooting<common troubleshooting multi module data>`
|
||||||
#. Power Supply
|
#. Power Supply
|
||||||
|
* Jungfrau needs a ~4A per module for a short time at startup. If not, it reboots misconfigured.
|
||||||
* Comment out this line in the config file: powerchip 1
|
* Comment out this line in the config file: powerchip 1
|
||||||
* Powering on the chip increases the power consumption by a considerable amount. If commenting out this line aids in getting data (strange data due to powered off chip), then it could be the power supply current limit. Fix it (possibly to 8A current limit) and uncomment the powerchip line back in config file.
|
* Powering on the chip increases the power consumption by a considerable amount. If commenting out this line aids in getting data (strange data due to powered off chip), then it could be the power supply current limit. Fix it (possibly to 8A current limit) and uncomment the powerchip line back in config file.
|
||||||
|
|
||||||
|
37
docs/src/udpconfig.rst
Normal file
37
docs/src/udpconfig.rst
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
.. _detector udp header:
|
||||||
|
|
||||||
|
|
||||||
|
Config file
|
||||||
|
============
|
||||||
|
|
||||||
|
Commands to configure the UDP in the config file:
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
These command are recommended to be placed before "rx_hostname" if it is used.
|
||||||
|
|
||||||
|
Source Port
|
||||||
|
-----------
|
||||||
|
Hardcoded in detector server, starting at 32410.
|
||||||
|
|
||||||
|
udp_srcip - Source IP
|
||||||
|
---------------------
|
||||||
|
IP address of detector UDP interface to send packets from. Do not use for Eiger 1Gb interface (uses its hardware IP). For others, must be in the same subnet as **udp_dstip**.
|
||||||
|
|
||||||
|
udp_srcmac - Source MAC
|
||||||
|
-----------------------
|
||||||
|
MAC address of detector UDP interface to send packets from. Do not use for Eiger (uses hardware mac). For others, it is not necessary, but can help for switch and debugging to put unique values for each module.
|
||||||
|
|
||||||
|
|
||||||
|
udp_dstport - Desintation Port
|
||||||
|
-------------------------------
|
||||||
|
Port in receiver pc to listen to packets from the detector.
|
||||||
|
|
||||||
|
udp_dstip - Destination IP
|
||||||
|
--------------------------
|
||||||
|
IP address of interface in receiver pc to listen to packets from detector. If **auto** is used (only when using slsReceiver/ slsMultiReceiver), the IP of **rx_hostname** is picked up.
|
||||||
|
|
||||||
|
udp_dstmac - Destination MAC
|
||||||
|
----------------------------
|
||||||
|
MAC address of interface in receiver pc to list to packets from detector. Only required when using custom receiver, else slsReceiver/slsMultiReceiver picks it up from **udp_dstip**.
|
||||||
|
|
152
docs/src/udpdetspec.rst
Normal file
152
docs/src/udpdetspec.rst
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
.. _detector specific fields:
|
||||||
|
|
||||||
|
Detector Specific Fields
|
||||||
|
========================
|
||||||
|
|
||||||
|
Please check out :ref:`the current detector header <detector udp header>` to see
|
||||||
|
where the detector specific fields are placed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Eiger
|
||||||
|
------
|
||||||
|
|
||||||
|
.. table:: Detector Specific Field
|
||||||
|
|
||||||
|
+----------+------------------------------+
|
||||||
|
| expLength| Sub Frame Number |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec1 | 0x0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec2 | 0x0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec3 | e14a |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec4 | Round Robin Interface Number |
|
||||||
|
+----------+------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Jungfrau
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. table:: Detector Specific Field
|
||||||
|
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec1 | Bunch Id [#]_ |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec2 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec3 | DAQ info |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec4 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
.. table:: DAQ Info Field
|
||||||
|
|
||||||
|
+----------+--------------------+----------------------------------------------+
|
||||||
|
| Bits | Name | Description |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
| 0 | High gain | 1 | High Gain enabled |
|
||||||
|
| | +-----+----------------------------------------+
|
||||||
|
| | | 0 | High Gain disabled |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
| 1 | Fix gain stage 1 | 1 | Gain stage 1 fixed. The switch that |
|
||||||
|
| | | | selects the gains stage 1 is active all|
|
||||||
|
| | | | the time. |
|
||||||
|
| | +-----+----------------------------------------+
|
||||||
|
| | | 0 | Gain stage 1 unset. The switch that |
|
||||||
|
| | | | selects the gains stage 1 is inactive |
|
||||||
|
| | | | all the time. |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
| 2 | Fix gain stage 2 | 1 | Gain stage 2 fixed. The switch that |
|
||||||
|
| | | | selects the gains stage 2 is active all|
|
||||||
|
| | | | the time. |
|
||||||
|
| | +-----+----------------------------------------+
|
||||||
|
| | | 0 | Gain stage 2 unset. The switch that |
|
||||||
|
| | | | selects the gains stage 2 is inactive |
|
||||||
|
| | | | all the time. |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
| 4 | Comparator reset | 1 | On-chip comparator in reset state. |
|
||||||
|
| | | | Dynamic-gain switching is therefore |
|
||||||
|
| | | | disabled. |
|
||||||
|
| | +-----+----------------------------------------+
|
||||||
|
| | | 0 | On-chip comparator active. |
|
||||||
|
+----------+--------------------+-----+-----+-----+----------------------------+
|
||||||
|
| 7-5 | Jungfrau chip |Bit 7|Bit 6|Bit 5| Description |
|
||||||
|
| | version +-----+-----+-----+----------------------------+
|
||||||
|
| | | 0 | 0 | 0 | v1.0 |
|
||||||
|
| | +-----+-----+-----+----------------------------+
|
||||||
|
| | | 0 | 0 | 1 | v1.1 |
|
||||||
|
| | +-----+-----+-----+----------------------------+
|
||||||
|
| | | 0 | 1 | X | Reserved |
|
||||||
|
| | +-----+-----+-----+----------------------------+
|
||||||
|
| | | 1 | X | X | Reserved |
|
||||||
|
+----------+--------------------+-----+-----+-----+----------------------------+
|
||||||
|
| 11-8 | Storage cell select|Storage cell used for this exposure. This |
|
||||||
|
| | |field defines the storage cell that was used |
|
||||||
|
| | |to acquire the data of this frame |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
| 12 | Force switching | 1 | Forced switching to gain stage 1 at the|
|
||||||
|
| | to gain stage 1 | | start of the exposure period. |
|
||||||
|
| | +-----+----------------------------------------+
|
||||||
|
| | | 0 | Disabled forced gain switching to gain |
|
||||||
|
| | | | stage 1. Dynamic gain switching |
|
||||||
|
| | | | conditions apply. |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
| 13 | Force switching | 1 | Forced switching to gain stage 2 at the|
|
||||||
|
| | to gain stage 2 | | start of the exposure period. |
|
||||||
|
| | +-----+----------------------------------------+
|
||||||
|
| | | 0 | Disabled forced gain switching to gain |
|
||||||
|
| | | | stage 2. Dynamic gain switching |
|
||||||
|
| | | | conditions apply. |
|
||||||
|
+----------+--------------------+-----+-----+-----+----------------------------+
|
||||||
|
| 23-16 | 10-Gigabit event |The 8-bit event code contains value of the |
|
||||||
|
| | code |event received over the 10 GbE interface by |
|
||||||
|
| | |JUNGFRAU detector at the moment of the frame |
|
||||||
|
| | |acquisition. |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
| 31 | External input flag| 1 | External input flag detected in the |
|
||||||
|
| | | | last exposure. |
|
||||||
|
| | +-----+----------------------------------------+
|
||||||
|
| | | 0 | External input flag not detected in the|
|
||||||
|
| | | | last exposure. |
|
||||||
|
+----------+--------------------+-----+----------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Gotthard2
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. table:: Detector Specific Field
|
||||||
|
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec1 | Train Id [#]_ |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec2 | Bunch Id [#]_ |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec3 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec4 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Mythen3
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. table:: Detector Specific Field
|
||||||
|
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec1 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec2 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec3 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
| detSpec4 | 0 |
|
||||||
|
+----------+------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
.. [#] **Bunch Id**: bunch identification number received by the detector at the moment of frame acquisition.
|
||||||
|
.. [#] **Train Id**: train identification number received by the detector at the moment of frame acquisition.
|
||||||
|
.. [#] **Bunch Id**: bunch identification number to identify every single exposure during a burst acquisition.
|
125
docs/src/udpheader.rst
Normal file
125
docs/src/udpheader.rst
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
.. _detector udp header:
|
||||||
|
|
||||||
|
Format
|
||||||
|
=======
|
||||||
|
|
||||||
|
The UDP data format for the packets consist of a common header for all detectors, followed by the data for that one packet.
|
||||||
|
|
||||||
|
|
||||||
|
Current Version
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
**v2.0 (slsDetectorPackage v7.0.0+)**
|
||||||
|
|
||||||
|
.. table:: <---------------------------------------------------- 8 bytes per row --------------------------------------------->
|
||||||
|
:align: center
|
||||||
|
:widths: 30,30,30,15,15
|
||||||
|
|
||||||
|
+---------------------------------------------------------------+
|
||||||
|
| frameNumber |
|
||||||
|
+-------------------------------+-------------------------------+
|
||||||
|
| expLength | packetNumber |
|
||||||
|
+-------------------------------+-------------------------------+
|
||||||
|
| **detSpec1** |
|
||||||
|
+---------------------------------------------------------------+
|
||||||
|
| timestamp |
|
||||||
|
+---------------+---------------+---------------+---------------+
|
||||||
|
| modId | row | column | **detSpec2** |
|
||||||
|
+---------------+---------------+---------------+-------+-------+
|
||||||
|
| **detSpec3** | **detSpec4** |detType|version|
|
||||||
|
+-------------------------------+---------------+-------+-------+
|
||||||
|
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
|
||||||
|
Since there is no difference in the format of the UDP header from the detector
|
||||||
|
from the previous version (v2.0), the version number stays the same.
|
||||||
|
|
||||||
|
Only the struture member names have changed in sls_detector_defs.h
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Description
|
||||||
|
------------
|
||||||
|
|
||||||
|
* **Detector specific field** descriptions are found :ref:`here<detector specific fields>`.
|
||||||
|
|
||||||
|
* **frameNumber**: framenumber to which the current packet belongs to.
|
||||||
|
|
||||||
|
* **expLength**: measured exposure time of the frame in tenths of microsecond. It is instead the sub frame number for Eiger.
|
||||||
|
|
||||||
|
* **packetNumber**: packet number of the frame to which the current data belongs to.
|
||||||
|
|
||||||
|
* **timestamp**: time measured at the start of frame exposure since the start of the current measurement. It is expressed in tenths of microsecond.
|
||||||
|
|
||||||
|
* **modId**: module ID picked up from det_id_[detector type].txt on the detector cpu.
|
||||||
|
|
||||||
|
* **row**: row position of the module in the detector system. It is calculated by the order of the module in hostname command, as well as the detsize command.
|
||||||
|
|
||||||
|
* **column**: column position of the module in the detector system. It is calculated by the order of the module in hostname command, as well as the detsize command.
|
||||||
|
|
||||||
|
* **detType**: detector type from enum of detectorType in the package.
|
||||||
|
|
||||||
|
* **version**: current version of the detector header (0x2).
|
||||||
|
|
||||||
|
|
||||||
|
Detector Enum
|
||||||
|
--------------
|
||||||
|
|
||||||
|
================ ========
|
||||||
|
Detector Type Value
|
||||||
|
================ ========
|
||||||
|
GENERIC 0
|
||||||
|
EIGER 1
|
||||||
|
GOTTHARD 2
|
||||||
|
JUNGFRAU 3
|
||||||
|
CHIPTESTBOARD 4
|
||||||
|
MOENCH 5
|
||||||
|
MYTHEN3 6
|
||||||
|
GOTTHARD2 7
|
||||||
|
================ ========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Previous Versions
|
||||||
|
-----------------
|
||||||
|
**v2.0 (Package v4.0.0 - 6.x.x)**
|
||||||
|
|
||||||
|
.. table:: <---------------------------------------------------- 8 bytes ---------------------------------------------------->
|
||||||
|
:align: center
|
||||||
|
:widths: 30,30,30,15,15
|
||||||
|
|
||||||
|
+---------------------------------------------------------------+
|
||||||
|
| frameNumber |
|
||||||
|
+-------------------------------+-------------------------------+
|
||||||
|
| expLength | packetNumber |
|
||||||
|
+-------------------------------+-------------------------------+
|
||||||
|
| bunchid |
|
||||||
|
+---------------------------------------------------------------+
|
||||||
|
| timestamp |
|
||||||
|
+---------------+---------------+---------------+---------------+
|
||||||
|
| modId | **row** | **column** | **reserved** |
|
||||||
|
+---------------+---------------+---------------+-------+-------+
|
||||||
|
| debug | roundRNumber |detType|version|
|
||||||
|
+-------------------------------+---------------+-------+-------+
|
||||||
|
|
||||||
|
**v1.0 (Package v3.0.0 - 3.1.5)**
|
||||||
|
|
||||||
|
.. table:: <---------------------------------------------------- 8 bytes ---------------------------------------------------->
|
||||||
|
:align: center
|
||||||
|
:widths: 30,30,30,15,15
|
||||||
|
|
||||||
|
+---------------------------------------------------------------+
|
||||||
|
| frameNumber |
|
||||||
|
+-------------------------------+-------------------------------+
|
||||||
|
| expLength | packetNumber |
|
||||||
|
+-------------------------------+-------------------------------+
|
||||||
|
| bunchid |
|
||||||
|
+---------------------------------------------------------------+
|
||||||
|
| timestamp |
|
||||||
|
+---------------+---------------+---------------+---------------+
|
||||||
|
| modId | xCoord | yCoord | zCoord |
|
||||||
|
+---------------+---------------+---------------+-------+-------+
|
||||||
|
| debug | roundRNumber |detType|version|
|
||||||
|
+-------------------------------+---------------+-------+-------+
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
.. _Virtual Detector Servers:
|
.. _Virtual Detector Servers:
|
||||||
Detector Simulators
|
Simulators
|
||||||
===================
|
===========
|
||||||
|
|
||||||
Compilation
|
Compilation
|
||||||
-----------
|
-----------
|
||||||
@ -13,16 +13,14 @@ Compilation
|
|||||||
* Using cmk.sh script,
|
* Using cmk.sh script,
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
./cmk.sh -bsj9 #option s is for simulator
|
./cmk.sh -bsj9 # option -s is for simulator
|
||||||
|
|
||||||
|
|
||||||
Binaries
|
Binaries
|
||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
eigerDetectorServerMaster_virtual
|
eigerDetectorServer_virtual
|
||||||
eigerDetectorServerSlaveTop_virtual
|
|
||||||
eigerDetectorServerSlaveBottom_virtual
|
|
||||||
jungfrauDetectorServer_virtual
|
jungfrauDetectorServer_virtual
|
||||||
gotthardDetectorServer_virtual
|
gotthardDetectorServer_virtual
|
||||||
gotthard2DetectorServer_virtual
|
gotthard2DetectorServer_virtual
|
||||||
@ -67,7 +65,15 @@ Sample Config file
|
|||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
There are sample config files for each detector in slsDetectorPackage/examples folder.
|
There are sample config files for each detector in slsDetectorPackage/examples folder.
|
||||||
|
|
||||||
For a Single Module
|
For a Single Module (Basic)
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
hostname localhost
|
||||||
|
rx_hostname localhost
|
||||||
|
udp_dstip auto
|
||||||
|
|
||||||
|
|
||||||
|
For a Single Module (With Options)
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# connects to control port 1912
|
# connects to control port 1912
|
||||||
@ -140,7 +146,7 @@ Gui
|
|||||||
Limitations
|
Limitations
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
#. Data coming out of virtual server is fake. Value at each pixel/ channel is incremented by 1.
|
#. Data coming out of virtual server is fake.
|
||||||
|
|
||||||
#. A stop will stop the virtual acquisition only at the start of every new frame.
|
#. A stop will stop the virtual acquisition only at the start of every new frame.
|
||||||
|
|
||||||
|
2
docs/static/extra.css
vendored
2
docs/static/extra.css
vendored
@ -1,4 +1,4 @@
|
|||||||
/* override table no-wrap */
|
/* override table no-wrap */
|
||||||
.wy-table-responsive table td, .wy-table-responsive table th {
|
.wy-table-responsive table td, .wy-table-responsive table th {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
}
|
}
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
GITREPO1='git remote -v'
|
|
||||||
GITREPO2=" | grep \"fetch\" | cut -d' ' -f1"
|
|
||||||
BRANCH1='git branch -v'
|
|
||||||
BRANCH2=" | grep '*' | cut -d' ' -f2"
|
|
||||||
REPUID1='git log --pretty=format:"%H" -1'
|
|
||||||
AUTH1_1='git log --pretty=format:"%cn" -1'
|
|
||||||
AUTH1_2=" | cut -d' ' -f1"
|
|
||||||
AUTH2_1='git log --pretty=format:"%cn" -1'
|
|
||||||
AUTH2_2=" | cut -d' ' -f2"
|
|
||||||
FOLDERREV1='git log --oneline . ' #used for all the individual server folders
|
|
||||||
FOLDERREV2=" | wc -l" #used for all the individual server folders
|
|
||||||
REV1='git log --oneline '
|
|
||||||
REV2=" | wc -l"
|
|
||||||
|
|
||||||
GITREPO=`eval $GITREPO1 $GITREPO2`
|
|
||||||
BRANCH=`eval $BRANCH1 $BRANCH2`
|
|
||||||
REPUID=`eval $REPUID1`
|
|
||||||
AUTH1=`eval $AUTH1_1 $AUTH1_2`
|
|
||||||
AUTH2=`eval $AUTH2_1 $AUTH2_2`
|
|
||||||
REV=`eval $REV1 $REV2`
|
|
||||||
FOLDERREV=`eval $FOLDERREV1 $FOLDERREV2`
|
|
||||||
|
|
6
examples/badchannel.txt
Normal file
6
examples/badchannel.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
0
|
||||||
|
10, 30
|
||||||
|
40:45 50:52
|
||||||
|
1279
|
||||||
|
# all bad channels are applied for all counters in deector
|
||||||
|
|
@ -409,18 +409,18 @@ patword 018d 0008599f0008503a
|
|||||||
patioctrl 8f0effff6dbffdbf
|
patioctrl 8f0effff6dbffdbf
|
||||||
patclkctrl 0000000000000000
|
patclkctrl 0000000000000000
|
||||||
patlimits 0000 018c
|
patlimits 0000 018c
|
||||||
patloop0 013a 016b
|
patloop 0 013a 016b
|
||||||
patnloop0 199
|
patnloop 0 199
|
||||||
patloop1 0400 0400
|
patloop 1 0400 0400
|
||||||
patnloop1 0
|
patnloop 1 0
|
||||||
patloop2 0400 0400
|
patloop 2 0400 0400
|
||||||
patnloop2 0
|
patnloop 2 0
|
||||||
patwait0 00aa
|
patwait 0 00aa
|
||||||
patwaittime0 10000
|
patwaittime 0 10000
|
||||||
patwait1 0400
|
patwait 1 0400
|
||||||
patwaittime1 0
|
patwaittime 1 0
|
||||||
patwait2 0400
|
patwait 2 0400
|
||||||
patwaittime2 0
|
patwaittime 2 0
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
### edit with hostname or 1Gbs IP address of your server
|
### edit with hostname or 1Gbs IP address of your server
|
||||||
|
@ -5,7 +5,7 @@ detsize 1024 1024
|
|||||||
hostname bchip048+bchip052+
|
hostname bchip048+bchip052+
|
||||||
|
|
||||||
# 1Gb receiver pc hostname (default tcpport: 1954)
|
# 1Gb receiver pc hostname (default tcpport: 1954)
|
||||||
rx_hostname pcmoench01+pcmoench01:1955
|
rx_hostname pcmoench01:1954+pcmoench01:1955+
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
### edit with hostname or IP address of your detector
|
### edit with hostname or IP address of your detector
|
||||||
############################################
|
############################################
|
||||||
#hostname bchip181+
|
#hostname bchip181+
|
||||||
hostname bchip181+
|
hostname bchip135
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
### edit with hostname or 1Gbs IP address of your server
|
### edit with hostname or 1Gbs IP address of your server
|
||||||
@ -28,7 +28,7 @@ rx_zmqport 50003
|
|||||||
#############################################
|
#############################################
|
||||||
### edit with 1 Gbs IP of PC where you will run the GUI
|
### edit with 1 Gbs IP of PC where you will run the GUI
|
||||||
############################################
|
############################################
|
||||||
zmqip 129.129.202.98
|
zmqip 129.129.202.57
|
||||||
zmqport 50001
|
zmqport 50001
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1910
|
hostname localhost:1910
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2010
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
udp_dstport 50010
|
udp_dstport 50010
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
|
||||||
udp_dstip auto
|
|
||||||
|
|
||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip 192.168.1.100
|
udp_srcip 192.168.1.100
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2010
|
||||||
|
|
||||||
|
# udp destination ip from rx_hostname
|
||||||
|
udp_dstip auto
|
||||||
|
|
||||||
# output file directory
|
# output file directory
|
||||||
fpath /tmp
|
fpath /tmp
|
||||||
|
|
||||||
@ -27,418 +27,7 @@ dbitclk 40
|
|||||||
|
|
||||||
|
|
||||||
# patterns
|
# patterns
|
||||||
patword 0x0000 0x0000000000000000
|
pattern /tmp/pattern.pat
|
||||||
patword 0x0001 0x0000000000000000
|
|
||||||
patword 0x0002 0x0008000900080000
|
|
||||||
patword 0x0003 0x0008000900080000
|
|
||||||
patword 0x0004 0x0008000900080000
|
|
||||||
patword 0x0005 0x0008000900080000
|
|
||||||
patword 0x0006 0x0008000900080000
|
|
||||||
patword 0x0007 0x0008000900080000
|
|
||||||
patword 0x0008 0x0008000900080000
|
|
||||||
patword 0x0009 0x0008000900080000
|
|
||||||
patword 0x000a 0x0008000900080000
|
|
||||||
patword 0x000b 0x0008000900080000
|
|
||||||
patword 0x000c 0x0008000900080000
|
|
||||||
patword 0x000d 0x0008000900080000
|
|
||||||
patword 0x000e 0x0008000900080000
|
|
||||||
patword 0x000f 0x0008000900080000
|
|
||||||
patword 0x0010 0x0008000900080000
|
|
||||||
patword 0x0011 0x0008000900080000
|
|
||||||
patword 0x0012 0x0008000900080000
|
|
||||||
patword 0x0013 0x0008000900080000
|
|
||||||
patword 0x0014 0x0008000900080000
|
|
||||||
patword 0x0015 0x0008000900080000
|
|
||||||
patword 0x0016 0x0008400900080020
|
|
||||||
patword 0x0017 0x0008400900080020
|
|
||||||
patword 0x0018 0x0008599f0418503a
|
|
||||||
patword 0x0019 0x0008599f0418503a
|
|
||||||
patword 0x001a 0x0108599f0418503a
|
|
||||||
patword 0x001b 0x0108599f0418503a
|
|
||||||
patword 0x001c 0x0108599f0418503a
|
|
||||||
patword 0x001d 0x0108599f0418503a
|
|
||||||
patword 0x001e 0x0108599f0418503a
|
|
||||||
patword 0x001f 0x0108599f0418503a
|
|
||||||
patword 0x0020 0x0108599f0418503a
|
|
||||||
patword 0x0021 0x0108599f0418503a
|
|
||||||
patword 0x0022 0x0108599f0418503a
|
|
||||||
patword 0x0023 0x0108599f0418503a
|
|
||||||
patword 0x0024 0x0108599f0418503a
|
|
||||||
patword 0x0025 0x0108599f0418503a
|
|
||||||
patword 0x0026 0x0108599f0418503a
|
|
||||||
patword 0x0027 0x0108599f0418503a
|
|
||||||
patword 0x0028 0x0108599f0418503a
|
|
||||||
patword 0x0029 0x0108599f0418503a
|
|
||||||
patword 0x002a 0x0108599f0418503a
|
|
||||||
patword 0x002b 0x0108599f0418503a
|
|
||||||
patword 0x002c 0x0108599f0418503a
|
|
||||||
patword 0x002d 0x0108599f0418503a
|
|
||||||
patword 0x002e 0x0108599f0418503a
|
|
||||||
patword 0x002f 0x0108599f0418503a
|
|
||||||
patword 0x0030 0x0108599f0418503a
|
|
||||||
patword 0x0031 0x0108599f0418503a
|
|
||||||
patword 0x0032 0x0108599f0418503a
|
|
||||||
patword 0x0033 0x0108599f0418503a
|
|
||||||
patword 0x0034 0x0108599f0418503a
|
|
||||||
patword 0x0035 0x0108599f0418503a
|
|
||||||
patword 0x0036 0x0108599f0418503a
|
|
||||||
patword 0x0037 0x0108599f0418503a
|
|
||||||
patword 0x0038 0x0108599f0418503a
|
|
||||||
patword 0x0039 0x0108599f0418503a
|
|
||||||
patword 0x003a 0x0108599f0418503a
|
|
||||||
patword 0x003b 0x0108599f0418503a
|
|
||||||
patword 0x003c 0x0108599f0418503a
|
|
||||||
patword 0x003d 0x0108599f0418503a
|
|
||||||
patword 0x003e 0x0108599f0418503a
|
|
||||||
patword 0x003f 0x0108599f0418503a
|
|
||||||
patword 0x0040 0x0108599f0418503a
|
|
||||||
patword 0x0041 0x0108599f0418503a
|
|
||||||
patword 0x0042 0x0108599f0418503a
|
|
||||||
patword 0x0043 0x0108599f0418503a
|
|
||||||
patword 0x0044 0x0108599f0418503a
|
|
||||||
patword 0x0045 0x0108599f0418503a
|
|
||||||
patword 0x0046 0x0108599f0418503a
|
|
||||||
patword 0x0047 0x0108599f0418503a
|
|
||||||
patword 0x0048 0x0108599f0418503a
|
|
||||||
patword 0x0049 0x0108599f0418503a
|
|
||||||
patword 0x004a 0x0108599f0418503a
|
|
||||||
patword 0x004b 0x0108599f0418503a
|
|
||||||
patword 0x004c 0x0108599f0418503a
|
|
||||||
patword 0x004d 0x0108599f0418503a
|
|
||||||
patword 0x004e 0x0108599f0418503a
|
|
||||||
patword 0x004f 0x0108599f0418503a
|
|
||||||
patword 0x0050 0x0108599f0418503a
|
|
||||||
patword 0x0051 0x0108599f0418503a
|
|
||||||
patword 0x0052 0x0108599f0418503a
|
|
||||||
patword 0x0053 0x0108599f0418503a
|
|
||||||
patword 0x0054 0x0108599f0418503a
|
|
||||||
patword 0x0055 0x0108599f0418503a
|
|
||||||
patword 0x0056 0x0108599f0418503a
|
|
||||||
patword 0x0057 0x0108599f0418503a
|
|
||||||
patword 0x0058 0x0108599f0418503a
|
|
||||||
patword 0x0059 0x0108599f0418503a
|
|
||||||
patword 0x005a 0x0108599f0418503a
|
|
||||||
patword 0x005b 0x0108599f0418503a
|
|
||||||
patword 0x005c 0x0108599f0418503a
|
|
||||||
patword 0x005d 0x0108599f0418503a
|
|
||||||
patword 0x005e 0x0108599f0418503a
|
|
||||||
patword 0x005f 0x0108599f0418503a
|
|
||||||
patword 0x0060 0x0108599f0418503a
|
|
||||||
patword 0x0061 0x0108599f0418503a
|
|
||||||
patword 0x0062 0x0108599f0418503a
|
|
||||||
patword 0x0063 0x0108599f0418503a
|
|
||||||
patword 0x0064 0x0108599f0418503a
|
|
||||||
patword 0x0065 0x0108599f0418503a
|
|
||||||
patword 0x0066 0x0108599f0418503a
|
|
||||||
patword 0x0067 0x0108599f0418503a
|
|
||||||
patword 0x0068 0x0108599f0418503a
|
|
||||||
patword 0x0069 0x0108599f0418503a
|
|
||||||
patword 0x006a 0x0108599f0418503a
|
|
||||||
patword 0x006b 0x0108599f0418503a
|
|
||||||
patword 0x006c 0x0108599f0418503a
|
|
||||||
patword 0x006d 0x0108599f0418503a
|
|
||||||
patword 0x006e 0x0108599f0418503a
|
|
||||||
patword 0x006f 0x0108599f0418503a
|
|
||||||
patword 0x0070 0x0108599f0418503a
|
|
||||||
patword 0x0071 0x0108599f0418503a
|
|
||||||
patword 0x0072 0x0108599f0418503a
|
|
||||||
patword 0x0073 0x0108599f0418503a
|
|
||||||
patword 0x0074 0x0108599f0418503a
|
|
||||||
patword 0x0075 0x0108599f0418503a
|
|
||||||
patword 0x0076 0x0108599f0418503a
|
|
||||||
patword 0x0077 0x0108599f0418503a
|
|
||||||
patword 0x0078 0x0108599f0418503a
|
|
||||||
patword 0x0079 0x0108599f0418503a
|
|
||||||
patword 0x007a 0x0108599f0418503a
|
|
||||||
patword 0x007b 0x0108599f0418503a
|
|
||||||
patword 0x007c 0x0108599f0418503a
|
|
||||||
patword 0x007d 0x0108599f0418503a
|
|
||||||
patword 0x007e 0x010859960418503a
|
|
||||||
patword 0x007f 0x010859960418503a
|
|
||||||
patword 0x0080 0x010859960418503a
|
|
||||||
patword 0x0081 0x010859960418503a
|
|
||||||
patword 0x0082 0x010859960418503a
|
|
||||||
patword 0x0083 0x010859960418503a
|
|
||||||
patword 0x0084 0x010859960418503a
|
|
||||||
patword 0x0085 0x010859960418503a
|
|
||||||
patword 0x0086 0x010859960418503a
|
|
||||||
patword 0x0087 0x010859960418503a
|
|
||||||
patword 0x0088 0x010859960418503a
|
|
||||||
patword 0x0089 0x010859960418503a
|
|
||||||
patword 0x008a 0x010859960418503a
|
|
||||||
patword 0x008b 0x010859960418503a
|
|
||||||
patword 0x008c 0x010859960418503a
|
|
||||||
patword 0x008d 0x010859960418503a
|
|
||||||
patword 0x008e 0x010859960418503a
|
|
||||||
patword 0x008f 0x010859960418503a
|
|
||||||
patword 0x0090 0x010859960418503a
|
|
||||||
patword 0x0091 0x010859960418503a
|
|
||||||
patword 0x0092 0x010819960418501a
|
|
||||||
patword 0x0093 0x010819960418501a
|
|
||||||
patword 0x0094 0x010819960418501a
|
|
||||||
patword 0x0095 0x010819960418501a
|
|
||||||
patword 0x0096 0x030819960418501a
|
|
||||||
patword 0x0097 0x030819960418501a
|
|
||||||
patword 0x0098 0x030819960418501a
|
|
||||||
patword 0x0099 0x030819960418501a
|
|
||||||
patword 0x009a 0x030819960418501a
|
|
||||||
patword 0x009b 0x030819960418501a
|
|
||||||
patword 0x009c 0x030819960418501a
|
|
||||||
patword 0x009d 0x030819960418501a
|
|
||||||
patword 0x009e 0x030819960418501a
|
|
||||||
patword 0x009f 0x030819960418501a
|
|
||||||
patword 0x00a0 0x030819960418501a
|
|
||||||
patword 0x00a1 0x030819960418501a
|
|
||||||
patword 0x00a2 0x030819960418501a
|
|
||||||
patword 0x00a3 0x030819960418501a
|
|
||||||
patword 0x00a4 0x030819960418501a
|
|
||||||
patword 0x00a5 0x030819960418501a
|
|
||||||
patword 0x00a6 0x030819960418501a
|
|
||||||
patword 0x00a7 0x030819960418501a
|
|
||||||
patword 0x00a8 0x030819960418501a
|
|
||||||
patword 0x00a9 0x030819960418501a
|
|
||||||
patword 0x00aa 0x030819960418501a
|
|
||||||
patword 0x00ab 0x030819960418501a
|
|
||||||
patword 0x00ac 0x030819960008501a
|
|
||||||
patword 0x00ad 0x030819960008501a
|
|
||||||
patword 0x00ae 0x030819960008501a
|
|
||||||
patword 0x00af 0x030819960008501a
|
|
||||||
patword 0x00b0 0x030819960008501a
|
|
||||||
patword 0x00b1 0x030819960008501a
|
|
||||||
patword 0x00b2 0x030819960008501a
|
|
||||||
patword 0x00b3 0x030819960008501a
|
|
||||||
patword 0x00b4 0x030819960008501a
|
|
||||||
patword 0x00b5 0x030819960008501a
|
|
||||||
patword 0x00b6 0x030819960008501a
|
|
||||||
patword 0x00b7 0x030819960008501a
|
|
||||||
patword 0x00b8 0x030819960008501a
|
|
||||||
patword 0x00b9 0x030819960008501a
|
|
||||||
patword 0x00ba 0x030819960008501a
|
|
||||||
patword 0x00bb 0x030819960008501a
|
|
||||||
patword 0x00bc 0x030819960008501a
|
|
||||||
patword 0x00bd 0x030819960008501a
|
|
||||||
patword 0x00be 0x030819960008501a
|
|
||||||
patword 0x00bf 0x030819960008501a
|
|
||||||
patword 0x00c0 0x0308199f0008501a
|
|
||||||
patword 0x00c1 0x0308199f0008501a
|
|
||||||
patword 0x00c2 0x0308199f0008501a
|
|
||||||
patword 0x00c3 0x0308199f0008501a
|
|
||||||
patword 0x00c4 0x0308199f0008501a
|
|
||||||
patword 0x00c5 0x0308199f0008501a
|
|
||||||
patword 0x00c6 0x0308199f0008501a
|
|
||||||
patword 0x00c7 0x0308199f0008501a
|
|
||||||
patword 0x00c8 0x0308199f0008501a
|
|
||||||
patword 0x00c9 0x0308199f0008501a
|
|
||||||
patword 0x00ca 0x0308199f0008501a
|
|
||||||
patword 0x00cb 0x0308199f0008501a
|
|
||||||
patword 0x00cc 0x0308199f0008501a
|
|
||||||
patword 0x00cd 0x0308199f0008501a
|
|
||||||
patword 0x00ce 0x0308199f0008501a
|
|
||||||
patword 0x00cf 0x0308199f0008501a
|
|
||||||
patword 0x00d0 0x0308199f0008501a
|
|
||||||
patword 0x00d1 0x0308199f0008501a
|
|
||||||
patword 0x00d2 0x0308199f0008501a
|
|
||||||
patword 0x00d3 0x0308199f0008501a
|
|
||||||
patword 0x00d4 0x0308599f0008503a
|
|
||||||
patword 0x00d5 0x0308599f0008503a
|
|
||||||
patword 0x00d6 0x030c599f000850ba
|
|
||||||
patword 0x00d7 0x030c599f000850ba
|
|
||||||
patword 0x00d8 0x030c599f000850ba
|
|
||||||
patword 0x00d9 0x030c599f000850ba
|
|
||||||
patword 0x00da 0x030c599f000850ba
|
|
||||||
patword 0x00db 0x030c599f000850ba
|
|
||||||
patword 0x00dc 0x030c599f000850ba
|
|
||||||
patword 0x00dd 0x030c599f000850ba
|
|
||||||
patword 0x00de 0x030c599f000850ba
|
|
||||||
patword 0x00df 0x030c599f000850ba
|
|
||||||
patword 0x00e0 0x030c599f000850ba
|
|
||||||
patword 0x00e1 0x030c599f000850ba
|
|
||||||
patword 0x00e2 0x030c599f000850ba
|
|
||||||
patword 0x00e3 0x030c599f000850ba
|
|
||||||
patword 0x00e4 0x030c599f000850ba
|
|
||||||
patword 0x00e5 0x030c599f000850ba
|
|
||||||
patword 0x00e6 0x030c599f000850ba
|
|
||||||
patword 0x00e7 0x030c599f000850ba
|
|
||||||
patword 0x00e8 0x030c599f000850ba
|
|
||||||
patword 0x00e9 0x030c599f000850ba
|
|
||||||
patword 0x00ea 0x030c799f010858ba
|
|
||||||
patword 0x00eb 0x030c799f010858ba
|
|
||||||
patword 0x00ec 0x030c599f000850ba
|
|
||||||
patword 0x00ed 0x030c599f000850ba
|
|
||||||
patword 0x00ee 0x030c599f000850ba
|
|
||||||
patword 0x00ef 0x030c599f000850ba
|
|
||||||
patword 0x00f0 0x030c599f000850ba
|
|
||||||
patword 0x00f1 0x030c599f000850ba
|
|
||||||
patword 0x00f2 0x030c599f000850ba
|
|
||||||
patword 0x00f3 0x030c599f000850ba
|
|
||||||
patword 0x00f4 0x030c599f000850ba
|
|
||||||
patword 0x00f5 0x030c599f000850ba
|
|
||||||
patword 0x00f6 0x030c599f000850ba
|
|
||||||
patword 0x00f7 0x030c599f000850ba
|
|
||||||
patword 0x00f8 0x030c599f000850ba
|
|
||||||
patword 0x00f9 0x030c599f000850ba
|
|
||||||
patword 0x00fa 0x030c599f000850ba
|
|
||||||
patword 0x00fb 0x030c599f000850ba
|
|
||||||
patword 0x00fc 0x030c599f000850ba
|
|
||||||
patword 0x00fd 0x030c599f000850ba
|
|
||||||
patword 0x00fe 0x030c599f000850ba
|
|
||||||
patword 0x00ff 0x030c599f000850ba
|
|
||||||
patword 0x0100 0x030c599f000850ba
|
|
||||||
patword 0x0101 0x030c599f000850ba
|
|
||||||
patword 0x0102 0x030c599f400850ba
|
|
||||||
patword 0x0103 0x030c599f400850ba
|
|
||||||
patword 0x0104 0x030c599f600850ba
|
|
||||||
patword 0x0105 0x030c599f400850ba
|
|
||||||
patword 0x0106 0x030c599f400850ba
|
|
||||||
patword 0x0107 0x030c599f400850ba
|
|
||||||
patword 0x0108 0x870c599f682e50ba
|
|
||||||
patword 0x0109 0x870c599f482850ba
|
|
||||||
patword 0x010a 0x870c599f000e50ba
|
|
||||||
patword 0x010b 0x870c599f000850ba
|
|
||||||
patword 0x010c 0x870c599f000e50ba
|
|
||||||
patword 0x010d 0x870c599f000850ba
|
|
||||||
patword 0x010e 0x870c599f000e50ba
|
|
||||||
patword 0x010f 0x870c599f000850ba
|
|
||||||
patword 0x0110 0x870c599f000e50ba
|
|
||||||
patword 0x0111 0x870c599f000850ba
|
|
||||||
patword 0x0112 0x870c599f000e50ba
|
|
||||||
patword 0x0113 0x870c599f000850ba
|
|
||||||
patword 0x0114 0x870c599f000e50ba
|
|
||||||
patword 0x0115 0x870c599f000850ba
|
|
||||||
patword 0x0116 0x870c599f000e50ba
|
|
||||||
patword 0x0117 0x870c599f000850ba
|
|
||||||
patword 0x0118 0x870c599f000e50ba
|
|
||||||
patword 0x0119 0x870c599f000850ba
|
|
||||||
patword 0x011a 0x870c599f000e50ba
|
|
||||||
patword 0x011b 0x870c599f000850ba
|
|
||||||
patword 0x011c 0x870c599f000e50ba
|
|
||||||
patword 0x011d 0x870c599f000850ba
|
|
||||||
patword 0x011e 0x870c599f000e50ba
|
|
||||||
patword 0x011f 0x870c599f000850ba
|
|
||||||
patword 0x0120 0x870c599f000e50ba
|
|
||||||
patword 0x0121 0x870c599f000850ba
|
|
||||||
patword 0x0122 0x870c599f200e50ba
|
|
||||||
patword 0x0123 0x870c599f000850ba
|
|
||||||
patword 0x0124 0x870c599f000e50ba
|
|
||||||
patword 0x0125 0x870c599f000850ba
|
|
||||||
patword 0x0126 0x870c599f000e50ba
|
|
||||||
patword 0x0127 0x870c599f000850ba
|
|
||||||
patword 0x0128 0x870c599f000e50ba
|
|
||||||
patword 0x0129 0x870c599f000850ba
|
|
||||||
patword 0x012a 0x870c599f000e50ba
|
|
||||||
patword 0x012b 0x870c599f000850ba
|
|
||||||
patword 0x012c 0x870c599f000e50ba
|
|
||||||
patword 0x012d 0x870c599f000850ba
|
|
||||||
patword 0x012e 0x870c599f000e50ba
|
|
||||||
patword 0x012f 0x870c599f000850ba
|
|
||||||
patword 0x0130 0x870c599f000e50ba
|
|
||||||
patword 0x0131 0x870c599f000850ba
|
|
||||||
patword 0x0132 0x870c599f000e50ba
|
|
||||||
patword 0x0133 0x870c599f000850ba
|
|
||||||
patword 0x0134 0x870c599f000e50ba
|
|
||||||
patword 0x0135 0x870c599f000850ba
|
|
||||||
patword 0x0136 0x870c599f000e50ba
|
|
||||||
patword 0x0137 0x870c599f000850ba
|
|
||||||
patword 0x0138 0x870c599f000e50ba
|
|
||||||
patword 0x0139 0x870c599f000850ba
|
|
||||||
patword 0x013a 0x870c599f282e50ba
|
|
||||||
patword 0x013b 0x870c599f082850ba
|
|
||||||
patword 0x013c 0x870c599f000e50ba
|
|
||||||
patword 0x013d 0x870c599f000850ba
|
|
||||||
patword 0x013e 0x870c599f000e50ba
|
|
||||||
patword 0x013f 0x870c599f000850ba
|
|
||||||
patword 0x0140 0x870c599f000e50ba
|
|
||||||
patword 0x0141 0x870c599f000850ba
|
|
||||||
patword 0x0142 0x870c599f000e50ba
|
|
||||||
patword 0x0143 0x870c599f000850ba
|
|
||||||
patword 0x0144 0x870c599f000e50ba
|
|
||||||
patword 0x0145 0x870c599f000850ba
|
|
||||||
patword 0x0146 0x870c599f000e50ba
|
|
||||||
patword 0x0147 0x870c599f000850ba
|
|
||||||
patword 0x0148 0x870c599f000e50ba
|
|
||||||
patword 0x0149 0x870c599f000850ba
|
|
||||||
patword 0x014a 0x870c599f000e50ba
|
|
||||||
patword 0x014b 0x870c599f000850ba
|
|
||||||
patword 0x014c 0x870c599f000e50ba
|
|
||||||
patword 0x014d 0x870c599f000850ba
|
|
||||||
patword 0x014e 0x870c599f000e50ba
|
|
||||||
patword 0x014f 0x870c599f000850ba
|
|
||||||
patword 0x0150 0x870c599f000e50ba
|
|
||||||
patword 0x0151 0x870c599f000850ba
|
|
||||||
patword 0x0152 0x870c599f000e50ba
|
|
||||||
patword 0x0153 0x870c599f000850ba
|
|
||||||
patword 0x0154 0x870c599f200e50ba
|
|
||||||
patword 0x0155 0x870c599f000850ba
|
|
||||||
patword 0x0156 0x870c599f000e50ba
|
|
||||||
patword 0x0157 0x870c599f000850ba
|
|
||||||
patword 0x0158 0x870c599f000e50ba
|
|
||||||
patword 0x0159 0x870c599f000850ba
|
|
||||||
patword 0x015a 0x870c599f000e50ba
|
|
||||||
patword 0x015b 0x870c599f000850ba
|
|
||||||
patword 0x015c 0x870c599f000e50ba
|
|
||||||
patword 0x015d 0x870c599f000850ba
|
|
||||||
patword 0x015e 0x870c599f000e50ba
|
|
||||||
patword 0x015f 0x870c599f000850ba
|
|
||||||
patword 0x0160 0x870c599f000e50ba
|
|
||||||
patword 0x0161 0x870c599f000850ba
|
|
||||||
patword 0x0162 0x870c599f000e50ba
|
|
||||||
patword 0x0163 0x870c599f000850ba
|
|
||||||
patword 0x0164 0x870c599f000e50ba
|
|
||||||
patword 0x0165 0x870c599f000850ba
|
|
||||||
patword 0x0166 0x870c599f000e50ba
|
|
||||||
patword 0x0167 0x870c599f000850ba
|
|
||||||
patword 0x0168 0x870c599f000e50ba
|
|
||||||
patword 0x0169 0x870c599f000850ba
|
|
||||||
patword 0x016a 0x870c599f000e50ba
|
|
||||||
patword 0x016b 0x870c599f000850ba
|
|
||||||
patword 0x016c 0x070c599f000850ba
|
|
||||||
patword 0x016d 0x070c599f000850ba
|
|
||||||
patword 0x016e 0x000c599f000850ba
|
|
||||||
patword 0x016f 0x000c599f000850ba
|
|
||||||
patword 0x0170 0x0008599f200e503a
|
|
||||||
patword 0x0171 0x0008599f0008503a
|
|
||||||
patword 0x0172 0x0008599f200e503a
|
|
||||||
patword 0x0173 0x0008599f0008503a
|
|
||||||
patword 0x0174 0x0008599f0008503a
|
|
||||||
patword 0x0175 0x0008599f0008503a
|
|
||||||
patword 0x0176 0x0008599f0008503a
|
|
||||||
patword 0x0177 0x0008599f0008503a
|
|
||||||
patword 0x0178 0x0008599f0008503a
|
|
||||||
patword 0x0179 0x0008599f0008503a
|
|
||||||
patword 0x017a 0x0008599f0008503a
|
|
||||||
patword 0x017b 0x0008599f0008503a
|
|
||||||
patword 0x017c 0x0008599f0008503a
|
|
||||||
patword 0x017d 0x0008599f0008503a
|
|
||||||
patword 0x017e 0x0008599f0008503a
|
|
||||||
patword 0x017f 0x0008599f0008503a
|
|
||||||
patword 0x0180 0x0008599f0008503a
|
|
||||||
patword 0x0181 0x0008599f0008503a
|
|
||||||
patword 0x0182 0x0008599f0008503a
|
|
||||||
patword 0x0183 0x0008599f0008503a
|
|
||||||
patword 0x0184 0x0008599f0008503a
|
|
||||||
patword 0x0185 0x0008599f0008503a
|
|
||||||
patword 0x0186 0x0008599f0008503a
|
|
||||||
patword 0x0187 0x0008599f0008503a
|
|
||||||
patword 0x0188 0x0008599f0008503a
|
|
||||||
patword 0x0189 0x0008599f0008503a
|
|
||||||
patword 0x018a 0x0008599f0008503a
|
|
||||||
patword 0x018b 0x0008599f0008503a
|
|
||||||
patword 0x018c 0x0008599f0008503a
|
|
||||||
patword 0x018d 0x0008599f0008503a
|
|
||||||
patioctrl 0x8f0effff6dbffdbf
|
|
||||||
patlimits 0x0000 0x018c
|
|
||||||
patloop0 0x013a 0x016b
|
|
||||||
patnloop0 0x199
|
|
||||||
patloop1 0x0400 0x0400
|
|
||||||
patnloop1 0
|
|
||||||
patloop2 0x0400 0x0400
|
|
||||||
patnloop2 0
|
|
||||||
patwait0 0x00aa
|
|
||||||
patwaittime0 10000
|
|
||||||
patwait1 0x0400
|
|
||||||
patwaittime1 0
|
|
||||||
patwait2 0x0400
|
|
||||||
patwaittime2 0
|
|
||||||
|
|
||||||
# dacs
|
# dacs
|
||||||
dac 6 800
|
dac 6 800
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1900
|
hostname localhost:1900
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2000
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
udp_dstport 50000
|
udp_dstport 50000
|
||||||
udp_dstport2 50001
|
udp_dstport2 50001
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2000
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
# udp destination ip from rx_hostname
|
||||||
udp_dstip auto
|
udp_dstip auto
|
||||||
|
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1900+localhost:1902+
|
hostname localhost:1900+localhost:1902+
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2000+mpc1922:2001+
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
0:udp_dstport 50000
|
0:udp_dstport 50000
|
||||||
0:udp_dstport2 50001
|
0:udp_dstport2 50001
|
||||||
1:udp_dstport 50002
|
1:udp_dstport 50002
|
||||||
1:udp_dstport2 50003
|
1:udp_dstport2 50003
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2000+mpc1922:2001+
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
# udp destination ip from rx_hostname
|
||||||
udp_dstip auto
|
udp_dstip auto
|
||||||
|
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1904
|
hostname localhost:1904
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2004
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
udp_dstport 50004
|
udp_dstport 50004
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
|
||||||
udp_dstip auto
|
|
||||||
|
|
||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip 192.168.1.100
|
udp_srcip 192.168.1.100
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2004
|
||||||
|
|
||||||
|
# udp destination ip from rx_hostname
|
||||||
|
udp_dstip auto
|
||||||
|
|
||||||
# output file directory
|
# output file directory
|
||||||
fpath /tmp
|
fpath /tmp
|
||||||
|
|
||||||
|
@ -1,24 +1,12 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1914
|
hostname localhost:1914
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2014
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
udp_dstport 50014
|
udp_dstport 50014
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
|
||||||
udp_dstip auto
|
|
||||||
|
|
||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip 192.168.1.100
|
udp_srcip 192.168.1.100
|
||||||
|
|
||||||
# output file directory
|
|
||||||
fpath /tmp
|
|
||||||
|
|
||||||
# disable file writing
|
|
||||||
fwrite 0
|
|
||||||
|
|
||||||
# enable 2nd interface for veto debugging
|
# enable 2nd interface for veto debugging
|
||||||
# udp destination port for veto
|
# udp destination port for veto
|
||||||
udp_dstport2 50015
|
udp_dstport2 50015
|
||||||
@ -27,6 +15,18 @@ udp_dstip2 auto
|
|||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip2 192.168.1.100
|
udp_srcip2 192.168.1.100
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2014
|
||||||
|
|
||||||
|
# udp destination ip from rx_hostname
|
||||||
|
udp_dstip auto
|
||||||
|
|
||||||
|
# output file directory
|
||||||
|
fpath /tmp
|
||||||
|
|
||||||
|
# disable file writing
|
||||||
|
fwrite 0
|
||||||
|
|
||||||
# to enable 2nd interface for veto debugging
|
# to enable 2nd interface for veto debugging
|
||||||
numinterfaces 2
|
numinterfaces 2
|
||||||
|
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1906
|
hostname localhost:1906
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2006
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
udp_dstport 50006
|
udp_dstport 50006
|
||||||
udp_dstport2 50007
|
udp_dstport2 50007
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
|
||||||
udp_dstip auto
|
|
||||||
udp_dstip2 auto
|
|
||||||
|
|
||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip 192.168.1.100
|
udp_srcip 192.168.1.100
|
||||||
udp_srcip2 192.168.1.100
|
udp_srcip2 192.168.1.100
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2006
|
||||||
|
|
||||||
|
# udp destination ip from rx_hostname
|
||||||
|
udp_dstip auto
|
||||||
|
udp_dstip2 auto
|
||||||
|
|
||||||
# output file directory
|
# output file directory
|
||||||
fpath /tmp
|
fpath /tmp
|
||||||
|
|
||||||
|
@ -4,13 +4,6 @@ detsize 2048 1024
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
virtual 4 1952
|
virtual 4 1952
|
||||||
|
|
||||||
# receiver hostname and tcpports
|
|
||||||
0:rx_tcpport 1970
|
|
||||||
1:rx_tcpport 1971
|
|
||||||
2:rx_tcpport 1972
|
|
||||||
3:rx_tcpport 1973
|
|
||||||
rx_hostname mpc1922
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
0:udp_dstport2 50001
|
0:udp_dstport2 50001
|
||||||
0:udp_dstport2 50002
|
0:udp_dstport2 50002
|
||||||
@ -21,14 +14,21 @@ rx_hostname mpc1922
|
|||||||
3:udp_dstport 50007
|
3:udp_dstport 50007
|
||||||
3:udp_dstport2 50008
|
3:udp_dstport2 50008
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
|
||||||
udp_dstip auto
|
|
||||||
udp_dstip2 auto
|
|
||||||
|
|
||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip 192.168.1.100
|
udp_srcip 192.168.1.100
|
||||||
udp_srcip2 192.168.1.100
|
udp_srcip2 192.168.1.100
|
||||||
|
|
||||||
|
# receiver hostname and tcpports
|
||||||
|
0:rx_tcpport 1970
|
||||||
|
1:rx_tcpport 1971
|
||||||
|
2:rx_tcpport 1972
|
||||||
|
3:rx_tcpport 1973
|
||||||
|
rx_hostname mpc1922
|
||||||
|
|
||||||
|
# udp destination ip from rx_hostname
|
||||||
|
udp_dstip auto
|
||||||
|
udp_dstip2 auto
|
||||||
|
|
||||||
# transmission delay frame
|
# transmission delay frame
|
||||||
0:txndelay_frame 0
|
0:txndelay_frame 0
|
||||||
1:txndelay_frame 1
|
1:txndelay_frame 1
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1908
|
hostname localhost:1908
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2008
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
udp_dstport 50008
|
udp_dstport 50008
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
|
||||||
udp_dstip auto
|
|
||||||
|
|
||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip 192.168.1.100
|
udp_srcip 192.168.1.100
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2008
|
||||||
|
|
||||||
|
# udp destination ip from rx_hostname
|
||||||
|
udp_dstip auto
|
||||||
|
|
||||||
# output file directory
|
# output file directory
|
||||||
fpath /tmp
|
fpath /tmp
|
||||||
|
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
# detector hostname
|
# detector hostname
|
||||||
hostname localhost:1912
|
hostname localhost:1912
|
||||||
|
|
||||||
# receiver hostname
|
|
||||||
rx_hostname mpc1922:2012
|
|
||||||
|
|
||||||
# udp destination ports
|
# udp destination ports
|
||||||
udp_dstport 50012
|
udp_dstport 50012
|
||||||
|
|
||||||
# udp destination ip from rx_hostname
|
|
||||||
udp_dstip auto
|
|
||||||
|
|
||||||
# udp source ip (same subnet as udp_dstip)
|
# udp source ip (same subnet as udp_dstip)
|
||||||
udp_srcip 192.168.1.100
|
udp_srcip 192.168.1.100
|
||||||
|
|
||||||
|
# receiver hostname
|
||||||
|
rx_hostname mpc1922:2012
|
||||||
|
|
||||||
|
# udp destination ip from rx_hostname
|
||||||
|
udp_dstip auto
|
||||||
|
|
||||||
# output file directory
|
# output file directory
|
||||||
fpath /tmp
|
fpath /tmp
|
||||||
|
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
#####! /bin/awk -f
|
|
||||||
|
|
||||||
|
|
||||||
if [ $# -lt 3 ]
|
|
||||||
then
|
|
||||||
echo "wrong usage"
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
fin=$1
|
|
||||||
ftmp=$2
|
|
||||||
fout=$3
|
|
||||||
|
|
||||||
|
|
||||||
#dat=echo "date '+%Y%m%d'"
|
|
||||||
|
|
||||||
echo "Updating $fout"
|
|
||||||
#echo "in: $fin tmp: $ftmp out: $fout"
|
|
||||||
|
|
||||||
#awk 'NR==FNR {if ($3=="Date:") {l[FNR]=$4; gsub("-","",l[FNR]);} else { if (match($0,"Rev")) {l[FNR]=$(NF);} else {l[FNR]="\""$(NF)"\"";};};next} {$0=$1" "$2" "l[FNR]}1' $fin $ftmp > $fout
|
|
||||||
|
|
||||||
awk 'BEGIN {l[0]=0; "date +%Y%m%d" | getline l[1]; l[2]="\"/\""; l[3]="\"nobody\""; l[3]="\"nobody\""; l[4]="\"0000-0000-0000\"";} \
|
|
||||||
NR==FNR {if (match($0,"Rev")) {l[0]="0x"$(NF);} else if (match($0,"Date")) {l[1]="0x"$4; gsub("-","",l[1]);} else if (match($0,"URL")) {l[2]="\""$(NF)"\"";} else if (match($0,"Author")) {l[3]="\""$(NF)"\"";} else if (match($0,"UUID")) {l[4]="\""$(NF)"\"";} else if (match($0,"Branch")) {l[5]="\""$(NF)"\"";};next;}
|
|
||||||
{if (match($2,"REV")) {$0=$1" "$2" "l[0];} else if (match($2,"DATE")) {$0=$1" "$2" "l[1];} else if (match($2,"URL")) {$0=$1" "$2" "l[2];} else if (match($2,"AUTH")) {$0=$1" "$2" "l[3];} else if (match($2,"UUID")) {$0=$1" "$2" "l[4];} else if (match($2,"BRANCH")) {$0=$1" "$2" "l[5];}}1' $fin $ftmp > $fout
|
|
@ -1,3 +1,5 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
# Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
# MESSAGE( STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR} )
|
# MESSAGE( STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR} )
|
||||||
# MESSAGE( STATUS "PROJECT_SOURCE_DIR: " ${PROJECT_SOURCE_DIR} )
|
# MESSAGE( STATUS "PROJECT_SOURCE_DIR: " ${PROJECT_SOURCE_DIR} )
|
||||||
|
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include "DetectorImpl.h"
|
#include "DetectorImpl.h"
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
#include "sls/string_utils.h"
|
#include "sls/string_utils.h"
|
||||||
#include "tests/globals.h"
|
#include "tests/globals.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace sls {
|
||||||
|
|
||||||
class MultiDetectorFixture {
|
class MultiDetectorFixture {
|
||||||
protected:
|
protected:
|
||||||
DetectorImpl d;
|
DetectorImpl d;
|
||||||
@ -134,7 +138,7 @@ TEST_CASE_METHOD(MultiDetectorFixture, "Get ID", "[.eigerintegration][cli]") {
|
|||||||
std::string hn = test::hostname;
|
std::string hn = test::hostname;
|
||||||
hn.erase(std::remove(begin(hn), end(hn), 'b'), end(hn));
|
hn.erase(std::remove(begin(hn), end(hn), 'b'), end(hn));
|
||||||
hn.erase(std::remove(begin(hn), end(hn), 'e'), end(hn));
|
hn.erase(std::remove(begin(hn), end(hn), 'e'), end(hn));
|
||||||
auto hostnames = sls::split(hn, '+');
|
auto hostnames = split(hn, '+');
|
||||||
CHECK(hostnames.size() == d.getNumberOfDetectors());
|
CHECK(hostnames.size() == d.getNumberOfDetectors());
|
||||||
for (int i = 0; i != d.getNumberOfDetectors(); ++i) {
|
for (int i = 0; i != d.getNumberOfDetectors(); ++i) {
|
||||||
CHECK(d.getId(defs::DETECTOR_SERIAL_NUMBER, 0) ==
|
CHECK(d.getId(defs::DETECTOR_SERIAL_NUMBER, 0) ==
|
||||||
@ -196,3 +200,5 @@ TEST_CASE_METHOD(MultiDetectorFixture, "rate correction",
|
|||||||
d.setRateCorrection(200);
|
d.setRateCorrection(200);
|
||||||
CHECK(d.getRateCorrection() == 200);
|
CHECK(d.getRateCorrection() == 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace sls
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
|
|
||||||
@ -22,6 +24,8 @@
|
|||||||
// extern std::string detector_type;
|
// extern std::string detector_type;
|
||||||
// extern dt type;
|
// extern dt type;
|
||||||
|
|
||||||
|
namespace sls {
|
||||||
|
|
||||||
TEST_CASE("Single detector no receiver", "[.integration][.single]") {
|
TEST_CASE("Single detector no receiver", "[.integration][.single]") {
|
||||||
auto t = Module::getTypeFromDetector(test::hostname);
|
auto t = Module::getTypeFromDetector(test::hostname);
|
||||||
CHECK(t == test::type);
|
CHECK(t == test::type);
|
||||||
@ -46,8 +50,8 @@ TEST_CASE("Set control port then create a new object with this control port",
|
|||||||
Is this the best way to initialize the detectors
|
Is this the best way to initialize the detectors
|
||||||
Using braces to make the object go out of scope
|
Using braces to make the object go out of scope
|
||||||
*/
|
*/
|
||||||
int old_cport = DEFAULT_PORTNO;
|
int old_cport = DEFAULT_TCP_CNTRL_PORTNO;
|
||||||
int old_sport = DEFAULT_PORTNO + 1;
|
int old_sport = DEFAULT_TCP_STOP_PORTNO;
|
||||||
int new_cport = 1993;
|
int new_cport = 1993;
|
||||||
int new_sport = 2000;
|
int new_sport = 2000;
|
||||||
{
|
{
|
||||||
@ -75,7 +79,7 @@ TEST_CASE("Set control port then create a new object with this control port",
|
|||||||
|
|
||||||
Module d(test::type);
|
Module d(test::type);
|
||||||
d.setHostname(test::hostname);
|
d.setHostname(test::hostname);
|
||||||
CHECK(d.getStopPort() == DEFAULT_PORTNO + 1);
|
CHECK(d.getStopPort() == DEFAULT_TCP_STOP_PORTNO);
|
||||||
d.freeSharedMemory();
|
d.freeSharedMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,14 +285,14 @@ TEST_CASE(
|
|||||||
CHECK(m.getRateCorrection() == ratecorr);
|
CHECK(m.getRateCorrection() == ratecorr);
|
||||||
|
|
||||||
// ratecorr fail with dr 4 or 8
|
// ratecorr fail with dr 4 or 8
|
||||||
CHECK_THROWS_AS(m.setDynamicRange(8), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setDynamicRange(8), RuntimeError);
|
||||||
CHECK(m.getRateCorrection() == 0);
|
CHECK(m.getRateCorrection() == 0);
|
||||||
m.setDynamicRange(16);
|
m.setDynamicRange(16);
|
||||||
m.setDynamicRange(16);
|
m.setDynamicRange(16);
|
||||||
m.setRateCorrection(ratecorr);
|
m.setRateCorrection(ratecorr);
|
||||||
m.setDynamicRange(16);
|
m.setDynamicRange(16);
|
||||||
m.setRateCorrection(ratecorr);
|
m.setRateCorrection(ratecorr);
|
||||||
CHECK_THROWS_AS(m.setDynamicRange(4), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setDynamicRange(4), RuntimeError);
|
||||||
CHECK(m.getRateCorrection() == 0);
|
CHECK(m.getRateCorrection() == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,11 +331,11 @@ TEST_CASE("Chiptestboard Loading Patterns", "[.ctbintegration]") {
|
|||||||
m.setPatternWord(addr, word);
|
m.setPatternWord(addr, word);
|
||||||
CHECK(m.setPatternWord(addr, -1) == word);
|
CHECK(m.setPatternWord(addr, -1) == word);
|
||||||
addr = MAX_ADDR;
|
addr = MAX_ADDR;
|
||||||
CHECK_THROWS_AS(m.setPatternWord(addr, word), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setPatternWord(addr, word), RuntimeError);
|
||||||
CHECK_THROWS_WITH(m.setPatternWord(addr, word),
|
CHECK_THROWS_WITH(m.setPatternWord(addr, word),
|
||||||
Catch::Matchers::Contains("be between 0 and"));
|
Catch::Matchers::Contains("be between 0 and"));
|
||||||
addr = -1;
|
addr = -1;
|
||||||
CHECK_THROWS_AS(m.setPatternWord(addr, word), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setPatternWord(addr, word), RuntimeError);
|
||||||
CHECK_THROWS_WITH(m.setPatternWord(addr, word),
|
CHECK_THROWS_WITH(m.setPatternWord(addr, word),
|
||||||
Catch::Matchers::Contains("be between 0 and"));
|
Catch::Matchers::Contains("be between 0 and"));
|
||||||
|
|
||||||
@ -406,7 +410,7 @@ TEST_CASE("Chiptestboard Dbit offset, list, sampling, advinvert",
|
|||||||
CHECK(m.getReceiverDbitList().size() == 10);
|
CHECK(m.getReceiverDbitList().size() == 10);
|
||||||
|
|
||||||
list.push_back(64);
|
list.push_back(64);
|
||||||
CHECK_THROWS_AS(m.setReceiverDbitList(list), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setReceiverDbitList(list), RuntimeError);
|
||||||
CHECK_THROWS_WITH(m.setReceiverDbitList(list),
|
CHECK_THROWS_WITH(m.setReceiverDbitList(list),
|
||||||
Catch::Matchers::Contains("be between 0 and 63"));
|
Catch::Matchers::Contains("be between 0 and 63"));
|
||||||
|
|
||||||
@ -474,7 +478,7 @@ TEST_CASE("Eiger or Jungfrau nextframenumber",
|
|||||||
CHECK(m.acquire() == slsDetectorDefs::OK);
|
CHECK(m.acquire() == slsDetectorDefs::OK);
|
||||||
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
||||||
|
|
||||||
CHECK_THROWS_AS(m.setNextFrameNumber(0), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setNextFrameNumber(0), RuntimeError);
|
||||||
|
|
||||||
if (m.getDetectorTypeAsString() == "Eiger") {
|
if (m.getDetectorTypeAsString() == "Eiger") {
|
||||||
val = 281474976710655;
|
val = 281474976710655;
|
||||||
@ -509,8 +513,10 @@ TEST_CASE("Eiger partialread", "[.eigerintegration][partialread]") {
|
|||||||
m.setDynamicRange(8);
|
m.setDynamicRange(8);
|
||||||
m.setPartialReadout(256);
|
m.setPartialReadout(256);
|
||||||
CHECK(m.getPartialReadout() == 256);
|
CHECK(m.getPartialReadout() == 256);
|
||||||
CHECK_THROWS_AS(m.setPartialReadout(1), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setPartialReadout(1), RuntimeError);
|
||||||
CHECK(m.getPartialReadout() == 256);
|
CHECK(m.getPartialReadout() == 256);
|
||||||
CHECK_THROWS_AS(m.setPartialReadout(0), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setPartialReadout(0), RuntimeError);
|
||||||
m.setPartialReadout(256);
|
m.setPartialReadout(256);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace sls
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
#include "DetectorImpl.h"
|
#include "DetectorImpl.h"
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
#include "sls/string_utils.h"
|
#include "sls/string_utils.h"
|
||||||
#include "tests/globals.h"
|
#include "tests/globals.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace sls {
|
||||||
|
|
||||||
using namespace Catch::literals;
|
using namespace Catch::literals;
|
||||||
|
|
||||||
TEST_CASE("Initialize a multi detector", "[.integration][.multi]") {
|
TEST_CASE("Initialize a multi detector", "[.integration][.multi]") {
|
||||||
auto hostnames = sls::split(test::hostname, '+');
|
auto hostnames = split(test::hostname, '+');
|
||||||
|
|
||||||
DetectorImpl d(0, true, true);
|
DetectorImpl d(0, true, true);
|
||||||
d.setHostname(test::hostname.c_str());
|
d.setHostname(test::hostname.c_str());
|
||||||
@ -100,3 +104,5 @@ TEST_CASE("Set and read timers", "[.integration][.multi]") {
|
|||||||
|
|
||||||
d.freeSharedMemory();
|
d.freeSharedMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace sls
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
// tests-main.cpp
|
// tests-main.cpp
|
||||||
#define CATCH_CONFIG_MAIN
|
#define CATCH_CONFIG_MAIN
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
5832
libs/catch/catch.hpp
5832
libs/catch/catch.hpp
File diff suppressed because it is too large
Load Diff
BIN
libs/libzmq/libzmq-4.3.4.tar.gz
Normal file
BIN
libs/libzmq/libzmq-4.3.4.tar.gz
Normal file
Binary file not shown.
Submodule libs/pybind11 deleted from 8de7772cc7
BIN
libs/pybind11/v2.11.0.tar.gz
Normal file
BIN
libs/pybind11/v2.11.0.tar.gz
Normal file
Binary file not shown.
57
libs/qwt/CMakeLists.txt
Normal file
57
libs/qwt/CMakeLists.txt
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#inspired by: https://github.com/ericriff/qwt/blob/master/CMakeLists.txt
|
||||||
|
|
||||||
|
# Build a static version of qwt from tar file
|
||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
project(qwt)
|
||||||
|
set(PROJECT_VERSION 6.1.5)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
|
||||||
|
# Extract qwt sources from the supplied source file
|
||||||
|
set(INTERNALQWTDIR "qwt-source/")
|
||||||
|
set(QWTBASE ${CMAKE_CURRENT_BINARY_DIR}/${INTERNALQWTDIR})
|
||||||
|
file(MAKE_DIRECTORY ${QWTBASE})
|
||||||
|
execute_process(
|
||||||
|
COMMAND tar -xf ${CMAKE_CURRENT_SOURCE_DIR}/qwt-6.1.5.tar.bz2 -C ${QWTBASE} --strip-components=1
|
||||||
|
RESULT_VARIABLE ret
|
||||||
|
)
|
||||||
|
if(ret AND NOT ret EQUAL 0)
|
||||||
|
message( FATAL_ERROR "Could not unpack qwt")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Without this define moc files are not included and linking of examples fails.
|
||||||
|
add_definitions(-DQWT_MOC_INCLUDE)
|
||||||
|
|
||||||
|
find_package(Qt5 REQUIRED
|
||||||
|
COMPONENTS
|
||||||
|
Core
|
||||||
|
Gui
|
||||||
|
Widgets
|
||||||
|
OpenGL
|
||||||
|
Concurrent
|
||||||
|
PrintSupport
|
||||||
|
Svg
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
file(GLOB QWT_SOURCES ${QWTBASE}src/*.cpp)
|
||||||
|
file(GLOB QWT_HEADERS ${QWTBASE}src/*.h)
|
||||||
|
add_library(qwt STATIC ${QWT_SOURCES} ${QWT_HEADERS} )
|
||||||
|
target_include_directories(qwt PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${QWTBASE}/src>
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(qwt PUBLIC
|
||||||
|
Qt5::Core
|
||||||
|
Qt5::Gui
|
||||||
|
Qt5::Widgets
|
||||||
|
Qt5::OpenGL
|
||||||
|
Qt5::Concurrent
|
||||||
|
Qt5::PrintSupport
|
||||||
|
Qt5::Svg
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Disable all warnings in QWT since we don’t want to patch the library
|
||||||
|
target_compile_options(qwt PRIVATE -w)
|
BIN
libs/qwt/qwt-6.1.5.tar.bz2
Normal file
BIN
libs/qwt/qwt-6.1.5.tar.bz2
Normal file
Binary file not shown.
@ -1,27 +0,0 @@
|
|||||||
#From: https://github.com/zeromq/cppzmq/
|
|
||||||
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON)
|
|
||||||
find_package(PkgConfig)
|
|
||||||
pkg_check_modules(PC_LIBZMQ QUIET libzmq)
|
|
||||||
|
|
||||||
set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION})
|
|
||||||
find_library(ZeroMQ_LIBRARY NAMES libzmq.so libzmq.dylib libzmq.dll
|
|
||||||
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
|
|
||||||
find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq-static.a libzmq.a libzmq.dll.a
|
|
||||||
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
|
|
||||||
|
|
||||||
if(ZeroMQ_LIBRARY OR ZeroMQ_STATIC_LIBRARY)
|
|
||||||
set(ZeroMQ_FOUND ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (TARGET libzmq)
|
|
||||||
# avoid errors defining targets twice
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library(libzmq SHARED IMPORTED)
|
|
||||||
set_property(TARGET libzmq PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
|
|
||||||
set_property(TARGET libzmq PROPERTY IMPORTED_LOCATION ${ZeroMQ_LIBRARY})
|
|
||||||
|
|
||||||
add_library(libzmq-static STATIC IMPORTED ${PC_LIBZMQ_INCLUDE_DIRS})
|
|
||||||
set_property(TARGET libzmq-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
|
|
||||||
set_property(TARGET libzmq-static PROPERTY IMPORTED_LOCATION ${ZeroMQ_STATIC_LIBRARY})
|
|
@ -1,16 +0,0 @@
|
|||||||
Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
||||||
|
|
||||||
This file is part of the SLS Detecotor Package.
|
|
||||||
|
|
||||||
SLS Detecotor Package is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
SLS Detecotor Package is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public License
|
|
||||||
along with SLS Detecotor Package. If not, see <https://www.gnu.org/licenses/>.
|
|
110
patternGenerator/deserializer.cpp
Normal file
110
patternGenerator/deserializer.cpp
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
// SPDX-License-Identifier: LGPL-3.0-or-other
|
||||||
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
int iarg;
|
||||||
|
char fname[10000];
|
||||||
|
uint64_t word;
|
||||||
|
int val[64];
|
||||||
|
int bit[64];
|
||||||
|
FILE *fdin;
|
||||||
|
|
||||||
|
int nb = 2;
|
||||||
|
int off = 0;
|
||||||
|
int ioff = 0;
|
||||||
|
int dr = 24;
|
||||||
|
int idr = 0;
|
||||||
|
int ib = 0;
|
||||||
|
int iw = 0;
|
||||||
|
bit[0] = 19;
|
||||||
|
bit[1] = 8;
|
||||||
|
// for (iarg=0; iarg<argc; iarg++) printf("%d %s\n",iarg, argv[iarg]);
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
printf("Error: usage is %s fname [dr off b0 b1 bn]\n");
|
||||||
|
|
||||||
|
if (argc > 2)
|
||||||
|
dr = atoi(argv[2]);
|
||||||
|
if (argc > 3)
|
||||||
|
off = atoi(argv[3]);
|
||||||
|
if (argc > 4) {
|
||||||
|
for (ib = 0; ib < 64; ib++) {
|
||||||
|
if (argc > 4 + ib) {
|
||||||
|
bit[ib] = atoi(argv[4 + ib]);
|
||||||
|
nb++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
idr = 0;
|
||||||
|
for (ib = 0; ib < nb; ib++) {
|
||||||
|
val[ib] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fdin = fopen(argv[1], "rb");
|
||||||
|
if (fdin == NULL) {
|
||||||
|
printf("Cannot open input file %s for reading\n", argv[1]);
|
||||||
|
return 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (fread((void *)&word, 8, 1, fdin)) {
|
||||||
|
// printf("%llx\n",word);
|
||||||
|
if (ioff < off)
|
||||||
|
ioff++;
|
||||||
|
else {
|
||||||
|
|
||||||
|
for (ib = 0; ib < nb; ib++) {
|
||||||
|
if (word & (1 << bit[ib]))
|
||||||
|
val[ib] |= (1 << idr);
|
||||||
|
}
|
||||||
|
idr++;
|
||||||
|
if (idr == dr) {
|
||||||
|
idr = 0;
|
||||||
|
fprintf(stdout, "%d\t", iw++);
|
||||||
|
for (ib = 0; ib < nb; ib++) {
|
||||||
|
#ifdef HEX
|
||||||
|
fprintf(stdout, "%08llx\t", val[ib]);
|
||||||
|
#else
|
||||||
|
fprintf(stdout, "%lld\t", val[ib]);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
val[ib] = 0;
|
||||||
|
}
|
||||||
|
fprintf(stdout, "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (idr != 0) {
|
||||||
|
fprintf(stdout, "%d\t", iw++);
|
||||||
|
for (ib = 0; ib < nb; ib++) {
|
||||||
|
#ifdef HEX
|
||||||
|
fprintf(stdout, "%08llx\t", val[ib]);
|
||||||
|
#else
|
||||||
|
fprintf(stdout, "%lld\t", val[ib]);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
val[ib] = 0;
|
||||||
|
}
|
||||||
|
fprintf(stdout, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(fdin);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
4
patternGenerator/example_pattern/example_pattern.alias
Normal file
4
patternGenerator/example_pattern/example_pattern.alias
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
BIT0 output0 1
|
||||||
|
BIT1 output1 1
|
||||||
|
BIT2 output2 1
|
||||||
|
BIT3 output3 1
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user