|
[Rivet] hopefully quick Rivet assertion questionCaterina Doglioni caterina.doglioni at cern.chWed Jan 8 12:46:33 GMT 2014
Hi Andy, sorry for the (not-too) holiday-related delay, I'm back to this now. Turns out my previous values were those of the previous event (apologies!). So I've picked up a couple more: phi j1:6.11223 phi j2:2.50349 phi j3:4.45546 python: /afs/cern.ch/user/d/doglioni/Work/ThreeJet_Rivet2/local/include/Rivet/Math/MathUtils.hh:419: double Rivet::_mapAngleM2PITo2Pi(double): Assertion `rtn >= -TWOPI && rtn <= TWOPI' failed. then on another run: phi j1:5.4923 phi j2:1.73499 phi j3:3.35263 python: /afs/cern.ch/user/d/doglioni/Work/ThreeJet_Rivet2/local/include/Rivet/Math/MathUtils.hh:419: double Rivet::_mapAngleM2PITo2Pi(double): Assertion `rtn >= -TWOPI && rtn <= TWOPI' failed. Aborted None of the two give any problem when plugged into your small .cc code. I have put the hepmc dump of the events containing the latter one in my lxplus public (I can probably find out how to add an event counter if that helps...): ~doglioni/hepmc.events I'll now try to recompile rivet without debug symbols (and cross-check the results with your implementation). Thanks! Caterina On 12/10/2013 11:46 AM, Andy Buckley wrote: > On 09/12/13 13:47, Caterina Doglioni wrote: >> Hi Andy, >> >> I have a possibly strange thing happening to a Rivet code that I'm using >> (Cigdem in cc) - if it's a bug I'll chase it up through the official >> channel, but if this is not the case and I'm doing something wrong, >> emailing just you will spare my silly error being exposed to a wider >> audience :). Some snippets: >> >> leadjets[0] and [1] are 4-momenta that I get from: >> >> const Jets jets = applyProjection<JetAlg>(event, "Jets").jetsByPt(100*GeV); >> >> out of a Pythia8+Sacrifice jetty final state. However, sometimes (e.g. >> after 300 events in one of the runs) one of the following lines: >> >> delta_phi[j12] = Rivet::deltaPhi(leadjets[0], leadjets[1]); >> delta_phi[j13] = Rivet::deltaPhi(leadjets[1], leadjets[3]); >> delta_phi[j23] = Rivet::deltaPhi(leadjets[2], leadjets[3]); >> >> crashes my entire code with: >> >> python: >> /afs/cern.ch/user/d/doglioni/Work/ThreeJet_Rivet2/local/include/Rivet/Math/MathUtils.hh:419: >> double Rivet::_mapAngleM2PITo2Pi(double): Assertion `rtn >= -TWOPI && >> rtn <= TWOPI' failed. >> Aborted (core dumped) >> >> I've checked that leadjets[0] and [1] are sane, and that their phi value >> is from 0 to 2pi, but I haven't managed to track down where things go >> wrong because this is unfortunately not always happening at the same >> place! One instance of incriminated jets is here: >> >> phi j1:0.387629 >> phi j2:3.61709 >> phi j3:1.82318 >> python: >> /afs/cern.ch/user/d/doglioni/Work/ThreeJet_Rivet2/local/include/Rivet/Math/MathUtils.hh:419: >> double Rivet::_mapAngleM2PITo2Pi(double): Assertion `rtn >= -TWOPI && >> rtn <= TWOPI' failed. >> >> If you can spot the problem without effort from your side I'll be happy >> to hear it - but let me know if you prefer this to go into official >> channels. > > Hi Caterina, Cigdem... and I've CC'd the Rivet list, > > That is very strange. a) I thought that we had already knocked all the > wrinkles out of those deltaPhi asserts, and b) those phi values are > already within the -2pi..2pi range and so nothing should happen at all! > The relevant code is this: > > https://rivet.hepforge.org/trac/browser/include/Rivet/Math/MathUtils.hh#L412 > > and I implemented a tiny test program (attached) to run the same logic > and assert on the values you supplied (TWOPI = 2*M_PI in > https://rivet.hepforge.org/trac/browser/include/Rivet/Math/MathHeader.hh#L50). > Unsurprisingly it's fine: > > andy at duality:~/tmp/testfmod$ g++ testfmod.cc -o testfmod > andy at duality:~/tmp/testfmod$ ./testfmod > 0.387629 -> 0.387629 = 0.123386*PI > 3.61709 -> 3.61709 = 1.15136*PI > 1.82318 -> 1.82318 = 0.580336*PI > > Does anyone else know what might be going on here? Do you know which > specific phi value is causing the trouble, Cate? If you could put the > analysis code and a HepMC dump of the events (300 events in ASCII is not > enormous) somewhere ~public, e.g. your AFS public dir then I can look in > more detail. > > A workaround for now is to add CPPFLAGS=-DNDEBUG to your configure or > make command line before building Rivet (you are using a private build, > yes?). This will disable the assert. I actually thought that the asserts > were only active when -g was used, but it turns out that that only > controls the debug symbols and that assert disabling requires the NDEBUG > #define, cf. > http://stackoverflow.com/questions/5354314/how-to-completely-disable-assertion > > Cheers, > Andy >
More information about the Rivet mailing list |