rdTXOclass_2.h
00001 #ifndef RDTXOCLASS_2_H
00002 #define RDTXOCLASS_2_H
00003 #include <iostream>
00004 #include <istream>
00005 #include <fstream>
00006 #include <string.h>
00007
00008
00009
00010
00011
00012 using namespace std;
00013
00014
00015 struct Tasso {
00016 float Nblocchi;
00017 float Ndati;
00018 float m[3];
00019 float startblock;
00020 float spectrum_block_size;
00021 float n[10];
00022 float par_time_hours;
00023 float par_time_sec;
00024 float total_time;
00025 float o[4];
00026 float offset;
00027 float energy_cal;
00028 char p[316];
00029 char comment[80];
00030 char osf_mark[12];
00031 };
00032
00033 class RdBlockData{
00034 private:
00035 char *File;
00036 int HEADERsz;
00037 int DATAsz;
00038 int NRECORDS;
00039 int pRECORD;
00040 float *Data;
00041 ifstream fd;
00042 Tasso *Header;
00043 long inizio;
00044 long fine;
00045 int REC_LEN;
00046 char* comment;
00047 public:
00048 RdBlockData ();
00049 RdBlockData (const char *fname);
00050
00051
00052
00053
00054
00055
00056
00057
00058 ~RdBlockData(){
00059 delete [] Data;
00060 delete Header;
00061 fd.close();
00062 };
00063 int GetPos() {return pRECORD;};
00064 void Open(const char *fname);
00065 void Close(void);
00066 void Next();
00067 void Prev();
00068 int IndexSubFile(int nSUBFILE);
00069 void PrintData(int ncol=6);
00070 void PrintHeader();
00071 void PrintHeader(char *choose);
00072 void SetFileName(char *fname) {File=fname;};
00073 Tasso * GetHeader() {return Header;};
00074 float * GetStartData() {return &Data[0];};
00075 float GetData(int m) {if (m>=0 && m<(int )Header->Ndati) {return Data[m];}};
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