Hello, I’m trying to use RooFit and RooStats to compute the upper limit on a cross section of a new physics process with the hypotestinverter.
To start with I am using ROOT 6.25/01
I have read many of the tutorials and a lot of forum posts on this but am still slightly confused. The start of my analysis begins with simulated histograms of my observable (here it is an invariant mass, M_inv) for both my background and my signal processes. They are created as below
//Get Histograms of signal and background distributions
TH1D *s500_hist = (TH1D*) s500->Get("M_{#gamma#gamma}35.000000");
TH1D *LBL500_hist = (TH1D*) LBL500->Get("M_{#gamma#gamma}bkgd35.000000");
RooDataHist s500_dh("minv", "minv", M_inv, Import(*s500_hist));
RooDataHist LBL500_dh("minv", "minv", M_inv, Import(*LBL500_hist));
RooCategory sample("sample","");
sample.defineType("signal");
sample.defineType("bkgd");
//two datahists, one containing sig + bkgd, one containing bkgd only
RooDataHist combData("combData", "combined data", M_inv, Index(sample), Import("signal",s500_dh), Import("bkgd",LBL500_dh));
RooDataHist combData2("combData2", "combined data2", M_inv, Index(sample), Import("bkgd",LBL500_dh));
I create background and signal pdfs and then create a s+b modelconfig as well as a b_only modelconfig.
//Create bgkd model config
ModelConfig bmodel("bmodel", wks);
bmodel.SetPdf(*wks->pdf("model"));
bmodel.SetObservables(obs);
bmodel.SetParametersOfInterest(poi);
wks->var("xsec")->setVal(0.0);
//bmodel.SetGlobalObservables(global_obs);
//bmodel.SetNuisanceParameters(nuis);
bmodel.SetSnapshot(poi);
//Create sig + bkgd model config
ModelConfig sbmodel("sbmodel", wks);
sbmodel.SetPdf(*wks->pdf("model"));
sbmodel.SetObservables(obs);
sbmodel.SetParametersOfInterest(poi);
wks->var("xsec")->setVal(.2);// Does this value matter?
//bmodel.SetGlobalObservables(global_obs);
//bmodel.SetNuisanceParameters(nuis);
sbmodel.SetSnapshot(poi);
Now when I want to go and set an upper limit I first need to create a calculator (either Asymptotic or Frequentist). I input my s+b model as my null, and my b model as my alt. Exactly what data should I input for the data here (as below)?
FrequentistCalculator fc(data, bmodel, sbmodel);
Should it be my simulated background? my simulated signal? signal + background? Or maybe I’m supposed to be generating Asimov data and using that data here? Does it depend on which calculator I want?
I’ve attached my analysis code, it doesn’t contain the root files but those can be easily included. Any help would be much appreciated. Thank you!