00001
00002
00003
00004 #ifndef MYTHEN_DETECTOR_H
00005 #define MYTHEN_DETECTOR_H
00006
00007 #include "slsDetector.h"
00008
00009 #define defaultTDead {170,90,750}
00010
00011 using namespace std;
00023 class mythenDetector : public slsDetector{
00024
00025
00026
00027 public:
00031 mythenDetector(int id=0) : slsDetector(MYTHEN, id){};
00032
00033
00035 ~mythenDetector(){};
00036
00037
00038 int readConfigurationFile(string const fname);
00050 int writeConfigurationFile(string const fname);
00051
00052
00053
00054
00055
00056
00062 int dumpDetectorSetup(string const fname);
00068 int retrieveDetectorSetup(string const fname);
00069
00070
00071
00079 sls_detector_module* readTrimFile(string fname, sls_detector_module* myMod=NULL);
00080
00089 int writeTrimFile(string fname, sls_detector_module mod);
00090
00098 int writeTrimFile(string fname, int imod);
00099
00113 int writeDataFile(string fname, float *data, float *err=NULL, float *ang=NULL, char dataformat='f', int nch=-1);
00114
00121 int writeDataFile(string fname, int *data);
00122
00136 int readDataFile(string fname, float *data, float *err=NULL, float *ang=NULL, char dataformat='f', int nch=0);
00137
00144 int readDataFile(string fname, int *data);
00145
00146
00154 int readCalibrationFile(string fname, float &gain, float &offset);
00162 int writeCalibrationFile(string fname, float gain, float offset);
00163
00164
00170 int readAngularConversion(string fname="");
00176 int writeAngularConversion(string fname="");
00177
00178
00179
00180
00181
00182
00183
00189 int setAngularConversion(string fname="");
00190
00197 int getAngularConversion(int &direction, angleConversionConstant *angconv=NULL);
00198
00199
00201 char *getAngularConversion() {return thisDetector->angConvFile;};
00202
00206 float setGlobalOffset(float f){thisDetector->globalOffset=f; return thisDetector->globalOffset;};
00207
00211 float setFineOffset(float f){thisDetector->fineOffset=f; return thisDetector->fineOffset;};
00215 float getFineOffset(){return thisDetector->fineOffset;};
00216
00220 float getGlobalOffset(){return thisDetector->globalOffset;};
00221
00228 int setPositions(int nPos, float *pos){thisDetector->numberOfPositions=nPos; for (int ip=0; ip<nPos; ip++) thisDetector->detPositions[ip]=pos[ip]; return thisDetector->numberOfPositions;};
00234 int getPositions(float *pos=NULL){ if (pos ) {for (int ip=0; ip<thisDetector->numberOfPositions; ip++) pos[ip]=thisDetector->detPositions[ip];} return thisDetector->numberOfPositions;};
00235
00236
00238 float setBinSize(float bs) {thisDetector->binSize=bs; return thisDetector->binSize;}
00240 float getBinSize() {return thisDetector->binSize;}
00241
00242
00243
00244
00252 int resetMerging(float *mp, float *mv,float *me, int *mm);
00262 int addToMerging(float *p1, float *v1, float *e1, float *mp, float *mv,float *me, int *mm);
00263
00272 int finalizeMerging(float *mp, float *mv,float *me, int *mm);
00273
00274
00279 void* processData(int delflag=1);
00280
00290 void acquire(int delflag=1);
00291
00292
00293 };
00294
00295
00296 #endif