Changeset 1802 for trunk/MagicSoft/Cosy


Ignore:
Timestamp:
03/02/03 16:55:47 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy
Files:
5 added
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/Changelog

    r1801 r1802  
    11                                                                  -*-*- END -*-*-
     2
     3 2003/03/02 - Daniela Dorner, Thomas Bretz (LaPalma):
     4
     5  * Makefile:
     6     - removed dummy
     7     - exchnged caos, candrv
     8     - removed MCint.o
     9     - added cosy.so
     10 
     11   * starg.cc:
     12     - echanged to use png reading mode
     13   
     14   * caos/Led.[h,cc], caos/Leds.[h,cc], caos/Ring.[h,cc],
     15     caos/Ring.[h,cc]:
     16     - added Print
     17
     18   * caos/Led.h:
     19     - added compare
     20     - added issortable
     21
     22   * caos/Ring.cc:
     23     - changed output
     24
     25   * caos/Rings.cc:
     26     - fixed some minor bugs
     27
     28   * gui/GuiLinkDef.h, gui/Makefile;
     29     - added MGPngReader.[h,cc]
     30
     31   * gui/MGPngReader.[h,cc]:
     32     - added
     33     
     34   * gui/MGStarguider.cc:
     35     - release grabbed mouse
     36     - removed ExitLoop
     37     
     38   * gui/MGStarguider.h:
     39     - changed derivement from Camera to PixClient
     40
     41   * videodev/Camera.[h,cc]:
     42     - changed to use PixClient
     43   
     44   * videodev/Makefile, videodev/VideodevLinkDef.h:
     45     - added PixClient
     46
     47   * videodev/PixClient.[h,cc]
     48     - added
     49
     50
     51
    252 2003/02/27 - Thomas Bretz (LaPalma):
    353
  • trunk/MagicSoft/Cosy/Makefile

    r1801 r1802  
    2020#
    2121
    22 PROGRAMS = testse starg cosy dummy
    23 SOLIB    =
     22PROGRAMS = testse cosy starg
     23SOLIB    = cosy.so
    2424CINT     = M
    2525INCLUDES = -I. -Imain  -Ibase -Icandrv -Iincl -Igui -Ivideodev -Icatalog -Idevdrv
     
    4040        main     \
    4141        gui      \
    42         caos     \
    43         candrv   \
    4442        catalog  \
    4543        videodev \
    4644        devdrv   \
     45        candrv   \
     46        caos     \
    4747        base     \
    4848        slalib
     
    7575        $(CXX) $(CXXFLAGS) $(LIBS) $(OBJS) $@.o  $(MARS_LIB) $(ROOTGLIBS) -o $@
    7676
    77 $(SOLIB): $(LIBRARIES) $(OBJS) $(HEADERS) MCint.o
     77$(SOLIB): $(LIBRARIES) $(OBJS) $(HEADERS)
    7878        @echo " Linking $(SOLIB) ..."
    7979        $(CXX) -shared $(CXXFLAGS) $(SUBDIRS:=/*.o) $(ROOTGLIBS) -o $@
  • trunk/MagicSoft/Cosy/caos/Led.cc

    r1798 r1802  
    11#include "Led.h"
    22
     3#include <iostream.h>
    34#include <TMath.h>
    45
     
    1112    fPhi = TMath::ATan2(fY-ring.GetY(), fX-ring.GetX())*180/TMath::Pi();
    1213}
     14
     15void Led::Print(Option_t *o=NULL) const
     16{
     17    cout << "Led: ";
     18    cout << "x="   << fX   << "+-" << fDx   << ", ";
     19    cout << "y="   << fY   << "+-" << fDy   << ", ";
     20    cout << "phi=" << fPhi << "+-" << fDphi << ", ";
     21    cout << "mag=" << fMag << endl;
     22}
  • trunk/MagicSoft/Cosy/caos/Led.h

    r1798 r1802  
    2727    }
    2828
    29     Double_t GetX() const   { return fX; }
    30     Double_t GetY() const   { return fY; }
    31     Double_t GetDx() const  { return fDx; }
    32     Double_t GetDy() const  { return fDy; }
    33     Double_t GetMag() const { return fMag; }
     29    Int_t Compare(const TObject *obj) const
     30    {
     31        const Led *const l = (Led*)obj;
     32
     33        if (fPhi<l->fPhi)
     34            return -1;
     35
     36        if (fPhi>l->fPhi)
     37            return 1;
     38
     39        return 0;
     40    }
     41
     42    Double_t GetX() const    { return fX; }
     43    Double_t GetY() const    { return fY; }
     44    Double_t GetDx() const   { return fDx; }
     45    Double_t GetDy() const   { return fDy; }
     46    Double_t GetPhi() const  { return fPhi; }
     47    Double_t GetDphi() const { return fDphi; }
     48    Double_t GetMag() const  { return fMag; }
     49
     50        Bool_t IsSortable() const { return kTRUE; }
    3451
    3552    void CalcPhi(const Ring &ring);
     53
     54    void Print(Option_t *o=NULL) const;
    3655
    3756    ClassDef(Led, 1)
  • trunk/MagicSoft/Cosy/caos/Leds.cc

    r1798 r1802  
    11#include "Leds.h"
     2
     3#include <iostream.h>
    24
    35#include "Led.h"
     
    911    new ((*this)[i]) Led(x, y, dx, dy, mag);
    1012}
     13
     14void Leds::Print(Option_t *o=NULL) const
     15{
     16    cout << "Number of Leds: " << GetEntries() << endl;
     17    TClonesArray::Print();
     18}
  • trunk/MagicSoft/Cosy/caos/Leds.h

    r1798 r1802  
    1010class Leds : public TClonesArray
    1111{
    12 private:
    1312public:
    1413    Leds() : TClonesArray("Led", 1) {}
     
    2726    Led &operator()(int i) { return *(Led*)((*(Leds*)this)[i]); }
    2827
     28    void Print(Option_t *o=NULL) const;
     29
    2930    ClassDef(Leds, 1)
    3031};
  • trunk/MagicSoft/Cosy/caos/Ring.cc

    r1798 r1802  
    2020        if (h1==0)
    2121        {
    22                 cout << "h1==0" <<endl;
    23                 return kFALSE;
     22            cout << "h1==0" <<endl;
     23            return kFALSE;
    2424        }
    2525    }
     
    3838    }
    3939
    40     Float_t w1 = leds(i).GetX() - leds(j).GetX();
    41     Float_t w2 = leds(j).GetX() - leds(k).GetX();
     40    const Float_t w1 = leds(i).GetX() - leds(j).GetX();
     41    const Float_t w2 = leds(j).GetX() - leds(k).GetX();
    4242
    43     Float_t m1 = -w1/h1;
    44     Float_t m2 = -w2/h2;
     43    const Float_t m1 = -w1/h1;
     44    const Float_t m2 = -w2/h2;
    4545
    4646    if (m2-m1==0)
    4747    {
    48         cout << "m2-m1==0" << endl;
     48        cout << "All three points in a row! (m2-m1==0)" << endl;
    4949        return kFALSE;
    5050    }
     
    6666    fR = 0;
    6767
     68    fDx=0;
     69    fDy=0;
     70    fDr=0;
     71
     72    if (n<1)
     73        return;
     74
    6875    for (int i=0; i<n; i++)
    6976    {
    70         const Ring &ring = *(Ring*)((Rings&)rings)[i];
     77        const Ring &ring = rings(i);
    7178
    7279        fX += ring.GetX();
     
    7986    fR /= n;
    8087
     88    if (n<2)
     89        return;
     90
    8191    //
    8292    // deviation of x- and y coordinate and radius
    8393    //
    84     Float_t sumx=0;
    85     Float_t sumy=0;
    86     Float_t sumr=0;
    87 
    8894    for (int i=0; i<n; i++)
    8995    {
    90         const Ring &ring = *(Ring*)((Rings&)rings)[i];
     96        const Ring &ring = rings(i);
    9197
    92         sumx += sqr(ring.GetX()-fX);
    93         sumy += sqr(ring.GetY()-fY);
    94         sumr += sqr(ring.GetR()-fR);
     98        fDx += sqr(ring.GetX()-fX);
     99        fDy += sqr(ring.GetY()-fY);
     100        fDr += sqr(ring.GetR()-fR);
    95101    }
    96102
    97         fDx=sqrt(sumx)/(n-1);
    98         fDy=sqrt(sumy)/(n-1);
    99         fDr=sqrt(sumr)/(n-1);
    100 
     103    fDx=sqrt(fDx)/(n-1);
     104    fDy=sqrt(fDy)/(n-1);
     105    fDr=sqrt(fDr)/(n-1);
    101106}
    102107
     108void Ring::Print(Option_t *o=NULL) const
     109{
     110    cout << "Ring: ";
     111    cout << "x="   << fX   << "+-" << fDx   << ", ";
     112    cout << "y="   << fY   << "+-" << fDy   << ", ";
     113    cout << "r="   << fR   << "+-" << fDr   << ", ";
     114    cout << "phi=" << fPhi << "+-" << fDphi << endl;
     115}
     116
  • trunk/MagicSoft/Cosy/caos/Ring.h

    r1798 r1802  
    4141    void InterpolCenters(const Rings &rings);
    4242
     43    void Print(Option_t *o=NULL) const;
     44
    4345    ClassDef(Ring, 1)
    4446};
  • trunk/MagicSoft/Cosy/caos/Rings.cc

    r1798 r1802  
    11#include "Rings.h"
     2
     3#include <iostream.h>
    24
    35#include "Led.h"
     
    68ClassImp(Rings);
    79
    8 Int_t Rings::CalcCenters(const Leds &leds)
     10void Rings::CalcCenters(const Leds &leds)
    911{
    1012    int nPoints = leds.GetEntries();
     
    1517            for (int k=j+1; k<nPoints; k++)
    1618            {
    17                 Ring &ring = *(Ring*)(*this)[n];
     19                Ring &ring = *new ((*this)[n]) Ring;
    1820
    19                 ring.CalcCenter(leds, i, j, k);
     21                if (!ring.CalcCenter(leds, i, j, k))
     22                {
     23                    RemoveAt(n);
     24                    continue;
     25                }
    2026
    2127                n++;
    2228            }
    23     return n;
     29
     30    Expand(n);
    2431}
    2532
     
    3138
    3239    //
    33     // angles v and relative angle w
     40    // angles v
    3441    //
    35     for (int j=0; j<leds.GetEntries(); j++)
     42    const int n=leds.GetEntries();
     43
     44    for (int j=0; j<n; j++)
    3645        leds(j).CalcPhi(fCenter);
    3746}
     47
     48void Rings::Print(Option_t *o=NULL) const
     49{
     50    cout << "Number of Rings: " << GetEntries() << endl;
     51    TClonesArray::Print();
     52    cout << "Center: " << endl;
     53    fCenter.Print();
     54}
  • trunk/MagicSoft/Cosy/caos/Rings.h

    r1798 r1802  
    1717    Ring fCenter;
    1818
    19     Int_t CalcCenters(const Leds &leds);
     19    void CalcCenters(const Leds &leds);
    2020
    2121public:
    2222    Rings() : TClonesArray("Ring", 1) {}
    2323
    24     //
    25     //  rings.CalcRings(leds);
    26     //
    2724    void CalcRings(Leds &leds);
     25
     26    void Print(Option_t *o=NULL) const;
     27
     28    const Ring &operator()(int i) const { return *(Ring*)((*(Rings*)this)[i]); }
     29    Ring &operator()(int i) { return *(Ring*)((*(Rings*)this)[i]); }
     30
     31    const Ring &GetCenter() const { return fCenter; }
    2832
    2933    ClassDef(Rings, 1)
  • trunk/MagicSoft/Cosy/gui/GuiLinkDef.h

    r1109 r1802  
    1919#pragma link C++ class MGCosy+;
    2020#pragma link C++ class MGStarguider+;
     21#pragma link C++ class MGPngReader+;
    2122
    2223#endif
  • trunk/MagicSoft/Cosy/gui/MGStarguider.cc

    r1758 r1802  
    7373
    7474MGStarguider::MGStarguider(MObservatory::LocationName_t key)
    75 : Camera(), TGMainFrame(gClient->GetRoot(), 768, 700), fObservatory(key), fDx((768-kZOOM)/2), fDy((512-kZOOM)/2)
    76 {
    77     gVirtualX->GrabButton(fId, kButton2, /*kButtonPressMask|kButtonReleaseMask|*/kNone, kNone, kNone, kNone);
     75: TGMainFrame(gClient->GetRoot(), 768, 700), fObservatory(key), fDx((768-kZOOM)/2), fDy((512-kZOOM)/2)
     76{
     77    gVirtualX->GrabButton(fId, kButton2, 0, 0, 0, 0, kTRUE);
    7878
    7979
     
    233233MGStarguider::~MGStarguider()
    234234{
     235    gVirtualX->GrabButton(0, kButton2, 0, 0, 0, 0, kFALSE);
     236
    235237    fTimer->TurnOff();
    236238    delete fTimer;
     
    252254    cout << "EventDisplay::CloseWindow: Exit Application Loop." << endl;
    253255
    254     ExitLoop();
     256    /*ExitLoop();*/
     257    //cout << "FIXME: ExitLoop not called!!!!!!" << endl;
    255258
    256259    gSystem->ExitLoop();
  • trunk/MagicSoft/Cosy/gui/MGStarguider.h

    r1758 r1802  
    55#include <TGFrame.h>
    66#endif
    7 #ifndef CAMERA_H
    8 #include "Camera.h"
    9 #endif
     7#include "PixClient.h"
    108
    119#include "MGList.h"
     
    3129class MStarList;
    3230
    33 class MGStarguider : public Camera, public TGMainFrame
     31class MGStarguider : public PixClient, public TGMainFrame
    3432{
    3533private:
  • trunk/MagicSoft/Cosy/gui/Makefile

    r1110 r1802  
    2121
    2222INCLUDES = -I. -I.. -I../base -I../slalib -I../candrv -I../incl \
    23            -I../catalog -I../videodev -I../main
     23           -I../catalog -I../videodev -I../main -I../caos
    2424
    2525# @code
     
    4040           MGVelocity.cc \
    4141           MGStarguider.cc \
    42            MGSkyPosition.cc
     42           MGPngReader.cc \
     43           MGSkyPosition.cc \
     44           MGMenu.cc
    4345
    4446SRCS        = $(SRCFILES)
  • trunk/MagicSoft/Cosy/starg.cc

    r1758 r1802  
    1 #include <iostream.h>
    2 
    31#include <TROOT.h>
    42#include <TApplication.h>
    53
     4#include <iostream.h>
     5
    66#include "MGStarguider.h"
     7#include "MGPngReader.h"
     8#include "Camera.h"
     9#include "PngReader.h"
     10#include "PixClient.h"
    711
    812/* ---------------------------------------------------------------------- */
     
    1620    TApplication *app=new TApplication("Starguider", &argc, argv);
    1721
    18     MGStarguider starg(MObservatory::kMagic1);
     22    Bool_t dummy = kFALSE;
    1923
    20     starg.Loop(0);
     24    for (int i=0; i<argc; i++)
     25    {
     26        TString arg(argv[i]);
     27        if (arg=="-d")
     28            dummy = kTRUE;
     29    }
    2130
    22     app->Run(kTRUE);
     31    PixClient *client=new MGPngReader(MObservatory::kMagic1);
     32
     33    if (dummy)
     34    {
     35        cout << " --> Starting in dummy-mode. <--" << endl;
     36        PngReader *read=new PngReader(*client);
     37        app->Run(kTRUE);
     38        read->ExitLoop();
     39        delete read;
     40        //        delete client;
     41    }
     42    else
     43    {
     44        cout << " --> Starting in real-mode. <--" << endl;
     45        //PixClient *client=new MGStarguider(MObservatory::kMagic1);
     46        Camera *cam = new Camera(*client);
     47        cam->Loop(0);
     48        app->Run(kTRUE);
     49        cam->ExitLoop();
     50        delete cam;
     51        //        delete client;
     52    }
     53
     54    delete client;
     55
     56
     57    cout << "Application end...." << endl;
    2358
    2459    cout << "Exit." << endl;
  • trunk/MagicSoft/Cosy/videodev/Camera.cc

    r1531 r1802  
    102102}
    103103
    104 Camera::Camera() : fd(-1), iBufferSize(0)
     104Camera::Camera(PixClient &client) : fd(-1), iBufferSize(0), fClient(client)
    105105{
    106106    cout << "Starting thread..." << flush;
     
    192192
    193193
    194 void Camera::ProcessFrame(const unsigned long n, byte *img,
    195                           struct timeval *tm)
    196 {
    197     cout << "Img: " << n << "  " << (void*)img << endl;
    198 }
    199 
    200194void *Camera::MapThread(void *arg)
    201195{
     
    251245                break;
    252246
    253             ProcessFrame(i, (byte*)fImg, &fTime);
     247            fClient.ProcessFrame(i, (byte*)fImg, &fTime);
    254248            i++;
    255249        }
     
    258252        {
    259253            LoopStep(i);
    260             ProcessFrame(i, (byte*)fImg, &fTime);
     254            fClient.ProcessFrame(i, (byte*)fImg, &fTime);
    261255            i++;
    262256        }
    263257
    264258        LoopStep(i);
    265         ProcessFrame(i, (byte*)fImg, &fTime);
     259        fClient.ProcessFrame(i, (byte*)fImg, &fTime);
    266260        i++;
    267261
  • trunk/MagicSoft/Cosy/videodev/Camera.h

    r1266 r1802  
    1414#endif
    1515
    16 
    17 typedef unsigned char byte;
     16#include "PixClient.h"
    1817
    1918class Camera
     
    5150    pthread_cond_t  fCond;
    5251
     52    PixClient &fClient;
     53
    5354    //
    5455    // Hardware dependant functions
     
    7475
    7576public:
    76     Camera();
     77    Camera(PixClient &client);
    7778    virtual ~Camera();
    7879
     
    9697    // Execution of one frame - this function may be overloaded!
    9798    //
    98     virtual void ProcessFrame(const unsigned long n,
    99                               byte *img, struct timeval *tm);
     99    //virtual void ProcessFrame(const unsigned long n,
     100    //                          byte *img, struct timeval *tm);
    100101
    101102    //
  • trunk/MagicSoft/Cosy/videodev/Makefile

    r1691 r1802  
    2020# @endcode
    2121
    22 INCLUDES = -I. -I.. -I../incl -I../base -I/usr/X11R6/include
     22INCLUDES = -I. -I.. -I../incl -I../base -I../caos -I/usr/X11R6/include
    2323
    2424# @code
     
    3232
    3333SRCFILES = Camera.cc \
     34           PngReader.cc \
     35           PixClient.cc \
    3436           Filter.cc \
    3537           Filter2.cc \
     38           CaosFilter.cc \
    3639           Writer.cc
    3740
  • trunk/MagicSoft/Cosy/videodev/VideodevLinkDef.h

    r1691 r1802  
    88#pragma link C++ class Filter+;
    99#pragma link C++ class Filter2+;
     10#pragma link C++ class CaosFilter+;
    1011
    1112#pragma link C++ class Camera+;
     13#pragma link C++ class PngReader+;
    1214
    1315#endif
Note: See TracChangeset for help on using the changeset viewer.