QReadTXO.hh
00001 #ifndef QREADTXO_HH
00002 #define QREADTXO_HH
00003 #include <iostream>
00004 #include <fstream>
00005 #include <string>
00006
00007
00008
00009 using namespace std;
00010
00011 typedef struct Tasso {
00012 float Nblocchi;
00013 float Ndati;
00014 float m[3];
00015 float startblock;
00016 float spectrum_block_size;
00017 float n[10];
00018 float par_time_hours;
00019 float par_time_sec;
00020 float total_time;
00021 float o[4];
00022 float offset;
00023 float energy_cal;
00024 char p[316];
00025 char comment[80];
00026 char osf_mark[12];
00027 };
00028
00029 class QReadTXO{
00030 private:
00031 char *File;
00032 int HEADERsz;
00033 int DATAsz;
00034 int NRECORDS;
00035 int pRECORD;
00036 float *Data;
00037 ifstream fd;
00038 Tasso *Header;
00039 long inizio;
00040 long fine;
00041 int REC_LEN;
00042 char* comment;
00043 public:
00044 QReadTXO ();
00045 QReadTXO (const char *fname);
00046
00047
00048
00049
00050
00051
00052
00053
00054 ~QReadTXO(){
00055 delete [] Data;
00056 delete Header;
00057 fd.close();
00058 };
00059 int GetPos() {return pRECORD;};
00060 void Open(const char *fname);
00061 void Close(void);
00062 void Next();
00063 void Prev();
00064 int IndexSubFile(int nSUBFILE);
00065 void PrintData(int ncol=6);
00066 void PrintHeader();
00067 void PrintHeader(char *choose);
00068 void SetFileName(char *fname) {File=fname;};
00069 Tasso * GetHeader() {return Header;};
00070 float * GetStartData() {return &Data[0];};
00071 float GetData(int m) {
00072 if((m>=0) && (m < (int) Header->Ndati)) return Data[m];
00073 else {
00074 return 0;
00075 }};
00076
00077
00078
00079
00080
00081
00082
00083 long GetInizio(){return inizio;};
00084 long GetFine(){return fine;};
00085 int GetHeaderSize(){return HEADERsz;};
00086 int GetDataSize(){return (int) Header->Ndati;};
00087 int GetNSubFiles(){return NRECORDS;};
00088 bool IsGoodFile() {return (Header->spectrum_block_size==Header->Nblocchi);};
00089 float GetStartBlock(){return Header->startblock;};
00090 float GetSpectBlockSize(){return Header->spectrum_block_size;};
00091 float GetPartTimeSec(){return Header->par_time_sec;};
00092 float GetPartTimeHour(){return Header->par_time_hours;};
00093 float GetTotalTime() {return Header->total_time;};
00094 float GetOffset() {return Header->offset;};
00095 float GetEnergyCal() {return Header->energy_cal;};
00096 char * GetComment();
00097 char * GetOSFMark();
00098 int Rewind();
00099 };
00100 #endif