mythenDetector/mythenDetector.h

Go to the documentation of this file.
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   //slsDetector(string  const fname);
00033   //  ~slsDetector(){while(dataQueue.size()>0){}};
00035   ~mythenDetector(){};
00036 
00037 
00038   int readConfigurationFile(string const fname);  
00050   int writeConfigurationFile(string const fname);
00051 
00052 
00053   /* 
00054      It should be possible to dump all the settings of the detector (including trimbits, threshold energy, gating/triggering, acquisition time etc.
00055      in a file and retrieve it for repeating the measurement with identicals ettings, if necessary
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   //Corrections
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); // thread function
00280 
00290   void acquire(int delflag=1);
00291 
00292 
00293 };
00294 
00295 
00296 #endif

Generated on Tue Dec 1 15:31:44 2009 by  doxygen 1.4.7