mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 03:40:04 +02:00

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@338 951219d9-93cf-4727-9268-0efd64621fa3
198 lines
4.3 KiB
C++
198 lines
4.3 KiB
C++
#include "fileIO.h"
|
|
|
|
|
|
|
|
|
|
/* I/O */
|
|
|
|
/* generates file name without extension*/
|
|
|
|
string fileIO::createFileName() {
|
|
currentFileName=fileIOStatic::createFileName(filePath, \
|
|
fileName, \
|
|
getActionMask(), \
|
|
getCurrentScanVariable(0), \
|
|
getScanPrecision(0), \
|
|
getCurrentScanVariable(1), \
|
|
getScanPrecision(1), \
|
|
getCurrentPositionIndex(), \
|
|
getNumberOfPositions(), \
|
|
*fileIndex, \
|
|
frameIndex, \
|
|
detIndex \
|
|
);
|
|
return currentFileName;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* generates file prefix for receivers */
|
|
|
|
string fileIO::createReceiverFilePrefix() {
|
|
currentReceiverFilePrefix=fileIOStatic::createReceiverFilePrefix(fileName, \
|
|
getActionMask(), \
|
|
getCurrentScanVariable(0), \
|
|
getScanPrecision(0), \
|
|
getCurrentScanVariable(1), \
|
|
getScanPrecision(1), \
|
|
getCurrentPositionIndex(), \
|
|
getNumberOfPositions(), \
|
|
detIndex \
|
|
);
|
|
return currentReceiverFilePrefix;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*writes raw data file */
|
|
|
|
int fileIO::writeDataFile(string fname, double *data, double *err, double *ang, char dataformat, int nch){
|
|
if (nch==-1)
|
|
nch=getTotalNumberOfChannels();
|
|
|
|
return fileIOStatic::writeDataFile(fname, nch, data, err, ang, dataformat);
|
|
|
|
}
|
|
int fileIO::writeDataFile(ofstream &outfile, double *data, double *err, double *ang, char dataformat, int nch, int offset){
|
|
if (nch==-1)
|
|
nch=getTotalNumberOfChannels();
|
|
|
|
return fileIOStatic::writeDataFile(outfile, nch, data, err, ang, dataformat, offset);
|
|
|
|
}
|
|
|
|
|
|
int fileIO::writeDataFile(string fname, int *data){
|
|
|
|
return fileIOStatic::writeDataFile(fname, getTotalNumberOfChannels(), data);
|
|
}
|
|
|
|
|
|
|
|
|
|
int fileIO::writeDataFile(ofstream &outfile, int *data, int offset){
|
|
|
|
return fileIOStatic::writeDataFile(outfile, getTotalNumberOfChannels(), data, offset);
|
|
}
|
|
|
|
|
|
|
|
int fileIO::writeDataFile(void *data, int iframe) {
|
|
cout <<"iframe " << iframe << endl;
|
|
|
|
if (iframe<0)
|
|
iframe=frameIndex;
|
|
//if (iframe>=0)
|
|
// frameIndex=iframe;
|
|
|
|
if ((*framesPerFile)<2)
|
|
iframe=-1;
|
|
//frameIndex=-1;
|
|
if ((iframe%(*framesPerFile))==0 || (iframe<0)) {
|
|
//if ((frameIndex%(*framesPerFile))==0 || (frameIndex<0)) {
|
|
createFileName();
|
|
filefd = fopen((currentFileName+string(".raw")).c_str(), "w");
|
|
}
|
|
if (filefd){
|
|
//if (iframe%(*framesPerFile)) {
|
|
/*if(setDynamicRange(-1)==16){
|
|
fileIOStatic::writeBinaryDataFile(filefd,getDataBytes()*2, data);
|
|
frameIndex+=2;
|
|
}
|
|
else{*/
|
|
fileIOStatic::writeBinaryDataFile(filefd,getDataBytes(), data);cout<<"write frameIndex:"<<iframe<<endl;
|
|
//}
|
|
iframe++;
|
|
//frameIndex++;
|
|
//}
|
|
}
|
|
if ((iframe%(*framesPerFile)==0) || (iframe<0)) {
|
|
//if ((frameIndex%(*framesPerFile)==0) || (frameIndex<0)) {
|
|
if (filefd)
|
|
fclose(filefd);
|
|
filefd=NULL;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int fileIO::closeDataFile() {cout<<"closing datafile: filfd:"<<filefd<<endl;
|
|
if (filefd)
|
|
fclose(filefd);
|
|
filefd=NULL; cout<<"closed data file"<<endl;
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int fileIO::writeDataFile(string fname, short int *data){
|
|
|
|
return fileIOStatic::writeDataFile(fname, getTotalNumberOfChannels(), data);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int fileIO::writeDataFile(ofstream &outfile, short int *data, int offset){
|
|
|
|
return fileIOStatic::writeDataFile(outfile, getTotalNumberOfChannels(), data, offset);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int fileIO::readDataFile(string fname, double *data, double *err, double *ang, char dataformat) {
|
|
return fileIOStatic::readDataFile(getTotalNumberOfChannels(), fname, data, err, ang, dataformat);
|
|
|
|
}
|
|
|
|
int fileIO::readDataFile(ifstream &infile, double *data, double *err, double *ang, char dataformat, int offset) {
|
|
return fileIOStatic::readDataFile(getTotalNumberOfChannels(), infile, data, err, ang, dataformat, offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
int fileIO::readDataFile(string fname, int *data){
|
|
|
|
return fileIOStatic::readDataFile(fname, data, getTotalNumberOfChannels());
|
|
};
|
|
|
|
|
|
int fileIO::readDataFile(ifstream &infile, int *data, int offset){
|
|
|
|
return fileIOStatic::readDataFile(infile, data, getTotalNumberOfChannels(), offset);
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
int fileIO::readDataFile(string fname, short int *data){
|
|
|
|
return fileIOStatic::readDataFile(fname, data, getTotalNumberOfChannels());
|
|
};
|
|
|
|
|
|
int fileIO::readDataFile(ifstream &infile, short int *data, int offset){
|
|
|
|
return fileIOStatic::readDataFile(infile, data, getTotalNumberOfChannels(),offset);
|
|
};
|
|
|