Hi folks,
We are trying to incorporate shapevarying nuisance parameters into a model that ultimately gets used in a profile likelihood ratio (PLR) analysis of data with 2 observable dimensions. As is usually the case, our 2D PDF histogram templates are created using somewhat CPUintensive Monte Carlo runs by varying the shape parameter of interest and filling 2D histograms in our observables.
We have experimented with RooMomentMorph quite a lot here, and at the moment its drawback is its speed: when used in our PLR machinery (actually based on this) it takes about ~60 seconds for a toy MC experiment to be generated and subsequently fit compared to an identical model with no shape parameters taking ~0.1 seconds for the same evaluation.
@jnikoley and myself have explored a speed up which is demonstrated in the attached macro which uses Gaussians as example templates. This method uses the MomentMorph machinery to fill a 3D RooHistPdf, where the third dimension is the shape variable (visualized in the attached ISO plot). This has worked in small tests like the attached, but when used in our full physics model we see many fits that fail to converge (about 30%). We suspect this is due to the binned nature of the NLL shown in the attached plot and the difficulty a derivativebased minimizer like Migrad would have with this (we’ve not had amazing success experimenting with other minimizing algorithms thus far). So this leads to a few questions for RooFit experts:

Is there a way to tell the minimizer that it should take very large, perhaps even constant, steps in this parameter throughout its process?

Is the RooMomentMorph class the current preferred method of handling shape varying parameters? It appears classes like RooIntegralMorph or HistFactory shapeVars have had more speed improvements included and may be able to handle this case. (we are not LHCbased, by the way)
gauss_example.C (7.6 KB)