Compare commits
440 Commits
Author | SHA1 | Date | |
---|---|---|---|
be5fee8126 | |||
d9cd780386 | |||
55b4a92453 | |||
0299d315d5 | |||
779a2a0199 | |||
01c785271f | |||
fa25340e5c | |||
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 | |||
c1d841abbc | |||
e57f49086d | |||
07cc28f91b | |||
f6189072bc | |||
453908c7cb | |||
23d9d5fa81 | |||
671ee3179e | |||
de4c834b44 | |||
9c19ce602d | |||
47018b61cd | |||
91ad7b0594 | |||
e3ffc9a57b | |||
b9234ee7f2 | |||
559b02e167 | |||
a5d70c1214 | |||
cefddff848 | |||
0460d7e531 | |||
b31f8a5ca6 | |||
f4a2702996 | |||
476afed516 | |||
3d414e6438 | |||
df376c47d4 | |||
a86d70235c | |||
5cd89487b6 | |||
acf29b6db8 | |||
fddc93ba8d | |||
ae960fcb57 | |||
9f2bc85a18 | |||
3021594e20 | |||
9e8208dc0a | |||
21ad6b3a8a | |||
12abf3e58b | |||
6ddde13b87 | |||
e4226d34dc | |||
c1c885edd2 | |||
a310ab9bfa | |||
904d10eb43 | |||
e364fbcf32 | |||
95f816ad64 | |||
2bd796cfff | |||
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 |
@ -31,7 +31,7 @@ script:
|
||||
|
||||
deploy:
|
||||
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:
|
||||
branch: developer
|
||||
tags: true
|
||||
|
@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.12)
|
||||
project(slsDetectorPackage)
|
||||
set(PROJECT_VERSION 5.0.0)
|
||||
set(PROJECT_VERSION 5.1.0)
|
||||
include(CheckIPOSupported)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
||||
|
||||
@ -49,7 +49,7 @@ option(SLS_DEVEL_HEADERS "install headers for devel" OFF)
|
||||
option(SLS_USE_MOENCH "compile zmq and post processing for Moench" OFF)
|
||||
|
||||
# set(ClangFormat_BIN_NAME clang-format)
|
||||
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
||||
set(ClangFormat_EXCLUDE_PATTERNS "build/"
|
||||
"libs/"
|
||||
"slsDetectorCalibration/"
|
||||
"ctbGui/"
|
||||
@ -61,20 +61,9 @@ find_package(ClangFormat)
|
||||
|
||||
#Enable LTO if 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)
|
||||
|
||||
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
@ -168,8 +157,37 @@ set(CMAKE_INSTALL_RPATH $ORIGIN)
|
||||
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)
|
||||
enable_testing()
|
||||
@ -186,20 +204,12 @@ if (SLS_USE_TEXTCLIENT)
|
||||
add_subdirectory(slsDetectorSoftware)
|
||||
endif (SLS_USE_TEXTCLIENT)
|
||||
|
||||
|
||||
if (SLS_USE_RECEIVER)
|
||||
if (SLS_USE_HDF5)
|
||||
find_package(HDF5 1.10 COMPONENTS CXX REQUIRED)
|
||||
endif (SLS_USE_HDF5)
|
||||
add_subdirectory(slsReceiverSoftware)
|
||||
endif (SLS_USE_RECEIVER)
|
||||
|
||||
if (SLS_USE_GUI)
|
||||
find_package(Qt4 REQUIRED)
|
||||
find_package(Qwt 6.1 REQUIRED)
|
||||
if (QT4_FOUND AND QWT_FOUND)
|
||||
add_subdirectory(slsDetectorGui)
|
||||
endif()
|
||||
add_subdirectory(slsDetectorGui)
|
||||
endif (SLS_USE_GUI)
|
||||
|
||||
if (SLS_USE_SIMULATOR)
|
||||
@ -211,7 +221,7 @@ if (SLS_USE_INTEGRATION_TESTS)
|
||||
endif (SLS_USE_INTEGRATION_TESTS)
|
||||
|
||||
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(python)
|
||||
endif(SLS_USE_PYTHON)
|
||||
|
67
README.md
@ -4,7 +4,7 @@ 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.
|
||||
|
||||
### Documentation
|
||||
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support)
|
||||
Detailed documentation on the latest release of 5.0.0 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).
|
||||
|
||||
### Binaries
|
||||
Binaries for the slsDetectorPackage are available through conda.
|
||||
@ -12,6 +12,7 @@ Binaries for the slsDetectorPackage are available through conda.
|
||||
#Add conda channels
|
||||
conda config --add channels conda-forge
|
||||
conda config --add channels slsdetectorgroup
|
||||
conda config --set channel_priority strict
|
||||
|
||||
conda install slsdetlib #only shared lib and command line
|
||||
conda install slsdet #python bindings (includes slsdetlib)
|
||||
@ -29,10 +30,8 @@ git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
|
||||
|
||||
```
|
||||
#### Dependencies
|
||||
* Lib: c++11 compiler (gcc=>4.8), ZeroMQ 4
|
||||
* Gui: Qt 4.8 and Qwt 6.0
|
||||
* Calibration wizards and ctbGUI: ROOT
|
||||
* Optional: HDF5
|
||||
|
||||
Refer [this page](https://slsdetectorgroup.github.io/devdoc/dependencies.html) for dependencies.
|
||||
|
||||
|
||||
#### Compilation
|
||||
@ -42,27 +41,38 @@ cmk.sh or directly with cmake for more control.
|
||||
|
||||
**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>
|
||||
-[no option]: only make
|
||||
-c: Clean
|
||||
-b: Builds/Rebuilds CMake files normal mode
|
||||
-p: Builds/Rebuilds Python API
|
||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||
-d: HDF5 Custom Directory
|
||||
-t: Build/Rebuilds only text client
|
||||
-r: Build/Rebuilds only receiver
|
||||
-g: Build/Rebuilds only gui
|
||||
-s: Simulator
|
||||
-u: Chip Test Gui
|
||||
-j: Number of threads to compile through
|
||||
-e: Debug mode
|
||||
-i: Builds tests
|
||||
|
||||
eg. Rebuild when you switch to a new build and compile in parallel:
|
||||
./cmk.sh -bj5
|
||||
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
||||
-[no option]: only make
|
||||
-c: Clean
|
||||
-b: Builds/Rebuilds CMake files normal mode
|
||||
-p: Builds/Rebuilds Python API
|
||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||
-d: HDF5 Custom Directory
|
||||
-k: CMake command
|
||||
-l: Install directory
|
||||
-t: Build/Rebuilds only text client
|
||||
-r: Build/Rebuilds only receiver
|
||||
-g: Build/Rebuilds only gui
|
||||
-s: Simulator
|
||||
-u: Chip Test Gui
|
||||
-j: Number of threads to compile through
|
||||
-e: Debug mode
|
||||
-i: Builds tests
|
||||
-m: Manuals
|
||||
-n: Manuals without compiling doxygen (only rst)
|
||||
-z: Moench zmq processor
|
||||
|
||||
# get all options
|
||||
./cmk.sh -?
|
||||
|
||||
# new build and compile in parallel:
|
||||
./cmk.sh -bj5
|
||||
```
|
||||
|
||||
**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.
|
||||
```
|
||||
@ -71,3 +81,12 @@ 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
|
||||
$ 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
|
||||
```
|
||||
|
102
RELEASE.txt
@ -1,70 +1,39 @@
|
||||
SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
||||
===========================================================================
|
||||
SLS Detector Package 5.X.X released on XX.XX.2021 (Minor Release)
|
||||
===================================================================
|
||||
|
||||
This document describes the differences between X and Y releases.
|
||||
|
||||
|
||||
|
||||
CONTENTS
|
||||
--------
|
||||
1. Firmware Requirements
|
||||
2. Download, Documentation & Support
|
||||
1. New Features
|
||||
2. Resolved Issues
|
||||
3. Known Issues
|
||||
4. Firmware Requirements
|
||||
5. Download, Documentation & Support
|
||||
|
||||
|
||||
1. Firmware Requirements
|
||||
|
||||
|
||||
1. New Features
|
||||
===============
|
||||
|
||||
Setting Mythen3 gain from command line
|
||||
|
||||
4. Firmware Requirements
|
||||
========================
|
||||
|
||||
Eiger
|
||||
=====
|
||||
Compatible version : 08.09.2020 (v27)
|
||||
|
||||
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
|
||||
|
||||
|
||||
5. Known Issues
|
||||
===============
|
||||
|
||||
No updates from 5.0.0
|
||||
|
||||
|
||||
|
||||
6. Download, Documentation & Support
|
||||
====================================
|
||||
|
||||
Download
|
||||
@ -91,6 +60,9 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
||||
Consuming slsDetectorPackage:
|
||||
https://slsdetectorgroup.github.io/devdoc/consuming.html
|
||||
|
||||
API Examples:
|
||||
https://github.com/slsdetectorgroup/api-examples
|
||||
|
||||
Command Line Documentation:
|
||||
https://slsdetectorgroup.github.io/devdoc/commandline.html
|
||||
|
||||
@ -109,14 +81,18 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
||||
Python API Example:
|
||||
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:
|
||||
https://slsdetectorgroup.github.io/devdoc/troubleshooting.html
|
||||
|
||||
Further Documentation:
|
||||
https://www.psi.ch/en/detectors/documentation
|
||||
|
||||
Old Release notes:
|
||||
https://www.psi.ch/en/detectors/latest-installation
|
||||
Info on Releases:
|
||||
https://www.psi.ch/en/detectors/software
|
||||
|
||||
|
||||
Support
|
||||
@ -124,4 +100,4 @@ SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
||||
|
||||
dhanya.thattil@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}
|
||||
)
|
||||
|
||||
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)
|
||||
install(
|
||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||
|
@ -12,8 +12,21 @@ include(CMakeFindDependencyMacro)
|
||||
|
||||
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)
|
||||
|
||||
# Add optional dependencies here
|
||||
if (SLS_USE_HDF5)
|
||||
find_dependency(HDF5)
|
||||
endif ()
|
||||
|
33
cmk.sh
@ -1,5 +1,7 @@
|
||||
#!/bin/bash
|
||||
CMAKE="cmake3"
|
||||
BUILDDIR="build"
|
||||
INSTALLDIR=""
|
||||
HDF5DIR="/opt/hdf5v1.10.0"
|
||||
HDF5=0
|
||||
COMPILERTHREADS=0
|
||||
@ -22,13 +24,15 @@ CMAKE_PRE=""
|
||||
CMAKE_POST=""
|
||||
|
||||
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
|
||||
-c: Clean
|
||||
-b: Builds/Rebuilds CMake files normal mode
|
||||
-p: Builds/Rebuilds Python API
|
||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||
-d: HDF5 Custom Directory
|
||||
-k: CMake command
|
||||
-l: Install directory
|
||||
-t: Build/Rebuilds only text client
|
||||
-r: Build/Rebuilds only receiver
|
||||
-g: Build/Rebuilds only gui
|
||||
@ -75,7 +79,7 @@ For rebuilding only certain sections
|
||||
|
||||
" ; exit 1; }
|
||||
|
||||
while getopts ":bpchd:j:trgeisumnz" opt ; do
|
||||
while getopts ":bpchd:k:l:j:trgeisumnz" opt ; do
|
||||
case $opt in
|
||||
b)
|
||||
echo "Building of CMake files Required"
|
||||
@ -99,6 +103,14 @@ while getopts ":bpchd:j:trgeisumnz" opt ; do
|
||||
echo "New HDF5 directory: $OPTARG"
|
||||
HDF5DIR=$OPTARG
|
||||
;;
|
||||
l)
|
||||
echo "CMake install directory: $OPTARG"
|
||||
INSTALLDIR="$OPTARG"
|
||||
;;
|
||||
k)
|
||||
echo "CMake command: $OPTARG"
|
||||
CMAKE="$OPTARG"
|
||||
;;
|
||||
j)
|
||||
echo "Number of compiler threads: $OPTARG"
|
||||
COMPILERTHREADS=$OPTARG
|
||||
@ -252,7 +264,15 @@ else
|
||||
fi
|
||||
|
||||
|
||||
#install
|
||||
if [ -n "$INSTALLDIR" ]; then
|
||||
CMAKE_POST+=" -DCMAKE_INSTALL_PREFIX=$INSTALLDIR"
|
||||
CMAKE_POST+=" -DCMAKE_FIND_ROOT_PATH=$INSTALLDIR"
|
||||
fi
|
||||
|
||||
|
||||
#enter build dir
|
||||
#pushd $BUILDDIR;
|
||||
cd $BUILDDIR;
|
||||
echo "in "$PWD
|
||||
|
||||
@ -261,7 +281,7 @@ echo "in "$PWD
|
||||
#cmake
|
||||
if [ $REBUILD -eq 1 ]; then
|
||||
rm -f CMakeCache.txt
|
||||
BUILDCOMMAND="$CMAKE_PRE cmake3 $CMAKE_POST .."
|
||||
BUILDCOMMAND="$CMAKE_PRE $CMAKE $CMAKE_POST .."
|
||||
echo $BUILDCOMMAND
|
||||
eval $BUILDCOMMAND
|
||||
fi
|
||||
@ -305,6 +325,13 @@ else
|
||||
fi
|
||||
|
||||
|
||||
#install
|
||||
if [ -n "$INSTALLDIR" ]; then
|
||||
make install
|
||||
# popd
|
||||
# $CMAKE --build $BUILDDIR --target install
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -13,8 +13,9 @@ cmake .. \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DSLS_USE_HDF5=OFF\
|
||||
|
||||
|
||||
cmake --build . -- -j10
|
||||
NCORES=$(getconf _NPROCESSORS_ONLN)
|
||||
echo "Building using: ${NCORES} cores"
|
||||
cmake --build . -- -j${NCORES}
|
||||
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.7
|
||||
- 3.8
|
||||
- 3.9
|
||||
|
||||
numpy:
|
||||
- 1.17
|
@ -1,3 +1,3 @@
|
||||
#Copy the GUI
|
||||
mkdir $PREFIX/bin
|
||||
cp build/bin/slsDetectorGui $PREFIX/bin/.
|
||||
mkdir -p $PREFIX/bin
|
||||
cp build/install/bin/slsDetectorGui $PREFIX/bin/.
|
||||
|
@ -1,14 +1,10 @@
|
||||
|
||||
mkdir $PREFIX/lib
|
||||
mkdir $PREFIX/bin
|
||||
mkdir $PREFIX/include
|
||||
mkdir $PREFIX/include/slsDetectorPackage
|
||||
mkdir -p $PREFIX/lib
|
||||
mkdir -p $PREFIX/bin
|
||||
mkdir -p $PREFIX/include/sls
|
||||
# mkdir $PREFIX/include/slsDetectorPackage
|
||||
|
||||
#Shared and static libraries
|
||||
# cp build/bin/libSlsDetector.so $PREFIX/lib/.
|
||||
# cp build/bin/libSlsReceiver.so $PREFIX/lib/.
|
||||
# cp build/bin/libSlsSupport.so $PREFIX/lib/.
|
||||
|
||||
cp build/install/lib/* $PREFIX/lib/
|
||||
|
||||
#Binaries
|
||||
@ -20,5 +16,5 @@ cp build/install/bin/slsReceiver $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
|
||||
|
@ -59,6 +59,16 @@ outputs:
|
||||
script: copy_lib.sh
|
||||
|
||||
requirements:
|
||||
build:
|
||||
- {{ compiler('c') }}
|
||||
- {{compiler('cxx')}}
|
||||
- libstdcxx-ng
|
||||
- libgcc-ng
|
||||
- zeromq
|
||||
|
||||
host:
|
||||
- zeromq
|
||||
|
||||
run:
|
||||
- libstdcxx-ng
|
||||
- libgcc-ng
|
||||
@ -78,6 +88,8 @@ outputs:
|
||||
|
||||
host:
|
||||
- python
|
||||
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||
|
||||
|
||||
run:
|
||||
- libstdcxx-ng
|
||||
@ -94,6 +106,13 @@ outputs:
|
||||
- name: slsdetgui
|
||||
script: copy_gui.sh
|
||||
requirements:
|
||||
|
||||
build:
|
||||
- {{ compiler('c') }}
|
||||
- {{compiler('cxx')}}
|
||||
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||
- qwt 6.*
|
||||
|
||||
run:
|
||||
- {{ pin_subpackage('slsdetlib', exact=True) }}
|
||||
- qwt 6.*
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <TColor.h>
|
||||
#include <TTimer.h>
|
||||
#include <TH2F.h>
|
||||
#include <TSystem.h>
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
@ -25,8 +26,8 @@
|
||||
|
||||
#include "ctbAcquisition.h"
|
||||
#include "ctbDefs.h"
|
||||
#include "Detector.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "sls/Detector.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
#include "ctbMain.h"
|
||||
#include "moench03CtbData.h"
|
||||
//#include "moench03TCtbData.h"
|
||||
@ -43,7 +44,7 @@
|
||||
#include "moench04CtbZmqData.h"
|
||||
#include "moench04CtbZmq10GbData.h"
|
||||
#include "deserializer.h"
|
||||
#include "detectorData.h"
|
||||
#include "sls/detectorData.h"
|
||||
#include "imageZmq16bit.h"
|
||||
#include "imageZmq32bit.h"
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
#include "ctbAdcs.h"
|
||||
#include "ctbDefs.h"
|
||||
#include "Detector.h"
|
||||
#include "sls/Detector.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -10,8 +10,8 @@
|
||||
|
||||
#include "ctbDacs.h"
|
||||
#include "ctbDefs.h"
|
||||
#include "Detector.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "sls/Detector.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -4,8 +4,8 @@
|
||||
#include <stdexcept>
|
||||
#include <chrono>
|
||||
|
||||
//#include "sls_detector_exceptions.h"
|
||||
//#include "ansi.h"
|
||||
//#include "sls/sls_detector_exceptions.h"
|
||||
//#include "sls/ansi.h"
|
||||
#define RED "\x1b[31m"
|
||||
#define RESET "\x1b[0m"
|
||||
#define BOLD "\x1b[1m"
|
||||
|
@ -9,8 +9,8 @@
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
|
||||
#include "Detector.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "sls/Detector.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
//#include "sls_receiver_defs.h"
|
||||
#include "ctbMain.h"
|
||||
#include "ctbDefs.h"
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
|
||||
#include "Detector.h"
|
||||
#include "sls/Detector.h"
|
||||
#include "ctbDefs.h"
|
||||
#include "ctbMain.h"
|
||||
#include "ctbDacs.h"
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
#include "ctbPattern.h"
|
||||
#include "ctbDefs.h"
|
||||
#include "Detector.h"
|
||||
#include "sls/Detector.h"
|
||||
#include <chrono>
|
||||
using namespace std;
|
||||
|
||||
|
@ -13,8 +13,8 @@
|
||||
#include "ctbDefs.h"
|
||||
#include "ctbDacs.h"
|
||||
#include "ctbPowers.h"
|
||||
#include "Detector.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "sls/Detector.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
#include "ctbSignals.h"
|
||||
#include "ctbDefs.h"
|
||||
#include "Detector.h"
|
||||
#include "sls/Detector.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -10,8 +10,8 @@
|
||||
|
||||
#include "ctbSlowAdcs.h"
|
||||
#include "ctbDefs.h"
|
||||
#include "Detector.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "sls/Detector.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -51,7 +51,8 @@ set(SPHINX_SOURCE_FILES
|
||||
src/serverdefaults.rst
|
||||
src/quick_start_guide.rst
|
||||
src/troubleshooting.rst
|
||||
|
||||
src/receivers.rst
|
||||
src/slsreceiver.rst
|
||||
)
|
||||
|
||||
foreach(filename ${SPHINX_SOURCE_FILES})
|
||||
|
@ -30,3 +30,18 @@ Commands
|
||||
-----------
|
||||
|
||||
.. 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.
|
||||
|
||||
CMake: slsDetectorPackage as submodule in your project
|
||||
---------------------------------------
|
||||
---------------------------------------------------------------
|
||||
|
||||
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.
|
||||
@ -91,7 +91,7 @@ manually when invoking g++. This can sometimes be handy for a quick try.
|
||||
|
||||
.. code-block:: cpp
|
||||
|
||||
#include "Detector.h"
|
||||
#include "sls/Detector.h"
|
||||
#include <iostream>
|
||||
int main(){
|
||||
|
||||
|
@ -36,7 +36,7 @@ Running a config file [e1]
|
||||
|
||||
.. code-block:: cpp
|
||||
|
||||
#include "Detector.h"
|
||||
#include "sls/Detector.h"
|
||||
...
|
||||
sls::Detector det;
|
||||
det.loadConfig("path/to/config/file.config");
|
||||
@ -105,7 +105,7 @@ as converting to floating point.
|
||||
|
||||
.. code-block:: cpp
|
||||
|
||||
#include "Detector.h"
|
||||
#include "sls/Detector.h"
|
||||
#include <chrono>
|
||||
...
|
||||
std::chrono::microseconds t0{500};
|
||||
|
@ -12,32 +12,7 @@ Download
|
||||
|
||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||
|
||||
- bit files
|
||||
.. 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/>`__
|
||||
-
|
||||
|
||||
- `bit files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||
|
||||
Upgrade
|
||||
^^^^^^^^
|
||||
@ -116,44 +91,17 @@ Download
|
||||
^^^^^^^^^^^^^
|
||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||
|
||||
- pof files
|
||||
.. 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>`__
|
||||
-
|
||||
|
||||
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||
|
||||
|
||||
Upgrade (from v4.x.x)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Check :ref:`firmware troubleshooting <blackfin firmware troubleshooting>` if you run into issues while programming firmware.
|
||||
|
||||
#. Tftp must be installed on pc.
|
||||
|
||||
#. Update client package to the latest (5.0.0-rc1).
|
||||
#. Update client package to the latest (5.x.x).
|
||||
|
||||
#. Disable server respawning or kill old server
|
||||
.. code-block:: bash
|
||||
@ -201,9 +149,12 @@ Upgrade (from v4.x.x)
|
||||
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.
|
||||
|
||||
|
||||
#. Program from console
|
||||
.. code-block:: bash
|
||||
|
||||
@ -216,6 +167,7 @@ Upgrade (from v5.0.0-rcx)
|
||||
sls_detector_put programfpga xxx.pof
|
||||
|
||||
|
||||
|
||||
Gotthard
|
||||
---------
|
||||
|
||||
@ -223,33 +175,10 @@ Download
|
||||
^^^^^^^^^^^^^
|
||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||
|
||||
- pof files
|
||||
.. 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>`__
|
||||
-
|
||||
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||
|
||||
|
||||
.. _firmware upgrade using blaster for blackfin:
|
||||
|
||||
Upgrade
|
||||
^^^^^^^^
|
||||
@ -287,24 +216,10 @@ Download
|
||||
|
||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||
|
||||
- rbf files
|
||||
.. 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
|
||||
- rbf files (in developement)
|
||||
|
||||
|
||||
Upgrade (from v5.0.0-rcx)
|
||||
Upgrade (from v5.0.0)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#. Program from console
|
||||
@ -330,23 +245,10 @@ Download
|
||||
^^^^^^^^^^^^^
|
||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||
|
||||
- rbf files
|
||||
.. list-table::
|
||||
:widths: 25 10 30 25 10
|
||||
:header-rows: 1
|
||||
- rbf files (in development)
|
||||
|
||||
* - 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)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#. Program from console
|
||||
@ -368,30 +270,14 @@ Download
|
||||
^^^^^^^^^^^^^
|
||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||
|
||||
- pof files
|
||||
.. list-table::
|
||||
:widths: 25 10 30 25 10
|
||||
:header-rows: 1
|
||||
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||
|
||||
* - 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.
|
||||
|
||||
#. Program from console
|
||||
.. code-block:: bash
|
||||
|
||||
@ -410,30 +296,14 @@ Download
|
||||
^^^^^^^^^^^^^
|
||||
- detector server corresponding to package in slsDetectorPackage/serverBin
|
||||
|
||||
- pof files
|
||||
.. list-table::
|
||||
:widths: 25 10 30 25 10
|
||||
:header-rows: 1
|
||||
- `pof files <https://github.com/slsdetectorgroup/slsDetectorFirmware>`__
|
||||
|
||||
* - 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.
|
||||
|
||||
#. Program from console
|
||||
.. code-block:: bash
|
||||
|
||||
@ -443,4 +313,59 @@ Upgrade (from v5.0.0-rcx)
|
||||
sls_detector_put update ctbDetectorServervxxx pcxxx xx.pof
|
||||
|
||||
# Or only program firmware
|
||||
sls_detector_put programfpga xxx.pof
|
||||
sls_detector_put programfpga xxx.pof
|
||||
|
||||
|
||||
.. _blackfin firmware troubleshooting:
|
||||
|
||||
Firmware Troubleshooting with blackfin
|
||||
----------------------------------------
|
||||
|
||||
1. v4.x.x client after programming will most likely reboot the blackfin processor, regardless of error.
|
||||
|
||||
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:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# connect to the board
|
||||
telnet bchipxxx
|
||||
|
||||
# view of mtd3 existing
|
||||
root:/> more /proc/mtd
|
||||
dev: size erasesize name
|
||||
mtd0: 00040000 00020000 "bootloader(nor)"
|
||||
mtd1: 00100000 00020000 "linux kernel(nor)"
|
||||
mtd2: 002c0000 00020000 "file system(nor)"
|
||||
mtd3: 01000000 00010000 "bitfile(spi)"
|
||||
|
||||
4. If one can see the mtd3 drive, one can already try to flash again using the **programfpga** command (without rebooting blackfin or detector).
|
||||
|
||||
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
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
This might take a few reruns (maybe even 10) until the mtd drive is accessed by the blackfin upon linux startup.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# step 1: connect to the board
|
||||
telnet bchipxxx
|
||||
|
||||
# step 2: check if mtd3 drive listed
|
||||
more /proc/mtd
|
||||
|
||||
# step 3: tell fpga not to touch flash and reboot
|
||||
echo 9 > /sys/class/gpio/export;
|
||||
echo out > /sys/class/gpio/gpio9/direction;
|
||||
echo 0 > /sys/class/gpio/gpio9/value;
|
||||
reboot
|
||||
|
||||
# step 4: repeat steps 1 - 3 until you see the mtd3 drive
|
||||
|
||||
|
||||
Last Resort using USB Blaster
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If none of these steps work, the last resort might be physically upgrading the firmware using a USB blaster, which also requires opening up the detector. Instructions for all the blackfin detectors are the same as the one for :ref:`gotthard firmware upgrade <firmware upgrade using blaster for blackfin>`.
|
@ -10,8 +10,8 @@
|
||||
#include <vector>
|
||||
|
||||
#include "CmdProxy.h"
|
||||
#include "Detector.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "sls/Detector.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
std::string replace_all(const std::string &src, const std::string &from,
|
||||
const std::string &to) {
|
||||
@ -51,4 +51,11 @@ int main() {
|
||||
auto help = replace_all(tmp, "\n\t", "\n\t\t| ");
|
||||
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';
|
||||
}
|
||||
}
|
||||
|
@ -66,6 +66,13 @@ Welcome to slsDetectorPackage's documentation!
|
||||
virtualserver
|
||||
serverdefaults
|
||||
|
||||
.. toctree::
|
||||
:caption: Receiver
|
||||
:maxdepth: 2
|
||||
|
||||
receivers
|
||||
slsreceiver
|
||||
|
||||
.. toctree::
|
||||
:caption: Troubleshooting
|
||||
|
||||
|
@ -21,6 +21,8 @@
|
||||
Installation
|
||||
==============================================
|
||||
|
||||
.. _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
|
||||
-------------------------
|
||||
These are mainly aimed at those not familiar with using ccmake and cmake.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
The binaries are generated in slsDetectorPackage/build/bin directory.
|
||||
|
||||
# new build and make with 9 parallel threads
|
||||
./cmk.sh -cbj9
|
||||
|
||||
# build with python
|
||||
./cmk.sh -bpj9
|
||||
|
||||
# build with GUI
|
||||
./cmk.sh -bgj9
|
||||
|
||||
# build with hdf5
|
||||
./cmk.sh -hj9 -d [path of hdf5 dir]
|
||||
|
||||
Usage: $0 [-c] [-b] [-p] [e] [t] [r] [g] [s] [u] [i] [m] [n] [-h] [z] [-d <HDF5 directory>] [-l Install directory] [-k <CMake command>] [-j <Number of threads>]
|
||||
-[no option]: only make
|
||||
-c: Clean
|
||||
-b: Builds/Rebuilds CMake files normal mode
|
||||
-p: Builds/Rebuilds Python API
|
||||
-h: Builds/Rebuilds Cmake files with HDF5 package
|
||||
-d: HDF5 Custom Directory
|
||||
-k: CMake command
|
||||
-l: Install directory
|
||||
-t: Build/Rebuilds only text client
|
||||
-r: Build/Rebuilds only receiver
|
||||
-g: Build/Rebuilds only gui
|
||||
-s: Simulator
|
||||
-u: Chip Test Gui
|
||||
-j: Number of threads to compile through
|
||||
-e: Debug mode
|
||||
-i: Builds tests
|
||||
-m: Manuals
|
||||
-n: Manuals without compiling doxygen (only rst)
|
||||
-z: Moench zmq processor
|
||||
|
||||
# get all options
|
||||
./cmk.sh -?
|
||||
|
||||
# new build and compile in parallel:
|
||||
./cmk.sh -bj5
|
||||
|
||||
|
||||
Install binaries using conda
|
||||
--------------------------------
|
||||
|
@ -1,6 +1,6 @@
|
||||
Receiver
|
||||
==============================================
|
||||
|
||||
.. doxygenclass:: Receiver
|
||||
.. doxygenclass:: sls::Receiver
|
||||
:members:
|
||||
.. :undoc-members:
|
71
docs/src/receivers.rst
Normal file
@ -0,0 +1,71 @@
|
||||
Receivers
|
||||
=================
|
||||
|
||||
Receiver processes can be run on same or different machines as the client, receives the data from the detector (via UDP packets).
|
||||
When using the slsReceiver/ slsMultiReceiver, they can be further configured by the client control software (via TCP/IP) to set file name, file path, progress of acquisition etc.
|
||||
|
||||
Detector UDP Header
|
||||
---------------------
|
||||
|
||||
| The UDP data format for the packets consist of a common header for all detectors, followed by the data for that one packet.
|
||||
|
||||
**The SLS Detector Header**
|
||||
|
||||
.. table:: <-------------------------------- 8 bytes -------------------------------->
|
||||
:align: center
|
||||
:widths: 30,30,30,30
|
||||
|
||||
+--------------------------------------------------------------------+
|
||||
|frameNumber |
|
||||
+---------------------------------+----------------------------------+
|
||||
|expLength |packetNumber |
|
||||
+---------------------------------+----------------------------------+
|
||||
|bunchId |
|
||||
+--------------------------------------------------------------------+
|
||||
|timestamp |
|
||||
+----------------+----------------+----------------+-----------------+
|
||||
|modId |row |column |reserved |
|
||||
+----------------+----------------+----------------+--------+--------+
|
||||
|debug |roundRNumber |detType |version |
|
||||
+---------------------------------+----------------+--------+--------+
|
||||
|
||||
UDP configuration in Config file
|
||||
----------------------------------
|
||||
|
||||
#. UDP source port is hardcoded in detector server, starting at 32410.
|
||||
#. **udp_dstport** : UDP destination port number. Port in receiver pc to listen to packets from the detector.
|
||||
#. **udp_dstip** : IP address of UDP destination interface. IP address of interface in receiver pc to listen to packets from detector. If **auto** is used (only when using slsReceiver/ slsMultiReceiver), the IP of **rx_hostname** is picked up.
|
||||
#. **udp_dstmac** : Mac address of UDP destination interface. MAC address of interface in receiver pc to list to packets from detector. Only required when using custom receiver, else slsReceiver/slsMultiReceiver picks it up from **udp_dstip**.
|
||||
#. **udp_srcip** : IP address of UDP source interface. IP address of detector UDP interface to send packets from. Do not use for Eiger 1Gb interface (uses its hardware IP). For others, must be in the same subnet as **udp_dstip**.
|
||||
#. **udp_srcmac** : MAC address of UDP source interface. MAC address of detector UDP interface to send packets from. Do not use for Eiger (uses hardware mac). For others, it is not necessary, but can help for switch and debugging to put unique values for each module.
|
||||
|
||||
|
||||
Custom Receiver
|
||||
----------------
|
||||
|
||||
| When using custom receiver with our package, ensure that **udp_dstmac** is also configured in the config file. This parameter is not required when using slsReceiver.
|
||||
|
||||
| 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.
|
||||
|
||||
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
|
170
docs/src/slsreceiver.rst
Normal file
@ -0,0 +1,170 @@
|
||||
slsReceiver/ slsMultiReceiver
|
||||
================================
|
||||
|
||||
| One has to start the slsReceiver before loading config file or using any receiver commands (prefix: **rx_** )
|
||||
|
||||
For a Single Module
|
||||
.. code-block:: bash
|
||||
|
||||
# default port 1954
|
||||
slsReceiver
|
||||
|
||||
# custom port 2012
|
||||
slsReceiver -t2012
|
||||
|
||||
|
||||
For Multiple Modules
|
||||
.. code-block:: bash
|
||||
|
||||
# each receiver (for each module) requires a unique tcp port (if all on same machine)
|
||||
|
||||
# using slsReceiver in multiple consoles
|
||||
slsReceiver
|
||||
slsReceiver -t1955
|
||||
|
||||
# slsMultiReceiver [starting port] [number of receivers]
|
||||
slsMultiReceiver 2012 2
|
||||
|
||||
# slsMultiReceiver [starting port] [number of receivers] [print each frame header for debugging]
|
||||
slsMultiReceiver 2012 2 1
|
||||
|
||||
|
||||
Client Commands
|
||||
-----------------
|
||||
|
||||
| One can remove **udp_dstmac** from the config file, as the slsReceiver fetches this from the **udp_ip**.
|
||||
|
||||
| One can use "auto" for **udp_dstip** if one wants to use default ip of **rx_hostname**.
|
||||
|
||||
| The first command to the receiver (**rx_** commands) should be **rx_hostname**. The following are the different ways to establish contact.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# default receiver tcp port (1954)
|
||||
rx_hostname xxx
|
||||
|
||||
# custom receiver port
|
||||
rx_hostname xxx:1957
|
||||
|
||||
# custom receiver port
|
||||
rx_tcpport 1954
|
||||
rx_hostname xxx
|
||||
|
||||
# multi modules with custom ports
|
||||
rx_hostname xxx:1955+xxx:1956+
|
||||
|
||||
# multi modules with custom ports on same rxr pc
|
||||
0:rx_tcpport 1954
|
||||
1:rx_tcpport 1955
|
||||
2:rx_tcpport 1956
|
||||
rx_hostname xxx
|
||||
|
||||
# multi modules with custom ports on different rxr pc
|
||||
0:rx_tcpport 1954
|
||||
0:rx_hostname xxx
|
||||
1:rx_tcpport 1955
|
||||
1:rx_hostname yyy
|
||||
|
||||
|
||||
| Example commands:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# to get a list of receiver commands (these dont include file commands)
|
||||
sls_detector_get list | grep rx_
|
||||
|
||||
# some file commands are:
|
||||
fwrite
|
||||
foverwrite
|
||||
findex
|
||||
fpath
|
||||
fname
|
||||
fmaster
|
||||
fformat
|
||||
|
||||
# to get help on a single commands
|
||||
sls_detector_get -h rx_framescaught
|
||||
|
||||
|
||||
File format
|
||||
--------------
|
||||
|
||||
* The file name format is [fpath]/[fname]_dx_fy_[findex].raw, where x is module index and y is file index. **fname** is file name prefix and by default "run". **fpath** is '/' by default.
|
||||
|
||||
* Each acquisition will have an increasing acquisition index or findex (if file write enabled). This can be retrieved by using **findex** command.
|
||||
|
||||
* Each acquisition can have multiple files (the file index number **y**), with **rx_framesperfile** being the maximum number of frames per file. The default varies for each detector type.
|
||||
|
||||
* Some file name examples:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# first file
|
||||
path-to-file/run_d0_f0_0.raw
|
||||
|
||||
# second file after reaching max frames in first file
|
||||
path-to-file/run_d0_f1_0.raw
|
||||
|
||||
# second acquisition, first file
|
||||
path-to-file/run_d0_f0_1.raw
|
||||
|
||||
* Each acquisition will create a master file that can be enabled/disabled using **fmaster**. This should have parameters relevant to the acquisition.
|
||||
|
||||
* SLS Receiver Header consist of SLS Detector Header + 64 bytes of bitmask, altogether 112 bytes. The packetNumber in the sls detector header part, will be updated to number of packets caught by receiver for that frame. Furthermore, the bit mask will specify which packets have been received.
|
||||
|
||||
**Binary file format**
|
||||
|
||||
* This is the default file format.
|
||||
|
||||
* Each data file will consist of frames, each consisting of slsReceiver Header followed by data for 1 frame.
|
||||
|
||||
* Master file is of ASCII format and will also include the format of the slsReceiver Header.
|
||||
|
||||
|
||||
**HDF5 file formats**
|
||||
|
||||
#. Compile the package with HDF5 option enabled
|
||||
|
||||
#. Using cmk script: ./cmk.sh -hj9 -d [path of hdf5 dir]
|
||||
|
||||
#. Enable using cmake **-DCMAKE_INSTALL_PREFIX=/path/to/hdf/installation** and **-DSLS_USE_HDF5=ON**
|
||||
|
||||
#. Start Receiver process
|
||||
|
||||
#. Load config file
|
||||
|
||||
#. Set file format from client or in config file
|
||||
.. code-block:: bash
|
||||
|
||||
sls_detector_put fformat hdf5
|
||||
|
||||
|
||||
| For multiple, modules, a virtual file linking all the modules is created. Both the data files and virtual files are linked in the master file.
|
||||
|
||||
|
||||
Performance
|
||||
-------------
|
||||
|
||||
Please refer to Receiver PC Tuning options and slsReceiver Tuning under `Troubleshooting <https://slsdetectorgroup.github.io/devdoc/troubleshooting.html>`_.
|
||||
|
||||
|
||||
Using Callbacks
|
||||
----------------
|
||||
|
||||
One can get a callback in the receiver for each frame to:
|
||||
* 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
|
||||
|
||||
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
|
||||
=================
|
||||
|
||||
If something is missing, don't hesitate to
|
||||
open an issue at our `github repo issues
|
||||
<https://github.com/slsdetectorgroup/slsDetectorPackage/issues>`_.
|
||||
|
||||
Common
|
||||
------
|
||||
|
||||
|
@ -13,7 +13,7 @@ Compilation
|
||||
* Using cmk.sh script,
|
||||
.. code-block:: bash
|
||||
|
||||
./cmk.sh -b**s**j9 #option s is for simulator
|
||||
./cmk.sh -bsj9 #option s is for simulator
|
||||
|
||||
|
||||
Binaries
|
||||
@ -60,6 +60,7 @@ Client
|
||||
sls_detector_put virtual 2 1912
|
||||
|
||||
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
|
||||
|
@ -8,18 +8,15 @@ rx_hostname pcmoench01
|
||||
udp_dstport 50004
|
||||
|
||||
# udp destination ip (receiver)
|
||||
#udp_dstip 172.24.8.84
|
||||
# or to get ip from rx_hostname
|
||||
udp_dstip auto
|
||||
udp_dstip 10.0.1.100
|
||||
|
||||
# udp source ip (same subnet as udp_dstip)
|
||||
udp_srcip 172.24.8.254
|
||||
udp_srcip 10.0.1.184
|
||||
|
||||
|
||||
# PCBv2.0 (using 2 interfaces)
|
||||
# PCBv2.0 (using 2 interfaces, top)
|
||||
udp_dstport2 50005
|
||||
udp_dstip2 auto
|
||||
udp_srcip2 172.24.8.111
|
||||
udp_dstip2 10.0.2.100
|
||||
udp_srcip2 10.0.2.184
|
||||
# enable two interfaces
|
||||
numinterfaces 2
|
||||
# select inner interface(effective only when numinterfaces is 1)
|
||||
|
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,6 +1,6 @@
|
||||
#include "DetectorImpl.h"
|
||||
#include "catch.hpp"
|
||||
#include "string_utils.h"
|
||||
#include "sls/string_utils.h"
|
||||
#include "tests/globals.h"
|
||||
#include <iostream>
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
|
||||
#include "catch.hpp"
|
||||
|
||||
#include "ClientSocket.h"
|
||||
#include "DetectorImpl.h"
|
||||
#include "Module.h"
|
||||
#include "logger.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include "sls/ClientSocket.h"
|
||||
#include "sls/logger.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
#include "Timer.h"
|
||||
#include "sls_detector_funcs.h"
|
||||
#include "sls/Timer.h"
|
||||
#include "sls/sls_detector_funcs.h"
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#define VERBOSE
|
||||
@ -446,8 +446,8 @@ TEST_CASE("Chiptestboard Dbit offset, list, sampling, advinvert",
|
||||
CHECK(m.readRegister(0x7b) == 0x1003E);
|
||||
}
|
||||
|
||||
TEST_CASE("Eiger or Jungfrau startingfnum",
|
||||
"[.eigerintegration][.jungfrauintegration][startingfnum]") {
|
||||
TEST_CASE("Eiger or Jungfrau nextframenumber",
|
||||
"[.eigerintegration][.jungfrauintegration][nextframenumber]") {
|
||||
SingleDetectorConfig c;
|
||||
|
||||
// pick up multi detector from shm id 0
|
||||
@ -465,8 +465,8 @@ TEST_CASE("Eiger or Jungfrau startingfnum",
|
||||
// starting fnum
|
||||
uint64_t val = 8;
|
||||
|
||||
m.setStartingFrameNumber(val);
|
||||
CHECK(m.getStartingFrameNumber() == val);
|
||||
m.setNextFrameNumber(val);
|
||||
CHECK(m.getNextFrameNumber() == val);
|
||||
CHECK(m.acquire() == slsDetectorDefs::OK);
|
||||
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
||||
|
||||
@ -474,18 +474,18 @@ TEST_CASE("Eiger or Jungfrau startingfnum",
|
||||
CHECK(m.acquire() == slsDetectorDefs::OK);
|
||||
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
||||
|
||||
CHECK_THROWS_AS(m.setStartingFrameNumber(0), sls::RuntimeError);
|
||||
CHECK_THROWS_AS(m.setNextFrameNumber(0), sls::RuntimeError);
|
||||
|
||||
if (m.getDetectorTypeAsString() == "Eiger") {
|
||||
val = 281474976710655;
|
||||
} else if (m.getDetectorTypeAsString() == "Jungfrau") {
|
||||
val = 18446744073709551615;
|
||||
}
|
||||
m.setStartingFrameNumber(val);
|
||||
CHECK(m.getStartingFrameNumber() == val);
|
||||
m.setNextFrameNumber(val);
|
||||
CHECK(m.getNextFrameNumber() == val);
|
||||
CHECK(m.acquire() == slsDetectorDefs::OK);
|
||||
CHECK(m.getReceiverCurrentFrameIndex() == val);
|
||||
CHECK(m.getStartingFrameNumber() == (val + 1));
|
||||
CHECK(m.getNextFrameNumber() == (val + 1));
|
||||
}
|
||||
|
||||
TEST_CASE("Eiger readnlines", "[.eigerintegration][readnlines]") {
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "DetectorImpl.h"
|
||||
#include "catch.hpp"
|
||||
#include "string_utils.h"
|
||||
#include "sls/string_utils.h"
|
||||
#include "tests/globals.h"
|
||||
#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
|
@ -1,86 +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 = NO
|
||||
|
||||
SHOW_FILES = NO
|
||||
|
||||
SHOW_NAMESPACES = NO
|
||||
|
||||
COMPACT_LATEX = YES
|
||||
|
||||
PAPER_TYPE = a4
|
||||
|
||||
PDF_HYPERLINKS = YES
|
||||
|
||||
USE_PDFLATEX = YES
|
||||
|
||||
LATEX_HIDE_INDICES = YES
|
||||
|
||||
|
||||
PREDEFINED = __cplusplus
|
||||
|
||||
INPUT = slsDetectorCommand.cpp
|
||||
|
||||
OUTPUT_DIRECTORY = slsDetectorClientDocs
|
@ -1,760 +0,0 @@
|
||||
\documentclass{article}
|
||||
\usepackage{amssymb}
|
||||
\usepackage[dvips]{graphicx}
|
||||
\usepackage{verbatim}
|
||||
\usepackage{xspace}
|
||||
\newcommand{\E}{EIGER\xspace}
|
||||
\begin{document}
|
||||
|
||||
\title{SLS Detector text clients manual}
|
||||
\date{\today}
|
||||
\maketitle
|
||||
|
||||
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
This program is intended to control the SLS detectors via command line interface.\\
|
||||
This is the only way to access all possible functionality of the detectors, however it is often recommendable to avoid changing the most advanced settings, rather leaving the task to configuration files, as when using the GUI or the API provided.
|
||||
|
||||
The command line interface consists in four main functions:
|
||||
\begin{description}
|
||||
\item[sls\_detector\_acquire] to acquire data from the detector
|
||||
\item[sls\_detector\_put] to set detector parameters
|
||||
\item[sls\_detector\_get] to retrieve detector parameters
|
||||
\item[sls\_detector\_help] to get help concerning the text commands
|
||||
\end{description}
|
||||
Additionally the program \textbf{slsReceiver} should be started on the machine expected to receive the data from the detector.
|
||||
|
||||
|
||||
If you need control a single detector, the use of the command line interface does not need any additional arguments.
|
||||
|
||||
For commands addressing a single controller of your detector, the command \verb=cmd= should be called with the index \verb=i= of the controller:\\
|
||||
\verb=sls_detector_clnt i:cmd=\\
|
||||
where \verb=sls_detector_clnt= is the text client (put, get, acquire, help).
|
||||
|
||||
In case more than one detector is configured on the control PC, the command \verb=cmd= should be called with their respective index \verb=j=:
|
||||
\verb=sls_detector_clnt j-cmd=\\
|
||||
where \verb=sls_detector_clnt= is the text client (put, get, acquire, help).
|
||||
|
||||
To address a specific controller \verb=i= of detector \verb=j= use:\\
|
||||
\verb=sls_detector_clnt j-i:cmd=
|
||||
|
||||
For additional questions concerning the indexing of the detector, please refer to the \textit{SLS Detectors FAQ} documentation.
|
||||
|
||||
|
||||
\section{Acquisition}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
By calling:\\
|
||||
\verb=sls\_detector\_acquire [j-]=\\
|
||||
the detector \verb=j= is started and the data are acquired, postprocessed and written to file according to the configuration and setup of the measurements.\\
|
||||
A progress index of the acquisition in percentage is shown on the command line.
|
||||
|
||||
For additional questions concerning the acquisition flow, please refer to the \textit{SLS Detectors FAQ} documentation.
|
||||
|
||||
\section{Detector setup}
|
||||
|
||||
\verb=sls\_detector\_put [j-][i:]var arg=\\
|
||||
|
||||
is used to configure the detector parameters \verb=var= with the value \verb=arg=.\\
|
||||
It returns the actual value of the variable, as when calling \verb=sls\_detector\_get= with the same command.
|
||||
|
||||
\subsection{Standard commands}
|
||||
|
||||
|
||||
\begin{description}
|
||||
\item[config fname]
|
||||
Load the configuration file fname. \\
|
||||
Examples of configuration files are available in the directory \verb=examples=. This should be done every time the configuration of the detectors(s) changes or the control PC is rebooted. Must be executed on all the control PCs, before executing other commands.
|
||||
\item[parameters fname]
|
||||
Load the parameter file fname. \\
|
||||
The syntax of the commands in the parameter file is exactly the same as for the command line interface. Can be used to load a standard mode of acquisition and/or to hide advanced parameters from the final user. Examples of parameter files are available in the directory \verb=examples=.
|
||||
\item[settings sett]
|
||||
Configures the settings of the detector. Refer to detailed detector documentation for more details: \\
|
||||
for MYTHEN sett can be: standard, fast, highgain;\\
|
||||
for GOTTHARD sett can be: veryhighgain, highgain, mediumgain, lowgain, dynamicgain;\\
|
||||
for \E sett can be: standard, highgain, lowgain.
|
||||
\item[threshold ev]
|
||||
For photon counting detectors, sets the detector threshold in eV. The detector should be properly calibrated, otherwise standard calibration coefficients are used, which can give an uncertainty up to a few keVs.
|
||||
\item[timing sync]
|
||||
Sets the timing mode of the detector. Can be auto, gating (works only if at least one of the signals is configured as gate\_in), trigger (works only if at least one of the signals is configured as trigger\_in), ro\_trigger (works only if at least one of the signals is configured as ro\_trigger\_in), triggered\_gating (works only if one of the signals is configured as gate\_in and one as trigger\_in). \\
|
||||
Refer to the detailed documentation to understand how the different timing modes work.
|
||||
\item[outdir path]
|
||||
Defines the path where the output files will be saved to.
|
||||
\item[fname prefix]
|
||||
Defines the prefix of the file name for the data output. \\
|
||||
The final file name will be: \\
|
||||
\verb=prefix[_d=\textit{d}\verb=][_S=\textit{v0}\verb=][_s=\textit{v1}\verb=][_p=\textit{p}\verb=][_f=\textit{f}\verb=]_=\textit{i}\verb=.=\textit{ext}\\
|
||||
where: \\
|
||||
\textit{d} is the controller index, in case of data receiver and more than one controller;\\
|
||||
\textit{v0} is the scan0 variable with the desired precision, if scan0 is enabled;\\
|
||||
\textit{v1} is the scan1 variable with the desired precision, if scan1 is enabled;\\
|
||||
\textit{p} is the position index, if different positions are configured;\\
|
||||
\textit{f} is the frame index of the first frame stored in the file, if many frames and triggers are configured;\\
|
||||
\textit{i} is the file index;\\
|
||||
\textit{ext} is the file extension e.g. \textit{.raw} for MYTHEN and \E raw data, \textit{.dat} for MYTHEN processed data.
|
||||
\item[index i] Sets the starting index of the file i at the beginning of the acquisition (automatically incremented for each measurement).
|
||||
\item[enablefwrite b] Enables (1) or disables (0) file writing.
|
||||
\item[exptime ts]
|
||||
Sets the exposure time of a single acquisition to ts (in s). It is overridden in case the detector is in gating mode. \\
|
||||
Refere to detailed documentation to understand how the different timing modes work.
|
||||
\item[subexptime ts]
|
||||
Sets the subexposure time of a single subacquisition to ts (in s) in \E autosumming mode (=\textit{dr 32}). Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[period ts]
|
||||
Sets the frames period (in s). It is overridden in case the detector is in gating mode. \\
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[delay ts]
|
||||
Sets the delay after trigger in triggered mode (in s).\\
|
||||
Refer to the detailed documentation to understand how the different timing modes work.
|
||||
\item[gates n]
|
||||
Sets the number of gates per frame in gated (stroboscopic) mode.\\
|
||||
Refer to the detailed documentation to understand how the different timing modes work.
|
||||
\item[frames n]
|
||||
Sets the number of frames acquired sequentially per cycle (e.g. after each trigger), with the exposure time defined by exptime and the period defined by period (unless in gated mode). The frame index in the output file name will automatically be incremented.\\
|
||||
Note that the total number of images will be frames times triggers. Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[triggers n]
|
||||
Sets the number of triggers (e.g. number of triggers). The frame index in the output file name will automatically be incremented. \\
|
||||
Note that the total number of images will be by frames times triggers. Refer to the detailed documentation to understand how the different timing modes work.
|
||||
\item[probes] Sets the number of probes to accumulate for stroboscopic measurements. \\
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[measurements] Sets the number of repetitions of the acquisitions (non real time!). The file index in the file name will be automatically incremented.\\
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[dr n] Sets the dynamic range n (in bits) of the data for a photon counting detector. For \E it can be set to 4, 8, 16 (but the real counter depth will still be limited to 12 bits) or 32 when one wants to activate the internal subframe summing mode.
|
||||
|
||||
\item[flags s] Sets some particular flags for your detector. For MYTHEN s can be \textit{none}, \textit{storeinram} (for buffered readout) or \textit{tot} (for time over threshold). For \E, s can be {\it{continous}} (for continous readout- still buffer on memories happens), \textit{storeinram} (for buffered readout. Do not use as has no graet advantages), \textit{parallel} for parallel exposure to the next frame and readout of the previous frame, \textit{nonparallel} to decouple sequentially readout and exposure, \textit{safe} (rowclock interleaved).
|
||||
%\item[timestamp]
|
||||
\item[help cmd] Returns the help for command cmd.
|
||||
\item[lock] Locks (1) or unlocks (0) the detector to this particular control PC. An be unlocked again only from the same PC or by rebooting the detector.
|
||||
%\item[lastclient]
|
||||
\item[nmod n] Sets the number of modules for the detector to n for partial readout. Will be replaced by ROI.
|
||||
%\item[maxmod]
|
||||
\end{description}
|
||||
|
||||
\subsection{Postprocessing commands}
|
||||
\begin{description}
|
||||
\item[flatfield fname] Sets the flat field file name. File ffdir/fname will be used to calculate the flat field coefficients. \textit{none} to unset flat field corrections.
|
||||
\item[ratecorr ns] Sets the deadtime to be used for rate corrections in ns. 0 to unset, -1 to use default dead time for the actual settings.In the case of \E, as online data rate correctiosn are applied, then a correction table has to be calculated every time the rate correction $\tau$ is changed, activated, or the subexposure time is changed.
|
||||
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Angular conversion}
|
||||
|
||||
\begin{description}
|
||||
\item[fineoff deg] Sets the fine offset for the experiment.
|
||||
\item[samplex mm] Sets the sample displacement from the center of the diffractometer in the X-ray direction, to improve angular conversion (unused).
|
||||
\item[sampley mm] Sets the sample displacement from the center of the diffractometer in the ortogonal direction, to improve angular conversion (unused)
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Acquisition}
|
||||
See SLS Detectors Documentation for a detailed description of the acquisition flow.
|
||||
\begin{description}
|
||||
\item[positions n p1 p2...pn] Sets the number of positions n and their value.
|
||||
\item[startscript s] Sets the script to be executed at the beginning of each measurement. \textit{none} unsets.
|
||||
\item[startscriptpar p] Sets the parameter to be passed to the start script
|
||||
\item[stopscript s] Sets the script to be executed at the end of each measurement. \textit{none} unsets.
|
||||
\item[stopscriptpar p] Sets the parameter to be passed to the stop script.
|
||||
\item[scriptbefore s] Sets the script to be executed before each acquisition. \textit{none} unsets.
|
||||
\item[scriptbeforepar p] Sets the parameter to be passed to the script before.
|
||||
\item[scriptafter s] Sets the script to be executed after each acquisition. \textit{none} unsets.
|
||||
\item[scriptafterpar p] Sets the parameter to be passed to the script after.
|
||||
\item[headerbefore s] Sets the script to be executed to acquire the header of the acquisition. \textit{none} unsets.
|
||||
\item[headerbeforepar p] Sets the parameter to be passed to the header before.
|
||||
\item[headerafter s] Sets the script to be executed to append to the header of the acquisition. \textit{none} unsets.
|
||||
\item[headerafterpar p] Sets the parameter to be passed to the header after.
|
||||
\item[scan0scripts s] Sets the script to execute at scan 0 level. \textit{none} unsets, \textit{threshold, energy, trimbits, position} perform the corresponding scans without need of a custom script.
|
||||
\item[scan0par p] Sets a parameter to be passed to the scan 0 level script.
|
||||
\item[scan0prec i] Sets the number of decimal digits for the scan0 level parameter in the file name (default is 0).
|
||||
\item[scan0steps n s1 s2..sn] Sets the number of scan 0 level steps n and their value.
|
||||
\item[scan0range min max step] Sets the minimum, the maximum and the step for the scan 0 level steps (easier to use than scan0steps if equally spaced steps in a range)
|
||||
\item[scan1script s] Sets the script to execute at scan 1 level. \textit{none} unsets, \textit{threshold, energy, trimbits, position} perform the corresponding scans without need of a custom script.
|
||||
\item[scan1par p] Sets a parameter to be passed to the scan 1 level script.
|
||||
\item[scan1prec i] Sets the number of decimal digits for the scan1 level parameter in the file name (default is 0).
|
||||
\item[scan1steps n s1 s2...sn] Sets the number of scan 0 level steps n and their value.
|
||||
\item[scan1range min max step] Sets the minimum, the maximum and the step for the scan 0 level steps (easier to use than scan0steps if equally spaced steps in a range)
|
||||
\end{description}
|
||||
|
||||
\begin{comment}
|
||||
\subsection{Debug}
|
||||
|
||||
\begin{description}
|
||||
\item[moduleversion]
|
||||
\item[detectornumber]
|
||||
\item[modulenumber]
|
||||
\item[detectorversion]
|
||||
\item[softwareversion]
|
||||
\item[thisversion]
|
||||
\item[detectorsvnversion]
|
||||
\item[digitest]
|
||||
\item[bustest]
|
||||
\item[acqtest]
|
||||
\end{description}
|
||||
\end{comment}
|
||||
\subsection{Advanced commands}
|
||||
|
||||
|
||||
\subsubsection{Calibration}
|
||||
This operations should be performed only rarely to configure the detector
|
||||
|
||||
\begin{description}
|
||||
\item[trim:mode fname] Trims the detector according to mode (can be noise, beam, improve, fix) and saves the resulting trimbits to file fname. Take care to set a proper exptime and vthreshold before trimming.
|
||||
\item[encallog b] Sets (1) or unsets (0) the logging for energy calibration.
|
||||
\item[angcallog b] Sets (1) or unsets (0) the logging for angular calibration.
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
|
||||
\subsubsection{Acquisition}
|
||||
|
||||
It is normally recommended to use \verb=sls\_detector\_acquire [j-]=, which takes care of everything
|
||||
\begin{description}
|
||||
%\item[acquire] It is normally reccomended to use \verb=sls\_detector\_acquire [j-]=, which takes care of everything
|
||||
%\item[data]
|
||||
%\item[frame]
|
||||
\item[status s] Starts (start) or stops (stop) the detector acquisition.
|
||||
\item[online b] Sets the detector in online (1) or offline (0) mode.
|
||||
%\item[checkonline]
|
||||
%\item[readctr i fname] GOTTHARD related - reads counter in detector to file fname, restarts acquisition if i=1
|
||||
\item[resetctr i] GOTTHARD- ADVANCED- resets counter in detector, restarts acquisition if i=1
|
||||
\item[resmat i] \E - ADVANCED - resets counter in detector before the following acquisition. Default settings is \textit{resmat 1}. \textit{resmat 0} does not reset the counter bit before the acquisition. Note that in \E the counter is always reset after the acquisition.
|
||||
%\item[exptimel]
|
||||
%\item[periodl]
|
||||
%\item[delayl]
|
||||
%\item[gatesl]
|
||||
%\item[framesl]
|
||||
%\item[triggersl]
|
||||
%\item[frameindex]
|
||||
%\item[now]
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
\subsubsection{Configuration}
|
||||
Advanced commands to configure the detector system. Should be left to the configuration file
|
||||
\begin{description}
|
||||
\item[type s] Sets the types of detector controllers in the system. Can be Mythen, Gotthard, \E and multiple controllers should be catenated with a + (e.g. Mythen+Mythen for 2 Mythen controllers).
|
||||
\item[d:hostname s] Sets the hostname or IP address for the controller d, where d is the controller index within the detector structure.
|
||||
\item[d:extsig:i s] Configures the usage of the external IO signals to synchronize the detectors. s can be: off, gate\_in\_active\_high, gate\_in\_active\_low, trigger\_in\_rising\_edge,
|
||||
trigger\_in\_falling\_edge,
|
||||
ro\_trigger\_in\_rising\_edge,
|
||||
ro\_trigger\_in\_falling\_edge,
|
||||
gate\_out\_active\_high,
|
||||
gate\_out\_active\_low,
|
||||
trigger\_out\_rising\_edge,
|
||||
trigger\_out\_falling\_edge,
|
||||
ro\_trigger\_out\_rising\_edge,
|
||||
ro\_trigger\_out\_falling\_edge, sync. \\Usually left to the configuration file. Gating, triggering etc. are enabled only by calling the timing command. \\
|
||||
Please refer to SLS Detectors FAQ documentation for more detailed information about the usage.
|
||||
|
||||
\item[master i] Sets the master of a multi-controller detector to the controller with index i. -1 removes master. Setting a master is useful only if the controllers are synchronized via hardware using the external IO signals. Usually left to the configuration file. Please refer to SLS Detectors FAQ documentation for more detailed information about the usage.
|
||||
\item[sync s] Sets the synchronization mode of the various controller within a detector structure. s acn be none, gating, trigger, complementary. Check that the detectors are correctly connected to avoid freezing of the acquisition. Usually left to the configuration file. Please refer to SLS Detectors FAQ documentation for more detailed information about the usage.
|
||||
\item[trimdir s] Obsolete. Same ad settingsdir.
|
||||
\item[settingsdir s] Sets the path of the drectory where the trim/settings files are stored. Usually left to the configuration file.
|
||||
\item[caldir s] Sets the path of the drectory where the calibration files are stored. Can be the same as settingsdir. Usually left to the configuration file.
|
||||
\item[trimen n e1 e2 ...en] Unused. Sets the list of energies for which trimfiles exist.
|
||||
\item[port p] Sets the port used by the sockets to control the detector. Do not change! Usually left to the configuration file.
|
||||
\item[stopport p] Sets the port used by the sockets to stop/get the status of the detector. Do not change! Usually left to the configuration file.
|
||||
\item[add s] Avoid using it. Adds the controller s to the detector structure.
|
||||
\item[remove i] Avoid using it. Removes the controller in position i from the detector structure.
|
||||
\item[id:i l] Avoid using it. configures the id of the detector structure. i is the detector position in a multi detector system and l is the id of the detector to be added.
|
||||
\item[free i] Avoid using it. Frees the shared memory.
|
||||
\item[exitserver] Avoid using it. Turns off the communication server on the detector.
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection{Receiver - GOTTHARD/\E}
|
||||
\begin{description}
|
||||
\begin{comment}
|
||||
|
||||
\item[receiverip ip] sets receiver ip to ip. Should be left to the configuration file.
|
||||
%\item[receivermac] sets receiver mac to mac. Should be left to the configuration file.
|
||||
\item[servermac mac] sets server mac to mac. Should be left to the configuration file.
|
||||
%\item[configuremac i] configures the MAC of the detector. i is adc number. -1 for all adcs. Should be left to the configuration file.
|
||||
\item[dataport i] sets the communication port to the receiver. Should be left to the configuration file.
|
||||
|
||||
\end{comment}
|
||||
\item[detectormac mac] sets the mac of the detector udp interface to mac (if configurable). Should be left to the configuration file.
|
||||
\item[rx\_tcpport i] sets the communication port between client and receiver. Should be left to the configuration file.
|
||||
\item[rx\_udpport i] sets the communication port between detector and receiver. Should be left to the configuration file.
|
||||
\item[rx\_hostname s] sets the hostname (or IP address) of the receiver for the TCP/IP interface with the client.
|
||||
\item[rx\_udpip ip] sets the IP address of the receiver for the UDP interface with the detector.
|
||||
\item[rx\_fifodepth v] sets receiver fifo depth to value v. Default for \E is 100 frames betweeen listening and writing.
|
||||
\item[r\_online b] sets the receiver in online (1) or offline (0) mode.
|
||||
%\item[r\_checkonline]
|
||||
%\item[framescaught]
|
||||
\item[r\_lock b] Locks (1) or unlocks (0) the receiver to this PC.
|
||||
%\item[r\_lastclient]
|
||||
\item[receiver s] starts/stops the receiver to listen to detector packets. - can be start or stop
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Postprocessing}
|
||||
Some advanced commands to configure data postprocessing.
|
||||
\begin{description}
|
||||
\item[ffdir dir] Sets the directory where the flat field files are stored. Normally left to the configuration file.
|
||||
\item[darkimage fname] GOTTHARD- ADVANCED- Sets fname as dark image file for the detector.
|
||||
\item[gainimage fname] GOTTHARD- ADVANCED- Sets fname as gain image file for the detector.
|
||||
\item[badchannels fname] Sets the bad channel file to fname. Bad channels will be omitted in the .dat file. \textit{none} to unset. Normally left to the configuration file.
|
||||
\item[threaded b] Avoid changing it. Sets if the data are written to disk in parallel with the acquisition (1) or after the acquisition (0). Normally left to the configuration file.
|
||||
\end{description}
|
||||
|
||||
|
||||
\textbf{Angular conversion}
|
||||
|
||||
\begin{description}
|
||||
\item[globaloff deg] Sets the offset of the beamline i.e. angular position of channel 0 when angular encoder at 0. Normally left to the configuration file.
|
||||
\item[angconv fname] Sets the file with the coefficients for angular conversion. \textit{none} disables angular conversion. Normally left to the configuration file.
|
||||
\item[binsize deg] Sets the size of the angular bins for angular coversion. Normally left to the configuration file.
|
||||
\item[angdir i] Sets the angular direction of the detector (1 means channel number in the same direction as the angular encoder, -1 different direction). Normally left to the configuration file.
|
||||
\item[d:moveflag i] Related to a single controller d. 1 if the detector modules move with the angular encoder, 0 if they are static (useful for multidetector systems). Normally left to the configuration file.
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Testing - \E specific}
|
||||
Some VERY ADVANCED testing functions implemented for \E:
|
||||
\begin{description}
|
||||
\item [pulsechip n] sets the chip into test mode with \textit{resmat} = 0 and \textit{externalenable} =1. Pulses chip by togglying the enable n number of times. The acquire is then done with no pixel matrix reset before the acquisition. If n$=-1$, the chip will be set into normal mode. This is necessary to restore normal chip operations after the test.
|
||||
\item[pulse n x y] Pulses pixel at coordinates (x,y) n number of times.
|
||||
\item[pulsenmove n x y] Pulses pixel n number of times and moves relatively by x value (x axis) and y value (y axis)
|
||||
\end{description}
|
||||
|
||||
\subsection{Detector settings}
|
||||
Advanced settings changing the analog or digital performance of the acquisition. Use them only if you are sure of what you are doing!
|
||||
|
||||
\begin{description}
|
||||
\item[vthreshold n] Sets the DAC value of the detector threshold to n.
|
||||
\item[vcalibration n] Sets the DAC value of the calibration pulse amplitude to n.
|
||||
\item[vtrimbit n] Sets the DAC value defining the trimbits LSB size to n.
|
||||
\item[vpreamp n] Sets the DAC value of the preamp feedback to n.
|
||||
\item[vshaper1 n] Sets the DAC value of the shaper1 feedback to n.
|
||||
\item[vshaper2 n] Sets the DAC value of the shaper2 feedback to n.
|
||||
\item[highvoltage n] Sets the DAC value of the high voltage to n (in V).
|
||||
\item[vapower n] CHIPTEST BOARD ONLY - Sets the DAC value of the analog voltage to n.
|
||||
\item[vddpower n] CHIPTEST BOARD ONLY - Sets the DAC value of the analog voltage to n.
|
||||
\item[vshpower n] CHIPTEST BOARD ONLY - Sets the comparator power supply in dac units (0-1024).
|
||||
\item[viopower n] CHIPTEST BOARD ONLY - Sets the FPGA I/O power supply in dac units (0-1024).
|
||||
\item[vref\_ds n] Sets vrefds
|
||||
\item[vcascn\_pb n] Sets vcascn\_pb
|
||||
\item[vcascp\_pb n] Sets vcascp\_pb
|
||||
\item[vout\_cm n] Sets vout\_cm
|
||||
\item[vcasc\_out n] Sets vcasc\_out
|
||||
\item[vin\_cm n] Sets vin\_cm
|
||||
\item[vref\_comp n] Sets vref\_comp
|
||||
\item[ib\_test\_c n] Sets ib\_test\_c
|
||||
\item[vsvp n] Sets vsvp DAC to n
|
||||
\item [vsvn n] Sets vsvn DAC to n
|
||||
\item [vtr n] Sets vtr DAC to n
|
||||
\item [vrf n] Sets vrf DAC to n
|
||||
\item [vrs n] Sets vrs DAC to n
|
||||
\item [vtgstv n] Sets vtgstv DAC to n
|
||||
\item[vcmp\_ll n] Sets vcmp\_ll DAC to n
|
||||
\item [vcmp\_lr n] Sets vcmp\_lr DAC to n
|
||||
\item [vcmp\_rl n] Sets vcmp\_rl DAC to n
|
||||
\item [vcmp\_rr n] Sets vcmp\_rr DAC to n
|
||||
\item [vcall n] Sets vcall DAC to n
|
||||
\item [rxb\_rb n] Sets rxb\_rb DAC to n
|
||||
\item [rxb\_lb n] Sets rxb\_rb DAC to n
|
||||
\item [vcp n] Sets vcp DAC to n
|
||||
\item [vcn n] Sets vcn DAC to n
|
||||
\item [vis n] Sets vis DAC to n
|
||||
\item [iodelay n] Sets iodelay to n
|
||||
%\item[temp\_adc n] Sets
|
||||
%\item[temp\_fpga n]
|
||||
\item[reg a d] Write to register of address a the data d
|
||||
\item[clkdivider n] Sets the clock divider for the readout. Can be increased for longer cables. For \E options are 0 (full speed), 1 (half speed), 2 (quarter speed), and 3 (slow).
|
||||
\item[setlength n] Changes the length of the set/reset signals in the acquisition. Never reduce it!
|
||||
\item[waitstates n] Sets the wait states for CPU/FPGA communication. Do not change it!
|
||||
\item[totdivider n] Sets the tot clock divider.
|
||||
\item[totdutycycle n] Sets the tot duty cycle.
|
||||
\item[setup s] Loads the setup files to the detector (config, parameters, trimbits etc.).
|
||||
\item[trimbits fn] Loads the trimbit files fn.snxxx to the detector
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsection{Debug}
|
||||
\begin{description}
|
||||
\item[digibittest i] only for GOTTHARD. If i=1, the acquisition will return a unique channel identifier, instead of data, if i=0 normal acquisition.
|
||||
\end{description}
|
||||
|
||||
|
||||
\section{Retrieving detector parameters}
|
||||
|
||||
|
||||
\verb=sls\_detector\_get [j-][i:]var [arg]=\\
|
||||
|
||||
is used to retrieve the detector parameters \verb=var=.\\
|
||||
For some commands, an additional argument \verb=arg= is needed.
|
||||
|
||||
|
||||
|
||||
\subsection{Standard commands}
|
||||
All the commends return two strings, where string1 is the command, string2 is teh actual returned string.
|
||||
|
||||
\begin{description}
|
||||
\item[config fname]
|
||||
Dumps the current configuration of the detector to the file fname.
|
||||
\item[parameters fname]
|
||||
Dumps the current acquisition parameters of the detector to the file fname.
|
||||
\item[settings]
|
||||
Returns the current settings of the detector. Returns a string
|
||||
|
||||
\item[threshold]
|
||||
For photon counting detectors, returns the detector threshold in eV, -1 if undefined. Returns ``threshold value\_in\_eV''. If it fails, the returned threshold is the old set value.
|
||||
|
||||
\item[timing]
|
||||
Returns the acquisition timing mode of the detector.
|
||||
Refer to the detailed documentation to understand how the different timing modes work.
|
||||
\item[outdir]
|
||||
Returns the path where the output files are saved to.
|
||||
\item[fname]
|
||||
Returns the prefix of the file name for the data output.
|
||||
\item[enablefwrite] Returns if data are written to file (1) or not (0).
|
||||
\item[exptime]
|
||||
Returns the exposure time of a single acquisition in seconds. Example: "exptime 1.000000000''
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[period]
|
||||
Returns the frames period (in s). Example: ``period 1.000000000''
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[delay]
|
||||
Returns the delay after trigger in triggered mode (in s).
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[gates]
|
||||
Returns the number of gates per frame in gated (stroboscopic) mode.
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[frames]
|
||||
Returns the number of frames acquired sequentially per cycle (e.g. after each trigger), with the exposure time defined by exptime and the period defined by period (unless in gated mode). Returned as a string to be interpreted as an integer ``frames integer''
|
||||
Note that the total number of images is frames times triggers.
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[triggers n]
|
||||
Returns the number of triggers (e.g. number of triggers). Returned as atring to be interpreted as an integer ``triggers integer''
|
||||
Note that the total number of images is frames times triggers.
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[probes] Returns the number of probes to accumulate for stroboscopic measurements.
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[measurements] Returns the number of repetitions of the acquisitions (non real time!).
|
||||
Refer to detailed documentation to understand how the different timing modes work.
|
||||
\item[dr] Returns the dynamic range n (in bits) of the data for a photon counting detector. Returns a string that should be interpreted as an integer.
|
||||
|
||||
\item[flags s] Returns the flags set for your detector.
|
||||
\item[help cmd] Returns the help for command cmd.
|
||||
\item[lock] Returns if the detector is locked to a single PC.
|
||||
\item[lastclient] Returns the last client which has connected to the detector.
|
||||
\item[nmod n] Returns the number of modules which are read out. Will be replaced by ROI.
|
||||
\item[maxmod] Returns the maximum number of modules (size) of the detector. Will be replaced by size.
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Postprocessing commands}
|
||||
\begin{description}
|
||||
\item[flatfield] Returns the flat field file name.
|
||||
\item[ratecorr] Returns the dead time used for rate corrections.
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection{Angular conversion}
|
||||
|
||||
\begin{description}
|
||||
\item[fineoff] Returns the fine offset used to convert channel number to angles
|
||||
\item[samplex] Returns the sample displacement from the center of the diffractometerin the X-ray direction, to improve angular conversion (unused).
|
||||
\item[sampley] Returns the sample displacement from the center of the diffractometer in the ortogonal direction, to improve angular conversion (unused)
|
||||
\end{description}
|
||||
|
||||
\subsection{Acquisition}
|
||||
See SLS Detectors Documentation for a detailed description of the acquisition flow.
|
||||
\begin{description}
|
||||
\item[positions] Returns the number of positions n and their value.
|
||||
\item[startscript] Returns the script to be executed at the beginning of each measurement.
|
||||
\item[startscriptpar] Returns the parameter to be passed to the start script
|
||||
\item[stopscript] Returns the script to be executed at the end of each measurement.
|
||||
\item[stopscriptpar] Returns the parameter to be passed to the stop script.
|
||||
\item[scriptbefore] Returns the script to be executed before each acquisition.
|
||||
\item[scriptbeforepar] Returns the parameter to be passed to the script before.
|
||||
\item[scriptafter] Returns the script to be executed after each acquisition.
|
||||
\item[scriptafterpar] Returns the parameter to be passed to the script after.
|
||||
\item[headerbefore] Returns the script to be executed to acquire the header of the acquisition.
|
||||
\item[headerbeforepar] Returns the parameter to be passed to the header before.
|
||||
\item[headerafter] Returns the script to be executed to append to the header of the acquisition.
|
||||
\item[headerafterpar] Returns the parameter to be passed to the header after.
|
||||
\item[scan0scripts] Returns the script to execute at scan 0 level.
|
||||
\item[scan0par] Returns a parameter to be passed to the scan 0 level script.
|
||||
\item[scan0prec] Returns the number of decimal digits for the scan0 level parameter in the file name (default is 0).
|
||||
\item[scan0steps] Returns the number of scan 0 level steps n and their value.
|
||||
\item[scan0range] Same as scan0steps.
|
||||
\item[scan1script] Returns the script to execute at scan 1 level.
|
||||
\item[scan1par] Returns a parameter to be passed to the scan 1 level script.
|
||||
\item[scan1prec] Returns the number of decimal digits for the scan1 level parameter in the file name (default is 0).
|
||||
\item[scan1steps] Returns the number of scan 0 level steps n and their value.
|
||||
\item[scan1range] Same as scan1steps.
|
||||
\end{description}
|
||||
|
||||
\subsection{Debug}
|
||||
Commands to be used to retrieve information about the detector version or perform tests.
|
||||
\subsubsection{Version}
|
||||
\begin{description}
|
||||
\item[moduleversion[:i]] Returns the version of the module firmware.
|
||||
\item[detectornumber] Returns the serial number of the module (normally the MAC address).
|
||||
\item[modulenumber[:i]] Returns the serial number of the module i.
|
||||
\item[detectorversion] Returns the version of the controller firmware.
|
||||
\item[softwareversion] Returns the version of the software running on the detector.
|
||||
\item[thisversion] Returns the version of the control software which is being used.
|
||||
\item[detectorsvnversion] Returns the SVN version of the software on the detector.
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Tests}
|
||||
|
||||
\begin{description}
|
||||
\item[digitest[:i]] Makes a digital test of module i. Afterwards the detector must be reconfigured for the acquisition (settings, threshold, exptime, dr, frames etc.). Returns 0 if succeeded, otherwise an error mask.
|
||||
\item[bustest] Makes a digital test of the communication between CPU and FPGA. Returns 0 if succeeded, otherwise the number of errors.
|
||||
%\item[digibittest] GOTTHARD?!?!??!
|
||||
%\item[acqtest] GOTTHARD?!?!??!
|
||||
%\item[test] GOTTHARD?!?!??!
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
\subsection{Advanced commands}
|
||||
|
||||
|
||||
\subsubsection{Calibration}
|
||||
This operations should be performed only rarely to configure the detector
|
||||
|
||||
\begin{description}
|
||||
\item[encallog] returns whether the logging for energy calibration is enabled.
|
||||
\item[angcallog] returns whether the logging for angular calibration is enabled.
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
|
||||
\subsubsection{Acquisition commands}
|
||||
|
||||
It is normally recommended to use \verb=sls\_detector\_acquire [j-]=, which takes care of everything
|
||||
\begin{description}
|
||||
\item[acquire] Same as \verb=sls\_detector\_acquire=
|
||||
\item[data] Gets, saves and processes all data stored on the detector, if any.
|
||||
\item[frame] Gets, saves and processes one frame stored on the detector, if any in a Firt-In/First-Out mode.
|
||||
\item[status] Returns the detector status - can be: running, error, transmitting, finished, waiting or idle
|
||||
\item[online] Returns whether the detector is in online or offline mode.
|
||||
\item[checkonline] Returns whether the detector is in online or offline mode.
|
||||
\item[readctr i fname] GOTTHARD related - reads counter in detector to file fname, restarts acquisition if i=1
|
||||
%\item[resetctr i] GOTTHARD- ADVANCED- resets counter in detector, restarts acquisition if i=1
|
||||
\item[exptimel] Returns the exposure time left for the current frame.
|
||||
\item[periodl] Returns the period left for the current frame.
|
||||
\item[delayl] Returns the delay after trigger left for the current frame.
|
||||
\item[gatesl] Returns the number of gates left for the current frame.
|
||||
\item[framesl] Returns the number of frames left for the current cycle.
|
||||
\item[triggersl] Returns the number of triggers left for the current acquisition.
|
||||
\item[now] Returns the current timestamp of the detector clock.
|
||||
\item[timestamp] Returns the timestamp of the acquisitions in a First-In/First-Out mode i.e. every time it is called it returns the timestamp of the first acquisition start of readout. The FIFO is reset everytime the acquisition is started.
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
\subsubsection{Configuration}
|
||||
Advanced commands to configure the detector system. Should be left to the configuration file
|
||||
\begin{description}
|
||||
\item[type] Returns the types of detector controllers in the system.
|
||||
\item[hostname] Returns the hostnames or IP addresses for the detector
|
||||
\item[d:extsig:i] Returns the usage of the external IO signal i of the controller d.
|
||||
\item[master] Returns the master of the acquisition in a multicontroller detector. -1 is none.
|
||||
\item[sync] Returns the synchronization mode of the various controller within a detector structure.
|
||||
\item[trimdir] Same ad settingsdir.
|
||||
\item[settingsdir] Returns the path of the directory where the trim/settings files are stored.
|
||||
\item[caldir] Returns the path of the directory where the calibration files are stored.
|
||||
\item[trimen n e1 e2 ...en] Unused. Returns the list of energies for which trimfiles exist.
|
||||
\item[port] Returns the port used by the sockets to control the detector.
|
||||
\item[stopport]Returns the port used by the sockets to stop/get the status of the detector.
|
||||
%\item[add s] Avoid using it. Adds the controller s to the detector structure.
|
||||
%\item[remove i] Avoid using it. Removes the controller in position i from the detector structure.
|
||||
\item[id[:i]] returns the id of the detector structure. i is the detector position in a multi detector system
|
||||
\item[free] Avoid using it. Frees the shared memory.
|
||||
\end{description}
|
||||
Settable communication parameters:
|
||||
\begin{description}
|
||||
\item[txndelay\_left] \E advanced: Set transmission delay of sending the left port frame
|
||||
\item[txndelay\_right] \E advanced: Set transmission delay of sending the right port frame
|
||||
\item[txndelay\_frame] \E advanced: Set transmission delay of sending the entire frame In addition to left and right. This value has to be greater than the maximum of the transmission delays of each port.
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection{Receiver - GOTTHARD only}
|
||||
\begin{description}
|
||||
%\item[receiverip] Returns receiver ip.
|
||||
%\item[receivermac]Returns the receiver mac.
|
||||
%\item[servermac] Returns the server mac.
|
||||
%\item[dataport] Returns the communication port to the receiver.
|
||||
|
||||
|
||||
|
||||
\item[detectormac] returns the mac of the detector udp interface to mac (if configurable). Should be left to the configuration file.
|
||||
\item[rx\_tcpport] returns the communication port between client and receiver. Should be left to the configuration file.
|
||||
\item[rx\_udpport] returns the communication port between detector and receiver. Should be left to the configuration file.
|
||||
\item[rx\_hostname] returns the hostname (or IP address) of the receiver for the TCP/IP interface with the client.
|
||||
\item[rx\_udpip] returns the IP address of the receiver for the UDP interface with the detector.
|
||||
|
||||
\item[r\_online b] Returns whether the receiver in online (1) or offline (0) mode.
|
||||
\item[r\_checkonline] Returns whether the receiver in online (1) or offline (0) mode.
|
||||
\item[framescaught] Returns the number of frames received. Returns: "framescaught n''
|
||||
\item[resetframescaught n] Sets the number of frames received to 1
|
||||
\item[frameindex] Returns the index of the last frame received.
|
||||
\item[r\_lock] Returns whether the receiver is locked (1) or unlocked (0).
|
||||
\item[r\_lastclient] Returns the IP of the last client which connected to the receiver.
|
||||
%\item[receiver s ] starts/stops the receiver to listen to detector packets. - can be start or stop
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Postprocessing}
|
||||
Some advanced commands to configure data postprocessing.
|
||||
\begin{description}
|
||||
\item[ffdir] Returns the directory where the flat field files are stored.
|
||||
\item[darkimage fname] GOTTHARD- ADVANCED- Returns the dark image file for the detector.
|
||||
\item[gainimage fname] GOTTHARD- ADVANCED- Returns gain image file for the detector.
|
||||
\item[badchannels fname] Returns bad channel file to fname.
|
||||
\item[threaded b] Returns whether the data are written to disk in parallel with the acquisition (1) or after the acquisition (0).
|
||||
\end{description}
|
||||
|
||||
|
||||
\textbf{Angular conversion}
|
||||
|
||||
\begin{description}
|
||||
\item[globaloff] Returns the offset of the beamline i.e. angular position of channel 0 when angular encoder at 0.
|
||||
\item[angconv] Returns the file used for the coefficients for angular conversion.
|
||||
\item[binsize] Returns the size of the angular bins for angular conversion.
|
||||
\item[angdir] Returns the angular direction of the detector (1 means channel number in the same direction as the angular encoder, -1 different direction).
|
||||
\item[d:moveflag] Related to a single controller d. Returns 1 if the detector modules move with the angular encoder, 0 if they are static (useful for multidetector systems).
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
\subsection{Detector settings}
|
||||
Advanced settings changing the analog or digital performance of the acquisition. Use them only if you are sure of what you are doing!
|
||||
|
||||
\begin{description}
|
||||
\item[vthreshold] Returns the DAC value of the detector threshold to n.
|
||||
\item[vcalibration] Returns the DAC value of the calibration pulse amplitude to n.
|
||||
\item[vtrimbit] Returns the DAC value defining the trimbits LSB size to n.
|
||||
\item[vpreamp] Returns the DAC value of the preamp feedback to n.
|
||||
\item[vshaper1] Returns the DAC value of the shaper1 feedback to n.
|
||||
\item[vshaper2] Returns the DAC value of the shaper2 feedback to n.
|
||||
\item[highvoltage] Returns the DAC value of the high voltage to n.
|
||||
\item[vapower] CHIPTEST BOARD ONLY - Returns the DAC value of the analog voltage to n.
|
||||
\item[vddpower] CHIPTEST BOARD ONLY - Returns the DAC value of the analog voltage to n.
|
||||
\item[vshpower] CHIPTEST BOARD ONLY - Returns the comparator power supply in dac units (0-1024).
|
||||
\item[viopower] CHIPTEST BOARD ONLY - Returns the FPGA I/O power supply in dac units (0-1024).
|
||||
\item[vref\_ds] Returns vrefds
|
||||
\item[vcascn\_pb] Returns vcascn\_pb
|
||||
\item[vcascp\_pb] Returns vcascp\_pb
|
||||
\item[vout\_cm] Returns vout\_cm
|
||||
\item[vcasc\_out] Returns vcasc\_out
|
||||
\item[vin\_cm] Returns vin\_cm
|
||||
\item[vref\_comp] Returns vref\_comp
|
||||
\item[ib\_test\_c] Returns ib\_test\_c
|
||||
\item[vsvp] Returns vsvp
|
||||
\item [vsvn] Returns vsvn
|
||||
\item [vtr] Returns vtr trim strength (\E)
|
||||
\item [vrf] Returns vrf preamp gain (\E)
|
||||
\item [vrs] Returns vrs shaper gain (\E)
|
||||
\item [vtgstv] Returns vtgstv (\E)
|
||||
\item[vcmp\_ll] Returns vcmp\_ll (\E) leftmost chip theshold
|
||||
\item [vcmp\_lr] Returns vcmp\_lr (\E) second to leftmost chip theshold
|
||||
\item [vcmp\_rl] Returns vcmp\_rl (\E) second to rightmost chip theshold
|
||||
\item [vcmp\_rr] Returns vcmp\_rr (\E) rightmost chip theshold
|
||||
\item [vcall] Returns vcall calibration stength (\E)
|
||||
\item [rxb\_rb] Returns rxb\_rb rightmost chip value to decode 0-1 in the readout
|
||||
\item [rxb\_lb] Returns rxb\_lb leftmost chip value to decode 0-1 in the readout
|
||||
\item [vcp] Returns vcp cascode p value (\E)
|
||||
\item [vcn] Returns vcn cascode n value (\E)
|
||||
\item [vis] Returns vis shaper current (\E)
|
||||
\item [iodelay] Returns iodelay
|
||||
\item[temp\_adc] Returns the temperature of the ADCs
|
||||
\item[temp\_fpga] Returns the temperature of the FPGA.
|
||||
\item[temp\_fpgaext] Returns the temperature close to the fpga (\E).
|
||||
\item[temp\_10ge] Returns the temperature close to the 10GE (\E).
|
||||
\item[temp\_dcdc] Returns the temperature close to the dc dc converter (\E).
|
||||
\item[temp\_sodl] Returns the temperature close to the left so-dimm memory (\E).
|
||||
\item[temp\_sodr] Returns the temperature close to the right so-dimm memory (\E).
|
||||
\item[temp\_fpgafl] Returns the temperature of the left front end board fpga (\E).
|
||||
\item[temp\_fpgafr] Returns the temperature of the right front end board fpga (\E).
|
||||
|
||||
\item[reg a] Write to register of address a the data d
|
||||
\item[clkdivider] Returns the clock divider for the readout.
|
||||
\item[setlength] Returns the length of the set/reset signals in the acquisition.
|
||||
\item[waitstates] Returns the wait states for CPU/FPGA communication.
|
||||
\item[totdivider] Returns the tot clock divider.
|
||||
\item[totdutycycle] Returns the tot duty cycle.
|
||||
\item[setup] Dumps all settings to file (config, parameters, trimbits etc.).
|
||||
\item[trimbits fn] Dumps the trimbits to the file files fn.snxxx
|
||||
\end{description}
|
||||
|
||||
|
||||
\section{Usage}
|
||||
|
||||
\subsection{Mandatory setup}
|
||||
First, your detector should always be configured for each PC that you might want to use for controlling the detector.
|
||||
To do that:
|
||||
\begin{verbatim}
|
||||
sls_detector_put config mydetector.config
|
||||
\end{verbatim}
|
||||
Refer to sample configuration files to produce the appropriate one for your detector.
|
||||
|
||||
One can configure all the detector settings in a parameter file {\tt{setup.det}}, which is loaded by doing:
|
||||
\begin{verbatim}
|
||||
sls_detector_put parameters setup.det
|
||||
\end{verbatim}
|
||||
|
||||
In the case of \E, the parameter file ({\tt{setup.det}} needs to setup the proper bias voltage of the sensor, i.e. needs to contain the line {\tt{highvoltage 150}}.
|
||||
|
||||
\subsection{Standard acquisition}
|
||||
|
||||
You will then need to setup the detector threshold and settings, the exposure time, the number of real time frames and eventually how many real time frames should be acquired:
|
||||
\begin{verbatim}
|
||||
sls_detector_put settings standard
|
||||
sls_detector_put threshold 6000
|
||||
sls_detector_put exptime 1.
|
||||
sls_detector_put frames 10
|
||||
\end{verbatim}
|
||||
In this case 10 consecutive 1s frames will be acquired.
|
||||
|
||||
You need to setup where the files will be written to
|
||||
\begin{verbatim}
|
||||
sls_detector_put outdir /scratch
|
||||
sls_detector_put fname run
|
||||
sls_detector_put index 0
|
||||
\end{verbatim}
|
||||
this way your files will all be named /scratch/run\_fj\_i.dat where j goes between 0 and 9 and is relative to the frame number, i starts from 0 and is automatically incremented. The next acquisition it will be 1.
|
||||
|
||||
|
||||
To acquire simply type
|
||||
\begin{verbatim}
|
||||
sls_detector_acquire
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
You can poll the detector status using
|
||||
\begin{verbatim}
|
||||
sls_detector_get status
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
\subsection{Data processing}
|
||||
Flat field and rate corrections can be applied directly by simply selecting:
|
||||
\begin{verbatim}
|
||||
sls_detector_put flatield myflatfield.raw
|
||||
sls_detector_put ratecorr -1
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
\end{document}
|
||||
|
@ -1 +0,0 @@
|
||||
../../slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp
|
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 167 KiB |