Hi,
I am using trying to get the sweights for my data. Following is the code:
TFile* file1 = new TFile("TMVA_output_splots.root");
TTree* datatree = (TTree*)(file1->Get("tree"));
TH1F* data_p_30_bdt = (TH1F*)(file1->Get("p_30_bdt"));
TH1F* data_p_b_30_bdt = (TH1F*)(file1->Get("p_b_30_bdt"));
TH1F* data_p_n_30_bdt = (TH1F*)(file1->Get("p_n_30_bdt"));
RooRealVar BDT_response("BDT_response", "BDT_response",-1,1);
RooRealVar BDT_response_30("BDT_response_30", "BDT_response_30",-1,1);
RooRealVar jet_pt("jet_pt", "jet_pt",-1,1);
RooDataSet data_set("data_set","data_set",RooArgSet(jet_pt,BDT_response),Import(*datatree));
RooDataHist p_30_bdt("p_30_bdt","p_30_bdt",RooArgList(BDT_response),Import(*data_p_30_bdt));
RooDataHist p_b_30_bdt("p_b_30_bdt","p_b_30_bdt",RooArgList(BDT_response),Import(*data_p_b_30_bdt));
RooDataHist p_n_30_bdt("p_n_30_bdt","p_n_30_bdt",RooArgList(BDT_response),Import(*data_p_n_30_bdt));
RooRealVar yield_b_30("yield_b_30","yield_b_30",100,0,max);
RooRealVar yield_n_30("yield_n_30","yield_n_30",100,0,max);
RooHistPdf pdf_b_30("pdf_b_30","",BDT_response,p_b_30_bdt);
RooHistPdf pdf_n_30("pdf_n_30","",BDT_response,p_n_30_bdt);
RooAddPdf totalPdf_30("totalPdf_30","totalPdf_30",RooArgList(pdf_b_30,pdf_n_30),RooArgList(yield_b_30,yield_n_30));
totalPdf_30.fitTo(p_30_bdt,Extended());
//There is no error till here.
RooAbsPdf* kkk = &totalPdf_30;
RooStats::SPlot* sData = new RooStats::SPlot("sData","An SPlot",data_set,kkk,RooArgList(yield_b_30,yield_n_30));
So, I am unable to get my dataset with s weights.
The error is :
Error in <TDecompLU::DecomposeLUCrout>: matrix is singular
Error in <TDecompLU::DecomposeLUCrout>: matrix is singular
[#0] ERROR:Eval -- SPlot Error: covariance matrix is singular; I can't invert it!
Can’t understand why this is happening even if I change the variables in my dataset.
Thanks!