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

Generated on Tue Nov 16 10:49:58 2010 for CUORE Software by  doxygen 1.5.6