Problem 1820

Summary: Parent particle of decay created with PDG-mass instead of dynamic mass => bad boost after decay
Product: Geant4 Reporter: o.freyermuth
Component: processes/decayAssignee: kurasige
Status: RESOLVED FIXED    
Severity: normal CC: kurasige
Priority: P5    
Version: 10.2   
Hardware: All   
OS: All   
Attachments: Patch to two-body and three-body decay case of G4PhaseSpaceDecayChannel to use dynamical mass

Description o.freyermuth 2016-01-26 12:05:17 CET
Created attachment 379 [details]
Patch to two-body and three-body decay case of G4PhaseSpaceDecayChannel to use dynamical mass

Dear Geant-experts, 

we found that if a particle (e.g. a meson) decays via G4PhaseSpaceDecayChannel (two-body, three-body, many-body), the LorentzVectors of the decayees do not sum up to the LorentzVectors of the initial particle, but are off, effectively violating energy conservation. 

This problem happens if the dynamical mass of the particle is different from the exact PDG-mass. 

The cause: 
G4PhaseSpaceDecayChannel creates the G4DecayProducts using a G4DynamicParticle with the exact PDG mass (a copy from G4MT_parent for the channel). 

Then later, in G4Products::Boost(G4double, const G4ThreeVector&), the momentum is calculated from "theParentParticle->GetMass()" which is now the exact PDG-mass instead of the dynamical mass of the original particle, thus boosting into the wrong system. 

I attach a very simple patch which fixes this for TwoBody and ThreeBody decays, just setting the mass of the G4DynamicParticle parent to the correct parent mass. I believe the same fix should be applicable to the ManyBody decay case. 

After applying this patch, the LorentzVectors of the decayees add up correctly to the initial mother particle again for two and three body decay cases. 
The patch applies cleanly to 4.10.1, and with small hunks to 4.10.2. 


Since my last bug report was immediately closed with a comment that "bug reports by anonymized guys are not supported", I would like to explicitly identify myself, in the hope it helps in the bugfixing: 
Oliver Freyermuth, Physical Institute of the University of Bonn, BGO-OD experiment (doing photoproduction of mesons). 


Please let me know if you need further information. 

Cheers and thanks, 
  Oliver
Comment 1 kurasige 2016-01-27 08:54:12 CET
Hi,

Thank you very much for reporting the bug.

As you pointed out, parent should be created with the dynamical mass.
G4DynamicParticle * parentparticle
= new G4DynamicParticle( G4MT_parent, dummy, 0.0, parentmass);
(in G4PhaseSpaceDecayChannel.cc)

I'll fix it soon. (in particles-V10-02-05 tag)

             Hisaya
Comment 2 o.freyermuth 2016-01-28 11:39:47 CET
Dear Hisaya, 

thanks a lot for the quick fix. 

> I'll fix it soon. (in particles-V10-02-05 tag)
Does this mean it will also be part of the next patch-release for 10.02? 

This fix is important for our usecase, so it would be good to have it applied before the next major release. 

Thanks again and cheers, 
Oliver