EvtGen is hosted by Hepforge, IPPP Durham

Opened 2 weeks ago

Last modified 11 days ago

#1 accepted defect

Updating Pythia Particle Properties faulty in R01-07-00

Reported by: Martin Ritter Owned by: jback
Priority: critical Milestone: R01-08-00
Keywords: Cc: martin.ritter@…, torben.ferber@…, florian.bernlochner@…


I was trying to use EvtGen R01-07-00 for Belle II and I found some problems with the synchronization of particle properties between EvtGen and Pythia which was introduced with the following commit:

commit 48a86cf7d8c45cf026beac84df6e204d6eb42b1d
Author: John Back <J.J.Back@…>
Date: Fri Apr 7 16:03:30 2017 +0100

Make sure Pythia8 uses the same particle properties as EvtGen.

Modified EvtGenExternal/EvtPythiaEngine to ensure that the EvtGen-based
instances of Pythia8 (for generic and alias decays) use the same
particle properties as defined by EvtGen, courtesy Patrick Robbe (LHCb).

I modified the evtgen code to provide some additional output (see attached output.patch). As you can see from the attached log output (evtgen_output.txt) this produces very weird results (with Pythia 8.215):

  1. The Pythia particle with id 0 (void) gets redefined ~160 times, probably because the particles are not known to Pythia.
  2. The assigned masses are not correct. For example in line 142 the rho0 is set to 1.023 GeV. This is due to the fact that the code uses EvtPDL::getMass() instead of EvtPDL::getMeanMass().

I was wondering if (1) is an effect of the Pythia version we use but I haven't seen anything in the Pythia Changelog or in the EvtGen README so maybe you know more.

For (2) I really believe this is a bug in the code.

Attachments (2)

output.patch (752 bytes) - added by guest 2 weeks ago.
Patch to add extra output to the particle property update
evtgen_output.txt (63.1 KB) - added by guest 2 weeks ago.
Output when running evtgen

Download all attachments as: .zip

Change History (8)

Changed 2 weeks ago by guest

Patch to add extra output to the particle property update

Changed 2 weeks ago by guest

Output when running evtgen

comment:1 Changed 2 weeks ago by jback

  • Cc martin.ritter@… torben.ferber@… florian.bernlochner@… added
  • Owner changed from somebody to jback
  • Reporter changed from guest to Martin Ritter
  • Status changed from new to assigned

comment:2 Changed 2 weeks ago by jback

  • Status changed from assigned to accepted

comment:3 Changed 2 weeks ago by jback

  • Milestone set to R01-08-00

comment:4 Changed 12 days ago by jback

I have updated the EvPythiaEngine? class to use the right particle masses in the master version of the repository. The update also avoids constantly redefining the "void" particle:


Do "git pull origin master" to get the changes, or the equivalent "git fetch" (retrieve but don't update) and "git merge" (update) commands.

Please let me know if this fixes the problems.

Last edited 12 days ago by jback (previous) (diff)

comment:5 Changed 11 days ago by guest

Thanks for the quick work. The changes seems to fix the issues explained in the ticket but I have some additional questions:

  1. Have I understood it correctly that the updates were not propagated to Pythia at all since the ParticleData? was copied and not modified in place? So R01-07-00 is not affected by the getMass() but as it is as it doesn't update the particle properties of Pythia anyway?
  2. So I added some debug output again and some of the updates are a bit weird for me, for example:
    EvtGen: Updating Pythia particle mass
       from: CMshower (94)
         to: W+copy (94)
        old: 8.03850000e+01
        new: 0.00000000e+00
    EvtGen: Updating Pythia particle width
       from: CMshower (94)
         to: W+copy (94)
        old: 2.08500000e+00
        new: 0.00000000e+00

(old = pythia original value, new = after update)
now I have no idea if the W+copy is actually used by Pythia and if this change affects anything but wouldn't it make sense to exclude the PDG codes 81-100 from this update procedure as they are "reserved for generator-specific pseudoparticles and concepts" (pdg2017)?

comment:6 Changed 11 days ago by jback

The particle properties were not updated since only copies were affected not the original data. With the updated code in EvtPythiaEngine::updateParticleLists(), Pythia automatically began to list all of the particles that changed during initialisation, which was not happening before. The "Init:showChangedParticleData = off" was then added to suppress this verbose output.

The code has been changed to check the PDG integer codes before updating the particle properties, ignoring void (0), nuPrime_tau (18) and pseudoparticles (81-100):


Last edited 11 days ago by jback (previous) (diff)
Note: See TracTickets for help on using tickets.