#include "RooStats/HybridCalculator.h"
#include "RooStats/ToyMCSampler.h"
ClassImp(RooStats::HybridCalculator)
using namespace RooStats;
int HybridCalculator::PreNullHook(double obsTestStat) const {
ToyMCSampler *toymcs = dynamic_cast<ToyMCSampler*>(GetTestStatSampler());
if(toymcs) {
oocoutI((TObject*)0,InputArguments) << "Using a ToyMCSampler. Now configuring for Null." << endl;
if(fNToysNull) toymcs->SetNToys(fNToysNull);
if(fNToysNullTail) {
oocoutI((TObject*)0,InputArguments) << "Adaptive Sampling" << endl;
if(GetTestStatSampler()->GetTestStatistic()->PValueIsRightTail()) {
toymcs->SetToysRightTail(fNToysNullTail, obsTestStat);
}else{
toymcs->SetToysLeftTail(fNToysNullTail, obsTestStat);
}
}else{
toymcs->SetToysBothTails(0, 0, obsTestStat);
}
if(fNullImportanceDensity) {
oocoutI((TObject*)0,InputArguments) << "Importance Sampling" << endl;
toymcs->SetImportanceDensity(fNullImportanceDensity);
if(fNullImportanceSnapshot) toymcs->SetImportanceSnapshot(*fNullImportanceSnapshot);
}else{
toymcs->SetImportanceDensity(NULL);
}
GetNullModel()->LoadSnapshot();
}
return 0;
}
int HybridCalculator::PreAltHook(double obsTestStat) const {
ToyMCSampler *toymcs = dynamic_cast<ToyMCSampler*>(GetTestStatSampler());
if(toymcs) {
oocoutI((TObject*)0,InputArguments) << "Using a ToyMCSampler. Now configuring for Alt." << endl;
if(fNToysAlt) toymcs->SetNToys(fNToysAlt);
if(fNToysAltTail) {
oocoutI((TObject*)0,InputArguments) << "Adaptive Sampling" << endl;
if(GetTestStatSampler()->GetTestStatistic()->PValueIsRightTail()) {
toymcs->SetToysLeftTail(fNToysAltTail, obsTestStat);
}else{
toymcs->SetToysRightTail(fNToysAltTail, obsTestStat);
}
}else{
toymcs->SetToysBothTails(0, 0, obsTestStat);
}
if(fAltImportanceDensity) {
oocoutI((TObject*)0,InputArguments) << "Importance Sampling" << endl;
toymcs->SetImportanceDensity(fAltImportanceDensity);
if(fAltImportanceSnapshot) toymcs->SetImportanceSnapshot(*fAltImportanceSnapshot);
}else{
toymcs->SetImportanceDensity(NULL);
}
}
return 0;
}