I am trying to implement this pdf
P [ reco ] = Int P[reco | true] * P [ true ] dtrue
for simplicity P [ true ] is a narrow guassian and P [ reco | true ] is a wide gaussian centered to true.
P [ true ] = Norm [ true | mu = 90E3, sigma = 1E3 ]
P [ reco | true ] = Norm [ reco | mu = true, sigma = 1E4 ]
here my code:
RooRealVar mreco("mreco", "m_{reco} (GeV)", 30E3, 120E3);
RooRealVar mtrue("mtrue", "m_{true} (GeV)", 30E3, 120E3);
RooRealVar true_width("true_width", "true width", 1E3, 0.001, 50E3);
RooGaussian true_dist("true_dist", "true", mtrue, RooConst(90E3), true_width);
RooRealVar resolution("resolution", "resolution", 1E4, 0.001, 100E3);
RooGaussian response("response", "response", mreco, mtrue, resolution);
RooProdPdf result("result", "result", true_dist, Conditional(response, mreco));
RooPlot* true_frame = mtrue.frame();
true_dist.plotOn(true_frame);
RooPlot* reco_frame = mreco.frame();
result.plotOn(reco_frame);
true_frame->Draw();
c2 = new TCanvas();
reco_frame->Draw();
I really don’t understand why the result is not centered at 90E3, but it is centered around 75E3