Problem in fitting

Dear Experts,

I am fitting a bmass. I am getting error as mentioned below.

Error: Can’t call RooDataSet::RooDataSet(“data”,“dataset with Bmass”,RooArgSet(Bmass,Mumumass,Triggers,Phimass,Kppt,Kmpt,Bcosalphabs2d,Blxysig,Kptrkdcasigbs,Kmtrkdcasigbs),Import(t1)) in current scope bmassphimumufit.c:23:
Possible candidates are…
(in RooDataSet)
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(void);
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(const char
name,const char* title,const RooArgSet& vars,const char* wgtVarName=0);
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(const char* name,const char* title,const RooArgSet& vars,const RooCmdArg& arg1,const RooCmdArg& arg2=RooCmdArg(),const RooCmdArg& arg3=RooCmdArg(),const RooCmdArg& arg4=RooCmdArg(),const RooCmdArg& arg5=RooCmdArg(),const RooCmdArg& arg6=RooCmdArg(),const RooCmdArg& arg7=RooCmdArg(),const RooCmdArg& arg8=RooCmdArg());
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(const char* name,const char* title,RooDataSet* data,const RooArgSet& vars,const char* cuts=0,const char* wgtVarName=0);
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(const char* name,const char* title,RooDataSet* data,const RooArgSet& vars,const RooFormulaVar& cutVar,const char* wgtVarName=0);
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(const char* name,const char* title,TTree* ntuple,const RooArgSet& vars,const char* cuts=0,const char* wgtVarName=0);
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(const char* name,const char* title,TTree* t,const RooArgSet& vars,const RooFormulaVar& cutVar,const char* wgtVarName=0);
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 public: RooDataSet RooDataSet::RooDataSet(RooDataSet const& other,const char* newname=0);
/home/deepak/root/lib/libRooFitCore.so -1:-1 0 protected: RooDataSet RooDataSet::RooDataSet(const char* name,const char* title,RooDataSet* ntuple,const RooArgSet& vars,const RooFormulaVar* cutVar,const char* cutRange,int nStart,int nStop,Bool_t copyCache,const char* wgtVarName=0);
(in RooAbsData)
(in RooPrintable)
(in RooDirItem)
*** Interpreter error recovered ***
Error: Symbol null is not defined in current scope :0:

Thanks,
Deepak

Hi,

My macro is pasted here.

