[Rivet] Transfer Functions

Andy Buckley andy.buckley at cern.ch
Tue Jul 26 16:52:18 BST 2016


On 26/07/16 10:52, Gavin Hesketh wrote:
> Hi,
> for an upcoming ATLAS analysis, I'd like to apply some transfer
> functions to the theory curves. These take the form of a simple scale
> factor + uncertainty to be applied bin-by-bin (they vary across bins).
> It would be possible to provide the data in two forms (with and without
> transfers applied), but I would like to apply these functions to the MC,
> rather than to the data.
>
> We will provide these transfers in HepData (with uncertainties), so I
> assume they could be loaded into the analysis routine as a histogram.
> Then run over some MC, and multiply together the resulting MC curves and
> the transfer function histograms.
>
> I just wondered if anything like this is already being done in some
> rivet routines, or if anyone would have some suggestions on the best way
> to code it up?

Hi Gavin,

I expect this can be done fairly nicely, and would be a good excuse to 
prototype a few mechanisms that we can then feed back into the Rivet or 
YODA cores -- particularly the histogram rescaling.

I assume that it's a rescaling on the final MC histogram rather than a 
per-fill reweighting? And that the scale factors will have the same 
binning as the observables?

What do you want to do with the uncertainty on the scale factor? Sample 
from a Gaussian with that width or (I guess) add it to the MC errors in 
quadrature? At the moment YODA Scatters can only have a single set of 
error bars, but I'm planning to extend that soon.

To get you started, I suggest loading the correction functions using the 
refData() function -- you can do this in the finalize() function rather 
than having to "store" it through the run. Then convert your histogram 
to a Scatter2D with mkScatter() and loop over the point number, 
resetting the scatter point values and errors, e.g. obs.point(i).setY( 
obs.point(i) * transfer.point(i) ). I'd put that logic into a function 
so you can call it on many histos... and if it proves more generally 
useful we could move it into the core library.

Is that enough? Let us know if & when you've got something 
(semi-)working, and we can solve concrete problems and maybe refine the 
implementation.

Andy

-- 
Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
Particle Physics Expt Group, University of Glasgow


More information about the Rivet mailing list