Changeset 1759


Ignore:
Timestamp:
02/14/03 23:21:35 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/Changelog

    r1758 r1759  
    4949     - don't use second SE when only one is attached
    5050     - added SE Test stuff
     51
     52   * base/BaseLinkDef.h, base/Makefile:
     53     - added MParContainer
     54     - added MObservatory
     55
     56   * base/timer.[h,cc]:
     57     - changed the calculation of the date according to slalib
    5158
    5259
  • trunk/MagicSoft/Cosy/base/BaseLinkDef.h

    r1691 r1759  
    99#pragma link C++ class MStar+;
    1010#pragma link C++ class MGList+;
     11#pragma link C++ class MParContainer+;
     12#pragma link C++ class MObservatory+;
    1113
    1214#endif
  • trunk/MagicSoft/Cosy/base/Makefile

    r1691 r1759  
    3333SRCFILES = File.cc \
    3434           MStopwatch.cc \
     35           MParContainer.cc \
    3536           MThread.cc \
    3637           MTimeout.cc \
     
    4041           MLog.cc \
    4142           MLogManip.cc \
     43           MObservatory.cc \
    4244           MGList.cc \
    4345           timer.cc
     
    4648              MGList.h \
    4749              MLog.h \
    48               MLogManip.h
     50              MLogManip.h \
     51              MObservatory.h \
     52              MParContainer.h
    4953
    5054SRCS    = $(SRCFILES)
  • trunk/MagicSoft/Cosy/base/timer.cc

    r926 r1759  
    44#include <iostream.h>
    55
    6 #include "math.h"           // modf
     6#include <math.h>           // modf
    77#include "sys/time.h"       // struct timeval
    88#include "slalib/slalib.h"  // slacldj
     
    2222    tv_sec /= 24;
    2323
    24     fDay = tv_sec%365;
    25     tv_sec /= 365;
     24    Set(tv_sec + 40587);
    2625
    27     fYea = tv_sec+1970;
     26    fDiv = fmod((fMs+fSecs)/(60*60*24), 1.0);
     27}
    2828
    29     fDay -= (fYea-1972)/4;
     29void Timer::Set(const long mjd)
     30{
     31    //
     32    // Express day in Gregorian calendar
     33    //  (taken from slalib slaDjcl)
     34    //
     35    fMjd = mjd;
    3036
    31     int days = fDay;
     37    const long jd   = mjd + 2400001;
     38    const long n4   = (((((jd*4-17918)/146097)*6)/4+1)/2+jd-37)*4;
     39    const long nd10 = (((n4-237)%1461)/4)*10+5;
    3240
    33     fMon=0;
    34     do fDay -= fDays[fMon++];
    35     while (fDay>0);
    36 
    37     int i=1;
    38     while (i<fMon)
    39         days -= fDays[i++];
    40 
    41     fDay = days;
    42 
    43     double dummy;
    44     fDiv = modf((fMs+fSecs)/(60*60*24), &dummy);
     41    fYea = n4/1461 - 4712;
     42    fMon = ((nd10/306+2)%12) + 1;
     43    fDay = (nd10%306)/10 + 1;
    4544}
    4645
     
    7372    fMon  = t.fMon;
    7473    fYea  = t.fYea;
     74    fMjd  = t.fMjd;
     75}
     76
     77void Timer::SetMjd(double mjd)
     78{
     79    Set((long)mjd);
     80
     81    fDiv = fmod(mjd, 1.0);
     82
     83    mjd -= 40587;
     84
     85    mjd *= 24;
     86    fHor = (int)mjd;
     87
     88    mjd *= 60;
     89    fMin = (int)mjd;
     90
     91    mjd *= 60;
     92    fSec = (int)mjd;
     93
     94    fMs = mjd * 1000;
    7595}
    7696
     
    83103
    84104    return fMs+fSecs;
    85 }
    86 
    87 double Timer::CalcMjd()
    88 {
    89     int status;
    90     double mjd=0;
    91     slaCldj(fYea, fMon, fDay, &mjd, &status);
    92 
    93     if (status)
    94         cout << "Warning: slaCldj returned " << status << endl;
    95 
    96     return mjd + fDiv;
    97105}
    98106
     
    115123}
    116124
    117 const int Timer::fDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  • trunk/MagicSoft/Cosy/base/timer.h

    r1531 r1759  
    77{
    88private:
    9     const static int fDays[12];
    109    double fMs;
    1110    double fDiv;
     11
    1212    int fSec;
    1313    int fSecs;
     
    1818    int fYea;
    1919
     20    double fMjd;
     21
    2022    char fDateStr[30];
    2123
     24    void Set(const long mjd);
     25
    2226public:
    23     Timer() : fMs(0), fSec(0), fSecs(0), fMin(0), fHor(0), fDay(0), fMon(0), fYea(0) {}
     27    Timer() : fMs(0), fSec(0), fSecs(0), fMin(0), fHor(0), fDay(0), fMon(0), fYea(0), fMjd(0) {}
    2428    Timer(double t);
    2529    Timer(struct timeval *tv);
     
    3034
    3135    int GetSecs() { return fSecs; }
     36
    3237    double Now(); //[s]
    33     double CalcMjd();
     38    double GetMjd() const { return fMjd+fDiv; }
     39
     40    virtual void SetMjd(double mjd);
    3441
    3542    int Day() const   { return fDay; }
Note: See TracChangeset for help on using the changeset viewer.