[Rivet] Rivet 2.2.0 PRojection Question

Stephen Jiggins stephen.jiggins at cern.ch
Mon Oct 19 09:46:35 BST 2015


Hi Andy & Authors,

Thank you for your reply Andy. I did speak to Chris Pollard, and said I would give a more detailed email regarding this issue. Your understanding of the problem is correct, so I'll proceed with writing a more detailed email, with the Rivet Routine and log files, after trying Rivet 2.4.0 (is this in an athena release of ATLAS yet?).

@Chris, apologies for not sending the email yet. I was pre-occupied with other work over the weekend. 

Kind Regards
Stephen Jiggins

________________________________________
From: Andy Buckley
Sent: 18 October 2015 22:22
To: Stephen Jiggins
Cc: Rivet
Subject: Re: Rivet 2.2.0 PRojection Question

Hi Stephen,  (CC Rivet developer list -- the best place for such reports)

If I understand correctly, you can run fine over your events if the
applyProjection line appears directly in your analysis' analyze()
method, but if you put it in a different method of that class and call
it indirectly, then that assert is triggered? That sounds very strange
indeed and is not something I've seen before...

Indeed, if your secondary method is small, there's a good chance that it
should be inlined into analyze() anyway. No idea what's going on,
sorry... but as always I think an upgrade to the latest (2.4.0) and
re-testing would be a good idea before we take it any further!

Andy



On 16/10/15 10:24, Stephen Jiggins wrote:
> Hi Andy,
>
> The following isn't urgent, so please do not worry about immediately
> answering, but for my sanity I have to ask.
>
> I have a question regarding projection applications in Rivet. I have
> observed very strange behaviour in Rivet that I believe is due to my
> ignorance, but wish to check. I have initialised a series of projections
> within the init() method of the rivet analysis, and been careful about
> projection chain caching. But the simple question is that when applying
> the projections in the analysis() stage, eg:
>
>                      const vector<DressedLepton>& leptons =
> applyProjection<DressedLeptons>(event, "LeptonFinder").dressedLeptons();
>
> I can run perfectly fine over a series of files. However when placing
> the projection within a member function of the rivet analysis class, and
> call the function in the same place, the code compiles and runs
> perfectly for thousands of events, and then finds an event which causes
> an assertion in FinalState.cc to trigger:
>
>                   assert(p.genParticle
> <https://rivet.hepforge.org/code/dev/a00302.html#a66996227bd503f024a1234a8567d9023>() == NULL || p.genParticle
> <https://rivet.hepforge.org/code/dev/a00302.html#a66996227bd503f024a1234a8567d9023>()->status() == 1);
>
> What is more confusing is that when I take the function and make it
> "inline", the same crash occurs. In essence, from moving a couple of
> projections out of a member
> function called in analyze() to explicitly within the analyze()
> function, the crash does not occur. Has this been observed before?
>
> Kind Regards
> Stephen Jiggins
>
>
>


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


More information about the Rivet mailing list