Ignore:
Timestamp:
08/02/12 09:56:31 (12 years ago)
Author:
tbretz
Message:
Implemented light-condition.data and set an empty default for th database string.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/smartfact.cc

    r14228 r14302  
    18971897        return make_pair(alt, make_pair(maxjd, maxjd>jd+jd0&&maxjd<jd+jd1?max:0));
    18981898    }
     1899
     1900    pair<vector<float>, pair<Time, float>> GetLightCondition(ln_equ_posn *src, ln_lnlat_posn *observer, double jd)
     1901    {
     1902        jd = floor(jd);
     1903
     1904        const double jd0 = fmod(fSun.fSetAstronomical.JD(),  1);
     1905        const double jd1 = fmod(fSun.fRiseAstronomical.JD(), 1);
     1906
     1907        ln_equ_posn  moon;
     1908
     1909        double max   = -1;
     1910        double maxjd =  0;
     1911
     1912        int cnt = 0;
     1913
     1914        vector<float> alt;
     1915        for (double h=0; h<1; h+=1./(24*12))
     1916        {
     1917            double lc = -1;
     1918
     1919            if (h>jd0 && h<jd1)
     1920            {
     1921                const double disk = ln_get_lunar_disk(jd+h);
     1922                ln_get_lunar_equ_coords(jd+h, &moon);
     1923
     1924                ln_hrz_posn hrz;
     1925                ln_get_hrz_from_equ(&moon, observer, jd+h, &hrz);
     1926
     1927                Moon m;
     1928                m.ra  = moon.ra;
     1929                m.dec = moon.dec;
     1930
     1931                const double angle = m.Angle(src->ra, src->dec);
     1932
     1933                lc = angle*hrz.alt*disk*M_PI*M_PI/180/180;
     1934
     1935                alt.push_back(lc);
     1936            }
     1937
     1938            if (lc>max)
     1939            {
     1940                max   = lc;
     1941                maxjd = jd+h;
     1942            }
     1943
     1944            if (h>jd0 && h<jd1 && lc>0)
     1945                cnt++;
     1946        }
     1947
     1948        if (max<=15 || cnt==0)
     1949            return make_pair(vector<float>(), make_pair(Time(), 0));
     1950
     1951        return make_pair(alt, make_pair(maxjd, maxjd>jd+jd0&&maxjd<jd+jd1?max:0));
     1952    }
    18991953#endif
    19001954
     
    19572011        }
    19582012
    1959         ostringstream out2, out3;
     2013        ostringstream out2, out3, out4;
    19602014        out2 << setprecision(3);
    19612015        out2 << now.JavaDate() << '\n';
    19622016        out3 << now.JavaDate() << '\n';
     2017        out4 << now.JavaDate() << '\n';
    19632018
    19642019        map<Time, pair<string, float>> culmination;
     2020        map<Time, pair<string, float>> lightcond;
    19652021        vector<vector<float>> alt;
    19662022
     
    19872043            out2 << HTML::kWhite << '\t';
    19882044            out3 << HTML::kWhite << '\t';
     2045            out4 << HTML::kWhite << '\t';
    19892046
    19902047            for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
     
    20062063                    alt.push_back(vis.first);
    20072064                    culmination[vis.second.first] = make_pair(name, vis.second.second);
     2065                }
     2066
     2067                const pair<vector<float>, pair<Time, float>> lc = GetLightCondition(&pos, &observer, now.JD());
     2068                if (lc.first.size()>0)
     2069                {
     2070                    alt.push_back(lc.first);
     2071                    lightcond[lc.second.first] = make_pair(name, lc.second.second);
    20082072                }
    20092073
     
    20462110            }
    20472111
     2112            for (auto it=lightcond.begin(); it!=lightcond.end(); it++)
     2113            {
     2114                if (it!=lightcond.begin())
     2115                    out4 << ", ";
     2116                out4 << "<B>" << it->second.first << "</B>";
     2117                if (it->second.second>0)
     2118                    out4 << " [" << nearbyint(90-it->second.second) << "&deg;]";
     2119            }
     2120
    20482121            ostringstream title;
    20492122            title << "Alt ";
     
    20572130            out2 << '\n';
    20582131            out3 << '\n';
     2132            out4 << '\n';
    20592133            out  << HTML::kWhite << '\t' << Time()-now << '\n';
    20602134            out2 << HTML::kWhite << '\t' << Time()-now << '\n';
     
    20692143            out2 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
    20702144            out3 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
     2145            out4 << HTML::kWhite << '\t' << "ERROR  - "+string(e.what()) << '\n';
    20712146        }
    20722147#endif
     
    20752150        ofstream(fPath+"/source-list.data") << out2.str();
    20762151        ofstream(fPath+"/visibility.data") << out3.str();
     2152        ofstream(fPath+"/light-condition.data") << out4.str();
    20772153    }
    20782154
     
    27932869        ("pixel-map-file",  var<string>("FACTmapV5a.txt"),     "Pixel mapping file. Used here to get the default reference voltage")
    27942870        ("path",            var<string>("www/smartfact/data"), "Output path for the data-files")
    2795         ("source-database", var<string>(), "Database link as in\n\tuser:password@server[:port]/database.")
     2871        ("source-database", var<string>(""), "Database link as in\n\tuser:password@server[:port]/database.")
    27962872        ("client",          po_bool(false), "For a standalone client choose this option.")
    27972873        ;
Note: See TracChangeset for help on using the changeset viewer.