Porting 5_3_X HI reco updates to 7_2_X

The HI RECO updates that were previously implemented in 5_3_X are re-implemented in 7_2_X.

The order in which destructors from static objects across linker boundaries (i.e. not in the same .o file) is unspecified. I'm betting that part of ROOT's internals were already destroyed before this static object's destructor was called. It then probably read an invalid pointer value and wrote into some random chunk of memory.