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