Hi everybody,
I am trying to fit a shifted RooAbsPdf but it seems I only get useless results. I do not see what I could be doing wrong. My code looks like this:
RooRealVar mass("Mass","Missing Mass",0,2000);
RooPlot * Massframe = mass.frame(Title(TString("Missing Mass")));
TFile * g=TFile::Open("Test.root");
TString* HistPost = new TString("FittedTrack_BeamEnergyVsMissingMassKaonPlusBE");
TH2 * HistSigStar2 = (TH2*) g->FindObjectAny(*HistPost);
TH1 * HistSigStar = (TH1*) HistSigStar2->ProjectionX(TString("SigStar_"),1,119)->Rebin(5,0);
RooRealVar shiftSigStar("shiftSigStar","Shift of SigStar",0,-10,10);
RooFormulaVar MassShifted("MassShift","Mass + shiftSigStar",RooArgList(mass,shiftSigStar));
RooDataHist SimSigStar("SimSigStar","Simulation of SigStar",mass,Import(*(HistSigStar)));
RooHistPdf * CurveSigStar = new RooHistPdf("CurveSigStar","Kurve SigStar",MassShifted,mass,SimSigStar);
RooHistPdf * CurveSigStarNorm = new RooHistPdf("CurveSigStar","Kurve SigStar",mass,SimSigStar);
RooRealVar testVar("TV","TV",10,0,1000);
RooAddPdf test("t","t",RooArgList(*CurveSigStar),RooArgList(testVar));
RooDataSet * ToyData = CurveSigStarNorm->generate(mass,10000);
ToyData->plotOn(Massframe);
test.fitTo(*ToyData);
CurveSigStar->fitTo(*ToyData,Range(1000,1600));
std::cout<<"Norm: "<<CurveSigStar->getNorm()<<std::endl;
CurveSigStar->plotOn(Massframe);
CurveSigStar->paramOn(Massframe);
test.plotOn(Massframe, LineColor(kGreen));
CurveSigStarNorm->plotOn(Massframe, LineColor(kRed));
CurveSigStarNorm->paramOn(Massframe);
Massframe->Draw();
The used data is here: https://uni-bonn.sciebo.de/s/C9DzcQXSDkix7Vz
Maybe someone can tell me what’s wrong.
Thanks,
Emil