Compare commits
1365 Commits
3.0.1
...
jungfrau_d
Author | SHA1 | Date | |
---|---|---|---|
f7aedf7711 | |||
8c112efdb3 | |||
938e1e87ff | |||
82308daf7b | |||
aa99309caf | |||
a0f697ce71 | |||
14dd753397 | |||
7e43472b7b | |||
ac7c85029c | |||
639ea0eb56 | |||
659e204b35 | |||
2c2fb7358c | |||
d3646f0ac5 | |||
54a396065d | |||
7fdab08256 | |||
e2ef043e04 | |||
43dc9df6db | |||
10f89599e0 | |||
452fd1e457 | |||
7b817fa194 | |||
1a1c6b9b42 | |||
3e5d34647e | |||
591ff53b84 | |||
fff79fbbb6 | |||
1943e77b24 | |||
9315768159 | |||
f1a1391866 | |||
877bdb8979 | |||
bf0847e967 | |||
97dd329a7b | |||
6847175743 | |||
f90d8c6aff | |||
45ae8a41ab | |||
24fc5de58d | |||
7314c52c63 | |||
bc4d0452af | |||
97692ae3ab | |||
55f482f915 | |||
74d67261a9 | |||
741ee3b44c | |||
29be6f3b34 | |||
81e858ea4d | |||
0f8d099196 | |||
ab5aa78b8a | |||
3f6736ad23 | |||
3e654977ca | |||
1029ce9705 | |||
d114f8db90 | |||
9fd2866fc0 | |||
aff6e30b65 | |||
0224dccd2e | |||
fbada2e81a | |||
40d88002c0 | |||
3a8c7c6e2a | |||
2a1c89f712 | |||
0e0e7ea81f | |||
df938c2535 | |||
932e377765 | |||
0904d1db29 | |||
20720bc073 | |||
e14519c236 | |||
e2f08da3e6 | |||
181ac4f509 | |||
a0f5224d09 | |||
6a0d44e358 | |||
1094d5d30c | |||
9231dff626 | |||
92b447c83a | |||
aaa7576f7d | |||
96d7345124 | |||
4f13b29c7f | |||
a55ae38874 | |||
7683b18fa3 | |||
71dd43d252 | |||
fc7d3bcaea | |||
2f3b0e0b06 | |||
b0cffcd570 | |||
56d1994b8c | |||
668cff1c65 | |||
06d4c7ce37 | |||
c0f06fcfca | |||
33efd42bdc | |||
af5eb9fc12 | |||
61a939ef53 | |||
a3342f86d8 | |||
554f9dc2ee | |||
c4aa5ef7bb | |||
d7eadd5782 | |||
65930002b3 | |||
f5feb081ab | |||
714e456d7d | |||
b76d123df1 | |||
2eac75aa0b | |||
18558e1288 | |||
b853bd92c8 | |||
4da85b15a0 | |||
77d34d5b6e | |||
6472cc4dd7 | |||
67eef8ba75 | |||
91a338cf52 | |||
9b53a295e1 | |||
8cc8b58b05 | |||
ec9f360c75 | |||
dbf927901f | |||
9e16dcb1e6 | |||
eb88fabfbc | |||
92310f845c | |||
262140728f | |||
834b1e58ea | |||
5192be6784 | |||
5c0e1643f2 | |||
7dc014f19c | |||
02fd4b356e | |||
eac992ee03 | |||
4e3baf41cb | |||
72091f47d9 | |||
21cab38921 | |||
3d40fb2d2c | |||
83c2775d6c | |||
e3859c3097 | |||
833ca071c4 | |||
45884a72da | |||
61aa673be9 | |||
1bc6e7f978 | |||
202d88d6be | |||
266520741a | |||
faf7e0db82 | |||
7aaaeae30c | |||
86afb2bd0e | |||
a29466b396 | |||
c7259538e9 | |||
ff4ce48e5d | |||
f3beda6bcf | |||
8256b7ba84 | |||
7c4aa7f3a7 | |||
1e19b99a78 | |||
f591adccb8 | |||
7abe070ea8 | |||
708975acb5 | |||
849d3ba049 | |||
ee20cfab1e | |||
b46e107f35 | |||
91813a2c68 | |||
cedde395a0 | |||
c7169f3c36 | |||
dd6bb85230 | |||
bad8b99b25 | |||
001ce4a93e | |||
0527880747 | |||
d31446ce07 | |||
0cc0c2715b | |||
248306d570 | |||
6b4d6084f5 | |||
79c6f5310b | |||
f59b172cfd | |||
25d7781878 | |||
721f80a493 | |||
192ac229e9 | |||
4cbf8483ba | |||
77c1ffffb1 | |||
c16b19ed1f | |||
cafca86bbf | |||
89a06f099c | |||
6c7c91307b | |||
5fdb090926 | |||
d17fd54a9d | |||
9543171504 | |||
74f2783b10 | |||
4a5cb011f7 | |||
dce7dcbfd4 | |||
d00fd70d6d | |||
04146e683c | |||
4b7c5c5950 | |||
92b674354d | |||
8cb123cdcb | |||
6b5aa5ff66 | |||
2b377df0bd | |||
ec17529c52 | |||
404d3fa677 | |||
026d4019c5 | |||
31a4a46fb6 | |||
8c3691f767 | |||
70b2a41d5e | |||
39221f1230 | |||
fad308754b | |||
33f726ff7e | |||
cbacf471d6 | |||
f11db00aef | |||
951d4d6091 | |||
025b3a8d4c | |||
acf32a5524 | |||
55ba2afc05 | |||
498569a42a | |||
d6360ca197 | |||
05720c12ac | |||
85516e42c0 | |||
b35a8f0650 | |||
c284b24397 | |||
7256a1e422 | |||
69a11f8950 | |||
0270e18882 | |||
697c020a49 | |||
90b257a74d | |||
bb025adc09 | |||
1558ca2bb5 | |||
a7ab8aa9e6 | |||
3b4d36c3d4 | |||
59a0f5fac9 | |||
bbfb5df30d | |||
09f1a8956e | |||
d6c0f7be05 | |||
11d7ebd298 | |||
d9ea8e6747 | |||
5131245f0a | |||
6fc388bf78 | |||
24f28f14f4 | |||
45fd35b243 | |||
11a452545c | |||
b198b50377 | |||
df2d67d90d | |||
73ad238028 | |||
959d9aa5d1 | |||
45b837b42a | |||
969551ae37 | |||
05709e2f47 | |||
1fce125d47 | |||
d134e54810 | |||
ed9dc3b386 | |||
990848554c | |||
78fcb7eb98 | |||
94c4e4c352 | |||
3e23a38fc8 | |||
37b80bcc0d | |||
fc0306564c | |||
c38bebd615 | |||
5a4122ae7c | |||
2ccd03a3b0 | |||
c7c52c63cd | |||
c7ad548e4c | |||
7cd5bc8b2d | |||
8c2ee57591 | |||
c15e72510c | |||
ac1511c3b0 | |||
cd5aea895b | |||
5bf37a4f0d | |||
6cb043b2d9 | |||
fa34ad435b | |||
c5178bc4de | |||
c89fad45a9 | |||
6c4fad01d4 | |||
eb3dff3a6c | |||
d9503bebf9 | |||
b99606211b | |||
039e658773 | |||
92ca22fc09 | |||
d4ac6fe160 | |||
8cb0f3a29c | |||
c16f9b8c30 | |||
050854de36 | |||
cb80cf5f09 | |||
83e43b1bcf | |||
2a01688683 | |||
3ff01bf609 | |||
4b2c6af4f5 | |||
03402d0e9e | |||
9d489dc962 | |||
44f0dfc3c0 | |||
685fcc31b6 | |||
ce6289afda | |||
4e56107015 | |||
430e0e3fb5 | |||
d8c0fb522a | |||
ce25c06b41 | |||
6759b2eeb8 | |||
38bf540c1a | |||
43012e4f28 | |||
98655ee7e3 | |||
43d478076c | |||
4036e6af8d | |||
fad73a57aa | |||
c0d5303b70 | |||
3356c2d3f6 | |||
3f45d39c8d | |||
4e94995142 | |||
c93b78c74f | |||
73af4a744f | |||
6ddde83c81 | |||
bb93147537 | |||
1eff8485dd | |||
c153be95d1 | |||
4943983d10 | |||
5fe7a86361 | |||
7522a655df | |||
836eb8cde2 | |||
9f724f0c0d | |||
bad44f5bf4 | |||
40d2f66146 | |||
9639e480d9 | |||
8520492e4b | |||
be33102164 | |||
5235a87e93 | |||
cb687d805e | |||
327d08a016 | |||
1960460e43 | |||
e42e8f5bf6 | |||
c9422befff | |||
c56efdec8a | |||
14131f93f1 | |||
d21ceb0e75 | |||
9a08c85b2a | |||
85134443de | |||
7d3d2a8b31 | |||
75ce111344 | |||
f8aa0e3d6d | |||
2dcef909ca | |||
ec18db868f | |||
7e793539ca | |||
d4e4fb8ffe | |||
48e4cec56f | |||
3b2c734efd | |||
507a22ac05 | |||
a01d68a61f | |||
6765fd0dc8 | |||
ae5938799f | |||
19b21dac88 | |||
b8f071dcf6 | |||
182f65bc2f | |||
1103f56256 | |||
0553755439 | |||
65b8ab5b89 | |||
658438df3b | |||
999a2f4d15 | |||
2532df37cc | |||
ca817c6ae9 | |||
0765b330f1 | |||
abc7a9bd2f | |||
2676e8b43d | |||
d3c1193a71 | |||
db232ad00d | |||
ceb515d517 | |||
0bb800cc8a | |||
04c8a2871d | |||
1803a5aecc | |||
c40db94474 | |||
c56561bc9f | |||
08bd2378f4 | |||
8939e23622 | |||
93192c6e84 | |||
d2d50a56df | |||
8c067437e6 | |||
35b1ad39f7 | |||
bb81613900 | |||
ebee9e308e | |||
debf3a1b01 | |||
96584ce397 | |||
7f2197fc4f | |||
302d9f0633 | |||
f80483de6e | |||
1fe473e830 | |||
966896b942 | |||
4c7a9cd838 | |||
c218e391bb | |||
43ad8b69b3 | |||
4c35dd9b5b | |||
15fc55f914 | |||
eecfcae312 | |||
c723b29f9b | |||
9b81143c68 | |||
20edf61e30 | |||
a1a6a5dbaa | |||
a8121ae108 | |||
40d15264c5 | |||
b2e6b78e20 | |||
f5244faa02 | |||
421dbdb9b5 | |||
617f3d2600 | |||
a4f1b7670f | |||
09546a8632 | |||
29d4eb8b41 | |||
775bde76c9 | |||
d876cb6da6 | |||
69f361468e | |||
b52c6b05b8 | |||
c93f88b7e5 | |||
d0e1289c1b | |||
4a8a72c447 | |||
501c579f6b | |||
722883531d | |||
d2ba206216 | |||
6be47d936f | |||
9aaca14b01 | |||
aaae6d854c | |||
c91c2c224a | |||
2fdfd33f97 | |||
230b26a680 | |||
46aa7769cc | |||
59f3f0c764 | |||
d46d96ecca | |||
82584dd1a8 | |||
b65e0a1f01 | |||
f9417a23e0 | |||
fd95550724 | |||
c064dc84ae | |||
01e3cb8d5e | |||
c6ac0f8ebc | |||
f9be8b89ac | |||
75a75b6cf6 | |||
f125b94a7d | |||
b18391330e | |||
2bcf88e434 | |||
031a11c4f7 | |||
a64b34610a | |||
ed74e710d6 | |||
907d1655d1 | |||
a7ba5eb0d8 | |||
6bf1a944da | |||
3c77447868 | |||
046fb11e5e | |||
b89d56001e | |||
de204dee38 | |||
0ef030354f | |||
dccce9bf55 | |||
441c3dc5db | |||
afd9e29424 | |||
ce939b3cd6 | |||
0984654fd0 | |||
cd738106ec | |||
0e120330f4 | |||
985b2eba4d | |||
bf0e0ac601 | |||
143682cfb1 | |||
a5ee9fbdba | |||
166541bd15 | |||
140996fae6 | |||
3f43767d38 | |||
a76cc90972 | |||
0c1a3b7756 | |||
18ab437ae5 | |||
3b56091e2f | |||
dcad6c80ce | |||
076faa62e0 | |||
22686e1e25 | |||
bb37915419 | |||
e13ecc8625 | |||
ef3e01b9bd | |||
dffa4d9de5 | |||
dfca81208b | |||
37be7d0e2b | |||
49812a34ae | |||
133b82ad61 | |||
61e769773b | |||
23dce681b2 | |||
6abfdcb2c8 | |||
7481c7f0e6 | |||
3c2bbf6ad4 | |||
b8fec6c050 | |||
2f11681d3f | |||
12f8166d25 | |||
536c853d79 | |||
f1d055138c | |||
82ce6b639c | |||
7d9417dffe | |||
89ee1d5bcf | |||
a1c0d28ddb | |||
c3472f295b | |||
99a1c609f1 | |||
3eca4c0535 | |||
b200138730 | |||
a4fec1e750 | |||
46036e5dde | |||
d2ed245d1d | |||
b74aed91dc | |||
e1ec60c9c1 | |||
603b217b54 | |||
449e4da892 | |||
1ec9d950d5 | |||
1b28cc88ff | |||
8d6ee6ff46 | |||
10539f8533 | |||
13d6d3f866 | |||
eff17371a5 | |||
13f9b9929a | |||
b07492be6f | |||
c05829031f | |||
fd68a41918 | |||
76da6a07aa | |||
db0807bf7b | |||
b19b2a044c | |||
1ebe0f5624 | |||
49f71ffca7 | |||
80a1a3d796 | |||
683a859d4c | |||
37ebeaed7b | |||
0f688bb249 | |||
1ce8f3d092 | |||
10a34cce2d | |||
7fe9251a3b | |||
9e5ec6a57b | |||
d45375947f | |||
901785b818 | |||
68545f2b26 | |||
fe09f6d062 | |||
9d9251293d | |||
d240ab7a29 | |||
dd93117b06 | |||
73ae8c6151 | |||
4b9e41e23b | |||
dd5bd60429 | |||
5e032c2c3e | |||
7303734b19 | |||
8bc9fa54fc | |||
a9fb476543 | |||
f2669adda7 | |||
29c09ab381 | |||
8738700e8a | |||
c1c302f740 | |||
bc9d5718c9 | |||
991567ba1c | |||
f0b29cfecc | |||
3c41ec4a7a | |||
172c9218d1 | |||
b7582e93d3 | |||
5ae31bc438 | |||
1941e90697 | |||
363f4f1da0 | |||
1bbb352743 | |||
5ea5e83236 | |||
b46fb5e9c4 | |||
0841df98d4 | |||
1bd0b33806 | |||
de2ebad2ed | |||
2a988c7ffa | |||
94979b5824 | |||
c6a597c3ec | |||
288ef0a514 | |||
818be3bb85 | |||
d01e8d24c2 | |||
b38a41493b | |||
37c22dfeb2 | |||
15235ab4fc | |||
230c335c29 | |||
0f50b9f161 | |||
58f97d4f46 | |||
42ed65076c | |||
b5b5ce5c37 | |||
55c57e4c3f | |||
52785c6642 | |||
f815e7ffb6 | |||
0a2c1d1406 | |||
b1570bde9c | |||
93ec5f5ef7 | |||
feaa276284 | |||
26f8ca3221 | |||
b7aac059c3 | |||
81a49babda | |||
553633651a | |||
bf4ba9d08b | |||
4b007b003a | |||
615dd2a84f | |||
dc80dccb8a | |||
de34d85761 | |||
06a6d53a3f | |||
f747c908dc | |||
64d94b978b | |||
f810a9e9fb | |||
152186ee59 | |||
d9551fa07f | |||
8738c6b9a2 | |||
bfda07d262 | |||
a013734af8 | |||
84a67870a0 | |||
f161d68efc | |||
1ca8bf204a | |||
89d9204e1c | |||
88b9a93b3e | |||
1af2d95462 | |||
d07f53cd6f | |||
6533a474d1 | |||
f701c731fb | |||
7a432befa3 | |||
f68321af43 | |||
2dd8093905 | |||
9d3134c3de | |||
563d644d2f | |||
e2306bd41c | |||
659faa9aaa | |||
feeaebb7e4 | |||
547efc48e3 | |||
e379b98631 | |||
f98259adc9 | |||
88e0914405 | |||
1c59c5c4f4 | |||
79693a38f5 | |||
9d8aa5fe91 | |||
dceea92f1a | |||
2815458652 | |||
d8140d8db9 | |||
87f7563035 | |||
a4de4bb475 | |||
b3393fc18b | |||
4e65a1d964 | |||
5e71aeb85f | |||
3a51d107bd | |||
6b4a9be870 | |||
b4b38cb607 | |||
98b5e893b1 | |||
03e7a83e74 | |||
0869a975e4 | |||
2cebec90ee | |||
c611523352 | |||
a774c62cd4 | |||
550ed4b1c2 | |||
2c08c1e7ce | |||
2b0208bd98 | |||
05d8ef6277 | |||
228cfa35c0 | |||
f120f9c3dd | |||
262bf1b307 | |||
8f3f9caf2b | |||
d0665ce075 | |||
284ce30a81 | |||
4d0090dfcc | |||
e98d60c26e | |||
cd3135c01d | |||
40dedb8b07 | |||
c19c787904 | |||
e3a0c1373c | |||
8942098a90 | |||
2e83db7d45 | |||
89fa30ee4b | |||
2e37eda9d9 | |||
a37be4b2e3 | |||
7a99d4155a | |||
91dd176a0f | |||
a99584a0da | |||
d1c8d0b01c | |||
833f0c164c | |||
742d4e6cb7 | |||
d55c39ef08 | |||
a47db85350 | |||
b43be57b6e | |||
817736fcd5 | |||
92123069ce | |||
17027962ea | |||
e0cbbde01d | |||
aec8c031de | |||
3d40d5d058 | |||
af550b4c70 | |||
70a1b87603 | |||
dfa8cf7381 | |||
92fc837eb4 | |||
33ac63d14a | |||
cf87b6ca83 | |||
660ed4c177 | |||
261849d69c | |||
0d96272db5 | |||
129e12fd97 | |||
ab2eb607c8 | |||
5671f1c87b | |||
ff440f1325 | |||
dfad145e14 | |||
500304024d | |||
86fb843021 | |||
c95bc84458 | |||
058de39d40 | |||
b44039361d | |||
0070a79838 | |||
1d14dc6ff4 | |||
1d65063088 | |||
5c2ff84c0e | |||
42c4e3e1a1 | |||
014dfaa251 | |||
38a6393dde | |||
b50d359ee6 | |||
b5a2c91873 | |||
3c9b1884d3 | |||
66e79dc9a9 | |||
5b8dfd7943 | |||
178b832223 | |||
8df63b7767 | |||
8382d0f5f9 | |||
1e2ffae690 | |||
f6357a667f | |||
4cdd766a8e | |||
c3289a973f | |||
e921dbb6a7 | |||
1895ee1ebe | |||
22e8c52bd8 | |||
c31c851e88 | |||
565739f6a2 | |||
43c6cae25b | |||
d2c8c0a2eb | |||
d96cbe02a2 | |||
795e147e7d | |||
f806759af3 | |||
316ba01297 | |||
a28932bb6c | |||
4d69b6d3a1 | |||
302f31678f | |||
32924def33 | |||
ee20932392 | |||
0ee7f67965 | |||
c24a9b223c | |||
f7809bda3b | |||
5682466356 | |||
b82fca2c8e | |||
576de404d4 | |||
5a356534e6 | |||
f735c86b93 | |||
6aa0029580 | |||
2216574d34 | |||
4aa720eecb | |||
d0950ba001 | |||
f69e9d0df4 | |||
8dc0d72028 | |||
5f6f276f70 | |||
fd7060ef6c | |||
e1d570e8ce | |||
6d9530ee1d | |||
b981fe78ef | |||
2cd0841ea3 | |||
74bd223fda | |||
6147383677 | |||
5e7e7d3c33 | |||
938dd5e06c | |||
d685cb8ff4 | |||
78bfc9d0a5 | |||
4b166b726e | |||
9ca163dfc9 | |||
f2da42a305 | |||
64f4188a00 | |||
17a6322f7c | |||
8151f1d5fe | |||
7d5b24fe33 | |||
4bcc24a59f | |||
45b00c4e7d | |||
923a7e8936 | |||
b9f97f42a6 | |||
f7a6938366 | |||
70f55ff788 | |||
7ffa72092f | |||
1c78400369 | |||
b5c35ddeac | |||
d68c3b73a8 | |||
ab8b07f2ee | |||
1c70f9ec65 | |||
251a7c2446 | |||
cf37725e04 | |||
287cd118b0 | |||
21ca289ebf | |||
02acaf13c5 | |||
c6d2902539 | |||
2aa7e7d2ff | |||
fefdf8e7d6 | |||
6bfc212f19 | |||
a1b24a637b | |||
40ae74bb99 | |||
586c664a43 | |||
fdcd633769 | |||
70ea4b48c3 | |||
dafbc970e3 | |||
100c1b81f8 | |||
757bc89d05 | |||
97934e323c | |||
f4cfafb2bb | |||
c248b12455 | |||
def79807f6 | |||
eb89d12f41 | |||
c477970cf0 | |||
03ae32dcf3 | |||
5a394c080f | |||
e631414526 | |||
d2bce7e372 | |||
f9b95b63eb | |||
c2db073d5e | |||
970d448e73 | |||
b236c14a66 | |||
80c0d4e10e | |||
46db575cc4 | |||
6f0c505c01 | |||
06d698166f | |||
5a139d70b5 | |||
33d1b11279 | |||
b163180d6f | |||
cab9dff225 | |||
7d8188fc11 | |||
64229ca32b | |||
ae8678cdc2 | |||
4aa0d26f26 | |||
c52025dd7c | |||
9f84bf7175 | |||
235002cdd4 | |||
c784f0f539 | |||
961489edb1 | |||
255931bbde | |||
781152a772 | |||
7b4910ee87 | |||
021212372b | |||
59cb9c84c2 | |||
e8612a481c | |||
d67b4765ea | |||
8773de93e9 | |||
ef20fa6f3c | |||
19e7ced332 | |||
f288390255 | |||
30e060b3b1 | |||
29ba9ae6f7 | |||
2b2b53f598 | |||
1ebb07198a | |||
ed0b22b500 | |||
548036a602 | |||
1b55fdad86 | |||
14c899e7cf | |||
b3d4e90f7f | |||
cedd275892 | |||
588037fd18 | |||
1700d9884a | |||
e0b8fb3609 | |||
b7f62fcd47 | |||
5b6ec303d7 | |||
cea6c30ded | |||
0781344117 | |||
63c130a380 | |||
7945d15beb | |||
4e446f1f39 | |||
83600fcb15 | |||
2a28333a96 | |||
830f92dedc | |||
87e8333dfd | |||
b3ccd5e1a1 | |||
f0ac49190a | |||
921ae01bbe | |||
fa175ac934 | |||
0018fa46f8 | |||
c934e92a41 | |||
da4253fe13 | |||
3cab1bc0fe | |||
d74a8368b8 | |||
39ebd81230 | |||
823c855ef4 | |||
7fadf4feb4 | |||
f86578cfc3 | |||
a0512a01d5 | |||
bdd37fa7c2 | |||
a96a019435 | |||
dd3f4aa81d | |||
1102153d2b | |||
ab7e63c20f | |||
f1333c7a90 | |||
e77cdb35dd | |||
52b1e98726 | |||
df75fef6f6 | |||
44fdc46c11 | |||
147194e8af | |||
05055eb283 | |||
0dc1e10bd3 | |||
e38e500e16 | |||
134f13fc52 | |||
41fb6c26a2 | |||
73fcef5f6d | |||
e9cc91698e | |||
6213b5e07a | |||
08aacf76ac | |||
711e0d771e | |||
2fc98c7a54 | |||
3b6ead7783 | |||
40c96b5562 | |||
6bb7195a2c | |||
53423a42ac | |||
c2b1eef75c | |||
f5a86bbfe1 | |||
9af0ec74b6 | |||
45de361b22 | |||
260f237990 | |||
37dd5fb902 | |||
ecd0c810ca | |||
7c29327b47 | |||
c366e94a96 | |||
ca8cb33569 | |||
7db6b7bca8 | |||
7e16f3ebeb | |||
233c145791 | |||
d7cc9fc023 | |||
ed1135566a | |||
3595c586d4 | |||
11de3dfde2 | |||
14d227f8db | |||
144bd7124b | |||
f6660c0dac | |||
73ac8bab38 | |||
d76568d6d9 | |||
72f47b2375 | |||
3114512c3f | |||
95254619c6 | |||
a0016cb005 | |||
0b140111b3 | |||
d7831f6c64 | |||
a97b725f43 | |||
69c71e48f6 | |||
54fc63dd55 | |||
5e9871720b | |||
55517e6d4c | |||
2853f97fe7 | |||
fc0f8ef9da | |||
99bf6446fe | |||
283dfa2b05 | |||
5316fed5d4 | |||
dda013a85b | |||
2eecf43fbb | |||
eba0fa277d | |||
e6e3561dcb | |||
b294b3e8b1 | |||
025e7b8f44 | |||
aa25d86310 | |||
a7551cca4e | |||
8e79f9094a | |||
2dece5c635 | |||
24db58e615 | |||
bab7d8e3fb | |||
2339fb2a0e | |||
378392c0f5 | |||
fcde40b854 | |||
ceed0eaa9b | |||
e3088d822f | |||
27ebd9c713 | |||
f33b3cdc79 | |||
b0ea458d3a | |||
7e2f2cd31b | |||
6cf7bf2e06 | |||
fc7ae98eee | |||
542dda8ece | |||
0f6cb4dc41 | |||
ecc970bc73 | |||
15aaa93130 | |||
34b659fa15 | |||
cf8b0de433 | |||
32c1a45e11 | |||
da1b6ad62d | |||
49d6dcb6e2 | |||
22ef1cee8b | |||
9d3fdaaadc | |||
06f84585af | |||
a970bacbe5 | |||
5be2979fff | |||
4765849613 | |||
05ed8dca4e | |||
4f600f3129 | |||
4b72d685f3 | |||
bbd7e7906a | |||
f735baf9d7 | |||
ad14381ab4 | |||
7702865409 | |||
2f8c1b453e | |||
883317dd28 | |||
8ed67119b9 | |||
f45e2b4ab9 | |||
abdf4b1ada | |||
228d624d8f | |||
e0c9805ee8 | |||
4eef81fbe9 | |||
301600e720 | |||
4d4e4a4ce7 | |||
ad3ac2cdee | |||
b10abd07ee | |||
e65b416215 | |||
24df69d57f | |||
183c306166 | |||
1dfdcfcb7e | |||
212218396a | |||
b78b8425fd | |||
12832a3a96 | |||
621b7cfb2a | |||
a67d9e60da | |||
d71008bd10 | |||
a154d0a088 | |||
c5262458d5 | |||
cb635d800a | |||
0ed82d4ef7 | |||
bdf9373e0d | |||
3f61206289 | |||
e19a27bf62 | |||
a1831c38ed | |||
c4b8c6385f | |||
f393751771 | |||
94ce042401 | |||
49b8024c43 | |||
8b39443197 | |||
dcce66ee9f | |||
563b1bb8b7 | |||
b4d9a6a09d | |||
51fd9ed423 | |||
23d73ae5ae | |||
8986b008dd | |||
30f1e6ad3f | |||
02cc284422 | |||
e6c0304af1 | |||
16fe4d305e | |||
68e9648854 | |||
0417a7e97d | |||
6653cc9cb1 | |||
a37bbc50fe | |||
5b01b4cbd8 | |||
d3a0319863 | |||
fdd19bc316 | |||
1152555663 | |||
9ae1289616 | |||
3baa677a2e | |||
516336963e | |||
99281e2690 | |||
501d2478a5 | |||
08b6eb78c5 | |||
d096a5efeb | |||
9f24bb0a98 | |||
173d8f740e | |||
16428f3828 | |||
1247f760f2 | |||
11475316fd | |||
a09c2e38a3 | |||
1c49fbb090 | |||
b5909044f6 | |||
62a88dadba | |||
e0bb7d74f4 | |||
d09a1a0a95 | |||
d38108e527 | |||
c9675d111a | |||
8f9c657fa0 | |||
c35203ebfb | |||
1069bf5979 | |||
cac913831c | |||
03e781a0ac | |||
a5a3d4bc78 | |||
bc70cc3a26 | |||
e024774323 | |||
bdcccb7732 | |||
5ff2e86060 | |||
70e193b0fd | |||
c3a9d3c342 | |||
d3c807975f | |||
1c5250ea7f | |||
7cb3b3f8de | |||
7cd35f24b8 | |||
28af3c2642 | |||
2bd8e6c166 | |||
ccdc7d22e9 | |||
3831896a78 | |||
9847729f3c | |||
0eff9e1401 | |||
4323a837ef | |||
649cb0aed9 | |||
8cf6e0cbd6 | |||
753290b228 | |||
d28f293485 | |||
da010a03d7 | |||
72b71f3fcd | |||
e4868671ae | |||
61897cbd41 | |||
9e8d3e598f | |||
252e924f92 | |||
fe2ba8621b | |||
b8bdbf4da6 | |||
5340b8ef24 | |||
807189a492 | |||
593f5b6c65 | |||
b029f1fa26 | |||
14546247e4 | |||
a74e8f68f7 | |||
a1936cb884 | |||
a36b715eab | |||
17c20748bc | |||
d5f8a1b4e7 | |||
70ce8c1653 | |||
5203a0d621 | |||
59ad15b54e | |||
afac5be3c3 | |||
688dd15fe9 | |||
98752e1cdb | |||
d59f419370 | |||
9ba3fb9279 | |||
50111bcea7 | |||
ab06c33107 | |||
10209b75df | |||
40210ae26f | |||
dd6301d66d | |||
b58c3e8951 | |||
85aa47b835 | |||
da9b0bdc0b | |||
258de4947a | |||
9197ab6e4b | |||
6c1c203782 | |||
721d2a30f2 | |||
72970c9669 | |||
b389402d64 | |||
0d2dd93498 | |||
fee6465213 | |||
8b02aa9e91 | |||
339956e5de | |||
deb59530ab | |||
ec5e779225 | |||
3878212ffd | |||
7649865a8f | |||
06cdf8ad92 | |||
28101bed22 | |||
1f6c289fd4 | |||
675d69392a | |||
61e7c0148f | |||
7364f674ed | |||
a536f8ac9b | |||
d48ca4a9fe | |||
459b588b9f | |||
8bf03a7712 | |||
895f8ccf81 | |||
a654febb7e | |||
aa190fda7a | |||
897cbac27d | |||
3da6a6df65 | |||
08fda2b662 | |||
6af3a6d33a | |||
b11b2dcfa9 | |||
3782a56ef2 | |||
e95b444908 | |||
d1ef6bf94b | |||
3aeb3f58d1 | |||
09a707d7ff | |||
f264691dc1 | |||
3854c82b90 | |||
92b4b3324e | |||
ac536ebdf7 | |||
59c0861131 | |||
31589ce352 | |||
7602ffc5ac | |||
13078d0ef2 | |||
9f3468bd15 | |||
b50c1d966a | |||
65a91c519e | |||
5958cf9278 | |||
f6e1c21137 | |||
d2319459df | |||
d6bdbf8524 | |||
4c0a16cd75 | |||
e39d0aee56 | |||
1e849097ea | |||
7577d03e75 | |||
6e876d79ee | |||
4718378d0a | |||
24c305ec59 | |||
1bf7b4a6a1 | |||
2f3dc8d109 | |||
7e932bf84b | |||
98e09b29d5 | |||
a51f4f1252 | |||
2d14da545d | |||
9150556209 | |||
3b684c4662 | |||
0ef52138e1 | |||
28211af5af | |||
2ae5a959fe | |||
263d702535 | |||
7512f818cb | |||
25023f6971 | |||
9f152ce1f3 | |||
12348ac76c | |||
0e26734023 | |||
fd64ba289e | |||
6f3898441e | |||
5b88203bd9 | |||
385e6714cc | |||
1edb41242c | |||
397344a264 | |||
e17e4c3171 | |||
8bba57e77d | |||
7c1423d654 | |||
8388d1f503 | |||
6a41b5ce3a | |||
1c606df752 | |||
1e85482d09 | |||
a89847538d | |||
130f3d2e6f | |||
57fc89a6bb | |||
f49998ccd9 | |||
41f24489bc | |||
addf964901 | |||
bca7c649d7 | |||
747e9af431 | |||
620f7651a0 | |||
4466213882 | |||
ca19993149 | |||
e29371ca8d | |||
3439ccbec9 | |||
a0c9018455 | |||
f0431bd873 | |||
ab5229bcbf | |||
585661412c | |||
935fecefde | |||
2c276db579 | |||
a57e8edd88 | |||
2ac170db98 | |||
ab93835ce2 | |||
43140811bd | |||
34908edd6a | |||
29f3387d73 | |||
a1d325a115 | |||
3034cf87d0 | |||
0b45d73e0c | |||
c0bfe46aa1 | |||
26829585dc | |||
c0a1f83691 | |||
fb3c903c04 | |||
db6947cc9c | |||
590fac9e07 | |||
400585be6a | |||
dcfa6fb100 | |||
39a20e1616 | |||
114c45c04a | |||
4159e83fd6 | |||
3a26c95c0d | |||
f2f00fec06 | |||
7f58b77dfb | |||
5d34358f44 | |||
8328b30cbd | |||
9c55cb4974 | |||
a0ad1fb3a3 | |||
2067f47f34 | |||
46aeee00f1 | |||
5f0575236e | |||
45e0cf71eb | |||
bd228fac27 | |||
b7ca7f5319 | |||
11c9ab16f9 | |||
e6d22a97e2 | |||
99037449f4 | |||
97260510f2 | |||
662f502d4c | |||
c5c23e73d5 | |||
70e4c6e2a2 | |||
428855d801 | |||
2e234f1bbd | |||
1dee950870 | |||
51499fa503 | |||
dcf4d98a75 | |||
28e2ebf75a | |||
bf89dd44f3 | |||
d9fcac0236 | |||
7f256c868b | |||
06b9efd229 | |||
9ad0fd0bc9 | |||
7c9958db04 | |||
956625bb50 | |||
4f74f6d08f | |||
2d962dfead | |||
db2fef5d69 | |||
cf4498cf78 | |||
c127eebeaa | |||
363aa9124e | |||
8872f86e31 | |||
4c4a26c0e3 | |||
e33ba2cd76 | |||
1af065fdb1 | |||
678ef89e17 | |||
dc70c45ef2 | |||
c0ec315b04 | |||
6fa4e4cef8 | |||
3886a0c9ad | |||
5b65d44303 | |||
23ddb3d4b5 | |||
a2210c0118 | |||
6d0f751104 | |||
3c6d572369 | |||
7ba90f98fc | |||
589a5c7852 | |||
0df4576874 | |||
82f503aa09 | |||
3da8bca462 | |||
9d4c14b724 | |||
6ff249c3f2 | |||
e12229633c | |||
b75dde4613 | |||
f6989d5539 | |||
7ff23b25b3 | |||
79bce5e006 | |||
9c82a8f726 | |||
6812961836 | |||
003239cddd | |||
ce7386e230 | |||
fde4194f9b | |||
7f9ac86862 | |||
16a939c0c0 | |||
4084e2c31e | |||
1f138abac1 | |||
d2fd0cbee9 | |||
210bcb081d | |||
673b7f1652 | |||
b6ae3300a9 | |||
801817b749 | |||
1cddb9a542 | |||
927e776353 | |||
36a200ceba | |||
0fe43c75f2 | |||
4d92744dea | |||
ae72df7b14 | |||
e814aee300 | |||
4f2af046d3 | |||
91588ecc21 | |||
d2767afa7c | |||
311059d748 | |||
10e57319bf | |||
2e5f64d9bc | |||
0d92b11055 | |||
4260dc0baf | |||
0f302e3446 | |||
e54767b69d | |||
812606a7b4 | |||
fc025bd28b | |||
34f10b382e | |||
0b82aabd2b | |||
03a2f979a9 | |||
4669d408d4 | |||
c594870fdd | |||
34062b6e0b | |||
7cde5dbe38 | |||
bb817733ff | |||
7cf7d9eb79 | |||
907ab2f0bd | |||
d0b379a2d5 | |||
afc08f8c30 | |||
5a7800768b | |||
63c0fe863d | |||
fa79a36089 | |||
9bdb361d08 | |||
1a8b0692fe | |||
352ade6457 | |||
986826cbe9 | |||
e0d82ad92d | |||
663fd557ff | |||
5a8f30fee8 | |||
e8bb186ff8 | |||
ab27437604 | |||
c2f6e5b20c | |||
7e0481eeff | |||
2b3d2bb4d7 | |||
d8803ca5e4 | |||
2bd5386c29 | |||
c5ff578d10 | |||
6eb5167c70 | |||
862169e178 | |||
e2832d2e1b | |||
092487c08e | |||
b78dcf869b | |||
c635b19941 | |||
5ff574b33f | |||
49378e6d09 | |||
aef462da32 | |||
1ba325e902 | |||
1c14b146a2 | |||
e95ffde95d | |||
4ed3859c75 | |||
069d044e17 | |||
272167435d | |||
277dc2cfd9 | |||
1510fa71d3 | |||
ca865a6636 | |||
3aeb15648c | |||
52e1bd32b9 | |||
0b6aeac364 | |||
ffd3cb6511 | |||
dfb8a1f7ad |
6
.clang-format
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
BasedOnStyle: LLVM
|
||||||
|
IndentWidth: 4
|
||||||
|
|
||||||
|
UseTab: Never
|
||||||
|
ColumnLimit: 80
|
||||||
|
AlignConsecutiveAssignments: false
|
32
.clang-tidy
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
Checks: '*,
|
||||||
|
-android-cloexec-fopen,
|
||||||
|
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||||
|
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
||||||
|
-fuchsia*,
|
||||||
|
-readability-else-after-return,
|
||||||
|
-readability-avoid-const-params-in-decls,
|
||||||
|
-cppcoreguidelines-pro-bounds-constant-array-index,
|
||||||
|
-cppcoreguidelines-pro-type-reinterpret-cast,
|
||||||
|
-llvm-header-guard,
|
||||||
|
-readability-static-accessed-through-instance,
|
||||||
|
-readability-braces-around-statements,
|
||||||
|
-hicpp-signed-bitwise,
|
||||||
|
-hicpp-no-array-decay,
|
||||||
|
-hicpp-braces-around-statements,
|
||||||
|
-google-runtime-references,
|
||||||
|
-google-readability-todo,
|
||||||
|
-google-readability-braces-around-statements'
|
||||||
|
|
||||||
|
HeaderFilterRegex: \.h
|
||||||
|
AnalyzeTemporaryDtors: false
|
||||||
|
FormatStyle: none
|
||||||
|
CheckOptions:
|
||||||
|
- { key: readability-identifier-naming.NamespaceCase, value: lower_case }
|
||||||
|
# - { key: readability-identifier-naming.FunctionCase, value: lower_case }
|
||||||
|
- { key: readability-identifier-naming.ClassCase, value: CamelCase }
|
||||||
|
# - { key: readability-identifier-naming.MethodCase, value: CamelCase }
|
||||||
|
# - { key: readability-identifier-naming.StructCase, value: CamelCase }
|
||||||
|
# - { key: readability-identifier-naming.VariableCase, value: lower_case }
|
||||||
|
- { key: readability-identifier-naming.GlobalConstantCase, value: UPPER_CASE }
|
||||||
|
...
|
8
.gitignore
vendored
@ -6,6 +6,14 @@ bin/
|
|||||||
*.log
|
*.log
|
||||||
*.out
|
*.out
|
||||||
*.toc
|
*.toc
|
||||||
|
*.o
|
||||||
|
.*
|
||||||
build
|
build
|
||||||
docs/
|
docs/
|
||||||
RELEASE.txt
|
RELEASE.txt
|
||||||
|
Testing/
|
||||||
|
|
||||||
|
|
||||||
|
*.pyc
|
||||||
|
*/__pycache__/*
|
||||||
|
|
||||||
|
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "python/pybind11"]
|
||||||
|
path = python/pybind11
|
||||||
|
url = https://github.com/pybind/pybind11.git
|
50
.travis.yml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
sudo: false
|
||||||
|
|
||||||
|
language: cpp
|
||||||
|
|
||||||
|
os: linux
|
||||||
|
|
||||||
|
env:
|
||||||
|
matrix:
|
||||||
|
- CONDA_PY=3.6
|
||||||
|
- CONDA_PY=3.7
|
||||||
|
|
||||||
|
|
||||||
|
dist: trusty
|
||||||
|
|
||||||
|
install:
|
||||||
|
- sudo apt-get update
|
||||||
|
- ldd --version
|
||||||
|
- wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
|
||||||
|
- bash miniconda.sh -b -p $HOME/miniconda
|
||||||
|
- export PATH="$HOME/miniconda/bin:$PATH"
|
||||||
|
- rm -f miniconda.sh
|
||||||
|
- hash -r
|
||||||
|
- conda config --set always_yes yes --set changeps1 no
|
||||||
|
- conda config --add channels conda-forge
|
||||||
|
- conda config --add channels slsdetectorgroup
|
||||||
|
- conda update conda
|
||||||
|
- conda update --all
|
||||||
|
- conda install conda-build=3.17
|
||||||
|
- conda install anaconda-client
|
||||||
|
- conda install conda-verify
|
||||||
|
|
||||||
|
# Useful for debugging any issues with conda
|
||||||
|
- conda info -a
|
||||||
|
|
||||||
|
|
||||||
|
# Replace dep1 dep2 ... with your dependencies
|
||||||
|
- conda create -q -n test-environment python=$CONDA_PY
|
||||||
|
- source activate test-environment
|
||||||
|
- conda-build .
|
||||||
|
|
||||||
|
script:
|
||||||
|
- CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|
||||||
|
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
provider: script
|
||||||
|
script: find $HOME/miniconda/conda-bld/${TRAVIS_OS_NAME}-64 -name "*.tar.bz2" -exec anaconda -t $CONDA_TOKEN upload --force {} \;
|
||||||
|
on:
|
||||||
|
branch: developer
|
||||||
|
|
207
CMakeLists.txt
Normal file → Executable file
@ -1,50 +1,185 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 3.9)
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
project(slsDetectorPackage)
|
||||||
set (CALIBRATE OFF)
|
|
||||||
|
|
||||||
option (USE_HDF5 "HDF5 File format" OFF)
|
set(PROJECT_VERSION 5.0.0)
|
||||||
option (USE_TEXTCLIENT "Text Client" OFF)
|
include(cmake/project_version.cmake)
|
||||||
option (USE_RECEIVER "Receiver" OFF)
|
include(CheckIPOSupported)
|
||||||
option (USE_GUI "GUI" OFF)
|
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-misleading-indentation")
|
# Include additional modules that are used unconditionally
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
find_package(Qt4)
|
# If conda build, always set lib dir to 'lib'
|
||||||
find_package(Qwt 6)
|
if($ENV{CONDA_BUILD})
|
||||||
find_package(CBF)
|
set(CMAKE_INSTALL_LIBDIR "lib")
|
||||||
find_package(Doxygen)
|
endif()
|
||||||
find_package(PNG REQUIRED)
|
|
||||||
|
|
||||||
if (USE_HDF5)
|
# Set lower / upper case project names
|
||||||
find_package(HDF5 1.10 COMPONENTS CXX)
|
string(TOUPPER "${PROJECT_NAME}" PROJECT_NAME_UPPER)
|
||||||
endif (USE_HDF5)
|
string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
|
||||||
|
|
||||||
|
# Set targets export name (used by slsDetectorPackage and dependencies)
|
||||||
|
set(TARGETS_EXPORT_NAME "${PROJECT_NAME_LOWER}-targets")
|
||||||
|
#set(namespace "${PROJECT_NAME}::")
|
||||||
|
|
||||||
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||||
|
|
||||||
|
|
||||||
|
# Check if project is being used directly or via add_subdirectory
|
||||||
|
set(SLS_MASTER_PROJECT OFF)
|
||||||
|
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||||
|
set(SLS_MASTER_PROJECT ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option (SLS_USE_HDF5 "HDF5 File format" OFF)
|
||||||
|
option (SLS_USE_TEXTCLIENT "Text Client" ON)
|
||||||
|
option (SLS_USE_RECEIVER "Receiver" ON)
|
||||||
|
option (SLS_USE_GUI "GUI" OFF)
|
||||||
|
option (SLS_USE_TESTS "TESTS" OFF)
|
||||||
|
option (SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF)
|
||||||
|
option(SLS_USE_SANITIZER "Sanitizers for debugging" OFF)
|
||||||
|
option(SLS_USE_PYTHON "Python bindings" OFF)
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
|
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
|
message(STATUS "No build type selected, default to Release")
|
||||||
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
#Add two fake libraries to manage options
|
||||||
|
add_library(slsProjectOptions INTERFACE)
|
||||||
|
add_library(slsProjectWarnings INTERFACE)
|
||||||
|
target_compile_features(slsProjectOptions INTERFACE cxx_std_11)
|
||||||
|
target_compile_options(slsProjectWarnings INTERFACE
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wno-unused-parameter #Needs to be slowly mitigated
|
||||||
|
# -Wold-style-cast
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wformat=2
|
||||||
|
-Wredundant-decls
|
||||||
|
# -Wconversion
|
||||||
|
-Wdouble-promotion
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
#Testing for minimum version for compilers
|
||||||
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.2)
|
||||||
|
message(FATAL_ERROR "Clang version must be at least 3.2!")
|
||||||
|
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)
|
||||||
|
target_compile_options(slsProjectWarnings INTERFACE
|
||||||
|
-Wno-missing-field-initializers)
|
||||||
|
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(SLS_USE_SANITIZER)
|
||||||
|
target_compile_options(slsProjectOptions INTERFACE -fsanitize=address,undefined)
|
||||||
|
target_link_libraries(slsProjectOptions INTERFACE -fsanitize=address,undefined)
|
||||||
|
# target_compile_options(slsProjectOptions INTERFACE -fsanitize=thread)
|
||||||
|
# target_link_libraries(slsProjectOptions INTERFACE -fsanitize=thread)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# Install fake the libraries
|
||||||
|
install(TARGETS slsProjectOptions slsProjectWarnings
|
||||||
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
)
|
||||||
|
|
||||||
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 TRUE)
|
||||||
|
|
||||||
|
find_package(Doxygen)
|
||||||
|
find_package(ZeroMQ 4 REQUIRED)
|
||||||
|
|
||||||
if (USE_TEXTCLIENT)
|
if (SLS_USE_TESTS)
|
||||||
add_subdirectory(slsDetectorSoftware)
|
enable_testing()
|
||||||
endif (USE_TEXTCLIENT)
|
add_subdirectory(tests)
|
||||||
|
endif(SLS_USE_TESTS)
|
||||||
|
|
||||||
if (USE_RECEIVER)
|
# Common functionallity to detector and receiver
|
||||||
add_subdirectory(slsReceiverSoftware)
|
add_subdirectory(slsSupportLib)
|
||||||
endif (USE_RECEIVER)
|
|
||||||
|
|
||||||
if (USE_GUI)
|
|
||||||
if (QT4_FOUND AND QWT_FOUND)
|
|
||||||
add_subdirectory(slsDetectorGui)
|
|
||||||
endif()
|
|
||||||
endif (USE_GUI)
|
|
||||||
|
|
||||||
|
if (SLS_USE_TEXTCLIENT)
|
||||||
|
add_subdirectory(slsDetectorSoftware)
|
||||||
|
endif (SLS_USE_TEXTCLIENT)
|
||||||
|
|
||||||
if (CALIBRATE)
|
if (SLS_USE_RECEIVER)
|
||||||
if (DEFINED ENV{ROOTSYS})
|
if (SLS_USE_HDF5)
|
||||||
find_package(ROOT)
|
find_package(HDF5 1.10 COMPONENTS CXX REQUIRED)
|
||||||
if (ROOT_FOUND)
|
endif (SLS_USE_HDF5)
|
||||||
add_subdirectory(calibrationWizards)
|
add_subdirectory(slsReceiverSoftware)
|
||||||
endif()
|
add_subdirectory(manual/manual-api)
|
||||||
|
endif (SLS_USE_RECEIVER)
|
||||||
|
|
||||||
|
if (SLS_USE_GUI)
|
||||||
|
find_package(Qt4 REQUIRED)
|
||||||
|
find_package(Qwt 6 REQUIRED)
|
||||||
|
if (QT4_FOUND AND QWT_FOUND)
|
||||||
|
add_subdirectory(slsDetectorGui)
|
||||||
endif()
|
endif()
|
||||||
endif(CALIBRATE)
|
endif (SLS_USE_GUI)
|
||||||
|
|
||||||
|
if (SLS_USE_INTEGRATION_TESTS)
|
||||||
|
add_subdirectory(integrationTests)
|
||||||
|
endif (SLS_USE_INTEGRATION_TESTS)
|
||||||
|
|
||||||
|
if (SLS_USE_PYTHON)
|
||||||
|
add_subdirectory(python)
|
||||||
|
endif(SLS_USE_PYTHON)
|
||||||
|
|
||||||
|
configure_file( .clang-tidy
|
||||||
|
${CMAKE_BINARY_DIR}/.clang-tidy
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if (DOXYGEN_FOUND)
|
||||||
|
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile.in)
|
||||||
|
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
|
||||||
|
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
|
||||||
|
|
||||||
|
# note the option ALL which allows to build the docs together with the application
|
||||||
|
add_custom_target( docs
|
||||||
|
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
COMMENT "Generating API documentation with Doxygen"
|
||||||
|
VERBATIM )
|
||||||
|
else (DOXYGEN_FOUND)
|
||||||
|
message("Doxygen need to be installed to generate the doxygen documentation")
|
||||||
|
endif (DOXYGEN_FOUND)
|
||||||
|
|
||||||
|
|
||||||
|
if(SLS_MASTER_PROJECT)
|
||||||
|
# Set install dir CMake packages
|
||||||
|
set(CMAKE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/cmake/sls)
|
||||||
|
# Set the list of exported targets
|
||||||
|
set(PROJECT_LIBRARIES slsSupportLib slsDetectorShared slsReceiverShared)
|
||||||
|
# Generate and install package config file and version
|
||||||
|
include(cmake/package_config.cmake)
|
||||||
|
endif()
|
||||||
|
232
Makefile
@ -1,232 +0,0 @@
|
|||||||
# do not change below this line#
|
|
||||||
|
|
||||||
# Include common definitions
|
|
||||||
include Makefile.include
|
|
||||||
|
|
||||||
INSTALLROOT ?= $(PWD)
|
|
||||||
BINDIR ?= $(INSTALLROOT)/bin
|
|
||||||
DOCDIR ?= $(INSTALLROOT)/manual/docs
|
|
||||||
LIBDIR ?= $(INSTALLROOT)/bin
|
|
||||||
INCDIR ?= $(INSTALLROOT)/include
|
|
||||||
DETAILDOC ?= $(INSTALLROOT)/docs
|
|
||||||
|
|
||||||
WD = $(shell pwd)
|
|
||||||
LIBRARYDIR = $(WD)/slsDetectorSoftware
|
|
||||||
LIBRARYRXRDIR = $(WD)/slsReceiverSoftware
|
|
||||||
CLIENTDIR = $(LIBRARYDIR)/slsDetectorClient
|
|
||||||
GUIDIR = $(WD)/slsDetectorGui
|
|
||||||
RECEIVERDIR = $(LIBRARYRXRDIR)
|
|
||||||
CALWIZDIR = $(WD)/calibrationWizards
|
|
||||||
MANDIR = $(WD)/manual
|
|
||||||
CALIBDIR = $(WD)/slsDetectorCalibration
|
|
||||||
|
|
||||||
TABSPACE := "\t"
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDES=-I. -I$(LIBRARYDIR)/commonFiles -I$(LIBRARYDIR)/slsDetector -I$(LIBRARYDIR)/usersFunctions -I$(LIBRARYDIR)/multiSlsDetector -I$(LIBRARYDIR)/slsDetectorUtils -I$(LIBRARYDIR)/slsDetectorCommand -I$(LIBRARYDIR)/slsDetectorAnalysis -I$(LIBRARYDIR)/slsReceiverInterface -I$(LIBRARYRXRDIR)/include -I$(LIBRARYDIR)/threadFiles -I$(ASM)
|
|
||||||
|
|
||||||
INCLUDESRXR += -I. -I$(LIBRARYRXRDIR)/include -I$(CALIBDIR) -I$(ASM)
|
|
||||||
#LIBFLAGRXR +=
|
|
||||||
|
|
||||||
$(info )
|
|
||||||
$(info #######################################)
|
|
||||||
$(info # In slsDetectorsPackage Makefile #)
|
|
||||||
$(info #######################################)
|
|
||||||
$(info )
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: all nonstatic static lib libreceiver textclient receiver gui stextclient sreceiver
|
|
||||||
|
|
||||||
#all: lib textclient receiver gui
|
|
||||||
all: textclient receiver gui
|
|
||||||
|
|
||||||
nonstatic: lib libreceiver textclient receiver gui
|
|
||||||
|
|
||||||
static: lib libreceiver stextclient sreceiver gui
|
|
||||||
|
|
||||||
|
|
||||||
lib:
|
|
||||||
cd $(LIBRARYDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
|
|
||||||
|
|
||||||
libreceiver:
|
|
||||||
cd $(LIBRARYRXRDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
|
||||||
|
|
||||||
|
|
||||||
stextclient: slsDetectorClient_static
|
|
||||||
|
|
||||||
slsDetectorClient: textclient
|
|
||||||
|
|
||||||
slsDetectorClient_static: #lib
|
|
||||||
cd $(CLIENTDIR) && $(MAKE) static_clients FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
|
|
||||||
@echo ""
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo "# Back in slsDetectorPackage Makefile #"
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo ""
|
|
||||||
|
|
||||||
textclient: #lib
|
|
||||||
cd $(CLIENTDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
|
|
||||||
@echo ""
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo "# Back in slsDetectorPackage Makefile #"
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo ""
|
|
||||||
|
|
||||||
slsReceiver: receiver
|
|
||||||
|
|
||||||
slsReceiver_static: receiver
|
|
||||||
|
|
||||||
receiver: #libreceiver
|
|
||||||
# cd $(RECEIVERDIR) && $(MAKE) receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
|
||||||
cd $(RECEIVERDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
|
||||||
@echo ""
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo "# Back in slsDetectorPackage Makefile #"
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo ""
|
|
||||||
|
|
||||||
sreceiver: #libreceiver
|
|
||||||
cd $(RECEIVERDIR) && $(MAKE) static_receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
|
|
||||||
@echo ""
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo "# Back in slsDetectorPackage Makefile #"
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo ""
|
|
||||||
|
|
||||||
slsDetectorGUI: #lib
|
|
||||||
cd $(GUIDIR) && $(MAKE) DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' INCLUDES='$(INCLUDES)' LDFLAGDET='$(LDFLAGDETONLY)' LIBDIR='$(LIBDIR)'
|
|
||||||
@echo ""
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo "# Back in slsDetectorPackage Makefile #"
|
|
||||||
@echo "#######################################"
|
|
||||||
@echo ""
|
|
||||||
|
|
||||||
calWiz:
|
|
||||||
cd $(CALWIZDIR) && $(MAKE) DESTDIR=$(BINDIR) #FLAGS=$(FLAGS) LDFLAGDET=$(LDFLAGDET) INCLUDES=$(INCLUDES)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gui: slsDetectorGUI
|
|
||||||
|
|
||||||
|
|
||||||
doc:
|
|
||||||
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
|
|
||||||
cd manual && make all DESTDIR=$(DOCDIR)
|
|
||||||
|
|
||||||
htmldoc:
|
|
||||||
make doc
|
|
||||||
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
|
|
||||||
cd manual && make html DESTDIR=$(DOCDIR)
|
|
||||||
|
|
||||||
detaildoc: createdocs docspdf docshtml removedocs
|
|
||||||
|
|
||||||
createdocs: $(LIBRARYDIR)/doxy.config
|
|
||||||
doxygen $(LIBRARYDIR)/doxy.config
|
|
||||||
|
|
||||||
docspdf:
|
|
||||||
cd slsDetectorPackageDocs/latex && make
|
|
||||||
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
|
|
||||||
$(shell test -d $(DETAILDOC)/pdf || mkdir -p $(DETAILDOC)/pdf)
|
|
||||||
mv slsDetectorPackageDocs/latex/refman.pdf $(DETAILDOC)/pdf/slsDetectorPackageDocs.pdf
|
|
||||||
|
|
||||||
docshtml:
|
|
||||||
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
|
|
||||||
$(shell test -d $(DETAILDOC)/html || mkdir -p $(DETAILDOC)/html)
|
|
||||||
$(shell test -d $(DETAILDOC)/html/slsDetectorPackageDocs && rm -r $(DETAILDOC)/html/slsDetectorPackageDocs)
|
|
||||||
mv slsDetectorPackageDocs/html $(DETAILDOC)/html/slsDetectorPackageDocs
|
|
||||||
|
|
||||||
removedocs:
|
|
||||||
rm -rf slsDetectorPackageDocs;
|
|
||||||
|
|
||||||
|
|
||||||
clean:
|
|
||||||
cd $(BINDIR) && rm -rf sls_detector_* slsDetectorGui slsReceiver angularCalibrationWizard energyCalibrationWizard
|
|
||||||
cd $(LIBDIR) && rm -rf libSlsDetector.so libSlsDetector.a libSlsReceiver.so libSlsReceiver.a
|
|
||||||
cd $(LIBRARYDIR) && $(MAKE) clean
|
|
||||||
cd $(LIBRARYRXRDIR) && $(MAKE) clean
|
|
||||||
cd $(CLIENTDIR) && $(MAKE) clean
|
|
||||||
cd $(GUIDIR) && $(MAKE) clean
|
|
||||||
cd $(CALWIZDIR) && $(MAKE) clean
|
|
||||||
cd manual && $(MAKE) clean
|
|
||||||
cd $(DOCDIR) && rm -rf *
|
|
||||||
rm -rf slsDetectorPackageDocs;
|
|
||||||
rm -rf $(DETAILDOC)
|
|
||||||
|
|
||||||
|
|
||||||
#install_lib:
|
|
||||||
# cd $(LIBRARYDIR) && $(MAKE) install DESTDIR=$(LIBDIR) INCLUDES=$(INCLUDES)
|
|
||||||
# cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR)
|
|
||||||
|
|
||||||
mythen_virtual:
|
|
||||||
cd $(LIBRARYDIR) && $(MAKE) mythenVirtualServer DESTDIR=$(BINDIR)
|
|
||||||
|
|
||||||
|
|
||||||
gotthard_virtual:
|
|
||||||
cd $(LIBRARYDIR) && $(MAKE) gotthardVirtualServer DESTDIR=$(BINDIR)
|
|
||||||
|
|
||||||
|
|
||||||
install_client: textclient slsReceiver
|
|
||||||
|
|
||||||
install_gui: gui
|
|
||||||
|
|
||||||
confinstall:
|
|
||||||
make conf;\
|
|
||||||
make install
|
|
||||||
|
|
||||||
install_lib:
|
|
||||||
make lib;\
|
|
||||||
make libreceiver; \
|
|
||||||
make textclient; \
|
|
||||||
make slsReceiver; \
|
|
||||||
make doc; \
|
|
||||||
make htmldoc; \
|
|
||||||
cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR); \
|
|
||||||
cd $(LIBRARYRXRDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);
|
|
||||||
|
|
||||||
install:
|
|
||||||
make install_lib; \
|
|
||||||
make gui; \
|
|
||||||
make calWiz; \
|
|
||||||
cd $(LIBRARYDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);\
|
|
||||||
cd $(LIBRARYRXRDIR) && $(MAKE) install_inc DESTDIR=$(INCDIR);
|
|
||||||
|
|
||||||
conf:
|
|
||||||
set -e; \
|
|
||||||
. ./configure; \
|
|
||||||
@echo "INSTALLROOT is $(INSTALLROOT)"
|
|
||||||
@echo "BINDIR is $(BINDIR)"
|
|
||||||
@echo "LIBDIR is $(LIBDIR)"
|
|
||||||
@echo "INCDIR is $(INCDIR)"
|
|
||||||
@echo "DOCDIR is $(DOCDIR)"
|
|
||||||
|
|
||||||
|
|
||||||
help:
|
|
||||||
@echo "Targets:"
|
|
||||||
@echo "make all compile library, text clients, data reciever"
|
|
||||||
@echo "make lib compile library"
|
|
||||||
@echo "make libreceiver compile receiver library"
|
|
||||||
@echo "make textclient compile the slsDetectorClient dynamically linking the libraries"
|
|
||||||
@echo "make stextclient compile slsDetectorClient statically linking the libraries"
|
|
||||||
@echo "make receiver compile the slsReciever dynamically linking the libraries"
|
|
||||||
@echo "make sreceiver compile the slsReciever statically linking the libraries"
|
|
||||||
@echo "make gui compile slsDetectorGUI - requires a working Qt4 and Qwt installation"
|
|
||||||
@echo "make calWiz compile the calibration wizards - requires a working Root installation"
|
|
||||||
@echo "make doc compile pdf documentation"
|
|
||||||
@echo "make htmldoc compile html (and pdf) documentation"
|
|
||||||
@echo "make install_lib installs the libraries, the text clients, the documentation and the includes for the API"
|
|
||||||
@echo "make install installs all software, including the gui, the cal wizards and the includes for the API"
|
|
||||||
@echo "make confinstall installs all software, including the gui, the cal wizards and the includes for the API, prompting for the install paths"
|
|
||||||
@echo "make clean remove object files and executables"
|
|
||||||
@echo "make help lists possible targets"
|
|
||||||
@echo ""
|
|
||||||
@echo ""
|
|
||||||
@echo "Makefile variables"
|
|
||||||
@echo "DEBUG=1,2 set debug level to 1 (VERBOSE) or 2 (VERYVERBOSE)"
|
|
||||||
@echo ""
|
|
||||||
@echo ""
|
|
||||||
@echo "Variables - to change them run <source configure> :"
|
|
||||||
@echo "INSTALLROOT=<yourdir>: installation root di r, default $PWD"
|
|
||||||
@echo "BINDIR=<yourbin>: binary installation dir below INSTALLROOT, default bin"
|
|
||||||
@echo "LIBDIR=<yourlib>: library installation dir below INSTALLROOT, default lib"
|
|
||||||
@echo "INCDIR=<yourincludes>: header installation dir below INSTALLROOT, default include"
|
|
||||||
@echo "DOCDIR=<yourdoc>: documentation installation dir below INSTALLROOT, default doc"
|
|
@ -1,58 +0,0 @@
|
|||||||
##############################################################
|
|
||||||
# Generic
|
|
||||||
##############################################################
|
|
||||||
|
|
||||||
CC = g++
|
|
||||||
CXX = $(CC)
|
|
||||||
ASM=$(shell echo "/lib/modules/`uname -r`/build/include")
|
|
||||||
LDFLAGDETONLY = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector
|
|
||||||
LDFLAGDET = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread
|
|
||||||
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread
|
|
||||||
FLAGS= -Wall -pthread #-DEIGER_DEBUG2
|
|
||||||
# -DVERBOSE
|
|
||||||
|
|
||||||
# Setting up the verbose flags
|
|
||||||
ifeq ($(DEBUG),1)
|
|
||||||
FLAGS = -Wall -DVERBOSE
|
|
||||||
endif
|
|
||||||
ifeq ($(DEBUG),2)
|
|
||||||
FLAGS = -Wall -DVERYVERBOSE
|
|
||||||
endif
|
|
||||||
|
|
||||||
##############################################################
|
|
||||||
# HDF5 specific. Set this to yes, if you want to compile
|
|
||||||
# HDF5 code: in this case, you need HDF5 libraries
|
|
||||||
##############################################################
|
|
||||||
|
|
||||||
HDF5 = no
|
|
||||||
HDF5_DIR = /opt/hdf5v1.10.0
|
|
||||||
|
|
||||||
ifeq ($(HDF5),yes)
|
|
||||||
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L$(HDF5_DIR)/lib -Wl,-rpath=$(HDF5_DIR)/lib -lhdf5 -lhdf5_cpp -lsz -lz -DHDF5C -L/usr/lib64/ -pthread
|
|
||||||
INCLUDESRXR = -I$(HDF5_DIR)/include
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
##############################################################
|
|
||||||
# ROOTSLS specific. Set this to yes, if you want to compile
|
|
||||||
# ROOTSLS code: in this case, you need also root libraries
|
|
||||||
##############################################################
|
|
||||||
|
|
||||||
ROOTSLS = no
|
|
||||||
|
|
||||||
ROOTFLAGS = $(shell root-config --cflags --glibs) -DMYROOT1 #-DALLFILE_DEBUG #-DMYROOT1
|
|
||||||
|
|
||||||
ifeq ($(ROOTSLS),yes)
|
|
||||||
LDFLAGRXR = -L$(LIBDIR) -lSlsReceiver $(ROOTFLAGS) -DROOTSLS
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
define colorecho
|
|
||||||
@tput setaf 6
|
|
||||||
@echo $1
|
|
||||||
@tput sgr0
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
19
README.md
Normal file → Executable file
@ -1,10 +1,13 @@
|
|||||||
|
### Documentation
|
||||||
|
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support)
|
||||||
|
|
||||||
### Binaries
|
### Binaries
|
||||||
Documentation to obtain the binaries via the conda package is available [here.](https://github.com/slsdetectorgroup/sls_detector_software)
|
Documentation to obtain the binaries via the conda package is available for [lib](https://github.com/slsdetectorgroup/sls_detector_lib) and [gui](https://github.com/slsdetectorgroup/sls_detector_gui)
|
||||||
|
|
||||||
### Source code
|
### Source code
|
||||||
One can also obtain the source code from this repository and compile while realizing the setup dependencies as required.
|
One can also obtain the source code from this repository and compile while realizing the setup dependencies as required.
|
||||||
```
|
```
|
||||||
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch 3.0.1
|
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
||||||
|
|
||||||
```
|
```
|
||||||
#### Setup dependencies
|
#### Setup dependencies
|
||||||
@ -16,7 +19,7 @@ Requirements: Qt 4.8 and Qwt 6.0
|
|||||||
```
|
```
|
||||||
If either of them does not exist, the GUI client will not be built.
|
If either of them does not exist, the GUI client will not be built.
|
||||||
|
|
||||||
* Calibration wizards<br>
|
* Advanced user Calibration wizards<br>
|
||||||
Requirements: ROOT
|
Requirements: ROOT
|
||||||
```
|
```
|
||||||
export ROOTSYS=/usr/local/root-5.34
|
export ROOTSYS=/usr/local/root-5.34
|
||||||
@ -40,6 +43,10 @@ Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]<br>
|
|||||||
* -r: Build/Rebuilds only receiver<br>
|
* -r: Build/Rebuilds only receiver<br>
|
||||||
* -g: Build/Rebuilds only gui<br>
|
* -g: Build/Rebuilds only gui<br>
|
||||||
* -j: Number of threads to compile through<br>
|
* -j: Number of threads to compile through<br>
|
||||||
|
* -e: Debug mode
|
||||||
|
|
||||||
|
Basic Option:
|
||||||
|
./cmk.sh -b
|
||||||
|
|
||||||
For only make:
|
For only make:
|
||||||
./cmk.sh
|
./cmk.sh
|
||||||
@ -68,17 +75,17 @@ Use cmake to create out-of-source builds, by creating a build folder parallel to
|
|||||||
$ cd ..
|
$ cd ..
|
||||||
$ mkdir slsDetectorPackage-build
|
$ mkdir slsDetectorPackage-build
|
||||||
$ cd slsDetectorPackage-build
|
$ cd slsDetectorPackage-build
|
||||||
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=OFF
|
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_HDF5=OFF
|
||||||
$ make
|
$ make
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the following as an example to compile statically and using specific hdf5 folder
|
Use the following as an example to compile statically and using specific hdf5 folder
|
||||||
```
|
```
|
||||||
$ HDF5_ROOT=/opt/hdf5v1.10.0 cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=ON
|
$ HDF5_ROOT=/opt/hdf5v1.10.0 cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_HDF5=ON
|
||||||
```
|
```
|
||||||
After compiling, the libraries and executables will be found at `bin` directory
|
After compiling, the libraries and executables will be found at `bin` directory
|
||||||
```
|
```
|
||||||
$ ls bin/
|
$ ls bin/
|
||||||
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a libSlsReceiver.so
|
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a libSlsReceiver.so
|
||||||
sls_detector_acquire sls_detector_get slsDetectorGui sls_detector_help sls_detector_put slsReceiver
|
sls_detector_acquire sls_detector_get slsDetectorGui sls_detector_help sls_detector_put slsReceiver slsMultiReceiver
|
||||||
```
|
```
|
||||||
|
350
RELEASE.txt
Normal file → Executable file
@ -1,350 +0,0 @@
|
|||||||
SLS Detector Package 3.0.1 released on 2018-02-12
|
|
||||||
=================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INTRODUCTION
|
|
||||||
|
|
||||||
This document describes the differences between 3.0.0 and 3.0.1 release.
|
|
||||||
|
|
||||||
The conda package of the binaries can be downloaded from
|
|
||||||
|
|
||||||
https://github.com/erikfrojdh/sls_detector_software.git
|
|
||||||
|
|
||||||
The conda package of the python API wrap-around to the software package is at
|
|
||||||
|
|
||||||
https://github.com/slsdetectorgroup/sls_detector.git
|
|
||||||
|
|
||||||
Manual (both HTML and pdf versions) are provided in
|
|
||||||
|
|
||||||
manual/docs/
|
|
||||||
|
|
||||||
Documentation from Source Code can be found for the Command Line and C++ API in
|
|
||||||
|
|
||||||
html:
|
|
||||||
manual/docs/html/slsDetectorClientDocs/index.html
|
|
||||||
manual/docs/html/slsDetectorUsersDocs/index.html
|
|
||||||
pdf:
|
|
||||||
manual/docs/pdf/slsDetectorClientDocs.pdf
|
|
||||||
manual/docs/pdf/slsDetectorUsersDocs.pdf
|
|
||||||
|
|
||||||
Documentation to the python API is available at
|
|
||||||
|
|
||||||
https://slsdetectorgroup.github.io/sls_detector/
|
|
||||||
|
|
||||||
Example including binaries for detector and receiver user classes can be found in
|
|
||||||
|
|
||||||
manual/manual-api
|
|
||||||
|
|
||||||
User documentation can also be accessed directly at this location:
|
|
||||||
|
|
||||||
https://www.psi.ch/detectors/users-support
|
|
||||||
|
|
||||||
If you have any software related questions or comments, please send them to:
|
|
||||||
|
|
||||||
dhanya.thattil@psi.ch
|
|
||||||
anna.bergamaschi@psi.ch
|
|
||||||
|
|
||||||
If you have any python related questions or comments, please send them to:
|
|
||||||
|
|
||||||
erik.frojdh@psi.ch
|
|
||||||
|
|
||||||
|
|
||||||
CONTENTS
|
|
||||||
|
|
||||||
- Firmware Requirements
|
|
||||||
- Changes in User Interface
|
|
||||||
- New Features
|
|
||||||
- Resolved Issues
|
|
||||||
- Known Issues
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Firmware Requirements
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Please refer to the link below for more details on the firmware versions.
|
|
||||||
https://www.psi.ch/detectors/firmware.
|
|
||||||
|
|
||||||
Gotthard
|
|
||||||
========
|
|
||||||
Minimum compatible version : old one
|
|
||||||
Latest version : 08.02.2018 (50um and 25um Master)
|
|
||||||
09.02.2018 (25 um Slave)
|
|
||||||
|
|
||||||
-Can not be upgraded remotely.
|
|
||||||
|
|
||||||
|
|
||||||
Eiger
|
|
||||||
=====
|
|
||||||
Minimum compatible version : 16
|
|
||||||
Latest version : 21
|
|
||||||
|
|
||||||
-Can be upgraded remotely via bit files.
|
|
||||||
|
|
||||||
|
|
||||||
Jungfrau
|
|
||||||
========
|
|
||||||
Minimum compatible version : 13.11.2017
|
|
||||||
Latest version : 13.11.2017
|
|
||||||
|
|
||||||
-Can be upgraded remotely via sls_detector_put programfpga <pof>.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Changes in User Interface
|
|
||||||
=========================
|
|
||||||
|
|
||||||
|
|
||||||
Client
|
|
||||||
------
|
|
||||||
1. Additional functions added for advanced users in users class:
|
|
||||||
(setSpeed, setClockDivider, setReadOutFlags, setDac, getADC,
|
|
||||||
setAllTrimbits, startReceiver, stopReceiver,
|
|
||||||
startAcquisition non blocking, setReceiverSilentMode, setHighVoltage,
|
|
||||||
enableDataStreamingToClient, enableDataStreamingFromReceiver,
|
|
||||||
setReceiverDataStreamingOutPort, setClientDataStreamingInPort)
|
|
||||||
|
|
||||||
2. Zmq set up for client and receiver are separated.
|
|
||||||
zmqport for client and rx_zmqport for receiver. By default, they are the
|
|
||||||
same for the slsDetectorGui to work.
|
|
||||||
|
|
||||||
3. Users example also works without config file, where detector already
|
|
||||||
configured in shared memory.
|
|
||||||
|
|
||||||
4. Use "sls_detector_get busy 0" to clear acquiring flag in shared memory
|
|
||||||
caused due to an earlier interrupted acquisition from Ctrl+C"
|
|
||||||
|
|
||||||
5. Set bit, clear bit, read register and write register cannot give -1 for
|
|
||||||
inconsistent values from multiple detectors. One has to check error from
|
|
||||||
API or read the values individually.
|
|
||||||
|
|
||||||
6. multiSlsDetector::char* getSettingsFile() function signature has been
|
|
||||||
changed to string getSettingsFile().
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Receiver
|
|
||||||
--------
|
|
||||||
7. Modified the help manaual/main-api/mainReceiver.cpp to make it more
|
|
||||||
robust (handling child process exit) and flexible to determine upon
|
|
||||||
start up the number of receivers (child processes), the start TCP port
|
|
||||||
and whether to call back data.
|
|
||||||
|
|
||||||
detReceiver is now executed with [start tcp port] [number of receivers]
|
|
||||||
[1 for call back, 0 for none] as arguments.
|
|
||||||
By default, start tcp port is 1954, number of receivers is 1, and call
|
|
||||||
back is initiated.
|
|
||||||
|
|
||||||
8. rx_datastream to enable/disable data streaming in receiver. Using the GUI
|
|
||||||
or registering data call back in client automatically enables zmq in
|
|
||||||
receiver and client. "externalgui" is removed from the command line. Use
|
|
||||||
this command instead.
|
|
||||||
|
|
||||||
9. Rx_tcpport argument to the slsReceiver can be given using -t.
|
|
||||||
Eg. slsReceiver -t1955
|
|
||||||
|
|
||||||
|
|
||||||
New Features
|
|
||||||
============
|
|
||||||
|
|
||||||
|
|
||||||
Package
|
|
||||||
-------
|
|
||||||
1. In addition to the C++ API, the Python API is also now provided.
|
|
||||||
|
|
||||||
2. CMAKE now with debug flag and rpath, show warnings, compile only certain
|
|
||||||
components (such as receiver or gui)
|
|
||||||
|
|
||||||
3. One repository for entire package and made available at github.
|
|
||||||
|
|
||||||
4. One can do --version or -v to all the binaries to find out the release
|
|
||||||
version of the particular executable.
|
|
||||||
|
|
||||||
5. All the software version numbers have only date in format YYMMDD.
|
|
||||||
|
|
||||||
|
|
||||||
Client
|
|
||||||
------
|
|
||||||
6. Parallelized more commands to detector. Beneficial for large detectors.
|
|
||||||
(setTimer, setFileIndex, setOnline, setReceiverOnline, getReceiverStatus,
|
|
||||||
resetFramesCaught, setFrameIndex, setFileName, getFramesCaughtByReceiver,
|
|
||||||
setDynamicRange, setRateCorrection)
|
|
||||||
|
|
||||||
Option to also use "sls_detector_put threaded 0" to improve speed by
|
|
||||||
eliminating progress display during acquisition. Effective only for
|
|
||||||
large detectors.
|
|
||||||
|
|
||||||
|
|
||||||
Detector Server
|
|
||||||
---------------
|
|
||||||
7. (Eiger) Virtual class to execute on pc.
|
|
||||||
|
|
||||||
8. One can now read temperatures during acquisition. It goes via the stop
|
|
||||||
server.
|
|
||||||
|
|
||||||
9. (Jungfrau) One can start server in "debug" mode and then program the
|
|
||||||
new firmware via software command "sls_detector_put programfpga xx.pof".
|
|
||||||
|
|
||||||
10. (Jungfrau) Server can exit on start up if either the firmware or the
|
|
||||||
server is incompatible with each other.
|
|
||||||
|
|
||||||
11. (Jungfrau) One is able to set transmission delay (ms) of image for each
|
|
||||||
individual detector using "txndelay_frame" command. Beneficial for
|
|
||||||
large detectors.
|
|
||||||
|
|
||||||
12. (Jungfrau) One can set a threshold temperature (temp_threshold) and
|
|
||||||
enable the temperature control feature (temp_control). When the
|
|
||||||
temperature (temp_fpga) overshoots the threshold temperature, it will
|
|
||||||
set the temperature event (temp_event) and power off the chip. One must
|
|
||||||
then switch off the detector and check cooling. Switching back on starts
|
|
||||||
with defaults.
|
|
||||||
|
|
||||||
13. (25um Gotthard) Added start acquisition delay to master module.
|
|
||||||
|
|
||||||
14. (Gotthard) New constraints include minimum exposure time is 186 ns and
|
|
||||||
minimum period is 1278 ns + current exposure time.
|
|
||||||
|
|
||||||
|
|
||||||
Receiver
|
|
||||||
--------
|
|
||||||
14. The detectorip and rx_udpip does not have to be in the same subnet anymore.
|
|
||||||
Add the following commands after rx_hostname in config file to overwrite
|
|
||||||
mac configuration:
|
|
||||||
rx_udpmac [router mac]
|
|
||||||
configuremac 0
|
|
||||||
|
|
||||||
15. Added silent mode to receiver using command r_silent [i] from client.
|
|
||||||
It might be beneficial for max frame rate applications.
|
|
||||||
|
|
||||||
16. Receiver print out can handle black or white backgrounds.
|
|
||||||
|
|
||||||
17. zmq package included updated to v4.0.8.
|
|
||||||
|
|
||||||
18. Zmq streaming from receiver also sends file index in json header.
|
|
||||||
|
|
||||||
|
|
||||||
Gui
|
|
||||||
---
|
|
||||||
18. If acquisition is done, but "stop dummy packet" to the gui was lost in
|
|
||||||
the network, stop acquisition command will restream it so that the gui
|
|
||||||
doesnt hang forever. This is used only for very fast detectors like
|
|
||||||
Moench.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Resolved Issues
|
|
||||||
===============
|
|
||||||
|
|
||||||
|
|
||||||
Client
|
|
||||||
------
|
|
||||||
1. gethostbyname used in connecting to sockets was not thread safe for
|
|
||||||
multiple detectors. Using getaddrinfo for stability in multi threaded
|
|
||||||
environment.
|
|
||||||
|
|
||||||
2. Updated writing content of config and parameter dump into files.
|
|
||||||
|
|
||||||
3. More locking to handle main and processing threads using the threadpool.
|
|
||||||
Removing unlock twice, which is undefined behavior.
|
|
||||||
|
|
||||||
|
|
||||||
Detector Server
|
|
||||||
---------------
|
|
||||||
4. (Eiger) The hardware MAC of the detector is used during configuration
|
|
||||||
and relayed back to client. Similarly, hardware IP for 1 Gbe data mode.
|
|
||||||
|
|
||||||
5. (Eiger) Status will return error if there was the unlikely trouble
|
|
||||||
reading status register in the front end board. Earlier, it would only
|
|
||||||
return idle.
|
|
||||||
|
|
||||||
6. (Jungfrau) patch server v3.0.0.6.3
|
|
||||||
Able to set settings, high voltage now correctly reads 0 when
|
|
||||||
switched off, dacs are properly set.
|
|
||||||
|
|
||||||
7. (Jungfrau) FPGA reset and programming FPGA firmware via software is done
|
|
||||||
properly
|
|
||||||
|
|
||||||
8. (Gotthard) patch server v3.0.0.5.1
|
|
||||||
Able to read temperature properly.
|
|
||||||
|
|
||||||
9. (Gotthard) butst mode if set too fast had unwanted behavior such as
|
|
||||||
sending same image continuously. Now it is handled to display error
|
|
||||||
and stop acquisition.
|
|
||||||
|
|
||||||
10. (Gotthard) completely removed the possibility to set timing modes
|
|
||||||
other than auto and trigger as they are not implemented anyway. Also
|
|
||||||
signal index 1, 2 and 3 are reserved and hence, cannot be configured for
|
|
||||||
an external trigger.
|
|
||||||
|
|
||||||
11. Non Mythen and non Eiger detectors can also now get settings file from
|
|
||||||
board.
|
|
||||||
|
|
||||||
12. (Gotthard) Did not get first few images initially after configuring MAC
|
|
||||||
of detector. Fixed.
|
|
||||||
|
|
||||||
|
|
||||||
Receiver
|
|
||||||
--------
|
|
||||||
12. Made it easier to disable the standard receiver and fixing bugs related
|
|
||||||
to the use of a custom one.
|
|
||||||
|
|
||||||
13. (Jungfrau) HDF5 dimensions (npixelsY) required for mapping fixed.
|
|
||||||
|
|
||||||
14. patch2-v3.0.0-slsReceiverSoftware.patch
|
|
||||||
x, y and z coordinates in the call backs and the files are hardcoded
|
|
||||||
for this release.
|
|
||||||
|
|
||||||
15. Rest implementation (not used by standard receiver) removed.
|
|
||||||
|
|
||||||
|
|
||||||
Gui
|
|
||||||
---
|
|
||||||
16. patch1-v3.0.0-slsDetectorGui.patch
|
|
||||||
(Eiger) In expert mode and in advanced tab, when trimbits
|
|
||||||
loaded are different for every pixel, the gui complains and sets
|
|
||||||
all trimbits to zero. This has been resolved. Now, the "Set All
|
|
||||||
Trimbits" field is just set to -1.
|
|
||||||
|
|
||||||
17. Fixed segmentation fault of xputsn properly.
|
|
||||||
|
|
||||||
18. Upon clicking on "Start", clears acquiring flag in shared memory
|
|
||||||
caused due to an earlier interrupted acquisition from Ctrl+C"
|
|
||||||
|
|
||||||
19. Fixed plotting twice caused due to unzooming the first time.
|
|
||||||
|
|
||||||
20. Removed option for compression in Gui as it is not available currently.
|
|
||||||
|
|
||||||
21. Can also show Jungfrau multi detector in x direction in gui.
|
|
||||||
|
|
||||||
22. Switching tabs sometimes results in delay and gates fields being incorrectly
|
|
||||||
enabled. Fixed.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Known Issues
|
|
||||||
============
|
|
||||||
|
|
||||||
|
|
||||||
Client
|
|
||||||
------
|
|
||||||
1. File name prefix can only be done at multi deector level. Changing at
|
|
||||||
individual detector level will not include scan or position variables.
|
|
||||||
|
|
||||||
|
|
||||||
Detector Server
|
|
||||||
---------------
|
|
||||||
2. Standard header fills x-coord in 1D. y-coord and z-coord is not
|
|
||||||
implemented (3D).
|
|
||||||
|
|
||||||
|
|
||||||
Receiver
|
|
||||||
--------
|
|
||||||
3. HDF5 compression and filters are not implemented yet.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
14934
catch/catch.hpp
Executable file
@ -1 +0,0 @@
|
|||||||
for i in seq `ipcs -m | cut -d ' ' -f1`; do ipcrm -M $i; done;
|
|
175
cmake/Catch.cmake
Executable file
@ -0,0 +1,175 @@
|
|||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
#[=======================================================================[.rst:
|
||||||
|
Catch
|
||||||
|
-----
|
||||||
|
|
||||||
|
This module defines a function to help use the Catch test framework.
|
||||||
|
|
||||||
|
The :command:`catch_discover_tests` discovers tests by asking the compiled test
|
||||||
|
executable to enumerate its tests. This does not require CMake to be re-run
|
||||||
|
when tests change. However, it may not work in a cross-compiling environment,
|
||||||
|
and setting test properties is less convenient.
|
||||||
|
|
||||||
|
This command is intended to replace use of :command:`add_test` to register
|
||||||
|
tests, and will create a separate CTest test for each Catch test case. Note
|
||||||
|
that this is in some cases less efficient, as common set-up and tear-down logic
|
||||||
|
cannot be shared by multiple test cases executing in the same instance.
|
||||||
|
However, it provides more fine-grained pass/fail information to CTest, which is
|
||||||
|
usually considered as more beneficial. By default, the CTest test name is the
|
||||||
|
same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``.
|
||||||
|
|
||||||
|
.. command:: catch_discover_tests
|
||||||
|
|
||||||
|
Automatically add tests with CTest by querying the compiled test executable
|
||||||
|
for available tests::
|
||||||
|
|
||||||
|
catch_discover_tests(target
|
||||||
|
[TEST_SPEC arg1...]
|
||||||
|
[EXTRA_ARGS arg1...]
|
||||||
|
[WORKING_DIRECTORY dir]
|
||||||
|
[TEST_PREFIX prefix]
|
||||||
|
[TEST_SUFFIX suffix]
|
||||||
|
[PROPERTIES name1 value1...]
|
||||||
|
[TEST_LIST var]
|
||||||
|
)
|
||||||
|
|
||||||
|
``catch_discover_tests`` sets up a post-build command on the test executable
|
||||||
|
that generates the list of tests by parsing the output from running the test
|
||||||
|
with the ``--list-test-names-only`` argument. This ensures that the full
|
||||||
|
list of tests is obtained. Since test discovery occurs at build time, it is
|
||||||
|
not necessary to re-run CMake when the list of tests changes.
|
||||||
|
However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
|
||||||
|
in order to function in a cross-compiling environment.
|
||||||
|
|
||||||
|
Additionally, setting properties on tests is somewhat less convenient, since
|
||||||
|
the tests are not available at CMake time. Additional test properties may be
|
||||||
|
assigned to the set of tests as a whole using the ``PROPERTIES`` option. If
|
||||||
|
more fine-grained test control is needed, custom content may be provided
|
||||||
|
through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
|
||||||
|
directory property. The set of discovered tests is made accessible to such a
|
||||||
|
script via the ``<target>_TESTS`` variable.
|
||||||
|
|
||||||
|
The options are:
|
||||||
|
|
||||||
|
``target``
|
||||||
|
Specifies the Catch executable, which must be a known CMake executable
|
||||||
|
target. CMake will substitute the location of the built executable when
|
||||||
|
running the test.
|
||||||
|
|
||||||
|
``TEST_SPEC arg1...``
|
||||||
|
Specifies test cases, wildcarded test cases, tags and tag expressions to
|
||||||
|
pass to the Catch executable with the ``--list-test-names-only`` argument.
|
||||||
|
|
||||||
|
``EXTRA_ARGS arg1...``
|
||||||
|
Any extra arguments to pass on the command line to each test case.
|
||||||
|
|
||||||
|
``WORKING_DIRECTORY dir``
|
||||||
|
Specifies the directory in which to run the discovered test cases. If this
|
||||||
|
option is not provided, the current binary directory is used.
|
||||||
|
|
||||||
|
``TEST_PREFIX prefix``
|
||||||
|
Specifies a ``prefix`` to be prepended to the name of each discovered test
|
||||||
|
case. This can be useful when the same test executable is being used in
|
||||||
|
multiple calls to ``catch_discover_tests()`` but with different
|
||||||
|
``TEST_SPEC`` or ``EXTRA_ARGS``.
|
||||||
|
|
||||||
|
``TEST_SUFFIX suffix``
|
||||||
|
Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
|
||||||
|
every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
|
||||||
|
be specified.
|
||||||
|
|
||||||
|
``PROPERTIES name1 value1...``
|
||||||
|
Specifies additional properties to be set on all tests discovered by this
|
||||||
|
invocation of ``catch_discover_tests``.
|
||||||
|
|
||||||
|
``TEST_LIST var``
|
||||||
|
Make the list of tests available in the variable ``var``, rather than the
|
||||||
|
default ``<target>_TESTS``. This can be useful when the same test
|
||||||
|
executable is being used in multiple calls to ``catch_discover_tests()``.
|
||||||
|
Note that this variable is only available in CTest.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
function(catch_discover_tests TARGET)
|
||||||
|
cmake_parse_arguments(
|
||||||
|
""
|
||||||
|
""
|
||||||
|
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST"
|
||||||
|
"TEST_SPEC;EXTRA_ARGS;PROPERTIES"
|
||||||
|
${ARGN}
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT _WORKING_DIRECTORY)
|
||||||
|
set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
|
endif()
|
||||||
|
if(NOT _TEST_LIST)
|
||||||
|
set(_TEST_LIST ${TARGET}_TESTS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
## Generate a unique name based on the extra arguments
|
||||||
|
string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS}")
|
||||||
|
string(SUBSTRING ${args_hash} 0 7 args_hash)
|
||||||
|
|
||||||
|
# Define rule to generate test list for aforementioned test executable
|
||||||
|
set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include-${args_hash}.cmake")
|
||||||
|
set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_tests-${args_hash}.cmake")
|
||||||
|
get_property(crosscompiling_emulator
|
||||||
|
TARGET ${TARGET}
|
||||||
|
PROPERTY CROSSCOMPILING_EMULATOR
|
||||||
|
)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${TARGET} POST_BUILD
|
||||||
|
BYPRODUCTS "${ctest_tests_file}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
|
-D "TEST_TARGET=${TARGET}"
|
||||||
|
-D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>"
|
||||||
|
-D "TEST_EXECUTOR=${crosscompiling_emulator}"
|
||||||
|
-D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
|
||||||
|
-D "TEST_SPEC=${_TEST_SPEC}"
|
||||||
|
-D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
|
||||||
|
-D "TEST_PROPERTIES=${_PROPERTIES}"
|
||||||
|
-D "TEST_PREFIX=${_TEST_PREFIX}"
|
||||||
|
-D "TEST_SUFFIX=${_TEST_SUFFIX}"
|
||||||
|
-D "TEST_LIST=${_TEST_LIST}"
|
||||||
|
-D "CTEST_FILE=${ctest_tests_file}"
|
||||||
|
-P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
|
||||||
|
file(WRITE "${ctest_include_file}"
|
||||||
|
"if(EXISTS \"${ctest_tests_file}\")\n"
|
||||||
|
" include(\"${ctest_tests_file}\")\n"
|
||||||
|
"else()\n"
|
||||||
|
" add_test(${TARGET}_NOT_BUILT-${args_hash} ${TARGET}_NOT_BUILT-${args_hash})\n"
|
||||||
|
"endif()\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0")
|
||||||
|
# Add discovered tests to directory TEST_INCLUDE_FILES
|
||||||
|
set_property(DIRECTORY
|
||||||
|
APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_file}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
# Add discovered tests as directory TEST_INCLUDE_FILE if possible
|
||||||
|
get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET)
|
||||||
|
if (NOT ${test_include_file_set})
|
||||||
|
set_property(DIRECTORY
|
||||||
|
PROPERTY TEST_INCLUDE_FILE "${ctest_include_file}"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"Cannot set more than one TEST_INCLUDE_FILE"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
set(_CATCH_DISCOVER_TESTS_SCRIPT
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake
|
||||||
|
)
|
78
cmake/CatchAddTests.cmake
Executable file
@ -0,0 +1,78 @@
|
|||||||
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||||
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||||
|
|
||||||
|
set(prefix "${TEST_PREFIX}")
|
||||||
|
set(suffix "${TEST_SUFFIX}")
|
||||||
|
set(spec ${TEST_SPEC})
|
||||||
|
set(extra_args ${TEST_EXTRA_ARGS})
|
||||||
|
set(properties ${TEST_PROPERTIES})
|
||||||
|
set(script)
|
||||||
|
set(suite)
|
||||||
|
set(tests)
|
||||||
|
|
||||||
|
function(add_command NAME)
|
||||||
|
set(_args "")
|
||||||
|
foreach(_arg ${ARGN})
|
||||||
|
if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
|
||||||
|
set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument
|
||||||
|
else()
|
||||||
|
set(_args "${_args} ${_arg}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Run test executable to get list of available tests
|
||||||
|
if(NOT EXISTS "${TEST_EXECUTABLE}")
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"Specified test executable '${TEST_EXECUTABLE}' does not exist"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-test-names-only
|
||||||
|
OUTPUT_VARIABLE output
|
||||||
|
RESULT_VARIABLE result
|
||||||
|
)
|
||||||
|
# Catch --list-test-names-only reports the number of tests, so 0 is... surprising
|
||||||
|
if(${result} EQUAL 0)
|
||||||
|
message(WARNING
|
||||||
|
"Test executable '${TEST_EXECUTABLE}' contains no tests!\n"
|
||||||
|
)
|
||||||
|
elseif(${result} LESS 0)
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"Error running test executable '${TEST_EXECUTABLE}':\n"
|
||||||
|
" Result: ${result}\n"
|
||||||
|
" Output: ${output}\n"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(REPLACE "\n" ";" output "${output}")
|
||||||
|
|
||||||
|
# Parse output
|
||||||
|
foreach(line ${output})
|
||||||
|
set(test ${line})
|
||||||
|
# use escape commas to handle properly test cases with commans inside the name
|
||||||
|
string(REPLACE "," "\\," test_name ${test})
|
||||||
|
# ...and add to script
|
||||||
|
add_command(add_test
|
||||||
|
"${prefix}${test}${suffix}"
|
||||||
|
${TEST_EXECUTOR}
|
||||||
|
"${TEST_EXECUTABLE}"
|
||||||
|
"${test_name}"
|
||||||
|
${extra_args}
|
||||||
|
)
|
||||||
|
add_command(set_tests_properties
|
||||||
|
"${prefix}${test}${suffix}"
|
||||||
|
PROPERTIES
|
||||||
|
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
|
||||||
|
${properties}
|
||||||
|
)
|
||||||
|
list(APPEND tests "${prefix}${test}${suffix}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# Create a list of all discovered tests, which users may use to e.g. set
|
||||||
|
# properties on the tests
|
||||||
|
add_command(set ${TEST_LIST} ${tests})
|
||||||
|
|
||||||
|
# Write CTest script
|
||||||
|
file(WRITE "${CTEST_FILE}" "${script}")
|
0
cmake/FindCBF.cmake
Normal file → Executable file
0
cmake/FindQwt.cmake
Normal file → Executable file
0
cmake/FindROOT.cmake
Normal file → Executable file
112
cmake/FindZeroMQ.cmake
Executable file
@ -0,0 +1,112 @@
|
|||||||
|
|
||||||
|
# This file is originally from https://github.com/zeromq/azmq and distributed
|
||||||
|
# under Boost Software Lincese 1.0
|
||||||
|
# Boost Software License - Version 1.0 - August 17th, 2003
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person or organization
|
||||||
|
# obtaining a copy of the software and accompanying documentation covered by
|
||||||
|
# this license (the "Software") to use, reproduce, display, distribute,
|
||||||
|
# execute, and transmit the Software, and to prepare derivative works of the
|
||||||
|
# Software, and to permit third-parties to whom the Software is furnished to
|
||||||
|
# do so, all subject to the following:
|
||||||
|
|
||||||
|
# The copyright notices in the Software and this entire statement, including
|
||||||
|
# the above license grant, this restriction and the following disclaimer,
|
||||||
|
# must be included in all copies of the Software, in whole or in part, and
|
||||||
|
# all derivative works of the Software, unless such copies or derivative
|
||||||
|
# works are solely in the form of machine-executable object code generated by
|
||||||
|
# a source language processor.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||||
|
# SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||||
|
# FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
# DEALINGS IN THE SOFTWARE.
|
||||||
|
# --------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Find ZeroMQ Headers/Libs
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
# ZMQ_ROOT - set this to a location where ZeroMQ may be found
|
||||||
|
#
|
||||||
|
# ZeroMQ_FOUND - True of ZeroMQ found
|
||||||
|
# ZeroMQ_INCLUDE_DIRS - Location of ZeroMQ includes
|
||||||
|
# ZeroMQ_LIBRARIES - ZeroMQ libraries
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
if (NOT ZMQ_ROOT)
|
||||||
|
set(ZMQ_ROOT "$ENV{ZMQ_ROOT}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT ZMQ_ROOT)
|
||||||
|
find_path(_ZeroMQ_ROOT NAMES include/zmq.h)
|
||||||
|
else()
|
||||||
|
set(_ZeroMQ_ROOT "${ZMQ_ROOT}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(ZeroMQ_INCLUDE_DIRS NAMES zmq.h HINTS ${_ZeroMQ_ROOT}/include)
|
||||||
|
|
||||||
|
if (ZeroMQ_INCLUDE_DIRS)
|
||||||
|
set(_ZeroMQ_H ${ZeroMQ_INCLUDE_DIRS}/zmq.h)
|
||||||
|
|
||||||
|
function(_zmqver_EXTRACT _ZeroMQ_VER_COMPONENT _ZeroMQ_VER_OUTPUT)
|
||||||
|
set(CMAKE_MATCH_1 "0")
|
||||||
|
set(_ZeroMQ_expr "^[ \\t]*#define[ \\t]+${_ZeroMQ_VER_COMPONENT}[ \\t]+([0-9]+)$")
|
||||||
|
file(STRINGS "${_ZeroMQ_H}" _ZeroMQ_ver REGEX "${_ZeroMQ_expr}")
|
||||||
|
string(REGEX MATCH "${_ZeroMQ_expr}" ZeroMQ_ver "${_ZeroMQ_ver}")
|
||||||
|
set(${_ZeroMQ_VER_OUTPUT} "${CMAKE_MATCH_1}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
_zmqver_EXTRACT("ZMQ_VERSION_MAJOR" ZeroMQ_VERSION_MAJOR)
|
||||||
|
_zmqver_EXTRACT("ZMQ_VERSION_MINOR" ZeroMQ_VERSION_MINOR)
|
||||||
|
_zmqver_EXTRACT("ZMQ_VERSION_PATCH" ZeroMQ_VERSION_PATCH)
|
||||||
|
|
||||||
|
message(STATUS "ZeroMQ version: ${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}.${ZeroMQ_VERSION_PATCH}")
|
||||||
|
|
||||||
|
# We should provide version to find_package_handle_standard_args in the same format as it was requested,
|
||||||
|
# otherwise it can't check whether version matches exactly.
|
||||||
|
if (ZeroMQ_FIND_VERSION_COUNT GREATER 2)
|
||||||
|
set(ZeroMQ_VERSION "${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}.${ZeroMQ_VERSION_PATCH}")
|
||||||
|
else()
|
||||||
|
# User has requested ZeroMQ version without patch part => user is not interested in specific patch =>
|
||||||
|
# any patch should be an exact match.
|
||||||
|
set(ZeroMQ_VERSION "${ZeroMQ_VERSION_MAJOR}.${ZeroMQ_VERSION_MINOR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT ${CMAKE_CXX_PLATFORM_ID} STREQUAL "Windows")
|
||||||
|
find_library(ZeroMQ_LIBRARIES NAMES zmq HINTS ${_ZeroMQ_ROOT}/lib)
|
||||||
|
else()
|
||||||
|
find_library(
|
||||||
|
ZeroMQ_LIBRARY_RELEASE
|
||||||
|
NAMES
|
||||||
|
libzmq
|
||||||
|
"libzmq-${CMAKE_VS_PLATFORM_TOOLSET}-mt-${ZeroMQ_VERSION_MAJOR}_${ZeroMQ_VERSION_MINOR}_${ZeroMQ_VERSION_PATCH}"
|
||||||
|
HINTS
|
||||||
|
${_ZeroMQ_ROOT}/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
ZeroMQ_LIBRARY_DEBUG
|
||||||
|
NAMES
|
||||||
|
libzmq_d
|
||||||
|
"libzmq-${CMAKE_VS_PLATFORM_TOOLSET}-mt-gd-${ZeroMQ_VERSION_MAJOR}_${ZeroMQ_VERSION_MINOR}_${ZeroMQ_VERSION_PATCH}"
|
||||||
|
HINTS
|
||||||
|
${_ZeroMQ_ROOT}/lib)
|
||||||
|
|
||||||
|
# On Windows we have to use corresponding version (i.e. Release or Debug) of ZeroMQ because of `errno` CRT global variable
|
||||||
|
# See more at http://www.drdobbs.com/avoiding-the-visual-c-runtime-library/184416623
|
||||||
|
set(ZeroMQ_LIBRARIES optimized "${ZeroMQ_LIBRARY_RELEASE}" debug "${ZeroMQ_LIBRARY_DEBUG}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(ZeroMQ FOUND_VAR ZeroMQ_FOUND
|
||||||
|
REQUIRED_VARS ZeroMQ_INCLUDE_DIRS ZeroMQ_LIBRARIES
|
||||||
|
VERSION_VAR ZeroMQ_VERSION)
|
||||||
|
|
||||||
|
if (ZeroMQ_FOUND)
|
||||||
|
mark_as_advanced(ZeroMQ_INCLUDE_DIRS ZeroMQ_LIBRARIES ZeroMQ_VERSION
|
||||||
|
ZeroMQ_VERSION_MAJOR ZeroMQ_VERSION_MINOR ZeroMQ_VERSION_PATCH)
|
||||||
|
endif()
|
203
cmake/ParseAndAddCatchTests.cmake
Executable file
@ -0,0 +1,203 @@
|
|||||||
|
#==================================================================================================#
|
||||||
|
# supported macros #
|
||||||
|
# - TEST_CASE, #
|
||||||
|
# - SCENARIO, #
|
||||||
|
# - TEST_CASE_METHOD, #
|
||||||
|
# - CATCH_TEST_CASE, #
|
||||||
|
# - CATCH_SCENARIO, #
|
||||||
|
# - CATCH_TEST_CASE_METHOD. #
|
||||||
|
# #
|
||||||
|
# Usage #
|
||||||
|
# 1. make sure this module is in the path or add this otherwise: #
|
||||||
|
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
||||||
|
# 2. make sure that you've enabled testing option for the project by the call: #
|
||||||
|
# enable_testing() #
|
||||||
|
# 3. add the lines to the script for testing target (sample CMakeLists.txt): #
|
||||||
|
# project(testing_target) #
|
||||||
|
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
||||||
|
# enable_testing() #
|
||||||
|
# #
|
||||||
|
# find_path(CATCH_INCLUDE_DIR "catch.hpp") #
|
||||||
|
# include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR}) #
|
||||||
|
# #
|
||||||
|
# file(GLOB SOURCE_FILES "*.cpp") #
|
||||||
|
# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #
|
||||||
|
# #
|
||||||
|
# include(ParseAndAddCatchTests) #
|
||||||
|
# ParseAndAddCatchTests(${PROJECT_NAME}) #
|
||||||
|
# #
|
||||||
|
# The following variables affect the behavior of the script: #
|
||||||
|
# #
|
||||||
|
# PARSE_CATCH_TESTS_VERBOSE (Default OFF) #
|
||||||
|
# -- enables debug messages #
|
||||||
|
# PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF) #
|
||||||
|
# -- excludes tests marked with [!hide], [.] or [.foo] tags #
|
||||||
|
# PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON) #
|
||||||
|
# -- adds fixture class name to the test name #
|
||||||
|
# PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON) #
|
||||||
|
# -- adds cmake target name to the test name #
|
||||||
|
# PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF) #
|
||||||
|
# -- causes CMake to rerun when file with tests changes so that new tests will be discovered #
|
||||||
|
# #
|
||||||
|
# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way #
|
||||||
|
# a test should be run. For instance to use test MPI, one can write #
|
||||||
|
# set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC}) #
|
||||||
|
# just before calling this ParseAndAddCatchTests function #
|
||||||
|
# #
|
||||||
|
#==================================================================================================#
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 2.8.8)
|
||||||
|
|
||||||
|
option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF)
|
||||||
|
option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF)
|
||||||
|
option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON)
|
||||||
|
option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON)
|
||||||
|
option(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS "Add test file to CMAKE_CONFIGURE_DEPENDS property" OFF)
|
||||||
|
|
||||||
|
function(PrintDebugMessage)
|
||||||
|
if(PARSE_CATCH_TESTS_VERBOSE)
|
||||||
|
message(STATUS "ParseAndAddCatchTests: ${ARGV}")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# This removes the contents between
|
||||||
|
# - block comments (i.e. /* ... */)
|
||||||
|
# - full line comments (i.e. // ... )
|
||||||
|
# contents have been read into '${CppCode}'.
|
||||||
|
# !keep partial line comments
|
||||||
|
function(RemoveComments CppCode)
|
||||||
|
string(ASCII 2 CMakeBeginBlockComment)
|
||||||
|
string(ASCII 3 CMakeEndBlockComment)
|
||||||
|
string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}")
|
||||||
|
string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}")
|
||||||
|
string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}")
|
||||||
|
string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}")
|
||||||
|
|
||||||
|
set(${CppCode} "${${CppCode}}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Worker function
|
||||||
|
function(ParseFile SourceFile TestTarget)
|
||||||
|
# According to CMake docs EXISTS behavior is well-defined only for full paths.
|
||||||
|
get_filename_component(SourceFile ${SourceFile} ABSOLUTE)
|
||||||
|
if(NOT EXISTS ${SourceFile})
|
||||||
|
message(WARNING "Cannot find source file: ${SourceFile}")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
PrintDebugMessage("parsing ${SourceFile}")
|
||||||
|
file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME)
|
||||||
|
|
||||||
|
# Remove block and fullline comments
|
||||||
|
RemoveComments(Contents)
|
||||||
|
|
||||||
|
# Find definition of test names
|
||||||
|
string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^\)]+\\)+[ \t\n]*{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")
|
||||||
|
|
||||||
|
if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests)
|
||||||
|
PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property")
|
||||||
|
set_property(
|
||||||
|
DIRECTORY
|
||||||
|
APPEND
|
||||||
|
PROPERTY CMAKE_CONFIGURE_DEPENDS ${SourceFile}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
foreach(TestName ${Tests})
|
||||||
|
# Strip newlines
|
||||||
|
string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")
|
||||||
|
|
||||||
|
# Get test type and fixture if applicable
|
||||||
|
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
|
||||||
|
string(REGEX MATCH "(CATCH_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
|
||||||
|
string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}")
|
||||||
|
|
||||||
|
# Get string parts of test definition
|
||||||
|
string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}")
|
||||||
|
|
||||||
|
# Strip wrapping quotation marks
|
||||||
|
string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}")
|
||||||
|
string(REPLACE "\";\"" ";" TestStrings "${TestStrings}")
|
||||||
|
|
||||||
|
# Validate that a test name and tags have been provided
|
||||||
|
list(LENGTH TestStrings TestStringsLength)
|
||||||
|
if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1)
|
||||||
|
message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Assign name and tags
|
||||||
|
list(GET TestStrings 0 Name)
|
||||||
|
if("${TestType}" STREQUAL "SCENARIO")
|
||||||
|
set(Name "Scenario: ${Name}")
|
||||||
|
endif()
|
||||||
|
if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND TestFixture)
|
||||||
|
set(CTestName "${TestFixture}:${Name}")
|
||||||
|
else()
|
||||||
|
set(CTestName "${Name}")
|
||||||
|
endif()
|
||||||
|
if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME)
|
||||||
|
set(CTestName "${TestTarget}:${CTestName}")
|
||||||
|
endif()
|
||||||
|
# add target to labels to enable running all tests added from this target
|
||||||
|
set(Labels ${TestTarget})
|
||||||
|
if(TestStringsLength EQUAL 2)
|
||||||
|
list(GET TestStrings 1 Tags)
|
||||||
|
string(TOLOWER "${Tags}" Tags)
|
||||||
|
# remove target from labels if the test is hidden
|
||||||
|
if("${Tags}" MATCHES ".*\\[!?(hide|\\.)\\].*")
|
||||||
|
list(REMOVE_ITEM Labels ${TestTarget})
|
||||||
|
endif()
|
||||||
|
string(REPLACE "]" ";" Tags "${Tags}")
|
||||||
|
string(REPLACE "[" "" Tags "${Tags}")
|
||||||
|
else()
|
||||||
|
# unset tags variable from previous loop
|
||||||
|
unset(Tags)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND Labels ${Tags})
|
||||||
|
|
||||||
|
list(FIND Labels "!hide" IndexOfHideLabel)
|
||||||
|
set(HiddenTagFound OFF)
|
||||||
|
foreach(label ${Labels})
|
||||||
|
string(REGEX MATCH "^!hide|^\\." result ${label})
|
||||||
|
if(result)
|
||||||
|
set(HiddenTagFound ON)
|
||||||
|
break()
|
||||||
|
endif(result)
|
||||||
|
endforeach(label)
|
||||||
|
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_LESS "3.9")
|
||||||
|
PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label")
|
||||||
|
else()
|
||||||
|
PrintDebugMessage("Adding test \"${CTestName}\"")
|
||||||
|
if(Labels)
|
||||||
|
PrintDebugMessage("Setting labels to ${Labels}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Escape commas in the test spec
|
||||||
|
string(REPLACE "," "\\," Name ${Name})
|
||||||
|
|
||||||
|
# Add the test and set its properties
|
||||||
|
add_test(NAME "\"${CTestName}\"" COMMAND ${OptionalCatchTestLauncher} ${TestTarget} ${Name} ${AdditionalCatchParameters})
|
||||||
|
# Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead
|
||||||
|
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_GREATER "3.8")
|
||||||
|
PrintDebugMessage("Setting DISABLED test property")
|
||||||
|
set_tests_properties("\"${CTestName}\"" PROPERTIES DISABLED ON)
|
||||||
|
else()
|
||||||
|
set_tests_properties("\"${CTestName}\"" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
|
||||||
|
LABELS "${Labels}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# entry point
|
||||||
|
function(ParseAndAddCatchTests TestTarget)
|
||||||
|
PrintDebugMessage("Started parsing ${TestTarget}")
|
||||||
|
get_target_property(SourceFiles ${TestTarget} SOURCES)
|
||||||
|
PrintDebugMessage("Found the following sources: ${SourceFiles}")
|
||||||
|
foreach(SourceFile ${SourceFiles})
|
||||||
|
ParseFile(${SourceFile} ${TestTarget})
|
||||||
|
endforeach()
|
||||||
|
PrintDebugMessage("Finished parsing ${TestTarget}")
|
||||||
|
endfunction()
|
31
cmake/package_config.cmake
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
# This cmake code creates the configuration that is found and used by
|
||||||
|
# find_package() of another cmake project
|
||||||
|
|
||||||
|
# get lower and upper case project name for the configuration files
|
||||||
|
|
||||||
|
# configure and install the configuration files
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
"${CMAKE_SOURCE_DIR}/cmake/project-config.cmake.in"
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config.cmake"
|
||||||
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER}
|
||||||
|
PATH_VARS CMAKE_INSTALL_DIR)
|
||||||
|
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config-version.cmake"
|
||||||
|
VERSION ${PROJECT_VERSION}
|
||||||
|
COMPATIBILITY SameMajorVersion)
|
||||||
|
|
||||||
|
install(FILES
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config.cmake"
|
||||||
|
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config-version.cmake"
|
||||||
|
COMPONENT devel
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER})
|
||||||
|
|
||||||
|
if (PROJECT_LIBRARIES OR PROJECT_STATIC_LIBRARIES)
|
||||||
|
install(
|
||||||
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
|
FILE ${PROJECT_NAME_LOWER}-targets.cmake
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER})
|
||||||
|
endif ()
|
24
cmake/project-config.cmake.in
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
# Config file for @PROJECT_NAME_LOWER@
|
||||||
|
#
|
||||||
|
# It defines the following variables:
|
||||||
|
#
|
||||||
|
# @PROJECT_NAME_UPPER@_INCLUDE_DIRS - include directory
|
||||||
|
# @PROJECT_NAME_UPPER@_LIBRARIES - all dynamic libraries
|
||||||
|
# @PROJECT_NAME_UPPER@_STATIC_LIBRARIES - all static libraries
|
||||||
|
|
||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include(CMakeFindDependencyMacro)
|
||||||
|
|
||||||
|
set(SLS_USE_HDF5 "@SLS_USE_HDF5@")
|
||||||
|
|
||||||
|
# Add optional dependencies here
|
||||||
|
find_dependency(Threads)
|
||||||
|
if (SLS_USE_HDF5)
|
||||||
|
find_dependency(HDF5)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set_and_check(@PROJECT_NAME_UPPER@_CMAKE_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_DIR@")
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
|
||||||
|
check_required_components("@PROJECT_NAME@")
|
14
cmake/project_version.cc.in
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#include "project_version.h"
|
||||||
|
/// project version as major.minor.patch string
|
||||||
|
const char* @PROJECT_NAME@_runtime_project_version(){ return "@PROJECT_VERSION@"; }
|
||||||
|
/// package version as string, possibly with git commit: v1.2.3+4+g56789abc
|
||||||
|
const char* @PROJECT_NAME@_runtime_package_version(){ return "@PACKAGE_VERSION@"; }
|
||||||
|
/// project version as integer: major * 10000 + minor * 100 + patch
|
||||||
|
int @PROJECT_NAME@_runtime_version_int() { return @PROJECT_VERSION_INT@; }
|
||||||
|
/// project version as integer: major
|
||||||
|
int @PROJECT_NAME@_runtime_version_major(){ return @PACKAGE_VERSION_MAJOR@; }
|
||||||
|
/// project version as integer: minor
|
||||||
|
int @PROJECT_NAME@_runtime_version_minor(){ return @PACKAGE_VERSION_MINOR@; }
|
||||||
|
/// project version as integer: patch
|
||||||
|
int @PROJECT_NAME@_runtime_version_patch(){ return @PACKAGE_VERSION_PATCH@; }
|
||||||
|
|
154
cmake/project_version.cmake
Executable file
@ -0,0 +1,154 @@
|
|||||||
|
#
|
||||||
|
# Sets PROJECT_VERSION and PACKAGE_VERSION
|
||||||
|
#
|
||||||
|
|
||||||
|
# Don't set PROJECT_VERSION to empty string when no VERSION is given to project() command.
|
||||||
|
#if(POLICY CMP0048)
|
||||||
|
# cmake_policy(SET CMP0048 OLD)
|
||||||
|
#endif()
|
||||||
|
|
||||||
|
# Split a version number into separate components
|
||||||
|
# version the version number to split
|
||||||
|
# major variable name to store the major version in
|
||||||
|
# minor variable name to store the minor version in
|
||||||
|
# patch variable name to store the patch version in
|
||||||
|
# extra variable name to store a version suffix in
|
||||||
|
function(version_split version major minor patch extra)
|
||||||
|
string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)(.*)?" version_valid ${version})
|
||||||
|
if(version_valid)
|
||||||
|
string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)(.*)?" "\\1;\\2;\\3;\\4" VERSION_MATCHES ${version})
|
||||||
|
list(GET VERSION_MATCHES 0 version_major)
|
||||||
|
set(${major} ${version_major} PARENT_SCOPE)
|
||||||
|
list(GET VERSION_MATCHES 1 version_minor)
|
||||||
|
set(${minor} ${version_minor} PARENT_SCOPE)
|
||||||
|
list(GET VERSION_MATCHES 2 version_patch)
|
||||||
|
set(${patch} ${version_patch} PARENT_SCOPE)
|
||||||
|
list(GET VERSION_MATCHES 3 version_extra)
|
||||||
|
set(${extra} ${version_extra} PARENT_SCOPE)
|
||||||
|
else(version_valid)
|
||||||
|
message(AUTHOR_WARNING "Bad version ${version}; falling back to 0 (have you made an initial release?)")
|
||||||
|
set(${major} "0" PARENT_SCOPE)
|
||||||
|
set(${minor} "0" PARENT_SCOPE)
|
||||||
|
set(${patch} "0" PARENT_SCOPE)
|
||||||
|
set(${extra} "" PARENT_SCOPE)
|
||||||
|
endif(version_valid)
|
||||||
|
endfunction(version_split)
|
||||||
|
|
||||||
|
##############################
|
||||||
|
# get PROJECT_VERSION from git
|
||||||
|
##############################
|
||||||
|
find_program(GIT_CMD git)
|
||||||
|
mark_as_advanced(GIT_CMD)
|
||||||
|
if (GIT_CMD)
|
||||||
|
execute_process(COMMAND ${GIT_CMD} rev-parse --show-toplevel
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_TOPLEVEL
|
||||||
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
endif()
|
||||||
|
if (GIT_CMD AND NOT "${GIT_TOPLEVEL}" STREQUAL "")
|
||||||
|
execute_process(COMMAND ${GIT_CMD} rev-parse --short HEAD
|
||||||
|
WORKING_DIRECTORY ${GIT_TOPLEVEL}
|
||||||
|
OUTPUT_VARIABLE GIT_SHA1
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
#message(STATUS "GIT_SHA1: " ${GIT_SHA1})
|
||||||
|
execute_process(COMMAND ${GIT_CMD} describe --match "*[0-9].[0-9]*" HEAD
|
||||||
|
WORKING_DIRECTORY ${GIT_TOPLEVEL}
|
||||||
|
OUTPUT_VARIABLE GIT_DESCRIBE
|
||||||
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
#message(STATUS "GIT_DESCRIBE: " ${GIT_DESCRIBE})
|
||||||
|
|
||||||
|
# if (GIT_DESCRIBE)
|
||||||
|
# string(REGEX REPLACE "v?([0-9.]+).*" "\\1" GIT_VERSION ${GIT_DESCRIBE})
|
||||||
|
# message(STATUS "GIT_VERSION: " ${GIT_VERSION})
|
||||||
|
|
||||||
|
# # as package version we use the full version from git describe: 1.7.1+7+ge324c81
|
||||||
|
# if (GIT_DESCRIBE MATCHES ".*-g.*")
|
||||||
|
# # convert a git describe string to usable debian version, e.g. v1.7.1-7-ge324c81 to 1.7.1+7+ge324c81
|
||||||
|
# string(REGEX REPLACE "v?([0-9]*.[0-9.]*).*-([0-9]*)-([a-g0-9]*)" "\\1+\\2+\\3" GIT_FULL_VERSION ${GIT_DESCRIBE})
|
||||||
|
# else()
|
||||||
|
# # current HEAD is git tag (i.e. releaase), directly use the version
|
||||||
|
# set(GIT_FULL_VERSION ${GIT_VERSION})
|
||||||
|
# endif()
|
||||||
|
# else ()
|
||||||
|
# # no (suitable) tag found
|
||||||
|
# set(GIT_VERSION "0.0.0")
|
||||||
|
# # get number of commits in repo
|
||||||
|
# execute_process(COMMAND ${GIT_CMD} rev-list --count HEAD
|
||||||
|
# WORKING_DIRECTORY ${GIT_TOPLEVEL}
|
||||||
|
# OUTPUT_VARIABLE GIT_COMMIT_COUNT
|
||||||
|
# OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
# set(GIT_FULL_VERSION 0.0.0+${GIT_COMMIT_COUNT}+g${GIT_SHA1})
|
||||||
|
# endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# get version from package.xml if it exists
|
||||||
|
if (EXISTS "${PROJECT_SOURCE_DIR}/package.xml")
|
||||||
|
file(STRINGS "${PROJECT_SOURCE_DIR}/package.xml" PACKAGE_XML_VERSION_LINE REGEX <version>[0-9.]*</version>)
|
||||||
|
string(REGEX REPLACE .*<version>\([0-9.]*\)</version>.* \\1 PACKAGE_XML_VERSION "${PACKAGE_XML_VERSION_LINE}")
|
||||||
|
MESSAGE(STATUS "PACKAGE_XML_VERSION: " ${PACKAGE_XML_VERSION})
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# set version (if not already manually specified)
|
||||||
|
# check versions from different sources and set actually used version
|
||||||
|
if (NOT PROJECT_VERSION)
|
||||||
|
# set PROJECT_VERSION to MAJOR.MINOR.PATCH
|
||||||
|
# PACKAGE_VERSION can have extra info
|
||||||
|
if (GIT_VERSION)
|
||||||
|
set(PROJECT_VERSION ${GIT_VERSION})
|
||||||
|
set(PACKAGE_VERSION ${GIT_FULL_VERSION})
|
||||||
|
elseif (PACKAGE_XML_VERSION)
|
||||||
|
set(PROJECT_VERSION ${PACKAGE_XML_VERSION})
|
||||||
|
set(PACKAGE_VERSION ${PROJECT_VERSION})
|
||||||
|
else ()
|
||||||
|
message(WARNING "PROJECT_VERSION not set. Defaulting to 0.0.0")
|
||||||
|
set(PROJECT_VERSION "0.0.0")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
# if (NOT PACKAGE_VERSION)
|
||||||
|
# message(WARNING "PACKAGE_VERSION not set! Falling back to (${PROJECT_VERSION})")
|
||||||
|
set(PACKAGE_VERSION ${PROJECT_VERSION})
|
||||||
|
# endif ()
|
||||||
|
|
||||||
|
# warn if versions don't match
|
||||||
|
if (GIT_VERSION AND NOT GIT_VERSION MATCHES ${PROJECT_VERSION})
|
||||||
|
message(WARNING "Version from git (${GIT_VERSION}) doesn't match PROJECT_VERSION (${PROJECT_VERSION})")
|
||||||
|
endif()
|
||||||
|
if (PACKAGE_XML_VERSION AND NOT PACKAGE_XML_VERSION MATCHES ${PROJECT_VERSION})
|
||||||
|
message(WARNING "Version from package.xml (${PACKAGE_XML_VERSION}) doesn't match PROJECT_VERSION (${PROJECT_VERSION})")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "PROJECT_VERSION: " ${PROJECT_VERSION})
|
||||||
|
message(STATUS "PACKAGE_VERSION: " ${PACKAGE_VERSION})
|
||||||
|
|
||||||
|
|
||||||
|
version_split(${PROJECT_VERSION} PACKAGE_VERSION_MAJOR PACKAGE_VERSION_MINOR PACKAGE_VERSION_PATCH extra)
|
||||||
|
#message(STATUS "PACKAGE_VERSION_MAJOR: " ${PACKAGE_VERSION_MAJOR})
|
||||||
|
#message(STATUS "PACKAGE_VERSION_MINOR: " ${PACKAGE_VERSION_MINOR})
|
||||||
|
#message(STATUS "PACKAGE_VERSION_PATCH: " ${PACKAGE_VERSION_PATCH})
|
||||||
|
|
||||||
|
# generate an integer version number: major * 10000 + minor * 100 + patch
|
||||||
|
math(EXPR PROJECT_VERSION_INT "${PACKAGE_VERSION_MAJOR} * 10000 + ${PACKAGE_VERSION_MINOR} * 100 + ${PACKAGE_VERSION_PATCH}")
|
||||||
|
|
||||||
|
# make PROJECT_VERSION available as define in the project source
|
||||||
|
#add_definitions(-DPROJECT_VERSION="${PROJECT_VERSION}")
|
||||||
|
#add_definitions(-DPROJECT_VERSION_INT=${PROJECT_VERSION_INT})
|
||||||
|
#add_definitions(-DPACKAGE_VERSION="${PACKAGE_VERSION}")
|
||||||
|
#add_definitions(-DPACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR})
|
||||||
|
#add_definitions(-DPACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR})
|
||||||
|
#add_definitions(-DPACKAGE_VERSION_PATCH=${PACKAGE_VERSION_PATCH})
|
||||||
|
|
||||||
|
# set ABI version to major.minor, which will be used for the SOVERSION
|
||||||
|
set(abiversion "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}")
|
||||||
|
|
||||||
|
# generate a version.h file in the binary output dir, don't forget to install it...
|
||||||
|
string(TOUPPER "${PROJECT_NAME}" PROJECT_NAME_UPPER)
|
||||||
|
|
||||||
|
# These files provide compile-time and runtime version information about your project.
|
||||||
|
# To offer the version info to the users of your library, you need to
|
||||||
|
# adapt the following lines in your respective CMakeLists.txt:
|
||||||
|
# add_library(<yourlibraryname> SHARED <your code files> ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/project_version.cc)
|
||||||
|
# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/project_version.h COMPONENT dev DESTINATION include/<your-include-dir>)
|
||||||
|
# To use it within your library or tests you need to add the include directory:
|
||||||
|
# > target_include_directories(yourtarget PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME})
|
||||||
|
configure_file(${CMAKE_CURRENT_LIST_DIR}/project_version.h.in ${PROJECT_NAME}/project_version.h @ONLY)
|
||||||
|
configure_file(${CMAKE_CURRENT_LIST_DIR}/project_version.cc.in ${PROJECT_NAME}/project_version.cc @ONLY)
|
34
cmake/project_version.h.in
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#ifndef @PROJECT_NAME_UPPER@_VERSION_H_
|
||||||
|
#define @PROJECT_NAME_UPPER@_VERSION_H_
|
||||||
|
|
||||||
|
/// project version as major.minor.patch string
|
||||||
|
#define @PROJECT_NAME_UPPER@_VERSION "@PROJECT_VERSION@"
|
||||||
|
/// project version as integer: major * 10000 + minor * 100 + patch
|
||||||
|
#define @PROJECT_NAME_UPPER@_VERSION_INT @PROJECT_VERSION_INT@
|
||||||
|
#define @PROJECT_NAME_UPPER@_VERSION_MAJOR @PACKAGE_VERSION_MAJOR@
|
||||||
|
#define @PROJECT_NAME_UPPER@_VERSION_MINOR @PACKAGE_VERSION_MINOR@
|
||||||
|
#define @PROJECT_NAME_UPPER@_VERSION_PATCH @PACKAGE_VERSION_PATCH@
|
||||||
|
/// package version as string, possibly with git commit: v1.2.3+4+g56789abc
|
||||||
|
#define @PROJECT_NAME_UPPER@_PACKAGE_VERSION "@PACKAGE_VERSION@"
|
||||||
|
|
||||||
|
///runtime versions, where the above values are linked into a lib and therefore reflect the version
|
||||||
|
///of the library itself (not the version of the header at compile time of the user code)
|
||||||
|
const char* @PROJECT_NAME@_runtime_project_version();
|
||||||
|
const char* @PROJECT_NAME@_runtime_package_version();
|
||||||
|
int @PROJECT_NAME@_runtime_version_int();
|
||||||
|
int @PROJECT_NAME@_runtime_version_major();
|
||||||
|
int @PROJECT_NAME@_runtime_version_minor();
|
||||||
|
int @PROJECT_NAME@_runtime_version_patch();
|
||||||
|
|
||||||
|
///Check consistency of runtime vs compile-time version number. I.e. the header used
|
||||||
|
///for compilation was from the same version as the linked library.
|
||||||
|
inline bool @PROJECT_NAME@_check_version_consistency(bool major_minor_only)
|
||||||
|
{
|
||||||
|
return @PROJECT_NAME@_runtime_version_major() == @PROJECT_NAME_UPPER@_VERSION_MAJOR &&
|
||||||
|
@PROJECT_NAME@_runtime_version_minor() == @PROJECT_NAME_UPPER@_VERSION_MINOR &&
|
||||||
|
(major_minor_only ||
|
||||||
|
@PROJECT_NAME@_runtime_version_patch() == @PROJECT_NAME_UPPER@_VERSION_PATCH);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
78
cmk.sh
@ -6,6 +6,8 @@ COMPILERTHREADS=0
|
|||||||
TEXTCLIENT=0
|
TEXTCLIENT=0
|
||||||
RECEIVER=0
|
RECEIVER=0
|
||||||
GUI=0
|
GUI=0
|
||||||
|
DEBUG=0
|
||||||
|
PYTHON=0
|
||||||
|
|
||||||
|
|
||||||
CLEAN=0
|
CLEAN=0
|
||||||
@ -14,16 +16,24 @@ CMAKE_PRE=""
|
|||||||
CMAKE_POST=""
|
CMAKE_POST=""
|
||||||
|
|
||||||
usage() { echo -e "
|
usage() { echo -e "
|
||||||
Usage: $0 [-c] [-b] [-h] [-d <HDF5 directory>] [-j]
|
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [-h] [-d <HDF5 directory>] [-j] <Number of threads>
|
||||||
-[no option]: only make
|
-[no option]: only make
|
||||||
-c: Clean
|
-c: Clean
|
||||||
-b: Builds/Rebuilds CMake files normal mode
|
-b: Builds/Rebuilds CMake files normal mode
|
||||||
|
-p: Builds/Rebuilds Python API
|
||||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||||
-d: HDF5 Custom Directory
|
-d: HDF5 Custom Directory
|
||||||
-t: Build/Rebuilds only text client
|
-t: Build/Rebuilds only text client
|
||||||
-r: Build/Rebuilds only receiver
|
-r: Build/Rebuilds only receiver
|
||||||
-g: Build/Rebuilds only gui
|
-g: Build/Rebuilds only gui
|
||||||
-j: Number of threads to compile through
|
-j: Number of threads to compile through
|
||||||
|
-e: Debug mode
|
||||||
|
|
||||||
|
Rebuild when you switch to a new build and compile in parallel:
|
||||||
|
./cmk.sh -bj5
|
||||||
|
|
||||||
|
Rebuild python
|
||||||
|
./cmk.sh -p
|
||||||
|
|
||||||
For only make:
|
For only make:
|
||||||
./cmk.sh
|
./cmk.sh
|
||||||
@ -53,12 +63,17 @@ For rebuilding only certain sections
|
|||||||
|
|
||||||
" ; exit 1; }
|
" ; exit 1; }
|
||||||
|
|
||||||
while getopts ":bchd:j:trg" opt ; do
|
while getopts ":bpchd:j:trges:" 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
|
||||||
@ -90,7 +105,11 @@ while getopts ":bchd:j:trg" opt ; do
|
|||||||
echo "Compiling Options: GUI"
|
echo "Compiling Options: GUI"
|
||||||
GUI=1
|
GUI=1
|
||||||
REBUILD=1
|
REBUILD=1
|
||||||
;;
|
;;
|
||||||
|
e)
|
||||||
|
echo "Compiling Options: Debug"
|
||||||
|
DEBUG=1
|
||||||
|
;;
|
||||||
\?)
|
\?)
|
||||||
echo "Invalid option: -$OPTARG"
|
echo "Invalid option: -$OPTARG"
|
||||||
usage
|
usage
|
||||||
@ -105,27 +124,30 @@ while getopts ":bchd:j:trg" opt ; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
#python
|
||||||
|
if [ $PYTHON -eq 1 ]; then
|
||||||
|
CMAKE_POST+=" -DSLS_USE_PYTHON=ON "
|
||||||
|
echo "Enabling Compile Option: Python"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ $TEXTCLIENT -eq 0 ] && [ $RECEIVER -eq 0 ] && [ $GUI -eq 0 ]; then
|
if [ $TEXTCLIENT -eq 0 ] && [ $RECEIVER -eq 0 ] && [ $GUI -eq 0 ]; then
|
||||||
CMAKE_POST+=" -DUSE_TEXTCLIENT=ON -DUSE_RECEIVER=ON -DUSE_GUI=ON "
|
#CMAKE_POST+=" -DSLS_USE_TEXTCLIENT=ON -DSLS_USE_RECEIVER=ON -DSLS_USE_GUI=ON "
|
||||||
echo "Compile Option: TextClient, Receiver and GUI"
|
CMAKE_POST+=" -DSLS_USE_TEXTCLIENT=ON -DSLS_USE_RECEIVER=ON -DSLS_USE_GUI=OFF "
|
||||||
|
echo "Enabling Compile Option: TextClient, Receiver and GUI"
|
||||||
else
|
else
|
||||||
if [ $TEXTCLIENT -eq 1 ]; then
|
if [ $TEXTCLIENT -eq 1 ]; then
|
||||||
CMAKE_POST+=" -DUSE_TEXTCLIENT=ON "
|
CMAKE_POST+=" -DSLS_USE_TEXTCLIENT=ON "
|
||||||
echo "Compile Option: TextClient"
|
echo "Enabling Compile Option: TextClient"
|
||||||
fi
|
fi
|
||||||
if [ $RECEIVER -eq 1 ]; then
|
if [ $RECEIVER -eq 1 ]; then
|
||||||
CMAKE_POST+=" -DUSE_RECEIVER=ON "
|
CMAKE_POST+=" -DSLS_USE_RECEIVER=ON "
|
||||||
echo "Compile Option: Receiver"
|
echo "Enabling Compile Option: Receiver"
|
||||||
fi
|
fi
|
||||||
|
if [ $GUI -eq 1 ]; then
|
||||||
if [ $GUI -eq 1 ]; then
|
CMAKE_POST+=" -DSLS_USE_GUI=ON "
|
||||||
CMAKE_POST+=" -DUSE_GUI=ON "
|
echo "Enabling Compile Option: GUI"
|
||||||
echo "Compile Option: GUI"
|
fi
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -145,15 +167,21 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
|
#Debug
|
||||||
|
if [ $DEBUG -eq 1 ]; then
|
||||||
|
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON "
|
||||||
|
echo "Debug Option enabled"
|
||||||
|
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
|
||||||
CMAKE_POST+=" -DUSE_HDF5=ON "
|
CMAKE_POST+=" -DCMAKE_INSTALL_PREFIX="$HDF5DIR
|
||||||
|
CMAKE_POST+=" -DSLS_USE_HDF5=ON "
|
||||||
#normal mode rebuild
|
#normal mode rebuild
|
||||||
else
|
else
|
||||||
CMAKE_POST+=" -DUSE_HDF5=OFF "
|
CMAKE_POST+=" -DSLS_USE_HDF5=OFF "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -166,7 +194,7 @@ echo "in "$PWD
|
|||||||
#cmake
|
#cmake
|
||||||
if [ $REBUILD -eq 1 ]; then
|
if [ $REBUILD -eq 1 ]; then
|
||||||
rm -f CMakeCache.txt
|
rm -f CMakeCache.txt
|
||||||
BUILDCOMMAND="$CMAKE_PRE cmake $CMAKE_POST .."
|
BUILDCOMMAND="$CMAKE_PRE cmake3 $CMAKE_POST .."
|
||||||
echo $BUILDCOMMAND
|
echo $BUILDCOMMAND
|
||||||
eval $BUILDCOMMAND
|
eval $BUILDCOMMAND
|
||||||
fi
|
fi
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
sh updateSvnVersion.sh
|
|
||||||
|
|
||||||
cd slsDetectorGui
|
|
||||||
git commit -a -m "updating versions"
|
|
||||||
git push origin developer:developer
|
|
||||||
|
|
||||||
cd ../slsDetectorSoftware
|
|
||||||
git commit -a -m "updating versions"
|
|
||||||
git push origin developer:developer
|
|
||||||
|
|
||||||
cd ../slsReceiverSoftware
|
|
||||||
git commit -a -m "updating versions"
|
|
||||||
git push origin developer:developer
|
|
||||||
|
|
||||||
cd ..
|
|
19
conda-recepie/build.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
mkdir build
|
||||||
|
mkdir install
|
||||||
|
cd build
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_PREFIX_PATH=$CONDA_PREFIX \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=install \
|
||||||
|
-DSLS_USE_TEXTCLIENT=ON \
|
||||||
|
-DSLS_USE_RECEIVER=ON \
|
||||||
|
-DSLS_USE_GUI=OFF \
|
||||||
|
-DSLS_USE_TESTS=ON \
|
||||||
|
-DSLS_USE_PYTHON=OFF \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DSLS_USE_HDF5=OFF\
|
||||||
|
|
||||||
|
|
||||||
|
cmake --build . -- -j10
|
||||||
|
cmake --build . --target install
|
||||||
|
|
||||||
|
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|
14
conda-recepie/build_pylib.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
# mkdir $PREFIX/lib
|
||||||
|
# mkdir $PREFIX/include
|
||||||
|
|
||||||
|
|
||||||
|
# #Shared and static libraries
|
||||||
|
# cp build/bin/_sls_detector* $PREFIX/lib/.
|
||||||
|
|
||||||
|
|
||||||
|
# #Binaries
|
||||||
|
# cp -r build/bin/sls_detector $PREFIX/lib/.
|
||||||
|
|
||||||
|
cd python
|
||||||
|
${PYTHON} setup.py install
|
15
conda-recepie/copy_gui.sh
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
mkdir $PREFIX/lib
|
||||||
|
mkdir $PREFIX/bin
|
||||||
|
mkdir $PREFIX/include
|
||||||
|
|
||||||
|
#No libs for gui?
|
||||||
|
|
||||||
|
#Binaries
|
||||||
|
cp build/bin/gui_client $PREFIX/bin/.
|
||||||
|
cp build/bin/slsDetectorGui $PREFIX/bin/.
|
||||||
|
|
||||||
|
|
||||||
|
#Which headers do we need for development??
|
||||||
|
|
||||||
|
# cp include/some_lib.h $PREFIX/include/.
|
22
conda-recepie/copy_lib.sh
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
mkdir $PREFIX/lib
|
||||||
|
mkdir $PREFIX/bin
|
||||||
|
mkdir $PREFIX/include
|
||||||
|
mkdir $PREFIX/include/slsDetectorPackage
|
||||||
|
|
||||||
|
#Shared and static libraries
|
||||||
|
cp build/bin/libSlsDetector.so $PREFIX/lib/.
|
||||||
|
cp build/bin/libSlsReceiver.so $PREFIX/lib/.
|
||||||
|
cp build/bin/libSlsSupport.so $PREFIX/lib/.
|
||||||
|
|
||||||
|
#Binaries
|
||||||
|
cp build/bin/sls_detector_acquire $PREFIX/bin/.
|
||||||
|
cp build/bin/sls_detector_get $PREFIX/bin/.
|
||||||
|
cp build/bin/sls_detector_put $PREFIX/bin/.
|
||||||
|
cp build/bin/sls_detector_help $PREFIX/bin/.
|
||||||
|
cp build/bin/slsReceiver $PREFIX/bin/.
|
||||||
|
cp build/bin/slsMultiReceiver $PREFIX/bin/.
|
||||||
|
|
||||||
|
#Which headers do we need for development??
|
||||||
|
cp build/install/include/* $PREFIX/include/slsDetectorPackage/
|
||||||
|
# cp include/some_lib.h $PREFIX/include/.
|
120
conda-recepie/meta.yaml
Executable file
@ -0,0 +1,120 @@
|
|||||||
|
|
||||||
|
package:
|
||||||
|
name: sls_detector_software
|
||||||
|
version: "developer"
|
||||||
|
|
||||||
|
source:
|
||||||
|
- path: ..
|
||||||
|
|
||||||
|
build:
|
||||||
|
number: 1
|
||||||
|
rpaths:
|
||||||
|
- lib/
|
||||||
|
|
||||||
|
requirements:
|
||||||
|
build:
|
||||||
|
- {{ compiler('c') }}
|
||||||
|
- {{compiler('cxx')}}
|
||||||
|
- cmake
|
||||||
|
# - qwt 6.* #require qt5 investigate befor activating gui
|
||||||
|
# - qt=4.8.7=7
|
||||||
|
- zeromq=4.2.5=hfc679d8_5
|
||||||
|
- pyzmq
|
||||||
|
- xorg-libx11
|
||||||
|
- xorg-libice
|
||||||
|
- xorg-libxext
|
||||||
|
- xorg-libsm
|
||||||
|
- xorg-libxau
|
||||||
|
- xorg-libxrender
|
||||||
|
- xorg-libxfixes
|
||||||
|
- {{ cdt('mesa-libgl-devel') }} # [linux]
|
||||||
|
- {{ cdt('mesa-libegl-devel') }} # [linux]
|
||||||
|
- {{ cdt('mesa-dri-drivers') }} # [linux]
|
||||||
|
- {{ cdt('libselinux') }} # [linux]
|
||||||
|
- {{ cdt('libxdamage') }} # [linux]
|
||||||
|
- {{ cdt('libxxf86vm') }} # [linux]
|
||||||
|
|
||||||
|
host:
|
||||||
|
- libstdcxx-ng
|
||||||
|
- libgcc-ng
|
||||||
|
- xorg-libx11
|
||||||
|
- xorg-libice
|
||||||
|
- xorg-libxext
|
||||||
|
- xorg-libsm
|
||||||
|
- xorg-libxau
|
||||||
|
- xorg-libxrender
|
||||||
|
- xorg-libxfixes
|
||||||
|
|
||||||
|
run:
|
||||||
|
- libstdcxx-ng
|
||||||
|
- libgcc-ng
|
||||||
|
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
- name: sls_detector_lib
|
||||||
|
script: copy_lib.sh
|
||||||
|
|
||||||
|
- name: sls_detector
|
||||||
|
script: build_pylib.sh
|
||||||
|
|
||||||
|
requirements:
|
||||||
|
build:
|
||||||
|
- {{ compiler('c') }}
|
||||||
|
- {{compiler('cxx')}}
|
||||||
|
- python {{ python }}
|
||||||
|
- setuptools
|
||||||
|
- sls_detector_lib
|
||||||
|
- pyzmq
|
||||||
|
- pybind11 2.2
|
||||||
|
host:
|
||||||
|
- python
|
||||||
|
- pybind11 2.2
|
||||||
|
- pyzmq
|
||||||
|
- sls_detector_lib
|
||||||
|
- libstdcxx-ng
|
||||||
|
- libgcc-ng
|
||||||
|
run:
|
||||||
|
- python
|
||||||
|
- numpy
|
||||||
|
- sls_detector_lib=developer
|
||||||
|
- pyzmq
|
||||||
|
- libstdcxx-ng
|
||||||
|
- libgcc-ng
|
||||||
|
test:
|
||||||
|
imports:
|
||||||
|
- sls_detector
|
||||||
|
|
||||||
|
# requirements:
|
||||||
|
# build:
|
||||||
|
# - {{ compiler('c') }}
|
||||||
|
# - {{compiler('cxx')}}
|
||||||
|
|
||||||
|
# - name: sls_detector_gui
|
||||||
|
# version: "refactor"
|
||||||
|
# script: copy_gui.sh
|
||||||
|
# requirements:
|
||||||
|
# build:
|
||||||
|
# - {{ compiler('c') }}
|
||||||
|
# - {{compiler('cxx')}}
|
||||||
|
# - cmake
|
||||||
|
# - qwt 6.*
|
||||||
|
# - qt=4.8.7=7
|
||||||
|
# - zeromq=4.2.5=hfc679d8_5
|
||||||
|
# - pyzmq
|
||||||
|
# - xorg-libx11
|
||||||
|
# - xorg-libice
|
||||||
|
# - xorg-libxext
|
||||||
|
# - xorg-libsm
|
||||||
|
# - xorg-libxau
|
||||||
|
# - xorg-libxrender
|
||||||
|
# - xorg-libxfixes
|
||||||
|
# - {{ cdt('mesa-libgl-devel') }} # [linux]
|
||||||
|
# - {{ cdt('mesa-libegl-devel') }} # [linux]
|
||||||
|
# - {{ cdt('mesa-dri-drivers') }} # [linux]
|
||||||
|
# - {{ cdt('libselinux') }} # [linux]
|
||||||
|
# - {{ cdt('libxdamage') }} # [linux]
|
||||||
|
# - {{ cdt('libxxf86vm') }} # [linux]
|
||||||
|
# run:
|
||||||
|
# - sls_detector_lib=refactor
|
||||||
|
# - qwt 6.*
|
||||||
|
# - qt=4.8.7=7
|
1
conda-recepie/run_test.sh
Executable file
@ -0,0 +1 @@
|
|||||||
|
ctest -j2
|
58
configure
vendored
@ -1,58 +0,0 @@
|
|||||||
##!/bin/bash
|
|
||||||
|
|
||||||
: ${INSTALLROOT=$PWD}
|
|
||||||
read -p "Installation directory [default:\"$INSTALLROOT\"]:" -e t3
|
|
||||||
if [ -z "$t3" ]
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
INSTALLROOT=$t3
|
|
||||||
fi
|
|
||||||
echo "INSTALLROOT will be \"$INSTALLROOT\""
|
|
||||||
export INSTALLROOT
|
|
||||||
|
|
||||||
: ${BINDIR="bin"}
|
|
||||||
read -p "Binaries directory [default:\"$BINDIR\"]:" -e t4
|
|
||||||
if [ -z "$t4" ]
|
|
||||||
then
|
|
||||||
BINDIR=$INSTALLROOT/$BINDIR
|
|
||||||
else
|
|
||||||
BINDIR=$INSTALLROOT/$t4
|
|
||||||
fi
|
|
||||||
echo "BINDIR will be \"$BINDIR\""
|
|
||||||
export BINDIR
|
|
||||||
|
|
||||||
: ${LIBDIR="bin"}
|
|
||||||
read -p "Libraries directory [default:\"$LIBDIR\"]:" -e t5
|
|
||||||
if [ -z "$t5" ]
|
|
||||||
then
|
|
||||||
LIBDIR=$INSTALLROOT/$LIBDIR
|
|
||||||
else
|
|
||||||
LIBDIR=$INSTALLROOT/$t5
|
|
||||||
fi
|
|
||||||
echo "LIBDIR will be \"$LIBDIR\""
|
|
||||||
export LIBDIR
|
|
||||||
|
|
||||||
: ${INCDIR="include"}
|
|
||||||
read -p "Includes directory [default:\"$INCDIR\"]:" -e t6
|
|
||||||
if [ -z "$t6" ]
|
|
||||||
then
|
|
||||||
INCDIR=$INSTALLROOT/$INCDIR
|
|
||||||
else
|
|
||||||
INCDIR=$INSTALLROOT/$t6
|
|
||||||
fi
|
|
||||||
echo "INCDIR will be \"$INCDIR\""
|
|
||||||
export INCDIR
|
|
||||||
|
|
||||||
: ${DOCDIR="doc"}
|
|
||||||
read -p "Documentation directory [default:\"$DOCDIR\"]:" -e t7
|
|
||||||
if [ -z "$t7" ]
|
|
||||||
then
|
|
||||||
DOCDIR=$INSTALLROOT/$DOCDIR
|
|
||||||
else
|
|
||||||
DOCDIR=$INSTALLROOT/$t7
|
|
||||||
fi
|
|
||||||
echo "DOCDIR will be \"$DOCDIR\""
|
|
||||||
export DOCDIR
|
|
||||||
|
|
||||||
|
|
2482
doxygen/Doxyfile.in
Normal file
0
evalVersionVariables.sh
Normal file → Executable file
@ -1,24 +0,0 @@
|
|||||||
module 0 center 6.395E+02 +- 0.00E+00 conversion 6.5660E-05 +- 7.10E-09 offset 0.00000 +- 0.00015
|
|
||||||
module 1 center 6.395E+02 +- 0.00E+00 conversion 6.5650E-05 +- 7.09E-09 offset 5.00211 +- 0.00015
|
|
||||||
module 2 center 6.395E+02 +- 0.00E+00 conversion 6.5625E-05 +- 7.09E-09 offset 10.00733 +- 0.00015
|
|
||||||
module 3 center 6.395E+02 +- 0.00E+00 conversion 6.5618E-05 +- 7.09E-09 offset 15.00742 +- 0.00015
|
|
||||||
module 4 center 6.395E+02 +- 0.00E+00 conversion 6.5642E-05 +- 7.15E-09 offset 20.00620 +- 0.00015
|
|
||||||
module 5 center 6.395E+02 +- 0.00E+00 conversion 6.5612E-05 +- 7.09E-09 offset 25.00281 +- 0.00015
|
|
||||||
module 6 center 6.395E+02 +- 0.00E+00 conversion 6.5623E-05 +- 6.93E-09 offset 30.00704 +- 0.00015
|
|
||||||
module 7 center 6.395E+02 +- 0.00E+00 conversion 6.5605E-05 +- 7.10E-09 offset 34.99715 +- 0.00015
|
|
||||||
module 8 center 6.395E+02 +- 0.00E+00 conversion 6.5643E-05 +- 7.21E-09 offset 39.99533 +- 0.00015
|
|
||||||
module 9 center 6.395E+02 +- 0.00E+00 conversion 6.5638E-05 +- 7.09E-09 offset 44.99969 +- 0.00015
|
|
||||||
module 10 center 6.395E+02 +- 0.00E+00 conversion 6.5638E-05 +- 6.94E-09 offset 49.99859 +- 0.00015
|
|
||||||
module 11 center 6.395E+02 +- 0.00E+00 conversion 6.5644E-05 +- 7.10E-09 offset 54.99499 +- 0.00015
|
|
||||||
module 12 center 6.395E+02 +- 0.00E+00 conversion 6.5618E-05 +- 7.09E-09 offset 59.99120 +- 0.00015
|
|
||||||
module 13 center 6.395E+02 +- 0.00E+00 conversion 6.5607E-05 +- 7.11E-09 offset 64.98880 +- 0.00015
|
|
||||||
module 14 center 6.395E+02 +- 0.00E+00 conversion 6.5609E-05 +- 7.09E-09 offset 69.98205 +- 0.00015
|
|
||||||
module 15 center 6.395E+02 +- 0.00E+00 conversion 6.5611E-05 +- 7.09E-09 offset 74.98379 +- 0.00015
|
|
||||||
module 16 center 6.395E+02 +- 0.00E+00 conversion 6.5619E-05 +- 4.72E-09 offset 79.98559 +- 0.00015
|
|
||||||
module 17 center 6.395E+02 +- 0.00E+00 conversion 6.5604E-05 +- 7.09E-09 offset 84.98376 +- 0.00015
|
|
||||||
module 18 center 6.395E+02 +- 0.00E+00 conversion 6.5605E-05 +- 7.09E-09 offset 89.98307 +- 0.00015
|
|
||||||
module 19 center 6.395E+02 +- 0.00E+00 conversion 6.5616E-05 +- 7.09E-09 offset 94.98907 +- 0.00015
|
|
||||||
module 20 center 6.395E+02 +- 0.00E+00 conversion 6.5634E-05 +- 7.08E-09 offset 99.97965 +- 0.00015
|
|
||||||
module 21 center 6.395E+02 +- 0.00E+00 conversion 6.5608E-05 +- 4.16E-09 offset 104.99732 +- 0.00016
|
|
||||||
module 22 center 6.395E+02 +- 0.00E+00 conversion 6.5608E-05 +- 7.09E-09 offset 109.98646 +- 0.00015
|
|
||||||
module 23 center 6.395E+02 +- 0.00E+00 conversion 6.5649E-05 +- 7.09E-09 offset 114.98765 +- 0.00015
|
|
@ -1,5 +0,0 @@
|
|||||||
15
|
|
||||||
1528
|
|
||||||
5000
|
|
||||||
6513
|
|
||||||
|
|
0
examples/config_gen_script/beb_31_25.config_gen
Normal file → Executable file
0
examples/config_gen_script/eiger_2m_1gb.config_gen
Normal file → Executable file
39
examples/config_gen_script/generic_example.config
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
hostname hostname1+hostname2+hostname3+hostname55+
|
||||||
|
header_var1 wow
|
||||||
|
header_var2 great
|
||||||
|
header_var3 very nice
|
||||||
|
|
||||||
|
0:counter1 100
|
||||||
|
0:counter2 1024
|
||||||
|
0:counter3 1500
|
||||||
|
0:forallmodules val_mod1
|
||||||
|
0:constant1 const1
|
||||||
|
0:constant2 const2
|
||||||
|
0:constant3 const3 /path/to/something
|
||||||
|
|
||||||
|
1:counter1 101
|
||||||
|
1:counter2 1036
|
||||||
|
1:counter3 1503
|
||||||
|
1:forallmodules val_mod2
|
||||||
|
1:constant1 const1
|
||||||
|
1:constant2 const2
|
||||||
|
1:constant3 const3 /path/to/something
|
||||||
|
|
||||||
|
2:counter1 102
|
||||||
|
2:counter2 1048
|
||||||
|
2:counter3 1506
|
||||||
|
2:forallmodules val_mod3
|
||||||
|
2:constant1 const1
|
||||||
|
2:constant2 const2
|
||||||
|
2:constant3 const3 /path/to/something
|
||||||
|
|
||||||
|
3:counter1 103
|
||||||
|
3:counter2 1060
|
||||||
|
3:counter3 1509
|
||||||
|
3:forallmodules val_mod4
|
||||||
|
3:constant1 const1
|
||||||
|
3:constant2 const2
|
||||||
|
3:constant3 const3 /path/to/something
|
||||||
|
|
||||||
|
footer1 foot1
|
||||||
|
footer2 somethingelseathebottom
|
47
examples/config_gen_script/generic_example.config_gen
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# local variables
|
||||||
|
a_variable=/path/to/something
|
||||||
|
|
||||||
|
# HOSTNAMES is special
|
||||||
|
# Beside of the hostname line it also defines the amount of modules
|
||||||
|
# for the body part
|
||||||
|
# take care for the last space
|
||||||
|
HOSTNAMES="hostname1 hostname2 hostname3 hostname55 "
|
||||||
|
|
||||||
|
## header contains constant values at the beginning of the file
|
||||||
|
header=(
|
||||||
|
header_var1="wow"
|
||||||
|
header_var2="great"
|
||||||
|
header_var3="very nice"
|
||||||
|
)
|
||||||
|
|
||||||
|
## the body part is for each half module
|
||||||
|
# counters will count automatically
|
||||||
|
# the number behind ':' indicates the incrementation value
|
||||||
|
|
||||||
|
counters=(
|
||||||
|
counter1="100:1"
|
||||||
|
counter2="1024:12"
|
||||||
|
counter3="1500:3"
|
||||||
|
)
|
||||||
|
|
||||||
|
# constant values
|
||||||
|
constants=(
|
||||||
|
constant1="const1"
|
||||||
|
constant2="const2"
|
||||||
|
constant3="const3 ${a_variable}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# lists contains space separated lists each value for each half module
|
||||||
|
lists=(
|
||||||
|
forallmodules="val_mod1 val_mod2 val_mod3 val_mod4"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
## footer contains constant values for the end of the file
|
||||||
|
footer=(
|
||||||
|
footer1=foot1
|
||||||
|
footer2=somethingelseathebottom
|
||||||
|
)
|
||||||
|
|
0
examples/eiger_10Gb.config
Normal file → Executable file
0
examples/eiger_1Gb.config
Normal file → Executable file
7
examples/gotthard.config
Normal file → Executable file
@ -3,12 +3,8 @@ hostname bchip007
|
|||||||
#0:port 1952
|
#0:port 1952
|
||||||
#0:stopport 1953
|
#0:stopport 1953
|
||||||
#0:rx_tcpport 1956 must also have this in receiver config file
|
#0:rx_tcpport 1956 must also have this in receiver config file
|
||||||
0:settingsdir /home/l_maliakal_d/mySoft/newMythenSoftware/settingsdir/gotthard
|
|
||||||
0:angdir 1.000000
|
0:angdir 1.000000
|
||||||
0:moveflag 0.000000
|
0:moveflag 0.000000
|
||||||
0:lock 0
|
|
||||||
0:caldir /home/l_maliakal_d/mySoft/newMythenSoftware/settingsdir/gotthard
|
|
||||||
0:ffdir /home/l_maliakal_d
|
|
||||||
0:extsig:0 off
|
0:extsig:0 off
|
||||||
#0:detectorip 129.129.202.9
|
#0:detectorip 129.129.202.9
|
||||||
0:detectormac 00:aa:bb:cc:dd:ee
|
0:detectormac 00:aa:bb:cc:dd:ee
|
||||||
@ -20,7 +16,6 @@ hostname bchip007
|
|||||||
master -1
|
master -1
|
||||||
sync none
|
sync none
|
||||||
outdir /bigRAID/datadir_gotthard/rec_test_data
|
outdir /bigRAID/datadir_gotthard/rec_test_data
|
||||||
ffdir /home/l_maliakal_d
|
|
||||||
headerbefore none
|
headerbefore none
|
||||||
headerafter none
|
headerafter none
|
||||||
headerbeforepar none
|
headerbeforepar none
|
||||||
@ -29,4 +24,4 @@ badchannels none
|
|||||||
angconv none
|
angconv none
|
||||||
globaloff 0.000000
|
globaloff 0.000000
|
||||||
binsize 0.001000
|
binsize 0.001000
|
||||||
threaded 1
|
|
||||||
|
0
examples/gotthard_setup.det
Normal file → Executable file
57
examples/gotthard_two.config
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
detsizechan 2560 1
|
||||||
|
|
||||||
|
hostname bchip074+bchip075+
|
||||||
|
|
||||||
|
|
||||||
|
0:extsig:0 trigger_in_rising_edge
|
||||||
|
0:rx_tcpport 1954
|
||||||
|
0:rx_udpport 50001
|
||||||
|
0:vhighvoltage 0
|
||||||
|
|
||||||
|
1:extsig:0 trigger_in_rising_edge
|
||||||
|
1:rx_tcpport 1955
|
||||||
|
1:rx_udpport 50002
|
||||||
|
1:vhighvoltage 0
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#########
|
||||||
|
######### Uncomment this part to use the gotthard25umZmq process
|
||||||
|
#########
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# #replace my_receiver_hostname with the hostname of IP of the machine where the receiver runs
|
||||||
|
#0:rx_zmqip my_receiver_hostname
|
||||||
|
#0:rx_zmqport 30003
|
||||||
|
# #replace my_client_hostname with the hostname of IP of the machine where the client/GUI or softIOC runs
|
||||||
|
#0:zmqip my_client_hostname
|
||||||
|
#0:zmqport 40003
|
||||||
|
|
||||||
|
# #replace my_receiver_hostname with the hostname of IP of the machine where the receiver runs
|
||||||
|
#1:rx_zmqip my_receiver_hostname
|
||||||
|
#1:rx_zmqport 30004
|
||||||
|
# #replace my_client_hostname with the hostname of IP of the machine where the client/GUI or softIOC runs
|
||||||
|
#1:zmqip my_client_hostname
|
||||||
|
#1:zmqport 40004
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#########
|
||||||
|
######### until here
|
||||||
|
#########
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
r_readfreq 1
|
||||||
|
rx_datastream 1
|
||||||
|
|
||||||
|
#replace my_receiver_hostname with the hostname of 1Gb IP of the machine where the receiver runs
|
||||||
|
rx_hostname my_receiver_hostname
|
||||||
|
rx_datastream 1
|
||||||
|
outdir /tmp/
|
||||||
|
|
||||||
|
|
||||||
|
settings veryhighgain
|
||||||
|
exptime 0.000005
|
||||||
|
period 0.0001
|
||||||
|
|
||||||
|
vhighvoltage 90
|
||||||
|
|
13
examples/howto_gotthard_twomodules.txt
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
Turn on the two receivers:
|
||||||
|
slsReceiver -t1954 &
|
||||||
|
slsReceiver -t1955 &
|
||||||
|
|
||||||
|
Switch on the photon conversion on the receiver machine (replace my_receiver_hostname):
|
||||||
|
gotthard25umZmq my_receiver_hostname 30003 my_receiver_hostname 40003 &
|
||||||
|
|
||||||
|
Run the configuration file:
|
||||||
|
sls_detector_put config bchip2modules.config
|
||||||
|
|
||||||
|
|
||||||
|
Start your measurements using the command line, the slsDetectorGui or the EPICS driver
|
||||||
|
|
11
examples/jungfrau.config
Normal file → Executable file
@ -1,18 +1,15 @@
|
|||||||
hostname bchip038+
|
hostname bchip038+
|
||||||
|
|
||||||
settingsdir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
|
|
||||||
caldir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
|
|
||||||
lock 0
|
|
||||||
|
|
||||||
0:rx_udpport 50004
|
0:rx_udpport 50004
|
||||||
0:rx_udpip 10.1.1.100
|
0:rx_udpip 10.1.1.100
|
||||||
0:detectorip 10.1.1.10
|
0:detectorip 10.1.1.10
|
||||||
|
|
||||||
rx_hostname pcmoench01
|
rx_hostname pcmoench01
|
||||||
|
|
||||||
powerchip 1
|
powerchip 1
|
||||||
timing auto
|
|
||||||
|
#extsig:0 trigger_in_rising_edge
|
||||||
|
#timing trigger
|
||||||
|
|
||||||
outdir /external_pool/jungfrau_data/softwaretest
|
outdir /external_pool/jungfrau_data/softwaretest
|
||||||
threaded 1
|
|
||||||
|
|
||||||
|
11
examples/jungfrau_two.config
Normal file → Executable file
@ -1,11 +1,6 @@
|
|||||||
detsizechan 1024 1024
|
detsizechan 1024 1024
|
||||||
hostname bchip048+bchip052+
|
hostname bchip048+bchip052+
|
||||||
|
|
||||||
settingsdir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
|
|
||||||
caldir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
|
|
||||||
lock 0
|
|
||||||
|
|
||||||
|
|
||||||
0:rx_udpport 50004
|
0:rx_udpport 50004
|
||||||
0:rx_udpip 10.1.1.100
|
0:rx_udpip 10.1.1.100
|
||||||
0:rx_udpmac F4:52:14:2F:32:00
|
0:rx_udpmac F4:52:14:2F:32:00
|
||||||
@ -22,9 +17,9 @@ lock 0
|
|||||||
rx_hostname pcmoench01
|
rx_hostname pcmoench01
|
||||||
|
|
||||||
powerchip 1
|
powerchip 1
|
||||||
extsig:0 trigger_in_rising_edge
|
#extsig:0 trigger_in_rising_edge
|
||||||
timing auto
|
#timing trigger
|
||||||
|
|
||||||
outdir /external_pool/jungfrau_data/softwaretest
|
outdir /external_pool/jungfrau_data/softwaretest
|
||||||
threaded 1
|
|
||||||
|
|
||||||
|
491
examples/moench01_T1_lab.config
Executable file
@ -0,0 +1,491 @@
|
|||||||
|
hostname bchip085+
|
||||||
|
|
||||||
|
patword 0000 0000000000000000
|
||||||
|
patword 0001 0000000000000000
|
||||||
|
patword 0002 0008000900080000
|
||||||
|
patword 0003 0008000900080000
|
||||||
|
patword 0004 0008000900080000
|
||||||
|
patword 0005 0008000900080000
|
||||||
|
patword 0006 0008000900080000
|
||||||
|
patword 0007 0008000900080000
|
||||||
|
patword 0008 0008000900080000
|
||||||
|
patword 0009 0008000900080000
|
||||||
|
patword 000a 0008000900080000
|
||||||
|
patword 000b 0008000900080000
|
||||||
|
patword 000c 0008000900080000
|
||||||
|
patword 000d 0008000900080000
|
||||||
|
patword 000e 0008000900080000
|
||||||
|
patword 000f 0008000900080000
|
||||||
|
patword 0010 0008000900080000
|
||||||
|
patword 0011 0008000900080000
|
||||||
|
patword 0012 0008000900080000
|
||||||
|
patword 0013 0008000900080000
|
||||||
|
patword 0014 0008000900080000
|
||||||
|
patword 0015 0008000900080000
|
||||||
|
patword 0016 0008400900080020
|
||||||
|
patword 0017 0008400900080020
|
||||||
|
patword 0018 0008599f0418503a
|
||||||
|
patword 0019 0008599f0418503a
|
||||||
|
patword 001a 0108599f0418503a
|
||||||
|
patword 001b 0108599f0418503a
|
||||||
|
patword 001c 0108599f0418503a
|
||||||
|
patword 001d 0108599f0418503a
|
||||||
|
patword 001e 0108599f0418503a
|
||||||
|
patword 001f 0108599f0418503a
|
||||||
|
patword 0020 0108599f0418503a
|
||||||
|
patword 0021 0108599f0418503a
|
||||||
|
patword 0022 0108599f0418503a
|
||||||
|
patword 0023 0108599f0418503a
|
||||||
|
patword 0024 0108599f0418503a
|
||||||
|
patword 0025 0108599f0418503a
|
||||||
|
patword 0026 0108599f0418503a
|
||||||
|
patword 0027 0108599f0418503a
|
||||||
|
patword 0028 0108599f0418503a
|
||||||
|
patword 0029 0108599f0418503a
|
||||||
|
patword 002a 0108599f0418503a
|
||||||
|
patword 002b 0108599f0418503a
|
||||||
|
patword 002c 0108599f0418503a
|
||||||
|
patword 002d 0108599f0418503a
|
||||||
|
patword 002e 0108599f0418503a
|
||||||
|
patword 002f 0108599f0418503a
|
||||||
|
patword 0030 0108599f0418503a
|
||||||
|
patword 0031 0108599f0418503a
|
||||||
|
patword 0032 0108599f0418503a
|
||||||
|
patword 0033 0108599f0418503a
|
||||||
|
patword 0034 0108599f0418503a
|
||||||
|
patword 0035 0108599f0418503a
|
||||||
|
patword 0036 0108599f0418503a
|
||||||
|
patword 0037 0108599f0418503a
|
||||||
|
patword 0038 0108599f0418503a
|
||||||
|
patword 0039 0108599f0418503a
|
||||||
|
patword 003a 0108599f0418503a
|
||||||
|
patword 003b 0108599f0418503a
|
||||||
|
patword 003c 0108599f0418503a
|
||||||
|
patword 003d 0108599f0418503a
|
||||||
|
patword 003e 0108599f0418503a
|
||||||
|
patword 003f 0108599f0418503a
|
||||||
|
patword 0040 0108599f0418503a
|
||||||
|
patword 0041 0108599f0418503a
|
||||||
|
patword 0042 0108599f0418503a
|
||||||
|
patword 0043 0108599f0418503a
|
||||||
|
patword 0044 0108599f0418503a
|
||||||
|
patword 0045 0108599f0418503a
|
||||||
|
patword 0046 0108599f0418503a
|
||||||
|
patword 0047 0108599f0418503a
|
||||||
|
patword 0048 0108599f0418503a
|
||||||
|
patword 0049 0108599f0418503a
|
||||||
|
patword 004a 0108599f0418503a
|
||||||
|
patword 004b 0108599f0418503a
|
||||||
|
patword 004c 0108599f0418503a
|
||||||
|
patword 004d 0108599f0418503a
|
||||||
|
patword 004e 0108599f0418503a
|
||||||
|
patword 004f 0108599f0418503a
|
||||||
|
patword 0050 0108599f0418503a
|
||||||
|
patword 0051 0108599f0418503a
|
||||||
|
patword 0052 0108599f0418503a
|
||||||
|
patword 0053 0108599f0418503a
|
||||||
|
patword 0054 0108599f0418503a
|
||||||
|
patword 0055 0108599f0418503a
|
||||||
|
patword 0056 0108599f0418503a
|
||||||
|
patword 0057 0108599f0418503a
|
||||||
|
patword 0058 0108599f0418503a
|
||||||
|
patword 0059 0108599f0418503a
|
||||||
|
patword 005a 0108599f0418503a
|
||||||
|
patword 005b 0108599f0418503a
|
||||||
|
patword 005c 0108599f0418503a
|
||||||
|
patword 005d 0108599f0418503a
|
||||||
|
patword 005e 0108599f0418503a
|
||||||
|
patword 005f 0108599f0418503a
|
||||||
|
patword 0060 0108599f0418503a
|
||||||
|
patword 0061 0108599f0418503a
|
||||||
|
patword 0062 0108599f0418503a
|
||||||
|
patword 0063 0108599f0418503a
|
||||||
|
patword 0064 0108599f0418503a
|
||||||
|
patword 0065 0108599f0418503a
|
||||||
|
patword 0066 0108599f0418503a
|
||||||
|
patword 0067 0108599f0418503a
|
||||||
|
patword 0068 0108599f0418503a
|
||||||
|
patword 0069 0108599f0418503a
|
||||||
|
patword 006a 0108599f0418503a
|
||||||
|
patword 006b 0108599f0418503a
|
||||||
|
patword 006c 0108599f0418503a
|
||||||
|
patword 006d 0108599f0418503a
|
||||||
|
patword 006e 0108599f0418503a
|
||||||
|
patword 006f 0108599f0418503a
|
||||||
|
patword 0070 0108599f0418503a
|
||||||
|
patword 0071 0108599f0418503a
|
||||||
|
patword 0072 0108599f0418503a
|
||||||
|
patword 0073 0108599f0418503a
|
||||||
|
patword 0074 0108599f0418503a
|
||||||
|
patword 0075 0108599f0418503a
|
||||||
|
patword 0076 0108599f0418503a
|
||||||
|
patword 0077 0108599f0418503a
|
||||||
|
patword 0078 0108599f0418503a
|
||||||
|
patword 0079 0108599f0418503a
|
||||||
|
patword 007a 0108599f0418503a
|
||||||
|
patword 007b 0108599f0418503a
|
||||||
|
patword 007c 0108599f0418503a
|
||||||
|
patword 007d 0108599f0418503a
|
||||||
|
patword 007e 010859960418503a
|
||||||
|
patword 007f 010859960418503a
|
||||||
|
patword 0080 010859960418503a
|
||||||
|
patword 0081 010859960418503a
|
||||||
|
patword 0082 010859960418503a
|
||||||
|
patword 0083 010859960418503a
|
||||||
|
patword 0084 010859960418503a
|
||||||
|
patword 0085 010859960418503a
|
||||||
|
patword 0086 010859960418503a
|
||||||
|
patword 0087 010859960418503a
|
||||||
|
patword 0088 010859960418503a
|
||||||
|
patword 0089 010859960418503a
|
||||||
|
patword 008a 010859960418503a
|
||||||
|
patword 008b 010859960418503a
|
||||||
|
patword 008c 010859960418503a
|
||||||
|
patword 008d 010859960418503a
|
||||||
|
patword 008e 010859960418503a
|
||||||
|
patword 008f 010859960418503a
|
||||||
|
patword 0090 010859960418503a
|
||||||
|
patword 0091 010859960418503a
|
||||||
|
patword 0092 010819960418501a
|
||||||
|
patword 0093 010819960418501a
|
||||||
|
patword 0094 010819960418501a
|
||||||
|
patword 0095 010819960418501a
|
||||||
|
patword 0096 030819960418501a
|
||||||
|
patword 0097 030819960418501a
|
||||||
|
patword 0098 030819960418501a
|
||||||
|
patword 0099 030819960418501a
|
||||||
|
patword 009a 030819960418501a
|
||||||
|
patword 009b 030819960418501a
|
||||||
|
patword 009c 030819960418501a
|
||||||
|
patword 009d 030819960418501a
|
||||||
|
patword 009e 030819960418501a
|
||||||
|
patword 009f 030819960418501a
|
||||||
|
patword 00a0 030819960418501a
|
||||||
|
patword 00a1 030819960418501a
|
||||||
|
patword 00a2 030819960418501a
|
||||||
|
patword 00a3 030819960418501a
|
||||||
|
patword 00a4 030819960418501a
|
||||||
|
patword 00a5 030819960418501a
|
||||||
|
patword 00a6 030819960418501a
|
||||||
|
patword 00a7 030819960418501a
|
||||||
|
patword 00a8 030819960418501a
|
||||||
|
patword 00a9 030819960418501a
|
||||||
|
patword 00aa 030819960418501a
|
||||||
|
patword 00ab 030819960418501a
|
||||||
|
patword 00ac 030819960008501a
|
||||||
|
patword 00ad 030819960008501a
|
||||||
|
patword 00ae 030819960008501a
|
||||||
|
patword 00af 030819960008501a
|
||||||
|
patword 00b0 030819960008501a
|
||||||
|
patword 00b1 030819960008501a
|
||||||
|
patword 00b2 030819960008501a
|
||||||
|
patword 00b3 030819960008501a
|
||||||
|
patword 00b4 030819960008501a
|
||||||
|
patword 00b5 030819960008501a
|
||||||
|
patword 00b6 030819960008501a
|
||||||
|
patword 00b7 030819960008501a
|
||||||
|
patword 00b8 030819960008501a
|
||||||
|
patword 00b9 030819960008501a
|
||||||
|
patword 00ba 030819960008501a
|
||||||
|
patword 00bb 030819960008501a
|
||||||
|
patword 00bc 030819960008501a
|
||||||
|
patword 00bd 030819960008501a
|
||||||
|
patword 00be 030819960008501a
|
||||||
|
patword 00bf 030819960008501a
|
||||||
|
patword 00c0 0308199f0008501a
|
||||||
|
patword 00c1 0308199f0008501a
|
||||||
|
patword 00c2 0308199f0008501a
|
||||||
|
patword 00c3 0308199f0008501a
|
||||||
|
patword 00c4 0308199f0008501a
|
||||||
|
patword 00c5 0308199f0008501a
|
||||||
|
patword 00c6 0308199f0008501a
|
||||||
|
patword 00c7 0308199f0008501a
|
||||||
|
patword 00c8 0308199f0008501a
|
||||||
|
patword 00c9 0308199f0008501a
|
||||||
|
patword 00ca 0308199f0008501a
|
||||||
|
patword 00cb 0308199f0008501a
|
||||||
|
patword 00cc 0308199f0008501a
|
||||||
|
patword 00cd 0308199f0008501a
|
||||||
|
patword 00ce 0308199f0008501a
|
||||||
|
patword 00cf 0308199f0008501a
|
||||||
|
patword 00d0 0308199f0008501a
|
||||||
|
patword 00d1 0308199f0008501a
|
||||||
|
patword 00d2 0308199f0008501a
|
||||||
|
patword 00d3 0308199f0008501a
|
||||||
|
patword 00d4 0308599f0008503a
|
||||||
|
patword 00d5 0308599f0008503a
|
||||||
|
patword 00d6 030c599f000850ba
|
||||||
|
patword 00d7 030c599f000850ba
|
||||||
|
patword 00d8 030c599f000850ba
|
||||||
|
patword 00d9 030c599f000850ba
|
||||||
|
patword 00da 030c599f000850ba
|
||||||
|
patword 00db 030c599f000850ba
|
||||||
|
patword 00dc 030c599f000850ba
|
||||||
|
patword 00dd 030c599f000850ba
|
||||||
|
patword 00de 030c599f000850ba
|
||||||
|
patword 00df 030c599f000850ba
|
||||||
|
patword 00e0 030c599f000850ba
|
||||||
|
patword 00e1 030c599f000850ba
|
||||||
|
patword 00e2 030c599f000850ba
|
||||||
|
patword 00e3 030c599f000850ba
|
||||||
|
patword 00e4 030c599f000850ba
|
||||||
|
patword 00e5 030c599f000850ba
|
||||||
|
patword 00e6 030c599f000850ba
|
||||||
|
patword 00e7 030c599f000850ba
|
||||||
|
patword 00e8 030c599f000850ba
|
||||||
|
patword 00e9 030c599f000850ba
|
||||||
|
patword 00ea 030c799f010858ba
|
||||||
|
patword 00eb 030c799f010858ba
|
||||||
|
patword 00ec 030c599f000850ba
|
||||||
|
patword 00ed 030c599f000850ba
|
||||||
|
patword 00ee 030c599f000850ba
|
||||||
|
patword 00ef 030c599f000850ba
|
||||||
|
patword 00f0 030c599f000850ba
|
||||||
|
patword 00f1 030c599f000850ba
|
||||||
|
patword 00f2 030c599f000850ba
|
||||||
|
patword 00f3 030c599f000850ba
|
||||||
|
patword 00f4 030c599f000850ba
|
||||||
|
patword 00f5 030c599f000850ba
|
||||||
|
patword 00f6 030c599f000850ba
|
||||||
|
patword 00f7 030c599f000850ba
|
||||||
|
patword 00f8 030c599f000850ba
|
||||||
|
patword 00f9 030c599f000850ba
|
||||||
|
patword 00fa 030c599f000850ba
|
||||||
|
patword 00fb 030c599f000850ba
|
||||||
|
patword 00fc 030c599f000850ba
|
||||||
|
patword 00fd 030c599f000850ba
|
||||||
|
patword 00fe 030c599f000850ba
|
||||||
|
patword 00ff 030c599f000850ba
|
||||||
|
patword 0100 030c599f000850ba
|
||||||
|
patword 0101 030c599f000850ba
|
||||||
|
patword 0102 030c599f400850ba
|
||||||
|
patword 0103 030c599f400850ba
|
||||||
|
patword 0104 030c599f600850ba
|
||||||
|
patword 0105 030c599f400850ba
|
||||||
|
patword 0106 030c599f400850ba
|
||||||
|
patword 0107 030c599f400850ba
|
||||||
|
patword 0108 870c599f682e50ba
|
||||||
|
patword 0109 870c599f482850ba
|
||||||
|
patword 010a 870c599f000e50ba
|
||||||
|
patword 010b 870c599f000850ba
|
||||||
|
patword 010c 870c599f000e50ba
|
||||||
|
patword 010d 870c599f000850ba
|
||||||
|
patword 010e 870c599f000e50ba
|
||||||
|
patword 010f 870c599f000850ba
|
||||||
|
patword 0110 870c599f000e50ba
|
||||||
|
patword 0111 870c599f000850ba
|
||||||
|
patword 0112 870c599f000e50ba
|
||||||
|
patword 0113 870c599f000850ba
|
||||||
|
patword 0114 870c599f000e50ba
|
||||||
|
patword 0115 870c599f000850ba
|
||||||
|
patword 0116 870c599f000e50ba
|
||||||
|
patword 0117 870c599f000850ba
|
||||||
|
patword 0118 870c599f000e50ba
|
||||||
|
patword 0119 870c599f000850ba
|
||||||
|
patword 011a 870c599f000e50ba
|
||||||
|
patword 011b 870c599f000850ba
|
||||||
|
patword 011c 870c599f000e50ba
|
||||||
|
patword 011d 870c599f000850ba
|
||||||
|
patword 011e 870c599f000e50ba
|
||||||
|
patword 011f 870c599f000850ba
|
||||||
|
patword 0120 870c599f000e50ba
|
||||||
|
patword 0121 870c599f000850ba
|
||||||
|
patword 0122 870c599f200e50ba
|
||||||
|
patword 0123 870c599f000850ba
|
||||||
|
patword 0124 870c599f000e50ba
|
||||||
|
patword 0125 870c599f000850ba
|
||||||
|
patword 0126 870c599f000e50ba
|
||||||
|
patword 0127 870c599f000850ba
|
||||||
|
patword 0128 870c599f000e50ba
|
||||||
|
patword 0129 870c599f000850ba
|
||||||
|
patword 012a 870c599f000e50ba
|
||||||
|
patword 012b 870c599f000850ba
|
||||||
|
patword 012c 870c599f000e50ba
|
||||||
|
patword 012d 870c599f000850ba
|
||||||
|
patword 012e 870c599f000e50ba
|
||||||
|
patword 012f 870c599f000850ba
|
||||||
|
patword 0130 870c599f000e50ba
|
||||||
|
patword 0131 870c599f000850ba
|
||||||
|
patword 0132 870c599f000e50ba
|
||||||
|
patword 0133 870c599f000850ba
|
||||||
|
patword 0134 870c599f000e50ba
|
||||||
|
patword 0135 870c599f000850ba
|
||||||
|
patword 0136 870c599f000e50ba
|
||||||
|
patword 0137 870c599f000850ba
|
||||||
|
patword 0138 870c599f000e50ba
|
||||||
|
patword 0139 870c599f000850ba
|
||||||
|
patword 013a 870c599f282e50ba
|
||||||
|
patword 013b 870c599f082850ba
|
||||||
|
patword 013c 870c599f000e50ba
|
||||||
|
patword 013d 870c599f000850ba
|
||||||
|
patword 013e 870c599f000e50ba
|
||||||
|
patword 013f 870c599f000850ba
|
||||||
|
patword 0140 870c599f000e50ba
|
||||||
|
patword 0141 870c599f000850ba
|
||||||
|
patword 0142 870c599f000e50ba
|
||||||
|
patword 0143 870c599f000850ba
|
||||||
|
patword 0144 870c599f000e50ba
|
||||||
|
patword 0145 870c599f000850ba
|
||||||
|
patword 0146 870c599f000e50ba
|
||||||
|
patword 0147 870c599f000850ba
|
||||||
|
patword 0148 870c599f000e50ba
|
||||||
|
patword 0149 870c599f000850ba
|
||||||
|
patword 014a 870c599f000e50ba
|
||||||
|
patword 014b 870c599f000850ba
|
||||||
|
patword 014c 870c599f000e50ba
|
||||||
|
patword 014d 870c599f000850ba
|
||||||
|
patword 014e 870c599f000e50ba
|
||||||
|
patword 014f 870c599f000850ba
|
||||||
|
patword 0150 870c599f000e50ba
|
||||||
|
patword 0151 870c599f000850ba
|
||||||
|
patword 0152 870c599f000e50ba
|
||||||
|
patword 0153 870c599f000850ba
|
||||||
|
patword 0154 870c599f200e50ba
|
||||||
|
patword 0155 870c599f000850ba
|
||||||
|
patword 0156 870c599f000e50ba
|
||||||
|
patword 0157 870c599f000850ba
|
||||||
|
patword 0158 870c599f000e50ba
|
||||||
|
patword 0159 870c599f000850ba
|
||||||
|
patword 015a 870c599f000e50ba
|
||||||
|
patword 015b 870c599f000850ba
|
||||||
|
patword 015c 870c599f000e50ba
|
||||||
|
patword 015d 870c599f000850ba
|
||||||
|
patword 015e 870c599f000e50ba
|
||||||
|
patword 015f 870c599f000850ba
|
||||||
|
patword 0160 870c599f000e50ba
|
||||||
|
patword 0161 870c599f000850ba
|
||||||
|
patword 0162 870c599f000e50ba
|
||||||
|
patword 0163 870c599f000850ba
|
||||||
|
patword 0164 870c599f000e50ba
|
||||||
|
patword 0165 870c599f000850ba
|
||||||
|
patword 0166 870c599f000e50ba
|
||||||
|
patword 0167 870c599f000850ba
|
||||||
|
patword 0168 870c599f000e50ba
|
||||||
|
patword 0169 870c599f000850ba
|
||||||
|
patword 016a 870c599f000e50ba
|
||||||
|
patword 016b 870c599f000850ba
|
||||||
|
patword 016c 070c599f000850ba
|
||||||
|
patword 016d 070c599f000850ba
|
||||||
|
patword 016e 000c599f000850ba
|
||||||
|
patword 016f 000c599f000850ba
|
||||||
|
patword 0170 0008599f200e503a
|
||||||
|
patword 0171 0008599f0008503a
|
||||||
|
patword 0172 0008599f200e503a
|
||||||
|
patword 0173 0008599f0008503a
|
||||||
|
patword 0174 0008599f0008503a
|
||||||
|
patword 0175 0008599f0008503a
|
||||||
|
patword 0176 0008599f0008503a
|
||||||
|
patword 0177 0008599f0008503a
|
||||||
|
patword 0178 0008599f0008503a
|
||||||
|
patword 0179 0008599f0008503a
|
||||||
|
patword 017a 0008599f0008503a
|
||||||
|
patword 017b 0008599f0008503a
|
||||||
|
patword 017c 0008599f0008503a
|
||||||
|
patword 017d 0008599f0008503a
|
||||||
|
patword 017e 0008599f0008503a
|
||||||
|
patword 017f 0008599f0008503a
|
||||||
|
patword 0180 0008599f0008503a
|
||||||
|
patword 0181 0008599f0008503a
|
||||||
|
patword 0182 0008599f0008503a
|
||||||
|
patword 0183 0008599f0008503a
|
||||||
|
patword 0184 0008599f0008503a
|
||||||
|
patword 0185 0008599f0008503a
|
||||||
|
patword 0186 0008599f0008503a
|
||||||
|
patword 0187 0008599f0008503a
|
||||||
|
patword 0188 0008599f0008503a
|
||||||
|
patword 0189 0008599f0008503a
|
||||||
|
patword 018a 0008599f0008503a
|
||||||
|
patword 018b 0008599f0008503a
|
||||||
|
patword 018c 0008599f0008503a
|
||||||
|
patword 018d 0008599f0008503a
|
||||||
|
patioctrl 8f0effff6dbffdbf
|
||||||
|
patclkctrl 0000000000000000
|
||||||
|
patlimits 0000 018c
|
||||||
|
patloop0 013a 016b
|
||||||
|
patnloop0 199
|
||||||
|
patloop1 0400 0400
|
||||||
|
patnloop1 0
|
||||||
|
patloop2 0400 0400
|
||||||
|
patnloop2 0
|
||||||
|
patwait0 00aa
|
||||||
|
patwaittime0 40000
|
||||||
|
patwait1 0400
|
||||||
|
patwaittime1 0
|
||||||
|
patwait2 0400
|
||||||
|
patwaittime2 0
|
||||||
|
|
||||||
|
|
||||||
|
####mcp2011
|
||||||
|
#0:rx_udpip 10.1.1.102
|
||||||
|
#0:detectorip 10.1.1.19
|
||||||
|
#0:rx_udpport 32410
|
||||||
|
####gui listening to
|
||||||
|
#zmqip 129.129.202.131
|
||||||
|
#zmqport 30001
|
||||||
|
####data streaming out of
|
||||||
|
#rx_zmqip 10.1.2.103
|
||||||
|
#rx_zmqport 30003
|
||||||
|
#0:rx_hostname mpc2011
|
||||||
|
|
||||||
|
####mx-test-1
|
||||||
|
0:rx_udpip 10.1.1.100
|
||||||
|
0:detectorip 10.1.1.19
|
||||||
|
0:rx_udpport 32410
|
||||||
|
####gui listening to (on receiver pc)
|
||||||
|
zmqip 129.129.202.92
|
||||||
|
zmqport 30001
|
||||||
|
####data streaming out of
|
||||||
|
rx_zmqip 10.1.1.100
|
||||||
|
rx_zmqport 30003
|
||||||
|
0:rx_hostname pcmoench01
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#turn on datastream from commandline
|
||||||
|
rx_datastream 1
|
||||||
|
|
||||||
|
r_readfreq 1
|
||||||
|
|
||||||
|
#0:configuremac -1
|
||||||
|
rx_datastream 1
|
||||||
|
|
||||||
|
r_readfreq 1
|
||||||
|
|
||||||
|
|
||||||
|
dac:6 800
|
||||||
|
dac:0 1300
|
||||||
|
dac:4 1428
|
||||||
|
dac:1 1000
|
||||||
|
dac:7 900
|
||||||
|
dac:3 680
|
||||||
|
dac:2 1400
|
||||||
|
dac:5 1200
|
||||||
|
adcinvert 4a342593
|
||||||
|
samples 5000
|
||||||
|
adcphase 90
|
||||||
|
adcpipeline 15
|
||||||
|
adcreg 14 40
|
||||||
|
powerchip 1
|
||||||
|
vhighvoltage 90
|
||||||
|
period 0.005
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
frames 100
|
||||||
|
period 0.1
|
||||||
|
outdir /scratch/
|
||||||
|
enablefwrite 0
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
type Mythen+
|
|
||||||
0:hostname mcs1x21
|
|
||||||
0:port 1952
|
|
||||||
0:stopport 1953
|
|
||||||
0:settingsdir /afs/psi.ch/user/b/bergamaschi
|
|
||||||
0:outdir /afs/psi.ch/user/b/bergamaschi
|
|
||||||
0:angdir 1.000000
|
|
||||||
0:moveflag 1.000000
|
|
||||||
0:lock 0
|
|
||||||
0:caldir /afs/psi.ch/user/b/bergamaschi
|
|
||||||
0:ffdir /afs/psi.ch/user/b/bergamaschi
|
|
||||||
0:nmod 1
|
|
||||||
0:waitstates 13
|
|
||||||
0:setlength 3
|
|
||||||
0:clkdivider 6
|
|
||||||
0:extsig:0 gate_in_active_high
|
|
||||||
0:extsig:1 trigger_in_rising_edge
|
|
||||||
0:extsig:2 off
|
|
||||||
0:extsig:3 off
|
|
||||||
master -1
|
|
||||||
sync none
|
|
||||||
outdir /afs/psi.ch/user/b/bergamaschi
|
|
||||||
ffdir /afs/psi.ch/user/b/bergamaschi
|
|
||||||
headerbefore none
|
|
||||||
headerafter none
|
|
||||||
headerbeforepar none
|
|
||||||
headerafterpar none
|
|
||||||
badchannels none
|
|
||||||
angconv none
|
|
||||||
globaloff 0.000000
|
|
||||||
binsize 0.001000
|
|
||||||
threaded 1
|
|
@ -1 +0,0 @@
|
|||||||
dataport 1955
|
|
0
examples/scripts/.parab
Normal file → Executable file
@ -1,142 +0,0 @@
|
|||||||
#! /bin/awk -f
|
|
||||||
|
|
||||||
# this is an awk script to start a run
|
|
||||||
# you first need to run inimodule.awk to initialize
|
|
||||||
# the pattern, set Vc and set the trimbits
|
|
||||||
#
|
|
||||||
|
|
||||||
#####################################################################
|
|
||||||
# revision history #
|
|
||||||
#####################################################################
|
|
||||||
# 31.10.2001 first version #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# Bernd Schmitt #
|
|
||||||
# #
|
|
||||||
# bernd.schmitt@psi.ch #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# modifications: #
|
|
||||||
# #
|
|
||||||
# 1.3.2002 BS adapted for use with DCB #
|
|
||||||
# #
|
|
||||||
# 25.5.2002 BS adapted to new convert program #
|
|
||||||
# #
|
|
||||||
# 29.5.2002 sleep -> usleep for meas. time , TS #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
|
|
||||||
# initialize variables
|
|
||||||
NPAR=3
|
|
||||||
|
|
||||||
PAR[1]="nrun"
|
|
||||||
PAR[2]="fn"
|
|
||||||
PAR[3]="par"
|
|
||||||
|
|
||||||
# initialize default values
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PARVAL[1] = 100
|
|
||||||
PARVAL[2] = "microstrip_july2007"
|
|
||||||
PARVAL[3]=0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
|
|
||||||
|
|
||||||
# read command line defined variables
|
|
||||||
if (ARGC>1) {
|
|
||||||
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
|
|
||||||
for (i=1; i<=ARGC; i++) {
|
|
||||||
printf("%s \n", ARGV[i]);
|
|
||||||
nsplit=split(ARGV[i],array,"=")
|
|
||||||
VAR = array[1];
|
|
||||||
VAL = array[2];
|
|
||||||
|
|
||||||
for (j=1; j<=NPAR; j++) {
|
|
||||||
if ( VAR==PAR[j] ) {
|
|
||||||
PARVAL[j] = VAL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
run=PARVAL[1]
|
|
||||||
fn=PARVAL[2]
|
|
||||||
par=PARVAL[3]
|
|
||||||
|
|
||||||
|
|
||||||
# print command line arguments
|
|
||||||
for (i=1; i<=NPAR; i++){
|
|
||||||
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
|
|
||||||
}
|
|
||||||
printf("\n\n");
|
|
||||||
|
|
||||||
# generate parameter file
|
|
||||||
|
|
||||||
fnamep=fn".parab"
|
|
||||||
printf("header before\n")>> fnamep
|
|
||||||
system("date >>"fnamep)
|
|
||||||
printf("run=%i \n", run ) >> fnamep
|
|
||||||
|
|
||||||
#print detector parameters to file
|
|
||||||
if (par==1) {
|
|
||||||
|
|
||||||
command="sls_detector_get exptime| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("acquisition time = %11.6f second(s)\n", var) >> fnamep
|
|
||||||
|
|
||||||
command="sls_detector_get settings| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("settings = %s\n", var) >> fnamep;
|
|
||||||
|
|
||||||
command="sls_detector_get threshold| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("threshold energy = %d eV\n", var) >> fnamep;
|
|
||||||
|
|
||||||
command="sls_detector_get badchannels| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("bad channel list = %s\n",var) >> fnamep;
|
|
||||||
|
|
||||||
|
|
||||||
command="sls_detector_get angconv| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("angle calibration conversion = %s\n",var) >> fnamep;
|
|
||||||
|
|
||||||
|
|
||||||
command="sls_detector_get globaloff| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("beamline offset = %f deg\n", var) >> fnamep;
|
|
||||||
|
|
||||||
command="sls_detector_get fineoff| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("fine offset = %f deg\n", var) >> fnamep;
|
|
||||||
|
|
||||||
command="sls_detector_get flatfield| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("Flat field corrections = %s\n",var) >> fnamep;
|
|
||||||
|
|
||||||
command="sls_detector_get ratecorr| awk -F \" \" '{print $2}'"
|
|
||||||
command | getline var
|
|
||||||
printf("Dead time corrections tau = %d ns\n",var) >> fnamep;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#print beamline parameters to file
|
|
||||||
|
|
||||||
#read detector position
|
|
||||||
system("caget X04SA-ES2-TH2:RO.RBV >>"fnamep)
|
|
||||||
#read I0
|
|
||||||
system("caget X04SA-ES2-SC:CH6>>"fnamep)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,87 +0,0 @@
|
|||||||
#! /bin/awk -f
|
|
||||||
|
|
||||||
# this is an awk script to start a run
|
|
||||||
# you first need to run inimodule.awk to initialize
|
|
||||||
# the pattern, set Vc and set the trimbits
|
|
||||||
#
|
|
||||||
|
|
||||||
#####################################################################
|
|
||||||
# revision history #
|
|
||||||
#####################################################################
|
|
||||||
# 31.10.2001 first version #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# Bernd Schmitt #
|
|
||||||
# #
|
|
||||||
# bernd.schmitt@psi.ch #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# modifications: #
|
|
||||||
# #
|
|
||||||
# 1.3.2002 BS adapted for use with DCB #
|
|
||||||
# #
|
|
||||||
# 25.5.2002 BS adapted to new convert program #
|
|
||||||
# #
|
|
||||||
# 29.5.2002 sleep -> usleep for meas. time , TS #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
|
|
||||||
# initialize variables
|
|
||||||
NPAR=4
|
|
||||||
|
|
||||||
PAR[1]="nrun"
|
|
||||||
PAR[2]="fn"
|
|
||||||
PAR[3]="var"
|
|
||||||
PAR[4]="par"
|
|
||||||
|
|
||||||
|
|
||||||
# initialize default values
|
|
||||||
PARVAL[1] = 100
|
|
||||||
PARVAL[2] = "myfname"
|
|
||||||
PARVAL[3] = 0
|
|
||||||
PARVAL[2] = "none"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# read command line defined variables
|
|
||||||
if (ARGC>1) {
|
|
||||||
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
|
|
||||||
for (i=1; i<=ARGC; i++) {
|
|
||||||
|
|
||||||
nsplit=split(ARGV[i],array,"=")
|
|
||||||
VAR = array[1];
|
|
||||||
VAL = array[2];
|
|
||||||
|
|
||||||
for (j=1; j<=NPAR; j++) {
|
|
||||||
if ( VAR==PAR[j] ) {
|
|
||||||
PARVAL[j] = VAL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
run=PARVAL[1]
|
|
||||||
fn=PARVAL[2]
|
|
||||||
var=PARVAL[3]
|
|
||||||
par=PARVAL[4]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# print command line arguments
|
|
||||||
for (i=1; i<=NPAR; i++){
|
|
||||||
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
|
|
||||||
}
|
|
||||||
|
|
||||||
#execute you command hereafter e.g. change temperature etc.
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,100 +0,0 @@
|
|||||||
#! /bin/awk -f
|
|
||||||
|
|
||||||
# this is an awk script to start a run
|
|
||||||
# you first need to run inimodule.awk to initialize
|
|
||||||
# the pattern, set Vc and set the trimbits
|
|
||||||
#
|
|
||||||
|
|
||||||
#####################################################################
|
|
||||||
# revision history #
|
|
||||||
#####################################################################
|
|
||||||
# 31.10.2001 first version #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# Bernd Schmitt #
|
|
||||||
# #
|
|
||||||
# bernd.schmitt@psi.ch #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# modifications: #
|
|
||||||
# #
|
|
||||||
# 1.3.2002 BS adapted for use with DCB #
|
|
||||||
# #
|
|
||||||
# 25.5.2002 BS adapted to new convert program #
|
|
||||||
# #
|
|
||||||
# 29.5.2002 sleep -> usleep for meas. time , TS #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
|
|
||||||
# initialize variables
|
|
||||||
NPAR=7
|
|
||||||
|
|
||||||
PAR[1]="nrun"
|
|
||||||
PAR[2]="fn"
|
|
||||||
PAR[3]="par"
|
|
||||||
PAR[4]="sv0"
|
|
||||||
PAR[5]="sv1"
|
|
||||||
PAR[6]="p0"
|
|
||||||
PAR[7]="p1"
|
|
||||||
|
|
||||||
# initialize default values
|
|
||||||
PARVAL[1] = 100
|
|
||||||
PARVAL[2] = "myfname"
|
|
||||||
PARVAL[3] = 1
|
|
||||||
PARVAL[4] = 0
|
|
||||||
PARVAL[5] = 0
|
|
||||||
PARVAL[6] = "none"
|
|
||||||
PARVAL[7] = "none"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# read command line defined variables
|
|
||||||
if (ARGC>1) {
|
|
||||||
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
|
|
||||||
for (i=1; i<=ARGC; i++) {
|
|
||||||
|
|
||||||
nsplit=split(ARGV[i],array,"=")
|
|
||||||
VAR = array[1];
|
|
||||||
VAL = array[2];
|
|
||||||
|
|
||||||
for (j=1; j<=NPAR; j++) {
|
|
||||||
if ( VAR==PAR[j] ) {
|
|
||||||
PARVAL[j] = VAL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
run=PARVAL[1]
|
|
||||||
fn=PARVAL[2]
|
|
||||||
"par"PAR[3]=
|
|
||||||
sv0=PAR[4]
|
|
||||||
sv1=PAR[5]
|
|
||||||
p0=PAR[6]
|
|
||||||
p1=PAR[7]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# print command line arguments
|
|
||||||
for (i=1; i<=NPAR; i++){
|
|
||||||
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
|
|
||||||
}
|
|
||||||
# printf("\n\n");
|
|
||||||
# system("close_shutter_g95")
|
|
||||||
|
|
||||||
# execute your actions hereafter
|
|
||||||
if (par==1) {
|
|
||||||
#open shutter
|
|
||||||
} else {
|
|
||||||
#close shutter
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
|||||||
#! /bin/awk -f
|
|
||||||
|
|
||||||
# this is an awk script to start a run
|
|
||||||
# you first need to run inimodule.awk to initialize
|
|
||||||
# the pattern, set Vc and set the trimbits
|
|
||||||
#
|
|
||||||
|
|
||||||
#####################################################################
|
|
||||||
# revision history #
|
|
||||||
#####################################################################
|
|
||||||
# 31.10.2001 first version #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# Bernd Schmitt #
|
|
||||||
# #
|
|
||||||
# bernd.schmitt@psi.ch #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
# #
|
|
||||||
# modifications: #
|
|
||||||
# #
|
|
||||||
# 1.3.2002 BS adapted for use with DCB #
|
|
||||||
# #
|
|
||||||
# 25.5.2002 BS adapted to new convert program #
|
|
||||||
# #
|
|
||||||
# 29.5.2002 sleep -> usleep for meas. time , TS #
|
|
||||||
# #
|
|
||||||
#####################################################################
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
|
|
||||||
# initialize variables
|
|
||||||
NPAR=2
|
|
||||||
|
|
||||||
PAR[1]="nrun"
|
|
||||||
PAR[2]="par"
|
|
||||||
|
|
||||||
|
|
||||||
# initialize default values
|
|
||||||
PARVAL[1] = 100
|
|
||||||
PARVAL[2] = "none"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# read command line defined variables
|
|
||||||
if (ARGC>1) {
|
|
||||||
printf("\n\nnumber of command line arguments: %i (incl. command)\n\n", ARGC);
|
|
||||||
for (i=1; i<=ARGC; i++) {
|
|
||||||
|
|
||||||
nsplit=split(ARGV[i],array,"=")
|
|
||||||
VAR = array[1];
|
|
||||||
VAL = array[2];
|
|
||||||
|
|
||||||
for (j=1; j<=NPAR; j++) {
|
|
||||||
if ( VAR==PAR[j] ) {
|
|
||||||
PARVAL[j] = VAL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
run=PARVAL[1]
|
|
||||||
par=PARVAL[2]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# print command line arguments
|
|
||||||
for (i=1; i<=NPAR; i++){
|
|
||||||
printf("\t... %2i.\t%7s = %s\n", i, PAR[i], PARVAL[i] );
|
|
||||||
}
|
|
||||||
#execute action hereafter
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
10
examples/two_gotthard.config
Normal file → Executable file
@ -8,13 +8,11 @@ hostname bchip007+bchip009+
|
|||||||
#0:port 1952
|
#0:port 1952
|
||||||
#0:stopport 1953
|
#0:stopport 1953
|
||||||
#0:rx_tcpport 1956
|
#0:rx_tcpport 1956
|
||||||
0:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
0:angdir 1.000000
|
0:angdir 1.000000
|
||||||
0:moveflag 0.000000
|
0:moveflag 0.000000
|
||||||
0:lock 0
|
|
||||||
0:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
0:ffdir /home/l_msdetect
|
0:ffdir /home/l_msdetect
|
||||||
0:extsig:0 off
|
0:extsig:0 off
|
||||||
|
|
||||||
0:detectorip 10.1.1.2
|
0:detectorip 10.1.1.2
|
||||||
#0:detectormac 00:aa:bb:cc:dd:ee
|
#0:detectormac 00:aa:bb:cc:dd:ee
|
||||||
#0:rx_udpport 50001
|
#0:rx_udpport 50001
|
||||||
@ -28,13 +26,11 @@ hostname bchip007+bchip009+
|
|||||||
#1:port 1952
|
#1:port 1952
|
||||||
#1:stopport 1953
|
#1:stopport 1953
|
||||||
1:rx_tcpport 1957
|
1:rx_tcpport 1957
|
||||||
1:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
1:angdir 1.000000
|
1:angdir 1.000000
|
||||||
1:moveflag 0.000000
|
1:moveflag 0.000000
|
||||||
1:lock 0
|
|
||||||
1:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
1:ffdir /home/l_msdetect
|
1:ffdir /home/l_msdetect
|
||||||
1:extsig:0 off
|
1:extsig:0 off
|
||||||
|
|
||||||
1:detectorip 10.1.2.2
|
1:detectorip 10.1.2.2
|
||||||
#1:detectormac 00:aa:bb:cc:dd:ee
|
#1:detectormac 00:aa:bb:cc:dd:ee
|
||||||
1:rx_udpport 50004
|
1:rx_udpport 50004
|
||||||
@ -56,4 +52,4 @@ badchannels none
|
|||||||
angconv none
|
angconv none
|
||||||
globaloff 0.000000
|
globaloff 0.000000
|
||||||
binsize 0.001000
|
binsize 0.001000
|
||||||
threaded 1
|
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
#####Any line with a # is not read######
|
|
||||||
|
|
||||||
#type Gotthard+
|
|
||||||
hostname bchip007+bchip009+
|
|
||||||
|
|
||||||
#0:hostname bchip007
|
|
||||||
#0:port 1952
|
|
||||||
#0:stopport 1953
|
|
||||||
#0:rx_tcpport 1956
|
|
||||||
0:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
0:angdir 1.000000
|
|
||||||
0:moveflag 0.000000
|
|
||||||
0:lock 0
|
|
||||||
0:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
0:ffdir /home/l_msdetect
|
|
||||||
0:extsig:0 off
|
|
||||||
0:extsig:1 off
|
|
||||||
0:extsig:2 off
|
|
||||||
0:extsig:3 off
|
|
||||||
#0:detectorip 10.1.1.2
|
|
||||||
#0:detectormac 00:aa:bb:cc:dd:ee
|
|
||||||
#0:rx_udpport 50001
|
|
||||||
#0:rx_udpip 10.1.1.1
|
|
||||||
#0:rx_hostname 129.129.202.134
|
|
||||||
0:outdir /data/speedt
|
|
||||||
0:vhighvoltage 120
|
|
||||||
|
|
||||||
|
|
||||||
#1:hostname bchip009
|
|
||||||
#1:port 1952
|
|
||||||
#1:stopport 1953
|
|
||||||
1:rx_tcpport 1957
|
|
||||||
1:settingsdir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
1:angdir 1.000000
|
|
||||||
1:moveflag 0.000000
|
|
||||||
1:lock 0
|
|
||||||
1:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
|
|
||||||
1:ffdir /home/l_msdetect
|
|
||||||
1:extsig:0 off
|
|
||||||
1:extsig:1 off
|
|
||||||
1:extsig:2 off
|
|
||||||
1:extsig:3 off
|
|
||||||
#1:detectorip 10.1.2.2
|
|
||||||
#1:detectormac 00:aa:bb:cc:dd:ee
|
|
||||||
#1:rx_udpport 50004
|
|
||||||
#1:rx_udpip 10.1.2.1
|
|
||||||
#1:rx_hostname 129.129.202.134
|
|
||||||
1:outdir /data/speedt
|
|
||||||
1:vhighvoltage 120
|
|
||||||
|
|
||||||
|
|
||||||
master -1
|
|
||||||
sync none
|
|
||||||
outdir /data/speedt
|
|
||||||
ffdir /home/l_msdetect
|
|
||||||
headerbefore none
|
|
||||||
headerafter none
|
|
||||||
headerbeforepar none
|
|
||||||
headerafterpar none
|
|
||||||
badchannels none
|
|
||||||
angconv none
|
|
||||||
globaloff 0.000000
|
|
||||||
binsize 0.001000
|
|
||||||
threaded 1
|
|
49
integrationTests/CMakeLists.txt
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
# MESSAGE( STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR} )
|
||||||
|
# MESSAGE( STATUS "PROJECT_SOURCE_DIR: " ${PROJECT_SOURCE_DIR} )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# include_directories(
|
||||||
|
# ${PROJECT_SOURCE_DIR}/catch
|
||||||
|
# )
|
||||||
|
|
||||||
|
target_sources(tests PRIVATE
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/test-integrationMulti.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/test-integrationDectector.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/test-eigerIntegration.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
# if(SLS_USE_TESTS)
|
||||||
|
# set(TEST_SOURCES
|
||||||
|
# src/test-slsDetector.cpp
|
||||||
|
# src/test.cpp
|
||||||
|
# )
|
||||||
|
# add_executable(detector_test ${TEST_SOURCES})
|
||||||
|
|
||||||
|
# target_link_libraries(detector_test
|
||||||
|
# slsDetectorShared
|
||||||
|
# slsProjectOptions
|
||||||
|
# slsProjectWarnings
|
||||||
|
# slsSupportLib
|
||||||
|
# pthread
|
||||||
|
# rt
|
||||||
|
# )
|
||||||
|
# set_target_properties(detector_test PROPERTIES
|
||||||
|
# RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
||||||
|
# )
|
||||||
|
|
||||||
|
# add_executable(a src/a.cpp)
|
||||||
|
# target_link_libraries(a
|
||||||
|
# slsProjectOptions
|
||||||
|
# slsProjectWarnings
|
||||||
|
# slsDetectorShared
|
||||||
|
# slsSupportLib
|
||||||
|
# pthread
|
||||||
|
# rt
|
||||||
|
# )
|
||||||
|
# set_target_properties(a PROPERTIES
|
||||||
|
# RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
||||||
|
# )
|
||||||
|
|
||||||
|
# endif()
|
||||||
|
|
88
integrationTests/a.cpp
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
|
||||||
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#include "ClientSocket.h"
|
||||||
|
#include "Timer.h"
|
||||||
|
#include "logger.h"
|
||||||
|
#include "network_utils.h"
|
||||||
|
#include "slsDetector.h"
|
||||||
|
#include "sls_detector_defs.h"
|
||||||
|
#include "sls_detector_exceptions.h"
|
||||||
|
#include "sls_detector_funcs.h"
|
||||||
|
#include <iomanip>
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <string>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include "network_utils.h"
|
||||||
|
|
||||||
|
using namespace sls;
|
||||||
|
using ROI = slsDetectorDefs::ROI;
|
||||||
|
|
||||||
|
// Easy printing of an ROI
|
||||||
|
std::ostream &operator<<(std::ostream &out, const ROI &r) {
|
||||||
|
return out << "xmin: " << std::setw(5) << r.xmin
|
||||||
|
<< " xmax: " << std::setw(5) << r.xmax
|
||||||
|
<< " ymin: " << std::setw(5) << r.ymin
|
||||||
|
<< " ymax: " << std::setw(5) << r.ymax;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
|
||||||
|
std::cout << "nullptr: " << sizeof(nullptr) << "\n";
|
||||||
|
// int ret[]{0,0,0};
|
||||||
|
// for (auto i: ret)
|
||||||
|
// std::cout << i << "\n";
|
||||||
|
// uint32_t imageSize = 101;
|
||||||
|
// uint32_t packetSize = 100;
|
||||||
|
// std::cout << "a: " << std::ceil((double)imageSize / (double)packetSize) <<'\n';
|
||||||
|
// std::cout << "b: " << imageSize / packetSize <<'\n';
|
||||||
|
// std::cout << "c: " << static_cast<double>(imageSize / packetSize) << '\n';
|
||||||
|
// std::cout << "c: " << (imageSize + packetSize-1) / packetSize << '\n';
|
||||||
|
|
||||||
|
// slsDetectorDefs::ROI roilimits[5];
|
||||||
|
// roilimits[0].xmin = 5;
|
||||||
|
// roilimits[0].xmax = 12;
|
||||||
|
// roilimits[0].ymin = 5;
|
||||||
|
// roilimits[0].ymax = 15;
|
||||||
|
|
||||||
|
// roilimits[1].xmin = 0;
|
||||||
|
// roilimits[1].xmax = 3;
|
||||||
|
// roilimits[1].ymin = 20;
|
||||||
|
// roilimits[1].ymax = 25;
|
||||||
|
|
||||||
|
// roilimits[2].xmin = 500;
|
||||||
|
// roilimits[2].xmax = 600;
|
||||||
|
// roilimits[2].ymin = 100;
|
||||||
|
// roilimits[2].ymax = 200;
|
||||||
|
|
||||||
|
// roilimits[3].xmin = 300;
|
||||||
|
// roilimits[3].xmax = 500;
|
||||||
|
// roilimits[3].ymin = 800;
|
||||||
|
// roilimits[3].ymax = 900;
|
||||||
|
|
||||||
|
// roilimits[4].xmin = 1000;
|
||||||
|
// roilimits[4].xmax = 2000;
|
||||||
|
// roilimits[4].ymin = 300;
|
||||||
|
// roilimits[4].ymax = 500;
|
||||||
|
|
||||||
|
// std::cout << "Before sorting:\n";
|
||||||
|
// for (auto r : roilimits) {
|
||||||
|
// std::cout << r << '\n';
|
||||||
|
// }
|
||||||
|
|
||||||
|
// std::sort(std::begin(roilimits), std::end(roilimits),
|
||||||
|
// [](ROI a, ROI b) { return a.xmin < b.xmin; });
|
||||||
|
|
||||||
|
// std::cout << "After sorting: \n";
|
||||||
|
// for (auto r : roilimits) {
|
||||||
|
// std::cout << r << '\n';
|
||||||
|
// }
|
||||||
|
}
|
199
integrationTests/test-eigerIntegration.cpp
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
#include "catch.hpp"
|
||||||
|
#include "multiSlsDetector.h"
|
||||||
|
#include "string_utils.h"
|
||||||
|
#include "tests/globals.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
class MultiDetectorFixture {
|
||||||
|
protected:
|
||||||
|
multiSlsDetector d;
|
||||||
|
|
||||||
|
public:
|
||||||
|
MultiDetectorFixture() : d(0, true, true) {
|
||||||
|
d.setHostname(hostname.c_str());
|
||||||
|
if (my_ip != "undefined")
|
||||||
|
d.setReceiverHostname(my_ip);
|
||||||
|
}
|
||||||
|
~MultiDetectorFixture() { d.freeSharedMemory(); }
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Set and get dacs",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
auto th = 1000;
|
||||||
|
|
||||||
|
// set and read back each individual dac of EIGER
|
||||||
|
d.setDAC(0, di::E_SvP, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_SvP, 0) == 0);
|
||||||
|
d.setDAC(4000, di::E_SvN, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_SvN, 0) == 4000);
|
||||||
|
d.setDAC(2000, di::E_Vtr, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vtr, 0) == 2000);
|
||||||
|
d.setDAC(3500, di::E_Vrf, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vrf, 0) == 3500);
|
||||||
|
d.setDAC(1400, di::E_Vrs, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vrs, 0) == 1400);
|
||||||
|
d.setDAC(2556, di::E_Vtgstv, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vtgstv, 0) == 2556);
|
||||||
|
d.setDAC(1500, di::E_Vcmp_ll, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_ll, 0) == 1500);
|
||||||
|
d.setDAC(1400, di::E_Vcmp_lr, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_lr, 0) == 1400);
|
||||||
|
d.setDAC(4000, di::E_cal, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_cal, 0) == 4000);
|
||||||
|
d.setDAC(1300, di::E_Vcmp_rl, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_rl, 0) == 1300);
|
||||||
|
d.setDAC(1200, di::E_Vcmp_rr, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_rr, 0) == 1200);
|
||||||
|
d.setDAC(1100, di::E_rxb_rb, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_rxb_rb, 0) == 1100);
|
||||||
|
d.setDAC(1100, di::E_rxb_lb, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_rxb_lb, 0) == 1100);
|
||||||
|
d.setDAC(1500, di::E_Vcp, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcp, 0) == 1500);
|
||||||
|
d.setDAC(2000, di::E_Vcn, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcn, 0) == 2000);
|
||||||
|
d.setDAC(1550, di::E_Vis, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vis, 0) == 1550);
|
||||||
|
d.setDAC(660, di::IO_DELAY, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::IO_DELAY, 0) == 660);
|
||||||
|
|
||||||
|
// setting threshold sets all individual vcmp
|
||||||
|
d.setDAC(th, di::THRESHOLD, 0);
|
||||||
|
CHECK(d.setDAC(-1, di::THRESHOLD, 0) == th);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_ll, 0) == th);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_lr, 0) == th);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_rl, 0) == th);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_rr, 0) == th);
|
||||||
|
|
||||||
|
// different values gives -1
|
||||||
|
if (d.getNumberOfDetectors() > 1) {
|
||||||
|
d.setDAC(1600, di::E_Vcmp_ll, 0, 0);
|
||||||
|
d.setDAC(1700, di::E_Vcmp_ll, 0, 1);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_ll, 0, 0) == 1600);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_ll, 0, 1) == 1700);
|
||||||
|
CHECK(d.setDAC(-1, di::E_Vcmp_ll, 0) == -1);
|
||||||
|
CHECK(d.setDAC(-1, di::THRESHOLD, 0) == -1);
|
||||||
|
CHECK(d.setDAC(-1, di::THRESHOLD, 0, 0) == -1);
|
||||||
|
CHECK(d.setDAC(-1, di::THRESHOLD, 0, 1) == -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Read temperatures",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
std::vector<di> tempindex{di::TEMPERATURE_FPGA, di::TEMPERATURE_FPGA2,
|
||||||
|
di::TEMPERATURE_FPGA3};
|
||||||
|
for (auto index : tempindex) {
|
||||||
|
for (int i = 0; i != d.getNumberOfDetectors(); ++i) {
|
||||||
|
double temp = static_cast<double>(d.getADC(index, 0)) / 1000;
|
||||||
|
CHECK(temp > 20);
|
||||||
|
CHECK(temp < 60);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int to_time(uint32_t reg) {
|
||||||
|
uint32_t clocks = reg >> 3;
|
||||||
|
uint32_t exponent = (reg & 0b111) + 1;
|
||||||
|
return clocks * pow(10, exponent);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Read/write register",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
d.setTimer(ti::MEASUREMENTS_NUMBER, 1);
|
||||||
|
d.setNumberOfFrames(1);
|
||||||
|
d.setExposureTime(10000);
|
||||||
|
d.acquire();
|
||||||
|
CHECK(to_time(d.readRegister(0x4, 0)) == 10000);
|
||||||
|
|
||||||
|
d.writeRegister(0x4, 500);
|
||||||
|
CHECK(d.readRegister(0x4) == 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Set dynamic range",
|
||||||
|
"[.eigerintegration][cli][dr]") {
|
||||||
|
std::vector<int> dynamic_range{4, 8, 16, 32};
|
||||||
|
for (auto dr : dynamic_range) {
|
||||||
|
d.setDynamicRange(dr);
|
||||||
|
CHECK(d.setDynamicRange() == dr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Set clock divider",
|
||||||
|
"[.eigerintegration][cli][this]") {
|
||||||
|
for (int i = 0; i != 3; ++i) {
|
||||||
|
d.setSpeed(sv::CLOCK_DIVIDER, i);
|
||||||
|
CHECK(d.setSpeed(sv::CLOCK_DIVIDER) == i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Get time left",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
CHECK_THROWS(d.getTimeLeft(ti::PROGRESS));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Get ID", "[.eigerintegration][cli]") {
|
||||||
|
std::string hn = hostname;
|
||||||
|
hn.erase(std::remove(begin(hn), end(hn), 'b'), end(hn));
|
||||||
|
hn.erase(std::remove(begin(hn), end(hn), 'e'), end(hn));
|
||||||
|
auto hostnames = sls::split(hn, '+');
|
||||||
|
CHECK(hostnames.size() == d.getNumberOfDetectors());
|
||||||
|
for (int i = 0; i != d.getNumberOfDetectors(); ++i) {
|
||||||
|
CHECK(d.getId(defs::DETECTOR_SERIAL_NUMBER, 0) ==
|
||||||
|
std::stoi(hostnames[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Lock server",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
|
||||||
|
d.lockServer(1);
|
||||||
|
CHECK(d.lockServer() == 1);
|
||||||
|
d.lockServer(0);
|
||||||
|
CHECK(d.lockServer() == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Settings", "[.eigerintegration][cli]") {
|
||||||
|
CHECK(d.setSettings(defs::STANDARD) == defs::STANDARD);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "Set readout flags",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
d.setReadOutFlags(defs::PARALLEL);
|
||||||
|
CHECK((d.setReadOutFlags() & defs::PARALLEL));
|
||||||
|
|
||||||
|
d.setReadOutFlags(defs::NONPARALLEL);
|
||||||
|
CHECK_FALSE((d.setReadOutFlags() & defs::PARALLEL));
|
||||||
|
CHECK((d.setReadOutFlags() & defs::NONPARALLEL));
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST_CASE_METHOD(MultiDetectorFixture, "Flow control and tengiga",
|
||||||
|
// "[.eigerintegration][cli]") {
|
||||||
|
// d.setFlowControl10G(1);
|
||||||
|
// CHECK(d.setFlowControl10G() == 1);
|
||||||
|
// d.setFlowControl10G(0);
|
||||||
|
// CHECK(d.setFlowControl10G() == 0);
|
||||||
|
|
||||||
|
// d.enableTenGigabitEthernet(1);
|
||||||
|
// CHECK(d.enableTenGigabitEthernet() == 1);
|
||||||
|
// d.enableTenGigabitEthernet(0);
|
||||||
|
// CHECK(d.enableTenGigabitEthernet() == 0);
|
||||||
|
// }
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "activate", "[.eigerintegration][cli]") {
|
||||||
|
d.activate(0);
|
||||||
|
CHECK(d.activate() == 0);
|
||||||
|
d.activate(1);
|
||||||
|
CHECK(d.activate() == 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "all trimbits",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
d.setAllTrimbits(32);
|
||||||
|
CHECK(d.setAllTrimbits(-1) == 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE_METHOD(MultiDetectorFixture, "rate correction",
|
||||||
|
"[.eigerintegration][cli]") {
|
||||||
|
d.setRateCorrection(200);
|
||||||
|
CHECK(d.getRateCorrection() == 200);
|
||||||
|
}
|
482
integrationTests/test-integrationDectector.cpp
Executable file
@ -0,0 +1,482 @@
|
|||||||
|
|
||||||
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#include "ClientSocket.h"
|
||||||
|
#include "logger.h"
|
||||||
|
#include "multiSlsDetector.h"
|
||||||
|
#include "slsDetector.h"
|
||||||
|
#include "sls_detector_defs.h"
|
||||||
|
|
||||||
|
#include "Timer.h"
|
||||||
|
#include "sls_detector_funcs.h"
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
#define VERBOSE
|
||||||
|
|
||||||
|
// Header holding all configurations for different detectors
|
||||||
|
#include "tests/config.h"
|
||||||
|
#include "tests/globals.h"
|
||||||
|
|
||||||
|
// using dt = slsDetectorDefs::detectorType;
|
||||||
|
// extern std::string hostname;
|
||||||
|
// extern std::string detector_type;
|
||||||
|
// extern dt type;
|
||||||
|
|
||||||
|
TEST_CASE("Single detector no receiver", "[.integration][.single]") {
|
||||||
|
auto t = slsDetector::getTypeFromDetector(hostname);
|
||||||
|
CHECK(t == type);
|
||||||
|
|
||||||
|
slsDetector d(t);
|
||||||
|
CHECK(d.getDetectorTypeAsEnum() == t);
|
||||||
|
CHECK(d.getDetectorTypeAsString() == detector_type);
|
||||||
|
|
||||||
|
d.setHostname(hostname);
|
||||||
|
CHECK(d.getHostname() == hostname);
|
||||||
|
|
||||||
|
d.setOnline(true);
|
||||||
|
CHECK(d.getOnlineFlag() == true);
|
||||||
|
|
||||||
|
CHECK(d.setDetectorType() == type);
|
||||||
|
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Set control port then create a new object with this control port",
|
||||||
|
"[.integration][.single]") {
|
||||||
|
/*
|
||||||
|
TODO!
|
||||||
|
Standard port but should not be hardcoded
|
||||||
|
Is this the best way to initialize the detectors
|
||||||
|
Using braces to make the object go out of scope
|
||||||
|
*/
|
||||||
|
int old_cport = DEFAULT_PORTNO;
|
||||||
|
int old_sport = DEFAULT_PORTNO + 1;
|
||||||
|
int new_cport = 1993;
|
||||||
|
int new_sport = 2000;
|
||||||
|
{
|
||||||
|
slsDetector d(type);
|
||||||
|
d.setHostname(hostname);
|
||||||
|
d.setOnline(true);
|
||||||
|
CHECK(d.getControlPort() == old_cport);
|
||||||
|
d.setControlPort(new_cport);
|
||||||
|
CHECK(d.getStopPort() == old_sport);
|
||||||
|
d.setStopPort(new_sport);
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
||||||
|
{
|
||||||
|
slsDetector d(type);
|
||||||
|
d.setHostname(hostname);
|
||||||
|
d.setControlPort(new_cport);
|
||||||
|
d.setStopPort(new_sport);
|
||||||
|
CHECK(d.getControlPort() == new_cport);
|
||||||
|
CHECK(d.getStopPort() == new_sport);
|
||||||
|
|
||||||
|
d.setOnline(true);
|
||||||
|
|
||||||
|
// Reset standard ports
|
||||||
|
d.setControlPort(old_cport);
|
||||||
|
d.setStopPort(old_sport);
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
slsDetector d(type);
|
||||||
|
d.setHostname(hostname);
|
||||||
|
d.setOnline(true);
|
||||||
|
CHECK(d.getStopPort() == DEFAULT_PORTNO + 1);
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("single EIGER detector no receiver basic set and get",
|
||||||
|
"[.integration][eiger]") {
|
||||||
|
// TODO! this test should take command line arguments for config
|
||||||
|
SingleDetectorConfig c;
|
||||||
|
|
||||||
|
// Read type by connecting to the detector
|
||||||
|
auto type = slsDetector::getTypeFromDetector(c.hostname);
|
||||||
|
CHECK(type == c.type_enum);
|
||||||
|
|
||||||
|
// Create slsDetector of said type and set hostname and detector online
|
||||||
|
slsDetector d(type);
|
||||||
|
CHECK(d.getDetectorTypeAsEnum() == type);
|
||||||
|
CHECK(d.getDetectorTypeAsString() == c.type_string);
|
||||||
|
|
||||||
|
d.setHostname(c.hostname);
|
||||||
|
CHECK(d.getHostname() == c.hostname);
|
||||||
|
|
||||||
|
d.setOnline(true);
|
||||||
|
CHECK(d.getOnlineFlag() == true);
|
||||||
|
|
||||||
|
CHECK(d.getReceiverOnline() == false);
|
||||||
|
CHECK(d.checkDetectorVersionCompatibility() == slsDetectorDefs::OK);
|
||||||
|
|
||||||
|
// Setting and reading exposure time
|
||||||
|
auto t = 1000000000;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::ACQUISITION_TIME, t);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::ACQUISITION_TIME) == t);
|
||||||
|
|
||||||
|
// size of an eiger half module with and without gap pixels
|
||||||
|
CHECK(d.getTotalNumberOfChannels() == 256 * 256 * 4);
|
||||||
|
CHECK(d.getTotalNumberOfChannels(slsDetectorDefs::dimension::X) == 1024);
|
||||||
|
CHECK(d.getTotalNumberOfChannels(slsDetectorDefs::dimension::Y) == 256);
|
||||||
|
// CHECK(d.getTotalNumberOfChannels(slsDetectorDefs::dimension::Z) == 1);
|
||||||
|
CHECK(d.getTotalNumberOfChannelsInclGapPixels(
|
||||||
|
slsDetectorDefs::dimension::X) == 1024);
|
||||||
|
CHECK(d.getTotalNumberOfChannelsInclGapPixels(
|
||||||
|
slsDetectorDefs::dimension::Y) == 256);
|
||||||
|
// CHECK(d.getTotalNumberOfChannelsInclGapPixels(slsDetectorDefs::dimension::Z)
|
||||||
|
// == 1);
|
||||||
|
|
||||||
|
CHECK(d.getNChans() == 256 * 256);
|
||||||
|
CHECK(d.getNChans(slsDetectorDefs::dimension::X) == 256);
|
||||||
|
CHECK(d.getNChans(slsDetectorDefs::dimension::Y) == 256);
|
||||||
|
// CHECK(d.getNChans(slsDetectorDefs::dimension::Z) == 1);
|
||||||
|
|
||||||
|
CHECK(d.getNChips() == 4);
|
||||||
|
CHECK(d.getNChips(slsDetectorDefs::dimension::X) == 4);
|
||||||
|
CHECK(d.getNChips(slsDetectorDefs::dimension::Y) == 1);
|
||||||
|
// CHECK(d.getNChips(slsDetectorDefs::dimension::Z) == 1);
|
||||||
|
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("Locking mechanism and last ip", "[.integration][.single]") {
|
||||||
|
slsDetector d(type);
|
||||||
|
d.setHostname(hostname);
|
||||||
|
d.setOnline(true);
|
||||||
|
|
||||||
|
// Check that detector server is unlocked then lock
|
||||||
|
CHECK(d.lockServer() == 0);
|
||||||
|
d.lockServer(1);
|
||||||
|
CHECK(d.lockServer() == 1);
|
||||||
|
|
||||||
|
// Can we still access the detector while it's locked
|
||||||
|
auto t = 1300000000;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::ACQUISITION_TIME, t);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::ACQUISITION_TIME) == t);
|
||||||
|
|
||||||
|
// unlock again and free
|
||||||
|
d.lockServer(0);
|
||||||
|
CHECK(d.lockServer() == 0);
|
||||||
|
|
||||||
|
CHECK(d.getLastClientIP() == my_ip);
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Set settings", "[.integration][.single]"){
|
||||||
|
slsDetector d(type);
|
||||||
|
d.setHostname(hostname);
|
||||||
|
d.setOnline(true);
|
||||||
|
CHECK(d.setSettings(defs::STANDARD) == defs::STANDARD);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("Timer functions", "[.integration][cli]") {
|
||||||
|
// FRAME_NUMBER, /**< number of real time frames: total number of
|
||||||
|
// acquisitions is number or frames*number of cycles */ ACQUISITION_TIME,
|
||||||
|
// /**< exposure time */ FRAME_PERIOD, /**< period between exposures */
|
||||||
|
// DELAY_AFTER_TRIGGER, /**< delay between trigger and start of exposure or
|
||||||
|
// readout (in triggered mode) */ GATES_NUMBER, /**< number of gates per
|
||||||
|
// frame (in gated mode) */ CYCLES_NUMBER, /**< number of cycles: total
|
||||||
|
// number of acquisitions is number or frames*number of cycles */
|
||||||
|
// ACTUAL_TIME, /**< Actual time of the detector's internal timer */
|
||||||
|
// MEASUREMENT_TIME, /**< Time of the measurement from the detector (fifo)
|
||||||
|
// */
|
||||||
|
|
||||||
|
// PROGRESS, /**< fraction of measurement elapsed - only get! */
|
||||||
|
// MEASUREMENTS_NUMBER,
|
||||||
|
// FRAMES_FROM_START,
|
||||||
|
// FRAMES_FROM_START_PG,
|
||||||
|
// SAMPLES,
|
||||||
|
// SUBFRAME_ACQUISITION_TIME, /**< subframe exposure time */
|
||||||
|
// STORAGE_CELL_NUMBER, /**<number of storage cells */
|
||||||
|
// SUBFRAME_DEADTIME, /**< subframe deadtime */
|
||||||
|
// MEASURED_PERIOD, /**< measured period */
|
||||||
|
// MEASURED_SUBPERIOD, /**< measured subperiod */
|
||||||
|
// MAX_TIMERS
|
||||||
|
|
||||||
|
slsDetector d(type);
|
||||||
|
d.setHostname(hostname);
|
||||||
|
d.setOnline(true);
|
||||||
|
|
||||||
|
// Number of frames
|
||||||
|
auto frames = 5;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::FRAME_NUMBER, frames);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::FRAME_NUMBER) == frames);
|
||||||
|
|
||||||
|
auto exptime = 2000000000;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::ACQUISITION_TIME, exptime);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::ACQUISITION_TIME) == exptime);
|
||||||
|
|
||||||
|
auto period = 2000000000;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::FRAME_PERIOD, period);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::FRAME_PERIOD) == period);
|
||||||
|
|
||||||
|
if (type != dt::EIGER) {
|
||||||
|
auto delay = 10000;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::DELAY_AFTER_TRIGGER, delay);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::DELAY_AFTER_TRIGGER) ==
|
||||||
|
delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type != dt::EIGER) {
|
||||||
|
auto gates = 1;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::GATES_NUMBER, gates);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::GATES_NUMBER) == gates);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto cycles = 2;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::CYCLES_NUMBER, cycles);
|
||||||
|
CHECK(d.setTimer(slsDetectorDefs::timerIndex::CYCLES_NUMBER) == cycles);
|
||||||
|
|
||||||
|
if (type == dt::EIGER) {
|
||||||
|
auto subtime = 200;
|
||||||
|
d.setTimer(slsDetectorDefs::timerIndex::SUBFRAME_ACQUISITION_TIME,
|
||||||
|
subtime);
|
||||||
|
CHECK(d.setTimer(
|
||||||
|
slsDetectorDefs::timerIndex::SUBFRAME_ACQUISITION_TIME) ==
|
||||||
|
subtime);
|
||||||
|
}
|
||||||
|
// for (int i =0; i!=frames; ++i)
|
||||||
|
d.startAndReadAll();
|
||||||
|
|
||||||
|
d.freeSharedMemory();
|
||||||
|
|
||||||
|
// If we add a timer we should add tests for the timer
|
||||||
|
CHECK(slsDetectorDefs::MAX_TIMERS == 19);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST_CASE("Aquire", "[.integration][eiger]"){
|
||||||
|
// SingleDetectorConfig c;
|
||||||
|
// auto type = slsDetector::getTypeFromDetector(c.hostname);
|
||||||
|
// slsDetector d(type);
|
||||||
|
// d.setHostname(c.hostname);
|
||||||
|
// d.setOnline(true);
|
||||||
|
|
||||||
|
// auto period = 1000000000;
|
||||||
|
// auto exptime = 100000000;
|
||||||
|
// d.setTimer(slsDetectorDefs::timerIndex::FRAME_NUMBER, 5);
|
||||||
|
// d.setTimer(slsDetectorDefs::timerIndex::ACQUISITION_TIME, exptime);
|
||||||
|
// d.setTimer(slsDetectorDefs::timerIndex::FRAME_PERIOD, period);
|
||||||
|
// d.startAndReadAll();
|
||||||
|
|
||||||
|
// auto rperiod =
|
||||||
|
// d.getTimeLeft(slsDetectorDefs::timerIndex::MEASURED_PERIOD);
|
||||||
|
// CHECK(rperiod == 0.1);
|
||||||
|
|
||||||
|
// d.freeSharedMemory();
|
||||||
|
// }
|
||||||
|
|
||||||
|
TEST_CASE(
|
||||||
|
"Eiger Dynamic Range with effect on rate correction and clock divider",
|
||||||
|
"[.eigerintegration]") {
|
||||||
|
SingleDetectorConfig c;
|
||||||
|
|
||||||
|
int ratecorr = 125;
|
||||||
|
|
||||||
|
// pick up multi detector from shm id 0
|
||||||
|
multiSlsDetector m(0);
|
||||||
|
|
||||||
|
// ensure eiger detector type, hostname and online
|
||||||
|
REQUIRE(m.getDetectorTypeAsEnum() == c.type_enum);
|
||||||
|
REQUIRE(m.getHostname() == c.hostname);
|
||||||
|
REQUIRE(m.setOnline(true) == slsDetectorDefs::ONLINE_FLAG);
|
||||||
|
|
||||||
|
// starting state with rate correction off
|
||||||
|
CHECK(m.setRateCorrection(0) == 0);
|
||||||
|
|
||||||
|
// dr 16: clk divider, no change for ratecorr
|
||||||
|
CHECK(m.setDynamicRange(16) == 16);
|
||||||
|
CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 1);
|
||||||
|
CHECK(m.getRateCorrection() == 0);
|
||||||
|
|
||||||
|
// dr 32: clk divider, no change for ratecorr
|
||||||
|
CHECK(m.setDynamicRange(32) == 32);
|
||||||
|
CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 2);
|
||||||
|
CHECK(m.getRateCorrection() == 0);
|
||||||
|
|
||||||
|
// other drs: no change for clk divider, no change for ratecorr
|
||||||
|
CHECK(m.setDynamicRange(8) == 8);
|
||||||
|
CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 2);
|
||||||
|
CHECK(m.getRateCorrection() == 0);
|
||||||
|
CHECK(m.setDynamicRange(4) == 4);
|
||||||
|
CHECK(m.setSpeed(slsDetectorDefs::CLOCK_DIVIDER) == 2);
|
||||||
|
CHECK(m.getRateCorrection() == 0);
|
||||||
|
|
||||||
|
// switching on rate correction with dr 16, 32
|
||||||
|
m.setDynamicRange(16);
|
||||||
|
m.setRateCorrection(ratecorr);
|
||||||
|
CHECK(m.getRateCorrection() == ratecorr);
|
||||||
|
m.setDynamicRange(32);
|
||||||
|
CHECK(m.getRateCorrection() == ratecorr);
|
||||||
|
|
||||||
|
// ratecorr fail with dr 4 or 8
|
||||||
|
CHECK_THROWS_AS(m.setDynamicRange(8), sls::NonCriticalError);
|
||||||
|
CHECK(m.getRateCorrection() == 0);
|
||||||
|
m.setDynamicRange(16);
|
||||||
|
m.setDynamicRange(16);
|
||||||
|
m.setRateCorrection(ratecorr);
|
||||||
|
m.setDynamicRange(16);
|
||||||
|
m.setRateCorrection(ratecorr);
|
||||||
|
CHECK_THROWS_AS(m.setDynamicRange(4), sls::NonCriticalError);
|
||||||
|
CHECK(m.getRateCorrection() == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Chiptestboard Loading Patterns", "[.ctbintegration]") {
|
||||||
|
SingleDetectorConfig c;
|
||||||
|
|
||||||
|
// pick up multi detector from shm id 0
|
||||||
|
multiSlsDetector m(0);
|
||||||
|
|
||||||
|
// ensure ctb detector type, hostname and online
|
||||||
|
REQUIRE(m.getDetectorTypeAsEnum() == c.type_enum);
|
||||||
|
REQUIRE(m.getHostname() == c.hostname);
|
||||||
|
REQUIRE(m.setOnline(true) == slsDetectorDefs::ONLINE_FLAG);
|
||||||
|
|
||||||
|
uint64_t word = 0;
|
||||||
|
int addr = 0;
|
||||||
|
int level = 0;
|
||||||
|
const int MAX_ADDR = 0x7fff;
|
||||||
|
|
||||||
|
word = 0xc000000000f47ff;
|
||||||
|
CHECK(m.setPatternIOControl(word) == word);
|
||||||
|
CHECK(m.setPatternIOControl(-1) == word);
|
||||||
|
CHECK(m.setPatternIOControl(0) == 0);
|
||||||
|
|
||||||
|
CHECK(m.setPatternClockControl(word) == word);
|
||||||
|
CHECK(m.setPatternClockControl(-1) == word);
|
||||||
|
CHECK(m.setPatternClockControl(0) == 0);
|
||||||
|
|
||||||
|
// testing pattern word will execute the pattern as well
|
||||||
|
addr = 0;
|
||||||
|
m.setPatternWord(addr, word);
|
||||||
|
CHECK(m.setPatternWord(addr, -1) == word);
|
||||||
|
addr = MAX_ADDR - 1;
|
||||||
|
m.setPatternWord(addr, word);
|
||||||
|
CHECK(m.setPatternWord(addr, -1) == word);
|
||||||
|
addr = 0x2FF;
|
||||||
|
m.setPatternWord(addr, word);
|
||||||
|
CHECK(m.setPatternWord(addr, -1) == word);
|
||||||
|
addr = MAX_ADDR;
|
||||||
|
CHECK_THROWS_AS(m.setPatternWord(addr, word), sls::NonCriticalError);
|
||||||
|
CHECK_THROWS_WITH(m.setPatternWord(addr, word),
|
||||||
|
Catch::Matchers::Contains("be between 0 and"));
|
||||||
|
addr = -1;
|
||||||
|
CHECK_THROWS_AS(m.setPatternWord(addr, word), sls::NonCriticalError);
|
||||||
|
CHECK_THROWS_WITH(m.setPatternWord(addr, word),
|
||||||
|
Catch::Matchers::Contains("be between 0 and"));
|
||||||
|
|
||||||
|
addr = 0x2FF;
|
||||||
|
for (level = 0; level < 3; ++level) {
|
||||||
|
CHECK(m.setPatternWaitAddr(level, addr) == addr);
|
||||||
|
CHECK(m.setPatternWaitAddr(level, -1) == addr);
|
||||||
|
}
|
||||||
|
CHECK_THROWS_WITH(m.setPatternWaitAddr(-1, addr),
|
||||||
|
Catch::Matchers::Contains("be between 0 and"));
|
||||||
|
CHECK_THROWS_WITH(m.setPatternWaitAddr(0, MAX_ADDR),
|
||||||
|
Catch::Matchers::Contains("be between 0 and"));
|
||||||
|
|
||||||
|
for (level = 0; level < 3; ++level) {
|
||||||
|
CHECK(m.setPatternWaitTime(level, word) == word);
|
||||||
|
CHECK(m.setPatternWaitTime(level, -1) == word);
|
||||||
|
}
|
||||||
|
CHECK_THROWS_WITH(m.setPatternWaitTime(-1, word),
|
||||||
|
Catch::Matchers::Contains("be between 0 and"));
|
||||||
|
|
||||||
|
{
|
||||||
|
int startaddr = addr;
|
||||||
|
int stopaddr = addr + 5;
|
||||||
|
int nloops = 2;
|
||||||
|
for (level = 0; level < 3; ++level) {
|
||||||
|
m.setPatternLoops(level, startaddr, stopaddr, nloops);
|
||||||
|
auto r = m.getPatternLoops(level);
|
||||||
|
CHECK(r[0] == startaddr);
|
||||||
|
CHECK(r[1] == stopaddr);
|
||||||
|
CHECK(r[2] == nloops);
|
||||||
|
}
|
||||||
|
m.setPatternLoops(-1, startaddr, stopaddr, nloops);
|
||||||
|
auto r = m.getPatternLoops(-1);
|
||||||
|
CHECK(r[0] == startaddr);
|
||||||
|
CHECK(r[1] == stopaddr);
|
||||||
|
CHECK(r[2] == -1);
|
||||||
|
|
||||||
|
CHECK_THROWS_WITH(m.setPatternLoops(-1, startaddr, MAX_ADDR, nloops),
|
||||||
|
Catch::Matchers::Contains("be less than"));
|
||||||
|
CHECK_THROWS_WITH(m.setPatternLoops(-1, MAX_ADDR, stopaddr, nloops),
|
||||||
|
Catch::Matchers::Contains("be less than"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("Chiptestboard Dbit offset, list, sampling, advinvert", "[.ctbintegration][dbit]") {
|
||||||
|
SingleDetectorConfig c;
|
||||||
|
|
||||||
|
// pick up multi detector from shm id 0
|
||||||
|
multiSlsDetector m(0);
|
||||||
|
|
||||||
|
// ensure ctb detector type, hostname and online
|
||||||
|
REQUIRE(m.getDetectorTypeAsEnum() == c.type_enum);
|
||||||
|
REQUIRE(m.getHostname() == c.hostname);
|
||||||
|
REQUIRE(m.setOnline(true) == slsDetectorDefs::ONLINE_FLAG);
|
||||||
|
|
||||||
|
// dbit offset
|
||||||
|
m.setReceiverDbitOffset(0);
|
||||||
|
CHECK(m.getReceiverDbitOffset() == 0);
|
||||||
|
m.setReceiverDbitOffset(-1);
|
||||||
|
CHECK(m.getReceiverDbitOffset() == 0);
|
||||||
|
m.setReceiverDbitOffset(5);
|
||||||
|
CHECK(m.getReceiverDbitOffset() == 5);
|
||||||
|
|
||||||
|
// dbit list
|
||||||
|
|
||||||
|
std::vector <int> list = m.getReceiverDbitList();
|
||||||
|
list.clear();
|
||||||
|
for (int i = 0; i < 10; ++i)
|
||||||
|
list.push_back(i);
|
||||||
|
m.setReceiverDbitList(list);
|
||||||
|
|
||||||
|
CHECK(m.getReceiverDbitList().size() == 10);
|
||||||
|
|
||||||
|
list.push_back(64);
|
||||||
|
CHECK_THROWS_AS(m.setReceiverDbitList(list), sls::RuntimeError);
|
||||||
|
CHECK_THROWS_WITH(m.setReceiverDbitList(list),
|
||||||
|
Catch::Matchers::Contains("be between 0 and 63"));
|
||||||
|
|
||||||
|
list.clear();
|
||||||
|
for (int i = 0; i < 65; ++i)
|
||||||
|
list.push_back(i);
|
||||||
|
CHECK(list.size() == 65);
|
||||||
|
CHECK_THROWS_WITH(m.setReceiverDbitList(list),
|
||||||
|
Catch::Matchers::Contains("be greater than 64"));
|
||||||
|
|
||||||
|
list.clear();
|
||||||
|
m.setReceiverDbitList(list);
|
||||||
|
CHECK(m.getReceiverDbitList().empty());
|
||||||
|
|
||||||
|
// adcinvert
|
||||||
|
m.setADCInvert(0);
|
||||||
|
CHECK(m.getADCInvert() == 0);
|
||||||
|
m.setADCInvert(5);
|
||||||
|
CHECK(m.getADCInvert() == 5);
|
||||||
|
m.setADCInvert(-1);
|
||||||
|
CHECK(m.getADCInvert() == -1);
|
||||||
|
|
||||||
|
// ext sampling reg
|
||||||
|
m.setExternalSamplingSource(0);
|
||||||
|
CHECK(m.getExternalSamplingSource() == 0);
|
||||||
|
m.setExternalSamplingSource(62);
|
||||||
|
CHECK(m.getExternalSamplingSource() == 62);
|
||||||
|
CHECK_THROWS_WITH(m.setExternalSamplingSource(64),
|
||||||
|
Catch::Matchers::Contains("be 0-63"));
|
||||||
|
CHECK(m.getExternalSamplingSource() == 62);
|
||||||
|
m.setExternalSampling(1);
|
||||||
|
CHECK(m.getExternalSampling() == 1);
|
||||||
|
m.setExternalSampling(0);
|
||||||
|
CHECK(m.getExternalSampling() == 0);
|
||||||
|
m.setExternalSampling(1);
|
||||||
|
CHECK(m.getExternalSampling() == 1);
|
||||||
|
CHECK(m.readRegister(0x7b) == 0x1003E);
|
||||||
|
|
||||||
|
}
|
110
integrationTests/test-integrationMulti.cpp
Executable file
@ -0,0 +1,110 @@
|
|||||||
|
#include "catch.hpp"
|
||||||
|
#include "multiSlsDetector.h"
|
||||||
|
#include "string_utils.h"
|
||||||
|
#include "tests/globals.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace Catch::literals;
|
||||||
|
|
||||||
|
TEST_CASE("Initialize a multi detector", "[.integration][.multi]") {
|
||||||
|
auto hostnames = sls::split(hostname, '+');
|
||||||
|
|
||||||
|
multiSlsDetector d(0, true, true);
|
||||||
|
d.setHostname(hostname.c_str());
|
||||||
|
REQUIRE(d.setOnline() == true); // get!
|
||||||
|
|
||||||
|
CHECK(d.getHostname() == hostname);
|
||||||
|
for (size_t i = 0; i != hostnames.size(); ++i) {
|
||||||
|
CHECK(d.getHostname(i) == hostnames[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK(d.getDetectorTypeAsEnum() == type);
|
||||||
|
CHECK(d.getDetectorTypeAsString() == detector_type);
|
||||||
|
|
||||||
|
CHECK(d.getNumberOfDetectors() == hostnames.size());
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("Set and read timers", "[.integration][.multi]") {
|
||||||
|
|
||||||
|
multiSlsDetector d(0, true, true);
|
||||||
|
d.setHostname(hostname.c_str());
|
||||||
|
|
||||||
|
// FRAME_NUMBER
|
||||||
|
int n_frames = 3;
|
||||||
|
d.setNumberOfFrames(n_frames);
|
||||||
|
CHECK(d.setNumberOfFrames() == n_frames);
|
||||||
|
|
||||||
|
// ACQUISITION_TIME
|
||||||
|
double exptime = 0.3;
|
||||||
|
d.setExposureTime(exptime, true);
|
||||||
|
CHECK(d.setExposureTime(-1, true) == Approx(exptime));
|
||||||
|
CHECK(d.setExposureTime(-1) == Approx(exptime * 1E9));
|
||||||
|
|
||||||
|
// FRAME_PERIOD,
|
||||||
|
double period = 0.5;
|
||||||
|
d.setExposurePeriod(period, true);
|
||||||
|
CHECK(d.setExposurePeriod(-1, true) == Approx(period));
|
||||||
|
CHECK(d.setExposurePeriod(-1) == Approx(period * 1E9));
|
||||||
|
|
||||||
|
// DELAY_AFTER_TRIGGER,
|
||||||
|
// GATES_NUMBER,
|
||||||
|
// CYCLES_NUMBER,
|
||||||
|
// ACTUAL_TIME
|
||||||
|
// MEASUREMENT_TIME
|
||||||
|
|
||||||
|
// PROGRESS, /**< fraction of measurement elapsed - only get! */
|
||||||
|
// MEASUREMENTS_NUMBER,
|
||||||
|
|
||||||
|
int measurements = 2;
|
||||||
|
d.setTimer(ti::MEASUREMENTS_NUMBER, measurements);
|
||||||
|
CHECK(d.setTimer(ti::MEASUREMENTS_NUMBER, -1) == measurements);
|
||||||
|
|
||||||
|
// FRAMES_FROM_START,
|
||||||
|
// FRAMES_FROM_START_PG,
|
||||||
|
// SAMPLES,
|
||||||
|
|
||||||
|
// SUBFRAME_ACQUISITION_TIME, /**< subframe exposure time */
|
||||||
|
double subframe_exposure = 2000000; // ns
|
||||||
|
if (type == dt::EIGER) {
|
||||||
|
d.setSubFrameExposureTime(subframe_exposure);
|
||||||
|
CHECK(d.setSubFrameExposureTime(-1) == Approx(subframe_exposure));
|
||||||
|
}
|
||||||
|
|
||||||
|
// STORAGE_CELL_NUMBER, /**<number of storage cells */
|
||||||
|
|
||||||
|
// SUBFRAME_DEADTIME, /**< subframe deadtime */
|
||||||
|
double subframe_deadtime = 4000; // ns
|
||||||
|
if (type == dt::EIGER) {
|
||||||
|
d.setSubFrameExposureDeadTime(subframe_deadtime);
|
||||||
|
CHECK(d.setSubFrameExposureDeadTime(-1) == Approx(subframe_deadtime));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (type == dt::EIGER) {
|
||||||
|
// 32bit is needed for subframe exposure
|
||||||
|
d.setDynamicRange(32);
|
||||||
|
CHECK(d.setDynamicRange(-1) == 32);
|
||||||
|
d.setReadOutFlags(ro::PARALLEL);
|
||||||
|
|
||||||
|
// Needed to have measured values
|
||||||
|
d.acquire();
|
||||||
|
|
||||||
|
// MEASURED_PERIOD, /**< measured period */
|
||||||
|
for (int i = 0; i != d.getNumberOfDetectors(); ++i) {
|
||||||
|
CHECK(d.getMeasuredPeriod(true, i) == Approx(period));
|
||||||
|
}
|
||||||
|
|
||||||
|
// MEASURED_SUBPERIOD, /**< measured subperiod */
|
||||||
|
for (int i = 0; i != d.getNumberOfDetectors(); ++i) {
|
||||||
|
CHECK(d.getMeasuredSubFramePeriod(false, i) ==
|
||||||
|
Approx(subframe_deadtime + subframe_exposure));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MAX_TIMERS
|
||||||
|
|
||||||
|
d.freeSharedMemory();
|
||||||
|
}
|
3
integrationTests/test.cpp
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
// tests-main.cpp
|
||||||
|
#define CATCH_CONFIG_MAIN
|
||||||
|
#include "catch.hpp"
|
0
manual/Makefile
Normal file → Executable file
@ -1,13 +0,0 @@
|
|||||||
No implementation found for style `graphicx'
|
|
||||||
No implementation found for style `eucal'
|
|
||||||
No implementation found for style `amsxtra'
|
|
||||||
No implementation found for style `upref'
|
|
||||||
No implementation found for style `layout'
|
|
||||||
No implementation found for style `calc'
|
|
||||||
No implementation found for style `framed'
|
|
||||||
|
|
||||||
? brace missing for \
|
|
||||||
|
|
||||||
Substitution of arg to newlabelxx delayed.
|
|
||||||
|
|
||||||
? brace missing for \textit
|
|
@ -1,101 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
||||||
|
|
||||||
<!--Converted with LaTeX2HTML 2008 (1.71)
|
|
||||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
|
||||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
|
||||||
* with significant contributions from:
|
|
||||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
|
||||||
<HTML>
|
|
||||||
<HEAD>
|
|
||||||
<TITLE>Footnotes</TITLE>
|
|
||||||
<META NAME="description" CONTENT="Footnotes">
|
|
||||||
<META NAME="keywords" CONTENT="slsDetectors-FAQ">
|
|
||||||
<META NAME="resource-type" CONTENT="document">
|
|
||||||
<META NAME="distribution" CONTENT="global">
|
|
||||||
|
|
||||||
<META NAME="Generator" CONTENT="LaTeX2HTML v2008">
|
|
||||||
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
|
||||||
|
|
||||||
<LINK REL="STYLESHEET" HREF="slsDetectors-FAQ.css">
|
|
||||||
|
|
||||||
</HEAD>
|
|
||||||
|
|
||||||
<BODY >
|
|
||||||
|
|
||||||
<DL>
|
|
||||||
<DT><A NAME="foot1316">... tab </A><A
|
|
||||||
HREF="MYTHEN.html#tex2html20"><SUP>3.1</SUP></A></DT>
|
|
||||||
<DD>The default name of the calibrated trimfiles is <I>trimbits/beamline/</I><I>settings</I><I>/noise.snxxx</I> where <I>settings</I> is the chosen settings. You can change it in <I>src/qDetector.h</I> and then recompile the acquisition program as described in <A HREF="#sec:installation"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
|
|
||||||
SRC="file:/usr/share/latex2html/icons/crossref.png"></A>.
|
|
||||||
|
|
||||||
<PRE>.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
</PRE>
|
|
||||||
</DD>
|
|
||||||
<DT><A NAME="foot1317">....snxxx </A><A
|
|
||||||
HREF="MYTHEN.html#tex2html21"><SUP>3.2</SUP></A></DT>
|
|
||||||
<DD>The default name of the calibration file <I>calibration/</I><I>settings</I><I>.snxxx</I> where <I>settings</I> is the chosen settings. You can change it in <I>src/qDetector.h</I> and then recompile the acquisition program.
|
|
||||||
|
|
||||||
<PRE>.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
.
|
|
||||||
</PRE>
|
|
||||||
</DD>
|
|
||||||
</DL>
|
|
||||||
</BODY>
|
|
||||||
</HTML>
|
|
Before Width: | Height: | Size: 242 B |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 682 B |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 223 B |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 255 B |
Before Width: | Height: | Size: 471 B |
Before Width: | Height: | Size: 269 B |
Before Width: | Height: | Size: 259 B |
Before Width: | Height: | Size: 416 B |
Before Width: | Height: | Size: 485 B |
Before Width: | Height: | Size: 461 B |
Before Width: | Height: | Size: 473 B |
Before Width: | Height: | Size: 348 B |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 578 B |
Before Width: | Height: | Size: 495 B |
Before Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 159 B |
Before Width: | Height: | Size: 12 KiB |