HEPEVT_Wrapper should not use global HEPEVT struct pointer
A core principle of object-oriented programming is that if I can make several instances of a class (because the class is not a singleton) the instances should behave independently from each other. This is violated for the HEPEVT_Wrapper, because all HEPEVT_Wrapper instances use the same external pointer to the HEPEVT struct.
The HEPEVT_Wrapper should be a normal class with a single data field, which is a pointer to the HEPEVT struct. Then, several HEPEVT_Wrappers could exist at the same time in the program, pointing to different HEPEVT structs.