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>
00007 
00008 /*
00009 #define DEBUG
00010 #undef DEBUG
00011 */
00012 using namespace std;
00013 
00014 typedef struct Tasso {
00015   float Nblocchi;   // 4
00016   float Ndati;      // 4
00017   float m[3];      // 12
00018   float startblock;      // 4
00019   float spectrum_block_size;      // 4
00020   float n[10];      // 40
00021   float par_time_hours;      // 4
00022   float par_time_sec;      // 4
00023   float total_time;      // 4
00024   float o[4];      // 16
00025   float offset;      // 4
00026   float energy_cal;      // 4 qui siamo a 104
00027   char p[316];
00028   char comment[80];      // 80 inizia in realta' a 420
00029   char osf_mark[12];
00030 };
00031 
00032 class RdBlockData{
00033   private:
00034     char *File;
00035     int HEADERsz; // in byte
00036     int DATAsz;   // in byte
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 /*    RdBlockData (const RdBlockData &ob) { // costruttore di copia
00050       RdBlockData *p;
00051       if (!p) {
00052         cout<<"RdBlockData: Non  posso allocare la memoria richiesta"<<endl;
00053         exit;
00054       }
00055       p=&ob;
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 /*    void * GetData(int DD,int nDD){
00077       delete [] Data;
00078       Data=new char [DD*nDD];
00079       fd.read(Data,DD*nDD);
00080       return &Data[0];
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;};      // 4
00094     float GetEnergyCal() {return Header->energy_cal;};      // 4
00095     char * GetComment();      // 80
00096     char * GetOSFMark();
00097     int Rewind();
00098 };
00099 #endif

Generated on Fri Mar 6 13:40:40 2009 for CUORE Software by  doxygen 1.5.1