Skip to content

Update master to use HepMcParticleLink_p2 by default

The changes in this merge request migrate Athena to use the new transient HepMcParticleLink version and write out the HepMcParticleLink_p2 version by default.

There was a weakness in old HepMcParticleLink that it could only point to one McEventCollection. Hard-scatter and pile-up HepMC::GenEvent objects were all stored in the same McEventCollection. The HepMcParticleLink attempted to identify a specfic HepMC::GenParticle using the barcode and event number. Due to the fact that the hard-scatter and pile-up events are from different samples it was perfectly possible for a pile-up HepMC::GenEvent to have the same event number as the hard-scatter HepMC::GenEvent. In such cases HepMcParticleLink would loop through the HepMC::GenEvent objects in the McEventCollection and link to first the HepMC::GenParticle with the matching barcode that it found, leading to incorrect links. Not much of an issue for standard production without pile-up truth, but crippling if pile-up truth was being used as the input for Truth-seeded tracking... The solution is to have one McEventCollection per input dataset (i.e. one for each of the hard-scatter, low pT minbias, high pT minbias etc.). In standard production everything looks the same, but when pile-up truth is being saved then we would have three McEventCollections typically. The new HepMcParticleLink constructor now takes an optional argument to point it to the correct McEventCollection.

This merge request simply updates the default persistent version written out, but does not update the transient HepMcParticleLink code to enable it to point at multiple McEventCollections. This will be done in a separate merge request, so that any differences in output can be seen more clearly.

The output root files are not directly comparable due to the persistent version changes, but no change in sim/digi/reco output is expected.

Summary talk from SPOT#8 here:

These changes are based on

Merge request reports