47 ClassImp(RooDLLSignificanceMCSModule);
56 RooDLLSignificanceMCSModule::RooDLLSignificanceMCSModule(
const RooRealVar& param, Double_t nullHypoValue) :
57 RooAbsMCStudyModule(Form(
"RooDLLSignificanceMCSModule_%s",param.GetName()),Form(
"RooDLLSignificanceMCSModule_%s",param.GetName())),
58 _parName(param.GetName()),
59 _data(0), _nll0h(0), _dll0h(0), _sig0h(0), _nullValue(nullHypoValue)
69 RooDLLSignificanceMCSModule::RooDLLSignificanceMCSModule(
const char* parName, Double_t nullHypoValue) :
70 RooAbsMCStudyModule(Form(
"RooDLLSignificanceMCSModule_%s",parName),Form(
"RooDLLSignificanceMCSModule_%s",parName)),
72 _data(0), _nll0h(0), _dll0h(0), _sig0h(0), _nullValue(nullHypoValue)
81 RooDLLSignificanceMCSModule::RooDLLSignificanceMCSModule(
const RooDLLSignificanceMCSModule& other) :
82 RooAbsMCStudyModule(other),
83 _parName(other._parName),
84 _data(0), _nll0h(0), _dll0h(0), _sig0h(0), _nullValue(other._nullValue)
93 RooDLLSignificanceMCSModule:: ~RooDLLSignificanceMCSModule()
114 Bool_t RooDLLSignificanceMCSModule::initializeInstance()
117 if (!fitParams()->find(_parName.c_str())) {
118 coutE(InputArguments) <<
"RooDLLSignificanceMCSModule::initializeInstance:: ERROR: No parameter named " << _parName <<
" in RooMCStudy!" << endl ;
123 TString nll0hName = Form(
"nll_nullhypo_%s",_parName.c_str()) ;
124 TString nll0hTitle = Form(
"-log(L) with null hypothesis for param %s",_parName.c_str()) ;
125 _nll0h =
new RooRealVar(nll0hName.Data(),nll0hTitle.Data(),0) ;
128 TString dll0hName = Form(
"dll_nullhypo_%s",_parName.c_str()) ;
129 TString dll0hTitle = Form(
"-log(L) difference w.r.t null hypo for param %s",_parName.c_str()) ;
130 _dll0h =
new RooRealVar(dll0hName.Data(),dll0hTitle.Data(),0) ;
133 TString sig0hName = Form(
"significance_nullhypo_%s",_parName.c_str()) ;
134 TString sig0hTitle = Form(
"Gaussian signficiance of Delta(-log(L)) w.r.t null hypo for param %s",_parName.c_str()) ;
135 _sig0h =
new RooRealVar(sig0hName.Data(),sig0hTitle.Data(),-10,100) ;
138 _data =
new RooDataSet(
"DeltaLLSigData",
"Additional data for Delta(-log(L)) study",RooArgSet(*_nll0h,*_dll0h,*_sig0h)) ;
148 Bool_t RooDLLSignificanceMCSModule::initializeRun(Int_t )
161 RooDataSet* RooDLLSignificanceMCSModule::finalizeRun()
173 Bool_t RooDLLSignificanceMCSModule::processAfterFit(Int_t )
175 RooRealVar* par =
static_cast<RooRealVar*
>(fitParams()->find(_parName.c_str())) ;
176 par->setVal(_nullValue) ;
177 par->setConstant(kTRUE) ;
178 RooFitResult* frnull = refit() ;
179 par->setConstant(kFALSE) ;
181 _nll0h->setVal(frnull->minNll()) ;
183 Double_t deltaLL = (frnull->minNll() - nllVar()->getVal()) ;
184 Double_t signif = deltaLL>0 ? sqrt(2*deltaLL) : -sqrt(-2*deltaLL) ;
185 _sig0h->setVal(signif) ;
186 _dll0h->setVal(deltaLL) ;
189 _data->add(RooArgSet(*_nll0h,*_dll0h,*_sig0h)) ;