47     MyOwnFissionBarrier = 
true;
 
   50     MyOwnFissionProbability = 
true;
 
   53     MyOwnLevelDensity = 
true;
 
   55     MaximalKineticEnergy = -1000.0*
MeV;
 
   57     FissionProbability = 0.0;
 
   58     LevelDensityParameter = 0.0;
 
   63     if (MyOwnFissionBarrier) 
delete theFissionBarrierPtr;
 
   65     if (MyOwnFissionProbability) 
delete theFissionProbabilityPtr;
 
   67     if (MyOwnLevelDensity) 
delete theLevelDensityPtr;
 
   80   if (anA >= 65 && ExEnergy > 0.0) {
 
   81     FissionBarrier = theFissionBarrierPtr->
FissionBarrier(anA,aZ,ExEnergy);
 
   82     MaximalKineticEnergy = ExEnergy - FissionBarrier;
 
   83     LevelDensityParameter = 
 
   89     MaximalKineticEnergy = -1000.0*
MeV;
 
   90     LevelDensityParameter = 0.0;
 
   91     FissionProbability = 0.0;
 
   93   return FissionProbability;
 
  109     theResult->push_back(
new G4Fragment(theNucleus));
 
  132   G4double FragmentsExcitationEnergy = 0.0;
 
  133   G4double FragmentsKineticEnergy = 0.0;
 
  143     A1 = FissionAtomicNumber(A,theParameters);
 
  144     Z1 = FissionCharge(A,Z,A1);
 
  150     if (A2 < 1 || Z2 < 0) {
 
  152     "G4CompetitiveFission::BreakUp: Can't define second fragment! ");
 
  157     if (M1 + M2 > theNucleusMomentum.
e()) {
 
  159     "G4CompetitiveFission::BreakUp: Fragments Mass > Total Energy");
 
  164     FragmentsKineticEnergy = FissionKineticEnergy( A , Z,
 
  176     FragmentsExcitationEnergy = 
 
  177       Tmax - FragmentsKineticEnergy+FissionPairingEnergy;
 
  179   } 
while (FragmentsExcitationEnergy < 0.0 && Trials++ < 100);
 
  181   if (FragmentsExcitationEnergy <= 0.0) { 
 
  183       "G4CompetitiveFission::BreakItUp: Excitation energy for fragments < 0.0!");
 
  196     (FragmentsKineticEnergy*(FragmentsKineticEnergy+2*(M2+U2)))
 
  197     /(2*(M1+U1+M2+U2+FragmentsKineticEnergy));
 
  198   G4ParticleMomentum Momentum1(IsotropicVector(std::sqrt(Fragment1KineticEnergy*(Fragment1KineticEnergy+2*(M1+U1)))));
 
  240   theResult->push_back(Fragment1);
 
  241   theResult->push_back(Fragment2);
 
  244   CheckConservation(theNucleus,theResult);
 
  251 G4CompetitiveFission::FissionAtomicNumber(
G4int A, 
 
  274   if (w > 1000.0 ) C2 = C2S;
 
  275   else if (w < 0.001) C2 = C2A;
 
  288   G4double Mass1 = MassDistribution(As,A,theParam); 
 
  289   G4double Mass2 = MassDistribution(Am1,A,theParam); 
 
  290   G4double Mass3 = MassDistribution(A1,A,theParam); 
 
  291   G4double Mass4 = MassDistribution(Am2,A,theParam); 
 
  292   G4double Mass5 = MassDistribution(A2,A,theParam); 
 
  295   if (Mass2 > MassMax) MassMax = Mass2;
 
  296   if (Mass3 > MassMax) MassMax = Mass3;
 
  297   if (Mass4 > MassMax) MassMax = Mass4;
 
  298   if (Mass5 > MassMax) MassMax = Mass5;
 
  305     Pm = MassDistribution(xm,A,theParam); 
 
  323     std::exp(-0.5*(x-(A-theParam.
GetA2()))*(x-(A-theParam.
GetA2()))/
 
  325     0.5*std::exp(-0.5*(x-theParam.
GetA1())*(x-theParam.
GetA1())/
 
  327     0.5*std::exp(-0.5*(x-(A-theParam.
GetA1()))*(x-(A-theParam.
GetA1()))/
 
  330   if (theParam.
GetW() > 1000) 
return Xsym;
 
  331   else if (theParam.
GetW() < 0.001) 
return Xasym;
 
  332   else return theParam.
GetW()*Xsym+Xasym;
 
  341   if (Af >= 134.0) DeltaZ = -0.45;                    
 
  342   else if (Af <= (A-134.0)) DeltaZ = 0.45;             
 
  343   else DeltaZ = -0.45*(Af-(A/2.0))/(134.0-(A/2.0));   
 
  350   } 
while (theZ  < 1.0 || theZ > (Z-1.0) || theZ > Af);
 
  352   return static_cast<G4int>(theZ+0.5);
 
  356 G4CompetitiveFission::FissionKineticEnergy(
G4int A, 
G4int Z,
 
  365   if (AfMax < (A/2.0)) AfMax = A - AfMax;
 
  369   if (theParam.
GetW() > 1000) Pas = 0.0;
 
  381   if (theParam.
GetW() < 0.001) Ps = 0.0;
 
  383     Ps = theParam.
GetW()*std::exp(-0.5*(AfMax-theParam.
GetAs())*(AfMax-theParam.
GetAs())/
 
  408     G4double ScaleFactor = 0.5*theParam.
GetSigma1()*(AsymmetricRatio(A,A11)+AsymmetricRatio(A,A12))+
 
  409       theParam.
GetSigma2()*(AsymmetricRatio(A,A21)+AsymmetricRatio(A,A22));
 
  411     TaverageAfMax = (Eaverage + 12.5 * Xsy) * (PPas/ScaleFactor) * AsymmetricRatio(A,AfMax);
 
  419     TaverageAfMax = (Eaverage - 12.5*
MeV*Xas) * (PPsy/ScaleFactor) * SymmetricRatio(A,AfMax);
 
  429     if (i++ > 100) 
return Eaverage;
 
  430   } 
while (KineticEnergy < Eaverage-3.72*ESigma || 
 
  431        KineticEnergy > Eaverage+3.72*ESigma ||
 
  432        KineticEnergy > Tmax);
 
  434   return KineticEnergy;
 
  441   return Ratio(
G4double(A),A11,B1,A00);
 
  448   return Ratio(
G4double(A),A11,B1,A00);
 
  456                   "G4CompetitiveFission::Ratio: A == 0!");
 
  458   if (A11 >= A/2.0 && A11 <= (A00+10.0)) {
 
  459     return 1.0-B1*((A11-
A00)/A)*((A11-
A00)/A);
 
  461     return 1.0-B1*(10.0/A)*(10.0/A)-2.0*(10.0/A)*B1*((A11-A00-10.0)/A);
 
  470   G4double SinTheta = std::sqrt(1.0 - CosTheta*CosTheta);
 
  473                Magnitude*std::sin(Phi)*SinTheta,
 
  479 void G4CompetitiveFission::CheckConservation(
const G4Fragment & theInitialState,
 
  486     G4FragmentVector::iterator h;
 
  487     for (h = Result->begin(); h != Result->end(); h++) {
 
  489     ProductsEnergy += tmp.
e();
 
  490     ProductsMomentum += tmp.
vect();
 
  491     ProductsA += (*h)->GetA_asInt();
 
  492     ProductsZ += (*h)->GetZ_asInt();
 
  495     if (ProductsA != theInitialState.
GetA_asInt()) {
 
  496     G4cout << 
"!!!!!!!!!! Baryonic Number Conservation Violation !!!!!!!!!!" << 
G4endl;
 
  497     G4cout << 
"G4CompetitiveFission.cc: Barionic Number Conservation test for fission fragments"  
  500            << 
"   Fragments A = " << ProductsA << 
"   Diference --> "  
  503     if (ProductsZ != theInitialState.
GetZ_asInt()) {
 
  504     G4cout << 
"!!!!!!!!!! Charge Conservation Violation !!!!!!!!!!" << 
G4endl;
 
  505     G4cout << 
"G4CompetitiveFission.cc: Charge Conservation test for fission fragments"  
  508            << 
"   Fragments Z = " << ProductsZ << 
"   Diference --> "  
  509            << theInitialState.
GetZ() - ProductsZ << 
G4endl;
 
  511     if (std::fabs(ProductsEnergy-theInitialState.
GetMomentum().
e()) > 1.0*
keV) {
 
  512     G4cout << 
"!!!!!!!!!! Energy Conservation Violation !!!!!!!!!!" << 
G4endl;
 
  513     G4cout << 
"G4CompetitiveFission.cc: Energy Conservation test for fission fragments"  
  516            << 
"   Fragments E = " << ProductsEnergy/
MeV  << 
" MeV   Diference --> "  
  517            << (theInitialState.
GetMomentum().
e() - ProductsEnergy)/
MeV << 
" MeV" << G4endl;
 
  519     if (std::fabs(ProductsMomentum.
x()-theInitialState.
GetMomentum().
x()) > 1.0*
keV || 
 
  520     std::fabs(ProductsMomentum.
y()-theInitialState.
GetMomentum().
y()) > 1.0*
keV ||
 
  521     std::fabs(ProductsMomentum.
z()-theInitialState.
GetMomentum().
z()) > 1.0*
keV) {
 
  522     G4cout << 
"!!!!!!!!!! Momentum Conservation Violation !!!!!!!!!!" << 
G4endl;
 
  523     G4cout << 
"G4CompetitiveFission.cc: Momentum Conservation test for fission fragments"  
  526            << 
"   Fragments P = " << ProductsMomentum  << 
" MeV   Diference --> "  
static G4Pow * GetInstance()
 
ThreeVector shoot(const G4int Ap, const G4int Af)
 
Hep3Vector boostVector() const 
 
G4double GetSigma2(void) const 
 
G4double GetSigma1(void) const 
 
virtual G4double GetEmissionProbability(G4Fragment *theNucleus)
 
virtual G4double FissionBarrier(G4int A, G4int Z, const G4double U)=0
 
virtual G4FragmentVector * BreakUp(const G4Fragment &theNucleus)
 
virtual ~G4CompetitiveFission()
 
G4IonTable * GetIonTable() const 
 
G4GLOB_DLL std::ostream G4cout
 
G4double Z13(G4int Z) const 
 
G4double GetSigmaS(void) const 
 
G4double GetIonMass(G4int Z, G4int A, G4int L=0, G4int lvl=0) const 
 
const G4LorentzVector & GetMomentum() const 
 
HepLorentzVector & boost(double, double, double)
 
std::vector< G4Fragment * > G4FragmentVector
 
G4double GetGroundStateMass() const 
 
G4double GetA1(void) const 
 
static G4PairingCorrection * GetInstance()
 
G4double GetFissionPairingCorrection(G4int A, G4int Z) const 
 
G4double GetAs(void) const 
 
static G4ParticleTable * GetParticleTable()
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
virtual G4double LevelDensityParameter(G4int A, G4int Z, G4double U) const =0
 
G4double GetW(void) const 
 
virtual G4double EmissionProbability(const G4Fragment &fragment, const G4double anEnergy)=0
 
G4double GetExcitationEnergy() const 
 
G4double GetA2(void) const