69 if (OutputDefinitions.size() != 2)
70 throw G4HadronicException(__FILE__, __LINE__,
"G4VScatteringCollision: Too many output particles!");
72 if (OutputDefinitions[0]->IsShortLived() && OutputDefinitions[1]->IsShortLived())
74 if(std::getenv(
"G4KCDEBUG"))
G4cerr <<
"two shortlived for Type = "<<
typeid(*this).name()<<
G4endl;
78 G4double outm1 = OutputDefinitions[0]->GetPDGMass();
79 G4double outm2 = OutputDefinitions[1]->GetPDGMass();
81 if (OutputDefinitions[0]->IsShortLived())
84 OutputDefinitions[0]->GetPDGWidth(),
89 if (OutputDefinitions[1]->IsShortLived())
106 toZ.
rotateY(-1*TempPtr.theta());
109 G4ThreeVector pFinal1(std::sin(std::acos(cosTheta))*std::cos(phi), std::sin(std::acos(cosTheta))*std::sin(phi), cosTheta);
112 G4double pCM = std::sqrt( (S-(outm1+outm2)*(outm1+outm2)) * (S-(outm1-outm2)*(outm1-outm2)) /(4.*S));
113 pFinal1 = pFinal1 * pCM;
116 G4double eFinal1 = std::sqrt(pFinal1.mag2() + outm1*outm1);
117 G4double eFinal2 = std::sqrt(pFinal2.
mag2() + outm2*outm2);
121 p4Final1 = toCMS*p4Final1;
122 p4Final2 = toCMS*p4Final2;
127 p4Final1 *= toLabFrame;
128 p4Final2 *= toLabFrame;
132 G4double chargeBalance = OutputDefinitions[0]->GetPDGCharge()+OutputDefinitions[1]->GetPDGCharge();
138 G4cout << OutputDefinitions[0]->GetPDGCharge()<<
" "<<OutputDefinitions[0]->GetParticleName()
139 << OutputDefinitions[1]->GetPDGCharge()<<
" "<<OutputDefinitions[1]->GetParticleName()
148 finalTracks->push_back(final1);
149 finalTracks->push_back(final2);
158 const double aMinMass,
159 const double maxMass)
const
166 if (minMass > maxMass)
G4cerr <<
"##################### SampleResonanceMass: particle out of mass range" <<
G4endl;
168 if(minMass > maxMass) minMass = 0;
170 if (gamma < 1
E-10*
GeV)
173 double fmin =
BrWigInt0(minMass, gamma, poleMass);
174 double fmax =
BrWigInt0(maxMass, gamma, poleMass);
176 return BrWigInv(f, gamma, poleMass);