Changeset 17172 for trunk/FACT++


Ignore:
Timestamp:
09/19/13 15:08:22 (11 years ago)
Author:
tbretz
Message:
Read bias patch wise tenmperatures from fscctrl instead of calculating itself so that all programs have consistent values and we store them in our slow control files.
File:
1 edited

Legend:

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

    r17169 r17172  
    17001700        rms = rms<0 ? 0 : sqrt(rms);
    17011701
     1702        // Clean broken reports
     1703        static double pre_rms1 = 1.5;
     1704        static double pre_rms2 = 0;
     1705
     1706        const double cut = pre_rms1 + 0.1;
     1707
     1708        const bool reject = rms>cut && pre_rms2<cut;
     1709
     1710        pre_rms2 = pre_rms1;
     1711        pre_rms1 = rms;
     1712
     1713        if (reject)
     1714            return GetCurrentState();
     1715
     1716
    17021717        if (!fMagicWeatherHist[kTemp].empty())
    17031718        {
     
    17311746        ofstream(fPath+"/camtemp.data") << out.str();
    17321747
    1733         // =======================================================
    1734 
    1735         static vector<pair<double,double>> fPositionsSensors;
    1736         static vector<pair<double,double>> fPositionsBias;
    1737 
    1738         if (fPositionsSensors.empty())
    1739         {
    1740             ifstream fin1("sensor-pos.txt");
    1741             while (1)
    1742             {
    1743                 double x, y;
    1744                 fin1 >> x;
    1745                 fin1 >> y;
    1746                 if (!fin1)
    1747                     break;
    1748 
    1749                 fPositionsSensors.emplace_back(x, y);
    1750             }
    1751 
    1752             if (fPositionsSensors.size() != 31)
    1753                 Fatal("Reading sensor positions failed ("+to_string(fPositionsSensors.size())+")");
    1754         }
    1755 
    1756         if (fPositionsBias.empty())
    1757         {
    1758             ifstream fin1("bias-positions.txt");
    1759             while (1)
    1760             {
    1761                 double x, y;
    1762                 fin1 >> x;
    1763                 fin1 >> y;
    1764                 if (!fin1)
    1765                     break;
    1766 
    1767                 fPositionsBias.emplace_back(x, y);
    1768             }
    1769 
    1770             if (fPositionsBias.size() != 320)
    1771                 Fatal("Reading bias positions failed ("+to_string(fPositionsBias.size())+")");
    1772         }
    1773 
    1774         if (!fPositionsBias.size()==320 || !fPositionsSensors.size()==31)
     1748        return GetCurrentState();
     1749    }
     1750
     1751    int HandleFscBiasTemp(const EventImp &d)
     1752    {
     1753        if (!CheckDataSize(d, "FscControl:BiasTemp", 321*4))
    17751754            return GetCurrentState();
    17761755
    1777         vector<double> temp;
    1778         vector<Interpolator2D::vec> xy;
    1779         for (int i=0; i<31; i++)
    1780             if (ptr[i]!=0)
    1781             {
    1782                 temp.emplace_back(ptr[i]);
    1783                 xy.emplace_back(fPositionsSensors[i].first, fPositionsSensors[i].second);
    1784             }
    1785 
    1786         Interpolator2D inter(xy);
    1787         if (!inter.SetOutputGrid(fPositionsBias))
    1788             return GetCurrentState();
    1789 
    1790         const vector<double> T = inter.Interpolate(temp);
     1756        const float *ptr = d.Ptr<float>(4);
    17911757
    17921758        vector<double> tout(320);
     
    17951761        {
    17961762            const int idx = (fPixelMap.hv(i).hw()/9)*2+fPixelMap.hv(i).group();
    1797             tout[idx] = T[i];
    1798             pavg += T[i];
    1799         }
    1800 
    1801         WriteCam(d, "cam-fsccontrol-temperature", tout, 3, pavg/320-1.5);
     1763            tout[idx] = ptr[i];
     1764            pavg += ptr[i];
     1765        }
     1766
     1767        WriteCam(d, "cam-fsccontrol-temperature", tout, 3, pavg/320-1.75);
    18021768
    18031769        return GetCurrentState();
     
    29972963        Subscribe("FSC_CONTROL/HUMIDITY")
    29982964            (bind(&StateMachineSmartFACT::HandleFscHumidity,         this, placeholders::_1));
     2965        Subscribe("FSC_CONTROL/BIAS_TEMP")
     2966            (bind(&StateMachineSmartFACT::HandleFscBiasTemp,         this, placeholders::_1));
    29992967
    30002968        Subscribe("MAGIC_WEATHER/DATA")
Note: See TracChangeset for help on using the changeset viewer.