46 const G4double G4GEMChannelVI::ws[] = {
 
   58 const G4double G4GEMChannelVI::xs[] = {
 
   72   : 
A(theA), 
Z(theZ), levelDensity(0.1)
 
   87   resA = resZ = fragZ = fragA = nWarn = 0;
 
   88   massGround = maxLevelE = Z13 = A13 = massFrag = eCBarrier 
 
   89     = resMassGround = resZ13 = resA13 = delta0
 
   90     = delta1 = maxExc = maxProb = alphaP = betaP = maxKinEnergy = 0.0;
 
  113   if(resA < A || resA < resZ || resZ < 0 || (resA == A && resZ < Z)) { 
 
  123   maxExc = massFrag - massGround - resMassGround - eCBarrier - delta0;
 
  124   if(maxExc < 0.0) { 
return prob; }
 
  126   resZ13 = fG4pow->
Z13(resZ);
 
  127   resA13 = fG4pow->
Z13(resA);
 
  133   } 
else if(resZ > 20) {
 
  134     C = (0.123482-0.00534691*Z-0.0000610624*(Z*Z)+5.93719*1e-7*(Z*Z*Z)+
 
  135      1.95687*1e-8*(Z*Z*Z*Z))/
G4double(A);
 
  138     alphaP = 0.76+1.93/resA13;
 
  139     betaP = (1.66/(resA13*resA13)-0.05)*
CLHEP::MeV/alphaP;
 
  150     prob += ws[i]*IntegratedProbability(e0*(xs[i] + 1.0));
 
  173     y = ProbabilityDistributionFunction(exc, e0*(xs[i] + 1.0));
 
  189   for(
G4int i=0; i<100; ++i) {
 
  191       exc = maxExc*rndm->
flat();
 
  192       resExc = maxExc*rndm->
flat();
 
  193     } 
while (exc + resExc > maxExc);
 
  195     G4double prob = ProbabilityDistributionFunction(exc, resExc);
 
  196     if(prob > maxProb && nWarn < 10) {
 
  198       G4cout << 
"### G4GEMChannelVI::EmittedFragment WARNING: majoranta " 
  199          << maxProb << 
" is exceeded " << prob << 
"\n" 
  200          << 
" fragZ= " << fragZ << 
" fragA= " << fragA
 
  201          << 
" Z= " << Z << 
" A= " << A 
 
  202          << 
" resZ= " << resZ << 
" resA= " << resA << 
"\n" 
  203              << 
" exc(MeV)= " << exc << 
" resExc(MeV)= " << resExc 
 
  204          << 
" maxExc(MeV)= " << maxExc << 
G4endl;
 
  206     if(maxProb*rndm->
flat() <= prob) { 
break; }
 
  208   if(exc <= maxLevelE) {
 
  209     exc = FindLevel(levelManager, exc, maxExc - resExc);
 
  214     if(lman) { resExc = FindLevel(lman, resExc, maxExc - exc); }
 
  219   G4double mass2 = resMassGround + resExc;
 
  221   G4double e1 = 0.5*((massFrag - mass2)*(massFrag + mass2) 
 
  222              + mass1*mass1)/massFrag;
 
  226     p1 = std::sqrt((e1 - mass1)*(e1 + mass1));
 
  234   lv1.
boost(boostVector);
 
  244   lv0.
boost(boostVector);
 
  253 G4GEMChannelVI::ProbabilityDistributionFunction(
G4double exc, 
G4double resExc)
 
  257   G4double T  = 1.0/(std::sqrt(levelDensity/Ux) - 1.5/Ux);
 
  259     - 1.25*
G4Log(Ux) + 2.0*std::sqrt(levelDensity*Ux));
 
  263   G4double TCN  = 1.0/(std::sqrt(levelDensity/UxCN) - 1.5/UxCN);
 
  266   G4double mass2 = resMassGround + resExc;
 
  268   maxKinEnergy = 0.5*((massFrag - mass2)*(massFrag + mass2) 
 
  269               + mass1*mass1)/massFrag - mass1;
 
  270   maxKinEnergy = 
std::max(maxKinEnergy, 0.0);
 
  274   if ( maxKinEnergy < Ex ) {
 
  275     Width = (I1(t,t)*T + (betaP+eCBarrier)*I0(t))/
G4Exp(E0/T);
 
  280     G4double s0 = 2.0*std::sqrt(levelDensity*(maxKinEnergy-delta0));
 
  281     G4double sx = 2.0*std::sqrt(levelDensity*(Ex-delta0));
 
  284     if(s0 > 350.) { s0 = 350.; }
 
  288     static const G4double sqrt2 = std::sqrt(2.0);
 
  290     Width = I1(t,tx)*T/expE0T + I3(s0,sx)*exps0/(sqrt2*levelDensity);
 
  293       Width += (betaP+eCBarrier)*(I0(tx)/expE0T + 2.0*sqrt2*I2(s0,sx)*exps0);
 
  296   Width *= alphaP*massFrag;
 
  303     Rb = 1.12*(resA13 + A13) - 0.86*((resA13 + A13)/(resA13*A13))+2.85;
 
  305     Rb=1.5*(resA13 + A13);
 
  314                 + 2.0*std::sqrt(levelDensity*UxCN));
 
  315     ild = 
G4Exp((exc-E0CN)/TCN)/TCN;
 
  318     G4double x1 = std::sqrt(levelDensity*x);
 
  319     ild = 
G4Exp(2*x1)/(x*std::sqrt(x1));
 
  322   Width *= (Rb*Rb/ild); 
 
  338       pr = (exc - e1 <= e2 - exc) ? 1.0 - (1.0 - pr)*2*(exc - e1)/(e2 - e1) :
 
  339     2*pr*(e2 - exc)/(e2 - e1);
 
  357   G4double p1 = S *(2.0 + S2 *( 4.0 + S2 *( 13.5 + S2 *( 60.0 + S2 * 325.125 ))));
 
  359              + Sx2 *((1.5*s2+0.5*sx2) 
 
  360                  + Sx2 *((3.75*s2+0.25*sx2) 
 
  361                      + Sx2 *((12.875*s2+0.625*sx2) 
 
  362                          + Sx2 *((59.0625*s2+0.9375*sx2) 
 
  363                              + Sx2 *(324.8*s2+3.28*sx2))))));
 
size_t NearestLowEdgeLevelIndex(G4double energy) const 
 
G4int GetMinA(G4int Z) const 
 
static G4Pow * GetInstance()
 
Hep3Vector boostVector() const 
 
static G4double GetNuclearMass(const G4double A, const G4double Z)
 
G4int SpinParity(size_t i) const 
 
G4GEMChannelVI(G4int theA, G4int theZ)
 
const G4LevelManager * GetLevelManager(G4int Z, G4int A)
 
static constexpr double hbarc
 
G4ThreeVector G4RandomDirection()
 
virtual G4Fragment * EmittedFragment(G4Fragment *theNucleus) final
 
virtual void Initialise() final
 
G4double GetLevelDensity() const 
 
G4float LevelEnergy(size_t i) const 
 
G4GLOB_DLL std::ostream G4cout
 
G4double Z13(G4int Z) const 
 
double A(double temperature)
 
const G4LorentzVector & GetMomentum() const 
 
HepLorentzVector & boost(double, double, double)
 
void SetMomentum(const G4LorentzVector &value)
 
static constexpr double MeV
 
G4double GetPairingCorrection(G4int A, G4int Z) const 
 
G4DeexPrecoParameters * GetParameters()
 
size_t NumberOfTransitions() const 
 
G4double GetGroundStateMass() const 
 
G4int GetMaxA(G4int Z) const 
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
static G4PairingCorrection * GetInstance()
 
void set(double x, double y, double z, double t)
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
void SetZandA_asInt(G4int Znew, G4int Anew)
 
virtual ~G4GEMChannelVI()
 
static constexpr double fermi
 
G4double GetMaxLevelEnergy(G4int Z, G4int A) const 
 
virtual void Dump() const 
 
virtual G4double GetCoulombBarrier(G4int ARes, G4int ZRes, G4double U) const =0
 
G4float MaxLevelEnergy() const 
 
static G4NuclearLevelData * GetInstance()
 
static constexpr double pi
 
G4double GetExcitationEnergy() const 
 
virtual G4double GetEmissionProbability(G4Fragment *theNucleus) final