[Rivet] Displacing histograms

James Monk jmonk at hep.ucl.ac.uk
Mon Dec 10 16:13:17 GMT 2012


Thanks Andy,

As an addendum to that to help people who may find this thread in future, I'd point out that the correct usage is

	transformY(*destScatter2DPtr, YShifter(Nmean)); //(note passing by reference, not pointer)

cheers,

James

On 29 Nov 2012, at 16:41, Andy Buckley wrote:

> On 29/11/12 16:40, Andy Buckley wrote:
>> On 29/11/12 16:26, James Monk wrote:
>>> Hi everyone,
>>> 
>>> I'm implementing a Rivet analysis in which the final plots involve taking the ratio of two temporary histograms, before shifting the whole lot down by the average multiplicity for the run.  I can obviously go through point-by-point on the scatter plot and shift each one down (and in principle deal with the additional statistical error on the multiplicity, which will be very small), but I was wondering if anyone knows of a more elegant way of doing that.  It's a bit of an unusual case, so I'm not surprised there's no method to do that.
>> 
>> There's a nice way to do it in YODA :-) Well, niceish... it's still C++!
>> Maybe we should *really* get that released as soon as possible!
>> 
>> In Rivet-with-YODA it would be something like this. First, because
>> 
>> ---
>> struct XShifter {
>>    XShifter(double shift) : xshift(shift) {  }
>>    double operator()(double x) { return x - xshift; }
>> };
>> 
>> divide(tmp1, tmp2, destScatter2DPtr);
>> transformX(destScatter2DPtr, XShifter(Nmean));
>> ---
>> 
>> The XShifter struct (or class) is inelegant, but blame C++ for that.
>> Maybe the Boost lambda stuff would work, too. It's only necessary
>> because your Nmean is only known at the end of the run: a fixed offset
>> could be done with just a double -> double function.
>> 
>> In AIDA.... yep, completely by-hand DataPointSet mangling, I guess!
> 
> On re-reading, maybe you wanted a shift in y instead. I think you can
> probably guess the syntax for that ;)
> 
> Andy
> 
> -- 
> Dr Andy Buckley, SUPA Advanced Research Fellow
> Particle Physics Expt Group, University of Edinburgh
> 
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
> 



More information about the Rivet mailing list