Page MenuHomeHEPForge

Fix initialisation problems in EvtPto3P and EvtBtoKD3P models
Closed, ResolvedPublic


The EvtPto3P general Dalitz plot model does not set the amplitude pointers correctly during the initialisation process. When the model builds the EvtPto3PAmpFactory it calls the processAmp function for each resonance amplitude defined in the decay file. This creates unique pointers for the amplitude and resonance pdfs, and near the end transfers ownership of these pointers to internal data members. However, the processAmp function needs to find a scale factor using the internal amplitude pointer that hasn't been set yet, returning zero amplitude and aborting the code. The fix is to use the non-internal pointer for the scaling function before the transfer of ownership occurs. This bug was probably introduced during the period when major modernisation changes were implemented, which changed the code logic order near the end of this function.

The EvtBtoKD3P model generates B -> K D modes (for CKM gamma), where the D decays according to the earlier EvtPto3P model, but requires a second D particle to be defined in the decay file in order to calculate the "suppressed" amplitude term. This second D (which is not in fact generated) reuses the first D by resetting the ID but keeps the same 4-momentum. However, this initialisation aborts since the EvtParticle::init(id, p4) function is expecting the id to match what the particle already contains. The fix is to first reset the id using EvtParticle::setId() before calling init(id, p4).

Event Timeline

jback triaged this task as Normal priority.Aug 5 2022, 9:53 PM
jback created this task.
jback created this object with visibility "Public (No Login Required)".
jback created this object with edit policy "Restricted Project (Project)".

Fixed in the master branch.