// RooDLLSignificanceMCSModule is an add-on modules to RooMCStudy that
// calculates the significance of a signal by comparing the likelihood of
// a fit fit with a given parameter floating with a fit with that given
// parameter fixed to a nominal value (usually zero). The difference in
// the -log(L) of those two fits can be interpreted as the probability
// that a statistical background fluctation may result in a signal as large
// or larger than the signal observed. This interpretation is contingent
// on underlying normal sampling distributions and a MC study is a good way
// to test that assumption.
// END_HTML
#include "Riostream.h"
#include "RooDataSet.h"
#include "RooRealVar.h"
#include "TString.h"
#include "RooFit.h"
#include "RooFitResult.h"
#include "RooDLLSignificanceMCSModule.h"
#include "RooMsgService.h"
ClassImp(RooDLLSignificanceMCSModule)
;
RooDLLSignificanceMCSModule::RooDLLSignificanceMCSModule(const RooRealVar& param, Double_t nullHypoValue) :
RooAbsMCStudyModule(Form("RooDLLSignificanceMCSModule_%s",param.GetName()),Form("RooDLLSignificanceMCSModule_%s",param.GetName())),
_parName(param.GetName()),
_data(0), _nll0h(0), _dll0h(0), _sig0h(0), _nullValue(nullHypoValue)
{
}
RooDLLSignificanceMCSModule::RooDLLSignificanceMCSModule(const char* parName, Double_t nullHypoValue) :
RooAbsMCStudyModule(Form("RooDLLSignificanceMCSModule_%s",parName),Form("RooDLLSignificanceMCSModule_%s",parName)),
_parName(parName),
_data(0), _nll0h(0), _dll0h(0), _sig0h(0), _nullValue(nullHypoValue)
{
}
RooDLLSignificanceMCSModule::RooDLLSignificanceMCSModule(const RooDLLSignificanceMCSModule& other) :
RooAbsMCStudyModule(other),
_parName(other._parName),
_data(0), _nll0h(0), _dll0h(0), _sig0h(0), _nullValue(other._nullValue)
{
}
RooDLLSignificanceMCSModule:: ~RooDLLSignificanceMCSModule()
{
if (_nll0h) {
delete _nll0h ;
}
if (_dll0h) {
delete _dll0h ;
}
if (_sig0h) {
delete _sig0h ;
}
if (_data) {
delete _data ;
}
}
Bool_t RooDLLSignificanceMCSModule::initializeInstance()
{
if (!fitParams()->find(_parName.c_str())) {
coutE(InputArguments) << "RooDLLSignificanceMCSModule::initializeInstance:: ERROR: No parameter named " << _parName << " in RooMCStudy!" << endl ;
return kFALSE ;
}
TString nll0hName = Form("nll_nullhypo_%s",_parName.c_str()) ;
TString nll0hTitle = Form("-log(L) with null hypothesis for param %s",_parName.c_str()) ;
_nll0h = new RooRealVar(nll0hName.Data(),nll0hTitle.Data(),0) ;
TString dll0hName = Form("dll_nullhypo_%s",_parName.c_str()) ;
TString dll0hTitle = Form("-log(L) difference w.r.t null hypo for param %s",_parName.c_str()) ;
_dll0h = new RooRealVar(dll0hName.Data(),dll0hTitle.Data(),0) ;
TString sig0hName = Form("significance_nullhypo_%s",_parName.c_str()) ;
TString sig0hTitle = Form("Gaussian signficiance of Delta(-log(L)) w.r.t null hypo for param %s",_parName.c_str()) ;
_sig0h = new RooRealVar(sig0hName.Data(),sig0hTitle.Data(),-10,100) ;
_data = new RooDataSet("DeltaLLSigData","Additional data for Delta(-log(L)) study",RooArgSet(*_nll0h,*_dll0h,*_sig0h)) ;
return kTRUE ;
}
Bool_t RooDLLSignificanceMCSModule::initializeRun(Int_t )
{
_data->reset() ;
return kTRUE ;
}
RooDataSet* RooDLLSignificanceMCSModule::finalizeRun()
{
return _data ;
}
Bool_t RooDLLSignificanceMCSModule::processAfterFit(Int_t )
{
RooRealVar* par = static_cast<RooRealVar*>(fitParams()->find(_parName.c_str())) ;
par->setVal(_nullValue) ;
par->setConstant(kTRUE) ;
RooFitResult* frnull = refit() ;
par->setConstant(kFALSE) ;
_nll0h->setVal(frnull->minNll()) ;
Double_t deltaLL = (frnull->minNll() - nllVar()->getVal()) ;
Double_t signif = deltaLL>0 ? sqrt(2*deltaLL) : -sqrt(-2*deltaLL) ;
_sig0h->setVal(signif) ;
_dll0h->setVal(deltaLL) ;
_data->add(RooArgSet(*_nll0h,*_dll0h,*_sig0h)) ;
delete frnull ;
return kTRUE ;
}
RooDLLSignificanceMCSModule.cxx:1 RooDLLSignificanceMCSModule.cxx:2 RooDLLSignificanceMCSModule.cxx:3 RooDLLSignificanceMCSModule.cxx:4 RooDLLSignificanceMCSModule.cxx:5 RooDLLSignificanceMCSModule.cxx:6 RooDLLSignificanceMCSModule.cxx:7 RooDLLSignificanceMCSModule.cxx:8 RooDLLSignificanceMCSModule.cxx:9 RooDLLSignificanceMCSModule.cxx:10 RooDLLSignificanceMCSModule.cxx:11 RooDLLSignificanceMCSModule.cxx:12 RooDLLSignificanceMCSModule.cxx:13 RooDLLSignificanceMCSModule.cxx:14 RooDLLSignificanceMCSModule.cxx:15 RooDLLSignificanceMCSModule.cxx:16 RooDLLSignificanceMCSModule.cxx:17 RooDLLSignificanceMCSModule.cxx:18 RooDLLSignificanceMCSModule.cxx:19 RooDLLSignificanceMCSModule.cxx:20 RooDLLSignificanceMCSModule.cxx:21 RooDLLSignificanceMCSModule.cxx:22 RooDLLSignificanceMCSModule.cxx:23 RooDLLSignificanceMCSModule.cxx:24 RooDLLSignificanceMCSModule.cxx:25 RooDLLSignificanceMCSModule.cxx:26 RooDLLSignificanceMCSModule.cxx:27 RooDLLSignificanceMCSModule.cxx:28 RooDLLSignificanceMCSModule.cxx:29 RooDLLSignificanceMCSModule.cxx:30 RooDLLSignificanceMCSModule.cxx:31 RooDLLSignificanceMCSModule.cxx:32 RooDLLSignificanceMCSModule.cxx:33 RooDLLSignificanceMCSModule.cxx:34 RooDLLSignificanceMCSModule.cxx:35 RooDLLSignificanceMCSModule.cxx:36 RooDLLSignificanceMCSModule.cxx:37 RooDLLSignificanceMCSModule.cxx:38 RooDLLSignificanceMCSModule.cxx:39 RooDLLSignificanceMCSModule.cxx:40 RooDLLSignificanceMCSModule.cxx:41 RooDLLSignificanceMCSModule.cxx:42 RooDLLSignificanceMCSModule.cxx:43 RooDLLSignificanceMCSModule.cxx:44 RooDLLSignificanceMCSModule.cxx:45 RooDLLSignificanceMCSModule.cxx:46 RooDLLSignificanceMCSModule.cxx:47 RooDLLSignificanceMCSModule.cxx:48 RooDLLSignificanceMCSModule.cxx:49 RooDLLSignificanceMCSModule.cxx:50 RooDLLSignificanceMCSModule.cxx:51 RooDLLSignificanceMCSModule.cxx:52 RooDLLSignificanceMCSModule.cxx:53 RooDLLSignificanceMCSModule.cxx:54 RooDLLSignificanceMCSModule.cxx:55 RooDLLSignificanceMCSModule.cxx:56 RooDLLSignificanceMCSModule.cxx:57 RooDLLSignificanceMCSModule.cxx:58 RooDLLSignificanceMCSModule.cxx:59 RooDLLSignificanceMCSModule.cxx:60 RooDLLSignificanceMCSModule.cxx:61 RooDLLSignificanceMCSModule.cxx:62 RooDLLSignificanceMCSModule.cxx:63 RooDLLSignificanceMCSModule.cxx:64 RooDLLSignificanceMCSModule.cxx:65 RooDLLSignificanceMCSModule.cxx:66 RooDLLSignificanceMCSModule.cxx:67 RooDLLSignificanceMCSModule.cxx:68 RooDLLSignificanceMCSModule.cxx:69 RooDLLSignificanceMCSModule.cxx:70 RooDLLSignificanceMCSModule.cxx:71 RooDLLSignificanceMCSModule.cxx:72 RooDLLSignificanceMCSModule.cxx:73 RooDLLSignificanceMCSModule.cxx:74 RooDLLSignificanceMCSModule.cxx:75 RooDLLSignificanceMCSModule.cxx:76 RooDLLSignificanceMCSModule.cxx:77 RooDLLSignificanceMCSModule.cxx:78 RooDLLSignificanceMCSModule.cxx:79 RooDLLSignificanceMCSModule.cxx:80 RooDLLSignificanceMCSModule.cxx:81 RooDLLSignificanceMCSModule.cxx:82 RooDLLSignificanceMCSModule.cxx:83 RooDLLSignificanceMCSModule.cxx:84 RooDLLSignificanceMCSModule.cxx:85 RooDLLSignificanceMCSModule.cxx:86 RooDLLSignificanceMCSModule.cxx:87 RooDLLSignificanceMCSModule.cxx:88 RooDLLSignificanceMCSModule.cxx:89 RooDLLSignificanceMCSModule.cxx:90 RooDLLSignificanceMCSModule.cxx:91 RooDLLSignificanceMCSModule.cxx:92 RooDLLSignificanceMCSModule.cxx:93 RooDLLSignificanceMCSModule.cxx:94 RooDLLSignificanceMCSModule.cxx:95 RooDLLSignificanceMCSModule.cxx:96 RooDLLSignificanceMCSModule.cxx:97 RooDLLSignificanceMCSModule.cxx:98 RooDLLSignificanceMCSModule.cxx:99 RooDLLSignificanceMCSModule.cxx:100 RooDLLSignificanceMCSModule.cxx:101 RooDLLSignificanceMCSModule.cxx:102 RooDLLSignificanceMCSModule.cxx:103 RooDLLSignificanceMCSModule.cxx:104 RooDLLSignificanceMCSModule.cxx:105 RooDLLSignificanceMCSModule.cxx:106 RooDLLSignificanceMCSModule.cxx:107 RooDLLSignificanceMCSModule.cxx:108 RooDLLSignificanceMCSModule.cxx:109 RooDLLSignificanceMCSModule.cxx:110 RooDLLSignificanceMCSModule.cxx:111 RooDLLSignificanceMCSModule.cxx:112 RooDLLSignificanceMCSModule.cxx:113 RooDLLSignificanceMCSModule.cxx:114 RooDLLSignificanceMCSModule.cxx:115 RooDLLSignificanceMCSModule.cxx:116 RooDLLSignificanceMCSModule.cxx:117 RooDLLSignificanceMCSModule.cxx:118 RooDLLSignificanceMCSModule.cxx:119 RooDLLSignificanceMCSModule.cxx:120 RooDLLSignificanceMCSModule.cxx:121 RooDLLSignificanceMCSModule.cxx:122 RooDLLSignificanceMCSModule.cxx:123 RooDLLSignificanceMCSModule.cxx:124 RooDLLSignificanceMCSModule.cxx:125 RooDLLSignificanceMCSModule.cxx:126 RooDLLSignificanceMCSModule.cxx:127 RooDLLSignificanceMCSModule.cxx:128 RooDLLSignificanceMCSModule.cxx:129 RooDLLSignificanceMCSModule.cxx:130 RooDLLSignificanceMCSModule.cxx:131 RooDLLSignificanceMCSModule.cxx:132 RooDLLSignificanceMCSModule.cxx:133 RooDLLSignificanceMCSModule.cxx:134 RooDLLSignificanceMCSModule.cxx:135 RooDLLSignificanceMCSModule.cxx:136 RooDLLSignificanceMCSModule.cxx:137 RooDLLSignificanceMCSModule.cxx:138 RooDLLSignificanceMCSModule.cxx:139 RooDLLSignificanceMCSModule.cxx:140 RooDLLSignificanceMCSModule.cxx:141 RooDLLSignificanceMCSModule.cxx:142 RooDLLSignificanceMCSModule.cxx:143 RooDLLSignificanceMCSModule.cxx:144 RooDLLSignificanceMCSModule.cxx:145 RooDLLSignificanceMCSModule.cxx:146 RooDLLSignificanceMCSModule.cxx:147 RooDLLSignificanceMCSModule.cxx:148 RooDLLSignificanceMCSModule.cxx:149 RooDLLSignificanceMCSModule.cxx:150 RooDLLSignificanceMCSModule.cxx:151 RooDLLSignificanceMCSModule.cxx:152 RooDLLSignificanceMCSModule.cxx:153 RooDLLSignificanceMCSModule.cxx:154 RooDLLSignificanceMCSModule.cxx:155 RooDLLSignificanceMCSModule.cxx:156 RooDLLSignificanceMCSModule.cxx:157 RooDLLSignificanceMCSModule.cxx:158 RooDLLSignificanceMCSModule.cxx:159 RooDLLSignificanceMCSModule.cxx:160 RooDLLSignificanceMCSModule.cxx:161 RooDLLSignificanceMCSModule.cxx:162 RooDLLSignificanceMCSModule.cxx:163 RooDLLSignificanceMCSModule.cxx:164 RooDLLSignificanceMCSModule.cxx:165 RooDLLSignificanceMCSModule.cxx:166 RooDLLSignificanceMCSModule.cxx:167 RooDLLSignificanceMCSModule.cxx:168 RooDLLSignificanceMCSModule.cxx:169 RooDLLSignificanceMCSModule.cxx:170 RooDLLSignificanceMCSModule.cxx:171 RooDLLSignificanceMCSModule.cxx:172 RooDLLSignificanceMCSModule.cxx:173 RooDLLSignificanceMCSModule.cxx:174 RooDLLSignificanceMCSModule.cxx:175 RooDLLSignificanceMCSModule.cxx:176 RooDLLSignificanceMCSModule.cxx:177 RooDLLSignificanceMCSModule.cxx:178 RooDLLSignificanceMCSModule.cxx:179 RooDLLSignificanceMCSModule.cxx:180 RooDLLSignificanceMCSModule.cxx:181 RooDLLSignificanceMCSModule.cxx:182 RooDLLSignificanceMCSModule.cxx:183 RooDLLSignificanceMCSModule.cxx:184 RooDLLSignificanceMCSModule.cxx:185 RooDLLSignificanceMCSModule.cxx:186 RooDLLSignificanceMCSModule.cxx:187 RooDLLSignificanceMCSModule.cxx:188 RooDLLSignificanceMCSModule.cxx:189