Changeset 7764


Ignore:
Timestamp:
06/28/06 13:49:23 (19 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/Changelog

    r7763 r7764  
    1313     - do not write pointingpos.txt and tracking_error.txt anymore
    1414
    15 
    16    * caos/Ring.h:
     15   * caos/Ring.h:
    1716     - added Setter SetXY
    1817
  • trunk/MagicSoft/Cosy/catalog/StarCatalog.cc

    r4865 r7764  
    142142}
    143143
     144/*
    144145void StarCatalog::CalcStars(MStarList &list)
    145146{
    146147    // full FOV
    147     fBox=768;
    148     CalcStars(list, 0, 576, 0, 0);
    149 }
     148    fBox=768/2;
     149    CalcStars(list, 768/2, 576/2, 0, 0);
     150}
     151*/
    150152
    151153void StarCatalog::CalcStars(MStarList &list, int xc, int yc,
    152154                            int xo, int yo) const
    153155{
     156    // For an apropriate unit conversion to pixels [pix/rad]
     157    const Double_t scale = TMath::RadToDeg()*sqrt(768*768 + 576*576)/(fAstro->GetRadiusFOV()*2);
     158
     159    // Offsets to shift [-n/2;n/2] to [0;n] and to
     160    // move the stars in the counterdirection of the LEDs
     161    const Float_t offx = 768/2 + xo;
     162    const Float_t offy = 576/2 + yo;
     163
     164    // Allow catalog stars to be a bit outside [0.2deg] of the
     165    // monitored window. To get the std behaviour set offset=0
     166    const Int_t offset = TMath::Nint(0.2*TMath::DegToRad()*scale);
     167    const Int_t box    = fBox+offset;
    154168
    155169    // CalcStars flips the picture in X defaultwise now
    156     int x0 = (768-xc)-fBox;
    157     int x1 = (768-xc)+fBox;
    158     int y0 = yc-fBox;
    159     int y1 = yc+fBox;
    160 
    161     if (x0<0) x0=0;
    162     if (y0<0) y0=0;
    163     if (x1>fW) x1=fW;
    164     if (y1>fH) y1=fH;
     170    // This defined the box in which stars are really returned
     171    int x0 = (768-xc)-box;
     172    int x1 = (768-xc)+box;
     173    int y0 = yc-box;
     174    int y1 = yc+box;
     175
     176    if (x0<  -offset) x0=  -offset;
     177    if (y0<  -offset) y0=  -offset;
     178    if (x1>fW+offset) x1=fW+offset;
     179    if (y1>fH+offset) y1=fH+offset;
    165180
    166181    // Align stars into telescope system
     
    171186    align.RotateZ(TMath::Pi()/2);
    172187
    173     // For an apropriate unit conversion to pixels
    174     const Double_t scale = TMath::RadToDeg()*sqrt(768*768 + 576*576)/(fAstro->GetRadiusFOV()*2);
    175 
    176188    // Get List of stars from catalog
    177189    TIter Next(fAstro->GetList());
     
    213225
    214226        // Rotate by the rotation angle of the video camera
    215         Float_t xx = loc.X()*fCosAngle - loc.Y()*fSinAngle;
    216         Float_t yy = loc.X()*fSinAngle + loc.Y()*fCosAngle;
    217 
    218         if (xx<(x0-768/2) || xx >=(x1-768/2)
    219             || yy<(y0-(576/2+yo)) || yy>=(y1-(576/2+yo)))
     227        // and add the offsets on both axis
     228        Float_t xx = loc.X()*fCosAngle - loc.Y()*fSinAngle  +  offx;
     229        Float_t yy = loc.X()*fSinAngle + loc.Y()*fCosAngle  +  offy;
     230
     231        // Check if the resulting star is in the
     232        // search box for the real stars
     233        if (rx<x0 || rx>=x1 || ry<y0 || ry>=y1)
    220234            continue;
    221235
    222236        // Store pixel coordinates of star in list
    223         list.Add(xx+768/2+xo, yy+576/2+yo, -2.5*log10(mag));
    224 
     237        list.Add(rx, ry, -2.5*log10(mag));
    225238    }
    226239}
  • trunk/MagicSoft/Cosy/catalog/StarCatalog.h

    r6867 r7764  
    7676    }
    7777
     78    //void   CalcStars(MStarList &list);
    7879    void   CalcStars(MStarList &list, int xc, int yc, int xo, int yo) const;
    79     void   CalcStars(MStarList &list);
    8080    static void DrawStars(MStarList &list, byte *img);
    8181
  • trunk/MagicSoft/Cosy/main/MStargHistograms.cc

    r7614 r7764  
    127127}
    128128
    129 void MStargHistograms::Fill(Leds &spots, MStarList &stars, ZdAz &d, ZdAz sao, Ring &center,  ZdAz &centerzdaz, ZdAz &star, Double_t bright, const ZdAz &pos, const MTime &t)
     129void MStargHistograms::Fill(Leds &spots, MStarList &stars, ZdAz &d, ZdAz sao, Ring &center,  ZdAz &star, Double_t bright, const ZdAz &pos, const MTime &t)
    130130{
    131131      // FIXME!
     
    146146          fCenterX    = center.GetX();
    147147          fCenterY    = center.GetY();
    148           fCenterZd   = centerzdaz.Zd();
    149           fCenterAz   = centerzdaz.Az();
     148          //fCenterZd   = centerzdaz.Zd();
     149          //fCenterAz   = centerzdaz.Az();
    150150          fStarZd     = star.Zd();
    151151          fStarAz     = star.Az();
  • trunk/MagicSoft/Cosy/main/MStargHistograms.h

    r4865 r7764  
    3131    Double_t       fSpots;
    3232    Double_t       fBright;
    33     Double_t       fCenterZd;
    34     Double_t       fCenterAz;
     33//    Double_t       fCenterZd;
     34//    Double_t       fCenterAz;
    3535    Double_t       fStarZd;
    3636    Double_t       fStarAz;
     
    4949
    5050    void Fill(Leds &spots, MStarList &stars, ZdAz &d, ZdAz sao,
    51               Ring &center, ZdAz &centerzdaz, ZdAz &star, Double_t bright,
     51              Ring &center, /*ZdAz &centerzdaz,*/ ZdAz &star, Double_t bright,
    5252              const ZdAz &pos, const MTime &t);
    5353   
  • trunk/MagicSoft/Cosy/main/MStarguider.cc

    r7708 r7764  
    665665    else
    666666    {
    667 
    668667        fStatus = MDriveCom::kStandby;
    669668
     
    684683            fOperations->DisableEntry(IDM_kStargAnalysis);
    685684    }
    686     gSystem->Unlink("tracking_error.txt");
     685    //gSystem->Unlink("tracking_error.txt");
    687686}
    688687
     
    13711370    AltAz pos0 = fSao->CalcAltAzFromPix(768/2,    576/2)*kRad2Deg;
    13721371    AltAz pos1 = fSao->CalcAltAzFromPix(768/2+mx, 576/2+my)*kRad2Deg;
    1373 
     1372/*
    13741373    ofstream fout1("pointingpos.txt");
    13751374    fout1 << setprecision(10) << fSao->GetMjd()-52000 << " ";
     
    13851384        fout2 << fCosy->GetPointingPos() << " ";
    13861385    fout2 << -pos1.Alt() << " " << pos1.Az() << endl;
    1387 
     1386  */
    13881387    return ZdAz(-pos1.Alt(), pos1.Az());
    13891388}
     
    18531852
    18541853    Ring sgcenter(53.2, 293.6); // Center of camera in SG picture [px]
    1855     ZdAz sgcenterzdaz(0, 0);    // Center of camera in SG picture [deg]
    1856                                 // (0,0)_deg is at (53.2, 293.6)_px
     1854    //ZdAz sgcenterzdaz(0, 0);    // Center of camera in SG picture [deg]
     1855    //                            // (0,0)_deg is at (53.2, 293.6)_px
    18571856    ZdAz star(0, 0);            // Star on curtain in [deg]
    18581857
     
    18621861        if (fCosy)
    18631862            pos = fCosy->GetPointingPos();
    1864         sgcenter =
    1865             fStargCaos->Run(img, kFALSE, kFALSE, pos, t, 30, 3.0); // [px]
     1863
     1864        sgcenter = fStargCaos->Run(img, kFALSE, kFALSE, pos, t, 30, 3.0); // [px]
     1865
    18661866        const Float_t pixsize = atof(fPixSize->GetText()); // [arcsec/px]
    18671867
     
    18711871        // wrong exspecially near the zenith were az-lines are highly
    18721872        // curved around the zenith!
    1873         sgcenterzdaz.Zd((sgcenter.GetY()-293.6) * pixsize /3600 );
    1874         sgcenterzdaz.Az((sgcenter.GetX()-53.2) * pixsize /3600 );
     1873        //sgcenterzdaz.Zd((sgcenter.GetY()-293.6) * pixsize /3600 );
     1874        //sgcenterzdaz.Az((sgcenter.GetX()-53.2)  * pixsize /3600 );
    18751875#ifdef EXPERT
    18761876        cout << "- LEDs imply offset of Zd="
     
    19181918    }
    19191919
    1920 // Find Spot on Camera Center in Starguider camera
     1920    // Find Spot on Camera Center in Starguider camera
    19211921
    19221922    if (fOperations->IsEntryChecked(IDM_kRoqueLampAna))
     
    19471947        f2.DrawCircle(sgcenter, 115.0, 0x0fa);
    19481948    }
    1949 
    1950 
    19511949
    19521950    // we calculate the offset given by the three ETH Leds visible to
     
    19581956
    19591957    // Position corresponding to the camera center (53.2, 293.6)
    1960     Ring skycenter(392, 318);
     1958    //Ring skycenter(392, 318);
     1959    Ring skycenter(768/2, 576/2);
    19611960    // MStarList spots;
    19621961
     
    19801979        // very careful: If center of camera cannot be determined
    19811980        // sgcenter jumps to (0,0) 
    1982         double sgcenteroffsetX = 0.0;
    1983         double sgcenteroffsetY = 0.0;
    1984         if ((double)sgcenter.GetX() > 0.0 && (double)sgcenter.GetY() > 0.0)
    1985         {
    1986             //Please never change this offsets!!!
    1987             sgcenteroffsetX = sgcenter.GetX()-53.2;
    1988             sgcenteroffsetY = sgcenter.GetY()-293.6;
    1989         }
     1981
     1982        //Please never change this offsets!!!
     1983        // 53.2 and 293.6 are the "preliminary" camera center
     1984        // -9 and 28.5 are the offsets of the pointing position in the sky
     1985        const XY offset(53.2-9, 293.6+28.5);
     1986
     1987        const Bool_t centerisvalid = sgcenter.GetX()>0 && sgcenter.GetY()>0;
     1988        if (centerisvalid)
     1989            skycenter.SetXY(sgcenter.X() - offset.X(),
     1990                            sgcenter.Y() - offset.Y());
    19901991
    19911992        // we obtain stars in the effective star FOV and draw them.
     
    19931994        // We determine the ideal starfield using camera sagging info
    19941995        // from the LEDs
    1995 
    1996         //cout << sgcenteroffsetX << " " << sgcenteroffsetY << endl;
    1997 
    1998         fSao->CalcStars(stars, 530, 292,
    1999                         -8+2-3+sgcenteroffsetX,  //x: star<spot =>subs
    2000                         31.5-3+sgcenteroffsetY);   //y: star<spot =>subs?
    2001 
     1996        fSao->CalcStars(stars, 530, 292, skycenter.GetX(), skycenter.GetY());
    20021997        fSao->DrawStars(stars, cimg);
    20031998
     
    20082003        // Next we evaluate the offset given by the LEDs. This we obtain
    20092004        // in Zd/Az and add it to the tracking error.
    2010        
    20112005        if (fDisplay->IsEntryChecked(IDM_kStarguider))
    20122006        {
     
    20202014            fSkyBright->SetText(txt);
    20212015
     2016            const Bool_t brightnessisvalid = bright<1.75*fLastBright &&
     2017                bright>30 && bright<110;
     2018
     2019            fLastBright = bright;
     2020
    20222021            ULong_t color;
    20232022            gClient->GetColorByName("Green", color);   
     
    20332032            const Int_t rc = CalcTrackingError(spots, stars, fD, t, bright, numstars);
    20342033
    2035             if ((bright <= 1.75* fLastBright) && (bright < 110))
    2036                 fStatus = MDriveCom::kMonitoring;
    2037             else
    2038                 fStatus = MDriveCom::kError;
     2034            const Bool_t monitoring = brightnessisvalid && centerisvalid;
     2035
     2036            fStatus = monitoring ? MDriveCom::kMonitoring : MDriveCom::kError;
    20392037
    20402038            if (fCosy)
     
    20432041            if (fOperations->IsEntryChecked(IDM_kStargAnalysis))
    20442042                fStargHistograms->Fill(spots, stars, fD,
    2045                                        fSao->GetZdAz(), sgcenter, sgcenterzdaz,
     2043                                       fSao->GetZdAz(), sgcenter, /*sgcenterzdaz,*/
    20462044                                       star, bright, fPos, t);
    2047 
    2048             fLastBright = bright;
    20492045
    20502046            if (fCosy)
     
    20552051                                    time.GetMjd(), 0, 0);    // Report
    20562052            }
     2053
    20572054        } //kStarguider
    20582055
    2059         f2.DrawCircle(skycenter, 2.0, 0x0a);
    2060        
    2061         f2.DrawCircle(skycenter, 7.4, 0x0a); //0.1deg
    2062 
    2063         f2.DrawCircle(skycenter, 2.06*.5*74.0, 0x0a);
    2064         f2.DrawCircle(skycenter, 2.32*.5*74.0, 0x0a);
    2065         f2.DrawCircle(skycenter, 3.50*.5*74.0, 0x0a);
    2066         f2.DrawCircle(skycenter, 3.84*.5*74.0, 0x0a);
     2056        if (centerisvalid)
     2057        {
     2058            f2.DrawCircle(skycenter, 2.0, 0x0a);
     2059
     2060            f2.DrawCircle(skycenter, 7.4, 0x0a); //0.1deg
     2061
     2062            f2.DrawCircle(skycenter, 2.06*.5*74.0, 0x0a);
     2063            f2.DrawCircle(skycenter, 2.32*.5*74.0, 0x0a);
     2064            f2.DrawCircle(skycenter, 3.50*.5*74.0, 0x0a);
     2065            f2.DrawCircle(skycenter, 3.84*.5*74.0, 0x0a);
     2066        }
     2067
    20672068    } //CalcStars
    20682069
  • trunk/MagicSoft/Cosy/tcpip/MDriveCom.cc

    r7707 r7764  
    231231    if (stat&kError)
    232232        SetStatus(0);
    233     if (stat&kStopped)
    234         SetStatus(1);
    235233    if (stat&kStandby)
    236234        SetStatus(2);
  • trunk/MagicSoft/Cosy/tcpip/MDriveCom.h

    r7707 r7764  
    2929    enum
    3030    {
    31         kError    = 0x01,
    32         kMoving   = 0x02,
    33         kTracking = 0x04,
    34         kStopping = 0x08,
    35         kStopped  = 0x10,
    36         kStandby  = 0x20,
     31        kError      = 0x01,
     32        kMoving     = 0x02,
     33        kTracking   = 0x04,
     34        kStopping   = 0x08,
     35        kStopped    = 0x10,
     36        kStandby    = 0x20,
    3737        kMonitoring = 0x40
    3838    };
Note: See TracChangeset for help on using the changeset viewer.