Compare commits
1185 Commits
2020.10.28
...
6.0.0-rc1
Author | SHA1 | Date | |
---|---|---|---|
5e672fcd54 | |||
f01dd4c3af | |||
9b9bc3ffb9 | |||
1c3357c8f1 | |||
2fa7718ffd | |||
0fd263aef1 | |||
b9034dffe3 | |||
14cd1a465c | |||
28ff54b323 | |||
ecc9264481 | |||
36783067f2 | |||
3a5ceca522 | |||
aceab74340 | |||
0ecc9a1c90 | |||
93c5b4aca6 | |||
afdd8a90cd | |||
83b3488bc5 | |||
388b68829c | |||
9717b7c414 | |||
7ac84f99ba | |||
d433200f73 | |||
cb32bfb0cd | |||
6b843097e3 | |||
4bcc1a24f0 | |||
6394fba85d | |||
e6444bf060 | |||
41a585a969 | |||
5905404955 | |||
5b7918f50e | |||
29b9f71361 | |||
bbae956619 | |||
ddad045995 | |||
8d309fe051 | |||
635789ef85 | |||
3cb02b3d92 | |||
5667d2bf30 | |||
684fb81733 | |||
8d3084d3e1 | |||
417bfbaf38 | |||
975c94fd4b | |||
b1ae47d189 | |||
37b1ac3de4 | |||
b4a5a5cd5e | |||
e107842863 | |||
ad9eb7fc19 | |||
22d5898640 | |||
b98ac198e7 | |||
90968e1870 | |||
e3e3639829 | |||
6b0e6a72df | |||
e2aa426966 | |||
cfb604bbf4 | |||
81241bfc2c | |||
961ecba34e | |||
8aa7ced83e | |||
0482e3bc37 | |||
9adc4cff27 | |||
bb1ad0c905 | |||
5977103312 | |||
4d6ba67c27 | |||
4662711aa4 | |||
b4a51ad529 | |||
c996300806 | |||
91f8a07a9c | |||
2c6793633e | |||
fac7e0fbb0 | |||
5ed1e1f43f | |||
e2d7d12b3e | |||
46a8a2461c | |||
6360506924 | |||
ea77331a4a | |||
34fb823675 | |||
fcfbb7040a | |||
1cf0a05247 | |||
cdae61c7ff | |||
5c3a408a89 | |||
2fc2c34fad | |||
56b7dd3ca9 | |||
f51529bb3b | |||
7d927a794e | |||
fb94ddec74 | |||
17e7e5058b | |||
cbf69f4960 | |||
b4c115fc69 | |||
221763b109 | |||
594553434d | |||
ee7ae9d947 | |||
1cbfa54b99 | |||
edf72f06c2 | |||
6421c15387 | |||
9288d33a8f | |||
eeaebbe78c | |||
8e980d1ace | |||
ffd62f2592 | |||
fd03bfa65e | |||
6ae48d0f3a | |||
e0249685e1 | |||
ec2a03132a | |||
dc4e5bb561 | |||
caf7df886c | |||
61aa266436 | |||
a3f579b4cc | |||
14c4c989a5 | |||
920a8a6e9e | |||
4c0323dd0a | |||
dcec6eeaf9 | |||
77a3cf85fe | |||
3e5b6c07e3 | |||
288edca78b | |||
fd59c20975 | |||
6abf61e6f9 | |||
90b408d7a8 | |||
dc671e6fcf | |||
6151096823 | |||
35ee7d857f | |||
e223859d18 | |||
cff758d2f2 | |||
0d184ebd4b | |||
35d102c5ed | |||
7d1bd280e4 | |||
c2202a97e1 | |||
0e193615b9 | |||
90d8ad40c9 | |||
5a08b9be86 | |||
afa4e7ea7b | |||
77bba794d9 | |||
3d728e5de4 | |||
b7e8343ca4 | |||
bebf1b0a13 | |||
c1d1edee89 | |||
81b8f17b32 | |||
a88d1ff1e4 | |||
cc95df7233 | |||
b924723082 | |||
7fd174c21e | |||
2ff50750f5 | |||
ba122fe2ad | |||
b98eee5b9a | |||
cb6cbaeeec | |||
732270f437 | |||
1a712e1aa6 | |||
74fde0a77c | |||
7a9e6a13ec | |||
e7f566994a | |||
153dda5b97 | |||
c2c3bd2fbb | |||
2e36bb3a65 | |||
7eb64fc055 | |||
8e40a408c5 | |||
a17b7b1778 | |||
dbc541b4ea | |||
df2d0524a5 | |||
671bc62740 | |||
3100ca448e | |||
a961eead24 | |||
ca35613b66 | |||
b937bbb058 | |||
ff6f960ba9 | |||
fdd8b52ce1 | |||
adaf56ca2e | |||
d599d75e0b | |||
78d8086e71 | |||
0f8869153e | |||
abf56ad643 | |||
b2cb99a0c2 | |||
86b7409eed | |||
cac5e40d8a | |||
eb19ac1375 | |||
52585c99a1 | |||
4764305fd7 | |||
47ab9ff1ec | |||
083aeb200d | |||
0feffa0235 | |||
2b4a46458c | |||
3402ccb2d0 | |||
190f64689f | |||
5b47b1e353 | |||
7b3b0044bf | |||
9cb352dec7 | |||
bf6650115c | |||
2622f461e3 | |||
be4dfcf499 | |||
ff5ab8413e | |||
550c8f52ac | |||
88e0d65ffc | |||
11864e5de4 | |||
32317510ad | |||
bd5f85cdff | |||
88c8f05387 | |||
4dfd377d94 | |||
b877997b98 | |||
b844cc7702 | |||
05647d4a8a | |||
c1daba9595 | |||
3bcfb2291a | |||
a657450035 | |||
cee94f65d2 | |||
3785a314e6 | |||
5b3e5e8d16 | |||
b8086dcd70 | |||
9d30d51da7 | |||
f4b8ffe684 | |||
9d4d667df1 | |||
cb42fdfe3d | |||
a9f82985bc | |||
05c04008ae | |||
aea664f40c | |||
c8ea0c8ede | |||
49e40ae8f2 | |||
00066e1e6c | |||
094ca42e17 | |||
9c17c41044 | |||
9477e68586 | |||
b458b9c517 | |||
8f6344dda0 | |||
1963439dbf | |||
8647717fec | |||
03823cf903 | |||
c4ff4efaf0 | |||
ee108889db | |||
d9c0ce2d6d | |||
8df19ec265 | |||
a565592249 | |||
f9ebda3365 | |||
8a287279fe | |||
e8f76e785d | |||
2601c50c96 | |||
91227a91c4 | |||
bf5d761c60 | |||
fff2a53fb9 | |||
fb271e3a86 | |||
dfa6f18ba3 | |||
0eb57b99d2 | |||
09714d412a | |||
c6af0d34fb | |||
39b46f8c22 | |||
00bbc03ebe | |||
3703d701fb | |||
7f06f90048 | |||
790d995eab | |||
072271d21b | |||
5830424783 | |||
04c3bc4b3c | |||
602bd1b25e | |||
9a22a1e530 | |||
298028c584 | |||
50c8f2d432 | |||
5ed3832e15 | |||
664c2ca80f | |||
cd0161f90b | |||
ba52bfb65e | |||
b7f694142a | |||
e8e76b6de2 | |||
b753732197 | |||
2aa16eac44 | |||
4571b1b91c | |||
bac4443091 | |||
9d744deb4a | |||
82c5bf15a6 | |||
905b40c76c | |||
abde0cffa1 | |||
441fb8064f | |||
8f26389348 | |||
bf14c1659a | |||
088a8ea924 | |||
5d69f5433b | |||
2993992c81 | |||
b019b70697 | |||
99153b4dc2 | |||
74b55c2d5c | |||
15343c3b18 | |||
567f4bcab6 | |||
665a44998b | |||
e1ed49a843 | |||
f1b31100db | |||
a718d69368 | |||
0c7ff62d8d | |||
bb6abe4e93 | |||
afd56703a2 | |||
5811ef0a11 | |||
ecf38d6110 | |||
8c02b6636d | |||
d6d1d60800 | |||
2eba0c9d74 | |||
c5826e905b | |||
f3744a10c6 | |||
bd895148ea | |||
c3a26fdcaf | |||
2ef3dac39e | |||
8c527bcc0d | |||
8e58d1907d | |||
8cc0804f99 | |||
37acc9ec33 | |||
ad05abed59 | |||
2002a67ae2 | |||
4badb1141c | |||
20deeb8dcc | |||
9c9f2d5c70 | |||
3465f01e3d | |||
a02e8099da | |||
d0794ca0aa | |||
82f022d46b | |||
c4caacd2ed | |||
cf96545f60 | |||
ae52dc106b | |||
0b3477bba1 | |||
1f07e085ef | |||
46ddf8ef90 | |||
2b0989ecaf | |||
5bdc28215e | |||
22df4a8d5e | |||
f0dce3c209 | |||
c1d28e47d4 | |||
4daac1a06a | |||
e0f686231a | |||
c6abc0b42a | |||
bd4827c4df | |||
640a7823bd | |||
ab0dd0d49f | |||
277e5c5b4a | |||
210bc32e46 | |||
cda82e5648 | |||
a51deda2a4 | |||
25d03f949e | |||
11b1d9f6db | |||
861c81d57a | |||
a9ab8a48e9 | |||
7e0f077af6 | |||
631c71ed92 | |||
204a4764b9 | |||
a8d3721812 | |||
60db0e9648 | |||
eeb534c9fc | |||
4e00286b35 | |||
6a8eafaa67 | |||
05be18eed8 | |||
040aaec378 | |||
171175afd1 | |||
0233afb8d2 | |||
7aa69ceb19 | |||
edbccd3661 | |||
765e9895b9 | |||
97880d419a | |||
6d29819947 | |||
7aab18ca47 | |||
719c29ae22 | |||
b8eb8d2780 | |||
419b1a1bf9 | |||
34d5d2da34 | |||
0949e3ae18 | |||
b07896b9de | |||
18eeb716ad | |||
19b428a91e | |||
b75b9fa3b7 | |||
4e0b2fe657 | |||
41f0687671 | |||
a80a413407 | |||
eaa96b6785 | |||
c3eb6f4e8f | |||
e28c5296c7 | |||
9a4e18f42d | |||
b2541117b8 | |||
1d989637e9 | |||
485b54994c | |||
2afe7112b2 | |||
0c6911e469 | |||
493b58b754 | |||
fc35b2b0de | |||
b37db1de72 | |||
9158a3c8b0 | |||
b1939f9d47 | |||
ab59f7db7b | |||
de4f06287d | |||
e80baaaa44 | |||
89b11e87ef | |||
3b93fa47f4 | |||
f8d8fcf48a | |||
d9f969ae6f | |||
c4c16ad9c0 | |||
f72f678d45 | |||
6e85603f4c | |||
7e829ce9b3 | |||
24f012e6c7 | |||
3d90c1527a | |||
6aaf7ec328 | |||
33edb5c769 | |||
75b992ed07 | |||
cb22321006 | |||
f8b5795c29 | |||
334d58c3fd | |||
5f8dc7a7f0 | |||
5790e4961b | |||
2548a0bfec | |||
62d697e91f | |||
ec01f98c26 | |||
eb652557b6 | |||
4e1a277c2a | |||
200df88dcf | |||
9e1716da56 | |||
2a44ec7d93 | |||
58b734e843 | |||
307abc7378 | |||
afad1a30bd | |||
26d5f13faa | |||
de6976599e | |||
be8172000f | |||
a14434ad0a | |||
3c04734b28 | |||
c770bcfb7e | |||
5ad124eebd | |||
ff9eaaf3f3 | |||
8e6a0cbfda | |||
7494fb2b69 | |||
c3a6293b68 | |||
aa8007da2a | |||
6f54402aba | |||
9a777b13bb | |||
7a76064223 | |||
0dbb6ff512 | |||
0e797ba2ad | |||
542c7dfb5a | |||
7c172898d9 | |||
799906a33a | |||
4e44f95e71 | |||
40f4fced30 | |||
34c8cffadf | |||
f0a0243233 | |||
d5a3ddfe7e | |||
c7293f88d0 | |||
a0784d23bb | |||
fce35e35a1 | |||
7700be7df1 | |||
7574a640bd | |||
c716a87935 | |||
aaa9f9f4ad | |||
3ca4c94b32 | |||
2a5fb9db57 | |||
c7c6d2d654 | |||
a32e19d74e | |||
f0c939e577 | |||
0438949536 | |||
7552ea1e75 | |||
fd6e82e161 | |||
dc921733d0 | |||
e92270565b | |||
dd3f2db3c5 | |||
4986a5e61a | |||
e62fc1907f | |||
67916cc188 | |||
6c1f09b8f5 | |||
f9dc668ba4 | |||
cc3aede979 | |||
2c53a134cd | |||
39f03818f8 | |||
76c8fcc7b9 | |||
bd7af28601 | |||
cf257cbc65 | |||
36b107bbae | |||
69ca1e7fee | |||
9f6b951988 | |||
bc5d6a0309 | |||
64535c2143 | |||
2934ccbf2c | |||
7bf6cc3995 | |||
a5ba93088f | |||
5c0dabbe4f | |||
0a58f13fe1 | |||
7bf03c02b7 | |||
42257d8f67 | |||
57534fcbee | |||
69356cf232 | |||
d3bbb50fc8 | |||
074178848e | |||
86126c7e27 | |||
9312ef0d65 | |||
619f3b71c1 | |||
dd12c7c2f5 | |||
c5d6dd0dd4 | |||
acd12bf2fa | |||
cd396a1f11 | |||
8f53845698 | |||
1049e5fc71 | |||
3802f22ebe | |||
0e5e0f346b | |||
550810a3ca | |||
6dfcd9607f | |||
c7326504eb | |||
9370fd3ab0 | |||
5ba41894ef | |||
0666afc642 | |||
e20022f139 | |||
9c4ecf0506 | |||
44062f0226 | |||
bdffcb1cf1 | |||
044879a088 | |||
4a2d76164f | |||
15f4dd97b5 | |||
35251da015 | |||
c57caa4931 | |||
dd98a10bda | |||
9c04344b79 | |||
c10dc203b2 | |||
9ed3a294ce | |||
526aa3273e | |||
fc7e73809a | |||
6f81741931 | |||
c989be1e17 | |||
d64df39301 | |||
02d01b8561 | |||
6467b04c37 | |||
a31b741f7b | |||
6c15f5216d | |||
770ce80473 | |||
fc7efb2410 | |||
c0312c9bb6 | |||
3f08d6699c | |||
9f11dae703 | |||
9c03e83ef1 | |||
e28d19f5be | |||
a9663abc50 | |||
0665209389 | |||
ffc3d4ddd0 | |||
6997a96aa4 | |||
2732668548 | |||
e5b17fb8e2 | |||
32b208f49f | |||
3f5661739e | |||
7a54ee8ea3 | |||
b484f412ce | |||
4e268c329c | |||
b68cb8927a | |||
1161088ca5 | |||
de7f4489af | |||
18bbfcaa5b | |||
7d933bad5e | |||
89aff65182 | |||
d9ff946b1d | |||
f8b14c694d | |||
41bbe4e3cf | |||
a909874a15 | |||
7535ea315b | |||
8cc9cd1c75 | |||
0eca60c791 | |||
b15b66b82d | |||
6461fddc5d | |||
adf690cdcd | |||
122f0a4a87 | |||
b634548a13 | |||
61198eed5f | |||
1e441af30b | |||
252f5a3e7b | |||
10b8e7467a | |||
cce2511f7a | |||
61a99c70df | |||
e18d6d18e6 | |||
0148710c4e | |||
ba42120237 | |||
1d7915ef55 | |||
cb293f9945 | |||
da4d47052d | |||
5b05a30287 | |||
97ff58c978 | |||
3d47db7e60 | |||
05b7e0ef42 | |||
da996314e7 | |||
fd6e44c396 | |||
6e814ae6ec | |||
7d3b7881d1 | |||
a301e223e9 | |||
10455b284e | |||
ae0d1cc0d4 | |||
d052efbd23 | |||
69b04cc4f8 | |||
3bee03bb3a | |||
538b7d0925 | |||
df300d29d2 | |||
1e1c799223 | |||
91eba6a8b8 | |||
8ba37e99a7 | |||
ec7ba7c508 | |||
cba49fbeae | |||
d40d9d122b | |||
efe26b2b0d | |||
e02493d4e4 | |||
af16ad4040 | |||
206c48c7a0 | |||
09391b767a | |||
1b348f9b3a | |||
5e685ea5a6 | |||
4fd949a833 | |||
3922789245 | |||
7158dab9f5 | |||
c3ad736d3c | |||
780d4bfe0a | |||
4d7fb4e4e0 | |||
8354395f64 | |||
a127f8c97a | |||
1870ee8ae3 | |||
823ceff328 | |||
86d1a18ca1 | |||
016d0d7fac | |||
8308d2833d | |||
6c0795ea63 | |||
76ca4374e4 | |||
e1c76fb04a | |||
2d182f3cee | |||
c6aaf2f8b1 | |||
abb26adc76 | |||
f9feabaacf | |||
ff4ca4af6c | |||
fdf6632356 | |||
5ad2299e83 | |||
2d913b901d | |||
c30716db12 | |||
0e4fd598b1 | |||
4422ce61aa | |||
eff15b3f89 | |||
4b81cfbd6c | |||
a1da362d2e | |||
0b3af803ce | |||
cbdb05a3a8 | |||
ece676ea76 | |||
54b9b9938c | |||
9d8c68b1d0 | |||
0e7c643cf9 | |||
5ad3205fe8 | |||
fca9982b72 | |||
d7dc1912ac | |||
ee1a1563ba | |||
1e6f695949 | |||
d7669ca4d4 | |||
a20c2cdfb5 | |||
9c7d13847e | |||
8c1a813214 | |||
3618f17666 | |||
b347afd6f3 | |||
0ed59953de | |||
2044ea1cc7 | |||
68299820fd | |||
814e8898d8 | |||
dd8082da0b | |||
60d726b379 | |||
04a0a475ad | |||
ca02d4b007 | |||
343e881a3f | |||
c0aaa94587 | |||
12cdab19e9 | |||
5177ed74e5 | |||
28fde55e4b | |||
4b05ecd80b | |||
a7d46b701a | |||
1bad39fd69 | |||
2a85e7c71e | |||
4a4fbddb79 | |||
f8c2da3c83 | |||
9d666da4cf | |||
18fe63f594 | |||
3295d36f46 | |||
c63f3b327f | |||
0a0e9bf490 | |||
3394d8659b | |||
9746875014 | |||
8b22b5dbe7 | |||
1b525abfa1 | |||
a097687a69 | |||
1360fbac87 | |||
bdfd151a01 | |||
bbb2473387 | |||
b296109513 | |||
0d01de451a | |||
61d62c57bc | |||
746cb6b49d | |||
927d642bf7 | |||
637b0ea9e1 | |||
69be046131 | |||
d3c6996d80 | |||
61c5018a46 | |||
01dfc08bbe | |||
04645dfae2 | |||
755738a42e | |||
1ab3bb8496 | |||
137b0cc288 | |||
e4bf8a5d97 | |||
5ca4c7f943 | |||
1a88cbd266 | |||
d0faf64014 | |||
6ca67632c0 | |||
fc6a0d4a26 | |||
9c19fc3272 | |||
789d0df81c | |||
bb91375533 | |||
665a3be6d8 | |||
a8c0049f88 | |||
fd2cc856b8 | |||
2ae2f84441 | |||
028edd0d08 | |||
e110bfd5a7 | |||
ceeb4400a0 | |||
47d6ed053c | |||
74ca9d6fcc | |||
370fe4628a | |||
74903314ce | |||
4ea53cd3bd | |||
994f0a71a6 | |||
19b16bc6e8 | |||
b740cb7312 | |||
bfdd62253a | |||
22bcac4c0b | |||
1ae8ceb73c | |||
b11f6c56e7 | |||
709293be68 | |||
f111ac733b | |||
d0b2c13fa3 | |||
130613f730 | |||
a9f892483d | |||
26acde979f | |||
621bb6cbfd | |||
b4d2f2ee1c | |||
f01e5fd5ec | |||
1bcf10a211 | |||
b9aa7bcc8e | |||
d0d9ffb3b6 | |||
2b8e4c8981 | |||
0b2a4a879e | |||
6fa9d7f367 | |||
bdc3a5f3d9 | |||
4de8234478 | |||
08a588bb01 | |||
2be8ee8079 | |||
6ca3f075b7 | |||
45992b28a5 | |||
ac5dece221 | |||
6f54291a84 | |||
e00c62a7a5 | |||
6e9ad425f8 | |||
1e640d90de | |||
74f5c52bc9 | |||
9e32c746cd | |||
1b068cdf2d | |||
16a228415d | |||
48cef99e62 | |||
238b6e8753 | |||
6949e22bf8 | |||
28c1e2491b | |||
d33cf25a95 | |||
b5790983ce | |||
5e17c9c525 | |||
0afe093afc | |||
215454d7cc | |||
81aa8c9ac5 | |||
be6e2d7fb3 | |||
cf5d2cd97e | |||
cf7828e0ce | |||
201d304874 | |||
129ec6930f | |||
65b022a946 | |||
c5ee7ac958 | |||
daae52ca63 | |||
b1556faa36 | |||
54c24b3de7 | |||
0a7b0a6d5e | |||
a69e6e7faa | |||
2809d2b83d | |||
47c3d7fc47 | |||
3079e41c3b | |||
89898beced | |||
240ec12485 | |||
ff4472aecf | |||
d9525e9a92 | |||
6ab640100b | |||
9626b2b8f9 | |||
d05b0ef77f | |||
bd8f51fb1a | |||
9ac836c2f4 | |||
45e7187e7c | |||
a6a2a91fea | |||
224c8d9f8d | |||
ac613171ec | |||
085ea3aee7 | |||
c054ad3af3 | |||
28c7d533e9 | |||
fa6a685508 | |||
d5c10aa3e7 | |||
be5fee8126 | |||
d9cd780386 | |||
55b4a92453 | |||
0299d315d5 | |||
779a2a0199 | |||
01c785271f | |||
05ddc5caaf | |||
fa25340e5c | |||
e65e7ac42f | |||
7d605c2c87 | |||
043d582616 | |||
7c4f9ee044 | |||
a2007b78e7 | |||
7004f43a9a | |||
2b3b5af303 | |||
7a67d7e88a | |||
60e3fb8aab | |||
2f2fe4dd47 | |||
7955426682 | |||
63259ec5c8 | |||
e8fe203940 | |||
10b315c2bd | |||
f35de3bc2b | |||
4caf4cced2 | |||
1eb70f63ad | |||
997e5dd96c | |||
7aeb394514 | |||
f9f50f1d84 | |||
a62e068a9a | |||
85bc37f04d | |||
a3f5315015 | |||
d63a182996 | |||
f147c7bfcb | |||
4218fe5f2f | |||
511f5a7ca5 | |||
a5ab5c1fa0 | |||
8b7023d9a3 | |||
c8c7bca6e0 | |||
8ddc407e62 | |||
7a2827f693 | |||
f4be0b8efa | |||
a6e23b0509 | |||
64de9f3ad0 | |||
390a842b97 | |||
040cc9c14f | |||
0a1c4992e2 | |||
59b56c764f | |||
ff7afd0de7 | |||
835e62425f | |||
c8cdbfc488 | |||
2f75143245 | |||
6f7c31b747 | |||
75c2d987c4 | |||
726f5eba29 | |||
4404ee717a | |||
54530ab103 | |||
6126780660 | |||
9b7f9b1be1 | |||
26c829d766 | |||
3fde5c5b55 | |||
3e5f546ebe | |||
9833a7d330 | |||
8f9155e578 | |||
9df1eac3c1 | |||
5ededf9be4 | |||
3e8774798a | |||
9048e7f6c4 | |||
1ce56764fa | |||
8c091eece2 | |||
d69e238e67 | |||
95fe1720c0 | |||
69f558c072 | |||
e382df21b9 | |||
8e773c97dd | |||
c043e74c07 | |||
d4518b2ca3 | |||
fd3108a61b | |||
e8fedfa55f | |||
0eb204bfd3 | |||
d9b2a90651 | |||
8ca1d9c50c | |||
baff0518bb | |||
2e669c585b | |||
ca0bc3e0f3 | |||
08ea179519 | |||
557cab9c50 | |||
8e6dfe9b0f | |||
6901368fd6 | |||
3f1dbb7d67 | |||
a12dd153ef | |||
f6126abe31 | |||
8bf9f974a3 | |||
e63fa1d7c2 | |||
1e8dacf9b8 | |||
58fb5321f0 | |||
9e8c8f4bbc | |||
faf885d2e0 | |||
c120c70678 | |||
d5dcc8e138 | |||
90a9cea670 | |||
2eea1882d2 | |||
c6eefac0eb | |||
46e0c0abed | |||
a5f0f6eb34 | |||
62c86f56b1 | |||
77080a524a | |||
3dce1e46f9 | |||
08ecc1e52d | |||
8c1974b34e | |||
d89d349247 | |||
910961cf41 | |||
595b7aa5e8 | |||
f72ad4326f | |||
2306e44ae3 | |||
10fa57ebb9 | |||
0ca9115cb8 | |||
06dbf82e93 | |||
8565ac6cf2 | |||
a26f22a052 | |||
30f9d53520 | |||
7b81532f54 | |||
dcf0b58a6d | |||
e39ea64560 | |||
77dacdf40d | |||
5397a9a78b | |||
3fbafb3c1d | |||
e3721e89e0 | |||
ec75728941 | |||
9b6a10d7ce | |||
57904446f0 | |||
3d48501d30 | |||
d364e5e2ec | |||
aacd7c4bec | |||
abfc0dc266 | |||
85a6d82d9f | |||
56be47669f | |||
b96b1849cd | |||
902919f2df | |||
1efdc90719 | |||
e852158b83 | |||
f48eff49e9 | |||
f7ecabdb51 | |||
cbf61ed05e | |||
8be579ea53 | |||
7fcac35549 | |||
6563965787 | |||
73d582744e | |||
fa8fdced5f | |||
5142603103 | |||
2fa3ebd8e6 | |||
a534271aff | |||
d2eed6177c | |||
ddf43dbd24 | |||
bfe8cb7020 | |||
40f6eb8ede | |||
5c71dd7246 | |||
146d605d19 | |||
918f3f3fde | |||
a36a294515 | |||
f19bc8880a | |||
0cb7d62ad5 | |||
5ee95cf811 | |||
980d76a15a | |||
4385df18b7 | |||
121450b8cc | |||
e7ecb38b29 | |||
59e12bbed8 | |||
bd76a66770 | |||
f592b98beb | |||
a6d696a0f8 | |||
4c4e2ccb6b | |||
b6b9a5d598 | |||
eb221e083d | |||
8d9382c25b | |||
5017818fb4 | |||
2020407438 | |||
121a3ad733 | |||
f6fff9d916 | |||
707601832f | |||
5687bdd6a2 | |||
e7a1960741 | |||
64be2e0297 | |||
66df5fe8ee | |||
08edf6f908 | |||
bf8fdc377a | |||
98fce317a8 | |||
6838666802 | |||
420343eb31 | |||
aca2dd645c | |||
9ad6c0992b | |||
a15d8dd30a | |||
a57bbc084c | |||
c0b3f4f34c | |||
11a9d5bd4b | |||
3266b1380f | |||
2f76afd8a6 | |||
139db216fe | |||
d93fd4c655 | |||
fe4bc60bd7 | |||
e7597fb5d3 | |||
a5c41d6b19 | |||
7e4ea308dc | |||
876207c8cd | |||
ec21624aeb | |||
1de5b85ce2 | |||
b4e4033736 | |||
820bc01505 | |||
4e54d1c318 | |||
dec4183e0f | |||
feed09f2f4 | |||
c6aa8d6072 | |||
4ec38a071c | |||
0c4b721e13 | |||
fae884e658 | |||
f20f084991 | |||
20ce79872f | |||
328375924f | |||
a1d91e590e | |||
679db120b0 | |||
7a6797b23e | |||
93f8e8ecb3 | |||
d112956f79 | |||
9649982932 | |||
eca2836703 | |||
d14c9600bb | |||
42971c94b7 | |||
b0fd4f4c44 | |||
06473cfcb2 | |||
6f2aad3836 | |||
38aad40fef | |||
51c5520472 | |||
75838f77b3 | |||
54bedeaa0a | |||
b33b2edbd0 | |||
f7cb2b5dcd | |||
9ea3cbc8f1 | |||
53bb677f8c | |||
663999a539 | |||
98b45b32fd | |||
74c08cd742 | |||
696073b505 | |||
e4645a8273 | |||
c0cd25460d | |||
e7e30693f0 | |||
dd96aac3cd | |||
5697393a70 | |||
052dd8058f | |||
4d99ce8c52 | |||
633c646239 | |||
2a88bc6a1e | |||
d8af2e594a | |||
8da7c3e805 | |||
ddfbea76be | |||
c5f2275703 | |||
8c491f18fd | |||
e07e2f2da0 | |||
d981e1b8e5 | |||
58e6338f9c | |||
27f3af5365 | |||
350b4f0368 | |||
445f3c66fd | |||
1189b991e5 | |||
3e2b471ee1 | |||
8c76d5d52c | |||
e7eee67fed | |||
fade48dcfa | |||
8e58e7f8bf | |||
c8f56ee23c | |||
32d951e28a | |||
5c63c8fc8f | |||
7b70274d4f | |||
1cd905c08b | |||
13e809acd4 | |||
46533b0411 | |||
4f4de15d3a | |||
4f99aeabd2 | |||
f36a12e454 | |||
5e246c0754 | |||
518c6783cc | |||
0706564694 | |||
2108bbda66 | |||
82feed1ab8 | |||
4be0b5d436 | |||
f7eb256eb6 | |||
250fc26308 | |||
06a50520c1 | |||
fc766055d4 | |||
828b1479c7 | |||
22ed52605c | |||
a1a95ebb20 | |||
d7ce5fedfd | |||
3a2682ffe7 | |||
bf74a4135e | |||
252ecf2769 | |||
de01ab75e9 | |||
5698da5f95 | |||
7300d73675 | |||
d4b467a641 | |||
7b71076180 | |||
9197d2b209 | |||
e094e41d89 | |||
512e1a3136 | |||
6d04c14bd6 | |||
64183d8d6a | |||
287efde54a | |||
faa25b9e9f | |||
1b92b01a46 | |||
4849063b6c | |||
5cd020ae81 | |||
160fabe02c | |||
90dd8e70e5 | |||
08e121c71f | |||
cb3b337a99 | |||
5d9a952316 | |||
8cc05c5848 | |||
d69d69e892 | |||
07a120fc4a | |||
11e8796847 | |||
f79b009978 | |||
3259bfb008 | |||
934bc5b9db | |||
6d11faed87 | |||
35fc52dae7 | |||
e599bfe56f | |||
764becc271 | |||
7462d1002d | |||
834794ad98 | |||
56c504abbb | |||
4d6346e678 | |||
dc7e448759 | |||
e658cbacda | |||
1e6c6dea71 | |||
0e5d4d1d8e | |||
a2986784d3 | |||
975cbb576e | |||
e48a92d9cd | |||
befdcf7f36 | |||
02f5c472a8 | |||
75ed2cd2e4 | |||
3be045f9b6 | |||
8fae982802 | |||
128ec88b5f | |||
d5fc158330 | |||
864e6e4c81 | |||
343d96ff16 | |||
4142328437 | |||
6c797988c7 | |||
215c262981 | |||
081b809078 | |||
9263567cd8 | |||
58e90a85be | |||
025c836e25 | |||
5d5abae3f4 | |||
e2ad46386e | |||
308d44e452 | |||
69da61b1fb | |||
460168ce04 | |||
4e429c0d77 | |||
bf4fab549d | |||
f7705eb1da | |||
a2217e2066 | |||
aaa02706fc | |||
6a80bc5b54 | |||
b9275646ad | |||
9e2f2697c7 | |||
b6b0df62b6 | |||
0ba537e479 | |||
75ddf535dc | |||
b1de501bef | |||
0f3a63f101 | |||
3b4b2d707f | |||
f405aa1733 | |||
df0fdb7ecb | |||
91b7a87557 | |||
9468b9ca1e | |||
d7982e178e | |||
9cf5714a5b | |||
0c9ac8911a | |||
4730c8c0a9 | |||
43efb8acfd | |||
6ecca8fcb0 | |||
17cb63a57f | |||
4f83fcb001 | |||
ab94af6d29 | |||
7c725cc69b | |||
f0198d2d2e | |||
5ddccbdee4 | |||
8fb39b8c7e | |||
bd5293f4b1 | |||
b91180f5b2 | |||
7c3b5065a5 | |||
9aef802bea | |||
f7d85231f2 | |||
5b3a911e8d | |||
65f5e1c1ab | |||
839896c7e6 | |||
4a7e246604 | |||
7f293115c4 | |||
f59f40a659 | |||
64fd82f92c | |||
cd232fd732 | |||
172fa66b1f |
@ -18,7 +18,8 @@ Checks: '*,
|
|||||||
-google-readability-todo,
|
-google-readability-todo,
|
||||||
-google-readability-braces-around-statements,
|
-google-readability-braces-around-statements,
|
||||||
-modernize-use-trailing-return-type,
|
-modernize-use-trailing-return-type,
|
||||||
-readability-isolate-declaration'
|
-readability-isolate-declaration,
|
||||||
|
-llvmlibc-*'
|
||||||
|
|
||||||
HeaderFilterRegex: \.h
|
HeaderFilterRegex: \.h
|
||||||
AnalyzeTemporaryDtors: false
|
AnalyzeTemporaryDtors: false
|
||||||
|
@ -31,7 +31,7 @@ script:
|
|||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
provider: script
|
provider: script
|
||||||
script: find $HOME/miniconda/envs/testenv/conda-bld/${TRAVIS_OS_NAME}-64 -name "*.tar.bz2" -exec anaconda -t $CONDA_TOKEN upload --force {} \;
|
script: find $HOME/miniconda/envs/testenv/conda-bld/${TRAVIS_OS_NAME}-64 -name "*.tar.bz2" -exec anaconda -v --show-traceback -t $CONDA_TOKEN upload --force {} \;
|
||||||
on:
|
on:
|
||||||
branch: developer
|
branch: developer
|
||||||
tags: true
|
tags: true
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.12)
|
cmake_minimum_required(VERSION 3.12)
|
||||||
project(slsDetectorPackage)
|
project(slsDetectorPackage)
|
||||||
set(PROJECT_VERSION 5.0.0)
|
set(PROJECT_VERSION 5.1.0)
|
||||||
include(CheckIPOSupported)
|
include(CheckIPOSupported)
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
||||||
|
|
||||||
@ -32,13 +32,16 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
|||||||
set(SLS_MASTER_PROJECT ON)
|
set(SLS_MASTER_PROJECT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option (SLS_USE_HDF5 "HDF5 File format" OFF)
|
option(SLS_USE_HDF5 "HDF5 File format" OFF)
|
||||||
option (SLS_USE_TEXTCLIENT "Text Client" ON)
|
option(SLS_BUILD_SHARED_LIBRARIES "Build shared libaries" ON)
|
||||||
option (SLS_USE_RECEIVER "Receiver" ON)
|
option(SLS_USE_TEXTCLIENT "Text Client" ON)
|
||||||
option (SLS_USE_GUI "GUI" OFF)
|
option(SLS_USE_DETECTOR "Detector libs" ON)
|
||||||
option (SLS_USE_SIMULATOR "Simulator" OFF)
|
option(SLS_USE_RECEIVER "Receiver" ON)
|
||||||
option (SLS_USE_TESTS "TESTS" OFF)
|
option(SLS_USE_RECEIVER_BINARIES "Receiver binaries" ON)
|
||||||
option (SLS_USE_INTEGRATION_TESTS "Integration Tests" OFF)
|
option(SLS_USE_GUI "GUI" OFF)
|
||||||
|
option(SLS_USE_SIMULATOR "Simulator" 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_SANITIZER "Sanitizers for debugging" OFF)
|
||||||
option(SLS_USE_PYTHON "Python bindings" OFF)
|
option(SLS_USE_PYTHON "Python bindings" OFF)
|
||||||
option(SLS_USE_CTBGUI "ctb GUI" OFF)
|
option(SLS_USE_CTBGUI "ctb GUI" OFF)
|
||||||
@ -49,7 +52,7 @@ option(SLS_DEVEL_HEADERS "install headers for devel" OFF)
|
|||||||
option(SLS_USE_MOENCH "compile zmq and post processing for Moench" OFF)
|
option(SLS_USE_MOENCH "compile zmq and post processing for Moench" OFF)
|
||||||
|
|
||||||
# set(ClangFormat_BIN_NAME clang-format)
|
# set(ClangFormat_BIN_NAME clang-format)
|
||||||
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
||||||
"libs/"
|
"libs/"
|
||||||
"slsDetectorCalibration/"
|
"slsDetectorCalibration/"
|
||||||
"ctbGui/"
|
"ctbGui/"
|
||||||
@ -61,20 +64,9 @@ find_package(ClangFormat)
|
|||||||
|
|
||||||
#Enable LTO if available
|
#Enable LTO if available
|
||||||
check_ipo_supported(RESULT SLS_LTO_AVAILABLE)
|
check_ipo_supported(RESULT SLS_LTO_AVAILABLE)
|
||||||
|
message(STATUS "SLS_LTO_AVAILABLE:" ${SLS_LTO_AVAILABLE})
|
||||||
|
|
||||||
|
|
||||||
# # Use ld.gold if it is available and isn't disabled explicitly
|
|
||||||
# option(SLS_USE_LD_GOLD "Use GNU gold linker" ON)
|
|
||||||
# if (SLS_USE_LD_GOLD)
|
|
||||||
# execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
|
|
||||||
# if ("${LD_VERSION}" MATCHES "GNU gold")
|
|
||||||
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
|
|
||||||
# set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
|
|
||||||
# set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
|
|
||||||
# else ()
|
|
||||||
# message(WARNING "GNU gold linker isn't available, using the default system linker.")
|
|
||||||
# endif ()
|
|
||||||
# endif ()
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
@ -104,6 +96,20 @@ target_compile_options(slsProjectWarnings INTERFACE
|
|||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#Settings for C code
|
||||||
|
add_library(slsProjectCSettings INTERFACE)
|
||||||
|
target_compile_features(slsProjectCSettings INTERFACE c_std_99)
|
||||||
|
target_compile_options(slsProjectCSettings INTERFACE
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wno-unused-parameter
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wformat=2
|
||||||
|
-Wredundant-decls
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Werror=return-type
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#Testing for minimum version for compilers
|
#Testing for minimum version for compilers
|
||||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
@ -168,8 +174,37 @@ set(CMAKE_INSTALL_RPATH $ORIGIN)
|
|||||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
||||||
|
|
||||||
|
|
||||||
|
set(ZeroMQ_HINT "" CACHE STRING "Hint where ZeroMQ could be found")
|
||||||
|
#Adapted from: https://github.com/zeromq/cppzmq/
|
||||||
|
if (NOT TARGET libzmq)
|
||||||
|
if(ZeroMQ_HINT)
|
||||||
|
message(STATUS "Looking for ZeroMQ in: ${ZeroMQ_HINT}")
|
||||||
|
find_package(ZeroMQ 4
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
HINTS ${ZeroMQ_DIR}
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_package(ZeroMQ 4 QUIET)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
find_package(ZeroMQ 4 REQUIRED)
|
|
||||||
|
# libzmq autotools install: fallback to pkg-config
|
||||||
|
if(NOT ZeroMQ_FOUND)
|
||||||
|
message(STATUS "CMake libzmq package not found, trying again with pkg-config (normal install of zeromq)")
|
||||||
|
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/libzmq-pkg-config)
|
||||||
|
find_package(ZeroMQ 4 REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO "REQUIRED" above should already cause a fatal failure if not found, but this doesn't seem to work
|
||||||
|
if(NOT ZeroMQ_FOUND)
|
||||||
|
message(FATAL_ERROR "ZeroMQ was not found, neither as a CMake package nor via pkg-config")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (ZeroMQ_FOUND AND NOT TARGET libzmq)
|
||||||
|
message(FATAL_ERROR "ZeroMQ version not supported!")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if (SLS_USE_TESTS)
|
if (SLS_USE_TESTS)
|
||||||
enable_testing()
|
enable_testing()
|
||||||
@ -182,24 +217,16 @@ endif(SLS_USE_TESTS)
|
|||||||
# Common functionallity to detector and receiver
|
# Common functionallity to detector and receiver
|
||||||
add_subdirectory(slsSupportLib)
|
add_subdirectory(slsSupportLib)
|
||||||
|
|
||||||
if (SLS_USE_TEXTCLIENT)
|
if (SLS_USE_DETECTOR OR SLS_USE_TEXTCLIENT)
|
||||||
add_subdirectory(slsDetectorSoftware)
|
add_subdirectory(slsDetectorSoftware)
|
||||||
endif (SLS_USE_TEXTCLIENT)
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
if (SLS_USE_RECEIVER)
|
if (SLS_USE_RECEIVER)
|
||||||
if (SLS_USE_HDF5)
|
|
||||||
find_package(HDF5 1.10 COMPONENTS CXX REQUIRED)
|
|
||||||
endif (SLS_USE_HDF5)
|
|
||||||
add_subdirectory(slsReceiverSoftware)
|
add_subdirectory(slsReceiverSoftware)
|
||||||
endif (SLS_USE_RECEIVER)
|
endif (SLS_USE_RECEIVER)
|
||||||
|
|
||||||
if (SLS_USE_GUI)
|
if (SLS_USE_GUI)
|
||||||
find_package(Qt4 REQUIRED)
|
add_subdirectory(slsDetectorGui)
|
||||||
find_package(Qwt 6.1 REQUIRED)
|
|
||||||
if (QT4_FOUND AND QWT_FOUND)
|
|
||||||
add_subdirectory(slsDetectorGui)
|
|
||||||
endif()
|
|
||||||
endif (SLS_USE_GUI)
|
endif (SLS_USE_GUI)
|
||||||
|
|
||||||
if (SLS_USE_SIMULATOR)
|
if (SLS_USE_SIMULATOR)
|
||||||
@ -211,7 +238,7 @@ if (SLS_USE_INTEGRATION_TESTS)
|
|||||||
endif (SLS_USE_INTEGRATION_TESTS)
|
endif (SLS_USE_INTEGRATION_TESTS)
|
||||||
|
|
||||||
if (SLS_USE_PYTHON)
|
if (SLS_USE_PYTHON)
|
||||||
set(PYBIND11_CPP_STANDARD -std=c++11)
|
find_package (Python 3.6 COMPONENTS Interpreter Development)
|
||||||
add_subdirectory(libs/pybind11)
|
add_subdirectory(libs/pybind11)
|
||||||
add_subdirectory(python)
|
add_subdirectory(python)
|
||||||
endif(SLS_USE_PYTHON)
|
endif(SLS_USE_PYTHON)
|
||||||
|
674
LICENSE
Normal file
@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
165
LICENSE.lesser
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
77
README.md
@ -4,7 +4,11 @@ Please do not update to any xxxx.xx.xx.dev0 tags. They are not releases, but tag
|
|||||||
Use only releases with tags such as x.x.x or x.x.x-rcx.
|
Use only releases with tags such as x.x.x or x.x.x-rcx.
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support)
|
##### 5.0.0 - Latest Release
|
||||||
|
Detailed documentation on the latest release can be found in the [software wiki](https://slsdetectorgroup.github.io/devdoc/index.html) and on the [official site](https://www.psi.ch/en/detectors/software).
|
||||||
|
|
||||||
|
##### Older Releases
|
||||||
|
Documentation is found in the package.
|
||||||
|
|
||||||
### Binaries
|
### Binaries
|
||||||
Binaries for the slsDetectorPackage are available through conda.
|
Binaries for the slsDetectorPackage are available through conda.
|
||||||
@ -12,6 +16,7 @@ Binaries for the slsDetectorPackage are available through conda.
|
|||||||
#Add conda channels
|
#Add conda channels
|
||||||
conda config --add channels conda-forge
|
conda config --add channels conda-forge
|
||||||
conda config --add channels slsdetectorgroup
|
conda config --add channels slsdetectorgroup
|
||||||
|
conda config --set channel_priority strict
|
||||||
|
|
||||||
conda install slsdetlib #only shared lib and command line
|
conda install slsdetlib #only shared lib and command line
|
||||||
conda install slsdet #python bindings (includes slsdetlib)
|
conda install slsdet #python bindings (includes slsdetlib)
|
||||||
@ -29,10 +34,8 @@ git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
|||||||
|
|
||||||
```
|
```
|
||||||
#### Dependencies
|
#### Dependencies
|
||||||
* Lib: c++11 compiler (gcc=>4.8), ZeroMQ 4
|
|
||||||
* Gui: Qt 4.8 and Qwt 6.0
|
Refer [this page](https://slsdetectorgroup.github.io/devdoc/dependencies.html) for dependencies.
|
||||||
* Calibration wizards and ctbGUI: ROOT
|
|
||||||
* Optional: HDF5
|
|
||||||
|
|
||||||
|
|
||||||
#### Compilation
|
#### Compilation
|
||||||
@ -42,27 +45,39 @@ cmk.sh or directly with cmake for more control.
|
|||||||
|
|
||||||
**1. Compile using script cmk.sh**<br>
|
**1. Compile using script cmk.sh**<br>
|
||||||
|
|
||||||
After compiling, the libraries and executables will be found in `slsDetectorPackage/build/bin` directory<br>
|
These are mainly aimed at those not familiar with using ccmake and cmake.
|
||||||
|
```
|
||||||
|
The binaries are generated in slsDetectorPackage/build/bin directory.
|
||||||
|
|
||||||
Usage: [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [-h] [-d <HDF5 directory>] [-j] <Number of threads>
|
Usage: ./cmk.sh [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
||||||
-[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
|
-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
|
-k: CMake command
|
||||||
-r: Build/Rebuilds only receiver
|
-l: Install directory
|
||||||
-g: Build/Rebuilds only gui
|
-t: Build/Rebuilds only text client
|
||||||
-s: Simulator
|
-r: Build/Rebuilds only receiver
|
||||||
-u: Chip Test Gui
|
-g: Build/Rebuilds only gui
|
||||||
-j: Number of threads to compile through
|
-s: Simulator
|
||||||
-e: Debug mode
|
-u: Chip Test Gui
|
||||||
-i: Builds tests
|
-j: Number of threads to compile through
|
||||||
|
-e: Debug mode
|
||||||
eg. Rebuild when you switch to a new build and compile in parallel:
|
-i: Builds tests
|
||||||
./cmk.sh -bj5
|
-m: Manuals
|
||||||
|
-n: Manuals without compiling doxygen (only rst)
|
||||||
|
-z: Moench zmq processor
|
||||||
|
|
||||||
|
|
||||||
|
# get all options
|
||||||
|
./cmk.sh -?
|
||||||
|
|
||||||
|
# new build and compile in parallel:
|
||||||
|
./cmk.sh -bj5
|
||||||
|
```
|
||||||
|
|
||||||
**2. Compile without script**<br>
|
**2. Compile without script**<br>
|
||||||
Use cmake to create out-of-source builds, by creating a build folder parallel to source directory. This would create a debug build with address sanitizers.
|
Use cmake to create out-of-source builds, by creating a build folder parallel to source directory. This would create a debug build with address sanitizers.
|
||||||
```
|
```
|
||||||
@ -71,3 +86,17 @@ Use cmake to create out-of-source builds, by creating a build folder parallel to
|
|||||||
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON
|
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON
|
||||||
$ make -j12 #or whatever number of threads wanted
|
$ make -j12 #or whatever number of threads wanted
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To install binaries using CMake
|
||||||
|
```
|
||||||
|
git clone --recursive https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake ../slsDetectorPackage -DCMAKE_INSTALL_PREFIX=/your/install/path
|
||||||
|
make -j12 #or whatever number of cores you are using to build
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Support
|
||||||
|
dhanya.thattil@psi.ch
|
||||||
|
erik.frojdh@psi.ch
|
386
RELEASE.txt
@ -1,70 +1,327 @@
|
|||||||
SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
SLS Detector Package 6.0.0-rc1 released on 08.10.2021 (Release Candidate 1)
|
||||||
===========================================================================
|
===========================================================================
|
||||||
|
|
||||||
|
This document describes the differences between v6.0.0-rc1 and v5.1.0.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CONTENTS
|
CONTENTS
|
||||||
--------
|
--------
|
||||||
1. Firmware Requirements
|
1. New or Changed Features
|
||||||
2. Download, Documentation & Support
|
2. Resolved Issues
|
||||||
|
3. Known Issues
|
||||||
|
4. Firmware Requirements
|
||||||
|
5. Download, Documentation & Support
|
||||||
|
|
||||||
|
|
||||||
1. Firmware Requirements
|
|
||||||
|
|
||||||
|
1. New or Changed Features
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Client
|
||||||
|
------
|
||||||
|
|
||||||
|
1. [Jungfrau] Chip version
|
||||||
|
Features for chipv1.1 incorporated
|
||||||
|
Command line: chipversion, API: getchipVersion
|
||||||
|
gets chip version (1.0 or 1.1)
|
||||||
|
chipv1.1 requires config_jungfrau.txt on detector server.
|
||||||
|
|
||||||
|
2. [Jungfrau] Chip configuration (only chipv1.1)
|
||||||
|
powering on the chip and changing settings will configure the chip.
|
||||||
|
Hence, required before acquisition.
|
||||||
|
|
||||||
|
3. [Jungfrau] Settings and Gain mode
|
||||||
|
Settings can be gain0 and highgain0. Gain mode can be dynamicgain,
|
||||||
|
forceswitchg1, forceswitchg2, fixg1, fixg2, fixg0. fixg0 must be
|
||||||
|
used with EXTRA caution as you can damage the detector.
|
||||||
|
Changing settings also changes dac values of 3 dacs () and reconfigures
|
||||||
|
chip (only v1.1)
|
||||||
|
|
||||||
|
4. [Jungfrau] Storage cells (only chipv1.1)
|
||||||
|
Additional number of storage cells not applicable for chipv1.1.
|
||||||
|
Storage cell start is only allowed from 0 - 3 for chipv1.1
|
||||||
|
(0 - 15 for chipv1.0).
|
||||||
|
|
||||||
|
5. [Gotthard2][Jungfrau] Filter Resistor
|
||||||
|
Command line: filterresistor, API: getFilterResistor/ setFilterResistor
|
||||||
|
Previous Command: filter, setFilter/ getFilter
|
||||||
|
Set Filter resistor. Increasing values for increasing resistance.
|
||||||
|
[Jungfrau] only for chipv1.1. Options: [0|1]. Default is 1.
|
||||||
|
[Gotthard2] Options: [0|1|2|3]. Default is 0.
|
||||||
|
|
||||||
|
6. [Jungfrau] Filter cell (only chipv1.1)
|
||||||
|
Command line: filtercell, API: getFilterCell/ setFilterCell
|
||||||
|
Set filter cell. Options: [0-12]. Advanced user command.
|
||||||
|
|
||||||
|
7. [Jungfrau] Comparator disable time (only chipv1.1)
|
||||||
|
Command line: comp_disable_time, API: getComparatorDisableTime/
|
||||||
|
setComparatorDisableTime
|
||||||
|
One can customize the period to disable comparator.
|
||||||
|
|
||||||
|
8. [Eiger][Jungfrau] Flip rows
|
||||||
|
Command line: fliprows, API: getFlipRows/ setFlipRows
|
||||||
|
Previous command: flippeddatax, setBottom/ getBottom
|
||||||
|
[Jungfrau] Flips rows in detector only for HW v2.0.
|
||||||
|
slsReceiver and slsDetectorGui will not flip them again.
|
||||||
|
[Eiger] same as before.
|
||||||
|
|
||||||
|
9. [Eiger][Jungfrau] Read n rows
|
||||||
|
Command line: readnrows, API: getReadNRows/ setReadNRows
|
||||||
|
Previous Command: readnlines, getPartialReadout/ setPartialReadout
|
||||||
|
[Eiger] same as before
|
||||||
|
[Jungfrau] Options: 8 - 512, multiples of 8. Default is 512.
|
||||||
|
|
||||||
|
10. [Gotthard2][Jungfrau] Current source
|
||||||
|
Command line: currentsource, API: getCurrentSource, setCurrentSource
|
||||||
|
Enable or disable current source. Default is disabled.
|
||||||
|
[Gotthard2] Can only enable or disable.
|
||||||
|
[Jungfrau] Can choose to fix, select source and choose normal or low
|
||||||
|
current. Normal/ low only for chipv1.1.
|
||||||
|
Select source is 0-63 for chipv1.0 and a 64 bit mask for chipv1.1.
|
||||||
|
|
||||||
|
11. Default dac
|
||||||
|
Command line: defaultdac, API: getDefaultDac/ setDefaultDac
|
||||||
|
change default value of a dac
|
||||||
|
[Jungfrau][Mythen3] Also change default value of dac for particular
|
||||||
|
setting.
|
||||||
|
|
||||||
|
12. Reset dacs
|
||||||
|
Command line: resetdacs, API: resetToDefaultDacs
|
||||||
|
Previous command: defaultdacs
|
||||||
|
Resets dacs to their default values or hard coded values.
|
||||||
|
|
||||||
|
13. [Mythen3] Gain Capacitance
|
||||||
|
Command line: gaincaps, API: getGainCaps/ setGainCaps
|
||||||
|
Set various gain capacitances.
|
||||||
|
|
||||||
|
14. [Gotthard2] Veto Streaming from chip
|
||||||
|
Command line: veto, API: getVeto/ setVeto
|
||||||
|
This command used to mean veto streaming from detector. Now, it means
|
||||||
|
veto streaming from chip (New feature). Default is disabled.
|
||||||
|
|
||||||
|
15. [Gotthard2] Veto streaming from detector
|
||||||
|
Command line: vetostream, API: getVetoStream, setVetoStream
|
||||||
|
Options: None, local link interface, 10 10GbE, Both
|
||||||
|
Default: None
|
||||||
|
10GbE (as before) will enable 2 udp interfaces in receiver.
|
||||||
|
|
||||||
|
16. [Gotthard2] Veto algorithm
|
||||||
|
Command line: vetoalg, API: getVetoAlgorithm/ setVetoAlgorithm
|
||||||
|
Set veto algorithm for each interface.
|
||||||
|
Options: hits, raw
|
||||||
|
|
||||||
|
17. [Eiger][Gotthard2][Mythen3] Module ID
|
||||||
|
Command line: moduleid, API: getModuleId
|
||||||
|
Previous command (Eiger only): serialnumber, getSerialNumber
|
||||||
|
Unique id read from txt file on detector and streamed out in udp header.
|
||||||
|
|
||||||
|
18. [Gotthard2]
|
||||||
|
Command line: dbitpipeline, API: getDBITPipeline/ setDBITPipeline
|
||||||
|
Set pipeline to latch digital bits. Options: 0-7
|
||||||
|
|
||||||
|
19. [Eiger][Jungfrau] Round Robin commands
|
||||||
|
Command line, udp_dstlist, API: getDestinationUDPList/
|
||||||
|
setDestinationUDPList
|
||||||
|
Round robin commands at the moment does not configure the receiver.
|
||||||
|
Set multiple udp destinations in the detector to stream udp data packets
|
||||||
|
to. Upto 32 destinations. Refer documentation for details.
|
||||||
|
|
||||||
|
Command line, udp_numdst, API: getNumberofUDPDestinations
|
||||||
|
|
||||||
|
[Jungfrau] Command line, udp_firstdst, API: getFirstUDPDestination/
|
||||||
|
setFirstUDPDestination
|
||||||
|
|
||||||
|
20. Command Line Parsing
|
||||||
|
Parsing of detector index and module index has been modified to
|
||||||
|
integrate round robin index.
|
||||||
|
[detector index]-[module index]:[round robin index] [command]
|
||||||
|
|
||||||
|
It is backwards compatible.
|
||||||
|
For ease, one can also execute
|
||||||
|
sls_detector_put [module index] [command]
|
||||||
|
|
||||||
|
21. Clear Udp Destination
|
||||||
|
Command line, udp_cleardst, API: clearUDPDestinations
|
||||||
|
This is useful when changing receivers for a detector or for round robin
|
||||||
|
system.
|
||||||
|
|
||||||
|
22. Shared Memory Naming
|
||||||
|
Shared memory name has been changed to reflect a more appropriate naming
|
||||||
|
scheme.
|
||||||
|
|
||||||
|
23. [Eiger][Mythen3] Blocking trigger
|
||||||
|
Command line: blockingtrigger, API: sendSoftwareTrigger
|
||||||
|
Sends software trigger signal to detector and blocks till frames are
|
||||||
|
sent out for that trigger.
|
||||||
|
|
||||||
|
24. [Eiger] Data stream enable for ports
|
||||||
|
Command line: datastream, API: getDataStream/ setDataStream
|
||||||
|
Enable or disable each port. Default: enabled
|
||||||
|
|
||||||
|
25. Changing TCP ports
|
||||||
|
This will only affect shared memory and will not try to change the
|
||||||
|
current tcp port of the control/stop server in detector.
|
||||||
|
|
||||||
|
26. [Eiger][Jungfrau][Gotthard2] Speed
|
||||||
|
Command line: readoutspeed, readoutspeedlist API: getReadoutSpeed/ setReadoutSpeed /
|
||||||
|
getReadoutSpeedList
|
||||||
|
Previous command: speed, setSpeed/ getSpeed
|
||||||
|
[Eiger][Jungfrau] same as before.
|
||||||
|
[Gotthard2] New command to set readout speed. Options: 108, 144 (in MHz)
|
||||||
|
|
||||||
|
|
||||||
|
Detector servers
|
||||||
|
----------------
|
||||||
|
|
||||||
|
1. [Gotthard2] Bad Channels moved to a new register, default settings
|
||||||
|
including clock frequency changed
|
||||||
|
|
||||||
|
2. [Gotthard2] Updated config file in detector server
|
||||||
|
|
||||||
|
|
||||||
|
Virtual servers
|
||||||
|
----------------
|
||||||
|
|
||||||
|
1. Artifical pixel values increasing by every packet, instead of every pixel.
|
||||||
|
|
||||||
|
2. All possible features updated.
|
||||||
|
|
||||||
|
|
||||||
|
Receiver
|
||||||
|
--------
|
||||||
|
|
||||||
|
1. Frames caught in metadata
|
||||||
|
Frames caught by the master receiver is added to master file metadata.
|
||||||
|
Hdf5 and Binary version numbers changed to 6.3
|
||||||
|
|
||||||
|
2. Removed Padding option for Deactivated half modules.
|
||||||
|
|
||||||
|
3. Changing Receiver TCP ports
|
||||||
|
This will only affect shared memory and will not try to change the
|
||||||
|
current tcp port of the receiver.
|
||||||
|
|
||||||
|
Gui
|
||||||
|
----
|
||||||
|
|
||||||
|
1. [Mythen3] counters added in settings tab
|
||||||
|
|
||||||
|
|
||||||
|
2. Resolved Issues
|
||||||
|
==================
|
||||||
|
|
||||||
|
Detector Servers
|
||||||
|
----------------
|
||||||
|
|
||||||
|
1. [Gotthard2] Tolerance in time parameters.
|
||||||
|
Eg. 220 ns was being set to 215 ns, instead of 222ns.
|
||||||
|
|
||||||
|
2. [Jungfrau] Stopping in trigger mode and then switching to auto timing mode
|
||||||
|
blocks data streaming from detector. Workaround fix made in
|
||||||
|
detector server to reset core until next firmware release.
|
||||||
|
|
||||||
|
3. [Jungfrau][CTB][Moench][Gotthard][Gotthard2][Mythen3] Firmware Programming
|
||||||
|
Firmware programming incorporates more validations such as checksum of
|
||||||
|
program. Always ensure client and server are of same release before
|
||||||
|
programming firmware.
|
||||||
|
|
||||||
|
4. [Eiger] Stop sends last frame
|
||||||
|
Stop acquisition will now also send out all complete frames in fifo.
|
||||||
|
|
||||||
|
5. [Eiger] Bottom not rotated in quad mode. Fixed.
|
||||||
|
|
||||||
|
6. [Mythen3] counter mask effect on vthreshold
|
||||||
|
Setting counter mask changes vth daac values (ie. disabling sets to 2800),
|
||||||
|
vthreshold only changes for enabled counters, setting vth overwrites
|
||||||
|
dac even if counter disabled and when counters enabled, remembers set
|
||||||
|
values.
|
||||||
|
|
||||||
|
7. [Eiger] fast quad fix for loading trimbits
|
||||||
|
|
||||||
|
Receiver
|
||||||
|
--------
|
||||||
|
|
||||||
|
1. Disabled port or deactivated (half) modules will not create files.
|
||||||
|
|
||||||
|
|
||||||
|
- better control of what is built (PR)?
|
||||||
|
- cmake package has hardcoded path to zeromq library
|
||||||
|
|
||||||
|
|
||||||
|
3. Firmware Requirements
|
||||||
========================
|
========================
|
||||||
|
|
||||||
Eiger
|
Eiger
|
||||||
=====
|
=====
|
||||||
Compatible version : 08.09.2020 (v27)
|
Compatible version : 08.10.2021 (v29)
|
||||||
|
|
||||||
Jungfrau
|
|
||||||
========
|
|
||||||
Compatible version : 24.07.2020 (v1.1, PCB v1.0)
|
|
||||||
: 21.07.2020 (v2.1, PCB v2.0)
|
|
||||||
|
|
||||||
Gotthard
|
|
||||||
========
|
|
||||||
Compatible version : 08.02.2018 (50um and 25um Master)
|
|
||||||
: 09.02.2018 (25 um Slave)
|
|
||||||
|
|
||||||
Mythen3
|
|
||||||
=======
|
|
||||||
Compatible version : 25.09.2020 (development)
|
|
||||||
|
|
||||||
Gotthard2
|
|
||||||
=========
|
|
||||||
Compatible version : 25.09.2020 (development)
|
|
||||||
|
|
||||||
Moench
|
|
||||||
======
|
|
||||||
Compatible version : 10.05.2020 (v1.0)
|
|
||||||
|
|
||||||
Ctb
|
|
||||||
===
|
|
||||||
Compatible version : 10.05.2019 (v1.0)
|
|
||||||
|
|
||||||
|
|
||||||
Detector Upgrade
|
|
||||||
================
|
|
||||||
|
|
||||||
The following can be upgraded remotely:
|
|
||||||
Eiger via bit files
|
|
||||||
Jungfrau via command <.pof>
|
|
||||||
Mythen3 via command <.rbf>
|
|
||||||
Gotthard2 via command <.rbf>
|
|
||||||
Moench via command <.pof>
|
|
||||||
Ctb via command <.pof>
|
|
||||||
|
|
||||||
The following cannot be upgraded remotely:
|
|
||||||
Gotthard
|
|
||||||
|
|
||||||
Instructions available at
|
|
||||||
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
|
||||||
and
|
|
||||||
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
|
|
||||||
|
|
||||||
Please refer to the link below for more details on the firmware versions.
|
|
||||||
https://www.psi.ch/en/detectors/firmware
|
|
||||||
|
|
||||||
|
|
||||||
2. Download, Documentation & Support
|
Jungfrau
|
||||||
|
========
|
||||||
|
Compatible version : 31.08.2021 (v1.2, PCB v1.0)
|
||||||
|
: 08.10.2021 (v2.2, PCB v2.0)
|
||||||
|
|
||||||
|
Gotthard
|
||||||
|
========
|
||||||
|
Compatible version : 08.02.2018 (50um and 25um Master)
|
||||||
|
: 09.02.2018 (25 um Slave)
|
||||||
|
|
||||||
|
Mythen3
|
||||||
|
=======
|
||||||
|
Compatible version : 10.09.2021 (development)
|
||||||
|
|
||||||
|
Gotthard2
|
||||||
|
=========
|
||||||
|
Compatible version : 27.05.2021 (v1.0)
|
||||||
|
|
||||||
|
Moench
|
||||||
|
======
|
||||||
|
Compatible version : 05.10.2020 (v1.0)
|
||||||
|
|
||||||
|
Ctb
|
||||||
|
===
|
||||||
|
Compatible version : 05.10.2020 (v1.0)
|
||||||
|
|
||||||
|
Detector Upgrade
|
||||||
|
================
|
||||||
|
|
||||||
|
The following can be upgraded remotely:
|
||||||
|
Eiger via bit files
|
||||||
|
Jungfrau via command <.pof>
|
||||||
|
Mythen3 via command <.rbf>
|
||||||
|
Gotthard2 via command <.rbf>
|
||||||
|
Moench via command <.pof>
|
||||||
|
Ctb via command <.pof>
|
||||||
|
|
||||||
|
The following cannot be upgraded remotely:
|
||||||
|
Gotthard
|
||||||
|
|
||||||
|
Instructions available at
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/firmware.html
|
||||||
|
and
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/serverupgrade.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5. Known Issues
|
||||||
|
===============
|
||||||
|
|
||||||
|
Receiver
|
||||||
|
--------
|
||||||
|
1. It does not handle readnrows or partial readout. Only the summary
|
||||||
|
is adjusted to print in red. However, it will still write complete
|
||||||
|
images with missing data padded. Roi will be implemented in future
|
||||||
|
that can be complimented with this feature to remove the additional
|
||||||
|
data in files.
|
||||||
|
|
||||||
|
2. Round robin is not implemented in receiver side, ie. one cannot configure
|
||||||
|
more than 1 receiver at a time. This will/might be done in the future.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6. Download, Documentation & Support
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
Download
|
Download
|
||||||
@ -91,6 +348,9 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
|||||||
Consuming slsDetectorPackage:
|
Consuming slsDetectorPackage:
|
||||||
https://slsdetectorgroup.github.io/devdoc/consuming.html
|
https://slsdetectorgroup.github.io/devdoc/consuming.html
|
||||||
|
|
||||||
|
API Examples:
|
||||||
|
https://github.com/slsdetectorgroup/api-examples
|
||||||
|
|
||||||
Command Line Documentation:
|
Command Line Documentation:
|
||||||
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
||||||
|
|
||||||
@ -109,14 +369,18 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
|||||||
Python API Example:
|
Python API Example:
|
||||||
https://slsdetectorgroup.github.io/devdoc/pyexamples.html
|
https://slsdetectorgroup.github.io/devdoc/pyexamples.html
|
||||||
|
|
||||||
|
Receivers (including custom receiver):
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/receivers.html
|
||||||
|
https://slsdetectorgroup.github.io/devdoc/slsreceiver.html
|
||||||
|
|
||||||
TroubleShooting:
|
TroubleShooting:
|
||||||
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
|
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
|
||||||
|
|
||||||
Further Documentation:
|
Further Documentation:
|
||||||
https://www.psi.ch/en/detectors/documentation
|
https://www.psi.ch/en/detectors/documentation
|
||||||
|
|
||||||
Old Release notes:
|
Info on Releases:
|
||||||
https://www.psi.ch/en/detectors/latest-installation
|
https://www.psi.ch/en/detectors/software
|
||||||
|
|
||||||
|
|
||||||
Support
|
Support
|
||||||
@ -124,4 +388,4 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
|||||||
|
|
||||||
dhanya.thattil@psi.ch
|
dhanya.thattil@psi.ch
|
||||||
erik.frojdh@psi.ch
|
erik.frojdh@psi.ch
|
||||||
anna.bergamaschi@psi.ch
|
|
||||||
|
@ -1,112 +0,0 @@
|
|||||||
|
|
||||||
# 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()
|
|
@ -25,6 +25,12 @@ install(FILES
|
|||||||
DESTINATION ${CMAKE_INSTALL_DIR}
|
DESTINATION ${CMAKE_INSTALL_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
install(FILES
|
||||||
|
"${CMAKE_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake"
|
||||||
|
COMPONENT devel
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DIR}/libzmq-pkg-config
|
||||||
|
)
|
||||||
|
|
||||||
if (PROJECT_LIBRARIES OR PROJECT_STATIC_LIBRARIES)
|
if (PROJECT_LIBRARIES OR PROJECT_STATIC_LIBRARIES)
|
||||||
install(
|
install(
|
||||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
|
@ -12,8 +12,21 @@ include(CMakeFindDependencyMacro)
|
|||||||
|
|
||||||
set(SLS_USE_HDF5 "@SLS_USE_HDF5@")
|
set(SLS_USE_HDF5 "@SLS_USE_HDF5@")
|
||||||
|
|
||||||
# Add optional dependencies here
|
|
||||||
|
find_package(ZeroMQ 4 QUIET)
|
||||||
|
# libzmq autotools install: fallback to pkg-config
|
||||||
|
if(NOT ZeroMQ_FOUND)
|
||||||
|
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/libzmq-pkg-config)
|
||||||
|
find_package(ZeroMQ 4 REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT ZeroMQ_FOUND)
|
||||||
|
message(FATAL_ERROR "ZeroMQ was NOT found!")
|
||||||
|
endif()
|
||||||
|
|
||||||
find_dependency(Threads)
|
find_dependency(Threads)
|
||||||
|
|
||||||
|
# Add optional dependencies here
|
||||||
if (SLS_USE_HDF5)
|
if (SLS_USE_HDF5)
|
||||||
find_dependency(HDF5)
|
find_dependency(HDF5)
|
||||||
endif ()
|
endif ()
|
||||||
|
33
cmk.sh
@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
CMAKE="cmake3"
|
||||||
BUILDDIR="build"
|
BUILDDIR="build"
|
||||||
|
INSTALLDIR=""
|
||||||
HDF5DIR="/opt/hdf5v1.10.0"
|
HDF5DIR="/opt/hdf5v1.10.0"
|
||||||
HDF5=0
|
HDF5=0
|
||||||
COMPILERTHREADS=0
|
COMPILERTHREADS=0
|
||||||
@ -22,13 +24,15 @@ CMAKE_PRE=""
|
|||||||
CMAKE_POST=""
|
CMAKE_POST=""
|
||||||
|
|
||||||
usage() { echo -e "
|
usage() { echo -e "
|
||||||
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-j] <Number of threads>
|
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
||||||
-[no option]: only make
|
-[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
|
-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
|
||||||
|
-k: CMake command
|
||||||
|
-l: Install 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
|
||||||
@ -75,7 +79,7 @@ For rebuilding only certain sections
|
|||||||
|
|
||||||
" ; exit 1; }
|
" ; exit 1; }
|
||||||
|
|
||||||
while getopts ":bpchd:j:trgeisumnz" opt ; do
|
while getopts ":bpchd:k:l:j:trgeisumnz" opt ; do
|
||||||
case $opt in
|
case $opt in
|
||||||
b)
|
b)
|
||||||
echo "Building of CMake files Required"
|
echo "Building of CMake files Required"
|
||||||
@ -99,6 +103,14 @@ while getopts ":bpchd:j:trgeisumnz" opt ; do
|
|||||||
echo "New HDF5 directory: $OPTARG"
|
echo "New HDF5 directory: $OPTARG"
|
||||||
HDF5DIR=$OPTARG
|
HDF5DIR=$OPTARG
|
||||||
;;
|
;;
|
||||||
|
l)
|
||||||
|
echo "CMake install directory: $OPTARG"
|
||||||
|
INSTALLDIR="$OPTARG"
|
||||||
|
;;
|
||||||
|
k)
|
||||||
|
echo "CMake command: $OPTARG"
|
||||||
|
CMAKE="$OPTARG"
|
||||||
|
;;
|
||||||
j)
|
j)
|
||||||
echo "Number of compiler threads: $OPTARG"
|
echo "Number of compiler threads: $OPTARG"
|
||||||
COMPILERTHREADS=$OPTARG
|
COMPILERTHREADS=$OPTARG
|
||||||
@ -252,7 +264,15 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#install
|
||||||
|
if [ -n "$INSTALLDIR" ]; then
|
||||||
|
CMAKE_POST+=" -DCMAKE_INSTALL_PREFIX=$INSTALLDIR"
|
||||||
|
CMAKE_POST+=" -DCMAKE_FIND_ROOT_PATH=$INSTALLDIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
#enter build dir
|
#enter build dir
|
||||||
|
#pushd $BUILDDIR;
|
||||||
cd $BUILDDIR;
|
cd $BUILDDIR;
|
||||||
echo "in "$PWD
|
echo "in "$PWD
|
||||||
|
|
||||||
@ -261,7 +281,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 cmake3 $CMAKE_POST .."
|
BUILDCOMMAND="$CMAKE_PRE $CMAKE $CMAKE_POST .."
|
||||||
echo $BUILDCOMMAND
|
echo $BUILDCOMMAND
|
||||||
eval $BUILDCOMMAND
|
eval $BUILDCOMMAND
|
||||||
fi
|
fi
|
||||||
@ -305,6 +325,13 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#install
|
||||||
|
if [ -n "$INSTALLDIR" ]; then
|
||||||
|
make install
|
||||||
|
# popd
|
||||||
|
# $CMAKE --build $BUILDDIR --target install
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,13 +8,15 @@ cmake .. \
|
|||||||
-DSLS_USE_TEXTCLIENT=ON \
|
-DSLS_USE_TEXTCLIENT=ON \
|
||||||
-DSLS_USE_RECEIVER=ON \
|
-DSLS_USE_RECEIVER=ON \
|
||||||
-DSLS_USE_GUI=ON \
|
-DSLS_USE_GUI=ON \
|
||||||
|
-DSLS_USE_MOENCH=ON\
|
||||||
-DSLS_USE_TESTS=ON \
|
-DSLS_USE_TESTS=ON \
|
||||||
-DSLS_USE_PYTHON=OFF \
|
-DSLS_USE_PYTHON=OFF \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DSLS_USE_HDF5=OFF\
|
-DSLS_USE_HDF5=OFF\
|
||||||
|
|
||||||
|
NCORES=$(getconf _NPROCESSORS_ONLN)
|
||||||
cmake --build . -- -j10
|
echo "Building using: ${NCORES} cores"
|
||||||
|
cmake --build . -- -j${NCORES}
|
||||||
cmake --build . --target install
|
cmake --build . --target install
|
||||||
|
|
||||||
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
|
||||||
|
@ -2,6 +2,7 @@ python:
|
|||||||
- 3.6
|
- 3.6
|
||||||
- 3.7
|
- 3.7
|
||||||
- 3.8
|
- 3.8
|
||||||
|
- 3.9
|
||||||
|
|
||||||
numpy:
|
numpy:
|
||||||
- 1.17
|
- 1.17
|
@ -1,3 +1,3 @@
|
|||||||
#Copy the GUI
|
#Copy the GUI
|
||||||
mkdir $PREFIX/bin
|
mkdir -p $PREFIX/bin
|
||||||
cp build/bin/slsDetectorGui $PREFIX/bin/.
|
cp build/install/bin/slsDetectorGui $PREFIX/bin/.
|
||||||
|
@ -1,14 +1,10 @@
|
|||||||
|
|
||||||
mkdir $PREFIX/lib
|
mkdir -p $PREFIX/lib
|
||||||
mkdir $PREFIX/bin
|
mkdir -p $PREFIX/bin
|
||||||
mkdir $PREFIX/include
|
mkdir -p $PREFIX/include/sls
|
||||||
mkdir $PREFIX/include/slsDetectorPackage
|
# mkdir $PREFIX/include/slsDetectorPackage
|
||||||
|
|
||||||
#Shared and static libraries
|
#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/.
|
|
||||||
|
|
||||||
cp build/install/lib/* $PREFIX/lib/
|
cp build/install/lib/* $PREFIX/lib/
|
||||||
|
|
||||||
#Binaries
|
#Binaries
|
||||||
@ -20,5 +16,5 @@ cp build/install/bin/slsReceiver $PREFIX/bin/.
|
|||||||
cp build/install/bin/slsMultiReceiver $PREFIX/bin/.
|
cp build/install/bin/slsMultiReceiver $PREFIX/bin/.
|
||||||
|
|
||||||
|
|
||||||
cp build/install/include/* $PREFIX/include/
|
cp build/install/include/sls/* $PREFIX/include/sls
|
||||||
cp -r build/install/share/ $PREFIX/share
|
cp -r build/install/share/ $PREFIX/share
|
||||||
|
4
conda-recepie/copy_moench.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#Copy the Moench executables
|
||||||
|
mkdir -p $PREFIX/bin
|
||||||
|
cp build/install/bin/moench04ZmqProcess $PREFIX/bin/.
|
||||||
|
cp build/install/bin/moenchZmqProcess $PREFIX/bin/.
|
@ -59,6 +59,16 @@ outputs:
|
|||||||
script: copy_lib.sh
|
script: copy_lib.sh
|
||||||
|
|
||||||
requirements:
|
requirements:
|
||||||
|
build:
|
||||||
|
- {{ compiler('c') }}
|
||||||
|
- {{compiler('cxx')}}
|
||||||
|
- libstdcxx-ng
|
||||||
|
- libgcc-ng
|
||||||
|
- zeromq
|
||||||
|
|
||||||
|
host:
|
||||||
|
- zeromq
|
||||||
|
|
||||||
run:
|
run:
|
||||||
- libstdcxx-ng
|
- libstdcxx-ng
|
||||||
- libgcc-ng
|
- libgcc-ng
|
||||||
@ -78,6 +88,8 @@ outputs:
|
|||||||
|
|
||||||
host:
|
host:
|
||||||
- python
|
- python
|
||||||
|
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||||
|
|
||||||
|
|
||||||
run:
|
run:
|
||||||
- libstdcxx-ng
|
- libstdcxx-ng
|
||||||
@ -94,8 +106,29 @@ outputs:
|
|||||||
- name: slsdetgui
|
- name: slsdetgui
|
||||||
script: copy_gui.sh
|
script: copy_gui.sh
|
||||||
requirements:
|
requirements:
|
||||||
|
|
||||||
|
build:
|
||||||
|
- {{ compiler('c') }}
|
||||||
|
- {{compiler('cxx')}}
|
||||||
|
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||||
|
- qwt 6.*
|
||||||
|
|
||||||
run:
|
run:
|
||||||
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||||
- qwt 6.*
|
- qwt 6.*
|
||||||
- qt 4.8.*
|
- qt 4.8.*
|
||||||
- expat
|
- expat
|
||||||
|
|
||||||
|
- name: moenchzmq
|
||||||
|
script: copy_moench.sh
|
||||||
|
requirements:
|
||||||
|
|
||||||
|
build:
|
||||||
|
- {{ compiler('c') }}
|
||||||
|
- {{compiler('cxx')}}
|
||||||
|
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||||
|
|
||||||
|
|
||||||
|
run:
|
||||||
|
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||||
|
- expat
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <TColor.h>
|
#include <TColor.h>
|
||||||
#include <TTimer.h>
|
#include <TTimer.h>
|
||||||
#include <TH2F.h>
|
#include <TH2F.h>
|
||||||
|
#include <TSystem.h>
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -25,8 +26,8 @@
|
|||||||
|
|
||||||
#include "ctbAcquisition.h"
|
#include "ctbAcquisition.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls/sls_detector_defs.h"
|
||||||
#include "ctbMain.h"
|
#include "ctbMain.h"
|
||||||
#include "moench03CtbData.h"
|
#include "moench03CtbData.h"
|
||||||
//#include "moench03TCtbData.h"
|
//#include "moench03TCtbData.h"
|
||||||
@ -43,7 +44,7 @@
|
|||||||
#include "moench04CtbZmqData.h"
|
#include "moench04CtbZmqData.h"
|
||||||
#include "moench04CtbZmq10GbData.h"
|
#include "moench04CtbZmq10GbData.h"
|
||||||
#include "deserializer.h"
|
#include "deserializer.h"
|
||||||
#include "detectorData.h"
|
#include "sls/detectorData.h"
|
||||||
#include "imageZmq16bit.h"
|
#include "imageZmq16bit.h"
|
||||||
#include "imageZmq32bit.h"
|
#include "imageZmq32bit.h"
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
#include "ctbAdcs.h"
|
#include "ctbAdcs.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
#include "ctbDacs.h"
|
#include "ctbDacs.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls/sls_detector_defs.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
//#include "sls_detector_exceptions.h"
|
//#include "sls/sls_detector_exceptions.h"
|
||||||
//#include "ansi.h"
|
//#include "sls/ansi.h"
|
||||||
#define RED "\x1b[31m"
|
#define RED "\x1b[31m"
|
||||||
#define RESET "\x1b[0m"
|
#define RESET "\x1b[0m"
|
||||||
#define BOLD "\x1b[1m"
|
#define BOLD "\x1b[1m"
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls/sls_detector_defs.h"
|
||||||
//#include "sls_receiver_defs.h"
|
//#include "sls_receiver_defs.h"
|
||||||
#include "ctbMain.h"
|
#include "ctbMain.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "ctbMain.h"
|
#include "ctbMain.h"
|
||||||
#include "ctbDacs.h"
|
#include "ctbDacs.h"
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
#include "ctbPattern.h"
|
#include "ctbPattern.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "ctbDacs.h"
|
#include "ctbDacs.h"
|
||||||
#include "ctbPowers.h"
|
#include "ctbPowers.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls/sls_detector_defs.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#include "ctbSignals.h"
|
#include "ctbSignals.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
#include "ctbSlowAdcs.h"
|
#include "ctbSlowAdcs.h"
|
||||||
#include "ctbDefs.h"
|
#include "ctbDefs.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls/sls_detector_defs.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -30,3 +30,18 @@ Commands
|
|||||||
-----------
|
-----------
|
||||||
|
|
||||||
.. include:: ../commands.rst
|
.. include:: ../commands.rst
|
||||||
|
|
||||||
|
|
||||||
|
Depreciated commands
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
.. note ::
|
||||||
|
All the dac commands are preceded with the **dac** command. Use command **daclist** to get correct list of dac command arguments for current detector.
|
||||||
|
|
||||||
|
.. csv-table:: Depreciated commands
|
||||||
|
:file: ../depreciated.csv
|
||||||
|
:widths: 35, 35
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ CMake approaches.
|
|||||||
One can test with :ref:`detector simulators<Virtual Detector Servers>` before testing the API with a real detector or when a real detector is not at hand.
|
One can test with :ref:`detector simulators<Virtual Detector Servers>` before testing the API with a real detector or when a real detector is not at hand.
|
||||||
|
|
||||||
CMake: slsDetectorPackage as submodule in your project
|
CMake: slsDetectorPackage as submodule in your project
|
||||||
---------------------------------------
|
---------------------------------------------------------------
|
||||||
|
|
||||||
If you are using CMake to build your integration and want to build everything
|
If you are using CMake to build your integration and want to build everything
|
||||||
in one go, we support adding slsDetectorPackage as a subfolder in your cmake project.
|
in one go, we support adding slsDetectorPackage as a subfolder in your cmake project.
|
||||||
@ -91,7 +91,7 @@ manually when invoking g++. This can sometimes be handy for a quick try.
|
|||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
int main(){
|
int main(){
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ Running a config file [e1]
|
|||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
...
|
...
|
||||||
sls::Detector det;
|
sls::Detector det;
|
||||||
det.loadConfig("path/to/config/file.config");
|
det.loadConfig("path/to/config/file.config");
|
||||||
@ -105,7 +105,7 @@ as converting to floating point.
|
|||||||
|
|
||||||
.. code-block:: cpp
|
.. code-block:: cpp
|
||||||
|
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
...
|
...
|
||||||
std::chrono::microseconds t0{500};
|
std::chrono::microseconds t0{500};
|
||||||
|
@ -12,32 +12,7 @@ Download
|
|||||||
|
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- bit files
|
- `bit files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
.. list-table::
|
|
||||||
:widths: 25 10 30 25 10
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - Software
|
|
||||||
- Hardware
|
|
||||||
- Firmware Date
|
|
||||||
- Firmware Link
|
|
||||||
- Comments
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
-
|
|
||||||
- 08.09.2020
|
|
||||||
- `v27 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/eiger/v27/>`__
|
|
||||||
-
|
|
||||||
* - v4.0.0 - v4.2.0
|
|
||||||
-
|
|
||||||
- 30.07.2019
|
|
||||||
- `v24 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/eiger/v24/>`__
|
|
||||||
-
|
|
||||||
* - v3.1.0 - v3.1.5
|
|
||||||
-
|
|
||||||
- 17.08.2017
|
|
||||||
- `v20 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/eiger/v20/>`__
|
|
||||||
-
|
|
||||||
|
|
||||||
|
|
||||||
Upgrade
|
Upgrade
|
||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
@ -116,37 +91,7 @@ Download
|
|||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- pof files
|
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
.. list-table::
|
|
||||||
:widths: 25 10 30 25 10
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - Software
|
|
||||||
- Hardware
|
|
||||||
- Firmware Date
|
|
||||||
- Firmware Link
|
|
||||||
- Comments
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
- 2.0
|
|
||||||
- 21.07.2020
|
|
||||||
- `v2.1 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v2_1/jungfrau_v2_1.pof>`__
|
|
||||||
-
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
- 1.0
|
|
||||||
- 24.07.2020
|
|
||||||
- `v1.1 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v1_1/jungfrau_v1_1.pof>`__
|
|
||||||
-
|
|
||||||
* - v4.0.1 - v4.2.0
|
|
||||||
- 1.0
|
|
||||||
- 06.12.2018
|
|
||||||
- `v0.7 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v0_7/jungfrau_v0_7.pof>`__
|
|
||||||
-
|
|
||||||
* - v3.1.0 - v3.1.5
|
|
||||||
- 1.0
|
|
||||||
- 13.11.2017
|
|
||||||
- `v0.6 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/jungfrau/v0_6/jungfrau_v0_6.pof>`__
|
|
||||||
-
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v4.x.x)
|
Upgrade (from v4.x.x)
|
||||||
@ -156,7 +101,7 @@ Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you
|
|||||||
|
|
||||||
#. Tftp must be installed on pc.
|
#. Tftp must be installed on pc.
|
||||||
|
|
||||||
#. Update client package to the latest (5.0.0-rc1).
|
#. Update client package to the latest (5.x.x).
|
||||||
|
|
||||||
#. Disable server respawning or kill old server
|
#. Disable server respawning or kill old server
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -204,11 +149,13 @@ Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you
|
|||||||
jungfrauDetectorServervxxx --stop-server 1953
|
jungfrauDetectorServervxxx --stop-server 1953
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0-rcx)
|
Upgrade (from v5.0.0)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
||||||
|
|
||||||
|
Always ensure that the client and server software are of the same release.
|
||||||
|
|
||||||
|
|
||||||
#. Program from console
|
#. Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -230,31 +177,8 @@ Download
|
|||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- pof files
|
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
.. list-table::
|
|
||||||
:widths: 15 15 15 15 5
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - Software
|
|
||||||
- Hardware
|
|
||||||
- Firmware Date
|
|
||||||
- Firmware Link
|
|
||||||
- Comments
|
|
||||||
* - All versions
|
|
||||||
- 50um
|
|
||||||
- 08.02.2018
|
|
||||||
- `50um <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/gotthard_I/50um/gotthard_I_50um.pof>`__
|
|
||||||
-
|
|
||||||
* - All versions
|
|
||||||
- 25um (master)
|
|
||||||
- 08.02.2018
|
|
||||||
- `25um (master) <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/gotthard_I/25um/master/gotthard_I_25um_master.pof>`__
|
|
||||||
-
|
|
||||||
* - All versions
|
|
||||||
- 25um (slave)
|
|
||||||
- 09.02.2018
|
|
||||||
- `25um (slave) <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/gotthard_I/25um/slave/gotthard_I_25um_slave.pof>`__
|
|
||||||
-
|
|
||||||
|
|
||||||
.. _firmware upgrade using blaster for blackfin:
|
.. _firmware upgrade using blaster for blackfin:
|
||||||
|
|
||||||
@ -294,26 +218,14 @@ Download
|
|||||||
|
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- rbf files
|
- rbf files (in developement)
|
||||||
.. list-table::
|
|
||||||
:widths: 25 10 30 25 10
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - Software
|
|
||||||
- Hardware
|
|
||||||
- Firmware Date
|
|
||||||
- Firmware Link
|
|
||||||
- Comments
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
-
|
|
||||||
- 25.09.2020
|
|
||||||
-
|
|
||||||
- development
|
|
||||||
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0-rcx)
|
Upgrade (from v5.0.0)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Always ensure that the client and server software are of the same release.
|
||||||
|
|
||||||
#. Program from console
|
#. Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -337,25 +249,14 @@ Download
|
|||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- rbf files
|
- rbf files (in development)
|
||||||
.. list-table::
|
|
||||||
:widths: 25 10 30 25 10
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - Software
|
|
||||||
- Hardware
|
|
||||||
- Firmware Date
|
|
||||||
- Firmware Link
|
|
||||||
- Comments
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
-
|
|
||||||
- 25.09.2020
|
|
||||||
-
|
|
||||||
- development
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0-rcx)
|
Upgrade (from v5.0.0)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Always ensure that the client and server software are of the same release.
|
||||||
|
|
||||||
#. Program from console
|
#. Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -375,32 +276,16 @@ Download
|
|||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- pof files
|
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
.. list-table::
|
|
||||||
:widths: 25 10 30 25 10
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - Software
|
|
||||||
- Hardware
|
|
||||||
- Firmware Date
|
|
||||||
- Firmware Link
|
|
||||||
- Comments
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
- EPCQ128
|
|
||||||
- 05.10.2020
|
|
||||||
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/moench/EPCQ128/v1_0/moench_v1_0_201005.pof>`__
|
|
||||||
-
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
- EPCS128
|
|
||||||
- 05.10.2020
|
|
||||||
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/moench/EPCS128/v1_0/moench_v1_0_201005.pof>`__
|
|
||||||
-
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0-rcx)
|
Upgrade (from v5.0.0)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
||||||
|
|
||||||
|
Always ensure that the client and server software are of the same release.
|
||||||
|
|
||||||
#. Program from console
|
#. Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -419,32 +304,16 @@ Download
|
|||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||||
|
|
||||||
- pof files
|
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||||
.. list-table::
|
|
||||||
:widths: 25 10 30 25 10
|
|
||||||
:header-rows: 1
|
|
||||||
|
|
||||||
* - Software
|
|
||||||
- Hardware
|
|
||||||
- Firmware Date
|
|
||||||
- Firmware Link
|
|
||||||
- Comments
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
- EPCQ128
|
|
||||||
- 05.10.2020
|
|
||||||
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/ctb/EPCQ128/v1_0/ctb_v1_0_201005.pof>`__
|
|
||||||
-
|
|
||||||
* - v5.0.0-rcx
|
|
||||||
- EPCS128
|
|
||||||
- 05.10.2020
|
|
||||||
- `v1.0 <https://github.com/slsdetectorgroup/slsDetectorFirmware/blob/master/binaries/ctb/EPCS128/v1_0/ctb_v1_0_201005.pof>`__
|
|
||||||
-
|
|
||||||
|
|
||||||
Upgrade (from v5.0.0-rcx)
|
Upgrade (from v5.0.0)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
||||||
|
|
||||||
|
Always ensure that the client and server software are of the same release.
|
||||||
|
|
||||||
#. Program from console
|
#. Program from console
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -462,11 +331,12 @@ Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you
|
|||||||
Firmware Troubleshooting with blackfin
|
Firmware Troubleshooting with blackfin
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
#. v4.x.x client after programming will most likely reboot the blackfin processor, regardless of error.
|
1. v4.x.x client after programming will most likely reboot the blackfin processor, regardless of error.
|
||||||
|
|
||||||
#. v5.x.x-rcx client after programming will not reboot the blackfin processor, if error occurred.
|
2. v5.x.x-rcx client after programming will not reboot the blackfin processor, if error occurred.
|
||||||
|
|
||||||
|
3. If a reboot occured with an incomplete firmware in flash, the blackfin will most likely not find the mtd3 drive. To see if this drive exists:
|
||||||
|
|
||||||
#. If a reboot occured with an incomplete firmware in flash, the blackfin will most likely not find the mtd3 drive. To see if this drive exists:
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# connect to the board
|
# connect to the board
|
||||||
@ -482,28 +352,45 @@ Firmware Troubleshooting with blackfin
|
|||||||
|
|
||||||
4. If one can see the mtd3 drive, one can already try to flash again using the **programfpga** command (without rebooting blackfin or detector).
|
4. If one can see the mtd3 drive, one can already try to flash again using the **programfpga** command (without rebooting blackfin or detector).
|
||||||
|
|
||||||
#. If one can't list it, read the next section to try to get the blackfin to list it.
|
5. If one can't list it, read the next section to try to get the blackfin to list it.
|
||||||
|
|
||||||
How to get back mtd3 drive remotely
|
How to get back mtd3 drive remotely (copying new kernel)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
This might take a few reruns (maybe even 10) until the mtd drive is accessed by the blackfin upon linux startup.
|
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# step 1: connect to the board
|
# step 1: get the kernel image (uImage.lzma) from slsdetectorgroup
|
||||||
|
# and copy it to pc's tftp folder
|
||||||
|
|
||||||
|
# step 2: connect to the board
|
||||||
telnet bchipxxx
|
telnet bchipxxx
|
||||||
|
|
||||||
# step 2: check if mtd3 drive listed
|
#step 3: go to directory for space
|
||||||
more /proc/mtd
|
cd /var/tmp/
|
||||||
|
|
||||||
# step 3: tell fpga not to touch flash and reboot
|
# step 3: copy kernel to board
|
||||||
echo 9 > /sys/class/gpio/export;
|
tftp pcxxx -r uImage.lzma -g
|
||||||
echo out > /sys/class/gpio/gpio9/direction;
|
|
||||||
echo 0 > /sys/class/gpio/gpio9/value;
|
# step 4: verify kernel copied properly
|
||||||
|
ls -lrt
|
||||||
|
|
||||||
|
# step 5: erase flash
|
||||||
|
flash_eraseall /dev/mtd1
|
||||||
|
|
||||||
|
# step 6: copy new image to kernel drive
|
||||||
|
cat uImage.lzma > /dev/mtd1
|
||||||
|
|
||||||
|
# step 7:
|
||||||
|
sync
|
||||||
|
|
||||||
|
# step 8:
|
||||||
reboot
|
reboot
|
||||||
|
|
||||||
# step 4: repeat steps 1 - 3 until you see the mtd3 drive
|
# step 9: verification
|
||||||
|
telnet bchipxxx
|
||||||
|
uname -a # verify kernel date
|
||||||
|
more /proc/mtd # verify mtd3 is listed
|
||||||
|
|
||||||
|
|
||||||
Last Resort using USB Blaster
|
Last Resort using USB Blaster
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "CmdProxy.h"
|
#include "CmdProxy.h"
|
||||||
#include "Detector.h"
|
#include "sls/Detector.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls/sls_detector_defs.h"
|
||||||
|
|
||||||
std::string replace_all(const std::string &src, const std::string &from,
|
std::string replace_all(const std::string &src, const std::string &from,
|
||||||
const std::string &to) {
|
const std::string &to) {
|
||||||
@ -51,4 +51,11 @@ int main() {
|
|||||||
auto help = replace_all(tmp, "\n\t", "\n\t\t| ");
|
auto help = replace_all(tmp, "\n\t", "\n\t\t| ");
|
||||||
fs << '\t' << cmd << usage << help << "\n";
|
fs << '\t' << cmd << usage << help << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::ofstream fs2("depreciated.csv");
|
||||||
|
fs2 << "Old, New\n";
|
||||||
|
auto cmds = proxy.GetDepreciatedCommands();
|
||||||
|
for (auto it : cmds) {
|
||||||
|
fs2 << it.first << ", " << it.second << '\n';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,8 @@
|
|||||||
Installation
|
Installation
|
||||||
==============================================
|
==============================================
|
||||||
|
|
||||||
|
.. _build from source using cmake:
|
||||||
|
|
||||||
Build from source using CMake
|
Build from source using CMake
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
@ -47,25 +49,39 @@ The easiest way to configure options is to use the ccmake utility.
|
|||||||
|
|
||||||
Build using cmk.sh script
|
Build using cmk.sh script
|
||||||
-------------------------
|
-------------------------
|
||||||
|
These are mainly aimed at those not familiar with using ccmake and cmake.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
The binaries are generated in slsDetectorPackage/build/bin directory.
|
The binaries are generated in slsDetectorPackage/build/bin directory.
|
||||||
|
|
||||||
# new build and make with 9 parallel threads
|
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
||||||
./cmk.sh -cbj9
|
-[no option]: only make
|
||||||
|
-c: Clean
|
||||||
# build with python
|
-b: Builds/Rebuilds CMake files normal mode
|
||||||
./cmk.sh -bpj9
|
-p: Builds/Rebuilds Python API
|
||||||
|
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||||
# build with GUI
|
-d: HDF5 Custom Directory
|
||||||
./cmk.sh -bgj9
|
-k: CMake command
|
||||||
|
-l: Install directory
|
||||||
# build with hdf5
|
-t: Build/Rebuilds only text client
|
||||||
./cmk.sh -hj9 -d [path of hdf5 dir]
|
-r: Build/Rebuilds only receiver
|
||||||
|
-g: Build/Rebuilds only gui
|
||||||
|
-s: Simulator
|
||||||
|
-u: Chip Test Gui
|
||||||
|
-j: Number of threads to compile through
|
||||||
|
-e: Debug mode
|
||||||
|
-i: Builds tests
|
||||||
|
-m: Manuals
|
||||||
|
-n: Manuals without compiling doxygen (only rst)
|
||||||
|
-z: Moench zmq processor
|
||||||
|
|
||||||
# get all options
|
# get all options
|
||||||
./cmk.sh -?
|
./cmk.sh -?
|
||||||
|
|
||||||
|
# new build and compile in parallel:
|
||||||
|
./cmk.sh -bj5
|
||||||
|
|
||||||
|
|
||||||
Install binaries using conda
|
Install binaries using conda
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
@ -67,9 +67,6 @@ exposed to Python through pybind11.
|
|||||||
.. autoclass:: readoutMode
|
.. autoclass:: readoutMode
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
.. autoclass:: masterFlags
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
.. autoclass:: burstMode
|
.. autoclass:: burstMode
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ The enums can be found in slsdet.enums
|
|||||||
>>> [e for e in dir(slsdet.enums) if not e.startswith('_')]
|
>>> [e for e in dir(slsdet.enums) if not e.startswith('_')]
|
||||||
['burstMode', 'clockIndex', 'dacIndex',
|
['burstMode', 'clockIndex', 'dacIndex',
|
||||||
'detectorSettings', 'detectorType', 'dimension', 'externalSignalFlag',
|
'detectorSettings', 'detectorType', 'dimension', 'externalSignalFlag',
|
||||||
'fileFormat', 'frameDiscardPolicy', 'masterFlags',
|
'fileFormat', 'frameDiscardPolicy',
|
||||||
'readoutMode', 'runStatus', 'speedLevel', 'timingMode',
|
'readoutMode', 'runStatus', 'speedLevel', 'timingMode',
|
||||||
'timingSourceType']
|
'timingSourceType']
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
Receiver
|
Receiver
|
||||||
==============================================
|
==============================================
|
||||||
|
|
||||||
.. doxygenclass:: Receiver
|
.. doxygenclass:: sls::Receiver
|
||||||
:members:
|
:members:
|
||||||
.. :undoc-members:
|
.. :undoc-members:
|
@ -48,3 +48,24 @@ Custom Receiver
|
|||||||
| Cannot use "auto" for **udp_dstip**.
|
| Cannot use "auto" for **udp_dstip**.
|
||||||
|
|
||||||
| Also ensure that there are no **rx_** commands in the config file. These commands are for configuring the slsReceiver.
|
| Also ensure that there are no **rx_** commands in the config file. These commands are for configuring the slsReceiver.
|
||||||
|
|
||||||
|
Example of a custom receiver config file
|
||||||
|
|
||||||
|
* The main difference is the lack of **rx_** commands or file commands (eg. fwrite, fpath) and the udp_dstmac is required in config file.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# detector hostname
|
||||||
|
hostname bchip052
|
||||||
|
|
||||||
|
# udp destination port (receiver)
|
||||||
|
udp_dstport 50004
|
||||||
|
|
||||||
|
# udp destination ip (receiver)
|
||||||
|
udp_dstip 10.0.1.100
|
||||||
|
|
||||||
|
# udp source ip (same subnet as udp_dstip)
|
||||||
|
udp_srcip 10.0.1.184
|
||||||
|
|
||||||
|
# udp destination mac
|
||||||
|
udp_dstmac 22:47:d5:48:ad:ef
|
||||||
|
@ -34,3 +34,62 @@ Detector Servers include:
|
|||||||
* Client requests for detector status, stop acquisition, temperature, advanced read/write registers.
|
* Client requests for detector status, stop acquisition, temperature, advanced read/write registers.
|
||||||
|
|
||||||
When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel.
|
When using a blocking acquire command (sls_detector_acquire or Detector::acquire), the control server is blocked until end of acquisition. However, stop server commands could be used in parallel.
|
||||||
|
|
||||||
|
|
||||||
|
Automatic start
|
||||||
|
------------------
|
||||||
|
|
||||||
|
One can start the on-board detector server automatically upon powering on the board.
|
||||||
|
|
||||||
|
#. Create a soft link to the binary on board
|
||||||
|
:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
ln -sf someDetectorServervx.x.x someDetectorServer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#. Do the following depending on the detector type :
|
||||||
|
|
||||||
|
Eiger
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# create script in rc5.d on the board
|
||||||
|
vi /etc/rc5.d/S50board_com.sh
|
||||||
|
|
||||||
|
# enter the following (edit server name)
|
||||||
|
#! /bin/sh
|
||||||
|
/home/root/executables/eigerDetectorServer &> /dev/null &
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
Jungfrau | Moench | CTB | Gotthard I
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Edit inittab on board
|
||||||
|
vi /etc/inittab
|
||||||
|
|
||||||
|
# enter the following line
|
||||||
|
ttyS0::respawn:/./xxxDetectorServer
|
||||||
|
|
||||||
|
|
||||||
|
Gotthard II | Mythen III
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# create script in init.d on board
|
||||||
|
vi /etc/init.d/S99detServer.sh
|
||||||
|
|
||||||
|
# enter the following (edit server name)
|
||||||
|
#! /bin/sh
|
||||||
|
cd /root >> /dev/null
|
||||||
|
/root/xxxDetectorServer >> /dev/null &
|
||||||
|
|
||||||
|
|
||||||
|
#. Sync, reboot and verify
|
||||||
|
:
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sync
|
||||||
|
reboot
|
||||||
|
|
||||||
|
# verify
|
||||||
|
ps -ef | grep xxxDetectorServer
|
@ -151,9 +151,20 @@ Please refer to Receiver PC Tuning options and slsReceiver Tuning under `Trouble
|
|||||||
Using Callbacks
|
Using Callbacks
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
| One can get a callback in the receiver for each frame to:
|
One can get a callback in the receiver for each frame to:
|
||||||
* manipulate the data that will be written to file, or
|
* manipulate the data that will be written to file, or
|
||||||
* disable file writing in slsReceiver and take care of the data for each call back
|
* disable file writing in slsReceiver and take care of the data for each call back
|
||||||
|
|
||||||
| When handling callbacks, the control should be returned as soon as possible, to prevent packet loss from fifo being full.
|
When handling callbacks, the control should be returned as soon as possible, to prevent packet loss from fifo being full.
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
* `main cpp file <https://github.com/slsdetectorgroup/api-examples/blob/master/e4-receiver_callbacks.cpp>`_
|
||||||
|
* `cmake file <https://github.com/slsdetectorgroup/api-examples/blob/master/CMakeLists.txt>`_.
|
||||||
|
* how to install the slsDetectorPackage is provided :ref:`here <build from source using cmake>`.
|
||||||
|
* compile the example **e4-rxr** by:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cmake ../path/to/your/source -DCMAKE_PREFIX_PATH=/path/to/sls/install
|
||||||
|
make
|
||||||
|
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
Troubleshooting
|
Troubleshooting
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
If something is missing, don't hesitate to
|
||||||
|
open an issue at our `github repo issues
|
||||||
|
<https://github.com/slsdetectorgroup/slsDetectorPackage/issues>`_.
|
||||||
|
|
||||||
Common
|
Common
|
||||||
------
|
------
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@ Client
|
|||||||
sls_detector_put virtual 2 1912
|
sls_detector_put virtual 2 1912
|
||||||
|
|
||||||
Use the same in the config file.
|
Use the same in the config file.
|
||||||
|
Detector API has a method 'isVirtualDetectorServer' to check if on-board detector server is virtual.
|
||||||
|
|
||||||
|
|
||||||
Sample Config file
|
Sample Config file
|
||||||
|
39
examples/jungfrau_custom_receiver.config
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
# detector hostname
|
||||||
|
hostname bchip052
|
||||||
|
|
||||||
|
# do not use any rx_ or "file" (eg. fwrite, fpath) commands, which go to slsReceiver/slsMultiReceiver
|
||||||
|
|
||||||
|
# udp destination port (receiver)
|
||||||
|
udp_dstport 50004
|
||||||
|
|
||||||
|
# udp destination ip (receiver)
|
||||||
|
udp_dstip 10.0.1.100
|
||||||
|
|
||||||
|
# udp source ip (same subnet as udp_dstip)
|
||||||
|
udp_srcip 10.0.1.184
|
||||||
|
|
||||||
|
# udp destination mac
|
||||||
|
udp_dstmac 22:47:d5:48:ad:ef
|
||||||
|
|
||||||
|
|
||||||
|
# PCBv2.0 (using 2 interfaces, top)
|
||||||
|
udp_dstport2 50005
|
||||||
|
udp_dstip2 10.0.2.100
|
||||||
|
udp_srcip2 10.0.2.184
|
||||||
|
udp_dstmac2 22:47:d5:48:ad:ff
|
||||||
|
|
||||||
|
|
||||||
|
# enable two interfaces
|
||||||
|
numinterfaces 2
|
||||||
|
# select inner interface(effective only when numinterfaces is 1)
|
||||||
|
#selinterface 1
|
||||||
|
|
||||||
|
# power on chip
|
||||||
|
powerchip 1
|
||||||
|
|
||||||
|
# high voltage
|
||||||
|
highvoltage 200
|
||||||
|
|
||||||
|
# timing to trigger
|
||||||
|
timing trigger
|
||||||
|
|
@ -1,7 +1,8 @@
|
|||||||
initialchecks 0
|
#initialchecks 0
|
||||||
#############################################
|
#############################################
|
||||||
### edit with hostname or IP address of your detector
|
### edit with hostname or IP address of your detector
|
||||||
############################################
|
############################################
|
||||||
|
#hostname bchip181+
|
||||||
hostname bchip181+
|
hostname bchip181+
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
@ -27,7 +28,7 @@ rx_zmqport 50003
|
|||||||
#############################################
|
#############################################
|
||||||
### edit with 1 Gbs IP of PC where you will run the GUI
|
### edit with 1 Gbs IP of PC where you will run the GUI
|
||||||
############################################
|
############################################
|
||||||
zmqip 129.129.202.136
|
zmqip 129.129.202.98
|
||||||
zmqport 50001
|
zmqport 50001
|
||||||
|
|
||||||
|
|
||||||
@ -39,11 +40,12 @@ rx_zmqstream 1
|
|||||||
|
|
||||||
frames 100000
|
frames 100000
|
||||||
period 0.0006
|
period 0.0006
|
||||||
|
exptime 0.00035
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
### edit with directory you want to write to
|
### edit with directory you want to write to
|
||||||
############################################
|
############################################
|
||||||
fpath /mnt/moench_data/scratch/
|
fpath /mnt/moench_data/scratch1/
|
||||||
|
|
||||||
fwrite 0
|
fwrite 0
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "DetectorImpl.h"
|
#include "DetectorImpl.h"
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
#include "string_utils.h"
|
#include "sls/string_utils.h"
|
||||||
#include "tests/globals.h"
|
#include "tests/globals.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
|
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
|
|
||||||
#include "ClientSocket.h"
|
|
||||||
#include "DetectorImpl.h"
|
#include "DetectorImpl.h"
|
||||||
#include "Module.h"
|
#include "Module.h"
|
||||||
#include "logger.h"
|
#include "sls/ClientSocket.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls/logger.h"
|
||||||
|
#include "sls/sls_detector_defs.h"
|
||||||
|
|
||||||
#include "Timer.h"
|
#include "sls/Timer.h"
|
||||||
#include "sls_detector_funcs.h"
|
#include "sls/sls_detector_funcs.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#define VERBOSE
|
#define VERBOSE
|
||||||
@ -446,8 +446,8 @@ TEST_CASE("Chiptestboard Dbit offset, list, sampling, advinvert",
|
|||||||
CHECK(m.readRegister(0x7b) == 0x1003E);
|
CHECK(m.readRegister(0x7b) == 0x1003E);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Eiger or Jungfrau startingfnum",
|
TEST_CASE("Eiger or Jungfrau nextframenumber",
|
||||||
"[.eigerintegration][.jungfrauintegration][startingfnum]") {
|
"[.eigerintegration][.jungfrauintegration][nextframenumber]") {
|
||||||
SingleDetectorConfig c;
|
SingleDetectorConfig c;
|
||||||
|
|
||||||
// pick up multi detector from shm id 0
|
// pick up multi detector from shm id 0
|
||||||
@ -465,8 +465,8 @@ TEST_CASE("Eiger or Jungfrau startingfnum",
|
|||||||
// starting fnum
|
// starting fnum
|
||||||
uint64_t val = 8;
|
uint64_t val = 8;
|
||||||
|
|
||||||
m.setStartingFrameNumber(val);
|
m.setNextFrameNumber(val);
|
||||||
CHECK(m.getStartingFrameNumber() == val);
|
CHECK(m.getNextFrameNumber() == val);
|
||||||
CHECK(m.acquire() == slsDetectorDefs::OK);
|
CHECK(m.acquire() == slsDetectorDefs::OK);
|
||||||
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
||||||
|
|
||||||
@ -474,21 +474,21 @@ TEST_CASE("Eiger or Jungfrau startingfnum",
|
|||||||
CHECK(m.acquire() == slsDetectorDefs::OK);
|
CHECK(m.acquire() == slsDetectorDefs::OK);
|
||||||
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
||||||
|
|
||||||
CHECK_THROWS_AS(m.setStartingFrameNumber(0), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setNextFrameNumber(0), sls::RuntimeError);
|
||||||
|
|
||||||
if (m.getDetectorTypeAsString() == "Eiger") {
|
if (m.getDetectorTypeAsString() == "Eiger") {
|
||||||
val = 281474976710655;
|
val = 281474976710655;
|
||||||
} else if (m.getDetectorTypeAsString() == "Jungfrau") {
|
} else if (m.getDetectorTypeAsString() == "Jungfrau") {
|
||||||
val = 18446744073709551615;
|
val = 18446744073709551615;
|
||||||
}
|
}
|
||||||
m.setStartingFrameNumber(val);
|
m.setNextFrameNumber(val);
|
||||||
CHECK(m.getStartingFrameNumber() == val);
|
CHECK(m.getNextFrameNumber() == val);
|
||||||
CHECK(m.acquire() == slsDetectorDefs::OK);
|
CHECK(m.acquire() == slsDetectorDefs::OK);
|
||||||
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
||||||
CHECK(m.getStartingFrameNumber() == (val + 1));
|
CHECK(m.getNextFrameNumber() == (val + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Eiger readnlines", "[.eigerintegration][readnlines]") {
|
TEST_CASE("Eiger partialread", "[.eigerintegration][partialread]") {
|
||||||
SingleDetectorConfig c;
|
SingleDetectorConfig c;
|
||||||
|
|
||||||
// pick up multi detector from shm id 0
|
// pick up multi detector from shm id 0
|
||||||
@ -501,16 +501,16 @@ TEST_CASE("Eiger readnlines", "[.eigerintegration][readnlines]") {
|
|||||||
|
|
||||||
m.setDynamicRange(16);
|
m.setDynamicRange(16);
|
||||||
m.enableTenGigabitEthernet(0);
|
m.enableTenGigabitEthernet(0);
|
||||||
m.setReadNLines(256);
|
m.setPartialReadout(256);
|
||||||
CHECK(m.getReadNLines() == 256);
|
CHECK(m.getPartialReadout() == 256);
|
||||||
m.setReadNLines(1);
|
m.setPartialReadout(1);
|
||||||
CHECK(m.getReadNLines() == 1);
|
CHECK(m.getPartialReadout() == 1);
|
||||||
|
|
||||||
m.setDynamicRange(8);
|
m.setDynamicRange(8);
|
||||||
m.setReadNLines(256);
|
m.setPartialReadout(256);
|
||||||
CHECK(m.getReadNLines() == 256);
|
CHECK(m.getPartialReadout() == 256);
|
||||||
CHECK_THROWS_AS(m.setReadNLines(1), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setPartialReadout(1), sls::RuntimeError);
|
||||||
CHECK(m.getReadNLines() == 256);
|
CHECK(m.getPartialReadout() == 256);
|
||||||
CHECK_THROWS_AS(m.setReadNLines(0), sls::RuntimeError);
|
CHECK_THROWS_AS(m.setPartialReadout(0), sls::RuntimeError);
|
||||||
m.setReadNLines(256);
|
m.setPartialReadout(256);
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
#include "DetectorImpl.h"
|
#include "DetectorImpl.h"
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
#include "string_utils.h"
|
#include "sls/string_utils.h"
|
||||||
#include "tests/globals.h"
|
#include "tests/globals.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
27
libzmq-pkg-config/FindZeroMQ.cmake
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#From: https://github.com/zeromq/cppzmq/
|
||||||
|
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON)
|
||||||
|
find_package(PkgConfig)
|
||||||
|
pkg_check_modules(PC_LIBZMQ QUIET libzmq)
|
||||||
|
|
||||||
|
set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION})
|
||||||
|
find_library(ZeroMQ_LIBRARY NAMES libzmq.so libzmq.dylib libzmq.dll
|
||||||
|
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
|
||||||
|
find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq-static.a libzmq.a libzmq.dll.a
|
||||||
|
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
|
||||||
|
|
||||||
|
if(ZeroMQ_LIBRARY OR ZeroMQ_STATIC_LIBRARY)
|
||||||
|
set(ZeroMQ_FOUND ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (TARGET libzmq)
|
||||||
|
# avoid errors defining targets twice
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(libzmq SHARED IMPORTED)
|
||||||
|
set_property(TARGET libzmq PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
|
||||||
|
set_property(TARGET libzmq PROPERTY IMPORTED_LOCATION ${ZeroMQ_LIBRARY})
|
||||||
|
|
||||||
|
add_library(libzmq-static STATIC IMPORTED ${PC_LIBZMQ_INCLUDE_DIRS})
|
||||||
|
set_property(TARGET libzmq-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PC_LIBZMQ_INCLUDE_DIRS})
|
||||||
|
set_property(TARGET libzmq-static PROPERTY IMPORTED_LOCATION ${ZeroMQ_STATIC_LIBRARY})
|
@ -1,51 +0,0 @@
|
|||||||
DESTDIR?=docs
|
|
||||||
|
|
||||||
|
|
||||||
#manual-api manual-calwiz manual-client manual-gui manual-main
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MAINDIRS= manual-main manual-api manual-calwiz manual-client manual-gui
|
|
||||||
#manual-calwiz manual-calwiz manual-gui manual-client manual-api
|
|
||||||
CLEANDIRS=$(MAINDIRS:manual-%=clean-%)
|
|
||||||
PDFDIRS=$(MAINDIRS:manual-%=pdf-%)
|
|
||||||
HTMLDIRS=$(MAINDIRS:manual-%=html-%)
|
|
||||||
ALLDIRS=$(MAINDIRS:manual-%=all-%)
|
|
||||||
|
|
||||||
|
|
||||||
all: $(ALLDIRS)
|
|
||||||
# $(shell test -d $(DESTDIR)/pdf && rm -fr $(DESTDIR)/pdf)
|
|
||||||
# mv pdf $(DESTDIR)
|
|
||||||
# $(shell test -d $(DESTDIR)/html && rm -fr $(DESTDIR)/html)
|
|
||||||
# mv html $(DESTDIR)
|
|
||||||
|
|
||||||
pdf: $(PDFDIRS)
|
|
||||||
# $(shell test -d $(DESTDIR)/pdf && rm -fr $(DESTDIR)/pdf)
|
|
||||||
# mv pdf $(DESTDIR)
|
|
||||||
|
|
||||||
html: $(HTMLDIRS)
|
|
||||||
# $(shell test -d $(DESTDIR)/html && rm -fr $(DESTDIR)/html)
|
|
||||||
# mv html $(DESTDIR)
|
|
||||||
|
|
||||||
clean: $(CLEANDIRS)
|
|
||||||
rm -fr $(DESTDIR)/pdf
|
|
||||||
rm -fr $(DESTDIR)/html
|
|
||||||
|
|
||||||
all-%:
|
|
||||||
echo
|
|
||||||
cd $(@:all-%=manual-%) && make all
|
|
||||||
|
|
||||||
pdf-%:
|
|
||||||
cd $(@:pdf-%=manual-%) && make pdf
|
|
||||||
|
|
||||||
html-%:
|
|
||||||
cd $(@:html-%=manual-%) && make html
|
|
||||||
|
|
||||||
clean-%:
|
|
||||||
cd $(@:clean-%=manual-%) && make clean
|
|
||||||
|
|
||||||
|
|
||||||
#<23><>$(@D)<29><> The directory part of the file name of the target, with the trailing slash removed. If the value of <20><>$@<40><> is dir/foo.o then <20><>$(@D)<29><> is dir. This value is . if <20><>$@<40><> does not contain a slash.
|
|
||||||
#<23><>$(@F)<29><> The file-within-directory part of the file name of the target. If the value of <20><>$@<40><> is dir/foo.o then <20><>$(@F)<29><> is foo.o. <20><>$(@F)<29><> is equivalent to <20><>$(notdir $@)<29><>.
|
|
||||||
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
||||||
|
|
||||||
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
|
|
||||||
original version by: Nikos Drakos, CBLU, University of Leeds
|
|
||||||
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
|
||||||
* with significant contributions from:
|
|
||||||
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
|
||||||
<HTML>
|
|
||||||
<HEAD>
|
|
||||||
<TITLE>SLS Detector Software Documentation</TITLE>
|
|
||||||
<META NAME="description" CONTENT="SLS Detector Software Documentation">
|
|
||||||
<META NAME="keywords" CONTENT="SLS Detectors">
|
|
||||||
<META NAME="resource-type" CONTENT="document">
|
|
||||||
<META NAME="distribution" CONTENT="global">
|
|
||||||
|
|
||||||
<LINK REL="next" HREF="node1.html">
|
|
||||||
</HEAD>
|
|
||||||
|
|
||||||
<BODY >
|
|
||||||
<P>
|
|
||||||
|
|
||||||
<H1 ALIGN="CENTER">SLS Detector Software Documentation</H1>
|
|
||||||
<DIV>
|
|
||||||
</DIV>
|
|
||||||
<BR><HR>
|
|
||||||
<!--Table of Child-Links-->
|
|
||||||
<A NAME="CHILD_LINKS"></A>
|
|
||||||
|
|
||||||
<UL>
|
|
||||||
|
|
||||||
<LI><A HREF="slsDetectors-FAQ/index.html">SLS Detectors Frequently Asked Questions</A> <BR>
|
|
||||||
Documents with general remarks about the detectors and the software that all users should read.
|
|
||||||
<A HREF="../pdf/slsDetectors-FAQ.pdf">*pdf*</A> <BR>
|
|
||||||
<BR>
|
|
||||||
<LI><A HREF="slsDetectorInstall/index.html">Installation</A> <BR>
|
|
||||||
Documentation for the installation of the SLS Detectors software library
|
|
||||||
<A HREF="../pdf/slsDetectorInstall.pdf">*pdf*</A> <BR>
|
|
||||||
<BR>
|
|
||||||
<LI><A HREF="slsDetectorClientHowTo/index.html">Command Line Interface</A> <BR>
|
|
||||||
Reference documentation for the command line interface sls_detector_put, sls_detector_get, sls_detector_acquire, sls_detector_help
|
|
||||||
<A HREF="../pdf/slsDetectorClientHowTo.pdf">*pdf*</A> <BR>
|
|
||||||
<BR>
|
|
||||||
<LI><A HREF="slsDetectorGuiHowTo/index.html">Graphical Users Interface</A> <BR>
|
|
||||||
Reference documentation for the GUI
|
|
||||||
<A HREF="../pdf/slsDetectorGuiHowTo.pdf">*pdf*</A> <BR>
|
|
||||||
<BR>
|
|
||||||
<LI><A HREF="calibrationWizardsHowTo/index.html">Calibration Wizards</A>
|
|
||||||
<UL>
|
|
||||||
<LI> Energy calibration <A HREF="../pdf/energyCalibrationHowTo.pdf">*pdf*</A>
|
|
||||||
<LI> Angular calibration <A HREF="../pdf/angularCalibrationHowTo.pdf">*pdf*</A>
|
|
||||||
</UL>
|
|
||||||
<BR>
|
|
||||||
|
|
||||||
<LI><A HREF="slsDetectorUsersDocs/index.html">Application Program Interface</A> <BR>
|
|
||||||
Doxygen documentation for using the slsDetectorUsers class
|
|
||||||
<A HREF="../pdf/slsDetectorUsersDocs.pdf">*pdf*</A> <BR>
|
|
||||||
<BR>
|
|
||||||
</UL>
|
|
||||||
|
|
||||||
<BR><HR>
|
|
||||||
<ADDRESS>
|
|
||||||
Anna Bergamaschi
|
|
||||||
</ADDRESS>
|
|
||||||
</BODY>
|
|
||||||
</HTML>
|
|
@ -1,32 +0,0 @@
|
|||||||
set(SOURCES
|
|
||||||
mainReceiver.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
../../slsSupportLib/include
|
|
||||||
../../slsReceiverSoftware/include
|
|
||||||
../../build/bin
|
|
||||||
../../slsdetectorSoftware/slsDetector
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(slsMultiReceiver
|
|
||||||
${SOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(slsMultiReceiver
|
|
||||||
slsReceiverShared
|
|
||||||
pthread
|
|
||||||
${ZeroMQ_LIBRARIES}
|
|
||||||
rt
|
|
||||||
)
|
|
||||||
|
|
||||||
if (HDF5_FOUND)
|
|
||||||
target_link_libraries(slsMultiReceiver ${HDF5_LIBRARIES})
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
set_target_properties(slsMultiReceiver PROPERTIES
|
|
||||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
||||||
)
|
|
||||||
|
|
||||||
install(TARGETS slsMultiReceiver DESTINATION bin)
|
|
@ -1,62 +0,0 @@
|
|||||||
PKGDIR = ../..
|
|
||||||
LIBDIR = $(PKGDIR)/bin
|
|
||||||
INCLUDES = -I . -I$(PKGDIR)/slsSupportLib/include -I$(LIBDIR) -I$(PKGDIR)/slsDetectorSoftware/slsDetector -I$(PKGDIR)/slsReceiversoftware/include
|
|
||||||
SRC_DET = mainClient.cpp
|
|
||||||
SRC_REC = mainReceiver.cpp
|
|
||||||
ZMQLIBDIR = $(PKGDIR)/slsSupportLib/include
|
|
||||||
LDFLAG_DET = -I. -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread -lrt -L$(ZMQLIBDIR) -Wl,-rpath=$(ZMQLIBDIR) -lzmq
|
|
||||||
LDFLAG_REC = -I. -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread -lrt -L$(ZMQLIBDIR) -Wl,-rpath=$(ZMQLIBDIR) -lzmq
|
|
||||||
DESTDIR ?= ../docs
|
|
||||||
|
|
||||||
HDF5 ?= no
|
|
||||||
HDF5_DIR ?= /opt/hdf5v1.10.0
|
|
||||||
|
|
||||||
ifeq ($(HDF5),yes)
|
|
||||||
LDFLAG_REC += -L$(HDF5_DIR)/lib -Wl,-rpath=$(HDF5_DIR)/lib -lhdf5 -lhdf5_cpp -lsz -lz -DHDF5C
|
|
||||||
endif
|
|
||||||
|
|
||||||
all: docs detUser slsMultiReceiver
|
|
||||||
#all: docs
|
|
||||||
|
|
||||||
docs: createdocs docspdf docshtml removedocs
|
|
||||||
|
|
||||||
createdocs: slsDetectorUsers.doxy mainClient.cpp mainReceiver.cpp
|
|
||||||
doxygen slsDetectorUsers.doxy
|
|
||||||
|
|
||||||
docspdf:
|
|
||||||
cd slsDetectorUsersDocs/latex && make
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
|
|
||||||
mv slsDetectorUsersDocs/latex/refman.pdf $(DESTDIR)/pdf/slsDetectorUsersDocs.pdf
|
|
||||||
|
|
||||||
docshtml:
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
|
|
||||||
$(shell test -d $(DESTDIR)/html/slsDetectorUsersDocs && rm -r $(DESTDIR)/html/slsDetectorUsersDocs)
|
|
||||||
mv slsDetectorUsersDocs/html $(DESTDIR)/html/slsDetectorUsersDocs
|
|
||||||
|
|
||||||
removedocs:
|
|
||||||
rm -rf slsDetectorUsersDocs;
|
|
||||||
|
|
||||||
detUser:$(SRC_DET)
|
|
||||||
echo "creating client"
|
|
||||||
mkdir -p bin
|
|
||||||
g++ -o bin/detUser $(SRC_DET) $(INCLUDES) $(LDFLAG_DET) -lm -lstdc++
|
|
||||||
|
|
||||||
slsMultiReceiver:$(SRC_REC)
|
|
||||||
echo "creating receiver"
|
|
||||||
echo $LDFLAG_REC
|
|
||||||
mkdir -p bin
|
|
||||||
g++ -o bin/slsMultiReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
|
|
||||||
cp bin/slsMultiReceiver $(LIBDIR)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
echo "cleaning for manual-api"
|
|
||||||
rm -rf bin/detUser bin/slsMultiReceiver bin/detReceiver slsDetectorUsersDocs
|
|
||||||
rm -rf slsDetectorUsersDocs
|
|
||||||
rm -rf $(DESTDIR)/html/slsDetectorUsersDocs
|
|
||||||
rm -rf $(DESTDIR)/pdf/slsDetectorUsersDocs.pdf
|
|
||||||
rm -rf $(LIBDIR)/slsMultiReceiver
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
|||||||
/**
|
|
||||||
\file mainClient.cpp
|
|
||||||
|
|
||||||
This file is an example of how to implement the slsDetectorUsers class
|
|
||||||
You can compile it linking it to the slsDetector library
|
|
||||||
|
|
||||||
g++ mainClient.cpp -L lib -lSlsDetector -L/usr/lib64/ -L lib2 -lzmq -pthread -lrt -lm -lstdc++
|
|
||||||
|
|
||||||
where,
|
|
||||||
|
|
||||||
lib is the location of libSlsDetector.so
|
|
||||||
|
|
||||||
lib2 is the location of the libzmq.a.
|
|
||||||
[ libzmq.a is required only when using data call backs and enabling data streaming from receiver to client.
|
|
||||||
It is linked in manual/manual-api from slsReceiverSoftware/include ]
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "slsDetectorUsers.h"
|
|
||||||
#include "detectorData.h"
|
|
||||||
#include <iostream>
|
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Data Call back function defined
|
|
||||||
* @param pData pointer to data structure received from the call back
|
|
||||||
* @param iframe frame number of data passed
|
|
||||||
* @param isubframe sub frame number of data passed ( only valid for EIGER in 32 bit mode)
|
|
||||||
* @param pArg pointer to object
|
|
||||||
* \returns integer that is currently ignored
|
|
||||||
*/
|
|
||||||
int dataCallback(detectorData *pData, int iframe, int isubframe, void *pArg)
|
|
||||||
{
|
|
||||||
std::cout << " DataCallback:"
|
|
||||||
<< "\n nx : " << pData->npoints
|
|
||||||
<< "\n ny : " << pData->npy
|
|
||||||
<< "\n Frame number : " << iframe << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Example of a main program using the slsDetectorUsers class
|
|
||||||
*
|
|
||||||
* - Arguments are optional
|
|
||||||
* - argv[1] : Configuration File
|
|
||||||
* - argv[2] : Measurement Setup File
|
|
||||||
* - argv[3] : Detector Id (default is zero)
|
|
||||||
*/
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
/** - if specified, set ID from argv[3] */
|
|
||||||
int id=0;
|
|
||||||
if (argc>=4)
|
|
||||||
id=atoi(argv[3]);
|
|
||||||
|
|
||||||
|
|
||||||
/** - slsDetectorUsers Object is instantiated with appropriate ID */
|
|
||||||
int ret = 1;
|
|
||||||
slsDetectorUsers *pDetector = new slsDetectorUsers (ret, id);
|
|
||||||
if (ret == 1) {
|
|
||||||
std::cout << "Error: Could not instantiate slsDetectorUsers" << std::endl;
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** - if specified, load configuration file (necessary at least the first time it is called to properly configure advanced settings in the shared memory) */
|
|
||||||
if (argc>=2){
|
|
||||||
pDetector->readConfigurationFile(argv[1]);
|
|
||||||
std::cout << "Detector configured" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** - set detector in shared memory online (in case no config file was used) */
|
|
||||||
pDetector->setOnline(1);
|
|
||||||
|
|
||||||
/** - set receiver in shared memory online (in case no config file was used) */
|
|
||||||
pDetector->setReceiverOnline(1);
|
|
||||||
|
|
||||||
/** - registering data callback */
|
|
||||||
pDetector->registerDataCallback(&dataCallback, NULL);
|
|
||||||
|
|
||||||
|
|
||||||
/** - ensuring detector status is idle before starting acquisition. exiting if not idle */
|
|
||||||
int status = pDetector->getDetectorStatus();
|
|
||||||
if (status != 0){
|
|
||||||
std::cout << "Detector not ready: " << slsDetectorUsers::runStatusType(status) << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** - if provided, load detector settings */
|
|
||||||
if (argc>=3){
|
|
||||||
pDetector->retrieveDetectorSetup(argv[2]);
|
|
||||||
std::cout << "Detector measurement set-up done" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** - start measurement */
|
|
||||||
pDetector->startMeasurement();
|
|
||||||
std::cout << "measurement finished" << std::endl;
|
|
||||||
|
|
||||||
/** - returning when acquisition is finished or data are avilable */
|
|
||||||
|
|
||||||
/** - delete slsDetectorUsers object */
|
|
||||||
delete pDetector;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -1,306 +0,0 @@
|
|||||||
/**
|
|
||||||
\file mainReceiver.cpp
|
|
||||||
|
|
||||||
This file is an example of how to implement the slsReceiverUsers class
|
|
||||||
You can compile it linking it to the slsReceiver library
|
|
||||||
|
|
||||||
g++ mainReceiver.cpp -L lib -lSlsReceiver -L/usr/lib64/ -L lib2 -lzmq -pthread -lrt -lm -lstdc++
|
|
||||||
|
|
||||||
where,
|
|
||||||
|
|
||||||
lib is the location of lSlsReceiver.so
|
|
||||||
|
|
||||||
lib2 is the location of the libzmq.a.
|
|
||||||
[ libzmq.a is required only when using data call backs and enabling data streaming from receiver to client.
|
|
||||||
It is linked in manual/manual-api from slsReceiverSoftware/include ]
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "sls_detector_defs.h"
|
|
||||||
#include "slsReceiverUsers.h"
|
|
||||||
|
|
||||||
#include <csignal> //SIGINT
|
|
||||||
#include <cstdlib> //system
|
|
||||||
#include <cstring>
|
|
||||||
#include <iostream>
|
|
||||||
//#include "utilities.h"
|
|
||||||
//#include "logger.h"
|
|
||||||
#include <cerrno>
|
|
||||||
#include <string>
|
|
||||||
#include <sys/types.h> //wait
|
|
||||||
#include <sys/wait.h> //wait
|
|
||||||
#include <syscall.h> //tid
|
|
||||||
#include <unistd.h> //usleep
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
/** Define Colors to print data call back in different colors for different recievers */
|
|
||||||
#define PRINT_IN_COLOR(c,f, ...) printf ("\033[%dm" f RESET, 30 + c+1, ##__VA_ARGS__)
|
|
||||||
|
|
||||||
|
|
||||||
/** Variable is true to continue running, set to false upon interrupt */
|
|
||||||
bool keeprunning;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Control+C Interrupt Handler
|
|
||||||
* Sets the variable keeprunning to false, to let all the processes know to exit properly
|
|
||||||
*/
|
|
||||||
void sigInterruptHandler(int p){
|
|
||||||
keeprunning = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* prints usage of this example program
|
|
||||||
*/
|
|
||||||
void printHelp() {
|
|
||||||
cprintf(RESET, "Usage:\n"
|
|
||||||
"./slsMultiReceiver(detReceiver) [start_tcp_port] [num_receivers] [1 for call back, 0 for none]\n\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Start Acquisition Call back
|
|
||||||
* slsReceiver writes data if file write enabled.
|
|
||||||
* Users get data to write using call back if registerCallBackRawDataReady is registered.
|
|
||||||
* @param filepath file path
|
|
||||||
* @param filename file name
|
|
||||||
* @param fileindex file index
|
|
||||||
* @param datasize data size in bytes
|
|
||||||
* @param p pointer to object
|
|
||||||
* \returns ignored
|
|
||||||
*/
|
|
||||||
int StartAcq(char* filepath, char* filename, uint64_t fileindex, uint32_t datasize, void*p){
|
|
||||||
cprintf(BLUE, "#### StartAcq: filepath:%s filename:%s fileindex:%llu datasize:%u ####\n",
|
|
||||||
filepath, filename, (long long unsigned int)fileindex, datasize);
|
|
||||||
|
|
||||||
cprintf(BLUE, "--StartAcq: returning 0\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Acquisition Finished Call back
|
|
||||||
* @param frames Number of frames caught
|
|
||||||
* @param p pointer to object
|
|
||||||
*/
|
|
||||||
void AcquisitionFinished(uint64_t frames, void*p){
|
|
||||||
cprintf(BLUE, "#### AcquisitionFinished: frames:%llu ####\n",(long long unsigned int)frames);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Receiver Data Call back
|
|
||||||
* Prints in different colors(for each receiver process) the different headers for each image call back.
|
|
||||||
* @param metadata sls_receiver_header metadata
|
|
||||||
* @param datapointer pointer to data
|
|
||||||
* @param datasize data size in bytes.
|
|
||||||
* @param p pointer to object
|
|
||||||
*/
|
|
||||||
void GetData(char* metadata, char* datapointer, uint32_t datasize, void* p){
|
|
||||||
slsDetectorDefs::sls_receiver_header* header = (slsDetectorDefs::sls_receiver_header*)metadata;
|
|
||||||
slsDetectorDefs::sls_detector_header detectorHeader = header->detHeader;
|
|
||||||
|
|
||||||
PRINT_IN_COLOR (detectorHeader.modId?detectorHeader.modId:detectorHeader.row,
|
|
||||||
"#### %d GetData: ####\n"
|
|
||||||
"frameNumber: %lu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %lu"
|
|
||||||
"\t\ttimestamp: %lu\t\tmodId: %u\t\t"
|
|
||||||
"row: %u\t\tcolumn: %u\t\treserved: %u\t\tdebug: %u"
|
|
||||||
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
|
|
||||||
//"\t\tpacketsMask:%s"
|
|
||||||
"\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
|
|
||||||
detectorHeader.row, (long unsigned int)detectorHeader.frameNumber,
|
|
||||||
detectorHeader.expLength, detectorHeader.packetNumber, (long unsigned int)detectorHeader.bunchId,
|
|
||||||
(long unsigned int)detectorHeader.timestamp, detectorHeader.modId,
|
|
||||||
detectorHeader.row, detectorHeader.column, detectorHeader.reserved,
|
|
||||||
detectorHeader.debug, detectorHeader.roundRNumber,
|
|
||||||
detectorHeader.detType, detectorHeader.version,
|
|
||||||
//header->packetsMask.to_string().c_str(),
|
|
||||||
((uint8_t)(*((uint8_t*)(datapointer)))), datasize);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Receiver Data Call back (modified)
|
|
||||||
* Prints in different colors(for each receiver process) the different headers for each image call back.
|
|
||||||
* @param metadata sls_receiver_header metadata
|
|
||||||
* @param datapointer pointer to data
|
|
||||||
* @param datasize data size in bytes.
|
|
||||||
* @param revDatasize new data size in bytes after the callback.
|
|
||||||
* This will be the size written/streamed. (only smaller value is allowed).
|
|
||||||
* @param p pointer to object
|
|
||||||
*/
|
|
||||||
void GetData(char* metadata, char* datapointer, uint32_t &revDatasize, void* p){
|
|
||||||
slsDetectorDefs::sls_receiver_header* header = (slsDetectorDefs::sls_receiver_header*)metadata;
|
|
||||||
slsDetectorDefs::sls_detector_header detectorHeader = header->detHeader;
|
|
||||||
|
|
||||||
PRINT_IN_COLOR (detectorHeader.modId?detectorHeader.modId:detectorHeader.row,
|
|
||||||
"#### %d GetData: ####\n"
|
|
||||||
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu"
|
|
||||||
"\t\ttimestamp: %llu\t\tmodId: %u\t\t"
|
|
||||||
"row: %u\t\tcolumn: %u\t\treserved: %u\t\tdebug: %u"
|
|
||||||
"\t\troundRNumber: %u\t\tdetType: %u\t\tversion: %u"
|
|
||||||
//"\t\tpacketsMask:%s"
|
|
||||||
"\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
|
|
||||||
detectorHeader.row, (long long unsigned int)detectorHeader.frameNumber,
|
|
||||||
detectorHeader.expLength, detectorHeader.packetNumber, (long long unsigned int)detectorHeader.bunchId,
|
|
||||||
(long long unsigned int)detectorHeader.timestamp, detectorHeader.modId,
|
|
||||||
detectorHeader.row, detectorHeader.column, detectorHeader.reserved,
|
|
||||||
detectorHeader.debug, detectorHeader.roundRNumber,
|
|
||||||
detectorHeader.detType, detectorHeader.version,
|
|
||||||
//header->packetsMask.to_string().c_str(),
|
|
||||||
((uint8_t)(*((uint8_t*)(datapointer)))), revDatasize);
|
|
||||||
|
|
||||||
// if data is modified, eg ROI and size is reduced
|
|
||||||
revDatasize = 26000;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Example of main program using the slsReceiverUsers class
|
|
||||||
*
|
|
||||||
* - Defines in file for:
|
|
||||||
* - Default Number of receivers is 1
|
|
||||||
* - Default Start TCP port is 1954
|
|
||||||
*/
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
|
|
||||||
/** - set default values */
|
|
||||||
int numReceivers = 1;
|
|
||||||
int startTCPPort = 1954;
|
|
||||||
int withCallback = 0;
|
|
||||||
keeprunning = true;
|
|
||||||
|
|
||||||
/** - get number of receivers and start tcp port from command line arguments */
|
|
||||||
if ( (argc != 4) || (!sscanf(argv[1],"%d", &startTCPPort)) || (!sscanf(argv[2],"%d", &numReceivers)) || (!sscanf(argv[3],"%d", &withCallback)) )
|
|
||||||
printHelp();
|
|
||||||
cprintf(BLUE,"Parent Process Created [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
|
|
||||||
cprintf(RESET, "Number of Receivers: %d\n", numReceivers);
|
|
||||||
cprintf(RESET, "Start TCP Port: %d\n", startTCPPort);
|
|
||||||
cprintf(RESET, "Callback Enable: %d\n", withCallback);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** - Catch signal SIGINT to close files and call destructors properly */
|
|
||||||
struct sigaction sa;
|
|
||||||
sa.sa_flags=0; // no flags
|
|
||||||
sa.sa_handler=sigInterruptHandler; // handler function
|
|
||||||
sigemptyset(&sa.sa_mask); // dont block additional signals during invocation of handler
|
|
||||||
if (sigaction(SIGINT, &sa, nullptr) == -1) {
|
|
||||||
cprintf(RED, "Could not set handler function for SIGINT\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/** - Ignore SIG_PIPE, prevents global signal handler, handle locally,
|
|
||||||
instead of a server crashing due to client crash when writing, it just gives error */
|
|
||||||
struct sigaction asa;
|
|
||||||
asa.sa_flags=0; // no flags
|
|
||||||
asa.sa_handler=SIG_IGN; // handler function
|
|
||||||
sigemptyset(&asa.sa_mask); // dont block additional signals during invocation of handler
|
|
||||||
if (sigaction(SIGPIPE, &asa, nullptr) == -1) {
|
|
||||||
cprintf(RED, "Could not set handler function for SIGPIPE\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** - loop over number of receivers */
|
|
||||||
for (int i = 0; i < numReceivers; ++i) {
|
|
||||||
|
|
||||||
/** - fork process to create child process */
|
|
||||||
pid_t pid = fork();
|
|
||||||
|
|
||||||
/** - if fork failed, raise SIGINT and properly destroy all child processes */
|
|
||||||
if (pid < 0) {
|
|
||||||
cprintf(RED,"fork() failed. Killing all the receiver objects\n");
|
|
||||||
raise(SIGINT);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** - if child process */
|
|
||||||
else if (pid == 0) {
|
|
||||||
cprintf(BLUE,"Child process %d [ Tid: %ld ]\n", i, (long)syscall(SYS_gettid));
|
|
||||||
|
|
||||||
char temp[10];
|
|
||||||
sprintf(temp,"%d",startTCPPort + i);
|
|
||||||
char* args[] = {(char*)"ignored", (char*)"--rx_tcpport", temp};
|
|
||||||
int ret = slsDetectorDefs::OK;
|
|
||||||
/** - create slsReceiverUsers object with appropriate arguments */
|
|
||||||
slsReceiverUsers *receiver = new slsReceiverUsers(3, args, ret);
|
|
||||||
if(ret==slsDetectorDefs::FAIL){
|
|
||||||
delete receiver;
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** - register callbacks. remember to set file write enable to 0 (using the client)
|
|
||||||
if we should not write files and you will write data using the callbacks */
|
|
||||||
if (withCallback) {
|
|
||||||
|
|
||||||
/** - Call back for start acquisition */
|
|
||||||
cprintf(BLUE, "Registering StartAcq()\n");
|
|
||||||
receiver->registerCallBackStartAcquisition(StartAcq, nullptr);
|
|
||||||
|
|
||||||
/** - Call back for acquisition finished */
|
|
||||||
cprintf(BLUE, "Registering AcquisitionFinished()\n");
|
|
||||||
receiver->registerCallBackAcquisitionFinished(AcquisitionFinished, nullptr);
|
|
||||||
|
|
||||||
/* - Call back for raw data */
|
|
||||||
cprintf(BLUE, "Registering GetData() \n");
|
|
||||||
if (withCallback == 1) receiver->registerCallBackRawDataReady(GetData,nullptr);
|
|
||||||
else if (withCallback == 2) receiver->registerCallBackRawDataModifyReady(GetData,nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** - start tcp server thread */
|
|
||||||
if (receiver->start() == slsDetectorDefs::FAIL){
|
|
||||||
delete receiver;
|
|
||||||
cprintf(BLUE,"Exiting Child Process [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** - as long as keeprunning is true (changes with Ctrl+C) */
|
|
||||||
while(keeprunning)
|
|
||||||
pause();
|
|
||||||
/** - interrupt caught, delete slsReceiverUsers object and exit */
|
|
||||||
delete receiver;
|
|
||||||
cprintf(BLUE,"Exiting Child Process [ Tid: %ld ]\n", (long)syscall(SYS_gettid));
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** - Parent process ignores SIGINT (exits only when all child process exits) */
|
|
||||||
sa.sa_flags=0; // no flags
|
|
||||||
sa.sa_handler=SIG_IGN; // handler function
|
|
||||||
sigemptyset(&sa.sa_mask); // dont block additional signals during invocation of handler
|
|
||||||
if (sigaction(SIGINT, &sa, nullptr) == -1) {
|
|
||||||
cprintf(RED, "Could not set handler function for SIGINT\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** - Print Ready and Instructions how to exit */
|
|
||||||
cout << "Ready ... " << endl;
|
|
||||||
cprintf(RESET, "\n[ Press \'Ctrl+c\' to exit ]\n");
|
|
||||||
|
|
||||||
/** - Parent process waits for all child processes to exit */
|
|
||||||
for(;;) {
|
|
||||||
pid_t childPid = waitpid (-1, nullptr, 0);
|
|
||||||
|
|
||||||
// no child closed
|
|
||||||
if (childPid == -1) {
|
|
||||||
if (errno == ECHILD) {
|
|
||||||
cprintf(GREEN,"All Child Processes have been closed\n");
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
cprintf(RED, "Unexpected error from waitpid(): (%s)\n",strerror(errno));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//child closed
|
|
||||||
cprintf(BLUE,"Exiting Child Process [ Tid: %ld ]\n", (long int) childPid);
|
|
||||||
}
|
|
||||||
|
|
||||||
cout << "Goodbye!" << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
|||||||
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
|
|
||||||
# documentation are documented, even if no documentation was available.
|
|
||||||
# Private class members and static file members will be hidden unless
|
|
||||||
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
|
|
||||||
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
|
|
||||||
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
|
|
||||||
# will be included in the documentation.
|
|
||||||
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# If the EXTRACT_STATIC tag is set to YES all static members of a file
|
|
||||||
# will be included in the documentation.
|
|
||||||
|
|
||||||
EXTRACT_STATIC = YES
|
|
||||||
|
|
||||||
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
|
|
||||||
# defined locally in source files will be included in the documentation.
|
|
||||||
# If set to NO only classes defined in header files are included.
|
|
||||||
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
|
|
||||||
# This flag is only useful for Objective-C code. When set to YES local
|
|
||||||
# methods, which are defined in the implementation section but not in
|
|
||||||
# the interface are included in the documentation.
|
|
||||||
# If set to NO (the default) only methods in the interface are included.
|
|
||||||
|
|
||||||
EXTRACT_LOCAL_METHODS = YES
|
|
||||||
|
|
||||||
# If this flag is set to YES, the members of anonymous namespaces will be
|
|
||||||
# extracted and appear in the documentation as a namespace called
|
|
||||||
# 'anonymous_namespace{file}', where file will be replaced with the base
|
|
||||||
# name of the file that contains the anonymous namespace. By default
|
|
||||||
# anonymous namespace are hidden.
|
|
||||||
|
|
||||||
EXTRACT_ANON_NSPACES = NO
|
|
||||||
|
|
||||||
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
|
|
||||||
# undocumented members of documented classes, files or namespaces.
|
|
||||||
# If set to NO (the default) these members will be included in the
|
|
||||||
# various overviews, but no documentation section is generated.
|
|
||||||
# This option has no effect if EXTRACT_ALL is enabled.
|
|
||||||
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
|
|
||||||
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
|
||||||
# undocumented classes that are normally visible in the class hierarchy.
|
|
||||||
# If set to NO (the default) these classes will be included in the various
|
|
||||||
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
|
||||||
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
|
|
||||||
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
|
|
||||||
# friend (class|struct|union) declarations.
|
|
||||||
# If set to NO (the default) these declarations will be included in the
|
|
||||||
# documentation.
|
|
||||||
|
|
||||||
HIDE_FRIEND_COMPOUNDS = NO
|
|
||||||
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
|
|
||||||
SHOW_FILES = YES
|
|
||||||
|
|
||||||
SHOW_NAMESPACES = NO
|
|
||||||
|
|
||||||
COMPACT_LATEX = YES
|
|
||||||
|
|
||||||
PAPER_TYPE = a4
|
|
||||||
|
|
||||||
PDF_HYPERLINKS = YES
|
|
||||||
|
|
||||||
USE_PDFLATEX = YES
|
|
||||||
|
|
||||||
LATEX_HIDE_INDICES = YES
|
|
||||||
|
|
||||||
SOURCE_BROWSER = YES
|
|
||||||
|
|
||||||
PREDEFINED = __cplusplus
|
|
||||||
|
|
||||||
INPUT = ../../slsDetectorSoftware/slsDetector/slsDetectorUsers.h \
|
|
||||||
../../slDetectorSoftware/slsDetectorAnalysis/detectorData.h \
|
|
||||||
../../slsReceiverSoftware/include/slsReceiverUsers.h \
|
|
||||||
mainClient.cpp \
|
|
||||||
mainReceiver.cpp
|
|
||||||
|
|
||||||
OUTPUT_DIRECTORY = slsDetectorUsersDocs
|
|
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 55 KiB |
@ -1,56 +0,0 @@
|
|||||||
DESTDIR?=../docs
|
|
||||||
|
|
||||||
|
|
||||||
#manual-api manual-calwiz manual-client manual-gui manual-main
|
|
||||||
|
|
||||||
TEX=latex
|
|
||||||
|
|
||||||
MAINTEXS= angularCalibrationHowTo.tex energyCalibrationHowTo.tex
|
|
||||||
|
|
||||||
TEXS=ancCal.tex enCal.tex installation.tex
|
|
||||||
|
|
||||||
DVIS = $(MAINTEXS:.tex=.dvi)
|
|
||||||
PSS = $(MAINTEXS:.tex=.ps)
|
|
||||||
PDFS = $(MAINTEXS:.tex=.pdf)
|
|
||||||
HTMLS = $(MAINTEXS:%.tex=%)
|
|
||||||
|
|
||||||
|
|
||||||
all: pdf html
|
|
||||||
echo $(PWD)
|
|
||||||
echo $(PDFS)
|
|
||||||
echo $(HTMLS)
|
|
||||||
|
|
||||||
|
|
||||||
pdf: $(PDFS)
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
|
|
||||||
mv $(PDFS) $(DESTDIR)/pdf
|
|
||||||
|
|
||||||
html: $(HTMLS)
|
|
||||||
|
|
||||||
$(HTMLS): $(TEXS) $(MAINTEXS)
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
|
|
||||||
$(shell test -d $(DESTDIR)/html/$@ && rm -r $(DESTDIR)/html/$@)
|
|
||||||
latex $@.tex
|
|
||||||
latex2html -split 4 $@.tex
|
|
||||||
mv $@ $(DESTDIR)/html
|
|
||||||
|
|
||||||
%.dvi : %.tex $(TEXS)
|
|
||||||
latex $<
|
|
||||||
latex $<
|
|
||||||
|
|
||||||
%.ps : %.dvi
|
|
||||||
dvips -o $@ $<
|
|
||||||
|
|
||||||
|
|
||||||
%.pdf : %.ps
|
|
||||||
ps2pdf $< $@
|
|
||||||
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
|
|
||||||
rm -rf $(DESTDIR)/html/angularCalibrationHowTo
|
|
||||||
rm -rf $(DESTDIR)/html/energyCalibrationHowTo
|
|
||||||
rm -rf $(DESTDIR)/pdf/angularCalibrationHowTo.pdf
|
|
||||||
rm -rf $(DESTDIR)/pdf/energyCalibrationHowTo.pdf
|
|
Before Width: | Height: | Size: 62 KiB |
@ -1,171 +0,0 @@
|
|||||||
|
|
||||||
In order to convert from strip number to 2$\theta$-angle, an accurate angular calibration of the detector must be performed (for details see the paper Bergamaschi, A. et al. (2010). J. Synchrotron Rad. 17, 653-668). \\
|
|
||||||
|
|
||||||
For this purpose, a series of patterns of a powder standard with symmetric peaks (e.g. silicon) must acquired while shifting the detector by an angular step of the order of about 2\% of the module size. During the measurement, a strong intensity peak (e.g. Si(111)) should pass through the field of view of every module such that it can be used as a reference angular position to perform the calibration of the modules position.\\
|
|
||||||
|
|
||||||
In a first step, the peak is fitted with a Gaussian in order to determine its position $C_{peak}$ in channel number for each of the acquired patterns.\\
|
|
||||||
In a second step, for each module $i$, the encoder position $\Theta_e$ is fitted as a function of the peak position $C_{peak}$ according to:
|
|
||||||
\begin{equation}\label{eq:angcal}
|
|
||||||
\Theta_e=\Theta_o^i-\arctan\Big(\frac{p \cdot (C_{peak}-C_{center}^i)}{R^i}\Big),
|
|
||||||
\end{equation}
|
|
||||||
where the parameters $\Theta_o^i$ is the angular offset with respect to the diffractometer zero position, $C_{center}^{i}$ is the central channel and $R^i$ is the distance of the module $i$ from the diffractometer center while $p=50~\mu m$ is the strip pitch of the detector. \\
|
|
||||||
Finally, the global offset of the detector system is precisely determined by refining a silicon pattern at a well-defined energy (i.e., knowing the position of the peak).
|
|
||||||
|
|
||||||
The same function of equation~\ref{eq:angcal}, with the parameters obtained from the calibration, is used in order to convert from channel number to 2$\theta$-angle.
|
|
||||||
|
|
||||||
The parallax at the borders of the modules due to the thickness of the silicon sensor is a function of the X-ray energy (higher energy X-rays are absorbed deeper inside the sensor) and is of the order of 0.2~mdeg at 12~keV and 0.5~mdeg at 30~keV. \\
|
|
||||||
The differences in pixel size due to the different portion of solid angle covered by the strips on the border of the modules and the higher efficiency due to the longer path of the X-rays in the sensor are removed by the flat field correction. This also normalizes additional differences in pixel size between channels which are also present because of mismatches in the strip sensor fabrication and in fluctuations of the channels threshold level.
|
|
||||||
|
|
||||||
Patterns acquired at different detector positions are generally merged together in order to fill the gaps between the modules and correct possibly bad functioning channels. In this procedure the data from different positions which are closer than 4~mdeg (the average pixel size) are averaged and the new position is set to the mean of the positions of the original points.
|
|
||||||
|
|
||||||
|
|
||||||
The position and width of the peaks results from a fit over several detector channels. Geometrical distortions might disturb this determination mainly because of errors in the angular calibration, fluctuations in the encoder position, variations between channels and parallax effects.\\
|
|
||||||
The resolution in locating the peak center and determining its width and integrated intensity has been estimated by acquiring several patterns of a LaB$_6$ sample in a 300~$\mu$m capillary with the detector shifted in 5~mdeg steps between 30.4 and 36.5 degrees. The 16~peaks acquired have been fitted with a Gaussian function plus background and the fluctuations on the fitted parameters have been calculated. The resulting average resolutions are 0.63$\pm$0.06~mdeg for the peak center and 0.22$\pm$0.05~mdeg for the peak Full-Width at Half-Maximum (FWHM) for an average peak FWHM of 27.0$\pm$2.5~mdeg. \\
|
|
||||||
These results show that the angular calibration allows a resolution in determining the peaks position and width which is appropriate for structural determination.
|
|
||||||
|
|
||||||
\section{Data acquisition}
|
|
||||||
|
|
||||||
The angular calibration consists in acquiring a set of diffraction patterns of a well known powder standard (e.g. Silicon) at different encoder positions. In order to facilitate the procedure, the sample should not emit fluorescent light and should present relatively symmetric peaks. \\
|
|
||||||
During the measurement, a strong intensity peak (e.g. Si(111)) should pass through the field of view of every module such that it can be used as a reference angular position to perform the calibration of the modules position. In general the highest peak will be used for the calibration, but this is not necessary in case there would be e.g. geometrical limitations for shifting the detector. \\ \textbf{Do not forget to properly position the beam stopper if the detector is scanned in front of the direct beam.}\\
|
|
||||||
The detector should be shifted of an angular step of the order of about 2\% of the module size, such that about 50 patterns can contribute to the fitting of the 3 parameters necessary for the angular calibration.\\
|
|
||||||
|
|
||||||
All the angular calibration procedure should be acquired using a trimmed detector with the threshold set at half of the X-ray energy (Assuming no fluorescent element in the standard). A flat field should also be acquired in order to precisely correct the data, while the X-ray intensity should be kept lower than about 100~kHz per strip in order to avoid the need for rate corrections.
|
|
||||||
|
|
||||||
A rough angular conversion file starting from a previous calibration or from the geometric characteristics of the mechanics is an advantage. The angular conversion file should contain a line for each module of the detector with its module number $i$, center $C_{center}^{i}$ and error, conversion radius $p/R^i$ and error, offset $\Theta_o^i$ and error:
|
|
||||||
\begin{verbatim}
|
|
||||||
module 0 center 639.5 +- 0 conversion 6.56E-05 +- 0 offset 0 +- 0
|
|
||||||
\end{verbatim}
|
|
||||||
Also the \textit{global offset} value of the beamline should be approximately known i.e. the angular position of channel 0 of module 0 when the motor is set at 0. \\
|
|
||||||
All the documentation assumes that the detector is oriented in the same direction as the encoder position i.e. large channel number at higher angles (both per module and absolute). If this is not the case, the \textit{angular direction} should be set to -1.
|
|
||||||
|
|
||||||
\subsection{Software}
|
|
||||||
|
|
||||||
For the acquisition ot the data you need to install the slsDetector software package (please refere to separate documentation). The use of the GUI is optional and all operations can be performed also using the text client.\\
|
|
||||||
|
|
||||||
Please make sure that you have edited the \\
|
|
||||||
\textit{slsDetectorSoftware/usersFunctions/angleFunction.h} \\
|
|
||||||
in order to match the angular conversion for your geometry and \\
|
|
||||||
\textit{slsDetectorSoftware/usersFunctions/usersFunctions.cpp} \\
|
|
||||||
in order to be able to move the detector and read out its position by using the slsDetector software.
|
|
||||||
|
|
||||||
In the following the command to acquire a dataset for the angular calibration with an exposure time of 1~s, and position shift
|
|
||||||
\begin{verbatim}
|
|
||||||
#setup angular calibration log mode
|
|
||||||
> sls_detector_put angcallog 1
|
|
||||||
#set exposure time to 1s
|
|
||||||
> sls_detector_put exptime 1.
|
|
||||||
#setup threshold scan
|
|
||||||
> sls_detector_put scan0script position
|
|
||||||
#setup the precision for the scan variable in the file name
|
|
||||||
> sls_detector_put scan0prec 2
|
|
||||||
#set scan range between 20deg and -60deg, step of -0.1deg
|
|
||||||
# (at 12.4 keV the Si(111) peak is at approx 19deg
|
|
||||||
> sls_detector_put scan0range 20 -60 -0.1
|
|
||||||
#acquire the data
|
|
||||||
> sls_detector_acquire
|
|
||||||
#unset angular calibration log mode
|
|
||||||
> sls_detector_put angcallog 0
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
With the GUI you can obtain the same results by clicking on the \textit{Angular calibration} log button in the advanced tab (see figure~\ref{fig:guiangcallog}) and setting up the motor position scan in the Actions tab (see figure~\ref{fig:guiposscan}). The exposure time should also be set in the measurement tab.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Additional to the data files, the acquisition will produce a .angcal file containing an header and, for each step of the acquisition, the exect value of the motor position and the file name. \\
|
|
||||||
In case you forgot to enable the angcallog flag in the software, you can produce the file with the syntax as follows, assuming that you know the exact values of your encoder for each frame:
|
|
||||||
\begin{verbatim}
|
|
||||||
type Mythen
|
|
||||||
maxmod 32
|
|
||||||
nmod 32
|
|
||||||
angconv /scratch/angcal20120422/ang.off
|
|
||||||
globaloff 5.088
|
|
||||||
fineoff 0.0
|
|
||||||
angdir 1
|
|
||||||
ffdir /scratch/angcal20120422/
|
|
||||||
flatfield flatfield_E12keV_T6keV_0.raw
|
|
||||||
badchannels /scratch/cal/bad.chans
|
|
||||||
19.99998 angcal_S20.00_0
|
|
||||||
19.90001 angcal_S19.90_0
|
|
||||||
19.79999 angcal_S19.80_0
|
|
||||||
19.70002 angcal_S19.70_0
|
|
||||||
......
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Acquisition GUI window to enable the angular calibration log.} \label{fig:guiangcallog}
|
|
||||||
\includegraphics[width=\textwidth]{enable_angcal.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Acquisition GUI window to setup the motor position scan.} \label{fig:guiposscan}
|
|
||||||
\includegraphics[width=\textwidth]{position_scan.eps}
|
|
||||||
\end{figure}
|
|
||||||
\newpage
|
|
||||||
|
|
||||||
\section{Data analysis}
|
|
||||||
|
|
||||||
The data analysis consists in fitting with a gaussian the selected peak of the powder pattern for each position in order to determine its position is channel number as a function of the encoder position. \\
|
|
||||||
In a second step, for each module, the channel vs. encoder curve is fitted in order to extrapolate the three parameters necessary for the angular conversion and the result is written to file
|
|
||||||
|
|
||||||
\subsection{Software}
|
|
||||||
|
|
||||||
The software used for the angular calibration data analysis is based on root (see http://root.cern.ch).\\
|
|
||||||
This can be downloaded as binary or installed from sources. The version of the software should not play an important role, but up to now everything has been implemented and tested using version 5.20.
|
|
||||||
|
|
||||||
To start the data analysis simply launch:
|
|
||||||
\begin{verbatim}
|
|
||||||
> ./angularCalibrationWizard
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Overview of the nagular calibration dataset.} \label{fig:setangcal}
|
|
||||||
\includegraphics[width=\textwidth]{setupAngcal.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
To setup the angular calibration dataset, the .angcal file should be selected (or digited) and the load button should be pressed to confirm. The parameters of the angular calibration are then read to the file and the data loaded for a quick overview (see figure~\ref{fig:setangcal}).\\
|
|
||||||
The software assumes that the data files (.raw) and the .encal file are in the same directory.\\
|
|
||||||
A 2D color plot will show a rebinned overview of the dataset. The peak to be fitted should be visible as a high intensity diagonal line passing through all the channels.
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Preview of the fitting of the Si(111) peak for one of the detector positions.} \label{fig:peakfit}
|
|
||||||
\includegraphics[width=\textwidth]{peakFit.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
For a more detailed view of the data, one can select an angular calibration step from the combo box, select the plot mode (raw data or processed data as a function of channel number, processed angular converted data, flat field data, or again an overview of the whole dataset). \\
|
|
||||||
By (right) clicking close to the axis you are able to zoom in/out, set the scale to logarithmic etc.\\
|
|
||||||
|
|
||||||
If the bad channel list, angular conversion file or flat field file are changed compared to the acquisition, they can be reloaded by editing the correspondent text entries and pressing enter.
|
|
||||||
|
|
||||||
In particular, the angular converted data should be checked in order to view the position of the selected peak. In this case, the plot will be zoomed to the angular region slected in the minimum and maximum angle entries. By pressing fit, the fit of the peak in the selected angular range will be shown (see figure~\ref{fig:peakfit}). It is useful to check that it works properly in several positions such that then the sequential fitting on all steps can give good results.
|
|
||||||
|
|
||||||
To automatically fit all positions simply press \textit{Proceed to Modules Calibration} and wait until all steps are fitted. This can take sometime, depending on the number of steps.
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Window for fitting the angular calibration parameters of a module.} \label{fig:anglefit}
|
|
||||||
\includegraphics[width=\textwidth]{angleFit.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
In the module calibration window (see figure~\ref{fig:anglefit}), you will be able to fit the channel number to encoder position curve to estimate the three angular calibration parameters for each module.\\
|
|
||||||
The entries show the angular calibration parameters used for approximate angular conversion in the previous step of the calibration. These can be edited and will be used as start parameters for the fit.
|
|
||||||
By clicking on the check box next to the parameters, the selected parameter will be set and fixed during the fit. Often the center is used as a fix parameter.\\
|
|
||||||
It is possible to navigate between modules by using the Previous and Next module buttons. To refit the current module (e.g. after changing one of the parameters) simply re-click on the module number.
|
|
||||||
|
|
||||||
After fitting all modules you can click on the \textit{Write Angular Calibration} button, select the file name to write to and save the calibration angulat calibration data. Please note that the offset of module 0 will always be 0 and the other values will be rescaled to its value. Therefore the global offset of the steup will always need to be specified for a proper angular conversion unless the home of the encoder will not be redifined.
|
|
||||||
|
|
||||||
\section{Setup calibration files}
|
|
||||||
|
|
||||||
To use the generated angular calibration files, using the text client:
|
|
||||||
\begin{verbatim}
|
|
||||||
sls_detector_put angconv /scratch/ang_new.off
|
|
||||||
\end{verbatim}
|
|
||||||
while for the GUI the file name should be specified in the configuration file (works also for the text client).
|
|
||||||
\end{document}
|
|
||||||
|
|
Before Width: | Height: | Size: 36 KiB |
@ -1,17 +0,0 @@
|
|||||||
\documentclass{article}
|
|
||||||
\usepackage{amssymb}
|
|
||||||
\usepackage[dvips]{graphicx}
|
|
||||||
\usepackage{verbatim}
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\title{Angular calibration wizard manual}
|
|
||||||
\author{Anna Bergamaschi}
|
|
||||||
\date{\today}
|
|
||||||
\maketitle
|
|
||||||
|
|
||||||
|
|
||||||
\section{Introduction}
|
|
||||||
\input{ancCal.tex}
|
|
||||||
|
|
||||||
\end{document}
|
|
||||||
|
|
Before Width: | Height: | Size: 68 KiB |
@ -1,24 +0,0 @@
|
|||||||
\documentclass{report}
|
|
||||||
\usepackage{amssymb}
|
|
||||||
\usepackage[dvips]{graphicx}
|
|
||||||
\usepackage{verbatim}
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\title{Calibration wizards manual}
|
|
||||||
\author{Anna Bergamaschi}
|
|
||||||
\date{\today}
|
|
||||||
\maketitle
|
|
||||||
\chapter{Installation}
|
|
||||||
\input{installation.tex}
|
|
||||||
|
|
||||||
\chapter{Energy calibration}
|
|
||||||
%\section{Introduction}
|
|
||||||
\input{enCal.tex}
|
|
||||||
|
|
||||||
|
|
||||||
\chapter{Angular calibration}
|
|
||||||
%\section{Introduction}
|
|
||||||
\input{ancCal.tex}
|
|
||||||
|
|
||||||
\end{document}
|
|
||||||
|
|
@ -1,214 +0,0 @@
|
|||||||
|
|
||||||
The choice of the level of the comparator threshold plays a very important role in counting systems since it influences the efficiency of the detector as well as its spatial resolution (for details see the paper Bergamaschi, A. et al. (2010). J. Synchrotron Rad. 17, 653-668).
|
|
||||||
|
|
||||||
|
|
||||||
Single-photon-counting detectors are sensitive to single photons and the only limitation on the fluctuations of the number of counts is given by the Poisson-like statistics of the X-ray quanta.
|
|
||||||
The digitized signal does not carry any information concerning the energy of the X-rays and all photons with an energy larger than the threshold are counted as one bit. This means that the choice of the correct comparator threshold level is critical in order to obtain good-quality data.\\
|
|
||||||
Figure~\ref{fig:thrscanexpl} shows the expected number of counts as a function of the threshold energy for $N_0$ monochromatic X-rays of energy $E_0$. This is often denominated S-curve and can be interpreted as the integral of the signal spectrum between the threshold level and infinity.
|
|
||||||
The dashed curve represents the behavior of an ideal counting system: nothing is counted for thresholds larger than the photon energy and all the $N_0$ X-rays are counted for thresholds lower than $E_0$.
|
|
||||||
The thick solid line represents the physical curve which also takes into account the electronic noise and the charge sharing between channels.
|
|
||||||
|
|
||||||
The intrinsic noise on the electronic signal is defined by the Equivalent Noise Charge ($ENC$). The $ENC$ describes noise in terms of the charge at the detector input needed to create the same output at the end of the analog chain and is normally expressed in electrons. For silicon sensors, it can be converted into energy units by considering 1~$e^-$=3.6~eV.
|
|
||||||
The value of the $ENC$ normally depends on the shaping settings of the analog chain and increases with shorter shaping times.
|
|
||||||
The resulting electronic signal spectrum is then given by a convolution between the radiation spectrum and the noise i.e., a Gaussian of standard deviation $ENC$.
|
|
||||||
The S-curve for a monochromatic radiation beam is well described by a Gaussian cumulative distribution $D$ with an additional increase at low threshold due to the baseline noise, as shown by the solid thin line.
|
|
||||||
|
|
||||||
Moreover, when a photon is absorbed in the region between two strips of the sensor, the generated charge is partially collected by the two nearest electronic channels. For this reason the physical S-curve is not flat but can be modeled by a decreasing straight line. The number of shared photons $N_S$ is given by the difference between the number of counts and the number of X-rays whose charge is completely collected by the strip (shown by the dotted line).
|
|
||||||
|
|
||||||
The number of counts in the physical case is equal to that in the ideal case for a threshold set at half the photon energy. This defines the optimal threshold level $E_t=E_0/2$.\\
|
|
||||||
The detector response $N$ as a function of the threshold energy $E_t$ is given by the sum of the noise counts $N_n$ and the counts originating from photons $N_\gamma$:
|
|
||||||
\begin{equation}
|
|
||||||
N_\gamma(E_t)=\frac{N_0}{2}\cdot\Big(1+C_s \frac{E_0-2E_t}{E_0}\Big)D \Big(\frac{E_0-E_t}{ENC} \Big), \label{eq:thrscan}
|
|
||||||
\end{equation}
|
|
||||||
where $C_s$ is the fraction of photons which produce a charge cloud which is shared between neighboring strips ($N_s=C_s N_0$).\\
|
|
||||||
By assuming a noise of Gaussian type, and considering its bandwidth limited by the shaping time $\tau_s$, the number of noise counts in the acquisition time $T$ can be approximated as:
|
|
||||||
\begin{equation}
|
|
||||||
N_n(E_t) \sim \frac{T}{\tau_s} D \Big(\frac{-E_t}{ENC} \Big). \label{eq:noisescan}
|
|
||||||
\end{equation}
|
|
||||||
|
|
||||||
The choice of the comparator threshold level $E_t$ influences not only the counting efficiency and noise performances, but also the spatial resolution and the counting statistics of the detector.
|
|
||||||
If the threshold is set at values higher than the ideal value $E_t=E_0/2$, a fraction of the photons absorbed in the sensor in the region between two strips is not counted thus reducing the detector efficiency but improving its spatial resolution (narrower strip size). On the other hand, if the threshold is set at values lower than $E_t$, part of the X-rays absorbed in the region between two strips are counted by both of them, resulting in a deterioration of the spatial resolution of the detector and of the fluctuations on the number of photons because of the increased multiplicity.
|
|
||||||
|
|
||||||
|
|
||||||
Furthermore, the threshold uniformity is particularly critical with regards to fluorescent radiation emitted by the sample under investigation. Since the emission of fluorescent light is isotropic, the data quality will be improved by setting the threshold high enough in order to discard the fluorescence background (see figure~\ref{fig:thrscanfluo}). \\
|
|
||||||
Moreover, setting the threshold too close to the energy of the fluorescent light gives rise to large fluctuations between channels in the number of counts since the threshold sits on the steepest part of the threshold scan curve for the fluorescent background. These differences cannot be corrected by using a flat-field normalization since the fluorescent component is not present in the reference image. For this reason, it is extremely important that the threshold uniformity over the whole detector is optimized. The threshold level must be set at least $\Sigma>3\,ENC$ away from both the fluorescent energy level and the X-ray energy in order to remove the fluorescence background while efficiently count the diffracted photons.
|
|
||||||
|
|
||||||
The comparator threshold is given by a global level which can be set on a module basis and adds to a component which is individually adjustable for each channel. In order to optimize the uniformity of the detector response it is important to properly adjust the threshold for all channels. \\
|
|
||||||
Since both the signal amplification stages and the comparator are linear, it is necessary to calibrate the detector offset $O$ and gain $G$ in order to correctly set its comparator threshold $V_t$ at the desired energy $E_t$:
|
|
||||||
\begin{equation}
|
|
||||||
V_{t}=O+G \cdot E_t.\label{eq:encal}
|
|
||||||
\end{equation}
|
|
||||||
This is initially performed by acquiring measurements while scanning the global threshold using different X-ray energies and calculating the median of the counts at each threshold value for each module $i$. The curves obtained for one of the detector modules at three energies are shown in figure~\ref{fig:modulecalibration}. The experimental data are then fitted according to equation~\ref{eq:thrscan} and for each module a linear relation is found between the X-ray energy and the estimated inflection point, as shown in the inset of figure~\ref{fig:modulecalibration}. The resulting offset $O_i$ and gain $G_i$ are used as a conversion factor between the threshold level and the energy.
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Expected counts as a function of a threshold energy for a monochromatic beam of energy $E_0$=12~keV. $N_0$=10000 is the number of photons absorbed by the detector during the acquisition time. The dashed line represents the curve in an ideal case without electronic noise and charge sharing, the solid thin line with noise $ENC$=1~keV but without charge sharing and the solid thick line is the physical case with noise and $CS=$22~\% charge sharing. $N_S$ is the number of photons whose charge is shared between neighbouring strips ($CS=\frac{N_S}{N_0}$). The dotted line represents the number of photons whose charge is completely collected by a single strip.}\label{fig:thrscanexpl}
|
|
||||||
\includegraphics[width=\textwidth]{fig4.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Measured threshold scan at 12.5~keV with the three different settings. In the inset the fit of the experimental data with the expected curve as in function~\ref{eq:thrscan} is shown in the region of the inflection point.} \label{fig:expthrscan}
|
|
||||||
\includegraphics[width=\textwidth]{fig5.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Number of counts as a function of the threshold measured from a sample containing iron ($E_f$=5.9~keV) when using X-rays of energy $E_0$=12~keV. In this case, setting the threshold at $E_0/2$, which is very close to $E_f$, would give $\Delta \sim$10\% counts from the fluorescense background. Therefore the threshold should be set at an intermediate level $E_t$ between the two energy components with a distance of at least $\Sigma>3ENC$ from both $E_f$ and $E_0$.}\label{fig:thrscanfluo}
|
|
||||||
\includegraphics[width=\textwidth]{fig7.eps}
|
|
||||||
\end{figure}
|
|
||||||
Differences in gain and offset are present also between individual channels within a module and therefore the use of threshold equalization techniques (trimming) using the internal 6-bit DAC is needed in order to reduce the threshold dispersion.
|
|
||||||
Since both gain and offset have variations between channels, the optimal trimming should be performed as a function of the threshold energy.
|
|
||||||
Please not that trimming of the channels of the detector should be performed in advanced and is extremely important for a succeful energy calibration of the detector.
|
|
||||||
|
|
||||||
All energy calibration procedures should be applied to a trimmed detector and only an improvement of the existing trimbits can be performed afterwards, since it does not significatively affect the energy calibration.
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Median of the number of counts as a function of the threshold for X-rays of 12.5, 17.5 and 25~keV for one of the detector modules using \textit{standard} settings. The solid line represents the fit of the experimental points with equation~\ref{eq:thrscan}. In the inset the linear fit between the X-ray energy and the position of the inflection point of the curves is shown.}\label{fig:modulecalibration}
|
|
||||||
\includegraphics[width=\textwidth]{fig8.eps}
|
|
||||||
\end{figure}
|
|
||||||
\newpage
|
|
||||||
|
|
||||||
\section{Data acquisition}
|
|
||||||
|
|
||||||
The energy calibration consists in acquiring threshold scans using the detector at at least 2 (better 3) energies. A monochromatic beam is ideal in this procedure, but beam obtained from some fluorescent sample is also good.\\
|
|
||||||
Please note that the statistic is important to succesfully analyze the data. Normally the exposure time for each step should be chosen in order to achieve at least 1000 counts per step.
|
|
||||||
If this is not possible it is better to reduce the scan range or enlarge the scan step rather than acquiring data with a too low statics.
|
|
||||||
|
|
||||||
With a quick acquisition or threshold scan it is useful to define the range of the scan and the exposure time. It is important to start from a threshold high enough that (almost) all channels of the detector have a negligible number of counts and that the plateau of the S-curve is long enough to correctly estimate the number of photons.
|
|
||||||
|
|
||||||
\subsection{Software}
|
|
||||||
|
|
||||||
For the acquisition ot the data you need to install the slsDetector software package (please refere to separate documentation). The use of the GUI is optional and all operations can be performed also using the text client.\\
|
|
||||||
|
|
||||||
In the following the command to acquire a dataset for the energy calibration with an exposure time of 1~s, and threshold scan range between 200 and 850 with a setp of 1 DAC unit.
|
|
||||||
\begin{verbatim}
|
|
||||||
> sls_detector_put encallog 1 #setup energy calibration
|
|
||||||
> sls_detector_put exptime 1. #set exposure time to 1s
|
|
||||||
> sls_detector_put scan0script threshold #setup threshold scan
|
|
||||||
> sls_detector_put scan0range 200 850 1 #set scan range between 200 and 850, step of 1
|
|
||||||
> sls_detector_acquire #acquire the data
|
|
||||||
> sls_detector_put encallog 0 #unset energy calibration
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
With the GUI you can obtain the same results by clicking on the \textit{Energy Calibration} log button in the advanced tab (see figure~\ref{fig:guiencallog}) and setting up the threshold scan in the Actions tab (see figure~\ref{fig:guithrscan}). the exposure time should also be set in the measurement tab.
|
|
||||||
|
|
||||||
|
|
||||||
This procedure should be executed at at least 2 (better 3) energies.
|
|
||||||
|
|
||||||
Additional to the data files, the acquisition will produce a .encal file containing an header and, for each step of the acquisition, the threshold value and the file name. \\
|
|
||||||
In case you forgot to enable the encallog flag in the software, you can produce the file with the syntax as follows:
|
|
||||||
\begin{verbatim}
|
|
||||||
settings standard
|
|
||||||
type Mythen+
|
|
||||||
nmod 12
|
|
||||||
modulenumber:0 000
|
|
||||||
modulenumber:1 111
|
|
||||||
modulenumber:2 222
|
|
||||||
modulenumber:3 333
|
|
||||||
modulenumber:4 444
|
|
||||||
modulenumber:5 555
|
|
||||||
modulenumber:6 666
|
|
||||||
modulenumber:7 777
|
|
||||||
modulenumber:8 888
|
|
||||||
modulenumber:9 999
|
|
||||||
modulenumber:10 aaa
|
|
||||||
modulenumber:11 bbb
|
|
||||||
450 standard_12_4keV_S450_0
|
|
||||||
460 standard_12_4keV_S460_0
|
|
||||||
470 standard_12_4keV_S470_0
|
|
||||||
480 standard_12_4keV_S480_0
|
|
||||||
490 standard_12_4keV_S490_0
|
|
||||||
500 standard_12_4keV_S500_0
|
|
||||||
510 standard_12_4keV_S510_0
|
|
||||||
520 standard_12_4keV_S520_0
|
|
||||||
...
|
|
||||||
...
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Acquisition GUI window to enable the energy calibration log.} \label{fig:guiencallog}
|
|
||||||
\includegraphics[width=\textwidth]{GUI_Advanced.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Acquisition GUI window to setup the threshold scan.} \label{fig:guithrscan}
|
|
||||||
\includegraphics[width=\textwidth]{GUI_ThresholdScan.eps}
|
|
||||||
\end{figure}
|
|
||||||
\newpage
|
|
||||||
|
|
||||||
\section{Data analysis}
|
|
||||||
|
|
||||||
The data analysis consists in fitting the S-curves obtained from the datasets acquired as above and then performing a linear fit between the energy values and the inflection points.
|
|
||||||
|
|
||||||
\subsection{Software}
|
|
||||||
|
|
||||||
The software used for the energy calibration data analysis is based on root (see http://root.cern.ch).\\
|
|
||||||
This can be downloaded as binary or installed from sources. The version of the software should not play an important role, but up to now everything has been implemented and tested using version 5.20.
|
|
||||||
|
|
||||||
To start the data analysis simply launch:
|
|
||||||
\begin{verbatim}
|
|
||||||
> ./energyCalibrationWizard
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
To add anew energy write the energy value and select (or digit) the name of the .encal file corresponding to that energy (see figure~\ref{fig:addenergy}).\\
|
|
||||||
The software assumes that the data files (.raw) and the .encal file are in the same directory.
|
|
||||||
Press \textit{Preview} and a 2D color plot will be displayed, showing the channel numbers on the X-axis, the threshold on the Y-axis, and the number of counts as a color scale.
|
|
||||||
By (right) clicking close to the axis you are able to zoom in/out, set the scale to logarithmic etc.\\
|
|
||||||
If the plot corresponds to your expectations press \textit{Add to list}. The energy value will be shown in the combo box on top and labels will display the settings of the detector, the number of modules, the number of channels per module and the modules serial numbers.
|
|
||||||
|
|
||||||
Add then all the other energies to the calibration always by editing the energy value and .encal file name, pressing \textit{preview} and \textit{add to list}.\\
|
|
||||||
If the settings, number of modules or serial numbers do not match, you will not be llowed to add the energy.\\
|
|
||||||
By using the \textit{selected energy actions} you can navigate in the combo box with list of energies, view the plots and eventually remove the ones you don't want to use in your calibration.\\
|
|
||||||
Once you have uploaded at least 2 energies, you will be allowed to \textit{proceed to module calibration}.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Window to add energies to the calibration.} \label{fig:addenergy}
|
|
||||||
\includegraphics[width=\textwidth]{addEnergy.eps}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
In the module calibration window (see figure~\ref{fig:calibratemodule}), you are still able to look at the calibration summary, and eventually return to the previous windown by pressing \textit{Back to energy setup}.\\
|
|
||||||
The canvas will show the plot of the S-curves relative to the median of the selected module, fitted with equation~\ref{eq:thrscan} and the linear fit between the energy values and the fitted inflection points.
|
|
||||||
Normally the points lie on a straight line (although often not perfect), therefore it should be simple to spot if there are problems in the fitting of some of the data.\\
|
|
||||||
If \textit{Manual save} is unclicked, the calibration files will be saved locally, with the extension automatically generated by using the modules serial numbers, every time a linear fit is performed (i.e. if you mess up wiht the linear fit you overwrite a previous good file!). If you click the checkbox, you need to save the calibration by pressing \textit{Write to file} for each module once you are happy with the fit.
|
|
||||||
|
|
||||||
To change the Y scale of the plot, edit the \textit{Counts} entry. After clicking of the energy button (eventually twice) the maximum of the histogram will be set to three times the value.
|
|
||||||
|
|
||||||
To re-fit one energy with modified range or start parameters, you should press the central button with the energy value once the energy is selected. The text color tells you which curve you are referring to.\\
|
|
||||||
|
|
||||||
You should set the range of the fit. In particular the maximum should be limited in order to avoid to enter the noise range (and can be pretty different for the various modules).\\
|
|
||||||
Normally the data are acquired by collecting holes from the detector and therefore the \textit{Invert axis} check button should be ckecked. Uncheck it in case your detector collects electrons (e.g. CdTe, Si n in p)
|
|
||||||
|
|
||||||
You can change the start values of the parameters of the fits by editing the number eneries. The label nearby will show you the actual value of the fitted parameters.\\
|
|
||||||
By checking the checkboxes you can fix the values to the ones you specify.\\
|
|
||||||
Normally it can be useful to fix the pedestal and pedestal slope to 0, unless you have a lot of 3rd armnonics contribution, primary beam background or similar.\\
|
|
||||||
Changing the starting value of the inflection point or of the number of counts can often help the fit to converge.\\
|
|
||||||
Normally it is not very useful to change the starting value for the noise or charge sharing slope.
|
|
||||||
|
|
||||||
The button \textit{Finished} will be enebled only once the calibration files have been generated for all modules.
|
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\caption{Window to calibrate the modules.} \label{fig:calibratemodule}
|
|
||||||
\includegraphics[width=\textwidth]{calibrateModule.eps}
|
|
||||||
\end{figure}
|
|
||||||
\newpage
|
|
||||||
|
|
||||||
|
|
||||||
\section{Setup calibration files}
|
|
||||||
|
|
||||||
To use the genrated calibration files as default ones, copy them into your default \textit{caldir/settings} renaming them calibration.snxxx, where snxxx is the extension that the genrated files already have, which corresponds to the module serial number.\\
|
|
||||||
Fot this scope, a script as following can be used:
|
|
||||||
\begin{verbatim}
|
|
||||||
for i in $(ls newcal_standard.sn* | awk -F "." '{print $2}'); do \
|
|
||||||
mv newcal_standard.$i caldir/standard/calibration.$i; \
|
|
||||||
done
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
By reloading the default detector settings, the calibration coefficients will be automatically loaded.
|
|
Before Width: | Height: | Size: 70 KiB |
@ -1,16 +0,0 @@
|
|||||||
\documentclass{article}
|
|
||||||
\usepackage{amssymb}
|
|
||||||
\usepackage[dvips]{graphicx}
|
|
||||||
\usepackage{verbatim}
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\title{Energy calibration wizard manual}
|
|
||||||
\author{Anna Bergamaschi}
|
|
||||||
\date{\today}
|
|
||||||
\maketitle
|
|
||||||
|
|
||||||
|
|
||||||
\section{Introduction}
|
|
||||||
\input{enCal.tex}
|
|
||||||
\end{document}
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
|||||||
%!PS-Adobe-2.0 EPSF-2.0
|
|
||||||
%%BoundingBox: 0 0 567 550
|
|
||||||
%%Title: /afs/psi.ch/project/mythen/mythen_datasheet/article/thrscan_expl.eps: c1
|
|
||||||
%%Creator: ROOT Version 5.17/02
|
|
||||||
%%CreationDate: Tue Oct 28 10:15:04 2008
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
80 dict begin
|
|
||||||
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
|
|
||||||
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
|
|
||||||
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
|
|
||||||
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
|
|
||||||
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
|
|
||||||
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
|
|
||||||
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
|
|
||||||
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
|
|
||||||
/mp {newpath /y exch def /x exch def} def
|
|
||||||
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
|
|
||||||
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
|
|
||||||
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
|
|
||||||
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
|
|
||||||
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
|
|
||||||
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
|
|
||||||
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
|
|
||||||
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
|
|
||||||
0 w3 neg d w3 neg 0 d cl s } def
|
|
||||||
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl fill gr} def
|
|
||||||
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl s gr} def
|
|
||||||
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
|
|
||||||
sub m w w d s} def
|
|
||||||
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
|
|
||||||
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
|
|
||||||
/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
|
|
||||||
/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
|
|
||||||
/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
|
|
||||||
{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
|
|
||||||
newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
|
|
||||||
/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
|
|
||||||
/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
|
|
||||||
/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
|
|
||||||
201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
|
|
||||||
212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
|
|
||||||
217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
|
|
||||||
221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
|
|
||||||
228 /Ocircumflex 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
|
|
||||||
237 /udieresis 238 /Udieresis 239 /aring 240 /odieresis 242 /Aring 243 /ydieresis
|
|
||||||
244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave
|
|
||||||
127 /atilde 128 /Atilde 129 /oacute 130 /Oacute 131 /iacute
|
|
||||||
132 /Iacute 133 /igrave 134 /Igrave 135 /otilde 136 /Otilde
|
|
||||||
137 /uacute 138 /Uacute] def
|
|
||||||
/Times-Roman /Times-Roman accvec ReEncode
|
|
||||||
/Times-Italic /Times-Italic accvec ReEncode
|
|
||||||
/Times-Bold /Times-Bold accvec ReEncode
|
|
||||||
/Times-BoldItalic /Times-BoldItalic accvec ReEncode
|
|
||||||
/Helvetica /Helvetica accvec ReEncode
|
|
||||||
/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
|
|
||||||
/Helvetica-Bold /Helvetica-Bold accvec ReEncode
|
|
||||||
/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
|
|
||||||
/Courier /Courier accvec ReEncode
|
|
||||||
/Courier-Oblique /Courier-Oblique accvec ReEncode
|
|
||||||
/Courier-Bold /Courier-Bold accvec ReEncode
|
|
||||||
/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
|
|
||||||
/oshow {gsave [] 0 sd true charpath stroke gr} def
|
|
||||||
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
|
|
||||||
text sw pop xs add /xs exch def} def
|
|
||||||
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
|
|
||||||
pop neg xs add /xs exch def} def
|
|
||||||
/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
|
|
||||||
69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
|
|
||||||
74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
|
|
||||||
79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
|
|
||||||
83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
|
|
||||||
88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
|
|
||||||
50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
|
|
||||||
55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin 102 /intersection
|
|
||||||
103 /union 104 /propersuperset 105 /reflexsuperset 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright
|
|
||||||
118 /arrowdbldown 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
|
|
||||||
/Symbol /Special accspe ReEncode
|
|
||||||
%%EndProlog
|
|
||||||
%%BeginSetup
|
|
||||||
%%EndSetup
|
|
||||||
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 3 lw 1 1 1 c 2268 2199 0 0 bf black 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 1 1 1 c black 339 319 m 1815 X s 339 319 m
|
|
||||||
1815 X s
|
|
||||||
gsave 2268 2199 0 0 C 1652 151 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Energy \(keV\)) show NC gr 339 372 m -53 Y s 392 345 m -26 Y s 446 345 m -26 Y s 499 345 m -26 Y s 553 372 m -53 Y s 606 345 m -26 Y s 659 345 m -26 Y s 713 345 m -26
|
|
||||||
Y s 766 372 m -53 Y s 819 345 m -26 Y s 873 345 m -26 Y s 926 345 m -26 Y s 980 372 m -53 Y s 1033 345 m -26 Y s 1086 345 m -26 Y s 1140 345 m -26 Y s 1193 372 m -53 Y s 1246 345 m -26 Y s 1300 345 m -26 Y s 1353 345 m -26 Y s 1407 372 m -53 Y s
|
|
||||||
1460 345 m -26 Y s 1513 345 m -26 Y s 1567 345 m -26 Y s 1620 372 m -53 Y s 1673 345 m -26 Y s 1727 345 m -26 Y s 1780 345 m -26 Y s 1834 372 m -53 Y s 1887 345 m -26 Y s 1940 345 m -26 Y s 1994 345 m -26 Y s 2047 372 m -53 Y s 2047 372 m -53 Y s
|
|
||||||
2100 345 m -26 Y s 2154 345 m -26 Y s
|
|
||||||
gsave 2268 2199 0 0 C 316 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 527 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 741 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 954 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1168 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1359 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1573 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1786 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 2000 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16) show NC gr 339 319 m 1761 Y s
|
|
||||||
gsave 2268 2199 0 0 C 85 1798 t 90 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Counts) show NC gr 393 319 m -54 X s 366 363 m -27 X s 366 407 m -27 X s 366 451 m -27 X s 393 495 m -54 X s 366 539 m -27 X s 366 583 m -27 X s 366 627 m -27 X s 393
|
|
||||||
671 m -54 X s 366 715 m -27 X s 366 759 m -27 X s 366 803 m -27 X s 393 847 m -54 X s 366 891 m -27 X s 366 935 m -27 X s 366 979 m -27 X s 393 1023 m -54 X s 366 1067 m -27 X s 366 1111 m -27 X s 366 1155 m -27 X s 393 1199 m -54 X s 366 1243 m
|
|
||||||
-27 X s 366 1287 m -27 X s 366 1331 m -27 X s 393 1375 m -54 X s 366 1419 m -27 X s 366 1463 m -27 X s 366 1507 m -27 X s 393 1552 m -54 X s 366 1596 m -27 X s 366 1640 m -27 X s 366 1684 m -27 X s 393 1728 m -54 X s 366 1772 m -27 X s 366 1816 m
|
|
||||||
-27 X s 366 1860 m -27 X s 393 1904 m -54 X s 366 1948 m -27 X s 366 1992 m -27 X s 366 2036 m -27 X s 393 2080 m -54 X s
|
|
||||||
gsave 2268 2199 0 0 C 285 282 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 459 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 635 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 812 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 989 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 1162 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 1339 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 1516 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 1692 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 1869 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (18000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 2043 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20000) show NC gr 9 lw 0.95 0.95 0.95 c black 584 2080 m 18 -143 d 18 -243 d 18 -158 d 19 -101 d 18 -63 d 18 -40 d 18 -25 d 18 -16 d 18 -12 d 18 -9 d 19 -7 d 18 -7 d
|
|
||||||
18 -6 d 18 -6 d 18 -5 d 18 -6 d 19 -6 d 18 -6 d 18 -6 d 18 -5 d 18 -6 d 18 -6 d 18 -6 d 19 -5 d 18 -6 d 18 -6 d 18 -6 d 18 -5 d 18 -6 d 18 -6 d 19 -6 d 18 -5 d 18 -6 d 18 -6 d 18 -6 d 18 -6 d 18 -5 d 19 -6 d 18 -7 d 18 -6 d 18 -7 d 18 -7 d 18 -8 d
|
|
||||||
18 -9 d 19 -11 d 18 -13 d 18 -16 d 18 -19 d 18 -22 d s 1473 981 m 18 -26 d 19 -31 d 18 -36 d 18 -39 d 18 -44 d 18 -46 d 18 -48 d 18 -49 d 19 -48 d 18 -46 d 18 -44 d 18 -39 d 18 -34 d 18 -30 d 18 -25 d 19 -20 d 18 -16 d 18 -12 d 18 -9 d 18 -7 d 18
|
|
||||||
-4 d 18 -3 d 19 -3 d 18 -1 d 18 -1 d 18 X 18 -1 d 182 X s[ 4 8] 0 sd 0.95 0.95 0.95 c black 348 996 m 889 X s 1237 996 m 37 X 18 -1 d 18 X 18 -1 d 18 -1 d 18 -3 d 18 -3 d 19 -5 d 18 -6 d 18 -9 d 18 -13 d 18 -16 d 18 -20 d 19 -24 d 18 -29 d 18 -34 d
|
|
||||||
18 -38 d 18 -42 d 18 -44 d 18 -45 d 19 -46 d 18 -44 d 18 -42 d 18 -39 d 18 -35 d 18 -30 d 18 -25 d 19 -21 d 18 -17 d 18 -12 d 18 -10 d 18 -7 d 18 -5 d 18 -4 d 19 -2 d 18 -2 d 18 -1 d 36 X 18 -1 d 146 X s 2127 319 m 18 X s[ ] 0 sd 3 lw 0.95 0.95
|
|
||||||
0.95 c black 584 2080 m 18 -263 d 18 -237 d 18 -152 d 19 -95 d 18 -58 d 18 -34 d 18 -19 d 18 -11 d 18 -6 d 18 -3 d 19 -1 d 18 -1 d 36 X 18 -1 d 418 X 18 -1 d 18 X 18 -1 d 18 -2 d 18 -3 d 18 -4 d 19 -6 d 18 -9 d 18 -12 d 18 -16 d 18 -21 d s 1473
|
|
||||||
1124 m 18 -26 d 19 -32 d 18 -38 d 18 -44 d 18 -49 d 18 -54 d 18 -57 d 18 -60 d 19 -59 d 18 -58 d 18 -54 d 18 -51 d 18 -44 d 18 -40 d 18 -33 d 19 -27 d 18 -21 d 18 -17 d 18 -13 d 18 -9 d 18 -6 d 18 -5 d 19 -3 d 18 -2 d 18 -1 d 18 -1 d 18 X 18 -1 d
|
|
||||||
164 X s[ 12 12] 0 sd 6 lw 339 1199 m 1281 X s 1620 1199 m -880 Y s 1620 319 m 534 X s[ 12 16 4 16] 0 sd 980 319 m 880 Y s
|
|
||||||
gsave 2268 2199 0 0 C 1695 319 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1630 348 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1054 319 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (t) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 989 348 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 439 1199 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 370 1228 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr [ ] 0 sd 1545 1067 m 43 X s 3 lw 1588 1086 m 32 -19 d -32 -18 d f 6 lw 1588 1086 m 32 -19 d -32 -18 d 37 Y cl s 3 lw 1545 1049 m -32 18 d 32 19 d f 6 lw
|
|
||||||
1545 1049 m -32 18 d 32 19 d -37 Y cl s
|
|
||||||
gsave 2268 2199 0 0 C 1501 1094 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (ENC) show NC gr 926 1029 m 139 Y s 3 lw 908 1168 m 18 31 d 18 -31 d f 6 lw 908 1168 m 18 31 d 18 -31 d -36 X cl s 3 lw 944 1029 m -18 -32 d -18 32 d f 6 lw 944 1029 m
|
|
||||||
-18 -32 d -18 32 d 36 X cl s
|
|
||||||
gsave 2268 2199 0 0 C 855 1048 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (S) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 786 1077 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr
|
|
||||||
gr gr
|
|
||||||
showpage
|
|
||||||
end
|
|
||||||
%%EOF
|
|
@ -1,150 +0,0 @@
|
|||||||
%!PS-Adobe-2.0 EPSF-2.0
|
|
||||||
%%BoundingBox: 0 0 567 550
|
|
||||||
%%Title: /afs/psi.ch/user/b/bergamaschi/root_macros/paper/thrscanSettings.eps: c1_n4
|
|
||||||
%%Creator: ROOT Version 5.20/00
|
|
||||||
%%CreationDate: Wed Dec 3 14:58:49 2008
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
80 dict begin
|
|
||||||
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
|
|
||||||
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
|
|
||||||
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
|
|
||||||
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
|
|
||||||
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
|
|
||||||
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
|
|
||||||
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
|
|
||||||
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
|
|
||||||
/mp {newpath /y exch def /x exch def} def
|
|
||||||
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
|
|
||||||
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
|
|
||||||
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
|
|
||||||
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
|
|
||||||
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
|
|
||||||
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
|
|
||||||
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
|
|
||||||
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
|
|
||||||
0 w3 neg d w3 neg 0 d cl s } def
|
|
||||||
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl fill gr} def
|
|
||||||
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl s gr} def
|
|
||||||
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
|
|
||||||
sub m w w d s} def
|
|
||||||
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
|
|
||||||
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
|
|
||||||
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
|
|
||||||
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
|
|
||||||
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
|
|
||||||
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
|
|
||||||
/oshow {gsave [] 0 sd true charpath stroke gr} def
|
|
||||||
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
|
|
||||||
text sw pop xs add /xs exch def} def
|
|
||||||
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
|
|
||||||
pop neg xs add /xs exch def} def
|
|
||||||
%%EndProlog
|
|
||||||
%%BeginSetup
|
|
||||||
%%EndSetup
|
|
||||||
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2199 0 0 bf black 3 lw 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c black 340 330 m 1814 X s 6 lw
|
|
||||||
340 330 m 1814 X s
|
|
||||||
gsave 2268 2199 0 0 C 1530 123 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Energy \(keV\)) show NC gr 340 383 m -53 Y s 392 356 m -26 Y s 444 356 m -26 Y s 496 356 m -26 Y s 547 383 m -53 Y s 599 356 m -26 Y s 651 356 m -26 Y s 703 356 m -26
|
|
||||||
Y s 755 383 m -53 Y s 807 356 m -26 Y s 858 356 m -26 Y s 910 356 m -26 Y s 962 383 m -53 Y s 1014 356 m -26 Y s 1066 356 m -26 Y s 1118 356 m -26 Y s 1169 383 m -53 Y s 1221 356 m -26 Y s 1273 356 m -26 Y s 1325 356 m -26 Y s 1377 383 m -53 Y s
|
|
||||||
1429 356 m -26 Y s 1480 356 m -26 Y s 1532 356 m -26 Y s 1584 383 m -53 Y s 1636 356 m -26 Y s 1688 356 m -26 Y s 1740 356 m -26 Y s 1791 383 m -53 Y s 1843 356 m -26 Y s 1895 356 m -26 Y s 1947 356 m -26 Y s 1999 383 m -53 Y s 1999 383 m -53 Y s
|
|
||||||
2051 356 m -26 Y s 2102 356 m -26 Y s 2154 356 m -26 Y s
|
|
||||||
gsave 2268 2199 0 0 C 316 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 524 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 729 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 937 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1145 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1330 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1538 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1744 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1951 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16) show NC gr 340 330 m 1759 Y s
|
|
||||||
gsave 2268 2199 0 0 C 94 1177 t 90 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Normalized counts) show NC gr 395 330 m -55 X s 367 374 m -27 X s 367 418 m -27 X s 367 462 m -27 X s 395 506 m -55 X s 367 550 m -27 X s 367 594 m -27 X s 367 638 m
|
|
||||||
-27 X s 395 682 m -55 X s 367 726 m -27 X s 367 770 m -27 X s 367 814 m -27 X s 395 858 m -55 X s 367 902 m -27 X s 367 946 m -27 X s 367 990 m -27 X s 395 1034 m -55 X s 367 1078 m -27 X s 367 1122 m -27 X s 367 1166 m -27 X s 395 1210 m -55 X s
|
|
||||||
367 1254 m -27 X s 367 1298 m -27 X s 367 1342 m -27 X s 395 1386 m -55 X s 367 1430 m -27 X s 367 1474 m -27 X s 367 1518 m -27 X s 395 1562 m -55 X s 367 1606 m -27 X s 367 1650 m -27 X s 367 1693 m -27 X s 395 1737 m -55 X s 367 1781 m -27 X s
|
|
||||||
367 1825 m -27 X s 367 1869 m -27 X s 395 1913 m -55 X s 367 1957 m -27 X s 367 2001 m -27 X s 367 2045 m -27 X s 395 2089 m -55 X s
|
|
||||||
gsave 2268 2199 0 0 C 285 293 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 217 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.2) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 214 647 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.4) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 214 823 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.6) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 214 997 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0.8) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 293 1171 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 217 1348 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.2) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 214 1524 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.4) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 214 1701 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.6) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 214 1877 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1.8) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 285 2051 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr 1 1 1 c 1112 857 1020 1210 bf 1020 1210 m 4 4 d 849 Y 1104 X 4 4 d -1112 X -857 Y f 1020 1210 m 4 4 d 1104 X 849 Y 4 4 d -857 Y -1112 X f black 3 lw 1 1
|
|
||||||
1 c 977 755 1132 1295 bf black 977 755 1132 1295 bl 1 1 1 c 977 755 1132 1295 bf black 977 755 1132 1295 bl 1 1 1 c black 1132 1295 m 977 X s 6 lw 1132 1295 m 977 X s 1132 1318 m -23 Y s 1156 1307 m -12 Y s 1180 1307 m -12 Y s 1205 1307 m -12 Y s
|
|
||||||
1229 1307 m -12 Y s 1254 1318 m -23 Y s 1278 1307 m -12 Y s 1303 1307 m -12 Y s 1327 1307 m -12 Y s 1352 1307 m -12 Y s 1376 1318 m -23 Y s 1400 1307 m -12 Y s 1425 1307 m -12 Y s 1449 1307 m -12 Y s 1474 1307 m -12 Y s 1498 1318 m -23 Y s 1523
|
|
||||||
1307 m -12 Y s 1547 1307 m -12 Y s 1572 1307 m -12 Y s 1596 1307 m -12 Y s 1621 1318 m -23 Y s 1645 1307 m -12 Y s 1669 1307 m -12 Y s 1694 1307 m -12 Y s 1718 1307 m -12 Y s 1743 1318 m -23 Y s 1767 1307 m -12 Y s 1792 1307 m -12 Y s 1816 1307 m
|
|
||||||
-12 Y s 1841 1307 m -12 Y s 1865 1318 m -23 Y s 1889 1307 m -12 Y s 1914 1307 m -12 Y s 1938 1307 m -12 Y s 1963 1307 m -12 Y s 1987 1318 m -23 Y s 2012 1307 m -12 Y s 2036 1307 m -12 Y s 2061 1307 m -12 Y s 2085 1307 m -12 Y s 2109 1318 m -23 Y s
|
|
||||||
gsave 1112 857 1020 1210 C 1100 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (10.5) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1239 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (11) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1345 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (11.5) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1479 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (12) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1587 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (12.5) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1724 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (13) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1832 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (13.5) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1969 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (14) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 2077 1265 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (14.5) show NC gr 1132 1295 m 755 Y s 1161 1295 m -29 X s 1146 1314 m -14 X s 1146 1333 m -14 X s 1146 1352 m -14 X s 1146 1371 m -14 X s 1161 1390 m -29 X s
|
|
||||||
1146 1409 m -14 X s 1146 1428 m -14 X s 1146 1446 m -14 X s 1146 1465 m -14 X s 1161 1484 m -29 X s 1146 1503 m -14 X s 1146 1522 m -14 X s 1146 1541 m -14 X s 1146 1560 m -14 X s 1161 1578 m -29 X s 1146 1597 m -14 X s 1146 1616 m -14 X s 1146
|
|
||||||
1635 m -14 X s 1146 1654 m -14 X s 1161 1673 m -29 X s 1146 1692 m -14 X s 1146 1711 m -14 X s 1146 1729 m -14 X s 1146 1748 m -14 X s 1161 1767 m -29 X s 1146 1786 m -14 X s 1146 1805 m -14 X s 1146 1824 m -14 X s 1146 1843 m -14 X s 1161 1862 m
|
|
||||||
-29 X s 1146 1880 m -14 X s 1146 1899 m -14 X s 1146 1918 m -14 X s 1146 1937 m -14 X s 1161 1956 m -29 X s 1146 1975 m -14 X s 1146 1994 m -14 X s 1146 2012 m -14 X s 1146 2031 m -14 X s 1161 2050 m -29 X s
|
|
||||||
gsave 1112 857 1020 1210 C 1108 1285 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1085 1379 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.1) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1083 1473 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.2) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1083 1570 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.3) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1080 1664 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.4) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1083 1758 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.5) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1083 1852 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.6) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1083 1946 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.7) show NC gr
|
|
||||||
gsave 1112 857 1020 1210 C 1083 2040 t 0 r /Helvetica-Bold findfont 31.3461 sf 0 0 m (0.8) show NC gr 3 lw 1 1 1 c black /w 24 def /w2 {w 2 div} def /w3 {w 3 div} def 1147 1989 1177 1978 1208 1964 1239 1951 1269 1934 1300 1916 1330 1896 1361 1874
|
|
||||||
1391 1850 1422 1824 1452 1795 1483 1764 1514 1730 1544 1695 1575 1659 1605 1621 1636 1583 1666 1547 1697 1513 1727 1480 1758 1449 1789 1422 1819 1398 1850 1376 1880 1358 1911 1344 1941 1332 1972 1323 2002 1315 2033 1310 2064 1306 2094 1303 32 { m20
|
|
||||||
} R 9 lw 0.95 0.95 0.95 c black 1136 1998 m 10 -3 d 10 -3 d 10 -4 d 10 -4 d 9 -3 d 10 -4 d 10 -4 d 10 -4 d 9 -4 d 10 -5 d 10 -5 d 10 -4 d 10 -5 d 9 -6 d 10 -5 d 10 -6 d 10 -6 d 9 -6 d 10 -7 d 10 -6 d 10 -7 d 10 -8 d 9 -7 d 10 -8 d 10 -8 d 10 -8 d 9
|
|
||||||
-9 d 10 -9 d 10 -9 d 10 -10 d 10 -10 d 9 -10 d 10 -10 d 10 -10 d 10 -11 d 10 -11 d 9 -11 d 10 -11 d 10 -12 d 10 -12 d 9 -11 d 10 -12 d 10 -12 d 10 -12 d 10 -12 d 9 -13 d 10 -12 d 10 -12 d 10 -12 d s 1616 1605 m 9 -12 d 10 -12 d 10 -12 d 10 -11 d 10
|
|
||||||
-12 d 9 -11 d 10 -11 d 10 -11 d 10 -11 d 9 -11 d 10 -10 d 10 -10 d 10 -10 d 10 -9 d 9 -9 d 10 -9 d 10 -8 d 10 -8 d 9 -8 d 10 -8 d 10 -7 d 10 -6 d 10 -7 d 9 -6 d 10 -6 d 10 -6 d 10 -5 d 9 -5 d 10 -4 d 10 -5 d 10 -4 d 10 -3 d 9 -4 d 10 -3 d 10 -3 d
|
|
||||||
10 -3 d 9 -3 d 10 -2 d 10 -2 d 10 -3 d 10 -1 d 9 -2 d 10 -2 d 10 -1 d 10 -1 d 9 -2 d 10 -1 d 10 -1 d 10 -1 d s 2095 1303 m 10 X s[ 12 12] 0 sd 3 lw 1 1 1 c black[ ] 0 sd 1147 1972 1177 1960 1208 1944 1239 1929 1269 1911 1300 1891 1330 1870 1361
|
|
||||||
1847 1391 1822 1422 1795 1452 1767 1483 1737 1514 1704 1544 1672 1575 1639 1605 1607 1636 1573 1666 1541 1697 1510 1727 1481 1758 1454 1789 1429 1819 1407 1850 1388 1880 1370 1911 1355 1941 1343 1972 1332 2002 1324 2033 1317 2064 1312 2094 1308 32
|
|
||||||
{ m24} R[ 12 12] 0 sd 9 lw 0.95 0.95 0.95 c black 1136 1982 m 10 -4 d 10 -3 d 10 -5 d 10 -4 d 9 -4 d 10 -5 d 10 -5 d 10 -5 d 9 -5 d 10 -5 d 10 -6 d 10 -5 d 10 -6 d 9 -6 d 10 -6 d 10 -6 d 10 -7 d 9 -7 d 10 -7 d 10 -7 d 10 -8 d 10 -7 d 9 -8 d 10 -8 d
|
|
||||||
10 -9 d 10 -8 d 9 -9 d 10 -9 d 10 -9 d 10 -9 d 10 -10 d 9 -9 d 10 -10 d 10 -10 d 10 -10 d 10 -10 d 9 -10 d 10 -11 d 10 -11 d 10 -10 d 9 -11 d 10 -10 d 10 -11 d 10 -11 d 10 -11 d 9 -11 d 10 -10 d 10 -11 d 10 -11 d s 1616 1592 m 9 -10 d 10 -11 d 10
|
|
||||||
-10 d 10 -10 d 10 -10 d 9 -10 d 10 -10 d 10 -10 d 10 -10 d 9 -9 d 10 -9 d 10 -9 d 10 -8 d 10 -9 d 9 -8 d 10 -8 d 10 -7 d 10 -8 d 9 -7 d 10 -7 d 10 -7 d 10 -6 d 10 -7 d 9 -5 d 10 -6 d 10 -6 d 10 -5 d 9 -4 d 10 -5 d 10 -5 d 10 -4 d 10 -4 d 9 -4 d 10
|
|
||||||
-3 d 10 -3 d 10 -4 d 9 -3 d 10 -2 d 10 -3 d 10 -2 d 10 -3 d 9 -2 d 10 -2 d 10 -2 d 10 -1 d 9 -2 d 10 -1 d 10 -2 d 10 -1 d s 2095 1308 m 10 -1 d s[ 4 8] 0 sd 3 lw 1 1 1 c black[ ] 0 sd 1147 2002 1177 1989 1208 1983 1239 1966 1269 1957 1300 1940
|
|
||||||
1330 1925 1361 1904 1391 1886 1422 1863 1452 1834 1483 1804 1514 1767 1544 1731 1575 1686 1605 1646 1636 1597 1666 1556 1697 1511 1727 1473 1758 1436 1789 1405 1819 1381 1850 1358 1880 1343 1911 1329 1941 1321 1972 1313 2002 1311 2033 1306 2064
|
|
||||||
1306 2094 1304 32 { m28} R[ 4 8] 0 sd 9 lw 0.95 0.95 0.95 c black 1136 2004 m 10 -3 d 10 -2 d 10 -3 d 10 -3 d 9 -3 d 10 -3 d 10 -3 d 10 -3 d 9 -4 d 10 -3 d 10 -4 d 10 -3 d 10 -4 d 9 -4 d 10 -4 d 10 -5 d 10 -4 d 9 -5 d 10 -5 d 10 -5 d 10 -6 d 10 -6
|
|
||||||
d 9 -6 d 10 -7 d 10 -7 d 10 -7 d 9 -7 d 10 -9 d 10 -8 d 10 -8 d 10 -10 d 9 -10 d 10 -10 d 10 -10 d 10 -11 d 10 -11 d 9 -11 d 10 -13 d 10 -12 d 10 -13 d 9 -13 d 10 -13 d 10 -14 d 10 -13 d 10 -14 d 9 -15 d 10 -14 d 10 -14 d 10 -14 d s 1616 1625 m 9
|
|
||||||
-15 d 10 -14 d 10 -14 d 10 -14 d 10 -14 d 9 -13 d 10 -14 d 10 -13 d 10 -13 d 9 -12 d 10 -12 d 10 -12 d 10 -11 d 10 -11 d 9 -10 d 10 -11 d 10 -9 d 10 -8 d 9 -9 d 10 -8 d 10 -8 d 10 -7 d 10 -7 d 9 -5 d 10 -6 d 10 -6 d 10 -5 d 9 -4 d 10 -4 d 10 -4 d
|
|
||||||
10 -3 d 10 -3 d 9 -3 d 10 -3 d 10 -2 d 10 -2 d 9 -2 d 10 -2 d 10 -1 d 10 -2 d 10 -1 d 9 -1 d 10 -1 d 10 -1 d 10 X 9 -1 d 10 X 10 -1 d 10 X s 2095 1303 m 10 -1 d s[ ] 0 sd 3 lw 1 1 1 c black 632 2089 645 1978 658 1730 671 1586 684 1490 697 1427 709
|
|
||||||
1390 722 1364 735 1345 748 1334 761 1324 774 1315 787 1309 800 1302 813 1295 826 1289 839 1282 852 1277 865 1270 878 1264 891 1258 904 1251 917 1246 930 1240 943 1234 956 1229 969 1222 982 1216 995 1210 1008 1204 1020 1196 1033 1193 1046 1186 1059
|
|
||||||
1180 1072 1173 1085 1169 1098 1163 1111 1156 1124 1150 1137 1145 1150 1140 1163 1133 1176 1127 1189 1120 1202 1115 1215 1109 1228 1101 1241 1095 1254 1087 1267 1081 50 { m20} R 632 2089 m 13 -111 d 13 -248 d 13 -144 d 13 -96 d 13 -63 d 12 -37 d 13
|
|
||||||
-26 d 13 -19 d 13 -11 d 13 -10 d 13 -9 d 13 -6 d 13 -7 d 13 -7 d 13 -6 d 13 -7 d 13 -5 d 13 -7 d 13 -6 d 13 -6 d 13 -7 d 13 -5 d 13 -6 d 13 -6 d 13 -5 d 13 -7 d 13 -6 d 13 -6 d 13 -6 d 12 -8 d 13 -3 d 13 -7 d 13 -6 d 13 -7 d 13 -4 d 13 -6 d 13 -7 d
|
|
||||||
13 -6 d 13 -5 d 13 -5 d 13 -7 d 13 -6 d 13 -7 d 13 -5 d 13 -6 d 13 -8 d 13 -6 d 13 -8 d 13 -6 d s 1267 1081 1280 1075 1293 1068 1306 1060 1319 1052 1331 1046 1344 1038 1357 1031 1370 1022 1383 1015 1396 1006 1409 998 1422 987 1435 977 1448 966 1461
|
|
||||||
954 1474 941 1487 925 1500 909 1513 890 1526 869 1539 847 1552 823 1565 796 1578 767 1591 735 1604 702 1617 668 1630 634 1642 598 1655 565 1668 532 1681 502 1694 473 1707 448 1720 425 1733 405 1746 389 1759 375 1772 364 1785 355 1798 348 1811 343
|
|
||||||
1824 340 1837 337 1850 335 1863 334 1876 333 1889 332 1902 332 50 { m20} R 1267 1081 m 13 -6 d 13 -7 d 13 -8 d 13 -8 d 12 -6 d 13 -8 d 13 -7 d 13 -9 d 13 -7 d 13 -9 d 13 -8 d 13 -11 d 13 -10 d 13 -11 d 13 -12 d 13 -13 d 13 -16 d 13 -16 d 13 -19 d
|
|
||||||
13 -21 d 13 -22 d 13 -24 d 13 -27 d 13 -29 d 13 -32 d 13 -33 d 13 -34 d 13 -34 d 12 -36 d 13 -33 d 13 -33 d 13 -30 d 13 -29 d 13 -25 d 13 -23 d 13 -20 d 13 -16 d 13 -14 d 13 -11 d 13 -9 d 13 -7 d 13 -5 d 13 -3 d 13 -3 d 13 -2 d 13 -1 d 13 -1 d 13
|
|
||||||
-1 d 13 X s 1902 332 1915 331 1928 331 1941 331 1953 331 1966 331 1979 331 1992 331 2005 331 2018 331 2031 331 2044 331 2057 331 2070 331 2083 331 2096 331 2109 331 2122 331 2135 331 2148 331 20 { m20} R 1902 332 m 13 -1 d 233 X s[ 12 12] 0 sd 1 1
|
|
||||||
1 c black[ ] 0 sd 748 2089 761 1386 774 1361 787 1345 800 1325 813 1319 826 1305 839 1294 852 1286 865 1279 878 1270 891 1263 904 1254 917 1247 930 1242 943 1235 956 1229 969 1223 982 1215 995 1210 1008 1204 1020 1197 1033 1191 1046 1185 1059 1181
|
|
||||||
1072 1174 1085 1168 1098 1161 1111 1155 1124 1148 1137 1142 1150 1136 1163 1130 1176 1124 1189 1116 1202 1110 1215 1104 1228 1097 1241 1091 1254 1083 1267 1076 1280 1069 1293 1061 1306 1054 1319 1046 1331 1038 1344 1030 1357 1022 1370 1011 1383
|
|
||||||
1004 50 { m24} R[ 12 12] 0 sd 748 2089 m 13 -703 d 13 -25 d 13 -16 d 13 -20 d 13 -6 d 13 -14 d 13 -11 d 13 -8 d 13 -7 d 13 -9 d 13 -7 d 13 -9 d 13 -7 d 13 -5 d 13 -7 d 13 -6 d 13 -6 d 13 -8 d 13 -5 d 13 -6 d 12 -7 d 13 -6 d 13 -6 d 13 -4 d 13 -7 d
|
|
||||||
13 -6 d 13 -7 d 13 -6 d 13 -7 d 13 -6 d 13 -6 d 13 -6 d 13 -6 d 13 -8 d 13 -6 d 13 -6 d 13 -7 d 13 -6 d 13 -8 d 13 -7 d 13 -7 d 13 -8 d 13 -7 d 13 -8 d 12 -8 d 13 -8 d 13 -8 d 13 -11 d 13 -7 d s[ ] 0 sd 1383 1004 1396 994 1409 983 1422 972 1435
|
|
||||||
961 1448 949 1461 935 1474 921 1487 903 1500 885 1513 866 1526 845 1539 821 1552 796 1565 769 1578 742 1591 711 1604 681 1617 651 1630 620 1642 589 1655 559 1668 530 1681 503 1694 477 1707 455 1720 434 1733 416 1746 400 1759 386 1772 374 1785 364
|
|
||||||
1798 356 1811 350 1824 345 1837 341 1850 339 1863 336 1876 334 1889 333 1902 332 1915 332 1928 331 1941 331 1953 331 1966 331 1979 331 1992 331 2005 331 2018 331 50 { m24} R[ 12 12] 0 sd 1383 1004 m 13 -10 d 13 -11 d 13 -11 d 13 -11 d 13 -12 d 13
|
|
||||||
-14 d 13 -14 d 13 -18 d 13 -18 d 13 -19 d 13 -21 d 13 -24 d 13 -25 d 13 -27 d 13 -27 d 13 -31 d 13 -30 d 13 -30 d 13 -31 d 12 -31 d 13 -30 d 13 -29 d 13 -27 d 13 -26 d 13 -22 d 13 -21 d 13 -18 d 13 -16 d 13 -14 d 13 -12 d 13 -10 d 13 -8 d 13 -6 d
|
|
||||||
13 -5 d 13 -4 d 13 -2 d 13 -3 d 13 -2 d 13 -1 d 13 -1 d 13 X 13 -1 d 90 X s[ ] 0 sd 2018 331 2031 331 2044 330 2057 330 2070 330 2083 330 2096 330 2109 330 2122 330 2135 330 2148 330 11 { m24} R[ 12 12] 0 sd 2018 331 m 13 X 13 -1 d 104 X s[ 4 8
|
|
||||||
] 0 sd 1 1 1 c black[ ] 0 sd 515 2089 528 2040 541 1779 554 1647 567 1615 580 1504 593 1472 606 1483 619 1425 632 1409 645 1423 658 1386 671 1377 684 1362 697 1374 709 1345 722 1340 735 1340 748 1322 761 1315 774 1314 787 1301 800 1295 813 1295 826
|
|
||||||
1281 839 1278 852 1268 865 1269 878 1256 891 1254 904 1249 917 1240 930 1235 943 1233 956 1228 969 1219 982 1217 995 1210 1008 1206 1020 1197 1033 1197 1046 1185 1059 1184 1072 1178 1085 1171 1098 1167 1111 1157 1124 1158 1137 1146 1150 1144 50 {
|
|
||||||
m28} R[ 4 8] 0 sd 515 2089 m 13 -49 d 13 -261 d 13 -132 d 13 -32 d 13 -111 d 13 -32 d 13 11 d 13 -58 d 13 -16 d 13 14 d 13 -37 d 13 -9 d 13 -15 d 13 12 d 12 -29 d 13 -5 d 13 X 13 -18 d 13 -7 d 13 -1 d 13 -13 d 13 -6 d 13 X 13 -14 d 13 -3 d 13 -10 d
|
|
||||||
13 1 d 13 -13 d 13 -2 d 13 -5 d 13 -9 d 13 -5 d 13 -2 d 13 -5 d 13 -9 d 13 -2 d 13 -7 d 13 -4 d 12 -9 d 13 X 13 -12 d 13 -1 d 13 -6 d 13 -7 d 13 -4 d 13 -10 d 13 1 d 13 -12 d 13 -2 d s[ ] 0 sd 1150 1144 1163 1135 1176 1133 1189 1123 1202 1122 1215
|
|
||||||
1111 1228 1108 1241 1103 1254 1091 1267 1088 1280 1077 1293 1076 1306 1063 1319 1059 1331 1050 1344 1044 1357 1034 1370 1031 1383 1019 1396 1014 1409 1006 1422 996 1435 989 1448 976 1461 971 1474 955 1487 947 1500 931 1513 917 1526 897 1539 881
|
|
||||||
1552 859 1565 832 1578 804 1591 770 1604 736 1617 694 1630 657 1642 612 1655 573 1668 531 1681 496 1694 461 1707 432 1720 409 1733 388 1746 374 1759 362 1772 354 1785 346 50 { m28} R[ 4 8] 0 sd 1150 1144 m 13 -9 d 13 -2 d 13 -10 d 13 -1 d 13 -11 d
|
|
||||||
13 -3 d 13 -5 d 13 -12 d 13 -3 d 13 -11 d 13 -1 d 13 -13 d 13 -4 d 12 -9 d 13 -6 d 13 -10 d 13 -3 d 13 -12 d 13 -5 d 13 -8 d 13 -10 d 13 -7 d 13 -13 d 13 -5 d 13 -16 d 13 -8 d 13 -16 d 13 -14 d 13 -20 d 13 -16 d 13 -22 d 13 -27 d 13 -28 d 13 -34 d
|
|
||||||
13 -34 d 13 -42 d 13 -37 d 12 -45 d 13 -39 d 13 -42 d 13 -35 d 13 -35 d 13 -29 d 13 -23 d 13 -21 d 13 -14 d 13 -12 d 13 -8 d 13 -8 d s[ ] 0 sd 1785 346 1798 345 1811 340 1824 340 1837 338 1850 337 1863 337 1876 335 1889 336 1902 335 1915 335 1928
|
|
||||||
335 1941 335 1953 334 1966 335 1979 335 1992 334 2005 334 2018 334 2031 334 2044 333 2057 334 2070 333 2083 333 2096 333 2109 333 2122 333 2135 333 2148 333 29 { m28} R[ 4 8] 0 sd 1785 346 m 13 -1 d 13 -5 d 13 X 13 -2 d 13 -1 d 13 X 13 -2 d 13 1 d
|
|
||||||
13 -1 d 39 X 12 -1 d 13 1 d 13 X 13 -1 d 39 X 13 -1 d 13 1 d 13 -1 d 78 X s[ ] 0 sd 6 lw 1 1 1 c 680 440 454 440 bf black 454 440 m 680 X s 1134 440 m 440 Y s 1134 880 m -680 X s 454 880 m -440 Y s
|
|
||||||
gsave 2268 2199 0 0 C 470 798 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Settings) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 621 678 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (standard) show NC gr 3 lw 479 715 m 119 X s 539 715 m20
|
|
||||||
gsave 2268 2199 0 0 C 621 567 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (fast) show NC gr [ 12 12] 0 sd 479 605 m 119 X s[ ] 0 sd 539 605 m24[ 12 12] 0 sd
|
|
||||||
gsave 2268 2199 0 0 C 621 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (highgain) show NC gr [ 4 8] 0 sd 479 495 m 119 X s[ ] 0 sd 539 495 m28[ 4 8] 0 sd
|
|
||||||
gr gr
|
|
||||||
showpage
|
|
||||||
end
|
|
||||||
%%EOF
|
|
@ -1,103 +0,0 @@
|
|||||||
%!PS-Adobe-2.0 EPSF-2.0
|
|
||||||
%%BoundingBox: 0 0 567 564
|
|
||||||
%%Title: /afs/psi.ch/project/mythen/root_macros20100305/paper/fluoExp.eps: c1
|
|
||||||
%%Creator: ROOT Version 5.24/00
|
|
||||||
%%CreationDate: Thu Mar 11 12:55:25 2010
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
80 dict begin
|
|
||||||
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
|
|
||||||
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
|
|
||||||
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
|
|
||||||
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
|
|
||||||
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
|
|
||||||
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
|
|
||||||
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
|
|
||||||
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
|
|
||||||
/mp {newpath /y exch def /x exch def} def
|
|
||||||
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
|
|
||||||
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
|
|
||||||
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
|
|
||||||
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
|
|
||||||
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
|
|
||||||
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
|
|
||||||
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
|
|
||||||
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
|
|
||||||
0 w3 neg d w3 neg 0 d cl s } def
|
|
||||||
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl fill gr} def
|
|
||||||
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl s gr} def
|
|
||||||
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
|
|
||||||
sub m w w d s} def
|
|
||||||
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
|
|
||||||
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
|
|
||||||
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
|
|
||||||
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
|
|
||||||
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
|
|
||||||
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
|
|
||||||
/oshow {gsave [] 0 sd true charpath stroke gr} def
|
|
||||||
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
|
|
||||||
text sw pop xs add /xs exch def} def
|
|
||||||
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
|
|
||||||
pop neg xs add /xs exch def} def
|
|
||||||
%%EndProlog
|
|
||||||
%%BeginSetup
|
|
||||||
%%EndSetup
|
|
||||||
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2256 0 0 bf black 3 lw 1 1 1 c 1814 1806 340 338 bf black 1814 1806 340 338 bl 1 1 1 c 1814 1806 340 338 bf black 1814 1806 340 338 bl 1 1 1 c black /w 24
|
|
||||||
def /w2 {w 2 div} def /w3 {w 3 div} def 539 2040 548 1949 556 1891 565 1845 573 1812 582 1788 590 1767 599 1757 607 1741 616 1732 624 1722 633 1712 641 1704 650 1700 658 1685 667 1678 675 1671 683 1663 692 1659 700 1652 709 1642 717 1636 726 1631
|
|
||||||
734 1628 743 1618 751 1610 760 1610 768 1599 777 1597 785 1589 794 1584 802 1580 811 1571 819 1565 828 1561 836 1553 845 1546 853 1539 862 1531 870 1528 878 1515 887 1513 895 1506 904 1497 912 1493 921 1490 929 1478 938 1474 946 1468 955 1457 50 {
|
|
||||||
m2} R 955 1457 963 1451 972 1445 980 1434 989 1427 997 1421 1006 1405 1014 1400 1023 1385 1031 1373 1040 1368 1048 1356 1057 1345 1065 1331 1073 1324 1082 1310 1090 1304 1099 1291 1107 1278 1116 1268 1124 1256 1133 1248 1141 1240 1150 1231 1158
|
|
||||||
1222 1167 1208 1175 1204 1184 1197 1192 1186 1201 1185 1209 1177 1218 1172 1226 1163 1235 1152 1243 1155 1251 1147 1260 1142 1268 1137 1277 1133 1285 1132 1294 1123 1302 1124 1311 1118 1319 1113 1328 1109 1336 1103 1345 1100 1353 1094 1362 1095
|
|
||||||
1370 1092 50 { m2} R 1370 1092 1379 1088 1387 1085 1396 1079 1404 1073 1413 1064 1421 1063 1430 1058 1438 1054 1446 1053 1455 1048 1463 1043 1472 1038 1480 1034 1489 1032 1497 1026 1506 1020 1514 1018 1523 1009 1531 1007 1540 998 1548 994 1557 989
|
|
||||||
1565 983 1574 976 1582 966 1591 960 1599 951 1608 943 1616 935 1624 929 1633 915 1641 903 1650 893 1658 882 1667 869 1675 856 1684 846 1692 832 1701 814 1709 798 1718 779 1726 763 1735 745 1743 725 1752 704 1760 682 1769 661 1777 638 1786 619 50 {
|
|
||||||
m2} R 1786 619 1794 597 1803 579 1811 558 1819 536 1828 518 1836 500 1845 483 1853 467 1862 453 1870 438 1879 426 1887 415 1896 404 1904 394 1913 386 1921 378 1930 372 1938 367 1947 362 1955 359 1964 356 1972 352 1981 350 1989 348 1997 347 2006 345
|
|
||||||
2014 344 2023 343 2031 343 2040 343 2048 342 2057 342 2065 342 2074 341 2082 341 2091 341 2099 341 2108 341 2116 341 2125 341 2133 341 2142 341 2150 341 44 { m2} R 9 lw 0.95 0.95 0.95 c black 715 1630 m 15 -9 d 14 -9 d 14 -9 d 15 -9 d 14 -9 d 15 -9
|
|
||||||
d 14 -9 d 14 -9 d 15 -9 d 14 -10 d 15 -10 d 14 -11 d 15 -11 d 14 -11 d 14 -12 d 15 -13 d 14 -15 d 15 -15 d 14 -16 d 15 -16 d 14 -18 d 14 -18 d 15 -19 d 14 -19 d 15 -18 d 14 -19 d 14 -18 d 15 -17 d 14 -16 d 15 -15 d 14 -13 d 15 -13 d 14 -12 d 14 -11
|
|
||||||
d 15 -10 d 14 -10 d 15 -9 d 14 -9 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -7 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -7 d 15 -8 d s 1422 1060 m 14 -7 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -9 d 14 -10 d 14 -10 d 15 -11 d 14 -13 d 15
|
|
||||||
-14 d 14 -17 d 14 -18 d 15 -21 d 14 -23 d 15 -26 d 14 -29 d 15 -31 d 14 -34 d 14 -35 d 15 -36 d 14 -36 d 15 -35 d 14 -35 d 15 -32 d 14 -31 d 14 -27 d 15 -24 d 14 -21 d 15 -18 d 14 -14 d 14 -12 d 15 -10 d 14 -7 d 15 -5 d 14 -4 d 15 -3 d 14 -2 d 14
|
|
||||||
-2 d 15 -1 d 14 X 15 -1 d 57 X s 2128 341 m 15 X s 6 lw 340 338 m 1814 X s
|
|
||||||
gsave 2268 2256 0 0 C 1368 130 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (Threshold \(keV\)) show NC gr 347 393 m -55 Y s 407 366 m -28 Y s 468 366 m -28 Y s 528 366 m -28 Y s 588 393 m -55 Y s 648 366 m -28 Y s 708 366 m -28 Y s 768 366 m
|
|
||||||
-28 Y s 828 393 m -55 Y s 888 366 m -28 Y s 948 366 m -28 Y s 1008 366 m -28 Y s 1068 393 m -55 Y s 1129 366 m -28 Y s 1189 366 m -28 Y s 1249 366 m -28 Y s 1309 393 m -55 Y s 1369 366 m -28 Y s 1429 366 m -28 Y s 1489 366 m -28 Y s 1549 393 m -55
|
|
||||||
Y s 1609 366 m -28 Y s 1669 366 m -28 Y s 1729 366 m -28 Y s 1789 393 m -55 Y s 1850 366 m -28 Y s 1910 366 m -28 Y s 1970 366 m -28 Y s 2030 393 m -55 Y s 347 393 m -55 Y s 2030 393 m -55 Y s 2090 366 m -28 Y s 2150 366 m -28 Y s
|
|
||||||
gsave 2268 2256 0 0 C 324 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 564 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (2) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 804 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (4) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1044 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (6) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1286 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (8) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1503 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (10) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1743 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (12) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1980 257 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (14) show NC gr 340 338 m 1806 Y s
|
|
||||||
gsave 2268 2256 0 0 C 166 908 t 90 r /Helvetica-Bold findfont 104.36 sf 0 0 m (Normalized counts \(A.U.\)) show NC gr 395 338 m -55 X s 367 384 m -27 X s 367 429 m -27 X s 367 474 m -27 X s 395 519 m -55 X s 367 564 m -27 X s 367 609 m -27 X s
|
|
||||||
367 654 m -27 X s 395 699 m -55 X s 367 745 m -27 X s 367 790 m -27 X s 367 835 m -27 X s 395 880 m -55 X s 367 925 m -27 X s 367 970 m -27 X s 367 1015 m -27 X s 395 1061 m -55 X s 367 1106 m -27 X s 367 1151 m -27 X s 367 1196 m -27 X s 395 1241
|
|
||||||
m -55 X s 367 1286 m -27 X s 367 1331 m -27 X s 367 1376 m -27 X s 395 1422 m -55 X s 367 1467 m -27 X s 367 1512 m -27 X s 367 1557 m -27 X s 395 1602 m -55 X s 367 1647 m -27 X s 367 1692 m -27 X s 367 1737 m -27 X s 395 1783 m -55 X s 367 1828 m
|
|
||||||
-27 X s 367 1873 m -27 X s 367 1918 m -27 X s 395 1963 m -55 X s 367 2008 m -27 X s 367 2053 m -27 X s 367 2098 m -27 X s 395 2144 m -55 X s
|
|
||||||
gsave 2268 2256 0 0 C 282 307 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 212 488 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.2) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 209 668 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.4) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 212 849 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.6) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 212 1029 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (0.8) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 293 1207 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 212 1388 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.2) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 209 1568 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.4) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 212 1752 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.6) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 212 1932 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (1.8) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 282 2110 t 0 r /Helvetica-Bold findfont 84.6163 sf 0 0 m (2) show NC gr [ 12 12] 0 sd 9 lw 0.95 0.95 0.95 c black 715 1449 m 15 -8 d 14 -8 d 14 -7 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 15
|
|
||||||
-8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d 14 -7 d 14 -8 d 15 -8 d 14 -8 d 15
|
|
||||||
-8 d 14 -8 d 14 -8 d 15 -8 d 14 -8 d 15 -8 d s 1422 1062 m 14 -7 d 15 -8 d 14 -8 d 14 -8 d 15 -8 d 14 -9 d 15 -8 d 14 -9 d 15 -9 d 14 -10 d 14 -10 d 15 -11 d 14 -13 d 15 -14 d 14 -16 d 14 -18 d 15 -21 d 14 -23 d 15 -26 d 14 -29 d 15 -31 d 14 -33 d
|
|
||||||
14 -35 d 15 -36 d 14 -36 d 15 -36 d 14 -35 d 15 -32 d 14 -31 d 14 -27 d 15 -24 d 14 -21 d 15 -18 d 14 -15 d 14 -12 d 15 -9 d 14 -7 d 15 -5 d 14 -4 d 15 -3 d 14 -2 d 14 -2 d 15 -1 d 14 X 15 -1 d 57 X s 2128 341 m 15 X s[ 4 8] 0 sd 6 lw 1068 338 m
|
|
||||||
993 Y s 1429 338 m 720 Y s 1789 338 m 281 Y s[ 12 16 4 16] 0 sd 347 1331 m 721 X s 347 1256 m 721 X s
|
|
||||||
gsave 2268 2256 0 0 C 1842 601 t 0 r /Helvetica-Bold findfont 70.5136 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1777 629 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1470 1061 t 0 r /Helvetica-Bold findfont 70.5136 sf 0 0 m (t) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1405 1089 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1108 1328 t 0 r /Helvetica-Bold findfont 70.5136 sf 0 0 m (f) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1044 1360 t 0 r /Helvetica-Bold findfont 104.36 sf 0 0 m (E) show NC gr [ ] 0 sd 1068 519 m 361 X s 1397 537 m 32 -18 d -32 -18 d s 1100 501 m -32 18 d 32 18 d s 1429 519 m 360 X s 1758 537 m 31 -18 d -31 -18 d s 1461 501 m
|
|
||||||
-32 18 d 32 18 d s
|
|
||||||
gsave 2268 2256 0 0 C 1247 564 t 0 r /Symbol findfont 104.36 sf 0 0 m (S) show NC gr
|
|
||||||
gsave 2268 2256 0 0 C 1608 564 t 0 r /Symbol findfont 104.36 sf 0 0 m (S) show NC gr 588 1331 m -75 Y s 597 1272 m -9 -16 d -9 16 d s 579 1315 m 9 16 d 9 -16 d s
|
|
||||||
gsave 2268 2256 0 0 C 609 1269 t 0 r /Symbol findfont 84.6163 sf 0 0 m (D) show NC gr
|
|
||||||
gr gr
|
|
||||||
showpage
|
|
||||||
end
|
|
||||||
%%EOF
|
|
@ -1,146 +0,0 @@
|
|||||||
%!PS-Adobe-2.0 EPSF-2.0
|
|
||||||
%%BoundingBox: 0 0 567 550
|
|
||||||
%%Title: /afs/psi.ch/user/b/bergamaschi/root_macros/paper/moduleCalibration.eps: c1_n3
|
|
||||||
%%Creator: ROOT Version 5.20/00
|
|
||||||
%%CreationDate: Tue Feb 24 16:20:36 2009
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
80 dict begin
|
|
||||||
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
|
|
||||||
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
|
|
||||||
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
|
|
||||||
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
|
|
||||||
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
|
|
||||||
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
|
|
||||||
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
|
|
||||||
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
|
|
||||||
/mp {newpath /y exch def /x exch def} def
|
|
||||||
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
|
|
||||||
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
|
|
||||||
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
|
|
||||||
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
|
|
||||||
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
|
|
||||||
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
|
|
||||||
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
|
|
||||||
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
|
|
||||||
0 w3 neg d w3 neg 0 d cl s } def
|
|
||||||
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl fill gr} def
|
|
||||||
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl s gr} def
|
|
||||||
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
|
|
||||||
sub m w w d s} def
|
|
||||||
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
|
|
||||||
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
|
|
||||||
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
|
|
||||||
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
|
|
||||||
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
|
|
||||||
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
|
|
||||||
/oshow {gsave [] 0 sd true charpath stroke gr} def
|
|
||||||
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
|
|
||||||
text sw pop xs add /xs exch def} def
|
|
||||||
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
|
|
||||||
pop neg xs add /xs exch def} def
|
|
||||||
%%EndProlog
|
|
||||||
%%BeginSetup
|
|
||||||
%%EndSetup
|
|
||||||
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2199 0 0 bf black 3 lw 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c 1814 1759 340 330 bf black 1814 1759 340 330 bl 1 1 1 c black 340 330 m 1814 X s 6 lw
|
|
||||||
340 330 m 1814 X s
|
|
||||||
gsave 2268 2199 0 0 C 1279 123 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Threshold \(DACu\)) show NC gr 340 383 m -53 Y s 392 356 m -26 Y s 444 356 m -26 Y s 496 356 m -26 Y s 547 356 m -26 Y s 599 383 m -53 Y s 651 356 m -26 Y s 703 356 m
|
|
||||||
-26 Y s 755 356 m -26 Y s 807 356 m -26 Y s 858 383 m -53 Y s 910 356 m -26 Y s 962 356 m -26 Y s 1014 356 m -26 Y s 1066 356 m -26 Y s 1118 383 m -53 Y s 1169 356 m -26 Y s 1221 356 m -26 Y s 1273 356 m -26 Y s 1325 356 m -26 Y s 1377 383 m -53 Y
|
|
||||||
s 1429 356 m -26 Y s 1480 356 m -26 Y s 1532 356 m -26 Y s 1584 356 m -26 Y s 1636 383 m -53 Y s 1688 356 m -26 Y s 1740 356 m -26 Y s 1791 356 m -26 Y s 1843 356 m -26 Y s 1895 383 m -53 Y s 1947 356 m -26 Y s 1999 356 m -26 Y s 2051 356 m -26 Y s
|
|
||||||
2102 356 m -26 Y s 2154 383 m -53 Y s
|
|
||||||
gsave 2268 2199 0 0 C 271 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (400) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 530 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (450) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 789 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (500) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1048 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (550) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1308 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (600) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1567 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (650) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1826 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (700) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 2085 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (750) show NC gr 340 330 m 1759 Y s
|
|
||||||
gsave 2268 2199 0 0 C 100 1439 t 90 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Counts \(A.U.\)) show NC gr 395 330 m -55 X s 367 374 m -27 X s 367 418 m -27 X s 367 462 m -27 X s 395 506 m -55 X s 367 550 m -27 X s 367 594 m -27 X s 367 638 m
|
|
||||||
-27 X s 395 682 m -55 X s 367 726 m -27 X s 367 770 m -27 X s 367 814 m -27 X s 395 858 m -55 X s 367 902 m -27 X s 367 946 m -27 X s 367 990 m -27 X s 395 1034 m -55 X s 367 1078 m -27 X s 367 1122 m -27 X s 367 1166 m -27 X s 395 1210 m -55 X s
|
|
||||||
367 1254 m -27 X s 367 1298 m -27 X s 367 1342 m -27 X s 395 1386 m -55 X s 367 1430 m -27 X s 367 1474 m -27 X s 367 1518 m -27 X s 395 1562 m -55 X s 367 1606 m -27 X s 367 1650 m -27 X s 367 1693 m -27 X s 395 1737 m -55 X s 367 1781 m -27 X s
|
|
||||||
367 1825 m -27 X s 367 1869 m -27 X s 395 1913 m -55 X s 367 1957 m -27 X s 367 2001 m -27 X s 367 2045 m -27 X s 395 2089 m -55 X s
|
|
||||||
gsave 2268 2199 0 0 C 285 293 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 194 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (200) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 194 647 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (400) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 194 823 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (600) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 194 997 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (800) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 1174 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 1350 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1200) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 1527 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1400) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 1701 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1600) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 1877 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1800) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 2054 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr 3 lw 1 1 1 c black /w 24 def /w2 {w 2 div} def /w3 {w 3 div} def 858 330 864 330 869 330 874 330 879 330 884 330 889 330 895 330 900 330 905 330 910
|
|
||||||
330 915 330 920 330 926 330 931 330 936 330 941 330 946 330 951 330 957 330 962 330 967 330 972 330 977 330 982 330 988 330 993 330 998 330 1003 330 1008 330 1013 330 1019 330 1024 330 1029 330 1034 330 1039 330 1044 330 1050 330 1055 330 1060 330
|
|
||||||
1065 330 1070 330 1075 330 1081 330 1086 330 1091 330 1096 330 1101 330 1106 330 1112 330 50 { m26} R 1112 330 1117 330 1122 330 1127 330 1132 330 1137 330 1143 330 1148 330 1153 330 1158 330 1163 330 1168 330 1174 330 1179 330 1184 330 1189 330
|
|
||||||
1194 330 1199 330 1205 330 1210 330 1215 330 1220 330 1225 331 1230 331 1236 331 1241 331 1246 331 1251 331 1256 331 1261 331 1267 331 1272 331 1277 331 1282 331 1287 331 1292 331 1298 332 1303 332 1308 332 1313 333 1318 334 1323 335 1329 336 1334
|
|
||||||
338 1339 340 1344 343 1349 346 1354 349 1360 354 1365 360 50 { m26} R 1365 360 1370 366 1375 374 1380 383 1385 393 1391 405 1396 418 1401 433 1406 448 1411 464 1416 483 1422 501 1427 524 1432 545 1437 568 1442 591 1447 613 1453 635 1458 661 1463
|
|
||||||
685 1468 706 1473 728 1478 751 1484 771 1489 790 1494 810 1499 827 1504 844 1509 859 1515 874 1520 887 1525 900 1530 911 1535 922 1540 932 1546 943 1551 951 1556 960 1561 969 1566 977 1571 985 1577 991 1582 998 1587 1004 1592 1010 1597 1016 1602
|
|
||||||
1022 1608 1028 1613 1034 1618 1038 50 { m26} R 1618 1038 1623 1044 1628 1048 1633 1054 1639 1059 1644 1063 1649 1068 1654 1072 1659 1078 1664 1082 1670 1086 1675 1092 1680 1096 1685 1102 1690 1106 1695 1110 1701 1115 1706 1118 1711 1124 1716 1128
|
|
||||||
1721 1133 1726 1137 1732 1141 1737 1145 1742 1149 1747 1153 1752 1160 1757 1162 1763 1167 1768 1169 1773 1173 1778 1177 1783 1182 1788 1186 1794 1190 1799 1195 1804 1199 1809 1202 1814 1206 1819 1210 1825 1215 1830 1217 1835 1222 1840 1226 1845
|
|
||||||
1231 1850 1235 1856 1238 1861 1243 1866 1249 1871 1251 50 { m26} R 1871 1251 1876 1256 1881 1259 1887 1263 1892 1267 1897 1272 1902 1277 1907 1279 1912 1285 1918 1290 1923 1292 1928 1298 1933 1302 1938 1305 1943 1312 1949 1316 1954 1320 1959 1325
|
|
||||||
1964 1330 1969 1333 1974 1338 1980 1345 1985 1351 1990 1357 1995 1363 2000 1372 2005 1384 2011 1397 2016 1419 2021 1441 2026 1473 2031 1519 2036 1584 2042 1680 2047 1822 2052 2020 2057 2089 37 { m26} R 2150 2089 m26 9 lw 0.95 0.95 0.95 c black 782
|
|
||||||
330 m 434 X 16 1 d 48 X 16 1 d 16 1 d 16 4 d 16 7 d 17 12 d 16 21 d 16 32 d 16 45 d 16 58 d 16 68 d 16 73 d 16 74 d 16 68 d 16 58 d 16 47 d 16 37 d 16 28 d 16 22 d s 1569 987 m 16 18 d 17 16 d 16 14 d 16 15 d 16 14 d 16 13 d 16 14 d 16 14 d 16 14 d
|
|
||||||
16 14 d 16 14 d 16 14 d 16 13 d 16 14 d 16 14 d 16 14 d 17 14 d 16 14 d 16 13 d 16 14 d 16 14 d 16 14 d 16 14 d s[ 12 12] 0 sd 3 lw 1447 330 m 283 Y s[ ] 0 sd 1447 613 m20[ 12 12] 0 sd[ ] 0 sd 1 1 1 c black 864 330 889 330 900 330 905 330 910 330
|
|
||||||
915 330 920 330 926 330 931 330 936 330 941 330 946 330 951 330 957 330 962 330 967 330 972 331 977 331 982 331 988 331 993 331 998 332 1003 333 1008 333 1013 335 1019 336 1024 338 1029 340 1034 342 1039 345 1044 349 1050 353 1055 359 1060 366 1065
|
|
||||||
373 1070 382 1075 391 1081 402 1086 413 1091 428 1096 442 1101 456 1106 474 1112 493 1117 511 1122 532 1127 552 1132 571 1137 593 1143 614 50 { m27} R 1143 614 1148 634 1153 659 1158 677 1163 697 1168 717 1174 738 1179 757 1184 773 1189 788 1194
|
|
||||||
802 1199 820 1205 830 1210 842 1215 856 1220 870 1225 879 1230 888 1236 896 1241 904 1246 909 1251 918 1256 924 1261 930 1267 936 1272 942 1277 950 1282 955 1287 963 1292 968 1298 972 1303 974 1308 979 1313 985 1318 987 1323 991 1329 995 1334 1000
|
|
||||||
1339 1004 1344 1011 1349 1012 1354 1016 1360 1020 1365 1024 1370 1026 1375 1032 1380 1038 1385 1040 1391 1045 1396 1046 50 { m27} R 1396 1046 1401 1051 1406 1053 1411 1056 1416 1055 1422 1058 1427 1063 1432 1067 1437 1073 1442 1073 1447 1080 1453
|
|
||||||
1083 1458 1084 1463 1090 1468 1095 1473 1098 1478 1099 1484 1104 1489 1111 1494 1113 1499 1118 1504 1118 1509 1122 1515 1123 1520 1126 1525 1129 1530 1133 1535 1136 1540 1138 1546 1140 1551 1142 1556 1149 1561 1150 1566 1152 1571 1157 1577 1161
|
|
||||||
1582 1161 1587 1164 1592 1169 1597 1172 1602 1174 1608 1176 1613 1178 1618 1180 1623 1183 1628 1184 1633 1190 1639 1190 1644 1195 1649 1196 50 { m27} R 1649 1196 1654 1196 1659 1205 1664 1206 1670 1210 1675 1214 1680 1217 1685 1222 1690 1221 1695
|
|
||||||
1225 1701 1228 1706 1234 1711 1236 1716 1240 1721 1242 1726 1242 1732 1247 1737 1250 1742 1252 1747 1256 1752 1256 1757 1258 1763 1267 1768 1268 1773 1270 1778 1276 1783 1277 1788 1275 1794 1282 1799 1286 1804 1287 1809 1285 1814 1289 1819 1297
|
|
||||||
1825 1299 1830 1302 1835 1306 1840 1311 1845 1311 1850 1309 1856 1313 1861 1319 1866 1321 1871 1321 1876 1322 1881 1327 1887 1328 1892 1331 1897 1337 1902 1343 50 { m27} R 1902 1343 1907 1350 1912 1351 1918 1354 1923 1362 1928 1359 1933 1365 1938
|
|
||||||
1366 1943 1371 1949 1370 1954 1377 1959 1382 1964 1384 1969 1389 1974 1392 1980 1401 1985 1401 1990 1412 1995 1417 2000 1432 2005 1448 2011 1465 2016 1491 2021 1535 2026 1589 2031 1673 2036 1806 2042 2003 2047 2089 29 { m27} R 2150 2089 m27 9 lw
|
|
||||||
0.95 0.95 0.95 c black 348 330 m 601 X 16 1 d 15 X 16 1 d 16 3 d 16 5 d 16 10 d 15 16 d 16 24 d 16 35 d 16 46 d 16 57 d s 1123 528 m 16 64 d 15 67 d 16 66 d 16 59 d 16 51 d 16 40 d 15 32 d 16 24 d 16 18 d 16 14 d 16 12 d 15 11 d 16 10 d 16 10 d 16
|
|
||||||
10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 10 d 16 9 d 16 10 d 16 10 d 15 10 d 16 10 d 16 9 d
|
|
||||||
16 10 d 16 10 d 15 10 d s 1897 1350 m 16 10 d s[ 12 12] 0 sd 3 lw 1140 330 m 284 Y s[ ] 0 sd 1140 614 m20[ 12 12] 0 sd[ ] 0 sd 1 1 1 c black 516 331 521 331 526 331 531 331 537 332 542 332 547 334 552 334 557 335 562 336 568 339 573 341 578 343
|
|
||||||
583 347 588 351 594 356 599 361 604 367 609 374 614 383 619 391 625 400 630 411 635 423 640 439 645 450 650 465 656 482 661 498 666 516 671 537 676 550 681 569 687 591 692 608 697 628 702 645 707 663 712 681 718 698 723 711 728 727 733 743 738 757
|
|
||||||
743 769 749 784 754 795 759 807 764 817 769 826 50 { m28} R 769 826 774 837 780 843 785 854 790 863 795 870 800 875 805 881 811 887 816 896 821 903 826 903 831 912 837 914 842 920 847 924 852 928 857 933 862 936 868 941 873 946 878 948 883 952 888
|
|
||||||
956 893 961 899 964 904 968 909 970 914 972 919 973 924 977 930 981 935 987 940 992 945 994 950 998 955 999 961 1002 966 1004 971 1009 976 1008 981 1009 986 1012 992 1016 997 1020 1002 1025 1007 1029 1012 1034 1017 1035 1023 1037 50 { m28} R 1023
|
|
||||||
1037 1028 1037 1033 1044 1038 1042 1043 1048 1048 1057 1054 1060 1059 1064 1064 1068 1069 1067 1074 1066 1080 1067 1085 1071 1090 1071 1095 1073 1100 1074 1105 1079 1111 1080 1116 1080 1121 1085 1126 1087 1131 1092 1136 1094 1142 1095 1147 1098
|
|
||||||
1152 1099 1157 1100 1162 1106 1167 1106 1173 1111 1178 1111 1183 1115 1188 1117 1193 1119 1198 1119 1204 1120 1209 1122 1214 1122 1219 1128 1224 1128 1229 1128 1235 1132 1240 1136 1245 1140 1250 1142 1255 1142 1260 1148 1266 1149 1271 1151 1276
|
|
||||||
1149 50 { m28} R 1276 1149 1281 1154 1286 1154 1292 1153 1297 1160 1302 1159 1307 1162 1312 1163 1317 1164 1323 1169 1328 1168 1333 1170 1338 1175 1343 1174 1348 1180 1354 1178 1359 1178 1364 1179 1369 1181 1374 1183 1379 1186 1385 1189 1390 1190
|
|
||||||
1395 1197 1400 1199 1405 1201 1410 1201 1416 1200 1421 1202 1426 1207 1431 1207 1436 1212 1441 1212 1447 1210 1452 1213 1457 1217 1462 1217 1467 1222 1472 1224 1478 1226 1483 1229 1488 1234 1493 1232 1498 1234 1503 1233 1509 1237 1514 1239 1519
|
|
||||||
1240 1524 1242 1529 1245 50 { m28} R 1529 1245 1535 1250 1540 1253 1545 1255 1550 1261 1555 1266 1560 1267 1566 1270 1571 1272 1576 1276 1581 1275 1586 1276 1591 1276 1597 1279 1602 1283 1607 1282 1612 1286 1617 1292 1622 1295 1628 1295 1633 1296
|
|
||||||
1638 1297 1643 1297 1648 1292 1653 1297 1659 1296 1664 1303 1669 1304 1674 1303 1679 1304 1684 1302 1690 1308 1695 1307 1700 1313 1705 1320 1710 1320 1715 1314 1721 1313 1726 1322 1731 1328 1736 1329 1741 1338 1747 1338 1752 1340 1757 1341 1762
|
|
||||||
1341 1767 1343 1772 1343 1778 1343 1783 1347 50 { m28} R 1783 1347 1788 1355 1793 1354 1798 1365 1803 1362 1809 1370 1814 1372 1819 1367 1824 1376 1829 1377 1834 1382 1840 1379 1845 1384 1850 1386 1855 1386 1860 1392 1865 1399 1871 1399 1876 1400
|
|
||||||
1881 1403 1886 1407 1891 1411 1896 1416 1902 1416 1907 1419 1912 1425 1917 1429 1922 1431 1927 1437 1933 1440 1938 1442 1943 1441 1948 1446 1953 1447 1958 1448 1964 1457 1969 1464 1974 1470 1979 1483 1984 1493 1990 1507 1995 1520 2000 1537 2005
|
|
||||||
1565 2010 1602 2015 1665 2021 1761 2026 1901 2031 2089 49 { m28} R 2150 2089 m28 9 lw 0.95 0.95 0.95 c black 348 330 m 155 X 16 1 d 16 1 d 15 3 d 16 5 d 15 8 d 16 12 d 15 19 d 16 26 d 15 35 d 16 44 d 15 51 d 16 56 d 16 59 d 15 57 d 16 53 d 15 46 d
|
|
||||||
16 39 d 15 31 d 16 24 d 15 18 d 16 14 d 16 11 d 15 9 d 16 8 d 15 7 d 16 8 d 15 7 d 16 7 d 15 6 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 15 6 d 16 7 d s 1110 1064 m 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 6 d 15 7
|
|
||||||
d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 6 d 15 7 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 6 d 15 7 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d 15 6 d 16 7 d 15 7 d 16 7 d 15 7 d 16 7 d 16 7 d 15 7 d 16 7 d
|
|
||||||
15 6 d 16 7 d 15 7 d 16 7 d s 1872 1402 m 15 7 d s[ 12 12] 0 sd 3 lw 693 330 m 278 Y s[ ] 0 sd 693 608 m20[ 12 12] 0 sd[ ] 0 sd 6 lw 1 1 1 c 1088 725 386 1320 bf black 3 lw 1 1 1 c 947 631 516 1407 bf black 947 631 516 1407 bl 1 1 1 c 947 631 516
|
|
||||||
1407 bf black 947 631 516 1407 bl 6 lw 516 1407 m 947 X s
|
|
||||||
gsave 1088 725 386 1320 C 1131 1336 t 0 r /Helvetica-Bold findfont 54.2909 sf 0 0 m (Energy \(keV\)) show NC gr 525 1426 m -19 Y s 553 1416 m -9 Y s 581 1416 m -9 Y s 609 1416 m -9 Y s 638 1426 m -19 Y s 666 1416 m -9 Y s 694 1416 m -9 Y s 722
|
|
||||||
1416 m -9 Y s 750 1426 m -19 Y s 779 1416 m -9 Y s 807 1416 m -9 Y s 835 1416 m -9 Y s 863 1426 m -19 Y s 891 1416 m -9 Y s 920 1416 m -9 Y s 948 1416 m -9 Y s 976 1426 m -19 Y s 1004 1416 m -9 Y s 1032 1416 m -9 Y s 1061 1416 m -9 Y s 1089 1426 m
|
|
||||||
-19 Y s 1117 1416 m -9 Y s 1145 1416 m -9 Y s 1173 1416 m -9 Y s 1202 1426 m -19 Y s 1230 1416 m -9 Y s 1258 1416 m -9 Y s 1286 1416 m -9 Y s 1314 1426 m -19 Y s 1343 1416 m -9 Y s 1371 1416 m -9 Y s 1399 1416 m -9 Y s 1427 1426 m -19 Y s 525 1426
|
|
||||||
m -19 Y s 1427 1426 m -19 Y s 1455 1416 m -9 Y s
|
|
||||||
gsave 1088 725 386 1320 C 510 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (10) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 621 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (12) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 735 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (14) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 846 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (16) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 960 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (18) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 1074 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (20) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 1185 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (22) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 1299 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (24) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 1410 1382 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (26) show NC gr 516 1407 m 631 Y s
|
|
||||||
gsave 1088 725 386 1320 C 447 1578 t 90 r /Helvetica-Bold findfont 54.2909 sf 0 0 m (Threshold \(DACu\)) show NC gr 545 1411 m -29 X s 530 1438 m -14 X s 530 1465 m -14 X s 530 1493 m -14 X s 530 1520 m -14 X s 545 1548 m -29 X s 530 1575 m -14 X
|
|
||||||
s 530 1602 m -14 X s 530 1630 m -14 X s 530 1657 m -14 X s 545 1685 m -29 X s 530 1712 m -14 X s 530 1740 m -14 X s 530 1767 m -14 X s 530 1794 m -14 X s 545 1822 m -29 X s 530 1849 m -14 X s 530 1877 m -14 X s 530 1904 m -14 X s 530 1931 m -14 X s
|
|
||||||
545 1959 m -29 X s 545 1411 m -29 X s 545 1959 m -29 X s 530 1986 m -14 X s 530 2014 m -14 X s
|
|
||||||
gsave 1088 725 386 1320 C 467 1402 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (450) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 467 1538 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (500) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 467 1675 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (550) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 467 1812 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (600) show NC gr
|
|
||||||
gsave 1088 725 386 1320 C 467 1949 t 0 r /Helvetica-Bold findfont 25.7167 sf 0 0 m (650) show NC gr 3 lw 666 1859 948 1697 1371 1460 3 { m20} R 6 lw 9 lw 0.95 0.95 0.95 c black 668 1856 m 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7
|
|
||||||
-4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4
|
|
||||||
d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d s 1015 1660 m 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7
|
|
||||||
-4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 8 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d 7 -4 d s 1361 1464 m 7 -4 d s 6 lw 1 1 1 c 454 440 1587 440 bf black
|
|
||||||
gsave 2268 2199 0 0 C 1598 803 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (Energy) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1701 687 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (12.50 keV) show NC gr 3 lw 1644 715 m26 6 lw
|
|
||||||
gsave 2268 2199 0 0 C 1701 578 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (17.50 keV) show NC gr 3 lw 1644 605 m27 6 lw
|
|
||||||
gsave 2268 2199 0 0 C 1701 467 t 0 r /Helvetica-Bold findfont 65.5245 sf 0 0 m (25.00 keV) show NC gr 3 lw 1644 495 m28 6 lw
|
|
||||||
gr gr
|
|
||||||
showpage
|
|
||||||
end
|
|
||||||
%%EOF
|
|
@ -1,18 +0,0 @@
|
|||||||
The calibration wizards are based on the \textit{Root} software developed at CERN.\\
|
|
||||||
To install it, simply download it from the url \textit{http://root.cern.ch}.\\
|
|
||||||
You can either download the binaries for your system or install from source (which is time consuming, but possibly more stable).\\
|
|
||||||
The development and debugging of the wizards have been done using the root version 5.20, but it should be working also with newer versions.
|
|
||||||
|
|
||||||
After installing the root software, edit your .bashrc file to define the ROOTSYS enviroment variable, and add the binaries and libraries to your path, e.g.:
|
|
||||||
\begin{verbatim}
|
|
||||||
export ROOTSYS=/usr/local/root_sl5_32bit
|
|
||||||
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
|
|
||||||
export PATH=$ROOTSYS/bin:$PATH
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
Then enter the calibrationWizards directory and compile:
|
|
||||||
\begin{verbatim}
|
|
||||||
make clean && make
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
The two executables \textit{energyCalibrationWizard} and \textit{angularCalibrationWizard} should be generated, together with some documentation in pdf format inside the \textit{manual} directory.
|
|
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 264 KiB |
@ -1,135 +0,0 @@
|
|||||||
%!PS-Adobe-2.0 EPSF-2.0
|
|
||||||
%%BoundingBox: 0 0 567 550
|
|
||||||
%%Title: /import/exchange/home/msdetect/Projects/detcalMCS/article/spectrum_expl.eps: c1_n2
|
|
||||||
%%Creator: ROOT Version 5.13/02
|
|
||||||
%%CreationDate: Thu Apr 26 09:47:57 2007
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
80 dict begin
|
|
||||||
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
|
|
||||||
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
|
|
||||||
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
|
|
||||||
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
|
|
||||||
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
|
|
||||||
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
|
|
||||||
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
|
|
||||||
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
|
|
||||||
/mp {newpath /y exch def /x exch def} def
|
|
||||||
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
|
|
||||||
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
|
|
||||||
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
|
|
||||||
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
|
|
||||||
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
|
|
||||||
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
|
|
||||||
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
|
|
||||||
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
|
|
||||||
0 w3 neg d w3 neg 0 d cl s } def
|
|
||||||
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl fill gr} def
|
|
||||||
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl s gr} def
|
|
||||||
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
|
|
||||||
sub m w w d s} def
|
|
||||||
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
|
|
||||||
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
|
|
||||||
/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
|
|
||||||
/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
|
|
||||||
/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
|
|
||||||
{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
|
|
||||||
newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
|
|
||||||
/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
|
|
||||||
/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
|
|
||||||
/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
|
|
||||||
201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
|
|
||||||
212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
|
|
||||||
217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
|
|
||||||
221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
|
|
||||||
228 /Ocircumflex 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
|
|
||||||
237 /udieresis 238 /Udieresis 239 /aring 240 /odieresis 242 /Aring 243 /ydieresis
|
|
||||||
244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave
|
|
||||||
127 /atilde 128 /Atilde 129 /oacute 130 /Oacute 131 /iacute
|
|
||||||
132 /Iacute 133 /igrave 134 /Igrave 135 /otilde 136 /Otilde
|
|
||||||
137 /uacute 138 /Uacute] def
|
|
||||||
/Times-Roman /Times-Roman accvec ReEncode
|
|
||||||
/Times-Italic /Times-Italic accvec ReEncode
|
|
||||||
/Times-Bold /Times-Bold accvec ReEncode
|
|
||||||
/Times-BoldItalic /Times-BoldItalic accvec ReEncode
|
|
||||||
/Helvetica /Helvetica accvec ReEncode
|
|
||||||
/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
|
|
||||||
/Helvetica-Bold /Helvetica-Bold accvec ReEncode
|
|
||||||
/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
|
|
||||||
/Courier /Courier accvec ReEncode
|
|
||||||
/Courier-Oblique /Courier-Oblique accvec ReEncode
|
|
||||||
/Courier-Bold /Courier-Bold accvec ReEncode
|
|
||||||
/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
|
|
||||||
/oshow {gsave [] 0 sd true charpath stroke gr} def
|
|
||||||
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
|
|
||||||
text sw pop xs add /xs exch def} def
|
|
||||||
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
|
|
||||||
pop neg xs add /xs exch def} def
|
|
||||||
/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
|
|
||||||
69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
|
|
||||||
74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
|
|
||||||
79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
|
|
||||||
83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
|
|
||||||
88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
|
|
||||||
50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
|
|
||||||
55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin 102 /intersection
|
|
||||||
103 /union 104 /propersuperset 105 /reflexsuperset 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright
|
|
||||||
118 /arrowdbldown 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
|
|
||||||
/Symbol /Special accspe ReEncode
|
|
||||||
%%EndProlog
|
|
||||||
%%BeginSetup
|
|
||||||
%%EndSetup
|
|
||||||
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 6 lw 1 1 1 c 2268 2199 0 0 bf black 3 lw 1 1 1 c 1588 1539 340 330 bf black 1588 1539 340 330 bl 1 1 1 c 1588 1539 340 330 bf black 1588 1539 340 330 bl 9 lw 1 1 1 c black 348 469 m 619 X 16
|
|
||||||
1 d 48 X 8 1 d 15 X 4 1 d 4 X 6 1 d 3 X 4 1 d 3 X 4 1 d 4 1 d 3 1 d 3 X 2 1 d 3 1 d 3 1 d 3 1 d 3 1 d 2 1 d 2 1 d 3 1 d 2 1 d 2 1 d 3 2 d 2 1 d 2 1 d 2 1 d s 1126 492 m 13 11 d 3 3 d 12 15 d 4 5 d 11 18 d 5 10 d 9 22 d 6 17 d 9 27 d 7 25 d 8 32 d 8
|
|
||||||
35 d 8 40 d 8 43 d 8 49 d 8 51 d 9 62 d 7 53 d 11 85 d 5 42 d 16 134 d 15 134 d 12 92 d 4 35 d 10 68 d 6 42 d 7 42 d 6 30 d 3 13 d 6 23 d 5 17 d 5 13 d 5 10 d 6 5 d 5 1 d 5 -3 d 6 -8 d 5 -11 d 5 -17 d 6 -22 d 5 -20 d 6 -32 d 6 -40 d 3 -20 d 7 -50 d
|
|
||||||
9 -69 d 7 -55 d 9 -81 d 16 -145 d 16 -146 d 11 -100 d 5 -39 d 9 -71 d 7 -55 d 8 -57 d 8 -54 d 7 -47 d 8 -46 d 8 -39 d 8 -36 d 8 -32 d 8 -27 d 9 -27 d 7 -18 d 10 -22 d 6 -10 d 11 -18 d 5 -6 d 13 -13 d 3 -2 d 16 -11 d 15 -7 d 16 -4 d 16 -3 d 16 -1 d
|
|
||||||
16 -1 d 16 -1 d 127 X s 1904 330 m 16 X s 6 lw 340 330 m 1588 X s
|
|
||||||
gsave 1285 123
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 102.56 sf 0 0 m (Energy \(KeV\)) show gr 340 376 m -46 Y s 393 353 m -23 Y s 446 353 m -23 Y s 499 353 m -23 Y s 552 376 m -46 Y s 605 353 m -23 Y s 658 353 m -23 Y s 711 353 m -23 Y s 763 376 m -46 Y s 816
|
|
||||||
353 m -23 Y s 869 353 m -23 Y s 922 353 m -23 Y s 975 376 m -46 Y s 1028 353 m -23 Y s 1081 353 m -23 Y s 1134 353 m -23 Y s 1187 376 m -46 Y s 1240 353 m -23 Y s 1293 353 m -23 Y s 1346 353 m -23 Y s 1398 376 m -46 Y s 1451 353 m -23 Y s 1504 353
|
|
||||||
m -23 Y s 1557 353 m -23 Y s 1610 376 m -46 Y s 1663 353 m -23 Y s 1716 353 m -23 Y s 1769 353 m -23 Y s 1822 376 m -46 Y s 1822 376 m -46 Y s 1875 353 m -23 Y s 1928 353 m -23 Y s
|
|
||||||
gsave 316 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show gr
|
|
||||||
gsave 527 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show gr
|
|
||||||
gsave 738 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show gr
|
|
||||||
gsave 952 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show gr
|
|
||||||
gsave 1162 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show gr
|
|
||||||
gsave 1350 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show gr
|
|
||||||
gsave 1564 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show gr
|
|
||||||
gsave 1775 251
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show gr 340 330 m 1539 Y s
|
|
||||||
gsave 97 1450
|
|
||||||
t 90 r 0 0 m /Helvetica-Bold findfont 102.56 sf 0 0 m (Intensity) show gr 388 330 m -48 X s 364 400 m -24 X s 364 469 m -24 X s 364 539 m -24 X s 388 609 m -48 X s 364 679 m -24 X s 364 749 m -24 X s 364 818 m -24 X s 388 888 m -48 X s 364 958 m
|
|
||||||
-24 X s 364 1028 m -24 X s 364 1097 m -24 X s 388 1167 m -48 X s 364 1237 m -24 X s 364 1307 m -24 X s 364 1376 m -24 X s 388 1446 m -48 X s 364 1516 m -24 X s 364 1586 m -24 X s 364 1656 m -24 X s 388 1725 m -48 X s 388 1725 m -48 X s 364 1795 m
|
|
||||||
-24 X s 364 1865 m -24 X s
|
|
||||||
gsave 285 293
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show gr
|
|
||||||
gsave 194 573
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (200) show gr
|
|
||||||
gsave 194 852
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (400) show gr
|
|
||||||
gsave 194 1131
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (600) show gr
|
|
||||||
gsave 194 1410
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (800) show gr
|
|
||||||
gsave 145 1689
|
|
||||||
t 0 r 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (1000) show gr 3 lw 875 469 m 285 X 11 -1 d 10 X 11 -1 d 11 X 10 -1 d 11 -1 d 10 -1 d 9 -2 d 2 X 8 -1 d 3 -1 d 8 -2 d 2 X 8 -2 d 3 -1 d 7 -2 d 3 -1 d 8 -2 d 3 -1 d 7 -2 d 3 -2 d 8 -3 d 3 -1 d
|
|
||||||
8 -3 d 3 -1 d 8 -4 d 2 -1 d 9 -5 d 2 -1 d 9 -4 d 1 -1 d 11 -6 d 11 -6 d 10 -6 d -73 Y -518 X f 875 469 m 285 X 11 -1 d 10 X 11 -1 d 11 X 10 -1 d 11 -1 d 10 -1 d 9 -2 d 2 X 8 -1 d 3 -1 d 8 -2 d 2 X 8 -2 d 3 -1 d 7 -2 d 3 -1 d 8 -2 d 3 -1 d 7 -2 d 3
|
|
||||||
-2 d 8 -3 d 3 -1 d 8 -3 d 3 -1 d 8 -4 d 2 -1 d 9 -5 d 2 -1 d 9 -4 d 1 -1 d 11 -6 d 11 -6 d 10 -6 d s 1393 403 m 11 -6 d 10 -7 d 11 -6 d 10 -5 d 11 -6 d 9 -4 d 2 -1 d 8 -4 d 2 -1 d 8 -4 d 3 -1 d 8 -3 d 2 -1 d 8 -3 d 3 -1 d 8 -2 d 3 -1 d 7 -2 d 3 -1
|
|
||||||
d 8 -2 d 3 -1 d 8 -1 d 2 -1 d 9 -1 d 2 -1 d 10 -1 d 11 -1 d 11 -1 d 10 -1 d 11 -1 d 10 -1 d 32 X 11 -1 d 254 X -519 X f 1393 403 m 11 -6 d 10 -7 d 11 -6 d 10 -5 d 11 -6 d 9 -4 d 2 -1 d 8 -4 d 2 -1 d 8 -4 d 3 -1 d 8 -3 d 2 -1 d 8 -3 d 3 -1 d 8 -2 d
|
|
||||||
3 -1 d 7 -2 d 3 -1 d 8 -2 d 3 -1 d 8 -1 d 2 -1 d 9 -1 d 2 -1 d 10 -1 d 11 -1 d 11 -1 d 10 -1 d 11 -1 d 10 -1 d 32 X 11 -1 d 254 X s 1912 330 m 10 X -10 X f 1912 330 m 10 X s 6 lw 1335 1294 m 116 1 d s 3 lw 1451 1306 m 32 -11 d -31 -12 d f 6 lw 1451
|
|
||||||
1306 m 32 -11 d -31 -12 d -1 23 d cl s 3 lw 1335 1282 m -32 12 d 32 11 d f 6 lw 1335 1282 m -32 12 d 32 11 d -23 Y cl s
|
|
||||||
/xs 0 def (ENC) /Helvetica-Bold 82.6178 stwn gsave 1398 1139
|
|
||||||
t 0 r xs 2 div neg 0 t 0 0 m /Helvetica-Bold findfont 82.6178 sf 0 0 m (ENC) show gr
|
|
||||||
gr gr
|
|
||||||
showpage
|
|
||||||
end
|
|
||||||
%%EOF
|
|
@ -1,125 +0,0 @@
|
|||||||
%!PS-Adobe-2.0 EPSF-2.0
|
|
||||||
%%BoundingBox: 0 0 567 550
|
|
||||||
%%Title: /afs/psi.ch/project/mythen/mythen_datasheet/article/thr_scan_expl.eps: c1
|
|
||||||
%%Creator: ROOT Version 5.17/02
|
|
||||||
%%CreationDate: Mon Oct 27 10:29:18 2008
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
80 dict begin
|
|
||||||
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
|
|
||||||
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
|
|
||||||
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
|
|
||||||
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
|
|
||||||
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
|
|
||||||
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
|
|
||||||
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
|
|
||||||
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
|
|
||||||
/mp {newpath /y exch def /x exch def} def
|
|
||||||
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
|
|
||||||
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
|
|
||||||
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
|
|
||||||
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
|
|
||||||
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
|
|
||||||
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
|
|
||||||
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
|
|
||||||
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
|
|
||||||
0 w3 neg d w3 neg 0 d cl s } def
|
|
||||||
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl fill gr} def
|
|
||||||
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl s gr} def
|
|
||||||
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
|
|
||||||
sub m w w d s} def
|
|
||||||
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
|
|
||||||
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
|
|
||||||
/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
|
|
||||||
/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
|
|
||||||
/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
|
|
||||||
{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
|
|
||||||
newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
|
|
||||||
/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
|
|
||||||
/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
|
|
||||||
/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
|
|
||||||
201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
|
|
||||||
212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
|
|
||||||
217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
|
|
||||||
221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
|
|
||||||
228 /Ocircumflex 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
|
|
||||||
237 /udieresis 238 /Udieresis 239 /aring 240 /odieresis 242 /Aring 243 /ydieresis
|
|
||||||
244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave
|
|
||||||
127 /atilde 128 /Atilde 129 /oacute 130 /Oacute 131 /iacute
|
|
||||||
132 /Iacute 133 /igrave 134 /Igrave 135 /otilde 136 /Otilde
|
|
||||||
137 /uacute 138 /Uacute] def
|
|
||||||
/Times-Roman /Times-Roman accvec ReEncode
|
|
||||||
/Times-Italic /Times-Italic accvec ReEncode
|
|
||||||
/Times-Bold /Times-Bold accvec ReEncode
|
|
||||||
/Times-BoldItalic /Times-BoldItalic accvec ReEncode
|
|
||||||
/Helvetica /Helvetica accvec ReEncode
|
|
||||||
/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
|
|
||||||
/Helvetica-Bold /Helvetica-Bold accvec ReEncode
|
|
||||||
/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
|
|
||||||
/Courier /Courier accvec ReEncode
|
|
||||||
/Courier-Oblique /Courier-Oblique accvec ReEncode
|
|
||||||
/Courier-Bold /Courier-Bold accvec ReEncode
|
|
||||||
/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
|
|
||||||
/oshow {gsave [] 0 sd true charpath stroke gr} def
|
|
||||||
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
|
|
||||||
text sw pop xs add /xs exch def} def
|
|
||||||
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
|
|
||||||
pop neg xs add /xs exch def} def
|
|
||||||
/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
|
|
||||||
69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
|
|
||||||
74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
|
|
||||||
79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
|
|
||||||
83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
|
|
||||||
88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
|
|
||||||
50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
|
|
||||||
55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin 102 /intersection
|
|
||||||
103 /union 104 /propersuperset 105 /reflexsuperset 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright
|
|
||||||
118 /arrowdbldown 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
|
|
||||||
/Symbol /Special accspe ReEncode
|
|
||||||
%%EndProlog
|
|
||||||
%%BeginSetup
|
|
||||||
%%EndSetup
|
|
||||||
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 3 lw 1 1 1 c 2268 2199 0 0 bf black 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 1 1 1 c 1815 1761 339 319 bf black 1815 1761 339 319 bl 9 lw 0.95 0.95 0.95 c black 348 1996 m 18
|
|
||||||
-9 d 18 -9 d 19 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -8 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -8 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18
|
|
||||||
-9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18 -8 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 19 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d 18 -9 d s 1237 1558 m 18 -9 d 19 -9 d 18 -10 d 18 -10 d 18 -10 d 18 -12 d 18 -12 d 18 -15 d 19 -17 d 18 -20 d 18
|
|
||||||
-24 d 18 -29 d 18 -35 d 18 -41 d 19 -48 d 18 -55 d 18 -61 d 18 -67 d 18 -72 d 18 -75 d 18 -76 d 19 -74 d 18 -72 d 18 -67 d 18 -61 d 18 -54 d 18 -46 d 18 -38 d 19 -32 d 18 -24 d 18 -19 d 18 -14 d 18 -10 d 18 -7 d 18 -5 d 19 -4 d 18 -2 d 18 -1 d 18
|
|
||||||
-1 d 18 X 18 -1 d 146 X s 2127 319 m 18 X s 3 lw 339 319 m 1815 X s 339 372 m -53 Y s 392 345 m -26 Y s 446 345 m -26 Y s 499 345 m -26 Y s 553 372 m -53 Y s 606 345 m -26 Y s 659 345 m -26 Y s 713 345 m -26 Y s 766 372 m -53 Y s 819 345 m -26 Y s
|
|
||||||
873 345 m -26 Y s 926 345 m -26 Y s 980 372 m -53 Y s 1033 345 m -26 Y s 1086 345 m -26 Y s 1140 345 m -26 Y s 1193 372 m -53 Y s 1246 345 m -26 Y s 1300 345 m -26 Y s 1353 345 m -26 Y s 1407 372 m -53 Y s 1460 345 m -26 Y s 1513 345 m -26 Y s 1567
|
|
||||||
345 m -26 Y s 1620 372 m -53 Y s 1673 345 m -26 Y s 1727 345 m -26 Y s 1780 345 m -26 Y s 1834 372 m -53 Y s 1887 345 m -26 Y s 1940 345 m -26 Y s 1994 345 m -26 Y s 2047 372 m -53 Y s 2047 372 m -53 Y s 2100 345 m -26 Y s 2154 345 m -26 Y s
|
|
||||||
gsave 2268 2199 0 0 C 316 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 527 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 741 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 954 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1168 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1359 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1573 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1786 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 2000 239 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16) show NC gr 339 319 m 1761 Y s 393 319 m -54 X s 366 387 m -27 X s 366 456 m -27 X s 366 524 m -27 X s 393 592 m -54 X s 366 661 m -27 X s 366 729 m -27 X s 366
|
|
||||||
797 m -27 X s 393 865 m -54 X s 366 934 m -27 X s 366 1002 m -27 X s 366 1070 m -27 X s 393 1139 m -54 X s 366 1207 m -27 X s 366 1275 m -27 X s 366 1344 m -27 X s 393 1412 m -54 X s 366 1480 m -27 X s 366 1548 m -27 X s 366 1617 m -27 X s 393 1685
|
|
||||||
m -54 X s 366 1753 m -27 X s 366 1822 m -27 X s 366 1890 m -27 X s 393 1958 m -54 X s 393 1958 m -54 X s 366 2027 m -27 X s
|
|
||||||
gsave 2268 2199 0 0 C 285 282 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 556 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 829 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 1103 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 145 1376 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 1650 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 100 1923 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12000) show NC gr [ 4 8] 0 sd 6 lw 339 1370 m 1121 X s[ ] 0 sd 3 lw 0.95 0.95 0.95 c black 348 1685 m 889 X s 1237 1685 m 18 X 19 -1 d 18 X 18 -2 d 18 -1 d 18 -3 d 18
|
|
||||||
-5 d 18 -6 d 19 -10 d 18 -13 d 18 -19 d 18 -24 d 18 -32 d 18 -41 d 19 -49 d 18 -59 d 18 -69 d 18 -76 d 18 -84 d 18 -89 d 18 -92 d 19 -92 d 18 -89 d 18 -85 d 18 -78 d 18 -70 d 18 -61 d 18 -51 d 19 -42 d 18 -33 d 18 -26 d 18 -20 d 18 -14 d 18 -10 d
|
|
||||||
18 -7 d 19 -5 d 18 -3 d 18 -2 d 18 -1 d 18 -1 d 18 X 19 -1 d 127 X s 2127 319 m 18 X s[ 12 12] 0 sd 6 lw 339 1685 m 1281 X s 1620 1685 m -1366 Y s 1620 319 m 534 X s[ 4 8] 0 sd 977 319 m 1368 Y s
|
|
||||||
gsave 2268 2199 0 0 C 1695 333 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1630 362 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1054 333 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (t) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 989 362 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 439 1698 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 370 1726 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr [ ] 0 sd 1545 1480 m 43 X s 3 lw 1588 1499 m 32 -19 d -32 -18 d f 6 lw 1588 1499 m 32 -19 d -32 -18 d 37 Y cl s 3 lw 1545 1462 m -32 18 d 32 19 d f 6 lw
|
|
||||||
1545 1462 m -32 18 d 32 19 d -37 Y cl s
|
|
||||||
gsave 2268 2199 0 0 C 1501 1521 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (ENC) show NC gr 926 1403 m 250 Y s 3 lw 908 1653 m 18 32 d 18 -32 d f 6 lw 908 1653 m 18 32 d 18 -32 d -36 X cl s 3 lw 944 1403 m -18 -32 d -18 32 d f 6 lw 944 1403 m
|
|
||||||
-18 -32 d -18 32 d 36 X cl s
|
|
||||||
gsave 2268 2199 0 0 C 855 1467 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (S) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 786 1496 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (N) show NC gr
|
|
||||||
gr gr
|
|
||||||
showpage
|
|
||||||
end
|
|
||||||
%%EOF
|
|
@ -1,88 +0,0 @@
|
|||||||
%!PS-Adobe-2.0 EPSF-2.0
|
|
||||||
%%BoundingBox: 0 0 567 550
|
|
||||||
%%Title: /afs/psi.ch/project/mythen/mythen_datasheet/article/thr_scan_fluo.eps: c1
|
|
||||||
%%Creator: ROOT Version 5.20/00
|
|
||||||
%%CreationDate: Wed Dec 10 17:16:38 2008
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
80 dict begin
|
|
||||||
/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
|
|
||||||
/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def
|
|
||||||
/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
|
|
||||||
/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
|
|
||||||
/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
|
|
||||||
/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
|
|
||||||
/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
|
|
||||||
/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def
|
|
||||||
/mp {newpath /y exch def /x exch def} def
|
|
||||||
/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
|
|
||||||
/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
|
|
||||||
/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
|
|
||||||
/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
|
|
||||||
/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
|
|
||||||
/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
|
|
||||||
/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
|
|
||||||
/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d
|
|
||||||
0 w3 neg d w3 neg 0 d cl s } def
|
|
||||||
/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl fill gr} def
|
|
||||||
/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
|
|
||||||
4 {side} repeat cl s gr} def
|
|
||||||
/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2
|
|
||||||
sub m w w d s} def
|
|
||||||
/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
|
|
||||||
/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
|
|
||||||
/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica
|
|
||||||
/Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi
|
|
||||||
/Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold
|
|
||||||
/NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
|
|
||||||
/oshow {gsave [] 0 sd true charpath stroke gr} def
|
|
||||||
/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
|
|
||||||
text sw pop xs add /xs exch def} def
|
|
||||||
/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw
|
|
||||||
pop neg xs add /xs exch def} def
|
|
||||||
%%EndProlog
|
|
||||||
%%BeginSetup
|
|
||||||
%%EndSetup
|
|
||||||
newpath gsave .25 .25 scale gsave 0 0 t black[ ] 0 sd 3 lw 1 1 1 c 2268 2199 0 0 bf black 1 1 1 c 1814 1761 345 330 bf black 1814 1761 345 330 bl 1 1 1 c 1814 1761 345 330 bf black 1814 1761 345 330 bl 9 lw 0.95 0.95 0.95 c black 354 1681 m 18
|
|
||||||
-4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -3 d 18 -3 d 18 -4 d 19 -3 d 18 -4 d 18 -3 d 18 -4 d 18 -4 d 18 -4 d 19
|
|
||||||
-5 d 18 -8 d 18 -10 d 18 -14 d 18 -19 d 18 -24 d 18 -30 d 19 -33 d 18 -34 d 18 -32 d 18 -29 d 18 -24 d 18 -18 d 18 -13 d 19 -9 d 18 -6 d 18 -5 d 18 -3 d s 1243 1257 m 18 -3 d 18 -3 d 18 -3 d 19 -2 d 18 -3 d 18 -3 d 18 -4 d 18 -4 d 18 -7 d 18 -10 d
|
|
||||||
19 -18 d 18 -29 d 18 -43 d 18 -60 d 18 -79 d 18 -94 d 19 -104 d 18 -104 d 18 -97 d 18 -82 d 18 -63 d 18 -46 d 18 -29 d 19 -18 d 18 -10 d 18 -5 d 18 -2 d 18 -1 d 18 X 18 -1 d 345 X s 2132 330 m 18 X s 3 lw 345 330 m 1814 X s
|
|
||||||
gsave 2268 2199 0 0 C 1658 162 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Energy \(keV\)) show NC gr 345 383 m -53 Y s 405 357 m -27 Y s 466 357 m -27 Y s 526 357 m -27 Y s 587 357 m -27 Y s 647 383 m -53 Y s 708 357 m -27 Y s 768 357 m -27
|
|
||||||
Y s 829 357 m -27 Y s 889 357 m -27 Y s 950 383 m -53 Y s 1010 357 m -27 Y s 1071 357 m -27 Y s 1131 357 m -27 Y s 1192 357 m -27 Y s 1252 383 m -53 Y s 1313 357 m -27 Y s 1373 357 m -27 Y s 1434 357 m -27 Y s 1494 357 m -27 Y s 1555 383 m -53 Y s
|
|
||||||
1615 357 m -27 Y s 1676 357 m -27 Y s 1736 357 m -27 Y s 1797 357 m -27 Y s 1857 383 m -53 Y s 1917 357 m -27 Y s 1978 357 m -27 Y s 2038 357 m -27 Y s 2099 357 m -27 Y s 2159 383 m -53 Y s
|
|
||||||
gsave 2268 2199 0 0 C 322 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 624 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (5) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 903 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1205 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (15) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1507 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1809 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (25) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 2114 251 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (30) show NC gr 345 330 m 1761 Y s
|
|
||||||
gsave 2268 2199 0 0 C 105 1809 t 90 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (Counts) show NC gr 399 330 m -54 X s 372 374 m -27 X s 372 419 m -27 X s 372 463 m -27 X s 399 507 m -54 X s 372 551 m -27 X s 372 595 m -27 X s 372 639 m -27 X s
|
|
||||||
399 683 m -54 X s 372 727 m -27 X s 372 771 m -27 X s 372 815 m -27 X s 399 859 m -54 X s 372 903 m -27 X s 372 947 m -27 X s 372 991 m -27 X s 399 1035 m -54 X s 372 1079 m -27 X s 372 1123 m -27 X s 372 1167 m -27 X s 399 1211 m -54 X s 372 1255
|
|
||||||
m -27 X s 372 1299 m -27 X s 372 1343 m -27 X s 399 1387 m -54 X s 372 1431 m -27 X s 372 1475 m -27 X s 372 1519 m -27 X s 399 1563 m -54 X s 372 1607 m -27 X s 372 1651 m -27 X s 372 1695 m -27 X s 399 1739 m -54 X s 372 1783 m -27 X s 372 1827 m
|
|
||||||
-27 X s 372 1871 m -27 X s 399 1915 m -54 X s 372 1959 m -27 X s 372 2003 m -27 X s 372 2047 m -27 X s 399 2091 m -54 X s
|
|
||||||
gsave 2268 2199 0 0 C 291 293 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 151 470 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 151 647 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 151 823 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 151 1000 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 105 1174 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 105 1350 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (12000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 105 1527 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (14000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 105 1704 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (16000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 105 1880 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (18000) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 105 2054 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20000) show NC gr [ 12 12] 0 sd 6 lw 1555 330 m 441 Y s 1071 330 m 1083 Y s[ 4 8] 0 sd 1313 330 m 916 Y s
|
|
||||||
gsave 2268 2199 0 0 C 1624 752 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (0) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1558 781 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1140 1396 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (f) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1074 1424 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1336 1262 t 0 r /Helvetica-Bold findfont 68.3734 sf 0 0 m (t) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1271 1291 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (E) show NC gr [ ] 0 sd 1071 595 m 242 X s 1281 613 m 32 -18 d -32 -19 d s 1102 576 m -31 19 d 31 18 d s 1313 595 m 242 X s 1523 613 m 32 -18 d -32 -19 d s 1344 576 m
|
|
||||||
-31 19 d 31 18 d s
|
|
||||||
gsave 2268 2199 0 0 C 1159 613 t 0 r /Symbol findfont 102.56 sf 0 0 m (S) show NC gr
|
|
||||||
gsave 2268 2199 0 0 C 1402 613 t 0 r /Symbol findfont 102.56 sf 0 0 m (S) show NC gr
|
|
||||||
gr gr
|
|
||||||
showpage
|
|
||||||
end
|
|
||||||
%%EOF
|
|
Before Width: | Height: | Size: 432 KiB |
@ -1,452 +0,0 @@
|
|||||||
%!PS-Adobe-3.0 EPSF-3.0
|
|
||||||
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
|
|
||||||
%%Title: Client2.eps
|
|
||||||
%%CreationDate: Fri Aug 5 09:34:34 2016
|
|
||||||
%%DocumentData: Clean7Bit
|
|
||||||
%%LanguageLevel: 2
|
|
||||||
%%Pages: 1
|
|
||||||
%%BoundingBox: 14 14 460 303
|
|
||||||
%%EndComments
|
|
||||||
%%BeginProlog
|
|
||||||
% Use own dictionary to avoid conflicts
|
|
||||||
10 dict begin
|
|
||||||
%%EndProlog
|
|
||||||
%%Page: 1 1
|
|
||||||
% Translate for offset
|
|
||||||
14.173228346456694 14.173228346456694 translate
|
|
||||||
% Translate to begin of first scanline
|
|
||||||
0 287.95876879026486 translate
|
|
||||||
445.43622047244094 -287.95876879026486 scale
|
|
||||||
% Image geometry
|
|
||||||
594 384 8
|
|
||||||
% Transformation matrix
|
|
||||||
[ 594 0 0 384 0 0 ]
|
|
||||||
currentfile /ASCII85Decode filter /RunLengthDecode filter
|
|
||||||
%%BeginData: 31939 ASCII Bytes
|
|
||||||
image
|
|
||||||
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
|
|
||||||
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
|
|
||||||
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
|
|
||||||
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
|
|
||||||
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqR
|
|
||||||
JcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcC<$JcDqRJcC<$JcC<$YQ'1RJcFg2"oFoZ
|
|
||||||
'H[e`!!&qHrrg8^"TZ_ss+p]+s+143rsIU:$Bk#\r3@:BT'?7Um#161!^$J+JcCQ+JcC<$k5PPL
|
|
||||||
*s9=VrrV*lQ0SANrCq4srrPOfbCT\Ls+13$s5s=_A,p6<rrJ.=li.(cD?+VArrPOfbCT\Ls+13$
|
|
||||||
s6'Can-/m4qYpT\OT,8.dog*Q17\@DlC:5@\L@YYo`+r^/c["e?Mh?@IE<cFaoBgm@8&GHrr2p)
|
|
||||||
6NG=0s7']HGSir%s,d83s+145rr]\0"8VZj&]P=#s8T"tD#_a\!).7:=TF'QrtM(*Du]j75QF_c
|
|
||||||
=obPA%`\PKVuUZ5rsD*nbQ%TLFoVKm7"PB"s+13$s6'C`Q2hTlrrW-I:]:;$9E;p/U]>cAs7-1T
|
|
||||||
rr3%l!,ql:#c[k[qu>gV-r9gA$VUQ:s8PFdbQ%S_BE%o2N.M"js+13$s6'C`OoQ'errU=CJ,TBO
|
|
||||||
U]>$,VZ<(_rrEQ^rr3%l!,ql:!j;TErr3&B!.XtI%AWu9s8PFdbQ%T1!,q@Xs,R,1s+145rr]A'
|
|
||||||
!;-$c!hfUGrVm)L!'pR^!13]b!=pj_rrSemDuTb<Y5iYCrrSkoK)P][d/ZH3s$He0s8Ual!#D4+
|
|
||||||
JcCi3JcC<$kPkYH!!'\+rrSnpBDqi7huH:IVZ<(_rrEW`rr3%l!,ql:!j;TFrr3%o!,)91#N,SP
|
|
||||||
s8PFdbPqMFls]tq;>YqEOoL"4UAkDr^0XF/rlb<C8H;rgrrUFF0`D"UciAFmVZ<(_rrEW`rr3%l
|
|
||||||
!,ql:!j;TFrr3&E!&4BO&C:E(s8PFdbQ%Ups8U@s!2G,FOoL"4V#L_iO\Ul&qjL6nbl7dr$NRI/
|
|
||||||
rs$`1s8FVNfDbdSRKVFGVZ<(_rrET_rr3%o!+l00!j;TFrr3*"/caN&rsG1th#ICA!6bEBC&\,6
|
|
||||||
i;e[bs,m>4s/,f!c"C:lrr)j!on6Dnc2Sj&(Bep8rr(>d>4hjpbm[5@s6qD"s8S\kQ2gm]"Y0NO
|
|
||||||
#fludcCrI\!,DK4#L*ZLqZ$%4PQ(Ri3<7)!s!#Yds5+"2JcCl4JcD_L"SSH`IH1,&#jZJ@i5/As
|
|
||||||
[eS>O#k*O+$4%\O\c2R-*nF1I@TBc7s2-\o0sg+[!!7uOs8HO4*hT#T!"t@Grr3\`;)_raZiC'P
|
|
||||||
Gldt9T`6)BBmimiJcCi3JcDeN"PRrrWquDg$MT,nHf<nO=(&B4JcF7"$2rQ$d,!O:mdBXss4I@&
|
|
||||||
s/uA)r2s%<f(8nDWD9f!r;QogQqiS2JcFI(/)R@L='0j+Lk0boE+W]h<EWX.=^G*2?<(08<E`^/
|
|
||||||
>%VA^GB\FjL2^q,kCN[,s+13SrrhJ99q1eHrr_=tJH#<C"2.Zgon!/%rs.YiHrjBpXl8@@$MWuV
|
|
||||||
k*/(B(IgjkJcGECJcE(V"TH,AA]aNC"5[a$f(8nD^.P.!JcFs6#jf'R>#oX>gA^%1$,Bjl)aBJT
|
|
||||||
s64HQs7H>Bs3L]Qn__X,]=Z,-eD9EboD\s_O\Ul&o)AgUBP6/jrr`4h;VH^%mf*R`^l)K"BqEcN
|
|
||||||
hu=/3BI=]VKB`F9l`"AWKn99rs+14$s!-p5Jn%nc=D2u<RAQ[>Lkp:o@9Qi9>$,O'Z,thbp<I;U
|
|
||||||
\c27$"ms!]<G'eJrr_IiOoBq3p&><la-0q5A!Y:5hZ"2AFY+OcGM`B"pUkZ:2E=ibG_,nes+14'
|
|
||||||
rs%eO<F_uXp$Mc!lbfQZH#[.B9j(Y3>?,!0>?+[(?r^3.=(muEqrn%]V,cfkrrV3]N5kl'qp1aE
|
|
||||||
<aUm)o\KN^k^kW1-u761s8C6#9K+k%M9Z#!dWg?Co`'LBg]%E8C,UkFZMt!\9ZcAq$ZZ4I%2&^B%
|
|
||||||
M8gD$iU)/qk$4i*tA2L$`F$-6N@**-PJ%NhYdBdMZKVs&HDf0LTWuE!#m:!/90P$rs8STU2F"9L
|
|
||||||
:cp0rs&"S4WG\R_>aH?iLEt02aMStp\b$ldWg?Co`'LBh#@SN<SI8-=Oj_W!qfoujo5^&8a-3S-
|
|
||||||
NM'aqkF>ortaHF$Bk#\r3@:BT)\ic!s$gMq5+T-\c)OA0gPd=H2nubs8Vir!7UuDV@<jBi;X&>W
|
|
||||||
c_BFJ$\@nrs&4g73!FMZMsk0n?6Oi2EYKJlM1A[dWg?Co`'LBh>[PBJ,]HI"7'iBla-Tmrd9Oar
|
|
||||||
rHN^rr3$I!5ng9#"8@glQ65Er;QiV':&Rs!Y,4^rr3Fn!$M:@s4.1=s8RrV0)beO%KP,[rr\Pe+
|
|
||||||
TCO'#N`7>=B9XIi7e2DrMra:*D<1)s8Vr3I76%R;O,u.rrLPmJcGBBJcFU,!pq?#qu6cK=H*'_r
|
|
||||||
rW16IHUV1Vu?Vs-NM'`rroP#s'u+AqYpSVN;ihY%fk5\rsdW]!9=+ZI0K$<s,-k1rVlp0!8%5M"
|
|
||||||
5*YSj6Q^Nm'q[O<cOtirn7;U\Q^3s6'_-Brs7,9:,b+$K?*o[rrLPmJcGBBJcFR+!_l>5qYpW+:
|
|
||||||
9M&*"1_*h<oX,\-NM'^rr_`p!64m8!U5^FrrN]2fDbdTf)Pg;s8F6<rr3%X!&+<N!Y5:_rr3)P!
|
|
||||||
!)BTrs822Md9CuT$mPhrs$VX,oen#li-nikFu6C2F)/foBlPYdWg?Co`'LBh>[R\o380irr`.`<
|
|
||||||
6i)T"iaQ!pA\7SrrOPJ_u0N:[K$F*p&>((!8%5M#E8^Js8U1@W;ceuMZ>F/rrN]2fDbdON;u38r
|
|
||||||
s8A>P@7O&QHK$Trs%(p.N:'hir8r`o<iI$2EG-<kNW!IdWg?Co`'LBh>[X^s8I[fp\Omlmr`=+^
|
|
||||||
AeJb=+9W<s7\V*j8T0.!5na7!gWg"o`#@2!8%8BRL'kbs8QsEp&=smMZ>F/rs0,8fDkH2#oVFir
|
|
||||||
t=a2-5oNS=^#!9Dh!h?YJ8E@n)OEPjF/g&.W<l:rs8PCK1@jZ:63odrrLPmJcGBBJcFR+!*]C%!
|
|
||||||
l[jiq>UQO?%hpgrr_.fF6ic("7'Q?n)aQN-NM'^rrS>`&G5u2%fd[t*&rE6s8Vs4>Q+R'MZ>F/r
|
|
||||||
s'&7+!hmdIdH_,&o$i.>B#:eZ,4W0agnC=Lj3T8r)j>7EIj7GZGP&Lo(W.gm>3kC-"P'prs7>D;
|
|
||||||
E-R'IDPd>rrLPmJcGBBJcFR+!*]@$!pWa^q#:H2:T"-2rr_J&AE!=`"3sT1rTF1^-NM'^rr]A'!
|
|
||||||
;,sa!Y5:_qYpW.!4De*!fI%3rVlp0!8$]>/nsfYqrcD@V3-.;=BJ^/??;!s[)q;"s7b^.a1%t5L
|
|
||||||
Nd?5=]ed/=_)SD*$JFnrVm/gW+%kI5%q.hhZ!W)G_,nes+14+rr?7#rr`7[@IX*m"9"cfa3">`m
|
|
||||||
s/-fp&>-nV+SbkrrOPJ_u0N:jo>Cop&>((!8%)I!al]<rVlqW!&+<N!Y5:_n,EH'm992_'D^_8\
|
|
||||||
"et.@9?Z9=(-?6U:8G/q#13qqiF$9qu6U$pUYK62`Xs0iS+;4dWg?Co`'LBh>[IYqYpWE9>UE'"
|
|
||||||
7pnLiQ_B)p5;klnc&^_HXGq#rrOPJ_u'H88H;rerrN]2fDGRLp'tg7rrS)Y0E(nP%fk5MrsEu/>
|
|
||||||
5u<<C422=c11fOp>O0$TSmkt=BA:N9<),trQU0k2E+<ecMcAp!Rc4Ds7H>Bs5!\T=S_t!pN(QQq
|
|
||||||
#:HT@XRdprr`.f:Uf`k"5@%5q<\+_-31p[rr^g[!3uG$!R6c+rrNZ1f),IKX8p09rrS&X0)beO%
|
|
||||||
KP)KrsF#0>5tG+mb5^ZCZtd,dViXms&rkm2FDZ#pXB-CdWg?Co`'LBh>[IXp\t<09>pT)"3490r
|
|
||||||
RLoNq3F[OrTaC`ZomaU"9'#8Zhj\5_\WH!gA_'#EE`#7s7ZTqa8>l<;BGf7rs<rN*<-!<pB(E9n
|
|
||||||
,E`>iEH8XW;Q\qfmi5c#h!XHs8Q8:U$L&)!Rc4Ds7H>Bs5!\T>5%suolY3Cq#:HqVGFtYrr]l*X
|
|
||||||
SqGa"8J0V548FTVHEm!-\:OZrt4^T2$sU1;n;o-s0"ll!&BB(rr3&h#Bp(G%D-ou!!$&YY=8Kl1
|
|
||||||
5PYorsF#0>5uod>?Y3(R-=PTdVjp@s&a")cMmpnG_,nes+14+rr?7$rrDrlrrUA:Z1n8#p4Q`+g
|
|
||||||
]%BFAUsUArrr%S:p9k%VuHgCiEG1>#L[OGs8Q8:nBV%7dWg?Co`'LBh>[IYrr3&r;:G@@"8e$[h
|
|
||||||
Y7$Pk%Jo+hZ!Yq9@E,*"7UtA\GlL.>,VB%Gi;iars-tjL]@BXC%0FJ!Rc4Ds7H>Bs5!\T>5eI&n
|
|
||||||
5R*rrr_:gJbJj<"3sZ,qr.PV]O1F!rr_S7<l4e7!G:o$rrRH(>2]DcdW'j<s&s.+cMmpnG_,nes
|
|
||||||
+14+rr?7#rrUt?S+lpa]hPg,rr`7t8@RXZ!n'sAm/I1MF'Hf`rrHj'W;cpDiEG1>#L[g@s8Q8:n
|
|
||||||
BV%7dWg?Co`'LBh>[IYr;Qo3S;MFcq#:HmN*+X)rr_tJ<7U.2!p*#CmJd:GCgkcerrHj'W;cpDi
|
|
||||||
EG1>#L[g@s8Q8:nBV%7dWg?Co`'LBh>[IYr;Qqk]Do9:l1b2[lY^V+p\t?XAo-etrrW$mipQgKf
|
|
||||||
OeaLpAY/8j/DtZGi;Z\rs-trGlReIC%0FJ!Rc4Ds7H>Bs5!\T>5\C)IbFc$hFk`Zrr^SEN;*)H"
|
|
||||||
3s`%q<S%]PHaNU"4:LniUm-NGi>V$!dN[-i;X&1GBj/f=D@9MrrLPmJcGBBJcFR+!*9$t!FY^%r
|
|
||||||
r`"6JG]'?"1M!trV-<nY"5__rrVI]rpg!ja]`iMo)A`8iTL4@T\obMkIKdU#'f*1s8W)tjSoJ5G
|
|
||||||
Bj/f>&!KOrrLPmJcGBBJcFR+!*]=#!*K-u!jbYVpAY6nUJ.ufrr`(U:sSS1!rQ-To)Ag-<IO6'r
|
|
||||||
rIc&kl1[I)W1Pri=iccrs3l.>6"X%X3:%qrs-trGlReIC%0FJ!Rc4Ds7H>Bs5!\T>5\C#=Si%"l
|
|
||||||
!0;JpAY6jOAWsjrr_S'B'/[a!H,78rr]]-L%4U2!Jf+frrSC7>2T>^iH/D:l2M3EdTZ\NqkpfC_
|
|
||||||
5Ol;p$;V_dX,p4s&s.+cMmpnG_,nes+14+rr?7#rr?3srrT,oe+N_Cnq'l[p\t?G<.su<s8SDXr
|
|
||||||
ri;':65)7rrIo'lMgsMJH&g1rrh;*qd-hursjh4>6"X%qu$*TqYf3]q!A"cdXQ!2s&s.+cMmpnG
|
|
||||||
_,nes+14+rr?7#rr?3rrr_V"H1pq2"7UkBa7oT9[n*Cqq#:AcFS>_;r2!)Tq!.k[OiQef"I"B9s
|
|
||||||
'"=["lX_+qd-i!rrRu(>5/$slKeHTdXQ!2s&s.+cMmpnG_,nes+14+rr?7#rr?3prrU&2Z1S%um
|
|
||||||
se<Kq#:HnPt]6qrr`%7MuNMO"SnQ]UAO0S!LCXirrJ=6rr2t%hu<o>GlRg@?FfG&!f,3-i;X&1I
|
|
||||||
qer_=D@9MrrLPmJcGBBJcFR+!*]@$!V'gprr`+V<nR'E"S7OI[/Tn$"7L>=k5PA^a\BMErri%Y:
|
|
||||||
9+9TrrJG'mJd3NJGoKJ>2T>\iHYA%!rH<7mJd6CdTYT/#L\*9s8Q59nBV%7dWg?Co`'LBh>[IYr
|
|
||||||
Vlo[F7T>5k%Jo+o`#'fP"hYGq>UZR?&Q^'GjtP/"S.CF[/T.d!M?mirrJ=6r;Qb#hu<`9Gl@XDq
|
|
||||||
d-i$rrRu(>2]DcdXQ!2s&s.+cMmpnG_,nes+14+rr?7$rrM)'nG`U5<J^>?rri4t9oec?rr_4@F
|
|
||||||
7K)+"7:Y<^>](mV6o^k!L&'2rr?6[rrM)'r;Qiq?FfP)!f,3-i;X&1Iqer_>&!KOrrLPmVuHkf,
|
|
||||||
V8W:s+14,rrMe$rVloQI.%":\k\Lco`#'n]2s.6rr3,pKN`*KqYpZ^GZ_uCrrJt'nG`NQJGT9G>
|
|
||||||
2T>\iHY8"!rH<7nG`QFdTYT/#L\91s8Q8:nBV%7dWkNd$EZu%!#7%-+A\U&]`/)o"q0eGs+14,r
|
|
||||||
rMV'rVloHL[G*Erif+aq=FUmeS/O<X\Z_3GiAQ"!ln*^h>[MYWq$)iPCWK/!*\:[!TA;"rrW((\
|
|
||||||
af\$LXKAars-u->6"V+C%0FJ!Rc5drsJW.!8%8Nk(<pY]^l('m#0-g!TN7hs1nX:kc&%Bf`)!9Y
|
|
||||||
kJ)&kc&%Bs6h3ap#l>UhQd([!Ush%rrLQ'li.+eY"b#MoD]'WD+=I's*3N"rrKC$h#@D^V=OWeP
|
|
||||||
CWH.!*\:[!TA;!rrW((\aob%LXK5]rs-u->6"V+C%0FJ!Rc5crrNf5hu3QWaUA<bo`#!k9lHO$q
|
|
||||||
#:NpT0j;7%K6>-Vpt_L`,l._bPV;GY!W0h)^c:MESgZo"oFoZ'H[e`!!&qkrrU#Fo_8@l`,l._b
|
|
||||||
Q$T,$gd$U"e^/?s6sb$rrLQ'kl1ao<.=*(rrLQ'rr3"DiV`]Wi_&@grrKL'oD\iTJG9'D>2T>\i
|
|
||||||
HY.t!rH<7oD\lIdTYT/#L\B2s8QD;nBV%7dWkHb!YYRkr;Qkh!$:q/rr`4;!,p*]!W)]As7u[%h
|
|
||||||
Co;"oDe`o)uuSprrMJEm/I,L!6b6=(AIt3e,T6@%10TFs5#F:P4S_OZ5`k9q#:E062:*P#!;n/s
|
|
||||||
8V*@l2LeNMuN_ZQ[Ji&C&S&4dYHub"3Fkaf_5=GdYIi%!I<JurrI)Cg]%;eSFlg^PCWB,!*\:[!
|
|
||||||
TA:trrW((\b,n'LXKAars-u->6"V:A+7eD!Rc5crrNi6hu*Knq\]C7s8VtQ??J8Cp](8a/c["e?
|
|
||||||
MfRcFZF42qYq'&]3]p-,nA&s``G/6=m,ea"l<Zi8NF<[rt`UU3>5QYs89QB'ANQ)+TORPs8RlTK
|
|
||||||
`:u]``G/6=m,h^]3]p-,nA&cs8)`tlQ65Er;QiV':%k_!rYi3m/I,S!6b3<!Y,4^rr34h!$M:,*
|
|
||||||
s9=VrrV*lQ21F]j;-A=rrPOfbNAg+rCq50rri<^Xmg''rrM#&jSoA@E`K@Bq>UKOGlI^DLXQ,#!
|
|
||||||
LCXXrrL$'p&>&VJG&pB>2T>\iHY(r!rH<7p&>)KdTYT/#L\B2s8QeCnBV%7dWkHb!YYRkqu7%0!
|
|
||||||
,_c9FpIjCirF`2rsPG!Du]i\#PnD[!/(.J/#GQ3;d!9(WOGOps3Lj"qu>"bcN!l!!m^hT9DAJ5"
|
|
||||||
"jDqT*PGOs8TD*>lOa;ju<;>s0kYqs3Lj"qkcUY;d!9(WUKl`rrQ^2B);N.Nf<<("9!*;Ds[K*6
|
|
||||||
NG=*rrN]2fDbdSf`2$4A,p6<rrJ.=q>UIp;"FVf6NG=/rrMunm/I1dD?+VRrr]/5iG&8j!TA:_r
|
|
||||||
rht]:P.U'rrM)'rr3"Sdes+GQG_JW!Q15srrJ=6o`"nihh_;Wp&>*j?Ffe0!fb6(i;X&1LKXZWB
|
|
||||||
k-YXrrLPmp&>(,!8m\R$\&.Qs8P4fr;Zd(7fNDqT)`g0s#gYcs8NEqq>U`#!&FHOk4p"5rr3-e!
|
|
||||||
4MhYJH#QPPQ8>l*5VXS(-hl.s8ObQg].<P-k#VGs,NcPs8!_Orr3<j!4Mp-!&FHOk5OiLqu6cf"
|
|
||||||
ou[>rrMAGrr4@p=^auZSGrQRS3s9d.0NN?s8SWB!$Fp?]3]p-,nA&sdog*Q17\@BrrPOfbPD/>%
|
|
||||||
fk5\rs%'T!8[n[`qo]9l&bcA!nI@Dr;QrW@9?)]\GcF46NG=-]k.r4rr4"Y=#gpskPsh;6`IUF"
|
|
||||||
B"gks.(bB+A6&@s7$/8C&S&4jE0;Z"O(Uc[/0e%!TA;&rrIo'r;Qe`_qY1lb)Q/q!L&'*rrCg1b
|
|
||||||
Q-_rrrW((\bH+*QGZnars-u-=o\M9A+7eD!Rc5crrNi6hu!E]JcJ^Ks5VW/s3([/rr3@u!,qo;j
|
|
||||||
4+,/bQ^0)rrTA(ErQ(?]`:V&:B`X(QGrpCrVm#js1JD'r_EbW-^Of41B?2/rsOngScA^Ro`+s)!
|
|
||||||
(d)b"u[ips/uECli6k^"1A13q=ah#`X^#gs/5p6s34RE9Pq.>!.t4M';#8Cs/&$];d!9(WQ#Ffs
|
|
||||||
8T"tD#OA86NG=*rrN]2fDbdSN;u2O!!E&errRQJdf'1Ncl^R5r\=Q#rr3m(!6`Z[#QWWZs0kYqs
|
|
||||||
3Lj"qor.A9Pq.>!.t4M!hTI2r;QgJ*bkTQ!UsgZrs/%(9@s4DiHYA%!Jf,$rrJG'g]%<&L\UlMP
|
|
||||||
CUFJ!rH<7q#:D]_cl!u#L\B2s8QeCnBV%7dWkHb!YYRkqu6_3!-A/>"oG*=ZO&_mrrSemDuTb?q
|
|
||||||
kSDA#s7t_!j;TFrr3%^!9sC\!g<W6qu6_[!9s=Z!]'i2rr3/i#Wr(6AcD]2OT=YBrrTA(F6il'r
|
|
||||||
rSJd'DDG-r?tJ?rsML#_>g;2HiO-:!C-S`%A*W=s8T)!1Ah+6r$YA>rrPjo_>aH96NG=*rsK>;f
|
|
||||||
DkH2#oVE^!#+l%!^?\Urr3&u/qEs$!gE\srr3?n!6bEB0EBl-qAd?NrsM'l[f<-'HiO-:!C-S`!
|
|
||||||
hTI2r;Qgk!+>d*!UsgYrrIB'rr3#XGlI^DLXQ,#!LCXXrrLQ'q>UJZJA(saqd-i/rrSM(>2]Dcd
|
|
||||||
YD$+s(Q!4cMmpnGkM(<'*-qersLI[\,ZK\/Xub>$Tn@f$_IE;s8U_'S,WEq48JmXY5iYCrrS)Y`
|
|
||||||
V]Z:M#b$^rrS)Y`VKN81B?2.rrc[/fQ,%3rrS)Y`VTT9Y5iY0s82ftOoQ'errU=CJ,TBOU]>$,V
|
|
||||||
Z<(_rrEQ^rr34q!,qo;Y5iVBrrU=CJ,TBKU]>$+rrPOfbPD/G%fd[t*&rE6s,m?nnG`P0!ri3!!
|
|
||||||
lb5YrVllfrVm6m!6bEB1B?20]`:V&:Bi^)QN*i_Qi@!c%57_\!hTI2r;Qh)!*T:#!W?6XrrIB'r
|
|
||||||
r3#XGlI^DLXQ,#!LCXXrrLf&qYpS[J@kg_qd-i0rrSM(>2]DcdYD$+s)MH8cMmpnGkM(<'*-qfr
|
|
||||||
s-UF-iF#?*^]l+!=M!grs#(qDu]VS6N6uc$Tn1a!j;TFrr3%r!-.r:"0/3uAGuN2rlLu:EW#h?W
|
|
||||||
rN)T!8IJP"NCF_62pl`!i5m:r;Qo"s/uEDli6k^"0DP'o_8@eT`B]Crs$jN5l[_^Qi@!c%kmq^#
|
|
||||||
G2!7s8T8&F8l1@T`B]CrrURJ5lUcb6NG=*rrN]2fDGRMXT/@nnc&V%#6"Q'P5s,-rsM0obQ%Su!
|
|
||||||
8IO9!9s@[!iH$brr3!00E1tQT)`g-rrQa3;uHXq>29,YGiAZ%!TA;&rrIo'r;Qe`_qY1liHY8"!
|
|
||||||
L&&ErrW((\blC.QGZnars-u->6"VI?1?/>!Rc5crrNf5hu3Qal6lhRs8U=D9`P.h"ZlY_$_dW4s
|
|
||||||
31O;s8Vp!3r/dWY5iYCrr_Bc#0-ZB%\]3S#6M42s8IhljoYh-rr31rQN-t?!8IJP"9'kTMuEYXj
|
|
||||||
oYh-rr3.qQN+,gF6il'rr_B`!5/(+!ho[-rVm)[!(['e!13]b!=pj_rs,.rDu]j@!-A/>!ho[-r
|
|
||||||
VlrW!([%g!^ct2q>UL,!8%,J"6KR`]^c"')?Kj:rrS#W\+ot26NG=0s"aZ0s,-lrqYpVp!13]b!
|
|
||||||
=pj_rrSemDuBV:@/sF-rr?6XrrIB'rr3#XGlI^DLXQ,#!LCXXrrM)'r;Qe]J@GO[qd-i2rrSM(>
|
|
||||||
2]DcdYD$+s*.i=cMmpnGkV.Er!*5Qs8V\b*>lBertsl""IlN/%i;_)s2Y0\cB//2S#pH:(Uqokr
|
|
||||||
rT,!CAn/RF8uMNH:Lg1s+^RS7r()*s8R0@#$lOF;#UFo-NMQlrrSDekPY>fF8uMNH:Lg1s/5p4l
|
|
||||||
i6h]!_EAqp\t<>!&4BO#1*?ss/,j`rr3!00E1tVT)`g0s/uEDrr3&E!&4BO!mgporr3$e!6b3<!
|
|
||||||
Y5:_qYpUg!*\pm!]g>Mrr3%s!+c'.!WL4?rsM0obQ%Su!8IOM!-.r:"KML"!13]b!=pj_rrSemD
|
|
||||||
uBV:;ZLG-rr?3WrrIH%rr3#XGlI^DLXQ,#!LCXXrrM;&rVln^J@5CYqd-i3rrSM(>2]DcdYCp(s
|
|
||||||
*.i=cMmpnGk_4FX]#3"(GR3U8XK&Hrtgt5%rUoW"'G9sraZ0RT9^'"DXh]K=SD[m-_;jh&s(`Gs
|
|
||||||
8@]q"<rWts8W(b,QT-Srr<#sLEH^DL\h%eGQ7_6Y5SA$mpc1o%K2&)"<rWts.1bA&s(`5s8)`te
|
|
||||||
dDJ_qu6lFOoPD5!8%5M#+>\Ms/,j`rr3!/0E1tVU&\d)s/uEDrr3*"/caN&rrSVlh#@<T6NG=*r
|
|
||||||
rNZ1f)#CKedDJ_qu6]AOo#(ZFTBbers7oq!j_k+reSJkrsV6pbQ%St!8IP9!sZdErro*^s/,j`r
|
|
||||||
r3!/0E1tQU&\d&rrP(jGPqI@>29,YLXQ2%!TA;&rrIo'r;Qe`_qY1ln7hn%!L&&?rrW((\c2U1Q
|
|
||||||
GZnars-u->6"VI?1?/>!Rc4Ds7H?eruT&o"ErMurR>gjo`+s9$qgBrn0aG"s.9:Vs8Vs".fTGQa
|
|
||||||
8d7+TnWP^rVm,I$qgBrn0aFurrP1\`qo];pB(E9q>Uf>(Bep8rr(>d>4h[k!mgq<rVm(W!!#N)3
|
|
||||||
-5&u)E@f;s8OGHdJs5g!!Z_T7o90aT)b/Vs8)sLrr3>H!$0@Ybl@MH>Bp)G!*S+W!Jf,&rrM8#r
|
|
||||||
r3"]`;KW9QG_JW"n67+s,qo;rs8L.\c;\q_curqrs-u->6"VI?1?/>!Rc4Ds7H?drs8(K2$sU1;
|
|
||||||
n;o+ruKZf2e#dns8Tto!&:hECB+Elq#C>("Wh/)!"t@Grr3/Q;)_raZi9t.d!5Zm8"fe[#-UJr!
|
|
||||||
&BB(qYpiiLG]DE*`KWKq#:@h;Z6VOrg+l2,F&3-s3Q#m!(V<Z!!#Nls8@]q"<rWts2-\o0sg+[!
|
|
||||||
!7uOs8HO4*hWK4]`c)pr;Qe%qq_8QLXQ2%!Ush&rrJG'r;Qe`_qY1poje$u6.iFA#IRn<s-CQ:n
|
|
||||||
DXBPdYD$+s*.f<cMmpnG_,nes-EZdi"kJ#rrZ#DiHY;#!H.2YrrIo'rr3#gC&\,5QG`Y#!LCXWr
|
|
||||||
rlU+s6`S5ZMt?D?Mjd&QG[EGDkl"bjo5S6LKa`XL0!fhrrLPmJcGBBQ2^on>lN+M"Kt>mh0Akt!
|
|
||||||
J/hXrrIo'rr3#gC&\,5QG`Y#!LCXWrr?7%rrVU^fX1Y[\R,14rsP.1C%18iHra<sYM\UE#L\B2s
|
|
||||||
8RjTnBV%7dWg?Co`(0U!hso;df0Kb>kS-FL]%/QS%[YX!Jf,&rrMV'rr3"b_u0N8QG_MX!qCYer
|
|
||||||
Vlre9\?fR!kDY7rVmLt]OOcZ[IO:rfVWgn=(@9&fC8;0#L\B2s8RjTnBV%7dWg?Co`(-T!Q1b_r
|
|
||||||
s%8Krr<#HL]%/QXK(+V!KtG$rrMV'rr3"b_u0N8QG_SZ"8S*Ua8>l<mS)9CrrT`;qu$I6WC.Zsi
|
|
||||||
1+=XC89G[s8V`3S:5-R='8p[Pd/6epA4dodYCs)s+aYEcMmpnG_,nes+14,rrLQ'r;Qf=Nns^9Q
|
|
||||||
G`_%!Ush&rrJG'r;Qe`_r1OsrhiMoq#:E`9\?rV!kDY7q>Uq.s2rdis6?q<=&j4.bOPN1(&$=tW
|
|
||||||
0)F7=BJ^/>%Mbk=\8YnLK<oirrLPmJcGBBJcFU,!Rcc$rrLu%h>[MA_uBZ:n7hn%!LCY$rrJG'i
|
|
||||||
Vs"p:RV+RrrVU^fY%4c\R,1.rrcN&EF?Z_rsnnns6%(TAm&/CJYL'<q=ssro'Yht=TADV<q+E7!
|
|
||||||
Rc4Ds7H>Bs5*bVdYIc#!VU!YrrJG'rr3#gC&\,5QG`Y#!LCX`rr^bO@*\BD!q&b7^Ae8F?MjKs$
|
|
||||||
X/,"W1O%fBiASHmem)%psug:HWsQT=BSd?GCPF:R@%M\s8S!VnBV%7dWg?Co`'LBhZ!W)L\q)O=
|
|
||||||
5ElWQG`_%!Ush&rrJG'r;Qe`_r^n%ib3/nM9kbm!q&b7_#FJH?MjHr&mFd@G52)q7I1!+?2sr:<
|
|
||||||
*!]&q#:fkj4hf%]T4a<s6j#gnBV%7dWg?Co`'LBhZ!W)L\q)P:&3ZG!LCY&rrMV$rr3"f]_qd1Q
|
|
||||||
G_nc#OctFg].;"hXUUImS):*rr@K)AcZA2o`#!'?MjEq!*]=#'3/<7s8QQtc8`'.doHGJm;uE`p
|
|
||||||
A+^ndR6a&-d6;ocMmpnG_,nes+14,rrLQ'qu6_s;XrZE!Lg_$rrN+&rr3"q[/Bq)QG_te"8RsVa
|
|
||||||
8Q#=C@:Tk!q&b7p&>"qhu<`9GkM(<\R,1*rr?7#s!(X)^&S+XggYKZs8RMro/hd.^0(F8j^D4h`
|
|
||||||
rFI^.%FH?C%0FJ!Rc4Ds7H>Bs5*bVdYI]!!n0a"i;WhS[/L")>5nO&V6p1#!LCXhrr`7t9="Hp!
|
|
||||||
F#KkrrVU^f_5=F>2T>\iHY(r!kDY7oD\eor;S!;o1Ij=;#OLqV>pRlY`!Y5s8S%mpIjEDpefqsJ
|
|
||||||
`m&:s(UuJrrLPmJcGBBJcFU,!Q1,srrV@Y`8U^sV6p4$!*]C%!N!1$rrJG'm/I1$9:btVrr?0gr
|
|
||||||
rVU^f_>CG>2T>\iHY+s!kDY7o)A\nr;RP1IHFm.PlFnW9]uG$fNPnPs8U$$ZCh-r$.X@ML]@BXs
|
|
||||||
(UuJrrLPmJcGBBJcFU,!Q15urr`"-NrJ)=!N!1%rr?7%rrJt'r;Qe`_s[O,crbtpq#:A.i9gOGm
|
|
||||||
S)7-rr?6[rrM)'q#:E+?Mj9m!*]:"'rtD;UAt8"I,RhB<rZXr9^i"ZX,#%#rsAO-g3ir#>5r=+c
|
|
||||||
MmpnG_,nes+14,rrL$'pAY2d?h!.V!N!1%rr?7%rrJt'r;Qe`_sm[.iFQuoq#:H^CN&S+rrVU^f
|
|
||||||
D5FH>2T>\iHY1u!kDY7nG`JlqYpT]h#76_RSd0gm/OYJf1D<'nY35drs?o'iHYD&>5r=+cMmpnG
|
|
||||||
_,nes+14,rrL$'rVlntl21J^dnIO<rrJt'rVlk$rr3"q[/Bq)QG`:n"7LAAg\CdNq2AG+l2LhQ9
|
|
||||||
\9.@!*\:[!TA;"rrT`;qsXOb>5\C(qH.-L:ZhHP'S]k@2oYgg8al]N;WQe]s8Q:&C%0FJ!Rc4Ds
|
|
||||||
7H>Bs5*bV_j:9$!o6Puqu6cmG]**8rrJt'rVlk$rr3"q[/Bq)QG`@p"8IgQbP2#<Y"?%`rrVX_f
|
|
||||||
DGRJ>2T>\iHY8"!kDY7mf*8gr;R1U9'lT;=TADt9N>E_rr3&gfD>LH%G"EX<6P=#GlReIs(UuJr
|
|
||||||
rLPmJcGBBJcFU,!Q16$rrV[eeGB1Hb=o8+rrKC$rVlk$rr3"q[/Bq)QG`Fr"9"ue\+fn)eP_P*j
|
|
||||||
So;M9\94B!*\:[!TA;$rrT`;qsFC`=T&14<+,G"s((Q95I^[M;#gRZD,u#Uq>U]YGlReIs(UuJr
|
|
||||||
rLPmJcGBBJcFU,!Pt*!rrJt'q>UQoLL'$,rrKL'rVlk$rr3"q[/Bq)QG`Is"1V-trV6BplYLG(i
|
|
||||||
VruJ9\97C!*\:[!TA;%rrT`;qs==_>5\CF=dZ>ks**:+I+/,qK$EaDL&]4lrr<#&EgQFuiHYD&>
|
|
||||||
5r=+cMmpnG_,nes+14,rrT*(rqucsce%pk"5R(<qX"4_[&*a$!*]C%!N!.#rrJG'q>UQB<f$JEr
|
|
||||||
r`(U:sRqt!q/h7rr2t%hu<`9GlI^E\R,1!rr?7#s!(A69[`o7r`?@ms8St#M0ZW2s,atpDGT?#:
|
|
||||||
\Nals8Q:&C%0FJ!Rc4Ds7H>Bs5!\VV.09"rrSXOrq69mY>2RorrKL'rVlk!rr3#)V>U>oQG`V""
|
|
||||||
6![2lhCD\[n<gXrrqjbfDkkShu<o>GlRfS?Mj$f!*]=#,I;1KBK`-j>ObPDs)Qsu^Q&9n`0/DRM
|
|
||||||
#[LZR,N;is'#G:nBV%7dWg?Co`'LBh#@Gl:ZMHS!hr`Zp&>-iN)e0lrrKL'rVlk$rr3#+V>U>oQ
|
|
||||||
G`\$"71/;htR-QgKfL-g&D3D9\9;Jhu<l=GlP<\qs"+\>5S=D]j4jQs8TcLlW[b)s'tFkkPqB\O
|
|
||||||
0ig)s7TpeD#aN=s(UuJrrLPmJcGBBJcFL)!od(Urr3&T9XXNm"7(#?iUQpK[&*a$!*]C%!OS^$r
|
|
||||||
s+k-s8VeM<6k7<"7p_Ik19P7mnD>:hu<i<Ge%/Xkl1Wdo`#l3;-7T)s1`g;9o)F5P/C8^s5e.fC
|
|
||||||
&e3:s(UuJrrL)`JcGBBJcFI($2ougbJsPYK4OBArr_"bETm#o!P4j#rr?7%rrKL'r;Qqd_u63'\
|
|
||||||
+fn)rKg=#e,KL<9K_54"5u@KqrdtZ>5S=&\Q;dlrqQL-OB?WcbQ$:0i(L2!_=21=s'#G:nBh1;q
|
|
||||||
1r52JcGBBJcFC&#jZPB9W7s?9sO<i"4LLulLk/X_j:9$!*]C%!OS^$rreXH9VMFZrr^;7VZ,!C!
|
|
||||||
UiA4rrV.Zqr[nY>5\C.\22t@U43.BmXSfGrVlrliVicU%?Y4o7!AV"C&e3:s(UuMrrT`([XnJLs
|
|
||||||
+14#rs/Fd9ZhX*?f^hY"4(4nk4elV_j:9$!*]C%!OS^$rrRI>p@nRhk%Ao0cMmn:hu<`PqrRhX>
|
|
||||||
5\C/<*&qss&Sp]1RditHN*pG]91;8rs[kigAh3BC&e3:s(UuOrr_4<6b.dJnc+1?e,K[AF^O-F=
|
|
||||||
,HbErr^\YCY\ac!Q16%rr?7%rrKL'r;QdZYk\5#qM\G-MuNc\r;RF2Hdi#pHeWRWe,TG\j8N+n_
|
|
||||||
fpb4rs\PFmf3=VC&e3:s(UuQrs&4M?,b9=SUph3s+13trs%%PMu7fj\+9P$h/$HCqu6]7QMpg`>
|
|
||||||
5nO&[&*a$!W@ZGrrT`+YDN8Z>5\CF;rgpQs'58!S@JV!TXLb.YQ+W>f`/HCM-br:n7hq&>5r=+f
|
|
||||||
)GfY9tUE)!rabKJcG?AJcF*s#QBouY2XD&eai_Cl$H72rVlft_j:9$!*]C%!OS]qrr_CkJbFp"!
|
|
||||||
*]=#,CI#;8V_*]<pEQ[s,G!,XJ5ap]pn7TI/j4o_=21=s'#G:nC[aCgK9@/rr3)V:/Ku%s7?8As
|
|
||||||
3CWL^e_\T^LV6Jo)AshR8&h5s21*"rr?7%rrKL'pAY6jL0`Pgrr?7#s!.>V?<U>#s,O@l<52$&>
|
|
||||||
O52cs1+SjQ%]2;kA:!"s8Q:&C%0jV%/,!Vk5OYmWbtbuJCoGQoDaCAc2S(9@t;)8Vc8?Co)Amm\
|
|
||||||
QWdNL].5Q<rW+"\srHo!l.I<K`;$PqYpTfq>UC6q-J>u1!KZbXfu*f@H!-d:&Y+c?iO=0s'#G:n
|
|
||||||
D!sPY"E5)<Ej9pWT4$T;=fA=oDaCAc2S.5U:X%#SF)qCR/6@Q!oT*JrVlk$rr3#:QMLO_mV.%AK
|
|
||||||
DtpTqu6cjTT\42ru0M/p&G'e;k9a?O8lYQWbhL6S,Z[ls'#G:nD4*SfiM6]LTA;9]r[fM>uS+]s
|
|
||||||
762@s3:QP^mP0!PuQ%PrgQTWrTsOa>5nO&_j:0!!iHdGqu6Y"M#RHYr;Qr_1SMTc]`.p4gV<F\r
|
|
||||||
tP=5OO=+.r_pMB5stJJ>6"V+s(Uu[rsnXFA`s*fd&WIpS#X$Srdk+=s+143rrMo3li.!_ZMsk1m
|
|
||||||
r`=(BC(7EZ2X1k!*]C%!Q16$rrh^eAjH=mrrM_&M#RHYr;R16;>:+g9`=rr@[9^%rVllarVm?#L
|
|
||||||
K9#us8Q:&s'#G:nDO<JW(k9_s5X-1s5s=ai_Ff%ea<A;QGWS"$/8X1fpqG\9re0]rr?7%rrL$'r
|
|
||||||
;Qlqh0mBArrLu%M#RHYr;RF2C$ks#EorfmaT)*3pA_!VBhcbFrru[,s'#G:nDaHMePVV1JcFa0J
|
|
||||||
cFp5#JEsqs6FN<lgOiSRDA\!$,o`$fTH!"9rIsfrrIo'q>UFurr3#:QM^[_pJ^qg!Q(+Xrr?7#s
|
|
||||||
!(UWL&_0hk#[G^s8SD!d7'W+p.P#Wk[7LobQ%TGs8Q:&C%13`"7^JIl[f)os+147rsSgaE8.eha
|
|
||||||
8X@_Q2C+O!OSTrrt)\9On\nPT1u*Xs-;A6G#lQYrr?7%rrL$'qu6\eWqu_rOi*"T!*]=#,@'MVL
|
|
||||||
#Gr0=jD9ls.6W>OL+ueX/Ge`?2sUqiW!*]s'#G:nE0`Qrh<32JcFU,JcG$8%J*o#s)KDP3U6YEY
|
|
||||||
"lIsrrM/!p\td'Z;?AIs8/QcRAJ;7s70@jrr?7%rrL$'r;Qim9`=hf!ET&Qrr?7#s!-5kZ@X^Vs
|
|
||||||
(gM7RJg7V=P.Zos20u*IZ"1*dX2!qs8Q:&C%1<c"4'f6rIP")s+149rrUkHci3qOWESlfhZ*WOK
|
|
||||||
iQn"rrW'Rrq6:"^0,@,s8B,tLSt1P>5S=">5nO&_j:6#!J.u]rrM"lL]7?Xqu7l.T:tWOs5$N%P
|
|
||||||
;SC#G1LE:s+eRL`*<9AqHa,)s8Q:&C%1Be"7L/Gmt(Mns+14:rs#].mH(eGcMmhMS5#lFs8V4pF
|
|
||||||
mo#'!A1qTrsIM!?IAfQ_,tj?Oo,.Y>5nO&_j:9$!T.2YrrH]XL]7?Xo`#lhH>:%ks5HlAHU1[2T
|
|
||||||
WiUJs3H>t>6"V+s(Uugrr`4j:<nFjg&HX'mf*RjI!i6ia$a%+rr3Af5tm:<[f?BQ;3h%QrrS0?r
|
|
||||||
UTspl>^4`s8UMWB[cnZ!*]C%!Q1*!rrHWeqYpW>6*l@H!*\di'\$DiH1_..9C6_*9&fkSs8Q:&C%
|
|
||||||
1Kh"3aW9rdk+%s+14=rsS0pZ2^M78'U0ihI-?_$EtLFDu]>,rh`H*q#:Ea3f3A+#ioi9k5YJ>GG
|
|
||||||
>'9!*9+!!Rcc&rrLVaqYpWe85+d<!*\Ob%FS-V9#(E+>6"V+s(Uujrr_S%EpnSZf)L=$nGa6K9\
|
|
||||||
KI@s3pC1cUi,Aqpk`Hn7OAF:B(7qp4Q`+q>UMN9>0fo"4^A2qtg<m>5nO+dYIl&n4N-Grr`("<6
|
|
||||||
g6u!*\:[#$V',>5r=+nG`UhQW)Cbs4%("s7-+#TjREkk"F"cq8n-,rJ5hmrVlg)^G8L9IJEjBj^
|
|
||||||
36'qu6cp92rCgrrQ^je,0.F>5nO*dYIkq:t>IC"7''6M1ts1?23@X#$V',>5r=+nc&[29;[:?df
|
|
||||||
4muoD^'3DiEB5cV3B%JR7(1B[0MtUS+=%s8Vt>,?!`%kPtS&;4[[`rrh7QF'#^<rr`3j&n1\;!*
|
|
||||||
]C%"O`(j:<`Y9"oFH]NbA?FrrHj'i;X!bs8Q:&C%1`o"6jHBo7?qhs+14Bs!?c&^AlSLB@>N+S\
|
|
||||||
1cu]R+k]Z"nZHs1871gccN6rr2rtrh`B(r;QrO9A,J%`Ua$2rg6L$r;Qb#rr3)F;bu0Grroc'Wf
|
|
||||||
(orK`;'enDO<N=9&;(s(Uuqrr`.\<S)g%ci8Rrp&>lF:?([@jRW>u?"(nUD1?*ra[]+MnRZ*Orr
|
|
||||||
3E+d/V!fq2PFSo6b$+rVm)`;Rc+E=N0k2%I\aH])Ma0>6"WO8U(15rs&D&:QO@7U4WCGC%1'\#$
|
|
||||||
V',>5r=+pAY319W`mGc2W@pp&>scA`f@cMjA)4bK?+M][<,/\aeNQ?cDD7l=0blrsQUk2f\l3s8
|
|
||||||
V%eI.R@;#lB*_l0j4%Y5Ink$1a-NS+KnCAoI#7rs/"O:7Cd:<SrB-!GV&]rru[,s'#G:nG*"ck$
|
|
||||||
`Z2JcEsoJcGEC/6^\*L>c`2TR$R3MIKu``(3_\qU<o$rcM_&RAn=.s8.d.<]L,fs8Tu/U]18m#h
|
|
||||||
<%8p@k%QJ)'Yq&H&_5-Xtp3s73I*?G?9-9<NjGs8N4f<,JJej8T<es8Q:&C%2!!"o=0B;,X*=s3
|
|
||||||
1Los7QCDFNjco:9MW5>>U1Tl2=BCHdH;G^&O["R*=l*Dnl;;s8V4c4'#ScjP9^);9/Y8%(T2mmf
|
|
||||||
1OT='C0Zf_>+>%+`LfAQE94lJ[XrW;V;Ir;R#bZ$B>PKY-d<rru[,s'#G:nGE4e]hPg3rrH0^Jc
|
|
||||||
F!pJcGEC+66dUoD=SFd\]g5Hd/Oo@'/auX+'o?s56XY\G8XWN;`ba`(;VC.(]HYo6ap(rVmtQ@T
|
|
||||||
7rsq"rO;JR2G[>?Ym!H"L/[=CmK*ma[q><,od+s7QBtr6^pC<b.ZIr9aLg>6"V+s(V!$rr_4dJb
|
|
||||||
K*C!p;/1JcF!pJcG?A+3.$Irp+H>j*WFZd!G_lFA1Ak9kUj&\]A+2IB@SiSc8Wtr.6ZVR/b,)s4
|
|
||||||
^h4pAP!srQp^6<Gn>Ili-noroi1roBOc1Nb2?pJ@=rus6]gkn@O<T<dM%6nc'#$s8Q:&C%20&q1
|
|
||||||
`25rr3,nY"FkXJcF!pJcG<@+oRs/a8aRaOPOAj8B:bHgJ7BSn4-Zhs,:<Uop8F)ec5LFrsS-DCd
|
|
||||||
e<Ts8Ti0VZ-Gl&EgWdCfX_A=]ng/=)E\gamal]j8TA>Uhs.=O2q%hrtJW9s'#G:nGfs[;g3Fu=&
|
|
||||||
iY$ooH_9s3:Rps7$%1n8r:)s/o,+a%&UEpA_p5Oh\cA;>PS<Q?,XsqF[uBrVm8Y9.Y?\s3UfEQV
|
|
||||||
>\Us2b3FpVi2!<Gn\iqYq",s8Q!sC!^+?o]k8jnGW@g^KLPes3:Rps6fn0gK0.*q1Mc$SNT'@s8
|
|
||||||
V4R8[Z9/BCrCT_hZEqMmp^Ye,K@T_Eg)-@K66)mr`=+JcE^h'^)ZE<`t*go)J_nqfQXP5s]q%`6
|
|
||||||
eM>"k'lD;L\Cls31Los6Tan[na++k%JnuGr8@Irr3j0WG/G2=k<Lf?IeB#6q=lhqZ$TpU-Crf9`
|
|
||||||
G%ogKK:(ir95ZKN2)RQhZ.3l2MRtd$\BEAO08(s8LF8afLb`H$=IfTYC;Ss2t@ms6K\,qM\J*s2
|
|
||||||
ds(fi9qMmf24>X.#lt;OrpL\U8>7r+*H6rVm9$I478J53DnF[na*hrsS%pRAt>7s8W##8]-,Zjo
|
|
||||||
5DOaQ%jO])R?]l2MmlBl3><VGFtA5W"Dps7gJNJA>fAnsQAVK`@a,enkAPrr3,e?5@8<rr3)tPu
|
|
||||||
Q&prsna<AuE8BLKRj!s8VjnkCNYas.'+?s6'D1c;^)+oQsm$Q8Lk+rr<"/9VT<uGddWh;2i]uOA
|
|
||||||
;PMp##fLpY/*nD#XG:mqc\'mf*@_:rrP6#4cN5s8U&uJcC<$SH"0?k5QS'VG4i*iF72qF$<(!rG
|
|
||||||
gMV`N.a)Roo^j?F`u6s7K76rr3/Y6oRQjM>mMWeQ@e+nG`N,_tj<9r)`pult_1PJcD8?JcFg2.J
|
|
||||||
A6piW$\cVV4sD9h4I1=_u=UYjod)fok7mohis5g%>1?s0jR?@ah4RrrTZ&Y4DSni+_ud"lO(os3
|
|
||||||
H7Is+13?s+140s"E>?I.R<-;9-.@Y''c;s&?a6s-J@0p">[-c2[g+R8NGQs8/'25*jc@s8VnR=O
|
|
||||||
m'D!L^Xsrs&9qiW%1rl@Jtds.'+?s5<o)^J:[*mrW+"Pqt[\hrKf[agI_p_+[JGs7U7%>dBa`^]
|
|
||||||
4?&E$?6nrVlucDJne6rrIH&qYpcl<l+g!A+G3NJcD5>JcFX-+T7a&cMuX(K]?r\;5001;-ch=AP
|
|
||||||
UPNs*Hk"\Ecj^]Dhg0!Sbforr^\GOo+qR!I`Yurrr7"c2W3VJcC<$RK%j<h>\,VF_Bk:[n<gR4\
|
|
||||||
\rSNW7nU:sT%>$I2V1<n*Ch`HYDVpAY2s::L'!!PEgWrre%]s.b:!s+13;s+14)rt!X]N;<@9;U
|
|
||||||
2L"4&Gs9:s]"<#Hf^NNo*Mabk1o;q2A;'qYpqA4`6ao[XN8sb?=gqs+13;s+14'ruAC:[K#Q/D<
|
|
||||||
6^;5:ri2n,Li1nbrLfq2@:+)7fM4rrV=]I/EpNq.#8lWiFA:Md>n)s+13:s+14&rt>-d<n76#<K
|
|
||||||
-$A=`1<1rdgn;qYgEulXe;"XC'oXrrT5kGkq@DU/b;r='`=es+138s+14$rt"7*Fmo@59Xi;D=^
|
|
||||||
'm3R*PU/#JU)iJr=rUY5&#"re#O_Ck;V;s+^Q)s4%&ibtOW*q2A>(WBEUqZfSX's8W&tI$7+qs,
|
|
||||||
2/EkDoB9rrr.+U]9aiJcC<$LAui)e,LiqVG4l+k%Ai"KNLE&53W%H<V_3OZ@]-Ss3Xh`Vr>Oms6
|
|
||||||
*7ts4g;jJcC<$LAui)dJkNaHt)(7c;9ea?:=)Y[Ju4bT]GEdG>mI.s7B#O6-.JIhZ'/ak^ibbs+
|
|
||||||
UK(s3L]hi*([)rh`H*r;XQ4Qt$*-BMd"Seo%.@bFM5[Z<-Vs@N7O^s53hV`.@rds+13pruo-NVZ
|
|
||||||
6@A>2.@sAE[mtJC[]]AH2OB8P/6*FStee2607GJcF^/!o"L.JcD\KJcEso+T%F'cMuj4I.OR;;G
|
|
||||||
`e>Y@G]S^Lga?BUf%T)d'5Mbl*+miVrstb?KPtW;hGKb5WIMChi;9a%N!"PtdTF8(mp83,n+Z^]
|
|
||||||
1;KHEPWlJcF[."RB4jDq9L>WW.PLaT!+-<K-hRSPdGrFB6sh>Wn2#9A9Da)je;-JcFU,"G"SniF
|
|
||||||
d`AWW.PL`r?dV::L8pG[KLi@WGJN\Q&"j4Y3\irdk++rrMgmrr3"0k(3Q4s+13hrt>-]=PNl1?%
|
|
||||||
hplaHLH;h',J4pOWA"rrJ@grr3#EH\)3ss+13frsn1&FRfCF8>^6fs0NVcl%/lhrrW-orr)it<V
|
|
||||||
(eAX8dbN_>an`;4[[_Iq8S+)m0$hs4[JRWLs+g!PFABs/Z0Ns1nX?rgum)b_&G;hgtg[rrGpkqu
|
|
||||||
6[mq18RIs+13arrr"?7hnksJcFC&!P+9frrK3kJcDhOJcEC_!P6R-s472N;tKkc!rYgkJcDkPJc
|
|
||||||
C<$OT,@$Jb]6GSuI;@XoEtPJcCi3!F"garrMpgJcDkPJcC<$OoGI8Dta23MnaiCY5a(QJcCl4!G
|
|
||||||
UB`rrMRhJcDnQJcC<$P5bRF?hF@!Fjbj@YQ'1RYl=dtJGFcrk5PI/c1M#:j(*`@YQ'1RZ2Xt";j
|
|
||||||
1;YJcFs6!V07]rrH`jJcDtSJcE%U#5(p;s2%k5JcG!7!K+V^rrLbjJcDtSJcE(V!qfL7rr3&:=8
|
|
||||||
@FIli."];"4Jc>jHt@Z2]CT[/U4#;p,%<!lA%7JcG*:!Lp4\rrL5kJcE"TJcE.X!qfL7qYpW6=8
|
|
||||||
@FImf*@e:&XP\!EA]Bs0DZUs0hq/oi'$.rrU&=q18S7rrK9kmf*<sOb*P<s+13ZrrVjlb4bi:_H
|
|
||||||
6Pas7$$h;>0GX!rbmjJcE(VJcE7[!qfL7o`#!0=8@FIo)Aa*L@"s?UOiHOs+13\rrVjlb4>Q6_H
|
|
||||||
6Pas7?6k=mt_W!rGalJcE+WJcE=]!qfL7nG`R,=8@FIp&>'AFmAu-P.-#B[/Y^W]Dhs*;p+P.!l
|
|
||||||
A%7JcGHD!Ft9WrrMdlJcE+WJcEC_!qfL7m/I.(=8@FIq#:BRAa'-pI`I$>[JtgX^&J0,;p+D*!l
|
|
||||||
A%7JcGQG!H?TQrrMFiJcE.XJcEIa!qfL7kl1_$=8@FIqu6]`>iu%eDV9U@[f:pY^]+B.;p+8&!l
|
|
||||||
A%7JcGZJ!J&5QrrM(kJcE1YJcEOc!qfL7jSo:u=8@FIrr3#j<94&[A)r4@\,V$Z_>aT0;p+,"!l
|
|
||||||
A%7JcGcM!KsnPrrLPjJcE4ZJcEUe!qfL7i;Wkq=8@FI!rGXij8T-\mt(MKs+13frrVjlb23."_H
|
|
||||||
6PbrrJsiir9%oM1P]:s+13grrVjlb2!!u_H6PcrrGpkiVrpQq18RVs+14&rr_Ja@b1,M!qfL7gA
|
|
||||||
_5k=8@RM!P46JrrK*jJcE:\OT,L]T0j;7%K6>-Vpt_L`,l._bOb`8oi'#crrU&=q1enM<:f&J!r
|
|
||||||
YgkJcE=]OoGdF0FF!7s89/B!1rHT!UPa2rrP:_bOkf9oi'#arrU&=q2#%OaaW+H!Lp0As185nrr
|
|
||||||
_R/"2Oj7!oO`WlMgqa9lKCu!^ct2p&>*d7!8.%!8$`?!7LM>!c:X,M>mT^le_XBq+cM@])Rrn!b
|
|
||||||
;:CqYpSVN9gKGrGDURm/I,S!6b'8!8@%E!K;g'rrIA1o;VfHMZ3_/ESUQpN4a`A]Dn)p"7QKp`q
|
|
||||||
o]9l&boE-du4,9JW.;s6?+AWOXG\;=sngSLsmb93o/9IE<cFaoBgm@8&GHrr)j'6NG=0nRd&k(e
|
|
||||||
<un!RcbmrrIB'JcGWI!G:<GrrM^lJcE@^PQ(`n!!E&jrt36\`rH(;!,V\[<WGg1ZrmB\rr3Y(!,
|
|
||||||
qn75QF_c=obPA%`\PKVuUZ4rs;$mbPtpls8UY<mJd48L[b<EGi=5Rr;Qf[AD7%aHd73B]`42q!g
|
|
||||||
Wg"pAY3m-r9gA$VUQ:s.fXAs8VWj5Q:ZlT)`g0s/H&Squ>gV-r9gA!_`U1rr3-h!6bB_BE%o2N:
|
|
||||||
$WGdYI>l!I3RSs8;ltHd:@F!TmpDs1JAqrrS>`&GH,*aoHqirs#8!B)eb/Qi@!c%57_\#G2!7s8
|
|
||||||
T8&ErQ(?aoHqirrStrB)_f86NG=06i_/pli."6L[b<EGi=5RrVloh<nREQBAnFA^&O;r"0DP'o_
|
|
||||||
8@eT`B]Crs$jN5l[_^Qi@!c%kmq^#G2!7s8T8&F8l1@T`B]CrrURJ5lUci6NG=0fc0u-TDn6X!R
|
|
||||||
cbmrrIB'JcG]K!K4VCrrL_iJcEF`PQ(aI!!'\+rrSnpBDqi7huH:IVZ<(_rrEW`rr34q!,qo;Y5
|
|
||||||
iYCrrSnpBDqi3huH:HrsD*nbQ%V/@K?I+qsOIbdYI>l!I3RSs8N$!q+]H?!F,#Ds1\MrrrPal>5
|
|
||||||
/$ublBHrrs$gMHiKuDQi@!c%kmq^#G2!7s8T8&F8l1@blBHrrrUOIHiF$P6NG=0f`1us/c_[7rr
|
|
||||||
LQ'nG`N6iIV%.rrJglf)GciK7X':s-!BaedDJ_qu6lFOoPD5!8%5M#+>\Ms/,j`rr3!/0E1tVU&
|
|
||||||
\d)s/uEDrr3*"/caN&rrSVlh#@<V6NG=0C&\,6i;e]%rrLQ'nG`N6iIV%.rrI=Qok"2XnG`NQA+
|
|
||||||
aF6@=eHms,m=&_\WH!gA_'#EE`#7s31sEqZ$%4PQ1ZT!1!TaqZSJKrs-UF*R:@5!,DK4#L*ZLqZ
|
|
||||||
$%4PPtLg3<7)!,0U#dhZ_U!rrLQ'nG`N6iIV$urr?6lrrHj'JcE"TOT,UTLG]DE*`KWKrVmnh;)
|
|
||||||
_raZiC'C2#oA;l"^8#M"q#LA-F#a/-$<Dg&D!TeknA8<O;])$da/#!(W\($u(,f\aBCtdYI>l!I
|
|
||||||
3RSs7$$g>4DOmC%-]RZ2]CT\c2]YL[b<EGi=5RnG`JlnG`N'n:CVEs+13\rrLQ'nG`N6iIV%!rr
|
|
||||||
MY&nG`MtpOW@Ls+13\rrLQ'nG`N6iIV%!rrMV'nG`JlJcDtSJcE:\!RcbmrrIB'JcG9?!Usgmrr
|
|
||||||
?5Rs02NSs1/.1dYI>l!I3RSs7-*in7hCl!*XsRYlB:S\c2]YL[b<EGi?pIrrAts!Usgmrr?5Rs0
|
|
||||||
2NSs5X+\irP+mrrLQ'nG`N6iS=J5!;-<k!2ohtltl1k!*XsRYlB^_$ZZ4I%2&^B%M8gD$iU)/qk
|
|
||||||
$4i*tA2L$E($o!!!rc'.e.[qu7:e!MjlN!!#rQY!W0h)^c:MESg!\!RcbmrrIB'nc/Uhq#C3krV
|
|
||||||
ulto`"mkVZ-\UGjt_5>(Q^Xs,I$dBh@Ogs!Ifas8/Pprr3_i0FF!7s89/B!1s5c!s$gMq5+T-\b
|
|
||||||
uI@0gPd=H2nubs8Vir!7UuDV@<jBli."6L[b<EGiA8or;c]orW)osrrE&urrD`lrrAqr!TA:mrr
|
|
||||||
?5Rs02N_rrHN^rr3$I!5ng9#"8@glQ65Er;R#[':&Ut%KP,[rr\Pe+TDB?#M&mDs8RrV0)beO%K
|
|
||||||
P,[rr\Pe+TCa-!RcbmrrIB'o`+pk!ri6#qu?ZrpAb-mp&>!lV>gSTGjt_5>(Q^Xs,I$YVu?Vs-N
|
|
||||||
M'`rroP#s'u+AqYpb[N;rng!8%5M"5*YSj8T&`I0K$<s,-k1rVlp0!8%5M"5*YSj6ZdHdYI>l!I
|
|
||||||
3Sqrr`?%rr<&rs8N)ms8N'!s8E#ps8N)ss8;r#rrM)'nG`JlqYpo)9E5&-/0H'2T([a8_Z,Gl![
|
|
||||||
ducr;Qlg"ou[>rs%_Ls8NT0fDbdUf)Pg;s8W'C:B(7pMZ>F/rrN]2fDbdPf)Pg;m/I+7L[b<EGi
|
|
||||||
A2mrrDusrrD`lrW)uurrDrrrrE&urrE#t!!'5&!Si(lrr?6ursJW.!8%8Nk(<pY]^u.(m#-Gpe,
|
|
||||||
P7(![ducr;Ql-!!E&jrrN]2fDbdON;u3BrrU:BW;ceuMZ>F/rrN]2fDbdON;u3/rrLQ'nG`N6iU
|
|
||||||
QsJ!;uls!;6Bl!<)rt!;uis!<)rt!36&"dYI>l!*K$r!YPLjrVluA$j=69rrW-nDh7r;s+p[V-N
|
|
||||||
M'^rrSJd'D;A2%fk5]o9ot'g&D!QD@?.:rrS)Y0E(nV%fk5]o9ot'g$AY=dYI>l!I3Sns8N)ss8
|
|
||||||
N)ts82lrs8N)ts8N)ts8N)ts8N)!rrLQ'nG`Jlq#:C/!8m_S".T?4q"OdjrGDURJcF4!M#RN(!5
|
|
||||||
na7!g3Npp&>7-!$<L,3.C5nrrW'6>Q+R'MZ>F/rs'&7+!hmdIdHA"!RcbmrrIB'nc/Uhr;ZcsqZ
|
|
||||||
$Qqrr;uurVultrVultr;Z]qXoAFGMt$`H>58+!'*-qfru:hQ!3?/"qh\X%3GS<gSLsmb94%YqM-
|
|
||||||
b<bCA3;Zh>`<2![ducr;Ql$!!)ZbrrN]2fD5FJ\cB/:rrS)Y0E(nP%fk5CrrLQ'nG`N6iUQsJ!;
|
|
||||||
uls!;c`q!<3#u!<)rt!<)ot!;ZZo!3Z>&_j9fl!*T*s!YYRkqu745!,_c9FpIjCirF`3s.9:0rr
|
|
||||||
31G#PnD[!/#k&h>`<2![ducr;Ql]!!'\*rrN]2fD5FJ?k`D8rrS)Y0E(nP%fk5CrrLQ'nG`N6iU
|
|
||||||
QsJ!;lfr!;lfr!<3#u!<)rt!<3#u!;HNn!3cD'_j9fl!*]0t!YYRkqu74W!)W^q4UCucrsD6qs.
|
|
||||||
9:0rr30c#lO`&$:]UHh>`<2![ducqu6^h!*]*r!Y5:_qYpWj%Vbk@!fI%3rVlp0!8$?4!Rcbmrr
|
|
||||||
IB'nc/Uhqu?Zrqu?Zrrr;uurVultrr;uup](6nYQ"X7SacXZ>58+!'*-qert'b^;ZHdWeGoQm#!
|
|
||||||
;kbT)`g/rs%N5s8U:I4+[Ffs+p[V-31p[rr^g[!3uG$#0i;1rsf%[qYpVu!5na7!f?t1rVlp/!7
|
|
||||||
p93!RcbmrrIB'nc/UhqZ$Qqr;Zcsrr;rts8W*!rVlitqu6WrrVultYQ"X1V==Kb>58+!'*-qerr
|
|
||||||
Qm7F8l1HqkSDA#s81eT)`g.rrr:qG-_K:JcFR+M>m\W'`bT:rt!!`"ErMurR>gjo`+Xf!6=s9!`
|
|
||||||
C*<r;R(K!$)"<s7ZTqa6!=%dYI>l!I3Sqs7lZls8)fps8N'!s8E#ss8N)qs8;r"rrKF&nG`Jlq#
|
|
||||||
:C/!8m\R&2+$ms8U_'S,WEq49,>Q!,ql:#1tMsrr3?fJcFR+MZ3mX=TAFLJa*(3&FYB3$4%\O\c
|
|
||||||
2W47K<EDM"^fI!q6G<rVm>=H4^,W<fF4O!!"d1p?2GVdYI>l!I3SOrr<%mrrJt'nG`Jlq#:C/!8
|
|
||||||
m_S#KQlmr;ZR66N6um$TnCgT)`g0s7m^&rr3!,4+[Ffs+13\rrLQ'nG`N6iR@i,!29DnT=OIk!*
|
|
||||||
]0t!YPLjrVml&-j@Ngs31O;s8Vp!3rf5S!+l31blCH;s7um[JcFR+JcE:\!RcbmrrIB'e,TFJU&
|
|
||||||
P.Y_sm[+=o&()r!*5Qs8V\b*>lBertsl""IlN/%i;_)a8d7+Tst.,S#pH:(UqnFs53j-s1/.1dY
|
|
||||||
I>l!I3RSs7-*iLXP\l!*]7!$E[5,!#I@9*(cLgr;RS!&J&dLE<B>:raZ0RTDt2h%rUoW"'G8Js5
|
|
||||||
3j-s2b3@cUIJ+!D/@ArrI[Foi2&m8(N7k!rm`'nG`JlJcDtSJcEdj!M+DarrW1:Vh+mJrrI0&nG
|
|
||||||
`JkJcDtSJcEai!M+DcrrW1:Vh+mIrrHd&nG`JlJcDtSJcE^h!M+DerrW1:Vh+mHrr?3jrr?5Rs0
|
|
||||||
2NSs2=p<ST`cf!rd&7JcGZJ!*Sdj!*XsRYlB:S_uBb.G2<0"rb\Qas82fr=7?.h=FpLVs+13err
|
|
||||||
J[6hu<cWD5VsbqYpOsn,EAkJcDtSJcERd!M+DmrrW1:Vh+mErrMb&n,EAkJcDtSJcEOc!M+Dorr
|
|
||||||
W1:Vh+mDrrLN'n,EAjJcDtSJcELb!M+DqrrW1:Vh+mCrrK%$n,EAkJcDtSJcEIa!M+DsrrW1:Vh
|
|
||||||
+mBrrI<!n,EAkqYp`&:]LJQP5bIm`E<0VIe0[8!!!`b+<XIOpAP!tY!W0h)^c:MESc9HhuA9-^&
|
|
||||||
J,(G3T#.rb\Qas7ZHm<:9bd>5A1#qZd,Kqu6[MU&P'!qZd,Qs8V56#TLGTrsAH&!7UuDV@<jBJc
|
|
||||||
F[.JcEC_!M+E"rrW1:Vh+mArrMmun,EF\AGH0+&cgecrrH$6rVlp3!8mbT"3CrS]`%j3%KP,[rr
|
|
||||||
\Pe+T?rliW"K/]Dho&G4#;2rb\Qas7QBm\!c^b!UsgurrNi6hu!ES<l=n9!YYRkr;Qkh!$:q7rr
|
|
||||||
N]2fDbdPf`2$4JcF^/JcE=]!M+E&rrW1:Vh+m?rrHKon,EFXC&%]0'*-qerrH3=rVlp4!8m_S"8
|
|
||||||
`r9X8`,#%fk5\rr^jQ!:5::iW"K/\c2]$G4GS6rb\Qas7H<ll!WrZ!TS=trrNi6hu!ES=2Y":!Y
|
|
||||||
YRkqu6_'!,_`8!Y5:_rr3%Z!'c&7i;\B.\GlT#G4Y_8rb\Qas7?6kE7++R!T&.trrNi6hu!ES=2
|
|
||||||
Y":!YYRkqu6_I!)W[p#S-pes7;Zc);0T@i;\B.\,QK"G4kk:rb\Qas7?6kb&-PG!RcburrNi6hu
|
|
||||||
!ES=2Y":!YYRkqu6_L!)igr#7geV,oemnm",2os+13YrrJ[6p\t<oD5VsboD\mN;t]PX!RQYtrr
|
|
||||||
Ni6hu!ES<l=n9!YYRkqu6_3!-A/>!Y5:_JcFI(JcE.X!M+E0rrW1:Vh+m>rrUP?kNr3L_j:)t!Z
|
|
||||||
M-oqu6[lc2IYD'*-qerrOhR\,QC/%fk44s4[L(s0Ve,STao1!rd&7JcGBB"5e-5na$2U_j:)t!^
|
|
||||||
6Uuqu6[Nmf!.e'*-qfrr^=B-iEuD!Y5:_JcFI(JcE(V!M+E4rrW1:Vh+mCrs&G^]SBI$e`m)7\"
|
|
||||||
WTs!f[1lr;Qf@7/[&d&cghfrr_O7"iL<=!Y,4]JcFI(JcE%U#+]r;s8Hl5L&VeEYc=IdQAC?BCg
|
|
||||||
L7G=B]d5bl$Z(!NWBursA?Q!.jM:nXh,VrVm6<?Ts7;s*(qT\G"8;lta+=9Es+13Trrem9rb
|
|
||||||
\QdrsEJ5Wk#a`bgP>7qqqDSS\+Xr#P*0g"UcA]hYmH]X]#3"(GR3U8XK&Irs#Yr!!"d1p4<8!s+
|
|
||||||
13SrrS`JVh>!MC%0^R!KbBRs02NSs0)G&i.Ct0C%0^R!JJsRs02NSs7$$hbZ'-]fL,a2NU?`HC%
|
|
||||||
0^R!I3RSs02NSs7$$h*a4,NfSBT]%(G[)!GV&SrrI$'JcDtSJcG6>!<CQ!s4@8O4I5F8!GV&Srr
|
|
||||||
HC%JcDtSJcG6>!<CQ!s4@8O4I5F8!GV&Srr?2Qs0)HRs7$$h!7HGufDbk6QL=bRC%0^R!*OmQYQ
|
|
||||||
'1RnG`LhdXhGMrrG6Jmf*<%nCIU>=FpLUs+14>rrE,JJcF@%!Bc\9rrHj'fDbmM=b6UVs+14>rr
|
|
||||||
E,JJcF@%!Bc\9rrHj'fDbm6EIn.ns+14>rrE,JJcF@%!Bc\9rrHj'fDblpNIh,5s+14>rrE,JJc
|
|
||||||
F@%!Bc\9rrHj'fDblUVh+lOs+14>rrE,JJcF@%!Bc\9rrHj'fDbl4aFXAps+14>rrE,JJcF@%!B
|
|
||||||
c\9rrHj'fDbkbn:CVCs+14>rrE,JJcF@%!Bc\9rrHj'fDbhPJcDnQJcG6>!<CQ!s4@8O4I5F8!G
|
|
||||||
V&Trr?,Os/uBQs7$$h!7HGufDbk6QL=bRC%0dT!T\9Ps/uBQs7$$h!7HGufDbk6QL=bRC%0dT!N
|
|
||||||
r3Es8N(Ms5F!/s7$$h!7HGufDbk6QL=bRC%0dT!I<GWs8N)ks8N(Ms5F!/s7$$h!7HGufDbk6QL
|
|
||||||
=bRC%0dT!*/XjrrDioqZ-TprrD]k!!%TMi;\B.nG`LhdXhGMrrG6Jmf*<%nCdgBoj@Clr;c]orW
|
|
||||||
)osrrE&urrD`lrr@WMi;\B.nG`LhdXhGMrrG6Jmf*<%nCdgB[%6pjrr<-#!!)orrrDcmrrD`l!!%
|
|
||||||
TMhuA9-nG`LhdXhGMrrG6Jmf*<%nCdgBB]o*h"9AK%!!)orrrDcmrr<'!rW)fprrDusr;cHhquH
|
|
||||||
Zprr<-#!!%`QJcG6>!<CQ!s4@8O4I5F8!GV&WrrN*to)J^ir;Zcsp&G!ks8W*!qu?Zrrr;uurVl
|
|
||||||
itp&G$lrr;uurVuisKE$N&nG`LhdXhGMrrG6Jmf*<%nCmmC]oVaarrDusrrD`lrrE#trrDus!!)
|
|
||||||
utrrDThrrDusrrE&urr@ZNJcG6>!<CQsrsGl%!!!`b+<XIOp5o:T4I5F8!GV&WrrHQpo)J^ir;Z
|
|
||||||
csrVucqrr;uurVultrVultrVultnc/Uhr;Zcsrr;uuK)^E%nG`LhdaJ.&qZd,Qs8V56#TLGJrrM
|
|
||||||
JElMgnOMn8oh4I5F8!GV&XrrMFnnc/Uhr;ZcsqZ$Qqrr;uurVultrVultr;Z]qo`+pkr;Zcsrr;
|
|
||||||
uuK)^E%nG`LhdaA'r&cghfrr^@O"MFF-!rYi3li.%b9lIWC!Bc\9rrHj'g]%;'a7930!;uls!;c
|
|
||||||
`q!<3#u!<)rt!<)ot!;ZZo!;6Bl!;uls!<3#u!.t6%s7$$h!7K9p!YYRkr;Qkh!$:q0rr`4;!,q
|
|
||||||
6("9!*;Dn>rL4I5F8!GV&YrrMXhnGiLgqu?Zrqu?Zrrr;uurVultrr;uup](6npAb-mr;Zcsrr;
|
|
||||||
uuK)^E%nG`LhdaA'r'*-qfrr`-9!3?,!'ZO37'3XMuSLsmb94%Yu``G/6=m,ea+5UF.8NF<\s.(
|
|
||||||
bB+A6&@dog*Q17\@Ds80E7IE<cFaj0ne4I5F8!GV&YrrIJbnGiLgqu?Zrqu?Zrrr;uurVultrr;
|
|
||||||
uup](6npAb-mr;Zcsrr;uuK)^E%nG`LhdaA'r'*-qert&H9D?'XF9DAJ5""jEMT)`g/s!bEMp]&
|
|
||||||
SB/c5Rp+3soc1'5c$s.9:0s8U(K`rH(;!,V]8VEb,[=]tg)cMmo-QL=bRC%0sY!T%,Ns8N)qs8N
|
|
||||||
)ss8N)us8E#us8N)trr<&rrr<&ts8N)ls8N)us8N)ts8N(Ns+14>rrE,JdJj7]!8m\R#(HVLs8!
|
|
||||||
_Orr3?k!4Mp"!,qo;qAd?NrrkXf[f%h/rr3@j!5&:2T)`g0r?tJ?rsML#_>jP8!&FHOk5N[+!Bc
|
|
||||||
\9rrHj'h>[LXiU[$E!;lfn!<)rt!!*&u!<)rt!;c`o!:p0f!;uls!.t6%s7$$h!7K9p!YYRkqu6
|
|
||||||
kP!)ij1!(d)b$T9Aus.9:0s8Tb48H)Bg2CFg1!6"j9!:g'g#+km6s2k=krVm+u!+u92Y5iUcrrG
|
|
||||||
6Jmf*<%nD=0GUQj+)!!%TMg])j)nG`LhdaA'r'*-qers!0;F8q@&l2(DbT)`g0s,d<Gqu6_]!7^
|
|
||||||
iE#+km6s.KFErVm,M!'pSaY5iXdrrG6Jmf*<%nDF6Ik#;9+s8N(Ms4dR)s7$$h!7K9p!YYRkqu6
|
|
||||||
jR!4Vud!6+g7#G2!7s8RuW`V]Z:M#b$\rs#(qDuZO3BDqi8huH:Is/uEDb5VK)QL=bRC%1'\!rc
|
|
||||||
6Yci="FJcFL)JcG6>!<CQqrrNi6hu*KZa8dUcs.o^8r;R)'s.9:0s8SnqEW#h=Whoc,rVm6(aoD
|
|
||||||
C5!,qn^!&4BO#LEHts8T8&F3=L`4I5F8!GV&]rrJ(SJcDVIJcG6>!<CQqrrNf5hu3Q]l6lhRs8V
|
|
||||||
3`#0-ZB$_`mdU&\d)s5jCf`r>uPTpG!L!j_k+reSJls.TL)s8FVNfDbdTRKVFGs/uEDb5VK)QL=
|
|
||||||
bRC%1*]!Q/W&s/#aHs7$$h!7K<q$N(,/f)PdAU)b)^rVmp\!!Z_T7o90aa8d7+U!.TY#$lOF;#U
|
|
||||||
EL!!#N)3-5*!%*/DhcCq$B9)ASW-^4Q0!iQ*6b5VK)QL=bRC%1-^!p<8OJcDSHJcG6>!<CQsrsG
|
|
||||||
l,!!!fi,ofLCoDJV0rJ)Ku,)?$ps8HO4*hWK2LEH^DL\h&Nrg+l2,F&3,rsSg:"Wj<9eknA8<O;
|
|
||||||
])"eI7F&s(_irrG6Jmf*<%nDjNMoi'n%s.o[Gs7$$h!7HGufDbk6QL=bRC%13`!r6!AJcDMFJcG
|
|
||||||
6>!<CQ!s4@8O4I5F8!GV&brrW+)]n-3Xs+14>rrE,JJcF@%!Bc\9rrHj'k5PMY>IT1`U&T]DnG`
|
|
||||||
LhdXhGMrrG6Jmf*<%nE9fQlVYTOs.KCCs7$$h!7HGufDbk6QL=bRC%1?d!lRgfZN'q)JcG6>JcG
|
|
||||||
6>!<CQ!s4@8O4I5F8!GV&grr_V*EqdBLrrD]krr@WMnGe(>nG`LhdXhGMrrG6Jmf*<%nEg/WkBL
|
|
||||||
"PirB#YqZ$Hnp&FmhrVulto`"mkJcG3=JcG6>!<CQ!s4@8O4I5F8!GV&mrrr>OO]5r<irArWqu?
|
|
||||||
Zrrr;uuq#C<nrVultrr;uup&G$lJcG3=JcG6>!<CQ!s4@8O4I5F8!GV'"rseqpi6oE=O`t#3>(4
|
|
||||||
<`iW&oX!ri6#qu?ZrrVlitq>^HppAb-mp&>!lJcG0<JcG6>!<CQ!s4@8O4I5F8&U7;VAm8D<>?b
|
|
||||||
?HGDDTj`o6jNrr`?%rr<&ss8N)ss8N)qs8N)ms8N'!s8E#ps8N)ss8;qKs7cPEs7$$h!7HGufDb
|
|
||||||
k6QF-\l!;uls!;uls!;lfr!;6Bk!<<*!!;lfr!<3#u!<)ot!.k1Fs+14>rrE,JJcF@%!Bc[Ts8N
|
|
||||||
)ss8N)ss8N)rs8N)ls8N)ts8N)srr<&ts8N(Ms7?8As7$$h!7HGufDbk6QF-\l!;uls!;uls!;l
|
|
||||||
fr!<)rq!<3#u!<)rt!<)rt!<)rt!.k1As+14>rrE,JJcF@%!Bc[Ts8N)ss8N)ss8N)rs8N)qs8N
|
|
||||||
)us8N)ts8N)ts8N)ss8;qKs7ZJDs7$$h!7HGufDbk6QF-\l!;uls!;uls!;lfr!;c`q!<3#u!<)
|
|
||||||
rt!<)ot!;ZZo!.k1Es+14>rrE,JJcF@%!Bc[Ts8N)ss8N)ss8N)qs8N)rs8N)us8N)ts8N)us8N
|
|
||||||
)ns8N(Ms7lVFs7$$h!7HGufDbk6QF-\l!;lcr!<)rt!;ZZp!;lfr!<3#u!<)rt!<3#u!;HNn!.k
|
|
||||||
1Fs+14>rrE,JJcF@%!Bc[Ts8N)rs8N)us8N)os8N)ss8N)us8E#us8N)trr<&rrr<&ts8N(Ms7l
|
|
||||||
VFs7$$h!7HGufDbk6QFHni!<)rq!;6Bh!<)rt!!*&u!<)rt!;c`o!.k1Ds+14>rrE,JJcF@%!Bc
|
|
||||||
[&rr<%Ms6BW8s7$$h!7HGufDbk6QA>M?!.k18s+14>rrEX]J\0RH!jifCL]@ASJcG$8JcG6>!N@
|
|
||||||
;p&_IZs'jpfgs+14<s+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+13$s0)HRs+13$s+13Rs+13$s+1
|
|
||||||
3$s0)HQ~>
|
|
||||||
%%EndData
|
|
||||||
showpage
|
|
||||||
%%Trailer
|
|
||||||
end
|
|
||||||
%%EOF
|
|
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 863 KiB |
@ -1,78 +0,0 @@
|
|||||||
DESTDIR?=../docs
|
|
||||||
|
|
||||||
#manual-api manual-calwiz manual-client manual-gui manual-main
|
|
||||||
|
|
||||||
|
|
||||||
TEX=latex
|
|
||||||
|
|
||||||
MAINTEXS= slsDetectorClientHowTo.tex
|
|
||||||
|
|
||||||
DVIS = $(MAINTEXS:.tex=.dvi)
|
|
||||||
PSS = $(MAINTEXS:.tex=.ps)
|
|
||||||
PDFS = $(MAINTEXS:.tex=.pdf)
|
|
||||||
HTMLS = $(MAINTEXS:%.tex=%)
|
|
||||||
|
|
||||||
|
|
||||||
all: docs pdf html
|
|
||||||
echo $(PWD)
|
|
||||||
echo $(PDFS)
|
|
||||||
echo $(HTMLS)
|
|
||||||
|
|
||||||
docs: createdocs docspdf docshtml removedocs
|
|
||||||
|
|
||||||
createdocs: slsDetectorClient.doxy slsDetectorCommand.cpp
|
|
||||||
doxygen slsDetectorClient.doxy
|
|
||||||
|
|
||||||
docspdf:
|
|
||||||
cd slsDetectorClientDocs/latex && make
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
|
|
||||||
mv slsDetectorClientDocs/latex/refman.pdf $(DESTDIR)/pdf/slsDetectorClientDocs.pdf
|
|
||||||
|
|
||||||
docshtml:
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
|
|
||||||
$(shell test -d $(DESTDIR)/html/slsDetectorClientDocs && rm -r $(DESTDIR)/html/slsDetectorClientDocs)
|
|
||||||
mv slsDetectorClientDocs/html $(DESTDIR)/html/slsDetectorClientDocs
|
|
||||||
|
|
||||||
removedocs:
|
|
||||||
rm -rf slsDetectorClientDocs;
|
|
||||||
|
|
||||||
pdf: $(PDFS)
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
|
|
||||||
mv $(PDFS) $(DESTDIR)/pdf
|
|
||||||
|
|
||||||
|
|
||||||
html: $(HTMLS)
|
|
||||||
|
|
||||||
$(HTMLS): $(MAINTEXS)
|
|
||||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
|
||||||
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
|
|
||||||
$(shell test -d $(DESTDIR)/html/$@ && rm -r $(DESTDIR)/html/$@)
|
|
||||||
latex $@.tex
|
|
||||||
latex2html -split 4 $@.tex
|
|
||||||
mv $@ $(DESTDIR)/html
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%.dvi : %.tex
|
|
||||||
latex $<
|
|
||||||
latex $<
|
|
||||||
|
|
||||||
%.ps : %.dvi
|
|
||||||
dvips -o $@ $<
|
|
||||||
|
|
||||||
|
|
||||||
%.pdf : %.ps
|
|
||||||
ps2pdf $< $@
|
|
||||||
|
|
||||||
|
|
||||||
clean:
|
|
||||||
echo "cleaning for manual-client"
|
|
||||||
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
|
|
||||||
rm -rf slsDetectorClientDocs
|
|
||||||
rm -rf $(DESTDIR)/html/slsDetectorClientDocs
|
|
||||||
rm -rf $(DESTDIR)/html/slsDetectorClientHowTo
|
|
||||||
rm -rf $(DESTDIR)/pdf/slsDetectorClientDocs.pdf
|
|
||||||
rm -rf $(DESTDIR)/pdf/slsDetectorClientHowTo.pdf
|
|
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 28 KiB |
@ -1,180 +0,0 @@
|
|||||||
/*acquisition commands */
|
|
||||||
"acquire"; // starts the detector, acquires, saves, postprocesses the data
|
|
||||||
"data"; // get all the data (detector should already be started)
|
|
||||||
"frame"; // get one frame (detector should already be started)
|
|
||||||
"status"; // can put start or stop, returns idel, error, running, data...
|
|
||||||
/*configuration commands */
|
|
||||||
"free";// frees shared memory
|
|
||||||
"add";// adds ne detector to multydetector structure
|
|
||||||
"remove";// removes detector from multidetector structure
|
|
||||||
"type"; // adds ne detector of type to multidetector structure - type can be Mythen , Gotthard...
|
|
||||||
"hostname"; // for slsDetector sets the hostname, for multislsdetector adds new detector with hostname
|
|
||||||
"id"; // returns the id of a detector
|
|
||||||
"master"; // sets/gets the master for synchronization of multidetector
|
|
||||||
"sync"; // sets/gets synchronization mode of a multidetector (none, trigger, gating, compementary)
|
|
||||||
"help";// help for a command
|
|
||||||
"exitserver";// shuts down detector server - do not use!
|
|
||||||
/* data processing commands */
|
|
||||||
"flatfield"; // sets/gets flatfield file
|
|
||||||
"ffdir"; // sets gets/ flatfield directory
|
|
||||||
"ratecorr"; // sets/gets rate correction tau in ns
|
|
||||||
"badchannels"; // sets/gets badchannel file
|
|
||||||
"angconv"; // sets/gets angularconversion file
|
|
||||||
"globaloff"; // sets/gets beamline globaloffset
|
|
||||||
"fineoff"; // sets/gets experiment fine offset
|
|
||||||
"binsize" ;// sets/gets angular binsize for angular conversion
|
|
||||||
"angdir" ;// sets/ get angular direction (1,-1)
|
|
||||||
"moveflag" ;// sets/gets moveflag for the detector (default is 1)
|
|
||||||
"threaded"; // sets/gets threaded mode (do not use!)
|
|
||||||
"darkimage"; // sets/gets the darkimage for the Gotthard detector
|
|
||||||
"gainimage"; // sets/gets the gainimage for the Gotthard detector
|
|
||||||
"readctr"; // read counters for the Gotthard detector
|
|
||||||
"resetctr"; //resets counters for the Gotthard detector
|
|
||||||
"resmat"; //reset or not the counter before the following acquisition (at the end of the acquisoition the counter is always reset) (very advanced! EIGER only)
|
|
||||||
/* trim/cal directories */
|
|
||||||
"settingsdir"; //sets/gets the directory where the settings files are
|
|
||||||
"trimdir"; // as settingsdir
|
|
||||||
"caldir"; //sets/gets the directory where the calibration files are
|
|
||||||
"trimen"; // sets/gets the energies at which the detector is trimmed (no implemented)
|
|
||||||
/* file name */
|
|
||||||
"outdir"; // sets/gets the output directory
|
|
||||||
"fname"; // sets/gets the file name
|
|
||||||
"index"; // sets/gets the start file index (Automatically incremented during the acquisition)
|
|
||||||
"online"; // checks if the detector is online
|
|
||||||
"checkonline"; // checks if the detector is online by testing the connection
|
|
||||||
"enablefwrite"; // enable/disable file writing
|
|
||||||
/* Acquisition actions */
|
|
||||||
"positions"; // sets/gets number of positions and their values
|
|
||||||
"startscript"; // sets/gets start script
|
|
||||||
"startscriptpar"; // sets/gets start script parameter
|
|
||||||
"stopscript"; // sets/gets stop script
|
|
||||||
"stopscriptpar"; // sets/gets stop script parameter
|
|
||||||
"scriptbefore"; // sets/gets scrip before
|
|
||||||
"scriptbeforepar"; //sets/gets scrip before parameter
|
|
||||||
"scriptafter"; // sets/gets script after
|
|
||||||
"scriptafterpar"; //sets/gets script after parameter
|
|
||||||
"headerafter"; // sets/gets header after script
|
|
||||||
"headerafterpar"; // sets/gets header after parameter
|
|
||||||
"headerbefore"; // sets/gets header before script
|
|
||||||
"headerbeforepar"; // sets/gets header before parameter
|
|
||||||
"scan0script"; // sets/gets scan0 script (or none,threshold, energy,position)
|
|
||||||
"scan0par"; // sets/gets scan0 parameter
|
|
||||||
"scan0prec"; // sets/gets scan0 precision (in file name)
|
|
||||||
"scan0steps"; // sets/gets scan0 number of steps and their values
|
|
||||||
"scan0range"; // sets/gets scan0 range (min, max, step)
|
|
||||||
"scan1script"; // sets/gets scan1 script (or none,threshold, energy,position)
|
|
||||||
"scan1par"; // sets/gets scan1 parameter
|
|
||||||
"scan1prec"; // sets/gets scan1 precision (in file name)
|
|
||||||
"scan1steps"; // sets/gets scan1 number of steps and their values
|
|
||||||
"scan1range"; // sets/gets scan1 range (min, max, step)
|
|
||||||
"encallog"; // sets/gets encallog mode (0,1) for energy calibration
|
|
||||||
"angcallog"; // sets/gets angcallog mode (0,1) for energy calibration
|
|
||||||
/* communication configuration */
|
|
||||||
"clientip"; // sets/gest client ip for Gotthard
|
|
||||||
"clientmac"; // sets/gest client mac for Gotthard
|
|
||||||
"servermac"; // sets/gest server mac for Gotthard
|
|
||||||
"configuremac"; // configure the detector mac for Gotthard
|
|
||||||
"port"; // sets control communication port
|
|
||||||
"stopport"; // sets status communication port
|
|
||||||
"dataport"; // sets data port
|
|
||||||
"lock"; // lock detector (no other PC can connect)
|
|
||||||
"lastclient"; // gest last conencted client
|
|
||||||
/* detector and data size */
|
|
||||||
"nmod"; // sets/gets number of modules
|
|
||||||
"maxmod"; // sets/gets maximum number of modules
|
|
||||||
"dr"; // sets/gets dynamic range
|
|
||||||
/* flags */
|
|
||||||
"flags"; // sets/gets readout flags (none, storeinram, tot)
|
|
||||||
"extsig"; // sets/gets configuration of the lemo conenctors
|
|
||||||
"timing"; // sets/gets detector timing mode (auto, gating, trigger)
|
|
||||||
/* versions/ serial numbers getId */
|
|
||||||
"moduleversion"; // gets module version
|
|
||||||
"detectornumber"; // gets detector mac address
|
|
||||||
"modulenumber"; // gets module serial number
|
|
||||||
"detectorversion"; // gets detector firmware version
|
|
||||||
"softwareversion"; // gets detector software version
|
|
||||||
"thisversion"; // get client software version
|
|
||||||
/* digital test and debugging */
|
|
||||||
"digitest"; // digital test of a module
|
|
||||||
"bustest"; // test of CPU-FPGA communication
|
|
||||||
"digibittest"; // for Gotthard
|
|
||||||
"acqtest"; // for Gotthard
|
|
||||||
"reg"; // read/write register - do not use!
|
|
||||||
/* settings, threshold */
|
|
||||||
"settings"; // set/gets settings (standard, fast, highgain)
|
|
||||||
"threshold"; // set threshold in eV
|
|
||||||
"trimbits"; // set/get trimbit value (for all channels!)
|
|
||||||
"trim"; // trim detector (noise, improve etc.)
|
|
||||||
/* r/w timers */
|
|
||||||
"exptime"; // sets/gets exposure time in s
|
|
||||||
"period"; // sets/gets frame period in s
|
|
||||||
"delay"; // sets/gets delay after trigger in s
|
|
||||||
"gates"; // sets/gets number of gates per frame in gated mode
|
|
||||||
"frames"; // sets/gets number of frames
|
|
||||||
"triggers"; // sets/gets number of triggers (use in trigger mode)
|
|
||||||
"probes"; // sets/gets number of probes (advanced!)
|
|
||||||
"measurements"; // sets/gets number of non-real time measurements
|
|
||||||
/* read only timers */
|
|
||||||
"exptimel"; // gets exposure time left
|
|
||||||
"periodl"; // gets period left
|
|
||||||
"delayl"; // gets delay left
|
|
||||||
"gatesl"; // gets number of gates left
|
|
||||||
"framesl"; // gets number of frames left
|
|
||||||
"triggersl"; // gets number of triggers left
|
|
||||||
"now"; // gets time stamp from the dteector
|
|
||||||
"timestamp"; // gets time stamp for the frames (fifo-style)
|
|
||||||
"framescaught";// gets the entire frames caught by receiver
|
|
||||||
"resetframescaught x"; resets the value of framescaught to x
|
|
||||||
/* speed */
|
|
||||||
"clkdivider"; // sets/gets readout clock divider (advanced!)
|
|
||||||
"setlength";// sets/gets readout set/clear length (advanced!)
|
|
||||||
"waitstates"; // sets/gets CPU waitstates (advanced!)
|
|
||||||
"totdivider"; // sets/gets tot ckdivider (advanced!)
|
|
||||||
"totdutycycle"; // sets/gets tot duty cycle (advanced!)
|
|
||||||
/* settings dump/retrieve */
|
|
||||||
"config"; // loads/save configuration file
|
|
||||||
"parameters"; // loads/save parameters file
|
|
||||||
"setup"; // loads/save complete detector setup
|
|
||||||
/* pots */
|
|
||||||
"vthreshold"; // sets/get vthreshold value (advanced! Mythen and Eiger)
|
|
||||||
"vcalibration"; // sets/get vcalibration value (advanced! Mythen)
|
|
||||||
"vtrimbit"; // sets/get vtrimbit value (advanced! Mythen)
|
|
||||||
"vpreamp"; // sets/get vpreamp value (advanced! Mythen)
|
|
||||||
"vshaper1"; // sets/get vshaper1 value (advanced! Mythen)
|
|
||||||
"vshaper2"; // sets/get vshaper2 value (advanced! Mythen)
|
|
||||||
"highvoltage"; // sets/get highvoltage value (advanced! Chiptest board and Eiger)
|
|
||||||
"vapower"; // sets/get vapower value (advanced! Chiptest board)
|
|
||||||
"vddpower"; // sets/get vddpower value (advanced! Chiptest board)
|
|
||||||
"vshpower"; // sets/get vshpower value (advanced! Chiptest board)
|
|
||||||
"viopower"; // sets/get viopower value (advanced! Chiptest board)
|
|
||||||
"vref_ds"; // sets/get vref_ds value (advanced! Gotthard)
|
|
||||||
"vcascn_pb"; // sets/get vcascn_pb value (advanced! Gotthard)
|
|
||||||
"vcascp_pb"; // sets/get vcascp_pb value (advanced! Gotthard)
|
|
||||||
"vout_cm"; // sets/get vout_cm value (advanced! Gotthard)
|
|
||||||
"vcasc_out"; // sets/get vcasc_out value (advanced! Gotthard)
|
|
||||||
"vin_cm"; // sets/get vin_cm value (advanced! Gotthard)
|
|
||||||
"vsvp"; // sets/get vsvp value (advanced! Eiger)
|
|
||||||
"vsvn"; // sets/get vsvn value (advanced! Eiger)
|
|
||||||
"vtr"; // sets/get vtr value (advanced! Eiger)
|
|
||||||
"vrf"; // sets/get vrf value (advanced! Eiger)
|
|
||||||
"vrs"; // sets/get vrs value (advanced! Eiger)
|
|
||||||
"vtgstv"; // sets/get vtgstv value (advanced! Eiger)
|
|
||||||
"vcmp_ll"; // sets/get vcmp_ll value (advanced! Eiger)
|
|
||||||
"vcmp_lr"; // sets/get vcmp_lr value (advanced! Eiger)
|
|
||||||
"vcall"; // sets/get vcall value (advanced! Eiger)
|
|
||||||
"vcmp_rl"; // sets/get vcmp_rl value (advanced! Eiger)
|
|
||||||
"vcmp_rr"; // sets/get vcmp_rr value (advanced! Eiger)
|
|
||||||
"rxb_rb"; // sets/get rxb_rb value (advanced! Eiger)
|
|
||||||
"rxb_lb"; // sets/get rxb_rb value (advanced! Eiger)
|
|
||||||
"vcp"; // sets/get vcp value (advanced! Eiger)
|
|
||||||
"vcn"; // sets/get vcn value (advanced! Eiger)
|
|
||||||
"vis"; // sets/get vis value (advanced! Eiger)
|
|
||||||
"iodelay"; // sets/get iodelay value (advanced! Eiger)
|
|
||||||
|
|
||||||
"vref_comp"; // sets/get vref_comp value (advanced! Gotthard)
|
|
||||||
"ib_test_c"; // sets/get ib_test_c value (advanced! Gotthard)
|
|
||||||
"temp_adc"; // get adc temperature (advanced! Gotthard)
|
|
||||||
"temp_fpga"; //get fpga temperature (advanced! Gotthard)
|
|
||||||
"pulsechip n"; //advanc ed! EIGER: pulses the chip $n$ times with the enable. If n$=-1$, the chip will be set into normal mode.
|
|
||||||
"pulse n x y"; // Pulses pixel at coordinates (x,y) $n$-times.
|
|
||||||
"pulsenmove n x y"; //Pulses pixel $n$-times and moves relatively by x value (x axis) and y value (y axis)
|
|
@ -1,59 +0,0 @@
|
|||||||
The slsDetectorGUI is based on Qt4 with Qwt libraries.
|
|
||||||
|
|
||||||
-Qt4.6 installation:
|
|
||||||
|
|
||||||
Download the opend source version:
|
|
||||||
ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz
|
|
||||||
|
|
||||||
To install:
|
|
||||||
gunzip qt-everywhere-opensource-src-4.6.2.tar.gz
|
|
||||||
tar xvf qt-everywhere-opensource-src-4.6.2.tar
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
By default Qt4 will be installed int /usr/local/Trolltech/Qt-4.6.2/
|
|
||||||
Edit your .bashrc:
|
|
||||||
export QTDIR=/usr/local/Trolltech/Qt-4.6.2
|
|
||||||
export PATH=$QTDIR/bin:$PATH
|
|
||||||
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
|
|
||||||
|
|
||||||
If your system also have Qt3 installed, make sure that QTDIR, PATH and LD_LIBRARY_PATH point to Qt4 before installing Qwt (and of course compiling and running the GUI).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- Qwt5.2 installation
|
|
||||||
|
|
||||||
Download the sources:
|
|
||||||
svn co https://qwt.svn.sourceforge.net/svnroot/qwt/branches/qwt-5.2
|
|
||||||
|
|
||||||
To install:
|
|
||||||
cd qwt-5.2
|
|
||||||
qmake
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
By default Qwt will be installed in /usr/local/qwt-5.2.3-svn/
|
|
||||||
Edit your .bashrc:
|
|
||||||
export QWTDIR=/usr/local/qwt-5.2.3-svn/
|
|
||||||
export LD_LIBRARY_PATH=$QWTDIR/lib:$LD_LIBRARY_PATH
|
|
||||||
|
|
||||||
|
|
||||||
- The calibration wizards are based on the cern root software
|
|
||||||
|
|
||||||
Download the sources
|
|
||||||
svn co https://root.cern.ch/svn/root/trunk root
|
|
||||||
|
|
||||||
To install:
|
|
||||||
cd root
|
|
||||||
./configure --enable-qt
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
edit your .bashrc:
|
|
||||||
export ROOTSYS=/usr/local/root
|
|
||||||
export PATH=$ROOTSYS/bin:$PATH
|
|
||||||
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
|
|
||||||
|
|
||||||
You can also download the binaries, assuming that your linuc and gcc versions match:
|
|
||||||
http://root.cern.ch/drupal/content/production-version-534
|
|