Changeset 18620 for trunk/FACT++/drive


Ignore:
Timestamp:
09/18/16 14:45:04 (8 years ago)
Author:
tbretz
Message:
Removed references to root.
Location:
trunk/FACT++/drive
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/drive/Ring.cc

    r18618 r18620  
    66
    77#include "Led.h"
    8 #include "Leds.h"
    9 
    10 #include "Rings.h"
    11 #include "MString.h"
    12 
    13 ClassImp(Ring);
    148
    159using namespace std;
    1610
    17 Ring::Ring(Double_t x, Double_t y) :
    18     fX(x), fY(y), fR(0), fPhi(0), fDx(-1), fDy(-1), fDr(-1), fDphi(-1)
     11Ring::Ring(double x, double y) :
     12    fX(x), fY(y), fR(0), fPhi(0)
    1913{
    2014}
    2115
    22 bool Ring::CalcCenter(const Leds &leds, Int_t i, Int_t j, Int_t k)
     16bool Ring::CalcCenter(Led i, Led j, Led k)
    2317{
    24     if (leds.At(i)==NULL)
    25     {
    26         cout << "Ring::CalcCenter: Led i=" << i << " is NULL." << endl;
    27         return kFALSE;
    28     }
    29     if (leds.At(j)==NULL)
    30     {
    31         cout << "Ring::CalcCenter: Led j=" << j << " is NULL." << endl;
    32         return kFALSE;
    33     }
    34     if (leds.At(k)==NULL)
    35     {
    36         cout << "Ring::CalcCenter: Led k=" << k << " is NULL." << endl;
    37         return kFALSE;
    38     }
    39 
    40     Double_t h1 = leds(i).GetY()- leds(j).GetY();
     18    double h1 = i.GetY() - j.GetY();
    4119
    4220    if (h1==0)
    4321    {
    44         Swap(j, k);
    45         h1 = leds(i).GetY()- leds(j).GetY();
     22        std::swap(j, k);
     23        h1 = i.GetY() - j.GetY();
    4624        if (h1==0)
    4725        {
    4826            cout << "Ring::CalcCenter: h1==0" <<endl;
    49             return kFALSE;
     27            return false;
    5028        }
    5129    }
    5230
    53     Double_t h2 = leds(j).GetY() - leds(k).GetY();
     31    double h2 = j.GetY() - k.GetY();
    5432
    5533    if (h2==0)
    5634    {
    57         Swap(i, j);
    58         h2 = leds(j).GetY() - leds(k).GetY();
     35        std::swap(i, j);
     36        h2 = j.GetY() - k.GetY();
    5937        if (h2==0)
    6038        {
    6139            cout << "Ring::CalcCenter: h2==0" << endl;
    62             return kFALSE;
     40            return false;
    6341        }
    6442    }
    6543
    66     const Double_t w1 = leds(i).GetX() - leds(j).GetX();
    67     const Double_t w2 = leds(j).GetX() - leds(k).GetX();
     44    const double w1 = i.GetX() - j.GetX();
     45    const double w2 = j.GetX() - k.GetX();
    6846
    69     const Double_t m1 = -w1/h1;
    70     const Double_t m2 = -w2/h2;
     47    const double m1 = -w1/h1;
     48    const double m2 = -w2/h2;
    7149
    72     if (m2-m1==0)
     50    if (m2 - m1==0)
    7351    {
    7452        cout << "Ring::CalcCenter: All three points in a row! (m2-m1==0)" << endl;
    75         return kFALSE;
     53        return false;
    7654    }
    7755
    78     fX = ((m2*(leds(j).GetX() + leds(k).GetX()) + leds(i).GetY() - leds(k).GetY()       -m1*(leds(i).GetX() + leds(j).GetX()))/(m2-m1)/2);
    79     fY = ((m2*(leds(i).GetY() + leds(j).GetY()) +m1*m2*(leds(k).GetX() - leds(i).GetX())-m1*(leds(j).GetY() + leds(k).GetY()))/(m2-m1)/2);
     56    fX = ((m2*(j.GetX() + k.GetX()) + i.GetY() - k.GetY()        -m1*(i.GetX() + j.GetX()))/(m2-m1)/2);
     57    fY = ((m2*(i.GetY() + j.GetY()) + m1*m2*(k.GetX() - i.GetX())-m1*(j.GetY() + k.GetY()))/(m2-m1)/2);
    8058
    81     fR = hypot(fX-leds(i).GetX(), fY-leds(i).GetY());
     59    fR = hypot(fX - i.GetX(), fY - i.GetY());
    8260
    83     fMag = (leds(i).GetMag() + leds(j).GetMag() + leds(k).GetMag())/3;
     61    fMag = (i.GetMag() + j.GetMag() + k.GetMag())/3;
    8462
    85     return kTRUE;
     63    return true;
    8664}
    8765
    88 void Ring::InterpolCenters(const Rings &rings)
     66void Ring::InterpolCenters(const vector<Ring> &rings)
    8967{
    90     const int n=rings.GetEntries();
    91 
    9268    fX = 0;
    9369    fY = 0;
    9470    fR = 0;
    9571
    96     fDx=0;
    97     fDy=0;
    98     fDr=0;
    99 
    10072    fMag=0;
    10173
    102     if (n<1)
     74    const int n=rings.size();
     75    if (n==0)
    10376        return;
    10477
    105     for (int i=0; i<n; i++)
     78    for (auto it=rings.begin(); it!=rings.end(); it++)
    10679    {
    107         const Ring &ring = rings(i);
    108 
    109         fX   += ring.GetX();
    110         fY   += ring.GetY();
    111         fR   += ring.GetR();
    112         fMag += ring.GetMag();
     80        fX   += it->GetX();
     81        fY   += it->GetY();
     82        fR   += it->GetR();
     83        fMag += it->GetMag();
    11384    }
    11485
     
    11788    fR   /= n;
    11889    fMag /= n;
    119 
    120     if (n<2)
    121         return;
    122 
    123     //
    124     // deviation of x- and y coordinate and radius
    125     //
    126     for (int i=0; i<n; i++)
    127     {
    128         const Ring &ring = rings(i);
    129 
    130         fDx += sqr(ring.GetX()-fX);
    131         fDy += sqr(ring.GetY()-fY);
    132         fDr += sqr(ring.GetR()-fR);
    133     }
    134 
    135     fDx=sqrt(fDx)/n;
    136     fDy=sqrt(fDy)/n;
    137     fDr=sqrt(fDr)/n;
    13890}
    139 
    140 void Ring::Print(Option_t *o) const
    141 {
    142     cout << "Ring: ";
    143     cout << "x="   << MString::Format("%5.1f", fX) << "+-" << MString::Format("%.1f", fDx) << ", ";
    144     cout << "y="   << MString::Format("%5.1f", fY) << "+-" << MString::Format("%.1f", fDy) << ", ";
    145     cout << "r="   << MString::Format("%5.1f", fR) << "+-" << MString::Format("%.1f", fDr) << ", ";
    146     cout << "phi=" << fPhi              << "+-" << fDphi << endl;
    147 }
    148 
  • trunk/FACT++/drive/Ring.h

    r18618 r18620  
    22#define COSY_Ring
    33
    4 #ifndef ROOT_TObject
    5 #include <TObject.h>
    6 #endif
     4#include <vector>
    75
    8 class Leds;
     6#include "Led.h"
     7
    98class Rings;
    109
    11 class Ring : public TObject
     10class Ring
    1211{
    1312private:
    14     Double_t fX;
    15     Double_t fY;
    16     Double_t fR;
    17     Double_t fPhi;
     13    double fX;
     14    double fY;
     15    double fR;
     16    double fPhi;
    1817
    19     Double_t fDx;
    20     Double_t fDy;
    21     Double_t fDr;
    22     Double_t fDphi;
     18    double fMag;
    2319
    24     Double_t fMag;
    25 
    26     Double_t sqr(Double_t x) { return x*x; }
    27 
    28     void Swap(int &m, int &n)
    29     {
    30         int dummy = m;
    31         m = n;
    32         n = dummy;
    33     }
     20    double sqr(double x) { return x*x; }
    3421
    3522public:
    36     Ring(Double_t x=0, Double_t y=0);
     23    Ring(double x=0, double y=0);
    3724
    38     void SetXY(Double_t x=0, Double_t y=0) { fX=x; fY=y; }
     25    void SetXY(double x=0, double y=0) { fX=x; fY=y; }
     26    void SetPhi(double phi) { fPhi=phi; }
    3927
    40     Double_t GetX() const   { return fX; }
    41     Double_t GetY() const   { return fY; }
    42     Double_t GetR() const   { return fR; }
    43     Double_t GetPhi() const { return fPhi; }
     28    double GetX() const   { return fX; }
     29    double GetY() const   { return fY; }
     30    double GetR() const   { return fR; }
     31    double GetPhi() const { return fPhi; }
    4432
    45     Double_t GetMag() const { return fMag; }
     33    double GetMag() const { return fMag; }
    4634
    47     bool CalcCenter(const Leds &leds, Int_t i, Int_t j, Int_t k);
    48     void InterpolCenters(const Rings &rings);
    49 
    50     void Print(Option_t *o=NULL) const;
    51 
    52     ClassDef(Ring, 1)
     35    bool CalcCenter(Led, Led, Led);
     36    void InterpolCenters(const std::vector<Ring> &rings);
    5337};
    5438
Note: See TracChangeset for help on using the changeset viewer.