[Rivet] Rivet 2.2.0 PRojection Question

Andy Buckley andy.buckley at cern.ch
Sun Oct 18 22:22:21 BST 2015


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