Changeset 8991 for trunk


Ignore:
Timestamp:
07/01/08 17:14:31 (16 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r8990 r8991  
    9393     - removed all the obsolste and confusing projections of the
    9494       individual sectors and camera halves
     95
     96   * mhflux/MHAlpha.cc:
     97     - replaced EventsExcess/SignificanceExc by just ErrorEvents
     98     - for the moment do not propagate Excesses<=0 to the pads
     99       (not to spoil the logarithmic display, this still needs a fix)
     100     - replaced -1 in ProjectionZ by the bin numbers (including
     101       under- and overflow bins), otherwise it won't work with
     102       root 5.20/00
     103     - propagate all result to the timing histogram (it is not
     104       logarithmic anyway)
     105     - made Paint also work with the new implementation of ProjectionZ
     106       via Project3D in root 5.20/00 (it won't reuse the correct
     107       histogram from the pad :( )
     108     - replaced kFullDotMedium by 0 (no marker) where appropriate
     109     - changed the rule not to display the time-histogram
    95110
    96111
  • trunk/MagicSoft/Mars/NEWS

    r8988 r8991  
    77   * should work now with root 5.20/00
    88
     9   * Sequences and Datasets are now stored as "MDataSet" and "MSequence"
     10     instead of the base name of the file. This makes them easier to
     11     access from the code
    912
    1013
  • trunk/MagicSoft/Mars/mhflux/MHAlpha.cc

    r8879 r8991  
    164164            continue;
    165165
    166         if (fit.GetSignificanceExc()<=0)
     166        // FIXME: Calculate UL!
     167        if (fit.GetEventsExcess()<=0)
    167168            continue;
    168169
    169170        fHEnergy.SetBinContent(i, fit.GetEventsExcess());
    170         fHEnergy.SetBinError(i, fit.GetEventsExcess()/fit.GetSignificanceExc());
    171 
    172         mean += fit.GetSignificanceExc()*fit.GetSignificanceExc();
     171        fHEnergy.SetBinError(i, fit.GetErrorExcess());
     172
     173        mean += fit.GetEventsExcess()*fit.GetEventsExcess()/fit.GetErrorExcess()/fit.GetErrorExcess();
    173174        num++;
    174175    }
     
    190191            continue;
    191192
    192         if (fit.GetSignificanceExc()<=0)
     193        // FIXME: Calculate UL!
     194        if (fit.GetEventsExcess()<=0)
    193195            continue;
    194196
    195197        fHTheta.SetBinContent(i, fit.GetEventsExcess());
    196         fHTheta.SetBinError(i, fit.GetEventsExcess()/fit.GetSignificanceExc());
     198        fHTheta.SetBinError(i, fit.GetErrorExcess());
    197199    }
    198200}
     
    400402    MAlphaFitter fit(fFit);
    401403
    402     TH1D *h = fOffData ? fOffData->ProjectionZ("ProjTimeTemp", -1, -1, -1, -1, "E") : 0;
     404    TH1D *h = fOffData ? fOffData->ProjectionZ("ProjTimeTemp", 0, fOffData->GetNbinsX()+1, 0, fOffData->GetNbinsY()+1, "E") : 0;
    403405    const Bool_t rc = fit.ScaleAndFit(fHistTime, h);
     406
    404407    if (h)
    405408        delete h;
     
    418421        time->Plus1ns();
    419422
    420     // Get number of bins
    421     const Int_t n = fHTime.GetNbinsX();
    422 
    423423    // Enhance binning
    424424    MBinning bins;
     
    430430    // Fill histogram
    431431    //
    432     if (fit.GetSignificanceExc()>0)
    433     {
    434         fHTime.SetBinContent(n+1, fit.GetEventsExcess());
    435         fHTime.SetBinError(n+1, fit.GetEventsExcess()/fit.GetSignificanceExc());
    436     }
    437 
    438     *fLog << all << *fTimeEffOn << ": " << fit.GetEventsExcess() << endl;
     432    // Get number of bins
     433    const Int_t n = fHTime.GetNbinsX();
     434
     435    fHTime.SetBinContent(n, fit.GetEventsExcess());
     436    fHTime.SetBinError(n,   fit.GetErrorExcess());
     437
     438    *fLog << all << *fTimeEffOn << " (" << n << "): " << fit.GetEventsExcess() << endl;
    439439
    440440    fNumRebin = fNumTimeBins;
     
    549549
    550550    TString o(opt);
     551
    551552    if (o==(TString)"proj")
    552553    {
     
    572573
    573574        padsave->cd(1);
    574         TH1D *hon = fHist.ProjectionZ("Proj");
    575         if (fOffData)
    576         {
    577             TH1D *hoff = fOffData->ProjectionZ("ProjOff");
    578             const Double_t alpha = fFit.Scale(*hoff, *hon);
    579 
    580             hon->SetMaximum();
    581             hon->SetMaximum(TMath::Max(hon->GetMaximum(), hoff->GetMaximum())*1.05);
    582 
    583             // BE CARFEULL: This is a really weird workaround!
    584             hoff->SetMaximum(alpha);
    585 
    586             // For some reason the line-color is resetted
    587             hoff->SetLineColor(kRed);
    588 
    589             if ((h0=(TH1D*)gPad->FindObject("ProjOnOff")))
     575
     576        TH1D *hon = (TH1D*)gPad->FindObject("Proj");
     577        if (hon)
     578        {
     579            TH1D *dum = fHist.ProjectionZ("dum", 0, fHist.GetNbinsX()+1, 0, fHist.GetNbinsY()+1);
     580            dum->SetDirectory(0);
     581            hon->Reset();
     582            hon->Add(dum);
     583            delete dum;
     584
     585            if (fOffData)
    590586            {
    591                 h0->Reset();
    592                 h0->Add(hoff, hon, -1);
    593                 const Float_t min = h0->GetMinimum()*1.05;
    594                 hon->SetMinimum(min<0 ? min : 0);
     587                TH1D *hoff = (TH1D*)gPad->FindObject("ProjOff");
     588                if (hoff)
     589                {
     590                    TH1D *dum = fOffData->ProjectionZ("dum", 0, fOffData->GetNbinsX()+1, 0, fOffData->GetNbinsY()+1);
     591                    dum->SetDirectory(0);
     592                    hoff->Reset();
     593                    hoff->Add(dum);
     594                    delete dum;
     595
     596                    const Double_t alpha = fFit.Scale(*hoff, *hon);
     597
     598                    hon->SetMaximum();
     599                    hon->SetMaximum(TMath::Max(hon->GetMaximum(), hoff->GetMaximum())*1.05);
     600
     601                    // BE CARFEULL: This is a really weird workaround!
     602                    hoff->SetMaximum(alpha);
     603
     604                    // For some reason the line-color is resetted
     605                    hoff->SetLineColor(kRed);
     606
     607                    if ((h0=(TH1D*)gPad->FindObject("ProjOnOff")))
     608                    {
     609                        h0->Reset();
     610                        h0->Add(hoff, hon, -1);
     611                        const Float_t min = h0->GetMinimum()*1.05;
     612                        hon->SetMinimum(min<0 ? min : 0);
     613                    }
     614                }
    595615            }
    596         }
    597         else
    598             hon->SetMinimum(0);
     616            else
     617                hon->SetMinimum(0);
     618        }
    599619        FitEnergyBins();
    600620        FitThetaBins();
     
    617637
    618638    if (o==(TString)"time")
    619         PaintText(fHTime);//.Integral(), 0);
     639        PaintText(fHTime);
    620640
    621641    if (o==(TString)"theta")
     
    631651            delete h2;
    632652        }
    633         PaintText(fHTheta);//.Integral(), 0);
     653        PaintText(fHTheta);
    634654    }
    635655
     
    646666            delete h2;
    647667        }
    648         PaintText(fHEnergy);//.Integral(), 0);
     668        PaintText(fHEnergy);
    649669
    650670        if (fHEnergy.GetMaximum()>1)
     
    686706    gPad->SetBorderMode(0);
    687707
    688     h = fHist.ProjectionZ("Proj", -1, 9999, -1, 9999, "E");
     708    h = fHist.ProjectionZ("Proj", 0, fHist.GetNbinsX()+1, 0, fHist.GetNbinsY()+1, "E");
    689709    h->SetBit(TH1::kNoTitle);
    690710    h->SetStats(kTRUE);
     
    692712    h->SetYTitle("Counts");
    693713    h->SetDirectory(NULL);
    694     h->SetMarkerStyle(kFullDotMedium);
     714    h->SetMarkerStyle(0);
    695715    h->SetBit(kCanDelete);
    696716    h->Draw("");
     
    702722        //h->SetLineColor(kGreen);
    703723
    704         h = fOffData->ProjectionZ("ProjOff", -1, 9999, -1, 9999, "E");
     724        h = fOffData->ProjectionZ("ProjOff", 0, fOffData->GetNbinsX()+1, 0, fOffData->GetNbinsY()+1, "E");
    705725        h->SetBit(TH1::kNoTitle);
    706726        h->SetXTitle(fHist.GetZaxis()->GetTitle());
    707727        h->SetYTitle("Counts");
    708728        h->SetDirectory(NULL);
    709         h->SetMarkerStyle(kFullDotMedium);
     729        h->SetMarkerStyle(0);
    710730        h->SetBit(kCanDelete);
    711731        h->SetMarkerColor(kRed);
     
    714734        h->Draw("same"/*"bar same"*/);
    715735
    716         h = (TH1D*)h->Clone("ProjOnOff");
     736        // This is the only way to make it work...
     737        // Clone and copy constructor give strange crashes :(
     738        h = fOffData->ProjectionZ("ProjOnOff", 0, fOffData->GetNbinsX()+1, 0, fOffData->GetNbinsY()+1, "E");
    717739        h->SetBit(TH1::kNoTitle);
    718740        h->SetXTitle(fHist.GetZaxis()->GetTitle());
    719741        h->SetYTitle("Counts");
    720742        h->SetDirectory(NULL);
    721         h->SetMarkerStyle(kFullDotMedium);
     743        h->SetMarkerStyle(0);
    722744        h->SetBit(kCanDelete);
    723745        h->SetMarkerColor(kBlue);
     
    749771        h->SetYTitle("Counts");
    750772        h->SetDirectory(NULL);
    751         h->SetMarkerStyle(kFullDotMedium);
     773        h->SetMarkerStyle(kFullDotSmall);
    752774        h->SetBit(kCanDelete);
    753775        h->SetMarkerColor(kCyan);
     
    758780        delete pad->GetPad(2);
    759781
    760     if (fTimeEffOn && fTime || fHTime.GetNbinsX()>1 || fHTime.GetBinContent(1)>0)
     782    if (fTimeEffOn && fTime || fHTime.GetNbinsX()>1 || fHTime.GetBinContent(1)!=0)
    761783    {
    762784        pad->cd(3);
     
    785807        h->SetYTitle("Counts");
    786808        h->SetDirectory(NULL);
    787         h->SetMarkerStyle(kFullDotMedium);
     809        h->SetMarkerStyle(kFullDotSmall);
    788810        h->SetBit(kCanDelete);
    789811        h->SetMarkerColor(kCyan);
     
    817839        gPad->SetFrameBorderMode(0);
    818840
    819         TH1D *hon = fHist.ProjectionZ("Proj", -1, 9999, i, i, "E");
     841        TH1D *hon = fHist.ProjectionZ("Proj", 0, fHist.GetNbinsX()+1, i, i, "E");
    820842        hon->SetBit(TH1::kNoTitle);
    821843        hon->SetStats(kTRUE);
     
    823845        hon->SetYTitle("Counts");
    824846        hon->SetDirectory(NULL);
    825         hon->SetMarkerStyle(kFullDotMedium);
     847        hon->SetMarkerStyle(0);
    826848        hon->SetBit(kCanDelete);
    827849        hon->Draw("");
     
    834856            hon->SetMarkerColor(kGreen);
    835857
    836             hof = fOffData->ProjectionZ("ProjOff", -1, 9999, i, i, "E");
     858            hof = fOffData->ProjectionZ("ProjOff", 0, fOffData->GetNbinsX()+1, i, i, "E");
    837859            hof->SetBit(TH1::kNoTitle|TH1::kNoStats);
    838860            hof->SetXTitle(fHist.GetZaxis()->GetTitle());
    839861            hof->SetYTitle("Counts");
    840862            hof->SetDirectory(NULL);
    841             hof->SetMarkerStyle(kFullDotMedium);
     863            hof->SetMarkerStyle(0);
    842864            hof->SetBit(kCanDelete);
    843865            hof->SetMarkerColor(kRed);
     
    856878            diff->SetYTitle("Counts");
    857879            diff->SetDirectory(NULL);
    858             diff->SetMarkerStyle(kFullDotMedium);
     880            diff->SetMarkerStyle(0);
    859881            diff->SetBit(kCanDelete);
    860882            diff->SetMarkerColor(kBlue);
     
    871893        if (hof ? fit.Fit(*hon, *hof, alpha) : fit.Fit(*hon))
    872894        {
    873             *fLog << dbg << "Bin " << i << ": sigmaexc=" << fit.GetSignificanceExc() << " omega=" << fit.GetGausSigma() << " events=" << fit.GetEventsExcess() << " scale=" << fit.GetScaleFactor() << endl;
     895            *fLog << dbg << "Bin " << i << ": sigmaexc=" << fit.GetEventsExcess()/fit.GetErrorExcess() << " omega=" << fit.GetGausSigma() << " events=" << fit.GetEventsExcess() << " scale=" << fit.GetScaleFactor() << endl;
    874896            fit.DrawResult();
    875897        }
     
    909931
    910932    // Get on-data
    911     TH1D *hon = (TH1D*)fHist.ProjectionZ("Proj", -1, 9999, binlo, binhi, "E");
     933    TH1D *hon = (TH1D*)fHist.ProjectionZ("Proj", 0, fHist.GetNbinsX()+1, binlo, binhi, "E");
    912934    hon->SetDirectory(NULL);
    913935    hon->SetBit(kCanDelete);
     
    921943    if (fOffData)
    922944    {
    923         hoff = (TH1D*)fOffData->ProjectionZ("ProjOff", -1, 9999, binlo, binhi, "E");
     945        hoff = (TH1D*)fOffData->ProjectionZ("ProjOff", 0, fHist.GetNbinsX()+1, binlo, binhi, "E");
    924946        hoff->SetDirectory(NULL);
    925947        hoff->SetBit(kCanDelete);
Note: See TracChangeset for help on using the changeset viewer.