mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-04 09:00:41 +02:00
functions splitted in many sub-files
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@167 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
parent
b227ad1b0c
commit
ee36cdf9e4
@ -1,15 +1,18 @@
|
||||
CFLAGS= -DC_ONLY
|
||||
#FLAGS=-DVERBOSE
|
||||
INCLUDES= -IcommonFiles -IslsDetector -IMySocketTCP -IusersFunctions -ImultiSlsDetector -IslsDetectorUtils -IslsDetectorCommand
|
||||
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=g++
|
||||
|
||||
|
||||
SRC_CLNT= slsDetector/slsDetector.cpp MySocketTCP/MySocketTCP.cpp usersFunctions/usersFunctions.cpp multiSlsDetector/multiSlsDetector.cpp slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp
|
||||
SRC_CLNT= slsDetectorAnalysis/fileIO.cpp slsDetector/slsDetector.cpp MySocketTCP/MySocketTCP.cpp usersFunctions/usersFunctions.cpp multiSlsDetector/multiSlsDetector.cpp slsDetector/slsDetectorUtils.cpp slsDetector/slsDetectorCommand.cpp slsDetectorAnalysis/angularConversion.cpp slsDetectorAnalysis/energyConversion.cpp slsDetector/slsDetectorActions.cpp slsDetectorAnalysis/postProcessing.cpp
|
||||
|
||||
OBJS = $(SRC_CLNT:.cpp=.o)
|
||||
|
||||
HEADERS = $(SRC_CLNT:.cpp=.h) commonFiles/sls_detector_defs.h slsDetectorAnalysis/detectorData.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
|
||||
|
||||
@ -56,14 +59,8 @@ install_lib: lib
|
||||
|
||||
install_inc:
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
cp -P ../slsDetectorSoftware/MySocketTCP/MySocketTCP.h $(DESTDIR)
|
||||
cp -P ../slsDetectorSoftware/slsDetector/slsDetectorBase.h $(DESTDIR)
|
||||
cp -P ../slsDetectorSoftware/slsDetector/slsDetector.h $(DESTDIR)
|
||||
cp -P ../slsDetectorSoftware/slsDetector/slsDetectorUtils.h $(DESTDIR)
|
||||
cp -P ../slsDetectorSoftware/slsDetector/slsDetectorCommand.h $(DESTDIR)
|
||||
cp -P ../slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h $(DESTDIR)
|
||||
cp -P ../slsDetectorSoftware/commonFiles/sls_detector_defs.h $(DESTDIR)
|
||||
cp -P ../slsDetectorSoftware/usersFunctions/usersFunctions.h $(DESTDIR)
|
||||
cp -P $(HEADERS) $(DESTDIR)
|
||||
|
||||
|
||||
install_doc:
|
||||
$(shell test -d $(DESTDIR) || mkdir -p $(DESTDIR))
|
||||
|
@ -7,7 +7,10 @@
|
||||
#define MAX_STR_LENGTH 1000
|
||||
/** 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
|
||||
|
||||
typedef float float32_t;
|
||||
typedef int int32_t;
|
||||
@ -453,26 +456,27 @@ enum imageType {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
angular conversion constant for a module
|
||||
*/
|
||||
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;
|
||||
/* /\** */
|
||||
/* angular conversion constant for a module */
|
||||
/* *\/ */
|
||||
/* 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; */
|
||||
|
||||
|
||||
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 */
|
||||
BIN_SIZE, /**< angular bin size */
|
||||
MOVE_FLAG /**< wether the detector moves with the motor or not in a multi detector system */
|
||||
};
|
||||
|
||||
|
||||
|
@ -189,6 +189,10 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1)
|
||||
cout << thisMultiDetector->detectorIds[i] << endl;
|
||||
#endif
|
||||
detectors[i]=new slsDetector(thisMultiDetector->detectorIds[i]);
|
||||
|
||||
|
||||
// setAngularConversionPointer(detectors[i]->getAngularConversionPointer(),detectors[i]->getNModsPointer(),detectors[i]->getNChans()*detectors[i]->getNChips(), i);
|
||||
|
||||
}
|
||||
for (int i=thisMultiDetector->numberOfDetectors; i<MAXDET; i++)
|
||||
detectors[i]=NULL;
|
||||
@ -197,45 +201,70 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1)
|
||||
|
||||
/** modifies the last PID accessing the detector system*/
|
||||
thisMultiDetector->lastPID=getpid();
|
||||
getPointers(&thisMultiDetector->stoppedFlag, \
|
||||
&thisMultiDetector->threadedProcessing, \
|
||||
&thisMultiDetector->actionMask, \
|
||||
thisMultiDetector->actionScript, \
|
||||
thisMultiDetector->actionParameter, \
|
||||
thisMultiDetector->nScanSteps, \
|
||||
thisMultiDetector->scanMode, \
|
||||
thisMultiDetector->scanScript, \
|
||||
thisMultiDetector->scanParameter, \
|
||||
thisMultiDetector->scanSteps, \
|
||||
thisMultiDetector->scanPrecision, \
|
||||
&thisMultiDetector->numberOfPositions, \
|
||||
thisMultiDetector->detPositions, \
|
||||
thisMultiDetector->angConvFile, \
|
||||
&thisMultiDetector->correctionMask, \
|
||||
&thisMultiDetector->binSize, \
|
||||
&thisMultiDetector->fineOffset, \
|
||||
&thisMultiDetector->globalOffset, \
|
||||
&thisMultiDetector->angDirection, \
|
||||
thisMultiDetector->flatFieldDir, \
|
||||
thisMultiDetector->flatFieldFile, \
|
||||
thisMultiDetector->badChanFile, \
|
||||
thisMultiDetector->timerValue, \
|
||||
&thisMultiDetector->currentSettings, \
|
||||
&thisMultiDetector->currentThresholdEV, \
|
||||
thisMultiDetector->filePath, \
|
||||
thisMultiDetector->fileName, \
|
||||
&thisMultiDetector->fileIndex);
|
||||
|
||||
|
||||
// getPointers(&thisMultiDetector->stoppedFlag, \
|
||||
// &thisMultiDetector->threadedProcessing, \
|
||||
// &thisMultiDetector->actionMask, \
|
||||
// thisMultiDetector->actionScript, \
|
||||
// thisMultiDetector->actionParameter, \
|
||||
// thisMultiDetector->nScanSteps, \
|
||||
// thisMultiDetector->scanMode, \
|
||||
// thisMultiDetector->scanScript, \
|
||||
// thisMultiDetector->scanParameter, \
|
||||
// thisMultiDetector->scanSteps, \
|
||||
// thisMultiDetector->scanPrecision, \
|
||||
// &thisMultiDetector->numberOfPositions, \
|
||||
// thisMultiDetector->detPositions, \
|
||||
// thisMultiDetector->angConvFile, \
|
||||
// &thisMultiDetector->correctionMask, \
|
||||
// &thisMultiDetector->binSize, \
|
||||
// &thisMultiDetector->fineOffset, \
|
||||
// &thisMultiDetector->globalOffset, \
|
||||
// &thisMultiDetector->angDirection, \
|
||||
// thisMultiDetector->flatFieldDir, \
|
||||
// thisMultiDetector->flatFieldFile, \
|
||||
// thisMultiDetector->badChanFile, \
|
||||
// thisMultiDetector->timerValue, \
|
||||
// &thisMultiDetector->currentSettings, \
|
||||
// &thisMultiDetector->currentThresholdEV, \
|
||||
// thisMultiDetector->filePath, \
|
||||
// thisMultiDetector->fileName, \
|
||||
// &thisMultiDetector->fileIndex);
|
||||
|
||||
|
||||
// #ifdef VERBOSE
|
||||
// cout << "filling bad channel mask" << endl;
|
||||
// #endif
|
||||
// /** fill the BadChannelMask \sa fillBadChannelMask */
|
||||
// fillBadChannelMask();
|
||||
|
||||
// #ifdef VERBOSE
|
||||
// cout << "done" << endl;
|
||||
// #endif
|
||||
|
||||
stoppedFlag=&thisMultiDetector->stoppedFlag;
|
||||
threadedProcessing=&thisMultiDetector->threadedProcessing;
|
||||
actionMask=&thisMultiDetector->actionMask;
|
||||
actionScript=thisMultiDetector->actionScript;
|
||||
actionParameter=thisMultiDetector->actionParameter;
|
||||
nScanSteps=thisMultiDetector->nScanSteps;
|
||||
scanMode=thisMultiDetector->scanMode;
|
||||
scanScript=thisMultiDetector->scanScript;
|
||||
scanParameter=thisMultiDetector->scanParameter;
|
||||
scanSteps=thisMultiDetector->scanSteps;
|
||||
scanPrecision=thisMultiDetector->scanPrecision;
|
||||
numberOfPositions=&thisMultiDetector->numberOfPositions;
|
||||
detPositions=thisMultiDetector->detPositions;
|
||||
angConvFile=thisMultiDetector->angConvFile;
|
||||
correctionMask=&thisMultiDetector->correctionMask;
|
||||
binSize=&thisMultiDetector->binSize;
|
||||
fineOffset=&thisMultiDetector->fineOffset;
|
||||
globalOffset=&thisMultiDetector->globalOffset;
|
||||
angDirection=&thisMultiDetector->angDirection;
|
||||
flatFieldDir=thisMultiDetector->flatFieldDir;
|
||||
flatFieldFile=thisMultiDetector->flatFieldFile;
|
||||
badChanFile=thisMultiDetector->badChanFile;
|
||||
timerValue=thisMultiDetector->timerValue;
|
||||
currentSettings=&thisMultiDetector->currentSettings;
|
||||
currentThresholdEV=&thisMultiDetector->currentThresholdEV;
|
||||
filePath=thisMultiDetector->filePath;
|
||||
fileName=thisMultiDetector->fileName;
|
||||
fileIndex=&thisMultiDetector->fileIndex;
|
||||
moveFlag=NULL;
|
||||
|
||||
|
||||
}
|
||||
|
||||
multiSlsDetector::~multiSlsDetector() {
|
||||
@ -1617,11 +1646,53 @@ int multiSlsDetector::getFlatFieldCorrection(float *corr, float *ecorr) {
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::getNMods(){
|
||||
int nm=0;
|
||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||
if (detectors[idet]) {
|
||||
nm+=detectors[idet]->getNMods();
|
||||
}
|
||||
}
|
||||
return nm;
|
||||
}
|
||||
|
||||
|
||||
int multiSlsDetector::getChansPerMod(int imod){
|
||||
int id=-1, im=-1;
|
||||
if (decodeNMod(imod, id, im)>=0) {
|
||||
if (detectors[id]) {
|
||||
return detectors[id]->getChansPerMod(im);
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
int multiSlsDetector::getMoveFlag(int imod){
|
||||
int id=-1, im=-1;
|
||||
decodeNMod(imod, id, im);
|
||||
if (id>=0) {
|
||||
if (detectors[id]) {
|
||||
return detectors[id]->getMoveFlag(im);
|
||||
}
|
||||
}
|
||||
//default!!!
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
angleConversionConstant * multiSlsDetector::getAngularConversionPointer(int imod){
|
||||
int id=-1, im=-1;
|
||||
if (decodeNMod(imod, id, im)>=0) {
|
||||
if (detectors[id]) {
|
||||
return detectors[id]->getAngularConversionPointer(im);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1648,6 +1719,8 @@ int multiSlsDetector::flatFieldCorrect(float* datain, float *errin, float* datao
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::setRateCorrection(float t){
|
||||
// float tdead[]=defaultTDead;
|
||||
|
||||
@ -1831,30 +1904,11 @@ int multiSlsDetector::setBadChannelCorrection(int nbad, int *badlist, int ff) {
|
||||
}
|
||||
|
||||
|
||||
int multiSlsDetector::setAngularConversion(string fname) {
|
||||
if (fname=="") {
|
||||
thisMultiDetector->correctionMask&=~(1<< ANGULAR_CONVERSION);
|
||||
//strcpy(thisDetector->angConvFile,"none");
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Unsetting angular conversion" << std::endl;
|
||||
#endif
|
||||
} else {
|
||||
if (fname=="default") {
|
||||
fname=string(thisMultiDetector->angConvFile);
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Setting angular conversion to " << fname << std:: endl;
|
||||
#endif
|
||||
if (readAngularConversion(fname)>=0) {
|
||||
thisMultiDetector->correctionMask|=(1<< ANGULAR_CONVERSION);
|
||||
strcpy(thisMultiDetector->angConvFile,fname.c_str());
|
||||
}
|
||||
}
|
||||
return thisMultiDetector->correctionMask&(1<< ANGULAR_CONVERSION);
|
||||
}
|
||||
|
||||
int multiSlsDetector::readAngularConversion(string fname) {
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::readAngularConversionFile(string fname) {
|
||||
|
||||
|
||||
ifstream infile;
|
||||
@ -2022,33 +2076,33 @@ float multiSlsDetector::setAngularConversionParameter(angleConversionParameter c
|
||||
|
||||
|
||||
|
||||
float* multiSlsDetector::convertAngles(float pos) {
|
||||
float *ang=new float[thisMultiDetector->numberOfChannels];
|
||||
// float* multiSlsDetector::convertAngles(float pos) {
|
||||
// float *ang=new float[thisMultiDetector->numberOfChannels];
|
||||
|
||||
float *p=ang;
|
||||
int choff=0;
|
||||
// float *p=ang;
|
||||
// int choff=0;
|
||||
|
||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||
// for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||
|
||||
if (detectors[idet]) {
|
||||
#ifdef EPICS
|
||||
// cout << "convert angle det " << idet << endl;
|
||||
if (idet<2)
|
||||
#endif
|
||||
p=detectors[idet]->convertAngles(pos);
|
||||
#ifdef EPICS
|
||||
else //////////// GOOD ONLY AT THE BEAMLINE!!!!!!!!!!!!!
|
||||
p=detectors[idet]->convertAngles(0);
|
||||
#endif
|
||||
for (int ich=0; ich<detectors[idet]->getTotalNumberOfChannels(); ich++) {
|
||||
ang[choff+ich]=p[ich];
|
||||
}
|
||||
choff+=detectors[idet]->getTotalNumberOfChannels();
|
||||
delete [] p;
|
||||
}
|
||||
}
|
||||
return ang;
|
||||
}
|
||||
// if (detectors[idet]) {
|
||||
// #ifdef EPICS
|
||||
// // cout << "convert angle det " << idet << endl;
|
||||
// if (idet<2)
|
||||
// #endif
|
||||
// p=detectors[idet]->convertAngles(pos);
|
||||
// #ifdef EPICS
|
||||
// else //////////// GOOD ONLY AT THE BEAMLINE!!!!!!!!!!!!!
|
||||
// p=detectors[idet]->convertAngles(0);
|
||||
// #endif
|
||||
// for (int ich=0; ich<detectors[idet]->getTotalNumberOfChannels(); ich++) {
|
||||
// ang[choff+ich]=p[ich];
|
||||
// }
|
||||
// choff+=detectors[idet]->getTotalNumberOfChannels();
|
||||
// delete [] p;
|
||||
// }
|
||||
// }
|
||||
// return ang;
|
||||
// }
|
||||
|
||||
|
||||
int multiSlsDetector::getBadChannelCorrection(int *bad) {
|
||||
|
@ -19,7 +19,6 @@ class slsDetector;
|
||||
|
||||
//#include "sls_detector_defs.h"
|
||||
|
||||
#define MAXDET 100
|
||||
|
||||
|
||||
//using namespace std;
|
||||
@ -137,6 +136,12 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
/** angular conversion file */
|
||||
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 */
|
||||
@ -145,12 +150,18 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
float fineOffset;
|
||||
/** beamline offset (might be a few degrees beacuse of encoder offset - normally it is kept fixed for a long period of time) */
|
||||
float globalOffset;
|
||||
/** bin size for data merging */
|
||||
float binSize;
|
||||
|
||||
|
||||
/** number of positions at which the detector should acquire */
|
||||
int numberOfPositions;
|
||||
/** list of encoder positions at which the detector should acquire */
|
||||
float detPositions[MAXPOS];
|
||||
/** bin size for data merging */
|
||||
float binSize;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** Scans and scripts */
|
||||
@ -274,6 +285,14 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
\returns number of detectors */
|
||||
int getNumberOfDetectors() {return thisMultiDetector->numberOfDetectors;};
|
||||
|
||||
|
||||
|
||||
|
||||
int getNMods();
|
||||
int getChansPerMod(int imod=0);
|
||||
angleConversionConstant *getAngularConversionPointer(int imod=0);
|
||||
|
||||
|
||||
int getTotalNumberOfChannels(){return thisMultiDetector->numberOfChannels;};
|
||||
|
||||
int getMaxNumberOfChannels(){return thisMultiDetector->maxNumberOfChannels;};
|
||||
@ -687,13 +706,12 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
/////////////////////////////////////////////////// virtual int getAngularConversion(int &direction, angleConversionConstant *angconv=NULL);
|
||||
|
||||
|
||||
int setAngularConversion(string fname);
|
||||
|
||||
int readAngularConversion(string fname);
|
||||
int readAngularConversionFile(string fname);
|
||||
|
||||
int writeAngularConversion(string fname);
|
||||
|
||||
float* convertAngles(float pos);
|
||||
// float* convertAngles(float pos);
|
||||
|
||||
|
||||
|
||||
@ -772,10 +790,10 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
/** calcualtes the total number of steps of the acquisition.
|
||||
called when number of frames, number of cycles, number of positions and scan steps change
|
||||
*/
|
||||
int setTotalProgress();
|
||||
/////////////////////////////////////// int setTotalProgress(); ////////////// from slsDetectorUtils!
|
||||
|
||||
/** returns the current progress in % */
|
||||
float getCurrentProgress();
|
||||
////////////////////////////////float getCurrentProgress();////////////// from slsDetectorUtils!
|
||||
|
||||
|
||||
/**
|
||||
@ -966,6 +984,7 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
*/
|
||||
int resetCounterBlock(int startACQ=0);
|
||||
|
||||
int getMoveFlag(int imod);
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -41,12 +41,12 @@ int slsDetector::initSharedMemory(detectorType type, int id) {
|
||||
nd=13; // dacs+adcs
|
||||
break;
|
||||
case EIGER:
|
||||
nch=65535; // one EIGER module
|
||||
nch=65536; // one EIGER half module
|
||||
nm=1; //modules/detector
|
||||
nc=8; //chips
|
||||
nc=4; //chips
|
||||
nd=16; //dacs+adcs
|
||||
default:
|
||||
nch=0; // one EIGER module
|
||||
nch=0; // dum!
|
||||
nm=0; //modules/detector
|
||||
nc=0; //chips
|
||||
nd=0; //dacs+adcs
|
||||
@ -81,9 +81,6 @@ int slsDetector::initSharedMemory(detectorType type, int id) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
shm_id returns -1 is shared memory initialization fails
|
||||
*/
|
||||
@ -111,20 +108,6 @@ int slsDetector::freeSharedMemory() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
slsDetector::slsDetector(int id) :slsDetectorUtils(),
|
||||
thisDetector(NULL),
|
||||
detId(id),
|
||||
@ -480,6 +463,7 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
thisDetector->nModMax[X]=24;
|
||||
thisDetector->nModMax[Y]=1;
|
||||
thisDetector->dynamicRange=24;
|
||||
thisDetector->moveFlag=1;
|
||||
break;
|
||||
case PICASSO:
|
||||
thisDetector->nChans=128;
|
||||
@ -635,36 +619,69 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
cout << "passing pointers" << endl;
|
||||
#endif
|
||||
|
||||
getPointers(&thisDetector->stoppedFlag, \
|
||||
&thisDetector->threadedProcessing, \
|
||||
&thisDetector->actionMask, \
|
||||
thisDetector->actionScript, \
|
||||
thisDetector->actionParameter, \
|
||||
thisDetector->nScanSteps, \
|
||||
thisDetector->scanMode, \
|
||||
thisDetector->scanScript, \
|
||||
thisDetector->scanParameter, \
|
||||
thisDetector->scanSteps, \
|
||||
thisDetector->scanPrecision, \
|
||||
&thisDetector->numberOfPositions, \
|
||||
thisDetector->detPositions, \
|
||||
thisDetector->angConvFile, \
|
||||
&thisDetector->correctionMask, \
|
||||
&thisDetector->binSize, \
|
||||
&thisDetector->fineOffset, \
|
||||
&thisDetector->globalOffset, \
|
||||
&thisDetector->angDirection, \
|
||||
thisDetector->flatFieldDir, \
|
||||
thisDetector->flatFieldFile, \
|
||||
thisDetector->badChanFile, \
|
||||
thisDetector->timerValue, \
|
||||
&thisDetector->currentSettings, \
|
||||
&thisDetector->currentThresholdEV, \
|
||||
thisDetector->filePath, \
|
||||
thisDetector->fileName, \
|
||||
&thisDetector->fileIndex);
|
||||
|
||||
// getPointers(&thisDetector->stoppedFlag, \
|
||||
// &thisDetector->threadedProcessing, \
|
||||
// &thisDetector->actionMask, \
|
||||
// thisDetector->actionScript, \
|
||||
// thisDetector->actionParameter, \
|
||||
// thisDetector->nScanSteps, \
|
||||
// thisDetector->scanMode, \
|
||||
// thisDetector->scanScript, \
|
||||
// thisDetector->scanParameter, \
|
||||
// thisDetector->scanSteps, \
|
||||
// thisDetector->scanPrecision, \
|
||||
// &thisDetector->numberOfPositions, \
|
||||
// thisDetector->detPositions, \
|
||||
// thisDetector->angConvFile, \
|
||||
// &thisDetector->correctionMask, \
|
||||
// &thisDetector->binSize, \
|
||||
// &thisDetector->fineOffset, \
|
||||
// &thisDetector->globalOffset, \
|
||||
// &thisDetector->angDirection, \
|
||||
// thisDetector->flatFieldDir, \
|
||||
// thisDetector->flatFieldFile, \
|
||||
// thisDetector->badChanFile, \
|
||||
// thisDetector->timerValue, \
|
||||
// &thisDetector->currentSettings, \
|
||||
// &thisDetector->currentThresholdEV, \
|
||||
// thisDetector->filePath, \
|
||||
// thisDetector->fileName, \
|
||||
// &thisDetector->fileIndex);
|
||||
|
||||
stoppedFlag=&thisDetector->stoppedFlag;
|
||||
threadedProcessing=&thisDetector->threadedProcessing;
|
||||
actionMask=&thisDetector->actionMask;
|
||||
actionScript=thisDetector->actionScript;
|
||||
actionParameter=thisDetector->actionParameter;
|
||||
nScanSteps=thisDetector->nScanSteps;
|
||||
scanMode=thisDetector->scanMode;
|
||||
scanScript=thisDetector->scanScript;
|
||||
scanParameter=thisDetector->scanParameter;
|
||||
scanSteps=thisDetector->scanSteps;
|
||||
scanPrecision=thisDetector->scanPrecision;
|
||||
numberOfPositions=&thisDetector->numberOfPositions;
|
||||
detPositions=thisDetector->detPositions;
|
||||
angConvFile=thisDetector->angConvFile;
|
||||
correctionMask=&thisDetector->correctionMask;
|
||||
binSize=&thisDetector->binSize;
|
||||
fineOffset=&thisDetector->fineOffset;
|
||||
globalOffset=&thisDetector->globalOffset;
|
||||
angDirection=&thisDetector->angDirection;
|
||||
flatFieldDir=thisDetector->flatFieldDir;
|
||||
flatFieldFile=thisDetector->flatFieldFile;
|
||||
badChanFile=thisDetector->badChanFile;
|
||||
timerValue=thisDetector->timerValue;
|
||||
currentSettings=&thisDetector->currentSettings;
|
||||
currentThresholdEV=&thisDetector->currentThresholdEV;
|
||||
filePath=thisDetector->filePath;
|
||||
fileName=thisDetector->fileName;
|
||||
fileIndex=&thisDetector->fileIndex;
|
||||
moveFlag=&thisDetector->moveFlag;
|
||||
|
||||
settingsFile=thisDetector->settingsFile;
|
||||
|
||||
// setAngularConversionPointer(thisDetector->angOff,&thisDetector->nMods, thisDetector->nChans*thisDetector->nChips);
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "done" << endl;
|
||||
@ -741,17 +758,55 @@ int slsDetector::initializeDetectorStructure() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
slsDetectorDefs::sls_detector_module* slsDetector::createModule() {
|
||||
slsDetectorDefs::sls_detector_module* slsDetector::createModule(detectorType t) {
|
||||
|
||||
sls_detector_module *myMod=(sls_detector_module*)malloc(sizeof(sls_detector_module));
|
||||
float *dacs=new float[thisDetector->nDacs];
|
||||
float *adcs=new float[thisDetector->nAdcs];
|
||||
int *chipregs=new int[thisDetector->nChips];
|
||||
int *chanregs=new int[thisDetector->nChips*thisDetector->nChans];
|
||||
myMod->ndac=thisDetector->nDacs;
|
||||
myMod->nadc=thisDetector->nAdcs;
|
||||
myMod->nchip=thisDetector->nChips;
|
||||
myMod->nchan=thisDetector->nChips*thisDetector->nChans;
|
||||
|
||||
|
||||
int nch, nm, nc, nd, na=0;
|
||||
|
||||
switch(t) {
|
||||
case MYTHEN:
|
||||
nch=128; // complete mythen system
|
||||
nm=24;
|
||||
nc=10;
|
||||
nd=6; // dacs
|
||||
break;
|
||||
case PICASSO:
|
||||
nch=128; // complete mythen system
|
||||
nm=24;
|
||||
nc=12;
|
||||
nd=6; // dacs+adcs
|
||||
break;
|
||||
case GOTTHARD:
|
||||
nch=128;
|
||||
nm=1;
|
||||
nc=10;
|
||||
nd=8; // dacs+adcs
|
||||
na=5;
|
||||
break;
|
||||
case EIGER:
|
||||
nch=65536; // one EIGER half module
|
||||
nm=1; //modules/detector
|
||||
nc=4; //chips
|
||||
nd=16; //dacs
|
||||
na=16;
|
||||
default:
|
||||
nch=0; // dum!
|
||||
nm=0; //modules/detector
|
||||
nc=0; //chips
|
||||
nd=0; //dacs+adcs
|
||||
na=0;
|
||||
}
|
||||
|
||||
float *dacs=new float[nd];
|
||||
float *adcs=new float[na];
|
||||
int *chipregs=new int[nc];
|
||||
int *chanregs=new int[nch*nc];
|
||||
myMod->ndac=nd;
|
||||
myMod->nadc=na;
|
||||
myMod->nchip=nc;
|
||||
myMod->nchan=nch*nc;
|
||||
|
||||
myMod->dacs=dacs;
|
||||
myMod->adcs=adcs;
|
||||
@ -2727,7 +2782,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
#ifdef VERBOSE
|
||||
cout << "the settings name is "<<settingsfname << endl;
|
||||
#endif
|
||||
if (readSettingsFile(settingsfname,myMod)) {
|
||||
if (readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod)) {
|
||||
calfname=oscfn.str();
|
||||
#ifdef VERBOSE
|
||||
cout << calfname << endl;
|
||||
@ -2750,7 +2805,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
cout << settingsfname << endl;
|
||||
cout << calfname << endl;
|
||||
#endif
|
||||
if (readSettingsFile(settingsfname,myMod)) {
|
||||
if (readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod)) {
|
||||
calfname=oscfn.str();
|
||||
readCalibrationFile(calfname,myMod->gain, myMod->offset);
|
||||
setModule(*myMod);
|
||||
@ -4499,29 +4554,6 @@ int slsDetector::configureMAC(){
|
||||
|
||||
//Corrections
|
||||
|
||||
int slsDetector::setAngularConversion(string fname) {
|
||||
if (fname=="") {
|
||||
thisDetector->correctionMask&=~(1<< ANGULAR_CONVERSION);
|
||||
//strcpy(thisDetector->angConvFile,"none");
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Unsetting angular conversion" << std::endl;
|
||||
#endif
|
||||
} else {
|
||||
if (fname=="default") {
|
||||
fname=string(thisDetector->angConvFile);
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Setting angular conversion to" << fname << std:: endl;
|
||||
#endif
|
||||
if (readAngularConversion(fname)>=0) {
|
||||
thisDetector->correctionMask|=(1<< ANGULAR_CONVERSION);
|
||||
strcpy(thisDetector->angConvFile,fname.c_str());
|
||||
}
|
||||
}
|
||||
return thisDetector->correctionMask&(1<< ANGULAR_CONVERSION);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -4550,7 +4582,7 @@ int slsDetector::getAngularConversion(int &direction, angleConversionConstant *
|
||||
|
||||
|
||||
|
||||
int slsDetector::readAngularConversion(string fname) {
|
||||
int slsDetector::readAngularConversionFile(string fname) {
|
||||
|
||||
return readAngularConversion(fname,thisDetector->nModsMax, thisDetector->angOff);
|
||||
|
||||
@ -4573,24 +4605,23 @@ int slsDetector::getAngularConversion(int &direction, angleConversionConstant *
|
||||
|
||||
|
||||
|
||||
float* slsDetector::convertAngles(float pos) {
|
||||
int imod;
|
||||
float *ang=new float[thisDetector->nChans*thisDetector->nChips*thisDetector->nMods];
|
||||
for (int ip=0; ip<thisDetector->nChans*thisDetector->nChips*thisDetector->nMods; ip++) {
|
||||
imod=ip/(thisDetector->nChans*thisDetector->nChips);
|
||||
ang[ip]=angle(ip%(thisDetector->nChans*thisDetector->nChips),\
|
||||
pos, \
|
||||
thisDetector->fineOffset+thisDetector->globalOffset, \
|
||||
thisDetector->angOff[imod].r_conversion, \
|
||||
thisDetector->angOff[imod].center, \
|
||||
thisDetector->angOff[imod].offset, \
|
||||
thisDetector->angOff[imod].tilt, \
|
||||
thisDetector->angDirection
|
||||
);
|
||||
// cout << imod << " " << thisDetector->angOff[imod].offset << " " << ang[ip] << endl;
|
||||
}
|
||||
return ang;
|
||||
}
|
||||
// float* slsDetector::convertAngles(float pos) {
|
||||
// int imod;
|
||||
// float *ang=new float[thisDetector->nChans*thisDetector->nChips*thisDetector->nMods];
|
||||
// for (int ip=0; ip<thisDetector->nChans*thisDetector->nChips*thisDetector->nMods; ip++) {
|
||||
// imod=ip/(thisDetector->nChans*thisDetector->nChips);
|
||||
// ang[ip]=angle(ip%(thisDetector->nChans*thisDetector->nChips),\
|
||||
// pos, \
|
||||
// thisDetector->fineOffset+thisDetector->globalOffset, \
|
||||
// thisDetector->angOff[imod].r_conversion, \
|
||||
// thisDetector->angOff[imod].center, \
|
||||
// thisDetector->angOff[imod].offset, \
|
||||
// thisDetector->angOff[imod].tilt, \
|
||||
// thisDetector->angDirection
|
||||
// );
|
||||
// }
|
||||
// return ang;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
@ -5191,293 +5222,9 @@ int slsDetector::retrieveDetectorSetup(string fname1, int level){
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* I/O */
|
||||
|
||||
|
||||
slsDetectorDefs::sls_detector_module* slsDetector::readSettingsFile(string fname, sls_detector_module *myMod){
|
||||
|
||||
int nflag=0;
|
||||
|
||||
|
||||
if (myMod==NULL) {
|
||||
myMod=createModule();
|
||||
nflag=1;
|
||||
}
|
||||
|
||||
string myfname;
|
||||
string str;
|
||||
ifstream infile;
|
||||
ostringstream oss;
|
||||
int iline=0;
|
||||
// string names[]={"Vtrim", "Vthresh", "Rgsh1", "Rgsh2", "Rgpr", "Vcal", "outBuffEnable"};
|
||||
string sargname;
|
||||
int ival;
|
||||
int ichan=0, ichip=0, idac=0;
|
||||
|
||||
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "reading settings file for module number "<< myMod->module << std::endl;
|
||||
#endif
|
||||
myfname=fname;
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "file name is "<< myfname << std::endl;
|
||||
#endif
|
||||
infile.open(myfname.c_str(), ios_base::in);
|
||||
if (infile.is_open()) {
|
||||
|
||||
|
||||
switch (thisDetector->myDetectorType) {
|
||||
|
||||
case MYTHEN:
|
||||
|
||||
for (int iarg=0; iarg<thisDetector->nDacs; iarg++) {
|
||||
getline(infile,str);
|
||||
iline++;
|
||||
istringstream ssstr(str);
|
||||
ssstr >> sargname >> ival;
|
||||
#ifdef VERBOSE
|
||||
std::cout<< sargname << " dac nr. " << idac << " is " << ival << std::endl;
|
||||
#endif
|
||||
myMod->dacs[idac]=ival;
|
||||
idac++;
|
||||
}
|
||||
for (ichip=0; ichip<thisDetector->nChips; ichip++) {
|
||||
getline(infile,str);
|
||||
iline++;
|
||||
#ifdef VERBOSE
|
||||
// std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
ssstr >> sargname >> ival;
|
||||
#ifdef VERBOSE
|
||||
// std::cout<< "chip " << ichip << " " << sargname << " is " << ival << std::endl;
|
||||
#endif
|
||||
|
||||
myMod->chipregs[ichip]=ival;
|
||||
for (ichan=0; ichan<thisDetector->nChans; ichan++) {
|
||||
getline(infile,str);
|
||||
#ifdef VERBOSE
|
||||
// std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
|
||||
#ifdef VERBOSE
|
||||
// std::cout<< "channel " << ichan+ichip*thisDetector->nChans <<" iline " << iline<< std::endl;
|
||||
#endif
|
||||
iline++;
|
||||
myMod->chanregs[ichip*thisDetector->nChans+ichan]=0;
|
||||
for (int iarg=0; iarg<6 ; iarg++) {
|
||||
ssstr >> ival;
|
||||
//if (ssstr.good()) {
|
||||
switch (iarg) {
|
||||
case 0:
|
||||
#ifdef VERBOSE
|
||||
// std::cout<< "trimbits " << ival ;
|
||||
#endif
|
||||
myMod->chanregs[ichip*thisDetector->nChans+ichan]|=ival&0x3f;
|
||||
break;
|
||||
case 1:
|
||||
#ifdef VERBOSE
|
||||
//std::cout<< " compen " << ival ;
|
||||
#endif
|
||||
myMod->chanregs[ichip*thisDetector->nChans+ichan]|=ival<<9;
|
||||
break;
|
||||
case 2:
|
||||
#ifdef VERBOSE
|
||||
//std::cout<< " anen " << ival ;
|
||||
#endif
|
||||
myMod->chanregs[ichip*thisDetector->nChans+ichan]|=ival<<8;
|
||||
break;
|
||||
case 3:
|
||||
#ifdef VERBOSE
|
||||
//std::cout<< " calen " << ival ;
|
||||
#endif
|
||||
myMod->chanregs[ichip*thisDetector->nChans+ichan]|=ival<<7;
|
||||
break;
|
||||
case 4:
|
||||
#ifdef VERBOSE
|
||||
//std::cout<< " outcomp " << ival ;
|
||||
#endif
|
||||
myMod->chanregs[ichip*thisDetector->nChans+ichan]|=ival<<10;
|
||||
break;
|
||||
case 5:
|
||||
#ifdef VERBOSE
|
||||
//std::cout<< " counts " << ival << std::endl;
|
||||
#endif
|
||||
myMod->chanregs[ichip*thisDetector->nChans+ichan]|=ival<<11;
|
||||
break;
|
||||
default:
|
||||
std::cout<< " too many columns" << std::endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "read " << ichan*ichip << " channels" <<std::endl;
|
||||
#endif
|
||||
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case GOTTHARD:
|
||||
//---------------dacs---------------
|
||||
for (int iarg=0; iarg<thisDetector->nDacs; iarg++) {
|
||||
getline(infile,str);
|
||||
iline++;
|
||||
#ifdef VERBOSE
|
||||
std::cout<< str << std::endl;
|
||||
#endif
|
||||
istringstream ssstr(str);
|
||||
ssstr >> sargname >> ival;
|
||||
#ifdef VERBOSE
|
||||
std::cout<< sargname << " dac nr. " << idac << " is " << ival << std::endl;
|
||||
#endif
|
||||
myMod->dacs[idac]=ival;
|
||||
idac++;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
std::cout<< "Unknown detector type - don't know how to read file" << myfname << std::endl;
|
||||
infile.close();
|
||||
deleteModule(myMod);
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
infile.close();
|
||||
strcpy(thisDetector->settingsFile,fname.c_str());
|
||||
return myMod;
|
||||
|
||||
} else {
|
||||
std::cout<< "could not open settings file " << myfname << std::endl;
|
||||
|
||||
if (nflag)
|
||||
deleteModule(myMod);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
int slsDetector::writeSettingsFile(string fname, sls_detector_module mod){
|
||||
|
||||
ofstream outfile;
|
||||
|
||||
string names[100];
|
||||
int id=0;
|
||||
switch (thisDetector->myDetectorType) {
|
||||
case MYTHEN:
|
||||
names[id++]="Vtrim";
|
||||
names[id++]="Vthresh";
|
||||
names[id++]="Rgsh1";
|
||||
names[id++]="Rgsh2";
|
||||
names[id++]="Rgpr";
|
||||
names[id++]="Vcal";
|
||||
names[id++]="outBuffEnable";
|
||||
break;
|
||||
case GOTTHARD:
|
||||
names[id++]="Vref";
|
||||
names[id++]="VcascN";
|
||||
names[id++]="VcascP";
|
||||
names[id++]="Vout";
|
||||
names[id++]="Vcasc";
|
||||
names[id++]="Vin";
|
||||
names[id++]="Vref_comp";
|
||||
names[id++]="Vib_test";
|
||||
names[id++]="config";
|
||||
names[id++]="HV";
|
||||
names[id++]="macaddress";
|
||||
names[id++]="ipaddress";
|
||||
break;
|
||||
default:
|
||||
cout << "Unknown detector type - unknown format for settings file" << endl;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
int iv, ichan, ichip;
|
||||
int iv1, idac;
|
||||
int nb;
|
||||
outfile.open(fname.c_str(), ios_base::out);
|
||||
|
||||
if (outfile.is_open()) {
|
||||
for (idac=0; idac<mod.ndac; idac++) {
|
||||
iv=(int)mod.dacs[idac];
|
||||
outfile << names[idac] << " " << iv << std::endl;
|
||||
}
|
||||
|
||||
for (ichip=0; ichip<mod.nchip; ichip++) {
|
||||
iv1=mod.chipregs[ichip]&1;
|
||||
outfile << names[idac] << " " << iv1 << std::endl;
|
||||
for (ichan=0; ichan<thisDetector->nChans; ichan++) {
|
||||
iv=mod.chanregs[ichip*thisDetector->nChans+ichan];
|
||||
iv1= (iv&0x3f);
|
||||
outfile <<iv1 << " ";
|
||||
nb=9;
|
||||
iv1=((iv&(1<<nb))>>nb);
|
||||
outfile << iv1 << " ";
|
||||
nb=8;
|
||||
iv1=((iv&(1<<nb))>>nb);
|
||||
outfile << iv1 << " ";
|
||||
nb=7;
|
||||
iv1=((iv&(1<<nb))>>nb);
|
||||
outfile <<iv1 << " ";
|
||||
nb=10;
|
||||
iv1=((iv&(1<<nb))>>nb);
|
||||
outfile << iv1 << " ";
|
||||
nb=11;
|
||||
iv1= ((iv&0xfffff800)>>nb);
|
||||
outfile << iv1 << std::endl;
|
||||
}
|
||||
}
|
||||
outfile.close();
|
||||
return OK;
|
||||
} else {
|
||||
std::cout<< "could not open SETTINGS file " << fname << std::endl;
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
int slsDetector::writeSettingsFile(string fname, int imod){
|
||||
|
||||
return writeSettingsFile(fname,detectorModules[imod]);
|
||||
return writeSettingsFile(fname,thisDetector->myDetectorType, detectorModules[imod]);
|
||||
|
||||
};
|
||||
|
||||
@ -5500,7 +5247,7 @@ int slsDetector::loadSettingsFile(string fname, int imod) {
|
||||
ostfn << fname << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im);
|
||||
fn=ostfn.str();
|
||||
}
|
||||
myMod=readSettingsFile(fn);
|
||||
myMod=readSettingsFile(fn, thisDetector->myDetectorType);
|
||||
if (myMod) {
|
||||
myMod->module=im;
|
||||
setModule(*myMod);
|
||||
@ -5527,7 +5274,7 @@ int slsDetector::saveSettingsFile(string fname, int imod) {
|
||||
ostringstream ostfn;
|
||||
ostfn << fname << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER, im);
|
||||
if ((myMod=getModule(im))) {
|
||||
ret=writeSettingsFile(ostfn.str(),*myMod);
|
||||
ret=writeSettingsFile(ostfn.str(), thisDetector->myDetectorType, *myMod);
|
||||
deleteModule(myMod);
|
||||
}
|
||||
}
|
||||
|
@ -5,17 +5,9 @@
|
||||
#define SLS_DETECTOR_H
|
||||
|
||||
|
||||
class MySocketTCP;
|
||||
|
||||
#include "slsDetectorUtils.h"
|
||||
#include "MySocketTCP.h"
|
||||
//#include "slsDetectorCommand.h"
|
||||
|
||||
|
||||
//enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, MAX_ACTIONS};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//using namespace std;
|
||||
@ -54,17 +46,20 @@ Then in your software you should use the class related to the detector you want
|
||||
* @short This is the base class for all SLS detector functionalities
|
||||
* @author Anna Bergamaschi
|
||||
* @version 0.1alpha
|
||||
|
||||
|
||||
*/
|
||||
|
||||
class slsDetector : public slsDetectorUtils {
|
||||
#define NMODMAXX 24
|
||||
#define NMODMAXY 24
|
||||
#define NCHIPSMAX 10
|
||||
#define NCHANSMAX 65536
|
||||
#define NDACSMAX 16
|
||||
|
||||
class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
|
||||
|
||||
|
||||
public:
|
||||
|
||||
|
||||
/* /\** online flags enum \sa setOnline*\/ */
|
||||
/* enum {GET_ONLINE_FLAG=-1, /\**< returns wether the detector is in online or offline state *\/ */
|
||||
/* OFFLINE_FLAG=0, /\**< detector in offline state (i.e. no communication to the detector - using only local structure - no data acquisition possible!) *\/ */
|
||||
@ -180,27 +175,32 @@ typedef struct sharedSlsDetector {
|
||||
/** file with the angular conversion factors */
|
||||
char angConvFile[MAX_STR_LENGTH];
|
||||
/** array of angular conversion constants for each module \see ::angleConversionConstant */
|
||||
angleConversionConstant angOff[MAXMODS];
|
||||
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) */
|
||||
float fineOffset;
|
||||
int angDirection;
|
||||
/** beamline fine offset (of the order of mdeg, might be adjusted for each measurements) */
|
||||
float fineOffset;
|
||||
/** beamline offset (might be a few degrees beacuse of encoder offset - normally it is kept fixed for a long period of time) */
|
||||
float globalOffset;
|
||||
float globalOffset;
|
||||
/** number of positions at which the detector should acquire */
|
||||
int numberOfPositions;
|
||||
int numberOfPositions;
|
||||
/** list of encoder positions at which the detector should acquire */
|
||||
float detPositions[MAXPOS];
|
||||
float detPositions[MAXPOS];
|
||||
/** bin size for data merging */
|
||||
float binSize;
|
||||
/** add encoder value flag (i.e. wether the detector is moving - 1 - or stationary - 0) */
|
||||
int moveFlag;
|
||||
|
||||
|
||||
/* infos necessary for the readout to determine the size of the data */
|
||||
/** number of rois defined */
|
||||
int nROI;
|
||||
/** list of rois */
|
||||
ROI roiLimits[MAX_ROIS];
|
||||
/** readout flags */
|
||||
readOutFlags roFlags;
|
||||
|
||||
/** number of rois defined */
|
||||
int nROI;
|
||||
/** list of rois */
|
||||
ROI roiLimits[MAX_ROIS];
|
||||
|
||||
/** readout flags */
|
||||
readOutFlags roFlags;
|
||||
|
||||
|
||||
/* detector setup - not needed */
|
||||
@ -268,17 +268,19 @@ typedef struct sharedSlsDetector {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
using slsDetectorUtils::getDetectorType;
|
||||
|
||||
using slsDetectorUtils::flatFieldCorrect;
|
||||
using slsDetectorUtils::rateCorrect;
|
||||
using slsDetectorUtils::setBadChannelCorrection;
|
||||
using postProcessing::flatFieldCorrect;
|
||||
using postProcessing::rateCorrect;
|
||||
using postProcessing::setBadChannelCorrection;
|
||||
|
||||
using angularConversion::readAngularConversion;
|
||||
using angularConversion::writeAngularConversion;
|
||||
|
||||
using slsDetectorUtils::getAngularConversion;
|
||||
|
||||
|
||||
|
||||
using slsDetectorUtils::readAngularConversion;
|
||||
using slsDetectorUtils::writeAngularConversion;
|
||||
// using slsDetectorBase::getDataFromDetector;
|
||||
|
||||
|
||||
|
||||
@ -487,40 +489,17 @@ typedef struct sharedSlsDetector {
|
||||
*/
|
||||
int setTrimEn(int nen, int *en=NULL) {if (en) {for (int ien=0; ien<nen; ien++) thisDetector->trimEnergies[ien]=en[ien]; thisDetector->nTrimEn=nen;} return (thisDetector->nTrimEn);};
|
||||
|
||||
/**
|
||||
Pure virtual function
|
||||
reads a trim/settings file
|
||||
\param fname name of the file to be read
|
||||
\param myMod pointer to the module structure which has to be set. <BR> If it is NULL a new module structure will be created
|
||||
\returns the pointer to myMod or NULL if reading the file failed
|
||||
\sa mythenDetector::readSettingsFile
|
||||
*/
|
||||
|
||||
sls_detector_module* readSettingsFile(string fname, sls_detector_module* myMod=NULL);
|
||||
//virtual sls_detector_module* readSettingsFile(string fname, sls_detector_module* myMod=NULL);
|
||||
|
||||
/**
|
||||
Pure virtual function
|
||||
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
|
||||
\returns OK or FAIL if the file could not be written
|
||||
|
||||
\sa ::sls_detector_module mythenDetector::writeSettingsFile(string, sls_detector_module)
|
||||
*/
|
||||
int writeSettingsFile(string fname, sls_detector_module mod);
|
||||
|
||||
|
||||
//virtual int writeSettingsFile(string fname, sls_detector_module mod);
|
||||
|
||||
/**
|
||||
Pure virtual function
|
||||
writes a trim/settings file for module number imod - the values will be read from the current detector structure
|
||||
\param fname name of the file to be written
|
||||
\param imod module number
|
||||
\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(string fname, int imod);
|
||||
|
||||
|
||||
@ -560,7 +539,7 @@ typedef struct sharedSlsDetector {
|
||||
\param fname file to be read
|
||||
\sa angleConversionConstant mythenDetector::readAngularConversion
|
||||
*/
|
||||
int readAngularConversion(string fname="");
|
||||
int readAngularConversionFile(string fname="");
|
||||
|
||||
|
||||
/**
|
||||
@ -603,6 +582,8 @@ typedef struct sharedSlsDetector {
|
||||
|
||||
/** Returns the number of modules (without connecting to the detector) */
|
||||
int getNMods(){return thisDetector->nMods;}; //
|
||||
|
||||
int getChansPerMod(int imod=0){return thisDetector->nChans*thisDetector->nChips;};
|
||||
|
||||
/** Returns the number of modules (without connecting to the detector) */
|
||||
int getMaxMods(){return thisDetector->nModsMax;}; //
|
||||
@ -1161,14 +1142,7 @@ typedef struct sharedSlsDetector {
|
||||
*/
|
||||
int getBadChannelCorrection(int *bad=NULL);
|
||||
|
||||
|
||||
/**
|
||||
set angular conversion
|
||||
\param fname file with angular conversion constants ("" disable)
|
||||
\returns 0 if angular conversion disabled, >0 otherwise
|
||||
\sa mythenDetector::setAngularConversion
|
||||
*/
|
||||
int setAngularConversion(string fname="");
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
get angular conversion
|
||||
@ -1179,7 +1153,7 @@ typedef struct sharedSlsDetector {
|
||||
*/
|
||||
int getAngularConversion(int &direction, angleConversionConstant *angconv=NULL) ;
|
||||
|
||||
|
||||
angleConversionConstant *getAngularConversionPointer(int imod=0) {return &thisDetector->angOff[imod];};
|
||||
|
||||
|
||||
|
||||
@ -1218,43 +1192,43 @@ typedef struct sharedSlsDetector {
|
||||
int rateCorrect(float* datain, float *errin, float* dataout, float *errout);
|
||||
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
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
|
||||
\sa mythenDetector::resetMerging
|
||||
*/
|
||||
/* /\** */
|
||||
/* pure virtual function */
|
||||
/* 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 */
|
||||
/* \sa mythenDetector::resetMerging */
|
||||
/* *\/ */
|
||||
|
||||
int resetMerging(float *mp, float *mv,float *me, int *mm);
|
||||
/* int resetMerging(float *mp, float *mv,float *me, int *mm); */
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
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
|
||||
\sa mythenDetector::addToMerging
|
||||
*/
|
||||
int addToMerging(float *p1, float *v1, float *e1, float *mp, float *mv,float *me, int *mm);
|
||||
/* /\** */
|
||||
/* pure virtual function */
|
||||
/* 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 */
|
||||
/* \sa mythenDetector::addToMerging */
|
||||
/* *\/ */
|
||||
/* int addToMerging(float *p1, float *v1, float *e1, float *mp, float *mv,float *me, int *mm); */
|
||||
|
||||
/** pure virtual function
|
||||
calculates the "final" positions, data value and errors for the emrged 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)
|
||||
\sa mythenDetector::finalizeMerging
|
||||
*/
|
||||
int finalizeMerging(float *mp, float *mv,float *me, int *mm);
|
||||
/* /\** pure virtual function */
|
||||
/* calculates the "final" positions, data value and errors for the emrged 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) */
|
||||
/* \sa mythenDetector::finalizeMerging */
|
||||
/* *\/ */
|
||||
/* int finalizeMerging(float *mp, float *mv,float *me, int *mm); */
|
||||
|
||||
/**
|
||||
turns off server
|
||||
@ -1266,7 +1240,15 @@ typedef struct sharedSlsDetector {
|
||||
\returns myMod the pointer to the allocate dmemory location
|
||||
|
||||
*/
|
||||
sls_detector_module* createModule();
|
||||
sls_detector_module* createModule(){return createModule(thisDetector->myDetectorType);};
|
||||
|
||||
|
||||
/** Allocates the memory for a sls_detector_module structure and initializes it
|
||||
\returns myMod the pointer to the allocate dmemory location
|
||||
|
||||
*/
|
||||
sls_detector_module* createModule(detectorType myDetectorType);
|
||||
|
||||
/** frees the memory for a sls_detector_module structure
|
||||
\param myMod the pointer to the memory to be freed
|
||||
|
||||
@ -1284,7 +1266,7 @@ typedef struct sharedSlsDetector {
|
||||
float getCurrentProgress();
|
||||
|
||||
|
||||
float* convertAngles(float pos);
|
||||
// float* convertAngles(float pos);
|
||||
|
||||
|
||||
|
||||
@ -1376,6 +1358,8 @@ typedef struct sharedSlsDetector {
|
||||
int resetCounterBlock(int startACQ=0);
|
||||
|
||||
|
||||
int getMoveFlag(int imod){if (moveFlag) return *moveFlag; else return 1;};
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
401
slsDetectorSoftware/slsDetector/slsDetectorActions.cpp
Normal file
401
slsDetectorSoftware/slsDetector/slsDetectorActions.cpp
Normal file
@ -0,0 +1,401 @@
|
||||
#include "slsDetectorActions.h"
|
||||
|
||||
|
||||
/**
|
||||
set action
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, MAX_ACTIONS}
|
||||
\param fname for script ("" disable but leaves script unchanged, "none" disables and overwrites)
|
||||
\returns 0 if action disabled, >0 otherwise
|
||||
*/
|
||||
int slsDetectorActions::setAction(int iaction, string fname, string par) {
|
||||
|
||||
int am;
|
||||
|
||||
|
||||
if (iaction>=0 && iaction<MAX_ACTIONS) {
|
||||
|
||||
if (fname=="") {
|
||||
am=0;
|
||||
} else if (fname=="none") {
|
||||
am=0;
|
||||
strcpy(actionScript[iaction],fname.c_str());
|
||||
} else {
|
||||
strcpy(actionScript[iaction],fname.c_str());
|
||||
am=1;
|
||||
}
|
||||
|
||||
if (par!="") {
|
||||
strcpy(actionParameter[iaction],par.c_str());
|
||||
}
|
||||
|
||||
if (am) {
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << iaction << " " << hex << (1 << iaction) << " " << *actionMask << dec;
|
||||
#endif
|
||||
|
||||
*actionMask |= (1 << iaction);
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << " set " << hex << *actionMask << dec << endl;
|
||||
#endif
|
||||
|
||||
} else {
|
||||
#ifdef VERBOSE
|
||||
cout << iaction << " " << hex << *actionMask << dec;
|
||||
#endif
|
||||
|
||||
*actionMask &= ~(1 << iaction);
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << " unset " << hex << *actionMask << dec << endl;
|
||||
#endif
|
||||
}
|
||||
#ifdef VERBOSE
|
||||
cout << iaction << " Action mask set to " << hex << *actionMask << dec << endl;
|
||||
#endif
|
||||
|
||||
return am;
|
||||
} else
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
int slsDetectorActions::setActionScript(int iaction, string fname) {
|
||||
#ifdef VERBOSE
|
||||
|
||||
#endif
|
||||
return setAction(iaction,fname,"");
|
||||
}
|
||||
|
||||
|
||||
|
||||
int slsDetectorActions::setActionParameter(int iaction, string par) {
|
||||
int am;
|
||||
|
||||
if (iaction>=0 && iaction<MAX_ACTIONS) {
|
||||
am= 1& ( (*actionMask) << iaction);
|
||||
|
||||
if (par!="") {
|
||||
strcpy(actionParameter[iaction],par.c_str());
|
||||
}
|
||||
|
||||
if ((*actionMask) & (1 << iaction))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
} else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
returns action script
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action script
|
||||
*/
|
||||
string slsDetectorActions::getActionScript(int iaction){
|
||||
if (iaction>=0 && iaction<MAX_ACTIONS)
|
||||
return string(actionScript[iaction]);
|
||||
else
|
||||
return string("wrong index");
|
||||
};
|
||||
|
||||
/**
|
||||
returns action parameter
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action parameter
|
||||
*/
|
||||
string slsDetectorActions::getActionParameter(int iaction){
|
||||
if (iaction>=0 && iaction<MAX_ACTIONS)
|
||||
return string(actionParameter[iaction]);
|
||||
else
|
||||
return string("wrong index");
|
||||
}
|
||||
|
||||
/**
|
||||
returns action mode
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action mode
|
||||
*/
|
||||
int slsDetectorActions::getActionMode(int iaction){
|
||||
if (iaction>=0 && iaction<MAX_ACTIONS) {
|
||||
|
||||
if ((*actionMask) & (1 << iaction))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
} else {
|
||||
#ifdef VERBOSE
|
||||
cout << "slsDetetctor : wrong action index " << iaction << endl;
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
set scan
|
||||
\param index of the scan (0,1)
|
||||
\param fname for script ("" disable)
|
||||
\returns 0 if scan disabled, >0 otherwise
|
||||
*/
|
||||
int slsDetectorActions::setScan(int iscan, string script, int nvalues, float *values, string par, int precision) {
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
|
||||
if (script=="") {
|
||||
scanMode[iscan]=0;
|
||||
} else {
|
||||
strcpy(scanScript[iscan],script.c_str());
|
||||
if (script=="none") {
|
||||
scanMode[iscan]=0;
|
||||
} else if (script=="energy") {
|
||||
scanMode[iscan]=1;
|
||||
} else if (script=="threshold") {
|
||||
scanMode[iscan]=2;
|
||||
} else if (script=="trimbits") {
|
||||
scanMode[iscan]=3;
|
||||
} else {
|
||||
scanMode[iscan]=4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (par!="")
|
||||
strcpy(scanParameter[iscan],par.c_str());
|
||||
|
||||
if (nvalues>=0) {
|
||||
if (nvalues==0)
|
||||
scanMode[iscan]=0;
|
||||
else {
|
||||
nScanSteps[iscan]=nvalues;
|
||||
if (nvalues>MAX_SCAN_STEPS)
|
||||
nScanSteps[iscan]=MAX_SCAN_STEPS;
|
||||
}
|
||||
}
|
||||
|
||||
if (values && scanMode[iscan]>0 ) {
|
||||
for (int iv=0; iv<nScanSteps[iscan]; iv++) {
|
||||
scanSteps[iscan][iv]=values[iv];
|
||||
}
|
||||
}
|
||||
|
||||
if (precision>=0)
|
||||
scanPrecision[iscan]=precision;
|
||||
|
||||
if (scanMode[iscan]>0){
|
||||
*actionMask |= 1<< (iscan+MAX_ACTIONS);
|
||||
} else {
|
||||
*actionMask &= ~(1 << (iscan+MAX_ACTIONS));
|
||||
}
|
||||
|
||||
|
||||
|
||||
setTotalProgress();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return scanMode[iscan];
|
||||
} else
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
int slsDetectorActions::setScanScript(int iscan, string script) {
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
if (script=="") {
|
||||
scanMode[iscan]=0;
|
||||
} else {
|
||||
strcpy(scanScript[iscan],script.c_str());
|
||||
if (script=="none") {
|
||||
scanMode[iscan]=0;
|
||||
} else if (script=="energy") {
|
||||
scanMode[iscan]=1;
|
||||
} else if (script=="threshold") {
|
||||
scanMode[iscan]=2;
|
||||
} else if (script=="trimbits") {
|
||||
scanMode[iscan]=3;
|
||||
} else {
|
||||
scanMode[iscan]=4;
|
||||
}
|
||||
}
|
||||
|
||||
if (scanMode[iscan]>0){
|
||||
*actionMask |= (1 << (iscan+MAX_ACTIONS));
|
||||
} else {
|
||||
*actionMask &= ~(1 << (iscan+MAX_ACTIONS));
|
||||
}
|
||||
|
||||
setTotalProgress();
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "Action mask is " << hex << actionMask << dec << endl;
|
||||
#endif
|
||||
return scanMode[iscan];
|
||||
} else
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int slsDetectorActions::setScanParameter(int iscan, string par) {
|
||||
|
||||
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
if (par!="")
|
||||
strcpy(scanParameter[iscan],par.c_str());
|
||||
return scanMode[iscan];
|
||||
} else
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int slsDetectorActions::setScanPrecision(int iscan, int precision) {
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
if (precision>=0)
|
||||
scanPrecision[iscan]=precision;
|
||||
return scanMode[iscan];
|
||||
} else
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
int slsDetectorActions::setScanSteps(int iscan, int nvalues, float *values) {
|
||||
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
|
||||
if (nvalues>=0) {
|
||||
if (nvalues==0)
|
||||
scanMode[iscan]=0;
|
||||
else {
|
||||
nScanSteps[iscan]=nvalues;
|
||||
if (nvalues>MAX_SCAN_STEPS)
|
||||
nScanSteps[iscan]=MAX_SCAN_STEPS;
|
||||
}
|
||||
}
|
||||
|
||||
if (values) {
|
||||
for (int iv=0; iv<nScanSteps[iscan]; iv++) {
|
||||
scanSteps[iscan][iv]=values[iv];
|
||||
}
|
||||
}
|
||||
|
||||
if (scanMode[iscan]>0){
|
||||
*actionMask |= (1 << (iscan+MAX_ACTIONS));
|
||||
} else {
|
||||
*actionMask &= ~(1 << (iscan+MAX_ACTIONS));
|
||||
}
|
||||
|
||||
#ifdef VERBOSE
|
||||
cout << "Action mask is " << hex << actionMask << dec << endl;
|
||||
#endif
|
||||
setTotalProgress();
|
||||
|
||||
|
||||
|
||||
|
||||
return scanMode[iscan];
|
||||
|
||||
|
||||
} else
|
||||
return -1;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
returns scan script
|
||||
\param iscan can be (0,1)
|
||||
\returns scan script
|
||||
*/
|
||||
string slsDetectorActions::getScanScript(int iscan){
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
if (scanMode[iscan])
|
||||
return string(scanScript[iscan]);
|
||||
else
|
||||
return string("none");
|
||||
} else
|
||||
return string("wrong index");
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
returns scan parameter
|
||||
\param iscan can be (0,1)
|
||||
\returns scan parameter
|
||||
*/
|
||||
string slsDetectorActions::getScanParameter(int iscan){
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
if (scanMode[iscan])
|
||||
return string(scanParameter[iscan]);
|
||||
else
|
||||
return string("none");
|
||||
} else
|
||||
return string("wrong index");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
returns scan mode
|
||||
\param iscan can be (0,1)
|
||||
\returns scan mode
|
||||
*/
|
||||
int slsDetectorActions::getScanMode(int iscan){
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS)
|
||||
return scanMode[iscan];
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
returns scan steps
|
||||
\param iscan can be (0,1)
|
||||
\param v is the pointer to the scan steps
|
||||
\returns scan steps
|
||||
*/
|
||||
int slsDetectorActions::getScanSteps(int iscan, float *v) {
|
||||
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
if (v) {
|
||||
for (int iv=0; iv<nScanSteps[iscan]; iv++) {
|
||||
v[iv]=scanSteps[iscan][iv];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
setTotalProgress();
|
||||
|
||||
|
||||
if (scanMode[iscan])
|
||||
return nScanSteps[iscan];
|
||||
else
|
||||
return 0;
|
||||
} else
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
int slsDetectorActions::getScanPrecision(int iscan){
|
||||
if (iscan>=0 && iscan<MAX_SCAN_LEVELS) {
|
||||
return scanPrecision[iscan];
|
||||
} else
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
173
slsDetectorSoftware/slsDetector/slsDetectorActions.h
Normal file
173
slsDetectorSoftware/slsDetector/slsDetectorActions.h
Normal file
@ -0,0 +1,173 @@
|
||||
#ifndef SLS_DETECTOR_ACTIONS_H
|
||||
#define SLS_DETECTOR_ACTIONS_H
|
||||
|
||||
|
||||
|
||||
#include "sls_detector_defs.h"
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
|
||||
|
||||
#define MAX_SCAN_LEVELS 2
|
||||
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
|
||||
class implementing the script and scan utilities of the detectors
|
||||
|
||||
|
||||
*/
|
||||
|
||||
class slsDetectorActions : public slsDetectorDefs {
|
||||
public :
|
||||
slsDetectorActions(){};
|
||||
virtual ~slsDetectorActions(){};
|
||||
|
||||
/**
|
||||
set action
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript, MAX_ACTIONS}
|
||||
\param fname for script ("" disable)
|
||||
\param par for script
|
||||
\returns 0 if action disabled, >0 otherwise
|
||||
*/
|
||||
int setAction(int iaction, string fname="", string par="");
|
||||
|
||||
/**
|
||||
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
|
||||
*/
|
||||
int setActionScript(int iaction, string fname="");
|
||||
/**
|
||||
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
|
||||
*/
|
||||
int setActionParameter(int iaction, string par="");
|
||||
|
||||
/**
|
||||
returns action script
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action script
|
||||
*/
|
||||
string getActionScript(int iaction);
|
||||
|
||||
/**
|
||||
returns action parameter
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action parameter
|
||||
*/
|
||||
string getActionParameter(int iaction);
|
||||
|
||||
/**
|
||||
returns action mode
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action mode
|
||||
*/
|
||||
int getActionMode(int iaction);
|
||||
|
||||
|
||||
/**
|
||||
set scan
|
||||
\param index of the scan (0,1)
|
||||
\param fname for script ("" disables, "none" disables and overwrites current)
|
||||
\param nvalues number of steps (0 disables, -1 leaves current value)
|
||||
\param values pointer to steps (if NULL leaves current values)
|
||||
\param par parameter for the scan script ("" leaves unchanged)
|
||||
\returns 0 is scan disabled, >0 otherwise
|
||||
*/
|
||||
int setScan(int index, string script="", int nvalues=-1, float *values=NULL, string par="", int precision=-1);
|
||||
|
||||
int setScanScript(int index, string script="");
|
||||
int setScanParameter(int index, string par="");
|
||||
int setScanPrecision(int index, int precision=-1);
|
||||
int setScanSteps(int index, int nvalues=-1, float *values=NULL);
|
||||
float getScanStep(int index, int istep){if (index<MAX_SCAN_LEVELS && istep<MAX_SCAN_STEPS) return scanSteps[index][istep]; else return -1;};
|
||||
/**
|
||||
returns scan script
|
||||
\param iscan can be (0,1)
|
||||
\returns scan script
|
||||
*/
|
||||
string getScanScript(int iscan);
|
||||
|
||||
/**
|
||||
returns scan parameter
|
||||
\param iscan can be (0,1)
|
||||
\returns scan parameter
|
||||
*/
|
||||
string getScanParameter(int iscan);
|
||||
|
||||
/**
|
||||
returns scan mode
|
||||
\param iscan can be (0,1)
|
||||
\returns scan mode
|
||||
*/
|
||||
int getScanMode(int iscan);
|
||||
|
||||
/**
|
||||
returns scan steps
|
||||
\param iscan can be (0,1)
|
||||
\param v is the pointer to the scan steps
|
||||
\returns scan steps
|
||||
*/
|
||||
int getScanSteps(int iscan, float *v=NULL);
|
||||
|
||||
|
||||
/**
|
||||
returns scan precision
|
||||
\param iscan can be (0,1)
|
||||
\returns scan precision
|
||||
*/
|
||||
int getScanPrecision(int iscan);
|
||||
|
||||
|
||||
virtual int setTotalProgress()=0;
|
||||
|
||||
int getActionMask() {if (actionMask) return *actionMask; return 0;};
|
||||
|
||||
float getCurrentScanVariable(int index) {return currentScanVariable[index];};
|
||||
// int getScanPrecision(int index) {return scanPrecision[index];};
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
int *actionMask;
|
||||
mystring *actionScript;
|
||||
mystring *actionParameter;
|
||||
|
||||
int *nScanSteps;
|
||||
mysteps *scanSteps;
|
||||
int *scanMode;
|
||||
int *scanPrecision;
|
||||
mystring *scanScript;
|
||||
mystring *scanParameter;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
current scan variable of the detector
|
||||
*/
|
||||
float currentScanVariable[MAX_SCAN_LEVELS];
|
||||
|
||||
/**
|
||||
current scan variable index of the detector
|
||||
*/
|
||||
int currentScanIndex[MAX_SCAN_LEVELS];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif
|
@ -47,18 +47,9 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
*/
|
||||
virtual void acquire(int delflag)=0;
|
||||
|
||||
|
||||
/**
|
||||
asks and receives all data from the detector and puts them in a data queue
|
||||
\returns pointer to the front of the queue or NULL.
|
||||
\sa getDataFromDetector dataQueue
|
||||
*/
|
||||
virtual int* readAll()=0;
|
||||
|
||||
/**
|
||||
asks and receives a data frame from the detector and puts it in the data queue
|
||||
\returns pointer to the data or NULL.
|
||||
\sa getDataFromDetector
|
||||
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;
|
||||
|
||||
@ -69,12 +60,6 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
/* *\/ */
|
||||
/* virtual void* processData(int delflag)=0; */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
start detector acquisition
|
||||
\returns OK/FAIL
|
||||
@ -125,87 +110,27 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
/* virtual int removeSlsDetector(char* name){return -1;}; */
|
||||
|
||||
|
||||
|
||||
/** returns the detector hostname
|
||||
\param pos position in the multi detector structure (is -1 returns concatenated hostnames divided by a +)
|
||||
\returns hostname
|
||||
*/
|
||||
virtual string getHostname(int pos=-1)=0;
|
||||
|
||||
|
||||
/** sets the detector hostname
|
||||
\param name hostname
|
||||
\param pos position in the multi detector structure (is -1 expects concatenated hostnames divided by a +)
|
||||
\returns hostname
|
||||
*/
|
||||
virtual string setHostname(char* name, int pos=-1)=0;
|
||||
|
||||
/** Gets the detector id (shared memory id) of an slsDetector
|
||||
\param i position in the multiSlsDetector structure
|
||||
\return id or -1 if FAIL
|
||||
*/
|
||||
virtual int getDetectorId(int i=-1) =0;
|
||||
|
||||
/** Sets the detector id (shared memory id) of an slsDetector in a multiSlsDetector structure
|
||||
\param ival id to be set
|
||||
\param i position in the multiSlsDetector structure
|
||||
\return id or -1 if FAIL (e.g. in case of an slsDetector)
|
||||
*/
|
||||
virtual int setDetectorId(int ival, int i=-1){return -1;};
|
||||
|
||||
/** sets/gets position of the master in a multi detector structure
|
||||
\param i position of the detector in the multidetector structure
|
||||
\returns position of the master in a multi detector structure (-1 no master or always in slsDetector)
|
||||
*/
|
||||
virtual int setMaster(int i=-1){return -1;};
|
||||
|
||||
/**
|
||||
Sets/gets the synchronization mode of the various detectors
|
||||
\param sync syncronization mode
|
||||
\returns current syncronization mode
|
||||
*/
|
||||
virtual synchronizationMode setSynchronization(synchronizationMode sync=GET_SYNCHRONIZATION_MODE)=0;
|
||||
|
||||
|
||||
/**
|
||||
returns the detector trimbit/settings directory
|
||||
*/
|
||||
virtual char* getSettingsDir()=0;
|
||||
|
||||
/** sets the detector trimbit/settings directory */
|
||||
virtual char* setSettingsDir(string s)=0;
|
||||
|
||||
/**
|
||||
returns the location of the calibration files
|
||||
*/
|
||||
virtual char* getCalDir()=0;
|
||||
|
||||
/**
|
||||
sets the location of the calibration files
|
||||
*/
|
||||
virtual char* setCalDir(string s)=0;
|
||||
|
||||
/**
|
||||
returns the default output files path
|
||||
*/
|
||||
virtual char* getFilePath()=0;
|
||||
virtual string getFilePath()=0;
|
||||
|
||||
/**
|
||||
sets the default output files path
|
||||
\param s file path
|
||||
\returns file path
|
||||
*/
|
||||
virtual char* setFilePath(string s)=0;
|
||||
virtual string setFilePath(string s)=0;
|
||||
|
||||
/**
|
||||
returns the default output files root name
|
||||
*/
|
||||
virtual char* getFileName()=0;
|
||||
virtual string getFileName()=0;
|
||||
|
||||
/**
|
||||
sets the default output files path
|
||||
*/
|
||||
virtual char* setFileName(string s)=0;
|
||||
virtual string setFileName(string s)=0;
|
||||
|
||||
/**
|
||||
returns the default output file index
|
||||
@ -221,20 +146,20 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
get flat field corrections file directory
|
||||
\returns flat field correction file directory
|
||||
*/
|
||||
virtual char *getFlatFieldCorrectionDir()=0;
|
||||
virtual string getFlatFieldCorrectionDir()=0;
|
||||
|
||||
/**
|
||||
set flat field corrections file directory
|
||||
\param dir flat field correction file directory
|
||||
\returns flat field correction file directory
|
||||
*/
|
||||
virtual char *setFlatFieldCorrectionDir(string dir)=0;
|
||||
virtual string setFlatFieldCorrectionDir(string dir)=0;
|
||||
|
||||
/**
|
||||
get flat field corrections file name
|
||||
\returns flat field correction file name
|
||||
*/
|
||||
virtual char *getFlatFieldCorrectionFile()=0;
|
||||
virtual string getFlatFieldCorrectionFile()=0;
|
||||
|
||||
/**
|
||||
set flat field corrections
|
||||
@ -243,22 +168,6 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
*/
|
||||
virtual int setFlatFieldCorrection(string fname="")=0;
|
||||
|
||||
/**
|
||||
get flat field corrections
|
||||
\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
|
||||
*/
|
||||
virtual int getFlatFieldCorrection(float *corr=NULL, float *ecorr=NULL)=0;
|
||||
|
||||
/**
|
||||
set flat field corrections
|
||||
\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
|
||||
*/
|
||||
virtual int setFlatFieldCorrection(float *corr, float *ecorr=NULL)=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
|
||||
@ -273,111 +182,40 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
*/
|
||||
virtual int getRateCorrection(float &t)=0;
|
||||
|
||||
/**
|
||||
get rate correction tau
|
||||
\returns 0 if rate correction disabled, otherwise the tau used for the correction
|
||||
*/
|
||||
virtual float getRateCorrectionTau()=0;
|
||||
|
||||
/**
|
||||
get rate correction
|
||||
\returns 0 if rate correction disabled, >0 otherwise
|
||||
*/
|
||||
virtual int getRateCorrection()=0;
|
||||
|
||||
/**
|
||||
set bad channels correction
|
||||
\param fname file with bad channel list ("" disable)
|
||||
\returns 0 if bad channel disabled, >0 otherwise
|
||||
*/
|
||||
virtual int setBadChannelCorrection(string fname="")=0;
|
||||
|
||||
/**
|
||||
set bad channels correction
|
||||
\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
|
||||
*/
|
||||
virtual int setBadChannelCorrection(int nch, int *chs, int ff=0)=0;
|
||||
|
||||
/**
|
||||
get bad channels correction
|
||||
\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
|
||||
*/
|
||||
virtual int getBadChannelCorrection(int *bad=NULL)=0;
|
||||
|
||||
/**
|
||||
returns the bad channel list file
|
||||
*/
|
||||
virtual string getBadChannelCorrectionFile()=0;
|
||||
|
||||
/**
|
||||
set angular conversion
|
||||
\param fname file with angular conversion constants ("" disable)
|
||||
\returns 0 if angular conversion disabled, >0 otherwise
|
||||
*/
|
||||
virtual int setAngularConversion(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 *angconv=NULL)=0;
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
returns the angular conversion file
|
||||
*/
|
||||
virtual string getAngularConversion()=0;
|
||||
|
||||
|
||||
/**
|
||||
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
|
||||
*/
|
||||
|
||||
virtual float setAngularConversionParameter(angleConversionParameter c, float v)=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
|
||||
*/
|
||||
virtual float getAngularConversionParameter(angleConversionParameter c)=0;
|
||||
|
||||
/* /\** */
|
||||
/* writes a data file */
|
||||
/* \param name 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' float (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 */
|
||||
/* /\** */
|
||||
/* returns the bad channel list file */
|
||||
/* *\/ */
|
||||
/* virtual int writeDataFile(string fname, float *data, float *err=NULL, float *ang=NULL, char dataformat='f', int nch=-1)=0; */
|
||||
/* virtual string getBadChannelCorrectionFile()=0; */
|
||||
|
||||
|
||||
|
||||
|
||||
virtual int enableBadChannelCorrection(int i=-1)=0;
|
||||
|
||||
virtual int enableAngularConversion(int i=-1)=0;
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* set angular conversion */
|
||||
/* \param fname file with angular conversion constants ("" disable) */
|
||||
/* \returns 0 if angular conversion disabled, >0 otherwise */
|
||||
/* *\/ */
|
||||
/* virtual int setAngularConversionFile(string fname="")=0; */
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* writes an angular conversion file */
|
||||
/* \param fname file to be written */
|
||||
/* \return OK/FAIL */
|
||||
/* pure virtual function */
|
||||
/* returns the angular conversion file */
|
||||
/* *\/ */
|
||||
/* virtual int writeAngularConversion(string fname)=0; */
|
||||
/* virtual string getAngularConversionFile()=0; */
|
||||
|
||||
|
||||
/* /\** */
|
||||
/* set/get if the data processing and file writing should be done by a separate thread - do not use except for debugging! */
|
||||
/* \param i 0 sequencial data acquisition and file writing, 1 separate thread, -1 get */
|
||||
/* \returns thread flag */
|
||||
/* *\/ */
|
||||
/* virtual int setThreadedProcessing(int i=-1)=0; */
|
||||
|
||||
/**
|
||||
set positions for the acquisition
|
||||
\param nPos number of positions
|
||||
@ -393,122 +231,97 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
*/
|
||||
virtual int getPositions(float *pos=NULL)=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, string fname="")=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, 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, string par="")=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, string par="")=0; */
|
||||
|
||||
/**
|
||||
returns action script
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action script
|
||||
*/
|
||||
virtual string getActionScript(int iaction)=0;
|
||||
/* /\** */
|
||||
/* returns action script */
|
||||
/* \param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript} */
|
||||
/* \returns action script */
|
||||
/* *\/ */
|
||||
/* virtual string getActionScript(int iaction)=0; */
|
||||
|
||||
/**
|
||||
returns action parameter
|
||||
\param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript}
|
||||
\returns action parameter
|
||||
*/
|
||||
virtual string getActionParameter(int iaction)=0;
|
||||
/* /\** */
|
||||
/* returns action parameter */
|
||||
/* \param iaction can be enum {startScript, scriptBefore, headerBefore, headerAfter,scriptAfter, stopScript} */
|
||||
/* \returns action parameter */
|
||||
/* *\/ */
|
||||
/* virtual 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, string script="")=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, 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, string spar="")=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, 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 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, float *values=NULL)=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, float *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 string getScanScript(int index)=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 string getScanScript(int index)=0; */
|
||||
|
||||
/**
|
||||
get scan script
|
||||
\param index is the scan index (0 or 1)
|
||||
\returns scan script parameter
|
||||
*/
|
||||
virtual string getScanParameter(int index)=0;
|
||||
/* /\** */
|
||||
/* get scan script */
|
||||
/* \param index is the scan index (0 or 1) */
|
||||
/* \returns scan script parameter */
|
||||
/* *\/ */
|
||||
/* virtual 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 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, float *values=NULL)=0;
|
||||
|
||||
/**
|
||||
gets the network parameters (implemented for gotthard)
|
||||
\param i network parameter type can be CLIENT_IP, CLIENT_MAC, SERVER_MAC
|
||||
\returns parameter
|
||||
|
||||
*/
|
||||
virtual char *getNetworkParameter(networkParameter i)=0;
|
||||
|
||||
/**
|
||||
sets the network parameters (implemented for gotthard)
|
||||
\param i network parameter type can be CLIENT_IP, CLIENT_MAC, SERVER_MAC
|
||||
\param s value to be set
|
||||
\returns parameter
|
||||
|
||||
*/
|
||||
virtual char *setNetworkParameter(networkParameter i, string s)=0;
|
||||
|
||||
/**
|
||||
changes/gets the port number
|
||||
\param t type port type can be CONTROL_PORT, DATA_PORT, STOP_PORT
|
||||
\param i new port number (<1024 gets)
|
||||
\returns actual port number
|
||||
*/
|
||||
virtual int setPort(portType t, int i=-1)=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, float *values=NULL)=0; */
|
||||
|
||||
/** Locks/Unlocks the connection to the server
|
||||
/param lock sets (1), usets (0), gets (-1) the lock
|
||||
@ -516,19 +329,6 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
*/
|
||||
virtual int lockServer(int i=-1)=0;
|
||||
|
||||
/**
|
||||
Returns the IP of the last client connecting to the detector
|
||||
*/
|
||||
virtual string getLastClientIP()=0;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
configures mac for gotthard readout
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
|
||||
virtual int configureMAC()=0;
|
||||
|
||||
|
||||
/**
|
||||
@ -540,13 +340,6 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
virtual int setNumberOfModules(int i=-1, dimension d=X)=0;
|
||||
|
||||
|
||||
/**
|
||||
get the maximum size of the detector
|
||||
\param d dimension
|
||||
\returns maximum number of modules that can be installed in direction d
|
||||
*/
|
||||
virtual int getMaxNumberOfModules(dimension d=X)=0;
|
||||
|
||||
|
||||
/**
|
||||
set/get dynamic range
|
||||
@ -589,78 +382,7 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
*/
|
||||
virtual int setThresholdEnergy(int e_eV, int imod=-1, detectorSettings isettings=GET_SETTINGS)=0;
|
||||
|
||||
/**
|
||||
get detector ids/versions for module
|
||||
\param mode which id/version has to be read
|
||||
\param imod module number for module serial number
|
||||
\returns id
|
||||
*/
|
||||
virtual int64_t getId(idMode mode, int imod=0)=0;
|
||||
|
||||
/**
|
||||
Digital test of the modules
|
||||
\param mode test mode
|
||||
\param imod module number for chip test or module firmware test
|
||||
\returns OK or error mask
|
||||
*/
|
||||
virtual int digitalTest(digitalTestMode mode, int imod=0)=0;
|
||||
|
||||
/**
|
||||
ex cute trimming
|
||||
\param mode trim mode
|
||||
\param par1 if noise, beam or fixed setting trimming it is count limit, if improve maximum number of iterations
|
||||
\param par2 if noise or beam nsigma, if improve par2!=means vthreshold will be optimized, if fixed settings par2<0 trimwith median, par2>=0 trim with level
|
||||
\param imod module number (-1 all)
|
||||
\returns OK or FAIl (FAIL also if some channel are 0 or 63
|
||||
*/
|
||||
virtual int executeTrimming(trimMode mode, int par1, int par2, int imod=-1)=0;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
returns currently the loaded trimfile/settingsfile name
|
||||
*/
|
||||
virtual const char *getSettingsFile()=0;
|
||||
|
||||
|
||||
|
||||
/** loads the modules settings/trimbits reading from a file
|
||||
\param fname file name . If not specified, extension is automatically generated!
|
||||
\param imod module number, -1 means all modules
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
virtual int loadSettingsFile(string fname, int imod=-1)=0;
|
||||
|
||||
|
||||
|
||||
/** saves the modules settings/trimbits writing to a file
|
||||
\param fname file name . Axtension is automatically generated!
|
||||
\param imod module number, -1 means all modules
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
virtual int saveSettingsFile(string fname, int imod=-1)=0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
set dacs value
|
||||
\param val value (in V)
|
||||
\param index DAC index
|
||||
\param imod module number (if -1 alla modules)
|
||||
\returns current DAC value
|
||||
*/
|
||||
virtual float setDAC(float val, dacIndex index , int imod=-1)=0;
|
||||
|
||||
|
||||
/**
|
||||
gets ADC value
|
||||
\param index ADC index
|
||||
\param imod module number
|
||||
\returns current ADC value
|
||||
*/
|
||||
virtual float getADC(dacIndex index, int imod=0)=0;
|
||||
|
||||
|
||||
/**
|
||||
@ -672,60 +394,6 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
virtual int64_t setTimer(timerIndex index, int64_t t=-1)=0;
|
||||
|
||||
|
||||
/**
|
||||
get current timer value
|
||||
\param index timer index
|
||||
\returns elapsed time value in ns or number of...(e.g. frames, gates, probes)
|
||||
*/
|
||||
virtual int64_t getTimeLeft(timerIndex index)=0;
|
||||
|
||||
|
||||
|
||||
|
||||
/** sets/gets the value of important readout speed parameters
|
||||
\param sp is the parameter to be set/get
|
||||
\param value is the value to be set, if -1 get value
|
||||
\returns current value for the specified parameter
|
||||
\sa speedVariable
|
||||
*/
|
||||
virtual int setSpeed(speedVariable sp, int value=-1)=0;
|
||||
|
||||
|
||||
|
||||
/** sets the number of trim energies and their value \sa sharedSlsDetector
|
||||
\param nen number of energies
|
||||
\param en array of energies
|
||||
\returns number of trim energies
|
||||
|
||||
unused!
|
||||
|
||||
*/
|
||||
virtual int setTrimEn(int nen, int *en=NULL)=0;
|
||||
|
||||
/** returns the number of trim energies and their value \sa sharedSlsDetector
|
||||
\param en pointer to the array that will contain the trim energies (in ev)
|
||||
\returns number of trim energies
|
||||
|
||||
unused!
|
||||
*/
|
||||
virtual int getTrimEn(int *en=NULL)=0;
|
||||
|
||||
|
||||
/**
|
||||
set/get the use of an external signal
|
||||
\param pol meaning of the signal \sa externalSignalFlag
|
||||
\param signalindex index of the signal
|
||||
\returns current meaning of signal signalIndex
|
||||
*/
|
||||
virtual externalSignalFlag setExternalSignalFlags(externalSignalFlag pol=GET_EXTERNAL_SIGNAL_FLAG , int signalindex=0)=0;
|
||||
|
||||
/**
|
||||
set/get readout flags
|
||||
\param flag readout flag to be set
|
||||
\returns current flag
|
||||
*/
|
||||
virtual int setReadOutFlags(readOutFlags flag=GET_READOUT_FLAGS)=0;
|
||||
|
||||
|
||||
/**
|
||||
set/get the external communication mode
|
||||
@ -736,19 +404,19 @@ class slsDetectorBase : public slsDetectorDefs
|
||||
|
||||
|
||||
/**
|
||||
Reads the configuration file
|
||||
Reads 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
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
virtual int readConfigurationFile(string const fname)=0;
|
||||
|
||||
|
||||
/**
|
||||
Writes the configuration file
|
||||
\param fname file name
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
virtual int writeConfigurationFile(string const fname)=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 */
|
||||
/* \returns OK or FAIL */
|
||||
/* *\/ */
|
||||
/* virtual int writeConfigurationFile(string const fname)=0; */
|
||||
|
||||
/**
|
||||
Reads the parameters from the detector and writes them to file
|
||||
|
@ -114,6 +114,13 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdAngConv;
|
||||
i++;
|
||||
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="moveflag" ;//
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdAngConv;
|
||||
i++;
|
||||
|
||||
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="threaded"; //
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdThreaded;
|
||||
i++;
|
||||
@ -1508,9 +1515,9 @@ string slsDetectorCommand::cmdAngConv(int narg, char *args[], int action){
|
||||
if (sval=="none")
|
||||
sval="";
|
||||
|
||||
myDet->setAngularConversion(sval);
|
||||
myDet->setAngularConversionFile(sval);
|
||||
|
||||
return string(myDet->getAngularConversion());
|
||||
return string(myDet->getAngularConversionFile());
|
||||
} else if (action==GET_ACTION) {
|
||||
if (narg>1)
|
||||
sval=string(args[1]);
|
||||
@ -1522,7 +1529,7 @@ string slsDetectorCommand::cmdAngConv(int narg, char *args[], int action){
|
||||
myDet->writeAngularConversion(sval.c_str());
|
||||
return sval;
|
||||
}
|
||||
return string(myDet->getAngularConversion());
|
||||
return string(myDet->getAngularConversionFile());
|
||||
} else {
|
||||
return string("none");
|
||||
}
|
||||
@ -1541,6 +1548,8 @@ string slsDetectorCommand::cmdAngConv(int narg, char *args[], int action){
|
||||
} else if (string(args[0])==string("angdir")) {
|
||||
c=ANGULAR_DIRECTION;
|
||||
|
||||
} else if (string(args[0])==string("moveflag")) {
|
||||
c=MOVE_FLAG;
|
||||
} else
|
||||
return string("could not decode angular conversion parameter ")+cmd;
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
87
slsDetectorSoftware/slsDetectorAnalysis/Makefile
Normal file
87
slsDetectorSoftware/slsDetectorAnalysis/Makefile
Normal file
@ -0,0 +1,87 @@
|
||||
#---------------------------------------------------
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
575
slsDetectorSoftware/slsDetectorAnalysis/Makefile.arch
Normal file
575
slsDetectorSoftware/slsDetectorAnalysis/Makefile.arch
Normal file
@ -0,0 +1,575 @@
|
||||
# -*- 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
|
691
slsDetectorSoftware/slsDetectorAnalysis/TSlsDetectorDict.cpp
Normal file
691
slsDetectorSoftware/slsDetectorAnalysis/TSlsDetectorDict.cpp
Normal file
@ -0,0 +1,691 @@
|
||||
//
|
||||
// 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((float) 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((float) 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((float) G__double(libp->para[0]), (float) 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(*(float*) G__Floatref(&libp->para[0]), *(float*) G__Floatref(&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;
|
||||
|
42
slsDetectorSoftware/slsDetectorAnalysis/TSlsDetectorDict.h
Normal file
42
slsDetectorSoftware/slsDetectorAnalysis/TSlsDetectorDict.h
Normal file
@ -0,0 +1,42 @@
|
||||
/********************************************************************
|
||||
* 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 */
|
471
slsDetectorSoftware/slsDetectorAnalysis/angularCalibration.cpp
Normal file
471
slsDetectorSoftware/slsDetectorAnalysis/angularCalibration.cpp
Normal file
@ -0,0 +1,471 @@
|
||||
#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;
|
||||
float 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]=(float) i;
|
||||
// y[npoints]=(float) 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, float startangle, float stopangle) {
|
||||
|
||||
// int i,nfit,mod,npoints,nnpoints;
|
||||
// float x[MAXINMODULE],y[MAXINMODULE],ex[MAXINMODULE],ey[MAXINMODULE],min,max;
|
||||
// float 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);
|
||||
|
||||
// }
|
||||
|
170
slsDetectorSoftware/slsDetectorAnalysis/angularCalibration.h
Normal file
170
slsDetectorSoftware/slsDetectorAnalysis/angularCalibration.h
Normal file
@ -0,0 +1,170 @@
|
||||
|
||||
#ifndef ANGULARCALIBRATION_H
|
||||
#define ANGULARCALIBRATION_H
|
||||
|
||||
|
||||
//#include "usersFunctions.h"
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
#include <TROOT.h>
|
||||
#include <TF1.h>
|
||||
class TH1;
|
||||
#endif
|
||||
|
||||
//float angle(int ichan, float encoder, float totalOffset, float conv_r, float center, float offset, float tilt, int direction)
|
||||
|
||||
|
||||
|
||||
/**
|
||||
angular conversion constant for a module
|
||||
*/
|
||||
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;
|
||||
|
||||
|
||||
|
||||
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
|
||||
*/
|
||||
float setEncoder(float f) {encoder=f; return encoder;};
|
||||
|
||||
/**
|
||||
gets the encoder position
|
||||
\returns encoder position
|
||||
*/
|
||||
float getEncoder() {return encoder;};
|
||||
|
||||
/**
|
||||
sets the totalOffset of the detector
|
||||
\param f total offset to be set
|
||||
\returns current total offset
|
||||
*/
|
||||
float setTotalOffset(float f) {totalOffset=f; return totalOffset;};
|
||||
|
||||
/**
|
||||
gets the encoder position
|
||||
\returns encoder position
|
||||
*/
|
||||
float 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(float mi, float 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(float &mi, float &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
|
||||
float encoder; /**< position of the detector encoder */
|
||||
float totalOffset; /**< total offset of the detector */
|
||||
float ang_min; /**< minimum of the angular range for peak fitting*/
|
||||
float ang_max; /**< maximum of the angular range for peak fitting */
|
||||
|
||||
int nmod;
|
||||
int nchmod;
|
||||
|
||||
angleConversionConstant *angConv;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* void fitangle(char fname[80],char extension[10], int start, int stop, float startangle, float stopangle); //fits all datasets and extracts the constants */
|
||||
/* int fitpeak(char fname[80],char extension[10], int nr, float minang, float maxang); // fits a peak from a pattern using nominal calibration constant */
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
481
slsDetectorSoftware/slsDetectorAnalysis/angularConversion.cpp
Normal file
481
slsDetectorSoftware/slsDetectorAnalysis/angularConversion.cpp
Normal file
@ -0,0 +1,481 @@
|
||||
#include "angularConversion.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <math.h>
|
||||
#include "usersFunctions.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
angularConversion::angularConversion(): currentPosition(0),
|
||||
currentPositionIndex(0)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
float* angularConversion::convertAngles(float pos) {
|
||||
int imod;
|
||||
float *ang=new float[getTotalNumberOfChannels()];
|
||||
float enc=pos;
|
||||
angleConversionConstant *p=NULL;
|
||||
for (int ip=0; ip<getTotalNumberOfChannels(); ip++) {
|
||||
imod=ip/(getChansPerMod(0)); // always for module 0?????
|
||||
p=getAngularConversionPointer(imod);
|
||||
|
||||
if (getMoveFlag(imod)==0)
|
||||
enc=0;
|
||||
else
|
||||
enc=pos;
|
||||
|
||||
if (p)
|
||||
ang[ip]=angle(ip%(getChansPerMod()), \
|
||||
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;
|
||||
float center, ecenter;
|
||||
float r_conv, er_conv;
|
||||
float 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(float *mp, float *mv, float *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(float *mp, float *mv, float *me, int *mm,int nb) {
|
||||
int np=0;
|
||||
for (int ibin=0; ibin<nb; ibin++) {
|
||||
if (mm[ibin]>0) {
|
||||
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(float *p1, float *v1, float *e1, float *mp, float *mv,float *me, int *mm, int nchans, float binsize,int nbins, int *badChanMask ) {
|
||||
|
||||
float 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]++;
|
||||
} else
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
|
||||
return OK;
|
||||
|
||||
}
|
||||
|
||||
int angularConversion::deleteMerging() {
|
||||
|
||||
if (mergingBins)
|
||||
delete [] mergingBins;
|
||||
|
||||
if (mergingCounts)
|
||||
delete [] mergingCounts;
|
||||
|
||||
if (mergingErrors)
|
||||
delete [] mergingErrors;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int angularConversion::resetMerging() {
|
||||
|
||||
mergingBins=new float[nBins];
|
||||
|
||||
|
||||
mergingCounts=new float[nBins];
|
||||
|
||||
|
||||
mergingErrors=new float[nBins];
|
||||
|
||||
|
||||
mergingMultiplicity=new int[nBins];
|
||||
|
||||
return resetMerging(mergingBins, mergingCounts, mergingErrors, mergingMultiplicity);
|
||||
|
||||
}
|
||||
|
||||
int angularConversion::resetMerging(float *mp, float *mv, float *me, int *mm) {
|
||||
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(float *mp, float *mv, float *me, int *mm) {
|
||||
|
||||
if (nBins)
|
||||
return finalizeMerging(mp, mv, me, mm, nBins);
|
||||
else
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
int angularConversion::addToMerging(float *p1, float *v1, float *e1, int *badChanMask ) {
|
||||
|
||||
return addToMerging(p1,v1,e1,mergingBins,mergingCounts, mergingErrors, mergingMultiplicity, badChanMask);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
int angularConversion::addToMerging(float *p1, float *v1, float *e1, float *mp, float *mv,float *me, int *mm, int *badChanMask ) {
|
||||
|
||||
|
||||
int del=0;
|
||||
|
||||
if (*binSize==0)
|
||||
return FAIL;
|
||||
|
||||
if (nBins==0)
|
||||
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
|
||||
*/
|
||||
|
||||
float angularConversion::setAngularConversionParameter(angleConversionParameter c, float 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
|
||||
|
||||
*/
|
||||
|
||||
float angularConversion::getAngularConversionParameter(angleConversionParameter c) {
|
||||
|
||||
switch (c) {
|
||||
case ANGULAR_DIRECTION:
|
||||
return *angDirection;
|
||||
case GLOBAL_OFFSET:
|
||||
return *globalOffset;
|
||||
case FINE_OFFSET:
|
||||
return *fineOffset;
|
||||
case BIN_SIZE:
|
||||
return *binSize;
|
||||
case MOVE_FLAG:
|
||||
return *moveFlag;
|
||||
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, float *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(float *pos){
|
||||
if (pos) {
|
||||
for (int ip=0; ip<(*numberOfPositions); ip++)
|
||||
pos[ip]=detPositions[ip];
|
||||
}
|
||||
|
||||
return *numberOfPositions;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
316
slsDetectorSoftware/slsDetectorAnalysis/angularConversion.h
Normal file
316
slsDetectorSoftware/slsDetectorAnalysis/angularConversion.h
Normal file
@ -0,0 +1,316 @@
|
||||
|
||||
#ifndef ANGULARCONVERSION_H
|
||||
#define ANGULARCONVERSION_H
|
||||
|
||||
|
||||
#include "sls_detector_defs.h"
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
|
||||
|
||||
//float angle(int ichan, float encoder, float totalOffset, float conv_r, float center, float offset, float tilt, int direction)
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
angular conversion constant for a module
|
||||
*/
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
class containing the methods to set/unset the angular conversion and merge the data
|
||||
The angular conversion itself is stored in the slsDetector/multiSlsDetector class!
|
||||
|
||||
*/
|
||||
class angularConversion : public slsDetectorDefs {
|
||||
|
||||
public:
|
||||
angularConversion();
|
||||
virtual ~angularConversion();
|
||||
|
||||
|
||||
|
||||
//virtual int readAngularConversion(string fname)=0;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
reads an angular conversion file
|
||||
\param fname file to be read
|
||||
*/
|
||||
static int readAngularConversion(string fname, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
/**
|
||||
|
||||
MOVE TO ANGULAR CALIBRATION?!?!??!?
|
||||
reads an angular conversion file
|
||||
\param fname file to be read
|
||||
*/
|
||||
static int readAngularConversion(ifstream& ifs, int nmod, angleConversionConstant *angOff);
|
||||
/**
|
||||
MOVE TO ANGULAR CALIBRATION?!?!??!?
|
||||
writes an angular conversion file
|
||||
\param fname file to be written
|
||||
\sa angleConversionConstant mythenDetector::writeAngularConversion
|
||||
*/
|
||||
static int writeAngularConversion(string fname, int nmod, angleConversionConstant *angOff);
|
||||
/**
|
||||
MOVE TO ANGULAR CALIBRATION?!?!??!?
|
||||
writes an angular conversion file
|
||||
\param fname file to be written
|
||||
\sa angleConversionConstant mythenDetector::writeAngularConversion
|
||||
*/
|
||||
static int writeAngularConversion(ofstream& ofs, int nmod, angleConversionConstant *angOff);
|
||||
|
||||
virtual int writeAngularConversion(string fname)=0;
|
||||
|
||||
/**
|
||||
MOVE TO ANGULAR CALIBRATION?!?!??!?
|
||||
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
|
||||
\sa mythenDetector::resetMerging
|
||||
*/
|
||||
static int resetMerging(float *mp, float *mv,float *me, int *mm, int nbins);
|
||||
int resetMerging(float *mp, float *mv,float *me, int *mm);
|
||||
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(float *p1, float *v1, float *e1, float *mp, float *mv,float *me, int *mm, int nchans, float binsize,int nb, int *badChanMask );
|
||||
|
||||
int addToMerging(float *p1, float *v1, float *e1, float *mp, float *mv,float *me, int *mm, int *badChanMask);
|
||||
|
||||
int addToMerging(float *p1, float *v1, float *e1,int *badChanMask);
|
||||
|
||||
/**
|
||||
MOVE TO ANGULAR CALIBRATION?!?!??!?
|
||||
calculates the "final" positions, data value and errors for the emrged 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)
|
||||
\sa mythenDetector::finalizeMerging
|
||||
*/
|
||||
|
||||
static int finalizeMerging(float *mp, float *mv,float *me, int *mm, int nb);
|
||||
|
||||
int finalizeMerging(float *mp, float *mv,float *me, int *mm);
|
||||
int finalizeMerging();
|
||||
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
set detector global offset
|
||||
\sa mythenDetector::setGlobalOffset
|
||||
*/
|
||||
float setGlobalOffset(float f){return setAngularConversionParameter(GLOBAL_OFFSET,f);};
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
set detector fine offset
|
||||
\sa mythenDetector::setFineOffset
|
||||
*/
|
||||
float setFineOffset(float f){return setAngularConversionParameter(FINE_OFFSET,f);};
|
||||
/**
|
||||
pure virtual function
|
||||
get detector fine offset
|
||||
\sa mythenDetector::getFineOffset
|
||||
*/
|
||||
float getFineOffset(){return getAngularConversionParameter(FINE_OFFSET);};
|
||||
|
||||
/**
|
||||
pure virtual function
|
||||
get detector global offset
|
||||
\sa mythenDetector::getGlobalOffset
|
||||
*/
|
||||
float getGlobalOffset(){return getAngularConversionParameter(GLOBAL_OFFSET);};
|
||||
|
||||
/**
|
||||
|
||||
set detector bin size used for merging (approx angular resolution)
|
||||
\param bs bin size in degrees
|
||||
\returns current bin size
|
||||
\sa mythenDetector::setBinSize
|
||||
*/
|
||||
float setBinSize(float bs){return setAngularConversionParameter(BIN_SIZE,bs);};
|
||||
|
||||
/**
|
||||
return detector bin size used for merging (approx angular resolution)
|
||||
\sa mythenDetector::getBinSize
|
||||
*/
|
||||
float getBinSize() {return getAngularConversionParameter(BIN_SIZE);};
|
||||
|
||||
|
||||
|
||||
int getAngularDirection(){return (int)getAngularConversionParameter(ANGULAR_DIRECTION);};
|
||||
|
||||
|
||||
int setAngularDirection(int d){return (int)setAngularConversionParameter(ANGULAR_DIRECTION, (float)d);};
|
||||
|
||||
|
||||
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;
|
||||
|
||||
float setAngularConversionParameter(angleConversionParameter c, float v);
|
||||
|
||||
float getAngularConversionParameter(angleConversionParameter c);
|
||||
|
||||
|
||||
virtual int getTotalNumberOfChannels()=0;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
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, float *pos);
|
||||
/**
|
||||
get positions for the acquisition
|
||||
\param pos array which will contain the encoder positions
|
||||
\returns number of positions
|
||||
*/
|
||||
virtual int getPositions(float *pos=NULL);
|
||||
|
||||
int deleteMerging();
|
||||
|
||||
float *getMergedPositions(){return mergingBins;};
|
||||
float *getMergedCounts(){return mergingCounts;};
|
||||
float *getMergedErrors(){return mergingErrors;};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
sets the angular conversion file
|
||||
\param fname file to read
|
||||
\returns angular conversion flag
|
||||
*/
|
||||
|
||||
int setAngularConversionFile(string fname);
|
||||
|
||||
|
||||
/**
|
||||
returns the angular conversion file
|
||||
*/
|
||||
string getAngularConversionFile(){if (setAngularCorrectionMask()) return string(angConvFile); else return string("none");};
|
||||
|
||||
|
||||
virtual int readAngularConversionFile(string fname="")=0;
|
||||
|
||||
|
||||
// int setAngularConversionPointer(angleConversionConstant *p, int *nm, int nch, int idet=0);
|
||||
|
||||
|
||||
|
||||
|
||||
virtual int getNMods()=0;
|
||||
virtual int getChansPerMod(int imod=0)=0;
|
||||
virtual angleConversionConstant *getAngularConversionPointer(int imod=0)=0;
|
||||
|
||||
float* convertAngles(float pos);
|
||||
|
||||
float *convertAngles(){return convertAngles(currentPosition);};
|
||||
|
||||
virtual int getMoveFlag(int imod)=0;
|
||||
|
||||
int getCurrentPositionIndex() {return currentPositionIndex;};
|
||||
int getNumberOfPositions() {return *numberOfPositions;};
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
int *numberOfPositions;
|
||||
float *detPositions;
|
||||
|
||||
char *angConvFile;
|
||||
|
||||
float *binSize;
|
||||
float *fineOffset;
|
||||
float *globalOffset;
|
||||
int *angDirection;
|
||||
int *moveFlag;
|
||||
|
||||
|
||||
int nBins;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
current position of the detector
|
||||
*/
|
||||
float currentPosition;
|
||||
|
||||
/**
|
||||
current position index of the detector
|
||||
*/
|
||||
int currentPositionIndex;
|
||||
|
||||
virtual int setAngularCorrectionMask(int i=-1)=0;
|
||||
|
||||
|
||||
private:
|
||||
/** merging bins */
|
||||
float *mergingBins;
|
||||
|
||||
/** merging counts */
|
||||
float *mergingCounts;
|
||||
|
||||
/** merging errors */
|
||||
float *mergingErrors;
|
||||
|
||||
/** merging multiplicity */
|
||||
int *mergingMultiplicity;
|
||||
|
||||
/** pointer to the angular conversion constants for the (multi)detector class*/
|
||||
|
||||
/* angleConversionConstant *angOff[MAXDET]; */
|
||||
/* int *nMods[MAXDET]; */
|
||||
/* int nCh[MAXDET]; */
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
32
slsDetectorSoftware/slsDetectorAnalysis/detectorData.h
Normal file
32
slsDetectorSoftware/slsDetectorAnalysis/detectorData.h
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
#include <unistd.h>
|
||||
#include <cstring>
|
||||
|
||||
/**
|
||||
data structure to hold the detector data after postprocessing (e.g. to plot, store in a root tree etc.)
|
||||
*/
|
||||
class detectorData {
|
||||
public:
|
||||
/** The constructor
|
||||
\param val pointer to the data
|
||||
\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 defaults to the number of detector channels
|
||||
*/
|
||||
detectorData(float *val=NULL, float *err=NULL, float *ang=NULL, float p_ind=-1, const char *fname="", int np=-1) : values(val), errors(err), angles(ang), progressIndex(p_ind), npoints(np){strcpy(fileName,fname);};
|
||||
/**
|
||||
the destructor
|
||||
deletes also the arrays pointing to data/errors/angles if not NULL
|
||||
*/
|
||||
~detectorData() {if (values) delete [] values; if (errors) delete [] errors; if (angles) delete [] angles;};
|
||||
//private:
|
||||
float *values; /**< pointer to the data */
|
||||
float *errors; /**< pointer to the errors */
|
||||
float *angles;/**< pointer to the angles */
|
||||
float progressIndex;/**< file index */
|
||||
char fileName[1000];/**< file name */
|
||||
int npoints;/**< number of points */
|
||||
};
|
||||
|
@ -0,0 +1,28 @@
|
||||
<!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>
|
@ -0,0 +1,55 @@
|
||||
<!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
@ -0,0 +1,38 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>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>
|
@ -0,0 +1,428 @@
|
||||
<!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>
|
@ -0,0 +1,69 @@
|
||||
<!-- 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>
|
358
slsDetectorSoftware/slsDetectorAnalysis/docs/html/doxygen.css
Normal file
358
slsDetectorSoftware/slsDetectorAnalysis/docs/html/doxygen.css
Normal file
@ -0,0 +1,358 @@
|
||||
BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
|
||||
font-family: Geneva, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
BODY,TD {
|
||||
font-size: 90%;
|
||||
}
|
||||
H1 {
|
||||
text-align: center;
|
||||
font-size: 160%;
|
||||
}
|
||||
H2 {
|
||||
font-size: 120%;
|
||||
}
|
||||
H3 {
|
||||
font-size: 100%;
|
||||
}
|
||||
CAPTION { font-weight: bold }
|
||||
DIV.qindex {
|
||||
width: 100%;
|
||||
background-color: #e8eef2;
|
||||
border: 1px solid #84b0c7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
line-height: 140%;
|
||||
}
|
||||
DIV.nav {
|
||||
width: 100%;
|
||||
background-color: #e8eef2;
|
||||
border: 1px solid #84b0c7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
line-height: 140%;
|
||||
}
|
||||
DIV.navtab {
|
||||
background-color: #e8eef2;
|
||||
border: 1px solid #84b0c7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
margin-right: 15px;
|
||||
padding: 2px;
|
||||
}
|
||||
TD.navtab {
|
||||
font-size: 70%;
|
||||
}
|
||||
A.qindex {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: #1A419D;
|
||||
}
|
||||
A.qindex:visited {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
color: #1A419D
|
||||
}
|
||||
A.qindex:hover {
|
||||
text-decoration: none;
|
||||
background-color: #ddddff;
|
||||
}
|
||||
A.qindexHL {
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
background-color: #6666cc;
|
||||
color: #ffffff;
|
||||
border: 1px double #9295C2;
|
||||
}
|
||||
A.qindexHL:hover {
|
||||
text-decoration: none;
|
||||
background-color: #6666cc;
|
||||
color: #ffffff;
|
||||
}
|
||||
A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
|
||||
A.el { text-decoration: none; font-weight: bold }
|
||||
A.elRef { font-weight: bold }
|
||||
A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
|
||||
A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
|
||||
A.codeRef:link { font-weight: normal; color: #0000FF}
|
||||
A.codeRef:visited { font-weight: normal; color: #0000FF}
|
||||
A:hover { text-decoration: none; background-color: #f2f2ff }
|
||||
DL.el { margin-left: -1cm }
|
||||
.fragment {
|
||||
font-family: monospace, fixed;
|
||||
font-size: 95%;
|
||||
}
|
||||
PRE.fragment {
|
||||
border: 1px solid #CCCCCC;
|
||||
background-color: #f5f5f5;
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px;
|
||||
margin-left: 2px;
|
||||
margin-right: 8px;
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
|
||||
|
||||
DIV.groupHeader {
|
||||
margin-left: 16px;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 6px;
|
||||
font-weight: bold;
|
||||
}
|
||||
DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
|
||||
BODY {
|
||||
background: white;
|
||||
color: black;
|
||||
margin-right: 20px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
TD.indexkey {
|
||||
background-color: #e8eef2;
|
||||
font-weight: bold;
|
||||
padding-right : 10px;
|
||||
padding-top : 2px;
|
||||
padding-left : 10px;
|
||||
padding-bottom : 2px;
|
||||
margin-left : 0px;
|
||||
margin-right : 0px;
|
||||
margin-top : 2px;
|
||||
margin-bottom : 2px;
|
||||
border: 1px solid #CCCCCC;
|
||||
}
|
||||
TD.indexvalue {
|
||||
background-color: #e8eef2;
|
||||
font-style: italic;
|
||||
padding-right : 10px;
|
||||
padding-top : 2px;
|
||||
padding-left : 10px;
|
||||
padding-bottom : 2px;
|
||||
margin-left : 0px;
|
||||
margin-right : 0px;
|
||||
margin-top : 2px;
|
||||
margin-bottom : 2px;
|
||||
border: 1px solid #CCCCCC;
|
||||
}
|
||||
TR.memlist {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
P.formulaDsp { text-align: center; }
|
||||
IMG.formulaDsp { }
|
||||
IMG.formulaInl { vertical-align: middle; }
|
||||
SPAN.keyword { color: #008000 }
|
||||
SPAN.keywordtype { color: #604020 }
|
||||
SPAN.keywordflow { color: #e08000 }
|
||||
SPAN.comment { color: #800000 }
|
||||
SPAN.preprocessor { color: #806020 }
|
||||
SPAN.stringliteral { color: #002080 }
|
||||
SPAN.charliteral { color: #008080 }
|
||||
.mdescLeft {
|
||||
padding: 0px 8px 4px 8px;
|
||||
font-size: 80%;
|
||||
font-style: italic;
|
||||
background-color: #FAFAFA;
|
||||
border-top: 1px none #E0E0E0;
|
||||
border-right: 1px none #E0E0E0;
|
||||
border-bottom: 1px none #E0E0E0;
|
||||
border-left: 1px none #E0E0E0;
|
||||
margin: 0px;
|
||||
}
|
||||
.mdescRight {
|
||||
padding: 0px 8px 4px 8px;
|
||||
font-size: 80%;
|
||||
font-style: italic;
|
||||
background-color: #FAFAFA;
|
||||
border-top: 1px none #E0E0E0;
|
||||
border-right: 1px none #E0E0E0;
|
||||
border-bottom: 1px none #E0E0E0;
|
||||
border-left: 1px none #E0E0E0;
|
||||
margin: 0px;
|
||||
}
|
||||
.memItemLeft {
|
||||
padding: 1px 0px 0px 8px;
|
||||
margin: 4px;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
border-top-color: #E0E0E0;
|
||||
border-right-color: #E0E0E0;
|
||||
border-bottom-color: #E0E0E0;
|
||||
border-left-color: #E0E0E0;
|
||||
border-top-style: solid;
|
||||
border-right-style: none;
|
||||
border-bottom-style: none;
|
||||
border-left-style: none;
|
||||
background-color: #FAFAFA;
|
||||
font-size: 80%;
|
||||
}
|
||||
.memItemRight {
|
||||
padding: 1px 8px 0px 8px;
|
||||
margin: 4px;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
border-top-color: #E0E0E0;
|
||||
border-right-color: #E0E0E0;
|
||||
border-bottom-color: #E0E0E0;
|
||||
border-left-color: #E0E0E0;
|
||||
border-top-style: solid;
|
||||
border-right-style: none;
|
||||
border-bottom-style: none;
|
||||
border-left-style: none;
|
||||
background-color: #FAFAFA;
|
||||
font-size: 80%;
|
||||
}
|
||||
.memTemplItemLeft {
|
||||
padding: 1px 0px 0px 8px;
|
||||
margin: 4px;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
border-top-color: #E0E0E0;
|
||||
border-right-color: #E0E0E0;
|
||||
border-bottom-color: #E0E0E0;
|
||||
border-left-color: #E0E0E0;
|
||||
border-top-style: none;
|
||||
border-right-style: none;
|
||||
border-bottom-style: none;
|
||||
border-left-style: none;
|
||||
background-color: #FAFAFA;
|
||||
font-size: 80%;
|
||||
}
|
||||
.memTemplItemRight {
|
||||
padding: 1px 8px 0px 8px;
|
||||
margin: 4px;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
border-top-color: #E0E0E0;
|
||||
border-right-color: #E0E0E0;
|
||||
border-bottom-color: #E0E0E0;
|
||||
border-left-color: #E0E0E0;
|
||||
border-top-style: none;
|
||||
border-right-style: none;
|
||||
border-bottom-style: none;
|
||||
border-left-style: none;
|
||||
background-color: #FAFAFA;
|
||||
font-size: 80%;
|
||||
}
|
||||
.memTemplParams {
|
||||
padding: 1px 0px 0px 8px;
|
||||
margin: 4px;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
border-top-color: #E0E0E0;
|
||||
border-right-color: #E0E0E0;
|
||||
border-bottom-color: #E0E0E0;
|
||||
border-left-color: #E0E0E0;
|
||||
border-top-style: solid;
|
||||
border-right-style: none;
|
||||
border-bottom-style: none;
|
||||
border-left-style: none;
|
||||
color: #606060;
|
||||
background-color: #FAFAFA;
|
||||
font-size: 80%;
|
||||
}
|
||||
.search { color: #003399;
|
||||
font-weight: bold;
|
||||
}
|
||||
FORM.search {
|
||||
margin-bottom: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
INPUT.search { font-size: 75%;
|
||||
color: #000080;
|
||||
font-weight: normal;
|
||||
background-color: #e8eef2;
|
||||
}
|
||||
TD.tiny { font-size: 75%;
|
||||
}
|
||||
a {
|
||||
color: #1A41A8;
|
||||
}
|
||||
a:visited {
|
||||
color: #2A3798;
|
||||
}
|
||||
.dirtab { padding: 4px;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid #84b0c7;
|
||||
}
|
||||
TH.dirtab { background: #e8eef2;
|
||||
font-weight: bold;
|
||||
}
|
||||
HR { height: 1px;
|
||||
border: none;
|
||||
border-top: 1px solid black;
|
||||
}
|
||||
|
||||
/* Style for detailed member documentation */
|
||||
.memtemplate {
|
||||
font-size: 80%;
|
||||
color: #606060;
|
||||
font-weight: normal;
|
||||
}
|
||||
.memnav {
|
||||
background-color: #e8eef2;
|
||||
border: 1px solid #84b0c7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
margin-right: 15px;
|
||||
padding: 2px;
|
||||
}
|
||||
.memitem {
|
||||
padding: 4px;
|
||||
background-color: #eef3f5;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #dedeee;
|
||||
-moz-border-radius: 8px 8px 8px 8px;
|
||||
}
|
||||
.memname {
|
||||
white-space: nowrap;
|
||||
font-weight: bold;
|
||||
}
|
||||
.memdoc{
|
||||
padding-left: 10px;
|
||||
}
|
||||
.memproto {
|
||||
background-color: #d5e1e8;
|
||||
width: 100%;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #84b0c7;
|
||||
font-weight: bold;
|
||||
-moz-border-radius: 8px 8px 8px 8px;
|
||||
}
|
||||
.paramkey {
|
||||
text-align: right;
|
||||
}
|
||||
.paramtype {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.paramname {
|
||||
color: #602020;
|
||||
font-style: italic;
|
||||
}
|
||||
/* End Styling for detailed member documentation */
|
||||
|
||||
/* for the tree view */
|
||||
.ftvtree {
|
||||
font-family: sans-serif;
|
||||
margin:0.5em;
|
||||
}
|
||||
.directory { font-size: 9pt; font-weight: bold; }
|
||||
.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
|
||||
.directory > h3 { margin-top: 0; }
|
||||
.directory p { margin: 0px; white-space: nowrap; }
|
||||
.directory div { display: none; margin: 0px; }
|
||||
.directory img { vertical-align: -30%; }
|
||||
|
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/doxygen.png
Normal file
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/doxygen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
@ -0,0 +1,164 @@
|
||||
<!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>
|
@ -0,0 +1,76 @@
|
||||
<!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>
|
@ -0,0 +1,190 @@
|
||||
<!-- 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>
|
27
slsDetectorSoftware/slsDetectorAnalysis/docs/html/files.html
Normal file
27
slsDetectorSoftware/slsDetectorAnalysis/docs/html/files.html
Normal file
@ -0,0 +1,27 @@
|
||||
<!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>
|
126
slsDetectorSoftware/slsDetectorAnalysis/docs/html/functions.html
Normal file
126
slsDetectorSoftware/slsDetectorAnalysis/docs/html/functions.html
Normal file
@ -0,0 +1,126 @@
|
||||
<!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>
|
@ -0,0 +1,63 @@
|
||||
<!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>
|
@ -0,0 +1,49 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>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>
|
@ -0,0 +1,36 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>Class Members</title>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<!-- Generated by Doxygen 1.4.7 -->
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="index.html"><span>Main 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>
|
@ -0,0 +1,36 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>Class Members</title>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<!-- Generated by Doxygen 1.4.7 -->
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="index.html"><span>Main 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>
|
25
slsDetectorSoftware/slsDetectorAnalysis/docs/html/index.html
Normal file
25
slsDetectorSoftware/slsDetectorAnalysis/docs/html/index.html
Normal file
@ -0,0 +1,25 @@
|
||||
<!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>
|
117
slsDetectorSoftware/slsDetectorAnalysis/docs/html/installdox
Executable file
117
slsDetectorSoftware/slsDetectorAnalysis/docs/html/installdox
Executable file
@ -0,0 +1,117 @@
|
||||
#!/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;
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>Namespace Index</title>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<!-- Generated by Doxygen 1.4.7 -->
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="index.html"><span>Main 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>
|
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>std Namespace Reference</title>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<!-- Generated by Doxygen 1.4.7 -->
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="index.html"><span>Main 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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,31 @@
|
||||
<!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>
|
@ -0,0 +1,37 @@
|
||||
<!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>
|
@ -0,0 +1,66 @@
|
||||
<!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>
|
@ -0,0 +1,55 @@
|
||||
<!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>
|
@ -0,0 +1,37 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,70 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,29 @@
|
||||
<!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.
After Width: | Height: | Size: 273 B |
@ -0,0 +1,24 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,49 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,37 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,64 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,11 @@
|
||||
<!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>
|
@ -0,0 +1,198 @@
|
||||
/*---------------- 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;
|
||||
}
|
||||
|
@ -0,0 +1,734 @@
|
||||
// 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.
After Width: | Height: | Size: 527 B |
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,31 @@
|
||||
<!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>
|
@ -0,0 +1,31 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,49 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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>
|
@ -0,0 +1,25 @@
|
||||
<!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_sign">
|
||||
<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#a4fc7c435169b5bf4672cf654270097d0" target="_parent">sign</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>
|
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tab_b.gif
Normal file
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tab_b.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 B |
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tab_l.gif
Normal file
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tab_l.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 706 B |
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tab_r.gif
Normal file
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tab_r.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
102
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tabs.css
Normal file
102
slsDetectorSoftware/slsDetectorAnalysis/docs/html/tabs.css
Normal file
@ -0,0 +1,102 @@
|
||||
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
|
||||
|
||||
DIV.tabs
|
||||
{
|
||||
float : left;
|
||||
width : 100%;
|
||||
background : url("tab_b.gif") repeat-x bottom;
|
||||
margin-bottom : 4px;
|
||||
}
|
||||
|
||||
DIV.tabs UL
|
||||
{
|
||||
margin : 0px;
|
||||
padding-left : 10px;
|
||||
list-style : none;
|
||||
}
|
||||
|
||||
DIV.tabs LI, DIV.tabs FORM
|
||||
{
|
||||
display : inline;
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
}
|
||||
|
||||
DIV.tabs FORM
|
||||
{
|
||||
float : right;
|
||||
}
|
||||
|
||||
DIV.tabs A
|
||||
{
|
||||
float : left;
|
||||
background : url("tab_r.gif") no-repeat right top;
|
||||
border-bottom : 1px solid #84B0C7;
|
||||
font-size : x-small;
|
||||
font-weight : bold;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
DIV.tabs A:hover
|
||||
{
|
||||
background-position: 100% -150px;
|
||||
}
|
||||
|
||||
DIV.tabs A:link, DIV.tabs A:visited,
|
||||
DIV.tabs A:active, DIV.tabs A:hover
|
||||
{
|
||||
color: #1A419D;
|
||||
}
|
||||
|
||||
DIV.tabs SPAN
|
||||
{
|
||||
float : left;
|
||||
display : block;
|
||||
background : url("tab_l.gif") no-repeat left top;
|
||||
padding : 5px 9px;
|
||||
white-space : nowrap;
|
||||
}
|
||||
|
||||
DIV.tabs INPUT
|
||||
{
|
||||
float : right;
|
||||
display : inline;
|
||||
font-size : 1em;
|
||||
}
|
||||
|
||||
DIV.tabs TD
|
||||
{
|
||||
font-size : x-small;
|
||||
font-weight : bold;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Commented Backslash Hack hides rule from IE5-Mac \*/
|
||||
DIV.tabs SPAN {float : none;}
|
||||
/* End IE5-Mac hack */
|
||||
|
||||
DIV.tabs A:hover SPAN
|
||||
{
|
||||
background-position: 0% -150px;
|
||||
}
|
||||
|
||||
DIV.tabs LI#current A
|
||||
{
|
||||
background-position: 100% -150px;
|
||||
border-width : 0px;
|
||||
}
|
||||
|
||||
DIV.tabs LI#current SPAN
|
||||
{
|
||||
background-position: 0% -150px;
|
||||
padding-bottom : 6px;
|
||||
}
|
||||
|
||||
DIV.nav
|
||||
{
|
||||
background : none;
|
||||
border : none;
|
||||
border-bottom : 1px solid #84B0C7;
|
||||
}
|
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/latex/FreeSans.ttf
Normal file
BIN
slsDetectorSoftware/slsDetectorAnalysis/docs/latex/FreeSans.ttf
Normal file
Binary file not shown.
39
slsDetectorSoftware/slsDetectorAnalysis/docs/latex/Makefile
Normal file
39
slsDetectorSoftware/slsDetectorAnalysis/docs/latex/Makefile
Normal file
@ -0,0 +1,39 @@
|
||||
all: clean refman.dvi
|
||||
|
||||
ps: refman.ps
|
||||
|
||||
pdf: refman.pdf
|
||||
|
||||
ps_2on1: refman_2on1.ps
|
||||
|
||||
pdf_2on1: refman_2on1.pdf
|
||||
|
||||
refman.ps: refman.dvi
|
||||
dvips -o refman.ps refman.dvi
|
||||
|
||||
refman.pdf: refman.ps
|
||||
ps2pdf refman.ps refman.pdf
|
||||
|
||||
refman.dvi: refman.tex doxygen.sty
|
||||
echo "Running latex..."
|
||||
latex refman.tex
|
||||
echo "Running makeindex..."
|
||||
makeindex refman.idx
|
||||
echo "Rerunning latex...."
|
||||
latex refman.tex
|
||||
latex_count=5 ; \
|
||||
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
|
||||
do \
|
||||
echo "Rerunning latex...." ;\
|
||||
latex refman.tex ;\
|
||||
latex_count=`expr $$latex_count - 1` ;\
|
||||
done
|
||||
|
||||
refman_2on1.ps: refman.ps
|
||||
psnup -2 refman.ps >refman_2on1.ps
|
||||
|
||||
refman_2on1.pdf: refman_2on1.ps
|
||||
ps2pdf refman_2on1.ps refman_2on1.pdf
|
||||
|
||||
clean:
|
||||
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf
|
@ -0,0 +1,5 @@
|
||||
\section{Class List}
|
||||
Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList}
|
||||
\item\contentsline{section}{\bf{energy\-Calibration} }{\pageref{classenergyCalibration}}{}
|
||||
\item\contentsline{section}{\bf{energy\-Calibration\-Functions} (Energy calibration functions )}{\pageref{classenergyCalibrationFunctions}}{}
|
||||
\end{CompactList}
|
@ -0,0 +1,337 @@
|
||||
\section{energy\-Calibration Class Reference}
|
||||
\label{classenergyCalibration}\index{energyCalibration@{energyCalibration}}
|
||||
{\tt \#include $<$energy\-Calibration.h$>$}
|
||||
|
||||
\subsection*{Public Member Functions}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
\bf{energy\-Calibration} ()
|
||||
\item
|
||||
\bf{$\sim$energy\-Calibration} ()
|
||||
\item
|
||||
int \bf{set\-Plot\-Flag} (int p=-1)
|
||||
\item
|
||||
int \bf{set\-Scan\-Sign} (int s=0)
|
||||
\item
|
||||
int \bf{set\-Charge\-Sharing} (int p=-1)
|
||||
\item
|
||||
void \bf{set\-Fit\-Range} (Double\_\-t mi, Double\_\-t ma)
|
||||
\item
|
||||
void \bf{get\-Fit\-Range} (Double\_\-t \&mi, Double\_\-t \&ma)
|
||||
\item
|
||||
void \bf{set\-Start\-Parameters} (Double\_\-t $\ast$par)
|
||||
\item
|
||||
void \bf{get\-Start\-Parameters} (Double\_\-t $\ast$par)
|
||||
\item
|
||||
TF1 $\ast$ \bf{fit\-SCurve} (TH1 $\ast$h1, Double\_\-t $\ast$mypar, Double\_\-t $\ast$emypar)
|
||||
\item
|
||||
TF1 $\ast$ \bf{fit\-Spectrum} (TH1 $\ast$h1, Double\_\-t $\ast$mypar, Double\_\-t $\ast$emypar)
|
||||
\item
|
||||
TGraph\-Errors $\ast$ \bf{linear\-Calibration} (int nscan, Double\_\-t $\ast$en, Double\_\-t $\ast$een, Double\_\-t $\ast$fl, Double\_\-t $\ast$efl, Double\_\-t \&gain, Double\_\-t \&off, Double\_\-t \&egain, Double\_\-t \&eoff)
|
||||
\item
|
||||
TGraph\-Errors $\ast$ \bf{calibrate\-Scurves} (int nscan, Double\_\-t $\ast$en, Double\_\-t $\ast$een, TH1F $\ast$$\ast$h1, Double\_\-t \&gain, Double\_\-t \&off, Double\_\-t \&egain, Double\_\-t \&eoff)
|
||||
\item
|
||||
TGraph\-Errors $\ast$ \bf{calibrate\-Spectra} (int nscan, Double\_\-t $\ast$en, Double\_\-t $\ast$een, TH1F $\ast$$\ast$h1, Double\_\-t \&gain, Double\_\-t \&off, Double\_\-t \&egain, Double\_\-t \&eoff)
|
||||
\end{CompactItemize}
|
||||
\subsection*{Private Member Functions}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
TGraph\-Errors $\ast$ \bf{calibrate} (int nscan, Double\_\-t $\ast$en, Double\_\-t $\ast$een, TH1F $\ast$$\ast$h1, Double\_\-t \&gain, Double\_\-t \&off, Double\_\-t \&egain, Double\_\-t \&eoff, int integral=1)
|
||||
\item
|
||||
void \bf{init\-Fit\-Function} (TF1 $\ast$fun, TH1 $\ast$h1)
|
||||
\item
|
||||
TF1 $\ast$ \bf{fit\-Function} (TF1 $\ast$fun, TH1 $\ast$h1, Double\_\-t $\ast$mypar, Double\_\-t $\ast$emypar)
|
||||
\end{CompactItemize}
|
||||
\subsection*{Private Attributes}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
int \bf{plot\_\-flag}
|
||||
\item
|
||||
int \bf{cs\_\-flag}
|
||||
\item
|
||||
Double\_\-t \bf{fit\_\-min}
|
||||
\item
|
||||
Double\_\-t \bf{fit\_\-max}
|
||||
\item
|
||||
Double\_\-t \bf{bg\_\-offset}
|
||||
\item
|
||||
Double\_\-t \bf{bg\_\-slope}
|
||||
\item
|
||||
Double\_\-t \bf{flex}
|
||||
\item
|
||||
Double\_\-t \bf{noise}
|
||||
\item
|
||||
Double\_\-t \bf{ampl}
|
||||
\item
|
||||
Double\_\-t \bf{cs\_\-slope}
|
||||
\item
|
||||
\bf{energy\-Calibration\-Functions} $\ast$ \bf{funcs}
|
||||
\item
|
||||
TF1 $\ast$ \bf{fscurve}
|
||||
\item
|
||||
TF1 $\ast$ \bf{fspectrum}
|
||||
\end{CompactItemize}
|
||||
|
||||
|
||||
\subsection{Detailed Description}
|
||||
class alowing the energy calibration of photon counting and anlogue detectors
|
||||
|
||||
|
||||
|
||||
\subsection{Constructor \& Destructor Documentation}
|
||||
\index{energyCalibration@{energy\-Calibration}!energyCalibration@{energyCalibration}}
|
||||
\index{energyCalibration@{energyCalibration}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}energy\-Calibration::energy\-Calibration ()}\label{classenergyCalibration_16f0658d2b526f52784057b2166efd22}
|
||||
|
||||
|
||||
default constructor - creates the function with which the s-curves will be fitted \index{energyCalibration@{energy\-Calibration}!~energyCalibration@{$\sim$energyCalibration}}
|
||||
\index{~energyCalibration@{$\sim$energyCalibration}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}energy\-Calibration::$\sim$energy\-Calibration ()}\label{classenergyCalibration_3bae2b9c26893daa8f583758509c844f}
|
||||
|
||||
|
||||
default destructor - deletes the function with which the s-curves will be fitted
|
||||
|
||||
\subsection{Member Function Documentation}
|
||||
\index{energyCalibration@{energy\-Calibration}!calibrate@{calibrate}}
|
||||
\index{calibrate@{calibrate}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TGraph\-Errors$\ast$ energy\-Calibration::calibrate (int {\em nscan}, Double\_\-t $\ast$ {\em en}, Double\_\-t $\ast$ {\em een}, TH1F $\ast$$\ast$ {\em h1}, Double\_\-t \& {\em gain}, Double\_\-t \& {\em off}, Double\_\-t \& {\em egain}, Double\_\-t \& {\em eoff}, int {\em integral} = {\tt 1})\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_378daeddde40b6127ee6ed595506928c}
|
||||
|
||||
|
||||
calculates gain and offset for the set of energies \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em nscan}]number of energy scans \item[{\em en}]array of energies (nscan long) \item[{\em een}]array of errors on energies (nscan long) - can be NULL! \item[{\em h1}]array of TH1 \item[{\em gain}]reference to gain resulting from the fit \item[{\em offset}]reference to offset resulting from the fit \item[{\em integral}]1 is an s-curve set (default), 0 spectra \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]graph energy vs peak/inflection point \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!calibrateScurves@{calibrateScurves}}
|
||||
\index{calibrateScurves@{calibrateScurves}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TGraph\-Errors$\ast$ energy\-Calibration::calibrate\-Scurves (int {\em nscan}, Double\_\-t $\ast$ {\em en}, Double\_\-t $\ast$ {\em een}, TH1F $\ast$$\ast$ {\em h1}, Double\_\-t \& {\em gain}, Double\_\-t \& {\em off}, Double\_\-t \& {\em egain}, Double\_\-t \& {\em eoff})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibration_6f5ee6771522a31e4fe1eca143e2aa9b}
|
||||
|
||||
|
||||
calculates gain and offset for the set of energy scans \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em nscan}]number of energy scans \item[{\em en}]array of energies (nscan long) \item[{\em een}]array of errors on energies (nscan long) - can be NULL! \item[{\em h1}]array of TH1 \item[{\em gain}]reference to gain resulting from the fit \item[{\em off}]reference to offset resulting from the fit \item[{\em egain}]reference to error on the gain resulting from the fit \item[{\em eoff}]reference to the error on the offset resulting from the fit \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]graph energy vs inflection point \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!calibrateSpectra@{calibrateSpectra}}
|
||||
\index{calibrateSpectra@{calibrateSpectra}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TGraph\-Errors$\ast$ energy\-Calibration::calibrate\-Spectra (int {\em nscan}, Double\_\-t $\ast$ {\em en}, Double\_\-t $\ast$ {\em een}, TH1F $\ast$$\ast$ {\em h1}, Double\_\-t \& {\em gain}, Double\_\-t \& {\em off}, Double\_\-t \& {\em egain}, Double\_\-t \& {\em eoff})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibration_092637f656c0b88d57797e3ebd0f3e58}
|
||||
|
||||
|
||||
calculates gain and offset for the set of energy spectra \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em nscan}]number of energy scans \item[{\em en}]array of energies (nscan long) \item[{\em een}]array of errors on energies (nscan long) - can be NULL! \item[{\em h1}]array of TH1 \item[{\em gain}]reference to gain resulting from the fit \item[{\em off}]reference to offset resulting from the fit \item[{\em egain}]reference to error on the gain resulting from the fit \item[{\em eoff}]reference to the error on the offset resulting from the fit \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]graph energy vs peak \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!fitFunction@{fitFunction}}
|
||||
\index{fitFunction@{fitFunction}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TF1$\ast$ energy\-Calibration::fit\-Function (TF1 $\ast$ {\em fun}, TH1 $\ast$ {\em h1}, Double\_\-t $\ast$ {\em mypar}, Double\_\-t $\ast$ {\em emypar})\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_fe1c6dc5f56d12fe06569f401da19729}
|
||||
|
||||
|
||||
Perfors the fit according to the flags specified and returns the fitted function \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em fun}]function to fit \item[{\em h1}]histogram to fit \item[{\em mypar}]pointer to fit parameters array \item[{\em emypar}]pointer to fit parameter errors \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]the fitted function - can be used e.g. to get the Chi2 or similar \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!fitSCurve@{fitSCurve}}
|
||||
\index{fitSCurve@{fitSCurve}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TF1$\ast$ energy\-Calibration::fit\-SCurve (TH1 $\ast$ {\em h1}, Double\_\-t $\ast$ {\em mypar}, Double\_\-t $\ast$ {\em emypar})}\label{classenergyCalibration_0dcd8e06e31f7b70488a012db12b2bf8}
|
||||
|
||||
|
||||
fits histogram with the s-curve function \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em h1}]1d-histogram to be fitted \item[{\em mypar}]pointer to fit parameters array \item[{\em emypar}]pointer to fit parameter errors \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]the fitted function - can be used e.g. to get the Chi2 or similar \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!fitSpectrum@{fitSpectrum}}
|
||||
\index{fitSpectrum@{fitSpectrum}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TF1$\ast$ energy\-Calibration::fit\-Spectrum (TH1 $\ast$ {\em h1}, Double\_\-t $\ast$ {\em mypar}, Double\_\-t $\ast$ {\em emypar})}\label{classenergyCalibration_7d22b28cd2fad3d334f15f3d6dc7975a}
|
||||
|
||||
|
||||
fits histogram with the spectrum \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em h1}]1d-histogram to be fitted \item[{\em mypar}]pointer to fit parameters array \item[{\em emypar}]pointer to fit parameter errors \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]the fitted function - can be used e.g. to get the Chi2 or similar \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!getFitRange@{getFitRange}}
|
||||
\index{getFitRange@{getFitRange}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void energy\-Calibration::get\-Fit\-Range (Double\_\-t \& {\em mi}, Double\_\-t \& {\em ma})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibration_bfb02327a6897bd97525c01697a1ba4f}
|
||||
|
||||
|
||||
gets the s-curve fit range \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em mi}]reference for minimum of the fit range (-1 is histogram x-min) \item[{\em ma}]reference for maximum of the fit range (-1 is histogram x-max) \end{description}
|
||||
\end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!getStartParameters@{getStartParameters}}
|
||||
\index{getStartParameters@{getStartParameters}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void energy\-Calibration::get\-Start\-Parameters (Double\_\-t $\ast$ {\em par})}\label{classenergyCalibration_fc7411b7a3191748dfcc90f86b823bf4}
|
||||
|
||||
|
||||
get start parameters for the s-curve function \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em par}]parameters, -1 means auto-calculated 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]) -- always positive \end{description}
|
||||
\end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!initFitFunction@{initFitFunction}}
|
||||
\index{initFitFunction@{initFitFunction}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void energy\-Calibration::init\-Fit\-Function (TF1 $\ast$ {\em fun}, TH1 $\ast$ {\em h1})\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_3e84328c11772b6263224340ec924e37}
|
||||
|
||||
|
||||
Initializes the start parameters and the range of the fit depending on the histogram characteristics and/or on the start parameters specified by the user \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em fun}]pointer to function to be initialized \item[{\em h1}]histogram from which to extract the range and start parameters, if not already specified by the user \end{description}
|
||||
\end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!linearCalibration@{linearCalibration}}
|
||||
\index{linearCalibration@{linearCalibration}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TGraph\-Errors$\ast$ energy\-Calibration::linear\-Calibration (int {\em nscan}, Double\_\-t $\ast$ {\em en}, Double\_\-t $\ast$ {\em een}, Double\_\-t $\ast$ {\em fl}, Double\_\-t $\ast$ {\em efl}, Double\_\-t \& {\em gain}, Double\_\-t \& {\em off}, Double\_\-t \& {\em egain}, Double\_\-t \& {\em eoff})}\label{classenergyCalibration_c7f46f2d051f28211681e851f99d3fc4}
|
||||
|
||||
|
||||
calculates gain and offset for the set of inflection points \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em nscan}]number of energy scans \item[{\em en}]array of energies (nscan long) \item[{\em een}]array of errors on energies (nscan long) - can be NULL! \item[{\em fl}]array of inflection points (nscan long) \item[{\em efl}]array of errors on the inflection points (nscan long) \item[{\em gain}]reference to gain resulting from the fit \item[{\em off}]reference to offset resulting from the fit \item[{\em egain}]reference to error on the gain resulting from the fit \item[{\em eoff}]reference to the error on the offset resulting from the fit \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]graph energy vs inflection point \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!setChargeSharing@{setChargeSharing}}
|
||||
\index{setChargeSharing@{setChargeSharing}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int energy\-Calibration::set\-Charge\-Sharing (int {\em p} = {\tt -1})}\label{classenergyCalibration_e2809b419799e8b199944f185d4ebab8}
|
||||
|
||||
|
||||
sets plot flag \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em p}]plot flag (-1 gets, 0 unsets, $>$0 plot) \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]current plot flag \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!setFitRange@{setFitRange}}
|
||||
\index{setFitRange@{setFitRange}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void energy\-Calibration::set\-Fit\-Range (Double\_\-t {\em mi}, Double\_\-t {\em ma})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibration_695cef5428a833d515172d987774f67b}
|
||||
|
||||
|
||||
sets the s-curve fit range \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em mi}]minimum of the fit range (-1 is histogram x-min) \item[{\em ma}]maximum of the fit range (-1 is histogram x-max) \end{description}
|
||||
\end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!setPlotFlag@{setPlotFlag}}
|
||||
\index{setPlotFlag@{setPlotFlag}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int energy\-Calibration::set\-Plot\-Flag (int {\em p} = {\tt -1})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibration_3d9af0857f7a68b7e4519917ea97e6be}
|
||||
|
||||
|
||||
sets plot flag \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em p}]plot flag (-1 gets, 0 unsets, $>$0 plot) \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]current plot flag \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!setScanSign@{setScanSign}}
|
||||
\index{setScanSign@{setScanSign}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int energy\-Calibration::set\-Scan\-Sign (int {\em s} = {\tt 0})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibration_7dbf1676b30ffe90c5aa917f1b2b77ee}
|
||||
|
||||
|
||||
sets scan sign \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em s}]can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) otherwise gets \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]current scan sign can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) \end{Desc}
|
||||
\index{energyCalibration@{energy\-Calibration}!setStartParameters@{setStartParameters}}
|
||||
\index{setStartParameters@{setStartParameters}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void energy\-Calibration::set\-Start\-Parameters (Double\_\-t $\ast$ {\em par})}\label{classenergyCalibration_ba156f5290f7b404d7b8ea735fd7e7bf}
|
||||
|
||||
|
||||
set start parameters for the s-curve function \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em par}]parameters, -1 sets to auto-calculation 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]) -- always positive \end{description}
|
||||
\end{Desc}
|
||||
|
||||
|
||||
\subsection{Member Data Documentation}
|
||||
\index{energyCalibration@{energy\-Calibration}!ampl@{ampl}}
|
||||
\index{ampl@{ampl}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::ampl}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_77b954cd513271d2cfafee6033435584}
|
||||
|
||||
|
||||
start value for the number of photons \index{energyCalibration@{energy\-Calibration}!bg_offset@{bg\_\-offset}}
|
||||
\index{bg_offset@{bg\_\-offset}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::bg\_\-offset}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_aa11f256a8b0a94c28a98d068013b327}
|
||||
|
||||
|
||||
start value for the background pedestal \index{energyCalibration@{energy\-Calibration}!bg_slope@{bg\_\-slope}}
|
||||
\index{bg_slope@{bg\_\-slope}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::bg\_\-slope}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_9676e5cc2757c723c2262d641fb4b8b4}
|
||||
|
||||
|
||||
start value for the background slope \index{energyCalibration@{energy\-Calibration}!cs_flag@{cs\_\-flag}}
|
||||
\index{cs_flag@{cs\_\-flag}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int \bf{energy\-Calibration::cs\_\-flag}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_ce0be11dcc8418db3c7c2b139a015c96}
|
||||
|
||||
|
||||
0 functions without charge sharing contribution, $>$0 with charge sharing contribution \index{energyCalibration@{energy\-Calibration}!cs_slope@{cs\_\-slope}}
|
||||
\index{cs_slope@{cs\_\-slope}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::cs\_\-slope}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_ca1efedbfea0ad5c9ea2d794e3fb368d}
|
||||
|
||||
|
||||
start value for the charge sharing slope \index{energyCalibration@{energy\-Calibration}!fit_max@{fit\_\-max}}
|
||||
\index{fit_max@{fit\_\-max}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::fit\_\-max}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_e979386a3f787ef706f4a9ec5bf41d7d}
|
||||
|
||||
|
||||
maximum of the s-curve fitting range, -1 is histogram x-max \index{energyCalibration@{energy\-Calibration}!fit_min@{fit\_\-min}}
|
||||
\index{fit_min@{fit\_\-min}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::fit\_\-min}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_262f574732186cdd8d3a11344d03d0bb}
|
||||
|
||||
|
||||
minimum of the s-curve fitting range, -1 is histogram x-min \index{energyCalibration@{energy\-Calibration}!flex@{flex}}
|
||||
\index{flex@{flex}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::flex}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_b99d770f1c9af68d591ed20847813ad1}
|
||||
|
||||
|
||||
start value for the inflection point \index{energyCalibration@{energy\-Calibration}!fscurve@{fscurve}}
|
||||
\index{fscurve@{fscurve}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TF1$\ast$ \bf{energy\-Calibration::fscurve}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_57706a328324c25dd9f8ba6d1486e4ce}
|
||||
|
||||
|
||||
function with which the s-curve will be fitted \index{energyCalibration@{energy\-Calibration}!fspectrum@{fspectrum}}
|
||||
\index{fspectrum@{fspectrum}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}TF1$\ast$ \bf{energy\-Calibration::fspectrum}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_2ee734ab28b78dc5786a7ba430f8baa5}
|
||||
|
||||
|
||||
function with which the spectrum will be fitted \index{energyCalibration@{energy\-Calibration}!funcs@{funcs}}
|
||||
\index{funcs@{funcs}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\bf{energy\-Calibration\-Functions}$\ast$ \bf{energy\-Calibration::funcs}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_e9b3307bf858331241871bde42fdd24e}
|
||||
|
||||
|
||||
\index{energyCalibration@{energy\-Calibration}!noise@{noise}}
|
||||
\index{noise@{noise}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t \bf{energy\-Calibration::noise}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_4461206397e2442c92be9151ee231ec5}
|
||||
|
||||
|
||||
start value for the noise \index{energyCalibration@{energy\-Calibration}!plot_flag@{plot\_\-flag}}
|
||||
\index{plot_flag@{plot\_\-flag}!energyCalibration@{energy\-Calibration}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int \bf{energy\-Calibration::plot\_\-flag}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibration_4edfb157df3624be677177dec0f9555b}
|
||||
|
||||
|
||||
0 does not plot, $>$0 plots (flags?)
|
||||
|
||||
The documentation for this class was generated from the following file:\begin{CompactItemize}
|
||||
\item
|
||||
\bf{energy\-Calibration.h}\end{CompactItemize}
|
@ -0,0 +1,135 @@
|
||||
\section{energy\-Calibration\-Functions Class Reference}
|
||||
\label{classenergyCalibrationFunctions}\index{energyCalibrationFunctions@{energyCalibrationFunctions}}
|
||||
Energy calibration functions.
|
||||
|
||||
|
||||
{\tt \#include $<$energy\-Calibration.h$>$}
|
||||
|
||||
\subsection*{Public Member Functions}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
\bf{energy\-Calibration\-Functions} (int s=-1)
|
||||
\item
|
||||
int \bf{set\-Scan\-Sign} (int s=0)
|
||||
\item
|
||||
Double\_\-t \bf{gauss\-Charge\-Sharing} (Double\_\-t $\ast$x, Double\_\-t $\ast$par)
|
||||
\item
|
||||
Double\_\-t \bf{erf\-Function} (Double\_\-t $\ast$x, Double\_\-t $\ast$par)
|
||||
\item
|
||||
Double\_\-t \bf{erf\-Function\-Charge\-Sharing} (Double\_\-t $\ast$x, Double\_\-t $\ast$par)
|
||||
\item
|
||||
Double\_\-t \bf{erf\-Func\-Fluo} (Double\_\-t $\ast$x, Double\_\-t $\ast$par)
|
||||
\item
|
||||
Double\_\-t \bf{spectrum} (Double\_\-t $\ast$x, Double\_\-t $\ast$par)
|
||||
\item
|
||||
Double\_\-t \bf{scurve} (Double\_\-t $\ast$x, Double\_\-t $\ast$par)
|
||||
\item
|
||||
Double\_\-t \bf{scurve\-Fluo} (Double\_\-t $\ast$x, Double\_\-t $\ast$par)
|
||||
\end{CompactItemize}
|
||||
\subsection*{Static Public Member Functions}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
static float \bf{median} (float $\ast$x, int n)
|
||||
\item
|
||||
static int \bf{quick\_\-select} (int arr[$\,$], int n)
|
||||
\item
|
||||
static int \bf{kth\_\-smallest} (int $\ast$a, int n, int k)
|
||||
\end{CompactItemize}
|
||||
\subsection*{Private Attributes}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
int \bf{sign}
|
||||
\end{CompactItemize}
|
||||
|
||||
|
||||
\subsection{Detailed Description}
|
||||
Energy calibration functions.
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
||||
\subsection{Constructor \& Destructor Documentation}
|
||||
\index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!energyCalibrationFunctions@{energyCalibrationFunctions}}
|
||||
\index{energyCalibrationFunctions@{energyCalibrationFunctions}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}energy\-Calibration\-Functions::energy\-Calibration\-Functions (int {\em s} = {\tt -1})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibrationFunctions_8c17162b89f3b2e642004e7c88a22ac2}
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Member Function Documentation}
|
||||
\index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!erfFuncFluo@{erfFuncFluo}}
|
||||
\index{erfFuncFluo@{erfFuncFluo}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t energy\-Calibration\-Functions::erf\-Func\-Fluo (Double\_\-t $\ast$ {\em x}, Double\_\-t $\ast$ {\em par})}\label{classenergyCalibrationFunctions_a5fbe9da48bc2ef90b699e06ea8c5111}
|
||||
|
||||
|
||||
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]) \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!erfFunction@{erfFunction}}
|
||||
\index{erfFunction@{erfFunction}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t energy\-Calibration\-Functions::erf\-Function (Double\_\-t $\ast$ {\em x}, Double\_\-t $\ast$ {\em par})}\label{classenergyCalibrationFunctions_2da1e3b9a10d23233256f8c2234f2457}
|
||||
|
||||
|
||||
Basic erf function par[0] is the inflection point par[1] is the RMS par[2] is the amplitude \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!erfFunctionChargeSharing@{erfFunctionChargeSharing}}
|
||||
\index{erfFunctionChargeSharing@{erfFunctionChargeSharing}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t energy\-Calibration\-Functions::erf\-Function\-Charge\-Sharing (Double\_\-t $\ast$ {\em x}, Double\_\-t $\ast$ {\em par})}\label{classenergyCalibrationFunctions_8d1b3d0f8b30423dad56d8ce5323a4a8}
|
||||
|
||||
|
||||
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]) \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!gaussChargeSharing@{gaussChargeSharing}}
|
||||
\index{gaussChargeSharing@{gaussChargeSharing}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t energy\-Calibration\-Functions::gauss\-Charge\-Sharing (Double\_\-t $\ast$ {\em x}, Double\_\-t $\ast$ {\em par})}\label{classenergyCalibrationFunctions_e9582e5c46d27ad25d6139d0386698f7}
|
||||
|
||||
|
||||
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]) \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!kth_smallest@{kth\_\-smallest}}
|
||||
\index{kth_smallest@{kth\_\-smallest}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}static int energy\-Calibration\-Functions::kth\_\-smallest (int $\ast$ {\em a}, int {\em n}, int {\em k})\hspace{0.3cm}{\tt [static]}}\label{classenergyCalibrationFunctions_7d9a7b8d0c8ff69638a5fbb9f4c04b90}
|
||||
|
||||
|
||||
Calculates the median of an array of n elements (swaps the arrays!) \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!median@{median}}
|
||||
\index{median@{median}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}static float energy\-Calibration\-Functions::median (float $\ast$ {\em x}, int {\em n})\hspace{0.3cm}{\tt [static]}}\label{classenergyCalibrationFunctions_37f557bacb75213073c8d421cc1240f4}
|
||||
|
||||
|
||||
Calculates the median of an array of n elements \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!quick_select@{quick\_\-select}}
|
||||
\index{quick_select@{quick\_\-select}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}static int energy\-Calibration\-Functions::quick\_\-select (int {\em arr}[$\,$], int {\em n})\hspace{0.3cm}{\tt [static]}}\label{classenergyCalibrationFunctions_a3ab0e7c3c862fb51dfda78f1b09a55c}
|
||||
|
||||
|
||||
Calculates the median of an array of n elements (swaps the arrays!) \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!scurve@{scurve}}
|
||||
\index{scurve@{scurve}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t energy\-Calibration\-Functions::scurve (Double\_\-t $\ast$ {\em x}, Double\_\-t $\ast$ {\em par})}\label{classenergyCalibrationFunctions_e220482622e88a46b12498b0e4d8113a}
|
||||
|
||||
|
||||
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]) \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!scurveFluo@{scurveFluo}}
|
||||
\index{scurveFluo@{scurveFluo}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t energy\-Calibration\-Functions::scurve\-Fluo (Double\_\-t $\ast$ {\em x}, Double\_\-t $\ast$ {\em par})}\label{classenergyCalibrationFunctions_4eba39623b518d67a63192970a78f530}
|
||||
|
||||
|
||||
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]) \index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!setScanSign@{setScanSign}}
|
||||
\index{setScanSign@{setScanSign}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int energy\-Calibration\-Functions::set\-Scan\-Sign (int {\em s} = {\tt 0})\hspace{0.3cm}{\tt [inline]}}\label{classenergyCalibrationFunctions_716759a1ae09ea3c841f824af3ece415}
|
||||
|
||||
|
||||
sets scan sign \begin{Desc}
|
||||
\item[Parameters:]
|
||||
\begin{description}
|
||||
\item[{\em s}]can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) otherwise gets \end{description}
|
||||
\end{Desc}
|
||||
\begin{Desc}
|
||||
\item[Returns:]current scan sign can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) \end{Desc}
|
||||
\index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!spectrum@{spectrum}}
|
||||
\index{spectrum@{spectrum}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Double\_\-t energy\-Calibration\-Functions::spectrum (Double\_\-t $\ast$ {\em x}, Double\_\-t $\ast$ {\em par})}\label{classenergyCalibrationFunctions_015eb05dc34b77642ab2a2a9f126f170}
|
||||
|
||||
|
||||
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
|
||||
|
||||
\subsection{Member Data Documentation}
|
||||
\index{energyCalibrationFunctions@{energy\-Calibration\-Functions}!sign@{sign}}
|
||||
\index{sign@{sign}!energyCalibrationFunctions@{energy\-Calibration\-Functions}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int \bf{energy\-Calibration\-Functions::sign}\hspace{0.3cm}{\tt [private]}}\label{classenergyCalibrationFunctions_4fc7c435169b5bf4672cf654270097d0}
|
||||
|
||||
|
||||
|
||||
|
||||
The documentation for this class was generated from the following file:\begin{CompactItemize}
|
||||
\item
|
||||
\bf{energy\-Calibration.h}\end{CompactItemize}
|
@ -0,0 +1,78 @@
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{doxygen}
|
||||
\RequirePackage{calc}
|
||||
\RequirePackage{array}
|
||||
\pagestyle{fancyplain}
|
||||
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
|
||||
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
|
||||
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
|
||||
\lhead[\fancyplain{}{\bfseries\thepage}]
|
||||
{\fancyplain{}{\bfseries\rightmark}}
|
||||
\rhead[\fancyplain{}{\bfseries\leftmark}]
|
||||
{\fancyplain{}{\bfseries\thepage}}
|
||||
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Mar 27 16:32:29 2012 by Doxygen }]{}
|
||||
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Mar 27 16:32:29 2012 by Doxygen }}
|
||||
\cfoot{}
|
||||
\newenvironment{Code}
|
||||
{\footnotesize}
|
||||
{\normalsize}
|
||||
\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
|
||||
\newenvironment{DocInclude}
|
||||
{\footnotesize}
|
||||
{\normalsize}
|
||||
\newenvironment{VerbInclude}
|
||||
{\footnotesize}
|
||||
{\normalsize}
|
||||
\newenvironment{Image}
|
||||
{\begin{figure}[H]}
|
||||
{\end{figure}}
|
||||
\newenvironment{ImageNoCaption}{}{}
|
||||
\newenvironment{CompactList}
|
||||
{\begin{list}{}{
|
||||
\setlength{\leftmargin}{0.5cm}
|
||||
\setlength{\itemsep}{0pt}
|
||||
\setlength{\parsep}{0pt}
|
||||
\setlength{\topsep}{0pt}
|
||||
\renewcommand{\makelabel}{\hfill}}}
|
||||
{\end{list}}
|
||||
\newenvironment{CompactItemize}
|
||||
{
|
||||
\begin{itemize}
|
||||
\setlength{\itemsep}{-3pt}
|
||||
\setlength{\parsep}{0pt}
|
||||
\setlength{\topsep}{0pt}
|
||||
\setlength{\partopsep}{0pt}
|
||||
}
|
||||
{\end{itemize}}
|
||||
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
|
||||
\newlength{\tmplength}
|
||||
\newenvironment{TabularC}[1]
|
||||
{
|
||||
\setlength{\tmplength}
|
||||
{\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
|
||||
\par\begin{tabular*}{\linewidth}
|
||||
{*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
|
||||
}
|
||||
{\end{tabular*}\par}
|
||||
\newcommand{\entrylabel}[1]{
|
||||
{\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}}
|
||||
\newenvironment{Desc}
|
||||
{\begin{list}{}
|
||||
{
|
||||
\settowidth{\labelwidth}{40pt}
|
||||
\setlength{\leftmargin}{\labelwidth}
|
||||
\setlength{\parsep}{0pt}
|
||||
\setlength{\itemsep}{-4pt}
|
||||
\renewcommand{\makelabel}{\entrylabel}
|
||||
}
|
||||
}
|
||||
{\end{list}}
|
||||
\newenvironment{Indent}
|
||||
{\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
|
||||
\item[]\ignorespaces}
|
||||
{\unskip\end{list}}
|
||||
\setlength{\parindent}{0cm}
|
||||
\setlength{\parskip}{0.2cm}
|
||||
\addtocounter{secnumdepth}{1}
|
||||
\sloppy
|
||||
\usepackage[T1]{fontenc}
|
@ -0,0 +1,37 @@
|
||||
\section{energy\-Calibration.h File Reference}
|
||||
\label{energyCalibration_8h}\index{energyCalibration.h@{energyCalibration.h}}
|
||||
{\tt \#include $<$TROOT.h$>$}\par
|
||||
{\tt \#include $<$TF1.h$>$}\par
|
||||
\subsection*{Namespaces}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
namespace \bf{std}
|
||||
\end{CompactItemize}
|
||||
\subsection*{Classes}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
class \bf{energy\-Calibration\-Functions}
|
||||
\begin{CompactList}\small\item\em Energy calibration functions. \item\end{CompactList}\item
|
||||
class \bf{energy\-Calibration}
|
||||
\end{CompactItemize}
|
||||
\subsection*{Variables}
|
||||
\begin{CompactItemize}
|
||||
\item
|
||||
const float \bf{conven} = 1000./3.6
|
||||
\item
|
||||
const float \bf{el} = 1.67E-4
|
||||
\end{CompactItemize}
|
||||
|
||||
|
||||
\subsection{Variable Documentation}
|
||||
\index{energyCalibration.h@{energy\-Calibration.h}!conven@{conven}}
|
||||
\index{conven@{conven}!energyCalibration.h@{energy\-Calibration.h}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const float \bf{conven} = 1000./3.6}\label{energyCalibration_8h_a48a6c1eb7d418c5d0618fbb161ae321}
|
||||
|
||||
|
||||
electrons/ke\-V \index{energyCalibration.h@{energy\-Calibration.h}!el@{el}}
|
||||
\index{el@{el}!energyCalibration.h@{energy\-Calibration.h}}
|
||||
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const float \bf{el} = 1.67E-4}\label{energyCalibration_8h_d1db7b454cab6ae1749310d7f444849b}
|
||||
|
||||
|
||||
electron charge in f\-C
|
@ -0,0 +1,4 @@
|
||||
\section{File List}
|
||||
Here is a list of all files with brief descriptions:\begin{CompactList}
|
||||
\item\contentsline{section}{\bf{energy\-Calibration.h} }{\pageref{energyCalibration_8h}}{}
|
||||
\end{CompactList}
|
@ -0,0 +1,3 @@
|
||||
\section{Introduction}\label{index_intro_sec}
|
||||
We know very well s-curves etc. but at the end everybody uses different functions ;-).\subsection{Motivation}\label{index_mot_sec}
|
||||
It would be greate to use everybody the same functions...
|
@ -0,0 +1,4 @@
|
||||
\section{Namespace List}
|
||||
Here is a list of all namespaces with brief descriptions:\begin{CompactList}
|
||||
\item\contentsline{section}{\bf{std} }{\pageref{namespacestd}}{}
|
||||
\end{CompactList}
|
@ -0,0 +1,4 @@
|
||||
\section{std Namespace Reference}
|
||||
\label{namespacestd}\index{std@{std}}
|
||||
|
||||
|
@ -0,0 +1,46 @@
|
||||
\documentclass[a4paper]{book}
|
||||
\usepackage{a4wide}
|
||||
\usepackage{makeidx}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{multicol}
|
||||
\usepackage{float}
|
||||
\usepackage{textcomp}
|
||||
\usepackage{alltt}
|
||||
\usepackage{doxygen}
|
||||
\makeindex
|
||||
\setcounter{tocdepth}{1}
|
||||
\renewcommand{\footrulewidth}{0.4pt}
|
||||
\begin{document}
|
||||
\begin{titlepage}
|
||||
\vspace*{7cm}
|
||||
\begin{center}
|
||||
{\Large Reference Manual}\\
|
||||
\vspace*{1cm}
|
||||
{\large Generated by Doxygen 1.4.7}\\
|
||||
\vspace*{0.5cm}
|
||||
{\small Tue Mar 27 16:32:29 2012}\\
|
||||
\end{center}
|
||||
\end{titlepage}
|
||||
\clearemptydoublepage
|
||||
\pagenumbering{roman}
|
||||
\tableofcontents
|
||||
\clearemptydoublepage
|
||||
\pagenumbering{arabic}
|
||||
\chapter{Common Root library for SLS detectors data analysis }
|
||||
\label{index}\input{index}
|
||||
\chapter{Namespace Index}
|
||||
\input{namespaces}
|
||||
\chapter{Class Index}
|
||||
\input{annotated}
|
||||
\chapter{File Index}
|
||||
\input{files}
|
||||
\chapter{Namespace Documentation}
|
||||
\input{namespacestd}
|
||||
\chapter{Class Documentation}
|
||||
\input{classenergyCalibration}
|
||||
\include{classenergyCalibrationFunctions}
|
||||
\chapter{File Documentation}
|
||||
\input{energyCalibration_8h}
|
||||
\printindex
|
||||
\end{document}
|
65
slsDetectorSoftware/slsDetectorAnalysis/doxy.config
Normal file
65
slsDetectorSoftware/slsDetectorAnalysis/doxy.config
Normal file
@ -0,0 +1,65 @@
|
||||
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
|
||||
# documentation are documented, even if no documentation was available.
|
||||
# Private class members and static file members will be hidden unless
|
||||
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
|
||||
|
||||
EXTRACT_ALL = YES
|
||||
|
||||
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_PRIVATE = YES
|
||||
|
||||
# If the EXTRACT_STATIC tag is set to YES all static members of a file
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_STATIC = YES
|
||||
|
||||
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
|
||||
# defined locally in source files will be included in the documentation.
|
||||
# If set to NO only classes defined in header files are included.
|
||||
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
|
||||
# This flag is only useful for Objective-C code. When set to YES local
|
||||
# methods, which are defined in the implementation section but not in
|
||||
# the interface are included in the documentation.
|
||||
# If set to NO (the default) only methods in the interface are included.
|
||||
|
||||
EXTRACT_LOCAL_METHODS = YES
|
||||
|
||||
# If this flag is set to YES, the members of anonymous namespaces will be
|
||||
# extracted and appear in the documentation as a namespace called
|
||||
# 'anonymous_namespace{file}', where file will be replaced with the base
|
||||
# name of the file that contains the anonymous namespace. By default
|
||||
# anonymous namespace are hidden.
|
||||
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
|
||||
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
|
||||
# undocumented members of documented classes, files or namespaces.
|
||||
# If set to NO (the default) these members will be included in the
|
||||
# various overviews, but no documentation section is generated.
|
||||
# This option has no effect if EXTRACT_ALL is enabled.
|
||||
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
|
||||
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
|
||||
# undocumented classes that are normally visible in the class hierarchy.
|
||||
# If set to NO (the default) these classes will be included in the various
|
||||
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
||||
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
|
||||
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
|
||||
# friend (class|struct|union) declarations.
|
||||
# If set to NO (the default) these declarations will be included in the
|
||||
# documentation.
|
||||
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
|
||||
INPUT = energyCalibration.h
|
||||
|
||||
|
||||
OUTPUT_DIRECTORY = docs
|
||||
|
393
slsDetectorSoftware/slsDetectorAnalysis/energyCalibration.cpp
Normal file
393
slsDetectorSoftware/slsDetectorAnalysis/energyCalibration.cpp
Normal file
@ -0,0 +1,393 @@
|
||||
#include "energyCalibration.h"
|
||||
|
||||
#ifdef ROOT
|
||||
#include <TMath.h>
|
||||
#include <TH1F.h>
|
||||
#include <TGraphErrors.h>
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#define max(a,b) ((a) > (b) ? (a) : (b))
|
||||
#define min(a,b) ((a) < (b) ? (a) : (b))
|
||||
#define ELEM_SWAP(a,b) { register int t=(a);(a)=(b);(b)=t; }
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
#ifdef ROOT
|
||||
Double_t energyCalibrationFunctions::gaussChargeSharing(Double_t *x, Double_t *par) {
|
||||
Double_t f, arg=0;
|
||||
if (par[3]!=0) arg=(x[0]-par[2])/par[3];
|
||||
f=par[4]*TMath::Exp(-1*arg*arg/2.);
|
||||
f=f+par[5]*(par[4]/2*(TMath::Erfc(sign*arg/(TMath::Sqrt(2.)))))+par[0]-par[1]*sign*x[0];
|
||||
return f;
|
||||
}
|
||||
|
||||
// basic erf function
|
||||
Double_t energyCalibrationFunctions::erfFunction(Double_t *x, Double_t *par) {
|
||||
float arg=0;
|
||||
if (par[1]!=0) arg=(par[0]-x[0])/par[1];
|
||||
return ((par[2]/2.*(1+TMath::Erf(sign*arg/(TMath::Sqrt(2))))));
|
||||
};
|
||||
|
||||
|
||||
Double_t energyCalibrationFunctions::erfFunctionChargeSharing(Double_t *x, Double_t *par) {
|
||||
Double_t f;
|
||||
|
||||
f=erfFunction(x, par+2)*(1+par[5]*(par[2]-x[0]))+par[0]-par[1]*x[0]*sign;
|
||||
return f;
|
||||
};
|
||||
|
||||
|
||||
Double_t energyCalibrationFunctions::erfFuncFluo(Double_t *x, Double_t *par) {
|
||||
Double_t f;
|
||||
f=erfFunctionChargeSharing(x, par)+erfFunction(x, par+6)*(1+par[9]*(par[6]-x[0]));
|
||||
return f;
|
||||
};
|
||||
#endif
|
||||
|
||||
float energyCalibrationFunctions::median(float *x, int n){
|
||||
// sorts x into xmed array and returns median
|
||||
// n is number of values already in the xmed array
|
||||
float xmed[n];
|
||||
int k,i,j;
|
||||
|
||||
for (i=0; i<n; i++) {
|
||||
k=0;
|
||||
for (j=0; j<n; j++) {
|
||||
if(*(x+i)>*(x+j))
|
||||
k++;
|
||||
if (*(x+i)==*(x+j)) {
|
||||
if (i>j)
|
||||
k++;
|
||||
}
|
||||
}
|
||||
xmed[k]=*(x+i);
|
||||
}
|
||||
k=n/2;
|
||||
return xmed[k];
|
||||
}
|
||||
|
||||
|
||||
int energyCalibrationFunctions::quick_select(int arr[], int n){
|
||||
int low, high ;
|
||||
int median;
|
||||
int middle, ll, hh;
|
||||
|
||||
low = 0 ; high = n-1 ; median = (low + high) / 2;
|
||||
for (;;) {
|
||||
if (high <= low) /* One element only */
|
||||
return arr[median] ;
|
||||
|
||||
if (high == low + 1) { /* Two elements only */
|
||||
if (arr[low] > arr[high])
|
||||
ELEM_SWAP(arr[low], arr[high]) ;
|
||||
return arr[median] ;
|
||||
}
|
||||
|
||||
/* Find median of low, middle and high items; swap into position low */
|
||||
middle = (low + high) / 2;
|
||||
if (arr[middle] > arr[high]) ELEM_SWAP(arr[middle], arr[high]) ;
|
||||
if (arr[low] > arr[high]) ELEM_SWAP(arr[low], arr[high]) ;
|
||||
if (arr[middle] > arr[low]) ELEM_SWAP(arr[middle], arr[low]) ;
|
||||
|
||||
/* Swap low item (now in position middle) into position (low+1) */
|
||||
ELEM_SWAP(arr[middle], arr[low+1]) ;
|
||||
|
||||
/* Nibble from each end towards middle, swapping items when stuck */
|
||||
ll = low + 1;
|
||||
hh = high;
|
||||
for (;;) {
|
||||
do ll++; while (arr[low] > arr[ll]) ;
|
||||
do hh--; while (arr[hh] > arr[low]) ;
|
||||
|
||||
if (hh < ll)
|
||||
break;
|
||||
|
||||
ELEM_SWAP(arr[ll], arr[hh]) ;
|
||||
}
|
||||
|
||||
/* Swap middle item (in position low) back into correct position */
|
||||
ELEM_SWAP(arr[low], arr[hh]) ;
|
||||
|
||||
/* Re-set active partition */
|
||||
if (hh <= median)
|
||||
low = ll;
|
||||
if (hh >= median)
|
||||
high = hh - 1;
|
||||
}
|
||||
}
|
||||
|
||||
int energyCalibrationFunctions::kth_smallest(int *a, int n, int k){
|
||||
register int i,j,l,m ;
|
||||
register float x ;
|
||||
|
||||
l=0 ; m=n-1 ;
|
||||
while (l<m) {
|
||||
x=a[k] ;
|
||||
i=l ;
|
||||
j=m ;
|
||||
do {
|
||||
while (a[i]<x) i++ ;
|
||||
while (x<a[j]) j-- ;
|
||||
if (i<=j) {
|
||||
ELEM_SWAP(a[i],a[j]) ;
|
||||
i++ ; j-- ;
|
||||
}
|
||||
} while (i<=j) ;
|
||||
if (j<k) l=i ;
|
||||
if (k<i) m=j ;
|
||||
}
|
||||
return a[k] ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
Double_t energyCalibrationFunctions::spectrum(Double_t *x, Double_t *par) {
|
||||
return gaussChargeSharing(x,par);
|
||||
}
|
||||
|
||||
|
||||
Double_t energyCalibrationFunctions::scurve(Double_t *x, Double_t *par) {
|
||||
return erfFunctionChargeSharing(x,par);
|
||||
}
|
||||
|
||||
|
||||
Double_t energyCalibrationFunctions::scurveFluo(Double_t *x, Double_t *par) {
|
||||
return erfFuncFluo(x,par);
|
||||
}
|
||||
#endif
|
||||
|
||||
energyCalibration::energyCalibration() :
|
||||
#ifdef ROOT
|
||||
fit_min(-1),
|
||||
fit_max(-1),
|
||||
bg_offset(-1),
|
||||
bg_slope(-1),
|
||||
flex(-1),
|
||||
noise(-1),
|
||||
ampl(-1),
|
||||
cs_slope(-1),
|
||||
fscurve(NULL),
|
||||
fspectrum(NULL),
|
||||
#endif
|
||||
funcs(NULL),
|
||||
plot_flag(1),
|
||||
cs_flag(1)
|
||||
{
|
||||
|
||||
#ifdef ROOT
|
||||
funcs=new energyCalibrationFunctions();
|
||||
|
||||
fscurve=new TF1("fscurve",funcs,&energyCalibrationFunctions::scurve,0,1000,6,"energyCalibrationFunctions","scurve");
|
||||
fscurve->SetParNames("Background Offset","Background Slope","Inflection Point","Noise RMS", "Number of Photons","Charge Sharing Slope");
|
||||
|
||||
fspectrum=new TF1("fspectrum",funcs,&energyCalibrationFunctions::spectrum,0,1000,6,"energyCalibrationFunctions","spectrum");
|
||||
fspectrum->SetParNames("Background Pedestal","Background slope", "Peak position","Noise RMS", "Number of Photons","Charge Sharing Pedestal");
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
energyCalibration::~energyCalibration(){
|
||||
#ifdef ROOT
|
||||
delete fscurve;
|
||||
delete fspectrum;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#ifdef ROOT
|
||||
void energyCalibration::setStartParameters(Double_t *par){
|
||||
bg_offset=par[0];
|
||||
bg_slope=par[1];
|
||||
flex=par[2];
|
||||
noise=par[3];
|
||||
ampl=par[4];
|
||||
cs_slope=par[5];
|
||||
}
|
||||
|
||||
|
||||
void energyCalibration::getStartParameters(Double_t *par){
|
||||
par[0]=bg_offset;
|
||||
par[1]=bg_slope;
|
||||
par[2]=flex;
|
||||
par[3]=noise;
|
||||
par[4]=ampl;
|
||||
par[5]=cs_slope;
|
||||
}
|
||||
|
||||
#endif
|
||||
int energyCalibration::setChargeSharing(int p) {
|
||||
if (p>=0) {
|
||||
cs_flag=p;
|
||||
#ifdef ROOT
|
||||
if (p) {
|
||||
fscurve->ReleaseParameter(5);
|
||||
fspectrum->ReleaseParameter(1);
|
||||
} else {
|
||||
fscurve->FixParameter(5,0);
|
||||
fspectrum->FixParameter(1,0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return cs_flag;
|
||||
}
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
void energyCalibration::initFitFunction(TF1 *fun, TH1 *h1) {
|
||||
|
||||
Double_t min=fit_min, max=fit_max;
|
||||
|
||||
Double_t mypar[6];
|
||||
|
||||
if (max==-1)
|
||||
max=h1->GetXaxis()->GetXmax();
|
||||
|
||||
if (min==-1)
|
||||
min=h1->GetXaxis()->GetXmin();
|
||||
|
||||
|
||||
if (bg_offset==-1)
|
||||
mypar[0]=0;
|
||||
else
|
||||
mypar[0]=bg_offset;
|
||||
|
||||
|
||||
if (bg_slope==-1)
|
||||
mypar[1]=0;
|
||||
else
|
||||
mypar[1]=bg_slope;
|
||||
|
||||
|
||||
if (flex==-1)
|
||||
mypar[2]=(min+max)/2.;
|
||||
else
|
||||
mypar[2]=flex;
|
||||
|
||||
|
||||
if (noise==-1)
|
||||
mypar[3]=0.1;
|
||||
else
|
||||
mypar[3]=noise;
|
||||
|
||||
if (ampl==-1)
|
||||
mypar[4]=h1->GetBinContent(h1->GetXaxis()->FindBin(0.5*(max+min)));
|
||||
else
|
||||
mypar[4]=ampl;
|
||||
|
||||
if (cs_slope==-1)
|
||||
mypar[5]=0;
|
||||
else
|
||||
mypar[5]=cs_slope;
|
||||
|
||||
fun->SetParameters(mypar);
|
||||
|
||||
fun->SetRange(min,max);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
TF1* energyCalibration::fitFunction(TF1 *fun, TH1 *h1, Double_t *mypar, Double_t *emypar) {
|
||||
|
||||
|
||||
TF1* fitfun;
|
||||
|
||||
char fname[100];
|
||||
|
||||
strcpy(fname, fun->GetName());
|
||||
|
||||
if (plot_flag) {
|
||||
h1->Fit(fname,"R");
|
||||
} else
|
||||
h1->Fit(fname,"R0Q");
|
||||
|
||||
|
||||
fitfun= h1->GetFunction(fname);
|
||||
fitfun->GetParameters(mypar);
|
||||
for (int ip=0; ip<6; ip++) {
|
||||
emypar[ip]=fitfun->GetParError(ip);
|
||||
}
|
||||
return fitfun;
|
||||
}
|
||||
|
||||
TF1* energyCalibration::fitSCurve(TH1 *h1, Double_t *mypar, Double_t *emypar) {
|
||||
|
||||
|
||||
|
||||
initFitFunction(fscurve,h1);
|
||||
return fitFunction(fscurve, h1, mypar, emypar);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TF1* energyCalibration::fitSpectrum(TH1 *h1, Double_t *mypar, Double_t *emypar) {
|
||||
initFitFunction(fspectrum,h1);
|
||||
return fitFunction(fspectrum, h1, mypar, emypar);
|
||||
}
|
||||
|
||||
|
||||
|
||||
TGraphErrors* energyCalibration::linearCalibration(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) {
|
||||
|
||||
TGraphErrors *gr;
|
||||
|
||||
Double_t mypar[2];
|
||||
|
||||
gr = new TGraphErrors(nscan,en,fl,een,efl);
|
||||
|
||||
if (plot_flag) {
|
||||
gr->Fit("pol1");
|
||||
gr->SetMarkerStyle(20);
|
||||
} else
|
||||
gr->Fit("pol1","0Q");
|
||||
|
||||
TF1 *fitfun= gr->GetFunction("pol1");
|
||||
fitfun->GetParameters(mypar);
|
||||
|
||||
egain=fitfun->GetParError(1);
|
||||
eoff=fitfun->GetParError(0);
|
||||
|
||||
gain=funcs->setScanSign()*mypar[1];
|
||||
off=mypar[0];
|
||||
|
||||
return gr;
|
||||
}
|
||||
|
||||
|
||||
TGraphErrors* energyCalibration::calibrate(int nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff, int integral) {
|
||||
|
||||
TH1F *h;
|
||||
|
||||
Double_t mypar[6], emypar[6];
|
||||
Double_t fl[nscan], efl[nscan];
|
||||
|
||||
|
||||
for (int ien=0; ien<nscan; ien++) {
|
||||
h=h1[ien];
|
||||
if (integral)
|
||||
fitSCurve(h,mypar,emypar);
|
||||
else
|
||||
fitSpectrum(h,mypar,emypar);
|
||||
|
||||
fl[ien]=mypar[2];
|
||||
efl[ien]=emypar[2];
|
||||
}
|
||||
return linearCalibration(nscan,en,een,fl,efl,gain,off, egain, eoff);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
386
slsDetectorSoftware/slsDetectorAnalysis/energyCalibration.h
Normal file
386
slsDetectorSoftware/slsDetectorAnalysis/energyCalibration.h
Normal file
@ -0,0 +1,386 @@
|
||||
|
||||
#ifndef ENERGYCALIBRATION_H
|
||||
#define ENERGYCALIBRATION_H
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
#include <TROOT.h>
|
||||
#include <TF1.h>
|
||||
class TH1F;
|
||||
class TGraphErrors;
|
||||
#endif
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
|
||||
|
||||
const float conven=1000./3.6; /**< electrons/keV */
|
||||
const float el=1.67E-4; /**< electron charge in fC */
|
||||
|
||||
|
||||
|
||||
/**
|
||||
\mainpage Common Root library for SLS detectors data analysis
|
||||
*
|
||||
* \section intro_sec Introduction
|
||||
We know very well s-curves etc. but at the end everybody uses different functions ;-).
|
||||
|
||||
* \subsection mot_sec Motivation
|
||||
It would be greate to use everybody the same functions...
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
@libdoc The energiCalibration class contains all the necessary functions for s-curve fitting and linear calibration of the threshold.
|
||||
*
|
||||
* @short Energy calibration functions
|
||||
* @author Anna Bergamaschi
|
||||
* @version 0.1alpha
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
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)
|
||||
|
||||
*/
|
||||
class energyCalibrationFunctions {
|
||||
|
||||
public:
|
||||
|
||||
energyCalibrationFunctions(int s=-1) {setScanSign(s);};
|
||||
|
||||
/** sets scan sign
|
||||
\param s can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) otherwise gets
|
||||
\returns current scan sign can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions)
|
||||
*/
|
||||
int setScanSign(int s=0) {if (s==1 || s==-1) sign=s; return sign;};;
|
||||
|
||||
|
||||
#ifdef ROOT
|
||||
/**
|
||||
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])
|
||||
*/
|
||||
Double_t gaussChargeSharing(Double_t *x, Double_t *par);
|
||||
|
||||
/**
|
||||
Basic erf function
|
||||
par[0] is the inflection point
|
||||
par[1] is the RMS
|
||||
par[2] is the amplitude
|
||||
*/
|
||||
Double_t erfFunction(Double_t *x, Double_t *par) ;
|
||||
|
||||
/** 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])
|
||||
*/
|
||||
Double_t erfFunctionChargeSharing(Double_t *x, Double_t *par);
|
||||
|
||||
/** 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])
|
||||
*/
|
||||
|
||||
Double_t erfFuncFluo(Double_t *x, Double_t *par);
|
||||
|
||||
|
||||
/**
|
||||
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
|
||||
*/
|
||||
Double_t spectrum(Double_t *x, Double_t *par);
|
||||
|
||||
|
||||
/** 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])
|
||||
*/
|
||||
Double_t scurve(Double_t *x, Double_t *par);
|
||||
|
||||
|
||||
|
||||
/** 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])
|
||||
*/
|
||||
Double_t scurveFluo(Double_t *x, Double_t *par);
|
||||
|
||||
#endif
|
||||
|
||||
/** Calculates the median of an array of n elements */
|
||||
static float median(float *x, int n);
|
||||
/** Calculates the median of an array of n elements (swaps the arrays!)*/
|
||||
static int quick_select(int arr[], int n);
|
||||
/** Calculates the median of an array of n elements (swaps the arrays!)*/
|
||||
static int kth_smallest(int *a, int n, int k);
|
||||
|
||||
private:
|
||||
int sign;
|
||||
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
class alowing the energy calibration of photon counting and anlogue detectors
|
||||
|
||||
*/
|
||||
|
||||
class energyCalibration {
|
||||
|
||||
|
||||
public:
|
||||
/**
|
||||
default constructor - creates the function with which the s-curves will be fitted
|
||||
*/
|
||||
energyCalibration();
|
||||
|
||||
/**
|
||||
default destructor - deletes the function with which the s-curves will be fitted
|
||||
*/
|
||||
~energyCalibration();
|
||||
|
||||
/** sets plot flag
|
||||
\param p plot flag (-1 gets, 0 unsets, >0 plot)
|
||||
\returns current plot flag
|
||||
*/
|
||||
int setPlotFlag(int p=-1) {if (p>=0) plot_flag=p; return plot_flag;};
|
||||
|
||||
/** sets scan sign
|
||||
\param s can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions) otherwise gets
|
||||
\returns current scan sign can be 1 (energy and x-axis have the same direction) or -1 (energy and x-axis have opposite directions)
|
||||
*/
|
||||
int setScanSign(int s=0) {return funcs->setScanSign(s);};
|
||||
|
||||
/** sets plot flag
|
||||
\param p plot flag (-1 gets, 0 unsets, >0 plot)
|
||||
\returns current plot flag
|
||||
*/
|
||||
int setChargeSharing(int p=-1);
|
||||
|
||||
#ifdef ROOT
|
||||
/** sets the s-curve fit range
|
||||
\param mi minimum of the fit range (-1 is histogram x-min)
|
||||
\param ma maximum of the fit range (-1 is histogram x-max)
|
||||
*/
|
||||
void setFitRange(Double_t mi, Double_t ma){fit_min=mi; fit_max=ma;};
|
||||
|
||||
/** gets the s-curve fit range
|
||||
\param mi reference for minimum of the fit range (-1 is histogram x-min)
|
||||
\param ma reference for maximum of the fit range (-1 is histogram x-max)
|
||||
*/
|
||||
void getFitRange(Double_t &mi, Double_t &ma){mi=fit_min; ma=fit_max;};
|
||||
|
||||
|
||||
/** set start parameters for the s-curve function
|
||||
\param par parameters, -1 sets to auto-calculation
|
||||
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]) -- always positive
|
||||
*/
|
||||
void setStartParameters(Double_t *par);
|
||||
|
||||
/** get start parameters for the s-curve function
|
||||
\param par parameters, -1 means auto-calculated
|
||||
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]) -- always positive
|
||||
*/
|
||||
void getStartParameters(Double_t *par);
|
||||
|
||||
/**
|
||||
fits histogram with the s-curve function
|
||||
\param h1 1d-histogram to be fitted
|
||||
\param mypar pointer to fit parameters array
|
||||
\param emypar pointer to fit parameter errors
|
||||
\returns the fitted function - can be used e.g. to get the Chi2 or similar
|
||||
*/
|
||||
TF1 *fitSCurve(TH1 *h1, Double_t *mypar, Double_t *emypar);
|
||||
|
||||
|
||||
/**
|
||||
fits histogram with the spectrum
|
||||
\param h1 1d-histogram to be fitted
|
||||
\param mypar pointer to fit parameters array
|
||||
\param emypar pointer to fit parameter errors
|
||||
\returns the fitted function - can be used e.g. to get the Chi2 or similar
|
||||
*/
|
||||
TF1 *fitSpectrum(TH1 *h1, Double_t *mypar, Double_t *emypar);
|
||||
|
||||
|
||||
/**
|
||||
calculates gain and offset for the set of inflection points
|
||||
\param nscan number of energy scans
|
||||
\param en array of energies (nscan long)
|
||||
\param een array of errors on energies (nscan long) - can be NULL!
|
||||
\param fl array of inflection points (nscan long)
|
||||
\param efl array of errors on the inflection points (nscan long)
|
||||
\param gain reference to gain resulting from the fit
|
||||
\param off reference to offset resulting from the fit
|
||||
\param egain reference to error on the gain resulting from the fit
|
||||
\param eoff reference to the error on the offset resulting from the fit
|
||||
\returns graph energy vs inflection point
|
||||
*/
|
||||
TGraphErrors* linearCalibration(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);
|
||||
|
||||
/**
|
||||
calculates gain and offset for the set of energy scans
|
||||
\param nscan number of energy scans
|
||||
\param en array of energies (nscan long)
|
||||
\param een array of errors on energies (nscan long) - can be NULL!
|
||||
\param h1 array of TH1
|
||||
\param gain reference to gain resulting from the fit
|
||||
\param off reference to offset resulting from the fit
|
||||
\param egain reference to error on the gain resulting from the fit
|
||||
\param eoff reference to the error on the offset resulting from the fit
|
||||
\returns graph energy vs inflection point
|
||||
*/
|
||||
TGraphErrors* calibrateScurves(int nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff){return calibrate(nscan, en, een, h1, gain, off, egain, eoff, 1);};
|
||||
|
||||
/**
|
||||
calculates gain and offset for the set of energy spectra
|
||||
\param nscan number of energy scans
|
||||
\param en array of energies (nscan long)
|
||||
\param een array of errors on energies (nscan long) - can be NULL!
|
||||
\param h1 array of TH1
|
||||
\param gain reference to gain resulting from the fit
|
||||
\param off reference to offset resulting from the fit
|
||||
\param egain reference to error on the gain resulting from the fit
|
||||
\param eoff reference to the error on the offset resulting from the fit
|
||||
\returns graph energy vs peak
|
||||
*/
|
||||
TGraphErrors* calibrateSpectra(int nscan, Double_t *en, Double_t *een, TH1F **h1, Double_t &gain, Double_t &off, Double_t &egain, Double_t &eoff){return calibrate(nscan, en, een, h1, gain, off, egain, eoff, 0);};
|
||||
|
||||
|
||||
#endif
|
||||
private:
|
||||
|
||||
#ifdef ROOT
|
||||
/**
|
||||
calculates gain and offset for the set of energies
|
||||
\param nscan number of energy scans
|
||||
\param en array of energies (nscan long)
|
||||
\param een array of errors on energies (nscan long) - can be NULL!
|
||||
\param h1 array of TH1
|
||||
\param gain reference to gain resulting from the fit
|
||||
\param off reference to offset resulting from the fit
|
||||
\param egain reference to error on the gain resulting from the fit
|
||||
\param eoff reference to the error on the offset resulting from the fit
|
||||
\param integral 1 is an s-curve set (default), 0 spectra
|
||||
\returns graph energy vs peak/inflection point
|
||||
*/
|
||||
TGraphErrors* calibrate(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);
|
||||
|
||||
|
||||
/**
|
||||
Initializes the start parameters and the range of the fit depending on the histogram characteristics and/or on the start parameters specified by the user
|
||||
\param fun pointer to function to be initialized
|
||||
\param h1 histogram from which to extract the range and start parameters, if not already specified by the user
|
||||
|
||||
*/
|
||||
|
||||
void initFitFunction(TF1 *fun, TH1 *h1);
|
||||
|
||||
|
||||
/**
|
||||
Perfors the fit according to the flags specified and returns the fitted function
|
||||
\param fun function to fit
|
||||
\param h1 histogram to fit
|
||||
\param mypar pointer to fit parameters array
|
||||
\param emypar pointer to fit parameter errors
|
||||
\returns the fitted function - can be used e.g. to get the Chi2 or similar
|
||||
*/
|
||||
TF1 *fitFunction(TF1 *fun, TH1 *h1, Double_t *mypar, Double_t *emypar);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef ROOT
|
||||
Double_t fit_min; /**< minimum of the s-curve fitting range, -1 is histogram x-min */
|
||||
Double_t fit_max; /**< maximum of the s-curve fitting range, -1 is histogram x-max */
|
||||
|
||||
Double_t bg_offset; /**< start value for the background pedestal */
|
||||
Double_t bg_slope; /**< start value for the background slope */
|
||||
Double_t flex; /**< start value for the inflection point */
|
||||
Double_t noise; /**< start value for the noise */
|
||||
Double_t ampl; /**< start value for the number of photons */
|
||||
Double_t cs_slope; /**< start value for the charge sharing slope */
|
||||
|
||||
|
||||
TF1 *fscurve; /**< function with which the s-curve will be fitted */
|
||||
|
||||
TF1 *fspectrum; /**< function with which the spectrum will be fitted */
|
||||
|
||||
#endif
|
||||
|
||||
energyCalibrationFunctions *funcs;
|
||||
int plot_flag; /**< 0 does not plot, >0 plots (flags?) */
|
||||
|
||||
int cs_flag; /**< 0 functions without charge sharing contribution, >0 with charge sharing contribution */
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user