2 #include "NovaDAQConventions/DAQConventions.h" 11 #pragma GCC diagnostic push 12 #pragma GCC diagnostic ignored "-Wwrite-strings" 13 #pragma GCC diagnostic ignored "-Wpedantic" 15 #include "novas/novas.c" 16 #include "novas/eph_manager.c" 18 #include "novas/novascon.c" 19 #include "novas/solsys1.c" 20 #include "novas/nutation.c" 21 #include "novas/readeph0.c" 23 #pragma GCC diagnostic pop 39 #pragma GCC diagnostic push 40 #pragma GCC diagnostic ignored "-Wpedantic" 46 0, 0, 0, 0, 0, 0, 0, &dummy_star);
56 #pragma GCC diagnostic pop 58 double jd_beg, jd_end;
60 error =
ephem_open((
char*)ephemerisFname.c_str(), &jd_beg, &jd_end, &de_num);
70 const double zenin = 32.109 *
M_PI/180, aziin = 123.45 *
M_PI/180;
73 printf(
"Julian date = %f\n", jd);
77 printf(
"ra = %f, dec = %f\n", ra, dec);
78 printf(
"Or: ra = %fh, dec = %f degrees\n", ra*12/
M_PI, dec*180/
M_PI);
81 printf(
"other diff: ra = %fh, dec = %f degrees\n",
82 ra*12/
M_PI - 4 - 10/60. - 58/60./60.,
83 dec*180/
M_PI - 23 - 9/60. - 49/60./60.);
85 double zenout, aziout;
87 printf(
"zenout = %f (delta %+f), aziout = %f (%+f)\n",
88 zenout, zenout - zenin, aziout, aziout - aziin);
89 printf(
"In degrees: zenout = %f (delta %+f), aziout = %f (%+f)\n\n",
90 zenout*180/
M_PI, (zenout - zenin)*180/
M_PI,
91 aziout*180/
M_PI, (aziout - aziin)*180/
M_PI);
107 double & jd_ut1,
double & delta_t)
111 const double ut1_utc = -0.387845;
112 jd_ut1 = jd_utc + ut1_utc / 86400.0;
119 double& zen,
double& azi)
121 double jd_ut1, delta_t;
123 const double jd_tt = jd_utc + (
leap_secs + 32.184) / 86400.0;
125 double rat, dect,
dist;
152 double& ra,
double& dec)
154 double jd_ut1, delta_t;
171 cos(dtheta)*
cos(dphi)*dir[0] +
sin(dphi)*dir[1] +
sin(dtheta)*
cos(dphi)*dir[2],
172 -
cos(dtheta)*
sin(dphi)*dir[0] +
cos(dphi)*dir[1] -
sin(dtheta)*
sin(dphi)*dir[2],
173 -
sin(dtheta)* dir[0] +
cos(dtheta) *dir[2]
177 double gcrs[3] = {0};
187 ra =
atan2(gcrs[1], gcrs[0]);
194 double & ra,
double & dec)
196 const double zen_trk =
acos(trkdir.Y());
203 const double azi_trk =
atan2(-trkdir.X(), trkdir.Z()) +
point *
M_PI/180;
205 GetRaDec(zen_trk, azi_trk, jd_utc, ra, dec);
211 double& zen,
double& azi)
213 double jd_ut1, delta_t;
234 const tm*
t2 = gmtime(&t);
235 const short int year = t2->tm_year + 1900;
236 const short int month = t2->tm_mon + 1;
237 const short int day = t2->tm_mday;
238 const double hour = t2->tm_hour + t2->tm_min / 60. + t2->tm_sec / (60. * 60.);
245 double& zen,
double& azi)
252 double& zen,
double& azi)
259 double& zen,
double& azi)
266 double& zen,
double& azi)
293 fprintf(
stderr,
"CelestialLocator: unknown detector %d\n", det);
short int ephem_open(char *ephem_name, double *jd_begin, double *jd_end, short int *de_number)
short int ephem_close(void)
short int make_object(short int type, short int number, const char name[SIZE_OF_OBJ_NAME], cat_entry *star_data, object *cel_obj)
void GetUT1andDeltat(const double jd_utc, double &jd_ut1, double &deltat)
short int topo_planet(double jd_tt, object *ss_body, double delta_t, on_surface *position, short int accuracy, double *ra, double *dec, double *dis)
short int ter2cel(double jd_ut_high, double jd_ut_low, double delta_t, short int method, short int accuracy, short int option, double xp, double yp, double *vec1, double *vec2)
void SetDetector(const novadaq::cnv::DetId det)
short int make_cat_entry(const char star_name[SIZE_OF_OBJ_NAME], const char catalog[SIZE_OF_CAT_NAME], long int star_num, double ra, double dec, double pm_ra, double pm_dec, double parallax, double rad_vel, cat_entry *star)
void GetMoonPosition(time_t t, double &zen, double &azi)
double julian_date(short int year, short int month, short int day, double hour)
void GetTrackRaDec(const TVector3 &trkdir, double jd_utc, double &ra, double &dec)
printf("%d Experimental points found\n", nlines)
void equ2hor(double jd_ut1, double delta_t, short int accuracy, double xp, double yp, on_surface *location, double ra, double dec, short int ref_option, double *zd, double *az, double *rar, double *decr)
void make_on_surface(double latitude, double longitude, double height, double temperature, double pressure, on_surface *obs_surface)
static double JulianDate(time_t t)
static const short int leap_secs
void GetSunPosition(time_t t, double &zen, double &azi)
NOVASLocate(const std::string &ephemerisFname)
void GetRaDec(const double zen, const double azi, double jd_utc, double &ra, double &dec)
void GetZenAzi(const double ra, const double dec, double jd_utc, double &zen, double &azi)
assert(nhit_max >=nhit_nbins)
void GetObjectPosition(object &obj, double jd_utc, double &zen, double &azi)
static constexpr Double_t year