56 const G4double yl = ((1.-xl) + std::sqrt((1-xl)*(1-xl)+4*beta*beta))/2.;
58 const G4double xu = 1. - (yl - std::sqrt(yl*yl-4.*beta*beta))/2.;
62 return cib*(1.-y)*(1.+((1.-x)*(1.-x)))/((x*x)*(x+y-1.)) +
63 csdp*(1.-x)*((x+y-1.)*(x+y-1.)) +
64 csdm*(1.-x)*((1.-y)*(1.-y)) +
66 cig*(1.-y)*(1.-x+(x*x)/(x+y-1.))/x;
84 if (theParentName ==
"pi+") {
91 }
else if (theParentName ==
"pi-") {
101 G4cout <<
"G4RadiativePionDecayChannel:: constructor :";
102 G4cout <<
" parent particle is not charged pion but ";
119 if (
this != &right) {
149 G4cout <<
"G4PionRadiativeDecayChannel::DecayIt ";
161 const G4int N_DAUGHTER=3;
164 for (
G4int index=0; index<N_DAUGHTER; index++){
166 sumofdaughtermass += daughtermass[index];
177 delete parentparticle;
181 const size_t MAX_LOOP=1000;
183 for (
size_t loop_counter1=0; loop_counter1<MAX_LOOP; ++loop_counter1){
184 for (
size_t loop_counter2=0; loop_counter2<MAX_LOOP; ++loop_counter2){
197 G4double cthetaGE = (y*(x-2.)+2.*(1.-x+beta*beta)) /
198 (x*std::sqrt(y*y-4.*beta*beta));
209 if (E < EMASS) E = EMASS;
214 daughtermomentum[0] = std::sqrt(E*E - EMASS*EMASS);
217 G4double sthetaE = std::sqrt(1.-cthetaE*cthetaE);
236 daughtermomentum[1] = G;
238 G4double sthetaGE = std::sqrt(1.-cthetaGE*cthetaGE);
246 px = sthetaGE*cphiGE;
247 py = sthetaGE*sphiGE;
262 G4cout <<
"G4PionRadiativeDecayChannel::DecayIt ";
263 G4cout <<
" create decay products in rest frame " <<
G4endl;
void CheckAndFillDaughters()
void ClearDaughtersName()
void SetBR(G4double value)
G4int PushProducts(G4DynamicParticle *aParticle)
G4ParticleDefinition * G4MT_parent
G4PionRadiativeDecayChannel & operator=(const G4PionRadiativeDecayChannel &)
G4ParticleDefinition ** G4MT_daughters
G4PionRadiativeDecayChannel()
static constexpr double rad
virtual ~G4PionRadiativeDecayChannel()
static constexpr double twopi
G4GLOB_DLL std::ostream G4cout
void SetNumberOfDaughters(G4int value)
Hep3Vector & rotateUz(const Hep3Vector &)
G4int GetVerboseLevel() const
G4double GetPDGMass() const
virtual G4DecayProducts * DecayIt(G4double)
void SetParent(const G4ParticleDefinition *particle_type)
void SetDaughter(G4int anIndex, const G4ParticleDefinition *particle_type)
static constexpr double MeV
G4String ** daughters_name
void CheckAndFillParent()