|
[Rivet] Rivet 2.2.0 PRojection QuestionAndy Buckley andy.buckley at cern.chSun 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 |