Changeset 1205


Ignore:
Timestamp:
01/21/02 21:57:10 (23 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r1204 r1205  
    1111   * mgui/MGeomPix.h:
    1212     - implemented first version of GetA
     13
     14   * mhist/MBinning.h:
     15     - small changes to formulas
     16     
     17   * mhist/MH.[h,cc]:
     18     - implemented SetBinnign functions
     19
    1320
    1421
     
    263270
    264271
     272>>>>>>> 1.148
    265273 2001/12/18: Oscar Blanch
    266274                                                                 
     
    290298     - fix bug of Pedestal and Pedestal fluctuaions correspondence.
    291299
    292 
    293      
     300<<<<<<< Changelog
     301
     302=======
     303>>>>>>> 1.148
     304
    294305 2001/12/18: Thomas Bretz
    295306 
  • trunk/MagicSoft/Mars/mhist/MBinning.h

    r1188 r1205  
    3636    void SetEdgesLog(const Int_t nbins, const Axis_t lo, Axis_t up)
    3737    {
    38         const Double_t binsize = (log10(up)-log10(lo))/nbins;
     38        // if (lo==0) ...
     39
     40        const Double_t binsize = log10(up/lo)/nbins;
    3941        fEdges.Set(nbins+1);
    4042        for (int i=0; i<=nbins; i++)
     
    4244    }
    4345
    44     // ROOT workaround: "operator[] const" missing
     46    // FIXME: ROOT workaround: "operator[] const" missing
    4547    Double_t GetEdgeLo() const { return (*(TArrayD*)(&fEdges))[0]; }
    4648    Double_t GetEdgeHi() const { return (*(TArrayD*)(&fEdges))[fEdges.GetSize()-1]; }
  • trunk/MagicSoft/Mars/mhist/MH.cc

    r1082 r1205  
    2828//                                                                          //
    2929//  This is a base tasks for mars histograms. It defines a common interface //
    30 //  for filling the histograms with data (MH::Fill) which is used by a      //
    31 //  common 'filler' (s. MFillH)                                             //
     30//  for filling the histograms with events (MH::Fill) which is used by a    //
     31//  common 'filler' And a SetupFill member function which may be used       //
     32//  by MFillH. The idea is:                                                 //
     33//   1) If your Histogram can become filled by one single container         //
     34//      (like MHHillas) you overload MH::Fill and it gets called with       //
     35//      a pointer to the container with which it should be filled.          //
     36//                                                                          //
     37//   2) You histogram needs several containers to get filled. Than you      //
     38//      have to overload MH::SetupFill and get the necessary objects from   //
     39//      the parameter list. Use this objects in Fill to fill your           //
     40//      histogram.                                                          //
    3241//                                                                          //
    3342//  If you want to create your own histogram class the new class must be    //
     
    4049#include "MH.h"
    4150
     51#include <TH1.h>
    4252#include <TCanvas.h>
     53
     54#include "MBinning.h"
    4355
    4456ClassImp(MH);
     
    101113    return MakeDefCanvas(obj->GetName(), obj->GetTitle(), w, h);
    102114}
     115
     116void MH::SetBinning(TH1 *h, const MBinning *binsx)
     117{
     118    //
     119    // This is a necessary workaround if one wants to set
     120    // non-equidistant bins after the initialization
     121    // TH1D::fNcells must be set correctly.
     122    //
     123    h->SetBins(binsx->GetNumBins(), 0, 1);
     124
     125    //
     126    // Set the binning of the current histogram to the binning
     127    // in one of the two given histograms
     128    //
     129    h->GetXaxis()->Set(binsx->GetNumBins(), binsx->GetEdges());
     130}
     131
     132void MH::SetBinning(TH1 *h, const MBinning *binsx, const MBinning *binsy)
     133{
     134    //
     135    // This is a necessary workaround if one wants to set
     136    // non-equidistant bins after the initialization
     137    // TH1D::fNcells must be set correctly.
     138    //
     139    h->SetBins(binsx->GetNumBins(), 0, 1,
     140               binsy->GetNumBins(), 0, 1);
     141
     142    //
     143    // Set the binning of the current histogram to the binning
     144    // in one of the two given histograms
     145    //
     146    h->GetXaxis()->Set(binsx->GetNumBins(), binsx->GetEdges());
     147    h->GetYaxis()->Set(binsy->GetNumBins(), binsy->GetEdges());
     148}
     149
     150void MH::SetBinning(TH1 *h, const MBinning *binsx, const MBinning *binsy, const MBinning *binsz)
     151{
     152    //
     153    // This is a necessary workaround if one wants to set
     154    // non-equidistant bins after the initialization
     155    // TH1D::fNcells must be set correctly.
     156    //
     157    h->SetBins(binsx->GetNumBins(), 0, 1,
     158               binsy->GetNumBins(), 0, 1,
     159               binsz->GetNumBins(), 0, 1);
     160
     161    //
     162    // Set the binning of the current histogram to the binning
     163    // in one of the two given histograms
     164    //
     165    h->GetXaxis()->Set(binsx->GetNumBins(), binsx->GetEdges());
     166    h->GetYaxis()->Set(binsy->GetNumBins(), binsy->GetEdges());
     167    h->GetZaxis()->Set(binsz->GetNumBins(), binsz->GetEdges());
     168}
     169
     170void MH::SetBinning(TH1 *h, const TArrayD *binsx)
     171{
     172    MBinning bx;
     173    bx.SetEdges(*binsx);
     174    SetBinning(h, &bx);
     175}
     176
     177void MH::SetBinning(TH1 *h, const TArrayD *binsx, const TArrayD *binsy)
     178{
     179    MBinning bx;
     180    MBinning by;
     181    bx.SetEdges(*binsx);
     182    by.SetEdges(*binsy);
     183    SetBinning(h, &bx, &by);
     184}
     185
     186void MH::SetBinning(TH1 *h, const TArrayD *binsx, const TArrayD *binsy, const TArrayD *binsz)
     187{
     188    MBinning bx;
     189    MBinning by;
     190    MBinning bz;
     191    bx.SetEdges(*binsx);
     192    by.SetEdges(*binsy);
     193    bz.SetEdges(*binsz);
     194    SetBinning(h, &bx, &by, &bz);
     195}
     196
     197void MH::SetBinning(TH1 *h, const TAxis *binsx)
     198{
     199    MBinning bx;
     200    bx.SetEdges(*((TAxis*)binsx)->GetXbins()); // FIXME: Root!
     201    SetBinning(h, &bx);
     202}
     203
     204void MH::SetBinning(TH1 *h, const TAxis *binsx, const TAxis *binsy)
     205{
     206    MBinning bx;
     207    MBinning by;
     208    bx.SetEdges(*((TAxis*)binsx)->GetXbins()); // FIXME: Root!
     209    by.SetEdges(*((TAxis*)binsy)->GetXbins()); // FIXME: Root!
     210    SetBinning(h, &bx, &by);
     211}
     212
     213void MH::SetBinning(TH1 *h, const TAxis *binsx, const TAxis *binsy, const TAxis *binsz)
     214{
     215    MBinning bx;
     216    MBinning by;
     217    MBinning bz;
     218    bx.SetEdges(*((TAxis*)binsx)->GetXbins()); // FIXME: Root!
     219    by.SetEdges(*((TAxis*)binsy)->GetXbins()); // FIXME: Root!
     220    bz.SetEdges(*((TAxis*)binsz)->GetXbins()); // FIXME: Root!
     221    SetBinning(h, &bx, &by, &bz);
     222}
     223
  • trunk/MagicSoft/Mars/mhist/MH.h

    r1015 r1205  
    55#include "MParContainer.h"
    66#endif
     7
     8class TH1;
     9class MBinning;
     10class MParList;
     11class TArrayD;
     12class TAxis;
    713
    814class TCanvas;
     
    1319    MH(const char *name=NULL, const char *title=NULL);
    1420
    15     virtual void Fill(const MParContainer *par) = 0;
     21    virtual Bool_t SetupFill(const MParList *pList) { return kTRUE; }
     22    virtual Bool_t Fill(const MParContainer *par) = 0;
    1623
    1724    static TCanvas *MakeDefCanvas(const char *name=NULL, const char *title="",
     
    2027                                  const UInt_t w=700, const UInt_t h=500);
    2128
     29    static void SetBinning(TH1 *h, const MBinning *binsx);
     30    static void SetBinning(TH1 *h, const MBinning *binsx, const MBinning *binsy);
     31    static void SetBinning(TH1 *h, const MBinning *binsx, const MBinning *binsy, const MBinning *binsz);
     32
     33    static void SetBinning(TH1 *h, const TArrayD *binsx);
     34    static void SetBinning(TH1 *h, const TArrayD *binsx, const TArrayD *binsy);
     35    static void SetBinning(TH1 *h, const TArrayD *binsx, const TArrayD *binsy, const TArrayD *binsz);
     36
     37    static void SetBinning(TH1 *h, const TAxis *binsx);
     38    static void SetBinning(TH1 *h, const TAxis *binsx, const TAxis *binsy);
     39    static void SetBinning(TH1 *h, const TAxis *binsx, const TAxis *binsy, const TAxis *binsz);
     40
    2241    ClassDef(MH, 1) //A histogram base class for Mars histograms
    2342};
  • trunk/MagicSoft/Mars/mhist/MHHillas.cc

    r1203 r1205  
     1<<<<<<< MHHillas.cc
    12/* ======================================================================== *\
    23!
     
    4546// --------------------------------------------------------------------------
    4647//
    47 // Setup four histograms for Width, Length
     48// Setup four histograms for Alpha, Width, Length and Dist
    4849//
    4950MHHillas::MHHillas (const char *name, const char *title)
     
    6061    // connect all the histogram with the container fHist
    6162    //
     63    fAlpha  = new TH1F("Alpha [deg]", "Alpha of Hillas",   90, 0,  90);
    6264    fWidth  = new TH1F("Width [mm]",  "Width of Hillas",  100, 0, 300);
    6365    fLength = new TH1F("Length [mm]", "Length of Hillas", 100, 0, 300);
     66    fDist   = new TH1F("Dist [mm]",   "Dist of Hillas",   100, 0, 300);
    6467
     68    fAlpha->SetDirectory(NULL);
    6569    fLength->SetDirectory(NULL);
     70    fDist->SetDirectory(NULL);
    6671    fWidth->SetDirectory(NULL);
    6772
     73    fAlpha->GetXaxis()->SetTitle("\\alpha [\\circ]");
    6874    fLength->GetXaxis()->SetTitle("Length [mm]");
     75    fDist->GetXaxis()->SetTitle("Dist [mm]");
    6976    fWidth->GetXaxis()->SetTitle("Width [mm]");
    7077
     78    fAlpha->GetYaxis()->SetTitle("Counts");
    7179    fLength->GetYaxis()->SetTitle("Counts");
     80    fDist->GetYaxis()->SetTitle("Counts");
    7281    fWidth->GetYaxis()->SetTitle("Counts");
    7382}
     
    7988MHHillas::~MHHillas()
    8089{
     90    delete fAlpha;
    8191    delete fWidth;
    8292    delete fLength;
     93    delete fDist;
    8394}
    8495
     
    8899// Be careful: Only call this with an object of type MHillas
    89100//
    90 void MHHillas::Fill(const MParContainer *par)
     101Bool_t MHHillas::Fill(const MParContainer *par)
    91102{
    92103    const MHillas &h = *(MHillas*)par;
    93104
     105    fAlpha ->Fill(fabs(h.GetAlpha()));
    94106    fWidth ->Fill(h.GetWidth());
    95107    fLength->Fill(h.GetLength());
     108    fDist  ->Fill(h.GetDist());
     109
     110    return kTRUE;
    96111}
    97112
     
    106121TObject *MHHillas::DrawClone(Option_t *opt) const
    107122{
    108     TCanvas *c = MakeDefCanvas("Hillas", "Histograms of Hillas Parameters",
    109                                350, 500);
    110     c->Divide(1, 2);
     123    TCanvas *c = MakeDefCanvas("Hillas", "Histograms of Hillas Parameters");
     124    c->Divide(2, 2);
    111125
    112126    gROOT->SetSelectedPad(NULL);
     
    116130    //
    117131    c->cd(1);
     132    fAlpha->DrawCopy();
     133
     134    c->cd(2);
    118135    fLength->DrawCopy();
    119136
    120     c->cd(2);
     137    c->cd(3);
     138    fDist->DrawCopy();
     139
     140    c->cd(4);
    121141    fWidth->DrawCopy();
    122142
     
    136156{
    137157    if (!gPad)
    138         MakeDefCanvas("Hillas", "Histograms of Hillas Parameters", 350, 500);
     158        MakeDefCanvas("Hillas", "Histograms of Hillas Parameters");
    139159
    140     gPad->Divide(1, 2);
     160    gPad->Divide(2,2);
    141161
    142162    gPad->cd(1);
     163    fAlpha->Draw();
     164
     165    gPad->cd(2);
    143166    fLength->Draw();
    144167
    145     gPad->cd(2);
     168    gPad->cd(3);
     169    fDist->Draw();
     170
     171    gPad->cd(4);
    146172    fWidth->Draw();
    147173
  • trunk/MagicSoft/Mars/mhist/MHStarMap.cc

    r1203 r1205  
     1<<<<<<< MHStarMap.cc
    12/* ======================================================================== *\
    23!
     
    4748// Create the star map histogram
    4849//
    49 MHStarMap::MHStarMap(const char *name, const char *title)
     50MHStarMap::MHStarMap (const char *name, const char *title)
    5051{
    5152    //
     
    7273    fStarMap->SetDirectory(NULL);
    7374
    74     fStarMap->SetXTitle("x [mm]");
    75     fStarMap->SetYTitle("y [mm]");
     75    fStarMap->SetXTitle("x/mm");
     76    fStarMap->SetYTitle("y/mm");
    7677    fStarMap->SetZTitle("Counts");
    7778}
     
    9192// Be careful: Only call this with an object of type MHillas
    9293//
    93 void MHStarMap::Fill(const MParContainer *par)
     94Bool_t MHStarMap::Fill(const MParContainer *par)
    9495{
    9596    const MHillas &h = *(MHillas*)par;
    9697
    97     const float delta = h.GetDelta();
    98 
    99     const float m = tan(delta);
    100     const float t = m*h.GetMeanX()-h.GetMeanY();
     98    const float dist  = h.GetDist();
     99    const float theta = h.GetTheta();
     100    const float alpha = h.GetAlpha()/kRad2Deg;
     101
     102    const float m = tan(theta+alpha-kPI);
     103    const float t = dist*(sin(theta)-cos(theta)*m);
    101104
    102105    if (m>-1 && m<1)
     
    114117            fStarMap->Fill(x, y);
    115118        }
     119
     120    return kTRUE;
    116121}
    117122
     
    209214    gPad->Update();
    210215}
     216
  • trunk/MagicSoft/Mars/mmontecarlo/MMcTriggerRateCalc.h

    r1016 r1205  
    1 #ifndef MARS_MTriggerRateCalc
    2 #define MARS_MTriggerRateCalc
     1#ifndef MARS_MMcTriggerRateCalc
     2#define MARS_MMcTriggerRateCalc
    33
    44#ifndef ROOT_TObjArray
Note: See TracChangeset for help on using the changeset viewer.