Ignore:
Timestamp:
11/20/02 12:18:01 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/mhist
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mhist/MHFadcCam.cc

    r1629 r1652  
    1616!
    1717!
    18 !   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
     18!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!   Author(s): Harald Kornmayer 1/2001
    2020!
     
    3434#include "MHFadcCam.h"
    3535
     36#include "MLog.h"
     37#include "MLogManip.h"
     38
    3639#include "MRawEvtData.h"
    3740#include "MRawEvtPixelIter.h"
     
    4447//  creates an a list of histograms for all pixels and both gain channels
    4548//
    46 MHFadcCam::MHFadcCam(const char *name, const char *title)
     49MHFadcCam::MHFadcCam(MHFadcPix::Type_t t, const char *name, const char *title)
     50    : fNumHiGains(-1), fNumLoGains(-1), fType(t)
    4751{
    4852    //
     
    6064
    6165    for (Int_t i=0; i<577; i++)
    62         (*fArray)[i] = new MHFadcPix(i+1);
     66        (*fArray)[i] = new MHFadcPix(i+1, fType);
    6367}
    6468
     
    8993Bool_t MHFadcCam::Fill(const MParContainer *par)
    9094{
    91     MRawEvtData *evt = (MRawEvtData*)par;
    92 
    93     MRawEvtPixelIter pixel(evt);
    94 
    95     const Int_t nhisamples = evt->GetNumHiGainSamples();
    96     const Int_t nlosamples = evt->GetNumLoGainSamples();
    97 
    98     while (pixel.Next())
    99     {
    100         const UInt_t id = pixel.GetPixelId();
    101 
    102         for (Int_t i=0; i<nhisamples; i++)
    103             FillHi(id, pixel.GetHiGainSamples()[i]);
    104 
    105         if (!pixel.HasLoGain())
    106             continue;
    107 
    108         for (Int_t i=0; i<nlosamples; i++)
    109             FillLo(id, pixel.GetLoGainSamples()[i]);
    110     }
    111 
    112     return kTRUE;
     95    return Fill((MRawEvtData*)par);
    11396}
    11497
    11598Bool_t MHFadcCam::Fill(const MRawEvtData *par)
    11699{
    117     return Fill((MParContainer*)par);
     100    if (fType==MHFadcPix::kSlices)
     101    {
     102        const Int_t nlo = par->GetNumLoGainSamples();
     103        const Int_t nhi = par->GetNumHiGainSamples();
     104
     105        //
     106        // First call
     107        //
     108        if (fNumHiGains<0)
     109            for (int i=0; i<577; i++)
     110                (*this)[i].Init(nhi, nlo);
     111        else
     112            if (fNumHiGains!=nhi || fNumLoGains!=nlo)
     113            {
     114                *fLog << err << dbginf << "ERROR - Number of lo- or hi-gain samples changed." << endl;
     115                return kFALSE;
     116            }
     117
     118        fNumHiGains = nhi;
     119        fNumLoGains = nlo;
     120    }
     121
     122    for (int i=0; i<577; i++)
     123        if (!(*this)[i].Fill(*par))
     124            return kFALSE;
     125
     126    return kTRUE;
    118127}
    119128
  • trunk/MagicSoft/Mars/mhist/MHFadcCam.h

    r1629 r1652  
    2424    TObjArray *fArray;  //-> List of Lo/Hi gain Histograms
    2525
    26     void FillHi(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillHi(data); }
    27     void FillLo(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillLo(data); }
     26    //    void FillHi(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillHi(data); }
     27    //    void FillLo(UInt_t ipix, Byte_t data) { (*this)[ipix]->FillLo(data); }
     28
     29    Int_t fNumHiGains; //!
     30    Int_t fNumLoGains; //!
     31
     32    MHFadcPix::Type_t fType; //!
    2833
    2934public:
    30     MHFadcCam(const char *name=NULL, const char *title=NULL);
     35    MHFadcCam(MHFadcPix::Type_t t=MHFadcPix::kValue, const char *name=NULL, const char *title=NULL);
    3136    ~MHFadcCam();
    3237
    33     MHFadcPix *operator[](UInt_t i) { return (MHFadcPix*)(fArray->At(i)); }
    34     const MHFadcPix *operator[](UInt_t i) const { return (MHFadcPix*)(fArray->At(i)); }
     38    MHFadcPix &operator[](UInt_t i) { return *(MHFadcPix*)(fArray->At(i)); }
     39    const MHFadcPix &operator[](UInt_t i) const { return *(MHFadcPix*)(fArray->At(i)); }
    3540
    36     TH1F *GetHistHi(UInt_t i)  { return (*this)[i]->GetHistHi(); }
    37     TH1F *GetHistLo(UInt_t i)  { return (*this)[i]->GetHistLo(); }
     41    TH1F *GetHistHi(UInt_t i)  { return (*this)[i].GetHistHi(); }
     42    TH1F *GetHistLo(UInt_t i)  { return (*this)[i].GetHistLo(); }
    3843
    39     const TH1F *GetHistHi(UInt_t i) const { return (*this)[i]->GetHistHi(); }
    40     const TH1F *GetHistLo(UInt_t i) const { return (*this)[i]->GetHistLo(); }
     44    const TH1F *GetHistHi(UInt_t i) const { return (*this)[i].GetHistHi(); }
     45    const TH1F *GetHistLo(UInt_t i) const { return (*this)[i].GetHistLo(); }
    4146
    4247    Bool_t Fill(const MParContainer *par);
     
    5156    void DrawLo(UInt_t i)      { GetHistLo(i)->Draw(); }
    5257
    53     void DrawPix(UInt_t i)     { (*this)[i]->Draw(); }
     58    void DrawPix(UInt_t i)     { (*this)[i].Draw(); }
    5459
    5560    Int_t GetEntries() const   { return fArray->GetEntries(); }
  • trunk/MagicSoft/Mars/mhist/MHFadcPix.cc

    r1303 r1652  
    1616!
    1717!
    18 !   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
     18!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!   Author(s): Harald Kornmayer 1/2001
    2020!
    21 !   Copyright: MAGIC Software Development, 2000-2001
     21!   Copyright: MAGIC Software Development, 2000-2002
    2222!
    2323!
     
    2828// MHFadcPix
    2929//
    30 // This container stores a hostogram to display an Fadc Spekrtum.
     30// This container stores a histogram to display an Fadc Spektrum.
    3131// The spektrum of all the values measured by the Fadcs.
    3232//
    3333///////////////////////////////////////////////////////////////////////
    34 
    3534#include "MHFadcPix.h"
    3635
    37 #include <TH1.h>
    3836#include <TPad.h>
    3937
    4038#include "MH.h"
     39#include "MBinning.h"
     40
     41#include "MRawEvtData.h"
     42#include "MRawEvtPixelIter.h"
    4143
    4244ClassImp(MHFadcPix);
     
    4648// Creates the histograms for lo and hi gain of one pixel
    4749//
    48 MHFadcPix::MHFadcPix(UInt_t pixid) : fPixId(pixid)
     50MHFadcPix::MHFadcPix(UInt_t pixid, Type_t t)
     51    : fPixId(pixid), fType(t)
    4952{
    50     fHistHi =  new TH1F(pixid ? Form("HiGain%03d", pixid) : "HiGain",
    51                         pixid ? Form("Hi Gain Pixel #%d", pixid) : "Hi Gain Samples",
    52                         256, -.5, 255.5);
     53    fHistHi.SetName(pixid ? Form("HiGain%03d", pixid) : "HiGain");
     54    fHistHi.SetTitle(pixid ? Form("Hi Gain Pixel #%d", pixid) : "Hi Gain Samples");
     55    fHistHi.SetDirectory(NULL);
    5356
    54     fHistHi->SetDirectory(NULL);
    55     fHistHi->SetXTitle("Signal/FADC Units");
    56     fHistHi->SetYTitle("Count");
     57    fHistLo.SetName(pixid ? Form("LoGain%03d", pixid) : "LoGain");
     58    fHistLo.SetTitle(pixid ? Form("Lo Gain Pixel #%d", pixid) : "Lo Gain Samples");
     59    fHistLo.SetDirectory(NULL);
    5760
    58     fHistLo = new TH1F(pixid ? Form("LoGain%03d", pixid) : "LoGain",
    59                        pixid ? Form("Lo Gain Pixel #%d", pixid) : "Lo Gain Samples",
    60                        256, -.5, 255.5);
     61    if (fType==kValue)
     62    {
     63        fHistHi.SetXTitle("Signal/FADC Units");
     64        fHistLo.SetXTitle("Signal/FADC Units");
     65        fHistHi.SetYTitle("Count");
     66        fHistLo.SetYTitle("Count");
    6167
    62     fHistLo->SetDirectory(NULL);
    63     fHistLo->SetXTitle("Signal/FADC Units");
    64     fHistLo->SetYTitle("Count");
     68        MBinning bins;
     69        bins.SetEdges(255, -.5, 255.5);
     70
     71        bins.Apply(fHistHi);
     72        bins.Apply(fHistLo);
     73    }
     74    else
     75    {
     76        fHistHi.SetXTitle("Time/FADC Slices");
     77        fHistLo.SetXTitle("Time/FADC Slices");
     78        fHistLo.SetYTitle("Sum Signal/FADC Units");
     79        fHistHi.SetYTitle("Sum Signal/FADC Units");
     80    }
    6581}
    6682
    67 // --------------------------------------------------------------------------
    68 MHFadcPix::~MHFadcPix()
     83void MHFadcPix::Init(Byte_t nhi, Byte_t nlo)
    6984{
    70     delete fHistHi;
    71     delete fHistLo;
     85    MBinning bins;
     86
     87    bins.SetEdges(nhi, -.5, -.5+nhi);
     88    bins.Apply(fHistHi);
     89
     90    bins.SetEdges(nlo, -.5, -.5+nlo);
     91    bins.Apply(fHistLo);
    7292}
    7393
    74 // --------------------------------------------------------------------------
    75 void MHFadcPix::FillHi(Byte_t i)
     94Bool_t MHFadcPix::Fill(const MRawEvtData &evt)
    7695{
    77     fHistHi->Fill(i);
    78 }
     96    MRawEvtPixelIter pixel((MRawEvtData*)&evt);
    7997
    80 // --------------------------------------------------------------------------
    81 void MHFadcPix::FillLo(Byte_t i)
    82 {
    83     fHistLo->Fill(i);
     98    if (!pixel.Jump(fPixId))
     99        return kTRUE;
     100
     101    const Int_t nhisamples = evt.GetNumHiGainSamples();
     102
     103    if (fType==kValue)
     104        for (Int_t i=0; i<nhisamples; i++)
     105            fHistHi.Fill(pixel.GetHiGainSamples()[i]);
     106    else
     107        for (Int_t i=0; i<nhisamples; i++)
     108            fHistHi.Fill(i, pixel.GetHiGainSamples()[i]);
     109
     110    if (!pixel.HasLoGain())
     111        return kTRUE;
     112
     113    const Int_t nlosamples = evt.GetNumLoGainSamples();
     114
     115    if (fType==kValue)
     116        for (Int_t i=0; i<nlosamples; i++)
     117            fHistLo.Fill(pixel.GetLoGainSamples()[i]);
     118    else
     119        for (Int_t i=0; i<nlosamples; i++)
     120            fHistLo.Fill(i, pixel.GetLoGainSamples()[i]);
     121
     122    return kTRUE;
    84123}
    85124
     
    87126void MHFadcPix::DrawHi()
    88127{
    89     fHistHi->Draw();
     128    fHistHi.Draw();
    90129}
    91130
     
    93132void MHFadcPix::DrawLo()
    94133{
    95     fHistLo->Draw();
     134    fHistLo.Draw();
    96135}
    97136
     
    105144    MHFadcPix &pix = *(MHFadcPix*)TObject::Clone();
    106145
    107     pix.fHistHi->SetDirectory(NULL);
    108     pix.fHistLo->SetDirectory(NULL);
     146    pix.fHistHi.SetDirectory(NULL);
     147    pix.fHistLo.SetDirectory(NULL);
    109148
    110149    return &pix;
     
    116155    if (!gPad)
    117156    {
    118         const char *name  = StrDup(fPixId ? Form("Pixel #%d", fPixId) : "Pixel");
     157        const char *name = StrDup(fPixId ? Form("Pixel #%d", fPixId) : "Pixel");
    119158        MH::MakeDefCanvas(name, fPixId ? Form("%s FADC Samples", name) : "FADC Samples");
    120159        delete [] name;
     
    124163
    125164    gPad->cd(1);
    126     fHistHi->Draw();
     165    fHistHi.Draw();
    127166
    128167    gPad->cd(2);
    129     fHistLo->Draw();
     168    fHistLo.Draw();
    130169}
  • trunk/MagicSoft/Mars/mhist/MHFadcPix.h

    r1629 r1652  
    66#endif
    77
    8 class TH1F;
     8#ifndef ROOT_TH1
     9#include <TH1.h>
     10#endif
     11
     12class MRawEvtData;
    913
    1014class MHFadcPix : public MParContainer
    1115{
     16public:
     17    enum Type_t { kSlices, kValue };
     18
    1219private:
    13     TH1F *fHistHi;
    14     TH1F *fHistLo;
     20    TH1F fHistHi;
     21    TH1F fHistLo;
    1522
    1623    UInt_t fPixId;
    1724
     25    Type_t fType;
     26
    1827public:
    19     MHFadcPix(UInt_t pixid=0);
    20     ~MHFadcPix();
     28    MHFadcPix(UInt_t pixid=0, Type_t t=kValue);
    2129
    22     TH1F *GetHistHi() { return fHistHi; }
    23     TH1F *GetHistLo() { return fHistLo; }
     30    TH1F *GetHistHi() { return &fHistHi; }
     31    TH1F *GetHistLo() { return &fHistLo; }
    2432
    25     const TH1F *GetHistHi() const { return fHistHi; }
    26     const TH1F *GetHistLo() const { return fHistLo; }
     33    const TH1F *GetHistHi() const { return &fHistHi; }
     34    const TH1F *GetHistLo() const { return &fHistLo; }
    2735
    28     void FillHi(Byte_t i);
    29     void FillLo(Byte_t i);
     36    void Init(Byte_t nhi, Byte_t nlo);
     37    Bool_t Fill(const MRawEvtData &evt);
    3038
    3139    void DrawHi();
Note: See TracChangeset for help on using the changeset viewer.