mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-19 00:07:13 +02:00
refactored ONLY THE CLIENT first stage, compiles
This commit is contained in:
@ -4,19 +4,12 @@ set(SOURCES
|
||||
slsDetector/slsDetectorUsers.cpp
|
||||
slsDetector/slsDetectorUtils.cpp
|
||||
slsDetector/slsDetectorCommand.cpp
|
||||
slsDetector/slsDetectorActions.cpp
|
||||
slsDetector/slsDetector.cpp
|
||||
slsDetectorAnalysis/angularConversion.cpp
|
||||
slsDetectorAnalysis/angularConversionStatic.cpp
|
||||
slsDetectorAnalysis/energyConversion.cpp
|
||||
slsDetectorAnalysis/fileIO.cpp
|
||||
slsDetectorAnalysis/postProcessing.cpp
|
||||
slsDetectorAnalysis/postProcessingFuncs.cpp
|
||||
slsReceiverInterface/receiverInterface.cpp
|
||||
threadFiles/CondVar.cpp
|
||||
threadFiles/Mutex.cpp
|
||||
threadFiles/ThreadPool.cpp
|
||||
usersFunctions/usersFunctions.cpp
|
||||
)
|
||||
|
||||
set(HEADERS
|
||||
@ -32,7 +25,6 @@ slsDetectorCommand
|
||||
slsDetectorAnalysis
|
||||
slsReceiverInterface
|
||||
threadFiles
|
||||
usersFunctions
|
||||
../slsReceiverSoftware/include
|
||||
../slsReceiverSoftware/MySocketTCP
|
||||
)
|
||||
@ -55,6 +47,17 @@ add_library(slsDetectorShared SHARED
|
||||
${HEADERS}
|
||||
)
|
||||
|
||||
add_library(zmq STATIC IMPORTED GLOBAL)
|
||||
|
||||
set(ZMQ_STATIC_ARCHIVE ${CMAKE_CURRENT_SOURCE_DIR}/../slsReceiverSoftware/include/libzmq.a)
|
||||
set_target_properties(zmq PROPERTIES
|
||||
IMPORTED_LOCATION ${ZMQ_STATIC_ARCHIVE}
|
||||
)
|
||||
|
||||
target_link_libraries(slsDetectorShared
|
||||
zmq
|
||||
)
|
||||
|
||||
set(PUBLICHEADERS
|
||||
commonFiles/sls_detector_defs.h
|
||||
commonFiles/sls_detector_funcs.h
|
||||
@ -63,18 +66,10 @@ set(PUBLICHEADERS
|
||||
sharedMemory/SharedMemory.h
|
||||
slsDetector/slsDetectorUtils.h
|
||||
slsDetector/slsDetector.h
|
||||
slsDetector/slsDetectorActions.h
|
||||
slsDetector/slsDetectorBase.h
|
||||
slsDetector/slsDetectorUsers.h
|
||||
slsDetectorAnalysis/postProcessing.h
|
||||
slsDetectorAnalysis/detectorData.h
|
||||
slsDetectorAnalysis/angularConversion.h
|
||||
slsDetectorAnalysis/angularConversionStatic.h
|
||||
slsDetectorAnalysis/angleConversionConstant.h
|
||||
slsDetectorAnalysis/badChannelCorrections.h
|
||||
slsDetectorAnalysis/energyConversion.h
|
||||
slsDetectorAnalysis/fileIO.h
|
||||
slsDetectorAnalysis/fileIOStatic.h
|
||||
multiSlsDetector/multiSlsDetector.h
|
||||
slsReceiverInterface/receiverInterface.h
|
||||
../slsReceiverSoftware/include/sls_receiver_exceptions.h
|
||||
@ -98,6 +93,10 @@ if(DOXYGEN_FOUND)
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
install(FILES ${ZMQ_STATIC_ARCHIVE}
|
||||
DESTINATION lib)
|
||||
|
||||
install(TARGETS slsDetectorShared slsDetectorStatic
|
||||
LIBRARY DESTINATION lib
|
||||
PUBLIC_HEADER DESTINATION include
|
||||
|
@ -9,15 +9,15 @@ CFLAGS= -g -DC_ONLY -fPIC
|
||||
|
||||
DFLAGS= -g -DDACS_INT
|
||||
|
||||
INCLUDES?= -IcommonFiles -IslsDetector -I../slsReceiverSoftware/MySocketTCP -IusersFunctions -ImultiSlsDetector -IslsDetectorUtils -IslsDetectorCommand -IslsDetectorAnalysis -IslsReceiverInterface -I../slsReceiverSoftware/include -IthreadFiles -IsharedMemory -I$(ASM)
|
||||
INCLUDES?= -IcommonFiles -IslsDetector -I../slsReceiverSoftware/MySocketTCP -ImultiSlsDetector -IslsDetectorUtils -IslsDetectorCommand -IslsDetectorAnalysis -IslsReceiverInterface -I../slsReceiverSoftware/include -IthreadFiles -IsharedMemory -I$(ASM)
|
||||
|
||||
#EPICSFLAGS=-D EPICS -I/usr/local/epics/base/include/ -I /usr/local/epics/base/include/os/Linux/ -L /usr/local/epics/base/lib/$(EPICS_HOST_ARCH) -Wl,-R/usr/local/epics/base/lib/$(EPICS_HOST_ARCH) -lca -lCom
|
||||
|
||||
LIBZMQDIR = ../slsReceiverSoftware/include
|
||||
LIBZMQ = -L$(LIBZMQDIR) -Wl,-rpath=$(LIBZMQDIR) -lzmq
|
||||
|
||||
SRC_CLNT=slsDetectorAnalysis/fileIO.cpp usersFunctions/usersFunctions.cpp slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp slsDetectorAnalysis/angularConversion.cpp slsDetectorAnalysis/angularConversionStatic.cpp slsDetectorAnalysis/energyConversion.cpp slsDetector/slsDetectorActions.cpp slsDetectorAnalysis/postProcessing.cpp slsDetector/slsDetector.cpp multiSlsDetector/multiSlsDetector.cpp slsDetectorAnalysis/postProcessingFuncs.cpp slsReceiverInterface/receiverInterface.cpp slsDetector/slsDetectorUsers.cpp threadFiles/CondVar.cpp threadFiles/Mutex.cpp threadFiles/ThreadPool.cpp sharedMemory/SharedMemory.cpp #../slsReceiverSoftware/MySocketTCP/MySocketTCP.cpp
|
||||
DEPSINCLUDES = $(LIBZMQDIR)/sls_receiver_defs.h $(LIBZMQDIR)/sls_receiver_funcs.h $(LIBZMQDIR)/ansi.h commonFiles/sls_detector_defs.h commonFiles/sls_detector_funcs.h commonFiles/error_defs.h slsDetector/slsDetectorBase.h slsDetectorAnalysis/angCalLogClass.h slsDetectorAnalysis/angleConversionConstant.h slsDetectorAnalysis/badChannelCorrections.h slsDetectorAnalysis/detectorData.h slsDetectorAnalysis/enCalLogClass.h slsDetectorAnalysis/fileIOStatic.h slsDetectorAnalysis/movingStat.h slsDetectorAnalysis/runningStat.h slsDetectorAnalysis/single_photon_hit.h threadFiles/Global.h threadFiles/Task.h usersFunctions/angleFunction.h sharedMemory/SharedMemory.h $(LIBZMQDIR)/sls_receiver_exceptions.h commonFiles/versionAPI.h
|
||||
SRC_CLNT= slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp slsDetectorAnalysis/postProcessing.cpp slsDetector/slsDetector.cpp multiSlsDetector/multiSlsDetector.cpp slsReceiverInterface/receiverInterface.cpp slsDetector/slsDetectorUsers.cpp threadFiles/CondVar.cpp threadFiles/Mutex.cpp threadFiles/ThreadPool.cpp sharedMemory/SharedMemory.cpp #../slsReceiverSoftware/MySocketTCP/MySocketTCP.cpp
|
||||
DEPSINCLUDES = $(LIBZMQDIR)/sls_receiver_defs.h $(LIBZMQDIR)/sls_receiver_funcs.h $(LIBZMQDIR)/ansi.h commonFiles/sls_detector_defs.h commonFiles/sls_detector_funcs.h commonFiles/error_defs.h slsDetector/slsDetectorBase.h slsDetectorAnalysis/detectorData.h threadFiles/Global.h threadFiles/Task.h sharedMemory/SharedMemory.h $(LIBZMQDIR)/sls_receiver_exceptions.h commonFiles/versionAPI.h
|
||||
|
||||
|
||||
|
||||
|
@ -1,68 +0,0 @@
|
||||
CFLAGS= -DC_ONLY
|
||||
#FLAGS= -DVERBOSE -DVERYVERBOSE
|
||||
INCLUDES= -IcommonFiles -IslsDetector -IMySocketTCP -IusersFunctions -ImultiSlsDetector -IslsDetectorUtils -IslsDetectorCommand -IslsDetectorAnalysis
|
||||
|
||||
#EPICSFLAGS=-D EPICS -I/usr/local/epics/base/include/ -I /usr/local/epics/base/include/os/Linux/ -L /usr/local/epics/base/lib/SL5-x86/ -Wl,-R/usr/local/epics/base/lib/SL5-x86 -lca -lCom
|
||||
CC=gcc
|
||||
CXX=g++
|
||||
|
||||
SRC_CLNT= slsDetectorAnalysis/FileIO_Standalone.cpp MySocketTCP/MySocketTCP.cpp usersFunctions/usersFunctions.cpp slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp slsDetectorAnalysis/AngularConversion_Standalone.cpp slsDetectorAnalysis/energyConversion.cpp slsDetector/slsDetectorActions.cpp slsDetectorAnalysis/postProcessingFileIO_Standalone.cpp slsDetector/slsDetector.cpp multiSlsDetector/multiSlsDetector.cpp
|
||||
|
||||
OBJS = $(SRC_CLNT:.cpp=.o)
|
||||
|
||||
HEADERS = $(SRC_CLNT:.cpp=.h) commonFiles/sls_detector_defs.h slsDetectorAnalysis/detectorData.h slsDetector/slsDetectorBase.h slsDetector/slsDetectorUsers.h multiSlsDetector/multiSlsDetectorCommand.h
|
||||
|
||||
|
||||
|
||||
SRC_MYTHEN_SVC = mythenDetectorServer/server.c mythenDetectorServer/server_funcs.c mythenDetectorServer/communication_funcs.c mythenDetectorServer/firmware_funcs.c mythenDetectorServer/mcb_funcs.c mythenDetectorServer/trimming_funcs.c
|
||||
|
||||
all: package $(SRC_CLNT)
|
||||
echo "compiling all"
|
||||
|
||||
doc: $(SRC_H) $(SRC_CLNT)
|
||||
doxygen doxy.config
|
||||
|
||||
|
||||
|
||||
mythenServer: $(SRC_MYTHEN_SVC)
|
||||
$(CC) $(SRC_MYTHEN_SVC) $(CFLAGS) $(FLAGS) $(INCLUDES) -ImythenDetectorServer -DVIRTUAL -lm -D MCB_FUNCS -DC_ONLY -DVERBOSE
|
||||
mv a.out mythenServer
|
||||
|
||||
|
||||
picassoServer: $(SRC_MYTHEN_SVC)
|
||||
$(CC) $(SRC_MYTHEN_SVC) $(CFLAGS) $(FLAGS) $(INCLUDES) -ImythenDetectorServer -D VIRTUAL -lm -DMCB_FUNCS -DPICASSOD -DC_ONLY
|
||||
mv a.out picassoServer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%.o : %.cpp %.h
|
||||
$(CXX) -Wall -o $@ -c $< $(INCLUDES) $(FLAGS) $(EPICSFLAGS)
|
||||
|
||||
|
||||
package: $(OBJS)
|
||||
$(CXX) -shared -Wl,-soname,libSlsDetector.so -o libSlsDetector.so $(OBJS) -lc $(INCLUDES) $(FLAGS) $(EPICSFLAGS)
|
||||
ar rcs libSlsDetector.a $(OBJS)
|
||||
|
||||
clean:
|
||||
rm -rf libSlsDetector.a libSlsDetector.so core docs/* $(OBJS)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
lib: package
|
||||
|
||||
|
||||
# added install target, HBl
|
||||
install_lib: lib
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
cp -P libSlsDetector.so $(DESTDIR)
|
||||
|
||||
install_inc:
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
cp -P $(HEADERS) $(DESTDIR)
|
||||
|
||||
|
||||
install_doc: doc
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
cp -Pr docs/* $(DESTDIR)
|
@ -1,87 +0,0 @@
|
||||
CFLAGS= -DC_ONLY -fPIC
|
||||
#FLAGS+= #-DVERBOSE -DVERYVERBOSE
|
||||
|
||||
DFLAGS= -DDACS_INT -DTHIS_PATH='"$(shell pwd)"' -DSLS_RECEIVER_FUNCTION_LIST
|
||||
|
||||
#ASM=$(shell echo "/lib/modules/`uname -r`/build/include")
|
||||
|
||||
INCLUDES?= -IcommonFiles -IslsDetector -IMySocketTCP -IusersFunctions -ImultiSlsDetector -IslsDetectorUtils -IslsDetectorCommand -IslsDetectorAnalysis -IslsReceiverInterface -IslsReceiver -I$(ASM)
|
||||
|
||||
EPICSFLAGS=-D EPICS -I/usr/local/epics/base/include/ -I /usr/local/epics/base/include/os/Linux/ -L /usr/local/epics/base/lib/SL5-x86/ -Wl,-R/usr/local/epics/base/lib/SL5-x86 -lca -lCom
|
||||
CC=g++
|
||||
|
||||
|
||||
SRC_CLNT= slsDetectorAnalysis/fileIO.cpp MySocketTCP/MySocketTCP.cpp usersFunctions/usersFunctions.cpp slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp slsDetectorAnalysis/angularConversion.cpp slsDetectorAnalysis/angularConversionStatic.cpp slsDetectorAnalysis/energyConversion.cpp slsDetector/slsDetectorActions.cpp slsDetectorAnalysis/postProcessing.cpp slsDetector/slsDetector.cpp multiSlsDetector/multiSlsDetector.cpp slsDetector/slsDetectorUsers.cpp slsDetectorAnalysis/postProcessingFuncs.cpp slsReceiverInterface/receiverInterface.cpp slsReceiver/slsReceiverFunctionList.cpp slsReceiver/slsReceiver_funcs.cpp slsReceiver/slsReceiverUsers.cpp
|
||||
|
||||
OBJS = $(SRC_CLNT:.cpp=.o)
|
||||
|
||||
HEADERS = $(SRC_CLNT:.cpp=.h) commonFiles/sls_detector_defs.h slsDetectorAnalysis/detectorData.h slsDetector/slsDetectorBase.h multiSlsDetector/multiSlsDetectorCommand.h slsDetectorAnalysis/enCalLogClass.h slsDetectorAnalysis/angCalLogClass.h slsDetectorAnalysis/angleConversionConstant.h usersFunctions/angleFunction.h slsReceiverInterface/receiverInterface.h slsDetector/svnInfoLib.h slsReceiver/circularFifo.h slsReceiver/slsReceiver_funcs.h slsReceiver/svnInfoReceiverTmp.h slsReceiver/receiver_defs.h slsReceiver/slsReceiverFunctionList.h slsReceiver/slsReceiverUsers.h slsReceiver/svnInfoReceiver.h
|
||||
|
||||
|
||||
|
||||
DESTDIR ?= bin
|
||||
DOCDIR ?= docs
|
||||
|
||||
|
||||
all: package $(SRC_CLNT)
|
||||
echo "compiling all"
|
||||
|
||||
intdoc: $(SRC_H) $(SRC_CLNT)
|
||||
doxygen doxy.config
|
||||
|
||||
doc: $(DOCDIR)/pdf/slsDetectorUsersDocs.pdf
|
||||
|
||||
$(DOCDIR)/pdf/slsDetectorUsersDocs.pdf: slsDetectorUsersDocs
|
||||
cd slsDetectorUsersDocs/latex && make
|
||||
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
|
||||
$(shell test -d $(DOCDIR)/pdf || mkdir -p $(DOCDIR)/pdf)
|
||||
cp slsDetectorUsersDocs/latex/refman.pdf $(DOCDIR)/pdf/slsDetectorUsersDocs.pdf
|
||||
|
||||
|
||||
htmldoc: $(DOCDIR)/html/slsDetectorUsersDocs
|
||||
|
||||
$(DOCDIR)/html/slsDetectorUsersDocs: slsDetectorUsersDocs
|
||||
$(shell test -d $(DOCDIR) || mkdir -p $(DOCDIR))
|
||||
$(shell test -d $(DOCDIR)/html || mkdir -p $(DOCDIR)/html)
|
||||
$(shell test -d $(DOCDIR)/html/slsDetectorUsersDocs && rm -r $(DOCDIR)/html/slsDetectorUsersDocs)
|
||||
cp -r slsDetectorUsersDocs/html $(DOCDIR)/html/slsDetectorUsersDocs
|
||||
|
||||
slsDetectorUsersDocs: slsDetectorUsers.doxy slsDetector/slsDetectorUsers.h slsDetector/slsDetectorUsers.cpp slsDetectorAnalysis/detectorData.h
|
||||
doxygen slsDetectorUsers.doxy
|
||||
|
||||
|
||||
mythenVirtualServer: $(SRC_MYTHEN_SVC)
|
||||
cd mythenDetectorServer && make -f Makefile.virtual DESTDIR=$(DESTDIR)
|
||||
|
||||
gotthardVirtualServer: $(SRC_MYTHEN_SVC)
|
||||
cd gotthardDetectorServer && make -f Makefile.virtual DESTDIR=$(DESTDIR)
|
||||
|
||||
|
||||
|
||||
%.o : %.cpp %.h Makefile
|
||||
$(CXX) -Wall -o $@ -c $< $(INCLUDES) $(DFLAGS) $(FLAGS) -fPIC $(EPICSFLAGS) -L/usr/lib64/
|
||||
|
||||
package: $(OBJS) $(DESTDIR)/libSlsDetector.so $(DESTDIR)/libSlsDetector.a
|
||||
|
||||
$(DESTDIR)/libSlsDetector.so: $(OBJS)
|
||||
$(CXX) -shared -Wl,-soname,libSlsDetector.so -o libSlsDetector.so $(OBJS) -lc $(INCLUDES) $(DFLAGS) $(FLAGS) $(EPICSFLAGS) -L/usr/lib64/
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
mv libSlsDetector.so $(DESTDIR)
|
||||
|
||||
$(DESTDIR)/libSlsDetector.a: $(OBJS)
|
||||
ar rcs libSlsDetector.a $(OBJS)
|
||||
mv libSlsDetector.a $(DESTDIR)
|
||||
|
||||
clean:
|
||||
rm -rf libSlsDetector.a libSlsDetector.so core docs/* slsDetectorUsersDocs $(OBJS)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
install: package
|
||||
|
||||
install_inc:
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
cp -P slsDetector/slsDetectorUsers.h slsDetectorAnalysis/detectorData.h $(DESTDIR) slsReceiver/slsReceiverUsers.h
|
||||
|
||||
|
@ -38,20 +38,18 @@
|
||||
#define FILE_PATH_DOES_NOT_EXIST 0x0200000000000000ULL
|
||||
#define COULDNOT_CREATE_UDP_SOCKET 0x0100000000000000ULL
|
||||
#define COULDNOT_CREATE_FILE 0x0080000000000000ULL
|
||||
#define COULDNOT_ENABLE_COMPRESSION 0x0040000000000000ULL
|
||||
#define RECEIVER_DET_HOSTNAME_NOT_SET 0x0020000000000000ULL
|
||||
#define RECEIVER_DET_HOSTTYPE_NOT_SET 0x0010000000000000ULL
|
||||
#define DETECTOR_TEN_GIGA 0x0008000000000000ULL
|
||||
#define DETECTOR_ACTIVATE 0x0004000000000000ULL
|
||||
#define COULD_NOT_CONFIGURE_MAC 0x0002000000000000ULL
|
||||
#define COULDNOT_START_RECEIVER 0x0001000000000000ULL // default error like starting threads
|
||||
#define COULDNOT_STOP_RECEIVER 0x0000800000000000ULL
|
||||
#define RECEIVER_DET_POSID_NOT_SET 0x0000400000000000ULL
|
||||
#define RECEIVER_MULTI_DET_SIZE_NOT_SET 0x0000200000000000ULL
|
||||
#define PREPARE_ACQUISITION 0x0000100000000000ULL
|
||||
#define CLEANUP_ACQUISITION 0x0000080000000000ULL
|
||||
#define REGISER_WRITE_READ 0x0000040000000000ULL
|
||||
#define VERSION_COMPATIBILITY 0x0000020000000000ULL
|
||||
#define RECEIVER_DET_HOSTNAME_NOT_SET 0x0040000000000000ULL
|
||||
#define RECEIVER_DET_HOSTTYPE_NOT_SET 0x0020000000000000ULL
|
||||
#define DETECTOR_TEN_GIGA 0x0010000000000000ULL
|
||||
#define DETECTOR_ACTIVATE 0x0008000000000000ULL
|
||||
#define COULD_NOT_CONFIGURE_MAC 0x0004000000000000ULL
|
||||
#define COULDNOT_START_RECEIVER 0x0002000000000000ULL // default error like starting threads
|
||||
#define COULDNOT_STOP_RECEIVER 0x0001000000000000ULL
|
||||
#define RECEIVER_DET_POSID_NOT_SET 0x0000800000000000ULL
|
||||
#define RECEIVER_MULTI_DET_SIZE_NOT_SET 0x0000400000000000ULL
|
||||
#define PREPARE_ACQUISITION 0x0000200000000000ULL
|
||||
#define REGISER_WRITE_READ 0x0000100000000000ULL
|
||||
#define VERSION_COMPATIBILITY 0x0000080000000000ULL
|
||||
// 0xFFFFFF0000000000ULL
|
||||
|
||||
// 0x000000FFFFFFFFFFULL
|
||||
@ -141,9 +139,6 @@ public:
|
||||
if(slsErrorMask&COULDNOT_CREATE_FILE)
|
||||
retval.append("Could not create file to start receiver.\nCheck permissions of output directory or the overwrite flag\n");
|
||||
|
||||
if(slsErrorMask&COULDNOT_ENABLE_COMPRESSION)
|
||||
retval.append("Could not enable/disable data compression in receiver.\nThread creation failed or recompile code with MYROOT1 flag.\n");
|
||||
|
||||
if(slsErrorMask&RECEIVER_DET_HOSTNAME_NOT_SET)
|
||||
retval.append("Could not send the detector hostname to the receiver.\n");
|
||||
|
||||
@ -165,9 +160,6 @@ public:
|
||||
if(slsErrorMask&PREPARE_ACQUISITION)
|
||||
retval.append("Could not prepare acquisition in detector\n");
|
||||
|
||||
if(slsErrorMask&CLEANUP_ACQUISITION)
|
||||
retval.append("Could not clean up after acquisition in detector\n");
|
||||
|
||||
if(slsErrorMask®ISER_WRITE_READ)
|
||||
retval.append("Could not read/write register in detector\n");
|
||||
|
||||
|
@ -10,14 +10,6 @@
|
||||
//#include <stdint.h>
|
||||
#include "sls_receiver_defs.h"
|
||||
|
||||
/** default maximum string length */
|
||||
#define MAX_SCAN_STEPS 2000
|
||||
/** maxmimum number of modules per controller*/
|
||||
#define MAXMODS 24
|
||||
/** maxmimum number of detectors ina multidetector structure*/
|
||||
#define MAXDET 100
|
||||
/** header length for data :gotthard*/
|
||||
#define HEADERLENGTH 12
|
||||
|
||||
/** maximum rois */
|
||||
#define MAX_ROIS 100
|
||||
@ -28,20 +20,10 @@
|
||||
/** maximum unit size of program sent to detector */
|
||||
#define MAX_FPGAPROGRAMSIZE (2 * 1024 *1024)
|
||||
|
||||
|
||||
|
||||
#define MAX_SCAN_LEVELS 2
|
||||
|
||||
typedef char mystring[MAX_STR_LENGTH];
|
||||
typedef double mysteps[MAX_SCAN_STEPS];
|
||||
|
||||
|
||||
|
||||
#ifndef DACS_FLOAT
|
||||
typedef int dacs_t;
|
||||
#else
|
||||
typedef float dacs_t;
|
||||
#endif
|
||||
|
||||
|
||||
#define DEFAULT_DET_MAC "00:aa:bb:cc:dd:ee"
|
||||
#define DEFAULT_DET_IP "129.129.202.46"
|
||||
@ -57,8 +39,6 @@ and to the server programs running on the detector
|
||||
* @version 0.1alpha (any string)
|
||||
* @see slsDetector
|
||||
|
||||
$Revision: 824 $
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@ -77,40 +57,6 @@ class slsDetectorDefs: public virtual slsReceiverDefs{
|
||||
#endif
|
||||
|
||||
|
||||
enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, enCalLog, angCalLog, MAX_ACTIONS};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@short structure for a detector channel
|
||||
|
||||
should not be used by unexperienced users
|
||||
|
||||
\see ::channelRegisterBit
|
||||
*/
|
||||
typedef struct {
|
||||
int chan; /**< is the channel number */
|
||||
int chip; /**< is the chip number */
|
||||
int module; /**< is the module number */
|
||||
int64_t reg; /**< is the is the channel register (e.g. trimbits, calibration enable, comparator enable...) */
|
||||
} sls_detector_channel;
|
||||
|
||||
/**
|
||||
@short structure for a detector chip
|
||||
|
||||
should not be used by unexperienced users
|
||||
\see ::chipRegisterBit ::channelRegisterBit
|
||||
*/
|
||||
typedef struct {
|
||||
int chip; /**< is the chip number */
|
||||
int module; /**< is the module number */
|
||||
int nchan; /**< is the number of channels in the chip */
|
||||
int reg; /**<is the chip register (e.g. output analogue buffer enable)
|
||||
\see ::chipRegisterBit */
|
||||
int *chanregs; /**< is the pointer to the array of the channel registers
|
||||
\see ::channelRegisterBit */
|
||||
} sls_detector_chip;
|
||||
|
||||
/**
|
||||
@short structure for a detector module
|
||||
|
||||
@ -127,7 +73,6 @@ class slsDetectorDefs: public virtual slsReceiverDefs{
|
||||
@li offset is the module offset
|
||||
*/
|
||||
typedef struct {
|
||||
int module; /**< is the module number */
|
||||
int serialnumber; /**< is the module serial number */
|
||||
int nchan; /**< is the number of channels on the module*/
|
||||
int nchip; /**< is the number of chips on the module */
|
||||
@ -146,25 +91,6 @@ typedef struct {
|
||||
} sls_detector_module;
|
||||
|
||||
|
||||
/* /\* */
|
||||
/* @short structure for a generic integer array */
|
||||
/* *\/ */
|
||||
/* typedef struct { */
|
||||
/* int len; /\**< is the number of elements of the array *\/ */
|
||||
/* int *iptr; /\**< is the pointer to the array *\/ */
|
||||
/* } iarray ; */
|
||||
|
||||
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* Communication protocol (normally TCP) */
|
||||
/* *\/ */
|
||||
/* enum communicationProtocol{ */
|
||||
/* TCP, /\**< TCP/IP *\/ */
|
||||
/* UDP /\**< UDP *\/ */
|
||||
/* }; */
|
||||
|
||||
/**
|
||||
network parameters
|
||||
*/
|
||||
@ -293,17 +219,10 @@ enum digitalTestMode {
|
||||
MODULE_FIRMWARE_TEST, /**< test module firmware */
|
||||
DETECTOR_FIRMWARE_TEST, /**< test detector system firmware */
|
||||
DETECTOR_MEMORY_TEST, /**< test detector system memory */
|
||||
DETECTOR_BUS_TEST, /**< test detector system CPU-FPGA bus */
|
||||
DETECTOR_SOFTWARE_TEST, /**< test detector system software */
|
||||
DIGITAL_BIT_TEST /**< gotthard digital bit test */
|
||||
};
|
||||
/**
|
||||
detector analogue test modes
|
||||
*/
|
||||
enum analogTestMode {
|
||||
CALIBRATION_PULSES, /**< test using calibration pulses */
|
||||
MY_ANALOG_TEST_MODE /**< other possible test modes */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
detector dacs indexes
|
||||
@ -332,14 +251,6 @@ enum dacIndex {
|
||||
G_VIN_CM, /**< gotthard */
|
||||
G_VREF_COMP, /**< gotthard */
|
||||
G_IB_TESTC, /**< gotthard */
|
||||
V_DAC0, /**< moench */
|
||||
V_DAC1, /**< moench */
|
||||
V_DAC2, /**< moench */
|
||||
V_DAC3, /**< moench */
|
||||
V_DAC4, /**< moench */
|
||||
V_DAC5, /**< moench */
|
||||
V_DAC6, /**< moench */
|
||||
V_DAC7, /**< moench */
|
||||
E_SvP, /**< eiger */
|
||||
E_SvN, /**< eiger */
|
||||
E_Vtr, /**< eiger */
|
||||
@ -414,33 +325,9 @@ enum detectorSettings{
|
||||
UNDEFINED=200, /**< undefined or custom settings */
|
||||
UNINITIALIZED /**< uninitialiazed (status at startup) */
|
||||
};
|
||||
/**
|
||||
meaning of the channel register bits
|
||||
\see ::sls_detector_channel
|
||||
*/
|
||||
enum channelRegisterBit {
|
||||
TRIMBIT_OFF=0, /**< offset of trimbit value in the channel register */
|
||||
COMPARATOR_ENABLE=0x100, /**< mask of the comparator enable bit */
|
||||
ANALOG_SIGNAL_ENABLE=0x200, /**< mask of the analogue output enable bit */
|
||||
CALIBRATION_ENABLE=0x300, /**< mask of the calibration input enable bit */
|
||||
};
|
||||
|
||||
|
||||
#define TRIMBITMASK 0x3f
|
||||
/**
|
||||
meaning of the chip register bits
|
||||
\see ::sls_detector_chip
|
||||
*/
|
||||
enum chipRegisterBit {
|
||||
ENABLE_ANALOG_OUTPUT=0x1, /**< mask of the analogue output enable bit */
|
||||
CHIP_OUTPUT_WIDTH=0x2 /**< mask of the chip output width */
|
||||
};
|
||||
/**
|
||||
meaning of the module register bits
|
||||
*/
|
||||
enum moduleRegisterBit {
|
||||
MY_MODULE_REGISTER_BIT, /**< possible module register bit meaning */
|
||||
MODULE_OUTPUT_WIDTH /**< possibly module dynamic range */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
@ -448,10 +335,6 @@ enum moduleRegisterBit {
|
||||
*/
|
||||
enum speedVariable {
|
||||
CLOCK_DIVIDER, /**< readout clock divider */
|
||||
WAIT_STATES, /**< wait states for bus read */
|
||||
TOT_CLOCK_DIVIDER, /**< wait states for bus read */
|
||||
TOT_DUTY_CYCLE, /**< wait states for bus read */
|
||||
SET_SIGNAL_LENGTH, /**< set/clear signal length */
|
||||
PHASE_SHIFT, /**< adds phase shift */
|
||||
OVERSAMPLING, /**< oversampling for analog detectors */
|
||||
ADC_CLOCK, /**< adc clock divider */
|
||||
@ -485,29 +368,8 @@ enum readOutFlags {
|
||||
SHOW_OVERFLOW=0x400000, /** eiger 32 bit mode, show saturated for overflow of single subframes */
|
||||
NOOVERFLOW=0x800000 /** eiger 32 bit mode, do not show saturated for overflow of single subframes */
|
||||
};
|
||||
/**
|
||||
trimming modes
|
||||
*/
|
||||
enum trimMode {
|
||||
NOISE_TRIMMING, /**< trim with noise */
|
||||
BEAM_TRIMMING, /**< trim with x-rays (on all 63 bits) */
|
||||
IMPROVE_TRIMMING, /**< trim with x-rays (on a limited range of bits - should start from an already trimmed mode) */
|
||||
FIXEDSETTINGS_TRIMMING,/**< trim without optimizing the threshold and the trimbit size */
|
||||
OFFLINE_TRIMMING /**< trimming is performed offline */
|
||||
};
|
||||
/**
|
||||
data correction flags
|
||||
*/
|
||||
enum correctionFlags {
|
||||
DISCARD_BAD_CHANNELS, /**< bad channels are discarded */
|
||||
AVERAGE_NEIGHBOURS_FOR_BAD_CHANNELS, /**< bad channels are replaced with the avergae of the neighbours */
|
||||
FLAT_FIELD_CORRECTION, /**< data are flat field corrected */
|
||||
RATE_CORRECTION, /**< data are rate corrected */
|
||||
ANGULAR_CONVERSION,/**< angular conversion is calculated */
|
||||
WRITE_FILE, /**< file write enable */
|
||||
I0_NORMALIZATION,
|
||||
OVERWRITE_FILE /**< file over write enable */
|
||||
};
|
||||
|
||||
|
||||
/** port type */
|
||||
enum portType {
|
||||
CONTROL_PORT, /**< control port */
|
||||
@ -523,14 +385,6 @@ enum masterFlags {
|
||||
IS_SLAVE /**< is slave */
|
||||
};
|
||||
|
||||
/** synchronization in a multidetector structure, if any */
|
||||
enum synchronizationMode {
|
||||
GET_SYNCHRONIZATION_MODE=-1, /**< the multidetector will return its synchronization mode */
|
||||
NO_SYNCHRONIZATION, /**< all detectors are independent (no cabling) */
|
||||
MASTER_GATES, /**< the master gates the other detectors */
|
||||
MASTER_TRIGGERS, /**< the master triggers the other detectors */
|
||||
SLAVE_STARTS_WHEN_MASTER_STOPS /**< the slave acquires when the master finishes, to avoid deadtime */
|
||||
};
|
||||
|
||||
enum imageType {
|
||||
DARK_IMAGE, /**< dark image */
|
||||
@ -538,45 +392,6 @@ enum imageType {
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* angular conversion constant for a module */
|
||||
/* *\/ */
|
||||
/* typedef struct { */
|
||||
/* double center; /\**< center of the module (channel at which the radius is perpendicular to the module surface) *\/ */
|
||||
/* double ecenter; /\**< error in the center determination *\/ */
|
||||
/* double r_conversion; /\**< detector pixel size (or strip pitch) divided by the diffractometer radius *\/ */
|
||||
/* double er_conversion; /\**< error in the r_conversion determination *\/ */
|
||||
/* double offset; /\**< the module offset i.e. the position of channel 0 with respect to the diffractometer 0 *\/ */
|
||||
/* double eoffset; /\**< error in the offset determination *\/ */
|
||||
/* double tilt; /\**< ossible tilt in the orthogonal direction (unused)*\/ */
|
||||
/* double etilt; /\**< error in the tilt determination *\/ */
|
||||
/* } angleConversionConstant; */
|
||||
|
||||
|
||||
enum angleConversionParameter {
|
||||
ANGULAR_DIRECTION, /**< angular direction of the diffractometer */
|
||||
GLOBAL_OFFSET, /**< global offset of the diffractometer */
|
||||
FINE_OFFSET, /**< fine offset of the diffractometer */
|
||||
BIN_SIZE, /**< angular bin size */
|
||||
MOVE_FLAG, /**< wether the detector moves with the motor or not in a multi detector system */
|
||||
SAMPLE_X, /**< sample displacement in the beam direction */
|
||||
SAMPLE_Y /**< sample displacement orthogonal to the beam */
|
||||
};
|
||||
|
||||
|
||||
//typedef struct {
|
||||
//float center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */
|
||||
//float ecenter; /**< error in the center determination */
|
||||
//float r_conversion; /**< detector pixel size (or strip pitch) divided by the diffractometer radius */
|
||||
//float er_conversion; /**< error in the r_conversion determination */
|
||||
//float offset; /**< the module offset i.e. the position of channel 0 with respect to the diffractometer 0 */
|
||||
//float eoffset; /**< error in the offset determination */
|
||||
//float tilt; /**< ossible tilt in the orthogonal direction (unused)*/
|
||||
//float etilt; /**< error in the tilt determination *//
|
||||
//} angleConversionConstant;
|
||||
|
||||
|
||||
//#if defined(__cplusplus) && !defined(EIGERD)
|
||||
#ifdef __cplusplus
|
||||
protected:
|
||||
|
@ -58,7 +58,6 @@ enum detFuncs{
|
||||
F_START_READOUT, /**< start readout */
|
||||
F_GET_RUN_STATUS, /**< get acquisition status */
|
||||
F_START_AND_READ_ALL, /**< start acquisition and read all frames*/
|
||||
F_READ_FRAME, /**< read one frame */
|
||||
F_READ_ALL, /**< read alla frames */
|
||||
|
||||
//Acquisition setup functions
|
||||
@ -111,7 +110,6 @@ enum detFuncs{
|
||||
F_POWER_CHIP, /**< power chip */
|
||||
F_ACTIVATE, /** < activate */
|
||||
F_PREPARE_ACQUISITION, /** < prepare acquisition */
|
||||
F_CLEANUP_ACQUISITION, /** < clean up after acquisition */
|
||||
|
||||
F_THRESHOLD_TEMP, /** < set threshold temperature */
|
||||
F_TEMP_CONTROL, /** < set temperature control */
|
||||
|
@ -84,39 +84,16 @@ INPUT = commonFiles/communication_funcs.h \
|
||||
commonFiles/error_defs.h \
|
||||
commonFiles/sls_detector_defs.h \
|
||||
commonFiles/sls_detector_funcs.h \
|
||||
f90Interface/externPostProcessing.h \
|
||||
multiSlsDetector/multiSlsDetectorClient.h \
|
||||
multiSlsDetector/multiSlsDetectorCommand.h \
|
||||
multiSlsDetector/multiSlsDetector.h \
|
||||
slsDetector/slsDetectorActions.h \
|
||||
slsDetector/slsDetectorBase.h \
|
||||
slsDetector/slsDetectorCommand.h \
|
||||
slsDetector/slsDetector.h \
|
||||
slsDetector/slsDetectorUsers.h \
|
||||
slsDetector/slsDetectorUtils.h \
|
||||
slsDetectorAnalysis/angCalLogClass.h \
|
||||
slsDetectorAnalysis/angleConversionConstant.h \
|
||||
slsDetectorAnalysis/angularCalibration.h \
|
||||
slsDetectorAnalysis/angularConversion.h \
|
||||
slsDetectorAnalysis/AngularConversion_Standalone.h \
|
||||
slsDetectorAnalysis/angularConversionStatic.h \
|
||||
slsDetectorAnalysis/badChannelCorrections.h \
|
||||
slsDetectorAnalysis/detectorData.h \
|
||||
slsDetectorAnalysis/enCalLogClass.h \
|
||||
slsDetectorAnalysis/energyCalibration.h \
|
||||
slsDetectorAnalysis/energyConversion.h \
|
||||
slsDetectorAnalysis/fileIO.h \
|
||||
slsDetectorAnalysis/FileIO_Standalone.h \
|
||||
slsDetectorAnalysis/fileIOStatic.h \
|
||||
slsDetectorAnalysis/movingStat.h \
|
||||
slsDetectorAnalysis/postProcessingFileIO_Standalone.h \
|
||||
slsDetectorAnalysis/postProcessingFuncs.h \
|
||||
slsDetectorAnalysis/postProcessing.h \
|
||||
slsDetectorAnalysis/postProcessing_Standalone.h \
|
||||
slsDetectorAnalysis/runningStat.h \
|
||||
slsDetectorAnalysis/singlePhotonFilter.h \
|
||||
slsDetectorAnalysis/single_photon_hit.h \
|
||||
slsDetectorAnalysis/TSlsDetectorDict.h \
|
||||
slsReceiverInterface/receiverInterface.h \
|
||||
threadFiles/CondVar.h \
|
||||
threadFiles/Global.h \
|
||||
@ -125,8 +102,6 @@ INPUT = commonFiles/communication_funcs.h \
|
||||
threadFiles/Single.h \
|
||||
threadFiles/Task.h \
|
||||
threadFiles/ThreadPool.h \
|
||||
usersFunctions/angleFunction.h \
|
||||
usersFunctions/usersFunctions.h \
|
||||
../slsReceiverSoftware/include/ansi.h \
|
||||
../slsReceiverSoftware/include/BinaryFile.h \
|
||||
../slsReceiverSoftware/include/BinaryFileStatic.h \
|
||||
|
@ -1,47 +0,0 @@
|
||||
#include "externPostProcessing.h"
|
||||
|
||||
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <queue>
|
||||
#include <math.h>
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
|
||||
|
||||
int externPostProcessing::InitDataset(int *nModules,int *chPerMod,int moduleMask[],int badChans[], double ffcoeff[], double fferr[], double* tDead, double angRadius[], double angOffset[], double angCentre[], double* totalOffset, double* binSize, double *sampleX, double *sampleY)
|
||||
{
|
||||
|
||||
init_dataset(nModules,chPerMod,moduleMask,badChans,ffcoeff,fferr,tDead,angRadius,angOffset,angCentre,totalOffset,binSize,sampleX,sampleY);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
int externPostProcessing::finalizeDataset(double ang[], double val[], double err[], int *np)
|
||||
{
|
||||
finalize_dataset(ang, val, err, np);
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
||||
int addFrame(double data[], double *pos, double *IO, double *expTime, const char *filename, int *var)
|
||||
{
|
||||
add_frame(data, pos, i0, expTime, filename, var);
|
||||
return 0;
|
||||
};
|
||||
|
||||
int calculateFlatField(int* nModules, int *chPerMod, int modMask[], int badChanMask[], double data[], double ffCoeff[], double ffErr[])
|
||||
{
|
||||
calculate_flat_field(nModules, chPerMod, modMask, badChanMask, data, ffCoeff, ffErr);
|
||||
return 0;
|
||||
};
|
@ -1,58 +0,0 @@
|
||||
#ifndef EXTERNPOSTPROCESSING_H
|
||||
#define EXTERNPOSTPROCESSING_H
|
||||
|
||||
|
||||
#include "detectorData.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <queue>
|
||||
#include <math.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
void init_dataset(int *nMod, int *chPerMod, int* modMask, int *badChanMask, double *ffCoeff, double *ffErr, double *tDead, int *dir, double *angRadius, double *angOffset, double *angCenter, double *totalOff, double *binSize, double * sampleX, double* sampleY);
|
||||
void finalize_dataset(double *outang, double *outval, double *outerr, int *np);
|
||||
void add_frame(double *data, double *pos, double *i0, double *exptime, char *fn, double *var);
|
||||
void calculate_flat_field(int *nMod, int *chPerMod, int *modMask,int *badChanMask, double *data, double *ffc, double *fferr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
class externPostProcessing
|
||||
|
||||
{
|
||||
|
||||
public:
|
||||
externPostProcessing(){};
|
||||
virtual ~externPostProcessing(){};
|
||||
|
||||
|
||||
static int InitDataset(int *nModules,int *chPerMod,int moduleMask[],int badChans[], double ffcoeff[], double fferr[], double* tDead, int *dir, double angRadius[], double angOffset[], double angCentre[], double* totalOffset, double* binSize, double *sampleX, double *sampleY);
|
||||
|
||||
|
||||
|
||||
static int finalizeDataset(double ang[], double val[], double err[], int *np);
|
||||
|
||||
static int addFrame(double data[], double *pos, double *IO, double *expTime, const char *filename, int *var=0);
|
||||
|
||||
static int calculateFlatField(int* nModules, int *chPerMod, int moduleMask[], int badChannelMask[], double ffData[], double ffCoeff[], double ffErr[]);
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
@ -1,174 +0,0 @@
|
||||
module ax
|
||||
USE,INTRINSIC :: ISO_C_BINDING
|
||||
IMPLICIT NONE
|
||||
integer(C_LONG) :: numberofmodules,totalnumberofchannels
|
||||
real(C_DOUBLE) :: numberofbins
|
||||
real(C_DOUBLE) :: bincenter(360000), binvalue(360000), binerror(360000)
|
||||
|
||||
contains
|
||||
|
||||
|
||||
subroutine initdataset(nmodules, chpmod, modulemask,badchanmask,ffcoeff,fferr,tdead,angradius,angoffset,angcenter, totaloffset, binsize, samplex, sampley) bind(c, name='init_dataset')
|
||||
IMPLICIT NONE
|
||||
integer(C_LONG), intent(IN) :: nmodules, chpmod
|
||||
integer(C_LONG), intent(IN) :: modulemask(nmodules), badchanmask(nmodules*chpmod)
|
||||
real(C_DOUBLE), intent(IN) :: ffcoeff(nmodules*chpmod), fferr(nmodules*chpmod)
|
||||
real(C_DOUBLE), intent(IN) :: tdead, totaloffset,binsize, samplex, sampley
|
||||
real(C_DOUBLE), intent(IN) :: angradius(nmodules), angoffset(nmodules), angcenter(nmodules)
|
||||
integer(C_LONG) :: i
|
||||
|
||||
print*,'init dataset'
|
||||
|
||||
numberofmodules=nmodules
|
||||
|
||||
print*,'Number of modules:'
|
||||
print*,numberofmodules
|
||||
print*,'Channels per module:'
|
||||
print*,chpmod
|
||||
|
||||
totalnumberofchannels=nmodules*chpmod
|
||||
|
||||
print*,'Total number of channels:'
|
||||
print*,totalnumberofchannels
|
||||
|
||||
|
||||
print*,'Modulemask:'
|
||||
do i=1,nmodules
|
||||
print*,i,modulemask(i)
|
||||
enddo
|
||||
|
||||
print*,'Badchannelmask:'
|
||||
do i=1,nmodules*chpmod
|
||||
print*,i,badchanmask(i)
|
||||
enddo
|
||||
|
||||
print*,'Flat field coefficients:'
|
||||
do i=1,nmodules*chpmod
|
||||
print*,i,ffcoeff(i),'+-',fferr(i)
|
||||
enddo
|
||||
|
||||
print*,'Tdead:'
|
||||
print*,tdead
|
||||
|
||||
|
||||
print*,'Angular conversion coefficients:'
|
||||
do i=1,nmodules
|
||||
print*,i,angradius(i),angoffset(i),angcenter(i)
|
||||
enddo
|
||||
|
||||
|
||||
print*,'Total offset:'
|
||||
print*,totaloffset
|
||||
|
||||
print*,'Bin size:'
|
||||
print*,binsize
|
||||
|
||||
numberofbins=360./binsize
|
||||
|
||||
|
||||
print*,'Sample displacement:'
|
||||
print*,samplex, sampley
|
||||
|
||||
end subroutine initdataset
|
||||
|
||||
|
||||
|
||||
subroutine resetdataset() bind(c, name='resetDataset')
|
||||
IMPLICIT NONE
|
||||
|
||||
print*,'reset dataset'
|
||||
|
||||
|
||||
end subroutine resetdataset
|
||||
|
||||
|
||||
subroutine finalizedataset(outang, outval, outerr, outnpoints) bind(c, name='finalize_dataset')
|
||||
IMPLICIT NONE
|
||||
integer(C_LONG), intent(OUT) :: outnpoints
|
||||
real(C_DOUBLE), intent(OUT) :: outang(*), outval(*), outerr(*)
|
||||
integer(C_LONG) :: i
|
||||
|
||||
print*,'finalize dataset'
|
||||
|
||||
outnpoints=numberofbins
|
||||
|
||||
print*,'returning points:'
|
||||
do i=1,numberofbins
|
||||
|
||||
outang(i)=i;
|
||||
outval(i)=i*100;
|
||||
outerr(i)=i*0.1
|
||||
|
||||
print*,i,outang(i),outval(i),outerr(i)
|
||||
enddo
|
||||
|
||||
end subroutine finalizedataset
|
||||
|
||||
|
||||
|
||||
subroutine addframe(data, pos, i0, exptime, fname, var) bind(c, name='add_frame')
|
||||
IMPLICIT NONE
|
||||
real(C_DOUBLE), intent(IN) :: data(totalnumberofchannels)
|
||||
real(C_DOUBLE), intent(IN) :: pos, i0, exptime, var
|
||||
character(kind=c_char), dimension(*), intent(IN) :: fname
|
||||
integer :: l
|
||||
integer :: i
|
||||
|
||||
l=0
|
||||
do
|
||||
if (fname(l+1) == C_NULL_CHAR) exit
|
||||
l = l + 1
|
||||
end do
|
||||
|
||||
|
||||
print*,'add frame'
|
||||
|
||||
print*,'Filename: '
|
||||
print*,fname(1:l)
|
||||
|
||||
print*,'Position: '
|
||||
print*,pos
|
||||
|
||||
print*,'I0: '
|
||||
print*,i0
|
||||
|
||||
print*,'Exposure time: '
|
||||
print*,exptime
|
||||
|
||||
print*,'Var: '
|
||||
print*,var
|
||||
|
||||
print*,'Data: '
|
||||
print*,data
|
||||
|
||||
|
||||
end subroutine addframe
|
||||
|
||||
|
||||
|
||||
subroutine calculateflatfield(nmodules, chpmod, modulemask, badchanmask,data, ffcoeff,fferr) bind(c, name='calculate_flat_field')
|
||||
|
||||
IMPLICIT NONE
|
||||
integer(C_LONG), intent(IN) :: nmodules, chpmod
|
||||
integer(C_LONG), intent(IN) :: modulemask(nmodules), badchanmask(nmodules*chpmod)
|
||||
real(C_DOUBLE), intent(IN) :: data(nmodules*chpmod)
|
||||
real(C_DOUBLE), intent(OUT) :: ffcoeff(*),fferr(*)
|
||||
integer(C_LONG) :: i
|
||||
|
||||
real(C_DOUBLE) :: ave;
|
||||
|
||||
print*,'calculate flat field'
|
||||
|
||||
do i=1,nmodules*chpmod
|
||||
ffcoeff(i)=data(i)*10.
|
||||
fferr(i)=i
|
||||
print*,i,data(i), ffcoeff(i),fferr(i)
|
||||
enddo
|
||||
|
||||
|
||||
|
||||
|
||||
end subroutine calculateflatfield
|
||||
|
||||
|
||||
end module ax
|
@ -1,9 +1,9 @@
|
||||
Path: slsDetectorsPackage/slsDetectorSoftware
|
||||
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
||||
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
||||
Repsitory UUID: d2bce7e372c241cd235977b92be18555bca6a77d
|
||||
Revision: 2040
|
||||
Branch: 4.0.0
|
||||
Repsitory UUID: def79807f6f40ed1797b8154240adbc0e35c95e0
|
||||
Revision: 2044
|
||||
Branch: refactor
|
||||
Last Changed Author: Dhanya_Thattil
|
||||
Last Changed Rev: 4020
|
||||
Last Changed Date: 2018-09-27 18:22:10.000000002 +0200 ./sharedMemory/SharedMemory.o
|
||||
Last Changed Rev: 4039
|
||||
Last Changed Date: 2018-10-02 15:03:24.000000002 +0200 ./CMakeLists.txt
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -19,7 +19,7 @@ class ZmqSocket;
|
||||
#include <string>
|
||||
|
||||
|
||||
#define MULTI_SHMVERSION 0x180629
|
||||
#define MULTI_SHMVERSION 0x181002
|
||||
#define SHORT_STRING_LENGTH 50
|
||||
#define DATE_LENGTH 30
|
||||
|
||||
@ -66,12 +66,6 @@ private:
|
||||
* is stopped manually. Is reset to 0 at the start of the acquisition */
|
||||
int stoppedFlag;
|
||||
|
||||
/** position of the master detector */
|
||||
int masterPosition;
|
||||
|
||||
/** type of synchronization between detectors */
|
||||
synchronizationMode syncMode;
|
||||
|
||||
/** size of the data that are transfered from all detectors */
|
||||
int dataBytes;
|
||||
|
||||
@ -110,32 +104,6 @@ private:
|
||||
/** detector threshold (eV) */
|
||||
int currentThresholdEV;
|
||||
|
||||
/** indicator for the acquisition progress - set to 0 at the beginning
|
||||
* of the acquisition and incremented every time that the data are written
|
||||
* to file */
|
||||
int progressIndex;
|
||||
|
||||
/** total number of frames to be acquired */
|
||||
int totalProgress;
|
||||
|
||||
/** current index of the output file */
|
||||
int fileIndex;
|
||||
|
||||
/** name root of the output files */
|
||||
char fileName[MAX_STR_LENGTH];
|
||||
|
||||
/** path of the output files */
|
||||
char filePath[MAX_STR_LENGTH];
|
||||
|
||||
/** max frames per file */
|
||||
int framesPerFile;
|
||||
|
||||
/** file format*/
|
||||
fileFormat fileFormatType;
|
||||
|
||||
/** corrections to be applied to the data \see ::correctionFlags */
|
||||
int correctionMask;
|
||||
|
||||
/** threaded processing flag (i.e. if data are processed and written to
|
||||
* file in a separate thread) */
|
||||
int threadedProcessing;
|
||||
@ -143,60 +111,9 @@ private:
|
||||
/** dead time (in ns) for rate corrections */
|
||||
double tDead;
|
||||
|
||||
/** directory where the flat field files are stored */
|
||||
char flatFieldDir[MAX_STR_LENGTH];
|
||||
|
||||
/** file used for flat field corrections */
|
||||
char flatFieldFile[MAX_STR_LENGTH];
|
||||
|
||||
/** file with the bad channels */
|
||||
char badChanFile[MAX_STR_LENGTH];
|
||||
|
||||
/** angular conversion file */
|
||||
char angConvFile[MAX_STR_LENGTH];
|
||||
|
||||
/** angular direction (1 if it corresponds to the encoder direction
|
||||
* i.e. channel 0 is 0, maxchan is positive high angle, 0 otherwise */
|
||||
int angDirection;
|
||||
|
||||
/** beamline fine offset (of the order of mdeg, might be adjusted for
|
||||
* each measurements) */
|
||||
double fineOffset;
|
||||
|
||||
/** beamline offset (might be a few degrees beacuse of encoder offset -
|
||||
* normally it is kept fixed for a long period of time) */
|
||||
double globalOffset;
|
||||
|
||||
/** bin size for data merging */
|
||||
double binSize;
|
||||
|
||||
//X and Y displacement
|
||||
double sampleDisplacement[2];
|
||||
|
||||
/** number of positions at which the detector should acquire */
|
||||
int numberOfPositions;
|
||||
|
||||
/** list of encoder positions at which the detector should acquire */
|
||||
double detPositions[MAXPOS];
|
||||
|
||||
/** Scans and scripts */
|
||||
int actionMask;
|
||||
|
||||
mystring actionScript[MAX_ACTIONS];
|
||||
mystring actionParameter[MAX_ACTIONS];
|
||||
int scanMode[MAX_SCAN_LEVELS];
|
||||
mystring scanScript[MAX_SCAN_LEVELS];
|
||||
mystring scanParameter[MAX_SCAN_LEVELS];
|
||||
int nScanSteps[MAX_SCAN_LEVELS];
|
||||
mysteps scanSteps[MAX_SCAN_LEVELS];
|
||||
int scanPrecision[MAX_SCAN_LEVELS];
|
||||
|
||||
/** flag for acquiring */
|
||||
bool acquiringFlag;
|
||||
|
||||
/** external gui */
|
||||
bool externalgui;
|
||||
|
||||
/** receiver online flag - is set if the receiver is connected,
|
||||
* unset if socket connection is not possible */
|
||||
int receiverOnlineFlag;
|
||||
@ -212,13 +129,6 @@ private:
|
||||
public:
|
||||
|
||||
|
||||
using slsDetectorUtils::flatFieldCorrect;
|
||||
using slsDetectorUtils::rateCorrect;
|
||||
using slsDetectorUtils::setBadChannelCorrection;
|
||||
using slsDetectorUtils::readAngularConversion;
|
||||
using slsDetectorUtils::writeAngularConversion;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param id multi detector id
|
||||
@ -272,6 +182,16 @@ public:
|
||||
*/
|
||||
std::string callDetectorMember(std::string(slsDetector::*somefunc)());
|
||||
|
||||
/**
|
||||
* Loop serially through all the detectors in calling a particular method
|
||||
* with string argument and string return
|
||||
* @param somefunc function pointer
|
||||
* @param s0 argument for calling method
|
||||
* @returns concatenated result if values are different, otherwise result in calling method
|
||||
*/
|
||||
std::string callDetectorMember(std::string (slsDetector::*somefunc)(std::string),
|
||||
std::string s0);
|
||||
|
||||
/**
|
||||
* Loop serially through all the detectors in calling a particular method
|
||||
* with an extra argument
|
||||
@ -303,7 +223,7 @@ public:
|
||||
T parallelCallDetectorMember(T (slsDetector::*somefunc)());
|
||||
|
||||
/**
|
||||
* Loop serially through all the detectors in calling a particular method
|
||||
* Parallel calls to all the detectors in calling a particular method
|
||||
* with an extra argument
|
||||
* @param somefunc function pointer
|
||||
* @param value argument for calling method
|
||||
@ -313,7 +233,7 @@ public:
|
||||
T parallelCallDetectorMember(T (slsDetector::*somefunc)(P1), P1 value);
|
||||
|
||||
/**
|
||||
* Loop serially through all the detectors in calling a particular method
|
||||
* Parallel calls to all the detectors in calling a particular method
|
||||
* with two extra arguments
|
||||
* @param somefunc function pointer
|
||||
* @param par1 argument for calling method
|
||||
@ -324,7 +244,7 @@ public:
|
||||
T parallelCallDetectorMember(T (slsDetector::*somefunc)(P1, P2), P1 par1, P2 par2);
|
||||
|
||||
/**
|
||||
* Loop serially through all the detectors in calling a particular method
|
||||
* Parallel calls to all the detectors in calling a particular method
|
||||
* with three int arguments
|
||||
* @param somefunc function pointer
|
||||
* @param v0 argument for calling method
|
||||
@ -335,6 +255,15 @@ public:
|
||||
int parallelCallDetectorMember(int (slsDetector::*somefunc)(int, int, int),
|
||||
int v0, int v1, int v2);
|
||||
|
||||
/**
|
||||
* Parallel calls to all the detectors in calling a particular method
|
||||
* with string argument and string return
|
||||
* @param somefunc function pointer
|
||||
* @param s0 argument for calling method
|
||||
* @returns concatenated result if values are different, otherwise result in calling method
|
||||
*/
|
||||
std::string parallelCallDetectorMember(std::string (slsDetector::*somefunc)(std::string),
|
||||
std::string s0);
|
||||
/**
|
||||
* Loop serially through all results and
|
||||
* return a value if they are all same, else return -1
|
||||
@ -345,13 +274,12 @@ public:
|
||||
T minusOneIfDifferent(const std::vector<T>&);
|
||||
|
||||
/**
|
||||
* Calculate the detector position index in multi vector and the module index
|
||||
* using an index for all entire modules in list (Mythen)
|
||||
* @param i position index of all modules in list
|
||||
* @param idet position index in multi vector list
|
||||
* @param imod module index in the sls detector
|
||||
* Loop serially through all results and
|
||||
* return a value if they are all same, else concatenate them
|
||||
* @param return_values vector of results
|
||||
* @returns concatenated result if values are different, otherwise result
|
||||
*/
|
||||
int decodeNMod(int i, int &idet, int &imod);
|
||||
std::string concatenateIfDifferent(const std::vector<std::string>& return_values);
|
||||
|
||||
/**
|
||||
* Decodes which detector and the corresponding channel numbers for it
|
||||
@ -364,68 +292,6 @@ public:
|
||||
*/
|
||||
int decodeNChannel(int offsetX, int offsetY, int &channelX, int &channelY);
|
||||
|
||||
/**
|
||||
* Decode data from the detector converting them to an array of doubles,
|
||||
* one for each channel (Mythen only)
|
||||
* @param datain data from the detector
|
||||
* @param nn size of datain array
|
||||
* @param fdata double array of decoded data
|
||||
* @returns pointer to a double array with a data per channel
|
||||
*/
|
||||
double* decodeData(int *datain, int &nn, double *fdata=NULL);
|
||||
|
||||
/**
|
||||
* Writes a data file
|
||||
* @param name of the file to be written
|
||||
* @param data array of data values
|
||||
* @param err array of errors on the data. If NULL no errors will be written
|
||||
* @param ang array of angular values. If NULL data will be in the form
|
||||
* chan-val(-err) otherwise ang-val(-err)
|
||||
* @param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
* @param nch number of channels to be written to file. if -1 defaults to
|
||||
* the number of installed channels of the detector
|
||||
* @returns OK or FAIL if it could not write the file or data=NULL
|
||||
* \sa mythenDetector::writeDataFile
|
||||
*/
|
||||
int writeDataFile(std::string fname, double *data, double *err=NULL,
|
||||
double *ang=NULL, char dataformat='f', int nch=-1);
|
||||
|
||||
/**
|
||||
* Writes a data file with an integer pointer to an array
|
||||
* @param name of the file to be written
|
||||
* @param data array of data values
|
||||
* @returns OK or FAIL if it could not write the file or data=NULL
|
||||
* \sa mythenDetector::writeDataFile
|
||||
*/
|
||||
int writeDataFile(std::string fname, int *data);
|
||||
|
||||
/**
|
||||
* Reads a data file
|
||||
* @param name of the file to be read
|
||||
* @param data array of data values to be filled
|
||||
* @param err array of arrors on the data. If NULL no errors are expected
|
||||
* on the file
|
||||
* @param ang array of angular values. If NULL data are expected in the
|
||||
* form chan-val(-err) otherwise ang-val(-err)
|
||||
* @param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
* @param nch number of channels to be written to file. if <=0 defaults
|
||||
* to the number of installed channels of the detector
|
||||
* @returns OK or FAIL if it could not read the file or data=NULL
|
||||
*\sa mythenDetector::readDataFile
|
||||
*/
|
||||
int readDataFile(std::string fname, double *data, double *err=NULL,
|
||||
double *ang=NULL, char dataformat='f');
|
||||
|
||||
|
||||
/**
|
||||
* Reads a data file
|
||||
* @param name of the file to be read
|
||||
* @param data array of data values
|
||||
* @returns OK or FAIL if it could not read the file or data=NULL
|
||||
* \sa mythenDetector::readDataFile
|
||||
*/
|
||||
int readDataFile(std::string fname, int *data);
|
||||
|
||||
/**
|
||||
* Checks error mask and returns error message and its severity if it exists
|
||||
* @param critical is 1 if any of the messages is critical
|
||||
@ -592,62 +458,6 @@ public:
|
||||
*/
|
||||
void getNumberOfDetectors(int& nx, int& ny);
|
||||
|
||||
/**
|
||||
* Returns sum of all modules per sls detector from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @returns sum of all modules per sls detector
|
||||
*/
|
||||
int getNMods();
|
||||
|
||||
/**
|
||||
* Returns sum of all modules per sls detector in dimension d from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @param d dimension d
|
||||
* @returns sum of all modules per sls detector in dimension d
|
||||
*/
|
||||
int getNMod(dimension d);
|
||||
|
||||
/**
|
||||
* Returns sum of all maximum modules per sls detector from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @returns sum of all maximum modules per sls detector
|
||||
*/
|
||||
int getMaxMods();
|
||||
|
||||
/**
|
||||
* Returns sum of all maximum modules per sls detector in dimension d from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @param d dimension d
|
||||
* @returns sum of all maximum modules per sls detector in dimension d
|
||||
*/
|
||||
int getMaxMod(dimension d);
|
||||
|
||||
/**
|
||||
* Returns the sum of all maximum modules per sls detector in dimension d Mythen)
|
||||
* from the detector directly.
|
||||
* Other detectors, it is 1
|
||||
* @param d dimension d
|
||||
* @returns sum of all maximum modules per sls detector in dimension d
|
||||
*/
|
||||
int getMaxNumberOfModules(dimension d=X);
|
||||
|
||||
/**
|
||||
* Sets/Gets the sum of all modules per sls detector in dimension d (Mythen)
|
||||
* from the detector directly.
|
||||
* Other detectors, it is 1
|
||||
* @param i the number of modules to set to
|
||||
* @param d dimension d
|
||||
* @returns sum of all modules per sls detector in dimension d
|
||||
*/
|
||||
int setNumberOfModules(int i=-1, dimension d=X);
|
||||
|
||||
/**
|
||||
* Using module id, returns the number of channels per that module
|
||||
* from shared memory (Mythen)
|
||||
* @param imod module number of entire multi detector list
|
||||
* @returns number of channels per module imod
|
||||
*/
|
||||
int getChansPerMod(int imod=0);
|
||||
|
||||
/**
|
||||
* Returns the total number of channels of all sls detectors from shared memory
|
||||
@ -672,30 +482,6 @@ public:
|
||||
*/
|
||||
int getTotalNumberOfChannelsInclGapPixels(dimension d);
|
||||
|
||||
/**
|
||||
* Returns the maximum number of channels of all sls detectors
|
||||
* from shared memory (Mythen)
|
||||
* @returns the maximum number of channels of all sls detectors
|
||||
*/
|
||||
int getMaxNumberOfChannels();
|
||||
|
||||
/**
|
||||
* Returns the maximum number of channels of all sls detectors in dimension d
|
||||
* from shared memory (Mythen)
|
||||
* @param d dimension d
|
||||
* @returns the maximum number of channels of all sls detectors in dimension d
|
||||
*/
|
||||
int getMaxNumberOfChannels(dimension d);
|
||||
|
||||
/**
|
||||
* Returns the total number of channels of all sls detectors in dimension d
|
||||
* including gap pixels from shared memory(Mythen)
|
||||
* @param d dimension d
|
||||
* @returns the maximum number of channels of all sls detectors in dimension d
|
||||
* including gap pixels
|
||||
*/
|
||||
int getMaxNumberOfChannelsInclGapPixels(dimension d);
|
||||
|
||||
/**
|
||||
* Returns the maximum number of channels of all sls detectors in each dimension d
|
||||
* from shared memory. multi detector shared memory variable to calculate
|
||||
@ -757,10 +543,10 @@ public:
|
||||
/**
|
||||
* Set/Gets TCP Port of detector or receiver
|
||||
* @param t port type
|
||||
* @param p port number (-1 gets)
|
||||
* @param num port number (-1 gets)
|
||||
* @returns port number
|
||||
*/
|
||||
int setPort(portType t, int p);
|
||||
int setPort(portType t, int num=-1);
|
||||
|
||||
/**
|
||||
* Lock server for this client IP
|
||||
@ -897,22 +683,6 @@ public:
|
||||
*/
|
||||
int saveCalibrationFile(std::string fname, int imod=-1);
|
||||
|
||||
/**
|
||||
* Sets/gets the detector in position i as master of the structure (Mythen)
|
||||
* (e.g. it gates the other detectors and therefore must be started as last.
|
||||
* Assumes that signal 0 is gate in, signal 1 is trigger in, signal 2 is gate out
|
||||
* @param i position of master (-1 gets, -2 unset)
|
||||
* @return master's position (-1 none)
|
||||
*/
|
||||
int setMaster(int i=-1);
|
||||
|
||||
/**
|
||||
* Sets/gets the synchronization mode of the various detector (Mythen)
|
||||
* @param sync syncronization mode
|
||||
* @returns current syncronization mode
|
||||
*/
|
||||
synchronizationMode setSynchronization(synchronizationMode sync=GET_SYNCHRONIZATION_MODE);
|
||||
|
||||
/**
|
||||
* Get Detector run status
|
||||
* @returns status
|
||||
@ -920,19 +690,11 @@ public:
|
||||
runStatus getRunStatus();
|
||||
|
||||
/**
|
||||
* Prepares detector for acquisition (Eiger and Gotthard)
|
||||
* For Gotthard, it sets the detector data transmission mode (CPU or receiver)
|
||||
* Prepares detector for acquisition (Eiger)
|
||||
* @returns OK if all detectors are ready for acquisition, FAIL otherwise
|
||||
*/
|
||||
int prepareAcquisition();
|
||||
|
||||
/**
|
||||
* Cleans up after acquisition (Gotthard only)
|
||||
* For Gotthard, it sets the detector data transmission to default (via CPU)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int cleanupAcquisition();
|
||||
|
||||
/**
|
||||
* Start detector acquisition (Non blocking)
|
||||
* @returns OK or FAIL if even one does not start properly
|
||||
@ -952,82 +714,22 @@ public:
|
||||
int sendSoftwareTrigger();
|
||||
|
||||
/**
|
||||
* Start readout (without exposure or interrupting exposure) (Mythen)
|
||||
* Start detector acquisition and read all data (Blocking until end of acquisition)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int startAndReadAll();
|
||||
|
||||
/**
|
||||
* Start readout (without exposure or interrupting exposure) (Eiger store in ram)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int startReadOut();
|
||||
|
||||
/**
|
||||
* Start detector acquisition and read all data (Blocking until end of acquisition)
|
||||
* (Mythen, puts all data into a data queue. Others, data at receiver via udp packets)
|
||||
* @returns pointer to the front of the data queue (return significant only for Mythen)
|
||||
* \sa startAndReadAllNoWait getDataFromDetector dataQueue
|
||||
*/
|
||||
int* startAndReadAll();
|
||||
|
||||
/**
|
||||
* Start detector acquisition and call read out, but not reading (data for Mythen,
|
||||
* and status for other detectors) from the socket.
|
||||
* (startAndReadAll calls this and getDataFromDetector. Client is not blocking,
|
||||
* but server is blocked until getDataFromDetector is called. so not recommended
|
||||
* for users)
|
||||
* Requests and receives all data from the detector (Eiger store in ram)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int startAndReadAllNoWait();
|
||||
|
||||
/**
|
||||
* Reads from the detector socket (data frame for Mythen and status for other
|
||||
* detectors)
|
||||
* @returns pointer to the data or NULL. If NULL disconnects the socket
|
||||
* (return significant only for Mythen)
|
||||
* Other detectors return NULL
|
||||
* \sa getDataFromDetector
|
||||
*/
|
||||
int* getDataFromDetector();
|
||||
|
||||
/**
|
||||
* Requests and receives a single data frame from the detector
|
||||
* (Mythen: and puts it in the data queue)
|
||||
* @returns pointer to the data or NULL. (return Mythen significant)
|
||||
* Other detectors return NULL
|
||||
* \sa getDataFromDetector
|
||||
*/
|
||||
int* readFrame();
|
||||
|
||||
/**
|
||||
* Requests and receives all data from the detector
|
||||
* (Mythen: and puts them in a data queue)
|
||||
* @returns pointer to the front of the queue or NULL (return Mythen significant)
|
||||
* Other detectors return NULL
|
||||
* \sa getDataFromDetector dataQueue
|
||||
*/
|
||||
int* readAll();
|
||||
|
||||
/**
|
||||
* Pops the data from the data queue (Mythen)
|
||||
* @returns pointer to the popped data or NULL if the queue is empty.
|
||||
* \sa dataQueue
|
||||
*/
|
||||
int* popDataQueue();
|
||||
|
||||
/**
|
||||
* Pops the data from the postprocessed data queue (Mythen)
|
||||
* @returns pointer to the popped data or NULL if the queue is empty.
|
||||
* \sa finalDataQueue
|
||||
*/
|
||||
detectorData* popFinalDataQueue();
|
||||
|
||||
/**
|
||||
* Resets the raw data queue (Mythen)
|
||||
* \sa dataQueue
|
||||
*/
|
||||
void resetDataQueue();
|
||||
|
||||
/**
|
||||
* Resets the post processed data queue (Mythen)
|
||||
* \sa finalDataQueue
|
||||
*/
|
||||
void resetFinalDataQueue();
|
||||
int readAll();
|
||||
|
||||
/**
|
||||
* Configures in detector the destination for UDP packets (Not Mythen)
|
||||
@ -1170,16 +872,6 @@ public:
|
||||
*/
|
||||
int digitalTest(digitalTestMode mode, int imod=0);
|
||||
|
||||
/**
|
||||
* Execute trimming (Mythen)
|
||||
* @param mode trimming mode type
|
||||
* @param par1 parameter 1
|
||||
* @param par2 parameter 2
|
||||
* @param imod module index (-1 for all)
|
||||
* @returns result of trimming
|
||||
*/
|
||||
int executeTrimming(trimMode mode, int par1, int par2, int imod=-1);
|
||||
|
||||
/**
|
||||
* Load dark or gain image to detector (Gotthard)
|
||||
* @param index image type
|
||||
@ -1387,14 +1079,6 @@ public:
|
||||
*/
|
||||
int setAutoComparatorDisableMode(int ival= -1);
|
||||
|
||||
/**
|
||||
* Get Scan steps (Mythen)
|
||||
* @param index scan index
|
||||
* @param istep step index
|
||||
* @returns scan step value
|
||||
*/
|
||||
double getScanStep(int index, int istep);
|
||||
|
||||
/**
|
||||
* Returns the trimbits from the detector's shared memmory (Mythen, Eiger)
|
||||
* @param retval is the array with the trimbits
|
||||
@ -1404,32 +1088,6 @@ public:
|
||||
*/
|
||||
int getChanRegs(double* retval,bool fromDetector);
|
||||
|
||||
/**
|
||||
* Configure channel (Mythen)
|
||||
* @param reg channel register
|
||||
* @param ichan channel number (-1 all)
|
||||
* @param ichip chip number (-1 all)
|
||||
* @param imod module number (-1 all)
|
||||
* \sa ::sls_detector_channel
|
||||
* @returns current register value
|
||||
*/
|
||||
int setChannel(int64_t reg, int ichan=-1, int ichip=-1, int imod=-1);
|
||||
|
||||
/**
|
||||
* Get Move Flag (Mythen)
|
||||
* @param imod module number (-1 all)
|
||||
* @param istep step index
|
||||
* @returns move flag
|
||||
*/
|
||||
int getMoveFlag(int imod);
|
||||
|
||||
/**
|
||||
* Fill Module mask for flat field corrections (Mythen)
|
||||
* @param mM array
|
||||
* @returns number of modules
|
||||
*/
|
||||
int fillModuleMask(int *mM);
|
||||
|
||||
/**
|
||||
* Calibrate Pedestal (ChipTestBoard)
|
||||
* Starts acquisition, calibrates pedestal and writes to fpga
|
||||
@ -1466,115 +1124,6 @@ public:
|
||||
*/
|
||||
int getRateCorrection();
|
||||
|
||||
/**
|
||||
* Rate correct data (Mythen)
|
||||
* @param datain data array
|
||||
* @param errin error array on data (if NULL will default to sqrt(datain)
|
||||
* @param dataout array of corrected data
|
||||
* @param errout error on corrected data (if not NULL)
|
||||
* @returns 0
|
||||
*/
|
||||
int rateCorrect(double* datain, double *errin, double* dataout, double *errout);
|
||||
|
||||
/**
|
||||
* Set flat field corrections (Mythen)
|
||||
* @param fname name of the flat field file (or "" if disable)
|
||||
* @returns 0 if disable (or file could not be read), >0 otherwise
|
||||
*/
|
||||
int setFlatFieldCorrection(std::string fname="");
|
||||
|
||||
/**
|
||||
* Set flat field corrections (Mythen)
|
||||
* @param corr if !=NULL the flat field corrections will be filled with
|
||||
* corr (NULL usets ff corrections)
|
||||
* @param ecorr if !=NULL the flat field correction errors will be filled
|
||||
* with ecorr (1 otherwise)
|
||||
* @returns 0 if ff correction disabled, >0 otherwise
|
||||
*/
|
||||
int setFlatFieldCorrection(double *corr, double *ecorr=NULL);
|
||||
|
||||
/**
|
||||
* Get flat field corrections (Mythen)
|
||||
* @param corr if !=NULL will be filled with the correction coefficients
|
||||
* @param ecorr if !=NULL will be filled with the correction coefficients errors
|
||||
* @returns 0 if ff correction disabled, >0 otherwise
|
||||
*/
|
||||
int getFlatFieldCorrection(double *corr=NULL, double *ecorr=NULL);
|
||||
|
||||
/**
|
||||
* Flat field correct data (Mythen)
|
||||
* @param datain data array
|
||||
* @param errin error array on data (if NULL will default to sqrt(datain)
|
||||
* @param dataout array of corrected data
|
||||
* @param errout error on corrected data (if not NULL)
|
||||
* @returns 0
|
||||
*/
|
||||
int flatFieldCorrect(double* datain, double *errin, double* dataout, double *errout);
|
||||
|
||||
/**
|
||||
* Set bad channels correction (Mythen)
|
||||
* @param fname file with bad channel list ("" disable)
|
||||
* @returns 0 if bad channel disabled, >0 otherwise
|
||||
*/
|
||||
int setBadChannelCorrection(std::string fname="");
|
||||
|
||||
/**
|
||||
* Set bad channels correction (Mythen)
|
||||
* @param nch number of bad channels
|
||||
* @param chs array of channels
|
||||
* @param ff 0 if normal bad channels, 1 if ff bad channels
|
||||
* @returns 0 if bad channel disabled, >0 otherwise
|
||||
*/
|
||||
int setBadChannelCorrection(int nch, int *chs, int ff);
|
||||
|
||||
/**
|
||||
* Get bad channels correction (Mythen)
|
||||
* @param bad pointer to array that if bad!=NULL will be filled with the
|
||||
* bad channel list
|
||||
* @returns 0 if bad channel disabled or no bad channels, >0 otherwise
|
||||
*/
|
||||
int getBadChannelCorrection(int *bad=NULL);
|
||||
|
||||
/**
|
||||
* Reads an angular conversion file (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::readAngularConversion
|
||||
* @param fname file to be read
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int readAngularConversionFile(std::string fname);
|
||||
|
||||
/**
|
||||
* Writes an angular conversion file (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::writeAngularConversion
|
||||
* @param fname file to be written
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int writeAngularConversion(std::string fname);
|
||||
|
||||
/**
|
||||
* Get angular conversion (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::getAngularConversion
|
||||
* @param direction reference to diffractometer
|
||||
* @param angconv array that will be filled with the angular conversion constants
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int getAngularConversion(int &direction, angleConversionConstant *angconv=NULL) ;
|
||||
|
||||
/**
|
||||
* Sets the value of angular conversion parameter (Mythen, Gotthard)
|
||||
* @param c can be ANGULAR_DIRECTION, GLOBAL_OFFSET, FINE_OFFSET, BIN_SIZE
|
||||
* @param v the value to be set
|
||||
* @returns the actual value
|
||||
*/
|
||||
double setAngularConversionParameter(angleConversionParameter c, double v);
|
||||
|
||||
/**
|
||||
* Gets the value of angular conversion parameter (Mythen, Gotthard)
|
||||
* @param imod module index (-1 for all)
|
||||
* @returns the actual value
|
||||
*/
|
||||
angleConversionConstant *getAngularConversionPointer(int imod=0);
|
||||
|
||||
/**
|
||||
* Prints receiver configuration
|
||||
* @returns OK or FAIL
|
||||
@ -1625,7 +1174,7 @@ public:
|
||||
* @param s file directory
|
||||
* @returns file dir
|
||||
*/
|
||||
std::string setFilePath(std::string s="");
|
||||
std::string setFilePath(std::string s);
|
||||
|
||||
/**
|
||||
* Returns file name prefix
|
||||
@ -1638,7 +1187,7 @@ public:
|
||||
* @param s file name prefix
|
||||
* @returns file name prefix
|
||||
*/
|
||||
std::string setFileName(std::string s="");
|
||||
std::string setFileName(std::string s);
|
||||
|
||||
/**
|
||||
* Sets the max frames per file in receiver
|
||||
@ -1672,7 +1221,7 @@ public:
|
||||
* @param f file format
|
||||
* @returns file format
|
||||
*/
|
||||
fileFormat setFileFormat(fileFormat f=GET_FILE_FORMAT);
|
||||
fileFormat setFileFormat(fileFormat f);
|
||||
|
||||
/**
|
||||
* Returns file index
|
||||
@ -1685,7 +1234,13 @@ public:
|
||||
* @param i file index
|
||||
* @returns file index
|
||||
*/
|
||||
int setFileIndex(int i=-1);
|
||||
int setFileIndex(int i);
|
||||
|
||||
/**
|
||||
* increments file index
|
||||
* @returns the file index
|
||||
*/
|
||||
int incrementFileIndex();
|
||||
|
||||
/**
|
||||
* Receiver starts listening to packets
|
||||
@ -1699,13 +1254,6 @@ public:
|
||||
*/
|
||||
int stopReceiver();
|
||||
|
||||
/**
|
||||
* Sets the receiver to start any readout remaining in the fifo and
|
||||
* change status to transmitting (Mythen)
|
||||
* The status changes to run_finished when fifo is empty
|
||||
*/
|
||||
runStatus startReceiverReadout();
|
||||
|
||||
/**
|
||||
* Gets the status of the listening mode of receiver
|
||||
* @returns status
|
||||
@ -1797,13 +1345,6 @@ public:
|
||||
*/
|
||||
int enableDataStreamingFromReceiver(int enable=-1);
|
||||
|
||||
/**
|
||||
* Enable/disable or get data compression in receiver
|
||||
* @param i is -1 to get, 0 to disable and 1 to enable
|
||||
* @returns data compression in receiver
|
||||
*/
|
||||
int enableReceiverCompression(int i = -1);
|
||||
|
||||
/**
|
||||
* Enable/disable or 10Gbe
|
||||
* @param i is -1 to get, 0 to disable and 1 to enable
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
|
||||
int dummyCallback(detectorData* d, int p,void*) {
|
||||
cout << "got data " << p << endl;
|
||||
std::cout << "got data " << p << std::endl;
|
||||
return 0;
|
||||
};
|
||||
|
||||
@ -27,16 +27,16 @@ public:
|
||||
char cmd[100] = ""; \
|
||||
|
||||
if (action==slsDetectorDefs::PUT_ACTION && argc<2) { \
|
||||
cout << "Wrong usage - should be: "<< argv[0] << \
|
||||
"[id-][pos:]channel arg" << endl; \
|
||||
cout << endl; \
|
||||
std::cout << "Wrong usage - should be: "<< argv[0] << \
|
||||
"[id-][pos:]channel arg" << std::endl; \
|
||||
std::cout << std::endl; \
|
||||
return; \
|
||||
if (del) delete myDetector; \
|
||||
}; \
|
||||
if (action==slsDetectorDefs::GET_ACTION && argc<1) { \
|
||||
cout << "Wrong usage - should be: "<< argv[0] << \
|
||||
"[id-][pos:]channel arg" << endl; \
|
||||
cout << endl; \
|
||||
std::cout << "Wrong usage - should be: "<< argv[0] << \
|
||||
"[id-][pos:]channel arg" << std::endl; \
|
||||
std::cout << std::endl; \
|
||||
if (del) delete myDetector; \
|
||||
return; \
|
||||
}; \
|
||||
@ -51,7 +51,7 @@ public:
|
||||
//%s needn't be there (if not 1:), so 1 or 2 arguments scanned
|
||||
if (iv >= 1 && id >= 0) { \
|
||||
argv[0] = cmd; \
|
||||
cout << id << "-" ; \
|
||||
std::cout << id << "-" ; \
|
||||
} else { \
|
||||
id = 0; \
|
||||
} \
|
||||
@ -60,7 +60,7 @@ public:
|
||||
if (strchr(argv[0],':')) { \
|
||||
iv=sscanf(argv[0],"%d:",&pos); \
|
||||
if (iv == 1 && pos >= 0) { \
|
||||
cout << "pos " << pos << " is not allowed for readout!" << endl; \
|
||||
std::cout << "pos " << pos << " is not allowed for readout!" << std::endl; \
|
||||
return; \
|
||||
} \
|
||||
} \
|
||||
@ -71,7 +71,7 @@ public:
|
||||
// scan success
|
||||
if (iv == 2 && id >= 0) { \
|
||||
argv[0] = cmd; \
|
||||
cout << id << "-" ; \
|
||||
std::cout << id << "-" ; \
|
||||
} else { \
|
||||
id = 0; \
|
||||
} \
|
||||
@ -80,7 +80,7 @@ public:
|
||||
// scan success
|
||||
if (iv == 2 && pos >= 0) { \
|
||||
argv[0] = cmd; \
|
||||
cout << pos << ":" ; \
|
||||
std::cout << pos << ":" ; \
|
||||
} \
|
||||
if (iv != 2) { \
|
||||
pos = -1; \
|
||||
@ -109,17 +109,17 @@ public:
|
||||
|
||||
|
||||
|
||||
//cout<<"id:"<<id<<" pos:"<<pos<<endl;
|
||||
//std::cout<<"id:"<<id<<" pos:"<<pos<<std::endl;
|
||||
// create multiSlsDetector class if required
|
||||
if (myDetector==NULL) { \
|
||||
try { \
|
||||
multiSlsDetector* m = new multiSlsDetector(id, verify, update); \
|
||||
myDetector = m; \
|
||||
} catch (const SlsDetectorPackageExceptions & e) { \
|
||||
/*cout << e.GetMessage() << endl;*/ \
|
||||
/*std::cout << e.GetMessage() << std::endl;*/ \
|
||||
return; \
|
||||
} catch (...) { \
|
||||
cout << " caught exception" << endl; \
|
||||
std::cout << " caught exception" << std::endl; \
|
||||
return; \
|
||||
} \
|
||||
del=1; \
|
||||
@ -130,20 +130,20 @@ public:
|
||||
try { \
|
||||
answer=myCmd->executeLine(argc, argv, action, pos); \
|
||||
} catch (const SlsDetectorPackageExceptions & e) { \
|
||||
/*cout << e.GetMessage() << endl; */ \
|
||||
/*std::cout << e.GetMessage() << std::endl; */ \
|
||||
delete myCmd; \
|
||||
if (del) delete myDetector; \
|
||||
return; \
|
||||
} catch (...) { \
|
||||
cout << " caught exception" << endl; \
|
||||
std::cout << " caught exception" << std::endl; \
|
||||
delete myCmd; \
|
||||
if (del) delete myDetector; \
|
||||
return; \
|
||||
} \
|
||||
if (action!=slsDetectorDefs::READOUT_ACTION) { \
|
||||
cout << argv[0] << " " ; \
|
||||
std::cout << argv[0] << " " ; \
|
||||
} \
|
||||
cout << answer<< endl; \
|
||||
std::cout << answer<< std::endl; \
|
||||
delete myCmd; \
|
||||
if (del) delete myDetector; \
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
|
||||
#define GITREPUUID "d2bce7e372c241cd235977b92be18555bca6a77d"
|
||||
#define GITREPUUID "def79807f6f40ed1797b8154240adbc0e35c95e0"
|
||||
#define GITAUTH "Dhanya_Thattil"
|
||||
#define GITREV 0x4020
|
||||
#define GITDATE 0x20180927
|
||||
#define GITBRANCH "4.0.0"
|
||||
#define GITREV 0x4039
|
||||
#define GITDATE 0x20181002
|
||||
#define GITBRANCH "refactor"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -10,18 +10,13 @@
|
||||
*/
|
||||
|
||||
#include "slsDetectorUtils.h"
|
||||
#include "energyConversion.h"
|
||||
#include "angleConversionConstant.h"
|
||||
#include "MySocketTCP.h"
|
||||
#include "angleConversionConstant.h"
|
||||
|
||||
class multiSlsDetector;
|
||||
class SharedMemory;
|
||||
class receiverInterface;
|
||||
|
||||
#define SLS_SHMVERSION 0x180629
|
||||
#define NMODMAXX 24
|
||||
#define NMODMAXY 24
|
||||
#define SLS_SHMVERSION 0x181002
|
||||
#define NCHIPSMAX 10
|
||||
#define NCHANSMAX 65536
|
||||
#define NDACSMAX 16
|
||||
@ -29,8 +24,6 @@ class receiverInterface;
|
||||
* parameter list that has to be initialized depending on the detector type
|
||||
*/
|
||||
typedef struct detParameterList {
|
||||
int nModMaxX;
|
||||
int nModMaxY;
|
||||
int nChanX;
|
||||
int nChanY;
|
||||
int nChipX;
|
||||
@ -40,13 +33,12 @@ typedef struct detParameterList {
|
||||
int nGain;
|
||||
int nOffset;
|
||||
int dynamicRange;
|
||||
int moveFlag;
|
||||
int nGappixelsX;
|
||||
int nGappixelsY;
|
||||
} detParameterList;
|
||||
|
||||
|
||||
class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
class slsDetector : public slsDetectorUtils {
|
||||
|
||||
private:
|
||||
/**
|
||||
@ -100,28 +92,6 @@ private:
|
||||
/** list of the energies at which the detector has been trimmed */
|
||||
int trimEnergies[MAX_TRIMEN];
|
||||
|
||||
/** indicator for the acquisition progress - set to 0 at the beginning
|
||||
* of the acquisition and incremented when each frame is processed */
|
||||
int progressIndex;
|
||||
|
||||
/** total number of frames to be acquired */
|
||||
int totalProgress;
|
||||
|
||||
/** path of the output files */
|
||||
char filePath[MAX_STR_LENGTH];
|
||||
|
||||
/** number of installed modules of the detector (x and y directions) */
|
||||
int nMod[2];
|
||||
|
||||
/** number of modules ( nMod[X]*nMod[Y]) \see nMod */
|
||||
int nMods;
|
||||
|
||||
/** maximum number of modules of the detector (x and y directions) */
|
||||
int nModMax[2];
|
||||
|
||||
/** maximum number of modules (nModMax[X]*nModMax[Y]) \see nModMax */
|
||||
int nModsMax;
|
||||
|
||||
/** number of channels per chip */
|
||||
int nChans;
|
||||
|
||||
@ -152,9 +122,6 @@ private:
|
||||
/** size of the data that are transfered from the detector */
|
||||
int dataBytes;
|
||||
|
||||
/** corrections to be applied to the data \see ::correctionFlags */
|
||||
int correctionMask;
|
||||
|
||||
/** threaded processing flag
|
||||
* (i.e. if data are processed in a separate thread) */
|
||||
int threadedProcessing;
|
||||
@ -162,61 +129,6 @@ private:
|
||||
/** dead time (in ns) for rate corrections */
|
||||
double tDead;
|
||||
|
||||
/** directory where the flat field files are stored */
|
||||
char flatFieldDir[MAX_STR_LENGTH];
|
||||
|
||||
/** file used for flat field corrections */
|
||||
char flatFieldFile[MAX_STR_LENGTH];
|
||||
|
||||
/** number of bad channels from bad channel list */
|
||||
int nBadChans;
|
||||
|
||||
/** file with the bad channels */
|
||||
char badChanFile[MAX_STR_LENGTH];
|
||||
|
||||
/** list of bad channels */
|
||||
int badChansList[MAX_BADCHANS];
|
||||
|
||||
/** number of bad channels from flat field
|
||||
* i.e. channels which read 0 in the flat field file */
|
||||
int nBadFF;
|
||||
|
||||
/** list of bad channels from flat field
|
||||
* i.e. channels which read 0 in the flat field file */
|
||||
int badFFList[MAX_BADCHANS];
|
||||
|
||||
/** file with the angular conversion factors */
|
||||
char angConvFile[MAX_STR_LENGTH];
|
||||
|
||||
/** array of angular conversion constants for each module
|
||||
* \see ::angleConversionConstant */
|
||||
angleConversionConstant angOff[MAXMODS];
|
||||
|
||||
/** angular direction (1 if it corresponds to the encoder direction
|
||||
* i.e. channel 0 is 0, maxchan is positive high angle, 0 otherwise */
|
||||
int angDirection;
|
||||
|
||||
/** beamline fine offset (of the order of mdeg,
|
||||
* might be adjusted for each measurements) */
|
||||
double fineOffset;
|
||||
|
||||
/** beamline offset (might be a few degrees beacuse of encoder offset -
|
||||
* normally it is kept fixed for a long period of time) */
|
||||
double globalOffset;
|
||||
|
||||
/** number of positions at which the detector should acquire */
|
||||
int numberOfPositions;
|
||||
|
||||
/** list of encoder positions at which the detector should acquire */
|
||||
double detPositions[MAXPOS];
|
||||
|
||||
/** bin size for data merging */
|
||||
double binSize;
|
||||
|
||||
/** add encoder value flag (i.e. wether the detector is
|
||||
* moving - 1 - or stationary - 0) */
|
||||
int moveFlag;
|
||||
|
||||
/** number of rois defined */
|
||||
int nROI;
|
||||
|
||||
@ -238,39 +150,6 @@ private:
|
||||
/** timer values */
|
||||
int64_t timerValue[MAX_TIMERS];
|
||||
|
||||
/** action mask */
|
||||
int actionMask;
|
||||
|
||||
/** action script */
|
||||
mystring actionScript[MAX_ACTIONS];
|
||||
|
||||
/** action parameter */
|
||||
mystring actionParameter[MAX_ACTIONS];
|
||||
|
||||
/** scan mode */
|
||||
int scanMode[MAX_SCAN_LEVELS];
|
||||
|
||||
/** scan script */
|
||||
mystring scanScript[MAX_SCAN_LEVELS];
|
||||
|
||||
/** scan parameter */
|
||||
mystring scanParameter[MAX_SCAN_LEVELS];
|
||||
|
||||
/** n scan steps */
|
||||
int nScanSteps[MAX_SCAN_LEVELS];
|
||||
|
||||
/** scan steps */
|
||||
mysteps scanSteps[MAX_SCAN_LEVELS];
|
||||
|
||||
/** scan precision */
|
||||
int scanPrecision[MAX_SCAN_LEVELS];
|
||||
|
||||
/** memory offsets for the flat field coefficients */
|
||||
int ffoff;
|
||||
|
||||
/** memory offsets for the flat filed coefficient errors */
|
||||
int fferroff;
|
||||
|
||||
/** memory offsets for the module structures */
|
||||
int modoff;
|
||||
|
||||
@ -357,9 +236,6 @@ private:
|
||||
/** additional json header */
|
||||
char receiver_additionalJsonHeader[MAX_STR_LENGTH];
|
||||
|
||||
/** frames per file in receiver */
|
||||
int receiver_framesPerFile;
|
||||
|
||||
/** detector control server software API version */
|
||||
int64_t detectorControlAPIVersion;
|
||||
|
||||
@ -384,6 +260,27 @@ private:
|
||||
/** silent receiver */
|
||||
bool receiver_silentMode;
|
||||
|
||||
/** path of the output files */
|
||||
char receiver_filePath[MAX_STR_LENGTH];
|
||||
|
||||
/** file name prefix */
|
||||
char receiver_fileName[MAX_STR_LENGTH];
|
||||
|
||||
/** file index */
|
||||
int receiver_fileIndex;
|
||||
|
||||
/** file format */
|
||||
fileFormat receiver_fileFormatType;
|
||||
|
||||
/** frames per file */
|
||||
int receiver_framesPerFile;
|
||||
|
||||
/** filewriteenable */
|
||||
bool receiver_fileWriteEnable;
|
||||
|
||||
/** overwriteenable */
|
||||
bool receiver_overWriteEnable;
|
||||
|
||||
} sharedSlsDetector;
|
||||
|
||||
|
||||
@ -392,13 +289,6 @@ private:
|
||||
|
||||
public:
|
||||
|
||||
using slsDetectorUtils::getDetectorType;
|
||||
using postProcessing::flatFieldCorrect;
|
||||
using postProcessing::rateCorrect;
|
||||
using postProcessing::setBadChannelCorrection;
|
||||
using angularConversion::readAngularConversion;
|
||||
using angularConversion::writeAngularConversion;
|
||||
using slsDetectorUtils::getAngularConversion;
|
||||
|
||||
//FIXME: all pos or id arguments needed only for same multi signature
|
||||
|
||||
@ -432,16 +322,6 @@ public:
|
||||
*/
|
||||
bool isMultiSlsDetectorClass();
|
||||
|
||||
/**
|
||||
* Decode data from the detector converting them to an array of doubles,
|
||||
* one for each channel (Mythen only)
|
||||
* @param datain data from the detector
|
||||
* @param nn size of datain array
|
||||
* @param fdata double array of decoded data
|
||||
* @returns pointer to a double array with a data per channel
|
||||
*/
|
||||
double* decodeData(int *datain, int &nn, double *fdata=NULL);
|
||||
|
||||
/**
|
||||
* Clears error mask and also the bit in parent det multi error mask
|
||||
* @returns error mask
|
||||
@ -562,6 +442,8 @@ public:
|
||||
*/
|
||||
void disconnectStop();
|
||||
|
||||
using slsDetectorUtils::getDetectorType;
|
||||
|
||||
/**
|
||||
* Get detector type by connecting to the detector without creating an object
|
||||
* @param name hostname of detector
|
||||
@ -605,72 +487,6 @@ public:
|
||||
*/
|
||||
std::string getDetectorType();
|
||||
|
||||
/**
|
||||
* Returns number of modules from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @returns number of modules
|
||||
*/
|
||||
int getNMods();
|
||||
|
||||
/**
|
||||
* Returns number of modules in dimension d from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @param d dimension d
|
||||
* @returns number of modules in dimension d
|
||||
*/
|
||||
int getNMod(dimension d);
|
||||
|
||||
/**
|
||||
* Returns maximum number of modules from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @returns maximum number of modules
|
||||
*/
|
||||
int getMaxMods();
|
||||
|
||||
/**
|
||||
* Returns maximum number of modules in dimension d from shared memory (Mythen)
|
||||
* Other detectors, it is 1
|
||||
* @param d dimension d
|
||||
* @returns maximum number of modules in dimension d
|
||||
*/
|
||||
int getNMaxMod(dimension d);
|
||||
|
||||
/**
|
||||
* Returns maximum number of modules in dimension d (Mythen)
|
||||
* from the detector directly.
|
||||
* Other detectors, it is 1
|
||||
* @param d dimension d
|
||||
* @returns maximum number of modules in dimension d
|
||||
*/
|
||||
int getMaxNumberOfModules(dimension d=X); //
|
||||
|
||||
/**
|
||||
* Sets/Gets the number of modules in dimension d (Mythen)
|
||||
* from the detector directly.
|
||||
* Other detectors, it is 1
|
||||
* @param i the number of modules to set to (-1 gets)
|
||||
* @param d dimension d
|
||||
* @returns the number of modules in dimension d
|
||||
*/
|
||||
int setNumberOfModules(int n=GET_FLAG, dimension d=X);
|
||||
|
||||
/**
|
||||
* returns the number of channels per that module
|
||||
* from shared memory (Mythen)
|
||||
* @param imod insignificant
|
||||
* @returns number of channels per module
|
||||
*/
|
||||
int getChansPerMod(int imod=0);
|
||||
|
||||
/**
|
||||
* returns the number of channels per that module in dimension d
|
||||
* from shared memory (Mythen)
|
||||
* @param d dimension d
|
||||
* @param imod insignificant
|
||||
* @returns number of channels per module in dimension d
|
||||
*/
|
||||
int getChansPerMod( dimension d,int imod=0);
|
||||
|
||||
/**
|
||||
* Returns the total number of channels from shared memory
|
||||
* @returns the total number of channels
|
||||
@ -693,26 +509,6 @@ public:
|
||||
*/
|
||||
int getTotalNumberOfChannelsInclGapPixels(dimension d);
|
||||
|
||||
/**
|
||||
* Returns the maximum number of channels from shared memory (Mythen)
|
||||
* @returns the maximum number of channels
|
||||
*/
|
||||
int getMaxNumberOfChannels();
|
||||
|
||||
/**
|
||||
* Returns the maximum number of channels in dimension d from shared memory (Mythen)
|
||||
* @param d dimension d
|
||||
* @returns the maximum number of channels in dimension d
|
||||
*/
|
||||
int getMaxNumberOfChannels(dimension d);
|
||||
|
||||
/**
|
||||
* Returns the maximum number of channels in dimension d from shared memory (Mythen)
|
||||
* @param d dimension d
|
||||
* @returns the maximum number of channels in dimension d
|
||||
*/
|
||||
int getMaxNumberOfChannelsInclGapPixels(dimension d);
|
||||
|
||||
/**
|
||||
* returns the number of channels per chip from shared memory (Mythen)
|
||||
* @returns number of channels per chip
|
||||
@ -784,7 +580,7 @@ public:
|
||||
/**
|
||||
* Set/Gets TCP Port of detector or receiver
|
||||
* @param t port type
|
||||
* @param p port number (-1 gets)
|
||||
* @param num port number (-1 gets)
|
||||
* @returns port number
|
||||
*/
|
||||
int setPort(portType type, int num=-1);
|
||||
@ -895,7 +691,6 @@ public:
|
||||
* @returns OK or FAIL if the file could not be written
|
||||
* \sa ::sls_detector_module sharedSlsDetector mythenDetector::writeSettingsFile(string, int)
|
||||
*/
|
||||
using energyConversion::writeSettingsFile;
|
||||
int writeSettingsFile(std::string fname, int imod, int iodelay, int tau);
|
||||
|
||||
/**
|
||||
@ -1017,35 +812,6 @@ public:
|
||||
*/
|
||||
int saveCalibrationFile(std::string fname, int imod=-1);
|
||||
|
||||
/**
|
||||
* Sets/gets the detector in position i as master of the structure (Mythen)
|
||||
* (e.g. it gates the other detectors and therefore must be started as last.
|
||||
* Assumes that signal 0 is gate in, signal 1 is trigger in, signal 2 is gate out
|
||||
* @param i position of master (-1 gets, -2 unset)
|
||||
* @return master's position (-1 none)
|
||||
*/
|
||||
masterFlags setMaster(masterFlags flag);
|
||||
|
||||
/**
|
||||
* Sets/gets the synchronization mode of the various detector (Mythen)
|
||||
* @param sync syncronization mode
|
||||
* @returns current syncronization mode
|
||||
*/
|
||||
synchronizationMode setSynchronization(synchronizationMode sync=GET_SYNCHRONIZATION_MODE);
|
||||
|
||||
/**
|
||||
* Calcualtes the total number of steps of the acquisition
|
||||
* Called when number of frames, number of cycles, number of positions and scan steps change
|
||||
* @returns the total number of steps of the acquisition
|
||||
*/
|
||||
int setTotalProgress();
|
||||
|
||||
/**
|
||||
* Returns the current progress in %
|
||||
* @returns the current progress in %
|
||||
*/
|
||||
double getCurrentProgress();
|
||||
|
||||
/**
|
||||
* Get run status of the detector
|
||||
* @returns the status of the detector
|
||||
@ -1053,19 +819,11 @@ public:
|
||||
runStatus getRunStatus();
|
||||
|
||||
/**
|
||||
* Prepares detector for acquisition (Eiger and Gotthard)
|
||||
* For Gotthard, it sets the detector data transmission mode (CPU or receiver)
|
||||
* Prepares detector for acquisition (Eiger)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int prepareAcquisition();
|
||||
|
||||
/**
|
||||
* Cleans up after acquisition (Gotthard only)
|
||||
* For Gotthard, it sets the detector data transmission to default (via CPU)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int cleanupAcquisition();
|
||||
|
||||
/**
|
||||
* Start detector acquisition (Non blocking)
|
||||
* @returns OK or FAIL if even one does not start properly
|
||||
@ -1085,65 +843,22 @@ public:
|
||||
int sendSoftwareTrigger();
|
||||
|
||||
/**
|
||||
* Start readout (without exposure or interrupting exposure) (Mythen)
|
||||
* Start detector acquisition and read all data (Blocking until end of acquisition)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int startAndReadAll();
|
||||
|
||||
/**
|
||||
* Start readout (without exposure or interrupting exposure) (Eiger store in ram)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int startReadOut();
|
||||
|
||||
/**
|
||||
* Start detector acquisition and read all data (Blocking until end of acquisition)
|
||||
* (Mythen, puts all data into a data queue. Others, data at receiver via udp packets)
|
||||
* @returns pointer to the front of the data queue (return significant only for Mythen)
|
||||
* \sa startAndReadAllNoWait getDataFromDetector dataQueue
|
||||
*/
|
||||
int* startAndReadAll();
|
||||
|
||||
/**
|
||||
* Start detector acquisition and call read out, but not reading (data for Mythen,
|
||||
* and status for other detectors) from the socket.
|
||||
* (startAndReadAll calls this and getDataFromDetector. Client is not blocking,
|
||||
* but server is blocked until getDataFromDetector is called. so not recommended
|
||||
* for users)
|
||||
* Requests and receives all data from the detector (Eiger store in ram)
|
||||
* @returns OK or FAIL
|
||||
*/
|
||||
int startAndReadAllNoWait();
|
||||
|
||||
/**
|
||||
* Reads from the detector socket (data frame for Mythen and status for other
|
||||
* detectors)
|
||||
* @returns pointer to the data or NULL. If NULL disconnects the socket
|
||||
* (return significant only for Mythen)
|
||||
* Other detectors return NULL
|
||||
* \sa getDataFromDetector
|
||||
*/
|
||||
int* getDataFromDetector(int *retval=NULL);
|
||||
|
||||
/**
|
||||
* Requests and receives a single data frame from the detector
|
||||
* (Mythen: and puts it in the data queue)
|
||||
* @returns pointer to the data or NULL. (return Mythen significant)
|
||||
* Other detectors return NULL
|
||||
* \sa getDataFromDetector
|
||||
*/
|
||||
int* readFrame();
|
||||
|
||||
/**
|
||||
* Receives all data from the detector
|
||||
* (Mythen: and puts them in a data queue)
|
||||
* @returns pointer to the front of the queue or NULL (return Mythen significant)
|
||||
* Other detectors return NULL
|
||||
* \sa getDataFromDetector dataQueue
|
||||
*/
|
||||
int* readAll();
|
||||
|
||||
/**
|
||||
* Requests detector for all data, calls readAll afterwards
|
||||
* (Mythen: and puts them in a data queue)
|
||||
* @returns pointer to the front of the queue or NULL (return Mythen significant)
|
||||
* Other detectors return NULL
|
||||
* \sa getDataFromDetector dataQueue
|
||||
*/
|
||||
int readAllNoWait();
|
||||
int readAll();
|
||||
|
||||
/**
|
||||
* Configures in detector the destination for UDP packets (Not Mythen)
|
||||
@ -1439,16 +1154,6 @@ public:
|
||||
*/
|
||||
int digitalTest(digitalTestMode mode, int imod=0);
|
||||
|
||||
/**
|
||||
* Execute trimming (Mythen)
|
||||
* @param mode trimming mode type
|
||||
* @param par1 parameter 1
|
||||
* @param par2 parameter 2
|
||||
* @param imod module index (-1 for all)
|
||||
* @returns result of trimming
|
||||
*/
|
||||
int executeTrimming(trimMode mode, int par1, int par2, int imod=-1);
|
||||
|
||||
/**
|
||||
* Load dark or gain image to detector (Gotthard)
|
||||
* @param index image type, 0 for dark image and 1 for gain image
|
||||
@ -1691,15 +1396,7 @@ public:
|
||||
int getChanRegs(double* retval,bool fromDetector);
|
||||
|
||||
/**
|
||||
* Configure module (who calls this?)
|
||||
* @param imod module number (-1 all)
|
||||
* @returns current register value
|
||||
* \sa ::sls_detector_module
|
||||
*/
|
||||
int setModule(int reg, int imod=-1);
|
||||
|
||||
/**
|
||||
* Configure Module (Mythen, Eiger)
|
||||
* Configure Module (Eiger)
|
||||
* Called for loading trimbits and settings settings to the detector
|
||||
* @param module module to be set - must contain correct module number and
|
||||
* also channel and chip registers
|
||||
@ -1723,77 +1420,6 @@ public:
|
||||
*/
|
||||
sls_detector_module *getModule(int imod);
|
||||
|
||||
/**
|
||||
* Configure channel (Mythen)
|
||||
* @param reg channel register
|
||||
* @param ichan channel number (-1 all)
|
||||
* @param ichip chip number (-1 all)
|
||||
* @param imod module number (-1 all)
|
||||
* @returns current register value
|
||||
* \sa ::sls_detector_channel
|
||||
*/
|
||||
int setChannel(int64_t reg, int ichan=-1, int ichip=-1, int imod=-1);
|
||||
|
||||
/**
|
||||
* Configure channel (Mythen)
|
||||
* @param chan channel to be set -
|
||||
* must contain correct channel, module and chip number
|
||||
* @returns current register value
|
||||
*/
|
||||
int setChannel(sls_detector_channel chan);
|
||||
|
||||
/**
|
||||
* Get channel (Mythen)
|
||||
* @param ichan channel number
|
||||
* @param ichip chip number
|
||||
* @param imod module number
|
||||
* @returns current channel structure for channel
|
||||
*/
|
||||
sls_detector_channel getChannel(int ichan, int ichip, int imod);
|
||||
|
||||
/**
|
||||
* Configure chip (Mythen)
|
||||
* @param reg chip register
|
||||
* @param ichip chip number (-1 all)
|
||||
* @param imod module number (-1 all)
|
||||
* @returns current register value
|
||||
* \sa ::sls_detector_chip
|
||||
*/
|
||||
int setChip(int reg, int ichip=-1, int imod=-1);
|
||||
|
||||
/**
|
||||
* Configure chip (Mythen)
|
||||
* @param chip chip to be set
|
||||
* must contain correct module and chip number and also channel registers
|
||||
* @returns current register value
|
||||
* \sa ::sls_detector_chip
|
||||
*/
|
||||
int setChip(sls_detector_chip chip);
|
||||
|
||||
/**
|
||||
* Get chip (Mythen)
|
||||
* @param ichip chip number
|
||||
* @param imod module number
|
||||
* @returns current chip structure for channel
|
||||
* \bug probably does not return corretly!
|
||||
*/
|
||||
sls_detector_chip getChip(int ichip, int imod);
|
||||
|
||||
/**
|
||||
* Get Move Flag (Mythen)
|
||||
* @param imod module number (-1 all)
|
||||
* @param istep step index
|
||||
* @returns move flag
|
||||
*/
|
||||
int getMoveFlag(int imod);
|
||||
|
||||
/**
|
||||
* Fill Module mask for flat field corrections (Mythen)
|
||||
* @param mM array
|
||||
* @returns number of modules
|
||||
*/
|
||||
int fillModuleMask(int *mM);
|
||||
|
||||
/**
|
||||
* Calibrate Pedestal (ChipTestBoard)
|
||||
* Starts acquisition, calibrates pedestal and writes to fpga
|
||||
@ -1830,123 +1456,6 @@ public:
|
||||
*/
|
||||
int getRateCorrection();
|
||||
|
||||
/**
|
||||
* Rate correct data (Mythen)
|
||||
* @param datain data array
|
||||
* @param errin error array on data (if NULL will default to sqrt(datain)
|
||||
* @param dataout array of corrected data
|
||||
* @param errout error on corrected data (if not NULL)
|
||||
* @returns 0
|
||||
*/
|
||||
int rateCorrect(double* datain, double *errin, double* dataout, double *errout);
|
||||
|
||||
/**
|
||||
* Set flat field corrections (Mythen)
|
||||
* @param fname name of the flat field file (or "" if disable)
|
||||
* @returns 0 if disable (or file could not be read), >0 otherwise
|
||||
*/
|
||||
int setFlatFieldCorrection(std::string fname="");
|
||||
|
||||
/**
|
||||
* Set flat field corrections (Mythen)
|
||||
* @param corr if !=NULL the flat field corrections will be filled with
|
||||
* corr (NULL usets ff corrections)
|
||||
* @param ecorr if !=NULL the flat field correction errors will be filled
|
||||
* with ecorr (1 otherwise)
|
||||
* @returns 0 if ff correction disabled, >0 otherwise
|
||||
*/
|
||||
int setFlatFieldCorrection(double *corr, double *ecorr=NULL);
|
||||
|
||||
/**
|
||||
* Get flat field corrections (Mythen)
|
||||
* @param corr if !=NULL will be filled with the correction coefficients
|
||||
* @param ecorr if !=NULL will be filled with the correction coefficients errors
|
||||
* @returns 0 if ff correction disabled, >0 otherwise
|
||||
*/
|
||||
int getFlatFieldCorrection(double *corr=NULL, double *ecorr=NULL);
|
||||
|
||||
/**
|
||||
* Flat field correct data (Mythen)
|
||||
* @param datain data array
|
||||
* @param errin error array on data (if NULL will default to sqrt(datain)
|
||||
* @param dataout array of corrected data
|
||||
* @param errout error on corrected data (if not NULL)
|
||||
* @returns 0
|
||||
*/
|
||||
int flatFieldCorrect(double* datain, double *errin, double* dataout, double *errout);
|
||||
|
||||
/**
|
||||
* Set bad channels correction (Mythen)
|
||||
* @param fname file with bad channel list ("" disable)
|
||||
* @returns 0 if bad channel disabled, >0 otherwise
|
||||
*/
|
||||
int setBadChannelCorrection(std::string fname="");
|
||||
|
||||
/**
|
||||
* Set bad channels correction (Mythen)
|
||||
* @param nch number of bad channels
|
||||
* @param chs array of channels
|
||||
* @param ff 0 if normal bad channels, 1 if ff bad channels
|
||||
* @returns 0 if bad channel disabled, >0 otherwise
|
||||
*/
|
||||
int setBadChannelCorrection(int nch, int *chs, int ff=0);
|
||||
|
||||
/**
|
||||
* Get bad channels correction (Mythen)
|
||||
* @param bad pointer to array that if bad!=NULL will be filled with the
|
||||
* bad channel list
|
||||
* @returns 0 if bad channel disabled or no bad channels, >0 otherwise
|
||||
*/
|
||||
int getBadChannelCorrection(int *bad=NULL);
|
||||
|
||||
/**
|
||||
* Reads an angular conversion file (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::readAngularConversion
|
||||
* @param fname file to be read
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int readAngularConversionFile(std::string fname="");
|
||||
|
||||
/**
|
||||
* Reads an angular conversion file (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::readAngularConversion
|
||||
* @param ifs input stream
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int readAngularConversion(std::ifstream& ifs);
|
||||
|
||||
/**
|
||||
* Writes an angular conversion file (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::writeAngularConversion
|
||||
* @param fname file to be written
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int writeAngularConversion(std::string fname="");
|
||||
|
||||
/**
|
||||
* Writes an angular conversion file (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::writeAngularConversion
|
||||
* @param ofs output stream
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int writeAngularConversion(std::ofstream &ofs);
|
||||
|
||||
/**
|
||||
* Get angular conversion (Mythen, Gotthard)
|
||||
* \sa angleConversionConstant mythenDetector::getAngularConversion
|
||||
* @param direction reference to diffractometer
|
||||
* @param angconv array that will be filled with the angular conversion constants
|
||||
* @returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
int getAngularConversion(int &direction, angleConversionConstant *angconv=NULL) ;
|
||||
|
||||
/**
|
||||
* Return angular conversion pointer (Mythen, Gotthard)
|
||||
* @param imod module number
|
||||
* @returns angular conversion pointer
|
||||
*/
|
||||
angleConversionConstant *getAngularConversionPointer(int imod=0);
|
||||
|
||||
/**
|
||||
* Prints receiver configuration
|
||||
* @returns OK or FAIL
|
||||
@ -2035,7 +1544,7 @@ public:
|
||||
* @param s file directory
|
||||
* @returns file dir
|
||||
*/
|
||||
std::string setFilePath(std::string s="");
|
||||
std::string setFilePath(std::string s);
|
||||
|
||||
/**
|
||||
* Returns file name prefix
|
||||
@ -2048,14 +1557,14 @@ public:
|
||||
* @param s file name prefix
|
||||
* @returns file name prefix
|
||||
*/
|
||||
std::string setFileName(std::string s="");
|
||||
std::string setFileName(std::string s);
|
||||
|
||||
/**
|
||||
* Sets the max frames per file in receiver
|
||||
* @param f max frames per file
|
||||
* @returns max frames per file in receiver
|
||||
*/
|
||||
int setReceiverFramesPerFile(int f = -1);
|
||||
int setReceiverFramesPerFile(int f=-1);
|
||||
|
||||
/**
|
||||
* Sets the frames discard policy in receiver
|
||||
@ -2082,7 +1591,7 @@ public:
|
||||
* @param f file format
|
||||
* @returns file format
|
||||
*/
|
||||
fileFormat setFileFormat(fileFormat f=GET_FILE_FORMAT);
|
||||
fileFormat setFileFormat(fileFormat f);
|
||||
|
||||
/**
|
||||
* Returns file index
|
||||
@ -2095,7 +1604,13 @@ public:
|
||||
* @param i file index
|
||||
* @returns file index
|
||||
*/
|
||||
int setFileIndex(int i=-1);
|
||||
int setFileIndex(int i);
|
||||
|
||||
/**
|
||||
* increments file index
|
||||
* @returns the file index
|
||||
*/
|
||||
int incrementFileIndex();
|
||||
|
||||
/**
|
||||
* Receiver starts listening to packets
|
||||
@ -2109,13 +1624,6 @@ public:
|
||||
*/
|
||||
int stopReceiver();
|
||||
|
||||
/**
|
||||
* Sets the receiver to start any readout remaining in the fifo and
|
||||
* change status to transmitting (Mythen)
|
||||
* The status changes to run_finished when fifo is empty
|
||||
*/
|
||||
runStatus startReceiverReadout();
|
||||
|
||||
/**
|
||||
* Gets the status of the listening mode of receiver
|
||||
* @returns status
|
||||
@ -2194,13 +1702,6 @@ public:
|
||||
*/
|
||||
int enableDataStreamingFromReceiver(int enable=-1);
|
||||
|
||||
/**
|
||||
* Enable/disable or get data compression in receiver
|
||||
* @param i is -1 to get, 0 to disable and 1 to enable
|
||||
* @returns data compression in receiver
|
||||
*/
|
||||
int enableReceiverCompression(int i = -1);
|
||||
|
||||
/**
|
||||
* Enable/disable or 10Gbe
|
||||
* @param i is -1 to get, 0 to disable and 1 to enable
|
||||
@ -2348,20 +1849,6 @@ private:
|
||||
*/
|
||||
void deleteModule(sls_detector_module *myMod);
|
||||
|
||||
/**
|
||||
* Send a sls_detector_channel structure over socket
|
||||
* @param myChan channel structure to send
|
||||
* @returns number of bytes sent to the detector
|
||||
*/
|
||||
int sendChannel(sls_detector_channel* myChan);
|
||||
|
||||
/**
|
||||
* Send a sls_detector_chip structure over socket
|
||||
* @param myChip chip structure to send
|
||||
* @returns number of bytes sent to the detector
|
||||
*/
|
||||
int sendChip(sls_detector_chip* myChip);
|
||||
|
||||
/**
|
||||
* Send a sls_detector_module structure over socket
|
||||
* @param myMod module structure to send
|
||||
@ -2369,20 +1856,6 @@ private:
|
||||
*/
|
||||
int sendModule(sls_detector_module* myMod);
|
||||
|
||||
/**
|
||||
* Receive a sls_detector_channel structure over socket
|
||||
* @param myChan channel structure to receive
|
||||
* @returns number of bytes received from the detector
|
||||
*/
|
||||
int receiveChannel(sls_detector_channel* myChan);
|
||||
|
||||
/**
|
||||
* Receive a sls_detector_chip structure over socket
|
||||
* @param myChip chip structure to receive
|
||||
* @returns number of bytes received from the detector
|
||||
*/
|
||||
int receiveChip(sls_detector_chip* myChip);
|
||||
|
||||
/**
|
||||
* Receive a sls_detector_module structure over socket
|
||||
* @param myMod module structure to receive
|
||||
@ -2431,7 +1904,6 @@ private:
|
||||
*/
|
||||
std::string setDetectorNetworkParameter(networkParameter index, int delay);
|
||||
|
||||
|
||||
/**
|
||||
* Get MAC from the receiver using udpip and
|
||||
* set up UDP connection in detector
|
||||
@ -2439,6 +1911,94 @@ private:
|
||||
*/
|
||||
int setUDPConnection();
|
||||
|
||||
/**
|
||||
* reads a calibration file
|
||||
* @param fname file to be read
|
||||
* @param gain reference to the gain variable
|
||||
* @param offset reference to the offset variable
|
||||
* @returns OK if successful, else FAIL or -1
|
||||
*/
|
||||
static int readCalibrationFile(std::string fname, double &gain, double &offset);
|
||||
|
||||
/**
|
||||
* writes a calibration file
|
||||
* @param fname file to be written
|
||||
* @param gain
|
||||
* @param offset
|
||||
* @returns OK if successful, else FAIL or -1
|
||||
*/
|
||||
static int writeCalibrationFile(std::string fname, double gain, double offset);
|
||||
|
||||
/**
|
||||
* reads a calibration file
|
||||
* @param fname file to be read
|
||||
* @param gain reference to the gain variable
|
||||
* @param offset reference to the offset variable
|
||||
* @returns OK if successful, else FAIL or -1
|
||||
*/
|
||||
static int readCalibrationFile(std::string fname, int *gain, int *offset);
|
||||
|
||||
/**
|
||||
* writes a calibration file
|
||||
* @param fname file to be written
|
||||
* @param gain reference to the gain variable
|
||||
* @param offset reference to the offset variable
|
||||
* @returns OK if successful, else FAIL or -1
|
||||
*/
|
||||
static int writeCalibrationFile(std::string fname, int *gain, int *offset);
|
||||
|
||||
/*
|
||||
* Template function to do linear interpolation between two points (Eiger only)
|
||||
*/
|
||||
template <typename E, typename V>
|
||||
V linearInterpolation(const E x, const E x1, const E x2, const V y1, const V y2){
|
||||
double k = static_cast<double>(y2-y1)/(x2-x1);
|
||||
double m = y1-k*x1;
|
||||
int y = round( k*x+m );
|
||||
return static_cast<V>(y);
|
||||
}
|
||||
|
||||
/**
|
||||
* interpolates dacs and trimbits between 2 trim files
|
||||
* @param a first module structure
|
||||
* @param b second module structure
|
||||
* @param energy energy to trim at
|
||||
* @param e1 reference trim value
|
||||
* @param e2 reference trim value
|
||||
* @param tb 1 to include trimbits, 0 to exclude (used for eiger)
|
||||
* @returns the pointer to the module structure with interpolated values or NULL if error
|
||||
*/
|
||||
sls_detector_module* interpolateTrim(
|
||||
sls_detector_module* a, sls_detector_module* b, const int energy,
|
||||
const int e1, const int e2, int tb=1);
|
||||
|
||||
/**
|
||||
* reads a trim/settings file
|
||||
* @param fname name of the file to be read
|
||||
* @param iodelay io delay (detector specific)
|
||||
* @param tau tau (detector specific)
|
||||
* @param myMod pointer to the module structure which has to be set. <BR>
|
||||
* If it is NULL a new module structure will be created
|
||||
* @param tb 1 to include trimbits, 0 to exclude (used for eiger)
|
||||
* @returns the pointer to myMod or NULL if reading the file failed
|
||||
*/
|
||||
|
||||
sls_detector_module* readSettingsFile(std::string fname,
|
||||
int& iodelay, int& tau,
|
||||
sls_detector_module* myMod=NULL, int tb=1);
|
||||
|
||||
/**
|
||||
* writes a trim/settings file
|
||||
* @param fname name of the file to be written
|
||||
* @param mod module structure which has to be written to file
|
||||
* @param iodelay io delay (detector specific)
|
||||
* @param tau tau (detector specific)
|
||||
* @returns OK or FAIL if the file could not be written
|
||||
*/
|
||||
int writeSettingsFile(std::string fname,
|
||||
sls_detector_module mod, int iodelay, int tau);
|
||||
|
||||
|
||||
/** slsDetector Id or position in the detectors list */
|
||||
int detId;
|
||||
|
||||
@ -2462,12 +2022,6 @@ private:
|
||||
/** socket for data acquisition */
|
||||
MySocketTCP *dataSocket;
|
||||
|
||||
/** pointer to flat field coefficients in shared memory */
|
||||
double *ffcoefficients;
|
||||
|
||||
/** pointer to flat field coefficient errors in shared memory */
|
||||
double *fferrors;
|
||||
|
||||
/** pointer to detector module structures in shared memory */
|
||||
sls_detector_module *detectorModules;
|
||||
|
||||
|
@ -84,114 +84,6 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
std::string getDetectorDeveloper(){return std::string("PSI");};
|
||||
// protected:
|
||||
|
||||
/**
|
||||
set angular conversion
|
||||
\param fname file with angular conversion constants ("" disable)
|
||||
\returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
virtual int setAngularConversionFile(std::string fname="")=0;
|
||||
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
returns the angular conversion file
|
||||
*/
|
||||
virtual std::string getAngularConversionFile()=0;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
set action
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, MAX_ACTIONS}
|
||||
\param fname for script ("" disable)
|
||||
\returns 0 if action disabled, >0 otherwise
|
||||
*/
|
||||
virtual int setActionScript(int iaction, std::string fname="")=0;
|
||||
|
||||
/**
|
||||
set action
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, MAX_ACTIONS}
|
||||
\param par for script ("" disable)
|
||||
\returns 0 if action disabled, >0 otherwise
|
||||
*/
|
||||
virtual int setActionParameter(int iaction, std::string par="")=0;
|
||||
|
||||
/**
|
||||
returns action script
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action script
|
||||
*/
|
||||
virtual std::string getActionScript(int iaction)=0;
|
||||
|
||||
/**
|
||||
returns action parameter
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action parameter
|
||||
*/
|
||||
virtual std::string getActionParameter(int iaction)=0;
|
||||
|
||||
/**
|
||||
set scan script
|
||||
\param index is the scan index (0 or 1)
|
||||
\param script fname for script ("" disable, "none" disables and overwrites current, "threshold" makes threshold scan, "trimbits" make trimbits scan, "energy" makes energy scan)
|
||||
\returns 0 if scan disabled, >0 otherwise
|
||||
*/
|
||||
virtual int setScanScript(int index, std::string script="")=0;
|
||||
|
||||
/**
|
||||
set scan script parameter
|
||||
\param index is the scan index (0 or 1)
|
||||
\param spar parameter to be passed to the scan script with syntax par=spar
|
||||
\returns 0 if scan disabled, >0 otherwise
|
||||
*/
|
||||
virtual int setScanParameter(int index, std::string spar="")=0;
|
||||
|
||||
|
||||
/** set scan precision
|
||||
\param index is the scan index (0 or 1)
|
||||
\param precision number of decimals to use for the scan variable in the file name
|
||||
\returns 0 if scan disabled, >0 otherwise */
|
||||
virtual int setScanPrecision(int index, int precision=-1)=0;
|
||||
|
||||
/**
|
||||
set scan steps (passed to the scan script as var=step)
|
||||
\param index is the scan index (0 or 1)
|
||||
\param nvalues is the number of steps
|
||||
\param values array of steps
|
||||
\returns 0 if scan disabled, >0 otherwise*/
|
||||
|
||||
virtual int setScanSteps(int index, int nvalues=-1, double *values=NULL)=0;
|
||||
|
||||
/**
|
||||
get scan script
|
||||
\param index is the scan index (0 or 1)
|
||||
\returns "none" if disables, "threshold" threshold scan, "trimbits" trimbits scan, "energy" energy scan or scan script name
|
||||
*/
|
||||
virtual std::string getScanScript(int index)=0;
|
||||
|
||||
/**
|
||||
get scan script
|
||||
\param index is the scan index (0 or 1)
|
||||
\returns scan script parameter
|
||||
*/
|
||||
virtual std::string getScanParameter(int index)=0;
|
||||
|
||||
/**
|
||||
get scan precision
|
||||
\param index is the scan index (0 or 1)
|
||||
\returns precision i.e. number of decimals to use for the scan variable in the file name
|
||||
*/
|
||||
virtual int getScanPrecision(int index)=0;
|
||||
|
||||
/**
|
||||
get scan steps
|
||||
\param index is the scan index (0 or 1)
|
||||
\param values pointer to array of values (must be allocated in advance)
|
||||
\returns number of steps
|
||||
*/
|
||||
virtual int getScanSteps(int index, double *values=NULL)=0;
|
||||
|
||||
|
||||
/**
|
||||
Writes the configuration file -- will contain all the informations needed for the configuration (e.g. for a PSI detector caldir, settingsdir, angconv, badchannels etc.)
|
||||
\param fname file name
|
||||
@ -208,26 +100,6 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
*/
|
||||
virtual int loadImageToDetector(imageType index,std::string const fname)=0;
|
||||
|
||||
/**
|
||||
\returns number of positions
|
||||
*/
|
||||
virtual int getNumberOfPositions()=0;// {return 0;};
|
||||
|
||||
/**
|
||||
\returns action mask
|
||||
*/
|
||||
virtual int getActionMask()=0;// {return 0;};
|
||||
/**
|
||||
\param index scan level index
|
||||
\returns current scan variable
|
||||
*/
|
||||
virtual double getCurrentScanVariable(int index)=0;// {return 0;};
|
||||
|
||||
/**
|
||||
\returns current position index
|
||||
*/
|
||||
virtual int getCurrentPositionIndex()=0;// {return 0;};
|
||||
|
||||
/**
|
||||
\returns total number of channels
|
||||
*/
|
||||
@ -238,28 +110,15 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
*/
|
||||
virtual int getTotalNumberOfChannels(dimension d)=0;
|
||||
|
||||
/** generates file name without extension */
|
||||
virtual std::string createFileName()=0;
|
||||
|
||||
|
||||
virtual void incrementProgress()=0;
|
||||
virtual void setCurrentProgress(int i=0)=0;
|
||||
virtual double getCurrentProgress()=0;
|
||||
virtual void incrementFileIndex()=0;
|
||||
virtual int setTotalProgress()=0;
|
||||
|
||||
|
||||
virtual double* decodeData(int *datain, int &nn, double *fdata=NULL)=0;
|
||||
|
||||
|
||||
virtual std::string getCurrentFileName()=0;
|
||||
|
||||
|
||||
virtual int getFileIndexFromFileName(std::string fname)=0;
|
||||
|
||||
virtual int getIndicesFromFileName(std::string fname,int &index)=0;
|
||||
|
||||
virtual double *convertAngles()=0;
|
||||
/**
|
||||
set rate correction
|
||||
\param t dead time in ns - if 0 disable correction, if >0 set dead time to t, if <0 set deadtime to default dead time for current settings
|
||||
@ -280,32 +139,12 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
*/
|
||||
virtual int getRateCorrection()=0;
|
||||
|
||||
virtual int setFlatFieldCorrection(std::string fname="")=0;
|
||||
|
||||
int setFlatFieldCorrectionFile(std::string fname=""){return setFlatFieldCorrection(fname);};
|
||||
|
||||
/**
|
||||
set/get dynamic range
|
||||
\param i dynamic range (-1 get)
|
||||
\returns current dynamic range
|
||||
*/
|
||||
virtual int setDynamicRange(int i=-1)=0;
|
||||
// int setBitDepth(int i=-1){return setDynamicRange(i);};
|
||||
|
||||
/**
|
||||
set/get the size of the detector
|
||||
\param i number of modules
|
||||
\param d dimension
|
||||
\returns current number of modules in direction d
|
||||
*/
|
||||
virtual int setNumberOfModules(int i=-1, dimension d=X)=0;
|
||||
|
||||
// int setDetectorSize(int x0=-1, int y0=-1, int nx=-1, int ny=-1){return setNumberOfModules(nx/getChansPerMod(0),X);};
|
||||
|
||||
// int getDetectorSize(int &x0, int &y0, int &nx, int &ny){x0=0; nx=setNumberOfModules(-1,X)*getChansPerMod(0); return nx;};
|
||||
|
||||
virtual int getMaxNumberOfModules(dimension d=X)=0; //
|
||||
// int getMaximumDetectorSize(int &nx, int &ny){nx=getMaxNumberOfModules(X)*getChansPerMod(0); ny=1; return nx;};
|
||||
|
||||
|
||||
/** Locks/Unlocks the connection to the server
|
||||
@ -329,12 +168,6 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
|
||||
int startMeasurement(){acquire(0); return OK;};
|
||||
|
||||
/**
|
||||
asks and receives a data frame from the detector, writes it to disk and processes the data
|
||||
\returns pointer to the data or NULL (unused!!!).
|
||||
*/
|
||||
virtual int* readFrame()=0;
|
||||
|
||||
|
||||
/**
|
||||
get detector ids/versions for module=0
|
||||
@ -343,8 +176,6 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
\returns id
|
||||
*/
|
||||
virtual int64_t getId(idMode mode, int imod=0)=0;
|
||||
int64_t getModuleFirmwareVersion(){return getId(MODULE_FIRMWARE_VERSION,-1);};
|
||||
int64_t getModuleSerialNumber(int imod=-1){return getId(MODULE_SERIAL_NUMBER,imod);};
|
||||
int64_t getDetectorFirmwareVersion(){return getId(DETECTOR_FIRMWARE_VERSION,-1);};
|
||||
int64_t getDetectorSerialNumber(){return getId(DETECTOR_SERIAL_NUMBER,-1);};
|
||||
int64_t getDetectorSoftwareVersion(){return getId(DETECTOR_SOFTWARE_VERSION,-1);};
|
||||
@ -361,14 +192,13 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
*/
|
||||
virtual int stopAcquisition()=0;
|
||||
int stopMeasurement(){return stopAcquisition();};
|
||||
virtual int getChansPerMod(int imod=0)=0;
|
||||
|
||||
/**
|
||||
set/get timer value
|
||||
\param index timer index
|
||||
\param t time in ns or number of...(e.g. frames, gates, probes)
|
||||
\param t time in ns or number of...(e.g. frames, gates)
|
||||
\param imod module number
|
||||
\returns timer set value in ns or number of...(e.g. frames, gates, probes)
|
||||
\returns timer set value in ns or number of...(e.g. frames, gates)
|
||||
*/
|
||||
virtual int64_t setTimer(timerIndex index, int64_t t=-1, int imod = -1)=0;
|
||||
int64_t setExposureTime(int64_t t=-1, int imod = -1){return setTimer(ACQUISITION_TIME,t,imod);};
|
||||
@ -457,7 +287,6 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
virtual dacs_t setDAC(dacs_t val, dacIndex index , int mV, int imod=-1)=0;
|
||||
int setDACValue(int val, int index , int imod=-1) { return (int)setDAC((dacs_t)val,(dacIndex)index,0,imod);};
|
||||
|
||||
|
||||
/**
|
||||
gets ADC value
|
||||
\param index ADC index
|
||||
@ -466,7 +295,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
*/
|
||||
virtual dacs_t getADC(dacIndex index, int imod=-1)=0;
|
||||
int getADCValue(int index, int imod=-1){return (int)getADC((dacIndex)index, imod);};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
@short get run status
|
||||
\returns status mask
|
||||
@ -557,6 +386,12 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
*/
|
||||
virtual int setFileIndex(int i)=0;
|
||||
|
||||
/**
|
||||
@short increments file index
|
||||
\returns the file index
|
||||
*/
|
||||
virtual int incrementFileIndex()=0;
|
||||
|
||||
|
||||
//receiver
|
||||
/**
|
||||
@ -627,76 +462,33 @@ virtual int enableDataStreamingFromReceiver(int enable=-1)=0;
|
||||
*/
|
||||
virtual int setReadReceiverFrequency(int freq=-1)=0;
|
||||
|
||||
/** Sets the receiver to start any readout remaining in the fifo and
|
||||
* change status to transmitting.
|
||||
* The status changes to run_finished when fifo is empty
|
||||
*/
|
||||
virtual runStatus startReceiverReadout()=0;
|
||||
|
||||
|
||||
/** returns detector type std::string from detector type index
|
||||
\param t std::string can be Mythen, Pilatus, Eiger, Gotthard, Agipd, Unknown
|
||||
\returns MYTHEN, PILATUS, EIGER, GOTTHARD, AGIPD, MÖNCH, GENERIC
|
||||
\param t std::string can be Eiger, Gotthard, Jungfrau, Unknown
|
||||
\returns EIGER, GOTTHARD, JUNGFRAU, GENERIC
|
||||
*/
|
||||
static std::string getDetectorType(detectorType t){\
|
||||
switch (t) {\
|
||||
case MYTHEN: return std::string("Mythen"); \
|
||||
case PILATUS: return std::string("Pilatus"); \
|
||||
case EIGER: return std::string("Eiger"); \
|
||||
case GOTTHARD: return std::string("Gotthard"); \
|
||||
case AGIPD: return std::string("Agipd"); \
|
||||
case MOENCH: return std::string("Moench"); \
|
||||
case JUNGFRAU: return std::string("Jungfrau"); \
|
||||
case JUNGFRAUCTB: return std::string("JungfrauCTB"); \
|
||||
case PROPIX: return std::string("Propix"); \
|
||||
default: return std::string("Unknown"); \
|
||||
}};
|
||||
|
||||
/** returns detector type index from detector type std::string
|
||||
\param type can be MYTHEN, PILATUS, EIGER, GOTTHARD, AGIPD, GENERIC
|
||||
\returns Mythen, Pilatus, Eiger, Gotthard, Agipd, Mönch, Unknown
|
||||
\param type can be EIGER, GOTTHARD, JUNGFRAU, GENERIC
|
||||
\returns Eiger, Gotthard, Jungfrau, Unknown
|
||||
*/
|
||||
static detectorType getDetectorType(std::string const type){\
|
||||
if (type=="Mythen") return MYTHEN;\
|
||||
if (type=="Pilatus") return PILATUS; \
|
||||
if (type=="Eiger") return EIGER; \
|
||||
if (type=="Gotthard") return GOTTHARD; \
|
||||
if (type=="Agipd") return AGIPD; \
|
||||
if (type=="Moench") return MOENCH; \
|
||||
if (type=="Jungfrau") return JUNGFRAU; \
|
||||
if (type=="JungfrauCTB") return JUNGFRAUCTB; \
|
||||
if (type=="Propix") return PROPIX; \
|
||||
return GENERIC;};
|
||||
|
||||
|
||||
|
||||
/** returns synchronization type index from std::string
|
||||
\param type can be none, gating, trigger, complementary
|
||||
\returns ONE, MASTER_GATES, MASTER_TRIGGERS, SLAVE_STARTS_WHEN_MASTER_STOPS
|
||||
*/
|
||||
static synchronizationMode getSyncType(std::string const type){\
|
||||
if (type=="none") return NO_SYNCHRONIZATION;\
|
||||
if (type=="gating") return MASTER_GATES;\
|
||||
if (type=="trigger") return MASTER_TRIGGERS; \
|
||||
if (type=="complementary") return SLAVE_STARTS_WHEN_MASTER_STOPS; \
|
||||
return GET_SYNCHRONIZATION_MODE; \
|
||||
};
|
||||
|
||||
/** returns synchronization type std::string from index
|
||||
\param s can be NONE, MASTER_GATES, MASTER_TRIGGERS, SLAVE_STARTS_WHEN_MASTER_STOPS
|
||||
\returns none, gating, trigger, complementary, unknown
|
||||
*/
|
||||
static std::string getSyncType(synchronizationMode s ){\
|
||||
switch(s) { \
|
||||
case NO_SYNCHRONIZATION: return std::string("none"); \
|
||||
case MASTER_GATES: return std::string("gating"); \
|
||||
case MASTER_TRIGGERS: return std::string("trigger"); \
|
||||
case SLAVE_STARTS_WHEN_MASTER_STOPS: return std::string("complementary"); \
|
||||
default: return std::string("unknown"); \
|
||||
}};
|
||||
|
||||
|
||||
|
||||
/** returns std::string from external signal type index
|
||||
\param f can be SIGNAL_OFF, GATE_IN_ACTIVE_HIGH, GATE_IN_ACTIVE_LOW, TRIGGER_IN_RISING_EDGE, TRIGGER_IN_FALLING_EDGE, RO_TRIGGER_IN_RISING_EDGE, RO_TRIGGER_IN_FALLING_EDGE, GATE_OUT_ACTIVE_HIGH, GATE_OUT_ACTIVE_LOW, =TRIGGER_OUT_RISING_EDGE, TRIGGER_OUT_FALLING_EDGE, RO_TRIGGER_OUT_RISING_EDGE, RO_TRIGGER_OUT_FALLING_EDGE, OUTPUT_LOW, OUTPUT_HIGH, MASTER_SLAVE_SYNCHRONIZATION, GET_EXTERNAL_SIGNAL_FLAG
|
||||
\returns std::string off, gate_in_active_high, gate_in_active_low, trigger_in_rising_edge, trigger_in_falling_edge, ro_trigger_in_rising_edge, ro_trigger_in_falling_edge, gate_out_active_high, gate_out_active_low, trigger_out_rising_edge, trigger_out_falling_edge, ro_trigger_out_rising_edge, ro_trigger_out_falling_edge, gnd, vcc, sync, unknown
|
||||
@ -862,8 +654,8 @@ virtual int enableDataStreamingFromReceiver(int enable=-1)=0;
|
||||
}};
|
||||
|
||||
/** returns std::string from timer index
|
||||
\param s can be FRAME_NUMBER,ACQUISITION_TIME,FRAME_PERIOD, DELAY_AFTER_TRIGGER,GATES_NUMBER,PROBES_NUMBER, CYCLES_NUMBER, ACTUAL_TIME,MEASUREMENT_TIME, PROGRESS,MEASUREMENTS_NUMBER,FRAMES_FROM_START,FRAMES_FROM_START_PG,SAMPLES_JCTB,SUBFRAME_ACQUISITION_TIME,STORAGE_CELL_NUMBER, SUBFRAME_DEADTIME
|
||||
\returns std::string frame_number,acquisition_time,frame_period, delay_after_trigger,gates_number,probes_number, cycles_number, actual_time,measurement_time, progress,measurements_number,frames_from_start,frames_from_start_pg,samples_jctb,subframe_acquisition_time,storage_cell_number, SUBFRAME_DEADTIME
|
||||
\param s can be FRAME_NUMBER,ACQUISITION_TIME,FRAME_PERIOD, DELAY_AFTER_TRIGGER,GATES_NUMBER, CYCLES_NUMBER, ACTUAL_TIME,MEASUREMENT_TIME, PROGRESS,MEASUREMENTS_NUMBER,FRAMES_FROM_START,FRAMES_FROM_START_PG,SAMPLES_JCTB,SUBFRAME_ACQUISITION_TIME,STORAGE_CELL_NUMBER, SUBFRAME_DEADTIME
|
||||
\returns std::string frame_number,acquisition_time,frame_period, delay_after_trigger,gates_number, cycles_number, actual_time,measurement_time, progress,measurements_number,frames_from_start,frames_from_start_pg,samples_jctb,subframe_acquisition_time,storage_cell_number, SUBFRAME_DEADTIME
|
||||
*/
|
||||
static std::string getTimerType(timerIndex t){ \
|
||||
switch (t) { \
|
||||
@ -872,7 +664,6 @@ virtual int enableDataStreamingFromReceiver(int enable=-1)=0;
|
||||
case FRAME_PERIOD: return std::string("frame_period"); \
|
||||
case DELAY_AFTER_TRIGGER: return std::string("delay_after_trigger"); \
|
||||
case GATES_NUMBER: return std::string("gates_number"); \
|
||||
case PROBES_NUMBER: return std::string("probes_number"); \
|
||||
case CYCLES_NUMBER: return std::string("cycles_number"); \
|
||||
case ACTUAL_TIME: return std::string("actual_time"); \
|
||||
case MEASUREMENT_TIME: return std::string("measurement_time"); \
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -36,14 +36,11 @@ class slsDetectorCommand : public virtual slsDetectorDefs {
|
||||
std::string helpLine(int narg, char *args[], int action=HELP_ACTION);
|
||||
static std::string helpAcquire(int narg, char *args[], int action);
|
||||
static std::string helpData(int narg, char *args[], int action);
|
||||
static std::string helpFrame(int narg, char *args[], int action);
|
||||
static std::string helpStatus(int narg, char *args[], int action);
|
||||
static std::string helpDataStream(int narg, char *args[], int action);
|
||||
static std::string helpFree(int narg, char *args[], int action);
|
||||
static std::string helpHostname(int narg, char *args[], int action);
|
||||
static std::string helpUser(int narg, char *args[], int action);
|
||||
static std::string helpMaster(int narg, char *args[], int action);
|
||||
static std::string helpSync(int narg, char *args[], int action);
|
||||
static std::string helpExitServer(int narg, char *args[], int action);
|
||||
static std::string helpSettingsDir(int narg, char *args[], int action);
|
||||
static std::string helpCalDir(int narg, char *args[], int action);
|
||||
@ -51,14 +48,8 @@ class slsDetectorCommand : public virtual slsDetectorDefs {
|
||||
static std::string helpOutDir(int narg, char *args[], int action);
|
||||
static std::string helpFileName(int narg, char *args[], int action);
|
||||
static std::string helpFileIndex(int narg, char *args[], int action);
|
||||
static std::string helpFlatField(int narg, char *args[], int action);
|
||||
static std::string helpRateCorr(int narg, char *args[], int action);
|
||||
static std::string helpBadChannels(int narg, char *args[], int action);
|
||||
static std::string helpAngConv(int narg, char *args[], int action);
|
||||
static std::string helpThreaded(int narg, char *args[], int action);
|
||||
static std::string helpPositions(int narg, char *args[], int action);
|
||||
static std::string helpScripts(int narg, char *args[], int action);
|
||||
static std::string helpScans(int narg, char *args[], int action);
|
||||
static std::string helpNetworkParameter(int narg, char *args[], int action);
|
||||
static std::string helpPort(int narg, char *args[], int action);
|
||||
static std::string helpLock(int narg, char *args[], int action);
|
||||
@ -107,14 +98,11 @@ class slsDetectorCommand : public virtual slsDetectorDefs {
|
||||
std::string cmdUnknown(int narg, char *args[], int action);
|
||||
std::string cmdAcquire(int narg, char *args[], int action);
|
||||
std::string cmdData(int narg, char *args[], int action);
|
||||
std::string cmdFrame(int narg, char *args[], int action);
|
||||
std::string cmdStatus(int narg, char *args[], int action);
|
||||
std::string cmdDataStream(int narg, char *args[], int action);
|
||||
std::string cmdFree(int narg, char *args[], int action);
|
||||
std::string cmdHostname(int narg, char *args[], int action);
|
||||
std::string cmdUser(int narg, char *args[], int action);
|
||||
std::string cmdMaster(int narg, char *args[], int action);
|
||||
std::string cmdSync(int narg, char *args[], int action);
|
||||
std::string cmdHelp(int narg, char *args[], int action);
|
||||
std::string cmdExitServer(int narg, char *args[], int action);
|
||||
std::string cmdSettingsDir(int narg, char *args[], int action);
|
||||
@ -123,14 +111,8 @@ class slsDetectorCommand : public virtual slsDetectorDefs {
|
||||
std::string cmdOutDir(int narg, char *args[], int action);
|
||||
std::string cmdFileName(int narg, char *args[], int action);
|
||||
std::string cmdFileIndex(int narg, char *args[], int action);
|
||||
std::string cmdFlatField(int narg, char *args[], int action);
|
||||
std::string cmdRateCorr(int narg, char *args[], int action);
|
||||
std::string cmdBadChannels(int narg, char *args[], int action);
|
||||
std::string cmdAngConv(int narg, char *args[], int action);
|
||||
std::string cmdThreaded(int narg, char *args[], int action);
|
||||
std::string cmdPositions(int narg, char *args[], int action);
|
||||
std::string cmdScripts(int narg, char *args[], int action);
|
||||
std::string cmdScans(int narg, char *args[], int action);
|
||||
std::string cmdNetworkParameter(int narg, char *args[], int action);
|
||||
std::string cmdPort(int narg, char *args[], int action);
|
||||
std::string cmdLock(int narg, char *args[], int action);
|
||||
|
@ -72,55 +72,14 @@ int slsDetectorUsers::setFileIndex(int i){
|
||||
return (int)myDetector->setFileIndex(i);
|
||||
}
|
||||
|
||||
string slsDetectorUsers::getFlatFieldCorrectionDir(){
|
||||
return myDetector->getFlatFieldCorrectionDir();
|
||||
}
|
||||
|
||||
string slsDetectorUsers::setFlatFieldCorrectionDir(string dir){
|
||||
return myDetector->setFlatFieldCorrectionDir(dir);
|
||||
}
|
||||
|
||||
string slsDetectorUsers::getFlatFieldCorrectionFile(){
|
||||
return myDetector->getFlatFieldCorrectionFile();
|
||||
}
|
||||
|
||||
int slsDetectorUsers::setFlatFieldCorrectionFile(string fname){
|
||||
return myDetector->setFlatFieldCorrectionFile(fname);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::enableFlatFieldCorrection(int i){
|
||||
return myDetector->enableFlatFieldCorrection(i);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::enableCountRateCorrection(int i){
|
||||
return myDetector->enableCountRateCorrection(i);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::enablePixelMaskCorrection(int i){
|
||||
return myDetector->enablePixelMaskCorrection(i);
|
||||
}
|
||||
int slsDetectorUsers::enableAngularConversion(int i){
|
||||
return myDetector->enableAngularConversion(i);
|
||||
}
|
||||
int slsDetectorUsers::enableWriteToFile(int i){
|
||||
return myDetector->enableWriteToFile(i);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::setPositions(int nPos, double *pos){
|
||||
return myDetector->setPositions(nPos, pos);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::getPositions(double *pos){
|
||||
return myDetector->getPositions(pos);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::setDetectorSize(int x0, int y0, int nx, int ny){
|
||||
if(myDetector->getTotalNumberOfChannels(slsDetectorDefs::Y)>1)
|
||||
return 1;
|
||||
int nmod=nx/(myDetector->getChansPerMod(0));
|
||||
cout << myDetector->getChansPerMod(0) << " " << nx << " " << nmod << endl;
|
||||
return myDetector->setNumberOfModules(nmod)*myDetector->getChansPerMod(0);}
|
||||
|
||||
int slsDetectorUsers::getDetectorSize(int &x0, int &y0, int &nx, int &ny){
|
||||
y0=0;
|
||||
x0=0;
|
||||
@ -226,19 +185,6 @@ string slsDetectorUsers::getDetectorType(){
|
||||
return myDetector->sgetDetectorsType();
|
||||
}
|
||||
|
||||
void slsDetectorUsers::initDataset(int refresh){
|
||||
myDetector->initDataset(refresh);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::addFrame(double *data, double pos, double i0, double t, string fname, double var){
|
||||
myDetector->addFrame(data,pos,i0,t,fname,var);
|
||||
}
|
||||
|
||||
|
||||
void slsDetectorUsers::finalizeDataset(double *a, double *v, double *e, int &np){
|
||||
myDetector->finalizeDataset(a, v, e, np);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::setReceiverMode(int n){
|
||||
return myDetector->setReadReceiverFrequency(n);
|
||||
}
|
||||
@ -267,14 +213,6 @@ string slsDetectorUsers::setClientDataStreamingInIP(string ip){
|
||||
return myDetector->setClientDataStreamingInIP(ip);
|
||||
}
|
||||
|
||||
int64_t slsDetectorUsers::getModuleFirmwareVersion(){
|
||||
return myDetector->getModuleFirmwareVersion();
|
||||
}
|
||||
|
||||
int64_t slsDetectorUsers::getModuleSerialNumber(int imod){
|
||||
return myDetector->getModuleSerialNumber(imod);
|
||||
}
|
||||
|
||||
int64_t slsDetectorUsers::getDetectorFirmwareVersion(){
|
||||
return myDetector->getDetectorFirmwareVersion();
|
||||
}
|
||||
@ -337,39 +275,10 @@ void slsDetectorUsers::registerDataCallback(int( *userCallback)(detectorData*, i
|
||||
myDetector->registerDataCallback(userCallback,pArg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerRawDataCallback(int( *userCallback)(double*, int, void*), void *pArg){
|
||||
myDetector->registerRawDataCallback(userCallback,pArg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerAcquisitionFinishedCallback(int( *func)(double,int, void*), void *pArg){
|
||||
myDetector->registerAcquisitionFinishedCallback(func,pArg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerGetPositionCallback( double (*func)(void*),void *arg){
|
||||
myDetector->registerGetPositionCallback(func,arg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerConnectChannelsCallback( int (*func)(void*),void *arg){
|
||||
myDetector->registerConnectChannelsCallback(func,arg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerDisconnectChannelsCallback( int (*func)(void*),void *arg){
|
||||
myDetector->registerDisconnectChannelsCallback(func,arg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerGoToPositionCallback( int (*func)(double,void*),void *arg){
|
||||
myDetector->registerGoToPositionCallback(func,arg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerGoToPositionNoWaitCallback( int (*func)(double,void*),void *arg){
|
||||
myDetector->registerGoToPositionNoWaitCallback(func,arg);
|
||||
}
|
||||
|
||||
void slsDetectorUsers::registerGetI0Callback( double (*func)(int,void*),void *arg){
|
||||
myDetector->registerGetI0Callback(func,arg);
|
||||
}
|
||||
|
||||
|
||||
string slsDetectorUsers::putCommand(int narg, char *args[], int pos){
|
||||
if(narg < 2)
|
||||
return string("Error: Insufficient Parameters");
|
||||
@ -455,8 +364,8 @@ int slsDetectorUsers::setTenGigabitEthernet(int i) {
|
||||
return myDetector->enableTenGigabitEthernet(i);
|
||||
}
|
||||
|
||||
int slsDetectorUsers::getNMods() {
|
||||
return myDetector->getNMods();
|
||||
int slsDetectorUsers::getNumberOfDetectors() {
|
||||
return myDetector->getNumberOfDetectors();
|
||||
}
|
||||
|
||||
double slsDetectorUsers::setSubFrameExposureTime(double t, bool inseconds, int imod){
|
||||
|
@ -62,7 +62,6 @@ You can find examples of how this classes can be instatiated in mainClient.cpp
|
||||
\authors <a href="mailto:anna.bergamaschi@psi.ch">Anna Bergamaschi</a>, <a href="mailto:dhanya.thattil@psi.ch">Dhanya Thattil</a>
|
||||
@version 3.0
|
||||
<H2>Currently supported detectors</H2>
|
||||
\li MYTHEN
|
||||
\li GOTTHARD controls
|
||||
\li GOTTHARD data receiver
|
||||
\li EIGER
|
||||
@ -171,41 +170,6 @@ class slsDetectorUsers
|
||||
*/
|
||||
int setFileIndex(int i);
|
||||
|
||||
/**
|
||||
@short get flat field corrections file directory
|
||||
\returns flat field correction file directory
|
||||
*/
|
||||
std::string getFlatFieldCorrectionDir();
|
||||
|
||||
/**
|
||||
@short set flat field corrections file directory
|
||||
\param dir flat field correction file directory
|
||||
\returns flat field correction file directory
|
||||
*/
|
||||
std::string setFlatFieldCorrectionDir(std::string dir);
|
||||
|
||||
/**
|
||||
@short get flat field corrections file name
|
||||
\returns flat field correction file name
|
||||
*/
|
||||
std::string getFlatFieldCorrectionFile();
|
||||
|
||||
/**
|
||||
@short set flat field correction file
|
||||
\param fname name of the flat field file (or "" if disable)
|
||||
\returns 0 if disable (or file could not be read), >0 otherwise
|
||||
*/
|
||||
int setFlatFieldCorrectionFile(std::string fname="");
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@short enable/disable flat field corrections (without changing file name)
|
||||
\param i 0 disables, 1 enables, -1 gets
|
||||
\returns 0 if ff corrections disabled, 1 if enabled
|
||||
*/
|
||||
int enableFlatFieldCorrection(int i=-1);
|
||||
|
||||
/**
|
||||
@short enable/disable count rate corrections
|
||||
\param i 0 disables, 1 enables with default values, -1 gets
|
||||
@ -213,49 +177,10 @@ class slsDetectorUsers
|
||||
*/
|
||||
int enableCountRateCorrection(int i=-1);
|
||||
|
||||
/**
|
||||
@short enable/disable bad channel corrections
|
||||
\param i 0 disables, 1 enables, -1 gets
|
||||
\returns 0 if bad channels corrections disabled, 1 if enabled
|
||||
*/
|
||||
int enablePixelMaskCorrection(int i=-1);
|
||||
|
||||
/**
|
||||
@short enable/disable angular conversion
|
||||
\param i 0 disables, 1 enables, -1 gets
|
||||
\returns 0 if angular conversion disabled, 1 if enabled
|
||||
*/
|
||||
int enableAngularConversion(int i=-1);
|
||||
|
||||
/**Enable write file function included*/
|
||||
|
||||
int enableWriteToFile(int i=-1);
|
||||
|
||||
/**
|
||||
@short set positions for the acquisition
|
||||
\param nPos number of positions
|
||||
\param pos array with the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
int setPositions(int nPos, double *pos);
|
||||
|
||||
/**
|
||||
@short get positions for the acquisition
|
||||
\param pos array which will contain the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
int getPositions(double *pos=NULL);
|
||||
|
||||
/**
|
||||
@short sets the detector size
|
||||
\param x0 horizontal position origin in channel number (-1 unchanged)
|
||||
\param y0 vertical position origin in channel number (-1 unchanged)
|
||||
\param nx number of channels in horiziontal (-1 unchanged)
|
||||
\param ny number of channels in vertical (-1 unchanged)
|
||||
\returns OK/FAIL
|
||||
*/
|
||||
int setDetectorSize(int x0=-1, int y0=-1, int nx=-1, int ny=-1);
|
||||
|
||||
|
||||
/**
|
||||
@short gets detector size
|
||||
@ -419,43 +344,6 @@ class slsDetectorUsers
|
||||
|
||||
void registerDataCallback(int( *userCallback)(detectorData* d, int f, int s, void*), void *pArg);
|
||||
|
||||
/**
|
||||
@short register callback for accessing raw data - if the rawDataCallback is registered, no filewriting/postprocessing will be carried on automatically by the software - the raw data are deleted by the software
|
||||
\param userCallback function for postprocessing and saving the data - p is the pointer to the data, n is the number of channels
|
||||
\param pArg argument
|
||||
*/
|
||||
|
||||
void registerRawDataCallback(int( *userCallback)(double* p, int n, void*), void *pArg);
|
||||
|
||||
/**
|
||||
@short function to initalize a set of measurements (reset binning if angular conversion, reset summing otherwise) - can be overcome by the user's functions thanks to the virtual property
|
||||
\param refresh if 1, all parameters like ffcoefficients, badchannels, ratecorrections etc. are reset (should be called at least onece with this option), if 0 simply reset merging/ summation
|
||||
*/
|
||||
|
||||
virtual void initDataset(int refresh);
|
||||
|
||||
|
||||
/**
|
||||
@short adds frame to merging/summation - can be overcome by the user's functions thanks to the virtual property
|
||||
\param data pointer to the raw data
|
||||
\param pos encoder position
|
||||
\param i0 beam monitor readout for intensity normalization (if 0 not performed)
|
||||
\param t exposure time in seconds, required only if rate corrections
|
||||
\param fname file name (unused since filewriting would be performed by the user)
|
||||
\param var optional parameter - unused.
|
||||
*/
|
||||
|
||||
virtual void addFrame(double *data, double pos, double i0, double t, std::string fname, double var);
|
||||
|
||||
/**
|
||||
@short finalizes the data set returning the array of angles, values and errors to be used as final data - can be overcome by the user's functions thanks to the virtual property
|
||||
\param a pointer to the array of angles - can be null if no angular coversion is required
|
||||
\param v pointer to the array of values
|
||||
\param e pointer to the array of errors
|
||||
\param np reference returning the number of points
|
||||
*/
|
||||
|
||||
virtual void finalizeDataset(double *a, double *v, double *e, int &np);
|
||||
|
||||
|
||||
/** Enable or disable streaming data from receiver (creates transmitting sockets)
|
||||
@ -503,19 +391,6 @@ class slsDetectorUsers
|
||||
*/
|
||||
std::string setClientDataStreamingInIP(std::string ip="");
|
||||
|
||||
/**
|
||||
get get Module Firmware Version
|
||||
\returns id
|
||||
*/
|
||||
int64_t getModuleFirmwareVersion();
|
||||
|
||||
/**
|
||||
get get Module Serial Number
|
||||
@param imod module number
|
||||
\returns id
|
||||
*/
|
||||
int64_t getModuleSerialNumber(int imod=-1);
|
||||
|
||||
/**
|
||||
get get Detector Firmware Version
|
||||
\returns id
|
||||
@ -599,44 +474,6 @@ class slsDetectorUsers
|
||||
*/
|
||||
void registerAcquisitionFinishedCallback(int( *func)(double,int, void*), void *pArg);
|
||||
|
||||
/**
|
||||
@short register calbback for reading detector position
|
||||
\param func function for reading the detector position
|
||||
\param arg argument
|
||||
*/
|
||||
|
||||
void registerGetPositionCallback( double (*func)(void*),void *arg);
|
||||
/**
|
||||
@short register callback for connecting to the epics channels
|
||||
\param func function for connecting to the epics channels
|
||||
\param arg argument
|
||||
*/
|
||||
void registerConnectChannelsCallback( int (*func)(void*),void *arg);
|
||||
/**
|
||||
@short register callback to disconnect the epics channels
|
||||
\param func function to disconnect the epics channels
|
||||
\param arg argument
|
||||
*/
|
||||
void registerDisconnectChannelsCallback( int (*func)(void*),void *arg);
|
||||
/**
|
||||
@short register callback for moving the detector
|
||||
\param func function for moving the detector
|
||||
\param arg argument
|
||||
*/
|
||||
void registerGoToPositionCallback( int (*func)(double,void*),void *arg);
|
||||
/**
|
||||
@short register callback for moving the detector without waiting
|
||||
\param func function for moving the detector
|
||||
\param arg argument
|
||||
*/
|
||||
void registerGoToPositionNoWaitCallback( int (*func)(double,void*),void *arg);
|
||||
/**
|
||||
@short register calbback reading to I0
|
||||
\param func function for reading the I0 (called with parameter 0 before the acquisition, 1 after and the return value used as I0)
|
||||
\param arg argument
|
||||
*/
|
||||
void registerGetI0Callback( double (*func)(int,void*),void *arg);
|
||||
|
||||
/**
|
||||
@short sets parameters in command interface http://www.psi.ch/detectors/UsersSupportEN/slsDetectorClientHowTo.pdf
|
||||
\param narg value to be set
|
||||
@ -775,10 +612,10 @@ class slsDetectorUsers
|
||||
int setTenGigabitEthernet(int i = -1);
|
||||
|
||||
/**
|
||||
* returns total number of detector modules
|
||||
* @returns the total number of detector modules
|
||||
* returns total number of detectors
|
||||
* @returns the total number of detectors
|
||||
*/
|
||||
int getNMods();
|
||||
int getNumberOfDetectors();
|
||||
|
||||
/**
|
||||
* Set sub frame exposure time (only for Eiger)
|
||||
|
@ -1,9 +1,7 @@
|
||||
#include "slsDetectorUtils.h"
|
||||
#include "usersFunctions.h"
|
||||
#include "slsDetectorCommand.h"
|
||||
#include "postProcessing.h"
|
||||
#include "enCalLogClass.h"
|
||||
#include "angCalLogClass.h"
|
||||
|
||||
|
||||
#include <cstdlib>
|
||||
#include <sys/ipc.h>
|
||||
@ -12,32 +10,26 @@
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
slsDetectorUtils::slsDetectorUtils() {
|
||||
|
||||
|
||||
slsDetectorUtils::slsDetectorUtils():
|
||||
stoppedFlag(0),
|
||||
timerValue(0),
|
||||
currentSettings(0),
|
||||
currentThresholdEV(0),
|
||||
totalProgress(0),
|
||||
progressIndex(0),
|
||||
acquisition_finished(NULL),
|
||||
measurement_finished(NULL),
|
||||
acqFinished_p(NULL),
|
||||
measFinished_p(NULL),
|
||||
progress_call(0),
|
||||
pProgressCallArg(0)
|
||||
{
|
||||
#ifdef VERBOSE
|
||||
cout << "setting callbacks" << endl;
|
||||
#endif
|
||||
acquisition_finished=NULL;
|
||||
acqFinished_p=NULL;
|
||||
measurement_finished=NULL;
|
||||
measFinished_p=NULL;
|
||||
progress_call=0;
|
||||
pProgressCallArg=0;
|
||||
registerGetPositionCallback(&defaultGetPosition, NULL);
|
||||
registerConnectChannelsCallback(&defaultConnectChannels,NULL);
|
||||
registerDisconnectChannelsCallback(&defaultDisconnectChannels,NULL);
|
||||
registerGoToPositionCallback(&defaultGoToPosition,NULL);
|
||||
registerGoToPositionNoWaitCallback(&defaultGoToPositionNoWait,NULL);
|
||||
registerGetI0Callback(&defaultGetI0,NULL);
|
||||
#ifdef VERBOSE
|
||||
|
||||
registerAcquisitionFinishedCallback(&dummyAcquisitionFinished,this);
|
||||
registerMeasurementFinishedCallback(&dummyMeasurementFinished,this);
|
||||
cout << "done " << endl;
|
||||
#endif
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -61,73 +53,16 @@ int slsDetectorUtils::acquire(int delflag){
|
||||
|
||||
|
||||
bool receiver = (setReceiverOnline()==ONLINE_FLAG);
|
||||
if(!receiver){
|
||||
setDetectorIndex(-1);
|
||||
}
|
||||
|
||||
int nc=setTimer(CYCLES_NUMBER,-1);
|
||||
int nf=setTimer(FRAME_NUMBER,-1);
|
||||
if (nc==0) nc=1;
|
||||
if (nf==0) nf=1;
|
||||
int multiframe = nc*nf;
|
||||
|
||||
progressIndex=0;
|
||||
*stoppedFlag=0;
|
||||
|
||||
angCalLogClass *aclog=NULL;
|
||||
enCalLogClass *eclog=NULL;
|
||||
int connectChannels=0;
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "Acquire function "<< delflag << endl;
|
||||
cout << "Stopped flag is "<< stoppedFlag << delflag << endl;
|
||||
#endif
|
||||
|
||||
void *status;
|
||||
if ((*correctionMask&(1<< ANGULAR_CONVERSION)) || (*correctionMask&(1<< I0_NORMALIZATION)) || getActionMode(angCalLog) || (getScanMode(0)==positionScan)|| (getScanMode(1)==positionScan)) {
|
||||
if (connectChannels==0)
|
||||
if (connect_channels) {
|
||||
connect_channels(CCarg);
|
||||
connectChannels=1;
|
||||
}
|
||||
}
|
||||
if (getActionMode(angCalLog)) {
|
||||
aclog=new angCalLogClass(this);
|
||||
}
|
||||
if (getActionMode(enCalLog)) {
|
||||
eclog=new enCalLogClass(this);
|
||||
|
||||
}
|
||||
|
||||
|
||||
setJoinThread(0);
|
||||
positionFinished(0);
|
||||
|
||||
|
||||
int nm=timerValue[MEASUREMENTS_NUMBER];
|
||||
if (nm<1)
|
||||
nm=1;
|
||||
|
||||
|
||||
int np=getNumberOfPositions();
|
||||
if (np<1)
|
||||
np=1;
|
||||
|
||||
|
||||
int ns0=1;
|
||||
if (*actionMask & (1 << MAX_ACTIONS)) {
|
||||
ns0=getScanSteps(0);
|
||||
if (ns0<1)
|
||||
ns0=1;
|
||||
}
|
||||
|
||||
int ns1=1;
|
||||
if (*actionMask & (1 << (MAX_ACTIONS+1))) {
|
||||
ns1=getScanSteps(1);
|
||||
if (ns1<1)
|
||||
ns1=1;
|
||||
}
|
||||
|
||||
// verify receiver is idle
|
||||
if(receiver){
|
||||
pthread_mutex_lock(&mg);
|
||||
@ -137,12 +72,10 @@ int slsDetectorUtils::acquire(int delflag){
|
||||
pthread_mutex_unlock(&mg);
|
||||
}
|
||||
|
||||
|
||||
// start processing thread
|
||||
if (*threadedProcessing)
|
||||
startThread(delflag);
|
||||
#ifdef VERBOSE
|
||||
cout << " starting thread " << endl;
|
||||
#endif
|
||||
|
||||
|
||||
//resets frames caught in receiver
|
||||
if(receiver){
|
||||
@ -152,102 +85,16 @@ int slsDetectorUtils::acquire(int delflag){
|
||||
pthread_mutex_unlock(&mg);
|
||||
}
|
||||
|
||||
|
||||
// loop through measurements
|
||||
for(int im=0;im<nm;++im) {
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << " starting measurement "<< im << " of " << nm << endl;
|
||||
#endif
|
||||
|
||||
// start script
|
||||
if (*stoppedFlag==0) {
|
||||
executeAction(startScript);
|
||||
}
|
||||
|
||||
for (int is0=0; is0<ns0; ++is0) {
|
||||
|
||||
if (*stoppedFlag==0) {
|
||||
executeScan(0,is0);
|
||||
} else
|
||||
if (*stoppedFlag)
|
||||
break;
|
||||
|
||||
|
||||
for (int is1=0; is1<ns1; ++is1) {
|
||||
|
||||
if (*stoppedFlag==0) {
|
||||
executeScan(1,is1);
|
||||
} else
|
||||
break;
|
||||
|
||||
if (*stoppedFlag==0) {
|
||||
executeAction(scriptBefore);
|
||||
} else
|
||||
break;
|
||||
|
||||
ResetPositionIndex();
|
||||
|
||||
for (int ip=0; ip<np; ++ip) {
|
||||
|
||||
if (*stoppedFlag==0) {
|
||||
if (getNumberOfPositions()>0) {
|
||||
moveDetector(detPositions[ip]);
|
||||
IncrementPositionIndex();
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "moving to position" << std::endl;
|
||||
#endif
|
||||
}
|
||||
} else
|
||||
break;
|
||||
|
||||
|
||||
pthread_mutex_lock(&mp);
|
||||
createFileName();
|
||||
pthread_mutex_unlock(&mp);
|
||||
|
||||
// script before
|
||||
if (*stoppedFlag==0) {
|
||||
executeAction(scriptBefore);
|
||||
} else
|
||||
break;
|
||||
|
||||
|
||||
// header before
|
||||
if (*stoppedFlag==0) {
|
||||
executeAction(headerBefore);
|
||||
|
||||
if (*correctionMask&(1<< ANGULAR_CONVERSION) || aclog){
|
||||
positionFinished(0);
|
||||
setCurrentPosition(getDetectorPosition());
|
||||
}
|
||||
|
||||
if (aclog)
|
||||
aclog->addStep(getCurrentPosition(), getCurrentFileName());
|
||||
|
||||
if (eclog)
|
||||
eclog->addStep(setDAC(-1,THRESHOLD,0), getCurrentFileName());
|
||||
|
||||
|
||||
if (*correctionMask&(1<< I0_NORMALIZATION)) {
|
||||
if (get_i0)
|
||||
get_i0(0, IOarg);
|
||||
}
|
||||
|
||||
setCurrentFrameIndex(0);
|
||||
|
||||
if (multiframe>1)
|
||||
setFrameIndex(0);
|
||||
else
|
||||
setFrameIndex(-1);
|
||||
|
||||
// file name and start receiver
|
||||
// start receiver
|
||||
if(receiver){
|
||||
pthread_mutex_lock(&mp);
|
||||
createFileName();
|
||||
pthread_mutex_unlock(&mp);
|
||||
//send receiver file name
|
||||
pthread_mutex_lock(&mg);
|
||||
setFileName(fileIO::getFileName());
|
||||
|
||||
pthread_mutex_lock(&mg);
|
||||
if(startReceiver() == FAIL) {
|
||||
cout << "Start receiver failed " << endl;
|
||||
stopReceiver();
|
||||
@ -255,62 +102,22 @@ int slsDetectorUtils::acquire(int delflag){
|
||||
pthread_mutex_unlock(&mg);
|
||||
break;
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
cout << "Receiver started " << endl;
|
||||
#endif
|
||||
pthread_mutex_unlock(&mg);
|
||||
|
||||
//let processing thread listen to these packets
|
||||
sem_post(&sem_newRTAcquisition);
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
cout << "Acquiring " << endl;
|
||||
#endif
|
||||
|
||||
// detector start
|
||||
startAndReadAll();
|
||||
#ifdef VERBOSE
|
||||
cout << "detector finished" << endl;
|
||||
cout << "returned! " << endl;
|
||||
#endif
|
||||
|
||||
|
||||
if (*correctionMask&(1<< I0_NORMALIZATION)) {
|
||||
if (get_i0)
|
||||
currentI0=get_i0(1,IOarg);
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
cout << "pos finished? " << endl;
|
||||
#endif
|
||||
|
||||
positionFinished(1);
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "done! " << endl;
|
||||
#endif
|
||||
|
||||
|
||||
if (*threadedProcessing==0){
|
||||
#ifdef VERBOSE
|
||||
cout << "start unthreaded process data " << endl;
|
||||
#endif
|
||||
processData(delflag);
|
||||
}
|
||||
|
||||
} else
|
||||
break;
|
||||
|
||||
while (dataQueueSize()) usleep(100000);
|
||||
|
||||
// close file
|
||||
if(!receiver){
|
||||
detectorType type = getDetectorsType();
|
||||
if ((type==GOTTHARD) || (type==MOENCH) || (type==JUNGFRAUCTB) ){
|
||||
if((*correctionMask)&(1<<WRITE_FILE))
|
||||
closeDataFile();
|
||||
}
|
||||
}
|
||||
|
||||
// stop receiver
|
||||
else{
|
||||
if(receiver){
|
||||
pthread_mutex_lock(&mg);
|
||||
if (stopReceiver() == FAIL) {
|
||||
*stoppedFlag = 1;
|
||||
@ -322,134 +129,40 @@ int slsDetectorUtils::acquire(int delflag){
|
||||
}
|
||||
}
|
||||
|
||||
// header after
|
||||
if (*stoppedFlag==0) {
|
||||
pthread_mutex_lock(&mp);
|
||||
executeAction(headerAfter);
|
||||
pthread_mutex_unlock(&mp);
|
||||
}
|
||||
|
||||
if (*stoppedFlag) {
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "exiting since the detector has been stopped" << std::endl;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
}//end position loop ip
|
||||
|
||||
|
||||
//script after
|
||||
if (*stoppedFlag==0) {
|
||||
executeAction(scriptAfter);
|
||||
}
|
||||
|
||||
if (*stoppedFlag) {
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "exiting since the detector has been stopped" << std::endl;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
}//end scan1 loop is1
|
||||
|
||||
|
||||
if (*stoppedFlag) {
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "exiting since the detector has been stopped" << std::endl;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
}//end scan0 loop is0
|
||||
|
||||
|
||||
|
||||
if (*stoppedFlag==0) {
|
||||
executeAction(stopScript);
|
||||
}
|
||||
|
||||
if (*stoppedFlag) {
|
||||
#ifdef VERBOSE
|
||||
cout << "findex incremented " << endl;
|
||||
#endif
|
||||
if(*correctionMask&(1<<WRITE_FILE))
|
||||
IncrementFileIndex();
|
||||
int findex = 0;
|
||||
pthread_mutex_lock(&mg);
|
||||
setFileIndex(fileIO::getFileIndex());
|
||||
findex = incrementFileIndex();
|
||||
pthread_mutex_unlock(&mg);
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "exiting since the detector has been stopped" << std::endl;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "findex incremented " << endl;
|
||||
#endif
|
||||
if(*correctionMask&(1<<WRITE_FILE))
|
||||
IncrementFileIndex();
|
||||
pthread_mutex_lock(&mg); //cout << "lock"<< endl;
|
||||
setFileIndex(fileIO::getFileIndex());
|
||||
pthread_mutex_unlock(&mg);//cout << "unlock"<< endl;
|
||||
|
||||
if (measurement_finished){
|
||||
pthread_mutex_lock(&mg); //cout << "lock"<< endl;
|
||||
measurement_finished(im,*fileIndex,measFinished_p);
|
||||
pthread_mutex_unlock(&mg);//cout << "unlock"<< endl;
|
||||
pthread_mutex_lock(&mg);
|
||||
measurement_finished(im,findex,measFinished_p);
|
||||
pthread_mutex_unlock(&mg);
|
||||
}
|
||||
|
||||
if (*stoppedFlag) {
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "exiting since the detector has been stopped" << std::endl;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
}//end measurements loop im
|
||||
|
||||
|
||||
|
||||
// waiting for the data processing thread to finish!
|
||||
if (*threadedProcessing) {
|
||||
#ifdef VERBOSE
|
||||
cout << "wait for data processing thread" << endl;
|
||||
#endif
|
||||
setJoinThread(1);
|
||||
|
||||
//let processing thread continue and checkjointhread
|
||||
sem_post(&sem_newRTAcquisition);
|
||||
|
||||
pthread_join(dataProcessingThread, &status);
|
||||
#ifdef VERBOSE
|
||||
cout << "data processing thread joined" << endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
if(progress_call)
|
||||
progress_call(getCurrentProgress(),pProgressCallArg);
|
||||
|
||||
|
||||
if (connectChannels) {
|
||||
if (disconnect_channels)
|
||||
disconnect_channels(DCarg);
|
||||
}
|
||||
|
||||
if (aclog)
|
||||
delete aclog;
|
||||
|
||||
if (eclog)
|
||||
delete eclog;
|
||||
#ifdef VERBOSE
|
||||
cout << "acquisition finished callback " << endl;
|
||||
#endif
|
||||
if (acquisition_finished)
|
||||
acquisition_finished(getCurrentProgress(),getDetectorStatus(),acqFinished_p);
|
||||
#ifdef VERBOSE
|
||||
cout << "acquisition finished callback done " << endl;
|
||||
#endif
|
||||
|
||||
sem_destroy(&sem_newRTAcquisition);
|
||||
sem_destroy(&sem_endRTAcquisition);
|
||||
@ -474,7 +187,7 @@ int slsDetectorUtils::acquire(int delflag){
|
||||
|
||||
int slsDetectorUtils::setTotalProgress() {
|
||||
|
||||
int nf=1, npos=1, nscan[MAX_SCAN_LEVELS]={1,1}, nc=1, nm=1;
|
||||
int nf=1, nc=1, ns=1, nm=1;
|
||||
|
||||
if (timerValue[FRAME_NUMBER])
|
||||
nf=timerValue[FRAME_NUMBER];
|
||||
@ -482,28 +195,19 @@ int slsDetectorUtils::setTotalProgress() {
|
||||
if (timerValue[CYCLES_NUMBER]>0)
|
||||
nc=timerValue[CYCLES_NUMBER];
|
||||
|
||||
if (timerValue[STORAGE_CELL_NUMBER]>0)
|
||||
ns=timerValue[STORAGE_CELL_NUMBER]+1;
|
||||
|
||||
if (timerValue[MEASUREMENTS_NUMBER]>0)
|
||||
nm=timerValue[MEASUREMENTS_NUMBER];
|
||||
|
||||
if (*numberOfPositions>0)
|
||||
npos=*numberOfPositions;
|
||||
|
||||
if ((nScanSteps[0]>0) && (*actionMask & (1 << MAX_ACTIONS)))
|
||||
nscan[0]=nScanSteps[0];
|
||||
|
||||
if ((nScanSteps[1]>0) && (*actionMask & (1 << (MAX_ACTIONS+1))))
|
||||
nscan[1]=nScanSteps[1];
|
||||
|
||||
totalProgress=nm*nf*nc*npos*nscan[0]*nscan[1];
|
||||
totalProgress=nm*nf*nc*ns;
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "nc " << nc << endl;
|
||||
cout << "nm " << nm << endl;
|
||||
cout << "nf " << nf << endl;
|
||||
cout << "npos " << npos << endl;
|
||||
cout << "nscan[0] " << nscan[0] << endl;
|
||||
cout << "nscan[1] " << nscan[1] << endl;
|
||||
|
||||
cout << "nc " << nc << endl;
|
||||
cout << "ns " << ns << endl;
|
||||
cout << "Set total progress " << totalProgress << endl;
|
||||
#endif
|
||||
return totalProgress;
|
||||
@ -511,90 +215,6 @@ int slsDetectorUtils::setTotalProgress() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int slsDetectorUtils::setBadChannelCorrection(string fname, int &nbadtot, int *badchanlist, int off){
|
||||
|
||||
int nbad;
|
||||
int badlist[MAX_BADCHANS];
|
||||
|
||||
ifstream infile;
|
||||
string str;
|
||||
//int interrupt=0;
|
||||
//int ich;
|
||||
//int chmin,chmax;
|
||||
#ifdef VERBOSE
|
||||
std::cout << "utils: Setting bad channel correction to " << fname << std::endl;
|
||||
#endif
|
||||
// int modmi=0;
|
||||
int modma=1;
|
||||
int singlefile=0;
|
||||
|
||||
string fn;
|
||||
int offset=off;
|
||||
|
||||
|
||||
nbadtot=0;
|
||||
|
||||
if (fname=="" || fname=="none") {
|
||||
;
|
||||
} else {
|
||||
|
||||
if (fname.find(".sn")==string::npos && fname.find(".chans")==string::npos) {
|
||||
modma=setNumberOfModules();
|
||||
singlefile=1;
|
||||
}
|
||||
|
||||
for (int im=0; im<modma; im++) {
|
||||
|
||||
|
||||
if (singlefile) {
|
||||
|
||||
ostringstream ostfn;
|
||||
ostfn << fname << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im);
|
||||
fn=ostfn.str();
|
||||
|
||||
} else
|
||||
fn=fname;
|
||||
|
||||
|
||||
|
||||
infile.open(fn.c_str(), ios_base::in);
|
||||
if (infile.is_open()==0) {
|
||||
std::cout << "could not open file " << fname <<std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
nbad=setBadChannelCorrection(infile, nbad, badlist, offset);
|
||||
infile.close();
|
||||
|
||||
for (int ich=0; ich<nbad; ich++) {
|
||||
if (nbadtot<MAX_BADCHANS) {
|
||||
badchanlist[nbadtot]=badlist[ich];
|
||||
nbadtot++;
|
||||
}
|
||||
}
|
||||
|
||||
offset+=getChansPerMod(im);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
if (nbadtot>0 && nbadtot<MAX_BADCHANS) {
|
||||
return nbadtot;
|
||||
} else
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
double slsDetectorUtils::getCurrentProgress() {
|
||||
pthread_mutex_lock(&mp);
|
||||
#ifdef VERBOSE
|
||||
@ -611,7 +231,8 @@ double slsDetectorUtils::getCurrentProgress() {
|
||||
void slsDetectorUtils::incrementProgress() {
|
||||
pthread_mutex_lock(&mp);
|
||||
progressIndex++;
|
||||
cout << fixed << setprecision(2) << setw (6) << 100.*((double)progressIndex)/((double)totalProgress) << " \%";
|
||||
cout << fixed << setprecision(2) << setw (6)
|
||||
<< 100.*((double)progressIndex)/((double)totalProgress) << " \%";
|
||||
pthread_mutex_unlock(&mp);
|
||||
#ifdef VERBOSE
|
||||
cout << endl;
|
||||
@ -625,7 +246,8 @@ void slsDetectorUtils::incrementProgress() {
|
||||
void slsDetectorUtils::setCurrentProgress(int i){
|
||||
pthread_mutex_lock(&mp);
|
||||
progressIndex=i;
|
||||
cout << fixed << setprecision(2) << setw (6) << 100.*((double)progressIndex)/((double)totalProgress) << " \%";
|
||||
cout << fixed << setprecision(2) << setw (6)
|
||||
<< 100.*((double)progressIndex)/((double)totalProgress) << " \%";
|
||||
pthread_mutex_unlock(&mp);
|
||||
#ifdef VERBOSE
|
||||
cout << endl;
|
||||
@ -638,11 +260,8 @@ void slsDetectorUtils::setCurrentProgress(int i){
|
||||
int slsDetectorUtils::retrieveDetectorSetup(string const fname1, int level){
|
||||
|
||||
|
||||
|
||||
slsDetectorCommand *cmd;
|
||||
|
||||
|
||||
// char ext[100];
|
||||
int skip=0;
|
||||
string fname;
|
||||
string str;
|
||||
@ -652,16 +271,12 @@ int slsDetectorUtils::retrieveDetectorSetup(string const fname1, int level){
|
||||
char *args[10];
|
||||
|
||||
char myargs[10][1000];
|
||||
|
||||
//args[0]=myargs[0];
|
||||
//args[1]=myargs[1];
|
||||
;
|
||||
|
||||
string sargname, sargval;
|
||||
int iline=0;
|
||||
|
||||
if (level==2) {
|
||||
// fname=fname1+string(".config");
|
||||
// readConfigurationFile(fname);
|
||||
#ifdef VERBOSE
|
||||
cout << "config file read" << endl;
|
||||
#endif
|
||||
@ -703,11 +318,7 @@ int slsDetectorUtils::retrieveDetectorSetup(string const fname1, int level){
|
||||
}
|
||||
|
||||
if (level!=2) {
|
||||
if (string(args[0])==string("flatfield"))
|
||||
skip=1;
|
||||
else if (string(args[0])==string("badchannels"))
|
||||
skip=1;
|
||||
else if (string(args[0])==string("trimbits"))
|
||||
if (string(args[0])==string("trimbits"))
|
||||
skip=1;
|
||||
}
|
||||
if (skip==0)
|
||||
@ -755,8 +366,6 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
names[nvar++]="cycles";
|
||||
names[nvar++]="measurements";
|
||||
names[nvar++]="timing";
|
||||
names[nvar++]="flatfield";
|
||||
names[nvar++]="badchannels";
|
||||
|
||||
switch (type) {
|
||||
case EIGER:
|
||||
@ -767,29 +376,12 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
names[nvar++]="trimbits";
|
||||
break;
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="delay";
|
||||
names[nvar++]="gates";
|
||||
names[nvar++]="ratecorr";
|
||||
break;
|
||||
case JUNGFRAU:
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="delay";
|
||||
names[nvar++]="gates";
|
||||
names[nvar++]="ratecorr";
|
||||
names[nvar++]="clkdivider";
|
||||
break;
|
||||
case MYTHEN:
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="threshold";
|
||||
names[nvar++]="delay";
|
||||
names[nvar++]="gates";
|
||||
names[nvar++]="probes";
|
||||
names[nvar++]="fineoff";
|
||||
names[nvar++]="ratecorr";
|
||||
names[nvar++]="trimbits";
|
||||
break;
|
||||
case JUNGFRAUCTB:
|
||||
names[nvar++]="dac:0";
|
||||
names[nvar++]="dac:1";
|
||||
@ -838,24 +430,6 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
}
|
||||
|
||||
|
||||
names[nvar++]="startscript";
|
||||
names[nvar++]="startscriptpar";
|
||||
names[nvar++]="stopscript";
|
||||
names[nvar++]="stopscriptpar";
|
||||
names[nvar++]="scriptbefore";
|
||||
names[nvar++]="scriptbeforepar";
|
||||
names[nvar++]="scriptafter";
|
||||
names[nvar++]="scriptafterpar";
|
||||
names[nvar++]="scan0script";
|
||||
names[nvar++]="scan0par";
|
||||
names[nvar++]="scan0prec";
|
||||
names[nvar++]="scan0steps";
|
||||
names[nvar++]="scan1script";
|
||||
names[nvar++]="scan1par";
|
||||
names[nvar++]="scan1prec";
|
||||
names[nvar++]="scan1steps";
|
||||
|
||||
|
||||
int iv=0;
|
||||
string fname1;
|
||||
|
||||
@ -868,13 +442,6 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
}
|
||||
|
||||
|
||||
int nargs;
|
||||
if (level==2)
|
||||
nargs=2;
|
||||
else
|
||||
nargs=1;
|
||||
|
||||
|
||||
if (level==2) {
|
||||
fname1=fname+string(".config");
|
||||
writeConfigurationFile(fname1);
|
||||
@ -887,49 +454,11 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
outfile.open(fname1.c_str(),ios_base::out);
|
||||
if (outfile.is_open()) {
|
||||
cmd=new slsDetectorCommand(this);
|
||||
for (iv=0; iv<nvar-3; iv++) {
|
||||
for (iv=0; iv<nvar; iv++) {
|
||||
strcpy(args[0],names[iv].c_str());
|
||||
outfile << names[iv] << " " << cmd->executeLine(1,args,GET_ACTION) << std::endl;
|
||||
}
|
||||
|
||||
|
||||
strcpy(args[0],names[iv].c_str());
|
||||
if (level==2) {
|
||||
fname1=fname+string(".ff");
|
||||
strcpy(args[1],fname1.c_str());
|
||||
}
|
||||
outfile << names[iv] << " " << cmd->executeLine(nargs,args,GET_ACTION) << std::endl;
|
||||
iv++;
|
||||
|
||||
strcpy(args[0],names[iv].c_str());
|
||||
if (level==2) {
|
||||
fname1=fname+string(".bad");
|
||||
strcpy(args[1],fname1.c_str());
|
||||
}
|
||||
outfile << names[iv] << " " << cmd->executeLine(nargs,args,GET_ACTION) << std::endl;
|
||||
iv++;
|
||||
|
||||
|
||||
|
||||
if (level==2) {
|
||||
strcpy(args[0],names[iv].c_str());
|
||||
size_t c=fname.rfind('/');
|
||||
if (c<string::npos) {
|
||||
fname1=fname.substr(0,c+1)+string("trim_")+fname.substr(c+1);
|
||||
} else {
|
||||
fname1=string("trim_")+fname;
|
||||
}
|
||||
strcpy(args[1],fname1.c_str());
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "writing to file " << fname1 << std::endl;
|
||||
#endif
|
||||
outfile << names[iv] << " " << cmd->executeLine(nargs,args,GET_ACTION) << std::endl;
|
||||
iv++;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
delete cmd;
|
||||
|
||||
outfile.close();
|
||||
@ -948,3 +477,72 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int slsDetectorUtils::readDataFile(std::string fname, short int *data, int nch) {
|
||||
std::ifstream infile;
|
||||
int iline=0;
|
||||
std::string str;
|
||||
infile.open(fname.c_str(), std::ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
iline=readDataFile(infile, data, nch, 0);
|
||||
infile.close();
|
||||
} else {
|
||||
std::cout<< "Could not read file " << fname << std::endl;
|
||||
return -1;
|
||||
}
|
||||
return iline;
|
||||
}
|
||||
|
||||
|
||||
int slsDetectorUtils::readDataFile(std::ifstream &infile, short int *data, int nch, int offset) {
|
||||
int ichan, iline=0;
|
||||
short int idata;
|
||||
int interrupt=0;
|
||||
std::string str;
|
||||
while (infile.good() and interrupt==0) {
|
||||
getline(infile,str);
|
||||
std::istringstream ssstr(str);
|
||||
ssstr >> ichan >> idata;
|
||||
if (ssstr.fail() || ssstr.bad()) {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
if (iline<nch) {
|
||||
if (ichan>=offset) {
|
||||
data[iline]=idata;
|
||||
iline++;
|
||||
}
|
||||
} else {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
return iline;
|
||||
};
|
||||
return iline;
|
||||
}
|
||||
|
||||
|
||||
int slsDetectorUtils::writeDataFile(std::string fname,int nch, short int *data) {
|
||||
std::ofstream outfile;
|
||||
if (data==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
outfile.open (fname.c_str(),std::ios_base::out);
|
||||
if (outfile.is_open()) {
|
||||
writeDataFile(outfile, nch, data, 0);
|
||||
outfile.close();
|
||||
return slsDetectorDefs::OK;
|
||||
} else {
|
||||
std::cout<< "Could not open file " << fname << "for writing"<< std::endl;
|
||||
return slsDetectorDefs::FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int slsDetectorUtils::writeDataFile(std::ofstream &outfile,int nch, short int *data, int offset) {
|
||||
if (data==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
for (int ichan=0; ichan<nch; ichan++)
|
||||
outfile << ichan+offset << " " << *(data+ichan) << std::endl;
|
||||
return slsDetectorDefs::OK;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,527 +0,0 @@
|
||||
#include "AngularConversion_Standalone.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <math.h>
|
||||
#include "usersFunctions.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
angularConversion::angularConversion( int *np, double *pos, double *bs, double *fo, double *go): currentPosition(0),
|
||||
currentPositionIndex(0),
|
||||
numberOfPositions(np),
|
||||
detPositions(pos),
|
||||
binSize(bs),
|
||||
fineOffset(fo),
|
||||
globalOffset(go)
|
||||
|
||||
{
|
||||
//angleFunctionPointer=0;
|
||||
registerAngleFunctionCallback(&defaultAngleFunction,NULL);
|
||||
registerCallBackGetChansPerMod(&defaultGetChansPerMod,this);
|
||||
registerCallBackGetNumberofChannel(&defaultGetNumberofChannel,this);
|
||||
}
|
||||
|
||||
angularConversion::~angularConversion(){
|
||||
|
||||
}
|
||||
|
||||
// int angularConversion::setAngularConversionPointer(angleConversionConstant *p, int *nm, int nch, int idet) {
|
||||
// if (p) {
|
||||
// angOff[idet]=p;
|
||||
// nMods[idet]=nm;
|
||||
// nCh[idet]=nch;
|
||||
// } else {
|
||||
// angOff[idet]=NULL;
|
||||
// nMods[idet]=NULL;
|
||||
// }
|
||||
|
||||
// return OK;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
double* angularConversion::convertAngles(double pos) {
|
||||
int imod=0;
|
||||
double *ang=new double[totalNumberOfChannels];
|
||||
double enc=pos;
|
||||
angleConversionConstant *p=NULL;
|
||||
|
||||
int ch0=0;
|
||||
int chlast=getChansPerMods(imod);
|
||||
int nchmod=getChansPerMods(imod);
|
||||
p=angConvs+imod;
|
||||
if (moveFlag[imod]==0)
|
||||
enc=0;
|
||||
else
|
||||
enc=pos;
|
||||
|
||||
for (int ip=0; ip<getTotalNumberofChannels(); ip++) {
|
||||
#ifdef VERBOSE
|
||||
// cout << "ip " << ip << " ch0 " << ch0 << " chlast " << chlast << " imod " << imod << endl;
|
||||
#endif
|
||||
if (ip>=chlast) {
|
||||
imod++;
|
||||
p=angConvs+imod;
|
||||
if (moveFlag[imod]==0)
|
||||
enc=0;
|
||||
else
|
||||
enc=pos;
|
||||
|
||||
ch0=chlast;
|
||||
nchmod=getChansPerMods(imod);
|
||||
if (nchmod>0)
|
||||
chlast+=nchmod;
|
||||
}
|
||||
|
||||
if (p)
|
||||
ang[ip]=angle(ip-ch0, \
|
||||
enc, \
|
||||
(*fineOffset)+(*globalOffset), \
|
||||
p->r_conversion, \
|
||||
p->center, \
|
||||
p->offset, \
|
||||
p->tilt, \
|
||||
*angDirection );
|
||||
}
|
||||
return ang;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//static!
|
||||
int angularConversion::readAngularConversion(string fname, int nmod, angleConversionConstant *angOff) {
|
||||
|
||||
ifstream infile;
|
||||
string ss;
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Opening file "<< fname << std::endl;
|
||||
#endif
|
||||
infile.open(fname.c_str(), ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
readAngularConversion(infile, nmod, angOff);
|
||||
infile.close();
|
||||
} else {
|
||||
std::cout<< "Could not open calibration file "<< fname << std::endl;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
int angularConversion::readAngularConversion( ifstream& infile, int nmod, angleConversionConstant *angOff) {
|
||||
string str;
|
||||
int mod;
|
||||
double center, ecenter;
|
||||
double r_conv, er_conv;
|
||||
double off, eoff;
|
||||
string ss;
|
||||
int interrupt=0;
|
||||
int nm=0;
|
||||
//" module %i center %E +- %E conversion %E +- %E offset %f +- %f \n"
|
||||
while (infile.good() and interrupt==0) {
|
||||
getline(infile,str);
|
||||
#ifdef VERBOSE
|
||||
cout << "** mod " << nm << " " ;
|
||||
std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
ssstr >> ss >> mod;
|
||||
ssstr >> ss >> center;
|
||||
ssstr >> ss >> ecenter;
|
||||
ssstr >> ss >> r_conv;
|
||||
ssstr >> ss >> er_conv;
|
||||
ssstr >> ss >> off;
|
||||
ssstr >> ss >> eoff;
|
||||
if (nm<nmod && nm>=0 ) {
|
||||
angOff[nm].center=center;
|
||||
angOff[nm].r_conversion=r_conv;
|
||||
angOff[nm].offset=off;
|
||||
angOff[nm].ecenter=ecenter;
|
||||
angOff[nm].er_conversion=er_conv;
|
||||
angOff[nm].eoffset=eoff;
|
||||
} else
|
||||
break;
|
||||
//cout << nm<<" " << angOff[nm].offset << endl;
|
||||
nm++;
|
||||
if (nm>=nmod)
|
||||
break;
|
||||
|
||||
}
|
||||
return nm;
|
||||
}
|
||||
|
||||
//static
|
||||
int angularConversion:: writeAngularConversion(string fname, int nmod, angleConversionConstant *angOff) {
|
||||
|
||||
ofstream outfile;
|
||||
outfile.open (fname.c_str(),ios_base::out);
|
||||
if (outfile.is_open())
|
||||
{
|
||||
writeAngularConversion(outfile, nmod, angOff);
|
||||
outfile.close();
|
||||
} else {
|
||||
std::cout<< "Could not open file " << fname << "for writing"<< std::endl;
|
||||
return -1;
|
||||
}
|
||||
//" module %i center %E +- %E conversion %E +- %E offset %f +- %f \n"
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//static
|
||||
int angularConversion:: writeAngularConversion(ofstream& outfile, int nmod, angleConversionConstant *angOff) {
|
||||
|
||||
for (int imod=0; imod<nmod; imod++) {
|
||||
outfile << " module " << imod << " center "<< angOff[imod].center<<" +- "<< angOff[imod].ecenter<<" conversion "<< angOff[imod].r_conversion << " +- "<< angOff[imod].er_conversion << " offset "<< angOff[imod].offset << " +- "<< angOff[imod].eoffset << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
int angularConversion::resetMerging(double *mp, double *mv, double *me, int *mm, int nb) {
|
||||
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "creating merging arrays "<< nb << endl;
|
||||
#endif
|
||||
|
||||
|
||||
for (int ibin=0; ibin<nb; ibin++) {
|
||||
mp[ibin]=0;
|
||||
mv[ibin]=0;
|
||||
me[ibin]=0;
|
||||
mm[ibin]=0;
|
||||
}
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
int angularConversion::finalizeMerging(double *mp, double *mv, double *me, int *mm,int nb) {
|
||||
int np=0;
|
||||
for (int ibin=0; ibin<nb; ibin++) {
|
||||
if (mm[ibin]>0) {
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "finalize " << ibin << " "<< mm[ibin] << " " << mp[ibin]<< mv[ibin] << me[ibin] << endl;
|
||||
#endif
|
||||
mp[np]=mp[ibin]/mm[ibin];
|
||||
mv[np]=mv[ibin]/mm[ibin];
|
||||
me[np]=me[ibin]/mm[ibin];
|
||||
me[np]=sqrt(me[ibin]);
|
||||
mm[np]=mm[ibin];
|
||||
np++;
|
||||
}
|
||||
}
|
||||
return np;
|
||||
}
|
||||
|
||||
//static
|
||||
int angularConversion::addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int nchans, double binsize,int nbins, int *badChanMask ) {
|
||||
|
||||
|
||||
double binmi=-180.;
|
||||
int ibin=0;
|
||||
|
||||
if (p1==NULL)
|
||||
return 0;
|
||||
if (v1==NULL)
|
||||
return FAIL;
|
||||
|
||||
if (mp==NULL) //can be changed if we want to use a fixed bin algorithm!
|
||||
return FAIL;
|
||||
|
||||
if (mv==NULL)
|
||||
return FAIL;
|
||||
if (me==NULL)
|
||||
return FAIL;
|
||||
if (mm==NULL)
|
||||
return FAIL;
|
||||
if (nchans==0)
|
||||
return FAIL;
|
||||
|
||||
if (binsize<=0)
|
||||
return FAIL;
|
||||
|
||||
if (nbins<=0)
|
||||
return FAIL;
|
||||
|
||||
for (int ip=0; ip<nchans; ip++) {
|
||||
if (badChanMask) {
|
||||
if (badChanMask[ip]) {
|
||||
#ifdef VERBOSE
|
||||
cout << "channel " << ip << " is bad " << endl;
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
}
|
||||
ibin=(int)((p1[ip]-binmi)/binsize);
|
||||
|
||||
|
||||
if (ibin<nbins && ibin>=0) {
|
||||
mp[ibin]+=p1[ip];
|
||||
mv[ibin]+=v1[ip];
|
||||
if (e1)
|
||||
me[ibin]+=(e1[ip]*e1[ip]);
|
||||
else
|
||||
me[ibin]+=v1[ip];
|
||||
mm[ibin]++;
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "add " << ibin << " "<< mm[ibin] << " " << mp[ibin]<< mv[ibin] << me[ibin] << endl;
|
||||
#endif
|
||||
} else
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
|
||||
return OK;
|
||||
|
||||
}
|
||||
|
||||
int angularConversion::deleteMerging() {
|
||||
|
||||
if (mergingBins)
|
||||
delete [] mergingBins;
|
||||
|
||||
if (mergingCounts)
|
||||
delete [] mergingCounts;
|
||||
|
||||
if (mergingErrors)
|
||||
delete [] mergingErrors;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int angularConversion::resetMerging() {
|
||||
getAngularConversionParameter(BIN_SIZE);
|
||||
|
||||
mergingBins=new double[nBins];
|
||||
|
||||
|
||||
mergingCounts=new double[nBins];
|
||||
|
||||
|
||||
mergingErrors=new double[nBins];
|
||||
|
||||
|
||||
mergingMultiplicity=new int[nBins];
|
||||
|
||||
return resetMerging(mergingBins, mergingCounts, mergingErrors, mergingMultiplicity);
|
||||
|
||||
}
|
||||
|
||||
int angularConversion::resetMerging(double *mp, double *mv, double *me, int *mm) {
|
||||
getAngularConversionParameter(BIN_SIZE);
|
||||
if (nBins)
|
||||
return resetMerging(mp, mv, me, mm,nBins);
|
||||
else
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int angularConversion::finalizeMerging() {
|
||||
int np=finalizeMerging(mergingBins, mergingCounts, mergingErrors, mergingMultiplicity);
|
||||
|
||||
if (mergingMultiplicity)
|
||||
delete [] mergingMultiplicity;
|
||||
|
||||
return np;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int angularConversion::finalizeMerging(double *mp, double *mv, double *me, int *mm) {
|
||||
if (nBins)
|
||||
return finalizeMerging(mp, mv, me, mm, nBins);
|
||||
else
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
int angularConversion::addToMerging(double *p1, double *v1, double *e1, int *badChanMask ) {
|
||||
|
||||
return addToMerging(p1,v1,e1,mergingBins,mergingCounts, mergingErrors, mergingMultiplicity, badChanMask);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
int angularConversion::addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int *badChanMask ) {
|
||||
|
||||
int del=0;
|
||||
|
||||
if (getAngularConversionParameter(BIN_SIZE)==0){
|
||||
cout << "no bin size " << endl;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (nBins==0) {
|
||||
cout << "no bins " << endl;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (p1==NULL) {
|
||||
del=1;
|
||||
p1=convertAngles();
|
||||
}
|
||||
|
||||
|
||||
int ret=addToMerging(p1, v1, e1, mp, mv,me, mm,getTotalNumberofChannels(), *binSize,nBins, badChanMask );
|
||||
|
||||
|
||||
if (del) {
|
||||
delete [] p1;
|
||||
p1=NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
sets the value of s angular conversion parameter
|
||||
\param c can be ANGULAR_DIRECTION, GLOBAL_OFFSET, FINE_OFFSET, BIN_SIZE
|
||||
\param v the value to be set
|
||||
\returns the actual value
|
||||
*/
|
||||
|
||||
double angularConversion::setAngularConversionParameter(angleConversionParameter c, double v){
|
||||
|
||||
|
||||
switch (c) {
|
||||
case ANGULAR_DIRECTION:
|
||||
if (v<0)
|
||||
*angDirection=-1;
|
||||
else
|
||||
*angDirection=1;
|
||||
return *angDirection;
|
||||
case GLOBAL_OFFSET:
|
||||
*globalOffset=v;
|
||||
return *globalOffset;
|
||||
case FINE_OFFSET:
|
||||
*fineOffset=v;
|
||||
return *fineOffset;
|
||||
case BIN_SIZE:
|
||||
if (v>0) {
|
||||
*binSize=v;
|
||||
nBins=360./(*binSize);
|
||||
}
|
||||
return *binSize;
|
||||
case MOVE_FLAG:
|
||||
if (moveFlag) {
|
||||
if (v>0)
|
||||
*moveFlag=1;
|
||||
else if (v==0)
|
||||
*moveFlag=0;
|
||||
return *moveFlag;
|
||||
}
|
||||
return -1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
returns the value of an angular conversion parameter
|
||||
\param c can be ANGULAR_DIRECTION, GLOBAL_OFFSET, FINE_OFFSET, BIN_SIZE
|
||||
\returns the actual value
|
||||
|
||||
*/
|
||||
|
||||
double angularConversion::getAngularConversionParameter(angleConversionParameter c) {
|
||||
|
||||
switch (c) {
|
||||
case ANGULAR_DIRECTION:
|
||||
return *angDirection;
|
||||
case GLOBAL_OFFSET:
|
||||
return *globalOffset;
|
||||
case FINE_OFFSET:
|
||||
return *fineOffset;
|
||||
case BIN_SIZE:
|
||||
if (*binSize>0)
|
||||
nBins=360./(*binSize);
|
||||
else
|
||||
nBins=0;
|
||||
return *binSize;
|
||||
case MOVE_FLAG:
|
||||
if (moveFlag)
|
||||
return *moveFlag;
|
||||
else
|
||||
return -1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
int angularConversion::setAngularConversionFile(string fname) {
|
||||
if (fname=="") {
|
||||
setAngularCorrectionMask(0);
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Unsetting angular conversion" << std::endl;
|
||||
#endif
|
||||
} else {
|
||||
if (fname=="default") {
|
||||
fname=string(angConvFile);
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Setting angular conversion to " << fname << std:: endl;
|
||||
#endif
|
||||
if (readAngularConversionFile(fname)>=0) {
|
||||
setAngularCorrectionMask(1);
|
||||
strcpy(angConvFile,fname.c_str());
|
||||
}
|
||||
}
|
||||
return setAngularCorrectionMask();
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
set positions for the acquisition
|
||||
\param nPos number of positions
|
||||
\param pos array with the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
int angularConversion::setPositions(int nPos, double *pos){
|
||||
if (nPos>=0)
|
||||
*numberOfPositions=nPos;
|
||||
for (int ip=0; ip<nPos; ip++)
|
||||
detPositions[ip]=pos[ip];
|
||||
|
||||
return *numberOfPositions;
|
||||
}
|
||||
/*
|
||||
get positions for the acquisition
|
||||
\param pos array which will contain the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
int angularConversion::getPositions(double *pos){
|
||||
if (pos) {
|
||||
for (int ip=0; ip<(*numberOfPositions); ip++)
|
||||
pos[ip]=detPositions[ip];
|
||||
}
|
||||
|
||||
return *numberOfPositions;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,490 +0,0 @@
|
||||
|
||||
#ifndef ANGULARCONVERSIONSTD_H
|
||||
#define ANGULARCONVERSIONSTD_H
|
||||
|
||||
|
||||
//#include "slsDetectorBase.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
|
||||
|
||||
//double angle(int ichan, double encoder, double totalOffset, double conv_r, double center, double offset, double tilt, int direction)
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
@short Angular conversion constants needed for a detector module
|
||||
*/
|
||||
typedef struct {
|
||||
double center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */
|
||||
double ecenter; /**< error in the center determination */
|
||||
double r_conversion; /**< detector pixel size (or strip pitch) divided by the diffractometer radius */
|
||||
double er_conversion; /**< error in the r_conversion determination */
|
||||
double offset; /**< the module offset i.e. the position of channel 0 with respect to the diffractometer 0 */
|
||||
double eoffset; /**< error in the offset determination */
|
||||
double tilt; /**< ossible tilt in the orthogonal direction (unused)*/
|
||||
double etilt; /**< error in the tilt determination */
|
||||
} angleConversionConstant;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@short methods to set/unset the angular conversion and merge the data
|
||||
class containing the methods to set/unset the angular conversion and merge the data
|
||||
|
||||
|
||||
The angular conversion itself is defined by the angle() function defined in usersFunctions.cpp
|
||||
|
||||
*/
|
||||
class angularConversion : public virtual slsDetectorDefs { //: public virtual slsDetectorBase {
|
||||
|
||||
public:
|
||||
/** default constructor */
|
||||
angularConversion(int*, double*, double*, double*, double*);
|
||||
/** virtual destructor */
|
||||
virtual ~angularConversion();
|
||||
|
||||
|
||||
|
||||
//virtual int readAngularConversion(string fname)=0;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
reads an angular conversion file
|
||||
\param fname file to be read
|
||||
\param nmod number of modules (maximum) to be read
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int readAngularConversion(string fname, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
/**
|
||||
reads an angular conversion file
|
||||
\param ifstream input file stream to be read
|
||||
\param nmod number of modules (maximum) to be read
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
|
||||
*/
|
||||
static int readAngularConversion(ifstream& ifs, int nmod, angleConversionConstant *angOff);
|
||||
/**
|
||||
writes an angular conversion file
|
||||
\param fname file to be written
|
||||
\param nmod number of modules to be written
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int writeAngularConversion(string fname, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
/**
|
||||
writes an angular conversion file
|
||||
\param ofstream output file stream
|
||||
\param nmod number of modules to be written
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int writeAngularConversion(ofstream& ofs, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
/**
|
||||
sets the arrays of the merged data to 0. NB The array should be created with size nbins >= 360./getBinSize();
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param nbins number of bins
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int resetMerging(double *mp, double *mv,double *me, int *mm, int nbins);
|
||||
/**
|
||||
sets the arrays of the merged data to 0. NB The array should be created with size >= 360./getBinSize();
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
int resetMerging(double *mp, double *mv,double *me, int *mm);
|
||||
|
||||
/**
|
||||
creates the arrays for merging the data and sets them to 0.
|
||||
*/
|
||||
int resetMerging();
|
||||
|
||||
/**
|
||||
merge dataset
|
||||
\param p1 angular positions of dataset
|
||||
\param v1 data
|
||||
\param e1 errors
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param nchans number of channels
|
||||
\param binsize size of angular bin
|
||||
\param nb number of angular bins
|
||||
\param badChanMask badchannelmask (if NULL does not correct for bad channels)
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
static int addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int nchans, double binsize,int nb, int *badChanMask );
|
||||
|
||||
/**
|
||||
merge dataset
|
||||
\param p1 angular positions of dataset
|
||||
\param v1 data
|
||||
\param e1 errors
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param badChanMask badchannelmask (if NULL does not correct for bad channels)
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
int addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int *badChanMask);
|
||||
/**
|
||||
merge dataset
|
||||
\param p1 angular positions of dataset
|
||||
\param v1 data
|
||||
\param e1 errors
|
||||
\param badChanMask badchannelmask (if NULL does not correct for bad channels)
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
int addToMerging(double *p1, double *v1, double *e1,int *badChanMask);
|
||||
|
||||
/**
|
||||
calculates the "final" positions, data value and errors for the merged data
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param nb number of bins
|
||||
\returns FAIL or the number of non empty bins (i.e. points belonging to the pattern)
|
||||
*/
|
||||
|
||||
static int finalizeMerging(double *mp, double *mv,double *me, int *mm, int nb);
|
||||
/**
|
||||
calculates the "final" positions, data value and errors for the merged data
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\returns FAIL or the number of non empty bins (i.e. points belonging to the pattern)
|
||||
*/
|
||||
|
||||
int finalizeMerging(double *mp, double *mv,double *me, int *mm);
|
||||
|
||||
/**
|
||||
calculates the "final" positions, data value and errors for the merged data
|
||||
\returns FAIL or the number of non empty bins (i.e. points belonging to the pattern)
|
||||
*/
|
||||
|
||||
int finalizeMerging();
|
||||
|
||||
|
||||
/**
|
||||
set detector global offset
|
||||
\param f global offset to be set
|
||||
\returns actual global offset
|
||||
*/
|
||||
double setGlobalOffset(double f){return setAngularConversionParameter(GLOBAL_OFFSET,f);};
|
||||
|
||||
|
||||
/**
|
||||
set detector fine offset
|
||||
\param f global fine to be set
|
||||
\returns actual fine offset
|
||||
*/
|
||||
double setFineOffset(double f){return setAngularConversionParameter(FINE_OFFSET,f);};
|
||||
|
||||
/**
|
||||
get detector fine offset
|
||||
\returns actual fine offset
|
||||
*/
|
||||
double getFineOffset(){return getAngularConversionParameter(FINE_OFFSET);};
|
||||
|
||||
/**
|
||||
get detector global offset
|
||||
\returns actual global offset
|
||||
*/
|
||||
double getGlobalOffset(){return getAngularConversionParameter(GLOBAL_OFFSET);};
|
||||
|
||||
/**
|
||||
|
||||
set detector bin size
|
||||
\param bs bin size to be set
|
||||
\returns actual bin size
|
||||
*/
|
||||
double setBinSize(double bs){if (bs>0) nBins=360/bs; return setAngularConversionParameter(BIN_SIZE,bs);};
|
||||
|
||||
/**
|
||||
get detector bin size
|
||||
\returns detector bin size used for merging (approx angular resolution)
|
||||
*/
|
||||
double getBinSize() {return getAngularConversionParameter(BIN_SIZE);};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
get angular direction
|
||||
\returns actual angular direction (1 is channel number increasing with angle, -1 decreasing)
|
||||
*/
|
||||
int getAngularDirection(){return (int)getAngularConversionParameter(ANGULAR_DIRECTION);};
|
||||
|
||||
|
||||
/**
|
||||
|
||||
set angular direction
|
||||
\param d angular direction to be set (1 is channel number increasing with angle, -1 decreasing)
|
||||
\returns actual angular direction (1 is channel number increasing with angle, -1 decreasing)
|
||||
*/
|
||||
int setAngularDirection(int d){return (int)setAngularConversionParameter(ANGULAR_DIRECTION, (double)d);};
|
||||
|
||||
/**
|
||||
\returns number of angular bins in the merging (360./binsize)
|
||||
*/
|
||||
int getNumberOfAngularBins(){return nBins;};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
set angular conversion parameter
|
||||
\param c parameter type (globaloffset, fineoffset, binsize, angular direction, move flag)
|
||||
\param v value to be set
|
||||
\returns actual value
|
||||
*/
|
||||
double setAngularConversionParameter(angleConversionParameter c, double v);
|
||||
/**
|
||||
get angular conversion parameter
|
||||
\param c parameter type (globaloffset, fineoffset, binsize, angular direction, move flag)
|
||||
\returns actual value
|
||||
*/
|
||||
double getAngularConversionParameter(angleConversionParameter c);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
set positions for the acquisition
|
||||
\param nPos number of positions
|
||||
\param pos array with the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
virtual int setPositions(int nPos, double *pos);
|
||||
/**
|
||||
get positions for the acquisition
|
||||
\param pos array which will contain the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
virtual int getPositions(double *pos=NULL);
|
||||
|
||||
/**
|
||||
deletes the array of merged data
|
||||
\returns OK
|
||||
*/
|
||||
int deleteMerging();
|
||||
|
||||
/**
|
||||
\returns pointer to the array o merged positions
|
||||
*/
|
||||
double *getMergedPositions(){return mergingBins;};
|
||||
/**
|
||||
\returns pointer to the array of merged counts
|
||||
*/
|
||||
double *getMergedCounts(){return mergingCounts;};
|
||||
/**
|
||||
\returns pointer to the array of merged errors
|
||||
*/
|
||||
double *getMergedErrors(){return mergingErrors;};
|
||||
|
||||
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* reads teh angular conversion file for the (multi)detector and writes it to shared memory */
|
||||
/* *\/ */
|
||||
/* virtual int readAngularConversionFile(string fname="")=0; */
|
||||
|
||||
/* /\** */
|
||||
/* get angular conversion */
|
||||
/* \param direction reference to diffractometer direction */
|
||||
/* \param angconv array that will be filled with the angular conversion constants */
|
||||
/* \returns 0 if angular conversion disabled, >0 otherwise */
|
||||
/* *\/ */
|
||||
virtual int getAngularConversion(int &direction, angleConversionConstant *angoff=NULL);
|
||||
|
||||
/* /\** */
|
||||
/* pure virtual function */
|
||||
/* \param file name to be written (nmod and array of angular conversion constants default to the ones ot the slsDetector */
|
||||
/* *\/ */
|
||||
/* virtual int writeAngularConversion(string fname)=0; */
|
||||
|
||||
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* \returns number of modules of the (multi)detector */
|
||||
/* *\/ */
|
||||
/* virtual int getNMods()=0; */
|
||||
|
||||
/* /\** */
|
||||
/* returns number of channels in the module */
|
||||
/* \param imod module number */
|
||||
/* \returns number of channels in the module */
|
||||
/* *\/ */
|
||||
|
||||
|
||||
static int defaultGetNumberofChannel(int nch, void *p=NULL ) { ((angularConversion*)p)->setTotalNumberOfChannels(nch); return 0;};
|
||||
static int defaultGetChansPerMod(int imod=0, void *p=NULL){ ((angularConversion*)p)->setChansPerMod(0,imod); return 0;};
|
||||
|
||||
int setChansPerMod(int nch, int imod=0){if (nch<0) return -1; if (imod>=0 && imod<MAXMODS*MAXDET) {chansPerMod[imod]=nch; return chansPerMod[imod];} else return -1;};
|
||||
|
||||
int setTotalNumberOfChannels(int i){if (i>=0){ totalNumberOfChannels=i; return totalNumberOfChannels;} else return -1;};
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* get the angular conversion contant of one modules */
|
||||
/* \param imod module number */
|
||||
/* \returns pointer to the angular conversion constant */
|
||||
/* *\/ */
|
||||
/* virtual angleConversionConstant *getAngularConversionPointer(int imod=0)=0; */
|
||||
/* /\** */
|
||||
/* \param imod module number */
|
||||
/* \returns move flag of the module (1 encoder is added to the angle, 0 not) */
|
||||
/* *\/ */
|
||||
/* virtual int getMoveFlag(int imod)=0; */
|
||||
|
||||
/* /\** */
|
||||
/* enables/disable the angular conversion */
|
||||
/* \param i 1 sets, 0 unsets,, -1 gets */
|
||||
/* \returns actual angular conversion flag */
|
||||
/* *\/ */
|
||||
/* virtual int setAngularCorrectionMask(int i=-1)=0; */
|
||||
|
||||
|
||||
|
||||
/**
|
||||
converts channel number to angle
|
||||
\param pos encoder position
|
||||
\returns array of angles corresponding to the channels
|
||||
*/
|
||||
double* convertAngles(double pos);
|
||||
/**
|
||||
converts channel number to angle for the current encoder position
|
||||
\returns array of angles corresponding to the channels
|
||||
*/
|
||||
double *convertAngles(){return convertAngles(currentPosition);};
|
||||
|
||||
|
||||
/**
|
||||
returns number of positions
|
||||
*/
|
||||
int getNumberOfPositions() {return *numberOfPositions;};
|
||||
|
||||
int getChansPerMods(int imod) { return chansPerMod[imod];};
|
||||
int getTotalNumberofChannels(){ return totalNumberOfChannels;};
|
||||
|
||||
|
||||
void incrementPositionIndex() {currentPositionIndex++;};
|
||||
|
||||
void registerCallBackGetChansPerMod(int (*func)(int, void *),void *arg){ getChansPerModule=func;pChpermod=arg;};
|
||||
void registerCallBackGetNumberofChannel(int (*func)(int, void *),void *arg){ getNumberofChannel=func;pNumberofChannel=arg;};
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
int (*getChansPerModule)(int, void*);
|
||||
int (*getNumberofChannel)(int, void*);
|
||||
|
||||
void *pChpermod,*angPtr,*pNumberofChannel;
|
||||
|
||||
|
||||
/** merging bins */
|
||||
double *mergingBins;
|
||||
|
||||
/** merging counts */
|
||||
double *mergingCounts;
|
||||
|
||||
/** merging errors */
|
||||
double *mergingErrors;
|
||||
|
||||
/** merging multiplicity */
|
||||
int *mergingMultiplicity;
|
||||
|
||||
double (*angle)(double, double, double, double, double, double, double, int);
|
||||
|
||||
|
||||
|
||||
int totalNumberOfChannels;
|
||||
|
||||
int moveFlag[MAXMODS*MAXDET];
|
||||
|
||||
/** pointer to number of positions for the acquisition*/
|
||||
int *numberOfPositions;
|
||||
|
||||
/** pointer to the detector positions for the acquisition*/
|
||||
double *detPositions;
|
||||
|
||||
|
||||
/** pointer to angular bin size*/
|
||||
double *binSize;
|
||||
|
||||
int *correctionMask;
|
||||
int chansPerMod[MAXMODS*MAXDET];
|
||||
int nMod;
|
||||
angleConversionConstant angConvs[MAXMODS*MAXDET];
|
||||
int directions[MAXMODS*MAXDET];
|
||||
|
||||
|
||||
/** pointer to beamline fine offset*/
|
||||
double *fineOffset;
|
||||
/** pointer to beamline global offset*/
|
||||
double *globalOffset;
|
||||
/** pointer to beamline angular direction*/
|
||||
int *angDirection;
|
||||
|
||||
/** pointer to detector move flag (1 moves with encoder, 0 not)*/
|
||||
// int *moveFlag;
|
||||
|
||||
/** number of bins for angular conversion (360./binsize)*/
|
||||
int nBins;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
current position of the detector
|
||||
*/
|
||||
double currentPosition;
|
||||
/**
|
||||
current position index of the detector
|
||||
*/
|
||||
int currentPositionIndex;
|
||||
|
||||
|
||||
/**
|
||||
returns current position index
|
||||
*/
|
||||
int getCurrentPositionIndex() {return currentPositionIndex;};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void registerAngleFunctionCallback(double( *fun)(double, double, double, double, double, double, double, int),void* arg) {angle = fun; angPtr=arg;};
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -1,650 +0,0 @@
|
||||
#include "FileIO_Standalone.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
string fileIO::createFileName(char *filepath, char *filename, int aMask, double sv0, int prec0, double sv1, int prec1, int pindex, int npos, int findex) {
|
||||
ostringstream osfn;
|
||||
// string fn;
|
||||
/*directory name +root file name */
|
||||
osfn << filepath << "/" << filename;
|
||||
|
||||
// cout << osfn.str() << endl;
|
||||
|
||||
// scan level 0
|
||||
if ( aMask& (1 << (MAX_ACTIONS)))
|
||||
osfn << "_S" << fixed << setprecision(prec0) << sv0;
|
||||
|
||||
//cout << osfn.str() << endl;
|
||||
|
||||
//scan level 1
|
||||
if (aMask & (1 << (MAX_ACTIONS+1)))
|
||||
osfn << "_s" << fixed << setprecision(prec1) << sv1;
|
||||
|
||||
//cout << osfn.str() << endl;
|
||||
|
||||
|
||||
//position
|
||||
if (pindex>0 && pindex<=npos)
|
||||
osfn << "_p" << pindex;
|
||||
|
||||
//cout << osfn.str() << endl;
|
||||
|
||||
// file index
|
||||
osfn << "_" << findex;
|
||||
|
||||
//cout << osfn.str() << endl;
|
||||
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "created file name " << osfn.str() << endl;
|
||||
#endif
|
||||
|
||||
//cout << osfn.str() << endl;
|
||||
//fn=oosfn.str()sfn.str();
|
||||
return osfn.str();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* I/O */
|
||||
|
||||
/* generates file name without extension*/
|
||||
|
||||
string fileIO::createFileName(int aMask, double sv0, int prec0, double sv1, int prec1, int pindex, int npos) {
|
||||
currentFileName=createFileName(filePath, \
|
||||
fileName, \
|
||||
aMask, \
|
||||
sv0, \
|
||||
prec0, \
|
||||
sv1, \
|
||||
prec1, \
|
||||
pindex, \
|
||||
npos, \
|
||||
*fileIndex \
|
||||
);
|
||||
return currentFileName;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int fileIO::getFileIndexFromFileName(string fname) {
|
||||
int i;
|
||||
size_t dot=fname.rfind(".");
|
||||
if (dot==string::npos)
|
||||
return -1;
|
||||
size_t uscore=fname.rfind("_");
|
||||
if (uscore==string::npos)
|
||||
return -1;
|
||||
|
||||
if (sscanf( fname.substr(uscore+1,dot-uscore-1).c_str(),"%d",&i)) {
|
||||
|
||||
return i;
|
||||
}
|
||||
//#ifdef VERBOSE
|
||||
cout << "******************************** cannot parse file index" << endl;
|
||||
//#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fileIO::getVariablesFromFileName(string fname, int &index, int &p_index, double &sv0, double &sv1) {
|
||||
|
||||
int i;
|
||||
double f;
|
||||
string s;
|
||||
|
||||
|
||||
index=-1;
|
||||
p_index=-1;
|
||||
sv0=-1;
|
||||
sv1=-1;
|
||||
|
||||
|
||||
// size_t dot=fname.rfind(".");
|
||||
//if (dot==string::npos)
|
||||
// return -1;
|
||||
size_t uscore=fname.rfind("_");
|
||||
if (uscore==string::npos)
|
||||
return -1;
|
||||
s=fname;
|
||||
|
||||
//if (sscanf(s.substr(uscore+1,dot-uscore-1).c_str(),"%d",&i)) {
|
||||
if (sscanf(s.substr(uscore+1,s.size()-uscore-1).c_str(),"%d",&i)) {
|
||||
index=i;
|
||||
#ifdef VERBOSE
|
||||
cout << "******************************** file index is " << index << endl;
|
||||
#endif
|
||||
//return i;
|
||||
s=fname.substr(0,uscore);
|
||||
}
|
||||
else
|
||||
cout << "******************************** cannot parse file index" << endl;
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << s << endl;
|
||||
#endif
|
||||
|
||||
|
||||
uscore=s.rfind("_");
|
||||
|
||||
|
||||
|
||||
|
||||
if (sscanf( s.substr(uscore+1,s.size()-uscore-1).c_str(),"p%d",&i)) {
|
||||
p_index=i;
|
||||
#ifdef VERBOSE
|
||||
cout << "******************************** position index is " << p_index << endl;
|
||||
#endif
|
||||
s=fname.substr(0,uscore);
|
||||
}
|
||||
else
|
||||
cout << "******************************** cannot parse position index" << endl;
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << s << endl;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
uscore=s.rfind("_");
|
||||
|
||||
|
||||
|
||||
|
||||
if (sscanf( s.substr(uscore+1,s.size()-uscore-1).c_str(),"s%f",&f)) {
|
||||
sv1=f;
|
||||
#ifdef VERBOSE
|
||||
cout << "******************************** scan variable 1 is " << sv1 << endl;
|
||||
#endif
|
||||
s=fname.substr(0,uscore);
|
||||
}
|
||||
else
|
||||
cout << "******************************** cannot parse scan varable 1" << endl;
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << s << endl;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
uscore=s.rfind("_");
|
||||
|
||||
|
||||
|
||||
|
||||
if (sscanf( s.substr(uscore+1,s.size()-uscore-1).c_str(),"S%f",&f)) {
|
||||
sv0=f;
|
||||
#ifdef VERBOSE
|
||||
cout << "******************************** scan variable 0 is " << sv0 << endl;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
cout << "******************************** cannot parse scan varable 0" << endl;
|
||||
|
||||
#ifdef VERBOSE
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int fileIO::writeDataFile(string fname, int nch, double *data, double *err, double *ang, char dataformat){
|
||||
|
||||
|
||||
ofstream outfile;
|
||||
// int idata;
|
||||
if (data==NULL)
|
||||
return FAIL;
|
||||
|
||||
// args|=0x10; // one line per channel!
|
||||
|
||||
outfile.open (fname.c_str(),ios_base::out);
|
||||
if (outfile.is_open())
|
||||
{
|
||||
writeDataFile(outfile, nch, data, err, ang, dataformat, 0);
|
||||
outfile.close();
|
||||
return OK;
|
||||
} else {
|
||||
std::cout<< "Could not open file " << fname << "for writing"<< std::endl;
|
||||
return FAIL;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int fileIO::writeDataFile(ofstream &outfile, int nch, double *data, double *err, double *ang, char dataformat, int offset){
|
||||
|
||||
|
||||
int idata;
|
||||
if (data==NULL)
|
||||
return FAIL;
|
||||
|
||||
// args|=0x10; // one line per channel!
|
||||
|
||||
cout << "Static file " << endl;
|
||||
|
||||
|
||||
for (int ichan=0; ichan<nch; ichan++) {
|
||||
if (ang==NULL) {
|
||||
outfile << ichan+offset << " ";
|
||||
} else {
|
||||
outfile << ang[ichan] << " ";
|
||||
}
|
||||
|
||||
switch (dataformat) {
|
||||
case 'f':
|
||||
outfile << *(data+ichan)<< " ";
|
||||
break;
|
||||
case 'i':
|
||||
default:
|
||||
idata=(int)(*(data+ichan));
|
||||
outfile << idata << " ";
|
||||
}
|
||||
if (err) {
|
||||
outfile << *(err+ichan)<< " ";
|
||||
}
|
||||
// if (args&0x10) {
|
||||
outfile << std::endl;
|
||||
// }
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*writes raw data file */
|
||||
int fileIO::writeDataFile(string fname, int nch, int *data){
|
||||
ofstream outfile;
|
||||
if (data==NULL)
|
||||
return FAIL;
|
||||
|
||||
outfile.open (fname.c_str(),ios_base::out);
|
||||
if (outfile.is_open())
|
||||
{
|
||||
writeDataFile(outfile, nch, data, 0);
|
||||
outfile.close();
|
||||
return OK;
|
||||
} else {
|
||||
std::cout<< "Could not open file " << fname << "for writing"<< std::endl;
|
||||
return FAIL;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*writes raw data file */
|
||||
int fileIO::writeDataFile(ofstream &outfile, int nch, int *data, int offset){
|
||||
if (data==NULL)
|
||||
return FAIL;
|
||||
|
||||
for (int ichan=0; ichan<nch; ichan++)
|
||||
outfile << ichan+offset << " " << *(data+ichan) << std::endl;
|
||||
|
||||
return OK;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*writes raw data file */
|
||||
int fileIO::writeDataFile(string fname, int nch, short int *data){
|
||||
ofstream outfile;
|
||||
if (data==NULL)
|
||||
return FAIL;
|
||||
|
||||
outfile.open (fname.c_str(),ios_base::out);
|
||||
if (outfile.is_open())
|
||||
{
|
||||
writeDataFile(outfile, nch, data, 0);
|
||||
outfile.close();
|
||||
return OK;
|
||||
} else {
|
||||
std::cout<< "Could not open file " << fname << "for writing"<< std::endl;
|
||||
return FAIL;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*writes raw data file */
|
||||
int fileIO::writeDataFile(ofstream &outfile, int nch, short int *data, int offset){
|
||||
if (data==NULL)
|
||||
return FAIL;
|
||||
|
||||
for (int ichan=0; ichan<nch; ichan++)
|
||||
outfile << ichan+offset << " " << *(data+ichan) << std::endl;
|
||||
|
||||
return OK;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int fileIO::readDataFile(int nch, string fname, double *data, double *err, double *ang, char dataformat){
|
||||
|
||||
|
||||
ifstream infile;
|
||||
int iline=0;//ichan,
|
||||
//int interrupt=0;
|
||||
//double fdata, ferr, fang;
|
||||
int maxchans;
|
||||
//int ich;
|
||||
string str;
|
||||
|
||||
|
||||
maxchans=nch;
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Opening file "<< fname << std::endl;
|
||||
#endif
|
||||
infile.open(fname.c_str(), ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
iline=readDataFile(nch, infile, data, err, ang, dataformat, 0);
|
||||
infile.close();
|
||||
} else {
|
||||
std::cout<< "Could not read file " << fname << std::endl;
|
||||
return -1;
|
||||
}
|
||||
return iline;
|
||||
};
|
||||
|
||||
|
||||
int fileIO::readDataFile(int nch, ifstream &infile, double *data, double *err, double *ang, char dataformat, int offset){
|
||||
|
||||
|
||||
int ichan,iline=0;
|
||||
int interrupt=0;
|
||||
double fdata, ferr, fang;
|
||||
int maxchans;
|
||||
int ich;
|
||||
string str;
|
||||
|
||||
|
||||
maxchans=nch;
|
||||
|
||||
|
||||
while (infile.good() and interrupt==0) {
|
||||
getline(infile,str);
|
||||
#ifdef VERBOSE
|
||||
std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
if (ang==NULL) {
|
||||
ssstr >> ichan >> fdata;
|
||||
//ich=ichan;
|
||||
if (ssstr.fail() || ssstr.bad()) {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
// if (ich!=iline)
|
||||
// std::cout<< "Channel number " << ichan << " does not match with line number " << iline << " " << dataformat << std::endl;
|
||||
ich=iline;
|
||||
if (ichan<offset)
|
||||
continue;
|
||||
} else {
|
||||
ssstr >> fang >> fdata;
|
||||
ich=iline;
|
||||
}
|
||||
if (ssstr.fail() || ssstr.bad()) {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
if (err)
|
||||
ssstr >> ferr;
|
||||
if (ssstr.fail() || ssstr.bad()) {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
if (ich<maxchans) {
|
||||
if (ang) {
|
||||
ang[ich]=fang;
|
||||
}
|
||||
data[ich]=fdata;
|
||||
if (err)
|
||||
err[ich]=ferr;
|
||||
iline++;
|
||||
} // else {
|
||||
// std::cout<< " too many lines in file: "<< iline << " instead of " << maxchans << std::endl;
|
||||
// interrupt=1;
|
||||
// break;
|
||||
// }
|
||||
if (iline>=nch) {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return iline;
|
||||
};
|
||||
|
||||
|
||||
|
||||
int fileIO::readDataFile(string fname, int *data, int nch){
|
||||
|
||||
ifstream infile;
|
||||
int iline=0;//ichan, idata,
|
||||
//int interrupt=0;
|
||||
string str;
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Opening file "<< fname << std::endl;
|
||||
#endif
|
||||
infile.open(fname.c_str(), ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
iline=readDataFile(infile, data, nch, 0);
|
||||
infile.close();
|
||||
} else {
|
||||
std::cout<< "Could not read file " << fname << std::endl;
|
||||
return -1;
|
||||
}
|
||||
return iline;
|
||||
};
|
||||
|
||||
int fileIO::readDataFile(ifstream &infile, int *data, int nch, int offset){
|
||||
|
||||
int ichan, idata, iline=0;
|
||||
int interrupt=0;
|
||||
string str;
|
||||
|
||||
|
||||
while (infile.good() and interrupt==0) {
|
||||
getline(infile,str);
|
||||
#ifdef VERBOSE
|
||||
std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
ssstr >> ichan >> idata;
|
||||
if (ssstr.fail() || ssstr.bad()) {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
// if (ichan!=iline) {
|
||||
// std::cout<< " Expected channel "<< iline <<" but read channel "<< ichan << std::endl;
|
||||
// interrupt=1;
|
||||
// break;
|
||||
// } else {
|
||||
if (iline<nch) {
|
||||
if (ichan>=offset) {
|
||||
data[iline]=idata;
|
||||
iline++;
|
||||
}
|
||||
} else {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
// }
|
||||
}
|
||||
return iline;
|
||||
};
|
||||
|
||||
|
||||
int fileIO::readDataFile(string fname, short int *data, int nch){
|
||||
|
||||
ifstream infile;
|
||||
int iline=0;//ichan,
|
||||
//int interrupt=0;
|
||||
string str;
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Opening file "<< fname << std::endl;
|
||||
#endif
|
||||
infile.open(fname.c_str(), ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
iline=readDataFile(infile, data, nch, 0);
|
||||
infile.close();
|
||||
} else {
|
||||
std::cout<< "Could not read file " << fname << std::endl;
|
||||
return -1;
|
||||
}
|
||||
return iline;
|
||||
};
|
||||
|
||||
int fileIO::readDataFile(ifstream &infile, short int *data, int nch, int offset){
|
||||
|
||||
int ichan, iline=0;
|
||||
short int idata;
|
||||
int interrupt=0;
|
||||
string str;
|
||||
while (infile.good() and interrupt==0) {
|
||||
getline(infile,str);
|
||||
#ifdef VERBOSE
|
||||
;//std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
ssstr >> ichan >> idata;
|
||||
if (ssstr.fail() || ssstr.bad()) {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
// if (ichan!=iline) {
|
||||
// std::cout<< " Expected channel "<< iline <<" but read channel "<< ichan << std::endl;
|
||||
// interrupt=1;
|
||||
// break;
|
||||
// } else {
|
||||
if (iline<nch) {
|
||||
if (ichan>=offset) {
|
||||
data[iline]=idata;
|
||||
iline++;
|
||||
}
|
||||
} else {
|
||||
interrupt=1;
|
||||
break;
|
||||
}
|
||||
// }
|
||||
#ifdef VERBOSE
|
||||
;//std::cout<< "read " << iline <<" channels " << std::endl;
|
||||
#endif
|
||||
}
|
||||
return iline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*writes raw data file */
|
||||
|
||||
int fileIO::writeDataFile(string fname, double *data, double *err, double *ang, char dataformat, int nch){
|
||||
if (nch==-1)
|
||||
nch=getTotalNumberofChannels();//getTotalNumberOfChannels();
|
||||
|
||||
return writeDataFile(fname, nch, data, err, ang, dataformat);
|
||||
|
||||
}
|
||||
int fileIO::writeDataFile(ofstream &outfile, double *data, double *err, double *ang, char dataformat, int nch, int offset){
|
||||
if (nch==-1)
|
||||
nch=getTotalNumberofChannels();
|
||||
|
||||
return writeDataFile(outfile, nch, data, err, ang, dataformat, offset);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int fileIO::writeDataFile(string fname, int *data){
|
||||
|
||||
return writeDataFile(fname, getTotalNumberofChannels(), data);
|
||||
}
|
||||
|
||||
int fileIO::writeDataFile(ofstream &outfile, int *data, int offset){
|
||||
|
||||
return writeDataFile(outfile, getTotalNumberofChannels(), data, offset);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int fileIO::writeDataFile(string fname, short int *data){
|
||||
|
||||
return writeDataFile(fname, getTotalNumberofChannels(), data);
|
||||
}
|
||||
|
||||
int fileIO::writeDataFile(ofstream &outfile, short int *data, int offset){
|
||||
|
||||
return writeDataFile(outfile,getTotalNumberofChannels() , data, offset);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int fileIO::readDataFile(string fname, double *data, double *err, double *ang, char dataformat) {
|
||||
return readDataFile(getTotalNumberofChannels(), fname, data, err, ang, dataformat);
|
||||
|
||||
}
|
||||
|
||||
int fileIO::readDataFile(ifstream &infile, double *data, double *err, double *ang, char dataformat, int offset) {
|
||||
return readDataFile(getTotalNumberofChannels(), infile, data, err, ang, dataformat, offset);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
int fileIO::readDataFile(string fname, int *data){
|
||||
|
||||
return readDataFile(fname, data, getTotalNumberofChannels());
|
||||
};
|
||||
|
||||
|
||||
int fileIO::readDataFile(ifstream &infile, int *data, int offset){
|
||||
|
||||
return readDataFile(infile, data, getTotalNumberofChannels(), offset);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int fileIO::readDataFile(string fname, short int *data){
|
||||
|
||||
return readDataFile(fname, data, getTotalNumberofChannels());
|
||||
};
|
||||
|
||||
|
||||
int fileIO::readDataFile(ifstream &infile, short int *data, int offset){
|
||||
|
||||
return readDataFile(infile, data, getTotalNumberofChannels(),offset);
|
||||
};
|
||||
|
@ -1,410 +0,0 @@
|
||||
#ifndef FILEIOSTD_H
|
||||
#define FILEIOSTD_H
|
||||
|
||||
//#include "slsDetectorBase.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <queue>
|
||||
#include <math.h>
|
||||
|
||||
;
|
||||
/**
|
||||
@short class handling the data file I/O flags
|
||||
*/
|
||||
|
||||
class fileIO : public virtual slsDetectorDefs {//public virtual slsDetectorBase {
|
||||
|
||||
|
||||
|
||||
public:
|
||||
/** default constructor */
|
||||
fileIO(){};
|
||||
/** virtual destructor */
|
||||
virtual ~fileIO(){};
|
||||
|
||||
int setTotalNumberofChannels(int i){ if (i>=0) {totalNumberofChannels=i; return totalNumberofChannels;} else return -1;};
|
||||
int getTotalNumberofChannels(){ return totalNumberofChannels; };
|
||||
/**
|
||||
sets the default output files path
|
||||
\param s file path
|
||||
\return actual file path
|
||||
*/
|
||||
string setFilePath(string s) {sprintf(filePath, s.c_str()); return string(filePath);};
|
||||
|
||||
/**
|
||||
sets the default output files root name
|
||||
\param s file name to be set
|
||||
\returns actual file name
|
||||
*/
|
||||
string setFileName(string s) {sprintf(fileName, s.c_str()); return string(fileName);};
|
||||
|
||||
/**
|
||||
sets the default output file index
|
||||
\param i start file index to be set
|
||||
\returns actual file index
|
||||
*/
|
||||
int setFileIndex(int i) {*fileIndex=i; return *fileIndex;};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
\returns the output files path
|
||||
|
||||
*/
|
||||
string getFilePath() {return string(filePath);};
|
||||
|
||||
/**
|
||||
\returns the output files root name
|
||||
*/
|
||||
string getFileName() {return string(fileName);};
|
||||
|
||||
/**
|
||||
\returns the output file index
|
||||
*/
|
||||
int getFileIndex() {return *fileIndex;};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** generates file name without extension
|
||||
|
||||
always appends to file path and file name the run index.
|
||||
|
||||
in case also appends the position index and the two level of scan varaibles with the specified precision
|
||||
|
||||
Filenames will be of the form: filepath/filename(_Sy_sw_px)_i
|
||||
where y is the scan0 variable, W is the scan 1 variable, x is the position index and i is the run index
|
||||
\param filepath outdir
|
||||
\param filename file root name
|
||||
\param aMask action mask (scans, positions)
|
||||
\param sv0 scan variable 0
|
||||
\param prec0 scan precision 0
|
||||
\param sv1 scan variable 1
|
||||
\param prec1 scan precision 1
|
||||
\param pindex position index
|
||||
\param number of positions
|
||||
\param findex file index
|
||||
\returns file name without extension
|
||||
*/
|
||||
static string createFileName(char *filepath, char *filename, int aMask, double sv0, int prec0, double sv1, int prec1, int pindex, int npos, int findex);
|
||||
|
||||
|
||||
string createFileName(int aMask, double sv0, int prec0, double sv1, int prec1, int pindex, int npos);
|
||||
|
||||
|
||||
/** static function that returns the file index from the file name
|
||||
\param fname file name
|
||||
\returns file index
|
||||
*/
|
||||
int getFileIndexFromFileName(string fname);
|
||||
|
||||
/** static function that returns the variables from the file name
|
||||
\param fname file name
|
||||
\param index reference to index
|
||||
\param p_index reference to position index
|
||||
\param sv0 reference to scan variable 0
|
||||
\param sv1 reference to scan variable 1
|
||||
\returns file index
|
||||
*/
|
||||
static int getVariablesFromFileName(string fname, int &index, int &p_index, double &sv0, double &sv1);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
writes a data file
|
||||
\param fname of the file to be written
|
||||
\param data array of data values
|
||||
\param err array of arrors on the data. If NULL no errors will be written
|
||||
|
||||
\param ang array of angular values. If NULL data will be in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
\param nch number of channels to be written to file. if -1 defaults to the number of installed channels of the detector
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
|
||||
*/
|
||||
virtual int writeDataFile(string fname, double *data, double *err=NULL, double *ang=NULL, char dataformat='f', int nch=-1);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
writes a data file
|
||||
\paramoutfile output file stream
|
||||
\param data array of data values
|
||||
\param err array of arrors on the data. If NULL no errors will be written
|
||||
|
||||
\param ang array of angular values. If NULL data will be in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
\param nch number of channels to be written to file. if -1 defaults to the number of installed channels of the detector
|
||||
\param offset start channel number
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
|
||||
*/
|
||||
int writeDataFile(ofstream &outfile, double *data, double *err=NULL, double *ang=NULL, char dataformat='f', int nch=-1, int offset=0);
|
||||
|
||||
|
||||
/**
|
||||
writes a data file
|
||||
\param fname of the file to be written
|
||||
\param data array of data values
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
virtual int writeDataFile(string fname, int *data);
|
||||
|
||||
/**
|
||||
writes a data file
|
||||
\param outfile output file stream
|
||||
\param data array of data values
|
||||
\param offset start channel number
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
int writeDataFile(ofstream &outfile, int *data, int offset=0);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
writes a data file of short ints
|
||||
\param fname of the file to be written
|
||||
\param data array of data values
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
virtual int writeDataFile(string fname, short int *data);
|
||||
|
||||
/**
|
||||
writes a data file of short ints
|
||||
\param outfile output file stream
|
||||
\param data array of data values
|
||||
\param offset start channel number
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
int writeDataFile(ofstream &outfile, short int *data, int offset=0);
|
||||
|
||||
|
||||
/**
|
||||
reads a data file
|
||||
\param fname of the file to be read
|
||||
\param data array of data values to be filled
|
||||
\param err array of arrors on the data. If NULL no errors are expected on the file
|
||||
|
||||
\param ang array of angular values. If NULL data are expected in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
virtual int readDataFile(string fname, double *data, double *err=NULL, double *ang=NULL, char dataformat='f');
|
||||
|
||||
/**
|
||||
reads a data file
|
||||
\param ifstream input file stream
|
||||
\param data array of data values to be filled
|
||||
\param err array of arrors on the data. If NULL no errors are expected on the file
|
||||
|
||||
\param ang array of angular values. If NULL data are expected in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param offset start channel number to be expected
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
int readDataFile(ifstream& infile, double *data, double *err=NULL, double *ang=NULL, char dataformat='f', int offset=0);
|
||||
|
||||
/**
|
||||
reads a raw data file
|
||||
\param fname of the file to be read
|
||||
\param data array of data values
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
virtual int readDataFile(string fname, int *data); /**
|
||||
reads a raw data file
|
||||
\param infile input file stream
|
||||
\param data array of data values
|
||||
\param offset first channel number to be expected
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
int readDataFile(ifstream &infile, int *data, int offset=0);
|
||||
|
||||
/**
|
||||
|
||||
reads a short int raw data file
|
||||
\param fname of the file to be read
|
||||
\param data array of data values
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
virtual int readDataFile(string fname, short int *data);
|
||||
/**
|
||||
reads a short int raw data file
|
||||
\param infile input file stream
|
||||
\param data array of data values
|
||||
\param offset first channel number to be expected
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
int readDataFile(ifstream &infile, short int *data, int offset=0);
|
||||
|
||||
/**
|
||||
|
||||
writes a data file
|
||||
\param fname of the file to be written
|
||||
\param nch number of channels to be written
|
||||
\param data array of data values
|
||||
\param err array of arrors on the data. If NULL no errors will be written
|
||||
\param ang array of angular values. If NULL data will be in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
|
||||
*/
|
||||
|
||||
static int writeDataFile(string fname, int nch, double *data, double *err=NULL, double *ang=NULL, char dataformat='f');
|
||||
/**
|
||||
writes a data file
|
||||
\param outfile output file stream
|
||||
\param nch number of channels to be written
|
||||
\param data array of data values
|
||||
\param err array of arrors on the data. If NULL no errors will be written
|
||||
\param ang array of angular values. If NULL data will be in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
\param offset start channel number
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
static int writeDataFile(ofstream &outfile, int nch, double *data, double *err=NULL, double *ang=NULL, char dataformat='f', int offset=0);
|
||||
|
||||
/**
|
||||
writes a raw data file
|
||||
\param fname of the file to be written
|
||||
\param nch number of channels
|
||||
\param data array of data values
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
static int writeDataFile(string fname,int nch, int *data);
|
||||
|
||||
/**
|
||||
writes a raw data file
|
||||
\param outfile output file stream
|
||||
\param nch number of channels
|
||||
\param data array of data values
|
||||
\param offset start channel number
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
static int writeDataFile(ofstream &outfile,int nch, int *data, int offset=0);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
writes a short int raw data file
|
||||
\param fname of the file to be written
|
||||
\param nch number of channels
|
||||
\param data array of data values
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
static int writeDataFile(string fname,int nch, short int *data);
|
||||
|
||||
/**
|
||||
writes a short int raw data file
|
||||
\param outfile output file stream
|
||||
\param nch number of channels
|
||||
\param data array of data values
|
||||
\param offset start channel number
|
||||
\returns OK or FAIL if it could not write the file or data=NULL
|
||||
*/
|
||||
static int writeDataFile(ofstream &outfile,int nch, short int *data, int offset=0);
|
||||
|
||||
|
||||
/**
|
||||
reads a data file
|
||||
\param nch number of channels
|
||||
\param fname of the file to be read
|
||||
\param data array of data values to be filled
|
||||
\param err array of arrors on the data. If NULL no errors are expected on the file
|
||||
\param ang array of angular values. If NULL data are expected in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
\returns number of channels read or -1 if it could not read the file or data=NULL
|
||||
|
||||
*/
|
||||
static int readDataFile(int nch, string fname, double *data, double *err=NULL, double *ang=NULL, char dataformat='f');
|
||||
/**
|
||||
reads a data file
|
||||
\param nch number of channels
|
||||
\param infile input file stream
|
||||
\param data array of data values to be filled
|
||||
\param err array of arrors on the data. If NULL no errors are expected on the file
|
||||
\param ang array of angular values. If NULL data are expected in the form chan-val(-err) otherwise ang-val(-err)
|
||||
\param dataformat format of the data: can be 'i' integer or 'f' double (default)
|
||||
\param offset start channel number
|
||||
\returns number of channels read or -1 if it could not read the file or data=NULL
|
||||
|
||||
*/
|
||||
static int readDataFile(int nch, ifstream &infile, double *data, double *err=NULL, double *ang=NULL, char dataformat='f', int offset=0);
|
||||
|
||||
/**
|
||||
reads a raw data file
|
||||
\param fname of the file to be read
|
||||
\param data array of data values
|
||||
\param nch number of channels
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
static int readDataFile(string fname, int *data, int nch);
|
||||
|
||||
/**
|
||||
reads a raw data file
|
||||
\param infile input file stream
|
||||
\param data array of data values
|
||||
\param nch number of channels
|
||||
\param offset start channel value
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
static int readDataFile(ifstream &infile, int *data, int nch, int offset);
|
||||
|
||||
/**
|
||||
reads a short int rawdata file
|
||||
\param name of the file to be read
|
||||
\param data array of data values
|
||||
\param nch number of channels
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
static int readDataFile(string fname, short int *data, int nch);
|
||||
/**
|
||||
reads a short int raw data file
|
||||
\param infile input file stream
|
||||
\param data array of data values
|
||||
\param nch number of channels
|
||||
\param offset start channel value
|
||||
\returns OK or FAIL if it could not read the file or data=NULL
|
||||
*/
|
||||
static int readDataFile(ifstream &infile, short int *data, int nch, int offset);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void incrementFileIndex() { (*fileIndex)++;};
|
||||
|
||||
string getCurrentFileName(){return currentFileName;};
|
||||
|
||||
protected:
|
||||
string currentFileName;
|
||||
|
||||
|
||||
int mask_action;
|
||||
double currentscan_variable[1];
|
||||
int scan_precision[1];
|
||||
int currentpostion_i;
|
||||
int noposition;
|
||||
|
||||
/** output directory */
|
||||
char *filePath;
|
||||
/** file root name */
|
||||
char *fileName;
|
||||
/** file index */
|
||||
int *fileIndex;
|
||||
|
||||
private:
|
||||
|
||||
int totalNumberofChannels;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -1,87 +0,0 @@
|
||||
#---------------------------------------------------
|
||||
|
||||
|
||||
include Makefile.arch
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
SLSDETO = TSlsDetectorDict.$(ObjSuf) energyCalibration.$(ObjSuf) angularCalibration.$(ObjSuf)
|
||||
|
||||
SLSDETSO = libTSlsDetector.$(DllSuf)
|
||||
|
||||
CXXFLAGS += -Wno-deprecated
|
||||
#LIBS += -L../slsDetectorSoftware -lSlsDetector -pthread
|
||||
|
||||
CXXFLAGS += -I ../usersFunctions
|
||||
|
||||
HEADERS= energyCalibration.h angularCalibration.h
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
#----------- do the shared library
|
||||
$(SLSDETSO): $(SLSDETO)
|
||||
@echo "Generating shared library $@..."
|
||||
$(LD) $(SOFLAGS) $(LDFLAGS) -o $@ $(LIBS) $^
|
||||
|
||||
|
||||
# ---------- Default rule
|
||||
|
||||
%.$(ObjSuf): %.cpp
|
||||
@echo "Compiling source $@..."
|
||||
$(CXX) $(CXXFLAGS) -c $<
|
||||
|
||||
|
||||
#----------- do the dictionary
|
||||
TSlsDetectorDict.$(SrcSuf): $(HEADERS)
|
||||
@echo "Generating dictionary $@..."
|
||||
rootcint -f $@ -c -p $^
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
all: $(SLSDETSO)
|
||||
|
||||
clean:
|
||||
@rm -f $(SLSDETO) core
|
||||
|
||||
distclean: clean
|
||||
@rm -f *Dict.* *.so *.o
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,575 +0,0 @@
|
||||
# -*- mode: makefile -*-
|
||||
#
|
||||
# Makefile containing platform dependencies for ROOT based projects.
|
||||
#
|
||||
# Copyright (c) 2000 Rene Brun and Fons Rademakers
|
||||
#
|
||||
# Author: Fons Rademakers, 29/2/2000
|
||||
|
||||
ROOTCONFIG := root-config
|
||||
|
||||
ARCH := $(shell $(ROOTCONFIG) --arch)
|
||||
PLATFORM := $(shell $(ROOTCONFIG) --platform)
|
||||
ALTCC := $(shell $(ROOTCONFIG) --cc)
|
||||
ALTCXX := $(shell $(ROOTCONFIG) --cxx)
|
||||
ALTF77 := $(shell $(ROOTCONFIG) --f77)
|
||||
ALTLD := $(shell $(ROOTCONFIG) --ld)
|
||||
|
||||
#CXX =
|
||||
ObjSuf = o
|
||||
SrcSuf = cpp
|
||||
ExeSuf =
|
||||
DllSuf = so
|
||||
OutPutOpt = -o # keep whitespace after "-o"
|
||||
|
||||
ifeq (debug,$(findstring debug,$(ROOTBUILD)))
|
||||
OPT = -g
|
||||
OPT2 = -g
|
||||
else
|
||||
ifneq ($(findstring debug, $(strip $(shell $(ROOTCONFIG) --config))),)
|
||||
OPT = -g
|
||||
OPT2 = -g
|
||||
else
|
||||
OPT = -O
|
||||
OPT2 = -O2
|
||||
endif
|
||||
endif
|
||||
|
||||
ROOTCFLAGS := $(shell $(ROOTCONFIG) --cflags)
|
||||
ROOTLDFLAGS := $(shell $(ROOTCONFIG) --ldflags)
|
||||
ROOTLIBS := $(shell $(ROOTCONFIG) --libs)
|
||||
ROOTGLIBS := $(shell $(ROOTCONFIG) --glibs)
|
||||
HASTHREAD := $(shell $(ROOTCONFIG) --has-thread)
|
||||
ROOTDICTTYPE := $(shell $(ROOTCONFIG) --dicttype)
|
||||
NOSTUBS := $(shell $(ROOTCONFIG) --nostubs)
|
||||
ROOTCINT := rootcint
|
||||
|
||||
# Stub Functions Generation
|
||||
ifeq ($(NOSTUBS),yes)
|
||||
ROOTCINT = export CXXFLAGS="$(CXXFLAGS)"; $(ROOTSYS)/core/utils/src/rootcint_nostubs.sh -$(ROOTDICTTYPE)
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),hpuxacc)
|
||||
# HP-UX 10.x with aCC
|
||||
CXX = aCC
|
||||
CXXFLAGS = $(OPT) +Z
|
||||
LD = aCC
|
||||
LDFLAGS = $(OPT) -z
|
||||
SOFLAGS = -b
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),hpuxia64acc)
|
||||
# HP-UX 11i 1.5 (IA-64) with aCC
|
||||
CXX = aCC
|
||||
CXXFLAGS = +DD64 $(OPT) +Z
|
||||
LD = aCC
|
||||
LDFLAGS = +DD64 $(OPT) -z
|
||||
SOFLAGS = -b
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),hpuxgcc)
|
||||
# HP-UX 10.x with g++
|
||||
CXXFLAGS = $(OPT) -fPIC
|
||||
CXX = g++
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -fPIC -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),hurddeb)
|
||||
# GNU/Hurd
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),aix)
|
||||
# IBM AIX xlC 4.x
|
||||
CXX = xlC
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = xlC
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS =
|
||||
DllSuf = a
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),aix5)
|
||||
# IBM AIX xlC 5.x
|
||||
CXX = xlC
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = xlC
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS =
|
||||
DllSuf = a
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),aixgcc)
|
||||
# IBM AIX with GCC
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
DllSuf = a
|
||||
EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS)
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),solaris)
|
||||
# Solaris CC
|
||||
CXX = /opt/SUNWspro/bin/CC
|
||||
CXXFLAGS = $(OPT) -KPIC
|
||||
LD = /opt/SUNWspro/bin/CC
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -G
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),solarisCC5)
|
||||
# Solaris CC 5.0
|
||||
CXX = CC
|
||||
CXXFLAGS = $(OPT) -KPIC
|
||||
LD = CC
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -G
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),solarisgcc)
|
||||
# Solaris gcc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),solariskcc)
|
||||
# Solaris kcc
|
||||
CXX = KCC --one_instantiation_per_object
|
||||
CXXFLAGS = -O4 -KPIC
|
||||
LD = KCC
|
||||
LDFLAGS = -O4
|
||||
SOFLAGS =
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),solarisx86)
|
||||
# Solaris CC on Intel
|
||||
CXX = CC
|
||||
CXXFLAGS = $(OPT) -KPIC
|
||||
LD = CC
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -G
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),sgicc)
|
||||
# SGI
|
||||
CXX = CC -n32 -I/usr/include/CC.sgi
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = CC -n32 -LANG:std -I/usr/include/CC.sgi
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),sgicc64)
|
||||
# SGI
|
||||
CXX = CC -64 -I/usr/include/CC.sgi
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = CC -64 -LANG:std -I/usr/include/CC.sgi
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),sgigcc)
|
||||
# SGI 6.x with gcc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT) -Wl,-u,__builtin_new -Wl,-u,__builtin_delete -Wl,-u,__nw__FUiPv
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),sgin32gcc)
|
||||
# SGI 6.x with gcc for n32 ABI
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT) -L/usr/lib32 -Wl,-woff,134 -lgen
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),sgikcc)
|
||||
# SGI with KCC
|
||||
CXX = KCC -n32 --one_instantiation_per_object
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = KCC -n32
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS =
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),alphagcc)
|
||||
# Alpha/OSF with gcc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -Wl,-expect_unresolved,* -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),alphakcc)
|
||||
# Alpha/OSF with kai compiler (not yet valid)
|
||||
CXX = KCC --one_instantiation_per_object
|
||||
CXXFLAGS = $(OPT) -fPIC
|
||||
LD = KCC
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -Wl,-expect_unresolved,* -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),alphacxx6)
|
||||
# Alpha/OSF with cxx6
|
||||
CXX = cxx
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = cxx
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared -nocxxstd -Wl,-expect_unresolved,*,-msym
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxdeb2ppc)
|
||||
# Debian/Linux on the PowerPC
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linux)
|
||||
# Linux with egcs, gcc 2.9x, gcc 3.x
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxkcc)
|
||||
# Linux with the KAI compiler
|
||||
CXX = KCC --one_instantiation_per_object
|
||||
CXXFLAGS = $(OPT) -fPIC +K0
|
||||
LD = KCC
|
||||
LDFLAGS = $(OPT) $(shell $(ROOTCONFIG) --cflags)
|
||||
SOFLAGS =
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxicc)
|
||||
# Linux with Intel icc compiler
|
||||
ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
|
||||
cut -d'.' -f1)
|
||||
ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
|
||||
cut -d'.' -f2)
|
||||
CXX = icc
|
||||
CXXFLAGS = $(OPT) -fPIC -wd1476
|
||||
LD = icpc
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxppcgcc)
|
||||
# PPC Linux with gcc and glibc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxia64gcc)
|
||||
# Itanium Linux with gcc 2.9x
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxia64sgi)
|
||||
# Itanium Linux with sgiCC
|
||||
CXX = sgiCC
|
||||
CXXFLAGS = $(OPT) -Wall -fPIC
|
||||
LD = gsgiCC
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxia64ecc)
|
||||
# Itanium Linux with Intel icc (was ecc)
|
||||
ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
|
||||
cut -d'.' -f1)
|
||||
ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
|
||||
cut -d'.' -f2)
|
||||
CXX = icc
|
||||
CXXFLAGS = $(OPT) -fPIC -wd1476 -ftz
|
||||
LD = icpc
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxx8664gcc)
|
||||
# AMD Opteron and Intel EM64T (64 bit mode) Linux with gcc 3.x
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxppc64gcc)
|
||||
# PPC64 Linux with gcc 3.x
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxx8664icc)
|
||||
# AMD Opteron and Intel EM64T (64 bit mode) Linux with Intel icc compiler
|
||||
CXX = icc
|
||||
CXXFLAGS = $(OPT) -fPIC -wd1476 -wd1572
|
||||
LD = icpc
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxalphagcc)
|
||||
# Alpha Linux with gcc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxmips)
|
||||
# GNU/Linux on mips (BE/LE, O32/N32/N64) with gcc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxhppa)
|
||||
# GNU/Linux on hppa with gcc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT2)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),linuxarm)
|
||||
# ARM Linux with egcs
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),freebsd4)
|
||||
# FreeBSD with glibc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -W -Wall -fPIC
|
||||
LD = $(CXX)
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared -Wl,-x
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),freebsd5)
|
||||
# FreeBSD with glibc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -W -Wall -fPIC
|
||||
LD = $(CXX)
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared -Wl,-x
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),freebsd7)
|
||||
# FreeBSD with libc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -W -Wall -fPIC
|
||||
LD = $(CXX)
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared -Wl,-x
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),openbsd)
|
||||
# OpenBSD with libc
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -pipe -W -Wall -fPIC
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT)
|
||||
SOFLAGS = -shared -Wl,-x
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),macosx)
|
||||
# MacOS X with cc (GNU cc 2.95.2 and gcc 3.3)
|
||||
MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
|
||||
MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
|
||||
LD = $(MACOSXTARGET) g++
|
||||
LDFLAGS = $(OPT2)
|
||||
# The SOFLAGS will be used to create the .dylib,
|
||||
# the .so will be created separately
|
||||
ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
|
||||
DllSuf = so
|
||||
else
|
||||
DllSuf = dylib
|
||||
endif
|
||||
UNDEFOPT = dynamic_lookup
|
||||
ifneq ($(subst $(MACOSX_MINOR),,12),12)
|
||||
UNDEFOPT = suppress
|
||||
LD = g++
|
||||
endif
|
||||
SOFLAGS = -dynamiclib -single_module -undefined $(UNDEFOPT) -install_name $(CURDIR)/
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),macosxicc)
|
||||
# MacOS X with Intel icc compiler
|
||||
MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
|
||||
MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
|
||||
ifeq ($(MACOSX_MINOR),5)
|
||||
MACOSX_MINOR := 4
|
||||
endif
|
||||
CXX = icc
|
||||
CXXFLAGS = $(OPT) -fPIC -wd1476
|
||||
LD = $(MACOSXTARGET) icpc
|
||||
LDFLAGS = $(OPT)
|
||||
# The SOFLAGS will be used to create the .dylib,
|
||||
# the .so will be created separately
|
||||
ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
|
||||
DllSuf = so
|
||||
else
|
||||
DllSuf = dylib
|
||||
endif
|
||||
SOFLAGS = -dynamiclib -single_module -undefined dynamic_lookup -install_name $(CURDIR)/
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),macosx64)
|
||||
# MacOS X >= 10.4 with gcc 64 bit mode (GNU gcc 4.*)
|
||||
# Only specific option (-m64) comes from root-config
|
||||
MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
|
||||
MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
|
||||
LD = $(MACOSXTARGET) g++
|
||||
LDFLAGS = $(OPT2)
|
||||
# The SOFLAGS will be used to create the .dylib,
|
||||
# the .so will be created separately
|
||||
ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
|
||||
DllSuf = so
|
||||
else
|
||||
DllSuf = dylib
|
||||
endif
|
||||
SOFLAGS = -dynamiclib -single_module -undefined dynamic_lookup -install_name $(CURDIR)/
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),macosxxlc)
|
||||
# MacOS X with IBM xlC compiler
|
||||
MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
|
||||
MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
|
||||
CXX = xlC
|
||||
CXXFLAGS = $(OPT)
|
||||
LD = $(MACOSXTARGET) xlC
|
||||
LDFLAGS = $(OPT) -Wl,-bind_at_load
|
||||
# The SOFLAGS will be used to create the .dylib,
|
||||
# the .so will be created separately
|
||||
DllSuf = dylib
|
||||
UNDEFOPT = dynamic_lookup
|
||||
ifneq ($(subst $(MACOSX_MINOR),,12),12)
|
||||
UNDEFOPT = suppress
|
||||
LD = xlC
|
||||
endif
|
||||
SOFLAGS = -qmkshrobj -single_module -undefined $(UNDEFOPT) -install_name $(CURDIR)/
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),win32)
|
||||
# Windows with the VC++ compiler
|
||||
VC_MAJOR := $(shell unset VS_UNICODE_OUTPUT; cl.exe 2>&1 | awk '{ if (NR==1) print $$8 }' | \
|
||||
cut -d'.' -f1)
|
||||
ObjSuf = obj
|
||||
SrcSuf = cxx
|
||||
ExeSuf = .exe
|
||||
DllSuf = dll
|
||||
OutPutOpt = -out:
|
||||
CXX = cl
|
||||
ifeq (debug,$(findstring debug,$(ROOTBUILD)))
|
||||
CXXOPT = -Z7
|
||||
LDOPT = -debug
|
||||
else
|
||||
ifneq ($(findstring debug, $(strip $(shell $(ROOTCONFIG) --config))),)
|
||||
CXXOPT = -Z7
|
||||
LDOPT = -debug
|
||||
else
|
||||
CXXOPT = -O2
|
||||
LDOPT = -opt:ref
|
||||
endif
|
||||
endif
|
||||
ROOTINCDIR := -I$(shell cygpath -m `$(ROOTCONFIG) --incdir`)
|
||||
CXXFLAGS = $(CXXOPT) -nologo $(ROOTINCDIR) -FIw32pragma.h
|
||||
LD = link
|
||||
LDFLAGS = $(LDOPT) -nologo
|
||||
SOFLAGS = -DLL
|
||||
|
||||
EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS)
|
||||
ifneq (,$(findstring $(VC_MAJOR),14 15))
|
||||
MT_EXE = mt -nologo -manifest $@.manifest -outputresource:$@\;1; rm -f $@.manifest
|
||||
MT_DLL = mt -nologo -manifest $@.manifest -outputresource:$@\;2; rm -f $@.manifest
|
||||
else
|
||||
MT_EXE =
|
||||
MT_DLL =
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),win32gcc)
|
||||
# Windows with gcc
|
||||
DllSuf = dll
|
||||
ExeSuf = .exe
|
||||
CXX = g++
|
||||
CXXFLAGS = $(OPT) -pipe -Wall -Woverloaded-virtual -I/usr/X11R6/include
|
||||
LD = g++
|
||||
LDFLAGS = $(OPT) -Wl,--enable-auto-import \
|
||||
-Wl,--enable-runtime-pseudo-reloc \
|
||||
-L/usr/X11R6/lib
|
||||
SOFLAGS = -shared -Wl,--enable-auto-image-base \
|
||||
-Wl,--export-all-symbols
|
||||
EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS)
|
||||
endif
|
||||
|
||||
ifeq ($(CXX),)
|
||||
$(error $(ARCH) invalid architecture)
|
||||
endif
|
||||
|
||||
CXXFLAGS += $(ROOTCFLAGS)
|
||||
LDFLAGS += $(ROOTLDFLAGS)
|
||||
LIBS = $(ROOTLIBS) $(SYSLIBS)
|
||||
GLIBS = $(ROOTGLIBS) $(SYSLIBS)
|
||||
|
||||
ifneq ($(ALTCC),)
|
||||
CC = $(ALTCC)
|
||||
endif
|
||||
ifneq ($(ALTCXX),)
|
||||
CXX = $(ALTCXX)
|
||||
endif
|
||||
ifneq ($(ALTF77),)
|
||||
F77 = $(ALTF77)
|
||||
endif
|
||||
ifneq ($(ALTLD),)
|
||||
LD = $(ALTLD)
|
||||
endif
|
||||
|
||||
ifneq ($(findstring g++, $(CXX)),)
|
||||
GCC_MAJOR := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f1)
|
||||
GCC_MINOR := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f2)
|
||||
endif
|
@ -1,691 +0,0 @@
|
||||
//
|
||||
// File generated by rootcint at Thu Mar 29 16:09:00 2012
|
||||
|
||||
// Do NOT change. Changes will be lost next time file is generated
|
||||
//
|
||||
|
||||
#include "RConfig.h" //rootcint 4834
|
||||
#if !defined(R__ACCESS_IN_SYMBOL)
|
||||
//Break the privacy of classes -- Disabled for the moment
|
||||
#define private public
|
||||
#define protected public
|
||||
#endif
|
||||
|
||||
// Since CINT ignores the std namespace, we need to do so in this file.
|
||||
namespace std {} using namespace std;
|
||||
#include "TSlsDetectorDict.h"
|
||||
|
||||
#include "TClass.h"
|
||||
#include "TBuffer.h"
|
||||
#include "TMemberInspector.h"
|
||||
#include "TError.h"
|
||||
|
||||
#ifndef G__ROOT
|
||||
#define G__ROOT
|
||||
#endif
|
||||
|
||||
#include "RtypesImp.h"
|
||||
#include "TIsAProxy.h"
|
||||
|
||||
// START OF SHADOWS
|
||||
|
||||
namespace ROOT {
|
||||
namespace Shadow {
|
||||
} // of namespace Shadow
|
||||
} // of namespace ROOT
|
||||
// END OF SHADOWS
|
||||
|
||||
namespace ROOT {
|
||||
void energyCalibration_ShowMembers(void *obj, TMemberInspector &R__insp, char *R__parent);
|
||||
static void energyCalibration_Dictionary();
|
||||
static void *new_energyCalibration(void *p = 0);
|
||||
static void *newArray_energyCalibration(Long_t size, void *p);
|
||||
static void delete_energyCalibration(void *p);
|
||||
static void deleteArray_energyCalibration(void *p);
|
||||
static void destruct_energyCalibration(void *p);
|
||||
|
||||
// Function generating the singleton type initializer
|
||||
static TGenericClassInfo *GenerateInitInstanceLocal(const ::energyCalibration*)
|
||||
{
|
||||
::energyCalibration *ptr = 0;
|
||||
static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(::energyCalibration),0);
|
||||
static ::ROOT::TGenericClassInfo
|
||||
instance("energyCalibration", "./energyCalibration.h", 168,
|
||||
typeid(::energyCalibration), DefineBehavior(ptr, ptr),
|
||||
0, &energyCalibration_Dictionary, isa_proxy, 0,
|
||||
sizeof(::energyCalibration) );
|
||||
instance.SetNew(&new_energyCalibration);
|
||||
instance.SetNewArray(&newArray_energyCalibration);
|
||||
instance.SetDelete(&delete_energyCalibration);
|
||||
instance.SetDeleteArray(&deleteArray_energyCalibration);
|
||||
instance.SetDestructor(&destruct_energyCalibration);
|
||||
return &instance;
|
||||
}
|
||||
TGenericClassInfo *GenerateInitInstance(const ::energyCalibration*)
|
||||
{
|
||||
return GenerateInitInstanceLocal((::energyCalibration*)0);
|
||||
}
|
||||
// Static variable to force the class initialization
|
||||
static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::energyCalibration*)0x0); R__UseDummy(_R__UNIQUE_(Init));
|
||||
|
||||
// Dictionary for non-ClassDef classes
|
||||
static void energyCalibration_Dictionary() {
|
||||
::ROOT::GenerateInitInstanceLocal((const ::energyCalibration*)0x0)->GetClass();
|
||||
}
|
||||
|
||||
} // end of namespace ROOT
|
||||
|
||||
namespace ROOT {
|
||||
void angularCalibration_ShowMembers(void *obj, TMemberInspector &R__insp, char *R__parent);
|
||||
static void angularCalibration_Dictionary();
|
||||
static void *new_angularCalibration(void *p = 0);
|
||||
static void *newArray_angularCalibration(Long_t size, void *p);
|
||||
static void delete_angularCalibration(void *p);
|
||||
static void deleteArray_angularCalibration(void *p);
|
||||
static void destruct_angularCalibration(void *p);
|
||||
|
||||
// Function generating the singleton type initializer
|
||||
static TGenericClassInfo *GenerateInitInstanceLocal(const ::angularCalibration*)
|
||||
{
|
||||
::angularCalibration *ptr = 0;
|
||||
static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(::angularCalibration),0);
|
||||
static ::ROOT::TGenericClassInfo
|
||||
instance("angularCalibration", "./angularCalibration.h", 35,
|
||||
typeid(::angularCalibration), DefineBehavior(ptr, ptr),
|
||||
0, &angularCalibration_Dictionary, isa_proxy, 0,
|
||||
sizeof(::angularCalibration) );
|
||||
instance.SetNew(&new_angularCalibration);
|
||||
instance.SetNewArray(&newArray_angularCalibration);
|
||||
instance.SetDelete(&delete_angularCalibration);
|
||||
instance.SetDeleteArray(&deleteArray_angularCalibration);
|
||||
instance.SetDestructor(&destruct_angularCalibration);
|
||||
return &instance;
|
||||
}
|
||||
TGenericClassInfo *GenerateInitInstance(const ::angularCalibration*)
|
||||
{
|
||||
return GenerateInitInstanceLocal((::angularCalibration*)0);
|
||||
}
|
||||
// Static variable to force the class initialization
|
||||
static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::angularCalibration*)0x0); R__UseDummy(_R__UNIQUE_(Init));
|
||||
|
||||
// Dictionary for non-ClassDef classes
|
||||
static void angularCalibration_Dictionary() {
|
||||
::ROOT::GenerateInitInstanceLocal((const ::angularCalibration*)0x0)->GetClass();
|
||||
}
|
||||
|
||||
} // end of namespace ROOT
|
||||
|
||||
namespace ROOT {
|
||||
// Wrappers around operator new
|
||||
static void *new_energyCalibration(void *p) {
|
||||
return p ? ::new((::ROOT::TOperatorNewHelper*)p) ::energyCalibration : new ::energyCalibration;
|
||||
}
|
||||
static void *newArray_energyCalibration(Long_t nElements, void *p) {
|
||||
return p ? ::new((::ROOT::TOperatorNewHelper*)p) ::energyCalibration[nElements] : new ::energyCalibration[nElements];
|
||||
}
|
||||
// Wrapper around operator delete
|
||||
static void delete_energyCalibration(void *p) {
|
||||
delete ((::energyCalibration*)p);
|
||||
}
|
||||
static void deleteArray_energyCalibration(void *p) {
|
||||
delete [] ((::energyCalibration*)p);
|
||||
}
|
||||
static void destruct_energyCalibration(void *p) {
|
||||
typedef ::energyCalibration current_t;
|
||||
((current_t*)p)->~current_t();
|
||||
}
|
||||
} // end of namespace ROOT for class ::energyCalibration
|
||||
|
||||
namespace ROOT {
|
||||
// Wrappers around operator new
|
||||
static void *new_angularCalibration(void *p) {
|
||||
return p ? ::new((::ROOT::TOperatorNewHelper*)p) ::angularCalibration : new ::angularCalibration;
|
||||
}
|
||||
static void *newArray_angularCalibration(Long_t nElements, void *p) {
|
||||
return p ? ::new((::ROOT::TOperatorNewHelper*)p) ::angularCalibration[nElements] : new ::angularCalibration[nElements];
|
||||
}
|
||||
// Wrapper around operator delete
|
||||
static void delete_angularCalibration(void *p) {
|
||||
delete ((::angularCalibration*)p);
|
||||
}
|
||||
static void deleteArray_angularCalibration(void *p) {
|
||||
delete [] ((::angularCalibration*)p);
|
||||
}
|
||||
static void destruct_angularCalibration(void *p) {
|
||||
typedef ::angularCalibration current_t;
|
||||
((current_t*)p)->~current_t();
|
||||
}
|
||||
} // end of namespace ROOT for class ::angularCalibration
|
||||
|
||||
/********************************************************
|
||||
* TSlsDetectorDict.cpp
|
||||
* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED
|
||||
* FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX().
|
||||
* CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE.
|
||||
********************************************************/
|
||||
|
||||
#ifdef G__MEMTEST
|
||||
#undef malloc
|
||||
#undef free
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && (__GNUC__ > 3) && (__GNUC_MINOR__ > 1)
|
||||
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
||||
#endif
|
||||
|
||||
extern "C" void G__cpp_reset_tagtableTSlsDetectorDict();
|
||||
|
||||
extern "C" void G__set_cpp_environmentTSlsDetectorDict() {
|
||||
G__add_compiledheader("TObject.h");
|
||||
G__add_compiledheader("TMemberInspector.h");
|
||||
G__add_compiledheader("energyCalibration.h");
|
||||
G__add_compiledheader("angularCalibration.h");
|
||||
G__cpp_reset_tagtableTSlsDetectorDict();
|
||||
}
|
||||
#include <new>
|
||||
extern "C" int G__cpp_dllrevTSlsDetectorDict() { return(30051515); }
|
||||
|
||||
/*********************************************************
|
||||
* Member function Interface Method
|
||||
*********************************************************/
|
||||
|
||||
/* energyCalibration */
|
||||
static int G__TSlsDetectorDict_85_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
energyCalibration* p = NULL;
|
||||
char* gvp = (char*) G__getgvp();
|
||||
int n = G__getaryconstruct();
|
||||
if (n) {
|
||||
if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
|
||||
p = new energyCalibration[n];
|
||||
} else {
|
||||
p = new((void*) gvp) energyCalibration[n];
|
||||
}
|
||||
} else {
|
||||
if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
|
||||
p = new energyCalibration;
|
||||
} else {
|
||||
p = new((void*) gvp) energyCalibration;
|
||||
}
|
||||
}
|
||||
result7->obj.i = (long) p;
|
||||
result7->ref = (long) p;
|
||||
result7->type = 'u';
|
||||
result7->tagnum = G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_85_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
switch (libp->paran) {
|
||||
case 1:
|
||||
G__letint(result7, 105, (long) ((energyCalibration*) G__getstructoffset())->setPlotFlag((int) G__int(libp->para[0])));
|
||||
break;
|
||||
case 0:
|
||||
G__letint(result7, 105, (long) ((energyCalibration*) G__getstructoffset())->setPlotFlag());
|
||||
break;
|
||||
}
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_85_0_3(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
switch (libp->paran) {
|
||||
case 1:
|
||||
G__letint(result7, 105, (long) ((energyCalibration*) G__getstructoffset())->setScanSign((int) G__int(libp->para[0])));
|
||||
break;
|
||||
case 0:
|
||||
G__letint(result7, 105, (long) ((energyCalibration*) G__getstructoffset())->setScanSign());
|
||||
break;
|
||||
}
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_85_0_4(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
switch (libp->paran) {
|
||||
case 1:
|
||||
G__letint(result7, 105, (long) ((energyCalibration*) G__getstructoffset())->setChargeSharing((int) G__int(libp->para[0])));
|
||||
break;
|
||||
case 0:
|
||||
G__letint(result7, 105, (long) ((energyCalibration*) G__getstructoffset())->setChargeSharing());
|
||||
break;
|
||||
}
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
// automatic copy constructor
|
||||
static int G__TSlsDetectorDict_85_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
|
||||
{
|
||||
energyCalibration* p;
|
||||
void* tmp = (void*) G__int(libp->para[0]);
|
||||
p = new energyCalibration(*(energyCalibration*) tmp);
|
||||
result7->obj.i = (long) p;
|
||||
result7->ref = (long) p;
|
||||
result7->type = 'u';
|
||||
result7->tagnum = G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
// automatic destructor
|
||||
typedef energyCalibration G__TenergyCalibration;
|
||||
static int G__TSlsDetectorDict_85_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
char* gvp = (char*) G__getgvp();
|
||||
long soff = G__getstructoffset();
|
||||
int n = G__getaryconstruct();
|
||||
//
|
||||
//has_a_delete: 0
|
||||
//has_own_delete1arg: 0
|
||||
//has_own_delete2arg: 0
|
||||
//
|
||||
if (!soff) {
|
||||
return(1);
|
||||
}
|
||||
if (n) {
|
||||
if (gvp == (char*)G__PVOID) {
|
||||
delete[] (energyCalibration*) soff;
|
||||
} else {
|
||||
G__setgvp((long) G__PVOID);
|
||||
for (int i = n - 1; i >= 0; --i) {
|
||||
((energyCalibration*) (soff+(sizeof(energyCalibration)*i)))->~G__TenergyCalibration();
|
||||
}
|
||||
G__setgvp((long)gvp);
|
||||
}
|
||||
} else {
|
||||
if (gvp == (char*)G__PVOID) {
|
||||
delete (energyCalibration*) soff;
|
||||
} else {
|
||||
G__setgvp((long) G__PVOID);
|
||||
((energyCalibration*) (soff))->~G__TenergyCalibration();
|
||||
G__setgvp((long)gvp);
|
||||
}
|
||||
}
|
||||
G__setnull(result7);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
// automatic assignment operator
|
||||
static int G__TSlsDetectorDict_85_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
energyCalibration* dest = (energyCalibration*) G__getstructoffset();
|
||||
*dest = *(energyCalibration*) libp->para[0].ref;
|
||||
const energyCalibration& obj = *dest;
|
||||
result7->ref = (long) (&obj);
|
||||
result7->obj.i = (long) (&obj);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
|
||||
/* angularCalibration */
|
||||
static int G__TSlsDetectorDict_87_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
angularCalibration* p = NULL;
|
||||
char* gvp = (char*) G__getgvp();
|
||||
int n = G__getaryconstruct();
|
||||
if (n) {
|
||||
if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
|
||||
p = new angularCalibration[n];
|
||||
} else {
|
||||
p = new((void*) gvp) angularCalibration[n];
|
||||
}
|
||||
} else {
|
||||
if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
|
||||
p = new angularCalibration;
|
||||
} else {
|
||||
p = new((void*) gvp) angularCalibration;
|
||||
}
|
||||
}
|
||||
result7->obj.i = (long) p;
|
||||
result7->ref = (long) p;
|
||||
result7->type = 'u';
|
||||
result7->tagnum = G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_87_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
switch (libp->paran) {
|
||||
case 1:
|
||||
G__letint(result7, 105, (long) ((angularCalibration*) G__getstructoffset())->setDirection((int) G__int(libp->para[0])));
|
||||
break;
|
||||
case 0:
|
||||
G__letint(result7, 105, (long) ((angularCalibration*) G__getstructoffset())->setDirection());
|
||||
break;
|
||||
}
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_87_0_3(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
G__letdouble(result7, 102, (double) ((angularCalibration*) G__getstructoffset())->setEncoder((double) G__double(libp->para[0])));
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_87_0_4(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
G__letdouble(result7, 102, (double) ((angularCalibration*) G__getstructoffset())->getEncoder());
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_87_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
G__letdouble(result7, 102, (double) ((angularCalibration*) G__getstructoffset())->setTotalOffset((double) G__double(libp->para[0])));
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_87_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
G__letdouble(result7, 102, (double) ((angularCalibration*) G__getstructoffset())->getTotalOffset());
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_87_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
((angularCalibration*) G__getstructoffset())->setAngularRange((double) G__double(libp->para[0]), (double) G__double(libp->para[1]));
|
||||
G__setnull(result7);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
static int G__TSlsDetectorDict_87_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
((angularCalibration*) G__getstructoffset())->getAngularRange(*(double*) G__doubleref(&libp->para[0]), *(double*) G__doubleref(&libp->para[1]));
|
||||
G__setnull(result7);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
// automatic copy constructor
|
||||
static int G__TSlsDetectorDict_87_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
|
||||
{
|
||||
angularCalibration* p;
|
||||
void* tmp = (void*) G__int(libp->para[0]);
|
||||
p = new angularCalibration(*(angularCalibration*) tmp);
|
||||
result7->obj.i = (long) p;
|
||||
result7->ref = (long) p;
|
||||
result7->type = 'u';
|
||||
result7->tagnum = G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
// automatic destructor
|
||||
typedef angularCalibration G__TangularCalibration;
|
||||
static int G__TSlsDetectorDict_87_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
char* gvp = (char*) G__getgvp();
|
||||
long soff = G__getstructoffset();
|
||||
int n = G__getaryconstruct();
|
||||
//
|
||||
//has_a_delete: 0
|
||||
//has_own_delete1arg: 0
|
||||
//has_own_delete2arg: 0
|
||||
//
|
||||
if (!soff) {
|
||||
return(1);
|
||||
}
|
||||
if (n) {
|
||||
if (gvp == (char*)G__PVOID) {
|
||||
delete[] (angularCalibration*) soff;
|
||||
} else {
|
||||
G__setgvp((long) G__PVOID);
|
||||
for (int i = n - 1; i >= 0; --i) {
|
||||
((angularCalibration*) (soff+(sizeof(angularCalibration)*i)))->~G__TangularCalibration();
|
||||
}
|
||||
G__setgvp((long)gvp);
|
||||
}
|
||||
} else {
|
||||
if (gvp == (char*)G__PVOID) {
|
||||
delete (angularCalibration*) soff;
|
||||
} else {
|
||||
G__setgvp((long) G__PVOID);
|
||||
((angularCalibration*) (soff))->~G__TangularCalibration();
|
||||
G__setgvp((long)gvp);
|
||||
}
|
||||
}
|
||||
G__setnull(result7);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
// automatic assignment operator
|
||||
static int G__TSlsDetectorDict_87_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
|
||||
{
|
||||
angularCalibration* dest = (angularCalibration*) G__getstructoffset();
|
||||
*dest = *(angularCalibration*) libp->para[0].ref;
|
||||
const angularCalibration& obj = *dest;
|
||||
result7->ref = (long) (&obj);
|
||||
result7->obj.i = (long) (&obj);
|
||||
return(1 || funcname || hash || result7 || libp) ;
|
||||
}
|
||||
|
||||
|
||||
/* Setting up global function */
|
||||
|
||||
/*********************************************************
|
||||
* Member function Stub
|
||||
*********************************************************/
|
||||
|
||||
/* energyCalibration */
|
||||
|
||||
/* angularCalibration */
|
||||
|
||||
/*********************************************************
|
||||
* Global function Stub
|
||||
*********************************************************/
|
||||
|
||||
/*********************************************************
|
||||
* Get size of pointer to member function
|
||||
*********************************************************/
|
||||
class G__Sizep2memfuncTSlsDetectorDict {
|
||||
public:
|
||||
G__Sizep2memfuncTSlsDetectorDict(): p(&G__Sizep2memfuncTSlsDetectorDict::sizep2memfunc) {}
|
||||
size_t sizep2memfunc() { return(sizeof(p)); }
|
||||
private:
|
||||
size_t (G__Sizep2memfuncTSlsDetectorDict::*p)();
|
||||
};
|
||||
|
||||
size_t G__get_sizep2memfuncTSlsDetectorDict()
|
||||
{
|
||||
G__Sizep2memfuncTSlsDetectorDict a;
|
||||
G__setsizep2memfunc((int)a.sizep2memfunc());
|
||||
return((size_t)a.sizep2memfunc());
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* virtual base class offset calculation interface
|
||||
*********************************************************/
|
||||
|
||||
/* Setting up class inheritance */
|
||||
|
||||
/*********************************************************
|
||||
* Inheritance information setup/
|
||||
*********************************************************/
|
||||
extern "C" void G__cpp_setup_inheritanceTSlsDetectorDict() {
|
||||
|
||||
/* Setting up class inheritance */
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* typedef information setup/
|
||||
*********************************************************/
|
||||
extern "C" void G__cpp_setup_typetableTSlsDetectorDict() {
|
||||
|
||||
/* Setting up typedef entry */
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* Data Member information setup/
|
||||
*********************************************************/
|
||||
|
||||
/* Setting up class,struct,union tag member variable */
|
||||
|
||||
/* energyCalibration */
|
||||
static void G__setup_memvarenergyCalibration(void) {
|
||||
G__tag_memvar_setup(G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration));
|
||||
{ energyCalibration *p; p=(energyCalibration*)0x1000; if (p) { }
|
||||
G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibrationFunctions),-1,-1,4,"funcs=",0,(char*)NULL);
|
||||
G__memvar_setup((void*)0,105,0,0,-1,-1,-1,4,"plot_flag=",0,"*< 0 does not plot, >0 plots (flags?) */");
|
||||
G__memvar_setup((void*)0,105,0,0,-1,-1,-1,4,"cs_flag=",0,"*< 0 functions without charge sharing contribution, >0 with charge sharing contribution */");
|
||||
}
|
||||
G__tag_memvar_reset();
|
||||
}
|
||||
|
||||
|
||||
/* angularCalibration */
|
||||
static void G__setup_memvarangularCalibration(void) {
|
||||
G__tag_memvar_setup(G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration));
|
||||
{ angularCalibration *p; p=(angularCalibration*)0x1000; if (p) { }
|
||||
G__memvar_setup((void*)0,105,0,0,-1,-1,-1,4,"direction=",0,"*< angulat direction of the detector -can be +1 or -1 */");
|
||||
G__memvar_setup((void*)0,102,0,0,-1,-1,-1,4,"encoder=",0,"*< position of the detector encoder */");
|
||||
G__memvar_setup((void*)0,102,0,0,-1,-1,-1,4,"totalOffset=",0,"*< total offset of the detector */");
|
||||
G__memvar_setup((void*)0,102,0,0,-1,-1,-1,4,"ang_min=",0,"*< minimum of the angular range for peak fitting*/");
|
||||
G__memvar_setup((void*)0,102,0,0,-1,-1,-1,4,"ang_max=",0,"*< maximum of the angular range for peak fitting */");
|
||||
}
|
||||
G__tag_memvar_reset();
|
||||
}
|
||||
|
||||
extern "C" void G__cpp_setup_memvarTSlsDetectorDict() {
|
||||
}
|
||||
/***********************************************************
|
||||
************************************************************
|
||||
************************************************************
|
||||
************************************************************
|
||||
************************************************************
|
||||
************************************************************
|
||||
************************************************************
|
||||
***********************************************************/
|
||||
|
||||
/*********************************************************
|
||||
* Member function information setup for each class
|
||||
*********************************************************/
|
||||
static void G__setup_memfuncenergyCalibration(void) {
|
||||
/* energyCalibration */
|
||||
G__tag_memfunc_setup(G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration));
|
||||
G__memfunc_setup("energyCalibration",1778,G__TSlsDetectorDict_85_0_1, 105, G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("setPlotFlag",1125,G__TSlsDetectorDict_85_0_2, 105, -1, -1, 0, 1, 1, 1, 0, "i - - 0 '-1' p", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("setScanSign",1122,G__TSlsDetectorDict_85_0_3, 105, -1, -1, 0, 1, 1, 1, 0, "i - - 0 '0' s", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("setChargeSharing",1634,G__TSlsDetectorDict_85_0_4, 105, -1, -1, 0, 1, 1, 1, 0, "i - - 0 '-1' p", (char*)NULL, (void*) NULL, 0);
|
||||
// automatic copy constructor
|
||||
G__memfunc_setup("energyCalibration", 1778, G__TSlsDetectorDict_85_0_5, (int) ('i'), G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration), -1, 0, 1, 1, 1, 0, "u 'energyCalibration' - 11 - -", (char*) NULL, (void*) NULL, 0);
|
||||
// automatic destructor
|
||||
G__memfunc_setup("~energyCalibration", 1904, G__TSlsDetectorDict_85_0_6, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 0);
|
||||
// automatic assignment operator
|
||||
G__memfunc_setup("operator=", 937, G__TSlsDetectorDict_85_0_7, (int) ('u'), G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration), -1, 1, 1, 1, 1, 0, "u 'energyCalibration' - 11 - -", (char*) NULL, (void*) NULL, 0);
|
||||
G__tag_memfunc_reset();
|
||||
}
|
||||
|
||||
static void G__setup_memfuncangularCalibration(void) {
|
||||
/* angularCalibration */
|
||||
G__tag_memfunc_setup(G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration));
|
||||
G__memfunc_setup("angularCalibration",1874,G__TSlsDetectorDict_87_0_1, 105, G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("setDirection",1261,G__TSlsDetectorDict_87_0_2, 105, -1, -1, 0, 1, 1, 1, 0, "i - - 0 '0' d", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("setEncoder",1036,G__TSlsDetectorDict_87_0_3, 102, -1, -1, 0, 1, 1, 1, 0, "f - - 0 - f", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("getEncoder",1024,G__TSlsDetectorDict_87_0_4, 102, -1, -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("setTotalOffset",1463,G__TSlsDetectorDict_87_0_5, 102, -1, -1, 0, 1, 1, 1, 0, "f - - 0 - f", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("getTotalOffset",1451,G__TSlsDetectorDict_87_0_6, 102, -1, -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("setAngularRange",1539,G__TSlsDetectorDict_87_0_7, 121, -1, -1, 0, 2, 1, 1, 0,
|
||||
"f - - 0 - mi f - - 0 - ma", (char*)NULL, (void*) NULL, 0);
|
||||
G__memfunc_setup("getAngularRange",1527,G__TSlsDetectorDict_87_0_8, 121, -1, -1, 0, 2, 1, 1, 0,
|
||||
"f - - 1 - mi f - - 1 - ma", (char*)NULL, (void*) NULL, 0);
|
||||
// automatic copy constructor
|
||||
G__memfunc_setup("angularCalibration", 1874, G__TSlsDetectorDict_87_0_9, (int) ('i'), G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration), -1, 0, 1, 1, 1, 0, "u 'angularCalibration' - 11 - -", (char*) NULL, (void*) NULL, 0);
|
||||
// automatic destructor
|
||||
G__memfunc_setup("~angularCalibration", 2000, G__TSlsDetectorDict_87_0_10, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 0);
|
||||
// automatic assignment operator
|
||||
G__memfunc_setup("operator=", 937, G__TSlsDetectorDict_87_0_11, (int) ('u'), G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration), -1, 1, 1, 1, 1, 0, "u 'angularCalibration' - 11 - -", (char*) NULL, (void*) NULL, 0);
|
||||
G__tag_memfunc_reset();
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* Member function information setup
|
||||
*********************************************************/
|
||||
extern "C" void G__cpp_setup_memfuncTSlsDetectorDict() {
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* Global variable information setup for each class
|
||||
*********************************************************/
|
||||
static void G__cpp_setup_global0() {
|
||||
|
||||
/* Setting up global variables */
|
||||
G__resetplocal();
|
||||
|
||||
|
||||
G__resetglobalenv();
|
||||
}
|
||||
extern "C" void G__cpp_setup_globalTSlsDetectorDict() {
|
||||
G__cpp_setup_global0();
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* Global function information setup for each class
|
||||
*********************************************************/
|
||||
static void G__cpp_setup_func0() {
|
||||
G__lastifuncposition();
|
||||
|
||||
}
|
||||
|
||||
static void G__cpp_setup_func1() {
|
||||
}
|
||||
|
||||
static void G__cpp_setup_func2() {
|
||||
|
||||
G__resetifuncposition();
|
||||
}
|
||||
|
||||
extern "C" void G__cpp_setup_funcTSlsDetectorDict() {
|
||||
G__cpp_setup_func0();
|
||||
G__cpp_setup_func1();
|
||||
G__cpp_setup_func2();
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* Class,struct,union,enum tag information setup
|
||||
*********************************************************/
|
||||
/* Setup class/struct taginfo */
|
||||
G__linked_taginfo G__TSlsDetectorDictLN_energyCalibrationFunctions = { "energyCalibrationFunctions" , 99 , -1 };
|
||||
G__linked_taginfo G__TSlsDetectorDictLN_energyCalibration = { "energyCalibration" , 99 , -1 };
|
||||
G__linked_taginfo G__TSlsDetectorDictLN_angularCalibration = { "angularCalibration" , 99 , -1 };
|
||||
|
||||
/* Reset class/struct taginfo */
|
||||
extern "C" void G__cpp_reset_tagtableTSlsDetectorDict() {
|
||||
G__TSlsDetectorDictLN_energyCalibrationFunctions.tagnum = -1 ;
|
||||
G__TSlsDetectorDictLN_energyCalibration.tagnum = -1 ;
|
||||
G__TSlsDetectorDictLN_angularCalibration.tagnum = -1 ;
|
||||
}
|
||||
|
||||
|
||||
extern "C" void G__cpp_setup_tagtableTSlsDetectorDict() {
|
||||
|
||||
/* Setting up class,struct,union tag entry */
|
||||
G__get_linked_tagnum_fwd(&G__TSlsDetectorDictLN_energyCalibrationFunctions);
|
||||
G__tagtable_setup(G__get_linked_tagnum(&G__TSlsDetectorDictLN_energyCalibration),sizeof(energyCalibration),-1,1280,(char*)NULL,G__setup_memvarenergyCalibration,G__setup_memfuncenergyCalibration);
|
||||
G__tagtable_setup(G__get_linked_tagnum(&G__TSlsDetectorDictLN_angularCalibration),sizeof(angularCalibration),-1,1280,(char*)NULL,G__setup_memvarangularCalibration,G__setup_memfuncangularCalibration);
|
||||
}
|
||||
extern "C" void G__cpp_setupTSlsDetectorDict(void) {
|
||||
G__check_setup_version(30051515,"G__cpp_setupTSlsDetectorDict()");
|
||||
G__set_cpp_environmentTSlsDetectorDict();
|
||||
G__cpp_setup_tagtableTSlsDetectorDict();
|
||||
|
||||
G__cpp_setup_inheritanceTSlsDetectorDict();
|
||||
|
||||
G__cpp_setup_typetableTSlsDetectorDict();
|
||||
|
||||
G__cpp_setup_memvarTSlsDetectorDict();
|
||||
|
||||
G__cpp_setup_memfuncTSlsDetectorDict();
|
||||
G__cpp_setup_globalTSlsDetectorDict();
|
||||
G__cpp_setup_funcTSlsDetectorDict();
|
||||
|
||||
if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTSlsDetectorDict();
|
||||
return;
|
||||
}
|
||||
class G__cpp_setup_initTSlsDetectorDict {
|
||||
public:
|
||||
G__cpp_setup_initTSlsDetectorDict() { G__add_setup_func("TSlsDetectorDict",(G__incsetup)(&G__cpp_setupTSlsDetectorDict)); G__call_setup_funcs(); }
|
||||
~G__cpp_setup_initTSlsDetectorDict() { G__remove_setup_func("TSlsDetectorDict"); }
|
||||
};
|
||||
G__cpp_setup_initTSlsDetectorDict G__cpp_setup_initializerTSlsDetectorDict;
|
||||
|
@ -1,42 +0,0 @@
|
||||
/********************************************************************
|
||||
* TSlsDetectorDict.h
|
||||
* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED
|
||||
* FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX().
|
||||
* CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE.
|
||||
********************************************************************/
|
||||
#ifdef __CINT__
|
||||
#error TSlsDetectorDict.h/C is only for compilation. Abort cint.
|
||||
#endif
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#define G__ANSIHEADER
|
||||
#define G__DICTIONARY
|
||||
#include "cint/G__ci.h"
|
||||
extern "C" {
|
||||
extern void G__cpp_setup_tagtableTSlsDetectorDict();
|
||||
extern void G__cpp_setup_inheritanceTSlsDetectorDict();
|
||||
extern void G__cpp_setup_typetableTSlsDetectorDict();
|
||||
extern void G__cpp_setup_memvarTSlsDetectorDict();
|
||||
extern void G__cpp_setup_globalTSlsDetectorDict();
|
||||
extern void G__cpp_setup_memfuncTSlsDetectorDict();
|
||||
extern void G__cpp_setup_funcTSlsDetectorDict();
|
||||
extern void G__set_cpp_environmentTSlsDetectorDict();
|
||||
}
|
||||
|
||||
|
||||
#include "TObject.h"
|
||||
#include "TMemberInspector.h"
|
||||
#include "energyCalibration.h"
|
||||
#include "angularCalibration.h"
|
||||
|
||||
#ifndef G__MEMFUNCBODY
|
||||
#endif
|
||||
|
||||
extern G__linked_taginfo G__TSlsDetectorDictLN_energyCalibrationFunctions;
|
||||
extern G__linked_taginfo G__TSlsDetectorDictLN_energyCalibration;
|
||||
extern G__linked_taginfo G__TSlsDetectorDictLN_angularCalibration;
|
||||
|
||||
/* STUB derived class for protected member access */
|
@ -1,153 +0,0 @@
|
||||
#ifndef ANGCALLOGCLASS_H
|
||||
#define ANGCALLOGCLASS_H
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#ifdef __CINT__
|
||||
#define MYROOT
|
||||
#endif
|
||||
|
||||
#ifndef MYROOT
|
||||
#include "slsDetectorCommand.h"
|
||||
#include "slsDetectorUtils.h"
|
||||
#include "sls_detector_defs.h"
|
||||
#endif
|
||||
|
||||
;
|
||||
|
||||
class angCalLogClass {
|
||||
|
||||
|
||||
public:
|
||||
|
||||
|
||||
#ifndef MYROOT
|
||||
angCalLogClass(slsDetectorUtils *det){ createVars();
|
||||
char cmd[1000]; \
|
||||
char *argv[2]; \
|
||||
argv[0]=cmd; \
|
||||
sprintf(cmd,"_%d.angcal",det->getFileIndex()); \
|
||||
outfile.open( std::string(det->getFilePath()+ std::string("/")+det->getFileName()+ std::string(cmd)).c_str()); \
|
||||
outfile.precision(8);
|
||||
myDet=new slsDetectorCommand(det); \
|
||||
if (outfile.is_open()) { \
|
||||
for (int iv=0; iv<nvars; iv++) { \
|
||||
strcpy(cmd,vars[iv]); \
|
||||
outfile << cmd << " "<< myDet->executeLine(1,argv,slsDetectorDefs::GET_ACTION) << endl; \
|
||||
}; \
|
||||
}; \
|
||||
};
|
||||
~angCalLogClass(){delete myDet; outfile.close();};
|
||||
#else
|
||||
angCalLogClass() { createVars(); };
|
||||
~angCalLogClass(){};
|
||||
#endif
|
||||
|
||||
|
||||
int addStep(double pos, std::string fname) {std::cout.precision(5); outfile << pos << " " << fname << endl; return 0;};
|
||||
|
||||
|
||||
//
|
||||
|
||||
int readHeader(std::ifstream &infile, int &maxmod, int &nmod, int &chanspermod, char *angconvfile, double &globaloff, double &fineoff, int &angdir, char *ffdir, char *fffile, char *badfile ) { \
|
||||
nmod=0; chanspermod=0; globaloff=0; fineoff=0; angdir=1; \
|
||||
strcpy(angconvfile,"none"); strcpy(ffdir,"none"); strcpy(fffile,"none"); strcpy(badfile,"none"); \
|
||||
char line[1000], myvar[100], myarg[100]; \
|
||||
float v; \
|
||||
for (int iv=0; iv<nvars; iv++) { \
|
||||
infile.getline(line,1000); \
|
||||
sscanf(line,"%s %s", myvar, myarg); \
|
||||
if ( std::string(myvar)!= std::string(vars[iv]))
|
||||
cout << "Found variable " << myvar << " instead of " << vars[iv] << endl;
|
||||
else
|
||||
switch (iv) { \
|
||||
case 0: \
|
||||
if ( std::string(myarg).find("Mythen")!= std::string::npos) \
|
||||
chanspermod=1280; \
|
||||
else if ( std::string(myarg).find("Gotthard")!= std::string::npos) \
|
||||
chanspermod=1280; \
|
||||
else \
|
||||
chanspermod=65535; \
|
||||
break; \
|
||||
case 1: \
|
||||
sscanf(myarg,"%d", &maxmod); \
|
||||
break; \
|
||||
case 2: \
|
||||
sscanf(myarg,"%d", &nmod); \
|
||||
break; \
|
||||
case 3: \
|
||||
strcpy(angconvfile,myarg); \
|
||||
break; \
|
||||
case 4: \
|
||||
sscanf(myarg,"%f", &v); \
|
||||
globaloff=v; \
|
||||
break; \
|
||||
case 5: \
|
||||
sscanf(myarg,"%f", &v); \
|
||||
fineoff=v; \
|
||||
break; \
|
||||
case 6: \
|
||||
sscanf(myarg,"%d", &angdir); \
|
||||
break; \
|
||||
case 7: \
|
||||
strcpy(ffdir,myarg); \
|
||||
break; \
|
||||
case 8: \
|
||||
strcpy(fffile,myarg); \
|
||||
break; \
|
||||
case 9: \
|
||||
strcpy(badfile,myarg); \
|
||||
break; \
|
||||
default: \
|
||||
; \
|
||||
}; \
|
||||
if (infile.bad() || infile.eof()) { cout << "bad file "<< iv << endl; return -1;} \
|
||||
} \
|
||||
return 0; \
|
||||
};
|
||||
|
||||
int getStep(std::ifstream &infile, double &threshold, char *datafname){ \
|
||||
char line[1000]; \
|
||||
float v;
|
||||
infile.getline(line,1000); \
|
||||
if (sscanf(line,"%g %s",&v, datafname)<2) return -1; \
|
||||
printf("scanned %s to %f %s",line,v,datafname);
|
||||
threshold=v; \
|
||||
if (infile.bad() || infile.eof()) \
|
||||
return -1; \
|
||||
return 0; \
|
||||
};
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
void createVars(){ \
|
||||
strcpy(vars[0],"type"); \
|
||||
strcpy(vars[1],"maxmod"); \
|
||||
strcpy(vars[2],"nmod"); \
|
||||
strcpy(vars[3],"angconv"); \
|
||||
strcpy(vars[4],"globaloff"); \
|
||||
strcpy(vars[5],"fineoff"); \
|
||||
strcpy(vars[6],"angdir"); \
|
||||
strcpy(vars[7],"ffdir"); \
|
||||
strcpy(vars[8],"flatfield"); \
|
||||
strcpy(vars[9],"badchannels"); \
|
||||
nvars=10; \
|
||||
};
|
||||
|
||||
#ifndef MYROOT
|
||||
slsDetectorCommand *myDet;
|
||||
#endif
|
||||
std::ofstream outfile;
|
||||
|
||||
char vars[100][100];
|
||||
int nvars;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,42 +0,0 @@
|
||||
#ifndef ANGLE_CONVERSION_CONSTANT_H
|
||||
#define ANGLE_CONVERSION_CONSTANT_H
|
||||
|
||||
class angleConversionConstant {
|
||||
|
||||
public:
|
||||
|
||||
angleConversionConstant(){};
|
||||
angleConversionConstant(double c, double r, double o, double t){center=c; r_conversion=r; offset=o; tilt=t;};
|
||||
|
||||
//typedef struct {
|
||||
double center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */
|
||||
double ecenter; /**< error in the center determination */
|
||||
double r_conversion; /**< detector pixel size (or strip pitch) divided by the diffractometer radius */
|
||||
double er_conversion; /**< error in the r_conversion determination */
|
||||
double offset; /**< the module offset i.e. the position of channel 0 with respect to the diffractometer 0 */
|
||||
double eoffset; /**< error in the offset determination */
|
||||
double tilt; /**< ossible tilt in the orthogonal direction (unused)*/
|
||||
double etilt; /**< error in the tilt determination */
|
||||
//} angleConversionConstant;
|
||||
|
||||
double getCenter(){return center;};
|
||||
double getConversion(){return r_conversion;};
|
||||
double getOffset(){return offset;};
|
||||
double getTilt(){return tilt;};
|
||||
|
||||
void setAngConvConstant(angleConversionConstant *acc) {\
|
||||
center=acc->center; \
|
||||
ecenter=acc->ecenter; \
|
||||
r_conversion=acc->r_conversion; \
|
||||
er_conversion=acc->er_conversion; \
|
||||
offset=acc->offset; \
|
||||
eoffset=acc->eoffset; \
|
||||
tilt=acc->tilt; \
|
||||
etilt=acc->etilt; \
|
||||
};
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -1,471 +0,0 @@
|
||||
#include "angularCalibration.h"
|
||||
|
||||
#include <iostream>
|
||||
#ifdef ROOT
|
||||
#include <TMath.h>
|
||||
#include <TH1.h>
|
||||
#endif
|
||||
|
||||
#include "usersFunctions.h"
|
||||
|
||||
#ifdef __CINT
|
||||
#include "usersFunctions.cpp"
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
|
||||
angularCalibration::angularCalibration(int nm): direction(1),
|
||||
#ifdef ROOT
|
||||
fpeak(NULL),
|
||||
fangle(NULL),
|
||||
#endif
|
||||
encoder(0),
|
||||
totalOffset(0),
|
||||
ang_min(-180),
|
||||
ang_max(180),
|
||||
nmod(nm),
|
||||
nchmod(1280),
|
||||
angConv(NULL)
|
||||
{
|
||||
|
||||
#ifdef ROOT
|
||||
// Creates a Root function based on function peakfunction
|
||||
TF1 *fpeak = new TF1("fpeak",this,&angularCalibration::peakFunction,ang_min,ang_max,5,"angularCalibration","peakFunction");
|
||||
|
||||
// Sets initial values and parameter names
|
||||
// func->SetParameters((Double_t) PEAKHEIGHT, (Double_t) maxch,(Double_t) PEAKWIDTH,(Double_t) PEAKBACK);
|
||||
fpeak->SetParNames("Number of Photons","Peak Position","Peak Width RMS","Background Offset", "Background Slope");
|
||||
|
||||
|
||||
TF1 *fangle = new TF1("fangle",this,&angularCalibration::angleFunction,0,1280,3,"angularCalibration","angleFunction");
|
||||
fangle->SetParNames("Center","Conversion Radius","Offset");
|
||||
|
||||
#endif
|
||||
|
||||
angConv=new angleConversionConstant[nmod];
|
||||
|
||||
}
|
||||
|
||||
angularCalibration::~angularCalibration(){
|
||||
#ifdef ROOT
|
||||
delete fpeak;
|
||||
delete fangle;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
angleConversionConstant* angularCalibration::getAngularConversionConstant(int imod) {
|
||||
if (imod>=0 && imod<nmod)
|
||||
return angConv+imod;
|
||||
else
|
||||
return NULL;
|
||||
|
||||
}
|
||||
angleConversionConstant* angularCalibration::setAngularConversionConstant(angleConversionConstant *a, int imod) {
|
||||
|
||||
if (imod>=0 && imod<nmod) {
|
||||
angConv[imod].center=a->center;
|
||||
angConv[imod].ecenter=a->ecenter;
|
||||
angConv[imod].r_conversion=a->r_conversion;
|
||||
angConv[imod].er_conversion=a->er_conversion;
|
||||
angConv[imod].offset=a->offset;
|
||||
angConv[imod].eoffset=a->eoffset;
|
||||
angConv[imod].tilt=a->tilt;
|
||||
angConv[imod].etilt=a->etilt;
|
||||
|
||||
return angConv+imod;
|
||||
}
|
||||
return NULL;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
|
||||
Double_t angularCalibration::peakFunction(Double_t *x, Double_t *par) {
|
||||
Double_t arg = 0;
|
||||
if (par[2] != 0) arg = (x[0] - par[1])/par[2];
|
||||
return par[0]*TMath::Exp(-0.5*arg*arg)+par[3]+par[4]*(x[0]-par[1]);
|
||||
|
||||
}
|
||||
|
||||
Double_t angularCalibration::angleFunction(Double_t *x, Double_t *par) {
|
||||
return par[2]-angle((int)x[0],0,0,par[1],par[0],0,0,direction);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TF1 *fitPeak(TH1 *h) {
|
||||
|
||||
TF1 *fitfun=NULL;
|
||||
int chmod, imod;
|
||||
double ang;
|
||||
|
||||
// reads in a run and fits a gaussian to the peak as function
|
||||
// of channel number also reads optical encoder
|
||||
|
||||
|
||||
// find angular range in channels
|
||||
|
||||
// is it necessary to discard fit with too many points?
|
||||
for (int i=0;i<h->GetNbinsX();i++) {
|
||||
imod=i/nchmod;
|
||||
chmod=i%(imod*nchmod);
|
||||
ang=angle(chmod,encoder,totalOffset,angConv[imod].r_conversion, angConv[imod].center, angConv[imod].offset, angConv[imod].tilt, direction);
|
||||
if ((ang>ang_min) && (ang<ang_max)) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// for (i=0;i<nchannel;i++) {
|
||||
// if ( (angle(i)>minang) && (angle(i)<maxang) ) {
|
||||
// x[npoints]=(double) i;
|
||||
// y[npoints]=(double) data[i];
|
||||
// ex[npoints]=0.001;
|
||||
// ey[npoints]=dataerror[i];
|
||||
// anglefit[npoints]=angle(i);
|
||||
// npoints++;
|
||||
|
||||
// if (npoints>MAXINPEAK) {
|
||||
// printf("too many points in angular range !\n");
|
||||
// return -1; // too many points in range
|
||||
// }
|
||||
// if ( data[i]> max) {
|
||||
// max = (int) data[i];
|
||||
// maxch = i;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else
|
||||
// return -1;
|
||||
|
||||
// npoints--;
|
||||
// chmin= (int) x[0];
|
||||
// chmax= (int) x[npoints];
|
||||
|
||||
// printf("number of points in range %f-%f: %i \n",minang,maxang,npoints);
|
||||
// printf("channel from minang to maxang %i - %i \n",chmin,chmax);
|
||||
// printf("channel with max intensity %i \n",maxch);
|
||||
|
||||
// TCanvas *c1;
|
||||
|
||||
// TGraph *gr1 = new TGraph(npoints,anglefit,y);
|
||||
// TGraph *gr2 = new TGraph(npoints,x,y);
|
||||
// if (plotflag) {
|
||||
// /* create canvas */
|
||||
|
||||
// c1 = new TCanvas();
|
||||
// c1->SetTitle("Si calibration data");
|
||||
// c1->Divide(1,2);
|
||||
|
||||
// /* create graph */
|
||||
|
||||
// sprintf(name,"run number %i",nr);
|
||||
// gr1->SetTitle(name);
|
||||
// gr2->SetTitle(name);
|
||||
|
||||
// c1->cd(1);
|
||||
// gr1->Draw("AL*");
|
||||
// c1->cd(2);
|
||||
// gr2->Draw("AL*");
|
||||
// }
|
||||
|
||||
// /* do not fit if peak is close to edge of module */
|
||||
// if (abs(modfromchannel(maxch)*NCHMOD-maxch)<DISTANCE) {
|
||||
// printf("peak too close to border of module\n");
|
||||
// return -1;
|
||||
// }
|
||||
|
||||
// /* do not fit if peak is close to edge of range */
|
||||
// if ( ((maxch-chmin)<DISTANCE) || ( (chmax-maxch)<DISTANCE) ) {
|
||||
// printf("peak too close to border of range\n");
|
||||
// return -1;
|
||||
// }
|
||||
|
||||
// /* do not fit if nr of points is to small */
|
||||
// if (npoints<10) {
|
||||
// printf("too few points in range\n");
|
||||
// return -1;
|
||||
// }
|
||||
|
||||
// if (plotflag)
|
||||
// gr2->Fit("fitpeak","B");
|
||||
// else
|
||||
// gr2->Fit("fitpeak","B0");
|
||||
|
||||
// TF1 *fit = gr2->GetFunction("fitpeak");
|
||||
|
||||
// // writes the fit results into the par array
|
||||
// fit->GetParameters(mypar);
|
||||
|
||||
// printf("\n");
|
||||
// for (i=0;i<4;i++) {
|
||||
// myerr[i] = fit->GetParError(i); // obtain fit parameter errors
|
||||
// printf("parameter %i: %f +- %f \n",i,mypar[i],myerr[i]);
|
||||
// }
|
||||
|
||||
// chi2=fit->GetChisquare();
|
||||
// printf("chi2: %e\n",chi2);
|
||||
// printf("\n\n");
|
||||
|
||||
// if (chi2>CHIMAX) {
|
||||
// printf("chi2 too large!\n");
|
||||
// return -1;
|
||||
// }
|
||||
|
||||
// if (plotflag)
|
||||
// c1->Update(); // necessary for axis titles!
|
||||
// // c1->WaitPrimitive();
|
||||
|
||||
// return 0;
|
||||
|
||||
return fitfun;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// //
|
||||
// // for detector angular calibration
|
||||
// //
|
||||
// // loops over runs fits a peak in each run and then fits the parameters for
|
||||
// // the angular calibration to the fitted peak and optical encoder values
|
||||
// //
|
||||
// //
|
||||
// // note:
|
||||
// // setting global offset is important to find peak in peak fitting!
|
||||
// // also set peak height,width and background in defines at beginning
|
||||
// //
|
||||
|
||||
// void fitangle(char fname[80],char extension[10], int start, int stop, double startangle, double stopangle) {
|
||||
|
||||
// int i,nfit,mod,npoints,nnpoints;
|
||||
// double x[MAXINMODULE],y[MAXINMODULE],ex[MAXINMODULE],ey[MAXINMODULE],min,max;
|
||||
// double xx[MAXINMODULE],yy[MAXINMODULE],exx[MAXINMODULE],eyy[MAXINMODULE];
|
||||
|
||||
// double channelfit[MAXRUN], channelerror[MAXRUN], encoderfit[MAXRUN];
|
||||
// int runnrfit[MAXRUN], modulenr[MAXRUN];
|
||||
|
||||
|
||||
// FILE *fp;
|
||||
// char name[80];
|
||||
// TCanvas *c1,*c2;
|
||||
// gROOT->Reset(); // reset root
|
||||
// // gStyle->SetOptFit(1110);
|
||||
|
||||
// nfit=0;
|
||||
// for (i=start;i<stop;i++) {
|
||||
// // sprintf(name,"%s%i",fname,i);
|
||||
// if (fitpeak(fname,extension,i,startangle,stopangle)!=-1) {
|
||||
// printf("nfit %i encoder %f\n",nfit,encoder);
|
||||
// channelfit[nfit]=(double) mypar[1];
|
||||
// channelerror[nfit]=(double) myerr[1];
|
||||
// encoderfit[nfit]=(double) encoder;
|
||||
// modulenr[nfit]=modfromchannel( channelfit[nfit] );
|
||||
// runnrfit[nfit]=i;
|
||||
|
||||
// // only use value if sigma is reasonable
|
||||
// if (channelerror[nfit]<MAXSIGMA) {
|
||||
// nfit++;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// printf(" %i usable peak fits \n\n",nfit);
|
||||
|
||||
// for (i=0;i<nfit;i++) {
|
||||
// printf("i %i run %i encoder %f fit %f module %i \n",i,runnrfit[i],encoderfit[i],channelfit[i],modulenr[i]);
|
||||
// }
|
||||
|
||||
// TGraph *gr3 = new TGraph(nfit,channelfit,encoderfit);
|
||||
// if (plotflag) {
|
||||
// /* create canvas */
|
||||
// TCanvas *c1 = new TCanvas();
|
||||
// c1->SetTitle("Si calibration data");
|
||||
// /* create graph for angle vs fitted channel number */
|
||||
// gr3->Draw("AL*");
|
||||
|
||||
// c1->Update(); // necessary for axis titles!
|
||||
// c1->WaitPrimitive();
|
||||
|
||||
// delete c1;
|
||||
// }
|
||||
// TH1F *herr=new TH1F("herr","",100,0,0.002);
|
||||
|
||||
|
||||
// for (mod=0;mod<NMOD;mod++) {
|
||||
// npoints=0;
|
||||
// for (i=0;i<nfit;i++) {
|
||||
// if (modulenr[i]==mod) {
|
||||
// x[npoints]=channelfit[i]-mod*1280;
|
||||
// ex[npoints]=channelerror[i];
|
||||
// y[npoints]=encoderfit[i];
|
||||
// ey[npoints]=ENCODERERROR;
|
||||
// npoints++;
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (npoints>5) {
|
||||
|
||||
// // create canvas
|
||||
// if (plotflag) {
|
||||
// TCanvas *c2 = new TCanvas();
|
||||
// c2->SetTitle("Si calibration data");
|
||||
// c2->Divide(1,3);
|
||||
// }
|
||||
// // create graph
|
||||
// TGraphErrors *gr1 = new TGraphErrors(npoints,x,y,ex,ey);
|
||||
// sprintf(name,"module number %i",mod);
|
||||
// gr1->SetTitle(name);
|
||||
// if (plotflag) {
|
||||
// c2->cd(1);
|
||||
// gr1->Draw("ALP");
|
||||
// }
|
||||
|
||||
|
||||
// // Creates a Root function based on function anglefunction
|
||||
// if (x[0]>x[npoints-1]) {
|
||||
// min=x[npoints-1];
|
||||
// max=x[0];
|
||||
// } else {
|
||||
// max=x[npoints-1];
|
||||
// min=x[0];
|
||||
// }
|
||||
|
||||
|
||||
// TF1 *func = new TF1("fitangle",anglefunction,min,max,3);
|
||||
|
||||
// // Sets initial values and parameter names
|
||||
// func->SetParameters(640,0.0000656,-mod*5.0);
|
||||
// func->SetParNames("center","conversion","offset");
|
||||
// func->FixParameter(0,640.0);
|
||||
// if (plotflag) {
|
||||
// gr1->Fit("fitangle"); // fit the function
|
||||
// } else
|
||||
// gr1->Fit("fitangle","0"); // fit the function
|
||||
|
||||
|
||||
// // calculate the deviations of data points from fitted function and plot them
|
||||
// for (i=0;i<npoints;i++) {
|
||||
// ey[i]=func->Eval(x[i])-y[i];
|
||||
// }
|
||||
// TGraph *gr4 = new TGraph(npoints,x,ey);
|
||||
// sprintf(name,"module number %i deviations from fit",mod);
|
||||
// gr4->SetTitle(name);
|
||||
|
||||
// if (plotflag) {
|
||||
// gr4->SetMarkerStyle(24);
|
||||
// c2->cd(2);
|
||||
// gr4->Draw("ALP");
|
||||
// }
|
||||
|
||||
|
||||
// // iterate fit with outlying points excluded
|
||||
// nnpoints=0;
|
||||
// for (i=0;i<npoints;i++) {
|
||||
// if (fabs(ey[i])<DIFFANGLEFIT) {
|
||||
// xx[nnpoints]=x[i];
|
||||
// yy[nnpoints]=y[i];
|
||||
// exx[nnpoints]=ex[i];
|
||||
// eyy[nnpoints]=ENCODERERROR;
|
||||
// nnpoints++;
|
||||
// }
|
||||
// }
|
||||
|
||||
// TGraphErrors *gr3 = new TGraphErrors(nnpoints,xx,yy,exx,eyy); // create graph
|
||||
// if (plotflag) {
|
||||
// gr3->Fit("fitangle"); // fit the function
|
||||
// } else
|
||||
// gr3->Fit("fitangle","0"); // fit the function
|
||||
|
||||
|
||||
// // calculate the deviations of data points from fitted function and plot them
|
||||
// for (i=0;i<nnpoints;i++) {
|
||||
// eyy[i]=func->Eval(xx[i])-yy[i];
|
||||
// herr->Fill(eyy[i]);
|
||||
// }
|
||||
|
||||
// TGraph *gr5 = new TGraph(nnpoints,xx,eyy);
|
||||
// sprintf(name,"module number %i deviations from fit second iteration",mod);
|
||||
// if (plotflag) {
|
||||
// c2->cd(3);
|
||||
// gr5->SetTitle(name);
|
||||
// gr5->SetMarkerStyle(24);
|
||||
|
||||
// gr5->Draw("ALP");
|
||||
|
||||
|
||||
// c2->Update(); // necessary for axis titles?
|
||||
// c2->WaitPrimitive();
|
||||
|
||||
// }
|
||||
|
||||
// // writes the fit results into the par array
|
||||
// //
|
||||
// // get fit parameter
|
||||
// func->GetParameters(mypar);
|
||||
|
||||
// for (i=0;i<3;i++) {
|
||||
// myerr[i] = func->GetParError(i); // obtain fit parameter errors
|
||||
// printf("parameter %i: %E +- %E \n",i,mypar[i],myerr[i]);
|
||||
// }
|
||||
// printf("\n\n");
|
||||
|
||||
// center[mod]=mypar[0];
|
||||
// errcenter[mod]=myerr[0];
|
||||
// conversion[mod]=mypar[1];
|
||||
// errconversion[mod]=myerr[1];
|
||||
// moffset[mod]=mypar[2];
|
||||
// erroff[mod]=myerr[2];
|
||||
|
||||
// delete gr1;
|
||||
// delete gr4;
|
||||
// delete gr5;
|
||||
// delete func;
|
||||
// delete c2;
|
||||
// }
|
||||
// }
|
||||
// //herr->GetXaxis()->SetMaxDigits(3);
|
||||
// herr->GetXaxis()->SetTitle("Deviations from fit (deg)");
|
||||
// herr->Draw();
|
||||
|
||||
|
||||
// printf("\n\n\n");
|
||||
// for (mod=0;mod<NMOD;mod++) {
|
||||
// printf(" module %i center %.3E +- %.2E conversion %.4E +- %.2E offset %.5f +- %.5f \n",mod,center[mod],errcenter[mod],conversion[mod],errconversion[mod],moffset[mod],erroff[mod]);
|
||||
// }
|
||||
|
||||
|
||||
// // write file with offsets
|
||||
// fp = fopen("ang.off","w");
|
||||
// if (fp == NULL) {
|
||||
// printf("cant open parameter file !\n");
|
||||
// exit(1);
|
||||
// }
|
||||
|
||||
// for (mod=0;mod<NMOD;mod++) {
|
||||
// fprintf(fp," module %i center %.3E +- %.2E conversion %.4E +- %.2E offset %.5f +- %.5f \n",mod,center[mod],errcenter[mod],conversion[mod],errconversion[mod],moffset[0]-moffset[mod],erroff[mod]);
|
||||
// }
|
||||
|
||||
// fclose (fp);
|
||||
|
||||
// }
|
||||
|
@ -1,154 +0,0 @@
|
||||
|
||||
#ifndef ANGULARCALIBRATION_H
|
||||
#define ANGULARCALIBRATION_H
|
||||
|
||||
|
||||
//#include "usersFunctions.h"
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
#include <TROOT.h>
|
||||
#include <TF1.h>
|
||||
class TH1;
|
||||
#endif
|
||||
|
||||
//double angle(int ichan, double encoder, double totalOffset, double conv_r, double center, double offset, double tilt, int direction)
|
||||
|
||||
|
||||
|
||||
class angularCalibration {
|
||||
|
||||
public:
|
||||
angularCalibration(int nm=48);
|
||||
~angularCalibration();
|
||||
|
||||
/**
|
||||
sets the angular direction of the detector
|
||||
\par d 1 or -1 set the angular direction, other valuse simply get
|
||||
\returns the angular direction of the detector
|
||||
*/
|
||||
int setDirection(int d=0){if (d==-1 || d==1) direction=d; return direction;};
|
||||
|
||||
/**
|
||||
sets the encoder position
|
||||
\param f encoder position to be set
|
||||
\returns current encoder position
|
||||
*/
|
||||
double setEncoder(double f) {encoder=f; return encoder;};
|
||||
|
||||
/**
|
||||
gets the encoder position
|
||||
\returns encoder position
|
||||
*/
|
||||
double getEncoder() {return encoder;};
|
||||
|
||||
/**
|
||||
sets the totalOffset of the detector
|
||||
\param f total offset to be set
|
||||
\returns current total offset
|
||||
*/
|
||||
double setTotalOffset(double f) {totalOffset=f; return totalOffset;};
|
||||
|
||||
/**
|
||||
gets the encoder position
|
||||
\returns encoder position
|
||||
*/
|
||||
double getTotalOffset() {return totalOffset;};
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
sets the angular range for peak fitting
|
||||
\param mi minimum of the angular range
|
||||
\param ma maximum of the angular range
|
||||
*/
|
||||
void setAngularRange(double mi, double ma){ang_min=mi; ang_max=ma;};
|
||||
|
||||
|
||||
/**
|
||||
gets the angular range for peak fitting
|
||||
\param mi reference to the minimum of the angular range
|
||||
\param ma reference to the maximum of the angular range
|
||||
*/
|
||||
void getAngularRange(double &mi, double &ma){mi=ang_min; ma=ang_max;};
|
||||
|
||||
|
||||
/** sets and returns the number of modules
|
||||
\param nm number of modules to be set (<0 gets)
|
||||
\return current number of modules
|
||||
*/
|
||||
int setNumberOfModules(int nm=-1) {if (nm>=0) nmod=nm; return nmod;};
|
||||
|
||||
/** sets and returns the number of channels per module
|
||||
\param n number of channels per module to be set (<0 gets)
|
||||
\return current number of channels per module
|
||||
*/
|
||||
int setChannelsPerModule(int n=-1) {if (n>0) nchmod=n; return nchmod;};
|
||||
|
||||
angleConversionConstant *getAngularConversionConstant(int imod=0);
|
||||
angleConversionConstant *setAngularConversionConstant(angleConversionConstant *a, int imod=0);
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
|
||||
/**
|
||||
Gaussian with pedestal describing a peak
|
||||
par[0] is the heigh of the pean
|
||||
par[1] is the peak position
|
||||
par[2] is the peak width
|
||||
par[3] is the background offset
|
||||
par[4] is the background slope
|
||||
*/
|
||||
Double_t peakFunction(Double_t *x, Double_t *par);
|
||||
|
||||
|
||||
/**
|
||||
Angular conversion function
|
||||
par[0] is the module center
|
||||
par[1] is the conversion radius (pitch/radius)
|
||||
par[2] is the module offset
|
||||
*/
|
||||
Double_t angleFunction(Double_t *x, Double_t *par);
|
||||
|
||||
/**
|
||||
Fits a peak for the angular calibration
|
||||
\param h histogram channels versus intensity
|
||||
\returns fitted function or NULL if fit failed
|
||||
*/
|
||||
TF1 *fitPeak(TH1 *h);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
private:
|
||||
|
||||
int direction; /**< angular direction of the detector -can be +1 or -1 */
|
||||
|
||||
#ifdef ROOT
|
||||
TF1 *fpeak; /**< Root function based on function peakFunction */
|
||||
|
||||
TF1 *fangle; /**< Root function based on function angleFunction */
|
||||
|
||||
#endif
|
||||
double encoder; /**< position of the detector encoder */
|
||||
double totalOffset; /**< total offset of the detector */
|
||||
double ang_min; /**< minimum of the angular range for peak fitting*/
|
||||
double ang_max; /**< maximum of the angular range for peak fitting */
|
||||
|
||||
int nmod;
|
||||
int nchmod;
|
||||
|
||||
angleConversionConstant angConv[MAXMOD*MAXDET];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* void fitangle(char fname[80],char extension[10], int start, int stop, double startangle, double stopangle); //fits all datasets and extracts the constants */
|
||||
/* int fitpeak(char fname[80],char extension[10], int nr, double minang, double maxang); // fits a peak from a pattern using nominal calibration constant */
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -1,308 +0,0 @@
|
||||
#include "angularConversion.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <math.h>
|
||||
#include <cstring>
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
angularConversion::angularConversion(): angularConversionStatic(), currentPosition(0),
|
||||
currentPositionIndex(0)
|
||||
|
||||
{
|
||||
//angleFunctionPointer=0;
|
||||
// registerAngleFunctionCallback(&defaultAngleFunction);
|
||||
|
||||
}
|
||||
|
||||
angularConversion::~angularConversion(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
double* angularConversion::convertAngles(double pos) {
|
||||
|
||||
int nmod=getNMods();
|
||||
int *chansPerMod=new int[nmod];
|
||||
angleConversionConstant **angOff=new angleConversionConstant*[nmod];
|
||||
int *mF=new int[nmod];
|
||||
double fo=*fineOffset;
|
||||
double go=*globalOffset;
|
||||
int angdir=*angDirection;
|
||||
|
||||
|
||||
|
||||
for (int im=0; im<nmod; im++) {
|
||||
angOff[im]=getAngularConversionPointer(im);
|
||||
mF[im]=getMoveFlag(im);
|
||||
chansPerMod[im]=getChansPerMod(im);
|
||||
}
|
||||
|
||||
return angularConversionStatic::convertAngles(pos, getTotalNumberOfChannels(), chansPerMod, angOff,mF, fo, go, angdir);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int angularConversion::deleteMerging() {
|
||||
|
||||
if (mergingBins)
|
||||
delete [] mergingBins;
|
||||
|
||||
if (mergingCounts)
|
||||
delete [] mergingCounts;
|
||||
|
||||
if (mergingErrors)
|
||||
delete [] mergingErrors;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int angularConversion::resetMerging() {
|
||||
getAngularConversionParameter(BIN_SIZE);
|
||||
|
||||
cout << "reset merging * " << endl;
|
||||
|
||||
mergingBins=new double[nBins];
|
||||
|
||||
|
||||
mergingCounts=new double[nBins];
|
||||
|
||||
|
||||
mergingErrors=new double[nBins];
|
||||
|
||||
|
||||
mergingMultiplicity=new int[nBins];
|
||||
|
||||
return resetMerging(mergingBins, mergingCounts, mergingErrors, mergingMultiplicity);
|
||||
|
||||
}
|
||||
|
||||
int angularConversion::resetMerging(double *mp, double *mv, double *me, int *mm) {
|
||||
cout << "reset merging " << endl;
|
||||
|
||||
getAngularConversionParameter(BIN_SIZE);
|
||||
if (nBins)
|
||||
return angularConversionStatic::resetMerging(mp, mv, me, mm,nBins);
|
||||
else
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int angularConversion::finalizeMerging() {
|
||||
cout << "finalize merging *" << endl;
|
||||
int np=finalizeMerging(mergingBins, mergingCounts, mergingErrors, mergingMultiplicity);
|
||||
|
||||
if (mergingMultiplicity)
|
||||
delete [] mergingMultiplicity;
|
||||
|
||||
return np;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int angularConversion::finalizeMerging(double *mp, double *mv, double *me, int *mm) {
|
||||
if (nBins)
|
||||
return angularConversionStatic::finalizeMerging(mp, mv, me, mm, nBins);
|
||||
else
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
int angularConversion::addToMerging(double *p1, double *v1, double *e1, int *badChanMask ) {
|
||||
|
||||
return addToMerging(p1,v1,e1,mergingBins,mergingCounts, mergingErrors, mergingMultiplicity, badChanMask);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
int angularConversion::addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int *badChanMask ) {
|
||||
|
||||
int del=0;
|
||||
|
||||
if (getAngularConversionParameter(BIN_SIZE)==0){
|
||||
cout << "no bin size " << endl;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (nBins==0) {
|
||||
cout << "no bins " << endl;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
if (p1==NULL) {
|
||||
del=1;
|
||||
p1=convertAngles();
|
||||
}
|
||||
|
||||
|
||||
int ret=angularConversionStatic::addToMerging(p1, v1, e1, mp, mv,me, mm,getTotalNumberOfChannels(), *binSize,nBins, badChanMask );
|
||||
|
||||
|
||||
if (del) {
|
||||
delete [] p1;
|
||||
p1=NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
sets the value of s angular conversion parameter
|
||||
\param c can be ANGULAR_DIRECTION, GLOBAL_OFFSET, FINE_OFFSET, BIN_SIZE
|
||||
\param v the value to be set
|
||||
\returns the actual value
|
||||
*/
|
||||
|
||||
double angularConversion::setAngularConversionParameter(angleConversionParameter c, double v){
|
||||
|
||||
|
||||
switch (c) {
|
||||
case ANGULAR_DIRECTION:
|
||||
if (v<0)
|
||||
*angDirection=-1;
|
||||
else
|
||||
*angDirection=1;
|
||||
return *angDirection;
|
||||
case GLOBAL_OFFSET:
|
||||
*globalOffset=v;
|
||||
return *globalOffset;
|
||||
case FINE_OFFSET:
|
||||
*fineOffset=v;
|
||||
return *fineOffset;
|
||||
case BIN_SIZE:
|
||||
if (v>0) {
|
||||
*binSize=v;
|
||||
nBins=(int)(360./(*binSize))+1;
|
||||
}
|
||||
return *binSize;
|
||||
case MOVE_FLAG:
|
||||
if (moveFlag) {
|
||||
if (v>0)
|
||||
*moveFlag=1;
|
||||
else if (v==0)
|
||||
*moveFlag=0;
|
||||
return *moveFlag;
|
||||
}
|
||||
return -1;
|
||||
case SAMPLE_X:
|
||||
if (sampleDisplacement) {
|
||||
sampleDisplacement[X]=v;
|
||||
return sampleDisplacement[X];
|
||||
}
|
||||
return 0;
|
||||
case SAMPLE_Y:
|
||||
if (sampleDisplacement) {
|
||||
sampleDisplacement[Y]=v;
|
||||
return sampleDisplacement[Y];
|
||||
}
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
returns the value of an angular conversion parameter
|
||||
\param c can be ANGULAR_DIRECTION, GLOBAL_OFFSET, FINE_OFFSET, BIN_SIZE
|
||||
\returns the actual value
|
||||
|
||||
*/
|
||||
|
||||
double angularConversion::getAngularConversionParameter(angleConversionParameter c) {
|
||||
|
||||
switch (c) {
|
||||
case ANGULAR_DIRECTION:
|
||||
return *angDirection;
|
||||
case GLOBAL_OFFSET:
|
||||
return *globalOffset;
|
||||
case FINE_OFFSET:
|
||||
return *fineOffset;
|
||||
case BIN_SIZE:
|
||||
if (*binSize>0)
|
||||
nBins=(int)(360./(*binSize))+1;
|
||||
else
|
||||
nBins=0;
|
||||
return *binSize;
|
||||
case MOVE_FLAG:
|
||||
if (moveFlag)
|
||||
return *moveFlag;
|
||||
else
|
||||
return -1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int angularConversion::setAngularConversionFile(string fname) {
|
||||
if (fname=="") {
|
||||
setAngularCorrectionMask(0);
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Unsetting angular conversion" << std::endl;
|
||||
#endif
|
||||
} else {
|
||||
if (fname=="default") {
|
||||
fname=string(angConvFile);
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Setting angular conversion to " << fname << std:: endl;
|
||||
#endif
|
||||
if (readAngularConversionFile(fname)>=0) {
|
||||
setAngularCorrectionMask(1);
|
||||
strcpy(angConvFile,fname.c_str());
|
||||
}
|
||||
}
|
||||
return setAngularCorrectionMask();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
set positions for the acquisition
|
||||
\param nPos number of positions
|
||||
\param pos array with the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
int angularConversion::setPositions(int nPos, double *pos){
|
||||
if (nPos>=0)
|
||||
*numberOfPositions=nPos;
|
||||
for (int ip=0; ip<nPos; ip++)
|
||||
detPositions[ip]=pos[ip];
|
||||
|
||||
return *numberOfPositions;
|
||||
}
|
||||
/*
|
||||
get positions for the acquisition
|
||||
\param pos array which will contain the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
int angularConversion::getPositions(double *pos){
|
||||
if (pos) {
|
||||
for (int ip=0; ip<(*numberOfPositions); ip++)
|
||||
pos[ip]=detPositions[ip];
|
||||
}
|
||||
|
||||
return *numberOfPositions;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,406 +0,0 @@
|
||||
|
||||
#ifndef ANGULARCONVERSION_H
|
||||
#define ANGULARCONVERSION_H
|
||||
|
||||
#ifdef __CINT
|
||||
#define MYROOT
|
||||
#endif
|
||||
|
||||
#ifndef MYROOT
|
||||
#include "slsDetectorBase.h"
|
||||
#else
|
||||
#include "sls_detector_defs.h"
|
||||
#endif
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
#include "angularConversionStatic.h"
|
||||
|
||||
//double angle(int ichan, double encoder, double totalOffset, double conv_r, double center, double offset, double tilt, int direction)
|
||||
|
||||
|
||||
//
|
||||
|
||||
/**
|
||||
@short Angular conversion constants needed for a detector module
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@short methods to set/unset the angular conversion and merge the data
|
||||
class containing the methods to set/unset the angular conversion and merge the data
|
||||
|
||||
|
||||
The angular conversion itself is defined by the angle() function defined in usersFunctions.cpp
|
||||
|
||||
*/
|
||||
class angularConversion : public virtual slsDetectorBase, public angularConversionStatic
|
||||
|
||||
{
|
||||
|
||||
public:
|
||||
/** default constructor */
|
||||
angularConversion();
|
||||
/** virtual destructor */
|
||||
virtual ~angularConversion();
|
||||
|
||||
|
||||
|
||||
//virtual int readAngularConversion(string fname)=0;
|
||||
|
||||
using angularConversionStatic::writeAngularConversion;
|
||||
using angularConversionStatic::readAngularConversion;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
\param file name to be written (nmod and array of angular conversion constants default to the ones ot the slsDetector
|
||||
*/
|
||||
virtual int writeAngularConversion(std::string fname)=0;
|
||||
/**
|
||||
sets the arrays of the merged data to 0. NB The array should be created with size >= 360./getBinSize();
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
int resetMerging(double *mp, double *mv,double *me, int *mm);
|
||||
|
||||
/**
|
||||
creates the arrays for merging the data and sets them to 0.
|
||||
*/
|
||||
int resetMerging();
|
||||
|
||||
|
||||
/**
|
||||
merge dataset
|
||||
\param p1 angular positions of dataset
|
||||
\param v1 data
|
||||
\param e1 errors
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param badChanMask badchannelmask (if NULL does not correct for bad channels)
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
int addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int *badChanMask);
|
||||
/**
|
||||
merge dataset
|
||||
\param p1 angular positions of dataset
|
||||
\param v1 data
|
||||
\param e1 errors
|
||||
\param badChanMask badchannelmask (if NULL does not correct for bad channels)
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
int addToMerging(double *p1, double *v1, double *e1,int *badChanMask);
|
||||
|
||||
/**
|
||||
calculates the "final" positions, data value and errors for the merged data
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\returns FAIL or the number of non empty bins (i.e. points belonging to the pattern)
|
||||
*/
|
||||
|
||||
int finalizeMerging(double *mp, double *mv,double *me, int *mm);
|
||||
|
||||
/**
|
||||
calculates the "final" positions, data value and errors for the merged data
|
||||
\returns FAIL or the number of non empty bins (i.e. points belonging to the pattern)
|
||||
*/
|
||||
|
||||
int finalizeMerging();
|
||||
|
||||
|
||||
/**
|
||||
set detector global offset
|
||||
\param f global offset to be set
|
||||
\returns actual global offset
|
||||
*/
|
||||
double setGlobalOffset(double f){return setAngularConversionParameter(GLOBAL_OFFSET,f);};
|
||||
|
||||
|
||||
/**
|
||||
set detector fine offset
|
||||
\param f global fine to be set
|
||||
\returns actual fine offset
|
||||
*/
|
||||
double setFineOffset(double f){return setAngularConversionParameter(FINE_OFFSET,f);};
|
||||
|
||||
/**
|
||||
get detector fine offset
|
||||
\returns actual fine offset
|
||||
*/
|
||||
double getFineOffset(){return getAngularConversionParameter(FINE_OFFSET);};
|
||||
|
||||
/**
|
||||
get detector global offset
|
||||
\returns actual global offset
|
||||
*/
|
||||
double getGlobalOffset(){return getAngularConversionParameter(GLOBAL_OFFSET);};
|
||||
|
||||
/**
|
||||
|
||||
set detector bin size
|
||||
\param bs bin size to be set
|
||||
\returns actual bin size
|
||||
*/
|
||||
double setBinSize(double bs){if (bs>0) nBins=(int)(360./bs); return setAngularConversionParameter(BIN_SIZE,bs);};
|
||||
|
||||
/**
|
||||
get detector bin size
|
||||
\returns detector bin size used for merging (approx angular resolution)
|
||||
*/
|
||||
double getBinSize() {return getAngularConversionParameter(BIN_SIZE);};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
get angular direction
|
||||
\returns actual angular direction (1 is channel number increasing with angle, -1 decreasing)
|
||||
*/
|
||||
int getAngularDirection(){return (int)getAngularConversionParameter(ANGULAR_DIRECTION);};
|
||||
|
||||
|
||||
/**
|
||||
|
||||
set angular direction
|
||||
\param d angular direction to be set (1 is channel number increasing with angle, -1 decreasing)
|
||||
\returns actual angular direction (1 is channel number increasing with angle, -1 decreasing)
|
||||
*/
|
||||
int setAngularDirection(int d){return (int)setAngularConversionParameter(ANGULAR_DIRECTION, (double)d);};
|
||||
|
||||
/**
|
||||
\returns number of angular bins in the merging (360./binsize)
|
||||
*/
|
||||
int getNumberOfAngularBins(){return nBins;};
|
||||
|
||||
/**
|
||||
get angular conversion
|
||||
\param direction reference to diffractometer direction
|
||||
\param angconv array that will be filled with the angular conversion constants
|
||||
\returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
virtual int getAngularConversion(int &direction, angleConversionConstant *angconv=NULL)=0;
|
||||
|
||||
|
||||
/**
|
||||
set angular conversion parameter
|
||||
\param c parameter type (globaloffset, fineoffset, binsize, angular direction, move flag)
|
||||
\param v value to be set
|
||||
\returns actual value
|
||||
*/
|
||||
double setAngularConversionParameter(angleConversionParameter c, double v);
|
||||
/**
|
||||
get angular conversion parameter
|
||||
\param c parameter type (globaloffset, fineoffset, binsize, angular direction, move flag)
|
||||
\returns actual value
|
||||
*/
|
||||
double getAngularConversionParameter(angleConversionParameter c);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
set positions for the acquisition
|
||||
\param nPos number of positions
|
||||
\param pos array with the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
virtual int setPositions(int nPos, double *pos);
|
||||
/**
|
||||
get positions for the acquisition
|
||||
\param pos array which will contain the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
virtual int getPositions(double *pos=NULL);
|
||||
|
||||
/**
|
||||
deletes the array of merged data
|
||||
\returns OK
|
||||
*/
|
||||
int deleteMerging();
|
||||
|
||||
/**
|
||||
\returns pointer to the array o merged positions
|
||||
*/
|
||||
double *getMergedPositions(){return mergingBins;};
|
||||
/**
|
||||
\returns pointer to the array of merged counts
|
||||
*/
|
||||
double *getMergedCounts(){return mergingCounts;};
|
||||
/**
|
||||
\returns pointer to the array of merged errors
|
||||
*/
|
||||
double *getMergedErrors(){return mergingErrors;};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
sets the angular conversion file
|
||||
\param fname file to read
|
||||
\returns angular conversion flag
|
||||
*/
|
||||
|
||||
int setAngularConversionFile(std::string fname);
|
||||
|
||||
|
||||
/**
|
||||
returns the angular conversion file
|
||||
*/
|
||||
std::string getAngularConversionFile(){if (setAngularCorrectionMask()) return std::string(angConvFile); else return std::string("none");};
|
||||
|
||||
|
||||
/**
|
||||
reads teh angular conversion file for the (multi)detector and writes it to shared memory
|
||||
*/
|
||||
virtual int readAngularConversionFile(std::string fname="")=0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
\returns number of modules of the (multi)detector
|
||||
*/
|
||||
virtual int getNMods()=0;
|
||||
|
||||
/**
|
||||
returns number of channels in the module
|
||||
\param imod module number
|
||||
\returns number of channels in the module
|
||||
*/
|
||||
virtual int getChansPerMod(int imod=0)=0;
|
||||
|
||||
/**
|
||||
get the angular conversion contant of one modules
|
||||
\param imod module number
|
||||
\returns pointer to the angular conversion constant
|
||||
*/
|
||||
virtual angleConversionConstant *getAngularConversionPointer(int imod=0)=0;
|
||||
|
||||
/**
|
||||
converts channel number to angle
|
||||
\param pos encoder position
|
||||
\returns array of angles corresponding to the channels
|
||||
*/
|
||||
double* convertAngles(double pos);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
converts channel number to angle for the current encoder position
|
||||
\returns array of angles corresponding to the channels
|
||||
*/
|
||||
double *convertAngles(){return convertAngles(currentPosition);};
|
||||
|
||||
/**
|
||||
\param imod module number
|
||||
\returns move flag of the module (1 encoder is added to the angle, 0 not)
|
||||
Shold be module dependent!
|
||||
*/
|
||||
virtual int getMoveFlag(int imod)=0;
|
||||
|
||||
/**
|
||||
returns number of positions
|
||||
*/
|
||||
int getNumberOfPositions() {return *numberOfPositions;};
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
/** pointer to number of positions for the acquisition*/
|
||||
int *numberOfPositions;
|
||||
|
||||
/** pointer to the detector positions for the acquisition*/
|
||||
double *detPositions;
|
||||
|
||||
/** pointer to angular conversion file name*/
|
||||
char *angConvFile;
|
||||
|
||||
/** pointer to angular bin size*/
|
||||
double *binSize;
|
||||
|
||||
/** pointer to beamlien fine offset*/
|
||||
double *fineOffset;
|
||||
/** pointer to beamlien global offset*/
|
||||
double *globalOffset;
|
||||
/** pointer to beamlien angular direction*/
|
||||
int *angDirection;
|
||||
/** pointer to detector move flag (1 moves with encoder, 0 not)*/
|
||||
int *moveFlag;
|
||||
|
||||
/** number of bins for angular conversion (360./binsize)*/
|
||||
int nBins;
|
||||
|
||||
|
||||
|
||||
double *sampleDisplacement;
|
||||
|
||||
/**
|
||||
current position of the detector
|
||||
*/
|
||||
double currentPosition;
|
||||
/**
|
||||
current position index of the detector
|
||||
*/
|
||||
int currentPositionIndex;
|
||||
|
||||
|
||||
/**
|
||||
enables/disable the angular conversion
|
||||
\param i 1 sets, 0 unsets,, -1 gets
|
||||
\returns actual angular conversion flag
|
||||
*/
|
||||
virtual int setAngularCorrectionMask(int i=-1)=0;
|
||||
|
||||
/**
|
||||
returns current position index
|
||||
*/
|
||||
int getCurrentPositionIndex() {return currentPositionIndex;};
|
||||
void incrementPositionIndex() {currentPositionIndex++;};
|
||||
void resetPositionIndex() {currentPositionIndex=0;};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
// int nChans;
|
||||
// int nMods;
|
||||
// int chansPerMod;
|
||||
// int moveFlag;
|
||||
|
||||
|
||||
|
||||
|
||||
/** merging bins */
|
||||
double *mergingBins;
|
||||
|
||||
/** merging counts */
|
||||
double *mergingCounts;
|
||||
|
||||
/** merging errors */
|
||||
double *mergingErrors;
|
||||
|
||||
/** merging multiplicity */
|
||||
int *mergingMultiplicity;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -1,461 +0,0 @@
|
||||
#include "angularConversionStatic.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <math.h>
|
||||
#include "angleConversionConstant.h"
|
||||
|
||||
#include "sls_detector_defs.h"
|
||||
#include "angleFunction.h"
|
||||
using namespace std;
|
||||
|
||||
angularConversionStatic::angularConversionStatic()
|
||||
{
|
||||
//angleFunctionPointer=0;
|
||||
registerAngleFunctionCallback(&defaultAngleFunction);
|
||||
|
||||
}
|
||||
|
||||
angularConversionStatic::~angularConversionStatic(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
double* angularConversionStatic::convertAngles(double pos, int nch, int *chansPerMod, angleConversionConstant **angOff, int *mF, double fo, double go, int angdir) {
|
||||
|
||||
// cout << "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP convert angles " << endl;
|
||||
|
||||
int imod=0;
|
||||
double *ang=new double[nch];
|
||||
double enc=pos;
|
||||
angleConversionConstant *p=NULL;
|
||||
|
||||
int ch0=0;
|
||||
int chlast=chansPerMod[0]-1;
|
||||
int nchmod=chansPerMod[0];
|
||||
p=angOff[imod];
|
||||
if (mF[imod]==0)
|
||||
enc=0;
|
||||
else
|
||||
enc=pos;
|
||||
|
||||
for (int ip=0; ip<nch; ip++) {
|
||||
#ifdef VERBOSE
|
||||
cout << "ip " << ip << " ch0 " << ch0 << " chlast " << chlast << " imod " << imod << endl;
|
||||
#endif
|
||||
if (ip>chlast) {
|
||||
imod++;
|
||||
p=angOff[imod];
|
||||
if (mF[imod]==0)
|
||||
enc=0;
|
||||
else
|
||||
enc=pos;
|
||||
|
||||
#ifdef VERBOSE
|
||||
if (p)
|
||||
cout << enc << endl << fo+go << endl << p->r_conversion << endl << p->center << endl << p->offset << endl << p->tilt << angdir << endl;
|
||||
else
|
||||
cout << "no ang conv " << endl;
|
||||
#endif
|
||||
|
||||
ch0=chlast+1;
|
||||
nchmod=chansPerMod[imod];
|
||||
if (nchmod>0)
|
||||
chlast=ch0+nchmod-1;
|
||||
}
|
||||
|
||||
if (p)
|
||||
ang[ip]=angle(ip-ch0, \
|
||||
enc, \
|
||||
fo+go, \
|
||||
p->r_conversion, \
|
||||
p->center, \
|
||||
p->offset, \
|
||||
p->tilt, \
|
||||
angdir );
|
||||
#ifdef VERBOSE
|
||||
cout << "ip " << ip << " ch0 " << ch0 << " chlast " << chlast << " imod " << imod << endl;
|
||||
#endif
|
||||
}
|
||||
return ang;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
double angularConversionStatic::convertAngle(double pos, int ich, angleConversionConstant *p, int mF, double fo, double go, int angdir) {
|
||||
|
||||
// cout << "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP convert angle " << endl;
|
||||
// if (p)
|
||||
// cout << pos << endl << fo+go << endl << p->r_conversion << endl << p->center << endl << p->offset << endl << mF << endl << angdir << endl;
|
||||
// else
|
||||
// cout << "no ang conv " << endl;
|
||||
|
||||
double enc=0, trans=0;
|
||||
double ang;
|
||||
|
||||
switch (mF) {
|
||||
case 0:
|
||||
enc=0;
|
||||
trans=0;
|
||||
break;
|
||||
case 1:
|
||||
enc=pos;
|
||||
trans=0;
|
||||
break;
|
||||
case -1:
|
||||
enc=-pos;
|
||||
trans=0;
|
||||
break;
|
||||
case 2:
|
||||
enc=0;
|
||||
trans=pos;
|
||||
break;
|
||||
case -2:
|
||||
enc=0;
|
||||
trans=-pos;
|
||||
break;
|
||||
default:
|
||||
enc=0;
|
||||
trans=0;
|
||||
}
|
||||
|
||||
if (p)
|
||||
ang=angle(ich, \
|
||||
enc, \
|
||||
fo+go, \
|
||||
p->r_conversion, \
|
||||
p->center, \
|
||||
p->offset, \
|
||||
trans, \
|
||||
angdir );
|
||||
// cout << ich << " " << ang << endl << endl;
|
||||
return ang;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
double angularConversionStatic::convertAngle(double pos, int ich, int *chansPerMod, angleConversionConstant **angOff, int *mF, double fo, double go, int angdir) {
|
||||
|
||||
// cout << "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP convert angles xx" << endl;
|
||||
int imod=0;
|
||||
double ang;
|
||||
// double enc=0, trans=0;
|
||||
angleConversionConstant *p=NULL;
|
||||
|
||||
int ch0=0;
|
||||
int chlast=chansPerMod[0]-1;
|
||||
int nchmod=chansPerMod[0];
|
||||
|
||||
|
||||
|
||||
while (ich>chlast) {
|
||||
imod++;
|
||||
ch0=chlast+1;
|
||||
nchmod=chansPerMod[imod];
|
||||
chlast=ch0+nchmod-1;
|
||||
}
|
||||
|
||||
p=angOff[imod];
|
||||
|
||||
|
||||
ang=convertAngle(pos, ich-ch0, p, mF[imod], fo, go, angdir);
|
||||
|
||||
return ang;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//static!
|
||||
int angularConversionStatic::readAngularConversion(string fname, int nmod, angleConversionConstant *angOff) {
|
||||
|
||||
ifstream infile;
|
||||
string ss;
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Opening file "<< fname << std::endl;
|
||||
#endif
|
||||
infile.open(fname.c_str(), ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
readAngularConversion(infile, nmod, angOff);
|
||||
infile.close();
|
||||
} else {
|
||||
std::cout<< "Could not open calibration file "<< fname << std::endl;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
int angularConversionStatic::readAngularConversion( ifstream& infile, int nmod, angleConversionConstant *angOff) {
|
||||
string str;
|
||||
int mod;
|
||||
double center, ecenter, pitch, epitch;
|
||||
double r_conv, er_conv;
|
||||
double off, eoff;
|
||||
string ss;
|
||||
int interrupt=0;
|
||||
int nm=0;
|
||||
int newangconv=0;
|
||||
//" module %i center %E +- %E conversion %E +- %E offset %f +- %f \n"
|
||||
while (infile.good() and interrupt==0) {
|
||||
getline(infile,str);
|
||||
#ifdef VERBOSE
|
||||
cout << "** mod " << nm << " " ;
|
||||
std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
ssstr >> ss >> mod;
|
||||
ssstr >> ss >> center;
|
||||
if (ss==string("center"))
|
||||
newangconv=0;
|
||||
else
|
||||
newangconv=1;
|
||||
ssstr >> ss >> ecenter;
|
||||
if (newangconv) {
|
||||
ssstr >> ss >> pitch;
|
||||
ssstr >> ss >> epitch;
|
||||
}
|
||||
ssstr >> ss >> r_conv;
|
||||
ssstr >> ss >> er_conv;
|
||||
ssstr >> ss >> off;
|
||||
ssstr >> ss >> eoff;
|
||||
#ifdef VERBOSE
|
||||
cout << nm << " " << nmod << endl;
|
||||
#endif
|
||||
if (nm<nmod && nm>=0 ) {
|
||||
angOff[nm].center=center;
|
||||
angOff[nm].r_conversion=r_conv;
|
||||
angOff[nm].offset=off;
|
||||
angOff[nm].ecenter=ecenter;
|
||||
angOff[nm].er_conversion=er_conv;
|
||||
angOff[nm].eoffset=eoff;
|
||||
|
||||
if (newangconv!=0) {
|
||||
// } else {
|
||||
|
||||
angOff[nm].tilt=pitch;
|
||||
angOff[nm].etilt=epitch;
|
||||
|
||||
}
|
||||
// cout << angOff[nm].center << " " <<
|
||||
// angOff[nm].r_conversion << " " <<
|
||||
// angOff[nm].offset << endl;
|
||||
|
||||
} else
|
||||
break;
|
||||
#ifdef VERBOSE
|
||||
cout << nm<<" " << angOff[nm].offset << endl;
|
||||
#endif
|
||||
nm++;
|
||||
if (nm>=nmod)
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
return nm;
|
||||
}
|
||||
|
||||
//static
|
||||
int angularConversionStatic:: writeAngularConversion(string fname, int nmod, angleConversionConstant *angOff) {
|
||||
|
||||
ofstream outfile;
|
||||
outfile.open (fname.c_str(),ios_base::out);
|
||||
if (outfile.is_open())
|
||||
{
|
||||
writeAngularConversion(outfile, nmod, angOff);
|
||||
outfile.close();
|
||||
} else {
|
||||
std::cout<< "Could not open file " << fname << "for writing"<< std::endl;
|
||||
return -1;
|
||||
}
|
||||
//" module %i center %E +- %E conversion %E +- %E offset %f +- %f \n"
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//static
|
||||
int angularConversionStatic:: writeAngularConversion(ofstream& outfile, int nmod, angleConversionConstant *angOff) {
|
||||
|
||||
for (int imod=0; imod<nmod; imod++) {
|
||||
outfile << " module " << imod << " center "<< angOff[imod].center<<" +- "<< angOff[imod].ecenter<<" conversion "<< angOff[imod].r_conversion << " +- "<< angOff[imod].er_conversion << " offset "<< angOff[imod].offset << " +- "<< angOff[imod].eoffset << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
int angularConversionStatic::resetMerging(double *mp, double *mv, double *me, int *mm, int nb) {
|
||||
|
||||
// cout << "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP reset merging " << endl;
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "creating merging arrays "<< nb << endl;
|
||||
#endif
|
||||
|
||||
|
||||
for (int ibin=0; ibin<nb; ibin++) {
|
||||
mp[ibin]=0;
|
||||
mv[ibin]=0;
|
||||
me[ibin]=0;
|
||||
mm[ibin]=0;
|
||||
}
|
||||
return slsDetectorDefs::OK;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
int angularConversionStatic::finalizeMerging(double *mp, double *mv, double *me, int *mm,int nb) {
|
||||
// cout << "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP finalize merging " << endl;
|
||||
int np=0;
|
||||
for (int ibin=0; ibin<nb; ibin++) {
|
||||
if (mm[ibin]>0) {
|
||||
#ifdef VERBOSE
|
||||
cout << "finalize " << ibin << " "<< mm[ibin] << " " << mp[ibin]<< " " << mv[ibin] << " " << me[ibin] << endl;
|
||||
#endif
|
||||
mp[np]=mp[ibin]/mm[ibin];
|
||||
mv[np]=mv[ibin]/mm[ibin];
|
||||
me[np]=me[ibin]/mm[ibin];
|
||||
me[np]=sqrt(me[ibin]);
|
||||
mm[np]=mm[ibin];
|
||||
np++;
|
||||
}
|
||||
}
|
||||
// cout << endl ;
|
||||
return np;
|
||||
}
|
||||
|
||||
//static
|
||||
int angularConversionStatic::addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int nchans, double binsize,int nbins, int *badChanMask ) {
|
||||
|
||||
|
||||
// cout << "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP add to merging " << endl;
|
||||
double binmi=-180.;
|
||||
int ibin=0;
|
||||
|
||||
if (p1==NULL)
|
||||
return 0;
|
||||
if (v1==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
if (mp==NULL) //can be changed if we want to use a fixed bin algorithm!
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
if (mv==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
if (me==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
if (mm==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
if (nchans==0)
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
if (binsize<=0)
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
if (nbins<=0)
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
for (int ip=0; ip<nchans; ip++) {
|
||||
if (badChanMask) {
|
||||
if (badChanMask[ip]) {
|
||||
#ifdef VERBOSE
|
||||
cout << "channel " << ip << " is bad " << endl;
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
}
|
||||
ibin=(int)((p1[ip]-binmi)/binsize);
|
||||
|
||||
|
||||
if (ibin<nbins && ibin>=0) {
|
||||
mp[ibin]+=p1[ip];
|
||||
mv[ibin]+=v1[ip];
|
||||
if (e1)
|
||||
me[ibin]+=(e1[ip]*e1[ip]);
|
||||
else
|
||||
me[ibin]+=v1[ip];
|
||||
mm[ibin]++;
|
||||
|
||||
// #ifdef VERBOSE
|
||||
// cout << "add " << ibin << " "<< mm[ibin] << " " << mp[ibin]<< mv[ibin] << me[ibin] << endl;
|
||||
// #endif
|
||||
} else
|
||||
return slsDetectorDefs::FAIL;
|
||||
}
|
||||
|
||||
|
||||
return slsDetectorDefs::OK;
|
||||
|
||||
}
|
||||
|
||||
int angularConversionStatic::addPointToMerging(double p1, double v1, double e1, double *mp, double *mv,double *me, int *mm, double binsize,int nbins) {
|
||||
|
||||
|
||||
// cout << "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP add point to merging "<< v1 << " " << e1 << endl;
|
||||
double binmi=-180.;
|
||||
int ibin=0;
|
||||
|
||||
|
||||
if (mp==NULL) //can be changed if we want to use a fixed bin algorithm!
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
if (mv==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
if (me==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
if (mm==NULL)
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
if (binsize<=0)
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
if (nbins<=0)
|
||||
return slsDetectorDefs::FAIL;
|
||||
|
||||
|
||||
ibin=(int)((p1-binmi)/binsize);
|
||||
|
||||
|
||||
if (ibin<nbins && ibin>=0) {
|
||||
// cout << "before " << ibin << " " << mp[ibin] << " " << mv[ibin] << " " << me[ibin] << endl;
|
||||
mp[ibin]+=p1;
|
||||
mv[ibin]+=v1;
|
||||
if (e1)
|
||||
me[ibin]+=(e1*e1);
|
||||
else
|
||||
me[ibin]+=v1;
|
||||
mm[ibin]++;
|
||||
// cout << "after " << ibin << " " << mp[ibin] << " " << mv[ibin] << " " << me[ibin] << endl;
|
||||
|
||||
// #ifdef VERBOSE
|
||||
// cout << "add " << ibin << " "<< mm[ibin] << " " << mp[ibin]<< mv[ibin] << me[ibin] << endl;
|
||||
// #endif
|
||||
} else {
|
||||
cout << "Bin out of range! " << ibin << endl;
|
||||
return slsDetectorDefs::FAIL;
|
||||
}
|
||||
|
||||
return slsDetectorDefs::OK;
|
||||
|
||||
}
|
@ -1,184 +0,0 @@
|
||||
|
||||
#ifndef ANGULARCONVERSIONSTATIC_H
|
||||
#define ANGULARCONVERSIONSTATIC_H
|
||||
|
||||
#ifdef __CINT
|
||||
#define MYROOT
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
//#include "angleConversionConstant.h"
|
||||
|
||||
|
||||
//double angle(int ichan, double encoder, double totalOffset, double conv_r, double center, double offset, double tilt, int direction)
|
||||
|
||||
class angleConversionConstant;
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
@short Angular conversion constants needed for a detector module
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@short methods to set/unset the angular conversion and merge the data
|
||||
class containing the methods to set/unset the angular conversion and merge the data
|
||||
|
||||
|
||||
The angular conversion itself is defined by the angle() function defined in usersFunctions.cpp
|
||||
|
||||
*/
|
||||
class angularConversionStatic
|
||||
// : public virtual slsDetectorDefs
|
||||
{
|
||||
|
||||
public:
|
||||
/** default constructor */
|
||||
angularConversionStatic();
|
||||
/** virtual destructor */
|
||||
virtual ~angularConversionStatic();
|
||||
|
||||
|
||||
|
||||
//virtual int readAngularConversion(std::string fname)=0;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
reads an angular conversion file
|
||||
\param fname file to be read
|
||||
\param nmod number of modules (maximum) to be read
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int readAngularConversion(std::string fname, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
/**
|
||||
reads an angular conversion file
|
||||
\param ifstream input file stream to be read
|
||||
\param nmod number of modules (maximum) to be read
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
|
||||
*/
|
||||
static int readAngularConversion(std::ifstream& ifs, int nmod, angleConversionConstant *angOff);
|
||||
/**
|
||||
writes an angular conversion file
|
||||
\param fname file to be written
|
||||
\param nmod number of modules to be written
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int writeAngularConversion(std::string fname, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
/**
|
||||
writes an angular conversion file
|
||||
\param ofstream output file stream
|
||||
\param nmod number of modules to be written
|
||||
\param angOff pointer to array of angleConversionConstants
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int writeAngularConversion(std::ofstream& ofs, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
/**
|
||||
sets the arrays of the merged data to 0. NB The array should be created with size nbins >= 360./getBinSize();
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param nbins number of bins
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
static int resetMerging(double *mp, double *mv,double *me, int *mm, int nbins);
|
||||
|
||||
/**
|
||||
merge dataset
|
||||
\param p1 angular positions of dataset
|
||||
\param v1 data
|
||||
\param e1 errors
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param nchans number of channels
|
||||
\param binsize size of angular bin
|
||||
\param nb number of angular bins
|
||||
\param badChanMask badchannelmask (if NULL does not correct for bad channels)
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
static int addToMerging(double *p1, double *v1, double *e1, double *mp, double *mv,double *me, int *mm, int nchans, double binsize,int nb, int *badChanMask=NULL);
|
||||
|
||||
|
||||
/**
|
||||
merge dataset
|
||||
\param p1 angular positions of dataset
|
||||
\param v1 data
|
||||
\param e1 errors
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param nchans number of channels
|
||||
\param binsize size of angular bin
|
||||
\param nb number of angular bins
|
||||
\param badChanMask badchannelmask (if NULL does not correct for bad channels)
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
static int addPointToMerging(double p1, double v1, double e1, double *mp, double *mv,double *me, int *mm, double binsize, int nb);
|
||||
|
||||
|
||||
/**
|
||||
calculates the "final" positions, data value and errors for the merged data
|
||||
\param mp already merged postions
|
||||
\param mv already merged data
|
||||
\param me already merged errors (squared sum)
|
||||
\param mm multiplicity of merged arrays
|
||||
\param nb number of bins
|
||||
\returns FAIL or the number of non empty bins (i.e. points belonging to the pattern)
|
||||
*/
|
||||
|
||||
static int finalizeMerging(double *mp, double *mv,double *me, int *mm, int nb);
|
||||
|
||||
/**
|
||||
converts channel number to angle
|
||||
\param pos encoder position
|
||||
\returns array of angles corresponding to the channels
|
||||
*/
|
||||
|
||||
double* convertAngles(double pos, int nch, int *chansPerMod, angleConversionConstant **angOff, int *mF, double fo, double go, int angdir);
|
||||
|
||||
double convertAngle(double pos, int ich, int *chansPerMod, angleConversionConstant **angOff, int *mF, double fo, double go, int angdir);
|
||||
|
||||
|
||||
double convertAngle(double pos, int ich, angleConversionConstant *angOff, int mF, double fo, double go, int angdir);
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
int registerAngleFunctionCallback(double (*fun)(double, double, double, double, double, double, double, int)) {angle = fun; return 0;};
|
||||
|
||||
|
||||
double (*angle)(double, double, double, double, double, double, double, int);
|
||||
|
||||
|
||||
// private:
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -1,69 +0,0 @@
|
||||
#ifndef BAD_CHANNEL_CORRECTIONS_H
|
||||
#define BAD_CHANNEL_CORRECTIONS_H
|
||||
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <string.h>
|
||||
|
||||
//
|
||||
class badChannelCorrections{
|
||||
|
||||
public:
|
||||
|
||||
static int readBadChannelCorrectionFile(std::string fname, int &nbad, int *badlist){ std::ifstream infile(fname.c_str()); int nb=-1; if (infile.is_open()) {nb=readBadChannelCorrectionFile(infile,nbad,badlist); infile.close();}; return nb;};
|
||||
|
||||
|
||||
|
||||
static int readBadChannelCorrectionFile(std::ifstream &infile, int &nbad, int *badlist, int moff=0){ \
|
||||
int interrupt=0; \
|
||||
int ich; \
|
||||
int chmin,chmax; \
|
||||
std::string str; \
|
||||
nbad=0; \
|
||||
while (infile.good() and interrupt==0) { \
|
||||
getline(infile,str); \
|
||||
std::istringstream ssstr; \
|
||||
ssstr.str(str); \
|
||||
if (ssstr.bad() || ssstr.fail() || infile.eof()) { \
|
||||
interrupt=1; \
|
||||
break; \
|
||||
} \
|
||||
if (str.find('-')!=std::string::npos) { \
|
||||
ssstr >> chmin ; \
|
||||
ssstr.str(str.substr(str.find('-')+1,str.size())); \
|
||||
ssstr >> chmax; \
|
||||
for (ich=chmin; ich<=chmax; ich++) { \
|
||||
badlist[nbad]=ich; \
|
||||
nbad++; \
|
||||
} \
|
||||
} else { \
|
||||
ssstr >> ich; \
|
||||
badlist[nbad]=ich; \
|
||||
nbad++; \
|
||||
} \
|
||||
} \
|
||||
return nbad; };
|
||||
|
||||
|
||||
static int setBadChannelCorrection(std::ifstream &infile, int &nbad, int *badlist, int moff){ \
|
||||
int retval=readBadChannelCorrectionFile(infile,nbad,badlist); \
|
||||
for (int ich=0; ich<nbad; ich++) { badlist[ich]=badlist[ich]+moff; }; \
|
||||
return retval; \
|
||||
};
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
char *badChanFile;
|
||||
int *nBadChans;
|
||||
int *badChansList;
|
||||
int *nBadFF;
|
||||
int *badFFList;
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif
|
@ -9,22 +9,19 @@
|
||||
class detectorData {
|
||||
public:
|
||||
/** @short The constructor
|
||||
\param val pointer to the data in double data type(valid only for MYTHEN)
|
||||
\param err pointer to errors
|
||||
\param ang pointer to the angles
|
||||
\param f_ind file index
|
||||
\param fname file name to which the data are saved
|
||||
\param np number of points in x coordinate defaults to the number of detector channels (1D detector) or dimension in x (2D detector)
|
||||
\param ny dimension in y (2D detector)
|
||||
\param cval pointer to data in char* format (valid only for non MYTHEN detectors)
|
||||
\param dbytes number of bytes of image pointed to by cval pointer (valid only for non MYTHEN detectors)
|
||||
\param dr dynamic range or bits per pixel (valid only for non MYTHEN detectors)
|
||||
\param cval pointer to data in char* format
|
||||
\param dbytes number of bytes of image pointed to by cval pointer
|
||||
\param dr dynamic range or bits per pixel
|
||||
\param file_ind file index
|
||||
*/
|
||||
detectorData(double *val=NULL, double *err=NULL, double *ang=NULL, double f_ind=-1,
|
||||
detectorData(double f_ind=-1,
|
||||
const char *fname="", int np=-1, int ny=1, char *cval=NULL, int dbytes=0, int dr=0,
|
||||
long long int file_ind=-1) :
|
||||
values(val), errors(err), angles(ang), progressIndex(f_ind),
|
||||
progressIndex(f_ind),
|
||||
npoints(np), npy(ny), cvalues(cval), databytes(dbytes),
|
||||
dynamicRange(dr), dgainvalues(NULL), fileIndex(file_ind) {
|
||||
strcpy(fileName,fname);
|
||||
@ -35,20 +32,16 @@ class detectorData {
|
||||
deletes also the arrays pointing to data/errors/angles if not NULL
|
||||
cvalues are deleted by caller
|
||||
*/
|
||||
~detectorData() {if (values) delete [] values; if (errors) delete [] errors;
|
||||
if (angles) delete [] angles; if(dgainvalues) delete [] dgainvalues;};
|
||||
~detectorData() {if(dgainvalues) delete [] dgainvalues;};
|
||||
//private:
|
||||
double *values; /**< @short pointer to the data as double array (MYTHEN only) */
|
||||
double *errors; /**< @short pointer to the errors */
|
||||
double *angles;/**< @short pointer to the angles (NULL if no angular conversion) */
|
||||
double progressIndex;/**< @short file index */
|
||||
char fileName[1000];/**< @short file name */
|
||||
int npoints;/**< @short number of points */
|
||||
int npy;/**< @short dimensions in y coordinate*/
|
||||
char* cvalues; /**< @short pointer to the data as char arary (non MYTHEN detectors) */
|
||||
char* cvalues; /**< @short pointer to the data as char arary */
|
||||
int databytes; /**< @short number of bytes of data. Used with cvalues */
|
||||
int dynamicRange; /**< @short dynamic range */
|
||||
double* dgainvalues; /**< @short pointer to gain data as double array */
|
||||
double* dgainvalues; /**< @short pointer to gain data as double array for Jungfrau only in show gain mode */
|
||||
long long int fileIndex; /**< @short file index */
|
||||
};
|
||||
|
||||
|
@ -1,28 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li><a href="functions.html"><span>Class 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="classenergyCalibration.html">energyCalibration</a></td><td class="indexvalue"></td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td class="indexvalue">Energy calibration functions </td></tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,55 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul></div>
|
||||
<h1>energyCalibration Member List</h1>This is the complete list of members for <a class="el" href="classenergyCalibration.html">energyCalibration</a>, including all inherited members.<p><table>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#77b954cd513271d2cfafee6033435584">ampl</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#aa11f256a8b0a94c28a98d068013b327">bg_offset</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#9676e5cc2757c723c2262d641fb4b8b4">bg_slope</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#378daeddde40b6127ee6ed595506928c">calibrate</a>(int nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff, int integral=1)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#6f5ee6771522a31e4fe1eca143e2aa9b">calibrateScurves</a>(int nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#092637f656c0b88d57797e3ebd0f3e58">calibrateSpectra</a>(int nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#ce0be11dcc8418db3c7c2b139a015c96">cs_flag</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#ca1efedbfea0ad5c9ea2d794e3fb368d">cs_slope</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#16f0658d2b526f52784057b2166efd22">energyCalibration</a>()</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#e979386a3f787ef706f4a9ec5bf41d7d">fit_max</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#262f574732186cdd8d3a11344d03d0bb">fit_min</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#fe1c6dc5f56d12fe06569f401da19729">fitFunction</a>(TF1 *fun, TH1 *h1, Double_t *mypar, Double_t *emypar)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#0dcd8e06e31f7b70488a012db12b2bf8">fitSCurve</a>(TH1 *h1, Double_t *mypar, Double_t *emypar)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#7d22b28cd2fad3d334f15f3d6dc7975a">fitSpectrum</a>(TH1 *h1, Double_t *mypar, Double_t *emypar)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#b99d770f1c9af68d591ed20847813ad1">flex</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#57706a328324c25dd9f8ba6d1486e4ce">fscurve</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#2ee734ab28b78dc5786a7ba430f8baa5">fspectrum</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#e9b3307bf858331241871bde42fdd24e">funcs</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#bfb02327a6897bd97525c01697a1ba4f">getFitRange</a>(Double_t &mi, Double_t &ma)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#fc7411b7a3191748dfcc90f86b823bf4">getStartParameters</a>(Double_t *par)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#3e84328c11772b6263224340ec924e37">initFitFunction</a>(TF1 *fun, TH1 *h1)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#c7f46f2d051f28211681e851f99d3fc4">linearCalibration</a>(int nscan, Double_t *en, Double_t *een, Double_t *fl, Double_t *efl, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#4461206397e2442c92be9151ee231ec5">noise</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#4edfb157df3624be677177dec0f9555b">plot_flag</a></td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#e2809b419799e8b199944f185d4ebab8">setChargeSharing</a>(int p=-1)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#695cef5428a833d515172d987774f67b">setFitRange</a>(Double_t mi, Double_t ma)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#3d9af0857f7a68b7e4519917ea97e6be">setPlotFlag</a>(int p=-1)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#7dbf1676b30ffe90c5aa917f1b2b77ee">setScanSign</a>(int s=0)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#ba156f5290f7b404d7b8ea735fd7e7bf">setStartParameters</a>(Double_t *par)</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibration.html#3bae2b9c26893daa8f583758509c844f">~energyCalibration</a>()</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a></td><td></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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
@ -1,38 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul></div>
|
||||
<h1>energyCalibrationFunctions Member List</h1>This is the complete list of members for <a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a>, including all inherited members.<p><table>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#8c17162b89f3b2e642004e7c88a22ac2">energyCalibrationFunctions</a>(int s=-1)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#a5fbe9da48bc2ef90b699e06ea8c5111">erfFuncFluo</a>(Double_t *x, Double_t *par)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#2da1e3b9a10d23233256f8c2234f2457">erfFunction</a>(Double_t *x, Double_t *par)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#8d1b3d0f8b30423dad56d8ce5323a4a8">erfFunctionChargeSharing</a>(Double_t *x, Double_t *par)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#e9582e5c46d27ad25d6139d0386698f7">gaussChargeSharing</a>(Double_t *x, Double_t *par)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#7d9a7b8d0c8ff69638a5fbb9f4c04b90">kth_smallest</a>(int *a, int n, int k)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td><code> [static]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#37f557bacb75213073c8d421cc1240f4">median</a>(float *x, int n)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td><code> [static]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#a3ab0e7c3c862fb51dfda78f1b09a55c">quick_select</a>(int arr[], int n)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td><code> [static]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#e220482622e88a46b12498b0e4d8113a">scurve</a>(Double_t *x, Double_t *par)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#4eba39623b518d67a63192970a78f530">scurveFluo</a>(Double_t *x, Double_t *par)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">setScanSign</a>(int s=0)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td><code> [inline]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">sign</a></td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td><code> [private]</code></td></tr>
|
||||
<tr class="memlist"><td><a class="el" href="classenergyCalibrationFunctions.html#015eb05dc34b77642ab2a2a9f126f170">spectrum</a>(Double_t *x, Double_t *par)</td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td><td></td></tr>
|
||||
</table><hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,428 +0,0 @@
|
||||
<!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>energyCalibrationFunctions 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 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 List</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul></div>
|
||||
<h1>energyCalibrationFunctions Class Reference</h1><!-- doxytag: class="energyCalibrationFunctions" -->Energy calibration functions.
|
||||
<a href="#_details">More...</a>
|
||||
<p>
|
||||
<code>#include <<a class="el" href="energyCalibration_8h-source.html">energyCalibration.h</a>></code>
|
||||
<p>
|
||||
<a href="classenergyCalibrationFunctions-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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#8c17162b89f3b2e642004e7c88a22ac2">energyCalibrationFunctions</a> (int s=-1)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">setScanSign</a> (int s=0)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#e9582e5c46d27ad25d6139d0386698f7">gaussChargeSharing</a> (Double_t *x, Double_t *par)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#2da1e3b9a10d23233256f8c2234f2457">erfFunction</a> (Double_t *x, Double_t *par)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#8d1b3d0f8b30423dad56d8ce5323a4a8">erfFunctionChargeSharing</a> (Double_t *x, Double_t *par)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#a5fbe9da48bc2ef90b699e06ea8c5111">erfFuncFluo</a> (Double_t *x, Double_t *par)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#015eb05dc34b77642ab2a2a9f126f170">spectrum</a> (Double_t *x, Double_t *par)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#e220482622e88a46b12498b0e4d8113a">scurve</a> (Double_t *x, Double_t *par)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#4eba39623b518d67a63192970a78f530">scurveFluo</a> (Double_t *x, Double_t *par)</td></tr>
|
||||
|
||||
<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">static float </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#37f557bacb75213073c8d421cc1240f4">median</a> (float *x, int n)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#a3ab0e7c3c862fb51dfda78f1b09a55c">quick_select</a> (int arr[], int n)</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#7d9a7b8d0c8ff69638a5fbb9f4c04b90">kth_smallest</a> (int *a, int n, int k)</td></tr>
|
||||
|
||||
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">sign</a></td></tr>
|
||||
|
||||
</table>
|
||||
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
||||
Energy calibration functions.
|
||||
<p>
|
||||
class containing all the possible energy calibration functions (scurves with and without charge sharing, gaussian spectrum with and without charge sharing, possibility of chosing the sign of the X-axis)
|
||||
<p>
|
||||
<hr><h2>Constructor & Destructor Documentation</h2>
|
||||
<a class="anchor" name="8c17162b89f3b2e642004e7c88a22ac2"></a><!-- doxytag: member="energyCalibrationFunctions::energyCalibrationFunctions" ref="8c17162b89f3b2e642004e7c88a22ac2" args="(int s=-1)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">energyCalibrationFunctions::energyCalibrationFunctions </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"> <em>s</em> = <code>-1</code> </td>
|
||||
<td> ) </td>
|
||||
<td width="100%"><code> [inline]</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
|
||||
</div>
|
||||
</div><p>
|
||||
<hr><h2>Member Function Documentation</h2>
|
||||
<a class="anchor" name="a5fbe9da48bc2ef90b699e06ea8c5111"></a><!-- doxytag: member="energyCalibrationFunctions::erfFuncFluo" ref="a5fbe9da48bc2ef90b699e06ea8c5111" args="(Double_t *x, Double_t *par)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Double_t energyCalibrationFunctions::erfFuncFluo </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>par</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Double Erf function with charge sharing slope par[0] is the pedestal par[1] is the slope of the pedestal par[2] is the inflection point of the first energy par[3] is the RMS of the first energy par[4] is the amplitude of the first energy par[5] is the angual coefficient of the charge sharing slope of the first energy (scales with par[3]) par[6] is the inflection point of the second energy par[7] is the RMS of the second energy par[8] is the amplitude of the second energy par[9] is the angual coefficient of the charge sharing slope of the second energy (scales with par[8])
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="2da1e3b9a10d23233256f8c2234f2457"></a><!-- doxytag: member="energyCalibrationFunctions::erfFunction" ref="2da1e3b9a10d23233256f8c2234f2457" args="(Double_t *x, Double_t *par)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Double_t energyCalibrationFunctions::erfFunction </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>par</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Basic erf function par[0] is the inflection point par[1] is the RMS par[2] is the amplitude
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="8d1b3d0f8b30423dad56d8ce5323a4a8"></a><!-- doxytag: member="energyCalibrationFunctions::erfFunctionChargeSharing" ref="8d1b3d0f8b30423dad56d8ce5323a4a8" args="(Double_t *x, Double_t *par)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Double_t energyCalibrationFunctions::erfFunctionChargeSharing </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>par</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Erf function with charge sharing slope par[0] is the pedestal par[1] is the slope of the pedestal par[2] is the inflection point par[3] is the RMS par[4] is the amplitude par[5] is the angual coefficient of the charge sharing slope (scales with par[3])
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="e9582e5c46d27ad25d6139d0386698f7"></a><!-- doxytag: member="energyCalibrationFunctions::gaussChargeSharing" ref="e9582e5c46d27ad25d6139d0386698f7" args="(Double_t *x, Double_t *par)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Double_t energyCalibrationFunctions::gaussChargeSharing </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>par</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Gaussian Function with charge sharing pedestal par[0] is the absolute height of the background pedestal par[1] is the slope of the background pedestal par[2] is the gaussian peak position par[3] is the RMS of the gaussian (and of the pedestal) par[4] is the height of the function par[5] is the fractional height of the charge sharing pedestal (scales with par[3])
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="7d9a7b8d0c8ff69638a5fbb9f4c04b90"></a><!-- doxytag: member="energyCalibrationFunctions::kth_smallest" ref="7d9a7b8d0c8ff69638a5fbb9f4c04b90" args="(int *a, int n, int k)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static int energyCalibrationFunctions::kth_smallest </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int * </td>
|
||||
<td class="paramname"> <em>a</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"> <em>n</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"> <em>k</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"><code> [static]</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Calculates the median of an array of n elements (swaps the arrays!)
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="37f557bacb75213073c8d421cc1240f4"></a><!-- doxytag: member="energyCalibrationFunctions::median" ref="37f557bacb75213073c8d421cc1240f4" args="(float *x, int n)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static float energyCalibrationFunctions::median </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">float * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"> <em>n</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"><code> [static]</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Calculates the median of an array of n elements
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="a3ab0e7c3c862fb51dfda78f1b09a55c"></a><!-- doxytag: member="energyCalibrationFunctions::quick_select" ref="a3ab0e7c3c862fb51dfda78f1b09a55c" args="(int arr[], int n)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static int energyCalibrationFunctions::quick_select </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"> <em>arr</em>[], </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"> <em>n</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"><code> [static]</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Calculates the median of an array of n elements (swaps the arrays!)
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="e220482622e88a46b12498b0e4d8113a"></a><!-- doxytag: member="energyCalibrationFunctions::scurve" ref="e220482622e88a46b12498b0e4d8113a" args="(Double_t *x, Double_t *par)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Double_t energyCalibrationFunctions::scurve </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>par</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Erf function with charge sharing slope with the correct scan sign par[0] is the pedestal par[1] is the slope of the pedestal par[2] is the inflection point par[3] is the RMS par[4] is the amplitude par[5] is the angual coefficient of the charge sharing slope (scales with par[3])
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="4eba39623b518d67a63192970a78f530"></a><!-- doxytag: member="energyCalibrationFunctions::scurveFluo" ref="4eba39623b518d67a63192970a78f530" args="(Double_t *x, Double_t *par)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Double_t energyCalibrationFunctions::scurveFluo </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>par</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
Double Erf function with charge sharing slope par[0] is the pedestal par[1] is the slope of the pedestal par[2] is the inflection point of the first energy par[3] is the RMS of the first energy par[4] is the amplitude of the first energy par[5] is the angual coefficient of the charge sharing slope of the first energy (scales with par[3]) par[6] is the inflection point of the second energy par[7] is the RMS of the second energy par[8] is the amplitude of the second energy par[9] is the angual coefficient of the charge sharing slope of the second energy (scales with par[8])
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="716759a1ae09ea3c841f824af3ece415"></a><!-- doxytag: member="energyCalibrationFunctions::setScanSign" ref="716759a1ae09ea3c841f824af3ece415" args="(int s=0)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int energyCalibrationFunctions::setScanSign </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">int </td>
|
||||
<td class="paramname"> <em>s</em> = <code>0</code> </td>
|
||||
<td> ) </td>
|
||||
<td width="100%"><code> [inline]</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
sets scan sign <dl compact><dt><b>Parameters:</b></dt><dd>
|
||||
<table border="0" cellspacing="2" cellpadding="0">
|
||||
<tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) otherwise gets </td></tr>
|
||||
</table>
|
||||
</dl>
|
||||
<dl compact><dt><b>Returns:</b></dt><dd>current scan sign can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) </dd></dl>
|
||||
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="015eb05dc34b77642ab2a2a9f126f170"></a><!-- doxytag: member="energyCalibrationFunctions::spectrum" ref="015eb05dc34b77642ab2a2a9f126f170" args="(Double_t *x, Double_t *par)" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">Double_t energyCalibrationFunctions::spectrum </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>x</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Double_t * </td>
|
||||
<td class="paramname"> <em>par</em></td><td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td><td width="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
static function Gaussian with charge sharing pedestal with the correct scan sign par[0] is the absolute height of the background pedestal par[1] is the fractional height of the charge sharing pedestal (scales with par[3] par[2] is the gaussian peak position par[3] is the RMS of the gaussian (and of the pedestal) par[4] is the height of the function
|
||||
</div>
|
||||
</div><p>
|
||||
<hr><h2>Member Data Documentation</h2>
|
||||
<a class="anchor" name="4fc7c435169b5bf4672cf654270097d0"></a><!-- doxytag: member="energyCalibrationFunctions::sign" ref="4fc7c435169b5bf4672cf654270097d0" args="" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int <a class="el" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">energyCalibrationFunctions::sign</a><code> [private]</code> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
|
||||
</div>
|
||||
</div><p>
|
||||
<hr>The documentation for this class was generated from the following file:<ul>
|
||||
<li><a class="el" href="energyCalibration_8h-source.html">energyCalibration.h</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,69 +0,0 @@
|
||||
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
<title>Alphabetical List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javaScript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body onload='searchBox.OnSelectItem(0);'>
|
||||
<!-- Generated by Doxygen 1.6.0 -->
|
||||
<script type="text/javascript"><!--
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
--></script>
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<img id="MSearchSelect" src="search/search.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="annotated.html"><span>Class List</span></a></li>
|
||||
<li><a href="functions.html"><span>Class Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_E">E</a></div>
|
||||
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> E </div></td></tr></table>
|
||||
</td><td><a class="el" href="classenergyCalibration.html">energyCalibration</a> </td><td><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a> </td></tr></table><div class="qindex"><a class="qindex" href="#letter_E">E</a></div>
|
||||
</div>
|
||||
<!--- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a></div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Mar 20 17:21:14 2012 by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.0 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,358 +0,0 @@
|
||||
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.
Before Width: | Height: | Size: 1.3 KiB |
@ -1,164 +0,0 @@
|
||||
<!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>energyCalibration.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 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 List</span></a></li>
|
||||
<li><a href="globals.html"><span>File Members</span></a></li>
|
||||
</ul></div>
|
||||
<h1>energyCalibration.h</h1><a href="energyCalibration_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 ENERGYCALIBRATION_H</span>
|
||||
<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#define ENERGYCALIBRATION_H</span>
|
||||
<a name="l00004"></a>00004 <span class="preprocessor"></span>
|
||||
<a name="l00005"></a>00005 <span class="preprocessor">#include <TROOT.h></span>
|
||||
<a name="l00006"></a>00006 <span class="preprocessor">#include <TF1.h></span>
|
||||
<a name="l00007"></a>00007
|
||||
<a name="l00008"></a>00008 <span class="keyword">using namespace </span>std;
|
||||
<a name="l00009"></a>00009
|
||||
<a name="l00010"></a>00010 <span class="keyword">class </span>TH1F;
|
||||
<a name="l00011"></a>00011 <span class="keyword">class </span>TGraphErrors;
|
||||
<a name="l00012"></a>00012
|
||||
<a name="l00013"></a>00013
|
||||
<a name="l00014"></a>00014
|
||||
<a name="l00015"></a>00015
|
||||
<a name="l00016"></a>00016
|
||||
<a name="l00017"></a><a class="code" href="energyCalibration_8h.html#a48a6c1eb7d418c5d0618fbb161ae321">00017</a> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="energyCalibration_8h.html#a48a6c1eb7d418c5d0618fbb161ae321">conven</a>=1000./3.6;
|
||||
<a name="l00018"></a><a class="code" href="energyCalibration_8h.html#d1db7b454cab6ae1749310d7f444849b">00018</a> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="energyCalibration_8h.html#d1db7b454cab6ae1749310d7f444849b">el</a>=1.67E-4;
|
||||
<a name="l00050"></a><a class="code" href="classenergyCalibrationFunctions.html">00050</a> <span class="keyword">class </span><a class="code" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a> {
|
||||
<a name="l00051"></a>00051
|
||||
<a name="l00052"></a>00052 <span class="keyword">public</span>:
|
||||
<a name="l00053"></a>00053
|
||||
<a name="l00054"></a><a class="code" href="classenergyCalibrationFunctions.html#8c17162b89f3b2e642004e7c88a22ac2">00054</a> <a class="code" href="classenergyCalibrationFunctions.html#8c17162b89f3b2e642004e7c88a22ac2">energyCalibrationFunctions</a>(<span class="keywordtype">int</span> s=-1) {<a class="code" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">setScanSign</a>(s);};
|
||||
<a name="l00055"></a>00055
|
||||
<a name="l00060"></a><a class="code" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">00060</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">setScanSign</a>(<span class="keywordtype">int</span> s=0) {<span class="keywordflow">if</span> (s==1 || s==-1) <a class="code" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">sign</a>=s; <span class="keywordflow">return</span> <a class="code" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">sign</a>;};;
|
||||
<a name="l00061"></a>00061
|
||||
<a name="l00062"></a>00062
|
||||
<a name="l00072"></a>00072 Double_t <a class="code" href="classenergyCalibrationFunctions.html#e9582e5c46d27ad25d6139d0386698f7">gaussChargeSharing</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00073"></a>00073
|
||||
<a name="l00080"></a>00080 Double_t <a class="code" href="classenergyCalibrationFunctions.html#2da1e3b9a10d23233256f8c2234f2457">erfFunction</a>(Double_t *x, Double_t *par) ;
|
||||
<a name="l00081"></a>00081
|
||||
<a name="l00090"></a>00090 Double_t <a class="code" href="classenergyCalibrationFunctions.html#8d1b3d0f8b30423dad56d8ce5323a4a8">erfFunctionChargeSharing</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00091"></a>00091
|
||||
<a name="l00105"></a>00105 Double_t <a class="code" href="classenergyCalibrationFunctions.html#a5fbe9da48bc2ef90b699e06ea8c5111">erfFuncFluo</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00106"></a>00106
|
||||
<a name="l00107"></a>00107
|
||||
<a name="l00109"></a>00109 <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classenergyCalibrationFunctions.html#37f557bacb75213073c8d421cc1240f4">median</a>(<span class="keywordtype">float</span> *x, <span class="keywordtype">int</span> n);
|
||||
<a name="l00111"></a>00111 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#a3ab0e7c3c862fb51dfda78f1b09a55c">quick_select</a>(<span class="keywordtype">int</span> arr[], <span class="keywordtype">int</span> n);
|
||||
<a name="l00113"></a>00113 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#7d9a7b8d0c8ff69638a5fbb9f4c04b90">kth_smallest</a>(<span class="keywordtype">int</span> *a, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> k);
|
||||
<a name="l00114"></a>00114
|
||||
<a name="l00115"></a>00115
|
||||
<a name="l00124"></a>00124 Double_t <a class="code" href="classenergyCalibrationFunctions.html#015eb05dc34b77642ab2a2a9f126f170">spectrum</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00125"></a>00125
|
||||
<a name="l00126"></a>00126
|
||||
<a name="l00135"></a>00135 Double_t <a class="code" href="classenergyCalibrationFunctions.html#e220482622e88a46b12498b0e4d8113a">scurve</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00136"></a>00136
|
||||
<a name="l00137"></a>00137
|
||||
<a name="l00138"></a>00138
|
||||
<a name="l00151"></a>00151 Double_t <a class="code" href="classenergyCalibrationFunctions.html#4eba39623b518d67a63192970a78f530">scurveFluo</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00152"></a>00152
|
||||
<a name="l00153"></a>00153
|
||||
<a name="l00154"></a>00154 <span class="keyword">private</span>:
|
||||
<a name="l00155"></a><a class="code" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">00155</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">sign</a>;
|
||||
<a name="l00156"></a>00156
|
||||
<a name="l00157"></a>00157
|
||||
<a name="l00158"></a>00158 };
|
||||
<a name="l00159"></a>00159
|
||||
<a name="l00165"></a><a class="code" href="classenergyCalibration.html">00165</a> <span class="keyword">class </span><a class="code" href="classenergyCalibration.html">energyCalibration</a> {
|
||||
<a name="l00166"></a>00166
|
||||
<a name="l00167"></a>00167
|
||||
<a name="l00168"></a>00168 <span class="keyword">public</span>:
|
||||
<a name="l00172"></a>00172 <a class="code" href="classenergyCalibration.html#16f0658d2b526f52784057b2166efd22">energyCalibration</a>();
|
||||
<a name="l00173"></a>00173
|
||||
<a name="l00177"></a>00177 <a class="code" href="classenergyCalibration.html#3bae2b9c26893daa8f583758509c844f">~energyCalibration</a>();
|
||||
<a name="l00178"></a>00178
|
||||
<a name="l00183"></a><a class="code" href="classenergyCalibration.html#3d9af0857f7a68b7e4519917ea97e6be">00183</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#3d9af0857f7a68b7e4519917ea97e6be">setPlotFlag</a>(<span class="keywordtype">int</span> p=-1) {<span class="keywordflow">if</span> (p>=0) <a class="code" href="classenergyCalibration.html#4edfb157df3624be677177dec0f9555b">plot_flag</a>=p; <span class="keywordflow">return</span> <a class="code" href="classenergyCalibration.html#4edfb157df3624be677177dec0f9555b">plot_flag</a>;};
|
||||
<a name="l00184"></a>00184
|
||||
<a name="l00189"></a><a class="code" href="classenergyCalibration.html#7dbf1676b30ffe90c5aa917f1b2b77ee">00189</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#7dbf1676b30ffe90c5aa917f1b2b77ee">setScanSign</a>(<span class="keywordtype">int</span> s=0) {<span class="keywordflow">return</span> <a class="code" href="classenergyCalibration.html#e9b3307bf858331241871bde42fdd24e">funcs</a>-><a class="code" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">setScanSign</a>(s);};
|
||||
<a name="l00190"></a>00190
|
||||
<a name="l00195"></a>00195 <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#e2809b419799e8b199944f185d4ebab8">setChargeSharing</a>(<span class="keywordtype">int</span> p=-1);
|
||||
<a name="l00196"></a>00196
|
||||
<a name="l00201"></a><a class="code" href="classenergyCalibration.html#695cef5428a833d515172d987774f67b">00201</a> <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#695cef5428a833d515172d987774f67b">setFitRange</a>(Double_t mi, Double_t ma){<a class="code" href="classenergyCalibration.html#262f574732186cdd8d3a11344d03d0bb">fit_min</a>=mi; <a class="code" href="classenergyCalibration.html#e979386a3f787ef706f4a9ec5bf41d7d">fit_max</a>=ma;};
|
||||
<a name="l00202"></a>00202
|
||||
<a name="l00207"></a><a class="code" href="classenergyCalibration.html#bfb02327a6897bd97525c01697a1ba4f">00207</a> <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#bfb02327a6897bd97525c01697a1ba4f">getFitRange</a>(Double_t &mi, Double_t &ma){mi=<a class="code" href="classenergyCalibration.html#262f574732186cdd8d3a11344d03d0bb">fit_min</a>; ma=<a class="code" href="classenergyCalibration.html#e979386a3f787ef706f4a9ec5bf41d7d">fit_max</a>;};
|
||||
<a name="l00208"></a>00208
|
||||
<a name="l00209"></a>00209
|
||||
<a name="l00219"></a>00219 <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#ba156f5290f7b404d7b8ea735fd7e7bf">setStartParameters</a>(Double_t *par);
|
||||
<a name="l00220"></a>00220
|
||||
<a name="l00230"></a>00230 <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#fc7411b7a3191748dfcc90f86b823bf4">getStartParameters</a>(Double_t *par);
|
||||
<a name="l00231"></a>00231
|
||||
<a name="l00239"></a>00239 TF1 *<a class="code" href="classenergyCalibration.html#0dcd8e06e31f7b70488a012db12b2bf8">fitSCurve</a>(TH1 *h1, Double_t *mypar, Double_t *emypar);
|
||||
<a name="l00240"></a>00240
|
||||
<a name="l00241"></a>00241
|
||||
<a name="l00249"></a>00249 TF1 *<a class="code" href="classenergyCalibration.html#7d22b28cd2fad3d334f15f3d6dc7975a">fitSpectrum</a>(TH1 *h1, Double_t *mypar, Double_t *emypar);
|
||||
<a name="l00250"></a>00250
|
||||
<a name="l00251"></a>00251
|
||||
<a name="l00265"></a>00265 TGraphErrors* <a class="code" href="classenergyCalibration.html#c7f46f2d051f28211681e851f99d3fc4">linearCalibration</a>(<span class="keywordtype">int</span> nscan, Double_t *en, Double_t *een, Double_t *fl, Double_t *efl, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff);
|
||||
<a name="l00266"></a>00266
|
||||
<a name="l00279"></a><a class="code" href="classenergyCalibration.html#6f5ee6771522a31e4fe1eca143e2aa9b">00279</a> TGraphErrors* <a class="code" href="classenergyCalibration.html#6f5ee6771522a31e4fe1eca143e2aa9b">calibrateScurves</a>(<span class="keywordtype">int</span> nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff){<span class="keywordflow">return</span> <a class="code" href="classenergyCalibration.html#378daeddde40b6127ee6ed595506928c">calibrate</a>(nscan, en, een, h1, gain, off, egain, eoff, 1);};
|
||||
<a name="l00280"></a>00280
|
||||
<a name="l00293"></a><a class="code" href="classenergyCalibration.html#092637f656c0b88d57797e3ebd0f3e58">00293</a> TGraphErrors* <a class="code" href="classenergyCalibration.html#092637f656c0b88d57797e3ebd0f3e58">calibrateSpectra</a>(<span class="keywordtype">int</span> nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff){<span class="keywordflow">return</span> <a class="code" href="classenergyCalibration.html#378daeddde40b6127ee6ed595506928c">calibrate</a>(nscan, en, een, h1, gain, off, egain, eoff, 0);};
|
||||
<a name="l00294"></a>00294
|
||||
<a name="l00295"></a>00295
|
||||
<a name="l00296"></a>00296
|
||||
<a name="l00297"></a>00297 <span class="keyword">private</span>:
|
||||
<a name="l00309"></a>00309 TGraphErrors* <a class="code" href="classenergyCalibration.html#378daeddde40b6127ee6ed595506928c">calibrate</a>(<span class="keywordtype">int</span> nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff, <span class="keywordtype">int</span> integral=1);
|
||||
<a name="l00310"></a>00310
|
||||
<a name="l00311"></a>00311
|
||||
<a name="l00319"></a>00319 <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#3e84328c11772b6263224340ec924e37">initFitFunction</a>(TF1 *fun, TH1 *h1);
|
||||
<a name="l00320"></a>00320
|
||||
<a name="l00321"></a>00321
|
||||
<a name="l00330"></a>00330 TF1 *<a class="code" href="classenergyCalibration.html#fe1c6dc5f56d12fe06569f401da19729">fitFunction</a>(TF1 *fun, TH1 *h1, Double_t *mypar, Double_t *emypar);
|
||||
<a name="l00331"></a>00331
|
||||
<a name="l00332"></a>00332
|
||||
<a name="l00333"></a><a class="code" href="classenergyCalibration.html#4edfb157df3624be677177dec0f9555b">00333</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#4edfb157df3624be677177dec0f9555b">plot_flag</a>;
|
||||
<a name="l00335"></a><a class="code" href="classenergyCalibration.html#ce0be11dcc8418db3c7c2b139a015c96">00335</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#ce0be11dcc8418db3c7c2b139a015c96">cs_flag</a>;
|
||||
<a name="l00337"></a><a class="code" href="classenergyCalibration.html#262f574732186cdd8d3a11344d03d0bb">00337</a> Double_t <a class="code" href="classenergyCalibration.html#262f574732186cdd8d3a11344d03d0bb">fit_min</a>;
|
||||
<a name="l00338"></a><a class="code" href="classenergyCalibration.html#e979386a3f787ef706f4a9ec5bf41d7d">00338</a> Double_t <a class="code" href="classenergyCalibration.html#e979386a3f787ef706f4a9ec5bf41d7d">fit_max</a>;
|
||||
<a name="l00340"></a><a class="code" href="classenergyCalibration.html#aa11f256a8b0a94c28a98d068013b327">00340</a> Double_t <a class="code" href="classenergyCalibration.html#aa11f256a8b0a94c28a98d068013b327">bg_offset</a>;
|
||||
<a name="l00341"></a><a class="code" href="classenergyCalibration.html#9676e5cc2757c723c2262d641fb4b8b4">00341</a> Double_t <a class="code" href="classenergyCalibration.html#9676e5cc2757c723c2262d641fb4b8b4">bg_slope</a>;
|
||||
<a name="l00342"></a><a class="code" href="classenergyCalibration.html#b99d770f1c9af68d591ed20847813ad1">00342</a> Double_t <a class="code" href="classenergyCalibration.html#b99d770f1c9af68d591ed20847813ad1">flex</a>;
|
||||
<a name="l00343"></a><a class="code" href="classenergyCalibration.html#4461206397e2442c92be9151ee231ec5">00343</a> Double_t <a class="code" href="classenergyCalibration.html#4461206397e2442c92be9151ee231ec5">noise</a>;
|
||||
<a name="l00344"></a><a class="code" href="classenergyCalibration.html#77b954cd513271d2cfafee6033435584">00344</a> Double_t <a class="code" href="classenergyCalibration.html#77b954cd513271d2cfafee6033435584">ampl</a>;
|
||||
<a name="l00345"></a><a class="code" href="classenergyCalibration.html#ca1efedbfea0ad5c9ea2d794e3fb368d">00345</a> Double_t <a class="code" href="classenergyCalibration.html#ca1efedbfea0ad5c9ea2d794e3fb368d">cs_slope</a>;
|
||||
<a name="l00347"></a><a class="code" href="classenergyCalibration.html#e9b3307bf858331241871bde42fdd24e">00347</a> <a class="code" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a> *<a class="code" href="classenergyCalibration.html#e9b3307bf858331241871bde42fdd24e">funcs</a>;
|
||||
<a name="l00348"></a>00348
|
||||
<a name="l00349"></a><a class="code" href="classenergyCalibration.html#57706a328324c25dd9f8ba6d1486e4ce">00349</a> TF1 *<a class="code" href="classenergyCalibration.html#57706a328324c25dd9f8ba6d1486e4ce">fscurve</a>;
|
||||
<a name="l00351"></a><a class="code" href="classenergyCalibration.html#2ee734ab28b78dc5786a7ba430f8baa5">00351</a> TF1 *<a class="code" href="classenergyCalibration.html#2ee734ab28b78dc5786a7ba430f8baa5">fspectrum</a>;
|
||||
<a name="l00354"></a>00354 };
|
||||
<a name="l00355"></a>00355
|
||||
<a name="l00356"></a>00356 <span class="preprocessor">#endif</span>
|
||||
<a name="l00357"></a>00357 <span class="preprocessor"></span>
|
||||
<a name="l00358"></a>00358
|
||||
<a name="l00359"></a>00359
|
||||
<a name="l00360"></a>00360
|
||||
<a name="l00361"></a>00361
|
||||
<a name="l00362"></a>00362
|
||||
<a name="l00363"></a>00363
|
||||
<a name="l00364"></a>00364
|
||||
<a name="l00365"></a>00365
|
||||
<a name="l00366"></a>00366
|
||||
<a name="l00367"></a>00367
|
||||
<a name="l00368"></a>00368
|
||||
<a name="l00369"></a>00369
|
||||
<a name="l00370"></a>00370
|
||||
<a name="l00371"></a>00371
|
||||
<a name="l00372"></a>00372
|
||||
<a name="l00373"></a>00373
|
||||
<a name="l00374"></a>00374
|
||||
<a name="l00375"></a>00375
|
||||
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,76 +0,0 @@
|
||||
<!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>energyCalibration.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 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 List</span></a></li>
|
||||
<li><a href="globals.html"><span>File Members</span></a></li>
|
||||
</ul></div>
|
||||
<h1>energyCalibration.h File Reference</h1><code>#include <TROOT.h></code><br>
|
||||
<code>#include <TF1.h></code><br>
|
||||
|
||||
<p>
|
||||
<a href="energyCalibration_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 </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibrationFunctions.html">energyCalibrationFunctions</a></td></tr>
|
||||
|
||||
<tr><td class="mdescLeft"> </td><td class="mdescRight">Energy calibration functions. <a href="classenergyCalibrationFunctions.html#_details">More...</a><br></td></tr>
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classenergyCalibration.html">energyCalibration</a></td></tr>
|
||||
|
||||
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">const float </td><td class="memItemRight" valign="bottom"><a class="el" href="energyCalibration_8h.html#a48a6c1eb7d418c5d0618fbb161ae321">conven</a> = 1000./3.6</td></tr>
|
||||
|
||||
<tr><td class="memItemLeft" nowrap align="right" valign="top">const float </td><td class="memItemRight" valign="bottom"><a class="el" href="energyCalibration_8h.html#d1db7b454cab6ae1749310d7f444849b">el</a> = 1.67E-4</td></tr>
|
||||
|
||||
</table>
|
||||
<hr><h2>Variable Documentation</h2>
|
||||
<a class="anchor" name="a48a6c1eb7d418c5d0618fbb161ae321"></a><!-- doxytag: member="energyCalibration.h::conven" ref="a48a6c1eb7d418c5d0618fbb161ae321" args="" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const float <a class="el" href="energyCalibration_8h.html#a48a6c1eb7d418c5d0618fbb161ae321">conven</a> = 1000./3.6 </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
electrons/keV
|
||||
</div>
|
||||
</div><p>
|
||||
<a class="anchor" name="d1db7b454cab6ae1749310d7f444849b"></a><!-- doxytag: member="energyCalibration.h::el" ref="d1db7b454cab6ae1749310d7f444849b" args="" -->
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">const float <a class="el" href="energyCalibration_8h.html#d1db7b454cab6ae1749310d7f444849b">el</a> = 1.67E-4 </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="memdoc">
|
||||
|
||||
<p>
|
||||
electron charge in fC
|
||||
</div>
|
||||
</div><p>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,190 +0,0 @@
|
||||
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
<title>energyCalibration.h Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javaScript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body onload='searchBox.OnSelectItem(0);'>
|
||||
<!-- Generated by Doxygen 1.6.0 -->
|
||||
<script type="text/javascript"><!--
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
--></script>
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="annotated.html"><span>Classes</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<img id="MSearchSelect" src="search/search.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>File Members</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<h1>energyCalibration.h</h1><a href="energyCalibration_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//#include "NewMythenMacros.h"</span>
|
||||
<a name="l00002"></a>00002 <span class="preprocessor">#ifndef ENERGYCALIBRATION_H</span>
|
||||
<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#define ENERGYCALIBRATION_H</span>
|
||||
<a name="l00004"></a>00004 <span class="preprocessor"></span>
|
||||
<a name="l00005"></a>00005 <span class="preprocessor">#include <TROOT.h></span>
|
||||
<a name="l00006"></a>00006 <span class="preprocessor">#include <TF1.h></span>
|
||||
<a name="l00007"></a>00007
|
||||
<a name="l00008"></a>00008 <span class="keyword">using namespace </span>std;
|
||||
<a name="l00009"></a>00009
|
||||
<a name="l00010"></a>00010 <span class="keyword">class </span>TH1F;
|
||||
<a name="l00011"></a>00011 <span class="keyword">class </span>TGraphErrors;
|
||||
<a name="l00012"></a>00012
|
||||
<a name="l00013"></a>00013
|
||||
<a name="l00014"></a>00014
|
||||
<a name="l00015"></a>00015
|
||||
<a name="l00016"></a>00016
|
||||
<a name="l00017"></a><a class="code" href="energyCalibration_8h.html#aa48a6c1eb7d418c5d0618fbb161ae321">00017</a> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="energyCalibration_8h.html#aa48a6c1eb7d418c5d0618fbb161ae321">conven</a>=1000./3.6;
|
||||
<a name="l00018"></a><a class="code" href="energyCalibration_8h.html#ad1db7b454cab6ae1749310d7f444849b">00018</a> <span class="keyword">const</span> <span class="keywordtype">float</span> <a class="code" href="energyCalibration_8h.html#ad1db7b454cab6ae1749310d7f444849b">el</a>=1.67E-4;
|
||||
<a name="l00047"></a><a class="code" href="classenergyCalibrationFunctions.html">00047</a> <span class="keyword">class </span><a class="code" href="classenergyCalibrationFunctions.html" title="Energy calibration functions.">energyCalibrationFunctions</a> {
|
||||
<a name="l00048"></a>00048
|
||||
<a name="l00049"></a>00049 <span class="keyword">public</span>:
|
||||
<a name="l00050"></a>00050
|
||||
<a name="l00051"></a><a class="code" href="classenergyCalibrationFunctions.html#a8c17162b89f3b2e642004e7c88a22ac2">00051</a> <a class="code" href="classenergyCalibrationFunctions.html#a8c17162b89f3b2e642004e7c88a22ac2">energyCalibrationFunctions</a>(<span class="keywordtype">int</span> s=-1) {<a class="code" href="classenergyCalibrationFunctions.html#a716759a1ae09ea3c841f824af3ece415">setScanSign</a>(s);};
|
||||
<a name="l00052"></a>00052
|
||||
<a name="l00057"></a><a class="code" href="classenergyCalibrationFunctions.html#a716759a1ae09ea3c841f824af3ece415">00057</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#a716759a1ae09ea3c841f824af3ece415">setScanSign</a>(<span class="keywordtype">int</span> s=0) {<span class="keywordflow">if</span> (s==1 || s==-1) <a class="code" href="classenergyCalibrationFunctions.html#a4fc7c435169b5bf4672cf654270097d0">sign</a>=s; <span class="keywordflow">return</span> <a class="code" href="classenergyCalibrationFunctions.html#a4fc7c435169b5bf4672cf654270097d0">sign</a>;};;
|
||||
<a name="l00058"></a>00058
|
||||
<a name="l00059"></a>00059
|
||||
<a name="l00068"></a>00068 Double_t <a class="code" href="classenergyCalibrationFunctions.html#ae9582e5c46d27ad25d6139d0386698f7">gaussChargeSharing</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00069"></a>00069
|
||||
<a name="l00075"></a>00075 Double_t <a class="code" href="classenergyCalibrationFunctions.html#a2da1e3b9a10d23233256f8c2234f2457">erfFunction</a>(Double_t *x, Double_t *par) ;
|
||||
<a name="l00076"></a>00076
|
||||
<a name="l00085"></a>00085 Double_t <a class="code" href="classenergyCalibrationFunctions.html#a8d1b3d0f8b30423dad56d8ce5323a4a8">erfFunctionChargeSharing</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00086"></a>00086
|
||||
<a name="l00100"></a>00100 Double_t <a class="code" href="classenergyCalibrationFunctions.html#aa5fbe9da48bc2ef90b699e06ea8c5111">erfFuncFluo</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00101"></a>00101
|
||||
<a name="l00102"></a>00102
|
||||
<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classenergyCalibrationFunctions.html#a37f557bacb75213073c8d421cc1240f4">median</a>(<span class="keywordtype">float</span> *x, <span class="keywordtype">int</span> n);
|
||||
<a name="l00106"></a>00106 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#aa3ab0e7c3c862fb51dfda78f1b09a55c">quick_select</a>(<span class="keywordtype">int</span> arr[], <span class="keywordtype">int</span> n);
|
||||
<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#a7d9a7b8d0c8ff69638a5fbb9f4c04b90">kth_smallest</a>(<span class="keywordtype">int</span> *a, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> k);
|
||||
<a name="l00109"></a>00109
|
||||
<a name="l00110"></a>00110
|
||||
<a name="l00119"></a>00119 Double_t <a class="code" href="classenergyCalibrationFunctions.html#a015eb05dc34b77642ab2a2a9f126f170">spectrum</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00120"></a>00120
|
||||
<a name="l00121"></a>00121
|
||||
<a name="l00130"></a>00130 Double_t <a class="code" href="classenergyCalibrationFunctions.html#ae220482622e88a46b12498b0e4d8113a">scurve</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00131"></a>00131
|
||||
<a name="l00132"></a>00132
|
||||
<a name="l00133"></a>00133
|
||||
<a name="l00146"></a>00146 Double_t <a class="code" href="classenergyCalibrationFunctions.html#a4eba39623b518d67a63192970a78f530">scurveFluo</a>(Double_t *x, Double_t *par);
|
||||
<a name="l00147"></a>00147
|
||||
<a name="l00148"></a>00148
|
||||
<a name="l00149"></a>00149 <span class="keyword">private</span>:
|
||||
<a name="l00150"></a><a class="code" href="classenergyCalibrationFunctions.html#a4fc7c435169b5bf4672cf654270097d0">00150</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibrationFunctions.html#a4fc7c435169b5bf4672cf654270097d0">sign</a>;
|
||||
<a name="l00151"></a>00151
|
||||
<a name="l00152"></a>00152
|
||||
<a name="l00153"></a>00153 };
|
||||
<a name="l00154"></a>00154
|
||||
<a name="l00155"></a>00155
|
||||
<a name="l00156"></a>00156
|
||||
<a name="l00157"></a><a class="code" href="classenergyCalibration.html">00157</a> <span class="keyword">class </span><a class="code" href="classenergyCalibration.html">energyCalibration</a> {
|
||||
<a name="l00158"></a>00158
|
||||
<a name="l00159"></a>00159
|
||||
<a name="l00160"></a>00160 <span class="keyword">public</span>:
|
||||
<a name="l00164"></a>00164 <a class="code" href="classenergyCalibration.html#a16f0658d2b526f52784057b2166efd22">energyCalibration</a>();
|
||||
<a name="l00165"></a>00165
|
||||
<a name="l00169"></a>00169 <a class="code" href="classenergyCalibration.html#a3bae2b9c26893daa8f583758509c844f">~energyCalibration</a>();
|
||||
<a name="l00170"></a>00170
|
||||
<a name="l00175"></a><a class="code" href="classenergyCalibration.html#a3d9af0857f7a68b7e4519917ea97e6be">00175</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#a3d9af0857f7a68b7e4519917ea97e6be">setPlotFlag</a>(<span class="keywordtype">int</span> p=-1) {<span class="keywordflow">if</span> (p>=0) <a class="code" href="classenergyCalibration.html#a4edfb157df3624be677177dec0f9555b">plot_flag</a>=p; <span class="keywordflow">return</span> <a class="code" href="classenergyCalibration.html#a4edfb157df3624be677177dec0f9555b">plot_flag</a>;};
|
||||
<a name="l00176"></a>00176
|
||||
<a name="l00181"></a><a class="code" href="classenergyCalibration.html#a7dbf1676b30ffe90c5aa917f1b2b77ee">00181</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#a7dbf1676b30ffe90c5aa917f1b2b77ee">setScanSign</a>(<span class="keywordtype">int</span> s=0) {<span class="keywordflow">return</span> <a class="code" href="classenergyCalibration.html#ae9b3307bf858331241871bde42fdd24e">funcs</a>-><a class="code" href="classenergyCalibrationFunctions.html#a716759a1ae09ea3c841f824af3ece415">setScanSign</a>(s);};
|
||||
<a name="l00182"></a>00182
|
||||
<a name="l00183"></a>00183
|
||||
<a name="l00188"></a><a class="code" href="classenergyCalibration.html#a695cef5428a833d515172d987774f67b">00188</a> <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#a695cef5428a833d515172d987774f67b">setFitRange</a>(Double_t mi, Double_t ma){<a class="code" href="classenergyCalibration.html#a262f574732186cdd8d3a11344d03d0bb">fit_min</a>=mi; <a class="code" href="classenergyCalibration.html#ae979386a3f787ef706f4a9ec5bf41d7d">fit_max</a>=ma;};
|
||||
<a name="l00189"></a>00189
|
||||
<a name="l00194"></a><a class="code" href="classenergyCalibration.html#abfb02327a6897bd97525c01697a1ba4f">00194</a> <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#abfb02327a6897bd97525c01697a1ba4f">getFitRange</a>(Double_t &mi, Double_t &ma){mi=<a class="code" href="classenergyCalibration.html#a262f574732186cdd8d3a11344d03d0bb">fit_min</a>; ma=<a class="code" href="classenergyCalibration.html#ae979386a3f787ef706f4a9ec5bf41d7d">fit_max</a>;};
|
||||
<a name="l00195"></a>00195
|
||||
<a name="l00196"></a>00196
|
||||
<a name="l00206"></a>00206 <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#aba156f5290f7b404d7b8ea735fd7e7bf">setStartParameters</a>(Double_t *par);
|
||||
<a name="l00207"></a>00207
|
||||
<a name="l00217"></a>00217 <span class="keywordtype">void</span> <a class="code" href="classenergyCalibration.html#afc7411b7a3191748dfcc90f86b823bf4">getStartParameters</a>(Double_t *par);
|
||||
<a name="l00218"></a>00218
|
||||
<a name="l00226"></a>00226 TF1 *<a class="code" href="classenergyCalibration.html#a0dcd8e06e31f7b70488a012db12b2bf8">fitSCurve</a>(TH1 *h1, Double_t *mypar, Double_t *emypar);
|
||||
<a name="l00227"></a>00227
|
||||
<a name="l00228"></a>00228
|
||||
<a name="l00240"></a>00240 TGraphErrors* <a class="code" href="classenergyCalibration.html#ac7f46f2d051f28211681e851f99d3fc4">linearCalibration</a>(<span class="keywordtype">int</span> nscan, Double_t *en, Double_t *een, Double_t *fl, Double_t *efl, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff);
|
||||
<a name="l00241"></a>00241
|
||||
<a name="l00252"></a>00252 TGraphErrors* <a class="code" href="classenergyCalibration.html#aa6e7624f6cafb8c3a22c821aee2c6fc4">calibrate</a>(<span class="keywordtype">int</span> nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff);
|
||||
<a name="l00253"></a>00253
|
||||
<a name="l00254"></a>00254
|
||||
<a name="l00255"></a>00255
|
||||
<a name="l00256"></a>00256 <span class="keyword">private</span>:
|
||||
<a name="l00257"></a>00257
|
||||
<a name="l00258"></a>00258
|
||||
<a name="l00259"></a><a class="code" href="classenergyCalibration.html#a4edfb157df3624be677177dec0f9555b">00259</a> <span class="keywordtype">int</span> <a class="code" href="classenergyCalibration.html#a4edfb157df3624be677177dec0f9555b">plot_flag</a>;
|
||||
<a name="l00261"></a><a class="code" href="classenergyCalibration.html#a262f574732186cdd8d3a11344d03d0bb">00261</a> Double_t <a class="code" href="classenergyCalibration.html#a262f574732186cdd8d3a11344d03d0bb">fit_min</a>;
|
||||
<a name="l00262"></a><a class="code" href="classenergyCalibration.html#ae979386a3f787ef706f4a9ec5bf41d7d">00262</a> Double_t <a class="code" href="classenergyCalibration.html#ae979386a3f787ef706f4a9ec5bf41d7d">fit_max</a>;
|
||||
<a name="l00264"></a><a class="code" href="classenergyCalibration.html#aaa11f256a8b0a94c28a98d068013b327">00264</a> Double_t <a class="code" href="classenergyCalibration.html#aaa11f256a8b0a94c28a98d068013b327">bg_offset</a>;
|
||||
<a name="l00265"></a><a class="code" href="classenergyCalibration.html#a9676e5cc2757c723c2262d641fb4b8b4">00265</a> Double_t <a class="code" href="classenergyCalibration.html#a9676e5cc2757c723c2262d641fb4b8b4">bg_slope</a>;
|
||||
<a name="l00266"></a><a class="code" href="classenergyCalibration.html#ab99d770f1c9af68d591ed20847813ad1">00266</a> Double_t <a class="code" href="classenergyCalibration.html#ab99d770f1c9af68d591ed20847813ad1">flex</a>;
|
||||
<a name="l00267"></a><a class="code" href="classenergyCalibration.html#a4461206397e2442c92be9151ee231ec5">00267</a> Double_t <a class="code" href="classenergyCalibration.html#a4461206397e2442c92be9151ee231ec5">noise</a>;
|
||||
<a name="l00268"></a><a class="code" href="classenergyCalibration.html#a77b954cd513271d2cfafee6033435584">00268</a> Double_t <a class="code" href="classenergyCalibration.html#a77b954cd513271d2cfafee6033435584">ampl</a>;
|
||||
<a name="l00269"></a><a class="code" href="classenergyCalibration.html#aca1efedbfea0ad5c9ea2d794e3fb368d">00269</a> Double_t <a class="code" href="classenergyCalibration.html#aca1efedbfea0ad5c9ea2d794e3fb368d">cs_slope</a>;
|
||||
<a name="l00271"></a><a class="code" href="classenergyCalibration.html#ae9b3307bf858331241871bde42fdd24e">00271</a> <a class="code" href="classenergyCalibrationFunctions.html" title="Energy calibration functions.">energyCalibrationFunctions</a> *<a class="code" href="classenergyCalibration.html#ae9b3307bf858331241871bde42fdd24e">funcs</a>;
|
||||
<a name="l00272"></a>00272
|
||||
<a name="l00273"></a><a class="code" href="classenergyCalibration.html#a57706a328324c25dd9f8ba6d1486e4ce">00273</a> TF1 *<a class="code" href="classenergyCalibration.html#a57706a328324c25dd9f8ba6d1486e4ce">fscurve</a>;
|
||||
<a name="l00276"></a>00276 };
|
||||
<a name="l00277"></a>00277
|
||||
<a name="l00278"></a>00278 <span class="preprocessor">#endif</span>
|
||||
<a name="l00279"></a>00279 <span class="preprocessor"></span>
|
||||
<a name="l00280"></a>00280
|
||||
<a name="l00281"></a>00281
|
||||
<a name="l00282"></a>00282
|
||||
<a name="l00283"></a>00283
|
||||
<a name="l00284"></a>00284
|
||||
<a name="l00285"></a>00285
|
||||
<a name="l00286"></a>00286
|
||||
<a name="l00287"></a>00287
|
||||
<a name="l00288"></a>00288
|
||||
<a name="l00289"></a>00289
|
||||
<a name="l00290"></a>00290
|
||||
<a name="l00291"></a>00291
|
||||
<a name="l00292"></a>00292
|
||||
<a name="l00293"></a>00293
|
||||
<a name="l00294"></a>00294
|
||||
<a name="l00295"></a>00295
|
||||
<a name="l00296"></a>00296
|
||||
<a name="l00297"></a>00297
|
||||
</pre></div></div>
|
||||
<!--- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a></div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Mar 20 17:21:14 2012 by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.0 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,27 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li><a href="globals.html"><span>File 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="energyCalibration_8h.html">energyCalibration.h</a> <a href="energyCalibration_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
|
||||
</table>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,126 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li id="current"><a href="functions.html"><span>Class 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_b"><span>b</span></a></li>
|
||||
<li><a href="#index_c"><span>c</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_k"><span>k</span></a></li>
|
||||
<li><a href="#index_l"><span>l</span></a></li>
|
||||
<li><a href="#index_m"><span>m</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_q"><span>q</span></a></li>
|
||||
<li><a href="#index_s"><span>s</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>ampl
|
||||
: <a class="el" href="classenergyCalibration.html#77b954cd513271d2cfafee6033435584">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
|
||||
<li>bg_offset
|
||||
: <a class="el" href="classenergyCalibration.html#aa11f256a8b0a94c28a98d068013b327">energyCalibration</a><li>bg_slope
|
||||
: <a class="el" href="classenergyCalibration.html#9676e5cc2757c723c2262d641fb4b8b4">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_c">- c -</a></h3><ul>
|
||||
<li>calibrate()
|
||||
: <a class="el" href="classenergyCalibration.html#378daeddde40b6127ee6ed595506928c">energyCalibration</a><li>calibrateScurves()
|
||||
: <a class="el" href="classenergyCalibration.html#6f5ee6771522a31e4fe1eca143e2aa9b">energyCalibration</a><li>calibrateSpectra()
|
||||
: <a class="el" href="classenergyCalibration.html#092637f656c0b88d57797e3ebd0f3e58">energyCalibration</a><li>cs_flag
|
||||
: <a class="el" href="classenergyCalibration.html#ce0be11dcc8418db3c7c2b139a015c96">energyCalibration</a><li>cs_slope
|
||||
: <a class="el" href="classenergyCalibration.html#ca1efedbfea0ad5c9ea2d794e3fb368d">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
|
||||
<li>energyCalibration()
|
||||
: <a class="el" href="classenergyCalibration.html#16f0658d2b526f52784057b2166efd22">energyCalibration</a><li>energyCalibrationFunctions()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#8c17162b89f3b2e642004e7c88a22ac2">energyCalibrationFunctions</a><li>erfFuncFluo()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#a5fbe9da48bc2ef90b699e06ea8c5111">energyCalibrationFunctions</a><li>erfFunction()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#2da1e3b9a10d23233256f8c2234f2457">energyCalibrationFunctions</a><li>erfFunctionChargeSharing()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#8d1b3d0f8b30423dad56d8ce5323a4a8">energyCalibrationFunctions</a></ul>
|
||||
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
|
||||
<li>fit_max
|
||||
: <a class="el" href="classenergyCalibration.html#e979386a3f787ef706f4a9ec5bf41d7d">energyCalibration</a><li>fit_min
|
||||
: <a class="el" href="classenergyCalibration.html#262f574732186cdd8d3a11344d03d0bb">energyCalibration</a><li>fitFunction()
|
||||
: <a class="el" href="classenergyCalibration.html#fe1c6dc5f56d12fe06569f401da19729">energyCalibration</a><li>fitSCurve()
|
||||
: <a class="el" href="classenergyCalibration.html#0dcd8e06e31f7b70488a012db12b2bf8">energyCalibration</a><li>fitSpectrum()
|
||||
: <a class="el" href="classenergyCalibration.html#7d22b28cd2fad3d334f15f3d6dc7975a">energyCalibration</a><li>flex
|
||||
: <a class="el" href="classenergyCalibration.html#b99d770f1c9af68d591ed20847813ad1">energyCalibration</a><li>fscurve
|
||||
: <a class="el" href="classenergyCalibration.html#57706a328324c25dd9f8ba6d1486e4ce">energyCalibration</a><li>fspectrum
|
||||
: <a class="el" href="classenergyCalibration.html#2ee734ab28b78dc5786a7ba430f8baa5">energyCalibration</a><li>funcs
|
||||
: <a class="el" href="classenergyCalibration.html#e9b3307bf858331241871bde42fdd24e">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
|
||||
<li>gaussChargeSharing()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#e9582e5c46d27ad25d6139d0386698f7">energyCalibrationFunctions</a><li>getFitRange()
|
||||
: <a class="el" href="classenergyCalibration.html#bfb02327a6897bd97525c01697a1ba4f">energyCalibration</a><li>getStartParameters()
|
||||
: <a class="el" href="classenergyCalibration.html#fc7411b7a3191748dfcc90f86b823bf4">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
|
||||
<li>initFitFunction()
|
||||
: <a class="el" href="classenergyCalibration.html#3e84328c11772b6263224340ec924e37">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_k">- k -</a></h3><ul>
|
||||
<li>kth_smallest()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#7d9a7b8d0c8ff69638a5fbb9f4c04b90">energyCalibrationFunctions</a></ul>
|
||||
<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
|
||||
<li>linearCalibration()
|
||||
: <a class="el" href="classenergyCalibration.html#c7f46f2d051f28211681e851f99d3fc4">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_m">- m -</a></h3><ul>
|
||||
<li>median()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#37f557bacb75213073c8d421cc1240f4">energyCalibrationFunctions</a></ul>
|
||||
<h3><a class="anchor" name="index_n">- n -</a></h3><ul>
|
||||
<li>noise
|
||||
: <a class="el" href="classenergyCalibration.html#4461206397e2442c92be9151ee231ec5">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_p">- p -</a></h3><ul>
|
||||
<li>plot_flag
|
||||
: <a class="el" href="classenergyCalibration.html#4edfb157df3624be677177dec0f9555b">energyCalibration</a></ul>
|
||||
<h3><a class="anchor" name="index_q">- q -</a></h3><ul>
|
||||
<li>quick_select()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#a3ab0e7c3c862fb51dfda78f1b09a55c">energyCalibrationFunctions</a></ul>
|
||||
<h3><a class="anchor" name="index_s">- s -</a></h3><ul>
|
||||
<li>scurve()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#e220482622e88a46b12498b0e4d8113a">energyCalibrationFunctions</a><li>scurveFluo()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#4eba39623b518d67a63192970a78f530">energyCalibrationFunctions</a><li>setChargeSharing()
|
||||
: <a class="el" href="classenergyCalibration.html#e2809b419799e8b199944f185d4ebab8">energyCalibration</a><li>setFitRange()
|
||||
: <a class="el" href="classenergyCalibration.html#695cef5428a833d515172d987774f67b">energyCalibration</a><li>setPlotFlag()
|
||||
: <a class="el" href="classenergyCalibration.html#3d9af0857f7a68b7e4519917ea97e6be">energyCalibration</a><li>setScanSign()
|
||||
: <a class="el" href="classenergyCalibration.html#7dbf1676b30ffe90c5aa917f1b2b77ee">energyCalibration</a>, <a class="el" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">energyCalibrationFunctions</a><li>setStartParameters()
|
||||
: <a class="el" href="classenergyCalibration.html#ba156f5290f7b404d7b8ea735fd7e7bf">energyCalibration</a><li>sign
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">energyCalibrationFunctions</a><li>spectrum()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#015eb05dc34b77642ab2a2a9f126f170">energyCalibrationFunctions</a></ul>
|
||||
<h3><a class="anchor" name="index_~">- ~ -</a></h3><ul>
|
||||
<li>~energyCalibration()
|
||||
: <a class="el" href="classenergyCalibration.html#3bae2b9c26893daa8f583758509c844f">energyCalibration</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,63 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li id="current"><a href="functions.html"><span>Class 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>
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>calibrate()
|
||||
: <a class="el" href="classenergyCalibration.html#378daeddde40b6127ee6ed595506928c">energyCalibration</a><li>calibrateScurves()
|
||||
: <a class="el" href="classenergyCalibration.html#6f5ee6771522a31e4fe1eca143e2aa9b">energyCalibration</a><li>calibrateSpectra()
|
||||
: <a class="el" href="classenergyCalibration.html#092637f656c0b88d57797e3ebd0f3e58">energyCalibration</a><li>energyCalibration()
|
||||
: <a class="el" href="classenergyCalibration.html#16f0658d2b526f52784057b2166efd22">energyCalibration</a><li>energyCalibrationFunctions()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#8c17162b89f3b2e642004e7c88a22ac2">energyCalibrationFunctions</a><li>erfFuncFluo()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#a5fbe9da48bc2ef90b699e06ea8c5111">energyCalibrationFunctions</a><li>erfFunction()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#2da1e3b9a10d23233256f8c2234f2457">energyCalibrationFunctions</a><li>erfFunctionChargeSharing()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#8d1b3d0f8b30423dad56d8ce5323a4a8">energyCalibrationFunctions</a><li>fitFunction()
|
||||
: <a class="el" href="classenergyCalibration.html#fe1c6dc5f56d12fe06569f401da19729">energyCalibration</a><li>fitSCurve()
|
||||
: <a class="el" href="classenergyCalibration.html#0dcd8e06e31f7b70488a012db12b2bf8">energyCalibration</a><li>fitSpectrum()
|
||||
: <a class="el" href="classenergyCalibration.html#7d22b28cd2fad3d334f15f3d6dc7975a">energyCalibration</a><li>gaussChargeSharing()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#e9582e5c46d27ad25d6139d0386698f7">energyCalibrationFunctions</a><li>getFitRange()
|
||||
: <a class="el" href="classenergyCalibration.html#bfb02327a6897bd97525c01697a1ba4f">energyCalibration</a><li>getStartParameters()
|
||||
: <a class="el" href="classenergyCalibration.html#fc7411b7a3191748dfcc90f86b823bf4">energyCalibration</a><li>initFitFunction()
|
||||
: <a class="el" href="classenergyCalibration.html#3e84328c11772b6263224340ec924e37">energyCalibration</a><li>kth_smallest()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#7d9a7b8d0c8ff69638a5fbb9f4c04b90">energyCalibrationFunctions</a><li>linearCalibration()
|
||||
: <a class="el" href="classenergyCalibration.html#c7f46f2d051f28211681e851f99d3fc4">energyCalibration</a><li>median()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#37f557bacb75213073c8d421cc1240f4">energyCalibrationFunctions</a><li>quick_select()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#a3ab0e7c3c862fb51dfda78f1b09a55c">energyCalibrationFunctions</a><li>scurve()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#e220482622e88a46b12498b0e4d8113a">energyCalibrationFunctions</a><li>scurveFluo()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#4eba39623b518d67a63192970a78f530">energyCalibrationFunctions</a><li>setChargeSharing()
|
||||
: <a class="el" href="classenergyCalibration.html#e2809b419799e8b199944f185d4ebab8">energyCalibration</a><li>setFitRange()
|
||||
: <a class="el" href="classenergyCalibration.html#695cef5428a833d515172d987774f67b">energyCalibration</a><li>setPlotFlag()
|
||||
: <a class="el" href="classenergyCalibration.html#3d9af0857f7a68b7e4519917ea97e6be">energyCalibration</a><li>setScanSign()
|
||||
: <a class="el" href="classenergyCalibration.html#7dbf1676b30ffe90c5aa917f1b2b77ee">energyCalibration</a>, <a class="el" href="classenergyCalibrationFunctions.html#716759a1ae09ea3c841f824af3ece415">energyCalibrationFunctions</a><li>setStartParameters()
|
||||
: <a class="el" href="classenergyCalibration.html#ba156f5290f7b404d7b8ea735fd7e7bf">energyCalibration</a><li>spectrum()
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#015eb05dc34b77642ab2a2a9f126f170">energyCalibrationFunctions</a><li>~energyCalibration()
|
||||
: <a class="el" href="classenergyCalibration.html#3bae2b9c26893daa8f583758509c844f">energyCalibration</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,49 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li id="current"><a href="functions.html"><span>Class 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>
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>ampl
|
||||
: <a class="el" href="classenergyCalibration.html#77b954cd513271d2cfafee6033435584">energyCalibration</a><li>bg_offset
|
||||
: <a class="el" href="classenergyCalibration.html#aa11f256a8b0a94c28a98d068013b327">energyCalibration</a><li>bg_slope
|
||||
: <a class="el" href="classenergyCalibration.html#9676e5cc2757c723c2262d641fb4b8b4">energyCalibration</a><li>cs_flag
|
||||
: <a class="el" href="classenergyCalibration.html#ce0be11dcc8418db3c7c2b139a015c96">energyCalibration</a><li>cs_slope
|
||||
: <a class="el" href="classenergyCalibration.html#ca1efedbfea0ad5c9ea2d794e3fb368d">energyCalibration</a><li>fit_max
|
||||
: <a class="el" href="classenergyCalibration.html#e979386a3f787ef706f4a9ec5bf41d7d">energyCalibration</a><li>fit_min
|
||||
: <a class="el" href="classenergyCalibration.html#262f574732186cdd8d3a11344d03d0bb">energyCalibration</a><li>flex
|
||||
: <a class="el" href="classenergyCalibration.html#b99d770f1c9af68d591ed20847813ad1">energyCalibration</a><li>fscurve
|
||||
: <a class="el" href="classenergyCalibration.html#57706a328324c25dd9f8ba6d1486e4ce">energyCalibration</a><li>fspectrum
|
||||
: <a class="el" href="classenergyCalibration.html#2ee734ab28b78dc5786a7ba430f8baa5">energyCalibration</a><li>funcs
|
||||
: <a class="el" href="classenergyCalibration.html#e9b3307bf858331241871bde42fdd24e">energyCalibration</a><li>noise
|
||||
: <a class="el" href="classenergyCalibration.html#4461206397e2442c92be9151ee231ec5">energyCalibration</a><li>plot_flag
|
||||
: <a class="el" href="classenergyCalibration.html#4edfb157df3624be677177dec0f9555b">energyCalibration</a><li>sign
|
||||
: <a class="el" href="classenergyCalibrationFunctions.html#4fc7c435169b5bf4672cf654270097d0">energyCalibrationFunctions</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,36 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li id="current"><a href="globals.html"><span>File 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_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
Here is a list of all file members with links to the files they belong to:
|
||||
<p>
|
||||
<ul>
|
||||
<li>conven
|
||||
: <a class="el" href="energyCalibration_8h.html#a48a6c1eb7d418c5d0618fbb161ae321">energyCalibration.h</a><li>el
|
||||
: <a class="el" href="energyCalibration_8h.html#d1db7b454cab6ae1749310d7f444849b">energyCalibration.h</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,36 +0,0 @@
|
||||
<!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 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 List</span></a></li>
|
||||
<li id="current"><a href="globals.html"><span>File 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_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<ul>
|
||||
<li>conven
|
||||
: <a class="el" href="energyCalibration_8h.html#a48a6c1eb7d418c5d0618fbb161ae321">energyCalibration.h</a><li>el
|
||||
: <a class="el" href="energyCalibration_8h.html#d1db7b454cab6ae1749310d7f444849b">energyCalibration.h</a></ul>
|
||||
<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,25 +0,0 @@
|
||||
<!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>Common Root library for SLS detectors data analysis</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 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>Common Root library for SLS detectors data analysis</h1>
|
||||
<p>
|
||||
<h2><a class="anchor" name="intro_sec">
|
||||
Introduction</a></h2>
|
||||
We know very well s-curves etc. but at the end everybody uses different functions ;-).<h3><a class="anchor" name="mot_sec">
|
||||
Motivation</a></h3>
|
||||
It would be greate to use everybody the same functions... <hr size="1"><address style="align: right;"><small>Generated on Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,117 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
%subst = ( );
|
||||
$quiet = 0;
|
||||
|
||||
if (open(F,"search.cfg"))
|
||||
{
|
||||
$_=<F> ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_;
|
||||
$_=<F> ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_;
|
||||
}
|
||||
|
||||
while ( @ARGV ) {
|
||||
$_ = shift @ARGV;
|
||||
if ( s/^-// ) {
|
||||
if ( /^l(.*)/ ) {
|
||||
$v = ($1 eq "") ? shift @ARGV : $1;
|
||||
($v =~ /\/$/) || ($v .= "/");
|
||||
$_ = $v;
|
||||
if ( /(.+)\@(.+)/ ) {
|
||||
if ( exists $subst{$1} ) {
|
||||
$subst{$1} = $2;
|
||||
} else {
|
||||
print STDERR "Unknown tag file $1 given with option -l\n";
|
||||
&usage();
|
||||
}
|
||||
} else {
|
||||
print STDERR "Argument $_ is invalid for option -l\n";
|
||||
&usage();
|
||||
}
|
||||
}
|
||||
elsif ( /^q/ ) {
|
||||
$quiet = 1;
|
||||
}
|
||||
elsif ( /^\?|^h/ ) {
|
||||
&usage();
|
||||
}
|
||||
else {
|
||||
print STDERR "Illegal option -$_\n";
|
||||
&usage();
|
||||
}
|
||||
}
|
||||
else {
|
||||
push (@files, $_ );
|
||||
}
|
||||
}
|
||||
|
||||
foreach $sub (keys %subst)
|
||||
{
|
||||
if ( $subst{$sub} eq "" )
|
||||
{
|
||||
print STDERR "No substitute given for tag file `$sub'\n";
|
||||
&usage();
|
||||
}
|
||||
elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" )
|
||||
{
|
||||
print "Substituting $subst{$sub} for each occurence of tag file $sub\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! @files ) {
|
||||
if (opendir(D,".")) {
|
||||
foreach $file ( readdir(D) ) {
|
||||
$match = ".html";
|
||||
next if ( $file =~ /^\.\.?$/ );
|
||||
($file =~ /$match/) && (push @files, $file);
|
||||
($file =~ "tree.js") && (push @files, $file);
|
||||
}
|
||||
closedir(D);
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! @files ) {
|
||||
print STDERR "Warning: No input files given and none found!\n";
|
||||
}
|
||||
|
||||
foreach $f (@files)
|
||||
{
|
||||
if ( ! $quiet ) {
|
||||
print "Editing: $f...\n";
|
||||
}
|
||||
$oldf = $f;
|
||||
$f .= ".bak";
|
||||
unless (rename $oldf,$f) {
|
||||
print STDERR "Error: cannot rename file $oldf\n";
|
||||
exit 1;
|
||||
}
|
||||
if (open(F,"<$f")) {
|
||||
unless (open(G,">$oldf")) {
|
||||
print STDERR "Error: opening file $oldf for writing\n";
|
||||
exit 1;
|
||||
}
|
||||
if ($oldf ne "tree.js") {
|
||||
while (<F>) {
|
||||
s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g;
|
||||
print G "$_";
|
||||
}
|
||||
}
|
||||
else {
|
||||
while (<F>) {
|
||||
s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g;
|
||||
print G "$_";
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
print STDERR "Warning file $f does not exist\n";
|
||||
}
|
||||
unlink $f;
|
||||
}
|
||||
|
||||
sub usage {
|
||||
print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n";
|
||||
print STDERR "Options:\n";
|
||||
print STDERR " -l tagfile\@linkName tag file + URL or directory \n";
|
||||
print STDERR " -q Quiet mode\n\n";
|
||||
exit 1;
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
<!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 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 Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,24 +0,0 @@
|
||||
<!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 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 Tue Mar 27 16:32:29 2012 by
|
||||
<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>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_ampl">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a77b954cd513271d2cfafee6033435584" target="_parent">ampl</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,31 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_bg_5foffset">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#aaa11f256a8b0a94c28a98d068013b327" target="_parent">bg_offset</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_bg_5fslope">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibration.html#a9676e5cc2757c723c2262d641fb4b8b4" target="_parent">bg_slope</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,37 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_calibrate">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#aa6e7624f6cafb8c3a22c821aee2c6fc4" target="_parent">calibrate</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_conven">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../energyCalibration_8h.html#aa48a6c1eb7d418c5d0618fbb161ae321" target="_parent">conven</a>
|
||||
<span class="SRScope">energyCalibration.h</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_cs_5fslope">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibration.html#aca1efedbfea0ad5c9ea2d794e3fb368d" target="_parent">cs_slope</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,66 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_el">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../energyCalibration_8h.html#ad1db7b454cab6ae1749310d7f444849b" target="_parent">el</a>
|
||||
<span class="SRScope">energyCalibration.h</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_energycalibration">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_energycalibration')">energyCalibration</a>
|
||||
<div class="SRChildren">
|
||||
<a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../classenergyCalibration.html" target="_parent">energyCalibration</a>
|
||||
<a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../classenergyCalibration.html#a16f0658d2b526f52784057b2166efd22" target="_parent">energyCalibration::energyCalibration()</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_energycalibration_2eh">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../energyCalibration_8h.html" target="_parent">energyCalibration.h</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_energycalibrationfunctions">
|
||||
<div class="SREntry">
|
||||
<a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_energycalibrationfunctions')">energyCalibrationFunctions</a>
|
||||
<div class="SRChildren">
|
||||
<a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../classenergyCalibrationFunctions.html" target="_parent">energyCalibrationFunctions</a>
|
||||
<a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../classenergyCalibrationFunctions.html#a8c17162b89f3b2e642004e7c88a22ac2" target="_parent">energyCalibrationFunctions::energyCalibrationFunctions()</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_erffuncfluo">
|
||||
<div class="SREntry">
|
||||
<a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#aa5fbe9da48bc2ef90b699e06ea8c5111" target="_parent">erfFuncFluo</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_erffunction">
|
||||
<div class="SREntry">
|
||||
<a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a2da1e3b9a10d23233256f8c2234f2457" target="_parent">erfFunction</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_erffunctionchargesharing">
|
||||
<div class="SREntry">
|
||||
<a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a8d1b3d0f8b30423dad56d8ce5323a4a8" target="_parent">erfFunctionChargeSharing</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,55 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_fit_5fmax">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#ae979386a3f787ef706f4a9ec5bf41d7d" target="_parent">fit_max</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_fit_5fmin">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibration.html#a262f574732186cdd8d3a11344d03d0bb" target="_parent">fit_min</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_fitscurve">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibration.html#a0dcd8e06e31f7b70488a012db12b2bf8" target="_parent">fitSCurve</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_flex">
|
||||
<div class="SREntry">
|
||||
<a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../classenergyCalibration.html#ab99d770f1c9af68d591ed20847813ad1" target="_parent">flex</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_fscurve">
|
||||
<div class="SREntry">
|
||||
<a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../classenergyCalibration.html#a57706a328324c25dd9f8ba6d1486e4ce" target="_parent">fscurve</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_funcs">
|
||||
<div class="SREntry">
|
||||
<a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../classenergyCalibration.html#ae9b3307bf858331241871bde42fdd24e" target="_parent">funcs</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,37 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_gausschargesharing">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#ae9582e5c46d27ad25d6139d0386698f7" target="_parent">gaussChargeSharing</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_getfitrange">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibration.html#abfb02327a6897bd97525c01697a1ba4f" target="_parent">getFitRange</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_getstartparameters">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibration.html#afc7411b7a3191748dfcc90f86b823bf4" target="_parent">getStartParameters</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_kth_5fsmallest">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a7d9a7b8d0c8ff69638a5fbb9f4c04b90" target="_parent">kth_smallest</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_linearcalibration">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#ac7f46f2d051f28211681e851f99d3fc4" target="_parent">linearCalibration</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_median">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a37f557bacb75213073c8d421cc1240f4" target="_parent">median</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_noise">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a4461206397e2442c92be9151ee231ec5" target="_parent">noise</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_plot_5fflag">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a4edfb157df3624be677177dec0f9555b" target="_parent">plot_flag</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_quick_5fselect">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#aa3ab0e7c3c862fb51dfda78f1b09a55c" target="_parent">quick_select</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,70 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_scurve">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#ae220482622e88a46b12498b0e4d8113a" target="_parent">scurve</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_scurvefluo">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a4eba39623b518d67a63192970a78f530" target="_parent">scurveFluo</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setfitrange">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibration.html#a695cef5428a833d515172d987774f67b" target="_parent">setFitRange</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setplotflag">
|
||||
<div class="SREntry">
|
||||
<a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../classenergyCalibration.html#a3d9af0857f7a68b7e4519917ea97e6be" target="_parent">setPlotFlag</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setscansign">
|
||||
<div class="SREntry">
|
||||
<a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_setscansign')">setScanSign</a>
|
||||
<div class="SRChildren">
|
||||
<a id="Item4_c0" onkeydown="return searchResults.NavChild(event,4,0)" onkeypress="return searchResults.NavChild(event,4,0)" onkeyup="return searchResults.NavChild(event,4,0)" class="SRScope" href="../classenergyCalibrationFunctions.html#a716759a1ae09ea3c841f824af3ece415" target="_parent">energyCalibrationFunctions::setScanSign()</a>
|
||||
<a id="Item4_c1" onkeydown="return searchResults.NavChild(event,4,1)" onkeypress="return searchResults.NavChild(event,4,1)" onkeyup="return searchResults.NavChild(event,4,1)" class="SRScope" href="../classenergyCalibration.html#a7dbf1676b30ffe90c5aa917f1b2b77ee" target="_parent">energyCalibration::setScanSign()</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setstartparameters">
|
||||
<div class="SREntry">
|
||||
<a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../classenergyCalibration.html#aba156f5290f7b404d7b8ea735fd7e7bf" target="_parent">setStartParameters</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_sign">
|
||||
<div class="SREntry">
|
||||
<a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a4fc7c435169b5bf4672cf654270097d0" target="_parent">sign</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_spectrum">
|
||||
<div class="SREntry">
|
||||
<a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a015eb05dc34b77642ab2a2a9f126f170" target="_parent">spectrum</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR__7eenergycalibration">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a3bae2b9c26893daa8f583758509c844f" target="_parent">~energyCalibration</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,29 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_energycalibration">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html" target="_parent">energyCalibration</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_energycalibrationfunctions">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibrationFunctions.html" target="_parent">energyCalibrationFunctions</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
Before Width: | Height: | Size: 273 B |
@ -1,24 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_energycalibration_2eh">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../energyCalibration_8h.html" target="_parent">energyCalibration.h</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_calibrate">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#aa6e7624f6cafb8c3a22c821aee2c6fc4" target="_parent">calibrate</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,49 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_energycalibration">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a16f0658d2b526f52784057b2166efd22" target="_parent">energyCalibration</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_energycalibrationfunctions">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a8c17162b89f3b2e642004e7c88a22ac2" target="_parent">energyCalibrationFunctions</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_erffuncfluo">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#aa5fbe9da48bc2ef90b699e06ea8c5111" target="_parent">erfFuncFluo</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_erffunction">
|
||||
<div class="SREntry">
|
||||
<a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a2da1e3b9a10d23233256f8c2234f2457" target="_parent">erfFunction</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_erffunctionchargesharing">
|
||||
<div class="SREntry">
|
||||
<a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a8d1b3d0f8b30423dad56d8ce5323a4a8" target="_parent">erfFunctionChargeSharing</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_fitscurve">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a0dcd8e06e31f7b70488a012db12b2bf8" target="_parent">fitSCurve</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,37 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_gausschargesharing">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#ae9582e5c46d27ad25d6139d0386698f7" target="_parent">gaussChargeSharing</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_getfitrange">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibration.html#abfb02327a6897bd97525c01697a1ba4f" target="_parent">getFitRange</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_getstartparameters">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibration.html#afc7411b7a3191748dfcc90f86b823bf4" target="_parent">getStartParameters</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_kth_5fsmallest">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a7d9a7b8d0c8ff69638a5fbb9f4c04b90" target="_parent">kth_smallest</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_linearcalibration">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#ac7f46f2d051f28211681e851f99d3fc4" target="_parent">linearCalibration</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_median">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a37f557bacb75213073c8d421cc1240f4" target="_parent">median</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_quick_5fselect">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#aa3ab0e7c3c862fb51dfda78f1b09a55c" target="_parent">quick_select</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,64 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_scurve">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#ae220482622e88a46b12498b0e4d8113a" target="_parent">scurve</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_scurvefluo">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a4eba39623b518d67a63192970a78f530" target="_parent">scurveFluo</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setfitrange">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibration.html#a695cef5428a833d515172d987774f67b" target="_parent">setFitRange</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setplotflag">
|
||||
<div class="SREntry">
|
||||
<a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../classenergyCalibration.html#a3d9af0857f7a68b7e4519917ea97e6be" target="_parent">setPlotFlag</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setscansign">
|
||||
<div class="SREntry">
|
||||
<a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_setscansign')">setScanSign</a>
|
||||
<div class="SRChildren">
|
||||
<a id="Item4_c0" onkeydown="return searchResults.NavChild(event,4,0)" onkeypress="return searchResults.NavChild(event,4,0)" onkeyup="return searchResults.NavChild(event,4,0)" class="SRScope" href="../classenergyCalibrationFunctions.html#a716759a1ae09ea3c841f824af3ece415" target="_parent">energyCalibrationFunctions::setScanSign()</a>
|
||||
<a id="Item4_c1" onkeydown="return searchResults.NavChild(event,4,1)" onkeypress="return searchResults.NavChild(event,4,1)" onkeyup="return searchResults.NavChild(event,4,1)" class="SRScope" href="../classenergyCalibration.html#a7dbf1676b30ffe90c5aa917f1b2b77ee" target="_parent">energyCalibration::setScanSign()</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_setstartparameters">
|
||||
<div class="SREntry">
|
||||
<a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../classenergyCalibration.html#aba156f5290f7b404d7b8ea735fd7e7bf" target="_parent">setStartParameters</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_spectrum">
|
||||
<div class="SREntry">
|
||||
<a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../classenergyCalibrationFunctions.html#a015eb05dc34b77642ab2a2a9f126f170" target="_parent">spectrum</a>
|
||||
<span class="SRScope">energyCalibrationFunctions</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR__7eenergycalibration">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a3bae2b9c26893daa8f583758509c844f" target="_parent">~energyCalibration</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,198 +0,0 @@
|
||||
/*---------------- Search Box */
|
||||
|
||||
#MSearchBox {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
border: 1px solid #84B0C7;
|
||||
white-space: nowrap;
|
||||
-moz-border-radius: 8px;
|
||||
-webkit-border-top-left-radius: 8px;
|
||||
-webkit-border-top-right-radius: 8px;
|
||||
-webkit-border-bottom-left-radius: 8px;
|
||||
-webkit-border-bottom-right-radius: 8px;
|
||||
}
|
||||
#MSearchField {
|
||||
font: 9pt Arial, Verdana, sans-serif;
|
||||
color: #999999;
|
||||
background-color: #FFFFFF;
|
||||
font-style: normal;
|
||||
cursor: text;
|
||||
padding: 1px 1px;
|
||||
margin: 0px 6px 0px 0px;
|
||||
border: none;
|
||||
outline: none;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.MSearchBoxActive #MSearchField {
|
||||
color: #000000;
|
||||
}
|
||||
#MSearchSelect {
|
||||
float : none;
|
||||
display : inline;
|
||||
background : none;
|
||||
font: 9pt Verdana, sans-serif;
|
||||
border: none;
|
||||
margin: 0px 0px 0px 6px;
|
||||
vertical-align: middle;
|
||||
padding: 0px 0px;
|
||||
}
|
||||
|
||||
#MSearchClose {
|
||||
float : none;
|
||||
display : none;
|
||||
background : none;
|
||||
border: none;
|
||||
margin: 0px 4px 0px 0px;
|
||||
padding: 0px 0px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#MSearchCloseImg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.MSearchBoxLeft {
|
||||
display: block;
|
||||
text-align: left;
|
||||
float: left;
|
||||
margin-left: 6px;
|
||||
}
|
||||
.MSearchBoxRight {
|
||||
display: block;
|
||||
float: right;
|
||||
text-align: right;
|
||||
margin-right: 6px;
|
||||
}
|
||||
.MSearchBoxSpacer {
|
||||
font-size: 0px;
|
||||
clear: both;
|
||||
}
|
||||
.MSearchBoxRow {
|
||||
font-size: 0px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/*---------------- Search filter selection */
|
||||
|
||||
#MSearchSelectWindow {
|
||||
display: none;
|
||||
position: absolute;
|
||||
left: 0; top: 0;
|
||||
border: 1px solid #A0A0A0;
|
||||
background-color: #FAFAFA;
|
||||
z-index: 1;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-top-left-radius: 4px;
|
||||
-webkit-border-top-right-radius: 4px;
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
.SelectItem {
|
||||
font: 8pt Arial, Verdana, sans-serif;
|
||||
padding-left: 2px;
|
||||
padding-right: 12px;
|
||||
border: 0px;
|
||||
}
|
||||
span.SelectionMark {
|
||||
margin-right: 4px;
|
||||
font-family: monospace;
|
||||
outline-style: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
a.SelectItem {
|
||||
display: block;
|
||||
outline-style: none;
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
padding-left: 6px;
|
||||
padding-right: 12px;
|
||||
}
|
||||
a.SelectItem:focus,
|
||||
a.SelectItem:active {
|
||||
color: #000000;
|
||||
outline-style: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
a.SelectItem:hover {
|
||||
color: #FFFFFF;
|
||||
background-color: #2A50E4;
|
||||
outline-style: none;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*---------------- Search results window */
|
||||
|
||||
iframe#MSearchResults {
|
||||
width: 60ex;
|
||||
height: 15em;
|
||||
}
|
||||
#MSearchResultsWindow {
|
||||
display: none;
|
||||
position: absolute;
|
||||
left: 0; top: 0;
|
||||
border: 1px solid #000000;
|
||||
background-color: #EEF3F5;
|
||||
}
|
||||
|
||||
/* ----------------------------------- */
|
||||
|
||||
|
||||
#SRIndex {
|
||||
clear:both;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.SREntry {
|
||||
font-size: 10pt;
|
||||
padding-left: 1ex;
|
||||
}
|
||||
.SRPage .SREntry {
|
||||
font-size: 8pt;
|
||||
padding: 1px 5px;
|
||||
}
|
||||
body.SRPage {
|
||||
margin: 5px 2px;
|
||||
}
|
||||
|
||||
.SRChildren {
|
||||
padding-left: 3ex; padding-bottom: .5em
|
||||
}
|
||||
.SRPage .SRChildren {
|
||||
display: none;
|
||||
}
|
||||
.SRSymbol {
|
||||
font-weight: bold; color: #153788;
|
||||
font-family: Arial, Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a.SRScope {
|
||||
display: block;
|
||||
color: #153788;
|
||||
font-family: Arial, Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a.SRSymbol:focus, a.SRSymbol:active,
|
||||
a.SRScope:focus, a.SRScope:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.SRPage .SRStatus {
|
||||
padding: 2px 5px;
|
||||
font-size: 8pt;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.SRResult {
|
||||
display: none;
|
||||
}
|
||||
|
@ -1,734 +0,0 @@
|
||||
// Search script generated by doxygen
|
||||
// Copyright (C) 2009 by Dimitri van Heesch.
|
||||
|
||||
// The code in this file is loosly based on main.js, part of Natural Docs,
|
||||
// which is Copyright (C) 2003-2008 Greg Valure
|
||||
// Natural Docs is licensed under the GPL.
|
||||
|
||||
var indexSectionsWithContent =
|
||||
{
|
||||
0: "000000000000000000000000000000000000000000000000000000000000000001110111000111101101000000000010",
|
||||
1: "000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000",
|
||||
2: "000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000",
|
||||
3: "000000000000000000000000000000000000000000000000000000000000000000010111000111000101000000000010",
|
||||
4: "000000000000000000000000000000000000000000000000000000000000000001110110000000101001000000000000"
|
||||
};
|
||||
|
||||
var indexSectionNames =
|
||||
{
|
||||
0: "all",
|
||||
1: "classes",
|
||||
2: "files",
|
||||
3: "functions",
|
||||
4: "variables"
|
||||
};
|
||||
|
||||
function convertToId(search)
|
||||
{
|
||||
var result = '';
|
||||
for (i=0;i<search.length;i++)
|
||||
{
|
||||
var c = search.charAt(i);
|
||||
var cn = c.charCodeAt(0);
|
||||
if (c.match(/[a-z0-9]/))
|
||||
{
|
||||
result+=c;
|
||||
}
|
||||
else if (cn<16)
|
||||
{
|
||||
result+="_0"+cn.toString(16);
|
||||
}
|
||||
else
|
||||
{
|
||||
result+="_"+cn.toString(16);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function getXPos(item)
|
||||
{
|
||||
var x = 0;
|
||||
if (item.offsetWidth)
|
||||
{
|
||||
while (item && item!=document.body)
|
||||
{
|
||||
x += item.offsetLeft;
|
||||
item = item.offsetParent;
|
||||
}
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
function getYPos(item)
|
||||
{
|
||||
var y = 0;
|
||||
if (item.offsetWidth)
|
||||
{
|
||||
while (item && item!=document.body)
|
||||
{
|
||||
y += item.offsetTop;
|
||||
item = item.offsetParent;
|
||||
}
|
||||
}
|
||||
return y;
|
||||
}
|
||||
|
||||
/* A class handling everything associated with the search panel.
|
||||
|
||||
Parameters:
|
||||
name - The name of the global variable that will be
|
||||
storing this instance. Is needed to be able to set timeouts.
|
||||
resultPath - path to use for external files
|
||||
*/
|
||||
function SearchBox(name, resultsPath, inFrame, label)
|
||||
{
|
||||
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
|
||||
|
||||
// ---------- Instance variables
|
||||
this.name = name;
|
||||
this.resultsPath = resultsPath;
|
||||
this.keyTimeout = 0;
|
||||
this.keyTimeoutLength = 500;
|
||||
this.closeSelectionTimeout = 300;
|
||||
this.lastSearchValue = "";
|
||||
this.lastResultsPage = "";
|
||||
this.hideTimeout = 0;
|
||||
this.searchIndex = 0;
|
||||
this.searchActive = false;
|
||||
this.insideFrame = inFrame;
|
||||
this.searchLabel = label;
|
||||
|
||||
// ----------- DOM Elements
|
||||
|
||||
this.DOMSearchField = function()
|
||||
{ return document.getElementById("MSearchField"); }
|
||||
|
||||
this.DOMSearchSelect = function()
|
||||
{ return document.getElementById("MSearchSelect"); }
|
||||
|
||||
this.DOMSearchSelectWindow = function()
|
||||
{ return document.getElementById("MSearchSelectWindow"); }
|
||||
|
||||
this.DOMPopupSearchResults = function()
|
||||
{ return document.getElementById("MSearchResults"); }
|
||||
|
||||
this.DOMPopupSearchResultsWindow = function()
|
||||
{ return document.getElementById("MSearchResultsWindow"); }
|
||||
|
||||
this.DOMSearchClose = function()
|
||||
{ return document.getElementById("MSearchClose"); }
|
||||
|
||||
this.DOMSearchBox = function()
|
||||
{ return document.getElementById("MSearchBox"); }
|
||||
|
||||
// ------------ Event Handlers
|
||||
|
||||
// Called when focus is added or removed from the search field.
|
||||
this.OnSearchFieldFocus = function(isActive)
|
||||
{
|
||||
this.Activate(isActive);
|
||||
}
|
||||
|
||||
this.OnSearchSelectShow = function()
|
||||
{
|
||||
var searchSelectWindow = this.DOMSearchSelectWindow();
|
||||
var searchField = this.DOMSearchSelect();
|
||||
|
||||
if (this.insideFrame)
|
||||
{
|
||||
var left = getXPos(searchField);
|
||||
var top = getYPos(searchField);
|
||||
left += searchField.offsetWidth + 6;
|
||||
top += searchField.offsetHeight;
|
||||
|
||||
// show search selection popup
|
||||
searchSelectWindow.style.display='block';
|
||||
left -= searchSelectWindow.offsetWidth;
|
||||
searchSelectWindow.style.left = left + 'px';
|
||||
searchSelectWindow.style.top = top + 'px';
|
||||
}
|
||||
else
|
||||
{
|
||||
var left = getXPos(searchField);
|
||||
var top = getYPos(searchField);
|
||||
top += searchField.offsetHeight;
|
||||
|
||||
// show search selection popup
|
||||
searchSelectWindow.style.display='block';
|
||||
searchSelectWindow.style.left = left + 'px';
|
||||
searchSelectWindow.style.top = top + 'px';
|
||||
}
|
||||
|
||||
// stop selection hide timer
|
||||
if (this.hideTimeout)
|
||||
{
|
||||
clearTimeout(this.hideTimeout);
|
||||
this.hideTimeout=0;
|
||||
}
|
||||
return false; // to avoid "image drag" default event
|
||||
}
|
||||
|
||||
this.OnSearchSelectHide = function()
|
||||
{
|
||||
this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
|
||||
this.closeSelectionTimeout);
|
||||
}
|
||||
|
||||
// Called when the content of the search field is changed.
|
||||
this.OnSearchFieldChange = function(evt)
|
||||
{
|
||||
if (this.keyTimeout) // kill running timer
|
||||
{
|
||||
clearTimeout(this.keyTimeout);
|
||||
this.keyTimeout = 0;
|
||||
}
|
||||
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==40 || e.keyCode==13)
|
||||
{
|
||||
if (e.shiftKey==1)
|
||||
{
|
||||
this.OnSearchSelectShow();
|
||||
var win=this.DOMSearchSelectWindow();
|
||||
for (i=0;i<win.childNodes.length;i++)
|
||||
{
|
||||
var child = win.childNodes[i]; // get span within a
|
||||
if (child.className=='SelectItem')
|
||||
{
|
||||
child.focus();
|
||||
return;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (window.frames.MSearchResults.searchResults)
|
||||
{
|
||||
var elem = window.frames.MSearchResults.searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
}
|
||||
else if (e.keyCode==27) // Escape out of the search field
|
||||
{
|
||||
this.DOMSearchField().blur();
|
||||
this.DOMPopupSearchResultsWindow().style.display = 'none';
|
||||
this.DOMSearchClose().style.display = 'none';
|
||||
this.lastSearchValue = '';
|
||||
this.Activate(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// strip whitespaces
|
||||
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
|
||||
|
||||
if (searchValue != this.lastSearchValue) // search value has changed
|
||||
{
|
||||
if (searchValue != "") // non-empty search
|
||||
{
|
||||
// set timer for search update
|
||||
this.keyTimeout = setTimeout(this.name + '.Search()',
|
||||
this.keyTimeoutLength);
|
||||
}
|
||||
else // empty search field
|
||||
{
|
||||
this.DOMPopupSearchResultsWindow().style.display = 'none';
|
||||
this.DOMSearchClose().style.display = 'none';
|
||||
this.lastSearchValue = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.SelectItemCount = function(id)
|
||||
{
|
||||
var count=0;
|
||||
var win=this.DOMSearchSelectWindow();
|
||||
for (i=0;i<win.childNodes.length;i++)
|
||||
{
|
||||
var child = win.childNodes[i]; // get span within a
|
||||
if (child.className=='SelectItem')
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
this.SelectItemSet = function(id)
|
||||
{
|
||||
var i,j=0;
|
||||
var win=this.DOMSearchSelectWindow();
|
||||
for (i=0;i<win.childNodes.length;i++)
|
||||
{
|
||||
var child = win.childNodes[i]; // get span within a
|
||||
if (child.className=='SelectItem')
|
||||
{
|
||||
var node = child.firstChild;
|
||||
if (j==id)
|
||||
{
|
||||
node.innerHTML='•';
|
||||
}
|
||||
else
|
||||
{
|
||||
node.innerHTML=' ';
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Called when an search filter selection is made.
|
||||
// set item with index id as the active item
|
||||
this.OnSelectItem = function(id)
|
||||
{
|
||||
this.searchIndex = id;
|
||||
this.SelectItemSet(id);
|
||||
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
|
||||
if (searchValue!="" && this.searchActive) // something was found -> do a search
|
||||
{
|
||||
this.Search();
|
||||
}
|
||||
}
|
||||
|
||||
this.OnSearchSelectKey = function(evt)
|
||||
{
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
|
||||
{
|
||||
this.searchIndex++;
|
||||
this.OnSelectItem(this.searchIndex);
|
||||
}
|
||||
else if (e.keyCode==38 && this.searchIndex>0) // Up
|
||||
{
|
||||
this.searchIndex--;
|
||||
this.OnSelectItem(this.searchIndex);
|
||||
}
|
||||
else if (e.keyCode==13 || e.keyCode==27)
|
||||
{
|
||||
this.OnSelectItem(this.searchIndex);
|
||||
this.CloseSelectionWindow();
|
||||
this.DOMSearchField().focus();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// --------- Actions
|
||||
|
||||
// Closes the results window.
|
||||
this.CloseResultsWindow = function()
|
||||
{
|
||||
this.DOMPopupSearchResultsWindow().style.display = 'none';
|
||||
this.DOMSearchClose().style.display = 'none';
|
||||
this.Activate(false);
|
||||
}
|
||||
|
||||
this.CloseSelectionWindow = function()
|
||||
{
|
||||
this.DOMSearchSelectWindow().style.display = 'none';
|
||||
}
|
||||
|
||||
// Performs a search.
|
||||
this.Search = function()
|
||||
{
|
||||
this.keyTimeout = 0;
|
||||
|
||||
// strip leading whitespace
|
||||
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
|
||||
|
||||
var code = searchValue.toLowerCase().charCodeAt(0);
|
||||
var hexCode;
|
||||
if (code<16)
|
||||
{
|
||||
hexCode="0"+code.toString(16);
|
||||
}
|
||||
else
|
||||
{
|
||||
hexCode=code.toString(16);
|
||||
}
|
||||
|
||||
var resultsPage;
|
||||
var resultsPageWithSearch;
|
||||
var hasResultsPage;
|
||||
|
||||
if (indexSectionsWithContent[this.searchIndex].charAt(code-32) == '1')
|
||||
{
|
||||
resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
|
||||
resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
|
||||
hasResultsPage = true;
|
||||
}
|
||||
else // nothing available for this search term
|
||||
{
|
||||
resultsPage = this.resultsPath + '/nomatches.html';
|
||||
resultsPageWithSearch = resultsPage;
|
||||
hasResultsPage = false;
|
||||
}
|
||||
|
||||
window.frames.MSearchResults.location.href = resultsPageWithSearch;
|
||||
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
|
||||
|
||||
if (domPopupSearchResultsWindow.style.display!='block')
|
||||
{
|
||||
var domSearchBox = this.DOMSearchBox();
|
||||
this.DOMSearchClose().style.display = 'inline';
|
||||
if (this.insideFrame)
|
||||
{
|
||||
var domPopupSearchResults = this.DOMPopupSearchResults();
|
||||
domPopupSearchResultsWindow.style.position = 'relative';
|
||||
domPopupSearchResultsWindow.style.display = 'block';
|
||||
var width = document.body.clientWidth - 8; // the -8 is for IE :-(
|
||||
domPopupSearchResultsWindow.style.width = width + 'px';
|
||||
domPopupSearchResults.style.width = width + 'px';
|
||||
}
|
||||
else
|
||||
{
|
||||
var domPopupSearchResults = this.DOMPopupSearchResults();
|
||||
var left = getXPos(domSearchBox) + domSearchBox.offsetWidth;
|
||||
var top = getYPos(domSearchBox) + domSearchBox.offsetHeight + 1;
|
||||
domPopupSearchResultsWindow.style.display = 'block';
|
||||
left -= domPopupSearchResults.offsetWidth;
|
||||
domPopupSearchResultsWindow.style.top = top + 'px';
|
||||
domPopupSearchResultsWindow.style.left = left + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
this.lastSearchValue = searchValue;
|
||||
this.lastResultsPage = resultsPage;
|
||||
}
|
||||
|
||||
// -------- Activation Functions
|
||||
|
||||
// Activates or deactivates the search panel, resetting things to
|
||||
// their default values if necessary.
|
||||
this.Activate = function(isActive)
|
||||
{
|
||||
if (isActive || // open it
|
||||
this.DOMPopupSearchResultsWindow().style.display == 'block'
|
||||
)
|
||||
{
|
||||
this.DOMSearchBox().className = 'MSearchBoxActive';
|
||||
|
||||
var searchField = this.DOMSearchField();
|
||||
|
||||
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
|
||||
{
|
||||
searchField.value = '';
|
||||
this.searchActive = true;
|
||||
}
|
||||
}
|
||||
else if (!isActive) // directly remove the panel
|
||||
{
|
||||
this.DOMSearchBox().className = 'MSearchBoxInactive';
|
||||
this.DOMSearchField().value = this.searchLabel;
|
||||
this.searchActive = false;
|
||||
this.lastSearchValue = ''
|
||||
this.lastResultsPage = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
// The class that handles everything on the search results page.
|
||||
function SearchResults(name)
|
||||
{
|
||||
// The number of matches from the last run of <Search()>.
|
||||
this.lastMatchCount = 0;
|
||||
this.lastKey = 0;
|
||||
this.repeatOn = false;
|
||||
|
||||
// Toggles the visibility of the passed element ID.
|
||||
this.FindChildElement = function(id)
|
||||
{
|
||||
var parentElement = document.getElementById(id);
|
||||
var element = parentElement.firstChild;
|
||||
|
||||
while (element && element!=parentElement)
|
||||
{
|
||||
if (element.nodeName == 'DIV' && element.className == 'SRChildren')
|
||||
{
|
||||
return element;
|
||||
}
|
||||
|
||||
if (element.nodeName == 'DIV' && element.hasChildNodes())
|
||||
{
|
||||
element = element.firstChild;
|
||||
}
|
||||
else if (element.nextSibling)
|
||||
{
|
||||
element = element.nextSibling;
|
||||
}
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
element = element.parentNode;
|
||||
}
|
||||
while (element && element!=parentElement && !element.nextSibling);
|
||||
|
||||
if (element && element!=parentElement)
|
||||
{
|
||||
element = element.nextSibling;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.Toggle = function(id)
|
||||
{
|
||||
var element = this.FindChildElement(id);
|
||||
if (element)
|
||||
{
|
||||
if (element.style.display == 'block')
|
||||
{
|
||||
element.style.display = 'none';
|
||||
}
|
||||
else
|
||||
{
|
||||
element.style.display = 'block';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Searches for the passed string. If there is no parameter,
|
||||
// it takes it from the URL query.
|
||||
//
|
||||
// Always returns true, since other documents may try to call it
|
||||
// and that may or may not be possible.
|
||||
this.Search = function(search)
|
||||
{
|
||||
if (!search) // get search word from URL
|
||||
{
|
||||
search = window.location.search;
|
||||
search = search.substring(1); // Remove the leading '?'
|
||||
search = unescape(search);
|
||||
}
|
||||
|
||||
search = search.replace(/^ +/, ""); // strip leading spaces
|
||||
search = search.replace(/ +$/, ""); // strip trailing spaces
|
||||
search = search.toLowerCase();
|
||||
search = convertToId(search);
|
||||
|
||||
var resultRows = document.getElementsByTagName("div");
|
||||
var matches = 0;
|
||||
|
||||
var i = 0;
|
||||
while (i < resultRows.length)
|
||||
{
|
||||
var row = resultRows.item(i);
|
||||
if (row.className == "SRResult")
|
||||
{
|
||||
var rowMatchName = row.id.toLowerCase();
|
||||
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
|
||||
|
||||
if (search.length<=rowMatchName.length &&
|
||||
rowMatchName.substr(0, search.length)==search)
|
||||
{
|
||||
row.style.display = 'block';
|
||||
matches++;
|
||||
}
|
||||
else
|
||||
{
|
||||
row.style.display = 'none';
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
document.getElementById("Searching").style.display='none';
|
||||
if (matches == 0) // no results
|
||||
{
|
||||
document.getElementById("NoMatches").style.display='block';
|
||||
}
|
||||
else // at least one result
|
||||
{
|
||||
document.getElementById("NoMatches").style.display='none';
|
||||
}
|
||||
this.lastMatchCount = matches;
|
||||
return true;
|
||||
}
|
||||
|
||||
// return the first item with index index or higher that is visible
|
||||
this.NavNext = function(index)
|
||||
{
|
||||
var focusItem;
|
||||
while (1)
|
||||
{
|
||||
var focusName = 'Item'+index;
|
||||
focusItem = document.getElementById(focusName);
|
||||
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (!focusItem) // last element
|
||||
{
|
||||
break;
|
||||
}
|
||||
focusItem=null;
|
||||
index++;
|
||||
}
|
||||
return focusItem;
|
||||
}
|
||||
|
||||
this.NavPrev = function(index)
|
||||
{
|
||||
var focusItem;
|
||||
while (1)
|
||||
{
|
||||
var focusName = 'Item'+index;
|
||||
focusItem = document.getElementById(focusName);
|
||||
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (!focusItem) // last element
|
||||
{
|
||||
break;
|
||||
}
|
||||
focusItem=null;
|
||||
index--;
|
||||
}
|
||||
return focusItem;
|
||||
}
|
||||
|
||||
this.ProcessKeys = function(e)
|
||||
{
|
||||
if (e.type == "keydown")
|
||||
{
|
||||
this.repeatOn = false;
|
||||
this.lastKey = e.keyCode;
|
||||
}
|
||||
else if (e.type == "keypress")
|
||||
{
|
||||
if (!this.repeatOn)
|
||||
{
|
||||
if (this.lastKey) this.repeatOn = true;
|
||||
return false; // ignore first keypress after keydown
|
||||
}
|
||||
}
|
||||
else if (e.type == "keyup")
|
||||
{
|
||||
this.lastKey = 0;
|
||||
this.repeatOn = false;
|
||||
}
|
||||
return this.lastKey!=0;
|
||||
}
|
||||
|
||||
this.Nav = function(evt,itemIndex)
|
||||
{
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==13) return true;
|
||||
if (!this.ProcessKeys(e)) return false;
|
||||
|
||||
if (this.lastKey==38) // Up
|
||||
{
|
||||
var newIndex = itemIndex-1;
|
||||
var focusItem = this.NavPrev(newIndex);
|
||||
if (focusItem)
|
||||
{
|
||||
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
|
||||
if (child && child.style.display == 'block') // children visible
|
||||
{
|
||||
var n=0;
|
||||
var tmpElem;
|
||||
while (1) // search for last child
|
||||
{
|
||||
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
|
||||
if (tmpElem)
|
||||
{
|
||||
focusItem = tmpElem;
|
||||
}
|
||||
else // found it!
|
||||
{
|
||||
break;
|
||||
}
|
||||
n++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (focusItem)
|
||||
{
|
||||
focusItem.focus();
|
||||
}
|
||||
else // return focus to search field
|
||||
{
|
||||
parent.document.getElementById("MSearchField").focus();
|
||||
}
|
||||
}
|
||||
else if (this.lastKey==40) // Down
|
||||
{
|
||||
var newIndex = itemIndex+1;
|
||||
var focusItem;
|
||||
var item = document.getElementById('Item'+itemIndex);
|
||||
var elem = this.FindChildElement(item.parentNode.parentNode.id);
|
||||
if (elem && elem.style.display == 'block') // children visible
|
||||
{
|
||||
focusItem = document.getElementById('Item'+itemIndex+'_c0');
|
||||
}
|
||||
if (!focusItem) focusItem = this.NavNext(newIndex);
|
||||
if (focusItem) focusItem.focus();
|
||||
}
|
||||
else if (this.lastKey==39) // Right
|
||||
{
|
||||
var item = document.getElementById('Item'+itemIndex);
|
||||
var elem = this.FindChildElement(item.parentNode.parentNode.id);
|
||||
if (elem) elem.style.display = 'block';
|
||||
}
|
||||
else if (this.lastKey==37) // Left
|
||||
{
|
||||
var item = document.getElementById('Item'+itemIndex);
|
||||
var elem = this.FindChildElement(item.parentNode.parentNode.id);
|
||||
if (elem) elem.style.display = 'none';
|
||||
}
|
||||
else if (this.lastKey==27) // Escape
|
||||
{
|
||||
parent.searchBox.CloseResultsWindow();
|
||||
parent.document.getElementById("MSearchField").focus();
|
||||
}
|
||||
else if (this.lastKey==13) // Enter
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
this.NavChild = function(evt,itemIndex,childIndex)
|
||||
{
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==13) return true;
|
||||
if (!this.ProcessKeys(e)) return false;
|
||||
|
||||
if (this.lastKey==38) // Up
|
||||
{
|
||||
if (childIndex>0)
|
||||
{
|
||||
var newIndex = childIndex-1;
|
||||
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
|
||||
}
|
||||
else // already at first child, jump to parent
|
||||
{
|
||||
document.getElementById('Item'+itemIndex).focus();
|
||||
}
|
||||
}
|
||||
else if (this.lastKey==40) // Down
|
||||
{
|
||||
var newIndex = childIndex+1;
|
||||
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
|
||||
if (!elem) // last child, jump to parent next parent
|
||||
{
|
||||
elem = this.NavNext(itemIndex+1);
|
||||
}
|
||||
if (elem)
|
||||
{
|
||||
elem.focus();
|
||||
}
|
||||
}
|
||||
else if (this.lastKey==27) // Escape
|
||||
{
|
||||
parent.searchBox.CloseResultsWindow();
|
||||
parent.document.getElementById("MSearchField").focus();
|
||||
}
|
||||
else if (this.lastKey==13) // Enter
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 527 B |
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_ampl">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#a77b954cd513271d2cfafee6033435584" target="_parent">ampl</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,31 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_bg_5foffset">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#aaa11f256a8b0a94c28a98d068013b327" target="_parent">bg_offset</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_bg_5fslope">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibration.html#a9676e5cc2757c723c2262d641fb4b8b4" target="_parent">bg_slope</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,31 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_conven">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../energyCalibration_8h.html#aa48a6c1eb7d418c5d0618fbb161ae321" target="_parent">conven</a>
|
||||
<span class="SRScope">energyCalibration.h</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_cs_5fslope">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibration.html#aca1efedbfea0ad5c9ea2d794e3fb368d" target="_parent">cs_slope</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_el">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../energyCalibration_8h.html#ad1db7b454cab6ae1749310d7f444849b" target="_parent">el</a>
|
||||
<span class="SRScope">energyCalibration.h</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,49 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRResult" id="SR_fit_5fmax">
|
||||
<div class="SREntry">
|
||||
<a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../classenergyCalibration.html#ae979386a3f787ef706f4a9ec5bf41d7d" target="_parent">fit_max</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_fit_5fmin">
|
||||
<div class="SREntry">
|
||||
<a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../classenergyCalibration.html#a262f574732186cdd8d3a11344d03d0bb" target="_parent">fit_min</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_flex">
|
||||
<div class="SREntry">
|
||||
<a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../classenergyCalibration.html#ab99d770f1c9af68d591ed20847813ad1" target="_parent">flex</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_fscurve">
|
||||
<div class="SREntry">
|
||||
<a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../classenergyCalibration.html#a57706a328324c25dd9f8ba6d1486e4ce" target="_parent">fscurve</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRResult" id="SR_funcs">
|
||||
<div class="SREntry">
|
||||
<a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../classenergyCalibration.html#ae9b3307bf858331241871bde42fdd24e" target="_parent">funcs</a>
|
||||
<span class="SRScope">energyCalibration</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user