Dear RooFit users and experts,

I am scanning an invariant mass spectrum using a background+signal model. I would like to introduce a nuisance parameter modelling the amount of *spurious signal* events induced by an imperfect background model. Assuming the spurious signal is equally present across the entire spectrum, I could construct my model as follows:

```
RooWorkspace* wksp = new RooWorkspace("wksp")
//The background model
wksp->factory("Exponential::bkgModel(x[0.,10.],k[-15.,-100.,0.])")
//The signal model
wksp->factory("BreitWigner::sigModel(x,m[0.5,0.,10.],w[0.1,0.0,10])");
//The gaussian constraint on spurSigSize
wksp->factory("Gaussian::ssConstraint(spurSigSize[0.,-1000.,1000.],0.,10.)");
//The constrained bkg+sig model
wksp->factory("PROD::bkgPlusSigModel(SUM::freeModel(bkgN[500.,0.,1000.]*bkgModel, sum::sigSize(sigN[0.,-1000,1000],spurSigSize)*sigModel),ssConstraint)");
```

As I understand it, the factory interface will interpret the two numbers `0,10`

in the Gaussian constructor as `RooConst`

objects, and this indeed works for me. Now, my question is: what if the constraint on `spurSigSize`

is tighter at certain signal pole masses? Then the width of the constraint gaussian should be variable:

```
wksp->factory("Gaussian::ssConstraint(spurSigSize[0.,-1000.,1000.],0.,spurSigSpread[10,0,20])");
```

So I could change the constraint at a whim using `wksp->var("spurSigSpread")->setVal(15)`

.

But will RooFit still interpret the last argument as a `RooConst`

? If not, is there some other way to implement a variable constraint?

The only alternative I see is to create a new constraint pdf (and hence a new background+signal model) for each pole mass, but this seems rather tedious, especially when scanning a large range of signal hypotheses.