43 ClassImp(RooChi2MCSModule);
47 RooChi2MCSModule::RooChi2MCSModule() :
48 RooAbsMCStudyModule(
"RooChi2MCSModule",
"RooChi2Module"),
49 _data(0), _chi2(0), _ndof(0), _chi2red(0), _prob(0)
58 RooChi2MCSModule::RooChi2MCSModule(
const RooChi2MCSModule& other) :
59 RooAbsMCStudyModule(other),
60 _data(0), _chi2(0), _ndof(0), _chi2red(0), _prob(0)
67 RooChi2MCSModule:: ~RooChi2MCSModule()
89 Bool_t RooChi2MCSModule::initializeInstance()
92 _chi2 =
new RooRealVar(
"chi2",
"chi^2",0) ;
93 _ndof =
new RooRealVar(
"ndof",
"number of degrees of freedom",0) ;
94 _chi2red =
new RooRealVar(
"chi2red",
"reduced chi^2",0) ;
95 _prob =
new RooRealVar(
"prob",
"prob(chi2,ndof)",0) ;
98 _data =
new RooDataSet(
"Chi2Data",
"Additional data for Chi2 study",RooArgSet(*_chi2,*_ndof,*_chi2red,*_prob)) ;
106 Bool_t RooChi2MCSModule::initializeRun(Int_t )
117 RooDataSet* RooChi2MCSModule::finalizeRun()
125 Bool_t RooChi2MCSModule::processAfterFit(Int_t )
127 RooAbsData* data = genSample() ;
128 RooDataHist* binnedData =
dynamic_cast<RooDataHist*
>(data) ;
129 Bool_t deleteData(kFALSE) ;
132 binnedData = ((RooDataSet*)data)->binnedClone() ;
135 RooChi2Var chi2Var(
"chi2Var",
"chi2Var",*fitModel(),*binnedData,RooFit::Extended(extendedGen()),RooFit::DataError(RooAbsData::SumW2)) ;
137 RooArgSet* floatPars = (RooArgSet*) fitParams()->selectByAttrib(
"Constant",kFALSE) ;
139 _chi2->setVal(chi2Var.getVal()) ;
140 _ndof->setVal(binnedData->numEntries()-floatPars->getSize()-1) ;
141 _chi2red->setVal(_chi2->getVal()/_ndof->getVal()) ;
142 _prob->setVal(TMath::Prob(_chi2->getVal(),
static_cast<int>(_ndof->getVal()))) ;
144 _data->add(RooArgSet(*_chi2,*_ndof,*_chi2red,*_prob)) ;