Compare commits

..

30 Commits

Author SHA1 Message Date
8f9155e578 Merge branch 'main-rc' into b2.3.0 2020-11-30 16:23:50 +01:00
9df1eac3c1 Merge branch 'main-rc' into b2.2.0 2020-11-30 15:46:45 +01:00
5ededf9be4 Merge branch 'main-rc' into b2.1.1 2020-11-30 15:16:57 +01:00
3e8774798a Merge branch 'main-rc' into b2.1.0 2020-11-30 15:13:43 +01:00
1e6c6dea71 Merge remote branch 'slsDetectorCalibration/2.3' into 2.3 2017-12-12 11:14:05 +01:00
0e5d4d1d8e Merge remote branch 'slsDetectorCalibration/2.2' into 2.2 2017-12-12 11:14:01 +01:00
a2986784d3 Merge remote branch 'slsDetectorCalibration/2.1.1' into 2.1.1 2017-12-12 11:13:34 +01:00
975cbb576e Merge remote branch 'slsDetectorCalibration/2.1' into 2.1 2017-12-12 11:06:15 +01:00
e48a92d9cd Merge remote branch 'slsDetectorCalibration/2.0.5' into 2.0.5 2017-12-12 11:02:57 +01:00
081b809078 Merge remote branch 'slsDetectorGui/2.3' into 2.3 2017-12-04 16:47:35 +01:00
9263567cd8 Merge remote branch 'slsReceiverSoftware/2.3' into 2.3 2017-12-04 16:47:34 +01:00
58e90a85be Merge remote branch 'slsDetectorSoftware/2.3' into 2.3 2017-12-04 16:47:33 +01:00
025c836e25 Merge remote branch 'slsDetectorGui/2.2' into 2.2 2017-12-04 16:47:28 +01:00
5d5abae3f4 Merge remote branch 'slsReceiverSoftware/2.2' into 2.2 2017-12-04 16:47:28 +01:00
e2ad46386e Merge remote branch 'slsDetectorSoftware/2.2' into 2.2 2017-12-04 16:47:26 +01:00
308d44e452 Merge remote branch 'slsDetectorGui/2.1.1' into 2.1.1 2017-12-04 16:47:22 +01:00
69da61b1fb Merge remote branch 'slsReceiverSoftware/2.1.1' into 2.1.1 2017-12-04 16:47:22 +01:00
460168ce04 Merge remote branch 'slsDetectorSoftware/2.1.1' into 2.1.1 2017-12-04 16:47:21 +01:00
4e429c0d77 Merge remote branch 'slsDetectorGui/2.1' into 2.1 2017-12-04 16:45:34 +01:00
bf4fab549d Merge remote branch 'slsReceiverSoftware/2.1' into 2.1 2017-12-04 16:45:34 +01:00
f7705eb1da Merge remote branch 'slsDetectorSoftware/2.1' into 2.1 2017-12-04 16:45:32 +01:00
a2217e2066 Merge remote branch 'slsReceiverSoftware/2.0.5' into 2.0.5 2017-12-04 15:33:33 +01:00
aaa02706fc Merge remote branch 'slsDetectorSoftware/2.0.5' into 2.0.5 2017-12-04 15:31:52 +01:00
839896c7e6 fixed the print file packet loss progress bug 2016-10-19 15:53:26 +02:00
4a7e246604 removed asking only 1 for framescaugh 2016-10-19 10:21:29 +02:00
7f293115c4 moved f_activate to receiver funcs from detectors funcs 2016-10-10 08:43:18 +02:00
f59f40a659 ask only 1 for frames caught for 9m 2016-10-10 08:41:03 +02:00
64fd82f92c fixed bug in gui that overwrites the individual sls file path values with the multi value, included a febl and febr temp read 2016-10-10 08:39:46 +02:00
cd232fd732 fixed bug in gui that overwrites the individual sls file path values with the multi value 2016-10-10 08:17:34 +02:00
172fa66b1f hotfix for memory leak in server 2016-08-18 11:57:36 +02:00
510 changed files with 46105 additions and 58665 deletions

10
.gitignore vendored
View File

@ -1,11 +1,17 @@
.cproject
.project
bin/
calibrationWizards/
slsDetectorGui/
slsDetectorSoftware/
slsReceiverSoftware/
slsDetectorCalibration/
slsImageReconstruction/
.settings
JCTBGui/
*.aux
*.log
*.out
*.toc
build
docs/
RELEASE.txt
tests

View File

@ -1,50 +1,21 @@
cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
set (CALIBRATE OFF)
option (USE_HDF5 "HDF5 File format" OFF)
option (USE_TEXTCLIENT "Text Client" OFF)
option (USE_RECEIVER "Receiver" OFF)
option (USE_GUI "GUI" OFF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-misleading-indentation")
find_package(Qt4)
find_package(Qwt 6)
find_package(CBF)
find_package(Doxygen)
find_package(PNG REQUIRED)
if (USE_HDF5)
find_package(HDF5 1.10 COMPONENTS CXX)
endif (USE_HDF5)
add_subdirectory(slsDetectorSoftware)
add_subdirectory(slsReceiverSoftware)
add_subdirectory(slsImageReconstruction)
if (QT4_FOUND AND QWT_FOUND)
add_subdirectory(slsDetectorGui)
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_INSTALL_RPATH "$ORIGIN")
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
if (USE_TEXTCLIENT)
add_subdirectory(slsDetectorSoftware)
endif (USE_TEXTCLIENT)
if (USE_RECEIVER)
add_subdirectory(slsReceiverSoftware)
endif (USE_RECEIVER)
if (USE_GUI)
if (QT4_FOUND AND QWT_FOUND)
add_subdirectory(slsDetectorGui)
endif()
endif (USE_GUI)
if (CALIBRATE)
if (DEFINED ENV{ROOTSYS})
find_package(ROOT)
if (ROOT_FOUND)
add_subdirectory(calibrationWizards)
endif()
if (DEFINED ENV{ROOTSYS})
find_package(ROOT)
if (ROOT_FOUND)
add_subdirectory(calibrationWizards)
endif()
endif(CALIBRATE)
endif()

View File

@ -5,11 +5,10 @@ include Makefile.include
INSTALLROOT ?= $(PWD)
BINDIR ?= $(INSTALLROOT)/bin
DOCDIR ?= $(INSTALLROOT)/manual/docs
DOCDIR ?= $(INSTALLROOT)/docs
LIBDIR ?= $(INSTALLROOT)/bin
INCDIR ?= $(INSTALLROOT)/include
DETAILDOC ?= $(INSTALLROOT)/docs
WD = $(shell pwd)
LIBRARYDIR = $(WD)/slsDetectorSoftware
LIBRARYRXRDIR = $(WD)/slsReceiverSoftware
@ -20,8 +19,6 @@ CALWIZDIR = $(WD)/calibrationWizards
MANDIR = $(WD)/manual
CALIBDIR = $(WD)/slsDetectorCalibration
TABSPACE := "\t"
INCLUDES=-I. -I$(LIBRARYDIR)/commonFiles -I$(LIBRARYDIR)/slsDetector -I$(LIBRARYDIR)/usersFunctions -I$(LIBRARYDIR)/multiSlsDetector -I$(LIBRARYDIR)/slsDetectorUtils -I$(LIBRARYDIR)/slsDetectorCommand -I$(LIBRARYDIR)/slsDetectorAnalysis -I$(LIBRARYDIR)/slsReceiverInterface -I$(LIBRARYRXRDIR)/include -I$(LIBRARYDIR)/threadFiles -I$(ASM)
@ -30,15 +27,14 @@ INCLUDESRXR += -I. -I$(LIBRARYRXRDIR)/include -I$(CALIBDIR) -I$(ASM)
$(info )
$(info #######################################)
$(info # In slsDetectorsPackage Makefile #)
$(info # Compiling slsDetectorsPackage #)
$(info #######################################)
$(info )
.PHONY: all nonstatic static lib libreceiver textclient receiver gui stextclient sreceiver
#all: lib textclient receiver gui
all: textclient receiver gui
all: lib textclient receiver gui
nonstatic: lib libreceiver textclient receiver gui
@ -46,61 +42,39 @@ static: lib libreceiver stextclient sreceiver gui
lib:
cd $(LIBRARYDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
cd $(LIBRARYDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' INCLUDES='$(INCLUDES)'
libreceiver:
cd $(LIBRARYRXRDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
cd $(LIBRARYRXRDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(LIBDIR)' INCLUDES='$(INCLUDESRXR)'
stextclient: slsDetectorClient_static
slsDetectorClient: textclient
slsDetectorClient_static: #lib
cd $(CLIENTDIR) && $(MAKE) static_clients FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
textclient: #lib
cd $(CLIENTDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
slsDetectorClient_static: lib
cd $(CLIENTDIR) && $(MAKE) static_clients FLAGS='$(FLAGS)' LIBS='$(LDFLAGDET)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' INCLUDES='$(INCLUDES)'
textclient: lib
cd $(CLIENTDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' LIBS='$(LDFLAGDET)' INCLUDES='$(INCLUDES)'
slsReceiver: receiver
slsReceiver_static: receiver
receiver: #libreceiver
# cd $(RECEIVERDIR) && $(MAKE) receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
cd $(RECEIVERDIR) && $(MAKE) FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
sreceiver: #libreceiver
cd $(RECEIVERDIR) && $(MAKE) static_receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
receiver: libreceiver
cd $(RECEIVERDIR) && $(MAKE) receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)'
sreceiver: libreceiver
cd $(RECEIVERDIR) && $(MAKE) static_receiver FLAGS='$(FLAGS)' DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' LIBS='$(LDFLAGRXR)' INCLUDES='$(INCLUDESRXR)'
slsDetectorGUI: lib
cd $(GUIDIR) && $(MAKE) DESTDIR='$(BINDIR)' LIBDIR='$(LIBDIR)' INCLUDES='$(INCLUDES)' LDFLAGDET='-L$(LIBDIR) -lSlsDetector'
slsDetectorGUI: #lib
cd $(GUIDIR) && $(MAKE) DESTDIR='$(BINDIR)' LIBRARYDIR='$(LIBRARYDIR)' INCLUDES='$(INCLUDES)' LDFLAGDET='$(LDFLAGDETONLY)' LIBDIR='$(LIBDIR)'
@echo ""
@echo "#######################################"
@echo "# Back in slsDetectorPackage Makefile #"
@echo "#######################################"
@echo ""
calWiz:
cd $(CALWIZDIR) && $(MAKE) DESTDIR=$(BINDIR) #FLAGS=$(FLAGS) LDFLAGDET=$(LDFLAGDET) INCLUDES=$(INCLUDES)
@ -117,26 +91,6 @@ htmldoc:
make doc
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
cd manual && make html DESTDIR=$(DOCDIR)
detaildoc: createdocs docspdf docshtml removedocs
createdocs: $(LIBRARYDIR)/doxy.config
doxygen $(LIBRARYDIR)/doxy.config
docspdf:
cd slsDetectorPackageDocs/latex && make
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
$(shell test -d $(DETAILDOC)/pdf || mkdir -p $(DETAILDOC)/pdf)
mv slsDetectorPackageDocs/latex/refman.pdf $(DETAILDOC)/pdf/slsDetectorPackageDocs.pdf
docshtml:
$(shell test -d $(DETAILDOC) || mkdir -p $(DETAILDOC))
$(shell test -d $(DETAILDOC)/html || mkdir -p $(DETAILDOC)/html)
$(shell test -d $(DETAILDOC)/html/slsDetectorPackageDocs && rm -r $(DETAILDOC)/html/slsDetectorPackageDocs)
mv slsDetectorPackageDocs/html $(DETAILDOC)/html/slsDetectorPackageDocs
removedocs:
rm -rf slsDetectorPackageDocs;
clean:
@ -149,8 +103,7 @@ clean:
cd $(CALWIZDIR) && $(MAKE) clean
cd manual && $(MAKE) clean
cd $(DOCDIR) && rm -rf *
rm -rf slsDetectorPackageDocs;
rm -rf $(DETAILDOC)
#install_lib:
@ -221,6 +174,7 @@ help:
@echo ""
@echo ""
@echo "Makefile variables"
@echo "REST=yes compile REST-aware Receiver (POCO and JsonBox libraries required)"
@echo "DEBUG=1,2 set debug level to 1 (VERBOSE) or 2 (VERYVERBOSE)"
@echo ""
@echo ""

View File

@ -5,10 +5,9 @@
CC = g++
CXX = $(CC)
ASM=$(shell echo "/lib/modules/`uname -r`/build/include")
LDFLAGDETONLY = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector
LDFLAGDET = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread
FLAGS= -Wall -pthread #-DEIGER_DEBUG2
LDFLAGDET = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsDetector -L/usr/lib64/ -lpthread
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -lpthread
FLAGS= -Wall #-DEIGER_DEBUG2 -DEIGER_DEBUG -DEIGER_DEBUG3 #-DFIFO_DEBUG
# -DVERBOSE
# Setting up the verbose flags
@ -20,17 +19,26 @@ ifeq ($(DEBUG),2)
endif
##############################################################
# HDF5 specific. Set this to yes, if you want to compile
# HDF5 code: in this case, you need HDF5 libraries
# EigerSLS specific. Set this to yes, if you want to compile
# EigerSLS code: in this case, you need also POCO and JsonBox
# libraries
##############################################################
HDF5 = no
HDF5_DIR = /opt/hdf5v1.10.0
REST = no
ifeq ($(HDF5),yes)
LDFLAGRXR = -L$(LIBDIR) -Wl,-rpath=$(LIBDIR) -lSlsReceiver -L$(HDF5_DIR)/lib -Wl,-rpath=$(HDF5_DIR)/lib -lhdf5 -lhdf5_cpp -lsz -lz -DHDF5C -L/usr/lib64/ -pthread
INCLUDESRXR = -I$(HDF5_DIR)/include
endif
#POCODIR = /afs/psi.ch/user/s/sala/public/poco-slp_5.7-32bit
#JSONBOXDIR = /afs/psi.ch/user/s/sala/public/JsonBox-slp_5.7-32bit
POCODIR = /afs/psi.ch/user/s/sala/public/poco-slp_6.4-64bit
JSONBOXDIR = /afs/psi.ch/user/s/sala/public/JsonBox-slp_6.4-64bit
#POCODIR = /home/sala/Programs/poco-ubuntu_13.10-64bit
#JSONBOXDIR = /home/sala/Programs/JsonBox-ubuntu_13.10-64bit
RESTFLAGS = -L$(POCODIR)/lib -Wl,-rpath=$(POCODIR)/lib -L$(JSONBOXDIR) -Wl,-rpath=$(JSONBOXDIR)/lib -lPocoNet -lPocoFoundation -lJsonBox
ifeq ($(REST),yes)
LDFLAGRXR = -L$(LIBDIR) -lSlsReceiver $(RESTFLAGS) -DREST
INCLUDESRXR = $(EIGERFLAGS) -I$(POCODIR)/include -I$(JSONBOXDIR)/include
endif
##############################################################
@ -47,11 +55,6 @@ ifeq ($(ROOTSLS),yes)
endif
define colorecho
@tput setaf 6
@echo $1
@tput sgr0
endef

View File

@ -1,88 +1,42 @@
### Documentation
Detailed documentation can be found on the [official site.](https://www.psi.ch/detectors/users-support)
# slsDetector package
### Binaries
Documentation to obtain the binaries via the conda package is available [here.](https://github.com/slsdetectorgroup/sls_detector_software)
### Source code
One can also obtain the source code from this repository and compile while realizing the setup dependencies as required.
```
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git
## Installation
### Get source
The source code is organised into several submodules, and the top level module is
sls_detectors_package.
```
#### Setup dependencies
* Gui Client <br>
Requirements: Qt 4.8 and Qwt 6.0
$ git clone git@git.psi.ch:sls_detectors_software/sls_detectors_package.git
$ cd sls_detectors_package
$ ./checkout.sh
```
### Setup dependencies
The GUI client requires Qt 4.8 and Qwt 6.0
```
export QTDIR=/usr/local/Trolltech/
export QWTDIR=/usr/local/qwt-6.0.1/
```
If either of them does not exist, the GUI client will not be built.
* Calibration wizards<br>
Requirements: ROOT
The calibration wizards require ROOT
```
export ROOTSYS=/usr/local/root-5.34
```
#### Compilation
Compiling can be done in two ways.
**1. Compile using script cmk.sh**<br>
After compiling, the libraries and executables will be found in `slsDetectorPackage/build/bin` directory<br>
Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]<br>
* -[no option]: only make<br>
* -c: Clean<br>
* -b: Builds/Rebuilds CMake files normal mode<br>
* -h: Builds/Rebuilds Cmake files with HDF5 package<br>
* -d: HDF5 Custom Directory<br>
* -t: Build/Rebuilds only text client<br>
* -r: Build/Rebuilds only receiver<br>
* -g: Build/Rebuilds only gui<br>
* -j: Number of threads to compile through<br>
Basic Option:
./cmk.sh -b
For only make:
./cmk.sh
For make clean;make:
./cmk.sh -c
For using hdf5 without custom dir /blabla:
./cmk.sh -h -d /blabla
For rebuilding cmake without hdf5
./cmk.sh -b
For using multiple cores to compile faster:
./cmk.sh -j9<br>
For rebuilding only certain sections<br>
./cmk.sh -tg #only text client and gui<br>
./cmk.sh -r #only receiver<br>
**2. Compile without script**<br>
Use cmake to create out-of-source builds, by creating a build folder parallel to source directory.
### Compile
Use cmake to create out-of-source builds, by creating an build folder parallel to source directory.
```
$ cd ..
$ mkdir slsDetectorPackage-build
$ cd slsDetectorPackage-build
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=OFF
$ mkdir sls_detectors_package-build
$ cd sls_detectors_package-build
$ cmake ../sls_detectors_package
$ make
```
Use the following as an example to compile statically and using specific hdf5 folder
```
$ HDF5_ROOT=/opt/hdf5v1.10.0 cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=ON
```
After compiling, the libraries and executables will be found at `bin` directory
The libraries and executables will be found at `bin` directory
```
$ ls bin/
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a libSlsReceiver.so

View File

@ -1,52 +1,28 @@
SLS Detector Package 3.1.1 released on 2018-03-12
=================================================
SLS Detector Package 2.3.0 released on 2017-03-23
================================================================================
INTRODUCTION
This document describes the differences between 3.1.0 and 3.1.0 releases.
This document describes the differences between previous versions and 2.3.0 releases.
The conda package of the binaries can be downloaded from
https://github.com/slsdetectorgroup/sls_detector_software.git
The Python interface to the software package (including the package) is at
https://github.com/slsdetectorgroup/sls_detector.git
Manual (both HTML and pdf versions) are provided in
manual/docs/
Manuals can be found under the 'manual' folder.
Documentation from Source Code can be found for the Command Line and for the API in
html:
manual/docs/html/slsDetectorClientDocs/index.html
manual/docs/html/slsDetectorUsersDocs/index.html
pdf:
manual/docs/pdf/slsDetectorClientDocs.pdf
manual/docs/pdf/slsDetectorUsersDocs.pdf
Example including binaries for detector and receiver user classes can be found in
manual/manual-api
User documentation can also be accessed directly at this location:
User documentation and other help can be accessed directly at this location:
https://www.psi.ch/detectors/users-support
If you have any software related questions or comments, please send them to:
dhanya.thattil@psi.ch
anna.bergamaschi@psi.ch
If you have any python related questions or comments, please send them to:
erik.frojdh@psi.ch
CONTENTS
- Firmware Requirements
- Changes in User Interface
- New Features
- Resolved Issues
@ -54,60 +30,106 @@ CONTENTS
Firmware Requirements
=====================
Please refer to the link below for more details on the firmware versions.
https://www.psi.ch/detectors/firmware.
Gotthard
========
Minimum compatible version : 11.01.2013
Latest version : 08.02.2018 (50um and 25um Master)
09.02.2018 (25 um Slave)
-Can not be upgraded remotely.
Eiger
=====
Minimum compatible version : 16
Latest version : 20
-Can be upgraded remotely via bit files.
Jungfrau
========
Minimum compatible version : 13.11.2017
Latest version : 13.11.2017
-Can be upgraded remotely via sls_detector_put programfpga <pof>.
Changes in User Interface
=========================
=========================
This release supports the following features:
Receiver
--------
- The files will be written in this format in the default mode:
* ASCII file header of 1024 bytes (only for EIGER detectors)
* series of images, each preceded by a Standard Header image
(header described below)
- Stanard Header image header in file and call back
arguments defined. It is in the following format defined as
sls_detector_header defined in
slsReceiverSoftware/include/sls_receiver_defs.h
Mostly 0 if not applicatble or implemented, but updated in next release
from firmware.
* Frame Number : 8 bytes # Image Number
* Exposure Length : 4 bytes # sub frame number in 32 bit mode
Eiger.
* Packet Number : 4 bytes # Number of packets in an image
* Bunch ID : 8 bytes # Bunch Id in beamline for jungfrau.
* Timestamp : 8 bytes # Not implemened
* Module Id : 2 bytes # Not implemented
* X Coordinate : 2 bytes # Id of part of detector in 1D
* Y Coordinate : 2 bytes # Not implemented
* Z Coordinate : 2 bytes # Not implemented
* Debug : 4 bytes # Not implemented
* Round Robin Number : 2 bytes # Not implemented
* Detector Type : 1 byte # Detector type defined by enum
detectorType in slsReceiverSoftware
/include/sls_receiver_defs.h
* Header Version : 1 byte # 1
- The call back value for Start Acquisition Call back is insignificant at the
moment and left for future use. Instead, the following rules apply:
* If file write is enabled from the client, we will write the files.
* If callbacks are registered, they will be called.
For example, the user prefers to write the data himself, one must disable
file write (so we dont write) and register the callbacks (so the user gets
the data).
New Features
============
Eiger
-----
- Tau is moved to settings file, Gain and offset are removed from calibration
file. Put settings only sets client variable, whereas putting threshold loads
settings files to the server.
- Mode argument in starting up receiver is removed. FlippedData command is used
in config file to specify bottom.
Receiver
--------
- Image Reconstruction from the files are different as packet headers are not
stored and a standard image header is used.
General
-------
- Users folder that gives an example on how to user the slsDetectorUsers and
slsReceiverUsers class.
- Data is streamed from Receiver to Gui via ZMQ if gui call back defined.
Resolved Issues
===============
Eiger
-----
- Frame and packet counters in server to check delays were buggy.
Known Issues
============
- X, Y and Z Coordinates do not exactly define the position of the
detector in 3d. This will be defined in the next release. Other header
parameters will be complete in the next release.
- Too many split files per detector especially for Eiger. Next Release will
have a HDF5 version, with virtual file mapping all the split files in an
acquisition.
- This version is tested only for Eiger and Jungfrau.

17
checkout.sh Executable file
View File

@ -0,0 +1,17 @@
#git clone $1@git.psi.ch:sls_det_software/sls_detectors_package.git slsDetectorsPackage
#cd slsDetectorsPackage
git clone $1@git.psi.ch:sls_detectors_software/sls_detector_software.git slsDetectorSoftware
git clone $1@git.psi.ch:sls_detectors_software/sls_detector_gui.git slsDetectorGui
git clone $1@git.psi.ch:sls_detectors_software/sls_receiver_software.git slsReceiverSoftware
git clone $1@git.psi.ch:sls_detectors_software/sls_detector_calibration.git slsDetectorCalibration
#git clone $1@git.psi.ch:sls_detectors_software/sls_image_reconstruction.git slsImageReconstruction
git clone $1@git.psi.ch:sls_detectors_software/calibration_wizards.git calibrationWizards
#git clone git@git.psi.ch:sls_detectors_software/tests.git tests

193
cmk.sh
View File

@ -1,193 +0,0 @@
#!/bin/bash
BUILDDIR="build"
HDF5DIR="/opt/hdf5v1.10.0"
HDF5=0
COMPILERTHREADS=0
TEXTCLIENT=0
RECEIVER=0
GUI=0
CLEAN=0
REBUILD=0
CMAKE_PRE=""
CMAKE_POST=""
usage() { echo -e "
Usage: $0 [-c] [-b] [-h] [-d <HDF5 directory>] [-j]
-[no option]: only make
-c: Clean
-b: Builds/Rebuilds CMake files normal mode
-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
-j: Number of threads to compile through
For only make:
./cmk.sh
For make clean;make:
./cmk.sh -c
For using hdf5 without default dir /opt/hdf5v1.10.0:
./cmk.sh -h
For using hdf5 without custom dir /blabla:
./cmk.sh -h -d /blabla
For rebuilding cmake without hdf5 (Use this if you had previously run with hdf5 and now you dont want it)
./cmk.sh -b
For using multiple cores to compile faster:
(all these options work)
./cmk.sh -j9
./cmk.sh -cj9 #with clean
./cmk.sh -hj9 #with hdf5
./cmk.sh -j9 -h #with hdf
For rebuilding only certain sections
./cmk.sh -tg #only text client and gui
./cmk.sh -r #only receiver
" ; exit 1; }
while getopts ":bchd:j:trg" opt ; do
case $opt in
b)
echo "Building of CMake files Required"
REBUILD=1
;;
c)
echo "Clean Required"
CLEAN=1
;;
h)
echo "Building of CMake files with HDF5 option Required"
HDF5=1
REBUILD=1
;;
d)
echo "New HDF5 directory: $OPTARG"
HDF5DIR=$OPTARG
;;
j)
echo "Number of compiler threads: $OPTARG"
COMPILERTHREADS=$OPTARG
;;
t)
echo "Compiling Options: Text Client"
TEXTCLIENT=1
REBUILD=1
;;
r)
echo "Compiling Options: Receiver"
RECEIVER=1
REBUILD=1
;;
g)
echo "Compiling Options: GUI"
GUI=1
REBUILD=1
;;
\?)
echo "Invalid option: -$OPTARG"
usage
exit 1
;;
:)
echo "Option -$OPTARG requires an argument."
usage
exit 1
;;
esac
done
if [ $TEXTCLIENT -eq 0 ] && [ $RECEIVER -eq 0 ] && [ $GUI -eq 0 ]; then
CMAKE_POST+=" -DUSE_TEXTCLIENT=ON -DUSE_RECEIVER=ON -DUSE_GUI=ON "
echo "Compile Option: TextClient, Receiver and GUI"
else
if [ $TEXTCLIENT -eq 1 ]; then
CMAKE_POST+=" -DUSE_TEXTCLIENT=ON "
echo "Compile Option: TextClient"
fi
if [ $RECEIVER -eq 1 ]; then
CMAKE_POST+=" -DUSE_RECEIVER=ON "
echo "Compile Option: Receiver"
fi
if [ $GUI -eq 1 ]; then
CMAKE_POST+=" -DUSE_GUI=ON "
echo "Compile Option: GUI"
fi
fi
#build dir doesnt exist
if [ ! -d "$BUILDDIR" ] ; then
echo "No Build Directory. Building of Cmake files required"
mkdir $BUILDDIR;
REBUILD=1
else
#rebuild not requested, but no makefile
if [ $REBUILD -eq 0 ] && [ ! -f "$BUILDDIR/Makefile" ] ; then
echo "No Makefile. Building of Cmake files required"
REBUILD=1
fi
fi
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
#hdf5 rebuild
if [ $HDF5 -eq 1 ]; then
CMAKE_PRE+="HDF5_ROOT="$HDF5DIR
CMAKE_POST+=" -DUSE_HDF5=ON "
#normal mode rebuild
else
CMAKE_POST+=" -DUSE_HDF5=OFF "
fi
#enter build dir
cd $BUILDDIR;
echo "in "$PWD
#cmake
if [ $REBUILD -eq 1 ]; then
rm -f CMakeCache.txt
BUILDCOMMAND="$CMAKE_PRE cmake $CMAKE_POST .."
echo $BUILDCOMMAND
eval $BUILDCOMMAND
fi
#make clean
if [ $CLEAN -eq 1 ]; then
make clean;
fi
#make
if [ $COMPILERTHREADS -gt 0 ]; then
BUILDCOMMAND="make -j$COMPILERTHREADS"
echo $BUILDCOMMAND
eval $BUILDCOMMAND
else
make
fi

View File

@ -1,22 +0,0 @@
GITREPO1='git remote -v'
GITREPO2=" | grep \"fetch\" | cut -d' ' -f1"
BRANCH1='git branch -v'
BRANCH2=" | grep '*' | cut -d' ' -f2"
REPUID1='git log --pretty=format:"%H" -1'
AUTH1_1='git log --pretty=format:"%cn" -1'
AUTH1_2=" | cut -d' ' -f1"
AUTH2_1='git log --pretty=format:"%cn" -1'
AUTH2_2=" | cut -d' ' -f2"
FOLDERREV1='git log --oneline . ' #used for all the individual server folders
FOLDERREV2=" | wc -l" #used for all the individual server folders
REV1='git log --oneline '
REV2=" | wc -l"
GITREPO=`eval $GITREPO1 $GITREPO2`
BRANCH=`eval $BRANCH1 $BRANCH2`
REPUID=`eval $REPUID1`
AUTH1=`eval $AUTH1_1 $AUTH1_2`
AUTH2=`eval $AUTH2_1 $AUTH2_2`
REV=`eval $REV1 $REV2`
FOLDERREV=`eval $FOLDERREV1 $FOLDERREV2`

View File

@ -1,33 +0,0 @@
detsizechan 1024 512
#detetctor geometry, long side of the module first
hostname beb059+beb058+
#1Gb detector hostname for controls
0:rx_tcpport 1991
#tcpport for the first halfmodule
0:rx_udpport 50011
#udp port first quadrant, first halfmodule
0:rx_udpport2 50012
#udp port second quadrant, first halfmodule
0:rx_udpip 10.0.30.210
#udp IP of the receiver over 10Gb
0:detectorip 10.0.30.100
#first half module 10 Gb IP
1:rx_tcpport 1992
#tcpport for the second halfmodule
1:rx_udpport 50013
#udp port first quadrant, second halfmodule
1:rx_udpport2 50014
#udp port second quadrant, second halfmodule
1:rx_udpip 10.0.40.210
#udp IP of the receiver over 10Gb,
#can be the same or different from 0:rx_udpip
1:detectorip 10.0.40.101
#second half module 10 Gb IP
rx_hostname x12sa-vcons
#1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1

View File

@ -1,24 +0,0 @@
detsizechan 1024 512
#detetctor geometry, long side of the module first
hostname beb059+beb058+
#1Gb detector hostname for controls
0:rx_tcpport 1991
#tcpport for the first halfmodule
0:rx_udpport 50011
#udp port first quadrant, first halfmodule
0:rx_udpport2 50012
#udp port second quadrant, first halfmodule
1:rx_tcpport 1992
#tcpport for the second halfmodule
1:rx_udpport 50013
#udp port first quadrant, second halfmodule
1:rx_udpport2 50014
#udp port second quadrant, second halfmodule
rx_hostname x12sa-vcons
#1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1

View File

@ -1,5 +1,5 @@
hostname bchip007
type Gotthard+
0:hostname bchip007
#0:port 1952
#0:stopport 1953
#0:rx_tcpport 1956 must also have this in receiver config file
@ -10,6 +10,9 @@ hostname bchip007
0:caldir /home/l_maliakal_d/mySoft/newMythenSoftware/settingsdir/gotthard
0:ffdir /home/l_maliakal_d
0:extsig:0 off
0:extsig:1 off
0:extsig:2 off
0:extsig:3 off
#0:detectorip 129.129.202.9
0:detectormac 00:aa:bb:cc:dd:ee
0:rx_udpport 50004

View File

@ -1,18 +0,0 @@
hostname bchip038+
settingsdir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
caldir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
lock 0
0:rx_udpport 50004
0:rx_udpip 10.1.1.100
0:detectorip 10.1.1.10
rx_hostname pcmoench01
powerchip 1
timing auto
outdir /external_pool/jungfrau_data/softwaretest
threaded 1

View File

@ -1,30 +0,0 @@
detsizechan 1024 1024
hostname bchip048+bchip052+
settingsdir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
caldir /home/mySoft/slsDetectorsPackage/settingsdir/jungfrau
lock 0
0:rx_udpport 50004
0:rx_udpip 10.1.1.100
0:rx_udpmac F4:52:14:2F:32:00
0:detectorip 10.1.1.10
0:detectormac 00:aa:bb:cc:dd:33
1:rx_tcpport 1955
1:rx_udpport 50005
1:rx_udpip 10.1.1.100
1:rx_udpmac F4:52:14:2F:32:00
1:detectorip 10.1.1.11
1:detectormac 00:aa:bb:cc:dd:33
rx_hostname pcmoench01
powerchip 1
extsig:0 trigger_in_rising_edge
timing auto
outdir /external_pool/jungfrau_data/softwaretest
threaded 1

View File

@ -2,6 +2,7 @@
detsizechan 2560 1
#type Gotthard+
hostname bchip007+bchip009+
#0:hostname bchip007
@ -15,6 +16,9 @@ hostname bchip007+bchip009+
0:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
0:ffdir /home/l_msdetect
0:extsig:0 off
0:extsig:1 off
0:extsig:2 off
0:extsig:3 off
0:detectorip 10.1.1.2
#0:detectormac 00:aa:bb:cc:dd:ee
#0:rx_udpport 50001
@ -35,6 +39,9 @@ hostname bchip007+bchip009+
1:caldir /home/l_msdetect/dhanya/slsDetectorsPackage/settingsdir/gotthard
1:ffdir /home/l_msdetect
1:extsig:0 off
1:extsig:1 off
1:extsig:2 off
1:extsig:3 off
1:detectorip 10.1.2.2
#1:detectormac 00:aa:bb:cc:dd:ee
1:rx_udpport 50004

View File

@ -15,11 +15,11 @@ fout=$3
#dat=echo "date '+%Y%m%d'"
echo "Updating $fout"
#echo "in: $fin tmp: $ftmp out: $fout"
echo "in: $fin tmp: $ftmp out: $fout"
#awk 'NR==FNR {if ($3=="Date:") {l[FNR]=$4; gsub("-","",l[FNR]);} else { if (match($0,"Rev")) {l[FNR]=$(NF);} else {l[FNR]="\""$(NF)"\"";};};next} {$0=$1" "$2" "l[FNR]}1' $fin $ftmp > $fout
awk 'BEGIN {l[0]=0; "date +%Y%m%d" | getline l[1]; l[2]="\"/\""; l[3]="\"nobody\""; l[3]="\"nobody\""; l[4]="\"0000-0000-0000\"";} \
NR==FNR {if (match($0,"Rev")) {l[0]="0x"$(NF);} else if (match($0,"Date")) {l[1]="0x"$4; gsub("-","",l[1]);} else if (match($0,"URL")) {l[2]="\""$(NF)"\"";} else if (match($0,"Author")) {l[3]="\""$(NF)"\"";} else if (match($0,"UUID")) {l[4]="\""$(NF)"\"";} else if (match($0,"Branch")) {l[5]="\""$(NF)"\"";};next;}
{if (match($2,"REV")) {$0=$1" "$2" "l[0];} else if (match($2,"DATE")) {$0=$1" "$2" "l[1];} else if (match($2,"URL")) {$0=$1" "$2" "l[2];} else if (match($2,"AUTH")) {$0=$1" "$2" "l[3];} else if (match($2,"UUID")) {$0=$1" "$2" "l[4];} else if (match($2,"BRANCH")) {$0=$1" "$2" "l[5];}}1' $fin $ftmp > $fout
NR==FNR {if (match($0,"Rev")) {l[0]="0x"$(NF);} else if (match($0,"Date")) {l[1]="0x"$4; gsub("-","",l[1]);} else if (match($0,"URL")) {l[2]="\""$(NF)"\"";} else if (match($0,"Author")) {l[3]="\""$(NF)"\"";} else if (match($0,"UUID")) {l[4]="\""$(NF)"\"";};next;}
{if (match($2,"REV")) {$0=$1" "$2" "l[0];} else if (match($2,"DATE")) {$0=$1" "$2" "l[1];} else if (match($2,"URL")) {$0=$1" "$2" "l[2];} else if (match($2,"AUTH")) {$0=$1" "$2" "l[3];} else if (match($2,"UUID")) {$0=$1" "$2" "l[4];}}1' $fin $ftmp > $fout

8
gitall.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
git $1
for i in sls*/; do
cd $i
echo $i
git $1
cd ..
done

View File

@ -1,11 +1,11 @@
DESTDIR?=docs
DESTDIR?=../docs
#manual-api manual-calwiz manual-client manual-gui manual-main
MAINDIRS= manual-main manual-api manual-calwiz manual-client manual-gui
MAINDIRS= manual-main
#manual-calwiz manual-calwiz manual-gui manual-client manual-api
CLEANDIRS=$(MAINDIRS:manual-%=clean-%)
PDFDIRS=$(MAINDIRS:manual-%=pdf-%)
@ -14,18 +14,18 @@ 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)
$(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)
$(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)
$(shell test -d $(DESTDIR)/html && rm -fr $(DESTDIR)/html)
mv html $(DESTDIR)
clean: $(CLEANDIRS)
rm -fr $(DESTDIR)/pdf
@ -45,7 +45,7 @@ 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><>.
#<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><>.

View File

@ -1,52 +1,28 @@
INCLUDES = -I .
SRC_DET = mainClient.cpp
SRC_REC = mainReceiver.cpp
LIBDIR = .
LDFLAG_DET = -I. -L$(LIBDIR) -lSlsDetector -L/usr/lib64/ -pthread -lrt -L. -lzmq
LDFLAG_REC = -I. -L$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -pthread -lrt -L. -lzmq
LIBDIR = ../../bin
LDFLAG_DET = -L$(LIBDIR) -lSlsDetector -L/usr/lib64/ -lpthread
LDFLAG_REC = -L$(LIBDIR) -lSlsReceiver -L/usr/lib64/ -lpthread
DESTDIR ?= ../docs
all: docs detUser detReceiver
#all: docs
#all: detUser detReceiver
all: docs
docs: createdocs docspdf docshtml removedocs
docs:
doxygen slsDetectorUsers.doxy
createdocs: slsDetectorUsers.doxy slsDetectorUsers.h detectorData.h slsReceiverUsers.h 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++
g++ -o detUser $(SRC_DET) $(INCLUDES) $(LDFLAG_DET) -lm -lstdc++
detReceiver:$(SRC_REC)
echo "creating receiver"
mkdir -p bin
g++ -o bin/detReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
g++ -o detReceiver $(SRC_REC) $(INCLUDES) $(LDFLAG_REC) -lm -lstdc++
clean:
echo "cleaning for manual-api"
rm -rf bin/detUser bin/detReceiver slsDetectorUsersDocs
rm -rf slsDetectorUsersDocs
rm -rf $(DESTDIR)/html/slsDetectorUsersDocs
rm -rf $(DESTDIR)/pdf/slsDetectorUsersDocs.pdf
echo "cleaning"
rm -rf detUser detReceiver slsDetectorUsersDocs

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/ansi.h

BIN
manual/manual-api/detReceiver Executable file

Binary file not shown.

BIN
manual/manual-api/detUser Executable file

Binary file not shown.

View File

@ -80,24 +80,7 @@ LATEX_HIDE_INDICES = YES
PREDEFINED = __cplusplus
INPUT = analogDetector.h \
pedestalSubtraction.h \
MovingStat.h \
singlePhotonDetector.h \
interpolatingDetector.h tiffIO.h \
single_photon_hit.h \
dataStructures/slsDetectorData.h \
commonModeSubtraction.h \
RunningStat.h \
interpolations/etaInterpolationBase.h \
interpolations/slsInterpolation.h \
interpolations/etaInterpolationPosXY.h \
interpolations/linearInterpolation.h \
interpolations/noInterpolation.h \
interpolations/etaInterpolationGlobal.h \
multiThreadedAnalogDetector.h
OUTPUT_DIRECTORY = slsDetectorCalibrationDocs
INPUT = slsDetector/slsDetectorUsers.h slsDetector/slsDetectorBase.h commonFiles/sls_detector_defs.h slsDetector/slsDetector.h MySocketTCP/MySocketTCP.h usersFunctions/usersFunctions.h multiSlsDetector/multiSlsDetector.h commonFiles/sls_detector_defs.h slsDetector/slsDetectorUtils.h slsDetector/slsDetectorBase.h slsDetector/slsDetectorCommand.h slsDetector/slsDetectorActions.h multiSlsDetector/multiSlsDetector.h slsDetectorAnalysis/detectorData.h slsDetectorAnalysis/energyConversion.h slsDetectorAnalysis/postProcessing.h slsDetectorAnalysis/angularConversion.h slsDetectorAnalysis/fileIO.h multiSlsDetector/multiSlsDetectorClient.h multiSlsDetector/multiSlsDetectorCommand.h slsDetectorAnalysis/angularConversionStatic.h slsDetectorAnalysis/angleConversionConstant.h slsDetectorAnalysis/enCalLogClass.h slsDetectorAnalysis/angCalLogClass.h slsDetectorAnalysis/badChannelCorrections.h slsDetectorAnalysis/fileIOStatic.h slsReceiverInterface/receiverInterface.h slsReceiver/slsReceiver_funcs.h slsReceiver/slsReceiverFunctionList.h slsReceiver/receiver_defs.h
OUTPUT_DIRECTORY = docs
#moench03Ctb10GbT1Data.h moench03TCtbData.h moench03T1CtbData.h moench03CtbData.h moench03Ctb10GbData.h moench03TCtb10GbData.h Mythen3_01_jctbData.h adcSar2_jctbData.h eigerHalfModuleData.h energyCalibration.h slsReceiverData.h gotthardModuleData.h gotthardShortModuleData.h jungfrau02Data.h jungfrau10ModuleData.h moench02Ctb10GbData.h moench02CtbData.h moench02ModuleData.h moench03CommonMode.h moenchCommonMode.h chiptestBoardData.h interpolation/etaVEL/interpolation_EtaVEL.h interpolation/etaVEL/EtaVEL.h etaVEL/iterativeEtaInterpolation.h dataStructures/moench03T1ZmqData.h

View File

@ -1 +0,0 @@
../../build/bin/libSlsDetector.so

View File

@ -1 +0,0 @@
../../build/bin/libSlsReceiver.so

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/libzmq.a

View File

@ -4,102 +4,97 @@
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++
gcc mainClient.cpp -L lib -l SlsDetector -lm -lpthread
where,
where lib is the location of libSlsDetector.so
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 <iostream>
#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)
/** Definition of the data callback which simply prints out the number of points received and teh frame number */
int dataCallback(detectorData *pData, int iframe, void *pArg)
{
std::cout << " DataCallback:"
<< "\n nx : " << pData->npoints
<< "\n ny : " << pData->npy
<< "\n Frame number : " << iframe << std::endl;
std::cout << "dataCallback: " << pData->npoints << " " << pData->npy << "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]);
/**example of a main program using the slsDetectorUsers class */
int main(int argc, char *argv[]) {
int id=0;
int status;
/** if specified, argv[2] is used as detector ID (default is 0)*/
if (argc>=3)
id=atoi(argv[2]);
/** - slsDetectorUsers Object is instantiated with appropriate ID */
slsDetectorUsers *pDetector = new slsDetectorUsers (id);
/** slsDetectorUsers is instantiated */
slsDetectorUsers *pDetector = new slsDetectorUsers (id);
/** if specified, argv[1] is used as detector config 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]);
/** Setting the detector online (should be by default */
pDetector->setOnline(1);
/** - 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;
}
/** Load setup file if argv[2] specified */
if (argc>=3)
pDetector->retrieveDetectorSetup( argv[2]);
else{
/** defining the detector size */
int minX, minY=0, sizeX, sizeY=1;
pDetector->getDetectorSize(minX, minY, sizeX, sizeY);
std::cout << "X: Start=" << minX << ", Size= " << sizeX << std::endl;
std::cout << "Y: Start=" << minY << ", Size= " << sizeY << std::endl;
pDetector->setDetectorSize(0,0,7680,1);
std::cout << pDetector->getDetectorDeveloper() << std::endl;
/** - set detector in shared memory online (in case no config file was used) */
pDetector->setOnline(1);
/** registering data callback */
pDetector->registerDataCallback(&dataCallback, NULL);
/** - set receiver in shared memory online (in case no config file was used) */
pDetector->setReceiverOnline(1);
/** checking detector status and exiting if not idle */
status = pDetector->getDetectorStatus();
if (status != 0){
std::cout << "Detector not ready: " << slsDetectorUsers::runStatusType(status) << std::endl;
return 1;
}
/** - registering data callback */
pDetector->registerDataCallback(&dataCallback, NULL);
/** - if receiver exists, enable data streaming from receiver to get the data */
pDetector->enableDataStreamingFromReceiver(1);
/** - create zmq sockets in client to enable data streaming in of data from receiver/different process */
pDetector->enableDataStreamingToClient(1);
/** checking and setting detector settings */
std::cout << "settings: " << slsDetectorUsers::getDetectorSettings(pDetector->setSettings()) << std::endl;
pDetector->setSettings(slsDetectorUsers::getDetectorSettings("veryhighgain"));
std::cout << "settings: " << slsDetectorUsers::getDetectorSettings(pDetector->setSettings()) << std::endl;
/** Settings exposure time to 10ms */
pDetector->setExposureTime(10000000);
/** - 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;
}
/** Settings exposure time to 100ms */
pDetector->setExposurePeriod(100000000);
/** Settingsnumber of frames to 30 */
pDetector->setNumberOfFrames(30);
}
/** start measurement */
pDetector->startMeasurement();
/** - if provided, load detector settings */
if (argc>=3){
pDetector->retrieveDetectorSetup(argv[2]);
std::cout << "Detector measurement set-up done" << std::endl;
}
while (1) {
usleep(100000);
status = pDetector->getDetectorStatus();
if (status == 0 || status == 1|| status == 3)
break;
}
/** - start measurement */
pDetector->startMeasurement();
std::cout << "measurement finished" << std::endl; usleep(1*1000*1000);
/** - returning when acquisition is finished or data are avilable */
/** - delete slsDetectorUsers object */
delete pDetector;
return 0;
char *temp[] = {"receiver", NULL};
/** returning when acquisition is finished or data are avilable */
std::cout << "answer to a get command:" << pDetector->getCommand(1,temp,0) << std::endl;
delete pDetector;
return 0;
}

View File

@ -1,270 +1,103 @@
/* A simple server in the internet domain using TCP
The port number is passed as an argument
*/
/**
\file mainReceiver.cpp
\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++
This file is an example of how to implement the slsDetectorUsers class
You can compile it linking it to the slsDetector library
where,
gcc mainReceiver.cpp -L lib -l SlsDetector -lm -lpthread
lib is the location of lSlsReceiver.so
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 "sls_receiver_defs.h"
#include "slsReceiverUsers.h"
#include <iostream>
#include <string.h>
#include <signal.h> //SIGINT
#include <cstdlib> //system
//#include "utilities.h"
//#include "logger.h"
#include <sys/types.h> //wait
#include <sys/wait.h> //wait
#include <string>
#include <unistd.h> //usleep
#include <errno.h>
#include <syscall.h> //tid
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"
"./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, 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",frames);
}
/**
* Get Receiver Data Call back
* Prints in different colors(for each receiver process) the different headers for each image call back.
* @param frameNumber frame number
* @param expLength real time exposure length (in 100ns) or sub frame number (Eiger 32 bit mode only)
* @param packetNumber number of packets caught for this frame
* @param bunchId bunch id from beamline
* @param timestamp time stamp in 10MHz clock (not implemented for most)
* @param modId module id (not implemented for most)
* @param xCoord x coordinates (detector id in 1D)
* @param yCoord y coordinates (not implemented)
* @param zCoord z coordinates (not implemented)
* @param debug debug values if any
* @param roundRNumber (not implemented)
* @param detType detector type see :: detectorType
* @param version version of standard header (structure format)
* @param datapointer pointer to data
* @param datasize data size in bytes
* @param p pointer to object
*/
void GetData(uint64_t frameNumber, uint32_t expLength, uint32_t packetNumber, uint64_t bunchId, uint64_t timestamp,
uint16_t modId, uint16_t xCoord, uint16_t yCoord, uint16_t zCoord, uint32_t debug, uint16_t roundRNumber, uint8_t detType, uint8_t version,
char* datapointer, uint32_t datasize, void* p){
PRINT_IN_COLOR (modId?modId:xCoord,
"#### %d GetData: ####\n"
"frameNumber: %llu\t\texpLength: %u\t\tpacketNumber: %u\t\tbunchId: %llu\t\ttimestamp: %llu\t\tmodId: %u\t\t"
"xCoord: %u\t\tyCoord: %u\t\tzCoord: %u\t\tdebug: %u\t\troundRNumber: %u\t\tdetType: %u\t\t"
"version: %u\t\tfirstbytedata: 0x%x\t\tdatsize: %u\n\n",
xCoord, frameNumber, expLength, packetNumber, bunchId, timestamp, modId,
xCoord, yCoord, zCoord, debug, roundRNumber, detType, version,
((uint8_t)(*((uint8_t*)(datapointer)))), datasize);
}
/**
* 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);
int ret = 0;
/*
Instantiate the slsReceieverUsers class
The port number is passed as an argument
*/
slsReceiverUsers *receiver = new slsReceiverUsers(argc, argv, ret);
/*
return if could not open TCP socket for interfacing to client
*/
if(ret==1)
return -1;
/** - 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, NULL) == -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, NULL) == -1) {
cprintf(RED, "Could not set handler function for SIGPIPE\n");
}
/*register callbacks */
/** - 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 = slsReceiverDefs::OK;
/** - create slsReceiverUsers object with appropriate arguments */
slsReceiverUsers *receiver = new slsReceiverUsers(3, args, ret);
if(ret==slsReceiverDefs::FAIL){
delete receiver;
exit(EXIT_FAILURE);
}
/*
callback arguments are
filepath
filename
fileindex
datasize
return value is
0 raw data ready callback takes care of open,close,write file
1 callback writes file, we have to open, close it
2 we open, close, write file, callback does not do anything
/** - 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, NULL);
/** - Call back for acquisition finished */
cprintf(BLUE, "Registering AcquisitionFinished()\n");
receiver->registerCallBackAcquisitionFinished(AcquisitionFinished, NULL);
/* - Call back for raw data */
cprintf(BLUE, "Registering GetData() \n");
receiver->registerCallBackRawDataReady(GetData,NULL);
}
registerCallBackStartAcquisition(int (*func)(char*, char*,int, int, void*),void *arg);
*/
//receiver->registerCallBackStartAcquisition(func,arg);
/** - start tcp server thread */
if (receiver->start() == slsReceiverDefs::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, NULL) == -1) {
cprintf(RED, "Could not set handler function for SIGINT\n");
}
/*
callback argument is
total farmes caught
registerCallBackAcquisitionFinished(void (*func)(int, void*),void *arg);
*/
//receiver->registerCallBackAcquisitionFinished(func,arg);
/** - Print Ready and Instructions how to exit */
cout << "Ready ... " << endl;
cprintf(RESET, "\n[ Press \'Ctrl+c\' to exit ]\n");
/*
args to raw data ready callback are
framenum
datapointer
file descriptor
guidatapointer (NULL, no data required)
NEVER DELETE THE DATA POINTER
REMEMBER THAT THE CALLBACK IS BLOCKING
/** - Parent process waits for all child processes to exit */
for(;;) {
pid_t childPid = waitpid (-1, NULL, 0);
registerCallBackRawDataReady(void (*func)(int, char*, FILE*, char*, void*),void *arg);
// 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;
}
}
*/
//receiver->registerCallBackRawDataReady(func,arg);
//child closed
cprintf(BLUE,"Exiting Child Process [ Tid: %ld ]\n", (long int) childPid);
}
cout << "Goodbye!" << endl;
return 0;
/* start receiver to listen for commands from the client (and data from detectors when expected */
receiver->start();
/** sleep for 10 s*/
usleep(10000000);
/** stop udp socket and tcp socket and thread */
receiver->stop();
return 0;
}

View File

@ -0,0 +1,29 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="classdetectorData.html">detectorData</a></td><td class="indexvalue">Data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) </td></tr>
<tr><td class="indexkey"><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td class="indexvalue">Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc </td></tr>
<tr><td class="indexkey"><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td class="indexvalue">Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data </td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,34 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData Member List</h1>This is the complete list of members for <a class="el" href="classdetectorData.html">detectorData</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a>(double *val=NULL, double *err=NULL, double *ang=NULL, double p_ind=-1, const char *fname=&quot;&quot;, int np=-1, int ny=1)</td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a></td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">~detectorData</a>()</td><td><a class="el" href="classdetectorData.html">detectorData</a></td><td><code> [inline]</code></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,316 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>detectorData Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData Class Reference</h1><!-- doxytag: class="detectorData" -->data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="detectorData_8h-source.html">detectorData.h</a>&gt;</code>
<p>
<a href="classdetectorData-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a> (double *val=NULL, double *err=NULL, double *ang=NULL, double p_ind=-1, const char *fname=&quot;&quot;, int np=-1, int ny=1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The constructor. <a href="#3f8538f5f634295fc40682b8aed47b31"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">~detectorData</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The destructor deletes also the arrays pointing to data/errors/angles if not NULL. <a href="#d32a037cc2bd6e8caf4556cbd4b88ec7"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the data <a href="#0f4e31d65f9616e83a2e5521453d0364"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the errors <a href="#29cb1c6bb5635e918ae28505ccd0d8f9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pointer to the angles (NULL if no angular conversion) <a href="#cc9f9708b9ff2d840208cae843fb4b7a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">file index <a href="#976b3287d46aed032487bbeed74132da"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a> [1000]</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">file name <a href="#91d1e3466878def295a531c01bdeef6b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of points <a href="#50aabf6f2c40587f8e915cf4913a2cfe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">dimensions in y coordinate <a href="#c289d259e7fd9445a9c04976a82cb324"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00009">9</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="3f8538f5f634295fc40682b8aed47b31"></a><!-- doxytag: member="detectorData::detectorData" ref="3f8538f5f634295fc40682b8aed47b31" args="(double *val=NULL, double *err=NULL, double *ang=NULL, double p_ind=-1, const char *fname=&quot;&quot;, int np=-1, int ny=1)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">detectorData::detectorData </td>
<td>(</td>
<td class="paramtype">double *&nbsp;</td>
<td class="paramname"> <em>val</em> = <code>NULL</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&nbsp;</td>
<td class="paramname"> <em>err</em> = <code>NULL</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&nbsp;</td>
<td class="paramname"> <em>ang</em> = <code>NULL</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&nbsp;</td>
<td class="paramname"> <em>p_ind</em> = <code>-1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>fname</em> = <code>&quot;&quot;</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>np</em> = <code>-1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>ny</em> = <code>1</code></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
The constructor.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>pointer to the data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>err</em>&nbsp;</td><td>pointer to errors </td></tr>
<tr><td valign="top"></td><td valign="top"><em>ang</em>&nbsp;</td><td>pointer to the angles </td></tr>
<tr><td valign="top"></td><td valign="top"><em>f_ind</em>&nbsp;</td><td>file index </td></tr>
<tr><td valign="top"></td><td valign="top"><em>fname</em>&nbsp;</td><td>file name to which the data are saved </td></tr>
<tr><td valign="top"></td><td valign="top"><em>np</em>&nbsp;</td><td>number of points in x coordinate defaults to the number of detector channels (1D detector) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>ny</em>&nbsp;</td><td>dimension in y (1D detector) </td></tr>
</table>
</dl>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00020">20</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
References <a class="el" href="detectorData_8h-source.html#l00031">fileName</a>.
</div>
</div><p>
<a class="anchor" name="d32a037cc2bd6e8caf4556cbd4b88ec7"></a><!-- doxytag: member="detectorData::~detectorData" ref="d32a037cc2bd6e8caf4556cbd4b88ec7" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">detectorData::~detectorData </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
The destructor deletes also the arrays pointing to data/errors/angles if not NULL.
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00025">25</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
References <a class="el" href="detectorData_8h-source.html#l00029">angles</a>, <a class="el" href="detectorData_8h-source.html#l00028">errors</a>, and <a class="el" href="detectorData_8h-source.html#l00025">values</a>.
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="cc9f9708b9ff2d840208cae843fb4b7a"></a><!-- doxytag: member="detectorData::angles" ref="cc9f9708b9ff2d840208cae843fb4b7a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double* <a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">detectorData::angles</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
pointer to the angles (NULL if no angular conversion)
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00029">29</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00025">~detectorData()</a>.
</div>
</div><p>
<a class="anchor" name="29cb1c6bb5635e918ae28505ccd0d8f9"></a><!-- doxytag: member="detectorData::errors" ref="29cb1c6bb5635e918ae28505ccd0d8f9" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double* <a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">detectorData::errors</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
pointer to the errors
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00028">28</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00025">~detectorData()</a>.
</div>
</div><p>
<a class="anchor" name="91d1e3466878def295a531c01bdeef6b"></a><!-- doxytag: member="detectorData::fileName" ref="91d1e3466878def295a531c01bdeef6b" args="[1000]" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">detectorData::fileName</a>[1000] </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
file name
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00031">31</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00020">detectorData()</a>.
</div>
</div><p>
<a class="anchor" name="50aabf6f2c40587f8e915cf4913a2cfe"></a><!-- doxytag: member="detectorData::npoints" ref="50aabf6f2c40587f8e915cf4913a2cfe" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">detectorData::npoints</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
number of points
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00032">32</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="mainClient_8cpp-source.html#l00019">dataCallback()</a>.
</div>
</div><p>
<a class="anchor" name="c289d259e7fd9445a9c04976a82cb324"></a><!-- doxytag: member="detectorData::npy" ref="c289d259e7fd9445a9c04976a82cb324" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">detectorData::npy</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
dimensions in y coordinate
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00033">33</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="mainClient_8cpp-source.html#l00019">dataCallback()</a>.
</div>
</div><p>
<a class="anchor" name="976b3287d46aed032487bbeed74132da"></a><!-- doxytag: member="detectorData::progressIndex" ref="976b3287d46aed032487bbeed74132da" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double <a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">detectorData::progressIndex</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
file index
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00030">30</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
</div>
</div><p>
<a class="anchor" name="0f4e31d65f9616e83a2e5521453d0364"></a><!-- doxytag: member="detectorData::values" ref="0f4e31d65f9616e83a2e5521453d0364" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double* <a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">detectorData::values</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
pointer to the data
<p>
<p>
Definition at line <a class="el" href="detectorData_8h-source.html#l00025">25</a> of file <a class="el" href="detectorData_8h-source.html">detectorData.h</a>.
<p>
Referenced by <a class="el" href="detectorData_8h-source.html#l00025">~detectorData()</a>.
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="detectorData_8h-source.html">detectorData.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,95 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>slsDetectorUsers Member List</h1>This is the complete list of members for <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">addFrame</a>(double *data, double pos, double i0, double t, string fname, double var)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">dumpDetectorSetup</a>(string const fname)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">enableAngularConversion</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">enableCountRateCorrection</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">enableFlatFieldCorrection</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">enablePixelMaskCorrection</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">enableWriteToFile</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">finalizeDataset</a>(double *a, double *v, double *e, int &amp;np)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">getBeamEnergy</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">getCommand</a>(int narg, char *args[], int pos=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">getDetectorDeveloper</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">getDetectorFirmwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">getDetectorSerialNumber</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">getDetectorSettings</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">getDetectorSettings</a>(int s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">getDetectorSize</a>(int &amp;x0, int &amp;y0, int &amp;nx, int &amp;ny)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">getDetectorSoftwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">getDetectorType</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">getFileIndex</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">getFileName</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">getFilePath</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">getFlatFieldCorrectionDir</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">getFlatFieldCorrectionFile</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">getMaximumDetectorSize</a>(int &amp;nx, int &amp;ny)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">getModuleFirmwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">getModuleSerialNumber</a>(int imod=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">getPositions</a>(double *pos=NULL)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">getThisSoftwareVersion</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">getThresholdEnergy</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">getTimingMode</a>(int f)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">getTimingMode</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">initDataset</a>(int refresh)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">putCommand</a>(int narg, char *args[], int pos=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">readConfigurationFile</a>(string const fname)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">registerAcquisitionFinishedCallback</a>(int(*func)(double, int, void *), void *pArg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">registerConnectChannelsCallback</a>(int(*func)(void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">registerDataCallback</a>(int(*userCallback)(detectorData *d, int f, void *), void *pArg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">registerDisconnectChannelsCallback</a>(int(*func)(void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">registerGetI0Callback</a>(double(*func)(int, void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">registerGetPositionCallback</a>(double(*func)(void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">registerGoToPositionCallback</a>(int(*func)(double, void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">registerGoToPositionNoWaitCallback</a>(int(*func)(double, void *), void *arg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">registerRawDataCallback</a>(int(*userCallback)(double *p, int n, void *), void *pArg)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">retrieveDetectorSetup</a>(string const fname)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">runStatusType</a>(int s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">setBeamEnergy</a>(int e_eV)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">setBitDepth</a>(int i=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">setDelayAfterTrigger</a>(double t=-1, bool inseconds=false)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">setDetectorSize</a>(int x0=-1, int y0=-1, int nx=-1, int ny=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">setExposurePeriod</a>(double t=-1, bool inseconds=false)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">setExposureTime</a>(double t=-1, bool inseconds=false)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">setFileIndex</a>(int i)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">setFileName</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">setFilePath</a>(string s)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">setFlatFieldCorrectionDir</a>(string dir)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">setFlatFieldCorrectionFile</a>(string fname=&quot;&quot;)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">setNumberOfCycles</a>(int64_t t=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">setNumberOfFrames</a>(int64_t t=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">setNumberOfGates</a>(int64_t t=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">setOnline</a>(int const online=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">setPositions</a>(int nPos, double *pos)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">setReceiverMode</a>(int n=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>(int isettings=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">setThresholdEnergy</a>(int e_eV)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">setTimingMode</a>(int pol=-1)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a>(int id=0)</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">startMeasurement</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">stopMeasurement</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">~slsDetectorUsers</a>()</td><td><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td><td><code> [virtual]</code></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers Member List</h1>This is the complete list of members for <a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a>, including all inherited members.<p><table>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">closeFile</a>(int p)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">getReceiverVersion</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">receiver</a></td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">registerCallBackAcquisitionFinished</a>(void(*func)(int nf, void *), void *arg)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">registerCallBackRawDataReady</a>(void(*func)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *), void *arg)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">registerCallBackStartAcquisition</a>(int(*func)(char *filepath, char *filename, int fileindex, int datasize, void *), void *arg)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a>(int argc, char *argv[], int &amp;success)</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">~slsReceiverUsers</a>()</td><td><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td><td></td></tr>
</table><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,332 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsReceiverUsers Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers Class Reference</h1><!-- doxytag: class="slsReceiverUsers" -->Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>&gt;</code>
<p>
<a href="classslsReceiverUsers-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a> (int argc, char *argv[], int &amp;success)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">~slsReceiverUsers</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">closeFile</a> (int p)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">getReceiverVersion</a> ()</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">registerCallBackStartAcquisition</a> (int(*func)(char *filepath, char *filename, int fileindex, int datasize, void *), void *arg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">registerCallBackAcquisitionFinished</a> (void(*func)(int nf, void *), void *arg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">registerCallBackRawDataReady</a> (void(*func)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *), void *arg)</td></tr>
<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static slsReceiverTCPIPInterface *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">receiver</a></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
<p>
<a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a> is a class that can be instantiated in the users software to receive the data from the detectors. Callbacks can be defined for processing and/or saving data
<p>
<p>
Definition at line <a class="el" href="slsReceiverUsers_8h-source.html#l00021">21</a> of file <a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="79a82ba94fbb19761c7701aa3901b8b1"></a><!-- doxytag: member="slsReceiverUsers::slsReceiverUsers" ref="79a82ba94fbb19761c7701aa3901b8b1" args="(int argc, char *argv[], int &amp;success)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">slsReceiverUsers::slsReceiverUsers </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>argv</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&nbsp;</td>
<td class="paramname"> <em>success</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Constructor reads config file, creates socket, assigns function table <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>argc</em>&nbsp;</td><td>from command line </td></tr>
<tr><td valign="top"></td><td valign="top"><em>argv</em>&nbsp;</td><td>from command line </td></tr>
<tr><td valign="top"></td><td valign="top"><em>succecc</em>&nbsp;</td><td>socket creation was successfull </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="9b45943d81ce7a09543aa446de857cb0"></a><!-- doxytag: member="slsReceiverUsers::~slsReceiverUsers" ref="9b45943d81ce7a09543aa446de857cb0" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">slsReceiverUsers::~slsReceiverUsers </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Destructor
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="bad0b3265826da2d9ebf48e59e9d5787"></a><!-- doxytag: member="slsReceiverUsers::closeFile" ref="bad0b3265826da2d9ebf48e59e9d5787" args="(int p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::closeFile </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>p</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Close File and exits receiver server
</div>
</div><p>
<a class="anchor" name="f206092e2744e12ce6b717f4181d91a2"></a><!-- doxytag: member="slsReceiverUsers::getReceiverVersion" ref="f206092e2744e12ce6b717f4181d91a2" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t slsReceiverUsers::getReceiverVersion </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get get Receiver Version <dl compact><dt><b>Returns:</b></dt><dd>id </dd></dl>
</div>
</div><p>
<a class="anchor" name="7471d2945e8650eece86258e6ca56156"></a><!-- doxytag: member="slsReceiverUsers::registerCallBackAcquisitionFinished" ref="7471d2945e8650eece86258e6ca56156" args="(void(*func)(int nf, void *), void *arg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::registerCallBackAcquisitionFinished </td>
<td>(</td>
<td class="paramtype">void(*)(int nf, void *)&nbsp;</td>
<td class="paramname"> <em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
register callback for end of acquisition <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>end of acquisition callback. Argument nf is total frames caught </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>nothing </dd></dl>
</div>
</div><p>
<a class="anchor" name="343b9fac505e8c08a7fbf9efdd0f5762"></a><!-- doxytag: member="slsReceiverUsers::registerCallBackRawDataReady" ref="343b9fac505e8c08a7fbf9efdd0f5762" args="(void(*func)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *), void *arg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::registerCallBackRawDataReady </td>
<td>(</td>
<td class="paramtype">void(*)(int framenumber, char *datapointer, int datasize, FILE *filedescriptor, char *guidatapointer, void *)&nbsp;</td>
<td class="paramname"> <em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
register callback to be called when data are available (to process and/or save the data). <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>raw data ready callback. arguments are framenum datapointer datasize file descriptor guidatapointer (NULL, no data required) </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>nothing </dd></dl>
</div>
</div><p>
<a class="anchor" name="5d4bb9244008d0bc570778230d30c5e3"></a><!-- doxytag: member="slsReceiverUsers::registerCallBackStartAcquisition" ref="5d4bb9244008d0bc570778230d30c5e3" args="(int(*func)(char *filepath, char *filename, int fileindex, int datasize, void *), void *arg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::registerCallBackStartAcquisition </td>
<td>(</td>
<td class="paramtype">int(*)(char *filepath, char *filename, int fileindex, int datasize, void *)&nbsp;</td>
<td class="paramname"> <em>func</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
register calbback for starting the acquisition <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>callback to be called when starting the acquisition. Its arguments are filepath filename fileindex data size</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 callback takes care of open,close,write file; 1 callback writes file, we have to open, close it; 2 we open, close, write file, callback does not do anything </dd></dl>
</div>
</div><p>
<a class="anchor" name="ef40b4987367b8a0116bcb66534dd7b7"></a><!-- doxytag: member="slsReceiverUsers::start" ref="ef40b4987367b8a0116bcb66534dd7b7" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int slsReceiverUsers::start </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
starts listening on the TCP port for client comminication <dl compact><dt><b>Returns:</b></dt><dd>0 for success or 1 for FAIL in creating TCP server </dd></dl>
<p>
Referenced by <a class="el" href="mainReceiver_8cpp-source.html#l00025">main()</a>.
</div>
</div><p>
<a class="anchor" name="394001d873a4b7912865a971d4d25f87"></a><!-- doxytag: member="slsReceiverUsers::stop" ref="394001d873a4b7912865a971d4d25f87" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void slsReceiverUsers::stop </td>
<td>(</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
stops listening to the TCP &amp; UDP port and exit receiver program
<p>
Referenced by <a class="el" href="mainReceiver_8cpp-source.html#l00025">main()</a>.
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="8f262724fb99ecd3976214710d82dd18"></a><!-- doxytag: member="slsReceiverUsers::receiver" ref="8f262724fb99ecd3976214710d82dd18" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">slsReceiverTCPIPInterface* <a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">slsReceiverUsers::receiver</a><code> [static]</code> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="slsReceiverUsers_8h-source.html#l00087">87</a> of file <a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>.
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,46 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>detectorData.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData.h</h1><a href="detectorData_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
<a name="l00003"></a>00003 <span class="preprocessor">#include &lt;cstring&gt;</span>
<a name="l00004"></a>00004 <span class="preprocessor">#ifndef DETECTOR_DATA_H</span>
<a name="l00005"></a>00005 <span class="preprocessor"></span><span class="preprocessor">#define DETECTOR_DATA_H</span>
<a name="l00006"></a>00006 <span class="preprocessor"></span>
<a name="l00009"></a><a class="code" href="classdetectorData.html">00009</a> <span class="keyword">class </span><a class="code" href="classdetectorData.html">detectorData</a> {
<a name="l00010"></a>00010 <span class="keyword">public</span>:
<a name="l00020"></a><a class="code" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">00020</a> <a class="code" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a>(<span class="keywordtype">double</span> *val=NULL, <span class="keywordtype">double</span> *err=NULL, <span class="keywordtype">double</span> *ang=NULL, <span class="keywordtype">double</span> p_ind=-1, <span class="keyword">const</span> <span class="keywordtype">char</span> *fname=<span class="stringliteral">""</span>, <span class="keywordtype">int</span> np=-1, <span class="keywordtype">int</span> ny=1) : <a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>(val), <a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>(err), <a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>(ang), <a class="code" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a>(p_ind), <a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a>(np), <a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a>(ny){strcpy(<a class="code" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a>,fname);};
<a name="l00025"></a><a class="code" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">00025</a> <a class="code" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">~detectorData</a>() {<span class="keywordflow">if</span> (<a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>) <span class="keyword">delete</span> [] <a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>; <span class="keywordflow">if</span> (<a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>) <span class="keyword">delete</span> [] <a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>; <span class="keywordflow">if</span> (<a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>) <span class="keyword">delete</span> [] <a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>;};
<a name="l00026"></a>00026 <span class="comment">//private:</span>
<a name="l00027"></a>00027 <span class="keywordtype">double</span> *<a class="code" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">values</a>;
<a name="l00028"></a><a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">00028</a> <span class="keywordtype">double</span> *<a class="code" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">errors</a>;
<a name="l00029"></a><a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">00029</a> <span class="keywordtype">double</span> *<a class="code" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">angles</a>;
<a name="l00030"></a><a class="code" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">00030</a> <span class="keywordtype">double</span> <a class="code" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">progressIndex</a>;
<a name="l00031"></a><a class="code" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">00031</a> <span class="keywordtype">char</span> <a class="code" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">fileName</a>[1000];
<a name="l00032"></a><a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">00032</a> <span class="keywordtype">int</span> <a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a>;
<a name="l00033"></a><a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">00033</a> <span class="keywordtype">int</span> <a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a>;
<a name="l00034"></a>00034 };
<a name="l00035"></a>00035
<a name="l00036"></a>00036
<a name="l00037"></a>00037 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>detectorData.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>detectorData.h File Reference</h1><code>#include &lt;unistd.h&gt;</code><br>
<code>#include &lt;cstring&gt;</code><br>
<p>
<a href="detectorData_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdetectorData.html">detectorData</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) <a href="classdetectorData.html#_details">More...</a><br></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,358 @@
BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
font-family: Geneva, Arial, Helvetica, sans-serif;
}
BODY,TD {
font-size: 90%;
}
H1 {
text-align: center;
font-size: 160%;
}
H2 {
font-size: 120%;
}
H3 {
font-size: 100%;
}
CAPTION { font-weight: bold }
DIV.qindex {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.nav {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.navtab {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
TD.navtab {
font-size: 70%;
}
A.qindex {
text-decoration: none;
font-weight: bold;
color: #1A419D;
}
A.qindex:visited {
text-decoration: none;
font-weight: bold;
color: #1A419D
}
A.qindex:hover {
text-decoration: none;
background-color: #ddddff;
}
A.qindexHL {
text-decoration: none;
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
A.qindexHL:hover {
text-decoration: none;
background-color: #6666cc;
color: #ffffff;
}
A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
A.codeRef:link { font-weight: normal; color: #0000FF}
A.codeRef:visited { font-weight: normal; color: #0000FF}
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
.fragment {
font-family: monospace, fixed;
font-size: 95%;
}
PRE.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin-top: 4px;
margin-bottom: 4px;
margin-left: 2px;
margin-right: 8px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
padding-bottom: 4px;
}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
DIV.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
BODY {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
TD.indexkey {
background-color: #e8eef2;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TD.indexvalue {
background-color: #e8eef2;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TR.memlist {
background-color: #f0f0f0;
}
P.formulaDsp { text-align: center; }
IMG.formulaDsp { }
IMG.formulaInl { vertical-align: middle; }
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.mdescRight {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.memItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplParams {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
color: #606060;
background-color: #FAFAFA;
font-size: 80%;
}
.search { color: #003399;
font-weight: bold;
}
FORM.search {
margin-bottom: 0px;
margin-top: 0px;
}
INPUT.search { font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
TD.tiny { font-size: 75%;
}
a {
color: #1A41A8;
}
a:visited {
color: #2A3798;
}
.dirtab { padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
TH.dirtab { background: #e8eef2;
font-weight: bold;
}
HR { height: 1px;
border: none;
border-top: 1px solid black;
}
/* Style for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
padding: 4px;
background-color: #eef3f5;
border-width: 1px;
border-style: solid;
border-color: #dedeee;
-moz-border-radius: 8px 8px 8px 8px;
}
.memname {
white-space: nowrap;
font-weight: bold;
}
.memdoc{
padding-left: 10px;
}
.memproto {
background-color: #d5e1e8;
width: 100%;
border-width: 1px;
border-style: solid;
border-color: #84b0c7;
font-weight: bold;
-moz-border-radius: 8px 8px 8px 8px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
font-style: italic;
}
/* End Styling for detailed member documentation */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin:0.5em;
}
.directory { font-size: 9pt; font-weight: bold; }
.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
.directory > h3 { margin-top: 0; }
.directory p { margin: 0px; white-space: nowrap; }
.directory div { display: none; margin: 0px; }
.directory img { vertical-align: -30%; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,31 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>File Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="detectorData_8h.html">detectorData.h</a> <a href="detectorData_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="mainClient_8cpp.html">mainClient.cpp</a> <a href="mainClient_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="mainReceiver_8cpp.html">mainReceiver.cpp</a> <a href="mainReceiver_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="slsDetectorUsers_8h.html">slsDetectorUsers.h</a> <a href="slsDetectorUsers_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="slsReceiverUsers_8h.html">slsReceiverUsers.h</a> <a href="slsReceiverUsers_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,165 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_n"><span>n</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_v"><span>v</span></a></li>
<li><a href="#index_~"><span>~</span></a></li>
</ul>
</div>
<p>
Here is a list of all class members with links to the classes they belong to:
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
<li>addFrame()
: <a class="el" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">slsDetectorUsers</a><li>angles
: <a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">detectorData</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>closeFile()
: <a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">slsReceiverUsers</a></ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>detectorData()
: <a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a><li>dumpDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
<li>enableAngularConversion()
: <a class="el" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">slsDetectorUsers</a><li>enableCountRateCorrection()
: <a class="el" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">slsDetectorUsers</a><li>enableFlatFieldCorrection()
: <a class="el" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">slsDetectorUsers</a><li>enablePixelMaskCorrection()
: <a class="el" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">slsDetectorUsers</a><li>enableWriteToFile()
: <a class="el" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">slsDetectorUsers</a><li>errors
: <a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">detectorData</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>fileName
: <a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">detectorData</a><li>finalizeDataset()
: <a class="el" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>getBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">slsDetectorUsers</a><li>getCommand()
: <a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">slsDetectorUsers</a><li>getDetectorDeveloper()
: <a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">slsDetectorUsers</a><li>getDetectorFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">slsDetectorUsers</a><li>getDetectorSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">slsDetectorUsers</a><li>getDetectorSettings()
: <a class="el" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">slsDetectorUsers</a><li>getDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">slsDetectorUsers</a><li>getDetectorSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">slsDetectorUsers</a><li>getDetectorStatus()
: <a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">slsDetectorUsers</a><li>getDetectorType()
: <a class="el" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">slsDetectorUsers</a><li>getFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">slsDetectorUsers</a><li>getFileName()
: <a class="el" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">slsDetectorUsers</a><li>getFilePath()
: <a class="el" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">slsDetectorUsers</a><li>getFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">slsDetectorUsers</a><li>getFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">slsDetectorUsers</a><li>getMaximumDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">slsDetectorUsers</a><li>getModuleFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">slsDetectorUsers</a><li>getModuleSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">slsDetectorUsers</a><li>getPositions()
: <a class="el" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">slsDetectorUsers</a><li>getReceiverVersion()
: <a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">slsReceiverUsers</a><li>getThisSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">slsDetectorUsers</a><li>getThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">slsDetectorUsers</a><li>getTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>initDataset()
: <a class="el" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
<li>npoints
: <a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">detectorData</a><li>npy
: <a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">detectorData</a></ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>progressIndex
: <a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">detectorData</a><li>putCommand()
: <a class="el" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>readConfigurationFile()
: <a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">slsDetectorUsers</a><li>receiver
: <a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">slsReceiverUsers</a><li>registerAcquisitionFinishedCallback()
: <a class="el" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">slsDetectorUsers</a><li>registerCallBackAcquisitionFinished()
: <a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">slsReceiverUsers</a><li>registerCallBackRawDataReady()
: <a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">slsReceiverUsers</a><li>registerCallBackStartAcquisition()
: <a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">slsReceiverUsers</a><li>registerConnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">slsDetectorUsers</a><li>registerDataCallback()
: <a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">slsDetectorUsers</a><li>registerDisconnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">slsDetectorUsers</a><li>registerGetI0Callback()
: <a class="el" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">slsDetectorUsers</a><li>registerGetPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">slsDetectorUsers</a><li>registerGoToPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">slsDetectorUsers</a><li>registerGoToPositionNoWaitCallback()
: <a class="el" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">slsDetectorUsers</a><li>registerRawDataCallback()
: <a class="el" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">slsDetectorUsers</a><li>retrieveDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">slsDetectorUsers</a><li>runStatusType()
: <a class="el" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>setBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">slsDetectorUsers</a><li>setBitDepth()
: <a class="el" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">slsDetectorUsers</a><li>setDelayAfterTrigger()
: <a class="el" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">slsDetectorUsers</a><li>setDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">slsDetectorUsers</a><li>setExposurePeriod()
: <a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">slsDetectorUsers</a><li>setExposureTime()
: <a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">slsDetectorUsers</a><li>setFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">slsDetectorUsers</a><li>setFileName()
: <a class="el" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">slsDetectorUsers</a><li>setFilePath()
: <a class="el" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">slsDetectorUsers</a><li>setFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">slsDetectorUsers</a><li>setFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">slsDetectorUsers</a><li>setNumberOfCycles()
: <a class="el" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">slsDetectorUsers</a><li>setNumberOfFrames()
: <a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">slsDetectorUsers</a><li>setNumberOfGates()
: <a class="el" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">slsDetectorUsers</a><li>setOnline()
: <a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">slsDetectorUsers</a><li>setPositions()
: <a class="el" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">slsDetectorUsers</a><li>setReceiverMode()
: <a class="el" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">slsDetectorUsers</a><li>setSettings()
: <a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">slsDetectorUsers</a><li>setThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">slsDetectorUsers</a><li>setTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">slsDetectorUsers</a><li>slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a><li>slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a><li>start()
: <a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">slsReceiverUsers</a><li>startMeasurement()
: <a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">slsDetectorUsers</a><li>stop()
: <a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">slsReceiverUsers</a><li>stopMeasurement()
: <a class="el" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_v">- v -</a></h3><ul>
<li>values
: <a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">detectorData</a></ul>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
<li>~detectorData()
: <a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">detectorData</a><li>~slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">slsDetectorUsers</a><li>~slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">slsReceiverUsers</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,151 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members - Functions</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li id="current"><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_e"><span>e</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_~"><span>~</span></a></li>
</ul>
</div>
<p>
&nbsp;
<p>
<h3><a class="anchor" name="index_a">- a -</a></h3><ul>
<li>addFrame()
: <a class="el" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
<li>closeFile()
: <a class="el" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">slsReceiverUsers</a></ul>
<h3><a class="anchor" name="index_d">- d -</a></h3><ul>
<li>detectorData()
: <a class="el" href="classdetectorData.html#3f8538f5f634295fc40682b8aed47b31">detectorData</a><li>dumpDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
<li>enableAngularConversion()
: <a class="el" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">slsDetectorUsers</a><li>enableCountRateCorrection()
: <a class="el" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">slsDetectorUsers</a><li>enableFlatFieldCorrection()
: <a class="el" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">slsDetectorUsers</a><li>enablePixelMaskCorrection()
: <a class="el" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">slsDetectorUsers</a><li>enableWriteToFile()
: <a class="el" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
<li>finalizeDataset()
: <a class="el" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
<li>getBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">slsDetectorUsers</a><li>getCommand()
: <a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">slsDetectorUsers</a><li>getDetectorDeveloper()
: <a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">slsDetectorUsers</a><li>getDetectorFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">slsDetectorUsers</a><li>getDetectorSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">slsDetectorUsers</a><li>getDetectorSettings()
: <a class="el" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">slsDetectorUsers</a><li>getDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">slsDetectorUsers</a><li>getDetectorSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">slsDetectorUsers</a><li>getDetectorStatus()
: <a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">slsDetectorUsers</a><li>getDetectorType()
: <a class="el" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">slsDetectorUsers</a><li>getFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">slsDetectorUsers</a><li>getFileName()
: <a class="el" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">slsDetectorUsers</a><li>getFilePath()
: <a class="el" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">slsDetectorUsers</a><li>getFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">slsDetectorUsers</a><li>getFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">slsDetectorUsers</a><li>getMaximumDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">slsDetectorUsers</a><li>getModuleFirmwareVersion()
: <a class="el" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">slsDetectorUsers</a><li>getModuleSerialNumber()
: <a class="el" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">slsDetectorUsers</a><li>getPositions()
: <a class="el" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">slsDetectorUsers</a><li>getReceiverVersion()
: <a class="el" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">slsReceiverUsers</a><li>getThisSoftwareVersion()
: <a class="el" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">slsDetectorUsers</a><li>getThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">slsDetectorUsers</a><li>getTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
<li>initDataset()
: <a class="el" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
<li>putCommand()
: <a class="el" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_r">- r -</a></h3><ul>
<li>readConfigurationFile()
: <a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">slsDetectorUsers</a><li>registerAcquisitionFinishedCallback()
: <a class="el" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">slsDetectorUsers</a><li>registerCallBackAcquisitionFinished()
: <a class="el" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">slsReceiverUsers</a><li>registerCallBackRawDataReady()
: <a class="el" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">slsReceiverUsers</a><li>registerCallBackStartAcquisition()
: <a class="el" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">slsReceiverUsers</a><li>registerConnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">slsDetectorUsers</a><li>registerDataCallback()
: <a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">slsDetectorUsers</a><li>registerDisconnectChannelsCallback()
: <a class="el" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">slsDetectorUsers</a><li>registerGetI0Callback()
: <a class="el" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">slsDetectorUsers</a><li>registerGetPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">slsDetectorUsers</a><li>registerGoToPositionCallback()
: <a class="el" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">slsDetectorUsers</a><li>registerGoToPositionNoWaitCallback()
: <a class="el" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">slsDetectorUsers</a><li>registerRawDataCallback()
: <a class="el" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">slsDetectorUsers</a><li>retrieveDetectorSetup()
: <a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">slsDetectorUsers</a><li>runStatusType()
: <a class="el" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
<li>setBeamEnergy()
: <a class="el" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">slsDetectorUsers</a><li>setBitDepth()
: <a class="el" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">slsDetectorUsers</a><li>setDelayAfterTrigger()
: <a class="el" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">slsDetectorUsers</a><li>setDetectorSize()
: <a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">slsDetectorUsers</a><li>setExposurePeriod()
: <a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">slsDetectorUsers</a><li>setExposureTime()
: <a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">slsDetectorUsers</a><li>setFileIndex()
: <a class="el" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">slsDetectorUsers</a><li>setFileName()
: <a class="el" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">slsDetectorUsers</a><li>setFilePath()
: <a class="el" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">slsDetectorUsers</a><li>setFlatFieldCorrectionDir()
: <a class="el" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">slsDetectorUsers</a><li>setFlatFieldCorrectionFile()
: <a class="el" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">slsDetectorUsers</a><li>setNumberOfCycles()
: <a class="el" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">slsDetectorUsers</a><li>setNumberOfFrames()
: <a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">slsDetectorUsers</a><li>setNumberOfGates()
: <a class="el" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">slsDetectorUsers</a><li>setOnline()
: <a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">slsDetectorUsers</a><li>setPositions()
: <a class="el" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">slsDetectorUsers</a><li>setReceiverMode()
: <a class="el" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">slsDetectorUsers</a><li>setSettings()
: <a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">slsDetectorUsers</a><li>setThresholdEnergy()
: <a class="el" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">slsDetectorUsers</a><li>setTimingMode()
: <a class="el" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">slsDetectorUsers</a><li>slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a><li>slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a><li>start()
: <a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">slsReceiverUsers</a><li>startMeasurement()
: <a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">slsDetectorUsers</a><li>stop()
: <a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">slsReceiverUsers</a><li>stopMeasurement()
: <a class="el" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">slsDetectorUsers</a></ul>
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
<li>~detectorData()
: <a class="el" href="classdetectorData.html#d32a037cc2bd6e8caf4556cbd4b88ec7">detectorData</a><li>~slsDetectorUsers()
: <a class="el" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">slsDetectorUsers</a><li>~slsReceiverUsers()
: <a class="el" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">slsReceiverUsers</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,43 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members - Variables</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li id="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li id="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
&nbsp;
<p>
<ul>
<li>angles
: <a class="el" href="classdetectorData.html#cc9f9708b9ff2d840208cae843fb4b7a">detectorData</a><li>errors
: <a class="el" href="classdetectorData.html#29cb1c6bb5635e918ae28505ccd0d8f9">detectorData</a><li>fileName
: <a class="el" href="classdetectorData.html#91d1e3466878def295a531c01bdeef6b">detectorData</a><li>npoints
: <a class="el" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">detectorData</a><li>npy
: <a class="el" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">detectorData</a><li>progressIndex
: <a class="el" href="classdetectorData.html#976b3287d46aed032487bbeed74132da">detectorData</a><li>receiver
: <a class="el" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">slsReceiverUsers</a><li>values
: <a class="el" href="classdetectorData.html#0f4e31d65f9616e83a2e5521453d0364">detectorData</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,36 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li id="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li id="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
</ul>
</div>
Here is a list of all file members with links to the files they belong to:
<p>
<ul>
<li>dataCallback()
: <a class="el" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">mainClient.cpp</a><li>main()
: <a class="el" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainReceiver.cpp</a>, <a class="el" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainClient.cpp</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,36 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li id="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li id="current"><a href="globals_func.html"><span>Functions</span></a></li>
</ul>
</div>
&nbsp;
<p>
<ul>
<li>dataCallback()
: <a class="el" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">mainClient.cpp</a><li>main()
: <a class="el" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainReceiver.cpp</a>, <a class="el" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">mainClient.cpp</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,49 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Main Page</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li id="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<h1></h1>
<p>
<h1>API for SLS detectors data acquisition</h1>
<p>
<hr>
<p>
Although the SLS detectors group delvelops several types of detectors (1/2D, counting/integrating etc.) it is common interest of the group to use a common platfor for data acquisition<p>
The architecture of the acquisitions system is intended as follows: <ul>
<li>A socket server running on the detector (or more than one in some special cases) </li>
<li>C++ classes common to all detectors for client-server communication. These can be supplied to users as libraries and embedded also in acquisition systems which are not developed by the SLS </li>
<li>the possibility of using a Qt-based graphical user interface (with eventually root analisys capabilities) </li>
<li>the possibility of running all commands from command line. In order to ensure a fast operation of this so called "text client" the detector parameters should not be re-initialized everytime. For this reason a shared memory block is allocated where the main detector flags and parameters are stored </li>
<li>a Root library for data postprocessing and detector calibration (energy, angle).</li>
</ul>
<a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> is a class to control the detector which should be instantiated by the users in their acquisition software (EPICS, spec etc.). A callback for dislaying the data can be registered. More advanced configuration functions are not implemented and can be written in a configuration file tha can be read/written.<p>
<a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a> is a class to receive the data for detectors with external data receiver (e.g. GOTTHARD). Callbacks can be registered to process the data or save them in specific formats.<p>
<a class="el" href="classdetectorData.html">detectorData</a> is a structure containing the data and additional information which is used to return the data e.g. to the GUI for displaying them.<p>
You can find examples of how this classes can be instatiated in <a class="el" href="mainClient_8cpp.html">mainClient.cpp</a> and <a class="el" href="mainReceiver_8cpp.html">mainReceiver.cpp</a><p>
<dl compact><dt><b>Authors:</b></dt><dd><a href="mailto:anna.bergamaschi@psi.ch">Anna Bergamaschi</a>, <a href="mailto:dhanya.maliakal@psi.ch">Dhanya Maliakal</a> </dd></dl>
<dl compact><dt><b>Version:</b></dt><dd>0.2 <h2>Currently supported detectors</h2>
</dd></dl>
<ul>
<li>MYTHEN </li>
<li>GOTTHARD controls </li>
<li>GOTTHARD data receiver <h3>Coming soon</h3>
</li>
</ul>
<ul>
<li>EIGER </li>
</ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,97 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainClient.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainClient.cpp</h1><a href="mainClient_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="slsDetectorUsers_8h.html">slsDetectorUsers.h</a>"</span>
<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="detectorData_8h.html">detectorData.h</a>"</span>
<a name="l00016"></a>00016
<a name="l00017"></a>00017
<a name="l00019"></a><a class="code" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">00019</a> <span class="keywordtype">int</span> <a class="code" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">dataCallback</a>(<a class="code" href="classdetectorData.html">detectorData</a> *pData, <span class="keywordtype">int</span> iframe, <span class="keywordtype">void</span> *pArg)
<a name="l00020"></a>00020 {
<a name="l00021"></a>00021 std::cout &lt;&lt; <span class="stringliteral">"dataCallback: "</span> &lt;&lt; pData-&gt;<a class="code" href="classdetectorData.html#50aabf6f2c40587f8e915cf4913a2cfe">npoints</a> &lt;&lt; <span class="stringliteral">" "</span> &lt;&lt; pData-&gt;<a class="code" href="classdetectorData.html#c289d259e7fd9445a9c04976a82cb324">npy</a> &lt;&lt; <span class="stringliteral">"Frame number: "</span> &lt;&lt; iframe &lt;&lt; std::endl;
<a name="l00022"></a>00022 }
<a name="l00023"></a>00023
<a name="l00024"></a>00024
<a name="l00026"></a><a class="code" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">00026</a> <span class="keywordtype">int</span> <a class="code" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[]) {
<a name="l00027"></a>00027 <span class="keywordtype">int</span> <span class="keywordtype">id</span>=0;
<a name="l00028"></a>00028 <span class="keywordtype">int</span> status;
<a name="l00030"></a>00030 <span class="keywordflow">if</span> (argc&gt;=3)
<a name="l00031"></a>00031 <span class="keywordtype">id</span>=atoi(argv[2]);
<a name="l00032"></a>00032
<a name="l00033"></a>00033
<a name="l00034"></a>00034
<a name="l00036"></a>00036 <a class="code" href="classslsDetectorUsers.html">slsDetectorUsers</a> *pDetector = <span class="keyword">new</span> <a class="code" href="classslsDetectorUsers.html">slsDetectorUsers</a> (<span class="keywordtype">id</span>);
<a name="l00037"></a>00037
<a name="l00038"></a>00038
<a name="l00040"></a>00040 <span class="keywordflow">if</span> (argc&gt;=2)
<a name="l00041"></a>00041 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">readConfigurationFile</a>(argv[1]);
<a name="l00042"></a>00042
<a name="l00044"></a>00044 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">setOnline</a>(1);
<a name="l00045"></a>00045
<a name="l00047"></a>00047 <span class="keywordflow">if</span> (argc&gt;=3)
<a name="l00048"></a>00048 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">retrieveDetectorSetup</a>( argv[2]);
<a name="l00049"></a>00049 <span class="keywordflow">else</span>{
<a name="l00051"></a>00051 <span class="keywordtype">int</span> minX, minY=0, sizeX, sizeY=1;
<a name="l00052"></a>00052 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">getDetectorSize</a>(minX, minY, sizeX, sizeY);
<a name="l00053"></a>00053 std::cout &lt;&lt; <span class="stringliteral">"X: Start="</span> &lt;&lt; minX &lt;&lt; <span class="stringliteral">", Size= "</span> &lt;&lt; sizeX &lt;&lt; std::endl;
<a name="l00054"></a>00054 std::cout &lt;&lt; <span class="stringliteral">"Y: Start="</span> &lt;&lt; minY &lt;&lt; <span class="stringliteral">", Size= "</span> &lt;&lt; sizeY &lt;&lt; std::endl;
<a name="l00055"></a>00055 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">setDetectorSize</a>(0,0,7680,1);
<a name="l00056"></a>00056 std::cout &lt;&lt; pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">getDetectorDeveloper</a>() &lt;&lt; std::endl;
<a name="l00057"></a>00057
<a name="l00059"></a>00059 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">registerDataCallback</a>(&amp;<a class="code" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">dataCallback</a>, NULL);
<a name="l00060"></a>00060
<a name="l00062"></a>00062 status = pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>();
<a name="l00063"></a>00063 <span class="keywordflow">if</span> (status != 0){
<a name="l00064"></a>00064 std::cout &lt;&lt; <span class="stringliteral">"Detector not ready: "</span> &lt;&lt; <a class="code" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">slsDetectorUsers::runStatusType</a>(status) &lt;&lt; std::endl;
<a name="l00065"></a>00065 <span class="keywordflow">return</span> 1;
<a name="l00066"></a>00066 }
<a name="l00067"></a>00067
<a name="l00069"></a>00069 std::cout &lt;&lt; <span class="stringliteral">"settings: "</span> &lt;&lt; <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">slsDetectorUsers::getDetectorSettings</a>(pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>()) &lt;&lt; std::endl;
<a name="l00070"></a>00070 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>(<a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">slsDetectorUsers::getDetectorSettings</a>(<span class="stringliteral">"veryhighgain"</span>));
<a name="l00071"></a>00071 std::cout &lt;&lt; <span class="stringliteral">"settings: "</span> &lt;&lt; <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">slsDetectorUsers::getDetectorSettings</a>(pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>()) &lt;&lt; std::endl;
<a name="l00072"></a>00072
<a name="l00074"></a>00074 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">setExposureTime</a>(10000000);
<a name="l00075"></a>00075
<a name="l00077"></a>00077 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">setExposurePeriod</a>(100000000);
<a name="l00078"></a>00078
<a name="l00080"></a>00080 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">setNumberOfFrames</a>(30);
<a name="l00081"></a>00081 }
<a name="l00083"></a>00083 pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">startMeasurement</a>();
<a name="l00084"></a>00084
<a name="l00085"></a>00085 <span class="keywordflow">while</span> (1) {
<a name="l00086"></a>00086 usleep(100000);
<a name="l00087"></a>00087 status = pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>();
<a name="l00088"></a>00088 <span class="keywordflow">if</span> (status == 0 || status == 1|| status == 3)
<a name="l00089"></a>00089 <span class="keywordflow">break</span>;
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="keywordtype">char</span> *temp[] = {<span class="stringliteral">"receiver"</span>, NULL};
<a name="l00094"></a>00094 std::cout &lt;&lt; <span class="stringliteral">"answer to a get command:"</span> &lt;&lt; pDetector-&gt;<a class="code" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">getCommand</a>(1,temp,0) &lt;&lt; std::endl;
<a name="l00095"></a>00095
<a name="l00096"></a>00096 <span class="keyword">delete</span> pDetector;
<a name="l00097"></a>00097
<a name="l00098"></a>00098 <span class="keywordflow">return</span> 0;
<a name="l00099"></a>00099 }
<a name="l00100"></a>00100
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,132 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainClient.cpp File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainClient.cpp File Reference</h1><code>#include &lt;iostream&gt;</code><br>
<code>#include &quot;<a class="el" href="slsDetectorUsers_8h-source.html">slsDetectorUsers.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="detectorData_8h-source.html">detectorData.h</a>&quot;</code><br>
<p>
<a href="mainClient_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mainClient_8cpp.html#21ef7438e7f0ed24a190513fb8e6af8a">dataCallback</a> (<a class="el" href="classdetectorData.html">detectorData</a> *pData, int iframe, void *pArg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This file is an example of how to implement the <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> class You can compile it linking it to the slsDetector library<p>
gcc <a class="el" href="mainClient_8cpp.html">mainClient.cpp</a> -L lib -l SlsDetector -lm -lpthread<p>
where lib is the location of libSlsDetector.so
<p>
Definition in file <a class="el" href="mainClient_8cpp-source.html">mainClient.cpp</a>.<hr><h2>Function Documentation</h2>
<a class="anchor" name="21ef7438e7f0ed24a190513fb8e6af8a"></a><!-- doxytag: member="mainClient.cpp::dataCallback" ref="21ef7438e7f0ed24a190513fb8e6af8a" args="(detectorData *pData, int iframe, void *pArg)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int dataCallback </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classdetectorData.html">detectorData</a> *&nbsp;</td>
<td class="paramname"> <em>pData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>iframe</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>pArg</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Definition of the data callback which simply prints out the number of points received and teh frame number
<p>
Definition at line <a class="el" href="mainClient_8cpp-source.html#l00019">19</a> of file <a class="el" href="mainClient_8cpp-source.html">mainClient.cpp</a>.
<p>
References <a class="el" href="detectorData_8h-source.html#l00032">detectorData::npoints</a>, and <a class="el" href="detectorData_8h-source.html#l00033">detectorData::npy</a>.
<p>
Referenced by <a class="el" href="mainClient_8cpp-source.html#l00026">main()</a>.
</div>
</div><p>
<a class="anchor" name="0ddf1224851353fc92bfbff6f499fa97"></a><!-- doxytag: member="mainClient.cpp::main" ref="0ddf1224851353fc92bfbff6f499fa97" args="(int argc, char *argv[])" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
example of a main program using the <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> class
<p>
if specified, argv[2] is used as detector ID (default is 0)<p>
<a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> is instantiated<p>
if specified, argv[1] is used as detector config file (necessary at least the first time it is called to properly configure advanced settings in the shared memory)<p>
Setting the detector online (should be by default<p>
Load setup file if argv[2] specified<p>
defining the detector size<p>
registering data callback<p>
checking detector status and exiting if not idle<p>
checking and setting detector settings<p>
Settings exposure time to 10ms<p>
Settings exposure time to 100ms<p>
Settingsnumber of frames to 30<p>
start measurement<p>
returning when acquisition is finished or data are avilable
<p>
Definition at line <a class="el" href="mainClient_8cpp-source.html#l00026">26</a> of file <a class="el" href="mainClient_8cpp-source.html">mainClient.cpp</a>.
<p>
References <a class="el" href="mainClient_8cpp-source.html#l00019">dataCallback()</a>, <a class="el" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">slsDetectorUsers::getCommand()</a>, <a class="el" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">slsDetectorUsers::getDetectorDeveloper()</a>, <a class="el" href="slsDetectorUsers_8h-source.html#l00575">slsDetectorUsers::getDetectorSettings()</a>, <a class="el" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">slsDetectorUsers::getDetectorSize()</a>, <a class="el" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">slsDetectorUsers::getDetectorStatus()</a>, <a class="el" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">slsDetectorUsers::readConfigurationFile()</a>, <a class="el" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">slsDetectorUsers::registerDataCallback()</a>, <a class="el" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">slsDetectorUsers::retrieveDetectorSetup()</a>, <a class="el" href="slsDetectorUsers_8h-source.html#l00557">slsDetectorUsers::runStatusType()</a>, <a class="el" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">slsDetectorUsers::setDetectorSize()</a>, <a class="el" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">slsDetectorUsers::setExposurePeriod()</a>, <a class="el" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">slsDetectorUsers::setExposureTime()</a>, <a class="el" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">slsDetectorUsers::setNumberOfFrames()</a>, <a class="el" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">slsDetectorUsers::setOnline()</a>, <a class="el" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">slsDetectorUsers::setSettings()</a>, and <a class="el" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">slsDetectorUsers::startMeasurement()</a>.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,112 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainReceiver.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainReceiver.cpp</h1><a href="mainReceiver_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* A simple server in the internet domain using TCP</span>
<a name="l00002"></a>00002 <span class="comment"> The port number is passed as an argument </span>
<a name="l00003"></a>00003 <span class="comment">*/</span>
<a name="l00004"></a>00004
<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="slsReceiverUsers_8h.html">slsReceiverUsers.h</a>"</span>
<a name="l00019"></a>00019
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00022"></a>00022 <span class="keyword">using namespace </span>std;
<a name="l00023"></a>00023
<a name="l00024"></a>00024
<a name="l00025"></a><a class="code" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">00025</a> <span class="keywordtype">int</span> <a class="code" href="mainClient_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[]) {
<a name="l00026"></a>00026 <span class="keywordtype">int</span> ret = 0;
<a name="l00027"></a>00027
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="comment">/*</span>
<a name="l00030"></a>00030 <span class="comment"> Instantiate the slsReceieverUsers class</span>
<a name="l00031"></a>00031 <span class="comment"> The port number is passed as an argument</span>
<a name="l00032"></a>00032 <span class="comment">*/</span>
<a name="l00033"></a>00033 <a class="code" href="classslsReceiverUsers.html">slsReceiverUsers</a> *receiver = <span class="keyword">new</span> <a class="code" href="classslsReceiverUsers.html">slsReceiverUsers</a>(argc, argv, ret);
<a name="l00034"></a>00034
<a name="l00035"></a>00035 <span class="comment">/*</span>
<a name="l00036"></a>00036 <span class="comment"> return if could not open TCP socket for interfacing to client </span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038 <span class="keywordflow">if</span>(ret==1)
<a name="l00039"></a>00039 <span class="keywordflow">return</span> -1;
<a name="l00040"></a>00040
<a name="l00041"></a>00041
<a name="l00042"></a>00042 <span class="comment">/*register callbacks */</span>
<a name="l00043"></a>00043
<a name="l00044"></a>00044
<a name="l00045"></a>00045 <span class="comment">/*</span>
<a name="l00046"></a>00046 <span class="comment"> callback arguments are</span>
<a name="l00047"></a>00047 <span class="comment"> filepath</span>
<a name="l00048"></a>00048 <span class="comment"> filename</span>
<a name="l00049"></a>00049 <span class="comment"> fileindex</span>
<a name="l00050"></a>00050 <span class="comment"> datasize</span>
<a name="l00051"></a>00051 <span class="comment"> </span>
<a name="l00052"></a>00052 <span class="comment"> return value is </span>
<a name="l00053"></a>00053 <span class="comment"> 0 raw data ready callback takes care of open,close,write file</span>
<a name="l00054"></a>00054 <span class="comment"> 1 callback writes file, we have to open, close it</span>
<a name="l00055"></a>00055 <span class="comment"> 2 we open, close, write file, callback does not do anything</span>
<a name="l00056"></a>00056 <span class="comment"></span>
<a name="l00057"></a>00057 <span class="comment"></span>
<a name="l00058"></a>00058 <span class="comment"> registerCallBackStartAcquisition(int (*func)(char*, char*,int, int, void*),void *arg);</span>
<a name="l00059"></a>00059 <span class="comment"> */</span>
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="comment">//receiver-&gt;registerCallBackStartAcquisition(func,arg);</span>
<a name="l00062"></a>00062
<a name="l00063"></a>00063
<a name="l00064"></a>00064 <span class="comment">/*</span>
<a name="l00065"></a>00065 <span class="comment"> callback argument is</span>
<a name="l00066"></a>00066 <span class="comment"> total farmes caught</span>
<a name="l00067"></a>00067 <span class="comment"> registerCallBackAcquisitionFinished(void (*func)(int, void*),void *arg);</span>
<a name="l00068"></a>00068 <span class="comment"> */</span>
<a name="l00069"></a>00069
<a name="l00070"></a>00070
<a name="l00071"></a>00071 <span class="comment">//receiver-&gt;registerCallBackAcquisitionFinished(func,arg);</span>
<a name="l00072"></a>00072
<a name="l00073"></a>00073
<a name="l00074"></a>00074
<a name="l00075"></a>00075 <span class="comment">/*</span>
<a name="l00076"></a>00076 <span class="comment"> args to raw data ready callback are</span>
<a name="l00077"></a>00077 <span class="comment"> framenum</span>
<a name="l00078"></a>00078 <span class="comment"> datapointer</span>
<a name="l00079"></a>00079 <span class="comment"> file descriptor</span>
<a name="l00080"></a>00080 <span class="comment"> guidatapointer (NULL, no data required)</span>
<a name="l00081"></a>00081 <span class="comment"> </span>
<a name="l00082"></a>00082 <span class="comment"> NEVER DELETE THE DATA POINTER</span>
<a name="l00083"></a>00083 <span class="comment"> REMEMBER THAT THE CALLBACK IS BLOCKING</span>
<a name="l00084"></a>00084 <span class="comment"></span>
<a name="l00085"></a>00085 <span class="comment"> registerCallBackRawDataReady(void (*func)(int, char*, FILE*, char*, void*),void *arg);</span>
<a name="l00086"></a>00086 <span class="comment"></span>
<a name="l00087"></a>00087 <span class="comment"> */</span>
<a name="l00088"></a>00088
<a name="l00089"></a>00089 <span class="comment">//receiver-&gt;registerCallBackRawDataReady(func,arg);</span>
<a name="l00090"></a>00090
<a name="l00091"></a>00091
<a name="l00092"></a>00092 <span class="comment">/* start receiver to listen for commands from the client (and data from detectors when expected */</span>
<a name="l00093"></a>00093 receiver-&gt;<a class="code" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a>();
<a name="l00094"></a>00094
<a name="l00096"></a>00096 usleep(10000000);
<a name="l00097"></a>00097
<a name="l00099"></a>00099 receiver-&gt;<a class="code" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a>();
<a name="l00100"></a>00100
<a name="l00101"></a>00101 <span class="keywordflow">return</span> 0;
<a name="l00102"></a>00102 }
<a name="l00103"></a>00103
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,73 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>mainReceiver.cpp File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>mainReceiver.cpp File Reference</h1><code>#include &quot;<a class="el" href="slsReceiverUsers_8h-source.html">slsReceiverUsers.h</a>&quot;</code><br>
<code>#include &lt;iostream&gt;</code><br>
<p>
<a href="mainReceiver_8cpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="mainReceiver_8cpp.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This file is an example of how to implement the <a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a> class You can compile it linking it to the slsDetector library<p>
gcc <a class="el" href="mainReceiver_8cpp.html">mainReceiver.cpp</a> -L lib -l SlsDetector -lm -lpthread<p>
where lib is the location of libSlsDetector.so
<p>
Definition in file <a class="el" href="mainReceiver_8cpp-source.html">mainReceiver.cpp</a>.<hr><h2>Function Documentation</h2>
<a class="anchor" name="0ddf1224851353fc92bfbff6f499fa97"></a><!-- doxytag: member="mainReceiver.cpp::main" ref="0ddf1224851353fc92bfbff6f499fa97" args="(int argc, char *argv[])" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>argv</em>[]</td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<p>
Definition at line <a class="el" href="mainReceiver_8cpp-source.html#l00025">25</a> of file <a class="el" href="mainReceiver_8cpp-source.html">mainReceiver.cpp</a>.
<p>
References <a class="el" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">slsReceiverUsers::start()</a>, and <a class="el" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">slsReceiverUsers::stop()</a>.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,22 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Namespace Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<h1>Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespacestd.html">std</a></td><td class="indexvalue"></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,24 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>std Namespace Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li id="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul></div>
<h1>std Namespace Reference</h1>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,258 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsDetectorUsers.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsDetectorUsers.h</h1><a href="slsDetectorUsers_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef SLS_DETECTOR_USERS_H</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define SLS_DETECTOR_USERS_H</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004
<a name="l00005"></a>00005
<a name="l00016"></a>00016 <span class="keyword">class </span><a class="code" href="classdetectorData.html">detectorData</a>;
<a name="l00017"></a>00017 <span class="keyword">class </span>multiSlsDetector;
<a name="l00018"></a>00018 <span class="keyword">class </span>multiSlsDetectorCommand;
<a name="l00019"></a>00019
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;stdint.h&gt;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;string&gt;</span>
<a name="l00023"></a>00023
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="keyword">using namespace </span>std;
<a name="l00026"></a>00026
<a name="l00027"></a>00027
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="comment">/*</span>
<a name="l00030"></a>00030 <span class="comment"> \mainpage </span>
<a name="l00031"></a>00031 <span class="comment">&lt;CENTER&gt;&lt;H1&gt;API for SLS detectors data acquisition&lt;/H1&gt;&lt;/CENTER&gt;</span>
<a name="l00032"></a>00032 <span class="comment">&lt;HR&gt;</span>
<a name="l00033"></a>00033 <span class="comment">*/</span>
<a name="l00084"></a><a class="code" href="classslsDetectorUsers.html">00084</a> <span class="keyword">class </span><a class="code" href="classslsDetectorUsers.html">slsDetectorUsers</a>
<a name="l00085"></a>00085 {
<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="keyword">public</span>:
<a name="l00088"></a>00088
<a name="l00090"></a>00090 <a class="code" href="classslsDetectorUsers.html#17323cd635b9e5c2916be3ca30ec748c">slsDetectorUsers</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>=0);
<a name="l00091"></a>00091
<a name="l00092"></a>00092
<a name="l00094"></a>00094 <span class="keyword">virtual</span> <a class="code" href="classslsDetectorUsers.html#0d1daf6539befe56d6e3df0b24f5d68b">~slsDetectorUsers</a>();
<a name="l00095"></a>00095
<a name="l00096"></a>00096
<a name="l00097"></a>00097
<a name="l00102"></a>00102 string <a class="code" href="classslsDetectorUsers.html#30c2ba51c33cc914f290a0b7891da4ec">getDetectorDeveloper</a>();
<a name="l00103"></a>00103
<a name="l00104"></a>00104
<a name="l00105"></a>00105
<a name="l00110"></a>00110 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#ee622153ebd6b0dad065d95b07221955">setOnline</a>(<span class="keywordtype">int</span> <span class="keyword">const</span> online=-1);
<a name="l00111"></a>00111
<a name="l00116"></a>00116 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#a34810bb0e872fdf929ebe62d8582bd3">startMeasurement</a>();
<a name="l00117"></a>00117
<a name="l00122"></a>00122 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#2abc673c45c1fe006f6b0fea6188e3a9">stopMeasurement</a>();
<a name="l00123"></a>00123
<a name="l00128"></a>00128 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#c7d0254e38b8fe783204f691a4ee05b2">getDetectorStatus</a>();
<a name="l00129"></a>00129
<a name="l00133"></a>00133 string <a class="code" href="classslsDetectorUsers.html#81969295c2b08f14e9c3d4fa1f7d4e16">getFilePath</a>();
<a name="l00134"></a>00134
<a name="l00140"></a>00140 string <a class="code" href="classslsDetectorUsers.html#d833e1051299e101a5b5097c598ba9cb">setFilePath</a>(string s);
<a name="l00141"></a>00141
<a name="l00146"></a>00146 string <a class="code" href="classslsDetectorUsers.html#5f30c83e8bf07a92fad0916d43e3799c">getFileName</a>();
<a name="l00147"></a>00147
<a name="l00154"></a>00154 string <a class="code" href="classslsDetectorUsers.html#ff4a8ff4852e50d4ec05204cbc7fea9e">setFileName</a>(string s);
<a name="l00155"></a>00155
<a name="l00160"></a>00160 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#6e3467bf3c0c246f69f85d485d84dd62">getFileIndex</a>();
<a name="l00161"></a>00161
<a name="l00167"></a>00167 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#6b92ea7e237c77aa5107d7aabf76fe2d">setFileIndex</a>(<span class="keywordtype">int</span> i);
<a name="l00168"></a>00168
<a name="l00173"></a>00173 string <a class="code" href="classslsDetectorUsers.html#0b20511a94205abd689f31bd1a2d4c18">getFlatFieldCorrectionDir</a>();
<a name="l00174"></a>00174
<a name="l00180"></a>00180 string <a class="code" href="classslsDetectorUsers.html#65b112dac3d8b94f219f4d64c13cf0f9">setFlatFieldCorrectionDir</a>(string dir);
<a name="l00181"></a>00181
<a name="l00186"></a>00186 string <a class="code" href="classslsDetectorUsers.html#a83083f73523557e6129f33b59f38327">getFlatFieldCorrectionFile</a>();
<a name="l00187"></a>00187
<a name="l00193"></a>00193 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#ad9e6da8683ba2887174505fd3b7d739">setFlatFieldCorrectionFile</a>(string fname=<span class="stringliteral">""</span>);
<a name="l00194"></a>00194
<a name="l00195"></a>00195
<a name="l00196"></a>00196
<a name="l00202"></a>00202 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#94c74499f7653116cd8aff9ec0d14c43">enableFlatFieldCorrection</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00203"></a>00203
<a name="l00209"></a>00209 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#82efe2f57758d63d330d78b121f8e77e">enableCountRateCorrection</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00210"></a>00210
<a name="l00216"></a>00216 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#e5bc1c9c8e7e6cb7c9cde06a3133d263">enablePixelMaskCorrection</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00217"></a>00217
<a name="l00223"></a>00223 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#51f92b69e05e8ee2e0c547ec4a6e97da">enableAngularConversion</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00224"></a>00224
<a name="l00227"></a>00227 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#6d54a79ae4cfdb808f5db9969537efd3">enableWriteToFile</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00228"></a>00228
<a name="l00235"></a>00235 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#f296c05ee6134fb8d53d08a025e89775">setPositions</a>(<span class="keywordtype">int</span> nPos, <span class="keywordtype">double</span> *pos);
<a name="l00236"></a>00236
<a name="l00242"></a>00242 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#e6e5f06995e3ef110824adc5f8b095e9">getPositions</a>(<span class="keywordtype">double</span> *pos=NULL);
<a name="l00243"></a>00243
<a name="l00252"></a>00252 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#42c97d03516a2457f8e9a98a16a9a43d">setDetectorSize</a>(<span class="keywordtype">int</span> x0=-1, <span class="keywordtype">int</span> y0=-1, <span class="keywordtype">int</span> nx=-1, <span class="keywordtype">int</span> ny=-1);
<a name="l00253"></a>00253
<a name="l00254"></a>00254
<a name="l00263"></a>00263 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#7f4fb3cefff5f0175cd2e4fd57ee1be4">getDetectorSize</a>(<span class="keywordtype">int</span> &amp;x0, <span class="keywordtype">int</span> &amp;y0, <span class="keywordtype">int</span> &amp;nx, <span class="keywordtype">int</span> &amp;ny);
<a name="l00272"></a>00272 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#588a5e1d231cd6778f6f78fdc53b9681">getMaximumDetectorSize</a>(<span class="keywordtype">int</span> &amp;nx, <span class="keywordtype">int</span> &amp;ny);
<a name="l00273"></a>00273
<a name="l00274"></a>00274
<a name="l00280"></a>00280 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#ff667cf0665154cdff5d5f3dbc3526ba">setBitDepth</a>(<span class="keywordtype">int</span> i=-1);
<a name="l00281"></a>00281
<a name="l00282"></a>00282
<a name="l00283"></a>00283
<a name="l00289"></a>00289 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#31b25d2659d3b244bb10b5516a9fd957">setSettings</a>(<span class="keywordtype">int</span> isettings=-1);
<a name="l00290"></a>00290
<a name="l00295"></a>00295 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#fe8029788742125c44383817f89214ca">getThresholdEnergy</a>();
<a name="l00296"></a>00296
<a name="l00297"></a>00297
<a name="l00303"></a>00303 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#1354266fd1bfaccd58992a3f51bbbd1d">setThresholdEnergy</a>(<span class="keywordtype">int</span> e_eV);
<a name="l00304"></a>00304
<a name="l00309"></a>00309 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#c9ea028f75a180534c8d00eeea0727d3">getBeamEnergy</a>();
<a name="l00310"></a>00310
<a name="l00311"></a>00311
<a name="l00317"></a>00317 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#475938986407804877df4dcece97cc19">setBeamEnergy</a>(<span class="keywordtype">int</span> e_eV);
<a name="l00318"></a>00318
<a name="l00326"></a>00326 <span class="keywordtype">double</span> <a class="code" href="classslsDetectorUsers.html#134225893d41bc97e9f1d645e035a04a">setExposureTime</a>(<span class="keywordtype">double</span> t=-1, <span class="keywordtype">bool</span> inseconds=<span class="keyword">false</span>);
<a name="l00327"></a>00327
<a name="l00334"></a>00334 <span class="keywordtype">double</span> <a class="code" href="classslsDetectorUsers.html#cac89084aba58ebe81420c7c9ac4217a">setExposurePeriod</a>(<span class="keywordtype">double</span> t=-1, <span class="keywordtype">bool</span> inseconds=<span class="keyword">false</span>);
<a name="l00335"></a>00335
<a name="l00342"></a>00342 <span class="keywordtype">double</span> <a class="code" href="classslsDetectorUsers.html#99f67fab7edfe68cc8b2300e282ff3f2">setDelayAfterTrigger</a>(<span class="keywordtype">double</span> t=-1, <span class="keywordtype">bool</span> inseconds=<span class="keyword">false</span>);
<a name="l00343"></a>00343
<a name="l00349"></a>00349 int64_t <a class="code" href="classslsDetectorUsers.html#61d4acb00c997c5e02be6a191401c4ce">setNumberOfGates</a>(int64_t t=-1);
<a name="l00350"></a>00350
<a name="l00356"></a>00356 int64_t <a class="code" href="classslsDetectorUsers.html#fc82f608bf74d10f3aa866bff94cbbab">setNumberOfFrames</a>(int64_t t=-1);
<a name="l00357"></a>00357
<a name="l00363"></a>00363 int64_t <a class="code" href="classslsDetectorUsers.html#8b741851c4eaef4e29322c99fd17cb3b">setNumberOfCycles</a>(int64_t t=-1);
<a name="l00364"></a>00364
<a name="l00365"></a>00365
<a name="l00371"></a>00371 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#e2825524756c4bdf418a6233e137b4d7">setTimingMode</a>(<span class="keywordtype">int</span> pol=-1);
<a name="l00372"></a>00372
<a name="l00378"></a>00378 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#8aeda7c2cbc270c7f8756761823e8d95">readConfigurationFile</a>(string <span class="keyword">const</span> fname);
<a name="l00379"></a>00379
<a name="l00380"></a>00380
<a name="l00387"></a>00387 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#d6b968f4d520342324762c496ebeb481">dumpDetectorSetup</a>(string <span class="keyword">const</span> fname);
<a name="l00394"></a>00394 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#8769c8ea5020b43dc3557c86f9e4159b">retrieveDetectorSetup</a>(string <span class="keyword">const</span> fname);
<a name="l00395"></a>00395
<a name="l00400"></a>00400 string <a class="code" href="classslsDetectorUsers.html#5292a3d9c12696512b81bcc6c579a03c">getDetectorType</a>();
<a name="l00401"></a>00401
<a name="l00407"></a>00407 <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#db084473ffe61960b86abdfa8efcc80d">setReceiverMode</a>(<span class="keywordtype">int</span> n=-1);
<a name="l00408"></a>00408
<a name="l00414"></a>00414 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#4a1db91fc49fc1710f98ce98e33bc16b">registerDataCallback</a>(<span class="keywordtype">int</span>( *userCallback)(<a class="code" href="classdetectorData.html">detectorData</a>* d, <span class="keywordtype">int</span> f, <span class="keywordtype">void</span>*), <span class="keywordtype">void</span> *pArg);
<a name="l00415"></a>00415
<a name="l00421"></a>00421 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#898cf0db148f0d3de7d4725cc8342c56">registerRawDataCallback</a>(<span class="keywordtype">int</span>( *userCallback)(<span class="keywordtype">double</span>* p, <span class="keywordtype">int</span> n, <span class="keywordtype">void</span>*), <span class="keywordtype">void</span> *pArg);
<a name="l00422"></a>00422
<a name="l00428"></a>00428 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#56fa8890298a01fc58baad413dfdf1c1">initDataset</a>(<span class="keywordtype">int</span> refresh);
<a name="l00429"></a>00429
<a name="l00430"></a>00430
<a name="l00441"></a>00441 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#5128e295a5b926ccabdb48083d324789">addFrame</a>(<span class="keywordtype">double</span> *data, <span class="keywordtype">double</span> pos, <span class="keywordtype">double</span> i0, <span class="keywordtype">double</span> t, string fname, <span class="keywordtype">double</span> var);
<a name="l00442"></a>00442
<a name="l00451"></a>00451 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#9cbe00dac8a19b71de88ebbdf3b0ea29">finalizeDataset</a>(<span class="keywordtype">double</span> *a, <span class="keywordtype">double</span> *v, <span class="keywordtype">double</span> *e, <span class="keywordtype">int</span> &amp;np);
<a name="l00452"></a>00452
<a name="l00457"></a>00457 int64_t <a class="code" href="classslsDetectorUsers.html#09ded3b9c81e4544d42bb0697c3b7624">getModuleFirmwareVersion</a>();
<a name="l00458"></a>00458
<a name="l00464"></a>00464 int64_t <a class="code" href="classslsDetectorUsers.html#5c0e9f8836e1a8a2d986408e4f5dfd3b">getModuleSerialNumber</a>(<span class="keywordtype">int</span> imod=-1);
<a name="l00465"></a>00465
<a name="l00470"></a>00470 int64_t <a class="code" href="classslsDetectorUsers.html#2cbba4518b585064f7870ae2d39a8b8b">getDetectorFirmwareVersion</a>();
<a name="l00471"></a>00471
<a name="l00476"></a>00476 int64_t <a class="code" href="classslsDetectorUsers.html#1c79314ceeda9b3085ca118e25882669">getDetectorSerialNumber</a>();
<a name="l00477"></a>00477
<a name="l00482"></a>00482 int64_t <a class="code" href="classslsDetectorUsers.html#1857f2afea58227cb96ad92f5e562a5e">getDetectorSoftwareVersion</a>();
<a name="l00483"></a>00483
<a name="l00488"></a>00488 int64_t <a class="code" href="classslsDetectorUsers.html#547feb09262a2f0fa1ec4de82e92ab63">getThisSoftwareVersion</a>();
<a name="l00489"></a>00489
<a name="l00495"></a>00495 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#2a85e28ff08e3ec1e08bea3ba7d0fb08">registerAcquisitionFinishedCallback</a>(<span class="keywordtype">int</span>( *func)(<span class="keywordtype">double</span>,<span class="keywordtype">int</span>, <span class="keywordtype">void</span>*), <span class="keywordtype">void</span> *pArg);
<a name="l00496"></a>00496
<a name="l00502"></a>00502 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#c2b87416288e657a209e1374c778eb16">registerGetPositionCallback</a>( <span class="keywordtype">double</span> (*func)(<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00507"></a>00507 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#d1ab73675435879c2c5cef7adab02c32">registerConnectChannelsCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00512"></a>00512 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#a94dd8fce8548ba8e79201ec50fe27d6">registerDisconnectChannelsCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00517"></a>00517 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#0f7c9bd3c46647d5dda2fa5312f3ef92">registerGoToPositionCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">double</span>,<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00522"></a>00522 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#e807e9f4a015a4bbcb22e36b80577ea5">registerGoToPositionNoWaitCallback</a>( <span class="keywordtype">int</span> (*func)(<span class="keywordtype">double</span>,<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00527"></a>00527 <span class="keywordtype">void</span> <a class="code" href="classslsDetectorUsers.html#1969785197030aa8e2d3c3d48a9cb45c">registerGetI0Callback</a>( <span class="keywordtype">double</span> (*func)(<span class="keywordtype">int</span>,<span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00528"></a>00528
<a name="l00536"></a>00536 string <a class="code" href="classslsDetectorUsers.html#5f7c26833decef59c1abfd7d745c4671">putCommand</a>(<span class="keywordtype">int</span> narg, <span class="keywordtype">char</span> *args[], <span class="keywordtype">int</span> pos=-1);
<a name="l00537"></a>00537
<a name="l00545"></a>00545 string <a class="code" href="classslsDetectorUsers.html#dc83b8005abccc735b35464c1c6d3ea7">getCommand</a>(<span class="keywordtype">int</span> narg, <span class="keywordtype">char</span> *args[], <span class="keywordtype">int</span> pos=-1);
<a name="l00546"></a>00546
<a name="l00547"></a>00547 <span class="comment">/************************************************************************</span>
<a name="l00548"></a>00548 <span class="comment"></span>
<a name="l00549"></a>00549 <span class="comment"> STATIC FUNCTIONS</span>
<a name="l00550"></a>00550 <span class="comment"></span>
<a name="l00551"></a>00551 <span class="comment"> *********************************************************************/</span>
<a name="l00552"></a>00552
<a name="l00557"></a><a class="code" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">00557</a> <span class="keyword">static</span> string <a class="code" href="classslsDetectorUsers.html#2c073513ae3ac53f3e040bc2911b6ee2">runStatusType</a>(<span class="keywordtype">int</span> s){ \
<a name="l00558"></a>00558 <span class="keywordflow">switch</span> (s) { \
<a name="l00559"></a>00559 <span class="keywordflow">case</span> 0: <span class="keywordflow">return</span> string(<span class="stringliteral">"idle"</span>); \
<a name="l00560"></a>00560 <span class="keywordflow">case</span> 1: <span class="keywordflow">return</span> string(<span class="stringliteral">"error"</span>); \
<a name="l00561"></a>00561 <span class="keywordflow">case</span> 2: <span class="keywordflow">return</span> string(<span class="stringliteral">"waiting"</span>); \
<a name="l00562"></a>00562 <span class="keywordflow">case</span> 3: <span class="keywordflow">return</span> string(<span class="stringliteral">"finished"</span>); \
<a name="l00563"></a>00563 <span class="keywordflow">case</span> 4: <span class="keywordflow">return</span> string(<span class="stringliteral">"data"</span>); \
<a name="l00564"></a>00564 <span class="keywordflow">case</span> 5: <span class="keywordflow">return</span> string(<span class="stringliteral">"running"</span>); \
<a name="l00565"></a>00565 <span class="keywordflow">default</span>: <span class="keywordflow">return</span> string(<span class="stringliteral">"unknown"</span>); \
<a name="l00566"></a>00566 }};
<a name="l00567"></a>00567
<a name="l00568"></a>00568
<a name="l00569"></a>00569
<a name="l00575"></a><a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">00575</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">getDetectorSettings</a>(string s){ \
<a name="l00576"></a>00576 <span class="keywordflow">if</span> (s==<span class="stringliteral">"standard"</span>) <span class="keywordflow">return</span> 0; \
<a name="l00577"></a>00577 <span class="keywordflow">if</span> (s==<span class="stringliteral">"fast"</span>) <span class="keywordflow">return</span> 1; \
<a name="l00578"></a>00578 <span class="keywordflow">if</span> (s==<span class="stringliteral">"highgain"</span>) <span class="keywordflow">return</span> 2; \
<a name="l00579"></a>00579 <span class="keywordflow">if</span> (s==<span class="stringliteral">"dynamicgain"</span>) <span class="keywordflow">return</span> 3; \
<a name="l00580"></a>00580 <span class="keywordflow">if</span> (s==<span class="stringliteral">"lowgain"</span>) <span class="keywordflow">return</span> 4; \
<a name="l00581"></a>00581 <span class="keywordflow">if</span> (s==<span class="stringliteral">"mediumgain"</span>) <span class="keywordflow">return</span> 5; \
<a name="l00582"></a>00582 <span class="keywordflow">if</span> (s==<span class="stringliteral">"veryhighgain"</span>) <span class="keywordflow">return</span> 6; \
<a name="l00583"></a>00583 <span class="keywordflow">return</span> -1; };
<a name="l00584"></a>00584
<a name="l00589"></a><a class="code" href="classslsDetectorUsers.html#a66defec09b568a514e57b444dbe0d7f">00589</a> <span class="keyword">static</span> string <a class="code" href="classslsDetectorUsers.html#7f2e97b2fa0e106b364c9c200a5d74ad">getDetectorSettings</a>(<span class="keywordtype">int</span> s){\
<a name="l00590"></a>00590 <span class="keywordflow">switch</span>(s) { \
<a name="l00591"></a>00591 <span class="keywordflow">case</span> 0: <span class="keywordflow">return</span> string(<span class="stringliteral">"standard"</span>);\
<a name="l00592"></a>00592 <span class="keywordflow">case</span> 1: <span class="keywordflow">return</span> string(<span class="stringliteral">"fast"</span>);\
<a name="l00593"></a>00593 <span class="keywordflow">case</span> 2: <span class="keywordflow">return</span> string(<span class="stringliteral">"highgain"</span>);\
<a name="l00594"></a>00594 <span class="keywordflow">case</span> 3: <span class="keywordflow">return</span> string(<span class="stringliteral">"dynamicgain"</span>); \
<a name="l00595"></a>00595 <span class="keywordflow">case</span> 4: <span class="keywordflow">return</span> string(<span class="stringliteral">"lowgain"</span>); \
<a name="l00596"></a>00596 <span class="keywordflow">case</span> 5: <span class="keywordflow">return</span> string(<span class="stringliteral">"mediumgain"</span>); \
<a name="l00597"></a>00597 <span class="keywordflow">case</span> 6: <span class="keywordflow">return</span> string(<span class="stringliteral">"veryhighgain"</span>); \
<a name="l00598"></a>00598 <span class="keywordflow">default</span>: <span class="keywordflow">return</span> string(<span class="stringliteral">"undefined"</span>); \
<a name="l00599"></a>00599 }};
<a name="l00600"></a>00600
<a name="l00601"></a>00601
<a name="l00602"></a>00602
<a name="l00609"></a><a class="code" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">00609</a> <span class="keyword">static</span> string <a class="code" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">getTimingMode</a>(<span class="keywordtype">int</span> f){ \
<a name="l00610"></a>00610 <span class="keywordflow">switch</span>(f) { \
<a name="l00611"></a>00611 <span class="keywordflow">case</span> 0: <span class="keywordflow">return</span> string( <span class="stringliteral">"auto"</span>); \
<a name="l00612"></a>00612 <span class="keywordflow">case</span> 1: <span class="keywordflow">return</span> string(<span class="stringliteral">"trigger"</span>); \
<a name="l00613"></a>00613 <span class="keywordflow">case</span> 2: <span class="keywordflow">return</span> string(<span class="stringliteral">"ro_trigger"</span>); \
<a name="l00614"></a>00614 <span class="keywordflow">case</span> 3: <span class="keywordflow">return</span> string(<span class="stringliteral">"gating"</span>); \
<a name="l00615"></a>00615 <span class="keywordflow">case</span> 4: <span class="keywordflow">return</span> string(<span class="stringliteral">"triggered_gating"</span>); \
<a name="l00616"></a>00616 <span class="keywordflow">default</span>: <span class="keywordflow">return</span> string( <span class="stringliteral">"unknown"</span>); \
<a name="l00617"></a>00617 } };
<a name="l00618"></a>00618
<a name="l00625"></a><a class="code" href="classslsDetectorUsers.html#e88a9626e4e661c1c0e1d27ba4a57d50">00625</a> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classslsDetectorUsers.html#420880726f4036bf9da83edfcb2d6cf0">getTimingMode</a>(string s){ \
<a name="l00626"></a>00626 <span class="keywordflow">if</span> (s== <span class="stringliteral">"auto"</span>) <span class="keywordflow">return</span> 0; \
<a name="l00627"></a>00627 <span class="keywordflow">if</span> (s== <span class="stringliteral">"trigger"</span>) <span class="keywordflow">return</span> 1; \
<a name="l00628"></a>00628 <span class="keywordflow">if</span> (s== <span class="stringliteral">"ro_trigger"</span>) <span class="keywordflow">return</span> 2; \
<a name="l00629"></a>00629 <span class="keywordflow">if</span> (s== <span class="stringliteral">"gating"</span>) <span class="keywordflow">return</span> 3; \
<a name="l00630"></a>00630 <span class="keywordflow">if</span> (s== <span class="stringliteral">"triggered_gating"</span>) <span class="keywordflow">return</span> 4; \
<a name="l00631"></a>00631 <span class="keywordflow">return</span> -1; };
<a name="l00632"></a>00632
<a name="l00633"></a>00633 <span class="keyword">private</span>:
<a name="l00634"></a>00634 multiSlsDetector *myDetector;
<a name="l00635"></a>00635 multiSlsDetectorCommand *myCmd;
<a name="l00636"></a>00636 };
<a name="l00637"></a>00637
<a name="l00638"></a>00638 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,38 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsDetectorUsers.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsDetectorUsers.h File Reference</h1><code>#include &lt;stdint.h&gt;</code><br>
<code>#include &lt;string&gt;</code><br>
<p>
<a href="slsDetectorUsers_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsDetectorUsers.html">slsDetectorUsers</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc. <a href="classslsDetectorUsers.html#_details">More...</a><br></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,64 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsReceiverUsers.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers.h</h1><a href="slsReceiverUsers_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00002"></a>00002 <span class="preprocessor">#ifndef SLS_RECEIVER_USERS_H</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#define SLS_RECEIVER_USERS_H</span>
<a name="l00004"></a>00004 <span class="preprocessor"></span>
<a name="l00005"></a>00005 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include &lt;stdint.h&gt;</span>
<a name="l00007"></a>00007
<a name="l00008"></a>00008 <span class="keyword">class </span>slsReceiverTCPIPInterface;
<a name="l00009"></a>00009
<a name="l00021"></a><a class="code" href="classslsReceiverUsers.html">00021</a> <span class="keyword">class </span><a class="code" href="classslsReceiverUsers.html">slsReceiverUsers</a> {
<a name="l00022"></a>00022
<a name="l00023"></a>00023 <span class="keyword">public</span>:
<a name="l00031"></a>00031 <a class="code" href="classslsReceiverUsers.html#79a82ba94fbb19761c7701aa3901b8b1">slsReceiverUsers</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[], <span class="keywordtype">int</span> &amp;success);
<a name="l00032"></a>00032
<a name="l00033"></a>00033
<a name="l00035"></a>00035 <a class="code" href="classslsReceiverUsers.html#9b45943d81ce7a09543aa446de857cb0">~slsReceiverUsers</a>();
<a name="l00036"></a>00036
<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#bad0b3265826da2d9ebf48e59e9d5787">closeFile</a>(<span class="keywordtype">int</span> p);
<a name="l00039"></a>00039
<a name="l00044"></a>00044 <span class="keywordtype">int</span> <a class="code" href="classslsReceiverUsers.html#ef40b4987367b8a0116bcb66534dd7b7">start</a>();
<a name="l00045"></a>00045
<a name="l00047"></a>00047 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#394001d873a4b7912865a971d4d25f87">stop</a>();
<a name="l00048"></a>00048
<a name="l00053"></a>00053 int64_t <a class="code" href="classslsReceiverUsers.html#f206092e2744e12ce6b717f4181d91a2">getReceiverVersion</a>();
<a name="l00054"></a>00054
<a name="l00064"></a>00064 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#5d4bb9244008d0bc570778230d30c5e3">registerCallBackStartAcquisition</a>(<span class="keywordtype">int</span> (*func)(<span class="keywordtype">char</span>* filepath, <span class="keywordtype">char</span>* filename,<span class="keywordtype">int</span> fileindex, <span class="keywordtype">int</span> datasize, <span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00065"></a>00065
<a name="l00066"></a>00066
<a name="l00074"></a>00074 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#7471d2945e8650eece86258e6ca56156">registerCallBackAcquisitionFinished</a>(<span class="keywordtype">void</span> (*func)(<span class="keywordtype">int</span> nf, <span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00075"></a>00075
<a name="l00076"></a>00076
<a name="l00077"></a>00077
<a name="l00084"></a>00084 <span class="keywordtype">void</span> <a class="code" href="classslsReceiverUsers.html#343b9fac505e8c08a7fbf9efdd0f5762">registerCallBackRawDataReady</a>(<span class="keywordtype">void</span> (*func)(<span class="keywordtype">int</span> framenumber, <span class="keywordtype">char</span>* datapointer, <span class="keywordtype">int</span> datasize, FILE* filedescriptor, <span class="keywordtype">char</span>* guidatapointer, <span class="keywordtype">void</span>*),<span class="keywordtype">void</span> *arg);
<a name="l00085"></a>00085
<a name="l00086"></a>00086 <span class="comment">// made static to close thread files with ctrl+c</span>
<a name="l00087"></a><a class="code" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">00087</a> <span class="keyword">static</span> slsReceiverTCPIPInterface* <a class="code" href="classslsReceiverUsers.html#8f262724fb99ecd3976214710d82dd18">receiver</a>;
<a name="l00088"></a>00088 };
<a name="l00089"></a>00089
<a name="l00090"></a>00090
<a name="l00091"></a>00091 <span class="preprocessor">#endif</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

View File

@ -0,0 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>slsReceiverUsers.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>slsReceiverUsers.h File Reference</h1><code>#include &lt;stdio.h&gt;</code><br>
<code>#include &lt;stdint.h&gt;</code><br>
<p>
<a href="slsReceiverUsers_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classslsReceiverUsers.html">slsReceiverUsers</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data. <a href="classslsReceiverUsers.html#_details">More...</a><br></td></tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon May 26 17:07:05 2014 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,102 @@
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
DIV.tabs
{
float : left;
width : 100%;
background : url("tab_b.gif") repeat-x bottom;
margin-bottom : 4px;
}
DIV.tabs UL
{
margin : 0px;
padding-left : 10px;
list-style : none;
}
DIV.tabs LI, DIV.tabs FORM
{
display : inline;
margin : 0px;
padding : 0px;
}
DIV.tabs FORM
{
float : right;
}
DIV.tabs A
{
float : left;
background : url("tab_r.gif") no-repeat right top;
border-bottom : 1px solid #84B0C7;
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
DIV.tabs A:hover
{
background-position: 100% -150px;
}
DIV.tabs A:link, DIV.tabs A:visited,
DIV.tabs A:active, DIV.tabs A:hover
{
color: #1A419D;
}
DIV.tabs SPAN
{
float : left;
display : block;
background : url("tab_l.gif") no-repeat left top;
padding : 5px 9px;
white-space : nowrap;
}
DIV.tabs INPUT
{
float : right;
display : inline;
font-size : 1em;
}
DIV.tabs TD
{
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
/* Commented Backslash Hack hides rule from IE5-Mac \*/
DIV.tabs SPAN {float : none;}
/* End IE5-Mac hack */
DIV.tabs A:hover SPAN
{
background-position: 0% -150px;
}
DIV.tabs LI#current A
{
background-position: 100% -150px;
border-width : 0px;
}
DIV.tabs LI#current SPAN
{
background-position: 0% -150px;
padding-bottom : 6px;
}
DIV.nav
{
background : none;
border : none;
border-bottom : 1px solid #84B0C7;
}

View File

@ -0,0 +1,17 @@
all: clean refman.pdf
refman.pdf: refman.tex
pdflatex refman.tex
makeindex refman.idx
pdflatex refman.tex
latex_count=5 ; \
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
do \
echo "Rerunning latex...." ;\
pdflatex refman.tex ;\
latex_count=`expr $$latex_count - 1` ;\
done
clean:
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf

View File

@ -0,0 +1,6 @@
\subsection{Class List}
Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList}
\item\contentsline{section}{\hyperlink{classdetectorData}{detector\-Data} (Data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) )}{\pageref{classdetectorData}}{}
\item\contentsline{section}{\hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} (Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc )}{\pageref{classslsDetectorUsers}}{}
\item\contentsline{section}{\hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users} (Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data )}{\pageref{classslsReceiverUsers}}{}
\end{CompactList}

View File

@ -0,0 +1,171 @@
\hypertarget{classdetectorData}{
\subsection{detector\-Data Class Reference}
\label{classdetectorData}\index{detectorData@{detectorData}}
}
data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
{\tt \#include $<$detector\-Data.h$>$}
\subsubsection*{Public Member Functions}
\begin{CompactItemize}
\item
\hyperlink{classdetectorData_3f8538f5f634295fc40682b8aed47b31}{detector\-Data} (double $\ast$val=NULL, double $\ast$err=NULL, double $\ast$ang=NULL, double p\_\-ind=-1, const char $\ast$fname=\char`\"{}\char`\"{}, int np=-1, int ny=1)
\begin{CompactList}\small\item\em The constructor. \item\end{CompactList}\item
\hyperlink{classdetectorData_d32a037cc2bd6e8caf4556cbd4b88ec7}{$\sim$detector\-Data} ()
\begin{CompactList}\small\item\em The destructor deletes also the arrays pointing to data/errors/angles if not NULL. \item\end{CompactList}\end{CompactItemize}
\subsubsection*{Public Attributes}
\begin{CompactItemize}
\item
double $\ast$ \hyperlink{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}{values}
\begin{CompactList}\small\item\em pointer to the data \item\end{CompactList}\item
double $\ast$ \hyperlink{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}{errors}
\begin{CompactList}\small\item\em pointer to the errors \item\end{CompactList}\item
double $\ast$ \hyperlink{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}{angles}
\begin{CompactList}\small\item\em pointer to the angles (NULL if no angular conversion) \item\end{CompactList}\item
double \hyperlink{classdetectorData_976b3287d46aed032487bbeed74132da}{progress\-Index}
\begin{CompactList}\small\item\em file index \item\end{CompactList}\item
char \hyperlink{classdetectorData_91d1e3466878def295a531c01bdeef6b}{file\-Name} \mbox{[}1000\mbox{]}
\begin{CompactList}\small\item\em file name \item\end{CompactList}\item
int \hyperlink{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}{npoints}
\begin{CompactList}\small\item\em number of points \item\end{CompactList}\item
int \hyperlink{classdetectorData_c289d259e7fd9445a9c04976a82cb324}{npy}
\begin{CompactList}\small\item\em dimensions in y coordinate \item\end{CompactList}\end{CompactItemize}
\subsubsection{Detailed Description}
data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
Definition at line 9 of file detector\-Data.h.
\subsubsection{Constructor \& Destructor Documentation}
\hypertarget{classdetectorData_3f8538f5f634295fc40682b8aed47b31}{
\index{detectorData@{detector\-Data}!detectorData@{detectorData}}
\index{detectorData@{detectorData}!detectorData@{detector\-Data}}
\paragraph[detectorData]{\setlength{\rightskip}{0pt plus 5cm}detector\-Data::detector\-Data (double $\ast$ {\em val} = {\tt NULL}, double $\ast$ {\em err} = {\tt NULL}, double $\ast$ {\em ang} = {\tt NULL}, double {\em p\_\-ind} = {\tt -1}, const char $\ast$ {\em fname} = {\tt \char`\"{}\char`\"{}}, int {\em np} = {\tt -1}, int {\em ny} = {\tt 1})\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}\hfill}
\label{classdetectorData_3f8538f5f634295fc40682b8aed47b31}
The constructor.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em val}]pointer to the data \item[{\em err}]pointer to errors \item[{\em ang}]pointer to the angles \item[{\em f\_\-ind}]file index \item[{\em fname}]file name to which the data are saved \item[{\em np}]number of points in x coordinate defaults to the number of detector channels (1D detector) \item[{\em ny}]dimension in y (1D detector) \end{description}
\end{Desc}
Definition at line 20 of file detector\-Data.h.
References file\-Name.\hypertarget{classdetectorData_d32a037cc2bd6e8caf4556cbd4b88ec7}{
\index{detectorData@{detector\-Data}!~detectorData@{$\sim$detectorData}}
\index{~detectorData@{$\sim$detectorData}!detectorData@{detector\-Data}}
\paragraph[$\sim$detectorData]{\setlength{\rightskip}{0pt plus 5cm}detector\-Data::$\sim$detector\-Data ()\hspace{0.3cm}{\tt \mbox{[}inline\mbox{]}}}\hfill}
\label{classdetectorData_d32a037cc2bd6e8caf4556cbd4b88ec7}
The destructor deletes also the arrays pointing to data/errors/angles if not NULL.
Definition at line 25 of file detector\-Data.h.
References angles, errors, and values.
\subsubsection{Member Data Documentation}
\hypertarget{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}{
\index{detectorData@{detector\-Data}!angles@{angles}}
\index{angles@{angles}!detectorData@{detector\-Data}}
\paragraph[angles]{\setlength{\rightskip}{0pt plus 5cm}double$\ast$ \hyperlink{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}{detector\-Data::angles}}\hfill}
\label{classdetectorData_cc9f9708b9ff2d840208cae843fb4b7a}
pointer to the angles (NULL if no angular conversion)
Definition at line 29 of file detector\-Data.h.
Referenced by $\sim$detector\-Data().\hypertarget{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}{
\index{detectorData@{detector\-Data}!errors@{errors}}
\index{errors@{errors}!detectorData@{detector\-Data}}
\paragraph[errors]{\setlength{\rightskip}{0pt plus 5cm}double$\ast$ \hyperlink{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}{detector\-Data::errors}}\hfill}
\label{classdetectorData_29cb1c6bb5635e918ae28505ccd0d8f9}
pointer to the errors
Definition at line 28 of file detector\-Data.h.
Referenced by $\sim$detector\-Data().\hypertarget{classdetectorData_91d1e3466878def295a531c01bdeef6b}{
\index{detectorData@{detector\-Data}!fileName@{fileName}}
\index{fileName@{fileName}!detectorData@{detector\-Data}}
\paragraph[fileName]{\setlength{\rightskip}{0pt plus 5cm}char \hyperlink{classdetectorData_91d1e3466878def295a531c01bdeef6b}{detector\-Data::file\-Name}\mbox{[}1000\mbox{]}}\hfill}
\label{classdetectorData_91d1e3466878def295a531c01bdeef6b}
file name
Definition at line 31 of file detector\-Data.h.
Referenced by detector\-Data().\hypertarget{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}{
\index{detectorData@{detector\-Data}!npoints@{npoints}}
\index{npoints@{npoints}!detectorData@{detector\-Data}}
\paragraph[npoints]{\setlength{\rightskip}{0pt plus 5cm}int \hyperlink{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}{detector\-Data::npoints}}\hfill}
\label{classdetectorData_50aabf6f2c40587f8e915cf4913a2cfe}
number of points
Definition at line 32 of file detector\-Data.h.
Referenced by data\-Callback().\hypertarget{classdetectorData_c289d259e7fd9445a9c04976a82cb324}{
\index{detectorData@{detector\-Data}!npy@{npy}}
\index{npy@{npy}!detectorData@{detector\-Data}}
\paragraph[npy]{\setlength{\rightskip}{0pt plus 5cm}int \hyperlink{classdetectorData_c289d259e7fd9445a9c04976a82cb324}{detector\-Data::npy}}\hfill}
\label{classdetectorData_c289d259e7fd9445a9c04976a82cb324}
dimensions in y coordinate
Definition at line 33 of file detector\-Data.h.
Referenced by data\-Callback().\hypertarget{classdetectorData_976b3287d46aed032487bbeed74132da}{
\index{detectorData@{detector\-Data}!progressIndex@{progressIndex}}
\index{progressIndex@{progressIndex}!detectorData@{detector\-Data}}
\paragraph[progressIndex]{\setlength{\rightskip}{0pt plus 5cm}double \hyperlink{classdetectorData_976b3287d46aed032487bbeed74132da}{detector\-Data::progress\-Index}}\hfill}
\label{classdetectorData_976b3287d46aed032487bbeed74132da}
file index
Definition at line 30 of file detector\-Data.h.\hypertarget{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}{
\index{detectorData@{detector\-Data}!values@{values}}
\index{values@{values}!detectorData@{detector\-Data}}
\paragraph[values]{\setlength{\rightskip}{0pt plus 5cm}double$\ast$ \hyperlink{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}{detector\-Data::values}}\hfill}
\label{classdetectorData_0f4e31d65f9616e83a2e5521453d0364}
pointer to the data
Definition at line 25 of file detector\-Data.h.
Referenced by $\sim$detector\-Data().
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
\hyperlink{detectorData_8h}{detector\-Data.h}\end{CompactItemize}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,164 @@
\hypertarget{classslsReceiverUsers}{
\subsection{sls\-Receiver\-Users Class Reference}
\label{classslsReceiverUsers}\index{slsReceiverUsers@{slsReceiverUsers}}
}
Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
{\tt \#include $<$sls\-Receiver\-Users.h$>$}
\subsubsection*{Public Member Functions}
\begin{CompactItemize}
\item
\hyperlink{classslsReceiverUsers_79a82ba94fbb19761c7701aa3901b8b1}{sls\-Receiver\-Users} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]}, int \&success)
\item
\hyperlink{classslsReceiverUsers_9b45943d81ce7a09543aa446de857cb0}{$\sim$sls\-Receiver\-Users} ()
\item
void \hyperlink{classslsReceiverUsers_bad0b3265826da2d9ebf48e59e9d5787}{close\-File} (int p)
\item
int \hyperlink{classslsReceiverUsers_ef40b4987367b8a0116bcb66534dd7b7}{start} ()
\item
void \hyperlink{classslsReceiverUsers_394001d873a4b7912865a971d4d25f87}{stop} ()
\item
int64\_\-t \hyperlink{classslsReceiverUsers_f206092e2744e12ce6b717f4181d91a2}{get\-Receiver\-Version} ()
\item
void \hyperlink{classslsReceiverUsers_5d4bb9244008d0bc570778230d30c5e3}{register\-Call\-Back\-Start\-Acquisition} (int($\ast$func)(char $\ast$filepath, char $\ast$filename, int fileindex, int datasize, void $\ast$), void $\ast$arg)
\item
void \hyperlink{classslsReceiverUsers_7471d2945e8650eece86258e6ca56156}{register\-Call\-Back\-Acquisition\-Finished} (void($\ast$func)(int nf, void $\ast$), void $\ast$arg)
\item
void \hyperlink{classslsReceiverUsers_343b9fac505e8c08a7fbf9efdd0f5762}{register\-Call\-Back\-Raw\-Data\-Ready} (void($\ast$func)(int framenumber, char $\ast$datapointer, int datasize, FILE $\ast$filedescriptor, char $\ast$guidatapointer, void $\ast$), void $\ast$arg)
\end{CompactItemize}
\subsubsection*{Static Public Attributes}
\begin{CompactItemize}
\item
static sls\-Receiver\-TCPIPInterface $\ast$ \hyperlink{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}{receiver}
\end{CompactItemize}
\subsubsection{Detailed Description}
Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data.
\hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users} is a class that can be instantiated in the users software to receive the data from the detectors. Callbacks can be defined for processing and/or saving data
Definition at line 21 of file sls\-Receiver\-Users.h.
\subsubsection{Constructor \& Destructor Documentation}
\hypertarget{classslsReceiverUsers_79a82ba94fbb19761c7701aa3901b8b1}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!slsReceiverUsers@{slsReceiverUsers}}
\index{slsReceiverUsers@{slsReceiverUsers}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[slsReceiverUsers]{\setlength{\rightskip}{0pt plus 5cm}sls\-Receiver\-Users::sls\-Receiver\-Users (int {\em argc}, char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]}, int \& {\em success})}\hfill}
\label{classslsReceiverUsers_79a82ba94fbb19761c7701aa3901b8b1}
Constructor reads config file, creates socket, assigns function table \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em argc}]from command line \item[{\em argv}]from command line \item[{\em succecc}]socket creation was successfull \end{description}
\end{Desc}
\hypertarget{classslsReceiverUsers_9b45943d81ce7a09543aa446de857cb0}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!~slsReceiverUsers@{$\sim$slsReceiverUsers}}
\index{~slsReceiverUsers@{$\sim$slsReceiverUsers}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[$\sim$slsReceiverUsers]{\setlength{\rightskip}{0pt plus 5cm}sls\-Receiver\-Users::$\sim$sls\-Receiver\-Users ()}\hfill}
\label{classslsReceiverUsers_9b45943d81ce7a09543aa446de857cb0}
Destructor
\subsubsection{Member Function Documentation}
\hypertarget{classslsReceiverUsers_bad0b3265826da2d9ebf48e59e9d5787}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!closeFile@{closeFile}}
\index{closeFile@{closeFile}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[closeFile]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::close\-File (int {\em p})}\hfill}
\label{classslsReceiverUsers_bad0b3265826da2d9ebf48e59e9d5787}
Close File and exits receiver server \hypertarget{classslsReceiverUsers_f206092e2744e12ce6b717f4181d91a2}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!getReceiverVersion@{getReceiverVersion}}
\index{getReceiverVersion@{getReceiverVersion}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[getReceiverVersion]{\setlength{\rightskip}{0pt plus 5cm}int64\_\-t sls\-Receiver\-Users::get\-Receiver\-Version ()}\hfill}
\label{classslsReceiverUsers_f206092e2744e12ce6b717f4181d91a2}
get get Receiver Version \begin{Desc}
\item[Returns:]id \end{Desc}
\hypertarget{classslsReceiverUsers_7471d2945e8650eece86258e6ca56156}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!registerCallBackAcquisitionFinished@{registerCallBackAcquisitionFinished}}
\index{registerCallBackAcquisitionFinished@{registerCallBackAcquisitionFinished}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[registerCallBackAcquisitionFinished]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::register\-Call\-Back\-Acquisition\-Finished (void($\ast$)(int nf, void $\ast$) {\em func}, void $\ast$ {\em arg})}\hfill}
\label{classslsReceiverUsers_7471d2945e8650eece86258e6ca56156}
register callback for end of acquisition \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em func}]end of acquisition callback. Argument nf is total frames caught \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]nothing \end{Desc}
\hypertarget{classslsReceiverUsers_343b9fac505e8c08a7fbf9efdd0f5762}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!registerCallBackRawDataReady@{registerCallBackRawDataReady}}
\index{registerCallBackRawDataReady@{registerCallBackRawDataReady}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[registerCallBackRawDataReady]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::register\-Call\-Back\-Raw\-Data\-Ready (void($\ast$)(int framenumber, char $\ast$datapointer, int datasize, FILE $\ast$filedescriptor, char $\ast$guidatapointer, void $\ast$) {\em func}, void $\ast$ {\em arg})}\hfill}
\label{classslsReceiverUsers_343b9fac505e8c08a7fbf9efdd0f5762}
register callback to be called when data are available (to process and/or save the data). \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em func}]raw data ready callback. arguments are framenum datapointer datasize file descriptor guidatapointer (NULL, no data required) \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]nothing \end{Desc}
\hypertarget{classslsReceiverUsers_5d4bb9244008d0bc570778230d30c5e3}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!registerCallBackStartAcquisition@{registerCallBackStartAcquisition}}
\index{registerCallBackStartAcquisition@{registerCallBackStartAcquisition}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[registerCallBackStartAcquisition]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::register\-Call\-Back\-Start\-Acquisition (int($\ast$)(char $\ast$filepath, char $\ast$filename, int fileindex, int datasize, void $\ast$) {\em func}, void $\ast$ {\em arg})}\hfill}
\label{classslsReceiverUsers_5d4bb9244008d0bc570778230d30c5e3}
register calbback for starting the acquisition \begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em func}]callback to be called when starting the acquisition. Its arguments are filepath filename fileindex data size\end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]0 callback takes care of open,close,write file; 1 callback writes file, we have to open, close it; 2 we open, close, write file, callback does not do anything \end{Desc}
\hypertarget{classslsReceiverUsers_ef40b4987367b8a0116bcb66534dd7b7}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!start@{start}}
\index{start@{start}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[start]{\setlength{\rightskip}{0pt plus 5cm}int sls\-Receiver\-Users::start ()}\hfill}
\label{classslsReceiverUsers_ef40b4987367b8a0116bcb66534dd7b7}
starts listening on the TCP port for client comminication \begin{Desc}
\item[Returns:]0 for success or 1 for FAIL in creating TCP server \end{Desc}
Referenced by main().\hypertarget{classslsReceiverUsers_394001d873a4b7912865a971d4d25f87}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!stop@{stop}}
\index{stop@{stop}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[stop]{\setlength{\rightskip}{0pt plus 5cm}void sls\-Receiver\-Users::stop ()}\hfill}
\label{classslsReceiverUsers_394001d873a4b7912865a971d4d25f87}
stops listening to the TCP \& UDP port and exit receiver program
Referenced by main().
\subsubsection{Member Data Documentation}
\hypertarget{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}{
\index{slsReceiverUsers@{sls\-Receiver\-Users}!receiver@{receiver}}
\index{receiver@{receiver}!slsReceiverUsers@{sls\-Receiver\-Users}}
\paragraph[receiver]{\setlength{\rightskip}{0pt plus 5cm}sls\-Receiver\-TCPIPInterface$\ast$ \hyperlink{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}{sls\-Receiver\-Users::receiver}\hspace{0.3cm}{\tt \mbox{[}static\mbox{]}}}\hfill}
\label{classslsReceiverUsers_8f262724fb99ecd3976214710d82dd18}
Definition at line 87 of file sls\-Receiver\-Users.h.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
\hyperlink{slsReceiverUsers_8h}{sls\-Receiver\-Users.h}\end{CompactItemize}

View File

@ -0,0 +1,11 @@
\hypertarget{detectorData_8h}{
\subsection{detector\-Data.h File Reference}
\label{detectorData_8h}\index{detectorData.h@{detectorData.h}}
}
{\tt \#include $<$unistd.h$>$}\par
{\tt \#include $<$cstring$>$}\par
\subsubsection*{Classes}
\begin{CompactItemize}
\item
class \hyperlink{classdetectorData}{detector\-Data}
\begin{CompactList}\small\item\em data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.) \item\end{CompactList}\end{CompactItemize}

View File

@ -0,0 +1,77 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doxygen}
\RequirePackage{calc}
\RequirePackage{array}
\pagestyle{fancyplain}
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\lhead[\fancyplain{}{\bfseries\thepage}]
{\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}]
{\fancyplain{}{\bfseries\thepage}}
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Mon May 26 17:07:05 2014 by Doxygen }]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Mon May 26 17:07:05 2014 by Doxygen }}
\cfoot{}
\newenvironment{Code}
{\footnotesize}
{\normalsize}
\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
\newenvironment{DocInclude}
{\footnotesize}
{\normalsize}
\newenvironment{VerbInclude}
{\footnotesize}
{\normalsize}
\newenvironment{Image}
{\begin{figure}[H]}
{\end{figure}}
\newenvironment{ImageNoCaption}{}{}
\newenvironment{CompactList}
{\begin{list}{}{
\setlength{\leftmargin}{0.5cm}
\setlength{\itemsep}{0pt}
\setlength{\parsep}{0pt}
\setlength{\topsep}{0pt}
\renewcommand{\makelabel}{\hfill}}}
{\end{list}}
\newenvironment{CompactItemize}
{
\begin{itemize}
\setlength{\itemsep}{-3pt}
\setlength{\parsep}{0pt}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}
}
{\end{itemize}}
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
\newlength{\tmplength}
\newenvironment{TabularC}[1]
{
\setlength{\tmplength}
{\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
\par\begin{tabular*}{\linewidth}
{*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
}
{\end{tabular*}\par}
\newcommand{\entrylabel}[1]{
{\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}}
\newenvironment{Desc}
{\begin{list}{}
{
\settowidth{\labelwidth}{40pt}
\setlength{\leftmargin}{\labelwidth}
\setlength{\parsep}{0pt}
\setlength{\itemsep}{-4pt}
\renewcommand{\makelabel}{\entrylabel}
}
}
{\end{list}}
\newenvironment{Indent}
{\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
\item[]\ignorespaces}
{\unskip\end{list}}
\setlength{\parindent}{0cm}
\setlength{\parskip}{0.2cm}
\addtocounter{secnumdepth}{1}
\sloppy
\usepackage[T1]{fontenc}

View File

@ -0,0 +1,8 @@
\subsection{File List}
Here is a list of all files with brief descriptions:\begin{CompactList}
\item\contentsline{section}{\hyperlink{detectorData_8h}{detector\-Data.h} }{\pageref{detectorData_8h}}{}
\item\contentsline{section}{\hyperlink{mainClient_8cpp}{main\-Client.cpp} }{\pageref{mainClient_8cpp}}{}
\item\contentsline{section}{\hyperlink{mainReceiver_8cpp}{main\-Receiver.cpp} }{\pageref{mainReceiver_8cpp}}{}
\item\contentsline{section}{\hyperlink{slsDetectorUsers_8h}{sls\-Detector\-Users.h} }{\pageref{slsDetectorUsers_8h}}{}
\item\contentsline{section}{\hyperlink{slsReceiverUsers_8h}{sls\-Receiver\-Users.h} }{\pageref{slsReceiverUsers_8h}}{}
\end{CompactList}

View File

@ -0,0 +1,26 @@
\subsection*{API for SLS detectors data acquisition}
Although the SLS detectors group delvelops several types of detectors (1/2D, counting/integrating etc.) it is common interest of the group to use a common platfor for data acquisition
The architecture of the acquisitions system is intended as follows: \begin{itemize}
\item A socket server running on the detector (or more than one in some special cases) \item C++ classes common to all detectors for client-server communication. These can be supplied to users as libraries and embedded also in acquisition systems which are not developed by the SLS \item the possibility of using a Qt-based graphical user interface (with eventually root analisys capabilities) \item the possibility of running all commands from command line. In order to ensure a fast operation of this so called \char`\"{}text client\char`\"{} the detector parameters should not be re-initialized everytime. For this reason a shared memory block is allocated where the main detector flags and parameters are stored \item a Root library for data postprocessing and detector calibration (energy, angle).\end{itemize}
\hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} is a class to control the detector which should be instantiated by the users in their acquisition software (EPICS, spec etc.). A callback for dislaying the data can be registered. More advanced configuration functions are not implemented and can be written in a configuration file tha can be read/written.
\hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users} is a class to receive the data for detectors with external data receiver (e.g. GOTTHARD). Callbacks can be registered to process the data or save them in specific formats.
\hyperlink{classdetectorData}{detector\-Data} is a structure containing the data and additional information which is used to return the data e.g. to the GUI for displaying them.
You can find examples of how this classes can be instatiated in \hyperlink{mainClient_8cpp}{main\-Client.cpp} and \hyperlink{mainReceiver_8cpp}{main\-Receiver.cpp}
\begin{Desc}
\item[Authors:]\href{mailto:anna.bergamaschi@psi.ch}{\tt Anna Bergamaschi}, \href{mailto:dhanya.maliakal@psi.ch}{\tt Dhanya Maliakal} \end{Desc}
\begin{Desc}
\item[Version:]0.2 \subsubsection*{Currently supported detectors}\end{Desc}
\begin{itemize}
\item MYTHEN \item GOTTHARD controls \item GOTTHARD data receiver \paragraph*{Coming soon}\end{itemize}
\begin{itemize}
\item EIGER \end{itemize}

View File

@ -0,0 +1,79 @@
\hypertarget{mainClient_8cpp}{
\subsection{main\-Client.cpp File Reference}
\label{mainClient_8cpp}\index{mainClient.cpp@{mainClient.cpp}}
}
{\tt \#include $<$iostream$>$}\par
{\tt \#include \char`\"{}sls\-Detector\-Users.h\char`\"{}}\par
{\tt \#include \char`\"{}detector\-Data.h\char`\"{}}\par
\subsubsection*{Functions}
\begin{CompactItemize}
\item
int \hyperlink{mainClient_8cpp_21ef7438e7f0ed24a190513fb8e6af8a}{data\-Callback} (\hyperlink{classdetectorData}{detector\-Data} $\ast$p\-Data, int iframe, void $\ast$p\-Arg)
\item
int \hyperlink{mainClient_8cpp_0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{CompactItemize}
\subsubsection{Detailed Description}
This file is an example of how to implement the \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} class You can compile it linking it to the sls\-Detector library
gcc \hyperlink{mainClient_8cpp}{main\-Client.cpp} -L lib -l Sls\-Detector -lm -lpthread
where lib is the location of lib\-Sls\-Detector.so
Definition in file \hyperlink{mainClient_8cpp-source}{main\-Client.cpp}.
\subsubsection{Function Documentation}
\hypertarget{mainClient_8cpp_21ef7438e7f0ed24a190513fb8e6af8a}{
\index{mainClient.cpp@{main\-Client.cpp}!dataCallback@{dataCallback}}
\index{dataCallback@{dataCallback}!mainClient.cpp@{main\-Client.cpp}}
\paragraph[dataCallback]{\setlength{\rightskip}{0pt plus 5cm}int data\-Callback (\hyperlink{classdetectorData}{detector\-Data} $\ast$ {\em p\-Data}, int {\em iframe}, void $\ast$ {\em p\-Arg})}\hfill}
\label{mainClient_8cpp_21ef7438e7f0ed24a190513fb8e6af8a}
Definition of the data callback which simply prints out the number of points received and teh frame number
Definition at line 19 of file main\-Client.cpp.
References detector\-Data::npoints, and detector\-Data::npy.
Referenced by main().\hypertarget{mainClient_8cpp_0ddf1224851353fc92bfbff6f499fa97}{
\index{mainClient.cpp@{main\-Client.cpp}!main@{main}}
\index{main@{main}!mainClient.cpp@{main\-Client.cpp}}
\paragraph[main]{\setlength{\rightskip}{0pt plus 5cm}int main (int {\em argc}, char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]})}\hfill}
\label{mainClient_8cpp_0ddf1224851353fc92bfbff6f499fa97}
example of a main program using the \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} class
if specified, argv\mbox{[}2\mbox{]} is used as detector ID (default is 0)
\hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} is instantiated
if specified, argv\mbox{[}1\mbox{]} is used as detector config file (necessary at least the first time it is called to properly configure advanced settings in the shared memory)
Setting the detector online (should be by default
Load setup file if argv\mbox{[}2\mbox{]} specified
defining the detector size
registering data callback
checking detector status and exiting if not idle
checking and setting detector settings
Settings exposure time to 10ms
Settings exposure time to 100ms
Settingsnumber of frames to 30
start measurement
returning when acquisition is finished or data are avilable
Definition at line 26 of file main\-Client.cpp.
References data\-Callback(), sls\-Detector\-Users::get\-Command(), sls\-Detector\-Users::get\-Detector\-Developer(), sls\-Detector\-Users::get\-Detector\-Settings(), sls\-Detector\-Users::get\-Detector\-Size(), sls\-Detector\-Users::get\-Detector\-Status(), sls\-Detector\-Users::read\-Configuration\-File(), sls\-Detector\-Users::register\-Data\-Callback(), sls\-Detector\-Users::retrieve\-Detector\-Setup(), sls\-Detector\-Users::run\-Status\-Type(), sls\-Detector\-Users::set\-Detector\-Size(), sls\-Detector\-Users::set\-Exposure\-Period(), sls\-Detector\-Users::set\-Exposure\-Time(), sls\-Detector\-Users::set\-Number\-Of\-Frames(), sls\-Detector\-Users::set\-Online(), sls\-Detector\-Users::set\-Settings(), and sls\-Detector\-Users::start\-Measurement().

View File

@ -0,0 +1,35 @@
\hypertarget{mainReceiver_8cpp}{
\subsection{main\-Receiver.cpp File Reference}
\label{mainReceiver_8cpp}\index{mainReceiver.cpp@{mainReceiver.cpp}}
}
{\tt \#include \char`\"{}sls\-Receiver\-Users.h\char`\"{}}\par
{\tt \#include $<$iostream$>$}\par
\subsubsection*{Functions}
\begin{CompactItemize}
\item
int \hyperlink{mainReceiver_8cpp_0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{CompactItemize}
\subsubsection{Detailed Description}
This file is an example of how to implement the \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users} class You can compile it linking it to the sls\-Detector library
gcc \hyperlink{mainReceiver_8cpp}{main\-Receiver.cpp} -L lib -l Sls\-Detector -lm -lpthread
where lib is the location of lib\-Sls\-Detector.so
Definition in file \hyperlink{mainReceiver_8cpp-source}{main\-Receiver.cpp}.
\subsubsection{Function Documentation}
\hypertarget{mainReceiver_8cpp_0ddf1224851353fc92bfbff6f499fa97}{
\index{mainReceiver.cpp@{main\-Receiver.cpp}!main@{main}}
\index{main@{main}!mainReceiver.cpp@{main\-Receiver.cpp}}
\paragraph[main]{\setlength{\rightskip}{0pt plus 5cm}int main (int {\em argc}, char $\ast$ {\em argv}\mbox{[}$\,$\mbox{]})}\hfill}
\label{mainReceiver_8cpp_0ddf1224851353fc92bfbff6f499fa97}
Definition at line 25 of file main\-Receiver.cpp.
References sls\-Receiver\-Users::start(), and sls\-Receiver\-Users::stop().

View File

@ -0,0 +1,4 @@
\subsection{Namespace List}
Here is a list of all namespaces with brief descriptions:\begin{CompactList}
\item\contentsline{section}{\hyperlink{namespacestd}{std} }{\pageref{namespacestd}}{}
\end{CompactList}

View File

@ -0,0 +1,6 @@
\hypertarget{namespacestd}{
\subsection{std Namespace Reference}
\label{namespacestd}\index{std@{std}}
}

View File

@ -0,0 +1,57 @@
\documentclass[a4paper]{article}
\usepackage{makeidx}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{float}
\usepackage{textcomp}
\usepackage{alltt}
\usepackage{times}
\ifx\pdfoutput\undefined
\usepackage[ps2pdf,
pagebackref=true,
colorlinks=true,
linkcolor=blue
]{hyperref}
\usepackage{pspicture}
\else
\usepackage[pdftex,
pagebackref=true,
colorlinks=true,
linkcolor=blue
]{hyperref}
\fi
\usepackage{doxygen}
\makeindex
\setcounter{tocdepth}{1}
\renewcommand{\footrulewidth}{0.4pt}
\begin{document}
\begin{titlepage}
\vspace*{7cm}
\begin{center}
{\Large Reference Manual}\\
\vspace*{1cm}
{\large Generated by Doxygen 1.4.7}\\
\vspace*{0.5cm}
{\small Mon May 26 17:07:05 2014}\\
\end{center}
\end{titlepage}
\pagenumbering{roman}
\tableofcontents
\pagenumbering{arabic}
\section{Main Page}
\label{index}\hypertarget{index}{}\input{index}
\section{Namespace Documentation}
\input{namespacestd}
\section{Class Documentation}
\input{classdetectorData}
\input{classslsDetectorUsers}
\input{classslsReceiverUsers}
\section{File Documentation}
\input{detectorData_8h}
\input{mainClient_8cpp}
\input{mainReceiver_8cpp}
\input{slsDetectorUsers_8h}
\input{slsReceiverUsers_8h}
\printindex
\end{document}

View File

@ -0,0 +1,16 @@
\hypertarget{slsDetectorUsers_8h}{
\subsection{sls\-Detector\-Users.h File Reference}
\label{slsDetectorUsers_8h}\index{slsDetectorUsers.h@{slsDetectorUsers.h}}
}
{\tt \#include $<$stdint.h$>$}\par
{\tt \#include $<$string$>$}\par
\subsubsection*{Namespaces}
\begin{CompactItemize}
\item
namespace \hyperlink{namespacestd}{std}
\end{CompactItemize}
\subsubsection*{Classes}
\begin{CompactItemize}
\item
class \hyperlink{classslsDetectorUsers}{sls\-Detector\-Users}
\begin{CompactList}\small\item\em Class for detector functionalitiesto embed the detector controls in the users custom interface e.g. EPICS, Lima etc. \item\end{CompactList}\end{CompactItemize}

View File

@ -0,0 +1,11 @@
\hypertarget{slsReceiverUsers_8h}{
\subsection{sls\-Receiver\-Users.h File Reference}
\label{slsReceiverUsers_8h}\index{slsReceiverUsers.h@{slsReceiverUsers.h}}
}
{\tt \#include $<$stdio.h$>$}\par
{\tt \#include $<$stdint.h$>$}\par
\subsubsection*{Classes}
\begin{CompactItemize}
\item
class \hyperlink{classslsReceiverUsers}{sls\-Receiver\-Users}
\begin{CompactList}\small\item\em Class for implementing the SLS data receiver in the users application. Callbacks can be defined for processing and/or saving data. \item\end{CompactList}\end{CompactItemize}

View File

@ -1 +1 @@
../../slsReceiverSoftware/include/slsReceiverUsers.h
../../slsReceiverSoftware/slsReceiver/slsReceiverUsers.h

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/sls_receiver_defs.h

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/sls_receiver_funcs.h

View File

@ -1 +0,0 @@
../../slsReceiverSoftware/include/zmq.h

View File

@ -1,4 +1,4 @@
DESTDIR?=../docs
DESTDIR?=../
#manual-api manual-calwiz manual-client manual-gui manual-main
@ -12,28 +12,26 @@ 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
#destdir?!?!?
all: $(PDFS) $(HTMLS)
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
$(shell test -d $(DESTDIR)/html || mkdir -p $(DESTDIR)/html)
mv $@ $(DESTDIR)/html
%.dvi : %.tex $(TEXS)
@ -50,7 +48,3 @@ $(HTMLS): $(TEXS) $(MAINTEXS)
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

View File

@ -5,11 +5,7 @@
\usepackage{graphicx}
\usepackage{verbatim}
\usepackage{xspace}
\usepackage{hyperref}
\newcommand{\E}{EIGER\xspace}
\newcommand{\p}{sls\_detector\_put}
\newcommand{\g}{sls\_detector\_get}
\begin{document}
\title{\E - short manual}
@ -22,8 +18,8 @@
\subsection{Mandatory setup - Hardware}
An EIGER single module (500~kpixels) needs:
\begin{itemize}
\item A chilled (water+alcohol) at approximately 21~$^{\circ}$C, which needs to dissipate 85~W. For the 9M, a special cooling liquid is required: 2/3 deionized water and 1/3 ESA Type 48.
\item A power supply (12~V, 8~A). For the 9~M, a special cpu is give to remotely switch on and off the detector: see section~\ref{bchip100}.
\item A chilled (water+alcohol) at approximately 21~$^{\circ}$C, which needs to dissipate 85~W.
\item A power supply (12~V, 8~A).
\item 2$\times$1~Gb/s Ethernet connectors to control the detector and, optionally, receive data at low rate. A DHCP server that gives IPs to the 1~Gb/s connectors of the detector is needed. Note that flow control has to be enabled on the switch you are using.
\item 2$\times$10~Gb/s transceivers to optionally, receive data at high rate.
\end{itemize}
@ -40,36 +36,6 @@ Figure~\ref{fig:1} shows the relationship between the \textbf{Client} (which sit
The Client talks to control over 1~Gb Ethernet connection using TCP/IP to the detector and to the receiver. The detector sends data in UDP packets to the receiver. This data sending can be done over 1~Gb/s or 10~Gb/s.
\begin{itemize}
\item \textbf{Switch on the detector only after having started the chiller: the 500k single module and the 1.5M at cSAXS have a hardware temperature sensor, which will power off the boards if the temperature is too high. Note that the detector will be power on again as soon as the temperature has been lowered. The 9M will not boot up without the correct waterflow and temperature has it has an integrated flowmeter.}
\item \textbf{Switch on the detector only after having connected all the cables and network. EIGER is unable to get IP address after it has been switched on without a proper network set up. In that case switch off and on the detector again.}
\end{itemize}
\subsubsection{9M power supply interface: bchip100}\label{bchip100}
So the bchip100, which is a blackfin cpu, is located on the top side of the 9M and needs to be connected over 1Gb, to the same or a different network as the detector 1~GbE.
\begin{verbatim}
telnet bchip100
cd 9m/
\end{verbatim}
The directory contains some executables that are needed to make your detector to work:
\begin{verbatim}
./on #to switch modules on
./off #to switch modules off
./hvget #gets the current HV value
./waterflow #returns the current waterflow returned by the flowmeter
./temp #returns the water temperature returned by the flowmeter
\end{verbatim}
A watchdog is running on bchip100 to check for the flow and temperature. If outside of parameters ( flow$<$ 80 dl/min, temperature $\neq$21$\pm$2), the detector will be switched off.
Here is an explanation of the LED color scheme of the bchip100:
\begin{itemize}
\item NO LED Main Power off or Blackfin not ready, yet.
\item RED Too high temperature or too less water flow
Detector is shut down and locked.
Detector will be unlocked (YELLOW) automatically when conditions are good again.
\item YELLOW Detector is off and unlocked. Ready to be turned on.
\item GREEN Detector is on
\end{itemize}
You can also Check temperatures and water flow in a browser (from the same subnet where the 9M is: http://bchip100/status.cgi
\subsection{Mandatory setup - Receiver}
@ -82,17 +48,9 @@ The receiver is a process run on a PC closely connected to the detector. Open on
where xxxx, yyyy are the tcp port numbers. Use 1955 and 1956 for example. Note that in older version of the software {\tt{--mode 1}} was used only for the ``bottom'' half module. Now, the receiver for the bottom is open without arguments anymore, but still in the configuration file one needs to write {\tt{n:flippeddatax 1}}, where {\tt{n}} indicated the half module number, 1 if it is a module.
\\ Open as many receiver as half module boards. A single module has two half module boards.
From the software version 3.0.1, one can decide weather start a zmq callback from the receiver to the client (for example to visualize data in the slsDetectorGui or another gui). If the zmq steam is not required (cased of the command line for example, one can switch off the streaming with {\tt{./sls\_detector\_put rx\_datastream 0}}, enable it with {\tt{./sls\_detector\_put rx\_datastream 1}}. In the case of inizialising the stream to use the slsDetectorGui, nothing needs to be taken care of by the user. If instead you want to stream the streaming on different channels, the zmq port of the client can be set stealing from the slsDetectorGui stream having {\tt{./sls\_detector\_put n:zmqport 300y}}, where n is each half module independently, matching the receiver stream {\tt{./sls\_detector\_put n:rx\_zmqport 300y}}.
There is an example code that can be compiled in {\tt{manual/manual-api/mainReceiver.cpp}} and gives the executable {\tt{./detReceiver}}, use it with two or more receivers to open all receivers in one single terminal: {\tt{./detReceiver startTCPPort numReceivers withCallback}}, where startTCPPort assumes the other ports are consecutively increased.
\subsection{Mandatory setup - Client}
\underline{In the case of cSAXS, the detector software is installed on:}\\
\underline{In the case of cSAXS, the detector software is installed on the x12sa-ed-1 machine:}\\
\underline{/sls/X12SA/data/x12saop/EigerPackage/slsDetectorsPackage}
The command line interface consists in these main functions:
@ -102,7 +60,7 @@ The command line interface consists in these main functions:
\item[sls\_detector\_get] to retrieve detector parameters
\end{description}
First, your detector should always be configured for each PC that you might want to use for controlling the detector. All the examples given here show the command {\tt{0-}}, which could be omitted for the EIGER system $0$. In the case more EIGER systems are controlled at once, the call of {\tt{1-}},.. becomes compulsory.
First, your detector should always be configured for each PC that you might want to use for controlling the detector. All the examples given here show the command {\tt{0-}}, which could be omitted for the EIGER system $0$. In the case more EIGER systems are controlled at once, the call of {\tt{1-}},.. becomes compulsory.
To make sure the shared memory is cleaned, before starting, one should do:
\begin{verbatim}
@ -113,9 +71,9 @@ To do that:
sls_detector_put 0-config mydetector.config
\end{verbatim}
In the config file, if client, receiver and detector are using \textbf{1GbE} the following lines are mandatory (see slsDetectorsPackage/examples/eiger\_1Gb.config):
In the config file, if client, receiver and detector are using \textbf{1GbE} the following lines are mandatory:
\begin{verbatim}
detsizechan 1024 512 #detector geometry, long side of the module first
detsizechan 1024 512 #detetctor geometry, long side of the module first
hostname beb059+beb058+ #1Gb detector hostname for controls
0:rx_tcpport 1991 #tcpport for the first halfmodule
0:rx_udpport 50011 #udp port first quadrant, first halfmodule
@ -125,12 +83,11 @@ hostname beb059+beb058+ #1Gb detector hostname for controls
1:rx_udpport2 50014 #udp port second quadrant, second halfmodule
rx_hostname x12sa-vcons #1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1
\end{verbatim}
In the config file, if client, receiver and detector commands are on 1Gb, but detector data to receiver are sent using \textbf{10GbE} the following lines are mandatory (see slsDetectorsPackage/examples/eiger\_10Gb.config):
In the config file, if client, receiver and detector commands are on 1Gb, but detector data to receiver are sent using \textbf{10GbE} the following lines are mandatory:
\begin{verbatim}
detsizechan 1024 512 #detector geometry, long side of the module first
detsizechan 1024 512 #detetctor geometry, long side of the module first
hostname beb059+beb058+ #1Gb detector hostname for controls
0:rx_tcpport 1991 #tcpport for the first halfmodule
0:rx_udpport 50011 #udp port first quadrant, first halfmodule
@ -145,17 +102,8 @@ hostname beb059+beb058+ #1Gb detector hostname for controls
1:detectorip 10.0.40.101 #second half module 10 Gb IP
rx_hostname x12sa-vcons #1Gb receiver pc hostname
outdir /sls/X12SA/data/x12saop/Data10/Eiger0.5M
threaded 1
\end{verbatim}
In the case you are developing your own receiver, then you need to remove the 1Gb receiver hostname {\tt{rx\_hostname}} and substitute it with the mac address of the device:
\begin{verbatim}
configuremac 0
rx_udpmac xx:xx:...
\end{verbatim}
One can configure all the detector settings in a parameter file {\tt{setup.det}}, which is loaded by doing:
\begin{verbatim}
sls_detector_put 0-parameters setup.det
@ -167,13 +115,14 @@ Other important settings that are configured in the {\tt{setup.det}} file are:
\item {\tt{tengiga 0/1}}, which sets whether the detector is enabled to send data through the 1~or the 10~Gb Ethernet.
\item {\tt{flags parallel/nonparallel}}, which sets whether the detector is set in parallel acquisition and readout or in sequential mode. This changes the readout time of the chip and affects the frame rate capability (faster is {\tt{parallel}}, with higher noise but needed when the frame rate is $>2$~kHz.
\item {\tt{dr 32/16}} sets the detector in autosumming mode (32 bit counter or not autosumming, 12 bit out of the chip). This is strictly connected to what is required for the readout clock of chip. See next point.
\item {\tt{clkdivider 0/1/2}}. Changes the readout clock: 200, 100, 50~MHz (also referred to as full, half, quarter speed). Note that autosumming mode ({\tt{dr 32}} only works at {clkdivider 2}=quarter speed). By selecting Refer to readout timing specifications in~section\ref{timing} for how to set the detector.
\item {\tt{clkdivider 0/1/2}}. Changes the readout clock: 200, 100, 50~MHz. Note that autosumming mode ({\tt{dr 32}} only works at {clkdivider 2}). By selecting Refer to readout timing specifications in~section\ref{timing} for how to set the detector.
\item {\tt{flags continuous/storeinram}}. Allows to take frame continuously or storing them on memory. Normally {\tt{continuous}} should be used. Enabling the {\tt{stroreinram}} mode allows you to obtain the maximum frame rate, but at the expenses to have to receive the data all at the end of the acquisition. Refer to readout timing specifications in section~\ref{timing} for how to set the detector.
\end{itemize}
One should notice that, by default, by choosing the option {\tt{dr 32}}, then the software automatically sets the detector to {\tt{clkdivider 2}}. By choosing the option {\tt{dr 16}}, the software automatically sets the detector to {\tt{clkdivider 1}}. One needs to choose {\tt{clkdivider 0}} after setting the {\tt{dr 16}} option to have the fastest frame rate.
We would recommend expert users (beamline people) to write their parameters file for the users.
\section{API versioning}
The eigerDetectorServer running on the boards has a versioning API scheme that will make it crash if used with a wrong firmware.
You can also check your versioning by hand with the code:
@ -189,7 +138,6 @@ returns the client version. The answer can be {\tt{thisversion 111220160718}}.
/sls_detector_get detectorversion
\end{verbatim}
returns the firmware version . The answer can be {\tt{detectorversion 11}}.
Killing and starting the server on the boards allows you to check the firmware version you have and also if your board is a top/bottom/master/slave.
\section{Setting up the threshold}
\begin{verbatim}
@ -201,11 +149,6 @@ The first line requires to specify how many ({\tt{N}}) and at which energies in
NORMALLY, in this new calibration scheme, only {\tt{settings standard}} will be provided to you, unless specific cases to be discussed.
The threshold at 6000 eV , for example would be set as:{\tt{sls\_detector\_put 0-threshold 6000}}.
We have added a special command, {\tt{thresholdnotb}}, which allows to scan the threshold energy without reloading the trimbits at every stage. One can either keep the trimbits at a specific value (es.32 if the range of energies to scan is large) or use the trimbits from a specific energy (like a central energy).
\begin{verbatim}
sls_detector_put 0-thresholdnotb energy_in_eV
\end{verbatim}
\section{Standard acquisition}
After you setup the setting and the threshold, you need to specify the exposure time, the number of real time frames and eventually how many real time frames should be acquired:
@ -275,29 +218,17 @@ this same command can be used after a non proper abortion of the acquisition to
IMPORTANT: to have faster readout and smaller dead time, one can configure {\tt{clkdivider}}, i.e. the speed at which the data are read, i.e. 200/100/50~MHz for {\tt{clkdivider 0/1/2}} and the dead time between frames through {\tt{flags parallel}}, i.e. acquire and read at the same time or acquire and then read out.
The configuration of this timing variables allows to achieve different frame rates. NOTE THAT IN EIGER, WHATEVER YOU DO, THE FRAME RATE LIMITATIONS COME FROM THE NETWORK BOTTLENECK AS THE HARDWARE GOES FASTER THAN THE DATA OUT.
In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from the boards (independent on how the chip is set), the continuous frame rates are listed in table~\ref{tcont}:
\begin{table}
\begin{tabular}{|c|c|c|c|}
\hline
GbE & dynamic range & continuos maximum frame rate(Hz) & minimum period ($\mu$s)\\
\hline
1 & 16 & \textbf{256} & 3901\\
\hline
1 & 32 & \textbf{128} & 7820\\
\hline
10 & 16 & \textbf{2560} & 391\\
\hline
10 & 32 & \textbf{1280}& 782\\
\hline
10 & 8 & \textbf{5120} & 196\\
\hline
10 & 4 & \textbf{10240} & 98\\
\hline
\end{tabular}
\caption{Frame rate limits for the CONTINUOS streaming out of images.}
\label{tcont}\end{table}
Note that in the {\tt{continuous}} flag mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuous one can be achieved. Still, this extra buffering is possible till the memories are not saturated.
The number of images that can be stored on memories are listed in table~\ref{timgs}:
In the case of REAL CONTINUOUS readout, i.e. continuous acquire and readout from the boards (independent on how the chip is set):
\begin{itemize}
\item 1~GbE, {\tt{dr 16}}, {\tt{flags continous}}, \textbf{256~Hz}
\item 1~GbE, {\tt{dr 32}}, {\tt{flags continous}}, {\tt{clkdivider 2}}, \textbf{128~Hz}
\item 10~GbE, {\tt{dr 16}}, {\tt{flags continous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{2.56~kHz}
\item 10~GbE, {\tt{dr 32}}, {\tt{flags continuous}}, {\tt{clkdivider 2}}, \textbf{1.28~kHz}
\item 10~GbE, {\tt{dr 8}}, {\tt{flags continous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{5.12~kHz}
\item 10~GbE, {\tt{dr 4}}, {\tt{flags continous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{10.24~kHz}
\end{itemize}
Note that in the {\tt{continuous}} mode, some buffering is still done on the memories, so a higher frame rate than the proper real continuos one can be achieved. Still, this extra buffering is possible till the memories are not saturated.
The number of images that can be stored on memories are:
\begin{table}
\begin{tabular}{|c|c|}
\hline
@ -310,72 +241,38 @@ dynamic range & images\\
16 & 7600\\
\hline
\end{tabular}
\caption{Amount of images that can be stored on board. As while we store them, we start to send them out, the effective number of images could be larger than this, but it will depend on the network setup (how fats you stream out images).}
\label{timgs}
\caption{Amount of images that can be stored on board.}
\end{table}
The maximum frame rate achievable with 10~GbE, {\tt{dr 16}}, {\tt{flags continuous}}, {\tt{flags parallel}},{\tt{clkdivider 0}}, \textbf{6.1~kHz}. This is currently limited by the connection between the Front End Board and the Backend board. We expect the 32 bit mode limit to be \textbf{2~kHz} ({\tt{clkdivider 2}}).
In dynamic range {\tt{dr 8}} the frame rate is \textbf{11~kHz} and for{\tt{dr 4}} is \textbf{22~kHz}. For 4 and 8 bit mode the frame rate are directly limited by the speed of the detector chip and not by the readout boards.
In table~\ref{tframes} is a list of all the readout times in the different configurations:
\begin{tiny}
Here is a list of all the readout times in the different configurations:
\begin{table}
\begin{flushleft}
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\begin{tabular}{|c|c|c|c|c|}
\hline
\tiny{dr} & \tiny{clkdivider} & \tiny{flags} & \tiny{readout t($\mu$s)} & \tiny{max frame rate (kHz)} & \tiny{max exptime ($\mu$s)} & \tiny{min period ($\mu$s)} & \tiny{max imgs (nominal/our network)}\\
dynamic range & clkdivider & mode & readout time ($\mu$s) & max frame rate (kHz)\\
\hline
4 & 0 & parallel & 3.4 & 22 & 40 & 44 & 30k/50k\\
16 & 0 & parallel & 2.75 & 6\\
\hline
4 & 0 & nonparallel & 44 & 21 & 3 & 49 & 30k/50k\\
16 & 0 & nonparallel & 126 & 3.4\\
\hline
4 & 1 & parallel & 6 & 10.5 & 85 & 92 & 30k/100k\\
16 & 1 & parallel & 5.36 & 2.9\\
\hline
4 & 1 & nonparallel & 88.7 & 10.5 & 3 & 93 & 30k/100k\\
16 & 1 & nonparallel & 252 & 1.7\\
\hline
4 & 2 & parallel & 11.2 & 5.4 & 185 & 197 & infinite\\
16 & 2 & parallel & 10.6 & 1.5\\
\hline
4 & 2 & nonparallel & 176.5 & 5.4 & 3 & 180 & infinite\\
16 & 2 & nonparallel & 504 & 0.85\\
\hline
32 & 2 & parallel & 10.6 & 2\\
\hline
8 & 0 & parallel & 3.4 & 11.1 & 85 & 89 & 15k/24k\\
\hline
8 & 0 & nonparallel & 85.7 & 11.1 & 3 & 91 & 15k/24k\\
\hline
8 & 1 & parallel & 6.1 & 5.7 & 174 & 181 & 15k/52k\\
\hline
8 & 1 & nonparallel & 170.5 & 5.7 & 3 & 175 & 15k/52k\\
\hline
8 & 2 & parallel & 11.2 & 2.9 & 330 & 342 & infinite\\
\hline
8 & 2 & nonparallel & 340.3 & 2.9 & 3 & 344 & infinite\\
\hline
\hline
16 & 0 & parallel & 3.4 & 6 & 164 & 168 & 8k/12k\\
\hline
16 & 0 & nonparallel & 126 & 3.4& 164 & 295 & 8k/23k\\
\hline
16 & 1 & parallel & 6.1 & 2.9& 339 & 346 & 8k/28k\\
\hline
16 & 1 & nonparallel & 255 & 1.7& 339 & 592 & infinite\\
\hline
16 & 2 & parallel & 11 & 1.5& 66 & 78 & infinite \\
\hline
16 & 2 & nonparallel & 504 & 0.85 & 7 & 512 & infinite\\
\hline
\hline
32 & 2 & parallel & 11 & 2& & &\\
\hline
32 & 2 & nonparallel & 504 & $<2$& & &\\
32 & 2 & nonparallel & 504 & $<2$\\
\hline
\end{tabular}
\caption{Readout settings. The {\tiny{min exptime}} possible is 5$-$10~$\mu$s. This is due to the time to pass the pixel enable signal in the whole chip.}
\label{tframes}
\end{flushleft}
\caption{Readout settings.}
\end{table}
\end{tiny}
\textbf{As if you run too fast, the detector could become noisier, it is important to match the detector settings to your frame rate. This can be done having more parameters files and load the one suitable with your experiment.} We experienced that {\tt{highgain}} settings could not be used at 6~kHz.
\textbf{We recommend to use the detector in 32 bit mode with {\tt{clkdivider 2}}, {\tt{flags parallel}}. We recommend to use the detector in 16 bit mode with {\tt{clkdivider 1}}, {\tt{flags parallel}}}. In general, choose first the desired dead time: this will tell you if you want to run in parallel or non parallel mode. Then, choose the maximum frame rate you want to aim, not exceeding what you aim for not to increase the noise.
\section{External triggering options}
@ -396,7 +293,7 @@ Here are the implemented options so far:
\item{\tt{gating}} allows to get a frame only when the trigger pulse is gating. Note that in this case the exp time and period only depend on the gating signal. {\tt{cycles}} allows to select how many gates to consider.
\end{itemize}
Hardware-wise, the ENABLE OUT signal outputs when the chips are really acquiring. This means that the single subframes will be output in 32 bit mode. The TRIGGER OUT outputs the sum-up-signal at the moment (which is useless). This will be changed in the future to output the envelop of the enable signal.
Hardware-wise, the ENABLE OUT signal outputs when the chips are really acquiring. This means that the single subframes will be outputted in 32 bit mode. The TRIGGER OUT outputs the sum-up-signal at the moment (which is useless). This will be changed in the future to output the envelop of the enable signal.
We are planning to change some functionality, i.e. unify the {\tt{trigger}} and {\tt{burst}} trigger modes and make both {\tt{frames}} and {\tt{cycles}} configurable at the same time.
@ -411,15 +308,6 @@ sls_detector_put 0-subexptime [time_in_s]
One needs to realize that the readout time, for each subframe is 10.5~$\mu$s if the detector is in parallel mode. 500~$\mu$s if the detector is in non parallel mode. Note that in {\tt{dr 32}}, as the single frame readout from the chip is 500~$\mu$s, no {\tt{subexptime}}$<$500~$\mu$s can be set in {\tt{parallel}} mode. To have smaller {\tt{subexptime}}, you need the {\tt{nonparallel}} mode, although this will have a larger deadtime than the acquisition time.\\
Rate corrections are possible online (and the came procedure can be used offline) by creating a look-up table between the theoretically incident counter value $c_i$ and the detected counter value $c_d$.
In the EIGER on board server, this look-up table is generated assuming that the detected rate $n_d$ can be modeled as a function of the incident rate $n_i$ according to the paralyzable counter model:
\begin{equation}
n_d= n_i \cdot exp(-n_i \cdot \tau),
\label{rate}
\end{equation}
where $\tau$ represents an effective parameter for the dead time and the loss in efficiency. The look-up table is necessary as we are interested to obtain $c_i(c_d)$ and equation~\ref{rate} is not invertible. One needs to notice that the paralizable counter model to create a look-up tables applies only if photons arrive with a continuous pattern (like at the SLS). If photons are structured in fewer but intenser bunches, deviations may arise. This is the case for some operation modes at the ESRF. For those cases we are studying how to correct, probably from a simulated correction tables if an analytical curve cannot be found.
\textbf{In the new calibration scheme, $\tau$ is given as a function of the energy. It is loaded from the trimbit files and interpolation between two trimbit files are performed.} One needs to make sure the appropriate $\tau$ value is written in the trimbit files, then need to load the appropriate {\tt{settings}} and {\tt{vthreshold}} before.
Online rate corrections can be activated for {\tt{dr=32}}. They are particularly useful in the autosumming mode as every single subframe is corrected before summing it. To correct for rate, the subframe duration has to be known to the correction algorithm. Rate corrections for {\tt{dr=16}} will be activated as well in the next firmware release.
To activate the rate corrections, one should do:\\
\begin{verbatim}
@ -429,39 +317,14 @@ To deactivate:
\begin{verbatim}
sls_detector_put 0-ratecorr 0
\end{verbatim}
Now to activate the rate corrections with the value written in the trimbit file or interpolated from there, once would do:
Default values for tau can be loaded from the trimbit files. In this case, one needs to make sure the appropriate tau value is written in the trimbit files, then need to load the appropriate {\tt{settings}} and {\tt{vthreshold}} before. Now to activate the rate corrections with the value written in the trimbit file or interpolated from there, once would do:
\begin{verbatim}
sls_detector_put 0-ratecorr -1
\end{verbatim}
Every time either the rate corrections are activated, $\tau$ is changed or the subframe length is changed, then a new correction table is evaluated. Note that computing the correction table is time consuming.
\section{Dependent parameters and limits}
Here is a list of dependent parameters:
\begin{enumerate}
\item \textbf{dr} changes \textbf{clkdivider}: \textbf{dr} 16 $\to$ \textbf{clkdivider} 1. You can change it to (0, 1, 2); the frame rate changes accordingly to table~\ref{tframes}. Setting the \textbf{dr} to 32 changes \textbf{clkdivider} to 2. Only way \textbf{dr} 32 can work.
\end{enumerate}
Here is a list of "ignored'' parameters, meaning that if the parameters are not what the detector expects, it will ignore them, but there is no guarantee that you get what you think you are asking:
\begin{enumerate}
\item \textbf{period}. Assuming that you set the correct \textbf{exptime} according to the table~\ref{tframes}, the \textbf{period} to be used by the detector has to be $>=$ \textbf{exptime}+readout time (table~\ref{tframes}). Otherwise the detector will take data at the minimum possible period, which is \textbf{exptime}+readout times. \textbf{period} is not changed by the detector after the acquisition.
\end{enumerate}
Here is a list of limits that should be checked:
\begin{enumerate}
\item
If \textbf{dr} is 32 and \textbf{clkdivider} is not 2, whatever the detector gets out is wrong (the boards cannot properly keep up)
\item If the variable \textbf{frames} is greater than what the memory can store (table~\ref{timgs}) and the frame rate exceed the continuos streaming (table~\ref{tcont}), limits on the maximum number of images need to be implemented if the period is lower than the one listed in table~\ref{tcont}. Check table~\ref{tframes} to see the different cases.
\item Running at a speed that does not support the frame rate you are asking: see table~\ref{tframes} to check if the frame rate (\textbf{period}) you are asking is compatible with the \textbf{clkdivider} you are asking.
\item Running at a redout time that does not support the frame rate you are asking. Check table~\ref{tframes} to check if the frame rate (\textbf{period}) you are asking is compatible with the \textbf{flags} you are asking.
\item The minimum allowed value for \textbf{exptime} should be 10~$\mu$s.
\item By default the {\textbf{subexptime}} is set to 2.621440~ms. Values smaller than 500~$\mu$s do not make sense. The maximum value is 5.2~s. This limits should be checked.
\end{enumerate}
\section{1Gb/s, 10Gb/s links}
\subsection{Checking the 1Gb/s, 10Gb/s physical links}\label{led}
\subsection{Checking the 1Gb/s, 10Gb/s physical links}
LEDs on the backpanel board at the back of each half module signal:
\begin{itemize}
\item the 1Gb/s physical link is signaled by the most external LED (should be green)
@ -503,26 +366,21 @@ In the example before, it would be: {\tt{zzzz}}=4*100000+ 100000
./sls_detector_put rx_fifodepth xxxx
\end{verbatim}
{\tt{xxxx}} is 100 images by default.
\item Deactivate a half module (for ROI or debugging). Note that the MASTER module SHOULD NOT be deactivated:
\item Deactivate a half module (for ROI or debugging):
\begin{verbatim}
./sls_detector_put X:activate 0
./sls_detector_put X:activated 0
\end{verbatim}
where $X$ is the half module you want to deactivate.
The receiver at this point will return fake data (overflow) for this module. If you wish to eliminate the receiver overall for this module, then you need to run a configuration file where this module has been removed.
To activate back a module, do:
\begin{verbatim}
./sls_detector_put X:activate 1
./sls_detector_put X:activated 1
\end{verbatim}
\end{itemize}
\subsection{Setting up 10Gb correctly: experience so far}\label{10g}
\subsection{Setting up 10Gb correctly: experience so far}
For configuring well the 10Gb card not to loose packets,
\begin{itemize}
\item MTU must be set up to 9000 (jumbo frames) on all the involved sides: detector, switch, server NIC
\item you should set up static MAC address tables with separated VLANs
\end{itemize}
As root, also do:
For configuring well the 10Gb card not to loose packets, as root, do:
\begin{verbatim}
ethtool -G xth1 rx 4096, ethtool -C xth1 rx-usecs 100
\end{verbatim}
@ -540,73 +398,6 @@ Very important is to activate the flow control in 10Gb (in 1Gb it is on by defau
Set the transmission delays as explained in the manual.
\section{Offline processing and monitoring}
\subsection{Data out of the detector: UDP packets}
The current UDP header format is described in figure~\ref{UDPheader}.
\begin{figure}[t]
\begin{center}
\includegraphics[width=1.2\textwidth]{EIGERUDPHeader}
\end{center}
\caption{UDP header out of EIGER}
\label{UDPheader}
\end{figure}
\subsection{Data out of the slsReceiver}
For a module, the geometry of the ports are as in table~\ref{tports}:
\begin{table}
\begin{tabular}{|c|c|}
\hline
{\tt{0:rx\_udpport 50011}} & {\tt{0:rx\_udpport2 50012}}\\
\hline
{\tt{1:rx\_udpport 50013}} & {\tt{1:rx\_udpport2 50014}}\\
\hline
\end{tabular}
\caption{UDP port geometry for a single module, 4 UDP ports.}
\label{tports}
\end{table}
white the option {\tt{n:flippeddatax 1}}, which flips in vertical the content of the module. By convection, we usually use {\tt{1:flippeddatax 1}}, but one could flip the top instead.
\subsection{``raw'' files}
If you use the option of writing raw files, you will have a raw file for each UDP port (meaning most likely 2 chips), 4 files per module. In addition to the raw files, you will get also a ``master'' file, containing in ascii some detector general parameters and the explanation of how to interpret the data from the raw files.
The master file is named: {\tt{filename\_master\_0.raw}} and for version ``3.0'' of the slsDetectorSoftware looks like:
\begin{verbatim}
Version : 1.0
Dynamic Range : 16
Ten Giga : 1
Image Size : 262144 bytes
x : 512 pixels
y : 256 pixels
Total Frames : 1
Exptime (ns) : 1000000000
SubExptime (ns) : 2621440
Period (ns) : 1000000000
Timestamp : Thu Aug 17 10:55:19 2017
#Frame Header
Frame Number : 8 bytes
SubFrame Number : 4 bytes
Packet Number : 4 bytes
Bunch ID : 8 bytes
Timestamp : 8 bytes
Module Id : 2 bytes
X Coordinate : 2 bytes
Y Coordinate : 2 bytes
Z Coordinate : 2 bytes
Debug : 4 bytes
Round Robin Number : 2 bytes
Detector Type : 1 byte
Header Version : 1 byte
\end{verbatim}
Note that if one wants to reconstruct the real time the detector was acquiring in 32 bit (autosumming mode), one would have to multiply the SubExptime (ns) for the SubFrame Number.
\subsection{Offline image reconstruction}
The offline image reconstruction is in {\tt{slsDetectorsPackage/slsImageReconstruction}}.
@ -646,7 +437,7 @@ It is important to know, that the pixels at the edge between 2 chips count more
\subsection{Read temperatures/HV from boards}
With an updated kernel on the linux boards (ask to the SLS detector group for specifications), it is possible to monitor the temperature on the boards:
With an updated kernel on the linux boards (ask to the SLS detector group for specifications), it is possible to monitor the temperature on the Back End Boards:
\begin{verbatim}
temp_fpga #gets the temperature of the fpga
temp_fpgaext #gets the temperature close to the fpga
@ -671,11 +462,11 @@ The HV can also be set and read through the software:
./sls_detector_put vhighvoltage 150
./sls_detector_get vhighvoltage
\end{verbatim}
Note that the get {\tt{vhighvoltage}} would return the measured HV from the master module only. If getting the vhighvoltage for individual halfmodules, only the master will have a value different from -999.
Note that the get {\tt{vhighvoltage}} would return the measured HV from the master module only.
\appendix
\section{Kill the server, copy a new server, start the server}\label{server}
\section{Kill the server, copy a new server, start the server}
All the below operations are form a terminal and assume you login to the boards.\\
Kill current server:
\begin{verbatim}
@ -698,19 +489,7 @@ Start the server again:
\section{Loading firmware bitfiles}
A \textbf{bcp} executable (which needs \textbf{tftp} installed on the PC, is needed.
\begin{enumerate}
\item Manual way: you need to press something on the detector. To program bitfiles (firmware files), do a hard reset with a pin/thin stuff in the holes at the very back of the module. They are between the top 7 LED and the bottom 1 and opposite for the other side. Push hard till all LEDs are alternating green and red.
\item Software way (possible only if you have the correct programs copied on your board. If not, as the sls detector group).
\begin{verbatim}
ssh root@bebxxx
cd executables
./boot_recovery
\end{verbatim}
\end{enumerate}
In both case, after booting, only the central one should be on green and red alternating.
From a terminal, do:
A \textbf{bcp} executable (which needs \textbf{tftp} installed on the PC, is needed. First of all, you need to press something on the detector: to programm bitfiles (firmware files), do a hard reset with a pin/thin stuff in the holes at the very back of the module. They are between the top 7 LED and the bottom 1 and opposite for the other side. Push hard till all LEDs are alternating green and red. After booting only the central one should be on green and red alternating. From a terminal, do:
\begin{verbatim}
nc -p 3000 -u bebxxx 3000
\end{verbatim}
@ -743,7 +522,7 @@ sls_detector_put pulsechip -1 #to get out of testing mode
\end{verbatim}
Note that the answer will be $2 \cdot \textrm{{\tt{N}}} +2$ in this case.
\item \textbf{Pulse analogically:} You want to really check the analogical part of the detector, not just the readout.
\item \textbf{Pulse analogically:} You want to really check the analogical part of the detcetor, not just the readout.
\begin{verbatim}
sls_detector_put vcall 3600
@ -767,6 +546,8 @@ For debug purposes, we have created a noise pattern with a shape. If you reconst
To load the special noise file look at {\tt{settingsdir/eiger/standard/eigernoise.sn0xx}} in the package.
\begin{verbatim}
sls_detector_put trimbits ../settingsdir/eiger/standard/eigernoise
sls_detector_put vthreshold 4000
sls_detector_put vtr 4000
\end{verbatim}
\section{Running the (9M at cSAXS. For now)}
@ -777,255 +558,5 @@ sls_detector_put trimbits ../settingsdir/eiger/standard/eigernoise
\item p config ../../eiger\_9m\_10gb\_xbl-daq-27\_withbottom.config
\end{itemize}
\section{Troubleshooting}
\subsection{Cannot successfully finish an acquisition}
\subsubsection{only master module return from acquisition}
When no packets are received AND detector states in 'running status'. Widest list of causes.
Query the status of each half module till the maximum number {\tt{N}}, {\tt{for i in \$(seq\ 0\ N); do sls\_detector\_get \$i:status; done}}, to check if there are half modules that are still running.
If only the master modules return but ALL the other half modules do not:
\begin{itemize}
\item FEB LED 1 and or 3 become red while trying to acquire an image: reconnect or change the DDR2 memories. Technically it is a FIFO problem to communicate the data to the rest of the chain.
\item It can be that the master cable is not connected, check.
\item It can be that the synchronization cable is not connected or the termination board at the synchronization does not work. Check.
\end{itemize}
\subsubsection{a few modules do not return from acquisition}
If only a few modules are still running but the others return, it is a real problem with a backend board or a synchronization bug.
If you can, ssh into the board, kill and start the eigerDetectorServer again (see Section~\ref{server} for how to do this). Keep the terminal with the output from the eigerDetectorServer and repeat the acquisition.
\begin{itemize}
\item Check if the acquisition returned from the server or not. In case seek help from the SLSDetectorGroup.
\item In the server you read something along the lines of "cannot read top right address". It is communication between the front and backend board. Or FEB FPGA is not programmed. Try to program again FPGA, and make sure you program FPGA bit files 70x, if you have 70x FPGAs, or 30x, if you have 30x FPGAs. If still fails, tell the SLSDetectorGroup as it could be a hardware permanent failure.
\end{itemize}
\subsection{No packets (or very little) are received}
In both cases running \textbf{wireshark} set to receive UDP packets on the ethernet interface of the receiver (filter the UDPport$>=$xxxx, where xxxx is written in the configuration file) can help you understanding if NO packets are seen or some packets are seen. You have to set the buffer size of the receiving device in wireshark to 100Mbyte minimum. If no packets are received, check that your receiving interface and detector UDPIPs are correct (if in 10Gb). Most of the time in this case it is a basic configuration problem.
If some packets are received, but not all, then it is an optimization problem:
\begin{itemize}
\item For receiving data over 1Gb, the switch must have FLOW CONTROL enabled
\item If using 10GbE, check that the 10Gb link is active on the backpanel board. Then refer to Section~\ref{10g} to see how to configure the 10Gb ports on the receiving machine correctly.
\end{itemize}
\subsection{The module seems dead, no lights on BEBs, no IP addresses}
\begin{itemize}
\item Check the 2 fuses on the power distribution board. If one of the fuses is in shortcuircuit, then exchange it. Nominal values are 7 A and 5 A. Old modules with 5 A and 3 A could trip.
\item The module is not properly cooled and the temperature safety switch has killed the power to the backend boards.
\end{itemize}
\subsection{The module seems powered but no IP addresses}
If the 1G LED (see Section~\ref{led}) on the backpanel board is not green:
\begin{itemize}
\item Check that the 1Gb cable is plugged in.
\item Check that there is a DCHP server assigning IP addresses to the board.
\item The IP address is assigned only at booting up of the boards. Try to reboot in case the board booted before it could have an IP address.
\item Check that you did not run out of IP addresses
\end{itemize}
Check that the board is not in recovery mode (i.e. the central LED on the back is stable green). In this case reboot the board with the soft reset or power cycle it.
If the 1Gb LED on the backpanel board is green (see Section~\ref{led}):
\begin{itemize}
\item Check that the IP address has been refreshed on the PC you are trying to communicate to the detector from. Run on the PC as root the following command to update the DNS cache: \textbf{nscd -i hosts}
\end{itemize}
\subsection{Receiver cannot open socket}
It is connected to the TCPport which the receiver uses:
\begin{itemize}
\item The port is already in use by the same receiver already opened somewhere or by another process: check with \textbf{ps -uxc} your processes
\item In rare cases, it might be that the TCP port crashes. To find out which process uses the TCPPOrt do: \textbf{netstat -nlp | grep xxxx}, where xxxx is the tcpport number. To display open ports and established TCP connections, enter: \textbf{netstat -vatn}. Kill the process.
%%%#To display only open UDP ports try the following command: netstat -vaun
\end{itemize}
\subsection{Client has \textbf{shmget error}}
Note that occasionally if there is a shared memory of a different size (from an older software version), it will return also a line like this:
\begin{verbatim}
*** shmget error (server) ***-1
\end{verbatim}
This needs to be cleaned with {\tt{ipcs -m}} and then {\tt{ipcrm -M xxx}}, where xxx are the keys with nattch 0. Alternative in the main slsDetectorFolder there is a script that can be used as {\tt{sh cleansharedmemory.sh}}. Note that you need to run the script with the account of the client user, as the shared memory belongs to the client. It is good procedure to implement an automatic cleanup of the shared memory if the client user changes often.
\subsection{Measure the HV}
For every system but not the 9M:
\begin{itemize}
\item Software-wise measure it (now the software returns the measured value), with {\tt{sls\_detector\_get vhighvoltage}}. The returned value is the HV (for proper Eiger setting is approximately 150~V) if it is correctly set. If two master modules are presents (multi systems), the average is returned (still to be tested). If one asks for the individual $n$ half module bias voltage through {\tt{sls\_detector\_get n:vhighvoltage}}, if the $n$ module is a master, the actual voltage will be returned. If it is a slave, -999 will be returned.
\item Hardware-wise measure value of HV on C14 on the power distribution board. Check also that the small HV connector cable is really connected.
\end{itemize}
\subsection{The image now has a vertical line}
Check if the vertical line has a length of 256 pixels and a width of 8 columns. In this case it is a dataline beeing bad. It can be either a wirebond problem or a frontend board problem. try to read the FEB temperature (see Section~\ref{}) and report the problem to the SLSDetector group. Most likely it will be a long term fix by checking the hardware.
\subsection{The image now has more vertical lines}
If you see strange lines in vertical occurring at period patterns, it is a memory problem. The pattern is 4 columns periodic in 16 bit mode, 8 columns periodic in 8 bit mode and 2 columns periodic in 32 bit mode. Try to switch on and off (sometimes it is a strange initialization problem).
\subsection{ssh to the boards takes long}
Depending on your network setup, to speed up the ssh to the boards from a pc with internal dhcp server running: \textbf{iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE; echo "1" > /proc/sys/net/ipv4/ip\_forward}, where eth1 has to be the 1Gb network device on the pc
\subsection{Check firmware version installed on BEB}
Follow some steps described in Section~\label{server}.
\begin{verbatim}
ssh root@bebxxx #password is root
killall eigerDetectorServer # kill server and stopserver
cd executables/
./eigerDetectorServer&
\end{verbatim}
Scroll up in the terminal till you find {\tt{Firmware Version: xx}}
\subsection{Check if half-module is a master, a slave, a top or a bottom}
Follow some steps described in Section~\label{server}.
\begin{verbatim}
ssh root@bebxxx #password is root
killall eigerDetectorServer # kill server and stopserver
cd executables/
./eigerDetectorServer&
\end{verbatim}
Scroll up in the terminal till you find:\\
*************** TOP/BOTTOM ***************\\
*************** MASTER/SLAVE ***************\\
*************** NORMAL/SPECIAL ***************\\
\section{Client checks - command line}
Guide on returned strings:
\begin{enumerate}
\item \begin{verbatim}
sls_detector_get free
\end{verbatim}
Returns a list of shared memories cleaned (variable number depending on detector):
\begin{verbatim}
Shared memory 273612805 deleted
Shared memory 276922374 deleted
Shared memory 270270468 deleted
free freed
\end{verbatim}
Note that occasionally if there is a shared memory of a different size (from an older software version), it will return also a line like this:
\begin{verbatim}
*** shmget error (server) ***-1
\end{verbatim}
This needs to be cleaned with {\tt{ipcs -m}} and then {\tt{ipcrm -M xxx}}, where xxx are the keys with nattch 0.
\item \begin{verbatim}sls_detector_get settings
settings standard
\end{verbatim}
{\tt{standard}} is only if correct. {\tt{undefined}} or anything else is wrong.
\item \begin{verbatim}
sls_detector_get threshold
threshold xxxx
\end{verbatim}
Returns a string (xxxx) that can be interpreted as the threshold in eV. If it fails to set it, returns the last threshold it was set (which the detector still has). If settings are not defined or different trimbits are chosen, it will return "undefined".
\item \begin{verbatim}
sls_detector_get fname
fname string
\end{verbatim}
\item \begin{verbatim}
sls_detector_get exptime
exptime number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as a float in (s).
\item \begin{verbatim}
sls_detector_get period
period number
\end{verbatim}
where {\tt{nuymber}} is a string to be interpreted as a float in (s).
\item \begin{verbatim}
sls_detector_get frames
frames number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as an integer.
\item \begin{verbatim}
sls_detector_get cycles
cycles number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as an integer.
\item \begin{verbatim}
sls_detector_get status
status string
\end{verbatim}
where {\tt{string}} can be {\tt{idle}} or {\tt{running}}.
\item \begin{verbatim}
sls_detector_get index
status number
\end{verbatim}
where {\tt{number}} is a string to be interpreted as an integer.
\item \begin{verbatim}
sls_detector_get dr
dr number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an integer (4/8/16/32).
\item \begin{verbatim}
sls_detector_get clkdivider
clkdivider number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an integer (0/1/2/3).
\item \begin{verbatim}
sls_detector_get flags
flags string1 string2
\end{verbatim}
where {\tt{string1}} is a string should be always {\tt{continous}} and {\tt{string2}} can be either {\tt{nonparallel}} or {\tt{parallel}}.
\item \begin{verbatim}
sls_detector_get timing
timing string
\end{verbatim}
where {\tt{string}} is a string which can be {\tt{auto/trigger/burst\_trigger/gating}}.
\item \begin{verbatim}
sls_detector_get enablefwrite
enablefwrite number
\end{verbatim}
where {\tt{number}} is a string which should be interpreted as an integer "0" or "1".
\item \begin{verbatim}
sls_detector_get framescaught
framescaught number
\end{verbatim}
where {\tt{number}} is a string which should be interpreted as an integer of the complete frames got by the receiver.
\item \begin{verbatim}
sls_detector_get frameindex
frameindex number
\end{verbatim}
where {\tt{number}} is a string which should be interpreted as an integer of the last frame number read from firmware. It comes from the receiver, though and reset after every acquisition series.
\item \begin{verbatim}
sls_detector_get subexptime
subexptime number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as a float in s. The default value is 0.002621440.
\item \begin{verbatim}
sls_detector_get ratecorr
ratecorr number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as a float in s. 0.000000 means correction off. Values above zero are the value of $\tau$ in ns.
\item \begin{verbatim}
sls_detector_get vhighvoltage
vhighvoltage number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an int and for proper Eiger setting is approximately 150~V if it is correctly set. If two master modules are presents (multi systems), the average is returned (still to be tested). If one asks for the individual $n$ half module bias voltage through {\tt{sls\_detector\_get n:vhighvoltage}}, if the $n$ module is a master, the actual voltage will be returned. If it is a slave, -999 will be returned.
\item \begin{verbatim}
sls_detector_get busy
busy number
\end{verbatim}
where {\tt{number}} is a string that should be interpreted as an int for 0/1 meaning no/yes. This command tells if the sharedmemory has in memory that an acquisition has been started or not. It should allows to use the non blocking acquire, regardless of any delay to the detector getting into 'running' mode.
\end{enumerate}
\end{document}

View File

@ -1,5 +1,6 @@
DESTDIR?=../docs
#manual-api manual-calwiz manual-client manual-gui manual-main
@ -10,50 +11,34 @@ MAINTEXS= slsDetectorClientHowTo.tex
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
#TARGETS=$(join $(DESTDIR)/, $(notdir $(MAINTEXS:.tex=.pdf)))
#destdir?!?!?
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
all: docs pdf html
#destdir?!?!?
all: $(PDFS) $(HTMLS)
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
@ -69,10 +54,4 @@ $(HTMLS): $(MAINTEXS)
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

View File

@ -125,7 +125,7 @@ Refer to detailed documentation to understand how the different timing modes wor
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[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), \textit{storeinram} (for buffered readout), \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.
@ -395,7 +395,7 @@ 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]
@ -403,11 +403,9 @@ 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
Returns the current settings of the detector.
\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.
For photon counting detectors, returns the detector threshold in eV, -1 if undefined.
\item[timing]
Returns the acquisition timing mode of the detector.
Refer to the detailed documentation to understand how the different timing modes work.
@ -417,10 +415,10 @@ Returns the path where the output files are saved to.
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''
Returns the exposure time of a single acquisition in seconds.
Refer to detailed documentation to understand how the different timing modes work.
\item[period]
Returns the frames period (in s). Example: ``period 1.000000000''
Returns the frames period (in s).
Refer to detailed documentation to understand how the different timing modes work.
\item[delay]
Returns the delay after trigger in triggered mode (in s).
@ -429,19 +427,18 @@ Refer to detailed documentation to understand how the different timing modes wor
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''
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).
Note that the total number of images is frames times cycles.
Refer to detailed documentation to understand how the different timing modes work.
\item[cycles n]
Returns the number of cycles (e.g. number of triggers). Returned as atring to be interpreted as an integer ``cycles integer''
Returns the number of cycles (e.g. number of triggers).
Note that the total number of images is frames times cycles.
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[dr] Returns the dynamic range n (in bits) of the data for a photon counting detector.
\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.
@ -579,15 +576,9 @@ Advanced commands to configure the detector system. Should be left to the config
\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[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}
@ -607,7 +598,7 @@ Settable communication parameters:
\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[framescaught] Returns the number of frames received.
\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).
@ -663,31 +654,23 @@ Advanced settings changing the analog or digital performance of the acquisition.
\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 [vtr] Returns vtr
\item [vrf] Returns vrf
\item [vrs] Returns vrs
\item [vtgstv] Returns vtgstv
\item[vcmp\_ll] Returns vcmp\_ll
\item [vcmp\_lr] Returns vcmp\_lr
\item [vcmp\_rl] Returns vcmp\_rl
\item [vcmp\_rr] Returns vcmp\_rr
\item [vcall] Returns vcall
\item [rxb\_rb] Returns rxb\_rb
\item [rxb\_lb] Returns rxb\_rb
\item [vcp] Returns vcp
\item [vcn] Returns vcn
\item [vis] Returns vis
\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.

View File

@ -1 +0,0 @@
../../slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp

View File

@ -8,32 +8,40 @@ TEX=latex
MAINTEXS= slsDetectorGuiHowTo.tex
#TEXS=
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
#TARGETS=$(join $(DESTDIR)/, $(notdir $(MAINTEXS:.tex=.pdf)))
#destdir?!?!?
DVIS = $(MAINTEXS:.tex=.dvi)
PSS = $(MAINTEXS:.tex=.ps)
PDFS = $(MAINTEXS:.tex=.pdf)
HTMLS = $(MAINTEXS:%.tex=%)
all: pdf html
#destdir?!?!?
all: $(PDFS) $(HTMLS)
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/$@)
$(HTMLS): $(TEXS) $(MAINTEXS)
latex $@.tex
latex2html -split 4 $@.tex
mv $@ $(DESTDIR)/html
%.dvi : %.tex $(TEXS)
latex $<
@ -49,5 +57,3 @@ $(HTMLS): $(MAINTEXS)
clean:
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)
rm -rf $(DESTDIR)/html/slsDetectorGuiHowTo
rm -rf $(DESTDIR)/pdf/slsDetectorGuiHowTo.pdf

View File

@ -1,58 +1,42 @@
DESTDIR=../docs
DESTDIR=../
TEX=latex
MAINTEXS2= slsDetectorInstall.tex
MAINTEXS=slsDetectors-FAQ.tex
MAINTEXS= slsDetectors-FAQ.tex slsDetectorInstall.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=%)
#destdir?!?!?
all: pdf html
all: $(PDFS) $(HTMLS)
echo $(PWD)
echo $(PDFS)
echo $(PDFS2)
echo $(HTMLS)
echo $(HTMLS2)
pdf: $(PDFS) $(PDFS2)
pdf: $(PDFS)
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
$(shell test -d $(DESTDIR)/pdf || mkdir -p $(DESTDIR)/pdf)
mv $(PDFS) $(DESTDIR)/pdf
mv $(PDFS2) $(DESTDIR)/pdf
mv $(PDFS) $(DESTDIR)/pdf
html: $(HTMLS) $(HTMLS2)
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 -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
latex2html -split 4 $@.tex
mv $(HTMLS) $(DESTDIR)/html
%.dvi : %.tex $(TEXS)
@ -68,8 +52,4 @@ $(HTMLS2): $(MAINTEXS2)
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
rm -rf *.aux *.log *.toc *.out $(DVIS) $(PSS) $(PDFS) $(HTMLS)

View File

@ -1,674 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 567 548
%%Title: /afs/psi.ch/project/mythen/root_macros20100305/effiSiHardXRays2.eps: c1
%%Creator: ROOT Version 5.20/00
%%CreationDate: Tue Jan 29 15:39:22 2013
%%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 2191 0 0 bf black 3 lw 1 1 1 c 1951 1709 249 219 bf black 1951 1709 249 219 bl 1 1 1 c 1951 1709 249 219 bf black 1951 1709 249 219 bl 1 1 1 c 0.967333 0.186667 0 c 20 86
249 219 bf 0.673333 0.0666667 0 c 19 86 269 219 bf 0.608 0.04 0 c 20 86 288 219 bf 0.575333 0.0266667 0 c 19 86 308 219 bf 0.542667 0.0133333 0 c 20 86 327 219 bf 19 86 347 219 bf 20 86 366 219 bf 19 86 386 219 bf 20 86 405 219 bf 19 86 425 219 bf
20 86 444 219 bf 19 86 464 219 bf 20 86 483 219 bf 19 86 503 219 bf 20 86 522 219 bf 19 86 542 219 bf 20 86 561 219 bf 19 86 581 219 bf 20 86 600 219 bf 19 86 620 219 bf 20 86 639 219 bf 20 86 659 219 bf 19 86 679 219 bf 20 86 698 219 bf 19 86 718
219 bf 20 86 737 219 bf 19 86 757 219 bf 20 86 776 219 bf 19 86 796 219 bf 20 86 815 219 bf 19 86 835 219 bf 20 86 854 219 bf 19 86 874 219 bf 20 86 893 219 bf 19 86 913 219 bf 20 86 932 219 bf 19 86 952 219 bf 20 86 971 219 bf 19 86 991 219 bf 20
86 1010 219 bf 19 86 1030 219 bf 20 86 1049 219 bf 19 86 1069 219 bf 20 86 1088 219 bf 19 86 1108 219 bf 20 86 1127 219 bf 19 86 1147 219 bf 20 86 1166 219 bf 19 86 1186 219 bf 20 86 1205 219 bf 19 86 1225 219 bf 20 86 1244 219 bf 19 86 1264 219 bf
20 86 1283 219 bf 19 86 1303 219 bf 20 86 1322 219 bf 19 86 1342 219 bf 20 86 1361 219 bf 19 86 1381 219 bf 20 86 1400 219 bf 19 86 1420 219 bf 20 86 1439 219 bf 19 86 1459 219 bf 20 86 1478 219 bf 19 86 1498 219 bf 20 86 1517 219 bf 19 86 1537 219
bf 20 86 1556 219 bf 19 86 1576 219 bf 20 86 1595 219 bf 19 86 1615 219 bf 20 86 1634 219 bf 19 86 1654 219 bf 20 86 1673 219 bf 19 86 1693 219 bf 20 86 1712 219 bf 19 86 1732 219 bf 20 86 1751 219 bf 19 86 1771 219 bf 20 86 1790 219 bf 19 86 1810
219 bf 20 86 1829 219 bf 19 86 1849 219 bf 20 86 1868 219 bf 19 86 1888 219 bf 20 86 1907 219 bf 19 86 1927 219 bf 20 86 1946 219 bf 19 86 1966 219 bf 20 86 1985 219 bf 19 86 2005 219 bf 20 86 2024 219 bf 19 86 2044 219 bf 20 86 2063 219 bf 19 86
2083 219 bf 20 86 2102 219 bf 19 86 2122 219 bf 20 86 2141 219 bf 19 86 2161 219 bf 20 86 2180 219 bf 0.967333 0.186667 0 c 20 85 249 305 bf 0.706 0.08 0 c 19 85 269 305 bf 0.608 0.04 0 c 20 85 288 305 bf 0.575333 0.0266667 0 c 19 85 308 305 bf
0.542667 0.0133333 0 c 20 85 327 305 bf 19 85 347 305 bf 20 85 366 305 bf 19 85 386 305 bf 20 85 405 305 bf 19 85 425 305 bf 20 85 444 305 bf 19 85 464 305 bf 20 85 483 305 bf 19 85 503 305 bf 20 85 522 305 bf 19 85 542 305 bf 20 85 561 305 bf 19
85 581 305 bf 20 85 600 305 bf 19 85 620 305 bf 20 85 639 305 bf 20 85 659 305 bf 19 85 679 305 bf 20 85 698 305 bf 19 85 718 305 bf 20 85 737 305 bf 19 85 757 305 bf 20 85 776 305 bf 19 85 796 305 bf 20 85 815 305 bf 19 85 835 305 bf 20 85 854 305
bf 19 85 874 305 bf 20 85 893 305 bf 19 85 913 305 bf 20 85 932 305 bf 19 85 952 305 bf 20 85 971 305 bf 19 85 991 305 bf 20 85 1010 305 bf 19 85 1030 305 bf 20 85 1049 305 bf 19 85 1069 305 bf 20 85 1088 305 bf 19 85 1108 305 bf 20 85 1127 305 bf
19 85 1147 305 bf 20 85 1166 305 bf 19 85 1186 305 bf 20 85 1205 305 bf 19 85 1225 305 bf 20 85 1244 305 bf 19 85 1264 305 bf 20 85 1283 305 bf 19 85 1303 305 bf 20 85 1322 305 bf 19 85 1342 305 bf 20 85 1361 305 bf 19 85 1381 305 bf 20 85 1400 305
bf 19 85 1420 305 bf 20 85 1439 305 bf 19 85 1459 305 bf 20 85 1478 305 bf 19 85 1498 305 bf 20 85 1517 305 bf 19 85 1537 305 bf 20 85 1556 305 bf 19 85 1576 305 bf 20 85 1595 305 bf 19 85 1615 305 bf 20 85 1634 305 bf 19 85 1654 305 bf 20 85 1673
305 bf 19 85 1693 305 bf 20 85 1712 305 bf 19 85 1732 305 bf 20 85 1751 305 bf 19 85 1771 305 bf 20 85 1790 305 bf 19 85 1810 305 bf 20 85 1829 305 bf 19 85 1849 305 bf 20 85 1868 305 bf 19 85 1888 305 bf 20 85 1907 305 bf 19 85 1927 305 bf 20 85
1946 305 bf 19 85 1966 305 bf 20 85 1985 305 bf 19 85 2005 305 bf 20 85 2024 305 bf 19 85 2044 305 bf 20 85 2063 305 bf 19 85 2083 305 bf 20 85 2102 305 bf 19 85 2122 305 bf 20 85 2141 305 bf 19 85 2161 305 bf 20 85 2180 305 bf 0.956667 0.466667
0.04 c 20 85 249 390 bf 0.902 0.16 0 c 19 85 269 390 bf 0.771333 0.106667 0 c 20 85 288 390 bf 0.706 0.08 0 c 19 85 308 390 bf 0.673333 0.0666667 0 c 20 85 327 390 bf 0.640667 0.0533333 0 c 19 85 347 390 bf 0.608 0.04 0 c 20 85 366 390 bf 0.575333
0.0266667 0 c 19 85 386 390 bf 20 85 405 390 bf 19 85 425 390 bf 0.542667 0.0133333 0 c 20 85 444 390 bf 19 85 464 390 bf 20 85 483 390 bf 19 85 503 390 bf 20 85 522 390 bf 19 85 542 390 bf 20 85 561 390 bf 19 85 581 390 bf 20 85 600 390 bf 19 85
620 390 bf 20 85 639 390 bf 20 85 659 390 bf 19 85 679 390 bf 20 85 698 390 bf 19 85 718 390 bf 20 85 737 390 bf 19 85 757 390 bf 20 85 776 390 bf 19 85 796 390 bf 20 85 815 390 bf 19 85 835 390 bf 20 85 854 390 bf 19 85 874 390 bf 20 85 893 390 bf
19 85 913 390 bf 20 85 932 390 bf 19 85 952 390 bf 20 85 971 390 bf 19 85 991 390 bf 20 85 1010 390 bf 19 85 1030 390 bf 20 85 1049 390 bf 19 85 1069 390 bf 20 85 1088 390 bf 19 85 1108 390 bf 20 85 1127 390 bf 19 85 1147 390 bf 20 85 1166 390 bf
19 85 1186 390 bf 20 85 1205 390 bf 19 85 1225 390 bf 20 85 1244 390 bf 19 85 1264 390 bf 20 85 1283 390 bf 19 85 1303 390 bf 20 85 1322 390 bf 19 85 1342 390 bf 20 85 1361 390 bf 19 85 1381 390 bf 20 85 1400 390 bf 19 85 1420 390 bf 20 85 1439 390
bf 19 85 1459 390 bf 20 85 1478 390 bf 19 85 1498 390 bf 20 85 1517 390 bf 19 85 1537 390 bf 20 85 1556 390 bf 19 85 1576 390 bf 20 85 1595 390 bf 19 85 1615 390 bf 20 85 1634 390 bf 19 85 1654 390 bf 20 85 1673 390 bf 19 85 1693 390 bf 20 85 1712
390 bf 19 85 1732 390 bf 20 85 1751 390 bf 19 85 1771 390 bf 20 85 1790 390 bf 19 85 1810 390 bf 20 85 1829 390 bf 19 85 1849 390 bf 20 85 1868 390 bf 19 85 1888 390 bf 20 85 1907 390 bf 19 85 1927 390 bf 20 85 1946 390 bf 19 85 1966 390 bf 20 85
1985 390 bf 19 85 2005 390 bf 20 85 2024 390 bf 19 85 2044 390 bf 20 85 2063 390 bf 19 85 2083 390 bf 20 85 2102 390 bf 19 85 2122 390 bf 20 85 2141 390 bf 19 85 2161 390 bf 20 85 2180 390 bf 0.944286 0.542857 0.0514286 c 20 86 249 475 bf 0.967333
0.186667 0 c 19 86 269 475 bf 0.836667 0.133333 0 c 20 86 288 475 bf 0.771333 0.106667 0 c 19 86 308 475 bf 0.706 0.08 0 c 20 86 327 475 bf 0.673333 0.0666667 0 c 19 86 347 475 bf 0.640667 0.0533333 0 c 20 86 366 475 bf 0.608 0.04 0 c 19 86 386 475
bf 20 86 405 475 bf 0.575333 0.0266667 0 c 19 86 425 475 bf 20 86 444 475 bf 19 86 464 475 bf 20 86 483 475 bf 0.542667 0.0133333 0 c 19 86 503 475 bf 20 86 522 475 bf 19 86 542 475 bf 20 86 561 475 bf 19 86 581 475 bf 20 86 600 475 bf 19 86 620
475 bf 20 86 639 475 bf 20 86 659 475 bf 19 86 679 475 bf 20 86 698 475 bf 19 86 718 475 bf 20 86 737 475 bf 19 86 757 475 bf 20 86 776 475 bf 19 86 796 475 bf 20 86 815 475 bf 19 86 835 475 bf 20 86 854 475 bf 19 86 874 475 bf 20 86 893 475 bf 19
86 913 475 bf 20 86 932 475 bf 19 86 952 475 bf 20 86 971 475 bf 19 86 991 475 bf 20 86 1010 475 bf 19 86 1030 475 bf 20 86 1049 475 bf 19 86 1069 475 bf 20 86 1088 475 bf 19 86 1108 475 bf 20 86 1127 475 bf 19 86 1147 475 bf 20 86 1166 475 bf 19
86 1186 475 bf 20 86 1205 475 bf 19 86 1225 475 bf 20 86 1244 475 bf 19 86 1264 475 bf 20 86 1283 475 bf 19 86 1303 475 bf 20 86 1322 475 bf 19 86 1342 475 bf 20 86 1361 475 bf 19 86 1381 475 bf 20 86 1400 475 bf 19 86 1420 475 bf 20 86 1439 475 bf
19 86 1459 475 bf 20 86 1478 475 bf 19 86 1498 475 bf 20 86 1517 475 bf 19 86 1537 475 bf 20 86 1556 475 bf 19 86 1576 475 bf 20 86 1595 475 bf 19 86 1615 475 bf 20 86 1634 475 bf 19 86 1654 475 bf 20 86 1673 475 bf 19 86 1693 475 bf 20 86 1712 475
bf 19 86 1732 475 bf 20 86 1751 475 bf 19 86 1771 475 bf 20 86 1790 475 bf 19 86 1810 475 bf 20 86 1829 475 bf 19 86 1849 475 bf 20 86 1868 475 bf 19 86 1888 475 bf 20 86 1907 475 bf 19 86 1927 475 bf 20 86 1946 475 bf 19 86 1966 475 bf 20 86 1985
475 bf 19 86 2005 475 bf 20 86 2024 475 bf 19 86 2044 475 bf 20 86 2063 475 bf 19 86 2083 475 bf 20 86 2102 475 bf 19 86 2122 475 bf 20 86 2141 475 bf 19 86 2161 475 bf 20 86 2180 475 bf 0.888571 0.885714 0.102857 c 20 85 249 561 bf 0.956667
0.466667 0.04 c 19 85 269 561 bf 0.981429 0.314286 0.0171429 c 20 85 288 561 bf 1 0.2 0 c 19 85 308 561 bf 0.934667 0.173333 0 c 20 85 327 561 bf 0.869333 0.146667 0 c 19 85 347 561 bf 0.836667 0.133333 0 c 20 85 366 561 bf 0.804 0.12 0 c 19 85 386
561 bf 0.771333 0.106667 0 c 20 85 405 561 bf 0.738667 0.0933333 0 c 19 85 425 561 bf 0.706 0.08 0 c 20 85 444 561 bf 19 85 464 561 bf 0.673333 0.0666667 0 c 20 85 483 561 bf 19 85 503 561 bf 0.640667 0.0533333 0 c 20 85 522 561 bf 19 85 542 561 bf
20 85 561 561 bf 0.608 0.04 0 c 19 85 581 561 bf 20 85 600 561 bf 19 85 620 561 bf 20 85 639 561 bf 20 85 659 561 bf 0.575333 0.0266667 0 c 19 85 679 561 bf 20 85 698 561 bf 19 85 718 561 bf 20 85 737 561 bf 19 85 757 561 bf 20 85 776 561 bf 19 85
796 561 bf 20 85 815 561 bf 19 85 835 561 bf 0.542667 0.0133333 0 c 20 85 854 561 bf 19 85 874 561 bf 20 85 893 561 bf 19 85 913 561 bf 20 85 932 561 bf 19 85 952 561 bf 20 85 971 561 bf 19 85 991 561 bf 20 85 1010 561 bf 19 85 1030 561 bf 20 85
1049 561 bf 19 85 1069 561 bf 20 85 1088 561 bf 19 85 1108 561 bf 20 85 1127 561 bf 19 85 1147 561 bf 20 85 1166 561 bf 19 85 1186 561 bf 20 85 1205 561 bf 19 85 1225 561 bf 20 85 1244 561 bf 19 85 1264 561 bf 20 85 1283 561 bf 19 85 1303 561 bf 20
85 1322 561 bf 19 85 1342 561 bf 20 85 1361 561 bf 19 85 1381 561 bf 20 85 1400 561 bf 19 85 1420 561 bf 20 85 1439 561 bf 19 85 1459 561 bf 20 85 1478 561 bf 19 85 1498 561 bf 20 85 1517 561 bf 19 85 1537 561 bf 20 85 1556 561 bf 19 85 1576 561 bf
20 85 1595 561 bf 19 85 1615 561 bf 20 85 1634 561 bf 19 85 1654 561 bf 20 85 1673 561 bf 19 85 1693 561 bf 20 85 1712 561 bf 19 85 1732 561 bf 20 85 1751 561 bf 19 85 1771 561 bf 20 85 1790 561 bf 19 85 1810 561 bf 20 85 1829 561 bf 19 85 1849 561
bf 20 85 1868 561 bf 19 85 1888 561 bf 20 85 1907 561 bf 19 85 1927 561 bf 20 85 1946 561 bf 19 85 1966 561 bf 20 85 1985 561 bf 19 85 2005 561 bf 20 85 2024 561 bf 19 85 2044 561 bf 20 85 2063 561 bf 19 85 2083 561 bf 20 85 2102 561 bf 19 85 2122
561 bf 20 85 2141 561 bf 19 85 2161 561 bf 20 85 2180 561 bf 0.7975 0.984167 0.193333 c 20 86 249 646 bf 0.925714 0.657143 0.0685714 c 19 86 269 646 bf 0.956667 0.466667 0.04 c 20 86 288 646 bf 0.975238 0.352381 0.0228571 c 19 86 308 646 bf
0.987619 0.27619 0.0114286 c 20 86 327 646 bf 1 0.2 0 c 19 86 347 646 bf 0.967333 0.186667 0 c 20 86 366 646 bf 0.934667 0.173333 0 c 19 86 386 646 bf 0.902 0.16 0 c 20 86 405 646 bf 0.869333 0.146667 0 c 19 86 425 646 bf 0.836667 0.133333 0 c 20
86 444 646 bf 0.804 0.12 0 c 19 86 464 646 bf 20 86 483 646 bf 0.771333 0.106667 0 c 19 86 503 646 bf 20 86 522 646 bf 0.738667 0.0933333 0 c 19 86 542 646 bf 20 86 561 646 bf 0.706 0.08 0 c 19 86 581 646 bf 20 86 600 646 bf 19 86 620 646 bf
0.673333 0.0666667 0 c 20 86 639 646 bf 20 86 659 646 bf 19 86 679 646 bf 20 86 698 646 bf 0.640667 0.0533333 0 c 19 86 718 646 bf 20 86 737 646 bf 19 86 757 646 bf 20 86 776 646 bf 19 86 796 646 bf 0.608 0.04 0 c 20 86 815 646 bf 19 86 835 646 bf
20 86 854 646 bf 19 86 874 646 bf 20 86 893 646 bf 19 86 913 646 bf 20 86 932 646 bf 19 86 952 646 bf 0.575333 0.0266667 0 c 20 86 971 646 bf 19 86 991 646 bf 20 86 1010 646 bf 19 86 1030 646 bf 20 86 1049 646 bf 19 86 1069 646 bf 20 86 1088 646 bf
19 86 1108 646 bf 20 86 1127 646 bf 19 86 1147 646 bf 20 86 1166 646 bf 19 86 1186 646 bf 20 86 1205 646 bf 19 86 1225 646 bf 0.542667 0.0133333 0 c 20 86 1244 646 bf 19 86 1264 646 bf 20 86 1283 646 bf 19 86 1303 646 bf 20 86 1322 646 bf 19 86
1342 646 bf 20 86 1361 646 bf 19 86 1381 646 bf 20 86 1400 646 bf 19 86 1420 646 bf 20 86 1439 646 bf 19 86 1459 646 bf 20 86 1478 646 bf 19 86 1498 646 bf 20 86 1517 646 bf 19 86 1537 646 bf 20 86 1556 646 bf 19 86 1576 646 bf 20 86 1595 646 bf 19
86 1615 646 bf 20 86 1634 646 bf 19 86 1654 646 bf 20 86 1673 646 bf 19 86 1693 646 bf 20 86 1712 646 bf 19 86 1732 646 bf 20 86 1751 646 bf 19 86 1771 646 bf 20 86 1790 646 bf 19 86 1810 646 bf 20 86 1829 646 bf 19 86 1849 646 bf 20 86 1868 646 bf
19 86 1888 646 bf 20 86 1907 646 bf 19 86 1927 646 bf 20 86 1946 646 bf 19 86 1966 646 bf 20 86 1985 646 bf 19 86 2005 646 bf 20 86 2024 646 bf 19 86 2044 646 bf 20 86 2063 646 bf 19 86 2083 646 bf 20 86 2102 646 bf 19 86 2122 646 bf 20 86 2141 646
bf 19 86 2161 646 bf 20 86 2180 646 bf 0.61625 0.944583 0.376667 c 20 85 249 732 bf 0.888571 0.885714 0.102857 c 19 85 269 732 bf 0.919524 0.695238 0.0742857 c 20 85 288 732 bf 0.938095 0.580952 0.0571429 c 19 85 308 732 bf 0.956667 0.466667 0.04 c
20 85 327 732 bf 0.962857 0.428571 0.0342857 c 19 85 347 732 bf 0.975238 0.352381 0.0228571 c 20 85 366 732 bf 0.981429 0.314286 0.0171429 c 19 85 386 732 bf 0.987619 0.27619 0.0114286 c 20 85 405 732 bf 0.99381 0.238095 0.00571429 c 19 85 425 732
bf 1 0.2 0 c 20 85 444 732 bf 0.967333 0.186667 0 c 19 85 464 732 bf 0.934667 0.173333 0 c 20 85 483 732 bf 19 85 503 732 bf 0.902 0.16 0 c 20 85 522 732 bf 19 85 542 732 bf 0.869333 0.146667 0 c 20 85 561 732 bf 19 85 581 732 bf 0.836667 0.133333
0 c 20 85 600 732 bf 19 85 620 732 bf 0.804 0.12 0 c 20 85 639 732 bf 20 85 659 732 bf 19 85 679 732 bf 0.771333 0.106667 0 c 20 85 698 732 bf 19 85 718 732 bf 20 85 737 732 bf 19 85 757 732 bf 0.738667 0.0933333 0 c 20 85 776 732 bf 19 85 796 732
bf 20 85 815 732 bf 19 85 835 732 bf 0.706 0.08 0 c 20 85 854 732 bf 19 85 874 732 bf 20 85 893 732 bf 19 85 913 732 bf 20 85 932 732 bf 0.673333 0.0666667 0 c 19 85 952 732 bf 20 85 971 732 bf 19 85 991 732 bf 20 85 1010 732 bf 19 85 1030 732 bf
20 85 1049 732 bf 19 85 1069 732 bf 0.640667 0.0533333 0 c 20 85 1088 732 bf 19 85 1108 732 bf 20 85 1127 732 bf 19 85 1147 732 bf 20 85 1166 732 bf 19 85 1186 732 bf 20 85 1205 732 bf 19 85 1225 732 bf 20 85 1244 732 bf 19 85 1264 732 bf 0.608
0.04 0 c 20 85 1283 732 bf 19 85 1303 732 bf 20 85 1322 732 bf 19 85 1342 732 bf 20 85 1361 732 bf 19 85 1381 732 bf 20 85 1400 732 bf 19 85 1420 732 bf 20 85 1439 732 bf 19 85 1459 732 bf 20 85 1478 732 bf 19 85 1498 732 bf 20 85 1517 732 bf 19 85
1537 732 bf 0.575333 0.0266667 0 c 20 85 1556 732 bf 19 85 1576 732 bf 20 85 1595 732 bf 19 85 1615 732 bf 20 85 1634 732 bf 19 85 1654 732 bf 20 85 1673 732 bf 19 85 1693 732 bf 20 85 1712 732 bf 19 85 1732 732 bf 20 85 1751 732 bf 19 85 1771 732
bf 20 85 1790 732 bf 19 85 1810 732 bf 20 85 1829 732 bf 19 85 1849 732 bf 20 85 1868 732 bf 19 85 1888 732 bf 20 85 1907 732 bf 19 85 1927 732 bf 20 85 1946 732 bf 19 85 1966 732 bf 20 85 1985 732 bf 19 85 2005 732 bf 20 85 2024 732 bf 0.542667
0.0133333 0 c 19 85 2044 732 bf 20 85 2063 732 bf 19 85 2083 732 bf 20 85 2102 732 bf 19 85 2122 732 bf 20 85 2141 732 bf 19 85 2161 732 bf 20 85 2180 732 bf 0.54375 0.92875 0.45 c 20 86 249 817 bf 0.882381 0.92381 0.108571 c 19 86 269 817 bf
0.913333 0.733333 0.08 c 20 86 288 817 bf 0.931905 0.619048 0.0628571 c 19 86 308 817 bf 0.944286 0.542857 0.0514286 c 20 86 327 817 bf 0.956667 0.466667 0.04 c 19 86 347 817 bf 0.969048 0.390476 0.0285714 c 20 86 366 817 bf 0.975238 0.352381
0.0228571 c 19 86 386 817 bf 0.981429 0.314286 0.0171429 c 20 86 405 817 bf 0.987619 0.27619 0.0114286 c 19 86 425 817 bf 0.99381 0.238095 0.00571429 c 20 86 444 817 bf 1 0.2 0 c 19 86 464 817 bf 20 86 483 817 bf 0.967333 0.186667 0 c 19 86 503 817
bf 0.934667 0.173333 0 c 20 86 522 817 bf 19 86 542 817 bf 0.902 0.16 0 c 20 86 561 817 bf 19 86 581 817 bf 0.869333 0.146667 0 c 20 86 600 817 bf 19 86 620 817 bf 0.836667 0.133333 0 c 20 86 639 817 bf 20 86 659 817 bf 19 86 679 817 bf 0.804 0.12
0 c 20 86 698 817 bf 19 86 718 817 bf 20 86 737 817 bf 19 86 757 817 bf 0.771333 0.106667 0 c 20 86 776 817 bf 19 86 796 817 bf 20 86 815 817 bf 19 86 835 817 bf 0.738667 0.0933333 0 c 20 86 854 817 bf 19 86 874 817 bf 20 86 893 817 bf 19 86 913
817 bf 20 86 932 817 bf 0.706 0.08 0 c 19 86 952 817 bf 20 86 971 817 bf 19 86 991 817 bf 20 86 1010 817 bf 19 86 1030 817 bf 20 86 1049 817 bf 0.673333 0.0666667 0 c 19 86 1069 817 bf 20 86 1088 817 bf 19 86 1108 817 bf 20 86 1127 817 bf 19 86
1147 817 bf 20 86 1166 817 bf 19 86 1186 817 bf 20 86 1205 817 bf 0.640667 0.0533333 0 c 19 86 1225 817 bf 20 86 1244 817 bf 19 86 1264 817 bf 20 86 1283 817 bf 19 86 1303 817 bf 20 86 1322 817 bf 19 86 1342 817 bf 20 86 1361 817 bf 19 86 1381 817
bf 20 86 1400 817 bf 19 86 1420 817 bf 0.608 0.04 0 c 20 86 1439 817 bf 19 86 1459 817 bf 20 86 1478 817 bf 19 86 1498 817 bf 20 86 1517 817 bf 19 86 1537 817 bf 20 86 1556 817 bf 19 86 1576 817 bf 20 86 1595 817 bf 19 86 1615 817 bf 20 86 1634 817
bf 19 86 1654 817 bf 20 86 1673 817 bf 19 86 1693 817 bf 20 86 1712 817 bf 19 86 1732 817 bf 20 86 1751 817 bf 0.575333 0.0266667 0 c 19 86 1771 817 bf 20 86 1790 817 bf 19 86 1810 817 bf 20 86 1829 817 bf 19 86 1849 817 bf 20 86 1868 817 bf 19 86
1888 817 bf 20 86 1907 817 bf 19 86 1927 817 bf 20 86 1946 817 bf 19 86 1966 817 bf 20 86 1985 817 bf 19 86 2005 817 bf 20 86 2024 817 bf 19 86 2044 817 bf 20 86 2063 817 bf 19 86 2083 817 bf 20 86 2102 817 bf 19 86 2122 817 bf 20 86 2141 817 bf 19
86 2161 817 bf 20 86 2180 817 bf 0.3625 0.889167 0.633333 c 20 85 249 903 bf 0.76125 0.97625 0.23 c 19 85 269 903 bf 0.882381 0.92381 0.108571 c 20 85 288 903 bf 0.900952 0.809524 0.0914286 c 19 85 308 903 bf 0.913333 0.733333 0.08 c 20 85 327 903
bf 0.925714 0.657143 0.0685714 c 19 85 347 903 bf 0.938095 0.580952 0.0571429 c 20 85 366 903 bf 0.944286 0.542857 0.0514286 c 19 85 386 903 bf 0.950476 0.504762 0.0457143 c 20 85 405 903 bf 0.956667 0.466667 0.04 c 19 85 425 903 bf 0.962857
0.428571 0.0342857 c 20 85 444 903 bf 0.969048 0.390476 0.0285714 c 19 85 464 903 bf 0.975238 0.352381 0.0228571 c 20 85 483 903 bf 0.981429 0.314286 0.0171429 c 19 85 503 903 bf 20 85 522 903 bf 0.987619 0.27619 0.0114286 c 19 85 542 903 bf 20 85
561 903 bf 0.99381 0.238095 0.00571429 c 19 85 581 903 bf 20 85 600 903 bf 1 0.2 0 c 19 85 620 903 bf 20 85 639 903 bf 0.967333 0.186667 0 c 20 85 659 903 bf 19 85 679 903 bf 20 85 698 903 bf 0.934667 0.173333 0 c 19 85 718 903 bf 20 85 737 903 bf
19 85 757 903 bf 0.902 0.16 0 c 20 85 776 903 bf 19 85 796 903 bf 20 85 815 903 bf 0.869333 0.146667 0 c 19 85 835 903 bf 20 85 854 903 bf 19 85 874 903 bf 20 85 893 903 bf 0.836667 0.133333 0 c 19 85 913 903 bf 20 85 932 903 bf 19 85 952 903 bf 20
85 971 903 bf 19 85 991 903 bf 0.804 0.12 0 c 20 85 1010 903 bf 19 85 1030 903 bf 20 85 1049 903 bf 19 85 1069 903 bf 20 85 1088 903 bf 19 85 1108 903 bf 0.771333 0.106667 0 c 20 85 1127 903 bf 19 85 1147 903 bf 20 85 1166 903 bf 19 85 1186 903 bf
20 85 1205 903 bf 19 85 1225 903 bf 20 85 1244 903 bf 0.738667 0.0933333 0 c 19 85 1264 903 bf 20 85 1283 903 bf 19 85 1303 903 bf 20 85 1322 903 bf 19 85 1342 903 bf 20 85 1361 903 bf 19 85 1381 903 bf 20 85 1400 903 bf 0.706 0.08 0 c 19 85 1420
903 bf 20 85 1439 903 bf 19 85 1459 903 bf 20 85 1478 903 bf 19 85 1498 903 bf 20 85 1517 903 bf 19 85 1537 903 bf 20 85 1556 903 bf 19 85 1576 903 bf 20 85 1595 903 bf 19 85 1615 903 bf 0.673333 0.0666667 0 c 20 85 1634 903 bf 19 85 1654 903 bf 20
85 1673 903 bf 19 85 1693 903 bf 20 85 1712 903 bf 19 85 1732 903 bf 20 85 1751 903 bf 19 85 1771 903 bf 20 85 1790 903 bf 19 85 1810 903 bf 20 85 1829 903 bf 19 85 1849 903 bf 20 85 1868 903 bf 0.640667 0.0533333 0 c 19 85 1888 903 bf 20 85 1907
903 bf 19 85 1927 903 bf 20 85 1946 903 bf 19 85 1966 903 bf 20 85 1985 903 bf 19 85 2005 903 bf 20 85 2024 903 bf 19 85 2044 903 bf 20 85 2063 903 bf 19 85 2083 903 bf 20 85 2102 903 bf 19 85 2122 903 bf 20 85 2141 903 bf 19 85 2161 903 bf 20 85
2180 903 bf 0.25375 0.865417 0.743333 c 20 85 249 988 bf 0.61625 0.944583 0.376667 c 19 85 269 988 bf 0.7975 0.984167 0.193333 c 20 85 288 988 bf 0.87619 0.961905 0.114286 c 19 85 308 988 bf 0.894762 0.847619 0.0971429 c 20 85 327 988 bf 0.907143
0.771429 0.0857143 c 19 85 347 988 bf 0.913333 0.733333 0.08 c 20 85 366 988 bf 0.925714 0.657143 0.0685714 c 19 85 386 988 bf 0.931905 0.619048 0.0628571 c 20 85 405 988 bf 0.938095 0.580952 0.0571429 c 19 85 425 988 bf 0.944286 0.542857 0.0514286
c 20 85 444 988 bf 0.950476 0.504762 0.0457143 c 19 85 464 988 bf 0.956667 0.466667 0.04 c 20 85 483 988 bf 19 85 503 988 bf 0.962857 0.428571 0.0342857 c 20 85 522 988 bf 0.969048 0.390476 0.0285714 c 19 85 542 988 bf 20 85 561 988 bf 0.975238
0.352381 0.0228571 c 19 85 581 988 bf 20 85 600 988 bf 0.981429 0.314286 0.0171429 c 19 85 620 988 bf 20 85 639 988 bf 20 85 659 988 bf 0.987619 0.27619 0.0114286 c 19 85 679 988 bf 20 85 698 988 bf 0.99381 0.238095 0.00571429 c 19 85 718 988 bf 20
85 737 988 bf 19 85 757 988 bf 1 0.2 0 c 20 85 776 988 bf 19 85 796 988 bf 20 85 815 988 bf 19 85 835 988 bf 0.967333 0.186667 0 c 20 85 854 988 bf 19 85 874 988 bf 20 85 893 988 bf 0.934667 0.173333 0 c 19 85 913 988 bf 20 85 932 988 bf 19 85 952
988 bf 20 85 971 988 bf 19 85 991 988 bf 0.902 0.16 0 c 20 85 1010 988 bf 19 85 1030 988 bf 20 85 1049 988 bf 19 85 1069 988 bf 20 85 1088 988 bf 0.869333 0.146667 0 c 19 85 1108 988 bf 20 85 1127 988 bf 19 85 1147 988 bf 20 85 1166 988 bf 19 85
1186 988 bf 20 85 1205 988 bf 0.836667 0.133333 0 c 19 85 1225 988 bf 20 85 1244 988 bf 19 85 1264 988 bf 20 85 1283 988 bf 19 85 1303 988 bf 20 85 1322 988 bf 19 85 1342 988 bf 0.804 0.12 0 c 20 85 1361 988 bf 19 85 1381 988 bf 20 85 1400 988 bf
19 85 1420 988 bf 20 85 1439 988 bf 19 85 1459 988 bf 20 85 1478 988 bf 19 85 1498 988 bf 0.771333 0.106667 0 c 20 85 1517 988 bf 19 85 1537 988 bf 20 85 1556 988 bf 19 85 1576 988 bf 20 85 1595 988 bf 19 85 1615 988 bf 20 85 1634 988 bf 19 85 1654
988 bf 20 85 1673 988 bf 19 85 1693 988 bf 0.738667 0.0933333 0 c 20 85 1712 988 bf 19 85 1732 988 bf 20 85 1751 988 bf 19 85 1771 988 bf 20 85 1790 988 bf 19 85 1810 988 bf 20 85 1829 988 bf 19 85 1849 988 bf 20 85 1868 988 bf 19 85 1888 988 bf 20
85 1907 988 bf 19 85 1927 988 bf 0.706 0.08 0 c 20 85 1946 988 bf 19 85 1966 988 bf 20 85 1985 988 bf 19 85 2005 988 bf 20 85 2024 988 bf 19 85 2044 988 bf 20 85 2063 988 bf 19 85 2083 988 bf 20 85 2102 988 bf 19 85 2122 988 bf 20 85 2141 988 bf 19
85 2161 988 bf 20 85 2180 988 bf 0.145 0.841667 0.853333 c 20 86 249 1073 bf 0.54375 0.92875 0.45 c 19 86 269 1073 bf 0.725 0.968333 0.266667 c 20 86 288 1073 bf 0.83375 0.992083 0.156667 c 19 86 308 1073 bf 0.882381 0.92381 0.108571 c 20 86 327
1073 bf 0.888571 0.885714 0.102857 c 19 86 347 1073 bf 0.900952 0.809524 0.0914286 c 20 86 366 1073 bf 0.907143 0.771429 0.0857143 c 19 86 386 1073 bf 0.919524 0.695238 0.0742857 c 20 86 405 1073 bf 0.925714 0.657143 0.0685714 c 19 86 425 1073 bf
0.931905 0.619048 0.0628571 c 20 86 444 1073 bf 19 86 464 1073 bf 0.938095 0.580952 0.0571429 c 20 86 483 1073 bf 0.944286 0.542857 0.0514286 c 19 86 503 1073 bf 0.950476 0.504762 0.0457143 c 20 86 522 1073 bf 19 86 542 1073 bf 0.956667 0.466667
0.04 c 20 86 561 1073 bf 19 86 581 1073 bf 0.962857 0.428571 0.0342857 c 20 86 600 1073 bf 19 86 620 1073 bf 0.969048 0.390476 0.0285714 c 20 86 639 1073 bf 20 86 659 1073 bf 0.975238 0.352381 0.0228571 c 19 86 679 1073 bf 20 86 698 1073 bf 19 86
718 1073 bf 0.981429 0.314286 0.0171429 c 20 86 737 1073 bf 19 86 757 1073 bf 20 86 776 1073 bf 0.987619 0.27619 0.0114286 c 19 86 796 1073 bf 20 86 815 1073 bf 19 86 835 1073 bf 0.99381 0.238095 0.00571429 c 20 86 854 1073 bf 19 86 874 1073 bf 20
86 893 1073 bf 19 86 913 1073 bf 1 0.2 0 c 20 86 932 1073 bf 19 86 952 1073 bf 20 86 971 1073 bf 19 86 991 1073 bf 0.967333 0.186667 0 c 20 86 1010 1073 bf 19 86 1030 1073 bf 20 86 1049 1073 bf 19 86 1069 1073 bf 20 86 1088 1073 bf 0.934667
0.173333 0 c 19 86 1108 1073 bf 20 86 1127 1073 bf 19 86 1147 1073 bf 20 86 1166 1073 bf 19 86 1186 1073 bf 0.902 0.16 0 c 20 86 1205 1073 bf 19 86 1225 1073 bf 20 86 1244 1073 bf 19 86 1264 1073 bf 20 86 1283 1073 bf 19 86 1303 1073 bf 20 86 1322
1073 bf 0.869333 0.146667 0 c 19 86 1342 1073 bf 20 86 1361 1073 bf 19 86 1381 1073 bf 20 86 1400 1073 bf 19 86 1420 1073 bf 20 86 1439 1073 bf 19 86 1459 1073 bf 20 86 1478 1073 bf 0.836667 0.133333 0 c 19 86 1498 1073 bf 20 86 1517 1073 bf 19 86
1537 1073 bf 20 86 1556 1073 bf 19 86 1576 1073 bf 20 86 1595 1073 bf 19 86 1615 1073 bf 20 86 1634 1073 bf 0.804 0.12 0 c 19 86 1654 1073 bf 20 86 1673 1073 bf 19 86 1693 1073 bf 20 86 1712 1073 bf 19 86 1732 1073 bf 20 86 1751 1073 bf 19 86 1771
1073 bf 20 86 1790 1073 bf 19 86 1810 1073 bf 20 86 1829 1073 bf 19 86 1849 1073 bf 0.771333 0.106667 0 c 20 86 1868 1073 bf 19 86 1888 1073 bf 20 86 1907 1073 bf 19 86 1927 1073 bf 20 86 1946 1073 bf 19 86 1966 1073 bf 20 86 1985 1073 bf 19 86
2005 1073 bf 20 86 2024 1073 bf 19 86 2044 1073 bf 20 86 2063 1073 bf 19 86 2083 1073 bf 20 86 2102 1073 bf 0.738667 0.0933333 0 c 19 86 2122 1073 bf 20 86 2141 1073 bf 19 86 2161 1073 bf 20 86 2180 1073 bf 0.0725 0.825833 0.926667 c 20 85 249 1159
bf 0.435 0.905 0.56 c 19 85 269 1159 bf 0.61625 0.944583 0.376667 c 20 85 288 1159 bf 0.76125 0.97625 0.23 c 19 85 308 1159 bf 0.83375 0.992083 0.156667 c 20 85 327 1159 bf 0.87619 0.961905 0.114286 c 19 85 347 1159 bf 0.888571 0.885714 0.102857 c
20 85 366 1159 bf 0.894762 0.847619 0.0971429 c 19 85 386 1159 bf 0.900952 0.809524 0.0914286 c 20 85 405 1159 bf 0.907143 0.771429 0.0857143 c 19 85 425 1159 bf 0.913333 0.733333 0.08 c 20 85 444 1159 bf 0.919524 0.695238 0.0742857 c 19 85 464
1159 bf 0.925714 0.657143 0.0685714 c 20 85 483 1159 bf 19 85 503 1159 bf 0.931905 0.619048 0.0628571 c 20 85 522 1159 bf 0.938095 0.580952 0.0571429 c 19 85 542 1159 bf 20 85 561 1159 bf 0.944286 0.542857 0.0514286 c 19 85 581 1159 bf 20 85 600
1159 bf 0.950476 0.504762 0.0457143 c 19 85 620 1159 bf 20 85 639 1159 bf 0.956667 0.466667 0.04 c 20 85 659 1159 bf 19 85 679 1159 bf 0.962857 0.428571 0.0342857 c 20 85 698 1159 bf 19 85 718 1159 bf 20 85 737 1159 bf 0.969048 0.390476 0.0285714 c
19 85 757 1159 bf 20 85 776 1159 bf 19 85 796 1159 bf 0.975238 0.352381 0.0228571 c 20 85 815 1159 bf 19 85 835 1159 bf 20 85 854 1159 bf 0.981429 0.314286 0.0171429 c 19 85 874 1159 bf 20 85 893 1159 bf 19 85 913 1159 bf 20 85 932 1159 bf 0.987619
0.27619 0.0114286 c 19 85 952 1159 bf 20 85 971 1159 bf 19 85 991 1159 bf 20 85 1010 1159 bf 0.99381 0.238095 0.00571429 c 19 85 1030 1159 bf 20 85 1049 1159 bf 19 85 1069 1159 bf 20 85 1088 1159 bf 19 85 1108 1159 bf 1 0.2 0 c 20 85 1127 1159 bf
19 85 1147 1159 bf 20 85 1166 1159 bf 19 85 1186 1159 bf 20 85 1205 1159 bf 19 85 1225 1159 bf 0.967333 0.186667 0 c 20 85 1244 1159 bf 19 85 1264 1159 bf 20 85 1283 1159 bf 19 85 1303 1159 bf 20 85 1322 1159 bf 19 85 1342 1159 bf 0.934667 0.173333
0 c 20 85 1361 1159 bf 19 85 1381 1159 bf 20 85 1400 1159 bf 19 85 1420 1159 bf 20 85 1439 1159 bf 19 85 1459 1159 bf 20 85 1478 1159 bf 19 85 1498 1159 bf 0.902 0.16 0 c 20 85 1517 1159 bf 19 85 1537 1159 bf 20 85 1556 1159 bf 19 85 1576 1159 bf
20 85 1595 1159 bf 19 85 1615 1159 bf 20 85 1634 1159 bf 19 85 1654 1159 bf 0.869333 0.146667 0 c 20 85 1673 1159 bf 19 85 1693 1159 bf 20 85 1712 1159 bf 19 85 1732 1159 bf 20 85 1751 1159 bf 19 85 1771 1159 bf 20 85 1790 1159 bf 19 85 1810 1159
bf 20 85 1829 1159 bf 19 85 1849 1159 bf 0.836667 0.133333 0 c 20 85 1868 1159 bf 19 85 1888 1159 bf 20 85 1907 1159 bf 19 85 1927 1159 bf 20 85 1946 1159 bf 19 85 1966 1159 bf 20 85 1985 1159 bf 19 85 2005 1159 bf 20 85 2024 1159 bf 19 85 2044
1159 bf 20 85 2063 1159 bf 19 85 2083 1159 bf 0.804 0.12 0 c 20 85 2102 1159 bf 19 85 2122 1159 bf 20 85 2141 1159 bf 19 85 2161 1159 bf 20 85 2180 1159 bf 0 0.81 1 c 20 86 249 1244 bf 0.39875 0.897083 0.596667 c 19 86 269 1244 bf 0.58 0.936667
0.413333 c 20 86 288 1244 bf 0.68875 0.960417 0.303333 c 19 86 308 1244 bf 0.76125 0.97625 0.23 c 20 86 327 1244 bf 0.83375 0.992083 0.156667 c 19 86 347 1244 bf 0.87619 0.961905 0.114286 c 20 86 366 1244 bf 0.882381 0.92381 0.108571 c 19 86 386
1244 bf 0.888571 0.885714 0.102857 c 20 86 405 1244 bf 0.900952 0.809524 0.0914286 c 19 86 425 1244 bf 0.907143 0.771429 0.0857143 c 20 86 444 1244 bf 19 86 464 1244 bf 0.913333 0.733333 0.08 c 20 86 483 1244 bf 0.919524 0.695238 0.0742857 c 19 86
503 1244 bf 0.925714 0.657143 0.0685714 c 20 86 522 1244 bf 19 86 542 1244 bf 0.931905 0.619048 0.0628571 c 20 86 561 1244 bf 19 86 581 1244 bf 0.938095 0.580952 0.0571429 c 20 86 600 1244 bf 19 86 620 1244 bf 0.944286 0.542857 0.0514286 c 20 86
639 1244 bf 20 86 659 1244 bf 0.950476 0.504762 0.0457143 c 19 86 679 1244 bf 20 86 698 1244 bf 19 86 718 1244 bf 0.956667 0.466667 0.04 c 20 86 737 1244 bf 19 86 757 1244 bf 0.962857 0.428571 0.0342857 c 20 86 776 1244 bf 19 86 796 1244 bf 20 86
815 1244 bf 0.969048 0.390476 0.0285714 c 19 86 835 1244 bf 20 86 854 1244 bf 19 86 874 1244 bf 20 86 893 1244 bf 0.975238 0.352381 0.0228571 c 19 86 913 1244 bf 20 86 932 1244 bf 19 86 952 1244 bf 20 86 971 1244 bf 0.981429 0.314286 0.0171429 c 19
86 991 1244 bf 20 86 1010 1244 bf 19 86 1030 1244 bf 20 86 1049 1244 bf 19 86 1069 1244 bf 0.987619 0.27619 0.0114286 c 20 86 1088 1244 bf 19 86 1108 1244 bf 20 86 1127 1244 bf 19 86 1147 1244 bf 20 86 1166 1244 bf 0.99381 0.238095 0.00571429 c 19
86 1186 1244 bf 20 86 1205 1244 bf 19 86 1225 1244 bf 20 86 1244 1244 bf 19 86 1264 1244 bf 20 86 1283 1244 bf 1 0.2 0 c 19 86 1303 1244 bf 20 86 1322 1244 bf 19 86 1342 1244 bf 20 86 1361 1244 bf 19 86 1381 1244 bf 20 86 1400 1244 bf 0.967333
0.186667 0 c 19 86 1420 1244 bf 20 86 1439 1244 bf 19 86 1459 1244 bf 20 86 1478 1244 bf 19 86 1498 1244 bf 20 86 1517 1244 bf 19 86 1537 1244 bf 20 86 1556 1244 bf 0.934667 0.173333 0 c 19 86 1576 1244 bf 20 86 1595 1244 bf 19 86 1615 1244 bf 20
86 1634 1244 bf 19 86 1654 1244 bf 20 86 1673 1244 bf 19 86 1693 1244 bf 20 86 1712 1244 bf 0.902 0.16 0 c 19 86 1732 1244 bf 20 86 1751 1244 bf 19 86 1771 1244 bf 20 86 1790 1244 bf 19 86 1810 1244 bf 20 86 1829 1244 bf 19 86 1849 1244 bf 20 86
1868 1244 bf 19 86 1888 1244 bf 20 86 1907 1244 bf 0.869333 0.146667 0 c 19 86 1927 1244 bf 20 86 1946 1244 bf 19 86 1966 1244 bf 20 86 1985 1244 bf 19 86 2005 1244 bf 20 86 2024 1244 bf 19 86 2044 1244 bf 20 86 2063 1244 bf 19 86 2083 1244 bf 20
86 2102 1244 bf 19 86 2122 1244 bf 20 86 2141 1244 bf 0.836667 0.133333 0 c 19 86 2161 1244 bf 20 86 2180 1244 bf 0 0.729 0.951 c 20 85 249 1330 bf 0.29 0.873333 0.706667 c 19 85 269 1330 bf 0.47125 0.912917 0.523333 c 20 85 288 1330 bf 0.58
0.936667 0.413333 c 19 85 308 1330 bf 0.68875 0.960417 0.303333 c 20 85 327 1330 bf 0.76125 0.97625 0.23 c 19 85 347 1330 bf 0.7975 0.984167 0.193333 c 20 85 366 1330 bf 0.87 1 0.12 c 19 85 386 1330 bf 0.87619 0.961905 0.114286 c 20 85 405 1330 bf
0.882381 0.92381 0.108571 c 19 85 425 1330 bf 0.888571 0.885714 0.102857 c 20 85 444 1330 bf 0.894762 0.847619 0.0971429 c 19 85 464 1330 bf 0.900952 0.809524 0.0914286 c 20 85 483 1330 bf 19 85 503 1330 bf 0.907143 0.771429 0.0857143 c 20 85 522
1330 bf 0.913333 0.733333 0.08 c 19 85 542 1330 bf 20 85 561 1330 bf 0.919524 0.695238 0.0742857 c 19 85 581 1330 bf 20 85 600 1330 bf 0.925714 0.657143 0.0685714 c 19 85 620 1330 bf 20 85 639 1330 bf 0.931905 0.619048 0.0628571 c 20 85 659 1330 bf
19 85 679 1330 bf 0.938095 0.580952 0.0571429 c 20 85 698 1330 bf 19 85 718 1330 bf 20 85 737 1330 bf 0.944286 0.542857 0.0514286 c 19 85 757 1330 bf 20 85 776 1330 bf 19 85 796 1330 bf 0.950476 0.504762 0.0457143 c 20 85 815 1330 bf 19 85 835 1330
bf 20 85 854 1330 bf 0.956667 0.466667 0.04 c 19 85 874 1330 bf 20 85 893 1330 bf 19 85 913 1330 bf 20 85 932 1330 bf 0.962857 0.428571 0.0342857 c 19 85 952 1330 bf 20 85 971 1330 bf 19 85 991 1330 bf 20 85 1010 1330 bf 0.969048 0.390476 0.0285714
c 19 85 1030 1330 bf 20 85 1049 1330 bf 19 85 1069 1330 bf 20 85 1088 1330 bf 0.975238 0.352381 0.0228571 c 19 85 1108 1330 bf 20 85 1127 1330 bf 19 85 1147 1330 bf 20 85 1166 1330 bf 19 85 1186 1330 bf 0.981429 0.314286 0.0171429 c 20 85 1205 1330
bf 19 85 1225 1330 bf 20 85 1244 1330 bf 19 85 1264 1330 bf 20 85 1283 1330 bf 19 85 1303 1330 bf 0.987619 0.27619 0.0114286 c 20 85 1322 1330 bf 19 85 1342 1330 bf 20 85 1361 1330 bf 19 85 1381 1330 bf 20 85 1400 1330 bf 19 85 1420 1330 bf 20 85
1439 1330 bf 0.99381 0.238095 0.00571429 c 19 85 1459 1330 bf 20 85 1478 1330 bf 19 85 1498 1330 bf 20 85 1517 1330 bf 19 85 1537 1330 bf 20 85 1556 1330 bf 19 85 1576 1330 bf 20 85 1595 1330 bf 1 0.2 0 c 19 85 1615 1330 bf 20 85 1634 1330 bf 19 85
1654 1330 bf 20 85 1673 1330 bf 19 85 1693 1330 bf 20 85 1712 1330 bf 19 85 1732 1330 bf 20 85 1751 1330 bf 0.967333 0.186667 0 c 19 85 1771 1330 bf 20 85 1790 1330 bf 19 85 1810 1330 bf 20 85 1829 1330 bf 19 85 1849 1330 bf 20 85 1868 1330 bf 19
85 1888 1330 bf 20 85 1907 1330 bf 19 85 1927 1330 bf 20 85 1946 1330 bf 0.934667 0.173333 0 c 19 85 1966 1330 bf 20 85 1985 1330 bf 19 85 2005 1330 bf 20 85 2024 1330 bf 19 85 2044 1330 bf 20 85 2063 1330 bf 19 85 2083 1330 bf 20 85 2102 1330 bf
19 85 2122 1330 bf 20 85 2141 1330 bf 19 85 2161 1330 bf 0.902 0.16 0 c 20 85 2180 1330 bf 0 0.675 0.918333 c 20 86 249 1415 bf 0.2175 0.8575 0.78 c 19 86 269 1415 bf 0.39875 0.897083 0.596667 c 20 86 288 1415 bf 0.5075 0.920833 0.486667 c 19 86
308 1415 bf 0.61625 0.944583 0.376667 c 20 86 327 1415 bf 0.68875 0.960417 0.303333 c 19 86 347 1415 bf 0.725 0.968333 0.266667 c 20 86 366 1415 bf 0.7975 0.984167 0.193333 c 19 86 386 1415 bf 0.83375 0.992083 0.156667 c 20 86 405 1415 bf 0.87 1
0.12 c 19 86 425 1415 bf 0.87619 0.961905 0.114286 c 20 86 444 1415 bf 0.882381 0.92381 0.108571 c 19 86 464 1415 bf 0.888571 0.885714 0.102857 c 20 86 483 1415 bf 19 86 503 1415 bf 0.894762 0.847619 0.0971429 c 20 86 522 1415 bf 0.900952 0.809524
0.0914286 c 19 86 542 1415 bf 20 86 561 1415 bf 0.907143 0.771429 0.0857143 c 19 86 581 1415 bf 20 86 600 1415 bf 0.913333 0.733333 0.08 c 19 86 620 1415 bf 20 86 639 1415 bf 0.919524 0.695238 0.0742857 c 20 86 659 1415 bf 19 86 679 1415 bf
0.925714 0.657143 0.0685714 c 20 86 698 1415 bf 19 86 718 1415 bf 20 86 737 1415 bf 0.931905 0.619048 0.0628571 c 19 86 757 1415 bf 20 86 776 1415 bf 19 86 796 1415 bf 0.938095 0.580952 0.0571429 c 20 86 815 1415 bf 19 86 835 1415 bf 20 86 854 1415
bf 0.944286 0.542857 0.0514286 c 19 86 874 1415 bf 20 86 893 1415 bf 19 86 913 1415 bf 20 86 932 1415 bf 0.950476 0.504762 0.0457143 c 19 86 952 1415 bf 20 86 971 1415 bf 19 86 991 1415 bf 20 86 1010 1415 bf 0.956667 0.466667 0.04 c 19 86 1030 1415
bf 20 86 1049 1415 bf 19 86 1069 1415 bf 20 86 1088 1415 bf 0.962857 0.428571 0.0342857 c 19 86 1108 1415 bf 20 86 1127 1415 bf 19 86 1147 1415 bf 20 86 1166 1415 bf 19 86 1186 1415 bf 20 86 1205 1415 bf 0.969048 0.390476 0.0285714 c 19 86 1225
1415 bf 20 86 1244 1415 bf 19 86 1264 1415 bf 20 86 1283 1415 bf 19 86 1303 1415 bf 0.975238 0.352381 0.0228571 c 20 86 1322 1415 bf 19 86 1342 1415 bf 20 86 1361 1415 bf 19 86 1381 1415 bf 20 86 1400 1415 bf 19 86 1420 1415 bf 20 86 1439 1415 bf
0.981429 0.314286 0.0171429 c 19 86 1459 1415 bf 20 86 1478 1415 bf 19 86 1498 1415 bf 20 86 1517 1415 bf 19 86 1537 1415 bf 20 86 1556 1415 bf 19 86 1576 1415 bf 0.987619 0.27619 0.0114286 c 20 86 1595 1415 bf 19 86 1615 1415 bf 20 86 1634 1415 bf
19 86 1654 1415 bf 20 86 1673 1415 bf 19 86 1693 1415 bf 20 86 1712 1415 bf 19 86 1732 1415 bf 0.99381 0.238095 0.00571429 c 20 86 1751 1415 bf 19 86 1771 1415 bf 20 86 1790 1415 bf 19 86 1810 1415 bf 20 86 1829 1415 bf 19 86 1849 1415 bf 20 86
1868 1415 bf 19 86 1888 1415 bf 20 86 1907 1415 bf 19 86 1927 1415 bf 1 0.2 0 c 20 86 1946 1415 bf 19 86 1966 1415 bf 20 86 1985 1415 bf 19 86 2005 1415 bf 20 86 2024 1415 bf 19 86 2044 1415 bf 20 86 2063 1415 bf 19 86 2083 1415 bf 20 86 2102 1415
bf 19 86 2122 1415 bf 20 86 2141 1415 bf 0.967333 0.186667 0 c 19 86 2161 1415 bf 20 86 2180 1415 bf 0 0.675 0.918333 c 20 85 249 1501 bf 0.2175 0.8575 0.78 c 19 85 269 1501 bf 0.39875 0.897083 0.596667 c 20 85 288 1501 bf 0.5075 0.920833 0.486667
c 19 85 308 1501 bf 0.58 0.936667 0.413333 c 20 85 327 1501 bf 0.6525 0.9525 0.34 c 19 85 347 1501 bf 0.725 0.968333 0.266667 c 20 85 366 1501 bf 0.76125 0.97625 0.23 c 19 85 386 1501 bf 0.7975 0.984167 0.193333 c 20 85 405 1501 bf 0.83375 0.992083
0.156667 c 19 85 425 1501 bf 0.87 1 0.12 c 20 85 444 1501 bf 0.87619 0.961905 0.114286 c 19 85 464 1501 bf 0.882381 0.92381 0.108571 c 20 85 483 1501 bf 0.888571 0.885714 0.102857 c 19 85 503 1501 bf 0.894762 0.847619 0.0971429 c 20 85 522 1501 bf
19 85 542 1501 bf 0.900952 0.809524 0.0914286 c 20 85 561 1501 bf 19 85 581 1501 bf 0.907143 0.771429 0.0857143 c 20 85 600 1501 bf 19 85 620 1501 bf 0.913333 0.733333 0.08 c 20 85 639 1501 bf 20 85 659 1501 bf 0.919524 0.695238 0.0742857 c 19 85
679 1501 bf 20 85 698 1501 bf 0.925714 0.657143 0.0685714 c 19 85 718 1501 bf 20 85 737 1501 bf 19 85 757 1501 bf 0.931905 0.619048 0.0628571 c 20 85 776 1501 bf 19 85 796 1501 bf 20 85 815 1501 bf 0.938095 0.580952 0.0571429 c 19 85 835 1501 bf 20
85 854 1501 bf 19 85 874 1501 bf 20 85 893 1501 bf 0.944286 0.542857 0.0514286 c 19 85 913 1501 bf 20 85 932 1501 bf 19 85 952 1501 bf 0.950476 0.504762 0.0457143 c 20 85 971 1501 bf 19 85 991 1501 bf 20 85 1010 1501 bf 19 85 1030 1501 bf 20 85
1049 1501 bf 0.956667 0.466667 0.04 c 19 85 1069 1501 bf 20 85 1088 1501 bf 19 85 1108 1501 bf 20 85 1127 1501 bf 0.962857 0.428571 0.0342857 c 19 85 1147 1501 bf 20 85 1166 1501 bf 19 85 1186 1501 bf 20 85 1205 1501 bf 19 85 1225 1501 bf 20 85
1244 1501 bf 0.969048 0.390476 0.0285714 c 19 85 1264 1501 bf 20 85 1283 1501 bf 19 85 1303 1501 bf 20 85 1322 1501 bf 19 85 1342 1501 bf 20 85 1361 1501 bf 0.975238 0.352381 0.0228571 c 19 85 1381 1501 bf 20 85 1400 1501 bf 19 85 1420 1501 bf 20
85 1439 1501 bf 19 85 1459 1501 bf 20 85 1478 1501 bf 0.981429 0.314286 0.0171429 c 19 85 1498 1501 bf 20 85 1517 1501 bf 19 85 1537 1501 bf 20 85 1556 1501 bf 19 85 1576 1501 bf 20 85 1595 1501 bf 19 85 1615 1501 bf 20 85 1634 1501 bf 0.987619
0.27619 0.0114286 c 19 85 1654 1501 bf 20 85 1673 1501 bf 19 85 1693 1501 bf 20 85 1712 1501 bf 19 85 1732 1501 bf 20 85 1751 1501 bf 19 85 1771 1501 bf 20 85 1790 1501 bf 19 85 1810 1501 bf 0.99381 0.238095 0.00571429 c 20 85 1829 1501 bf 19 85
1849 1501 bf 20 85 1868 1501 bf 19 85 1888 1501 bf 20 85 1907 1501 bf 19 85 1927 1501 bf 20 85 1946 1501 bf 19 85 1966 1501 bf 20 85 1985 1501 bf 19 85 2005 1501 bf 1 0.2 0 c 20 85 2024 1501 bf 19 85 2044 1501 bf 20 85 2063 1501 bf 19 85 2083 1501
bf 20 85 2102 1501 bf 19 85 2122 1501 bf 20 85 2141 1501 bf 19 85 2161 1501 bf 20 85 2180 1501 bf 0 0.621 0.885667 c 20 86 249 1586 bf 0.145 0.841667 0.853333 c 19 86 269 1586 bf 0.32625 0.88125 0.67 c 20 86 288 1586 bf 0.435 0.905 0.56 c 19 86 308
1586 bf 0.5075 0.920833 0.486667 c 20 86 327 1586 bf 0.58 0.936667 0.413333 c 19 86 347 1586 bf 0.6525 0.9525 0.34 c 20 86 366 1586 bf 0.68875 0.960417 0.303333 c 19 86 386 1586 bf 0.76125 0.97625 0.23 c 20 86 405 1586 bf 0.7975 0.984167 0.193333 c
19 86 425 1586 bf 0.83375 0.992083 0.156667 c 20 86 444 1586 bf 19 86 464 1586 bf 0.87 1 0.12 c 20 86 483 1586 bf 0.87619 0.961905 0.114286 c 19 86 503 1586 bf 0.882381 0.92381 0.108571 c 20 86 522 1586 bf 19 86 542 1586 bf 0.888571 0.885714
0.102857 c 20 86 561 1586 bf 19 86 581 1586 bf 0.894762 0.847619 0.0971429 c 20 86 600 1586 bf 0.900952 0.809524 0.0914286 c 19 86 620 1586 bf 20 86 639 1586 bf 20 86 659 1586 bf 0.907143 0.771429 0.0857143 c 19 86 679 1586 bf 20 86 698 1586 bf
0.913333 0.733333 0.08 c 19 86 718 1586 bf 20 86 737 1586 bf 19 86 757 1586 bf 0.919524 0.695238 0.0742857 c 20 86 776 1586 bf 19 86 796 1586 bf 20 86 815 1586 bf 0.925714 0.657143 0.0685714 c 19 86 835 1586 bf 20 86 854 1586 bf 19 86 874 1586 bf
0.931905 0.619048 0.0628571 c 20 86 893 1586 bf 19 86 913 1586 bf 20 86 932 1586 bf 19 86 952 1586 bf 0.938095 0.580952 0.0571429 c 20 86 971 1586 bf 19 86 991 1586 bf 20 86 1010 1586 bf 19 86 1030 1586 bf 0.944286 0.542857 0.0514286 c 20 86 1049
1586 bf 19 86 1069 1586 bf 20 86 1088 1586 bf 19 86 1108 1586 bf 0.950476 0.504762 0.0457143 c 20 86 1127 1586 bf 19 86 1147 1586 bf 20 86 1166 1586 bf 19 86 1186 1586 bf 20 86 1205 1586 bf 19 86 1225 1586 bf 0.956667 0.466667 0.04 c 20 86 1244
1586 bf 19 86 1264 1586 bf 20 86 1283 1586 bf 19 86 1303 1586 bf 20 86 1322 1586 bf 0.962857 0.428571 0.0342857 c 19 86 1342 1586 bf 20 86 1361 1586 bf 19 86 1381 1586 bf 20 86 1400 1586 bf 19 86 1420 1586 bf 20 86 1439 1586 bf 19 86 1459 1586 bf
0.969048 0.390476 0.0285714 c 20 86 1478 1586 bf 19 86 1498 1586 bf 20 86 1517 1586 bf 19 86 1537 1586 bf 20 86 1556 1586 bf 19 86 1576 1586 bf 20 86 1595 1586 bf 0.975238 0.352381 0.0228571 c 19 86 1615 1586 bf 20 86 1634 1586 bf 19 86 1654 1586
bf 20 86 1673 1586 bf 19 86 1693 1586 bf 20 86 1712 1586 bf 19 86 1732 1586 bf 20 86 1751 1586 bf 0.981429 0.314286 0.0171429 c 19 86 1771 1586 bf 20 86 1790 1586 bf 19 86 1810 1586 bf 20 86 1829 1586 bf 19 86 1849 1586 bf 20 86 1868 1586 bf 19 86
1888 1586 bf 20 86 1907 1586 bf 19 86 1927 1586 bf 20 86 1946 1586 bf 0.987619 0.27619 0.0114286 c 19 86 1966 1586 bf 20 86 1985 1586 bf 19 86 2005 1586 bf 20 86 2024 1586 bf 19 86 2044 1586 bf 20 86 2063 1586 bf 19 86 2083 1586 bf 20 86 2102 1586
bf 19 86 2122 1586 bf 20 86 2141 1586 bf 0.99381 0.238095 0.00571429 c 19 86 2161 1586 bf 20 86 2180 1586 bf 0 0.594 0.869333 c 20 85 249 1672 bf 0.0725 0.825833 0.926667 c 19 85 269 1672 bf 0.25375 0.865417 0.743333 c 20 85 288 1672 bf 0.39875
0.897083 0.596667 c 19 85 308 1672 bf 0.47125 0.912917 0.523333 c 20 85 327 1672 bf 0.54375 0.92875 0.45 c 19 85 347 1672 bf 0.61625 0.944583 0.376667 c 20 85 366 1672 bf 0.6525 0.9525 0.34 c 19 85 386 1672 bf 0.68875 0.960417 0.303333 c 20 85 405
1672 bf 0.725 0.968333 0.266667 c 19 85 425 1672 bf 0.76125 0.97625 0.23 c 20 85 444 1672 bf 0.7975 0.984167 0.193333 c 19 85 464 1672 bf 0.83375 0.992083 0.156667 c 20 85 483 1672 bf 0.87 1 0.12 c 19 85 503 1672 bf 20 85 522 1672 bf 0.87619
0.961905 0.114286 c 19 85 542 1672 bf 0.882381 0.92381 0.108571 c 20 85 561 1672 bf 19 85 581 1672 bf 0.888571 0.885714 0.102857 c 20 85 600 1672 bf 19 85 620 1672 bf 0.894762 0.847619 0.0971429 c 20 85 639 1672 bf 20 85 659 1672 bf 0.900952
0.809524 0.0914286 c 19 85 679 1672 bf 20 85 698 1672 bf 19 85 718 1672 bf 0.907143 0.771429 0.0857143 c 20 85 737 1672 bf 19 85 757 1672 bf 0.913333 0.733333 0.08 c 20 85 776 1672 bf 19 85 796 1672 bf 20 85 815 1672 bf 0.919524 0.695238 0.0742857
c 19 85 835 1672 bf 20 85 854 1672 bf 19 85 874 1672 bf 20 85 893 1672 bf 0.925714 0.657143 0.0685714 c 19 85 913 1672 bf 20 85 932 1672 bf 19 85 952 1672 bf 0.931905 0.619048 0.0628571 c 20 85 971 1672 bf 19 85 991 1672 bf 20 85 1010 1672 bf 19 85
1030 1672 bf 20 85 1049 1672 bf 0.938095 0.580952 0.0571429 c 19 85 1069 1672 bf 20 85 1088 1672 bf 19 85 1108 1672 bf 20 85 1127 1672 bf 0.944286 0.542857 0.0514286 c 19 85 1147 1672 bf 20 85 1166 1672 bf 19 85 1186 1672 bf 20 85 1205 1672 bf 19
85 1225 1672 bf 20 85 1244 1672 bf 0.950476 0.504762 0.0457143 c 19 85 1264 1672 bf 20 85 1283 1672 bf 19 85 1303 1672 bf 20 85 1322 1672 bf 19 85 1342 1672 bf 0.956667 0.466667 0.04 c 20 85 1361 1672 bf 19 85 1381 1672 bf 20 85 1400 1672 bf 19 85
1420 1672 bf 20 85 1439 1672 bf 19 85 1459 1672 bf 20 85 1478 1672 bf 0.962857 0.428571 0.0342857 c 19 85 1498 1672 bf 20 85 1517 1672 bf 19 85 1537 1672 bf 20 85 1556 1672 bf 19 85 1576 1672 bf 20 85 1595 1672 bf 19 85 1615 1672 bf 0.969048
0.390476 0.0285714 c 20 85 1634 1672 bf 19 85 1654 1672 bf 20 85 1673 1672 bf 19 85 1693 1672 bf 20 85 1712 1672 bf 19 85 1732 1672 bf 20 85 1751 1672 bf 19 85 1771 1672 bf 20 85 1790 1672 bf 0.975238 0.352381 0.0228571 c 19 85 1810 1672 bf 20 85
1829 1672 bf 19 85 1849 1672 bf 20 85 1868 1672 bf 19 85 1888 1672 bf 20 85 1907 1672 bf 19 85 1927 1672 bf 20 85 1946 1672 bf 19 85 1966 1672 bf 0.981429 0.314286 0.0171429 c 20 85 1985 1672 bf 19 85 2005 1672 bf 20 85 2024 1672 bf 19 85 2044 1672
bf 20 85 2063 1672 bf 19 85 2083 1672 bf 20 85 2102 1672 bf 19 85 2122 1672 bf 20 85 2141 1672 bf 19 85 2161 1672 bf 20 85 2180 1672 bf 0 0.54 0.836667 c 20 85 249 1757 bf 0.03625 0.817917 0.963333 c 19 85 269 1757 bf 0.2175 0.8575 0.78 c 20 85 288
1757 bf 0.32625 0.88125 0.67 c 19 85 308 1757 bf 0.435 0.905 0.56 c 20 85 327 1757 bf 0.5075 0.920833 0.486667 c 19 85 347 1757 bf 0.54375 0.92875 0.45 c 20 85 366 1757 bf 0.61625 0.944583 0.376667 c 19 85 386 1757 bf 0.6525 0.9525 0.34 c 20 85 405
1757 bf 0.68875 0.960417 0.303333 c 19 85 425 1757 bf 0.725 0.968333 0.266667 c 20 85 444 1757 bf 0.76125 0.97625 0.23 c 19 85 464 1757 bf 0.7975 0.984167 0.193333 c 20 85 483 1757 bf 19 85 503 1757 bf 0.83375 0.992083 0.156667 c 20 85 522 1757 bf
0.87 1 0.12 c 19 85 542 1757 bf 20 85 561 1757 bf 0.87619 0.961905 0.114286 c 19 85 581 1757 bf 20 85 600 1757 bf 0.882381 0.92381 0.108571 c 19 85 620 1757 bf 20 85 639 1757 bf 0.888571 0.885714 0.102857 c 20 85 659 1757 bf 19 85 679 1757 bf
0.894762 0.847619 0.0971429 c 20 85 698 1757 bf 19 85 718 1757 bf 20 85 737 1757 bf 0.900952 0.809524 0.0914286 c 19 85 757 1757 bf 20 85 776 1757 bf 0.907143 0.771429 0.0857143 c 19 85 796 1757 bf 20 85 815 1757 bf 19 85 835 1757 bf 0.913333
0.733333 0.08 c 20 85 854 1757 bf 19 85 874 1757 bf 20 85 893 1757 bf 19 85 913 1757 bf 0.919524 0.695238 0.0742857 c 20 85 932 1757 bf 19 85 952 1757 bf 20 85 971 1757 bf 19 85 991 1757 bf 0.925714 0.657143 0.0685714 c 20 85 1010 1757 bf 19 85
1030 1757 bf 20 85 1049 1757 bf 19 85 1069 1757 bf 0.931905 0.619048 0.0628571 c 20 85 1088 1757 bf 19 85 1108 1757 bf 20 85 1127 1757 bf 19 85 1147 1757 bf 20 85 1166 1757 bf 0.938095 0.580952 0.0571429 c 19 85 1186 1757 bf 20 85 1205 1757 bf 19
85 1225 1757 bf 20 85 1244 1757 bf 19 85 1264 1757 bf 0.944286 0.542857 0.0514286 c 20 85 1283 1757 bf 19 85 1303 1757 bf 20 85 1322 1757 bf 19 85 1342 1757 bf 20 85 1361 1757 bf 19 85 1381 1757 bf 20 85 1400 1757 bf 0.950476 0.504762 0.0457143 c
19 85 1420 1757 bf 20 85 1439 1757 bf 19 85 1459 1757 bf 20 85 1478 1757 bf 19 85 1498 1757 bf 20 85 1517 1757 bf 0.956667 0.466667 0.04 c 19 85 1537 1757 bf 20 85 1556 1757 bf 19 85 1576 1757 bf 20 85 1595 1757 bf 19 85 1615 1757 bf 20 85 1634
1757 bf 19 85 1654 1757 bf 20 85 1673 1757 bf 0.962857 0.428571 0.0342857 c 19 85 1693 1757 bf 20 85 1712 1757 bf 19 85 1732 1757 bf 20 85 1751 1757 bf 19 85 1771 1757 bf 20 85 1790 1757 bf 19 85 1810 1757 bf 20 85 1829 1757 bf 0.969048 0.390476
0.0285714 c 19 85 1849 1757 bf 20 85 1868 1757 bf 19 85 1888 1757 bf 20 85 1907 1757 bf 19 85 1927 1757 bf 20 85 1946 1757 bf 19 85 1966 1757 bf 20 85 1985 1757 bf 19 85 2005 1757 bf 20 85 2024 1757 bf 0.975238 0.352381 0.0228571 c 19 85 2044 1757
bf 20 85 2063 1757 bf 19 85 2083 1757 bf 20 85 2102 1757 bf 19 85 2122 1757 bf 20 85 2141 1757 bf 19 85 2161 1757 bf 20 85 2180 1757 bf 0 0.513 0.820333 c 20 86 249 1842 bf 0 0.783 0.983667 c 19 86 269 1842 bf 0.145 0.841667 0.853333 c 20 86 288
1842 bf 0.29 0.873333 0.706667 c 19 86 308 1842 bf 0.3625 0.889167 0.633333 c 20 86 327 1842 bf 0.435 0.905 0.56 c 19 86 347 1842 bf 0.5075 0.920833 0.486667 c 20 86 366 1842 bf 0.54375 0.92875 0.45 c 19 86 386 1842 bf 0.58 0.936667 0.413333 c 20
86 405 1842 bf 0.61625 0.944583 0.376667 c 19 86 425 1842 bf 0.6525 0.9525 0.34 c 20 86 444 1842 bf 0.68875 0.960417 0.303333 c 19 86 464 1842 bf 0.725 0.968333 0.266667 c 20 86 483 1842 bf 0.76125 0.97625 0.23 c 19 86 503 1842 bf 20 86 522 1842 bf
0.7975 0.984167 0.193333 c 19 86 542 1842 bf 0.83375 0.992083 0.156667 c 20 86 561 1842 bf 19 86 581 1842 bf 0.87 1 0.12 c 20 86 600 1842 bf 19 86 620 1842 bf 0.87619 0.961905 0.114286 c 20 86 639 1842 bf 20 86 659 1842 bf 0.882381 0.92381 0.108571
c 19 86 679 1842 bf 20 86 698 1842 bf 19 86 718 1842 bf 0.888571 0.885714 0.102857 c 20 86 737 1842 bf 19 86 757 1842 bf 0.894762 0.847619 0.0971429 c 20 86 776 1842 bf 19 86 796 1842 bf 20 86 815 1842 bf 0.900952 0.809524 0.0914286 c 19 86 835
1842 bf 20 86 854 1842 bf 19 86 874 1842 bf 20 86 893 1842 bf 0.907143 0.771429 0.0857143 c 19 86 913 1842 bf 20 86 932 1842 bf 19 86 952 1842 bf 0.913333 0.733333 0.08 c 20 86 971 1842 bf 19 86 991 1842 bf 20 86 1010 1842 bf 19 86 1030 1842 bf
0.919524 0.695238 0.0742857 c 20 86 1049 1842 bf 19 86 1069 1842 bf 20 86 1088 1842 bf 19 86 1108 1842 bf 20 86 1127 1842 bf 0.925714 0.657143 0.0685714 c 19 86 1147 1842 bf 20 86 1166 1842 bf 19 86 1186 1842 bf 20 86 1205 1842 bf 19 86 1225 1842
bf 0.931905 0.619048 0.0628571 c 20 86 1244 1842 bf 19 86 1264 1842 bf 20 86 1283 1842 bf 19 86 1303 1842 bf 20 86 1322 1842 bf 19 86 1342 1842 bf 0.938095 0.580952 0.0571429 c 20 86 1361 1842 bf 19 86 1381 1842 bf 20 86 1400 1842 bf 19 86 1420
1842 bf 20 86 1439 1842 bf 19 86 1459 1842 bf 0.944286 0.542857 0.0514286 c 20 86 1478 1842 bf 19 86 1498 1842 bf 20 86 1517 1842 bf 19 86 1537 1842 bf 20 86 1556 1842 bf 19 86 1576 1842 bf 20 86 1595 1842 bf 0.950476 0.504762 0.0457143 c 19 86
1615 1842 bf 20 86 1634 1842 bf 19 86 1654 1842 bf 20 86 1673 1842 bf 19 86 1693 1842 bf 20 86 1712 1842 bf 19 86 1732 1842 bf 20 86 1751 1842 bf 0.956667 0.466667 0.04 c 19 86 1771 1842 bf 20 86 1790 1842 bf 19 86 1810 1842 bf 20 86 1829 1842 bf
19 86 1849 1842 bf 20 86 1868 1842 bf 19 86 1888 1842 bf 20 86 1907 1842 bf 19 86 1927 1842 bf 0.962857 0.428571 0.0342857 c 20 86 1946 1842 bf 19 86 1966 1842 bf 20 86 1985 1842 bf 19 86 2005 1842 bf 20 86 2024 1842 bf 19 86 2044 1842 bf 20 86
2063 1842 bf 19 86 2083 1842 bf 20 86 2102 1842 bf 19 86 2122 1842 bf 20 86 2141 1842 bf 0.969048 0.390476 0.0285714 c 19 86 2161 1842 bf 20 86 2180 1842 bf 1 1 1 c black 6 lw 249 219 m 1951 X s
gsave 2268 2191 0 0 C 1422 11 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Thickness \(mm\)) show NC gr 249 276 m -57 Y s 298 247 m -28 Y s 347 247 m -28 Y s 396 247 m -28 Y s 444 247 m -28 Y s 493 276 m -57 Y s 542 247 m -28 Y s 591 247 m -28
Y s 639 247 m -28 Y s 688 247 m -28 Y s 737 276 m -57 Y s 786 247 m -28 Y s 835 247 m -28 Y s 883 247 m -28 Y s 932 247 m -28 Y s 981 276 m -57 Y s 1030 247 m -28 Y s 1078 247 m -28 Y s 1127 247 m -28 Y s 1176 247 m -28 Y s 1225 276 m -57 Y s 1273
247 m -28 Y s 1322 247 m -28 Y s 1371 247 m -28 Y s 1420 247 m -28 Y s 1468 276 m -57 Y s 1517 247 m -28 Y s 1566 247 m -28 Y s 1615 247 m -28 Y s 1663 247 m -28 Y s 1712 276 m -57 Y s 1761 247 m -28 Y s 1810 247 m -28 Y s 1858 247 m -28 Y s 1907
247 m -28 Y s 1956 276 m -57 Y s 2005 247 m -28 Y s 2053 247 m -28 Y s 2102 247 m -28 Y s 2151 247 m -28 Y s 2200 276 m -57 Y s
gsave 2268 2191 0 0 C 225 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (0) show NC gr
gsave 2268 2191 0 0 C 476 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (1) show NC gr
gsave 2268 2191 0 0 C 712 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (2) show NC gr
gsave 2268 2191 0 0 C 957 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (3) show NC gr
gsave 2268 2191 0 0 C 1199 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (4) show NC gr
gsave 2268 2191 0 0 C 1444 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (5) show NC gr
gsave 2268 2191 0 0 C 1687 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (6) show NC gr
gsave 2268 2191 0 0 C 1932 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (7) show NC gr
gsave 2268 2191 0 0 C 2177 140 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (8) show NC gr 249 219 m 1709 Y s
gsave 2268 2191 0 0 C 83 1333 t 90 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Energy\(keV\)) show NC gr 303 333 m -54 X s 276 379 m -27 X s 276 424 m -27 X s 276 470 m -27 X s 276 515 m -27 X s 303 561 m -54 X s 276 606 m -27 X s 276 652 m -27 X
s 276 698 m -27 X s 276 743 m -27 X s 303 789 m -54 X s 276 834 m -27 X s 276 880 m -27 X s 276 925 m -27 X s 276 971 m -27 X s 303 1017 m -54 X s 276 1062 m -27 X s 276 1108 m -27 X s 276 1153 m -27 X s 276 1199 m -27 X s 303 1244 m -54 X s 276
1290 m -27 X s 276 1336 m -27 X s 276 1381 m -27 X s 276 1427 m -27 X s 303 1472 m -54 X s 276 1518 m -27 X s 276 1563 m -27 X s 276 1609 m -27 X s 276 1654 m -27 X s 303 1700 m -54 X s 276 1746 m -27 X s 276 1791 m -27 X s 276 1837 m -27 X s 276
1882 m -27 X s 303 1928 m -54 X s 303 333 m -54 X s 276 287 m -27 X s 276 242 m -27 X s
gsave 2268 2191 0 0 C 148 296 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (10) show NC gr
gsave 2268 2191 0 0 C 148 524 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (20) show NC gr
gsave 2268 2191 0 0 C 148 752 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (30) show NC gr
gsave 2268 2191 0 0 C 148 980 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (40) show NC gr
gsave 2268 2191 0 0 C 148 1208 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (50) show NC gr
gsave 2268 2191 0 0 C 148 1436 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (60) show NC gr
gsave 2268 2191 0 0 C 148 1664 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (70) show NC gr
gsave 2268 2191 0 0 C 148 1892 t 0 r /Helvetica-Bold findfont 82.6178 sf 0 0 m (80) show NC gr
gsave 2268 2191 0 0 C 268 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 78) show NC gr
gsave 2268 2191 0 0 C 365 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 459 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 556 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 652 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 749 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 849 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 245 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 75) show NC gr
gsave 2268 2191 0 0 C 365 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 459 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 556 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 652 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 749 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 849 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 330 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 45) show NC gr
gsave 2268 2191 0 0 C 365 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 83) show NC gr
gsave 2268 2191 0 0 C 464 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 95) show NC gr
gsave 2268 2191 0 0 C 561 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 652 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 749 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 849 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 416 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 37) show NC gr
gsave 2268 2191 0 0 C 365 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 75) show NC gr
gsave 2268 2191 0 0 C 464 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 90) show NC gr
gsave 2268 2191 0 0 C 561 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 96) show NC gr
gsave 2268 2191 0 0 C 658 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 755 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 849 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 946 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1043 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1140 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1236 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1336 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1433 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1530 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1627 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 501 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 268 584 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 365 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 467 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 61) show NC gr
gsave 2268 2191 0 0 C 561 584 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 74) show NC gr
gsave 2268 2191 0 0 C 658 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 82) show NC gr
gsave 2268 2191 0 0 C 755 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 88) show NC gr
gsave 2268 2191 0 0 C 855 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 92) show NC gr
gsave 2268 2191 0 0 C 952 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 94) show NC gr
gsave 2268 2191 0 0 C 1048 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 96) show NC gr
gsave 2268 2191 0 0 C 1145 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 97) show NC gr
gsave 2268 2191 0 0 C 1242 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 1342 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 1439 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 1536 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 1627 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1726 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1823 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 1920 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2017 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 2117 587 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m (100) show NC gr
gsave 2268 2191 0 0 C 271 669 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 365 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 29) show NC gr
gsave 2268 2191 0 0 C 464 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 561 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 55) show NC gr
gsave 2268 2191 0 0 C 658 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 64) show NC gr
gsave 2268 2191 0 0 C 758 669 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 71) show NC gr
gsave 2268 2191 0 0 C 855 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 77) show NC gr
gsave 2268 2191 0 0 C 952 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 82) show NC gr
gsave 2268 2191 0 0 C 1048 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 86) show NC gr
gsave 2268 2191 0 0 C 1145 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 88) show NC gr
gsave 2268 2191 0 0 C 1245 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 91) show NC gr
gsave 2268 2191 0 0 C 1342 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 93) show NC gr
gsave 2268 2191 0 0 C 1439 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 94) show NC gr
gsave 2268 2191 0 0 C 1536 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 95) show NC gr
gsave 2268 2191 0 0 C 1632 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 96) show NC gr
gsave 2268 2191 0 0 C 1732 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 97) show NC gr
gsave 2268 2191 0 0 C 1829 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 1926 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 98) show NC gr
gsave 2268 2191 0 0 C 2023 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 2122 672 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 99) show NC gr
gsave 2268 2191 0 0 C 273 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 365 755 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 464 755 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 27) show NC gr
gsave 2268 2191 0 0 C 561 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 36) show NC gr
gsave 2268 2191 0 0 C 658 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 755 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 50) show NC gr
gsave 2268 2191 0 0 C 855 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 56) show NC gr
gsave 2268 2191 0 0 C 954 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 61) show NC gr
gsave 2268 2191 0 0 C 1048 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 66) show NC gr
gsave 2268 2191 0 0 C 1145 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 70) show NC gr
gsave 2268 2191 0 0 C 1242 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 73) show NC gr
gsave 2268 2191 0 0 C 1342 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 76) show NC gr
gsave 2268 2191 0 0 C 1439 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 79) show NC gr
gsave 2268 2191 0 0 C 1536 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 82) show NC gr
gsave 2268 2191 0 0 C 1632 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 84) show NC gr
gsave 2268 2191 0 0 C 1732 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 86) show NC gr
gsave 2268 2191 0 0 C 1829 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 87) show NC gr
gsave 2268 2191 0 0 C 1926 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 89) show NC gr
gsave 2268 2191 0 0 C 2023 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 90) show NC gr
gsave 2268 2191 0 0 C 2125 758 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 91) show NC gr
gsave 2268 2191 0 0 C 273 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 365 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 464 840 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 561 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 32) show NC gr
gsave 2268 2191 0 0 C 658 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 39) show NC gr
gsave 2268 2191 0 0 C 755 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 45) show NC gr
gsave 2268 2191 0 0 C 858 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 51) show NC gr
gsave 2268 2191 0 0 C 952 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 56) show NC gr
gsave 2268 2191 0 0 C 1048 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 60) show NC gr
gsave 2268 2191 0 0 C 1145 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 64) show NC gr
gsave 2268 2191 0 0 C 1242 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 68) show NC gr
gsave 2268 2191 0 0 C 1345 840 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 71) show NC gr
gsave 2268 2191 0 0 C 1439 840 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 74) show NC gr
gsave 2268 2191 0 0 C 1536 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 77) show NC gr
gsave 2268 2191 0 0 C 1632 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 79) show NC gr
gsave 2268 2191 0 0 C 1735 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 81) show NC gr
gsave 2268 2191 0 0 C 1829 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 83) show NC gr
gsave 2268 2191 0 0 C 1926 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 85) show NC gr
gsave 2268 2191 0 0 C 2023 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 87) show NC gr
gsave 2268 2191 0 0 C 2122 843 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 88) show NC gr
gsave 2268 2191 0 0 C 273 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 370 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 464 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 561 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 658 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 755 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 30) show NC gr
gsave 2268 2191 0 0 C 855 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 34) show NC gr
gsave 2268 2191 0 0 C 952 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 38) show NC gr
gsave 2268 2191 0 0 C 1048 926 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 42) show NC gr
gsave 2268 2191 0 0 C 1145 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 46) show NC gr
gsave 2268 2191 0 0 C 1242 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 49) show NC gr
gsave 2268 2191 0 0 C 1342 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 52) show NC gr
gsave 2268 2191 0 0 C 1439 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 55) show NC gr
gsave 2268 2191 0 0 C 1536 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 58) show NC gr
gsave 2268 2191 0 0 C 1635 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 61) show NC gr
gsave 2268 2191 0 0 C 1732 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 63) show NC gr
gsave 2268 2191 0 0 C 1829 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 66) show NC gr
gsave 2268 2191 0 0 C 1926 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 68) show NC gr
gsave 2268 2191 0 0 C 2023 929 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 70) show NC gr
gsave 2268 2191 0 0 C 2122 926 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 72) show NC gr
gsave 2268 2191 0 0 C 273 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 370 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 467 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 561 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 658 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 755 1011 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 855 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 952 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1048 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 32) show NC gr
gsave 2268 2191 0 0 C 1145 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 35) show NC gr
gsave 2268 2191 0 0 C 1242 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 37) show NC gr
gsave 2268 2191 0 0 C 1342 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 40) show NC gr
gsave 2268 2191 0 0 C 1439 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 43) show NC gr
gsave 2268 2191 0 0 C 1536 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 45) show NC gr
gsave 2268 2191 0 0 C 1632 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 48) show NC gr
gsave 2268 2191 0 0 C 1732 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 50) show NC gr
gsave 2268 2191 0 0 C 1829 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 52) show NC gr
gsave 2268 2191 0 0 C 1926 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 54) show NC gr
gsave 2268 2191 0 0 C 2023 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 56) show NC gr
gsave 2268 2191 0 0 C 2122 1014 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 58) show NC gr
gsave 2268 2191 0 0 C 273 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 370 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 470 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 561 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 658 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 755 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 855 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 952 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 1048 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 1145 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1245 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 31) show NC gr
gsave 2268 2191 0 0 C 1342 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 33) show NC gr
gsave 2268 2191 0 0 C 1439 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 35) show NC gr
gsave 2268 2191 0 0 C 1536 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 38) show NC gr
gsave 2268 2191 0 0 C 1632 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 40) show NC gr
gsave 2268 2191 0 0 C 1732 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 42) show NC gr
gsave 2268 2191 0 0 C 1829 1097 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 44) show NC gr
gsave 2268 2191 0 0 C 1926 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 46) show NC gr
gsave 2268 2191 0 0 C 2023 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 48) show NC gr
gsave 2268 2191 0 0 C 2122 1100 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 49) show NC gr
gsave 2268 2191 0 0 C 276 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 470 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 567 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 661 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 755 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 855 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 952 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1048 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 1145 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 1242 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 1342 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 1439 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1536 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 30) show NC gr
gsave 2268 2191 0 0 C 1632 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 32) show NC gr
gsave 2268 2191 0 0 C 1732 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 34) show NC gr
gsave 2268 2191 0 0 C 1829 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 36) show NC gr
gsave 2268 2191 0 0 C 1926 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 37) show NC gr
gsave 2268 2191 0 0 C 2023 1185 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 39) show NC gr
gsave 2268 2191 0 0 C 2125 1182 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 41) show NC gr
gsave 2268 2191 0 0 C 276 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 470 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 567 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 658 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 755 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 855 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 952 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 1048 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1145 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 1245 1268 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 1342 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 1439 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 1536 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 1632 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 1732 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 30) show NC gr
gsave 2268 2191 0 0 C 1832 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 31) show NC gr
gsave 2268 2191 0 0 C 1926 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 33) show NC gr
gsave 2268 2191 0 0 C 2023 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 34) show NC gr
gsave 2268 2191 0 0 C 2122 1271 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 36) show NC gr
gsave 2268 2191 0 0 C 276 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 470 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 567 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 664 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 761 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 858 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 952 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1048 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1145 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1242 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1342 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1439 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 1538 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 1632 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 1732 1353 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 1829 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 25) show NC gr
gsave 2268 2191 0 0 C 1926 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 26) show NC gr
gsave 2268 2191 0 0 C 2023 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 28) show NC gr
gsave 2268 2191 0 0 C 2122 1356 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 29) show NC gr
gsave 2268 2191 0 0 C 276 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 470 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 567 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 664 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 761 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 860 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 952 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1051 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1145 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1242 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1342 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1439 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 1536 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1632 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1732 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 1832 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 1926 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 2023 1442 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 2122 1439 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 24) show NC gr
gsave 2268 2191 0 0 C 276 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 470 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 567 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 664 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 761 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 860 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 952 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1051 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1145 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1242 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1342 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1439 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1536 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1632 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 1732 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 1829 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 20) show NC gr
gsave 2268 2191 0 0 C 1929 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 21) show NC gr
gsave 2268 2191 0 0 C 2023 1524 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 22) show NC gr
gsave 2268 2191 0 0 C 2122 1527 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 23) show NC gr
gsave 2268 2191 0 0 C 276 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 370 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 470 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 567 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 664 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 761 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 860 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 957 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1054 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1145 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1245 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1342 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1439 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1536 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1632 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1732 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 1829 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 1926 1610 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 2023 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 18) show NC gr
gsave 2268 2191 0 0 C 2122 1612 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 19) show NC gr
gsave 2268 2191 0 0 C 273 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 0) show NC gr
gsave 2268 2191 0 0 C 373 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 470 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 567 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 664 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 761 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 860 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 957 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1054 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1151 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1242 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1345 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1442 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1536 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1632 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1732 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 1829 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 1926 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 2023 1698 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 16) show NC gr
gsave 2268 2191 0 0 C 2122 1695 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 17) show NC gr
gsave 2268 2191 0 0 C 273 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 0) show NC gr
gsave 2268 2191 0 0 C 373 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 470 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 567 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 664 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 761 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 860 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 957 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 1054 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1151 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1248 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1348 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1439 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1538 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1635 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1732 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 1829 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr
gsave 2268 2191 0 0 C 1926 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 2023 1781 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 14) show NC gr
gsave 2268 2191 0 0 C 2122 1783 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 15) show NC gr
gsave 2268 2191 0 0 C 273 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 0) show NC gr
gsave 2268 2191 0 0 C 373 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 1) show NC gr
gsave 2268 2191 0 0 C 470 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 567 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 2) show NC gr
gsave 2268 2191 0 0 C 664 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 3) show NC gr
gsave 2268 2191 0 0 C 761 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 860 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 4) show NC gr
gsave 2268 2191 0 0 C 957 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 5) show NC gr
gsave 2268 2191 0 0 C 1054 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 6) show NC gr
gsave 2268 2191 0 0 C 1151 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1248 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 7) show NC gr
gsave 2268 2191 0 0 C 1348 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1444 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 8) show NC gr
gsave 2268 2191 0 0 C 1541 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 9) show NC gr
gsave 2268 2191 0 0 C 1632 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1732 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 10) show NC gr
gsave 2268 2191 0 0 C 1832 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 11) show NC gr
gsave 2268 2191 0 0 C 1926 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 2023 1866 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 12) show NC gr
gsave 2268 2191 0 0 C 2122 1869 t 0 r /Helvetica-Bold findfont 39.8845 sf 0 0 m ( 13) show NC gr 1 1 1 c 1573 132 225 1951 bf black
gsave 2268 2191 0 0 C 305 1980 t 0 r /Helvetica-Bold findfont 102.56 sf 0 0 m (Silicon Sensor Efficiency \(%\)) show NC gr
gr gr
showpage
end
%%EOF

File diff suppressed because it is too large Load Diff

View File

@ -3,299 +3,135 @@
\usepackage[dvips]{graphicx}
\usepackage{verbatim}
\usepackage{hyperref}
\usepackage{color}
\begin{document}
\title{SLS Detectors software installation}
\author{Anna Bergamaschi, Dhanya Thattil}
\author{Anna Bergamaschi}
\date{\today}
\maketitle
\tableofcontents
\clearpage
%setcounter{tocdepth}{4} and \setcounter{secnumdepth}{4}
The SLS detectors software is intended to control the detectors developed by the SLS Detectors group.
It provides a command line interface (text client), a graphical user interface (GUI) as well as an API that can be embedded in your acquisitions system, some tools for detector calibration and the software to receive the data from detector with high data throughput (e.g. GOTTHARD, EIGER).
\section{The Software Package}
The SLS detectors software is intended to control the detectors developed by
the SLS Detectors group. The detectors currently supported are:
\indent MYTHEN, GOTTHARD, EIGER and JUNGFRAU.
\section{The software package}
The package provides software for the distributed system that comprises of
detectors, data receivers (to process detector data), and the client (to control
or monitor the system). The client and data receivers can be embedded in
the user's acquisitions system. Furthermore, the package also provides some
tools for detector calibration.
\subsection{Binaries}
\noindent The complete software package is composed of several programs which
can be installed (or locally compiled) depending on one's requirements:
The complete software package is composed of several programs which can be installed (or locally compiled) depending on the needs:
\begin{itemize}
\item \textcolor{blue}{libSlsDetector.so, libSlsReceiver.so}:\\
The \textit{slsDetector shared and static libraries}, which are
necessary for all user interfaces. The \textit{C++ API} via the class
\textit{slsDetectorUsers} (installed with the default package) or the
\textit{Python API} via the class \textit{sls\_detector} (installed with the
package including Python API), which can be used from the user's acquisition
software to control the detectors and the data receivers.
\item \textcolor{blue}{sls\_detector\_put, sls\_detector\_get,
sls\_detector\_acquire, sls\_detector\_help}: \\
The \textit{command line interfaces}, which are provided to communicate with the
detectors and data receivers using the command line.
\item \textcolor{blue}{slsReceiver}: \\
The \textit{data receiver}, which can be run on a different machine than the
client, receives the data from the detector and processes it. The receiver can
be configured, controlled and monitored by the client.
\item \textcolor{blue}{slsDetectorGUI}: \\
The \textit{graphical user interface}, which provides a user friendly way
of operating the detectors and data receivers with online data preview.
\item \textcolor{blue}{energyCalibrationWizard,angularCalibrationWizard}: \\
The \textit{calibration wizards} to analyze the data and produce the energy or
angular calibration files.
\item The \textit{virtual Detector servers} to simulate the detectors behavior.
However, only control commands work, not the data acquisition itself.
\item The \textbf{slsDetector shared and static libraries} which are necessary for all user interfaces. \\
The class slsDetectorUsers can be used as API from your acquisition software (see separate documentation).
\item The \textbf{command line interfaces (sls\_detector\_put, sls\_detector\_get, sls\_detector\_acquire, sls\_detector\_help)}, which are provided to communicate with the detectors using the command line and eventually to the data receiver
\item The \textbf{data receiver (slsReceiver)}, which can be run on a different machine, receives the data from the detector and interfaces to the control software via TCP/IP for defining e.g. the file name, output path and return status and progress of the acquisition
\item The \textbf{graphical user interface (slsDetectorGUI)} which provides a user friendly way of operating the detectors with online data preview
\item The \textbf{calibration wizards (energyCalibrationWizard, angularCalibrationWizard)} to analyze the data and produce the energy or angular calibration files
\item The \textbf{GOTTHARD and MYTHEN virtual servers} to simulate the detectors behavior (however only control commands work, not the data acquisition itself)
\end{itemize}
Please refere to the SLS Detectors FAQ for additional documentation.
\section{Requirements}
The software is written in C/C++.\\
It needs to be able to access the shared memeory of the control PC and communicate to the detectors over TCP/IP. Therefore the detector should receive a proper IP address (either DHCP or static) and no firewall should be present between th control PC and the detector.
\section{Install Binaries via Conda}
This section is useful only if one wants to download only the binaries for
specific distribution and use the package via command line. Please refer later
sections to download source code and compile them.
For installing the slsDetector shared and static libraries and the slsDetectorClient software, any Linux installation with a working gcc should be fine.
The slsDetectorGUI is based on Qt4 with Qwt libraries.
One can download and install Miniconda via
The calibration wizards are based on the CERN Root data analysis framework.
\url{https://conda.io/miniconda.html}
To compile the software you will need the whole Qt4, Qwt and Root installation, including the header files.\\
To run the software, it is enough to have the Qt4, Qwt or Root libraries appended to the \verb=LD_LIBRARY_PATH=.
\subsection{Qt4 installation}
The conda package uses Travis CI for continuous integration with
automatic deployment to Anaconda Cloud. One can download only the package or the
package including the python interface.
After the installation, the binaries will be available in your path.
Please remember to clear shared memory after installation.
\begin{verbatim}
#displays list of shared memeory segments
ipcs -m
#remove segments that have nattach equal to zero. They key is the first column
ipcrm -M [key]
\end{verbatim}
\begin{itemize}
\item Only the package
\begin{verbatim}
#Add conda channels
conda config --add channels conda-forge
conda config --add channels slsdetectorgroup
#Install latest version
conda install sls_detector_software
#Install specific release (GLIBC2.14)
conda install sls_detector_software=3.1.0
#Scientific Linux 6 version (GLIBC2.12)
conda install sls_detector_software=SL6_3.1.0
\end{verbatim}
\item The package including Python interface
\begin{verbatim}
#Add conda channels
conda config --add channels conda-forge
conda config --add channels sls_detector
#Install latest version
conda install sls_detector
#Install specific release (GLIBC2.14)
conda install sls_detector=3.1.0
#Scientific Linux 6 version (GLIBC2.12)
conda install sls_detector=SL6_3.1.0
\end{verbatim}
\end{itemize}
\clearpage
\section{Install via Source Code}
This section is useful if one wants to use the API and embed it in their
acquisition system, or if one wants to download the source code and compile.
\subsection{Download Source Code}
\begin{itemize}
\item Only the package
\begin{verbatim}
#Clone source code with specific release
git clone https://github.com/slsdetectorgroup/slsDetectorPackage.git --branch
3.1.0
\end{verbatim}
\item The package including Python interface
\begin{verbatim}
#Clone source code with specific release
git clone https://github.com/slsdetectorgroup/sls_detector.git --branch
3.1.0
\end{verbatim}
\end{itemize}
\subsection{Requirements}
These are the basic requirements to install and use the software. Fine Tuning
the system will be discussed in other documentation provided.
\begin{itemize}
\item \emph{C/C++}:\\
The software is written in C/C++. If Python API is used, it is a wrap around
to the C++ software. Any Linux installation with working libgcc should be
sufficient.
\item \emph{Shared Memory}:\\
Access to the shared memory of the control PC is required for the client.
\item \emph{Network}:\\
The control PC communicates to the detectors and data receivers over TCP/IP.
Therefore, the detector should receive a proper IP address (either DHCP or
static) and no firewall should be present between the control PC and the
detector.
\item \emph{Compilation}:\\
cmake is required to compile. make is also possible, but is harder to find
dependencies.
\item \emph{GUI}:\\
To use the GUI, one requires atleast Qt4.8.2 and Qwt6.0. Installation of these
are discussed in the next sections.
\item \emph{Calibration Wizards}:\\
They are based on the CERN Root data analysis framework. Installation of it is
discussed in the next sections.
\end{itemize}
\subsubsection{Qt4 Installation for GUI}
It must be installed before Qwt. A Qt version equal or higher than 4.6 is
required. One can install it:
\begin{itemize}
\item via YUM:
\begin{verbatim}
yum install qt-devel
\end{verbatim}
\item via download from:\\
\url{
https://download.qt.io/archive/qt/4.8/4.8.2/qt-everywhere-opensource-src-4.8.2.t
ar.gz}
A Qt version equal or higher than 4.6 is required.
You can retrieve the Qt4 libraries using YUM or download the open source version from e.g. \url{ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.8.1.tar.gz}
To install:
\begin{verbatim}
> gunzip qt-everywhere-opensource-src-4.8.2.tar.gz
> tar xvf qt-everywhere-opensource-src-4.8.2.tar
> gunzip qt-everywhere-opensource-src-4.6.2.tar.gz
> tar xvf qt-everywhere-opensource-src-4.6.2.tar
> ./configure
> make
> make install
\end{verbatim}
By default Qt4 will be installed in /usr/local/Trolltech/Qt-4.8.2/.
\end{itemize}
\textbf{Setup Environment}
One has to ensure that \verb=PATH= and \verb=LD_LIBRARY_PATH= have
been updated to include Qt4 install path, binaries and libraries.
Confirm by executing \verb=qmake -v= and ensuring the result points to Qt4 (not
Qt3 or Qt5).
If the environment is not set up, one can add the libraries and
executables to the .bashrc by adding
\verb=LD_LIBRARY_PATH= and \verb=PATH=:
By default Qt4 will be installed int /usr/local/Trolltech/Qt-4.8.1/
Edit your .bashrc to define the enviroment variable \verb=QTDIR= and add the libraries and exacutables to your \verb=LD_LIBRARY_PATH= and \verb=PATH=:
\begin{verbatim}
export QTDIR=/usr/local/Trolltech/Qt-4.8.2
export QTDIR=/usr/local/Trolltech/Qt-4.8.1
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
\end{verbatim}
If your system also have Qt3 installed, make sure that \verb=QTDIR=, \verb=PATH= and \verb=LD_LIBRARY_PATH= point to Qt4 before installing Qwt (and of course compiling and running the GUI).
\subsubsection{Qwt Installation for GUI}
Before installing Qwt, one must install Qt
and ensure that \verb=QTDIR=, \verb=LD_LIBRARY_PATH= and \verb=PATH= point to
the correct Qt4
version.
\subsection{Qwt installation}
A Qwt version equal or higher than 5 is required.\\
Before installing it, make sure that your \verb=QTDIR=, \verb=LD_LIBRARY_PATH= and \verb=PATH= point to the correct Qt4 version.
A Qwt version equal or higher than 6 is required. One can
install it:
\begin{itemize}
\item via YUM:
You can retrieve the Qwt libraries using YUM or download the open source version via svn:
\begin{verbatim}
yum install qwt-devel
> svn co https://qwt.svn.sourceforge.net/svnroot/qwt/branches/qwt-6.0
\end{verbatim}
\item via download from:\\
\url{
https://sourceforge.net/projects/qwt/files/qwt/6.0.0/qwt-6.0.0.zip/download}
To install:
\begin{verbatim}
> cd qwt-6.0.0
> cd qwt-6.0
> qmake
> make
> make install
\end{verbatim}
By default Qwt will be installed int /usr/local/qwt-6.0.0
\end{itemize}
\textbf{Setup Environment}
One has to ensure that \verb=QWTDIR= and \verb=LD_LIBRARY_PATH= have
been updated to include Qwt install path and libraries.
If the environment is not set up, one can add the libraries to the
.bashrc by adding \verb=LD_LIBRARY_PATH=:
By default Qwt will be installed in /usr/local/qwt-6.0
Edit your .bashrc to define the enviroment variable \verb=QWTDIR= and add the libraries to the \verb=LD_LIBRARY_PATH=:
\begin{verbatim}
export QWTDIR=/usr/local/qwt-6.0.0/
export QWTDIR=/usr/local/qwt-6.0-svn/
export LD_LIBRARY_PATH=$QWTDIR/lib:$LD_LIBRARY_PATH
\end{verbatim}
\subsection{Installation with YUM}
You must install the qt4 and qwt development package i.e.
\begin{verbatim}
> yum install qt-devel qwt-devel
\end{verbatim}
and then edit edit your .bashrc as follows
\begin{verbatim}
export ROOTSYS=/opt/root/5.28.00
export QTDIR=/usr/lib64/qt4
export QWTDIR=/usr/include/qwt
export PATH=$QTDIR:bin:$PATH
\end{verbatim}
You should then continue with the root installation.
To compile, you should edit the file slsDetectorGui/slsDetectorGui.pro as follows.\\
All lines containing \verb=$QTDIR= and \verb=$QWTDIR= should be commented, except in the INCLUDEPATH (\verb=$QWTDIR \=).\\
Moreover the \verb=LIBS= line should be changed \verb=-L$(QWTDIR)/lib= to \verb=-L$(QWTDIR)/lib64=.
\subsection{Root installation}
The software has been developed and tested with root 5.20, but any version should work.
\subsubsection{Root Installation for Calibration Wizards}
The software has been developed and tested with root 5.20, but any version
should work. One can download it from:
Download the sources via svn:
\begin{verbatim}
> svn co https://root.cern.ch/svn/root/trunk root
\end{verbatim}
\noindent To install:
To install:
\begin{verbatim}
> cd root
> ./configure --enable-qt
@ -303,212 +139,120 @@ should work. One can download it from:
> make install
\end{verbatim}
Edit your .bashrc to define the ROOTSYS enviroment variable and annd
the libraries and executables to the \verb=LD_LIBRARY_PATH= and \verb=PATH=:
Edit your .bashrc to define the ROOTSYS enviroment variable and annd the libraries and executables to the \verb=LD_LIBRARY_PATH= and \verb=PATH=:
\begin{verbatim}
export ROOTSYS=/usr/local/root-5.34
export ROOTSYS=/usr/local/root
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
\end{verbatim}
You can also download the binaries, assuming that your linux and gcc versions
match as in:
You can also download the binaries, assuming that your linuc and gcc versions match:
\begin{verbatim}
http://root.cern.ch/drupal/content/production-version-534
\end{verbatim}
\section{Compilation}
\subsection{Compilation}
One requires \verb=cmake= to compile and can be done in two ways:
\subsubsection{Using script cmk.sh}
The script uses \verb=cmake=. After compiling, the libraries and executables
will be found in `slsDetectorPackage/build/bin` directory.
Usage: [-c] [-b] [-h] [-d HDF5 directory] [-j]
If you simply want to install the software in the working directory you can:
\begin{itemize}
\item -[no option]: only make
\item -c: Clean
\item -b: Builds/Rebuilds CMake files normal mode
\item -h: Builds/Rebuilds Cmake files with HDF5 package
\item -d: HDF5 Custom Directory
\item -t: Build/Rebuilds only text client
\item -r: Build/Rebuilds only receiver
\item -g: Build/Rebuilds only gui
\item -j: Number of threads to compile through
\item[make] compile the library, the command line interface and the receiver
\item[make lib] compile only the library
\item[make textclient] compile the command line interface (and the library, since it is required)
\item[make stextclient] compile the command line interface statically linking the library (and the library, since it is required)
\item[make receiver] compile the data reciever (and the library, since it is required)
\item[make sreceiver] compile the data reciever statically linking the library (and the library, since it is required)
\item[make gui] compile slsDetectorGUI - requires a working Qt4 and Qwt installation
\item[make calWiz] compile the calibration wizards - requires a working root installation
\item[make doc] compile documentation in pdf format
\item[make htmldoc] compile documentation in html format
\item[make install\_lib] installs the libraries, the text clients, the documentation and the includes for the API
\item[make install] installs all software, including the gui, the cal wizards and the includes for the API
\item[make confinstall] installs all software, including the gui, the cal wizards and the includes for the API, prompting for the install paths
\item[make clean] remove object files and executables
\item[make help] lists possible targets
\item[make mythen\_virtual] compile a virtual MYTHEN detector server (works for control commands, not for data taking)
\item[make gotthard\_virtual] compile a virtual GOTTHARD detector server (works for control commands, not for data taking)
\end{itemize}
Some example options for compilation:
Most basic option: \verb=./cmk.sh -b=
For only make: \verb=./cmk.sh=
For make clean;make: \verb=./cmk.sh -c=
For using hdf5 without custom dir /blabla: \verb=./cmk.sh -h -d /blabla=
For rebuilding cmake without hdf5: \verb=./cmk.sh -b=
For using multiple cores to compile faster: \verb=./cmk.sh -j9=
For rebuilding only certain parts: \verb=./cmk.sh -tg= (only text client and
gui)
\subsubsection{Directly using cmake}
Use cmake to create out-of-source builds, by creating a build folder parallel to
source directory.
\begin{verbatim}
$ cd ..
$ mkdir slsDetectorPackage-build
$ cd slsDetectorPackage-build
$ cmake ../slsDetectorPackage -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=OFF
$ make
\end{verbatim}
Use the following as an example to compile statically and using specific hdf5
folder
\begin{verbatim}
$ HDF5_ROOT=/opt/hdf5v1.10.0 cmake ../slsDetectorPackage
-DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=ON
\end{verbatim}
After compiling, the libraries and executables will be found at `bin` directory
\begin{verbatim}
$ ls bin/
gui_client libSlsDetector.a libSlsDetector.so libSlsReceiver.a
libSlsReceiver.so sls_detector_acquire sls_detector_get slsDetectorGui
sls_detector_help sls_detector_put slsReceiver
\end{verbatim}
The path where the files binaries, libraries, documentation and includes will be installed can either be defined interactively by sourcing the \verb=configure= script (not executing!) or during compilation using \verb=make confinstall= or defined on the command line deifning one (or all) the following variables (normally \verb=INSTALLROOT= is enough:
\begin{itemize}
\item[INSTALLROOT] Directory where you want to install the software. Defaults to \verb=PWD=
\item[BINDIR] Directory where you want to install the binaries. Defaults to bin/
\item[INCDIR] Directory where you want to pute the header files. Defaults to include
\item[LIBDIR] Directory where you want to install the libraries. Defaults to bin/
\item[DOCDIR] Directory where you want to copy the documentation. Defaults to doc/
\end{itemize}
To be able to run the executables, append the \verb=BINDIR= directory to your \verb=PATH= and \verb=LIBDIR= to the \verb=LD_LIBRARY_PATH=.
\subsection{Setting environment variables}
One can set up the environment variables in the following ways.
To run the GUI, you also need to add to your \verb=LD_LIBRARY_PATH= the Qt4 and Qwt libraries, without the need to install the whole Qt and Qwt developer package:
\begin{itemize}
\item libqwt.so.6
\item libQtGui.so.4
\item libQtCore.so.4
\item libQtSvg.so.4
\end{itemize}
\subsubsection{Using .bashrc file}
To run the calibration wizards it is preferrable to have a complete Root installation (binaries), with \verb=ROOTSYS= defined and the libraries added to the \verb=LD_LIBRARY_PATH=.
\section{Detector upgrade}
Sometimes the upgarde of the communication software, can require an upgrade of the software and/or firmware running on the detector as well.\\
In these cases, the users are not expected to compile teh software themselves (which would require dedicated softwares) but only to download on the detector board the programming files and/or communication program provided by the SLS Detectors group.
\subsection{MYTHEN upgrade}
\subsubsection{Firmware upgrade}
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 \verb=emacs ~/.bashrc=
\item Add the following function \verb=setup_slsdet= and replace \verb=path=
with absolute path of installed directory
\begin{verbatim}
function setup_slsdet
{
export PKGPATH=[path]
export LD_LIBRARY_PATH=$PKGPATH/slsDetectorPackage/build/bin:$LD_LIBRARY_PATH
export PATH=$PKGPATH/slsDetectorPackage/build/bin:$PATH
cd $PKGPATH/slsDetectorPackage/build/bin
}
\end{verbatim}
\item \verb=source ~/.bashrc=
\item Next time, just run \verb=setup_slsdet= to load the environment
variables.
\end{enumerate}
One can also add the GUI environment variables if installed locally by adding
the following in the function \verb=setup_sldet= \\
\begin{verbatim}
export QTDIR=/path-where-it-is/Qt-4.8.2
export QWTDIR=/path-where-it-is/qwt-6.0.1
export QWT3D=/path-where-it-is/qwtplot3d
export QMAKESPEC=$QTDIR/mkspecs/linux-g++
export LD_LIBRARY_PATH=$QTDIR/lib:$QWTDIR/lib:$QWT3D/lib:$LD_LIBRARY _PATH
export PATH=$QTDIR/bin:$PATH
\end{verbatim}
\subsubsection{Without .bashrc file}
Go to binaries folder slsDetectorPackage/build/bin and execute the following:
\begin{verbatim}
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
export PATH=$PWD:$PATH
\end{verbatim}
\subsection{Clean Shared Memory}
It is very crucial to clean the shared memory, before using a new version of
the SLS Detector Package or a different detector type.
One can use the \verb=cleansharedmemory.sh= script available under the
slsDetector Package.
One can also just use the following commands to clean the shared memory
segments one by one.
\begin{verbatim}
#displays list of shared memeory segments
ipcs -m
#remove segments that have nattach equal to zero. They key is the first column
ipcrm -M [key]
\end{verbatim}
\section{Software Upgrade}
The upgrade of the package could require an upgrade of the on-board detector
server and/or firmware running on the detector as well.
\subsection{MYTHEN}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{MYTHEN Firmware}
To upgrade the firmware you need either a working version of the Altera
Quartus software or of the Quartus programmer, which can easily be downloaded
from: \\
\url{https://www.altera.com/download/programming/quartus2/pq2-index.jsp}
\medskip
\noindent 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-Blaster to 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 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 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.
\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}
\subsubsection{MYTHEN On-board Software}
\begin{enumerate}
\item Connect to the board using telnet:
\subsubsection{Software upgrade}
First telent to the board:
\begin{verbatim}
telnet mymcs.mydomain.com
username: root
password: pass
\end{verbatim}
\item Kill currently running servers and ensure \verb=/mnt/flash/root= exists.
\begin{verbatim}
killall mythenDetectorServer
ls /mnt/flash/root
#if the directory does not exist mkdir /mnt/flash/root
\end{verbatim}
\item Transfer the provided software by ftp to the MCS.
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
@ -518,312 +262,14 @@ put mythenDetectorServer
quit
\end{verbatim}
\item After pressing reset on the board, the board should reboot.
\item If the program does not correctly start
\begin{enumerate}
\item 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=).
\item If program has not started, make the program executable by telnetting to
the MCS and executing: \\
\verb=chmod a+xrw /mnt/flash/root/mythenDetectorServer=
\item After pressing reset on the board, the board should reboot and the
acqusition program correctly start.
\end{enumerate}
\end{enumerate}
\subsection{GOTTHARD}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{GOTTHARD Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: \\
\indent \indent 11.01.2013 \\
\indent Latest version: \\
\indent \indent 08.02.2018 (50um and 25um Master) \\
\indent \indent 09.02.2018 (25 um Slave) \\
Normally, the firmware will be upgraded by us as it requires programming the
FPGA via the USB-Blaster.
To upgrade the firmware you need either a working version of the Altera
Quartus software or of the Quartus programmer, which can easily be downloaded
from: \\
\url{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-Blaster to 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}
\subsubsection{GOTTHARD On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
\begin{enumerate}
\item Install tftp if the pc does not have it.
\item Copy the server from serverBin folder to /tftpboot (or equivalent tftp
folder) of the pc
\item Copy the server to the detector by:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/gotthardDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Copy new on-board server from pc to the blackfin using: \\
\verb=tftp pcxxx -r gotthardDetectorServerxxx -g=
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/gotthardDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=gotthardDetectorServerxxx= \\
\verb=gotthardDetectorServerxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
\subsection{EIGER}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{EIGER Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: 16 \\
\indent Latest version: 20 \\
\begin{enumerate}
\item One must get the latest package's corresponding bit files from the SLS
Detector Group.
\item If one does not have the bcp script, that should also be obtained from
the SLS Detector Group. It is required to program the bit files and requires
that tftp be installed on the pc.
\item Run the following to update firmware
\begin{verbatim}
#update back end fpga
bcp download.bit bebxxx:/fw0
#update front left fpga
bcp download.bit bebxxx:/febl
#update front right fpga
bcp download.bit bebxxx:/febr
#update kernel
bcp download.bit bebxxx:/kernel
\end{verbatim}
Please update bit files with great caution as it could make your board
inaccessible, if done incorrectly.
\end{enumerate}
\subsubsection{EIGER On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
Update the on-board software without connecting to the detector
\begin{verbatim}
#password for the boards: root
#Kill existing servers that are running on the detector
ssh root@beb031 killall eigerDetectorServer;
#Copy on-board server to detector inside executables folder
scp ~/path-where-it-is/eigerDetectorServerxxx root@bebxxx:~/executables;
#Overwrite the actual eigerDetectorServer on board
scp ~/path-where-it-is/eigerDetectorServerxxx
root@bebxxx:~/executables/eigerDetectorServer;
#sync
ssh root@bebxxx sync;
#reboot the eiger board
\end{verbatim}
\bigskip One can connect to the detector by:
\begin{verbatim}
ssh root@bebxxx
password: root
\end{verbatim}
The on-board server is in ~/executables folder and respawned at startup in \\
\verb=/etc/rc5.d/S50board_com.sh=
\subsection{JUNGFRAU}
In such cases, the users are not expected to compile the software
themselves (which would require dedicated softwares) but only to download on the
detector board the programming files and/or software package provided by
the SLS Detectors group.
\subsubsection{JUNGFRAU Firmware}
\textit{For SLS Detector Package v3.1.0} \\
\indent Minimum compatible version: 13.11.2017 \\
\indent Latest version: 13.11.2017 \\
At times, one has to update the firmware, which then also requires updating the
on-board software.
\textbf{\textit{Jungfrau firmware can be upgraded via the SLS Detector Package
binaries from the command line.}}
\begin{enumerate}
\item One must get the latest package's corresponding POF file from the SLS
Detector Group.
\item Update the latest SLS Detector package installed.
\item Update the on-board software as per the instructions in the next
section.
\item Start the on-board server in debug mode:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Start the server in debug mode using: \\
\verb=./jungfrauDetectorServerxxx -debug= \\
Leave this console on to come back to it later.
\end{enumerate}
\item From the command line of the pc, clear shared memory \\
\verb=./sls_detector_get free= \\
If one gets shmget error, please clean the shared memory properly using the
script in \verb=slsDetectorPackage/cleansharedmemory.sh=
\item Add the detector to shared memory using \\
\verb=./sls_detector_put hostname bchipxxx=
\item Program the FPGA using \\
\verb=./sls_detector_put programfpga xxx.pof=
\item Once the programming is done:
\begin{enumerate}
\item Switch to the console that has the debug server running and kill it
using Ctrl+C and ensure no jungfrauDetectorServers are
running
\item Restart the new server to see if it runs with the new firmware \\
\verb=./jungfrauDetectorServerxxx= \\
If the server didn't start properly, please contact us with the error message
shown when starting the server up, else continue with the following steps.
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=jungfrauDetectorServervxxx= \\
\verb=jungfrauDetectorServervxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
\subsubsection{JUNGFRAU On-board Software}
Every SLS Detector package release will have its coresponding matching on-board
server under \textbf{slsDetectorPackage/serverBin}.
\begin{enumerate}
\item Install tftp if the pc does not have it.
\item Copy the server from serverBin folder to /tftpboot (or equivalent tftp
folder) of the pc
\item Copy the server to the detector by:
\begin{enumerate}
\item Connect to the blackfin on the detector\\
\verb=telnet bchipxxx=
\item Prevent existing on-board server from respawning by:
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Comment out the line
\verb=#ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure no gotthardDetectorServers are running
\end{enumerate}
\item Copy new on-board server from pc to the blackfin using: \\
\verb=tftp pcxxx -r jungfrauDetectorServervxxx -g=
\item Respawn the new server (server starts at detector statup):
\begin{enumerate}
\item Edit \verb=/etc/inittab=
\item Uncomment out the line
\verb=ttyS0::respawn:/jungfrauDetectorServervxxx=
\item Reboot blackfin using \verb=reboot=
\item Run \verb=ps= to ensure that both the gotthardDetectorServers are
running.\\
\verb=jungfrauDetectorServervxxx= \\
\verb=jungfrauDetectorServervxxx 1953=
\end{enumerate}
\end{enumerate}
\end{enumerate}
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.
\begin{comment}
\section{Detector system architecture}
@ -887,7 +333,7 @@ You will need to configure more than one detector, only in case you want to oper
\subsection{MYTHEN}
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{settingsdir} 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{settingsdir} 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=trimdir=.
\textit{settingsdirdir} 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=trimdir=.
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{settingsdir} 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.\\
@ -900,11 +346,7 @@ The \textit{settingsdir} and \textit{caldir} should be properly configured for y
\subsection{GOTTHARD}
A \textit{settingsdir} should be configured, as the directory \verb=settings= in this software package.\\
It must contain the subdirectories \verb=dynamicgain=, \verb=gain1=,
\verb=gain2=, \verb=gain3=, \verb=highgain=, \verb=lowgain=,
\verb=mediumgain=, and \verb=veryhighgain= in order to properly configure the
GOTTHARD detector using the various gain settings.
It must contain the subdirectories \verb=dynamicgain=, \verb=gain1=, \verb=gain2=, \verb=gain3=, \verb=highgain=, \verb=lowgain=, \verb=mediumgain=, and \verb=veryhighgain= in order to properly configure the GOTTHARD detector using the various gain settings.
\end{comment}
\end{document}

View File

@ -98,6 +98,7 @@
\begin{document}
@ -111,23 +112,23 @@
\chapter{SLS Detectors Software}
\input{slsDetector-softFAQ}
%\begin{comment}
\begin{comment}
\chapter{General questions about detectors}
\input{generalDet-FAQ}
% \end{comment}
\end{comment}
\chapter{Single photon counting detectors}
\input{singlePhotonCounting-FAQ}
%\begin{comment}
\begin{comment}
\chapter{Charge Integrating detectors}
\input{chargeInt-FAQ}
\chapter{Angular conversion}
\input{angConv-FAQ}
%\end{comment}
\end{comment}
\end{document}

View File

@ -0,0 +1 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv2.3.0.16.2

View File

@ -1 +0,0 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_virtualMaster

View File

@ -1 +0,0 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer_virtualSlave

View File

@ -1 +0,0 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.1.0.16.1

View File

@ -1 +0,0 @@
../slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv3.1.0.21.0

View File

@ -0,0 +1 @@
../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv2.0.3

View File

@ -1 +0,0 @@
../slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServer_virtual

Some files were not shown because too many files have changed in this diff Show More