Ignore:
Timestamp:
08/02/05 13:41:41 (19 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/mmuon
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mmuon/MHMuonPar.cc

    r7068 r7252  
    6565using namespace std;
    6666
     67const Float_t MHMuonPar::fgIntegralLoLim = 0.7;
     68const Float_t MHMuonPar::fgIntegralUpLim = 1.2;
     69
    6770// --------------------------------------------------------------------------
    6871//
     
    7982    fHistRadius.SetXTitle("R [\\circ]");
    8083    fHistRadius.SetYTitle("Counts");
     84    fHistRadius.GetXaxis()->SetTitleOffset(1.2);
    8185    fHistRadius.SetDirectory(NULL);
    8286    fHistRadius.UseCurrentStyle();
     
    8690    fHistArcWidth.SetTitle("Distribution of ArcWidth");
    8791    fHistArcWidth.SetXTitle("W [\\circ]");
     92    fHistArcWidth.GetXaxis()->SetTitleOffset(1.2);
    8893    fHistArcWidth.SetYTitle("Counts");
    8994    fHistArcWidth.SetDirectory(NULL);
     
    95100    fHistBroad.SetXTitle("R [\\circ]");
    96101    fHistBroad.SetYTitle("W/R [1]");
     102    fHistBroad.GetXaxis()->SetTitleOffset(1.2);
    97103    fHistBroad.SetDirectory(NULL);
    98104    fHistBroad.UseCurrentStyle();
     
    103109    fHistSize.SetXTitle("R [\\circ]");
    104110    fHistSize.SetYTitle("S [phe]");
     111    fHistSize.GetXaxis()->SetTitleOffset(1.2);
    105112    fHistSize.SetDirectory(NULL);
    106113    fHistSize.UseCurrentStyle();
     
    204211    fHistSize.Draw();
    205212
    206     AppendPad("pad3");
    207 
    208     pad->cd(4);
    209     gPad->SetBorderMode(0);
    210     fHistBroad.Draw();
    211 
    212     TF1 ref("RefShape", "0.112*x*x - 0.413*x + 0.404", 0.7, 1.2);
     213    TText txt;
     214    txt.SetTextColor(kBlue);
     215
     216    TF1 ref("RefShape100%", "573*x + 430", fgIntegralLoLim, fgIntegralUpLim);
    213217    ref.SetLineColor(kBlue);
    214218    ref.SetLineWidth(1);
    215219    ref.SetLineStyle(kDashed);
    216     ref.DrawCopy("same");
     220    gROOT->GetListOfFunctions()->Remove(ref.DrawCopy("same"));
     221
     222    txt.SetTextAlign(31);
     223    txt.DrawText(fgIntegralLoLim, ref.Eval(fgIntegralLoLim+0.05), "100%");
     224
     225    AppendPad("pad3");
     226
     227    pad->cd(4);
     228    gPad->SetBorderMode(0);
     229    fHistBroad.Draw();
     230
     231    ref.SetName("RefShape12mm");
     232    ref.Compile("0.0766*x*x - 0.250*x + 0.239");
     233    gROOT->GetListOfFunctions()->Remove(ref.DrawCopy("same"));
     234
     235    txt.SetTextAlign(11);
     236    txt.DrawText(fgIntegralLoLim, ref.Eval(fgIntegralLoLim-0.05), "12mm");
    217237
    218238    AppendPad("pad4");
    219239}
    220240
     241Double_t MHMuonPar::Integral(const TProfile &p, Int_t a, Int_t b) const
     242{
     243    Float_t numerator   = 0;
     244    Float_t denominator = 0;
     245
     246    for (Int_t i=a; i<b; i++)
     247    {
     248        numerator   += p.GetBinContent(i)*p.GetBinEntries(i);
     249        denominator += p.GetBinEntries(i);
     250    }
     251
     252    return denominator==0 ? 0 : numerator/denominator;
     253}
     254
     255Double_t MHMuonPar::Integral(const TProfile &p, Float_t a, Float_t b) const
     256{
     257    const Int_t bin1 = p.GetXaxis()->FindFixBin(a);
     258    const Int_t bin2 = p.GetXaxis()->FindFixBin(b);
     259
     260    return Integral(p, bin1, bin2);
     261}
     262
    221263void MHMuonPar::Paint(Option_t *opt)
    222264{
    223265    if (TString(opt)==TString("pad4"))
    224266    {
    225         const Double_t lolim = 0.7;
    226         const Double_t uplim = 1.2;
    227 
    228         const Int_t bin1 = fHistBroad.GetXaxis()->FindFixBin(lolim);
    229         const Int_t bin2 = fHistBroad.GetXaxis()->FindFixBin(uplim);
    230 
    231         const TString txt = Form("\\Sigma_{%.2f\\circ}^{%.2f\\circ} = %.3f", lolim,
    232                                  uplim, fHistBroad.Integral(bin1, bin2));
     267        const TString txt = Form("\\Sigma_{%.2f\\circ}^{%.2f\\circ} = %.3f",
     268                                 fgIntegralLoLim, fgIntegralUpLim, Integral(fHistBroad));
    233269
    234270        TLatex text(0.57, 0.93, txt);
     
    240276    if (TString(opt)==TString("pad3"))
    241277    {
    242         const Double_t lolim = 0.7;
    243         const Double_t uplim = 1.2;
    244 
    245         const Int_t bin1 = fHistSize.GetXaxis()->FindFixBin(lolim);
    246         const Int_t bin2 = fHistSize.GetXaxis()->FindFixBin(uplim);
    247 
    248         const TString txt = Form("\\Sigma_{%.2f\\circ}^{%.2f\\circ} = %.f", lolim,
    249                                  uplim, fHistSize.Integral(bin1, bin2));
     278        const TString txt = Form("\\Sigma_{%.2f\\circ}^{%.2f\\circ} = %.f",
     279                                 fgIntegralLoLim, fgIntegralUpLim, Integral(fHistSize));
    250280
    251281        TLatex text(0.47, 0.93, txt);
  • trunk/MagicSoft/Mars/mmuon/MHMuonPar.h

    r7015 r7252  
    1919{
    2020private:
    21     TH1F     fHistRadius;    // Radius
    22     TH1F     fHistArcWidth;  // ArcWidth
    23 
    24     TProfile fHistBroad;     // ArcWidth/Radius Vs Radius
    25     TProfile fHistSize;      // MuonSize Vs Radius
     21    static const Float_t  fgIntegralLoLim; // lower limit of integral
     22    static const Float_t  fgIntegralUpLim; // upper limit of integral
    2623
    2724    MMuonSearchPar *fMuonSearchPar; //!
    2825    MMuonCalibPar  *fMuonCalibPar;  //!
    2926
     27    TH1F     fHistRadius;     // Radius
     28    TH1F     fHistArcWidth;   // ArcWidth
     29
     30    TProfile fHistBroad;      // ArcWidth/Radius Vs Radius
     31    TProfile fHistSize;       // MuonSize Vs Radius
     32
    3033    Float_t fMm2Deg;
     34
     35    Double_t Integral(const TProfile &p, Int_t a, Int_t b) const;
     36    Double_t Integral(const TProfile &p, Float_t a=fgIntegralLoLim, Float_t b=fgIntegralUpLim) const;
    3137
    3238public:
     
    4147    const TProfile& GetHistSize() const      { return fHistSize; }
    4248
     49    Double_t GetMeanSize() const  { return Integral(fHistSize);     }
     50    Double_t GetMeanWidth() const { return Integral(fHistBroad);    }
     51    Stat_t   GetEntries() const   { return fHistBroad.GetEntries(); }
     52
    4353    void Draw(Option_t *opt="");
    4454    void Paint(Option_t *opt="");
Note: See TracChangeset for help on using the changeset viewer.