68 parent_name(0), daughters_name(0),
83 :kinematics_name(aName),
86 parent_name(0), daughters_name(0),
103 G4int theNumberOfDaughters,
108 :kinematics_name(aName),
110 numberOfDaughters(theNumberOfDaughters),
111 parent_name(0), daughters_name(0),
174 if (
this != &right) {
229 G4cout <<
"G4VDecayChannel::ClearDaughtersName "
268 G4cout <<
"G4VDecayChannel::SetDaughter: "
269 <<
"Number of daughters is not defined" <<
G4endl;
288 G4cout <<
"G4VDecayChannel::SetDaughter"
289 <<
"index out of range " << anIndex <<
G4endl;
301 G4cout <<
"G4VDecayChannel::SetDaughter[" << anIndex <<
"] :";
334 G4cout <<
"G4VDecayChannel::FillDaughters "
336 <<
"numberOfDaughters is not defined yet";
342 "Can not fill daughters: numberOfDaughters is not defined yet");
355 G4cout <<
"G4VDecayChannel::FillDaughters "
357 << index <<
"-th daughter is not defined yet" <<
G4endl;
363 "Can not fill daughters: name of a daughter is not defined yet");
371 G4cout <<
"G4VDecayChannel::FillDaughters "
374 <<
" is not defined !!" <<
G4endl;
375 G4cout <<
" The BR of this decay mode is set to zero " <<
G4endl;
394 (sumofdaughtermass > parentmass + 5*widthMass) ){
398 G4cout <<
"G4VDecayChannel::FillDaughters "
400 <<
" Energy/Momentum conserevation breaks " <<
G4endl;
403 <<
" mass:" << parentmass/
GeV <<
"[GeV/c/c]" <<
G4endl;
422 G4cout <<
"G4VDecayChannel::FillParent "
423 <<
": parent name is not defined !!" <<
G4endl;
429 "Can not fill parent: parent name is not defined yet");
438 G4cout <<
"G4VDecayChannel::FillParent "
444 "Can not fill parent: parent does not exist");
469 const G4int MiniSpin = std::abs (D1iSpin - D2iSpin);
470 const G4int MaxiSpin = D1iSpin + D2iSpin;
471 const G4int lMax = (PiSpin+D1iSpin+D2iSpin)/2;
475 G4cout <<
"iSpin: " << PiSpin <<
" -> " << D1iSpin <<
" + " << D2iSpin <<
G4endl;
476 G4cout <<
"2*jmin, 2*jmax, lmax " << MiniSpin <<
" " << MaxiSpin <<
" " << lMax <<
G4endl;
479 for (
G4int j=MiniSpin; j<=MaxiSpin; j+=2){
480 lMin = std::abs(PiSpin-j)/2;
485 for (
G4int l=lMin; l<=lMax; l++) {
491 if (PParity == D1Parity*D2Parity) {
495 if (PParity == -1*D1Parity*D2Parity) {
504 "Sorry, can't handle 3 particle decays (up to now)");
507 G4Exception (
"G4VDecayChannel::GetAngularMomentum",
509 "Can't find angular momentum for this decay");
522 G4cout <<
" not defined ";
const G4String & GetNoName() const
static const G4String noName
G4int GetPDGiSpin() const
void ClearDaughtersName()
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
void SetBR(G4double value)
G4double * G4MT_daughters_mass
G4int GetPDGiParity() const
G4ParticleDefinition * G4MT_parent
G4ParticleDefinition ** G4MT_daughters
G4double G4MT_parent_mass
G4ParticleTable * particletable
const G4String & GetParticleName() const
G4int GetAngularMomentum()
G4double GetPDGWidth() const
G4GLOB_DLL std::ostream G4cout
void SetNumberOfDaughters(G4int value)
const G4String & GetParticleType() const
G4VDecayChannel & operator=(const G4VDecayChannel &)
virtual ~G4VDecayChannel()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4int GetVerboseLevel() const
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
void SetParent(const G4ParticleDefinition *particle_type)
void SetDaughter(G4int anIndex, const G4ParticleDefinition *particle_type)
G4String ** daughters_name