Ignore:
Timestamp:
07/01/08 17:14:31 (16 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.