50const G4double xl = 2. * 0.1 * MeV / 139.57 * MeV;
51const G4double yl = ((1. - xl) + std::sqrt((1 - xl) * (1 - xl) + 4 * beta * beta)) / 2.;
53const G4double xu = 1. - (yl - std::sqrt(yl * yl - 4. * beta * beta)) / 2.;
58 return cib * (1. - y) * (1. + ((1. - x) * (1. - x))) / ((x * x) * (x + y - 1.))
59 + csdp * (1. - x) * ((x + y - 1.) * (x + y - 1.)) + csdm * (1. - x) * ((1. - y) * (1. - y))
60 + cif * (x - 1.) * (1. - y) / x + cig * (1. - y) * (1. - x + (x * x) / (x + y - 1.)) / x;
71 if (theParentName ==
"pi+") {
79 else if (theParentName ==
"pi-") {
90 G4cout <<
"G4RadiativePionDecayChannel::G4PionRadiativeDecayChannel()" <<
G4endl;
91 G4cout <<
"Parent particle is not charged pion: ";
101 if (
this != &right) {
141 const G4int N_DAUGHTER = 3;
144 for (
G4int index = 0; index < N_DAUGHTER; ++index) {
156 delete parentparticle;
160 const std::size_t MAX_LOOP = 1000;
162 for (std::size_t loop_counter1 = 0; loop_counter1 < MAX_LOOP; ++loop_counter1) {
163 for (std::size_t loop_counter2 = 0; loop_counter2 < MAX_LOOP; ++loop_counter2) {
166 if (x + y > 1.)
break;
175 (y * (x - 2.) + 2. * (1. - x + beta * beta)) / (x * std::sqrt(y * y - 4. * beta * beta));
180 if (E < EMASS) E = EMASS;
185 daughtermomentum[0] = std::sqrt(E * E - EMASS * EMASS);
188 G4double sthetaE = std::sqrt(1. - cthetaE * cthetaE);
202 auto daughterparticle0 =
205 products->PushProducts(daughterparticle0);
207 daughtermomentum[1] = G;
209 G4double sthetaGE = std::sqrt(1. - cthetaGE * cthetaGE);
217 px = sthetaGE * cphiGE;
218 py = sthetaGE * sphiGE;
225 auto daughterparticle1 =
228 products->PushProducts(daughterparticle1);
233 G4cout <<
"G4PionRadiativeDecayChannel::DecayIt() -";
234 G4cout <<
" create decay products in rest frame " <<
G4endl;
235 products->DumpInfo();
G4GLOB_DLL std::ostream G4cout
Hep3Vector & rotateUz(const Hep3Vector &)
G4double GetPDGMass() const
G4PionRadiativeDecayChannel()=default
G4DecayProducts * DecayIt(G4double) override
G4PionRadiativeDecayChannel & operator=(const G4PionRadiativeDecayChannel &)
G4ParticleDefinition ** G4MT_daughters
void CheckAndFillParent()
void SetBR(G4double value)
G4String ** daughters_name
G4int GetVerboseLevel() const
void SetNumberOfDaughters(G4int value)
G4ParticleDefinition * G4MT_parent
void CheckAndFillDaughters()
void SetDaughter(G4int anIndex, const G4ParticleDefinition *particle_type)
void ClearDaughtersName()
void SetParent(const G4ParticleDefinition *particle_type)