Add new ZeroLifetimePositioner Service
The `ZeroLifetimePositioner` works around the case where a neutral particle oscillates into its anti-particle in one `GenVertex` then immediately decays in a second `GenVertex` at the same position and time. This is currently a problem seen when B0/B0bar (511/-511) particles with pre-defined oscillations and decays are fed into Geant4, which cannot currently handle the concept of a zero-lifetime particle. As Geant4 does not implement any processes for these particles other than the pre-defined decays currently and the particles are neutral, it is safe to shift the point at which the particle oscillates into its anti-particle back along the (straight-line) trajectory a bit. For simplicity halfway between the production point and the oscillation/decay point has been used. The decay position is left unchanged. With this change Geant4 then successfully simulates the decay in the required position. After simulation is complete the `ZeroLifetimePositioner` can then be used to move the oscillation vertex back to the decay vertex position. Former-commit-id: 3abe0a79af1d016dc1776952305ff54786a9d756
Showing
- Simulation/BeamEffects/python/BeamEffectsConfig.py 5 additions, 0 deletionsSimulation/BeamEffects/python/BeamEffectsConfig.py
- Simulation/BeamEffects/python/BeamEffectsConfigDb.py 1 addition, 0 deletionsSimulation/BeamEffects/python/BeamEffectsConfigDb.py
- Simulation/BeamEffects/src/ZeroLifetimePositioner.cxx 120 additions, 0 deletionsSimulation/BeamEffects/src/ZeroLifetimePositioner.cxx
- Simulation/BeamEffects/src/ZeroLifetimePositioner.h 50 additions, 0 deletionsSimulation/BeamEffects/src/ZeroLifetimePositioner.h
- Simulation/BeamEffects/src/components/BeamEffects_entries.cxx 2 additions, 0 deletions...lation/BeamEffects/src/components/BeamEffects_entries.cxx
- Simulation/Interfaces/HepMC_Interfaces/HepMC_Interfaces/IZeroLifetimePatcher.h 45 additions, 0 deletions.../HepMC_Interfaces/HepMC_Interfaces/IZeroLifetimePatcher.h
Please register or sign in to comment