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

Legend:

Unmodified
Added
Removed
  • 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)
Note: See TracChangeset for help on using the changeset viewer.