[Rivet] Bug in Rivet?

Dag Gillberg dag.gillberg at cern.ch
Tue Apr 12 14:51:46 BST 2016


Hi Andy,

Thanks!
I saw in some more tests that not only Lambda particles are affected, but
also the B-mesons.
This can actually slightly have affected our old Rivet routine (for the
Higgs differential combination) since we might claissify electrons from a
semileptonic heavy flavor hadron decay as a non-hadronic..

I'm currently using Jim's setup, to run Rivet within AnalysisBase (i.e.
RootCore).
Hmm.. not sure how this works, but I see:

url = $ROOTCOREBIN/../HEPSoftware/Rivet-2.4.1.tar.gz

So I guess this is being downloaded and compiled somehow.

Now, regarding the code.
We have two open questions, where we perhaps can pick your brain :)

First, note that this is not a pure fiducial/differential measurement.
We are using kinematic information, but are allowed to "cheat" and use
quarks etc.

1. We are supposed to classify
  gg → ZH
vs
  qq → ZH
Which, at NLO, I don't think is possible...

gu → ZHu

could be either of the above. Any ideas here?
Is this split simply impossible with NLO MC?

2. Regarding the jets:
We want to take all stable particles, remove anything from the Higgs (very
easy with Rivet!).
Also ignore particles from leptonic Z and W decays (leptons, e, µ, and FSR
γ)

Is there a standard way to do this?

I suppose we can just do exaclty what we did for the Higgs routine:


https://svnweb.cern.ch/trac/atlasoff/browser/PhysicsAnalysis/HiggsPhys/HSG1/Analysis/trunk/GeneralTools/HggUnfoldingPaper2013/Rivet/Combination/HiggsDiffXSecCombination.cc#L110

which btw use the projections :)

Cheers,
Dag


On Tue, Apr 12, 2016 at 4:04 AM, Andy Buckley <andy.buckley at cern.ch> wrote:

> On 12/04/16 03:20, Dag Gillberg wrote:
>
>> Hi Andy,
>>
>> I'm writing Rivet code (yay! fun!).
>> And I want to build jets out of stable particles that are hadrons or
>> from hadron decay.
>> So I do:
>>      if ( PID::isHadron(p.pdgId()) || p.fromHadron() )
>>
>> Now, as a cross check, I printed out particles that failed this, and I
>> see a ton of strange baryons fail:
>> Warning: found unexpected particle!
>>    (pT,eta,phi,m) = (0.9,-2.0,2.0,1), ID = 3122
>> Warning: found unexpected particle!
>>    (pT,eta,phi,m) = (0.5,-4.3,1.9,1), ID = -3122
>> Warning: found unexpected particle!
>>    (pT,eta,phi,m) = (0.9,-2.2,3.9,1), ID = 3122
>>
>> These are Lambda particles.
>> They all fail this line in isBaryon:
>>
>> if (_digit(nq2,pid) < _digit(nq3,pid)) return false;
>>
>> since the second digit (1) is smaller than the third (2)
>> ( not sure what this condition is based on though..)
>> But a Lambda is certainly a Baryon..
>> So this must be a bug, right?
>>
>
>
> Hi Dag,
>
> Yes, you're right: I had tried to tighten up my implementation of PID
> checks in the MCUtils package, following the PDG scheme definition, but
> missed that for baryons there are exceptions to the ordering.
>
> I fixed this a while ago in MCUtils but had forgotten to sync the fixes
> into Rivet. I'm not sure how it managed to not show up in our release
> validation -- we should look into that.
>
> Anyway I've done the sync now, and the fixed header file (from
> include/Rivet/Tools) is attached -- are you able to patch, or do you rely
> on a pre-built copy of Rivet? Since it's a bug with real physics
> implications, I'm tempted to get a patch release out asap.
>
> Thanks for the report!
>
> Now a couple of unrelated comments on your code snippet ;-)
>
>        Particles hadrons_notFromHiggs;
>>        FourMomentum sum(0,0,0,0);
>>        for ( const GenParticle *ptcl :
>> Rivet::particles(event.genEvent()) ) {
>>          Particle p(ptcl);
>>          if (!p.isStable()) continue;
>>
>
> Since you only want stable particles, rather than loop over HepMC
> GenParticles, convert them to Rivet Particles, and ignore the non-stable
> ones the "Rivet way" is to set up a FinalState projection:
>
> // In init()
> addProjection(FinalState(), "FS")
>
> // In apply()
> const Particles& particles = applyProjection<FinalState>(event,
> "FS").particles();
> for (const Particle& p : particles) {
>   ...
>
> I am trying to move some core intelligence out of the projections and into
> standalone functions (or maybe Event methods) to make it easier to do many
> things without projections if wanted, though -- the main benefit of
> projections is automatic caching, but that's not always the most important
> thing.
>
> Cheers,
> Andy
>
> --
> Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
> Particle Physics Expt Group, University of Glasgow
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.hepforge.org/lists-archive/rivet/attachments/20160412/4fcad349/attachment.html>


More information about the Rivet mailing list