Roofftconv cyclical effects methods

Dear all,
I’m writing a class for FFT convolution starting from RooFFTConv class.
The part I am struggling with is how it avoids cyclical effects in performing the convolution.
If I look here … tml#l00592
there are three methods “Extend”, “Flat” and “Mirror” to avoid cyclical effects in convolution.

While I quite understand what
Flat and Mirror do, the implementation of extend method seems obscure to me (and “Extend” is the default
Can someone explain in few words what this methods do?
The documentation says:
/// ‘Extend’ means is that the input p.d.f convolution observable range is widened to include the buffer range
but after extending it how is it filled?


The FFT convolution will not have cyclical effect if the pdf are going to zero at the edges of the range.
The “extend” option just extend the pdf range to a larger values than the actual observable range.
Mathematically the convolution will be always correct if you extend the range, the problem could be that you need more points to sample the functions.
At the end the obtained convoluted PDF will be always normalised in the observed range.

Best Regards