Changeset 2409


Ignore:
Timestamp:
10/20/03 17:44:51 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/manalysis/MCerPhotEvt.cc

    r2206 r2409  
    1616!
    1717!
    18 !   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
    19 !   Author(s): Harald Kornmayer 1/2001 (harald@mppmu.mpg.de)
    20 !
    21 !   Copyright: MAGIC Software Development, 2000-2001
     18!   Author(s): Thomas Bretz, 12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
     19!   Author(s): Harald Kornmayer, 1/2001
     20!
     21!   Copyright: MAGIC Software Development, 2000-2003
    2222!
    2323!
    2424\* ======================================================================== */
    2525
     26/////////////////////////////////////////////////////////////////////////////
     27//           
     28// MCerPhotEvt
     29//           
     30// Class Version 1:
     31//  - first version
     32//
     33// Class Version 2:
     34//  - added fLut to accelerate GetPixById a lot
     35//
     36/////////////////////////////////////////////////////////////////////////////
    2637#include "MCerPhotEvt.h"
    2738
     
    3344
    3445#include "MLog.h"
     46#include "MLogManip.h"
    3547
    3648#include "MGeomCam.h"
     
    5668// This is not yet implemented like it should.
    5769//
     70/*
    5871void MCerPhotEvt::Draw(Option_t* option)
    5972{
     
    6982    //    disp->DrawPhotNum(this);
    7083}
     84*/
    7185
    7286// --------------------------------------------------------------------------
     
    7791{
    7892    fNumPixels = 0;
    79 //    fPixels->Delete();
     93    fLut.Set(0);
     94    // fPixels->Delete();
    8095}
    8196
     
    109124Bool_t MCerPhotEvt::IsPixelExisting(Int_t id) const
    110125{
    111     const Int_t entries = fPixels->GetEntries();
    112 
    113     for (Int_t i=0; i<entries; i++)
    114     {
    115         if (id == (*this)[i].GetPixId())
    116             return kTRUE;
    117     }
    118 
    119     return kFALSE;
     126    const MCerPhotPix *pix = GetPixById(id);
     127    return pix ? kTRUE : kFALSE;
    120128}
    121129
     
    126134Bool_t MCerPhotEvt::IsPixelUsed(Int_t id) const
    127135{
    128     const Int_t entries = fPixels->GetEntries();
    129 
    130     for (Int_t i=0; i<entries; i++)
    131     {
    132         const MCerPhotPix &pix = (*this)[i];
    133         if (!pix.IsPixelUsed())
    134             continue;
    135 
    136         if (id == pix.GetPixId() && pix.IsPixelUsed())
    137             return kTRUE;
    138     }
    139 
    140     return kFALSE;
     136    const MCerPhotPix *pix = GetPixById(id);
     137    return pix ? pix->IsPixelUsed() : kFALSE;
    141138}
    142139
     
    147144Bool_t MCerPhotEvt::IsPixelCore(Int_t id) const
    148145{
    149     const Int_t entries = fPixels->GetEntries();
    150 
    151     for (Int_t i=0; i<entries; i++)
    152     {
    153         const MCerPhotPix &pix = (*this)[i];
    154         if (!pix.IsPixelUsed())
    155             continue;
    156 
    157         if (id == pix.GetPixId() && pix.IsPixelCore())
    158             return kTRUE;
    159     }
    160 
    161     return kFALSE;
     146    const MCerPhotPix *pix = GetPixById(id);
     147    return pix ? pix->IsPixelCore() : kFALSE;
    162148}
    163149
     
    350336}
    351337
    352 // --------------------------------------------------------------------------
    353 //
    354 // Return a pointer to the pixel with the requested id. NULL if it doesn't
    355 // exist.
    356 //
    357 MCerPhotPix *MCerPhotEvt::GetPixById(int id) const
    358 {
    359     TIter Next(fPixels);
    360     MCerPhotPix *pix = NULL;
    361 
    362     while ((pix=(MCerPhotPix*)Next()))
    363         if (pix->GetPixId()==id)
    364             return pix;
    365 
    366     return NULL;
    367 }
    368 
    369 void MCerPhotEvt::Scale(Double_t f)
    370 {
    371     fPixels->ForEach(MCerPhotPix, Scale)(f);
    372 }
    373 
    374338void MCerPhotEvt::RemoveUnusedPixels()
    375339{
     
    383347    fPixels->Compress();
    384348    fNumPixels=fPixels->GetEntriesFast();
     349}
     350
     351// --------------------------------------------------------------------------
     352//
     353// Return a pointer to the pixel with the requested id. NULL if it doesn't
     354// exist.
     355//
     356MCerPhotPix *MCerPhotEvt::GetPixById(int idx) const
     357{
     358    if (fLut.GetSize()>0)
     359        return idx>=0 && idx<fLut.GetSize() ? (MCerPhotPix*)(fPixels->UncheckedAt(fLut[idx])) : 0;
     360
     361    TIter Next(fPixels);
     362    MCerPhotPix *pix = NULL;
     363
     364    while ((pix=(MCerPhotPix*)Next()))
     365        if (pix->GetPixId()==idx)
     366            return pix;
     367
     368    return NULL;
    385369}
    386370
     
    425409    return kTRUE;
    426410}
     411
     412void MCerPhotEvt::DrawPixelContent(Int_t num, TVirtualPad *pad=NULL) const
     413{
     414    *fLog << warn << "MCerPhotEvt::DrawPixelContent - not available." << endl;
     415}
  • trunk/MagicSoft/Mars/mhist/MHCamera.cc

    r2377 r2409  
    8080void MHCamera::Init()
    8181{
     82    UseCurrentStyle();
     83
    8284    SetDirectory(NULL);
    8385
     
    241243Int_t MHCamera::Fill(Axis_t x, Axis_t y, Stat_t w)
    242244{
    243     if (fNcells<=1)
     245    if (fNcells<=1 || IsFreezed())
    244246        return -1;
    245247
     
    265267        mean += fArray[i];
    266268
    267     return mean/(fNcells-2);
     269    return Profile(mean/(fNcells-2));
    268270}
    269271
     
    286288    sq  /= n;
    287289
    288     return sqrt(sq-sum*sum);
     290    return Profile(sqrt(sq-sum*sum));
    289291}
    290292
     
    297299{
    298300    if (fMinimum != -1111)
    299         return fMinimum;
     301        return Profile(fMinimum);
    300302
    301303    if (fNcells<=1)
     
    316318                minimum = fArray[idx+1];
    317319    }
    318     return minimum;
     320    return Profile(minimum);
    319321}
    320322
     
    326328Double_t MHCamera::GetMaximum(Bool_t all) const
    327329{
    328     if (fMaximum != -1111)
    329         return fMaximum;
     330    if (fMaximum!=-1111)
     331        return Profile(fMaximum);
    330332
    331333    if (fNcells<=1)
     
    345347                maximum = fArray[idx+1];
    346348    }
    347     return maximum;
     349    return Profile(maximum);
    348350}
    349351
     
    455457                gLog << warn << "MHCamera::Update: " << GetName() << " <" << GetTitle() << "> - Pixel Index #" << i << " contents is NaN (Not a Number)..." << endl;
    456458
    457             hex.SetFillColor(GetColor(fArray[i+1], min, max, islog));
     459            hex.SetFillColor(GetColor(GetBinContent(i+1), min, max, islog));
    458460        }
    459461        else
     
    466468            if (IsUsed(i) && !TMath::IsNaN(fArray[i+1]))
    467469            {
    468                 Float_t size = pix.GetD()*(fArray[i+1]-min)/(max-min);
     470                Float_t size = pix.GetD()*(GetBinContent(i+1)-min)/(max-min);
    469471                if (size>pix.GetD())
    470472                    size=pix.GetD();
     
    673675void MHCamera::AddCamContent(const MCamEvent &event, Int_t type)
    674676{
    675     if (fNcells<=1)
     677    if (fNcells<=1 || IsFreezed())
    676678        return;
    677679
     
    699701void MHCamera::AddCamContent(const MHCamera &d, Int_t type)
    700702{
    701     if (fNcells!=d.fNcells)
     703    if (fNcells!=d.fNcells || IsFreezed())
    702704        return;
    703705
     
    733735void MHCamera::AddCamContent(const TArrayD &event, const TArrayC *used)
    734736{
    735     if (event.GetSize()!=fNcells-2)
     737    if (event.GetSize()!=fNcells-2 || IsFreezed())
    736738        return;
    737739
     
    756758void MHCamera::CntCamContent(const MCamEvent &event, Double_t threshold, Int_t type)
    757759{
    758     if (fNcells<=1)
     760    if (fNcells<=1 || IsFreezed())
    759761        return;
    760762
     
    779781void MHCamera::CntCamContent(const TArrayD &event, Double_t threshold, Bool_t ispos)
    780782{
    781     if (event.GetSize()!=fNcells-2)
     783    if (event.GetSize()!=fNcells-2 || IsFreezed())
    782784        return;
    783785
     
    799801void MHCamera::FillRandom()
    800802{
    801     if (fNcells<=1)
     803    if (fNcells<=1 || IsFreezed())
    802804        return;
    803805
     
    855857void MHCamera::Reset(Option_t *opt)
    856858{
    857     if (fNcells<=1)
     859    if (fNcells<=1 || IsFreezed())
    858860        return;
    859861
     
    11271129    cout << "Software Pixel Index: " << idx << endl;
    11281130    cout << "Hardware Pixel Id:    " << idx+1 << endl;
    1129     cout << "Contents:             " << fArray[idx+1] << "  <";
     1131    cout << "Contents:             " << GetBinContent(idx+1) << "  <";
    11301132    cout << (IsUsed(idx)?"on":"off");
    11311133    cout << ">" << endl;
    11321134
    11331135    if (fNotify && fNotify->GetSize()>0)
    1134         new TCanvas;
    1135     fNotify->ForEach(MCamEvent, DrawPixelContent)(idx);
     1136    {
     1137        TCanvas *c=new TCanvas;
     1138        fNotify->ForEach(MCamEvent, DrawPixelContent)(idx, c);
     1139    }
    11361140}
    11371141
     
    11401144    return fGeomCam->GetNumPixels();
    11411145}
     1146
     1147TH1 *MHCamera::DrawCopy() const
     1148{
     1149    gPad=NULL;
     1150    return TH1D::DrawCopy();
     1151}
  • trunk/MagicSoft/Mars/mhist/MHCamera.h

    r2377 r2409  
    2828class MHCamera : public TH1D
    2929{
     30public:
     31    enum {
     32        kProfile = BIT(18),
     33        kFreezed = BIT(19)
     34    };
    3035private:
    3136    MGeomCam      *fGeomCam;     // pointer to camera geometry (y-axis)
     
    3540    TList         *fNotify;      //!
    3641
     42    Bool_t         fFreezed;     //! Just a dummy!!!! ([Set,Is]Freezed)
     43
    3744    //Int_t          fOptStat;
    38 
    3945    //TGStatusBar   *fStatusBar;
     46
    4047    void Init();
     48
     49    Stat_t Profile(Stat_t val) const
     50    {
     51        if (!TestBit(kProfile))
     52            return val;
     53
     54        const Stat_t n = TH1D::GetEntries();
     55        return n>0 ? val/n : val;
     56    }
    4157
    4258    Int_t GetColor(Float_t val, Float_t min, Float_t max, Bool_t islog);
     
    109125    virtual void     CntCamContent(const TArrayD &evt, Double_t threshold, Bool_t ispos=kTRUE);
    110126
     127    Stat_t GetBinContent(Int_t bin) const { return Profile(TH1D::GetBinContent(bin)); }
     128    Stat_t GetBinContent(Int_t binx, Int_t biny) const { return GetBinContent(binx); }
     129    Stat_t GetBinContent(Int_t binx, Int_t biny, Int_t binz) const { return GetBinContent(binx); }
     130    Stat_t GetBinError(Int_t bin) const { return Profile(TH1D::GetBinError(bin)); }
     131    Stat_t GetBinError(Int_t binx, Int_t biny) const { return GetBinError(binx); }
     132    Stat_t GetBinError(Int_t binx, Int_t biny, Int_t binz) const { return GetBinError(binx); }
     133
    111134    Double_t GetMinimum(Bool_t all) const;
    112135    Double_t GetMaximum(Bool_t all) const;
     
    126149
    127150    void  PrintInfo() const { Print(""); } // *MENU*
     151    void  Reset(Option_t *);
     152    void  Reset() { Reset(""); } // *MENU*
     153    TH1  *DrawCopy() const/* { gPad=NULL; return TH1D::DrawCopy(); }*/; // *MENU*
     154
    128155    void  Print(Option_t *) const;
    129156    void  Paint(Option_t *option="");
    130     void  Reset(Option_t * = "");
    131157    void  Draw(Option_t *option="");
    132158    void  SavePrimitive(ofstream &out, Option_t *);
     
    141167    void  SetInvDeepBlueSeaPalette(); // *MENU*
    142168
    143     void  SetAutoScale(); // *MENU*
    144     //void  SetOptStat(Int_t os=-1); // *MENU*
     169    void  SetAutoScale() { fMinimum = fMaximum = -1111; } // *MENU*
     170    void  DisplayAsHistogram() { SetDrawOption("histEP"); } // *MENU*
     171    void  DisplayAsCamera() { SetDrawOption(""); } // *MENU*
     172
     173    void  SetFreezed(Bool_t f=kTRUE) { f ? SetBit(kFreezed) : ResetBit(kFreezed); } // *TOGGLE*
     174    Bool_t IsFreezed() const { return TestBit(kFreezed); }
     175    //void  SetOptStat(Int_t os=-1) { fOptStat = os; } // *MENU*
    145176
    146177    void  SetPix(const Int_t pixnum, const Int_t color, Float_t min, Float_t max);      // New function added by M.Lopez in 31-01-03
     
    159190    ClassDef(MHCamera, 1) // Displays the magic camera
    160191};
    161 
    162 inline void MHCamera::SetAutoScale() { fMinimum = fMaximum = -1111; }
    163 //inline void MHCamera::SetOptStat(Int_t os) { fOptStat = os; }
    164192
    165193#endif
Note: See TracChangeset for help on using the changeset viewer.