{

gSystem->Load(“libRooFit”);
using namespace RooFit;

TFile *f = new TFile(“sel_BsToPhiMuMu_BCDEFG_data_s0.root”);
TTree t1 =(TTree)f->Get(“tree”);

int nentries_ = t1->GetEntries();
cout << "\n=> total entries in the data BsToPhiMuMu tree = " << nentries_ << endl;

RooRealVar Bmass(“Bmass”,“M(B_{s}^{0}) [GeV/c^{2}]”, 5.2, 5.6);//defines variable Bmass
RooRealVar Mumumass(“Mumumass”,“M^{#mu#mu}”, 0., 10.);
RooRealVar Triggers(“Triggers”,“HLT”, 0, 1);
RooRealVar Phimass(“Phimass”,“M^{#phi}”, 0., 2.);
RooRealVar Kppt(“Kppt”,"",0.,20);
RooRealVar Kmpt(“Kmpt”,"",0.,20);
RooRealVar Bcosalphabs2d(“Bcosalphabs2d”,"",0,1);
RooRealVar Blxysig(“Blxysig”,"",0,100);
RooRealVar Kptrkdcasigbs(“Kptrkdcasigbs”,"",0,50);
RooRealVar Kmtrkdcasigbs(“Kptrkdcasigbs”,"",0,50);

RooDataSet data(“data”,“dataset with Bmass”, RooArgSet(Bmass, Mumumass,Triggers,Phimass,Kppt,Kmpt,Bcosalphabs2d,Blxysig,Kptrkdcasigbs,Kmtrkd
casigbs), Import(*t1));

TCut c3 = “Triggers==1”;
TCut bm = “Bmass > 5.1 && Bmass < 5.6”;
TCut jpR = “Mumumass < 2.9 || Mumumass > 4.0”;
TCut phim = “Phimass > 1.01 && Phimass < 1.03”;
TCut kpt = “Kppt > 0.8 && Kmpt > 0.8”;
TCut bcos = “Bcosalphabs2d > 0.9994”;
TCut blxy = “Blxysig > 12”;
TCut trkdca = “(Kptrkdcasigbs > 2.0 && Kmtrkdcasigbs >2.0)”;

RooDataSet redData = (RooDataSet)data.reduce(c3 && bm && jpR && phim && kpt && bcos && blxy && trkdca);

RooRealVar mean(“mean”,“mean of the gaussians”, 5.367, 5.2, 5.6);
RooRealVar sigma(“sigma”,“sigma of the gaussian”, 0.015,0, 1.);

RooGaussian sig(“sig”,“Signal component”,Bmass,mean,sigma) ;

RooRealVar lambda(“lambda”,“slope”, -4.0, 4.0);//background for combinatorial
RooExponential bkgExpo(“bkgExpo”,“exponential PDF”, Bmass, lambda);

RooRealVar nsigG(“sigG”,“signal events”, 0, 1147);
RooRealVar nbkg(“nbkg”,“number of bkg events”, 0, 1147);

RooAddPdf model(“model”,"",RooArgSet(sig,bkgExpo),RooArgSet(nsigG,nbkg));
model.Print(“t”);

RooFitResult* fitres = model.fitTo(*redData, Extended(true), Save(true) );

RooPlot *xframe = Bmass.frame(Title(“B_{s}#rightarrow#mu^{+}#mu^{-} #Phi”),Bins(15) ); //50
redData->plotOn(xframe);
model.plotOn(xframe);

model.plotOn(xframe, Components(“sig”), LineStyle(kDashed), LineColor(kRed), FillColor(kGreen), FillStyle(3013), DrawOption(“F”) );
model.plotOn(xframe, Components(“bkgExpo”), LineStyle(kDotted), LineColor(kRed) );

TCanvas *c = new TCanvas(“c”,“c”, 600,600);
gPad->SetLeftMargin(0.15);
xframe->GetYaxis()->SetTitleOffset(1.7);
xframe->Draw();

TPaveText* paveText = new TPaveText(0.62,0.70,0.80,0.88,“NDC”);
paveText->SetBorderSize(0.0);
paveText->SetFillColor(kWhite);
paveText->SetFillStyle(0);
paveText->SetTextSize(0.02);
paveText->AddText(Form(“nsigG = %.0f #pm %.0f evts”, nsigG.getVal(), nsigG.getError()));

paveText->AddText(Form(“nbkg = %.0f #pm %.0f evts”, nbkg.getVal(), nbkg.getError()));
paveText->AddText(Form(“mean = %.5f #pm %.5f GeV”, mean.getVal(), mean.getError()));
paveText->AddText(Form(“sigma = %.5f #pm %.5f GeV”, sigma.getVal(), sigma.getError()));
c->Update();
}

Your two variables Kptrkdcasigbs and Kmtrkdcasigbs have the same name, so the second will overwrite the first, I think, in the RooArgSet (which can only contain unique elements, since it is a set).

Try to include your code with the proper surrounding tags to improve readability. See the following post:

Hi Experts,

It’s running with
RooDataSet redData = (RooDataSet)data.reduce(c3 && bm && jpR && phim && kpt && bcos && blxy );

But when I add trkdca

RooDataSet redData = (RooDataSet)data.reduce(c3 && bm && jpR && phim && kpt && bcos && blxy && trkdca);

It’s not running,giving error.

Thanks,
Deepak

You need to be more specific than “giving error”.