#include "RooStats/LikelihoodIntervalPlot.h"
#include <algorithm>
#include <iostream>
#include "TROOT.h"
#include "TMath.h"
#include "TLine.h"
#include "TObjArray.h"
#include "TList.h"
#include "TGraph.h"
#include "TPad.h"
#include "RooRealVar.h"
#include "RooPlot.h"
ClassImp(RooStats::LikelihoodIntervalPlot);
using namespace RooStats;
LikelihoodIntervalPlot::LikelihoodIntervalPlot()
{
fInterval = 0;
fNdimPlot = 0;
fParamsPlot = 0;
fColor = 0;
fFillStyle = 4050;
fLineColor = 0;
fMaximum = 2.;
}
LikelihoodIntervalPlot::LikelihoodIntervalPlot(LikelihoodInterval* theInterval)
{
fInterval = theInterval;
fParamsPlot = fInterval->GetParameters();
fNdimPlot = fParamsPlot->getSize();
fColor = kBlue;
fLineColor = kGreen;
fFillStyle = 4050;
fMaximum = 2.;
}
LikelihoodIntervalPlot::~LikelihoodIntervalPlot()
{
}
void LikelihoodIntervalPlot::SetLikelihoodInterval(LikelihoodInterval* theInterval)
{
fInterval = theInterval;
fParamsPlot = fInterval->GetParameters();
fNdimPlot = fParamsPlot->getSize();
return;
}
void LikelihoodIntervalPlot::SetPlotParameters(const RooArgSet *params)
{
fNdimPlot = params->getSize();
fParamsPlot = (RooArgSet*) params->clone((std::string(params->GetName())+"_clone").c_str());
return;
}
void LikelihoodIntervalPlot::Draw(const Option_t *options)
{
if(fNdimPlot > 2){
std::cout << "LikelihoodIntervalPlot::Draw(" << GetName()
<< ") ERROR: contours for more than 2 dimensions not implemented!" << std::endl;
return;
}
TIter it = fParamsPlot->createIterator();
RooRealVar *myparam = (RooRealVar*)it.Next();
RooAbsReal* newProfile = fInterval->GetLikelihoodRatio();
if(fNdimPlot == 1){
const Double_t xcont_min = fInterval->LowerLimit(*myparam);
const Double_t xcont_max = fInterval->UpperLimit(*myparam);
RooRealVar* myarg = (RooRealVar *) newProfile->getVariables()->find(myparam->GetName());
RooPlot *frame = myarg->frame();
frame->SetTitle(GetTitle());
frame->GetYaxis()->SetTitle("- log #lambda");
newProfile->plotOn(frame);
frame->SetMaximum(fMaximum);
frame->SetMinimum(0.);
myarg->setVal(xcont_min);
myarg->setVal(xcont_max);
const Double_t Yat_Xmax = newProfile->getVal();
TLine *Yline_cutoff = new TLine(myarg->getMin(),Yat_Xmax,myarg->getMax(),Yat_Xmax);
TLine *Yline_min = new TLine(xcont_min,0.,xcont_min,Yat_Xmax);
TLine *Yline_max = new TLine(xcont_max,0.,xcont_max,Yat_Xmax);
Yline_cutoff->SetLineColor(fLineColor);
Yline_min->SetLineColor(fLineColor);
Yline_max->SetLineColor(fLineColor);
frame->addObject(Yline_cutoff);
frame->addObject(Yline_min);
frame->addObject(Yline_max);
frame->Draw(options);
return;
}
else if(fNdimPlot == 2){
RooRealVar *myparamY = (RooRealVar*)it.Next();
TH2F* hist2D = (TH2F*)newProfile->createHistogram("_hist2D",*myparamY,RooFit::YVar(*myparam),RooFit::Binning(40),RooFit::Scaling(kFALSE));
hist2D->SetTitle(GetTitle());
hist2D->SetStats(kFALSE);
Double_t cont_level = TMath::ChisquareQuantile(fInterval->ConfidenceLevel(),fNdimPlot);
cont_level = cont_level/2;
hist2D->SetContour(1,&cont_level);
hist2D->SetFillColor(fColor);
hist2D->SetFillStyle(fFillStyle);
hist2D->SetLineColor(fLineColor);
TString tmpOpt(options);
if(!tmpOpt.Contains("CONT")) tmpOpt.Append("CONT");
if(!tmpOpt.Contains("LIST")) tmpOpt.Append("LIST");
hist2D->Draw(tmpOpt.Data());
gPad->Update();
TObjArray *contours = (TObjArray*) gROOT->GetListOfSpecials()->FindObject("contours");
if(contours){
TList *list = (TList*)contours->At(0);
TGraph *gr1 = (TGraph*)list->First();
gr1->SetLineColor(kBlack);
gr1->SetLineStyle(kDashed);
gr1->Draw("same");
} else{
std::cout << "no countours found in ListOfSpecials" << std::endl;
}
return;
}
return;
}
LikelihoodIntervalPlot.cxx:1 LikelihoodIntervalPlot.cxx:2 LikelihoodIntervalPlot.cxx:3 LikelihoodIntervalPlot.cxx:4 LikelihoodIntervalPlot.cxx:5 LikelihoodIntervalPlot.cxx:6 LikelihoodIntervalPlot.cxx:7 LikelihoodIntervalPlot.cxx:8 LikelihoodIntervalPlot.cxx:9 LikelihoodIntervalPlot.cxx:10 LikelihoodIntervalPlot.cxx:11 LikelihoodIntervalPlot.cxx:12 LikelihoodIntervalPlot.cxx:13 LikelihoodIntervalPlot.cxx:14 LikelihoodIntervalPlot.cxx:15 LikelihoodIntervalPlot.cxx:16 LikelihoodIntervalPlot.cxx:17 LikelihoodIntervalPlot.cxx:18 LikelihoodIntervalPlot.cxx:19 LikelihoodIntervalPlot.cxx:20 LikelihoodIntervalPlot.cxx:21 LikelihoodIntervalPlot.cxx:22 LikelihoodIntervalPlot.cxx:23 LikelihoodIntervalPlot.cxx:24 LikelihoodIntervalPlot.cxx:25 LikelihoodIntervalPlot.cxx:26 LikelihoodIntervalPlot.cxx:27 LikelihoodIntervalPlot.cxx:28 LikelihoodIntervalPlot.cxx:29 LikelihoodIntervalPlot.cxx:30 LikelihoodIntervalPlot.cxx:31 LikelihoodIntervalPlot.cxx:32 LikelihoodIntervalPlot.cxx:33 LikelihoodIntervalPlot.cxx:34 LikelihoodIntervalPlot.cxx:35 LikelihoodIntervalPlot.cxx:36 LikelihoodIntervalPlot.cxx:37 LikelihoodIntervalPlot.cxx:38 LikelihoodIntervalPlot.cxx:39 LikelihoodIntervalPlot.cxx:40 LikelihoodIntervalPlot.cxx:41 LikelihoodIntervalPlot.cxx:42 LikelihoodIntervalPlot.cxx:43 LikelihoodIntervalPlot.cxx:44 LikelihoodIntervalPlot.cxx:45 LikelihoodIntervalPlot.cxx:46 LikelihoodIntervalPlot.cxx:47 LikelihoodIntervalPlot.cxx:48 LikelihoodIntervalPlot.cxx:49 LikelihoodIntervalPlot.cxx:50 LikelihoodIntervalPlot.cxx:51 LikelihoodIntervalPlot.cxx:52 LikelihoodIntervalPlot.cxx:53 LikelihoodIntervalPlot.cxx:54 LikelihoodIntervalPlot.cxx:55 LikelihoodIntervalPlot.cxx:56 LikelihoodIntervalPlot.cxx:57 LikelihoodIntervalPlot.cxx:58 LikelihoodIntervalPlot.cxx:59 LikelihoodIntervalPlot.cxx:60 LikelihoodIntervalPlot.cxx:61 LikelihoodIntervalPlot.cxx:62 LikelihoodIntervalPlot.cxx:63 LikelihoodIntervalPlot.cxx:64 LikelihoodIntervalPlot.cxx:65 LikelihoodIntervalPlot.cxx:66 LikelihoodIntervalPlot.cxx:67 LikelihoodIntervalPlot.cxx:68 LikelihoodIntervalPlot.cxx:69 LikelihoodIntervalPlot.cxx:70 LikelihoodIntervalPlot.cxx:71 LikelihoodIntervalPlot.cxx:72 LikelihoodIntervalPlot.cxx:73 LikelihoodIntervalPlot.cxx:74 LikelihoodIntervalPlot.cxx:75 LikelihoodIntervalPlot.cxx:76 LikelihoodIntervalPlot.cxx:77 LikelihoodIntervalPlot.cxx:78 LikelihoodIntervalPlot.cxx:79 LikelihoodIntervalPlot.cxx:80 LikelihoodIntervalPlot.cxx:81 LikelihoodIntervalPlot.cxx:82 LikelihoodIntervalPlot.cxx:83 LikelihoodIntervalPlot.cxx:84 LikelihoodIntervalPlot.cxx:85 LikelihoodIntervalPlot.cxx:86 LikelihoodIntervalPlot.cxx:87 LikelihoodIntervalPlot.cxx:88 LikelihoodIntervalPlot.cxx:89 LikelihoodIntervalPlot.cxx:90 LikelihoodIntervalPlot.cxx:91 LikelihoodIntervalPlot.cxx:92 LikelihoodIntervalPlot.cxx:93 LikelihoodIntervalPlot.cxx:94 LikelihoodIntervalPlot.cxx:95 LikelihoodIntervalPlot.cxx:96 LikelihoodIntervalPlot.cxx:97 LikelihoodIntervalPlot.cxx:98 LikelihoodIntervalPlot.cxx:99 LikelihoodIntervalPlot.cxx:100 LikelihoodIntervalPlot.cxx:101 LikelihoodIntervalPlot.cxx:102 LikelihoodIntervalPlot.cxx:103 LikelihoodIntervalPlot.cxx:104 LikelihoodIntervalPlot.cxx:105 LikelihoodIntervalPlot.cxx:106 LikelihoodIntervalPlot.cxx:107 LikelihoodIntervalPlot.cxx:108 LikelihoodIntervalPlot.cxx:109 LikelihoodIntervalPlot.cxx:110 LikelihoodIntervalPlot.cxx:111 LikelihoodIntervalPlot.cxx:112 LikelihoodIntervalPlot.cxx:113 LikelihoodIntervalPlot.cxx:114 LikelihoodIntervalPlot.cxx:115 LikelihoodIntervalPlot.cxx:116 LikelihoodIntervalPlot.cxx:117 LikelihoodIntervalPlot.cxx:118 LikelihoodIntervalPlot.cxx:119 LikelihoodIntervalPlot.cxx:120 LikelihoodIntervalPlot.cxx:121 LikelihoodIntervalPlot.cxx:122 LikelihoodIntervalPlot.cxx:123 LikelihoodIntervalPlot.cxx:124 LikelihoodIntervalPlot.cxx:125 LikelihoodIntervalPlot.cxx:126 LikelihoodIntervalPlot.cxx:127 LikelihoodIntervalPlot.cxx:128 LikelihoodIntervalPlot.cxx:129 LikelihoodIntervalPlot.cxx:130 LikelihoodIntervalPlot.cxx:131 LikelihoodIntervalPlot.cxx:132 LikelihoodIntervalPlot.cxx:133 LikelihoodIntervalPlot.cxx:134 LikelihoodIntervalPlot.cxx:135 LikelihoodIntervalPlot.cxx:136 LikelihoodIntervalPlot.cxx:137 LikelihoodIntervalPlot.cxx:138 LikelihoodIntervalPlot.cxx:139 LikelihoodIntervalPlot.cxx:140 LikelihoodIntervalPlot.cxx:141 LikelihoodIntervalPlot.cxx:142 LikelihoodIntervalPlot.cxx:143 LikelihoodIntervalPlot.cxx:144 LikelihoodIntervalPlot.cxx:145 LikelihoodIntervalPlot.cxx:146 LikelihoodIntervalPlot.cxx:147 LikelihoodIntervalPlot.cxx:148 LikelihoodIntervalPlot.cxx:149 LikelihoodIntervalPlot.cxx:150 LikelihoodIntervalPlot.cxx:151 LikelihoodIntervalPlot.cxx:152 LikelihoodIntervalPlot.cxx:153 LikelihoodIntervalPlot.cxx:154 LikelihoodIntervalPlot.cxx:155 LikelihoodIntervalPlot.cxx:156 LikelihoodIntervalPlot.cxx:157 LikelihoodIntervalPlot.cxx:158 LikelihoodIntervalPlot.cxx:159 LikelihoodIntervalPlot.cxx:160 LikelihoodIntervalPlot.cxx:161 LikelihoodIntervalPlot.cxx:162 LikelihoodIntervalPlot.cxx:163 LikelihoodIntervalPlot.cxx:164 LikelihoodIntervalPlot.cxx:165 LikelihoodIntervalPlot.cxx:166 LikelihoodIntervalPlot.cxx:167 LikelihoodIntervalPlot.cxx:168 LikelihoodIntervalPlot.cxx:169 LikelihoodIntervalPlot.cxx:170 LikelihoodIntervalPlot.cxx:171 LikelihoodIntervalPlot.cxx:172 LikelihoodIntervalPlot.cxx:173 LikelihoodIntervalPlot.cxx:174 LikelihoodIntervalPlot.cxx:175 LikelihoodIntervalPlot.cxx:176 LikelihoodIntervalPlot.cxx:177 LikelihoodIntervalPlot.cxx:178 LikelihoodIntervalPlot.cxx:179 LikelihoodIntervalPlot.cxx:180 LikelihoodIntervalPlot.cxx:181 LikelihoodIntervalPlot.cxx:182 LikelihoodIntervalPlot.cxx:183 LikelihoodIntervalPlot.cxx:184 LikelihoodIntervalPlot.cxx:185 LikelihoodIntervalPlot.cxx:186 LikelihoodIntervalPlot.cxx:187 LikelihoodIntervalPlot.cxx:188 LikelihoodIntervalPlot.cxx:189 LikelihoodIntervalPlot.cxx:190 LikelihoodIntervalPlot.cxx:191 LikelihoodIntervalPlot.cxx:192 LikelihoodIntervalPlot.cxx:193 LikelihoodIntervalPlot.cxx:194 LikelihoodIntervalPlot.cxx:195 LikelihoodIntervalPlot.cxx:196 LikelihoodIntervalPlot.cxx:197 LikelihoodIntervalPlot.cxx:198 LikelihoodIntervalPlot.cxx:199 LikelihoodIntervalPlot.cxx:200 LikelihoodIntervalPlot.cxx:201 LikelihoodIntervalPlot.cxx:202