xml/XsilTSeries.hh

00001 /*----------------------------------------------------------------------*/
00002 /*                                                                      */
00003 /* Module Name: xsilTSeries                                             */
00004 /*                                                                      */
00005 /* Module Description: Classes for LIGO-LW input/output to DMT objects. */
00006 /*                                                                      */
00007 /* Revision History:                                                    */
00008 /* Rel   Date     Programmer    Comments                                */
00009 /* (testing-- R. Rahkola)       Initial revision                        */
00010 /*                                                                      */
00011 /* Documentation References:                                            */
00012 /*      Man Pages: none                                                 */
00013 /*      References: none                                                */
00014 /*                                                                      */
00015 /* Author Information:                                                  */
00016 /* Name          Telephone       Fax             e-mail                 */
00017 /* Rauha Rahkola (509) 372-8141  (509) 372-8137  rrahkola@darkwing.     */
00018 /*                                                        uoregon.edu   */
00019 /*                                                                      */
00020 /*                                                                      */
00021 /*                      -------------------                             */
00022 /*                                                                      */
00023 /*                             LIGO                                     */
00024 /*                                                                      */
00025 /*        THE LASER INTERFEROMETER GRAVITATIONAL WAVE OBSERVATORY.      */
00026 /*                                                                      */
00027 /*                     (C) The LIGO Project, 2001.                      */
00028 /*                                                                      */
00029 /*                                                                      */
00030 /* Caltech                              MIT                             */
00031 /* LIGO Project MS 51-33                LIGO Project NW-17 161          */
00032 /* Pasadena CA 91125                    Cambridge MA 01239              */
00033 /*                                                                      */
00034 /* LIGO Hanford Observatory             LIGO Livingston Observatory     */
00035 /* P.O. Box 1970 S9-02                  19100 LIGO Lane Rd.             */
00036 /* Richland WA 99352                    Livingston, LA 70754            */
00037 /*                                                                      */
00038 /*----------------------------------------------------------------------*/
00039 
00040 #ifndef _GDS_XSILTSERIES_HH
00041 #define _GDS_XSILTSERIES_HH
00042 
00043 #include <complex>
00044 #include <string>
00045 #include <iosfwd>
00046 //=============  xml common header file
00047 #include "xml/Xsil.hh"
00048 //=============  DMT C++ header files
00049 #include "TSeries.hh"
00050 #include "Complex.hh"
00051 
00052 namespace xml {
00053 
00054 
00075    class xsilTSeries {
00076    protected:
00078       int            fLevel;
00080       const TSeries *fData;
00081    public:
00083       xsilTSeries (int level = 1) : fLevel(level), fData (0) {
00084       }
00086       xsilTSeries(const TSeries *ts, int level = 1):
00087       fLevel(level),fData(ts) {
00088       }
00090       xsilTSeries(const TSeries& ts, int level = 1):
00091       fLevel(level),fData(&ts) {
00092       }
00094       std::ostream& write (std::ostream &os) const;
00095    };
00096 
00097 
00104    inline std::ostream& operator<< (std::ostream &os, const xsilTSeries &ts) {
00105       return ts.write(os); }
00106 
00112    class xsilHandlerTSeries: public xsilHandler {
00113    protected:
00115       bool                        fLdasIHaveToBeDifferent;
00117       std::vector<TSeries>       *fObjects;
00119       std::string                 fName;
00121       int                         fSubtype;
00123       unsigned long               fSec;
00125       unsigned long               fNsec;
00127       double                      fDt;
00129       float                       fF0;
00131       unsigned int                fStatus;
00133       bool                        fComplex;
00135       float                      *fData;
00137       int                         fDim1;
00139       int                         fDim2;
00140    
00141    
00142    public:
00144       explicit xsilHandlerTSeries (std::vector<TSeries> *objects, 
00145                         const attrlist *attr=0, bool ignore=false,
00146                         bool ldas = false);
00148       virtual ~xsilHandlerTSeries();
00150       virtual bool HandleParameter (const std::string& name,const attrlist& attr,
00151                         const bool& p, int N = 1) {
00152          return false; }
00154       virtual bool HandleParameter(const std::string& name, const attrlist& attr,
00155                         const char& p, int N = 1) {
00156          return false; }
00158       virtual bool HandleParameter(const std::string& name, const attrlist& attr,
00159                         const short& p, int N = 1) {
00160          return false; }
00162       virtual bool HandleParameter(const std::string& name, const attrlist& attr,
00163                         const int& p, int N=1);
00164    #ifndef __CINT__
00166       virtual bool HandleParameter(const std::string& name, 
00167                         const attrlist& attr,
00168                         const long long& p, int N=1);
00169    #endif //__CINT__
00171       virtual bool HandleParameter(const std::string& name, 
00172                         const attrlist& attr, 
00173                         const float& p, int N=1);
00175       virtual bool HandleParameter(const std::string& name, 
00176                         const attrlist& attr, 
00177                         const double& p, int N=1);
00179       virtual bool HandleParameter(const std::string& name, const attrlist& attr,
00180                         const std::complex<float>& p, int N = 1) {
00181          return false; }
00183       virtual bool HandleParameter(const std::string& name, const attrlist& attr,
00184                         const std::complex<double>& p, int N = 1) {
00185          return false; }
00187       virtual bool HandleParameter(const std::string& name, const attrlist& attr,
00188                         const std::string& p);
00190       virtual bool HandleTime (const std::string& name, const attrlist& attr,
00191                         unsigned long sec, unsigned long nsec);
00193       virtual bool HandleData (const std::string& name, float* x, 
00194                         int dim1, int dim2=0, int dim3=0, int dim4=0);
00196       virtual bool HandleData (const std::string& name, std::complex<float>* x,
00197                         int dim1, int dim2=0, int dim3=0, int dim4=0);
00199       virtual bool HandleData (const std::string& name, double* x, 
00200                         int dim1, int dim2=0, int dim3=0, int dim4=0) {
00201          return false; }
00203       virtual bool HandleData (const std::string& name, std::complex<double>* x,
00204                         int dim1, int dim2=0, int dim3=0, int dim4=0) {
00205          return false; }
00207       virtual xsilHandler* GetHandler (const attrlist& attr);
00208    };
00209 
00216    class xsilHandlerQueryTSeries: public xsilHandlerQuery {
00217    protected:
00219       std::vector<TSeries>       *fObjects;
00220    
00221    public:
00223       explicit xsilHandlerQueryTSeries (std::vector<TSeries> &vts)
00224       : fObjects(&vts) {
00225       }
00227       virtual xsilHandler* GetHandler(const attrlist& attr);
00228    };
00229 
00234 } // namespace xml
00235 
00236 #endif // define GDS_XSILTSERIES_HH

Generated on Sun Mar 8 19:20:53 2009 for dmt by  doxygen 1.5.4