There has long been a problem with HepMC and root I/O. Basically, the use of back pointers in GenParticle and GenVertex make it difficult for root to use any advanced I/O features.
This is also an issue for I/O efficiency. Root I/O would like to be able work in pieces. At present, a HepMC object must be dealt with in its entirety.
The LCG experiments all have their own solutions. However, a problem remains for other users.
In addition, the Geant5 effort has made a strong request for changes to HepMC that will allow it to be used naturally with root. For instance, is natural in some cases for root to be able to provide just a list of particles without the rest of the event information. (We make no judgements about how useful this might be.)
The root people want to store a GenEvent as a header, a container of vertices, and a container of particles. This cannot be done with the current HepMC member data.