41 ClassImp(RooStats::UpperLimitMCSModule);
44 using namespace RooStats ;
48 UpperLimitMCSModule::UpperLimitMCSModule(
const RooArgSet* poi, Double_t CL) :
49 RooAbsMCStudyModule(Form(
"UpperLimitMCSModule_%s",poi->first()->GetName()),Form(
"UpperLimitMCSModule_%s",poi->first()->GetName())),
50 _parName(poi->first()->GetName()),
51 _plc(0),_ul(0),_poi(0), _data(0),_cl(CL), _model(0)
53 std::cout<<
"RooUpperLimitConstructor ParName:"<<_parName<<std::endl;
54 std::cout<<
"RooUpperLimitConstructor CL:"<<_cl<<std::endl;
64 UpperLimitMCSModule::UpperLimitMCSModule(
const UpperLimitMCSModule& other) :
65 RooAbsMCStudyModule(other),
66 _parName(other._poi->first()->GetName()),
67 _plc(0),_ul(0),_poi(other._poi), _data(0), _cl(other._cl), _model(other._model)
74 UpperLimitMCSModule:: ~UpperLimitMCSModule()
97 Bool_t UpperLimitMCSModule::initializeInstance()
100 if (!fitParams()->find(_parName.c_str())) {
101 coutE(InputArguments) <<
"UpperLimitMCSModule::initializeInstance:: ERROR: No parameter named " << _parName <<
" in RooMCStudy!" << endl ;
106 _poi=
new RooArgSet(*(fitParams()->find(_parName.c_str())));
107 std::cout<<
"RooUpperLimit Initialize Instance: POI Set:"<<std::endl;
109 std::cout<<
"RooUpperLimit Initialize Instance: End:"<<std::endl;
113 TString ulName = Form(
"ul_%s",_parName.c_str()) ;
114 TString ulTitle = Form(
"UL for parameter %s",_parName.c_str()) ;
115 _ul =
new RooRealVar(ulName.Data(),ulTitle.Data(),0) ;
119 _data =
new RooDataSet(
"ULSigData",
"Additional data for UL study",RooArgSet(*_ul)) ;
127 Bool_t UpperLimitMCSModule::initializeRun(Int_t )
138 RooDataSet* UpperLimitMCSModule::finalizeRun()
174 Bool_t UpperLimitMCSModule::processBetweenGenAndFit(Int_t ) {
175 std::cout<<
"after generation Test"<<std::endl;
177 if (!fitInitParams() || !genSample() || !fitParams() || !fitModel() )
return kFALSE;
179 static_cast<RooRealVar*
>(_poi->first())->setVal(static_cast<RooRealVar*>(fitInitParams()->find(_parName.c_str()))->getVal());
182 static_cast<RooRealVar*
>(_poi->first())->setBins(1000);
185 std::cout<<
"generated Entries:"<<genSample()->numEntries()<<std::endl;
187 RooStats::ProfileLikelihoodCalculator plc( *(genSample()), *(fitModel()), *_poi);
190 plc.SetTestSize(2*(1-_cl));
191 RooStats::ConfInterval* pllint=plc.GetInterval();
193 if (!pllint)
return kFALSE;
195 std::cout<<
"poi value: "<<((RooRealVar*)( _poi->first()))->getVal()<<std::endl;
196 std::cout<<(static_cast<RooRealVar*>((fitParams()->find(_parName.c_str()))))->getVal()<<std::endl;
197 std::cout<<((RooStats::LikelihoodInterval*)pllint)->UpperLimit((RooRealVar&)*(_poi->first()))<<std::endl;
205 _ul->setVal(((RooStats::LikelihoodInterval*)pllint)->UpperLimit(static_cast<RooRealVar&>(*(fitParams()->find(_parName.c_str())))));
207 _data->add(RooArgSet(*_ul));
208 std::cout<<
"UL:"<<_ul->getVal()<<std::endl;