Compare commits
404 Commits
2020.10.12
...
2021.01.20
Author | SHA1 | Date | |
---|---|---|---|
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 | |||
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
|
||||
|
@ -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)
|
||||
@ -186,20 +175,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 +192,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
|
||||
```
|
||||
|
124
RELEASE.txt
@ -1,70 +1,75 @@
|
||||
SLS Detector Package 5.0.0-rc2 released on 09.10.2020 (Release Candidate 2)
|
||||
===========================================================================
|
||||
SLS Detector Package 5.1.0 released on xx.xx.2020 (Minor Release)
|
||||
===================================================================
|
||||
|
||||
This document describes the differences between 5.1.0 and 5.x.x releases.
|
||||
|
||||
|
||||
|
||||
CONTENTS
|
||||
--------
|
||||
1. Firmware Requirements
|
||||
2. Download, Documentation & Support
|
||||
1. Topics Concerning
|
||||
2. New Features
|
||||
2. Resolved Issues
|
||||
3. Known Issues
|
||||
4. Firmware Requirements
|
||||
5. Download, Documentation & Support
|
||||
|
||||
|
||||
1. Firmware Requirements
|
||||
|
||||
1. Topics Concerning
|
||||
====================
|
||||
|
||||
- potentital memory leak in receiver
|
||||
- scanParameters in Python
|
||||
- cmk.sh refactored
|
||||
- m3 settings and threshold
|
||||
|
||||
|
||||
2. New Features
|
||||
===============
|
||||
|
||||
Client
|
||||
------
|
||||
|
||||
1. Aded settings and threshold features for Mythen3.
|
||||
|
||||
|
||||
3. Resolved Issues
|
||||
==================
|
||||
|
||||
|
||||
Receiver
|
||||
--------
|
||||
|
||||
1. Current code only calls Implementation::setDetectorType from constructor,
|
||||
but potential memory leak if called out of constructor context. Fixed.
|
||||
|
||||
Client
|
||||
------
|
||||
|
||||
1. Fixed missing scanParameters class in Python
|
||||
|
||||
2. cmk.sh refactored to have better option handling
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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)
|
||||
No updates from 5.0.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>
|
||||
5. Known Issues
|
||||
===============
|
||||
|
||||
The following cannot be upgraded remotely:
|
||||
Gotthard
|
||||
No updates from 5.0.0
|
||||
|
||||
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
|
||||
6. Download, Documentation & Support
|
||||
====================================
|
||||
|
||||
Download
|
||||
@ -91,6 +96,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 +117,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 +136,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
|
||||
|
||||
|
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -2,6 +2,7 @@ python:
|
||||
- 3.6
|
||||
- 3.7
|
||||
- 3.8
|
||||
- 3.9
|
||||
|
||||
numpy:
|
||||
- 1.17
|
@ -1,14 +1,10 @@
|
||||
|
||||
mkdir $PREFIX/lib
|
||||
mkdir $PREFIX/bin
|
||||
mkdir $PREFIX/include
|
||||
mkdir $PREFIX/include/slsDetectorPackage
|
||||
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
|
||||
|
@ -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
|
||||
------
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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 |
@ -1,53 +0,0 @@
|
||||
DESTDIR?=../docs
|
||||
|
||||
|
||||
#manual-api manual-calwiz manual-client manual-gui manual-main
|
||||
|
||||
|
||||
TEX=latex
|
||||
|
||||
MAINTEXS= slsDetectorGuiHowTo.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): $(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/slsDetectorGuiHowTo
|
||||
rm -rf $(DESTDIR)/pdf/slsDetectorGuiHowTo.pdf
|
@ -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,522 +0,0 @@
|
||||
\documentclass{report}
|
||||
\usepackage{amssymb}
|
||||
\usepackage[dvips]{graphicx}
|
||||
\usepackage{verbatim}
|
||||
\begin{document}
|
||||
|
||||
\title{Mythen v3.0 manual}
|
||||
\date{\today}
|
||||
\maketitle
|
||||
|
||||
|
||||
\chapter{Installation and upgrades}
|
||||
|
||||
The new MYTHEN software is intended to control the MCS mythen boards either by using a command line interface (text client) or by using with a graphical user interface (GUI).
|
||||
|
||||
Here you can find in brief the main things you need to know in order to start working with your detector.
|
||||
|
||||
\section{The software package}
|
||||
|
||||
The actual software for the Mythen II system (MCS1 to MCS24) runs on 32~bit Scientific Linux machines (SLC5 tested, gcc 4.1.2 but it should not be critical).
|
||||
|
||||
The complete software package is composed of several programs which can be instaleld (or locally compiled) depending on the needs:
|
||||
\begin{itemize}
|
||||
\item The \textbf{slsDetector shared and static libraries} which are necessary for all user interfaces and can be simply used for implementig custom detector drivers;
|
||||
\item The \textbf{command line interface (slsDetectorClient) sls\_detector\_put, sls\_detector\_get, sls\_detector\_acquire} which is provided to communicate with the detectors;
|
||||
\item A \textbf{virtual server mythenServer} which can be used to simulate the behavior of the detector for what concerns the communication in case the detector is not online or is in use.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
\section{Requirements}
|
||||
|
||||
For installing the slsDetector shared and static libraries and the slsDetectorClient software, any Linux installation with a working gcc should be fine.\\
|
||||
|
||||
|
||||
\begin{comment}
|
||||
For installing the TSlsDetector shared and static libraries and the mythenGUI, working installations of Qt and Root should be present on the PC.\\
|
||||
|
||||
A Qt version equal or higher to 3.3 (but lower than Qt4) should be installed on the PC. It can be downloaded from \\
|
||||
\verb|http://www.trolltech.com/developer/downloads/qt/index| and the enviroment variable \verb|QTDIR| should be set to its path.
|
||||
Qt should be compiled with the options \verb|-thread -no-xft -qt-gif -no-exceptions| (check in \textsf{\$QTDIR/config.status}). this is normally the default on SLC machines.
|
||||
|
||||
|
||||
Also a \textsf{root} version higher than 5.15 but lower than 5.22 \textbf{with Qt support enabled} should be installed (the binaries can be downloaded from \verb|http://root.cern.ch| or compile with the option \verb|--enable-qt|) and the system variable \verb|ROOTSYS| should be set to its path. \\
|
||||
Remember to check the in file \$ROOTSYS/etc/system.rootrc or in your own custom .rootrc the following options are correctly defined:
|
||||
\begin{verbatim}
|
||||
# GUI specific settings
|
||||
Gui.Backend: qt
|
||||
Gui.Factory: qt
|
||||
\end{verbatim}
|
||||
Further details can be found in the root user's manual at \verb|http://root.cern.ch/root/doc/RootDoc.html| in chapter 1 (Introduction), 26 (ROOT/Qt integration interfaces) and 28 (Install and Build ROOT).\\
|
||||
|
||||
\verb|ROOTSYS|/bin and \verb|QTDIR|/bin should be added to the \verb|PATH|;\\
|
||||
\verb|ROOTSYS|/lib and \verb|QTDIR|/lib should be added to the \verb|LD_LIBRARY_PATH|~\footnote{In some linux installation there might be configuration scripts e.g in the directory \texttt{/etc/profile.d/} and \texttt{/etc/ld.so.conf.d/} overwriting this variables, so check that the installations correspond. If you have already used other Qt or Root versions, it might be that the old libraries are loaded in cache. To delete the chache, remove the file \texttt{/etc/ld.so.cache} and run \texttt{.....} this is always a problem!!!!}.\\
|
||||
|
||||
As an example, we suggest to add the following lines to your \verb|.bashrc| or \verb|.profile| file (changing \verb|QTDIR| and \verb|ROOTSYS| accordingly):
|
||||
\begin{verbatim}
|
||||
export ROOTSYS=/local/root
|
||||
export QTDIR=/local/qt
|
||||
|
||||
export PATH=$QTDIR/bin:$ROOTSYS/bin::$PATH
|
||||
export LD_LIBRARY_PATH=$QTDIR/lib:$ROOTSYS/lib:$LD_LIBRARY_PATH
|
||||
export MANPATH=$QTDIR/doc/man/usr/local/man:$MANPATH
|
||||
\end{verbatim}
|
||||
\end{comment}
|
||||
|
||||
\section{Compilation}
|
||||
If you simply want to install the software in the working directory you can:
|
||||
\begin{itemize}
|
||||
\item \verb=make lib= compile slsDetector library
|
||||
%\item \verb=make tlib= compile Root/Qt TSlsDetector library
|
||||
\item \verb=make slsDetectorClient= compile slsDetectorClient package
|
||||
%\item \verb=make mythenGUI= compile mythenGUI
|
||||
%\item \verb=make all= compile slsDetector and TSlsDetector libraries, the mythenClient package and the mythenGUI
|
||||
\item \verb=make all= compile slsDetector libraries, the slsDetectorClient package
|
||||
\item \verb=make clean= remove object files and executables
|
||||
\item \verb=make help= lists possible targets
|
||||
\end{itemize}
|
||||
|
||||
To be able to run the slsDetectorClient commands, add their location to your path.
|
||||
|
||||
|
||||
\section{Building}
|
||||
To install the software you should first configure some enviroment variables by executing:
|
||||
\begin{verbatim}
|
||||
> source configure
|
||||
\end{verbatim}
|
||||
(NOT \verb=>./configure= otherwise the enviroment variables will not be available for the \verb=make= command).
|
||||
This allows you to configure:
|
||||
\begin{itemize}
|
||||
%\item \textbf{QTDIR} i.e. the Qt installation directory. Ignore if you don't want to install the GUI, otherwise it should be defined in your \verb=.bashrc= and added to \verb=PATH= and \verb=LD_LIBRARY_PATH=
|
||||
%\item \textbf{ROOTSYS} i.e. the Root installation directory. Ignore if you don't want to install the GUI, otherwise it should be defined in your \verb=.bashrc= and added to \verb=PATH= and \verb=LD_LIBRARY_PATH=
|
||||
\item \textbf{INSTALLROOT} Directory where you want to install the software. Defaults to /usr/local/
|
||||
\item \textbf{BINDIR} Directory where you want to install the binaries. Defaults to bin/
|
||||
\item \textbf{INCDIR} Directory where you want to pute the header files. Defaults to include/slsdetector/
|
||||
\item \textbf{LIBDIR} Directory where you want to install the libraries. Defaults to lib/
|
||||
\item \textbf{DOCDIR} Directory where you want to copy the documentation. Defaults to share/doc/
|
||||
\end{itemize}
|
||||
|
||||
To build you can:
|
||||
\begin{itemize}
|
||||
\item \verb=make install_lib= install detector library and include files"
|
||||
%\item \verb=make install_tlib= install detector Root/Qt library and include files"
|
||||
\item \verb=make install_client= install slsDetectorClient
|
||||
%\item \verb=make install_gui= install mythenGUI
|
||||
%\item \verb=make install= install library, include files, mythenClient and mythenGUI"
|
||||
\item \verb=make install= install library, include files and mythenClient''
|
||||
\item \verb=make install_libdoc= install library documentation
|
||||
\item \verb=make install_clientdoc= install mythenClient documentation
|
||||
%\item \verb=make install_guidoc= install mythenGUI documentation
|
||||
\item \verb=make install_doc= install all documentation
|
||||
\item \verb=make help= lists possible targets
|
||||
\end{itemize}
|
||||
|
||||
\section{Detector upgrade}
|
||||
|
||||
The upgrade of the detector consists in both the upgrade of the communication software and of the firmware.\\
|
||||
|
||||
To upgrade the firmware you need either a working version of the Altera Quartus software or of the Quartus programmer, which can easly be downloade from \\
|
||||
\verb=https://www.altera.com/download/programming/quartus2/pq2-index.jsp= \\
|
||||
Normally installation of the software and of the driver for the USB-Blaster (provided together with the MYTHEN detector) are simpler under Windows.\\
|
||||
Under Windows, the first time that you connect the USB-Blasterto one of your USB ports, you will be asked to install new hardware. Set the path to search
|
||||
for the driver to: \verb=C:\altera\80sp1\qprogrammer\drivers\usb-blasterp= (where \verb=C:\altera\80sp1\qprogrammer\= is assumed to be ther path where your Quartus version is installed).\\
|
||||
\begin{enumerate}
|
||||
\item After starting the Quartus programmer, click on Hardware Setup and in the "Currently selected hardware" window select USB-Blaster.
|
||||
\item In the Mode combo box select "Active Serial Programming".
|
||||
\item Plug the end of your USB-Blaster WITH THE ADAPTER PROVIDED in the connector ASMI on the MCS board taking care that pin1 corresponds to the one indexed and with the rectangualr pad.
|
||||
\item Click on add file and from select the programming file provided when the upgrade has been reccomended.
|
||||
\item Check "Program/Configure" and "Verify".
|
||||
\item Push the start button and wait until the programming process is finished (progress bar top left).
|
||||
\item In case the programmer gives you error messages, check the polarity of your cable (pin1 corresponds) and that you have selected the correct programming connector.
|
||||
\end{enumerate}
|
||||
|
||||
To upgrade the software on the detector board transfer the provided software by ftp to the MCS:
|
||||
\begin{verbatim}
|
||||
ftp mymcs.mydomain.com
|
||||
username: root
|
||||
password: pass
|
||||
cd /mnt/flash/root
|
||||
put mythenDetectorServer
|
||||
quit
|
||||
\end{verbatim}
|
||||
If the /mnt/flash/root directory does not exist, create it before the transfer by telnetting to the MCS.\\
|
||||
After pressing reset on the board, the board should reboot.\\
|
||||
If the program does not correctly start either check by using the http interface that it is started by the inittab (check that the file \verb=/mnt/etc/inittab= ends with the line \verb=myid2:3:once:/mnt/flash/root/mythenDetectorServer= ). \\
|
||||
Otherwise make the program executable by telnetting to the MCS and executing:
|
||||
\verb=chmod a+xrw /mnt/flash/root/mythenDetectorServer=\\
|
||||
After pressing reset on the board, the board should reboot and the acqusition program correctly start.
|
||||
|
||||
\section{The trimbits and calibration files} \label{sec:trimdir}
|
||||
In order to be able to properly operate your detector you need a directory where the trimbit files (needed to set the detector settings and eventually equalize the individual channel thresholds) which in the following will be named \textit{trimdir} and a directory where the calibration files (needed to convert the threshold energy in DAC units) are stored which in the following will be named \textit{caldir}.
|
||||
\textit{trimdir} and \textit{caldir} can even be the same directory, and an example of it is given in the software package by the example directory \verb=trimbits=. \\
|
||||
Since these directories are customized by producing trimbit files and calibration for each detector, make sure not to overwrite yours every time you upgrade the software.
|
||||
|
||||
\textit{trimdir} should contain three subdirectories \verb=standard=, \verb=fast= and \verb=highgain= containing respectively the trimfiles \verb=standard.trim=, \verb=fast.trim= and \verb=highgain.trim= which contain the correct voltage settings for the detector although all the individual channel thresholds set to 0. The original files contained in the package should be used, infact in case of error the detector would not recognize the correct settings.\\
|
||||
The default trimbit files for each file will be stored in the directory according to the settings with the name \verb=noise.snxxx= where \verb=xxx= is the module serial number.\\
|
||||
|
||||
\textit{caldir} should contain three subdirectories \verb=standard=, \verb=fast= and \verb=highgain= containing respectively the trimfiles \verb=standard.cal=, \verb=fast.cal= and \verb=highgain.cal= which contain an average calibration of the modules for the diffrent settings. However this can different from the correct one for each individual module even of several kev and therefore it is very important to perform an energy calibration on a module basis (see section~\ref{sec:encal}).\\
|
||||
The default calibration files for each file will be stored in the directory according to the settings with the name \verb=calibration.snxxx= where \verb=xxx= is the module serial number.
|
||||
|
||||
|
||||
|
||||
\chapter{slsDetectorClient}
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
This program is intended to control the MYTHEN detectors via command line interface.
|
||||
|
||||
To get all the possibilities of usage simply type:
|
||||
\begin{description}
|
||||
\item[sls\_detector\_acquire] to readout the detector at full speed
|
||||
\item[sls\_detector\_put] to set detector parameters
|
||||
\item[sls\_detector\_get] to retrieve detector parameters
|
||||
\end{description}
|
||||
|
||||
There are different ways for communicationg with your detector(s).
|
||||
\begin{itemize}
|
||||
\item[multiDetector] is represented by a group of controllers which operate symultaneously with the same parameters. You can define several multiDetector systems and int this case you address them using different indexes. In this case the syntax will be \verb=sls\_detector\_cmd i-= where cmd can be acquire, put, get and i is the index of the multiDetector entity (if omitted defaults to 0 - standard usage). Normally it is handy to use the multiDetector structure also in case of single detectors. However in some cases one cannot avoid using the slsDetector structure for detailed configuration (e.g. meaning of external signals or other flags)
|
||||
\item[slsDetector] is represented by a single controller. You can define several multiDetector systems and int this case you address them using different indexes. In this case the syntax will be \verb=sls\_detector\_cmd i:= where cmd can be acquire, put, get and i is the index of the slsDetector entity, which cannot be omitted. When creating the multiDetector structure, the indexes are automatically assigned to the detectors contained in it. You can retrieve the indexes relative to the slsDetector using: \verb=sls\_detector\_get hostname:pos, sls\_detector\_get id:pos= whic will return the hostname in position pos of your multiDetector structure (pos=0 in case of single detectors) and its index.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\section{Acquisition}
|
||||
mythen\_acquire [id[-/:]]
|
||||
|
||||
the detector is started and the data are acquired, postprocessed and written to file according to the configuration
|
||||
|
||||
|
||||
\section{Detector setup}
|
||||
|
||||
mythen\_put [id[:/-]]var arg
|
||||
|
||||
is used to configure the detector parameter var
|
||||
e.g. mythen\_put 0:exptime 1 sets the exposure time to 1 s
|
||||
|
||||
\begin{description}
|
||||
\item[help i] get help
|
||||
\item[config fname] reads the configuration file specified and sets the values
|
||||
\item[parameters fname] sets the detector parameters specified in the file
|
||||
\item[setup rootname] reads the files specfied (and that could be created by get setup) and resets the complete detector configuration including flatfield corrections, badchannels, trimbits etc.
|
||||
\item[hostname name] this is mandatory!!!! sets hostname (or IP adress)
|
||||
\item[online b] b can be 0 or 1 and sets the detector in offline/online state. Must be used to restore communication if some socket called failed because the detector was not connected.
|
||||
\item[status s] either start or stop
|
||||
\item[caldir path] Sets path of the calibration files
|
||||
\item[trimdir path] Sets path of the trim files
|
||||
\item[outdir path] directory to which the files will be written by default
|
||||
\item[fname name] filename to which the files will be written by default (to which file and position indexes will eventually be attached)
|
||||
\item[index i] start index of the files (automatically incremented by the acquisition functions)
|
||||
\item[nmod n] Sets number of detector modules
|
||||
\item[extsig:i mode] Sets usage of the external digital signal i. mode 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
|
||||
\item[timing] 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 ofthe signals is configured as gate\_in and one as trigger\_in).
|
||||
\item[settings sett] Sets detector settings. Can be: standard fast highgain (depending on trheshold energy and maximum count rate: please refere to manual for limit values!);
|
||||
\item[threshold ev] Sets detector threshold in eV. Should be half of the beam energy. It is precise only if the detector is calibrated
|
||||
\item[vthreshold dac] Sets detector threshold in DAC units. A very rough calibration is dac=800-10*keV
|
||||
\item[exptime t] Sets the exposure time per frame (in s)
|
||||
\item[period t] Sets the frames period (in s)
|
||||
\item[delay t] Sets the delay after trigger (in s)
|
||||
\item[gates n] Sets the number of gates per frame
|
||||
\item[frames n] Sets the number of frames per cycle (e.g. after each trigger)
|
||||
\item[triggers n] Sets the number of triggers (e.g. number of triggers)
|
||||
\item[probes n] Sets the number of probes to accumulate (max 3)
|
||||
\item[dr n] Sets the dynamic range - can be (1,) 4, 8,16 or 24 bits
|
||||
\item[flags mode] Sets the readout flags - can be none or storeinram
|
||||
\item[flatfield fname] Sets the flatfield file name - none disable flat field corrections
|
||||
\item[ratecorr t] Sets the rate corrections with dead time t ns (0 unsets, -1 uses default dead time for chosen settings
|
||||
\item[badchannels fname] Sets the badchannels file name - none disable bad channels corrections
|
||||
\item[angconv fname] Sets the angular conversion file name
|
||||
\item[globaloff o] sets the fixed angular offset of your encoder - should be almost constant!
|
||||
\item[fineoff o] sets a possible angular offset of your setup - should be small but can be senseful to modify
|
||||
\item[binsize s] sets the binning size of the angular conversion (otherwise defaults from the angualr conversion constants)
|
||||
\item[angdir i] sets the angular direction of the detector (i can be 1 or -1 - by default 1, channel 0 is smaller angle)
|
||||
\item[positions np (pos0 pos1...posnp)] Sets the number of positions at which the detector is moved during the acquisition and their values
|
||||
\item[startscript script] sets a script to be executed at the beginning of the measurements (e.g. open shutter). \textit{none} unsets. Parameters will be parsed as \verb|script nrun=i par=spar| where i is the run number and spar is the value of startscriptpar.
|
||||
\item[stopscript script] sets a script to be executed at the end of the measurement (e.g. close shutter). \textit{none} unsets. Parameters will be parsed as \verb|script nrun=i par=spar| where i is the run number and spar is the value of stopscriptpar.
|
||||
\item[startscriptpar spar] sets a parameter passed to the start script as string with the syntax par=spar. Its meaning must be interpreted inside the script!
|
||||
\item[stopscriptpar spar] sets a parameter passed to the start script as string with the syntax par=spar. Its meaning must be interpreted inside the script!
|
||||
\item[scan0script script] Sets a scan script to be executed at higher level. Script can be none (unset), threshold (change threshold DAC values for all modules), energy (change energy threshold DAC values using calibration for each module), trimbits (change trimbits for all channels) or any script (e.g changing temperature or moving sample) which will be called with the syntax \verb| script nrun=i fn=fname var=val par=spar| where i is the file index, fname is the file name val is the current value of the scan variable and spar is the value of the scan parameter
|
||||
\item[scan1script script] Sets a scan script to be executed at lower level. Script can be none (unset), threshold (change threshold DAC values for all modules), energy (change energy threshold DAC values using calibration for each module), trimbits (change trimbits for all channels) or any script (e.g changing temperature or moving sample) which will be called with the syntax \verb| script nrun=i fn=fname var=val par=spar| where i is the file index, fname is the file name val is the current value of the scan variable and spar is the value of the scan parameter
|
||||
\item[scan0par spar] sets the scan parameter to be passed to scan0script as a string with syntax par=spar. Its meaning has to be interpreted insode the script!
|
||||
\item[scan1par spar] sets the scan parameter to be passed to scan1script as a string with syntax par=spar. Its meaning has to be interpreted insode the script!
|
||||
\item[scan0prec i] sets the precision of the scan variable in order to properly generate the file names for scan0
|
||||
\item[scan1prec i] sets the precision of the scan variable in order to properly generate the file names for scan1
|
||||
\item[scan0steps n (f0 f1..fn)] sets the steps for the scan0script. n is the number of steps and the following values are the step values.
|
||||
\item[scan1steps n (f0 f1..fn)] sets the steps for the scan1script. n is the number of steps and the following values are the step values.
|
||||
\item[scan0range mi ma st] generates the steps for the scan0script in the range mi to ma with step st (is mi smaller than ma specify a negative step)
|
||||
\item[scan1range mi ma st] generates the steps for the scan1script in the range mi to ma with step st (is mi smaller than ma specify a negative step)
|
||||
\item[scriptbefore script] sets the script to be executed before each acquisition (before all positions) with the syntax \verb|script nrun=i fn=fname par=spar sv0=svar0 sv1=svar1 p0=spar0 p1=spar1| where i is the file index, fname is the file name, sva0, svar1 are the current values of the scan variables 0 and 1, spar0, spar1 are tthe scan parameter 0 and 1. \textit{none} unsets.
|
||||
\item[scriptafter script] sets the script to be executed after each acquisition (after all positions) with the syntax \verb|script nrun=i fn=fname par=spar sv0=svar0 sv1=svar1 p0=spar0 p1=spar1| where i is the file index, fname is the file name, sva0, svar1 are the current values of the scan variables 0 and 1, spar0, spar1 are tthe scan parameter 0 and 1. \textit{none} unsets.
|
||||
\item[scriptbeforepar spar] sets the parameter to be passed to the script before witht he syntax par=spar
|
||||
\item[scriptafterpar spar] sets the parameter to be passed to the script after witht he syntax par=spar
|
||||
\item[headerbefore script] sets the script to be executed before each acquisition (after moving the detector) with the syntax \verb|script nrun=i fn=fname par=spar| where i is the run number, fname is the file name, spar is the header before parameter. The script is normally used to save a file header. \textit{none} unsets.
|
||||
\item[headerafter script] sets the script to be executed after each acquisition (after each position) with the syntax \verb|script nrun=i fn=fname par=spar| where i is the run number, fname is the file name, spar is the header after parameter. The script is normally used to complete the file header. \textit{none} unsets.
|
||||
\item[headerbeforepar spar] sets the parameter to be passed to the header before script with the syntax par=spar
|
||||
\item[headerafterpar spar] sets the parameter to be passed to the header after script with the syntax par=spar
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
|
||||
\section{Retrieving detector parameters (plus trimming and test modalities)}
|
||||
mythen\_get [id[:/-]]var arg
|
||||
|
||||
is used to retrieve the detector parameter var
|
||||
e.g. mythen\_get 0:exptime returns the exposure time in seconds
|
||||
|
||||
|
||||
|
||||
\begin{description}
|
||||
\item[help] This help
|
||||
\item[config fname] writes the configuration file
|
||||
\item[parameters fname] writes the main detector parameters for the measuremen tin the file
|
||||
\item[setup rootname] writes the complete detector setup (including configuration, trimbits, flat field coefficients, badchannels etc.) is a set of files for which the extension is automatically generated
|
||||
\item[online] return whether the detector is in online (1) or offline (0) state.
|
||||
\item[status] gets the detector status - can be: running, error, transmitting, finished, waiting or idle
|
||||
\item[data] gets all data from the detector (if any) processes them and writes them to file according to the preferences already setup
|
||||
\item[frame] gets a single frame from the detector (if any) processes it and writes it to file according to the preferences already setup
|
||||
\item[hostname] Gets the detector hostname (or IP address)
|
||||
\item[caldir] Gets path of the calibration files
|
||||
\item[trimdir] Gets path of the trim files
|
||||
\item[outdir] directory to which the files will be written by default
|
||||
\item[fname] filename to which the files will be written by default (to which file and position indexes will eventually be attached)
|
||||
\item[index] start index of the files (automatically incremented by the acquisition functions)
|
||||
\item[nmod] Gets number of detector modules
|
||||
\item[maxmod] Gets maximum number of detector modules
|
||||
\item[extsig:i] Gets usage of the external digital signal i. The return value 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\item[timing] 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 ofthe signals is configured as gate\_in and one as trigger\_in).
|
||||
\item[modulenumber] Gets the module serial number
|
||||
\item[moduleversion] Gets the module version
|
||||
\item[detectornumber] Gets the detector number (MAC address)
|
||||
\item[detectorversion] Gets the detector firmware version
|
||||
\item[softwareversion] Gets the detector software version
|
||||
\item[digitest:i] Makes a digital test of the detector module i. Returns 0 if it succeeds
|
||||
\item[bustest] Makes a test of the detector bus. Returns 0 if it succeeds
|
||||
\item[settings] Gets detector settings. Can be: standard fast highgain undefined
|
||||
\item[threshold] Gets detector threshold in eV. It is precise only if the detector is calibrated
|
||||
\item[vthreshold] Gets detector threshold in DAC units. A very rough calibration is dac=800-10*keV
|
||||
\item[exptime] Gets the exposure time per frame (in s)
|
||||
\item[period] Gets the frames period (in s)
|
||||
\item[delay] Gets the delay after trigger (in s)
|
||||
\item[gates] Gets the number of gates per frame
|
||||
\item[frames] Gets the number of frames per cycle (e.g. after each trigger)
|
||||
\item[triggers] Gets the number of triggers (e.g. number of triggers)
|
||||
\item[probes] Gets the number of probes to accumulate (max 3)
|
||||
\item[timestamp] Gets the internal time stamp of the nex frame acquired (i.e. during an acquisition, all timestamps of the frames are stored in a FIFO which can be read after the acquisition - returns -1 if the FIFO is empty)
|
||||
\item[dr] Gets the dynamic range
|
||||
\item[trim:mode fname] Trims the detector and writes the trimfile fname.snxxx. mode can be: noise beam improve fix offline - Check that the start conditions are OK!!!
|
||||
\item[flatfield] fname returns whether the flat field corrections are enabled and if so writes the coefficients to the specified filename. If fname is none it is not written
|
||||
\item[ratecorr] returns wether the rate corrections are enabled and what is the dead time used in ns
|
||||
\item[badchannels fname] returns wether the bad channels corrections are enabled and if so writes the bad channels to the specified filename. If fname is none it is not written
|
||||
\item[angconv fname] returns wether the angular conversion is enabled and if so writes the angular conversion coefficients to the specified filename. If fname is none, it is not written
|
||||
\item[globaloff] returns the fixed angular offset of your encoder - should be almost constant!
|
||||
\item[fineoff] returns a possible angualr offset of your setup - should be small but can be senseful to modify
|
||||
\item[binsize] returns the binning size of the angular conversion
|
||||
\item[angdir] gets the angular direction of the detector (can be 1 or -1 - by default 1, channel 0 is smaller angle)
|
||||
\item[positions] returns the number of positions at which the detector is moved during the acquisition and their values
|
||||
\item[startscript script] sets a script to be executed at the beginning of the measurements (e.g. open shutter). \textit{none} unsets. Parameters will be parsed as \verb|script nrun=i par=spar| where i is the run number and spar is the value of startscriptpar.
|
||||
\item[stopscript] returns the script to be executed at the end of the measurement (e.g. close shutter). \textit{none} unsets. Parameters will be parsed as \verb|script nrun=i par=spar| where i is the run number and spar is the value of stopscriptpar.
|
||||
\item[startscriptpar] returns the parameter passed to the start script as string with the syntax par=spar. Its meaning must be interpreted inside the script!
|
||||
\item[stopscriptpar]returns the parameter passed to the start script as string with the syntax par=spar. Its meaning must be interpreted inside the script!
|
||||
\item[scan0script] returns the scan script to be executed at higher level. Script can be none (unset), threshold (change threshold DAC values for all modules), energy (change energy threshold DAC values using calibration for each module), trimbits (change trimbits for all channels) or any script (e.g changing temperature or moving sample) which will be called with the syntax \verb| script nrun=i fn=fname var=val par=spar| where i is the file index, fname is the file name val is the current value of the scan variable and spar is the value of the scan parameter
|
||||
\item[scan1script] returns the scan script to be executed at lower level. Script can be none (unset), threshold (change threshold DAC values for all modules), energy (change energy threshold DAC values using calibration for each module), trimbits (change trimbits for all channels) or any script (e.g changing temperature or moving sample) which will be called with the syntax \verb| script nrun=i fn=fname var=val par=spar| where i is the file index, fname is the file name val is the current value of the scan variable and spar is the value of the scan parameter
|
||||
\item[scan0par] returns the scan parameter to be passed to scan0script as a string with syntax par=spar. Its meaning has to be interpreted insode the script!
|
||||
\item[scan1par] returns the scan parameter to be passed to scan1script as a string with syntax par=spar. Its meaning has to be interpreted insode the script!
|
||||
\item[scan0prec] returns the precision of the scan variable in order to properly generate the file names for scan0
|
||||
\item[scan1prec] returns the precision of the scan variable in order to properly generate the file names for scan1
|
||||
\item[scan0steps] returns the steps for the scan0script. n is the number of steps and the following values are the step values.
|
||||
\item[scan1steps] returns the steps for the scan1script. n is the number of steps and the following values are the step values.
|
||||
\item[scan0range] returns the steps for the scan0script. n is the number of steps and the following values are the step values.
|
||||
\item[scan1range] returns the steps for the scan1script. n is the number of steps and the following values are the step values.
|
||||
\item[scriptbefore] returns the script to be executed before each acquisition (before all positions) with the syntax \verb|script nrun=i fn=fname par=spar sv0=svar0 sv1=svar1 p0=spar0 p1=spar1| where i is the file index, fname is the file name, sva0, svar1 are the current values of the scan variables 0 and 1, spar0, spar1 are tthe scan parameter 0 and 1.
|
||||
\item[scriptafter] returns the script to be executed after each acquisition (after all positions) with the syntax \verb|script nrun=i fn=fname par=spar sv0=svar0 sv1=svar1 p0=spar0 p1=spar1| where i is the file index, fname is the file name, sva0, svar1 are the current values of the scan variables 0 and 1, spar0, spar1 are tthe scan parameter 0 and 1.
|
||||
\item[scriptbeforepar] returns the parameter to be passed to the script before witht he syntax par=spar
|
||||
\item[scriptafterpar] returns the parameter to be passed to the script after witht he syntax par=spar
|
||||
\item[headerbefore] returns the script to be executed before each acquisition (after moving the detector) with the syntax \verb|script nrun=i fn=fname par=spar| where i is the run number, fname is the file name, spar is the header before parameter. The script is normally used to save a file header.
|
||||
\item[headerafter] returns the script to be executed after each acquisition (after each position) with the syntax \verb|script nrun=i fn=fname par=spar| where i is the run number, fname is the file name, spar is the header after parameter. The script is normally used to complete the file header.
|
||||
\item[headerbeforepar] returns the parameter to be passed to the header before script with the syntax par=spar
|
||||
\item[headerafterpar]returns the parameter to be passed to the header after script with the syntax par=spar
|
||||
\end{description}
|
||||
|
||||
\section{Tips}
|
||||
|
||||
\subsubsection{Mandatory setup}
|
||||
First of all you should setup the hostname and the detector size and dynamic range:
|
||||
\begin{verbatim}
|
||||
mythen_put hostname mcs1x00
|
||||
mythen_get nmod
|
||||
mythen_get dr
|
||||
\end{verbatim}
|
||||
You should also tell the program where to find the default trimbits files and calibration files:
|
||||
\begin{verbatim}
|
||||
mythen_put trimdir /scratch/trimbits
|
||||
mythen_get caldir /scratch/calibration
|
||||
\end{verbatim}
|
||||
To chose the detector settings (e.g. standard):
|
||||
\begin{verbatim}
|
||||
mythen_put settings standard
|
||||
\end{verbatim}
|
||||
In case \verb=mythen_get settings= does not answer correctly, it most probably means that there is a problem in the architecture or setting of \textit{trimdir} and \textit{caldir} (see section~\ref{sec:trimdir}).
|
||||
|
||||
\subsubsection{Acquisition setup}
|
||||
You need to setup where the files will be written to
|
||||
\begin{verbatim}
|
||||
mythen_put outdir /scratch
|
||||
mythen_put fname run
|
||||
mythen_put index 0
|
||||
\end{verbatim}
|
||||
this way your files will al be named /scracth/run\_i.dat where is starts from 0 and is automatically incremented.
|
||||
|
||||
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}
|
||||
mythen_put settings standard
|
||||
mythen_put threshold 6000
|
||||
mythen_put exptime 1.
|
||||
mythen_put frames 10
|
||||
\end{verbatim}
|
||||
In this case 10 consecutive 1s frames will be acquired.
|
||||
External gating and triggering or more advanced acquisition modes are not explained here.
|
||||
|
||||
\subsubsection{Acquiring}
|
||||
There are two ways of acquiring data.\\
|
||||
The first is fully automatic and freezes the terminal until the acquisition is finished:
|
||||
\begin{verbatim}
|
||||
mythen_acquire 0
|
||||
\end{verbatim}
|
||||
This is particulary indicated for fast real time acquisitions.
|
||||
|
||||
If you want to acquire few long frames you can run:
|
||||
\begin{verbatim}
|
||||
mythen_put status start
|
||||
\end{verbatim}
|
||||
and the poll the detector status using
|
||||
\begin{verbatim}
|
||||
mythen_get status
|
||||
\end{verbatim}
|
||||
if the answer is either transmitting or finished, the data are ready to be downloaded from the detector.
|
||||
This can be done using either:
|
||||
\begin{verbatim}
|
||||
mythen_get frame
|
||||
\end{verbatim}
|
||||
where a single data frame is downloaded or
|
||||
\begin{verbatim}
|
||||
mythen_get data
|
||||
\end{verbatim}
|
||||
where all data present on the detector are downloaded.
|
||||
This is not indicated when many short real time frames should be acquired since the detector memory would be full before finishing the acquisition since the download time is so limited.
|
||||
|
||||
\subsubsection{Data processing}
|
||||
Flat field and rate corrections can be applied direcly by simply selecting:
|
||||
\begin{verbatim}
|
||||
mythen_put flatield myflatfield.raw
|
||||
mythen_put ratecorr -1
|
||||
\end{verbatim}
|
||||
|
||||
Concerning the angular conversion, it is very reccomended that the users edit the file usersFunctions.cpp contained in the folder slsDetectorSoftware/usersFunctions.
|
||||
In the file it is possible to modify the function used for calculating the angular conversion and the ones used for interfacing with the diffractometer equipment i.e. reading the encoder fo the detector position, the ionization chanmbers etc.
|
||||
|
||||
It is also possible to configure some scans/scripts to be executed during the acquisition. They will be normally called as system calls except for threshold, energy and trimbits scans.
|
||||
|
||||
|
||||
|
||||
\begin{comment}
|
||||
|
||||
\chapter{mythenGUI}
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
To run the GUI just call:
|
||||
\begin{verbatim}
|
||||
bin/mythenGUI
|
||||
\end{verbatim}
|
||||
Possible arguments are:
|
||||
\begin{description}
|
||||
\item[help] This help
|
||||
\item[-f myconf.txt] loads the configuration file to myconf.txt
|
||||
\item[-id i] Sets the detector to id i (the default is i). Useful when more than one detector are operated in parallel.
|
||||
\item[-offline] works in offline mode i.e. not connecting to the detector. Usefule e.g. to perform the energy calibration of the detector and possibly in the future to reprocess and visualize the data (not yet implemented).
|
||||
\item[-size n] sets the size of the text to n (the default is n=10);
|
||||
\item[-scale s] scales the size of the text and the root canvas by the scaling factor s (the default is s=1). It is useful when executing the program on a PC with low screen resolution (e.g. a laptop) and the window would then fall out of the screen.");
|
||||
\end{description}
|
||||
The configuration of the detector can either be set when startin the GUI using the configuration file or using the text client or even using the configuration tab of the GUI.
|
||||
|
||||
|
||||
\section{Acquisition}
|
||||
By pressing the start button in the measurement tab the data will be acquired, saved, corrected and plotted as specified.
|
||||
|
||||
The stop button stops the acquisition i.e. if there are data left to be saved processed etc. the program will not really stop until the offline processes are done.
|
||||
|
||||
Please don't be too nervous clicking on start and/or stop since this is one of the main causes of crashes (the program has been teste only for quiet users :-)).
|
||||
|
||||
\section{Other functions}
|
||||
The text client and the GUI can be operated in parallel (althoug you should not change parameters or acquire data at the same data from the gui and the text client!) and the values displayed by the GUI should normally be the actual ones.
|
||||
However this kind of parallel operation is at your own risk!
|
||||
|
||||
|
||||
The main parameters are group in tabs according to their meaning. To enable some tabs you should enter the modes menu and select Advanced/configuration/Debug
|
||||
Here is the general subject of the tabs:
|
||||
\begin{description}
|
||||
\item[Measurement] Main acquisition parameters that you may want to change often
|
||||
\item[Data Output] Where to write the data, in which format and what to to with them
|
||||
\item[Plot] What to plot and how (only partially implemented)
|
||||
\item[Actions] Allows to configure scans and/or execute scripts at teh beginning or at the end of the measurement.
|
||||
\item[Time resolved] Parameters for time resolved (real time) measurements
|
||||
\item[Advanced] Must be activated with the modes menu button. Allows to set some advanced configuration which you don't want general users to change (e.g. data size, external signals, advanced acquisition speed)
|
||||
\item[Trimming] Must be activated with the modes menu button. Allows to trim the detector and/or load specific trim files.
|
||||
\item[Configuration] Must be activated with the modes menu button. Allows to configure the detector
|
||||
\item[Debugging] Must be activated with the modes menu button. Allows to test the detectors functionality, acquire serial numbers etc.
|
||||
\end{description}
|
||||
Most of the parameters are explained through a tooltip which appers if you leave the mouse on the widget for a few seconds.
|
||||
|
||||
The configuration and/or the complete setup of the detector can be loaded and saved using the Utilities menu.
|
||||
|
||||
|
||||
|
||||
\subsection{Mandatory configuration}
|
||||
Where to find some important parameters (should be set only once, then it should remain in memory):
|
||||
\begin{description}
|
||||
\item[Hostname] Configuration tab. Press enter to update.
|
||||
\item[Trim dir] Configuration tab. Press enter to update.
|
||||
\item[Cal dir] Configuration tab. Press enter to update.
|
||||
\item[Number of modules] Configuration tab or Advanced tab
|
||||
\item[Dynamic range] Advanced tab
|
||||
\item[Output directory] Data Output tab.
|
||||
\item[File name] Measurement tab.
|
||||
\item[File index] Measurement tab (automatically incremented).
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsection{Acquisition setup}
|
||||
Where to find some important parameters (should be set only once, then it should remain in memory):
|
||||
\begin{description}
|
||||
\item[Settings] Measurement tab
|
||||
\item[Threshold] Measurement tab
|
||||
\item[Exposure time] Measurement tab
|
||||
\item[Number of frames] Measurement tab for non time-resolved measurement, Time resolved tab for fast real time measurements. if you need some action between frame see Actions tab.
|
||||
\end{description}
|
||||
|
||||
\chapter{Energy calibration} \label{sec:encal}
|
||||
The energy calibration should be performed by illuminating the detector with monochromatic radiation at at least 2 (better 3-4) energies larger than 8~keV. The energy calibration should be performed after trimming and the trim files used should be properly copied in the trimbits directory and used as default.
|
||||
|
||||
The data can be acquired either with the mythenGUI (by using the calibration wizard or the threshold scan utility in the Action tab) or with the slsDetectorClient (by scanning the threshold using mythen\_put 0:vthreshold), but since the analysis needs the use of root, the GUI must be used to finalize the calibration.
|
||||
|
||||
In the mythenGUI menu Utilities/Calibration wizard it is possible to simply and automatically perform the energy calibration of the detector:
|
||||
\begin{enumerate}
|
||||
\item
|
||||
Check the ``Detector online'' box in case you want to acquire the data, otherwise simply unclick it and you will be required to provide already acquired data and the details about the detector.\\
|
||||
The first time, chose ``Start new calibration'' and chose the directory where you want to store the data you want to acquire. The calibration file names have a''.root'' extension. \\
|
||||
The calibration should be perormed by acquiring always the same settings and with the same number of modules always connected in the same sequence. The clibration files, however, can be used for the modules also on different systems (i.e. different number of modules, readout board, etc.). A new calibration should be performed for different detector settings.
|
||||
\item If the detector is online, the settings, the number of modules and their serial number will automatically be retrieved. If you selected the offline mode, you must provide the detector settings for the calibration that you want to perform and the serial numbers of the modules in the correct order (to do so, enter the 3 hexadecimal digits in the right sequence and press enter for each module - in case of error the list is editable).
|
||||
\item Enter the energy of your beam (in keV!); \\
|
||||
If you are in online mode, the acquisition time should be chosen such that there are at least 1000 counts per channel at an intemediate threshold; the range of the threshold scan should be between approx 800-15*keV and 800, better with a step of 1 but up to 5 can be fine in order to reduce the acquisition time: it is more important that each step has a sufficient statistics than that the threshold step is low! After pressing ``Next'', the detector starts acquiring and showing the histogram of the calibration. When it is finished simply press ``Finish'' to accept the data, ``Cancel'' to reject them.\\
|
||||
In offline mode, you are required to enter the range and step of the calibration and to select the files (in the same sequence as the threshold values!). After pressing ``Next'' (enabled only if the number of steps is the same as the number of files), the histogram showing the threshold scan is drawn. Simply press ``Finish'' to accept the data, ``Cancel'' to reject them.
|
||||
\item For the following calibration steps, check the ``Detector online'' box in case you want to acquire the data, otherwise simply unclick it and you will be required to provide already acquired data and the details about the detector.\\ Chose ``Add calibration step'' and select the file created prevously. The settings, number of modules and serial numbers of the modules and the energies at which the acquisition has been already performed should be displayed.
|
||||
\item Add a new calibration step like in point 3. and iterate for all the energies at which you want to perform the calibration.
|
||||
\item To generate the calibration files, chose ``Generate calibration files'' and select the file created prevously. The settings, number of modules and serial numbers of the modules and the energies at which the acquisition has been already performed should be displayed.
|
||||
\item Chose the directory and the root of the calibrations files name. An extension corresponding to the serial number of the modules will be generated.
|
||||
\item The calibration files for each module should be generated. For each energy you can set the start parameters of the fit and the fitting range (press enter after each change) so that the fitted curves nicely fit the data. The linear fit between energies and inflection points can also be checked.
|
||||
\end{enumerate}
|
||||
|
||||
\end{comment}
|
||||
|
||||
|
||||
\end{document}
|
||||
|
@ -1,737 +0,0 @@
|
||||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%BoundingBox: 60 27 781 568
|
||||
%%HiResBoundingBox: 60.900000 27.600000 781.000000 567.700000
|
||||
%.....................................
|
||||
%%Creator: GPL Ghostscript 870 (epswrite)
|
||||
%%CreationDate: 2012/12/06 13:02:37
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 2
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
% This copyright applies to everything between here and the %%EndProlog:
|
||||
% Copyright (C) 2009 Artifex Software, Inc. All rights reserved.
|
||||
%%BeginResource: procset GS_epswrite_2_0_1001 1.001 0
|
||||
/GS_epswrite_2_0_1001 80 dict dup begin
|
||||
/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
|
||||
4 index eq and{ pop pop pop}{ PageSize dup 1
|
||||
5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get exec}
|
||||
{ pop/setpagedevice where
|
||||
{ pop 1 dict dup /PageSize PageSize put setpagedevice}
|
||||
{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
|
||||
setpage}if}ifelse}ifelse}ifelse} bind def
|
||||
/!{bind def}bind def/#{load def}!/N/counttomark #
|
||||
/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
|
||||
/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
|
||||
/w/setlinewidth #/J/setlinecap #
|
||||
/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
|
||||
/m/moveto #/l/lineto #/c/rcurveto #
|
||||
/p{N 2 idiv{N -2 roll rlineto}repeat}!
|
||||
/P{N 0 gt{N -2 roll moveto p}if}!
|
||||
/h{p closepath}!/H{P closepath}!
|
||||
/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
|
||||
/re{4 -2 roll m exch dup lx exch ly neg lx h}!
|
||||
/^{3 index neg 3 index neg}!
|
||||
/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
|
||||
/q/gsave #/Q/grestore #/rf{re fill}!
|
||||
/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
|
||||
/|={pop exch 4 1 roll 1 array astore cvx 3 array astore cvx exch 1 index def exec}!
|
||||
/|{exch string readstring |=}!
|
||||
/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
|
||||
/@/currentfile #/${+ @ |}!
|
||||
/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
|
||||
3 1 roll}repeat pop pop true}!
|
||||
/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
|
||||
/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
|
||||
/Ic{exch Ix false 3 colorimage}!
|
||||
/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
|
||||
/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
|
||||
/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
|
||||
/@F{@ &2<<F}!/@C{@X &2 FX}!
|
||||
/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
|
||||
/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
|
||||
/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
|
||||
currentdict end image}!
|
||||
/~{@ read {pop} if}!
|
||||
end def
|
||||
%%EndResource
|
||||
/pagesave null def
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
GS_epswrite_2_0_1001 begin
|
||||
/pagesave save store 197 dict begin
|
||||
0.1 0.1 scale
|
||||
%%EndPageSetup
|
||||
gsave mark
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
255 G
|
||||
609.602 276.398 7200 5400 re
|
||||
f
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
21.6 w
|
||||
8 M
|
||||
1 j
|
||||
K
|
||||
2682 1943.2 4677.6 1704 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
0.24 i
|
||||
K
|
||||
7288.09 3733 -4.45 0 13.13 59.31 3.98 0 P
|
||||
-0.55 -5.7 -0.82 -10.42 -0.82 -14.16 c
|
||||
0 -10.69 3.42 -19.38 10.25 -26.09 c
|
||||
6.84 -6.71 15.76 -10.06 26.78 -10.06 c
|
||||
10.23 0 18.01 3.15 23.32 9.45 c
|
||||
5.31 6.3 7.97 13.57 7.97 21.79 c
|
||||
0 5.32 -1.21 10.18 -3.63 14.56 c
|
||||
-3.67 6.5 -13.46 17.93 -29.39 34.3 c
|
||||
-7.73 7.83 -12.68 13.66 -14.87 17.5 c
|
||||
-3.59 6.34 -5.39 13 -5.39 19.97 c
|
||||
0 11.12 4.14 20.63 12.41 28.54 c
|
||||
8.27 7.91 18.89 11.89 31.85 11.89 c
|
||||
4.37 0 8.51 -0.43 12.41 -1.29 c
|
||||
2.42 -0.47 6.83 -2.03 13.23 -4.69 c
|
||||
4.53 -1.8 7.03 -2.77 7.5 -2.93 c
|
||||
1.09 -0.23 2.3 -0.35 3.63 -0.35 c
|
||||
2.26 0 4.21 0.59 5.86 1.76 c
|
||||
1.64 1.17 3.55 3.67 5.74 7.5 c
|
||||
4.47 0 -12.19 -53.2 -3.98 0 p
|
||||
0.31 4.75 0.47 8.59 0.47 11.52 c
|
||||
0 9.58 -3.12 17.42 -9.37 23.52 c
|
||||
-6.25 6.1 -14.49 9.15 -24.73 9.15 c
|
||||
-8.12 0 -14.73 -2.41 -19.8 -7.2 c
|
||||
-5.08 -4.79 -7.62 -10.34 -7.62 -16.62 c
|
||||
0 -5.5 1.62 -10.75 4.87 -15.74 c
|
||||
3.25 -4.99 10.72 -13.13 22.41 -24.41 c
|
||||
11.7 -11.28 19.26 -20.08 22.71 -26.41 c
|
||||
3.44 -6.33 5.16 -13.07 5.16 -20.22 c
|
||||
0 -8.1 -2.14 -15.94 -6.41 -23.52 c
|
||||
-4.26 -7.59 -10.37 -13.46 -18.35 -17.62 c
|
||||
-7.97 -4.16 -16.69 -6.25 -26.14 -6.25 c
|
||||
-4.69 0 -9.07 0.43 -13.13 1.29 c
|
||||
-4.06 0.86 -10.55 2.97 -19.46 6.33 c
|
||||
-3.05 1.17 -5.59 1.76 -7.62 1.76 c
|
||||
-4.61 0 -8.21 -3.12 -10.79 -9.37 c
|
||||
h
|
||||
f
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
9.6 w
|
||||
8 M
|
||||
1 j
|
||||
K
|
||||
1437.6 5345.2 1704 -4677.6 S
|
||||
131072 M
|
||||
1 J
|
||||
1508.4 5276.8 -67.2 67.2 -12 -96 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
255 G
|
||||
2904 2021.2 -225.6 -81.6 81.6 -225.6 225.6 81.6 f*
|
||||
9.6 w
|
||||
8 M
|
||||
1 J
|
||||
K
|
||||
2904 2021.2 -225.6 -81.6 81.6 -225.6 225.6 81.6 H
|
||||
S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
0.24 i
|
||||
K
|
||||
5019.7 2957 -37.97 0 -25.43 77.23 P
|
||||
-0.35 -0.14 -0.7 -0.23 -1.06 -0.23 c
|
||||
-5.6 0 -11.34 0.66 -17.22 1.98 c
|
||||
-13.71 -48.27 p
|
||||
-1.8 -6.28 -2.7 -11.57 -2.7 -15.89 c
|
||||
0 -3.29 1.13 -5.88 3.4 -7.77 c
|
||||
1.72 -1.41 6.41 -2.43 14.06 -3.06 c
|
||||
-1.05 -4 -61.52 0 1.29 4 p
|
||||
5.77 0.23 9.67 0.82 11.7 1.76 c
|
||||
3.2 1.33 5.54 3.13 7.02 5.41 c
|
||||
2.5 3.68 5.11 10.18 7.84 19.51 c
|
||||
27.74 96.23 p
|
||||
1.87 6.43 2.81 11.4 2.81 14.93 c
|
||||
0 3.6 -1.46 6.66 -4.39 9.16 c
|
||||
-2.84 2.43 -6.87 3.64 -12.1 3.64 c
|
||||
-0.16 0 -0.32 0 -0.48 0 c
|
||||
1.41 4.36 51.73 0 p
|
||||
17.32 0 29.81 -3.3 37.46 -9.88 c
|
||||
7.64 -6.58 11.48 -15.24 11.48 -25.97 c
|
||||
0 -10.26 -3.92 -19.64 -11.74 -28.14 c
|
||||
-7.82 -8.5 -18.54 -13.89 -32.16 -16.16 c
|
||||
15.47 -46.64 p
|
||||
3.75 -11.44 7.5 -18.88 11.25 -22.33 c
|
||||
3.75 -3.45 9.8 -5.41 18.16 -5.87 c
|
||||
h
|
||||
4958.77 3107.03 -18.76 -64.96 P
|
||||
5 -0.71 9.46 -1.07 13.37 -1.07 c
|
||||
13.44 0 24.07 3.79 31.89 11.38 c
|
||||
7.81 7.59 11.73 17.02 11.73 28.31 c
|
||||
0 8.82 -2.45 15.57 -7.34 20.26 c
|
||||
-4.89 4.69 -12.21 7.05 -21.98 7.05 c
|
||||
-2.5 0 -5.47 -0.33 -8.91 -0.97 c
|
||||
h
|
||||
f
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
5024 2895 113 73 @C
|
||||
,
|
||||
4'$<Oc\F!fVqXN:n(uq"h>?(PNr+'>o\I3hqg3hLhm`!]qsE5-rsS4Sg[G.?]799upA99Qp[-`0
|
||||
g])3#6BAatqiKjQ^>9-V=WR7MrK6O*gUDBRrSHGdG2KcWhqRk^DscELp><=UrO["&gUjqE]A%f3
|
||||
IG8VNgO"Eg^VegohS]'@[^BMnK3GObaVo'lh>=Si)L2ks3,2HF#+e*!BJh!<0S+o~>
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
31.2 w
|
||||
8 M
|
||||
1 j
|
||||
239 41 26 rG
|
||||
1568.4 5010.4 484.8 -1332 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
2037.6 3739.6 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1586.4 4970.8 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1629.6 4858 91.2 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1670.4 4745.2 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1711.2 4632.4 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1752 4519.6 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1792.8 4406.8 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1833.6 4294 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1874.4 4181.2 93.6 33.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
4.8 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
1915.2 4068.4 93.6 36 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
1467 4909 59 96 /3M
|
||||
$C
|
||||
.`IS0Ld:4A+ZMLg2b5Xe2bCSVVX&>nrEH+JX*X)]e(4P'rjokZs7O.ms*rYps8W-!s8W-!n(iKn
|
||||
s',K;qgYg*I=C)=lg!BU^Uh!\mZkAp<n?)29#Cs;@0I'>Ka]@`:]~>
|
||||
,
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
1535 4791 40 94 /6P
|
||||
$C
|
||||
3#[6B$6[/g[I&JDs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!YOcIICQ9GW*Zc@D*Zbh&~>
|
||||
,
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
1579 4671 67 94 /3W
|
||||
$C
|
||||
49Y]=^$X\Mm#4SRMN6>9Df*+)D=-(cgUD(omG#*fhX0(,Dqha>G43%drOq*4hXA)Fn)&Wns5or]
|
||||
s7Wqq];o`!F_u*7<n@a+@)4?6X&c?):t:7($4MVZ~>
|
||||
,
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
1733 4221 63 118 /6Z
|
||||
$C
|
||||
3$]Vg*>.d`$pB@=_sR0dG+5_-2fJ-Ah=p=:]D^XTs6fo2s*+@TpA`tJn,DeMJ+nH)s)7knrVoWu
|
||||
-6"lS,sd@p&lh[ks!3:nSN;8t<ioPU~>
|
||||
,
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
1595 4489 111 15 /4G
|
||||
$C
|
||||
1GVp?XPj?p@0]L`l)(*LBrD"2rmOSk[*r'EC)B6i(f1~>
|
||||
,
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
1775 3949 4G ,
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
1715 3711 6P ,
|
||||
1769 3711 3W ,
|
||||
1847 3709 58 94 /7N
|
||||
$C
|
||||
+pGa;p[>kFqsWEkqtK!^rV,cqIJ`L1J(st[pA_W#^[;&>qg[B"gm['t\%_jr\)I4%_si)4pYW^Bg]~>
|
||||
,
|
||||
1917 3709 59 96 /4R
|
||||
$C
|
||||
0G>U]W&^M[6Ni#O)ho=k@G?P'4*L#Gh7Ime]7/SNDg1%3mDsi=W#4IqDM-mQcu%/7-9;DRJd8(j
|
||||
e'`QV\l\R.:]A%Ws7QD!s'OWtrjT*-[_As;Xo0bmFgdX;Bj43I9%Z`Q0U7Gj_Li1('E~>
|
||||
,
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
21.6 w
|
||||
8 M
|
||||
1 j
|
||||
67 72 170 rG
|
||||
4162.8 3647.2 3180 0 S
|
||||
131072 M
|
||||
1 J
|
||||
4280.4 3704.8 -117.6 -60 117.6 -57.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
7.2 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
5648.4 3035.2 m
|
||||
-108 105.6 -177.6 340.8 -177.6 600 c
|
||||
S
|
||||
131072 M
|
||||
5569.2 3071.2 81.6 -36 -19.2 84 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
0.2 i
|
||||
K
|
||||
5677.63 3404.81 -23.16 -92.63 P
|
||||
14.39 1 26.13 5.38 35.21 13.11 c
|
||||
9.08 7.74 15.41 18.73 18.96 32.96 c
|
||||
3.54 14.16 2.74 25.11 -2.39 32.85 c
|
||||
-5.14 7.74 -14.68 12.3 -28.62 13.7 c
|
||||
h
|
||||
5629.52 3312.18 23.16 92.63 P
|
||||
-14.73 -1.4 -26.63 -5.96 -35.71 -13.7 c
|
||||
-9.08 -7.74 -15.39 -18.69 -18.93 -32.85 c
|
||||
-3.56 -14.24 -2.72 -25.19 2.51 -32.85 c
|
||||
5.23 -7.66 14.89 -12.07 28.98 -13.23 c
|
||||
h
|
||||
5709.23 3437 -1.29 -5.16 P
|
||||
-9.65 -0.16 -16.33 -1.58 -20.05 -4.27 c
|
||||
-3.72 -2.69 -6.52 -7.79 -8.4 -15.31 c
|
||||
-0.32 -1.27 p
|
||||
22.07 -0.79 38.18 -5.79 48.33 -15.04 c
|
||||
10.15 -9.25 13.27 -21.71 9.34 -37.41 c
|
||||
-3.69 -14.76 -12.99 -26.82 -27.91 -36.18 c
|
||||
-14.92 -9.36 -33.59 -14.82 -56.01 -16.37 c
|
||||
-0.64 -2.56 p
|
||||
-1.8 -7.2 -1.4 -12.18 1.19 -14.93 c
|
||||
2.59 -2.75 8.44 -4.2 17.54 -4.36 c
|
||||
-1.29 -5.16 -72.3 0 ^ p
|
||||
9.34 0.15 16 1.64 19.98 4.47 c
|
||||
3.99 2.83 6.92 8 8.8 15.51 c
|
||||
0.46 1.86 p
|
||||
-21.72 1.55 -37.72 7.01 -48 16.38 c
|
||||
-10.28 9.36 -13.57 21.42 -9.88 36.18 c
|
||||
3.91 15.62 13.27 28.06 28.09 37.35 c
|
||||
14.82 9.29 33.5 14.31 56.04 15.1 c
|
||||
0.32 1.27 p
|
||||
1.9 7.6 1.66 12.72 -0.73 15.37 c
|
||||
-2.39 2.65 -8.44 4.05 -18.17 4.21 c
|
||||
1.29 5.16 h
|
||||
f
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
5720 3217 113 73 @C
|
||||
,
|
||||
4'$<Oc\F!fVqXN:n(uq"h>?(PNr+'>o\I3hqg3hLhm`!]qsE5-rsS4Sg[G.?]799upA99Qp[-`0
|
||||
g])3#6BAatqiKjQ^>9-V=WR7MrK6O*gUDBRrSHGdG2KcWhqRk^DscELp><=UrO["&gUjqE]A%f3
|
||||
IG8VNgO"Eg^VegohS]'@[^BMnK3GObaVo'lh>=Si)L2ks3,2HF#+e*!BJh!<0S+o~>
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
9.6 w
|
||||
8 M
|
||||
1 j
|
||||
67 72 170 rG
|
||||
1862.4 5062 1094.4 -3009.6 S
|
||||
131072 M
|
||||
1 J
|
||||
1933.2 4993.6 -69.6 67.2 -9.6 -96 S
|
||||
2890.8 2116 67.2 -64.8 12 93.6 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
0.24 i
|
||||
K
|
||||
2399.77 4012 -2.62 0 1.41 4 50.7 0 P
|
||||
21.47 0 37.38 -2.48 47.72 -7.4 c
|
||||
10.34 -4.93 18.6 -12.68 24.77 -23.27 c
|
||||
6.16 -10.59 9.25 -21.95 9.25 -34.06 c
|
||||
0 -10.4 -1.81 -20.5 -5.36 -30.31 c
|
||||
-3.55 -9.81 -7.57 -17.66 -12.06 -23.57 c
|
||||
-4.49 -5.9 -11.38 -12.41 -20.67 -19.52 c
|
||||
-9.29 -7.12 -19.36 -12.37 -30.21 -15.77 c
|
||||
-10.85 -3.4 -24.4 -5.1 -40.64 -5.1 c
|
||||
-67.21 0 1.53 4 p
|
||||
6.2 0.16 10.36 0.71 12.48 1.65 c
|
||||
3.14 1.34 5.45 3.14 6.94 5.42 c
|
||||
2.28 3.3 4.83 9.93 7.65 19.9 c
|
||||
28.25 96.56 p
|
||||
2.2 7.61 3.3 13.58 3.3 17.9 c
|
||||
0 3.06 -1.04 5.42 -3.1 7.07 c
|
||||
-2.06 1.65 -6.11 2.5 -12.13 2.5 c
|
||||
h
|
||||
2439.02 4007.5 -34.18 -118.95 P
|
||||
-2.56 -8.91 -3.84 -14.41 -3.84 -16.52 c
|
||||
0 -1.25 0.41 -2.46 1.22 -3.63 c
|
||||
0.82 -1.17 1.92 -1.95 3.32 -2.34 c
|
||||
2.01 -0.7 5.27 -1.05 9.77 -1.05 c
|
||||
12.17 0 23.46 1.27 33.89 3.81 c
|
||||
10.42 2.54 18.97 6.31 25.64 11.31 c
|
||||
9.46 7.27 17.01 17.27 22.67 30 c
|
||||
5.66 12.73 8.5 27.23 8.5 43.48 c
|
||||
0 18.36 -4.36 32.01 -13.04 40.96 c
|
||||
-8.68 8.95 -21.36 13.45 -38.02 13.45 c
|
||||
-4.11 0 -9.42 -0.19 -15.93 -0.5 c
|
||||
h
|
||||
f
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
2530 3795 113 73 @C
|
||||
,
|
||||
4'$<Oc\F!fVqXN:n(uq"h>?(PNr+'>o\I3hqg3hLhm`!]qsE5-rsS4Sg[G.?]799upA99Qp[-`0
|
||||
g])3#6BAatqiKjQ^>9-V=WR7MrK6O*gUDBRrSHGdG2KcWhqRk^DscELp><=UrO["&gUjqE]A%f3
|
||||
IG8VNgO"Eg^VegohS]'@[^BMnK3GObaVo'lh>=Si)L2ks3,2HF#+e*!BJh!<0S+o~>
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
7.2 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
0 168 170 rG
|
||||
1870.8 4295.2 5460 -660 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
7.2 w
|
||||
8 M
|
||||
1 J
|
||||
1 j
|
||||
K
|
||||
5146.8 3906.4 m
|
||||
-21.6 -45.6 -36 -144 -36 -254.4 c
|
||||
S
|
||||
131072 M
|
||||
5074.8 3731.2 38.4 -81.6 40.8 79.2 S
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
0.2 i
|
||||
K
|
||||
4816.16 3816.27 m
|
||||
0.62 16.52 -0.95 28.4 -4.68 35.64 c
|
||||
-3.74 7.24 -10.06 10.87 -18.96 10.87 c
|
||||
-9.61 0 -18.31 -4.41 -26.1 -13.21 c
|
||||
-7.79 -8.81 -13.57 -20.77 -17.35 -35.88 c
|
||||
-4.09 -16.37 -4.58 -28.87 -1.47 -37.52 c
|
||||
3.11 -8.65 9.71 -12.98 19.79 -12.98 c
|
||||
9.14 0 17.27 3.77 24.39 11.33 c
|
||||
7.12 7.55 15.25 21.47 24.38 41.75 c
|
||||
h
|
||||
4840.49 3866.7 22.38 0 -18.12 -35.93 P
|
||||
-3.21 -6.27 -6.61 -12.37 -10.2 -18.32 c
|
||||
-3.6 -5.95 -7.32 -11.62 -11.17 -17.02 c
|
||||
0.91 -6.97 2.46 -12.19 4.64 -15.68 c
|
||||
2.18 -3.48 4.98 -5.22 8.42 -5.22 c
|
||||
2.58 0 5 1.02 7.27 3.07 c
|
||||
2.27 2.04 4.07 4.79 5.4 8.24 c
|
||||
4.57 0 -0.64 -2.57 p
|
||||
-2.22 -8.87 -5.12 -15.47 -8.7 -19.79 c
|
||||
-3.58 -4.32 -7.91 -6.48 -12.99 -6.48 c
|
||||
-5.39 0 -9.12 2.1 -11.2 6.3 c
|
||||
-2.08 4.2 -3.08 12.22 -3.01 24.05 c
|
||||
-9 -10.67 -17.78 -18.39 -26.36 -23.18 c
|
||||
-8.58 -4.79 -17.87 -7.18 -27.87 -7.18 c
|
||||
-15.23 0 -26.56 5.4 -33.98 16.2 c
|
||||
-7.42 10.8 -9.06 24.46 -4.93 40.99 c
|
||||
3.72 14.89 12.18 27.91 25.35 39.07 c
|
||||
13.18 11.15 26.88 16.74 41.1 16.74 c
|
||||
11.17 0 19.46 -3.3 24.89 -9.88 c
|
||||
5.43 -6.57 7.94 -16.44 7.54 -29.59 c
|
||||
h
|
||||
f
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
K
|
||||
4849 3697 113 73 @C
|
||||
,
|
||||
4'$<Oc\F!fVqXN:n(uq"h>?(PNr+'>o\I3hqg3hLhm`!]qsE5-rsS4Sg[G.?]799upA99Qp[-`0
|
||||
g])3#6BAatqiKjQ^>9-V=WR7MrK6O*gUDBRrSHGdG2KcWhqRk^DscELp><=UrO["&gUjqE]A%f3
|
||||
IG8VNgO"Eg^VegohS]'@[^BMnK3GObaVo'lh>=Si)L2ks3,2HF#+e*!BJh!<0S+o~>
|
||||
4941 3664 73 137 @C
|
||||
,
|
||||
4<u*f,mYLrOaK3Ep)DXmmCqEF[qW?\EGp'Xn%Wf/qtK"As0r$;rP.b"mJh,)Du5%]J(su"rnmGL
|
||||
pA_W%\,F)@s/..K/jBR$-jZ)78Qus).0';oAI(>=rBL7aC=Fr1~>
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
0.24 i
|
||||
239 41 26 rG
|
||||
2073.62 4856 40.51 7.05 -15.27 -52.85 P
|
||||
6.81 12.42 12.6 21.76 17.38 28.01 c
|
||||
7.44 9.69 14.68 16.72 21.72 21.09 c
|
||||
4.15 2.5 8.49 3.75 13.03 3.75 c
|
||||
3.91 0 7.16 -1.25 9.75 -3.75 c
|
||||
2.59 -2.5 3.88 -5.7 3.88 -9.61 c
|
||||
0 -3.83 -0.9 -8.83 -2.7 -15 c
|
||||
-8.34 -29.77 p
|
||||
12.76 23.83 24.85 40.55 36.28 50.16 c
|
||||
6.34 5.31 12.6 7.97 18.79 7.97 c
|
||||
3.6 0 6.55 -1.23 8.86 -3.69 c
|
||||
2.31 -2.46 3.49 -6.27 3.49 -11.43 c
|
||||
0 -4.53 -0.72 -9.34 -2.15 -14.41 c
|
||||
-13.11 -45.59 p
|
||||
-2.86 -9.92 -4.29 -15.43 -4.29 -16.52 c
|
||||
0 -1.09 0.35 -2.03 1.05 -2.81 c
|
||||
0.47 -0.55 1.09 -0.82 1.88 -0.82 c
|
||||
0.78 0 2.15 0.74 4.1 2.23 c
|
||||
4.45 3.44 8.63 7.97 12.54 13.59 c
|
||||
3.87 -2.46 p
|
||||
-1.95 -3.12 -5.41 -7.42 -10.37 -12.89 c
|
||||
-4.96 -5.47 -9.2 -9.18 -12.71 -11.13 c
|
||||
-3.52 -1.95 -6.76 -2.93 -9.73 -2.93 c
|
||||
-2.73 0 -5.02 0.94 -6.86 2.82 c
|
||||
-1.84 1.88 -2.75 4.19 -2.75 6.93 c
|
||||
0 3.76 1.59 11.32 4.77 22.67 c
|
||||
10.57 37.71 p
|
||||
2.4 8.69 3.68 13.51 3.84 14.45 c
|
||||
0.23 1.48 0.35 2.93 0.35 4.34 c
|
||||
0 1.96 -0.44 3.48 -1.29 4.58 c
|
||||
-0.94 1.1 -1.99 1.64 -3.16 1.64 c
|
||||
-3.28 0 -6.75 -1.68 -10.42 -5.05 c
|
||||
-10.77 -9.95 -20.83 -23.89 -30.2 -41.82 c
|
||||
-6.17 -11.83 -11.94 -26.98 -17.32 -45.46 c
|
||||
-17.68 0 20.02 71.07 p
|
||||
2.18 7.68 3.28 12.8 3.28 15.39 c
|
||||
0 2.11 -0.43 3.68 -1.29 4.7 c
|
||||
-0.86 1.02 -1.91 1.53 -3.16 1.53 c
|
||||
-2.58 0 -5.31 -0.94 -8.2 -2.82 c
|
||||
-4.68 -3.05 -10.71 -9.59 -18.08 -19.62 c
|
||||
-7.37 -10.02 -13.09 -19.62 -17.15 -28.78 c
|
||||
-1.95 -4.31 -6.59 -18.13 -13.93 -41.47 c
|
||||
-17.32 0 21.72 76.12 2.82 9.87 p
|
||||
0.55 1.49 0.82 2.59 0.82 3.29 c
|
||||
0 1.72 -0.79 3.27 -2.35 4.64 c
|
||||
-1.57 1.37 -3.56 2.07 -5.99 2.07 c
|
||||
-1.02 0 -3.84 -0.55 -8.45 -1.66 c
|
||||
h
|
||||
f
|
||||
2246.13 4817 60.7 0 -4.8 -16 ^ H
|
||||
f
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
239 41 26 rG
|
||||
2311 4755 72 145 @C
|
||||
,
|
||||
-"DNLirKAj3clB'FSARQr=C\BKH&D(2lHCAqtnN$hS9*js8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
|
||||
s8IB`^[Ua^pP)$h_qt-C^$kE:hZ!9DpV4K;p\4[d~>
|
||||
2379 4757 123 167 @C
|
||||
,
|
||||
1BVZ:,ldJ/2AKZ$.D_r"-tkJH0WdM(:O<#4pTOVss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
|
||||
s8W-!s8W-!qYL6dn)(P1]%Z4$NrHq&g0M,Q2=*03"rFLOQXfE,m<6,2f5%e3$\l0"E5LZE0-C5o
|
||||
s8W-!s8W-!p&Fmbbh%IT6iJ,J%hAo#K>YOaiSa4p~>
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
239 41 26 rG
|
||||
2558 4757 191 111 @C
|
||||
,
|
||||
1]qcK3%+lYs8:@b`0`Ft@BTl$UeHD;fIKW<_Q\YYX4(+<XYeT.s**";li7"bs8W-!s8W-!s8W-!
|
||||
s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!fD>OGDYe)EL:b2059Z\D+g?-V
|
||||
D-Q;C<Z:\[D/-u@Bm(=qCGTC$Be[uT_[=9hfa"6^(HST9*'6k^]><39*MCnD9gRKXE77X,K*iST
|
||||
)M<bU@7,b\@7,YQ(f562'TrWM~>
|
||||
2754 4754 109 114 @C
|
||||
,
|
||||
+^p3Y%&b:f5iDqR3'kCkLh7[T!u6Rs+DudKOC?L1dVb7jS(#sQ2bC]*DO(3bFnKm*?%$(+=8Md.
|
||||
f(B"@DdWP5oY:F`s4@;NqZ">1f3A:Tm[*\)])MBRrmLc2CO5;aY.h$7Fkp=RBl.^`FKMBV.h+";
|
||||
-t/dM(aWS+-t3lJ@6oSU-nnJ.$ksF1_u~>
|
||||
2874 4754 117 170 @C
|
||||
,
|
||||
-")F/jBOT1Jd2Md*&p7%K](eo%\+OE%MOJm%\,S!F@/aicld6m"sbt-#V\[[#W)u<TS$Eo9i?C&
|
||||
03r@!0Dap_f3_nb9E4\bp&D5qs8T;&s8W,us8W,us8Vuns*t'`^\@bHl[O?[Y5A*#p=F`Dhed56
|
||||
mB*e#f%=)ACbW:76l-qQbl^0=<t$]"iJ#/WO?da,QmX!Us8W-!s8W-!s8@HH^Xc*r>^io%GW\)N
|
||||
*Zbh&%gRlFJ,~>
|
||||
2986 4754 125 110 @C
|
||||
,
|
||||
+JD=CjK(/TKH)s:i9A.4*$%"\*$%"\i:d_O*B8D#Lh9N8#TJlJ]`\e\'RC58iAX_gIrE\O[)Z8:
|
||||
VsS]shO"9Bs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vr!s8&jDX[9mYJrq0h
|
||||
S./qh2*_,V~>
|
||||
3114 4757 59 167 @C
|
||||
,
|
||||
49khI_cdH_0Wf*A[K!Z7s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!
|
||||
s8Ke5lg$\;U&)UaiSa4pG^+Hq4<>Ob~>
|
||||
3180 4754 97 114 @C
|
||||
,
|
||||
+JA:)$6Xo9",%[S6,I^a3)6#*FQqD!k_!:RLh_b(J[u+N'6JkK'C!1n"Q#`6H@O@]?Cn:be,G]g
|
||||
WpOJJFoK/Ps8T;&p]':b%&7,-]o[@is*t$Ms18'9rnV_+?#A-Ch/.#*D(B=)>A72R>7!Y$'!Pu!
|
||||
R:;kg@7(A=:glYO/d=Y[&-~>
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
67 72 170 rG
|
||||
4337 3434 117 170 @C
|
||||
,
|
||||
,b^&m!tkkK:dEtAJdrHI*$FHt;;<?)'o*&;h#\&&$,$Q4R!N[FiA[[`If"Q.pAOa[hqrAPmJl)@
|
||||
qu?WprVccrs8Duts8W,bs8Vrq?gIabp"0.jFoP*M[G"hi1q("h%<<?,@4oG*fJ&Y&(S^Hn]3VSk
|
||||
CUMm`E7\NA\7'?niJ#/Qaaj;=s8W-!s8W-!s8U^Nlg*`,Zp.YT4<>OS%gRlB_o'=Lhu~>
|
||||
4465 3434 97 114 @C
|
||||
,
|
||||
+JA:)$6Xo9",%[S6,I^a3)6#*FQqD!k_!:RLh_b(J[u+N'6JkK'C!1n"Q#`6H@O@]?Cn:be,G]g
|
||||
WpOJJFoK/Ps8T;&p]':b%&7,-]o[@is*t$Ms18'9rnV_+?#A-Ch/.#*D(B=)>A72R>7!Y$'!Pu!
|
||||
R:;kg@7(A=:glYO/d=Y[&-~>
|
||||
4571 3435 103 113 @C
|
||||
,
|
||||
.`.<f_%7`*JgU[0+Q3NWT[TfXK0dtt%6`N/T^QUD]RrVi\c`J`2sq5pS"pn=F;fH8o^7fTpNh&$
|
||||
\ps`es8V!Vs*oOeg])3,Dr5KB_gT8VDh]?PL*'jn_r6Bg%u(UL*t1=M4q'Ul4rE5In9@&X*Y1,p
|
||||
#X3n*p$)M6?iU0&s4+=ODuSR8^U1/Pd^GFKYgTbm:r/S)<JXK%Ka&5F;CEEG;@Ge~>
|
||||
4670 3437 191 111 @C
|
||||
,
|
||||
1]qcK3%+lYs8:@b`0`Ft@BTl$UeHD;fIKW<_Q\YYX4(+<XYeT.s**";li7"bs8W-!s8W-!s8W-!
|
||||
s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!fD>OGDYe)EL:b2059Z\D+g?-V
|
||||
D-Q;C<Z:\[D/-u@Bm(=qCGTC$Be[uT_[=9hfa"6^(HST9*'6k^]><39*MCnD9gRKXE77X,K*iST
|
||||
)M<bU@7,b\@7,YQ(f562'TrWM~>
|
||||
Q q
|
||||
609.602 276.398 7200 5400 re
|
||||
Y
|
||||
0.24 i
|
||||
K
|
||||
2492.14 1813 -30.2 -24.5 P
|
||||
4.76 0.86 9.17 1.29 13.23 1.29 c
|
||||
3.9 0 7.51 -0.23 10.83 -0.7 c
|
||||
3.32 -0.47 10.42 -1.93 21.3 -4.39 c
|
||||
10.89 -2.46 20.39 -3.69 28.51 -3.69 c
|
||||
8.66 0 16.02 1.54 22.07 4.6 c
|
||||
6.05 3.06 11.92 8.18 17.62 15.34 c
|
||||
3.86 -1.9 p
|
||||
-8.04 -11.68 -17.52 -20.11 -28.45 -25.29 c
|
||||
-10.93 -5.17 -22.52 -7.76 -34.77 -7.76 c
|
||||
-6.79 0 -16.08 1.34 -27.86 4 c
|
||||
-18.03 4 -30.63 6 -37.81 6 c
|
||||
-2.73 0 -4.96 -0.2 -6.68 -0.59 c
|
||||
-1.71 -0.39 -4.29 -1.33 -7.73 -2.82 c
|
||||
-2.69 3.18 48.05 38.12 p
|
||||
-14.91 2.04 -26.2 8.59 -33.89 19.65 c
|
||||
-7.69 11.06 -11.53 22.86 -11.53 35.41 c
|
||||
0 17.18 5.18 34.94 15.53 53.29 c
|
||||
10.35 18.35 23.59 32.57 39.73 42.64 c
|
||||
16.13 10.08 31.97 15.12 47.52 15.12 c
|
||||
11.56 0 21.43 -2.37 29.59 -7.08 c
|
||||
8.16 -4.71 14.47 -11.56 18.93 -20.55 c
|
||||
4.45 -8.99 6.72 -18.2 6.72 -27.62 c
|
||||
0 -18.06 -5.12 -36.35 -15.35 -54.87 c
|
||||
-10.23 -18.53 -22.93 -32.56 -38.11 -42.1 c
|
||||
-15.18 -9.54 -31.32 -14.46 -48.41 -14.78 c
|
||||
h
|
||||
2535.55 1973 m
|
||||
-7.81 0 -15.44 -1.97 -22.9 -5.89 c
|
||||
-7.46 -3.91 -14.86 -10.32 -22.2 -19.21 c
|
||||
-7.34 -8.89 -13.94 -20.54 -19.8 -34.93 c
|
||||
-7.11 -17.71 -10.66 -34.43 -10.66 -50.16 c
|
||||
0 -11.23 2.85 -21.17 8.55 -29.82 c
|
||||
5.7 -8.66 14.45 -12.98 26.24 -12.98 c
|
||||
7.03 0 13.98 1.78 20.85 5.34 c
|
||||
6.87 3.55 13.98 9.61 21.32 18.14 c
|
||||
9.37 10.91 17.22 24.79 23.54 41.63 c
|
||||
6.32 16.84 9.5 32.49 9.5 46.96 c
|
||||
0 10.67 -2.86 20.16 -8.56 28.46 c
|
||||
-5.7 8.3 -14.33 12.47 -25.89 12.47 c
|
||||
h
|
||||
f
|
||||
cleartomark end end pagesave restore
|
||||
showpage
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%Pages: 1
|
@ -1,37 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%\begin{figure}[!h]
|
||||
%\centering
|
||||
%\includegraphics[width=0.98\textwidth]{AngConv}
|
||||
%\caption{Schematics of the scattering geometry in the diffraction plane. A Mythen II module is shown. $R_m$ is the distance from the module sensor plane (orthogonal to the diffraction plane) to the sample position $S$; $D_m$ the distance from the center of pixel $j=0$ to point $Q$, counted positively as the arrow on the module plane goes (\emph{i.e.}, oppositely to the direction of increasing $j$); $\Phi_m$ is the angle of the module plane normal with the beam direction, positive counterclockwise. $\alpha_{jm}$ is the angular position of the $j$-th pixel center with respect to the beam direction, positive counterclockwise.}
|
||||
%\label{acon}
|
||||
%\end{figure}
|
||||
|
||||
Mythen II modules are composed by 1280 pixels, each having width p=0.05~mm, and numbered with j=0,..,1279.
|
||||
Angles are counted counterclockwise from the beam direction. For the m-th module, the angle $\alpha_{jm}$ of its j-th pixel center
|
||||
can be determined using the three geometric parameters $R_m$~[mm], $\Phi_m$~[deg], $D_m$~[mm], as in \fref{acon}.
|
||||
The detector group uses instead the 3 parameters center $c_m$~[\ ], offset $o_m$~[deg], conversion $k_m$~[\ ].
|
||||
The law with the 3 geometric parameter is
|
||||
\begin{equation}
|
||||
\alpha_{jm}=\Phi_m-\lrb{\DSF{180}{\pi}}\arctan\lrb{\DSF{D_m-pj}{R_m}}
|
||||
\end{equation}
|
||||
The corresponding law using DG's parameters is
|
||||
\begin{equation}
|
||||
\alpha_{jm}=o_m+\lrb{\DSF{180}{\pi}}c_mk_m+\lrb{\DSF{180}{\pi}}\arctan\lrs{\lrb{j-c_m}k_m}
|
||||
\end{equation}
|
||||
One can convert the two forms by equating separately the term out of the arctan and the argument of arctan for two different values of j.
|
||||
It results
|
||||
\begin{eqnarray}
|
||||
c_m&=&\DSF{D_m}{p};\\
|
||||
k_m&=&\DSF{p}{R_m};\\
|
||||
o_m&=&\Phi_m-\DSF{180}{\pi}\DSF{D_m}{R_m}.
|
||||
\end{eqnarray}
|
||||
Conversely,
|
||||
\begin{eqnarray}
|
||||
\Phi_m&=&o_m+\DSF{180}{\pi}c_mk_m;\\
|
||||
R_m&=&\DSF{p}{k_m};\\
|
||||
D_m&=&c_m p.
|
||||
\end{eqnarray}
|
@ -1,75 +0,0 @@
|
||||
DESTDIR=../docs
|
||||
|
||||
|
||||
TEX=latex
|
||||
|
||||
|
||||
MAINTEXS2= slsDetectorInstall.tex
|
||||
MAINTEXS=slsDetectors-FAQ.tex
|
||||
|
||||
TEXS=slsDetector-softFAQ.tex singlePhotonCounting-FAQ.tex angConv-FAQ.tex generalDet-FAQ.tex
|
||||
|
||||
DVIS = $(MAINTEXS:.tex=.dvi)
|
||||
PSS = $(MAINTEXS:.tex=.ps)
|
||||
PDFS = $(MAINTEXS:.tex=.pdf)
|
||||
PDFS2 = $(MAINTEXS2:.tex=.pdf)
|
||||
HTMLS = $(MAINTEXS:%.tex=%)
|
||||
HTMLS2 = $(MAINTEXS2:%.tex=%)
|
||||
|
||||
|
||||
|
||||
all: pdf html
|
||||
echo $(PWD)
|
||||
echo $(PDFS)
|
||||
echo $(PDFS2)
|
||||
echo $(HTMLS)
|
||||
echo $(HTMLS2)
|
||||
|
||||
pdf: $(PDFS) $(PDFS2)
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
|
||||
mv $(PDFS) $(DESTDIR)/pdf
|
||||
mv $(PDFS2) $(DESTDIR)/pdf
|
||||
|
||||
html: $(HTMLS) $(HTMLS2)
|
||||
|
||||
|
||||
$(HTMLS): $(TEXS) $(MAINTEXS)
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
|
||||
$(shell test -d $(DESTDIR)/html/$@ && rm -fr $(DESTDIR)/html/$@)
|
||||
echo "***************************** $@"
|
||||
latex $@.tex
|
||||
latex2html $@.tex
|
||||
mv $@ $(DESTDIR)/html
|
||||
|
||||
$(HTMLS2): $(MAINTEXS2)
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
|
||||
$(shell test -d $(DESTDIR)/html/$@ && rm -fr $(DESTDIR)/html/$@)
|
||||
echo "***************************** $@"
|
||||
latex $@.tex
|
||||
latex2html -split 16 -no_navigation -info "" -address "" -long_titles 5 -link 0 $@.tex
|
||||
#-show_section_numbers $@.tex
|
||||
# -local_icons
|
||||
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) $(PDFS2) $(HTMLS) $(HTMLS2)
|
||||
rm -rf $(DESTDIR)/html/slsDetectors-FAQ
|
||||
rm -rf $(DESTDIR)/html/slsDetectorInstall
|
||||
rm -rf $(DESTDIR)/pdf/slsDetectors-FAQ.pdf
|
||||
rm -rf $(DESTDIR)/pdf/slsDetectorInstall.pdf
|
@ -1,875 +0,0 @@
|
||||
|
||||
|
||||
\subsection{Introduction}
|
||||
\subsubsection{Notation}
|
||||
|
||||
[I use symbol $\TT$ for the diffraction angle $2\theta$]
|
||||
|
||||
\subsubsection{Observables}
|
||||
The physical observable of interest in any scattering experiment is [1-3] the differential cross section
|
||||
\[
|
||||
\DSF{\DD{}\bf{\sigma}}{\DD{}\Omega}
|
||||
\]
|
||||
as a function of direction $\Omega$.
|
||||
To measure that directly we should operate with zero-width point detectors, with instant measurement and unit incident intensity.
|
||||
Practically
|
||||
the quantity we can actually measure - putting a detector in a position covering a certain
|
||||
solid angle for a certain time with a certain incident intensity - is
|
||||
\[
|
||||
{I_0}\Delta t \Delta\Omega\DSF{\DD{}\bf{\sigma}}{\DD{}\Omega}
|
||||
\]
|
||||
If $\Delta t$, $\Delta\Omega$ are small and known and $I_0$ is separately monitored,
|
||||
we can (have to) normalize the observations by simply dividing them out.
|
||||
|
||||
Specifically for the powder diffraction field, historically, this is not usually done because
|
||||
- as it is normally true with anode sources and point detectors and usual procedures -
|
||||
the counting times $\Delta t$, the solid angle width $\Delta\Omega\propto \Delta \TT$
|
||||
and the incident intensity $I_0$ are considered
|
||||
constant and therefore go into some 'global scaling' constant that is usually considered arbitrary.
|
||||
|
||||
However, as we have more sophisticated acquisition methods,
|
||||
we may need revert to the original approach and consider the
|
||||
counts divided by time and angular width as the real observable.
|
||||
|
||||
\subsection{Basic binning}\label{sec:11}
|
||||
|
||||
\begin{itemize}
|
||||
\item[1.\ ]{
|
||||
We have several patterns, say $P$. Each $k$-th pattern, for $k=1,\ldots,P$, is
|
||||
constituted by $N_k$ angular intervals in the diffraction angle $2\theta\equiv\TT$:
|
||||
\[
|
||||
b_{k,j}=\lrs{\TT_{k,j}^{-},\TT_{k,j}^{+}},\qquad j=1,\ldots,N_k
|
||||
\]
|
||||
of center
|
||||
\[
|
||||
\hat{b}_{k,j}=\DSF{\TT_{k,j}^{+}+\TT_{k,j}^{-}}{2}
|
||||
\]
|
||||
and width
|
||||
\[
|
||||
\lrv{b_{k,j}}=\TT_{k,j}^{+}-\TT_{k,j}^{-}
|
||||
\]
|
||||
To each interval is associated a counting $C_{k,j}$, an efficiency correction factor $e_{k,j}$, a
|
||||
monitor $m_{k,j}$ (ionization chamber times acquisition time). All 'bad' intervals have been already flagged down and discarded.
|
||||
Efficiency corrections and monitors are supposed to be normalized to a suitable value.
|
||||
Note that intervals $b_{k,j}$ might have multiple overlaps and might not cover an compact angular
|
||||
range. }
|
||||
%
|
||||
\item[2.\ ]{Following Mighell's statistics[6] and normal scaling procedures, we first
|
||||
transform those numbers into associated intensities, intensity rates and relevant s.d.:
|
||||
\[
|
||||
I_{k,j}=\DSF{e_{k,j}}{m_{k,j}}\lrb{C_{k,j}+\min\lrb{1,C_{k,j}}}
|
||||
\]
|
||||
\[
|
||||
\sigma_{I_{k,j}}=\DSF{e_{k,j}}{m_{k,j}}\sqrt{\lrb{C_{k,j}+1}}
|
||||
\]
|
||||
\[
|
||||
r_{k,j}=\DSF{I_{k,j}}{\lrv{b_{k,j}}}=\DSF{e_{k,j}}{m_{k,j}\lrv{b_{k,j}}}\lrb{C_{k,j}+\min\lrb{1,C_{k,j}}}
|
||||
\]
|
||||
\[
|
||||
\sigma_{r_{k,j}}=\DSF{\sigma_{I_{k,j}}}{\lrv{b_{k,j}}}=\DSF{e_{k,j}}{\lrv{b_{k,j}}m_{k,j}}\sqrt{\lrb{C_{k,j}+1}}
|
||||
\]
|
||||
}
|
||||
\item[3.\ ]{
|
||||
We set up the final binned grid,
|
||||
composed of $M$ binning intervals
|
||||
\[
|
||||
B_\ell=[\TT_0+(\ell-1)B, \TT_0+\ell B],\qquad \ell=1,\ldots,M
|
||||
\]
|
||||
all contiguous and each having the same width \[\lrv{B_\ell}=B\] and each centered in
|
||||
\[\hat{B}_\ell=\TT_0+(\ell-1/2)B,\]
|
||||
covering completely the angular range between $\TT_0$ and $\TT_{max}=\TT_0+MB$.
|
||||
}
|
||||
\item[4.\ ]{
|
||||
For bin $\ell$, we consider only and all the experimental intervals
|
||||
\[
|
||||
b_{k,j}\qquad\text{such\ that}\qquad \lrv{ b_{k,j}\cap B_\ell } > 0.
|
||||
\]
|
||||
More restrictively, one may require to consider only and all the experimental intervals
|
||||
\[
|
||||
b_{k,j}\qquad\text{such\ that}\qquad \hat{b}_{k,j}\in B_\ell .
|
||||
\]
|
||||
}
|
||||
\item[5.\ ]{
|
||||
In order to estimate the rate in each $\ell$-th bin,
|
||||
we use all above selected rate estimates concerning bin $B_\ell$ and we get
|
||||
a better one with the weighted average method. \\
|
||||
In the weighted average method, we suppose to have a number $N_E$ of estimates $O_n$
|
||||
of the same observable $O$,
|
||||
each one with a known s.d. $\sigma_{O_n}$ and each (optionally) repeated with a frequency
|
||||
$\nu_n$.
|
||||
Then
|
||||
\[
|
||||
\langle O\rangle =\DSF{
|
||||
\mathop{\sum}_{n=1}^{N_E}\nu_n
|
||||
O_n\sigma_{O_n}^{-2}
|
||||
}{
|
||||
\mathop{\sum}_{n=1}^{N_E}\nu_n
|
||||
\sigma_{O_n}^{-2}
|
||||
}
|
||||
\]
|
||||
%
|
||||
Clearly the place of the frequencies in our case can be taken by coefficients
|
||||
\[
|
||||
\DSF{\lrv{ b_{k,j}\cap B_\ell }}{B}
|
||||
\]
|
||||
that weigh the $k,j$-th estimate by its relative extension within bin $B_\ell$.
|
||||
}
|
||||
\item[6.\ ]{
|
||||
Now
|
||||
we can simply accumulate registers
|
||||
\[
|
||||
X_\ell=\mathop{\sum_{k,j}}_{ \lrv{ b_{k,j}\cap B_\ell } > 0}
|
||||
\DSF{\lrv{ b_{k,j}\cap B_\ell }}{B}\ r_{k,j}\ \lrb{\sigma_{r_{k,j}}}^{-2}
|
||||
\]
|
||||
and
|
||||
\[
|
||||
Y_\ell=\mathop{\sum_{k,j}}_{ \lrv{ b_{k,j}\cap B_\ell } > 0}
|
||||
\DSF{\lrv{ b_{k,j}\cap B_\ell }}{B}\ \lrb{\sigma_{r_{k,j}}}^{-2}
|
||||
\]
|
||||
so that we can extract an intensity rate estimate (counts per unit diffraction angle and per unit time at constant incident intensity) as
|
||||
\[
|
||||
R_\ell=\DSF{X_\ell}{Y_\ell};
|
||||
\]
|
||||
\[
|
||||
\sigma_{R_\ell}=\DSF{1}{\sqrt{Y_\ell}}.
|
||||
\]
|
||||
Now optionally we can transforms rates in intensities (multiplying
|
||||
both $R_\ell$ and $\sigma_{R_\ell}$ by $B$).
|
||||
We can use any other scaling factor $K$ as we wish instead of $B$.
|
||||
The best cosmetic scaling is the one where
|
||||
\[
|
||||
\mathop{\sum}_{\ell=1}^M\DSF{KR_\ell}{K^2\sigma_{R_\ell}^2}=
|
||||
\DSF{1}{K}
|
||||
\mathop{\sum}_{\ell=1}^M\DSF{R_\ell}{\sigma_{R_\ell}^2}=M
|
||||
\]
|
||||
as if the intensities were simply counts.
|
||||
Therefore $K$ is given by
|
||||
\[
|
||||
K=\DSF{
|
||||
1
|
||||
}{
|
||||
M
|
||||
}\mathop{\sum}_{\ell=1}^M\DSF{R_\ell}{\sigma_{R_\ell}^2}
|
||||
\]
|
||||
|
||||
In output then we give 3-column files
|
||||
with columns
|
||||
\[
|
||||
\hat{B}_\ell, \quad KR_\ell, \quad K\sigma_{R_\ell}
|
||||
\]
|
||||
}
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Special nasty cases}
|
||||
|
||||
Here we explore some special cases to see the robustness
|
||||
of the method.
|
||||
|
||||
1) If no experimental observation contributes to bin $B_\ell$ according to one of the criteria
|
||||
above, then we shall find $X_\ell=0$ and especially $Y_\ell=0$. The latter condition is
|
||||
valid as an exclusion condition
|
||||
(meaning that we discard that point and we do not perform further operations on it,
|
||||
neither do we output it).
|
||||
|
||||
2) if only one experimental observation - call it interval $b$, dropping indices - contributes
|
||||
to bin $B_\ell$,
|
||||
then we have
|
||||
\[
|
||||
X_\ell=\DSF{\lrv{ b\cap B_\ell }}{B}\
|
||||
\DSF{e(C+1)}{m|b|}\
|
||||
\lrb{
|
||||
\DSF{|b|m}{e\sqrt{C+1}}
|
||||
}^{2}
|
||||
=\DSF{\lrv{ b\cap B_\ell }}{B}\DSF{|b|m}{e}
|
||||
\]
|
||||
\[
|
||||
Y_\ell=\DSF{\lrv{ b\cap B_\ell }}{B}\
|
||||
\lrb{
|
||||
\DSF{|b|m}{e\sqrt{C+1}}
|
||||
}^{2}
|
||||
=\DSF{\lrv{ b\cap B_\ell }}{B}\DSF{|b|^2m^2}{e^2(C+1)}
|
||||
\]
|
||||
and so
|
||||
\[
|
||||
R_\ell=\DSF{X_\ell}{Y_\ell}=\DSF{e(C+1)}{m|b|}
|
||||
\]
|
||||
that is the experimental rate as in pixel $b$;
|
||||
\[
|
||||
\sigma_{R_\ell}=\DSF{1}{\sqrt{Y_\ell}}=
|
||||
\sqrt{\DSF{B}{\lrv{ b\cap B_\ell }}}
|
||||
%
|
||||
\DSF{e\sqrt{(C+1)}}{|b|m}
|
||||
\]
|
||||
that is the same s.d. that can be calculated directly for $b$, augmented by factor
|
||||
\[
|
||||
\sqrt{\DSF{B}{\lrv{ b\cap B_\ell }}}
|
||||
\]
|
||||
that takes into account the extrapolation error.
|
||||
|
||||
\subsection{Advanced binning}\label{sec:2}
|
||||
|
||||
There are more advanced (and more complex) methods that take more carefully into account the real position of the centers $\hat{b}_{j,k}$ w.r.t. $\hat{B}_\ell$.
|
||||
If we find out that it is the case we may develop them too.
|
||||
|
||||
|
||||
\subsection{Poisson and normal statistics for diffraction}
|
||||
|
||||
The normal situation for diffraction data
|
||||
is that the observed signal is a photon count.
|
||||
Therefore it follows a Poisson distribution.
|
||||
If we have a count value $C_0$ that follows a Poisson distribution,
|
||||
we can assume immediately that the average is equal to $C_0$ and the s.d. is $\sqrt{C_0}$.
|
||||
I.e., repeated experiments would give values $n$
|
||||
distributed according to the normalized distribution
|
||||
\[
|
||||
P(n)=\DSF{C_0^n\EE^{-C_0}
|
||||
}{
|
||||
n!}
|
||||
\]
|
||||
This obeys
|
||||
\[
|
||||
\mathop{\sum}_{n=0}^{+\infty}
|
||||
P(n)=1\ ;
|
||||
\]
|
||||
\[
|
||||
\langle n\rangle=\mathop{\sum}_{n=0}^{+\infty}
|
||||
nP(n)=C_0\ ;
|
||||
\]
|
||||
\[
|
||||
\langle n^2\rangle=\mathop{\sum}_{n=0}^{+\infty}
|
||||
n^2 P(n)=C_0^2+C_0\ ;
|
||||
\]
|
||||
The standard deviation comes then to
|
||||
\[
|
||||
\sigma_{C_0}=\sqrt{\langle n^2\rangle-\langle n\rangle^2}=\sqrt{C_0}
|
||||
\]
|
||||
|
||||
When the data have to be analyzed, one must compare observations with a model
|
||||
which gives calculated values of the observations in dependence of a certain set of
|
||||
parameters. The best values of the parameters (the target of investigation)
|
||||
are the one that maximize the likelihood function [4,5]. The likelihood function for
|
||||
Poisson variates is pretty difficult to use; furthermore, even simple data manipulations
|
||||
are not straightforward with Poisson variates (see \sref{sec:3}). The common choice is to approximate
|
||||
Poisson variates with normal variates, and then use the much easier formalism
|
||||
of normal distribution to a) do basic data manipulations and b) fit data with model.
|
||||
To the latter task, in fact, the likelihood function is maximized simply by minimizing
|
||||
the usual weighted-$\chi^2$[4] :
|
||||
\[
|
||||
\chi^2 = \mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{\lrb{F_j-O_j}^2
|
||||
}{
|
||||
\sigma_j^2
|
||||
}
|
||||
\]
|
||||
where $O_j$ are the experimentally observed values, $F_j$ the calculated model values,
|
||||
$\sigma_j$ the s.d.s of the observations.
|
||||
|
||||
Substituting directly the counts (and derived s.d.s) for the observations in the former :
|
||||
\[
|
||||
\chi_{(0)}^2 = \mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{\lrb{F_j-C_j}^2
|
||||
}{
|
||||
C_j
|
||||
}
|
||||
\]
|
||||
is the most common way. It is \emph{slightly} wrong to do so, however [6],
|
||||
the error being large only when the counts are low.
|
||||
There is also a divergence for zero counts.
|
||||
In fact, a slightly modified form [6] exists, reading
|
||||
\[
|
||||
\chi_{(1)}^2 = \mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{\lrb{F_j-\lrb{C_j+\min\lrb{1,C_j}}}^2
|
||||
}{
|
||||
C_j+1
|
||||
}
|
||||
\]
|
||||
Minimizing this form of $\chi^2$ is equivalent - to an exceptionally good approximation [6]-
|
||||
to maximizing the proper Poisson-likelihood.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Average vs. weighted average}
|
||||
|
||||
\subsubsection{Simple average}
|
||||
|
||||
Suppose we have $N_{\mathrm{obs}}$ Poisson-variate experimental evaluations
|
||||
$C_j,\quad j=1\ldots N_{\mathrm{obs}}$,
|
||||
of the same quantity $x$.
|
||||
There are different ways to obtain from all $N_{\mathrm{obs}}$ data values a single estimate of the observable which is better than
|
||||
any of them. The most straightforward and the best is the simple average
|
||||
\[
|
||||
x=\langle x\rangle=\DSF{1}{ N_{\mathrm{obs}}}
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}C_j\ .
|
||||
\]
|
||||
As the sum of Poisson variates is a Poisson variate, the standard deviation
|
||||
\[
|
||||
\sigma_x=\sqrt{\langle x^2\rangle-\langle x\rangle^2}=\sqrt{
|
||||
\DSF{1}{ N_{\mathrm{obs}}}
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}C_j^2-\lrb{
|
||||
\DSF{1}{ N_{\mathrm{obs}}}
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}C_j
|
||||
}
|
||||
}
|
||||
\]
|
||||
can be evaluated more comfortably as
|
||||
\[
|
||||
\sigma_x=\DSF{1}{ N_{\mathrm{obs}}}\sqrt{ \mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}C_j }
|
||||
=\sqrt{\DSF{\langle x\rangle}{N_{\mathrm{obs}}}}
|
||||
\]
|
||||
|
||||
|
||||
\subsubsection{Zero-skipping average}
|
||||
|
||||
In some cases, in order to avoid possible singularities,
|
||||
values $C_j=0$ are skipped. Then if $N_{\mathrm{obs}}^*$ is the number of non-zero data points,
|
||||
we can evaluate the 'zero-skipping' average as
|
||||
\[
|
||||
x=\langle x\rangle^*=\DSF{1}{ N_{\mathrm{obs}}^*}
|
||||
\mathop{\sum}_ {\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
C_j=\DSF{1}{ N_{\mathrm{obs}}^*}
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}C_j = \DSF{N_{\mathrm{obs}}}{N_{\mathrm{obs}}^*}\langle x\rangle
|
||||
\]
|
||||
The standard deviation is then
|
||||
\[
|
||||
\sigma_{x^*}= \DSF{N_{\mathrm{obs}}}{N_{\mathrm{obs}}^*}\sigma_x = \sqrt{\DSF{N_{\mathrm{obs}}}{N_{\mathrm{obs}}^*}}
|
||||
\sqrt{\DSF{\langle x\rangle}{N_{\mathrm{obs}}^*}}=\sqrt{\DSF{\langle x\rangle^*}{N_{\mathrm{obs}}^*}}
|
||||
\]
|
||||
Note that the s.d. is evaluated exactly as if the non-zero $C_j$ were the only observations,
|
||||
whilst the average is overestimated by the fraction of zero-counting events.
|
||||
|
||||
\subsubsection{Weighted average: definition and relationship with $\chi^2$}
|
||||
|
||||
A weighted average is the result of the special case of a data fitting to a model function which is a constant.
|
||||
It is easy to see that minimizing w.r.t $x$
|
||||
\[
|
||||
\chi^2 = \mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{\lrb{x-O_j}^2
|
||||
}{
|
||||
\sigma_j^2
|
||||
}
|
||||
\]
|
||||
yields
|
||||
\[
|
||||
x= \langle x \rangle_{\!\mathrm{w}}=\DSF{
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{O_j
|
||||
}{
|
||||
\sigma_j^2
|
||||
}
|
||||
}{
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{1
|
||||
}{
|
||||
\sigma_j^2
|
||||
}
|
||||
}
|
||||
\]
|
||||
The good-faith s.d. (square-root of twice the inverse of the second derivative of $\chi^2$ at the minimum)
|
||||
is then
|
||||
\[
|
||||
\sigma_{\langle x \rangle_{\!\mathrm{w}}} = \DSF{
|
||||
1
|
||||
}{\sqrt{
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{1
|
||||
}{
|
||||
\sigma_j^2
|
||||
}
|
||||
}}
|
||||
\]
|
||||
I use the term 'good-faith' to indicate the case when it is really appropriate to use a constant as a model functions,
|
||||
i.e. when the observations are truly different observations of the same observable.
|
||||
When this is not the case but we do not know what to do better we can at least increase the s.d.
|
||||
In fact, there is a correction factor for the s.d., given - in this case - by
|
||||
\[
|
||||
\mathsf{GoF}=
|
||||
\sqrt{
|
||||
\DSF{
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{O_j^2
|
||||
}{
|
||||
\sigma_j^2
|
||||
}
|
||||
-\DSF{
|
||||
\lrs{
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{O_j
|
||||
}{
|
||||
\sigma_j^2
|
||||
}
|
||||
}^2
|
||||
}{ \mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{1
|
||||
}{
|
||||
\sigma_j^2
|
||||
} }
|
||||
}{
|
||||
N_{\mathrm{obs}}-1
|
||||
}
|
||||
}
|
||||
\]
|
||||
so that
|
||||
\[
|
||||
{\sigma}_{\langle x \rangle_{\!\mathrm{w}}}^{\mathrm{corrected}} = \mathsf{GoF}\ \sigma_{\langle x \rangle_{\!\mathrm{w}}}
|
||||
\]
|
||||
|
||||
Specializing now to the two cases above,
|
||||
|
||||
\subsubsection{Straight Poisson (zero-skipping) weighted average}
|
||||
|
||||
When $O_j=C_j$ and $\sigma_j^2=C_j$
|
||||
\[
|
||||
\langle x \rangle_{\!\mathrm{w(1)}}=\DSF{
|
||||
{N_{\mathrm{obs}}}
|
||||
}{
|
||||
\mathop{\sum}_{j=1}^{N_{\mathrm{obs}}}
|
||||
\DSF{1
|
||||
}{
|
||||
C_j
|
||||
}
|
||||
}
|
||||
\]
|
||||
Here we need to eliminate the singularity when $C_j=0$. In order to do so, we skip data points which are zero.
|
||||
Then if $N_{\mathrm{obs}}^*$ is the number of non-zero data points,
|
||||
\[
|
||||
\langle x \rangle_{\!\mathrm{w(1)}}=\DSF{
|
||||
{N_{\mathrm{obs}}^*}
|
||||
}{
|
||||
\mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\DSF{1
|
||||
}{
|
||||
C_j
|
||||
}
|
||||
}
|
||||
\]
|
||||
\[
|
||||
\sigma_{\langle x \rangle_{\!\mathrm{w(1)}}} = \DSF{
|
||||
1
|
||||
}{\sqrt{
|
||||
\mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\DSF{1
|
||||
}{
|
||||
C_j
|
||||
}
|
||||
}}=\sqrt{\DSF{\langle x \rangle_{\!\mathrm{w(1)}}}{
|
||||
N_{\mathrm{obs}}^*
|
||||
}}
|
||||
\]
|
||||
\[
|
||||
\mathsf{GoF}_{(1)}=
|
||||
\sqrt{
|
||||
\DSF{
|
||||
\mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\!\!\!\!C_j
|
||||
%
|
||||
-\DSF{
|
||||
\lrs{
|
||||
N_{\mathrm{obs}}^*
|
||||
}^2
|
||||
}{ \mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\DSF{1
|
||||
}{
|
||||
C_j
|
||||
} }
|
||||
}{
|
||||
N_{\mathrm{obs}}^*-1
|
||||
}
|
||||
}
|
||||
=\sqrt{
|
||||
\DSF{N_{\mathrm{obs}}^*}{N_{\mathrm{obs}}^*-1}
|
||||
\lrb{
|
||||
\langle x\rangle^*-\langle x \rangle_{\!\mathrm{w(1)}}
|
||||
}
|
||||
}
|
||||
\]
|
||||
where $\langle x\rangle^*$ is the simple average of the non-zero data points; and of course
|
||||
\[
|
||||
{\sigma}_{\langle x \rangle_{\!\mathrm{w(1)}}}^{\mathrm{corrected}} = \mathsf{GoF}_{(1)}\ \sigma_{\langle x \rangle_{\!\mathrm{w(1)}}}
|
||||
\]
|
||||
|
||||
\subsubsection{Mighell-Poisson weighted average}
|
||||
|
||||
When $O_j=C_j+\min\lrb{1,C_j}$ and $\sigma_j^2=C_j+1$
|
||||
\[
|
||||
\langle x \rangle_{\!\mathrm{w(2)}}=\DSF{
|
||||
{N_{\mathrm{obs}}^*}
|
||||
}{
|
||||
\mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\DSF{1
|
||||
}{
|
||||
C_j+1
|
||||
}
|
||||
}
|
||||
\]
|
||||
\[
|
||||
\sigma_{\langle x \rangle_{\!\mathrm{w(2)}}} = \DSF{
|
||||
1
|
||||
}{\sqrt{
|
||||
\mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\DSF{1
|
||||
}{
|
||||
C_j+1
|
||||
}
|
||||
}}=\sqrt{\DSF{\langle x \rangle_{\!\mathrm{w(2)}}}{
|
||||
N_{\mathrm{obs}}^*
|
||||
}}
|
||||
\]
|
||||
\[
|
||||
\mathsf{GoF}_{(2)}=
|
||||
\sqrt{
|
||||
\DSF{
|
||||
\mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\!\!\!\!C_j+N_{\mathrm{obs}}^*
|
||||
%
|
||||
-\DSF{
|
||||
\lrs{
|
||||
N_{\mathrm{obs}}^*
|
||||
}^2
|
||||
}{ \mathop{\sum}_{\stackrel{1\leqslant j\leqslant N_{\mathrm{obs}}}{{C_j>0}}}
|
||||
\DSF{1
|
||||
}{
|
||||
C_j+1
|
||||
} }
|
||||
}{
|
||||
N_{\mathrm{obs}}^*-1
|
||||
}
|
||||
}
|
||||
=\sqrt{
|
||||
\DSF{N_{\mathrm{obs}}^*}{N_{\mathrm{obs}}^*-1}
|
||||
\lrb{
|
||||
\langle x\rangle^*-\langle x \rangle_{\!\mathrm{w(2)}}+1
|
||||
}
|
||||
}
|
||||
\]
|
||||
where $\langle x\rangle^*$ is the simple average of the non-zero data points; and of course
|
||||
\[
|
||||
{\sigma}_{\langle x \rangle_{\!\mathrm{w(2)}}}^{\mathrm{corrected}} = \mathsf{GoF}_{(2)}\ \sigma_{\langle x \rangle_{\!\mathrm{w(2)}}}
|
||||
\]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsubsection{Comparison}
|
||||
|
||||
We have seen four different ways to take an average -
|
||||
two simple averages (the second skipping zero values)
|
||||
and two weighted averages (using straight Poisson and Poisson-Mighell [6] $\chi^2$ formulations).
|
||||
We know that the simple average (not skipping zeros) is the best possible result. However,
|
||||
there are inconveniences with it. If for instance we need to scale our data before averaging, then the
|
||||
simple average is no more usable (it will give the correct average but a bad estimate of the s.d.) .
|
||||
In any case, the passage to normal statistics (using Mighell's correction) needs to be done before or later.
|
||||
Therefore a comparison is due in order to ascertain
|
||||
how wrong can it be using the different methods.
|
||||
|
||||
We have to give a measure of what is negligible first.
|
||||
The relative error is a measure of the smallest relative variation of an estimate $x$ that is \emph{not} negligible:
|
||||
\[
|
||||
\epsilon_x = \DSF{\sigma_x}{x}
|
||||
\]
|
||||
We shall then consider negligible
|
||||
(w.r.t. $x$) terms whose relative magnitude is $O(\epsilon_x^2)$.
|
||||
As the s.d. of $x$ is $\propto\epsilon_x$, we may not discard terms $O(\epsilon_x^2)$ on the s.d.;
|
||||
there instead we may neglect terms $O(\epsilon_x^3)$.
|
||||
|
||||
|
||||
\subsubsection{Analytical comparison of averages}
|
||||
|
||||
First we give an analytical comparison between simple average and Mighell-Poisson weighted average
|
||||
for $N_{\mathrm{obs}}=2$.
|
||||
If the two events are $C_1$ and $C_2$, then
|
||||
\[
|
||||
\langle x \rangle=\DSF{C_1+C_2}{2}; \qquad \sigma_x=\DSF{\sqrt{C_1+C_2}}{2}
|
||||
\]
|
||||
For the M-P weighted average,
|
||||
\[
|
||||
\langle x \rangle_{\mathrm{w(2)}}=\DSF{2(C_1+1)(C_2+1)}{C_1+C_2+2}; \qquad
|
||||
\sigma_{\langle x \rangle_{\mathrm{w(2)}}}=\sqrt{\DSF{(C_1+1)(C_2+1)}{C_1+C_2+2}}
|
||||
\]
|
||||
|
||||
Now, supposing that the common 'true' value of $C_1,C_2$ is $\lambda$,
|
||||
we use the Poisson distribution to compare the expectation values of the two results. The expectation value of the simple average is
|
||||
\[
|
||||
E\lrb{\langle x \rangle} = \mathop{\sum}_{m,n=0}^{+\infty}
|
||||
\DSF{n+m}{2}P(n)P(m)=\mathop{\sum}_{m=0}^{+\infty}
|
||||
\DSF{m}{2}\DSF{\lambda^m\EE^{-\lambda}}{m!}
|
||||
+\mathop{\sum}_{n=0}^{+\infty}
|
||||
\DSF{n}{2}\DSF{\lambda^n\EE^{-\lambda}}{n!}
|
||||
=\lambda
|
||||
\]
|
||||
As expected, the simple average gives the true value.
|
||||
For its variance,
|
||||
\[
|
||||
E\lrb{\sigma_x^2} = \mathop{\sum}_{m,n=0}^{+\infty}
|
||||
\DSF{n+m}{4}P(n)P(m)=\DSF{
|
||||
\lambda}{2};\qquad E\lrb{\sigma_x} =\sqrt{\DSF{\lambda}{2}}
|
||||
\]
|
||||
|
||||
|
||||
In order to evaluate the difference with the M-P weighted average, we rewrite the latter as
|
||||
\[
|
||||
\langle x \rangle_{\mathrm{w(2)}}=\langle x \rangle + 1 -\DSF{(C_1-C_2)^2}{4(\langle x \rangle+1)}
|
||||
\]
|
||||
and calculate the expectation value of the last term:
|
||||
\[
|
||||
E\lrb{\DSF{(C_1-C_2)^2}{4(\langle x \rangle+1)}} =
|
||||
\mathop{\sum}_{m,n=0}^{+\infty}
|
||||
\DSF{(n-m)^2}{2(n+m+2) }P(n)P(m)=\DSF{\EE^{-2\lambda}}{2}
|
||||
\mathop{\sum}_{m,n=0}^{+\infty}
|
||||
\DSF{(n-m)^2}{(n+m+2) }\DSF{\lambda^{n+m}}{n!m!}
|
||||
\]
|
||||
Rearranging the sums with $s=n+m$, $s=0\ldots +\infty$; $n-m=s-2k$, $k=0\ldots s$,
|
||||
we get
|
||||
\[
|
||||
E\lrb{\DSF{(C_1-C_2)^2}{4(\langle x \rangle+1)}} =
|
||||
\DSF{\EE^{-2\lambda}}{2}
|
||||
\mathop{\sum}_{s=0}^{+\infty}
|
||||
\mathop{\sum}_{k=0}^{s}
|
||||
\DSF{(s-2k)^2(s+1)}{(s+2)! }{\lambda^{s}}
|
||||
\binom{s}{k}=\DSF{1}{2}-\DSF{1}{2\lambda}+\DSF{1-\EE^{-2\lambda}}{4\lambda^2}
|
||||
%{n!m!}
|
||||
\]
|
||||
So, the relative difference between averages is
|
||||
\[
|
||||
\DSF{E\lrb{\langle x \rangle_{\mathrm{w(2)}}-\langle x \rangle}}{E\lrb{\langle x \rangle}}=
|
||||
\DSF{1}{2\lambda}+\DSF{1}{2\lambda^2}-\DSF{1-\EE^{-2\lambda}}{4\lambda^3}
|
||||
\]
|
||||
The relative error on $\langle x \rangle$ is
|
||||
\[
|
||||
\epsilon = \DSF{\sigma_x}{\langle x \rangle} =
|
||||
\DSF{\lambda^{1/2}}{\sqrt{2} \lambda}=\DSF{1}{\sqrt{2\lambda}}
|
||||
\]
|
||||
therefore
|
||||
\[
|
||||
\DSF{E\lrb{\langle x \rangle_{\mathrm{w(2)}}-\langle x \rangle}}{E\lrb{\langle x \rangle}}=
|
||||
O(\epsilon^2)
|
||||
\]
|
||||
Therefore, the expectation value of the error (relative) involved in taking
|
||||
the M-P weighted average instead of the simple average is negligible.
|
||||
|
||||
|
||||
|
||||
\subsubsection{Numerical comparison of averages}
|
||||
|
||||
In the next table numerical results are displayed. An exact random-Poisson generator has been used to generate Poisson deviates of given average value
|
||||
$\lambda$, with $\lambda=1,10,100,\ldots,1000000$. For each value $\lambda$
|
||||
$N=10^8$ deviates have been generated. Then averages have been taken for each value $\lambda$ and compared with the true value.
|
||||
For each value $\lambda$ - in order to have a scale for comparison -
|
||||
we evaluate the expected absolute s.d. of averages as $\xi_\lambda=\sqrt{\lambda/N}$, and the relative s.d. of averages as $\epsilon_\lambda=\sqrt{\lambda/N}/\lambda=1/\sqrt{N\lambda}$. Then - for each averaging method - we evaluate the error $E_\lambda$ (average minus $\lambda$),
|
||||
the relative error $e_\lambda=E_\lambda/\lambda$, and finally the comparison criterion $e_\lambda/\epsilon_\lambda$ (bold). The comparison criterion is expected to be close to 1 in absolute value. Values much larger than one mean that we are introducing a systematic error.
|
||||
|
||||
\footnotesize
|
||||
|
||||
\begin{tabular}{l|llll}
|
||||
\footnotesize
|
||||
% # trials N = 100000000
|
||||
\ &&&&\ \\
|
||||
& \multicolumn{4}{l}{$\lambda =$ 1. ; $\xi_\lambda = $0.0001 ; $\epsilon_\lambda$ = 0.0001}\\
|
||||
& ${\langle x \rangle_{\!\mathrm{w(1)}}}$ & ${\langle x \rangle_{\!\mathrm{w(2)}}}$ & $\langle x \rangle^*$ & $\langle x \rangle$\\
|
||||
Averages & 1.303772380383934 & 0.9999155361216990 & 1.581941754994651 & 0.9999283300000000 \\
|
||||
$E_\lambda$ & 0.3037723803839338 & -0.8446387830096658E-04 & 0.5819417549946508 & -0.7166999999996815E-04\\
|
||||
$e_\lambda$ & 0.3037723803839338 & -0.8446387830096658E-04 & 0.5819417549946508 & -0.7166999999996815E-04\\
|
||||
$e_\lambda/\epsilon_\lambda$ &{\textbf{ 3037.723803839338 }}&{\textbf{ -0.8446387830096658 }}&{\textbf{ 5819.417549946508 }}&{\textbf{ -0.7166999999996815 }} \\
|
||||
\ &&&&\ \\
|
||||
& \multicolumn{4}{l}{$\lambda =$ 10.000000000000002 ; $\xi_\lambda = $0.00031622776601683794 ; $\epsilon_\lambda$ = 0.00003162277660168379}\\
|
||||
& ${\langle x \rangle_{\!\mathrm{w(1)}}}$ & ${\langle x \rangle_{\!\mathrm{w(2)}}}$ & $\langle x \rangle^*$ & $\langle x \rangle$\\
|
||||
Averages & 8.848248847530357 & 10.00025732384808 & 10.00052232372917 & 10.00006800000000 \\
|
||||
$E_\lambda$ & -1.151751152469645 & 0.2573238480785278E-03 & 0.5223237291644978E-03 & 0.6799999999884676E-04\\
|
||||
$e_\lambda$ & -0.1151751152469645 & 0.2573238480785278E-04 & 0.5223237291644977E-04 & 0.6799999999884675E-05\\
|
||||
$e_\lambda/\epsilon_\lambda$ &{\textbf{ -3642.156939527943 }}&{\textbf{ 0.8137294562072904 }}&{\textbf{ 1.651732660112730 }}&{\textbf{ 0.2150348808878029 }} \\
|
||||
\ &&&&\ \\
|
||||
& \multicolumn{4}{l}{$\lambda =$ 100.00000000000004 ; $\xi_\lambda = $0.0010000000000000002 ; $\epsilon_\lambda$ = 0.000009999999999999997}\\
|
||||
& ${\langle x \rangle_{\!\mathrm{w(1)}}}$ & ${\langle x \rangle_{\!\mathrm{w(2)}}}$ & $\langle x \rangle^*$ & $\langle x \rangle$\\
|
||||
Averages & 98.98978896904168 & 100.0001037814804 & 100.0002153600000 & 100.0002153600000 \\
|
||||
$E_\lambda$ & -1.010211030958359 & 0.1037814803765968E-03 & 0.2153599999559219E-03 & 0.2153599999559219E-03\\
|
||||
$e_\lambda$ & -0.1010211030958359E-01 & 0.1037814803765968E-05 & 0.2153599999559218E-05 & 0.2153599999559218E-05\\
|
||||
$e_\lambda/\epsilon_\lambda$ &{\textbf{ -1010.211030958359 }}&{\textbf{ 0.1037814803765968 }}&{\textbf{ 0.2153599999559219 }}&{\textbf{ 0.2153599999559219 }} \\
|
||||
\ &&&&\ \\
|
||||
& \multicolumn{4}{l}{$\lambda =$ 1000.0000000000007 ; $\xi_\lambda = $0.0031622776601683803 ; $\epsilon_\lambda$ = 0.000003162277660168378}\\
|
||||
& ${\langle x \rangle_{\!\mathrm{w(1)}}}$ & ${\langle x \rangle_{\!\mathrm{w(2)}}}$ & $\langle x \rangle^*$ & $\langle x \rangle$\\
|
||||
Averages & 999.0029754507847 & 1000.003978305674 & 1000.003836760000 & 1000.003836760000 \\
|
||||
$E_\lambda$ & -0.9970245492160075 & 0.3978305673513205E-02 & 0.3836759999330752E-02 & 0.3836759999330752E-02\\
|
||||
$e_\lambda$ & -0.9970245492160069E-03 & 0.3978305673513202E-05 & 0.3836759999330750E-05 & 0.3836759999330750E-05\\
|
||||
$e_\lambda/\epsilon_\lambda$ &{\textbf{ -315.2868458625229 }}&{\textbf{ 1.258050715667192 }}&{\textbf{ 1.213290043331128 }}&{\textbf{ 1.213290043331128 }} \\
|
||||
\ &&&&\ \\
|
||||
& \multicolumn{4}{l}{$\lambda =$ 10000.00000000001 ; $\xi_\lambda = $0.010000000000000005 ; $\epsilon_\lambda$ = 9.999999999999995E-7}\\
|
||||
& ${\langle x \rangle_{\!\mathrm{w(1)}}}$ & ${\langle x \rangle_{\!\mathrm{w(2)}}}$ & $\langle x \rangle^*$ & $\langle x \rangle$\\
|
||||
Averages & 9998.995728116572 & 9999.995828163173 & 9999.995919900000 & 9999.995919900000 \\
|
||||
$E_\lambda$ & -1.004271883437468 & -0.4171836835666909E-02 &-0.4080100008650334E-02 &-0.4080100008650334E-02\\
|
||||
$e_\lambda$ & -0.1004271883437467E-03 & -0.4171836835666905E-06 & -0.4080100008650330E-06 &-0.4080100008650330E-06\\
|
||||
$e_\lambda/\epsilon_\lambda$ &{\textbf{ -100.4271883437468 }}&{\textbf{ -0.4171836835666907 }}&{\textbf{ -0.4080100008650331 }}&{\textbf{ -0.4080100008650331 }} \\
|
||||
\ &&&&\ \\
|
||||
& \multicolumn{4}{l}{$\lambda =$ 100000.0000000002 ; $\xi_\lambda = $0.031622776601683826 ; $\epsilon_\lambda$ = 3.162277660168376E-7}\\
|
||||
& ${\langle x \rangle_{\!\mathrm{w(1)}}}$ & ${\langle x \rangle_{\!\mathrm{w(2)}}}$ & $\langle x \rangle^*$ & $\langle x \rangle$\\
|
||||
Averages & 99999.01275394148 & 100000.0127639189 & 100000.0125627100 & 100000.0125627100 \\
|
||||
$E_\lambda$ & -0.9872460587212117 & 0.1276391866849735E-01 & 0.1256270980229601E-01 & 0.1256270980229601E-01\\
|
||||
$e_\lambda$ & -0.9872460587212097E-05 & 0.1276391866849733E-06 & 0.1256270980229599E-06 & 0.1256270980229599E-06\\
|
||||
$e_\lambda/\epsilon_\lambda$ &{\textbf{ -31.21946156583365 }}&{\textbf{ 0.4036305486159527 }}&{\textbf{ 0.3972677655897895 }}&{\textbf{ 0.3972677655897895 }} \\
|
||||
\ &&&&\ \\
|
||||
& \multicolumn{4}{l}{$\lambda =$ 1000000.0000000013 ; $\xi_\lambda = $0.10000000000000006 ; $\epsilon_\lambda$ = 9.999999999999993E-8}\\
|
||||
& ${\langle x \rangle_{\!\mathrm{w(1)}}}$ & ${\langle x \rangle_{\!\mathrm{w(2)}}}$ & $\langle x \rangle^*$ & $\langle x \rangle$\\
|
||||
Averages & 999999.1188353101 & 1000000.118835812 & 1000000.118809340 & 1000000.118809340 \\
|
||||
$E_\lambda$ & -0.8811646911781281 & 0.1188358106883243 & 0.1188093387754634 & 0.1188093387754634 \\
|
||||
$e_\lambda$ & -0.8811646911781270E-06 & 0.1188358106883241E-06 & 0.1188093387754633E-06 & 0.1188093387754633E-06\\
|
||||
$e_\lambda/\epsilon_\lambda$ &{\textbf{ -8.811646911781276 }}&{\textbf{ 1.188358106883242 }}&{\textbf{ 1.188093387754633 }}&{\textbf{ 1.188093387754633}} \\
|
||||
\end{tabular}
|
||||
|
||||
\normalsize
|
||||
|
||||
As it is visible from the table:
|
||||
\begin{itemize}
|
||||
\item[1.\quad]{${\langle x \rangle_{\!\mathrm{w(1)}}}\ :$ the weighted average using straight Poisson statistics is consistenty bad at all values of $\lambda$, that means at all counting levels;}
|
||||
\item[2.\quad]{${\langle x \rangle^*}\ $: the normal average skipping zero count data is bad for $\lambda<100$, that means at low counting levels (of course at higher counting levels zeroes are not happening);}
|
||||
\item[3.\quad]{${\langle x \rangle}\ \text{and}\ {\langle x \rangle_{\!\mathrm{w(2)}}}$: the normal average including zero count data and the Mighell-Poisson weighted average
|
||||
are consistently and equivalently good at all counting levels.}
|
||||
\end{itemize}
|
||||
Therefore there is no bias when using the Mighell-Poisson weighted method to average data w.r.t. the usual average. The former, however,
|
||||
has already accomplished the passage to normal statistics, therefore all operations on data that are not simple averaging can be done in
|
||||
the framework of normal statistics, where everything is known and clear. In the next section, on the opposite, it is shown that
|
||||
even simple operations as scaling data lead to the necessity of abandoning Poisson statistics in order to estimate correctly the standard deviations.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Scaling Poisson variates}\label{sec:3}
|
||||
|
||||
If we have a count value $C_0$ that follows a Poisson distribution,
|
||||
we can assume immediately that the average is $C_0$ and the s.d. is $\sqrt{C_0}$.
|
||||
I.e., repeated experiments would give values $n$
|
||||
distributed according to the normalized distribution
|
||||
\[
|
||||
P(n)=\DSF{C_0^n\EE^{-C_0}
|
||||
}{
|
||||
n!}
|
||||
\]
|
||||
This obeys
|
||||
\[
|
||||
\mathop{\sum}_{n=0}^{+\infty}
|
||||
P(n)=1\ ;
|
||||
\]
|
||||
\[
|
||||
\langle n\rangle=\mathop{\sum}_{n=0}^{+\infty}
|
||||
nP(n)=C_0\ ;
|
||||
\]
|
||||
\[
|
||||
\langle n^2\rangle=\mathop{\sum}_{n=0}^{+\infty}
|
||||
n^2 P(n)=C_0^2+C_0\ ;
|
||||
\]
|
||||
\[
|
||||
\sigma_{C_0}=\sqrt{\langle n^2\rangle-\langle n\rangle^2}=\sqrt{C_0}
|
||||
\]
|
||||
Suppose now that
|
||||
our observable is
|
||||
\[
|
||||
X_0=\eta_0 C_0
|
||||
\]
|
||||
where $\eta_0$ is a known error-free scaling factor.
|
||||
The distribution of $X$ is
|
||||
\[
|
||||
P'(X)=P(X/\eta_0)=P(n)\qquad\Biggl|\Biggr.\qquad \frac{X}{\eta_0}\equiv n\in\mathbb{Z}
|
||||
%=\left.\DSF{(X_0/\eta_0)^{X/\eta_0}\EE^{-X_0/\eta_0}}{(X/\eta_0)!}\right|_{\frac{X}{\eta_0}\in\mathbb{Z}}
|
||||
\]
|
||||
and now,
|
||||
\[
|
||||
\mathop{\sum}_{n=0}^{+\infty}
|
||||
P(n)=1\ ;
|
||||
\]
|
||||
\[
|
||||
\langle X\rangle=\mathop{\sum}_{n=0}^{+\infty}
|
||||
\eta_0 nP(n)=\eta_0 C_0=X_0\ ;
|
||||
\]
|
||||
\[
|
||||
\langle X^2\rangle=\mathop{\sum}_{n=0}^{+\infty}
|
||||
\eta_0^2 n^2 P(n)=\eta_0^2(C_0^2+C_0)=X_0^2+\eta_0 X_0\ ;
|
||||
\]
|
||||
\[
|
||||
\sigma_X=\sqrt{\langle X^2\rangle-\langle X\rangle^2}=\sqrt{\eta_0 X_0}=\eta_0\sqrt{C_0}=\sqrt{\eta_0}\sqrt{X_0}
|
||||
\]
|
||||
Now it is no more valid that $\sigma_X=\sqrt{\langle X\rangle}=\sqrt{X_0}$, instead
|
||||
\[
|
||||
\sigma_X=\sqrt{\eta_0}\sqrt{X_0}=\eta_0\sqrt{C_0}=\eta_0\sigma_{C_0}
|
||||
\]
|
||||
that is the characteristic relationship for a normal-variate distribution.
|
||||
|
||||
Moreover, assume now that the scaling factor is not exctly known
|
||||
but instead it is a normal-variate itself with average $\eta_0$, s.d.
|
||||
$\sigma_{\eta_0}$, and distribution
|
||||
\[
|
||||
\widehat{P}(\eta)=\DSF{
|
||||
\EE^{
|
||||
-\frac{1}{2}
|
||||
\lrb{
|
||||
\frac{\eta-\eta_0}{\sigma_{\eta_0}}
|
||||
}^2
|
||||
}
|
||||
}{
|
||||
\sigma_{\eta_0}\sqrt{2\pi}
|
||||
}
|
||||
\]
|
||||
Then,
|
||||
\[
|
||||
\int_{-\infty}^{+\infty}\DD{\eta}\mathop{\sum}_{n=0}^{+\infty}
|
||||
P(n)\widehat{P}(\eta)=1\ ;
|
||||
\]
|
||||
\[
|
||||
\langle X\rangle=\int_{-\infty}^{+\infty}\DD{\eta}\mathop{\sum}_{n=0}^{+\infty}
|
||||
\widehat{P}(\eta)\eta nP(n)=
|
||||
\mathop{\sum}_{n=0}^{+\infty}
|
||||
nP(n)
|
||||
\int_{-\infty}^{+\infty}\DD{\eta} \widehat{P}(\eta)\eta
|
||||
=
|
||||
\eta_0 C_0=X_0\ ;
|
||||
\]
|
||||
\[
|
||||
\langle X^2\rangle=\int_{-\infty}^{+\infty}\DD{\eta}\mathop{\sum}_{n=0}^{+\infty}
|
||||
\widehat{P}(\eta)\eta^2 n^2 P(n)=
|
||||
\int_{-\infty}^{+\infty}\DD{\eta}\widehat{P}(\eta)\eta^2
|
||||
\mathop{\sum}_{n=0}^{+\infty}
|
||||
n^2 P(n)
|
||||
=
|
||||
(\eta_0^2+\sigma_{\eta_0}^2)(C_0^2+C_0)\ ;
|
||||
\]
|
||||
\[
|
||||
\DSF{\sigma_X}{\langle X\rangle}=\DSF{\sqrt{\langle X^2\rangle-\langle X\rangle^2}}{\langle X\rangle}
|
||||
=\DSF{\sqrt{
|
||||
\eta_0^2 C_0+\sigma_{\eta_0}^2C_0^2+\sigma_{\eta_0}^2 C_0
|
||||
}}{\eta_0C_0}=
|
||||
\sqrt{
|
||||
\lrb{\DSF{ \sigma_{C_0}}{C_0}}^2
|
||||
+\lrb{\DSF{\sigma_{\eta_0}}{\eta_0}}^2+\lrb{\DSF{\sigma_{\eta_0}}{\eta_0}\DSF{\sigma_{C_0}}{C_0}}^2
|
||||
}\approx\sqrt{
|
||||
\lrb{\DSF{ \sigma_{C_0}}{C_0}}^2
|
||||
+\lrb{\DSF{\sigma_{\eta_0}}{\eta_0}}^2
|
||||
}
|
||||
%=\sqrt{\eta_0^2\sigma_{C_0}^2}
|
||||
\]
|
||||
where in the last we discard, as usual, the 4th order in the relative errors. Both the exact and approximated forms
|
||||
are exactly the same as if both distributions were to be normal.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection*{Bibliography}
|
||||
|
||||
[1] - B. E. Warren, {\textit{"X-Ray Diffraction"}} (Dover:1990)
|
||||
|
||||
[2] - A. Guinier, {\textit{"X-Ray Diffraction In Crystals, Imperfect Crystals, and Amorphous Bodies"}} (Dover:1994)
|
||||
|
||||
[3] - G. L. Squires, {\textit{"Introduction to the Theory of Thermal Neutron Scattering"}} (Dover:1997)
|
||||
|
||||
[4] - G. E. P. Box, G. C. Tiao, {\textit{"Bayesian inference in statistical analysis"}} (Wiley, NY: 1996)
|
||||
|
||||
[5] - E. Prince, P. T. Boggs, {\textit{"International Tables for Crystallography"}} Vol. C, ch.~8.1, pp.~678-688 (First online edition : 2006)
|
||||
|
||||
[6] - K. J. Mighell, {\textit{Astrophys. J.}} {\textbf{518}} (1999) p. 380--393
|