Draft: Attempt to make EntryLayerTool(MT)::registerParticle() method more robust (ATLASSIM-6425)
By tweaking how the {{GeoIDSvc::inside}} method works, it was possible to recover most of the entries in the MuonEntryLayer TrackRecordCollection. The issue is that the ISFParticles
returned to ISF by Geant4 after the Calorimeter simulation in ATLFAST3 jobs are often classified as being outside the calorimeter envelope and inside the muon system envelope by the {{GeoIDSvc}} as the ISF and Geant4 envelopes do not exactly line up in the endcap regions.
The {{GeoIDSvc::inside}} method creates two positions offset from the current position of the {{ISFParticle}} and uses those too assess if the {{ISFParticle}} is inside, outside or on the surface of the envelope corresponding to the geoID provided in the arguments.
The {{EntryLayerTool(MT)}} relies on the {{ISFParticles}} being classified as being on the surface of one or more of these envelopes to figure out which entry layer they lie on:
https://gitlab.cern.ch/atlas/athena/-/blob/master/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerToolMT.cxx#L75-86
By making the offset of these two positions configurable:
https://gitlab.cern.ch/atlas/athena/-/blob/master/Simulation/ISF/ISF_Core/ISF_Services/src/GeoIDSvc.cxx#L271-272
we can increase the separation when needed making it more likely that the ISFParticle will be classified as being on the surface of the envelopes.
Leaving the changes as draft for now as I need to tidy up the code a bit, but I think it's a reasonable solution. Comments welcome. This should not alter the FullSim output, but will run the CI now as a cross-check.