Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 //
 27 //
 28 // Hadronic Process: Nuclear De-excitations
 29 // by V. Lara (Oct 1998)
 30 
 31 #ifndef G4CompetitiveFission_h
 32 #define G4CompetitiveFission_h 1
 33 
 34 #include "G4VEvaporationChannel.hh"
 35 #include "G4Fragment.hh"
 36 #include "G4VEmissionProbability.hh"
 37 #include "G4FissionParameters.hh"
 38 #include <CLHEP/Units/SystemOfUnits.h>
 39 #include "G4Exp.hh"
 40 
 41 class G4VFissionBarrier;
 42 class G4VEmissionProbability;
 43 class G4VLevelDensityParameter;
 44 class G4PairingCorrection;
 45 
 46 class G4CompetitiveFission : public G4VEvaporationChannel
 47 {
 48 public:
 49   
 50   G4CompetitiveFission();
 51   ~G4CompetitiveFission() override;
 52 
 53   void Initialise() override;
 54   
 55   G4Fragment* EmittedFragment(G4Fragment* theNucleus) override;
 56 
 57   G4double GetEmissionProbability(G4Fragment* theNucleus) override;
 58 
 59   void SetFissionBarrier(G4VFissionBarrier * aBarrier);
 60 
 61   void SetEmissionStrategy(G4VEmissionProbability * aFissionProb);
 62 
 63   void SetLevelDensityParameter(G4VLevelDensityParameter * aLevelDensity);
 64 
 65   inline G4double GetFissionBarrier(void) const;
 66 
 67   inline G4double GetLevelDensityParameter(void) const;
 68 
 69   inline G4double GetMaximalKineticEnergy(void) const;
 70 
 71   G4CompetitiveFission(const G4CompetitiveFission &right) = delete;
 72   const G4CompetitiveFission & operator=(const G4CompetitiveFission &right) = delete;
 73   G4bool operator==(const G4CompetitiveFission &right) const = delete;
 74   G4bool operator!=(const G4CompetitiveFission &right) const = delete;
 75 
 76 private:
 77 
 78   // Sample AtomicNumber of Fission products
 79   G4int FissionAtomicNumber(G4int A);
 80 
 81   G4double MassDistribution(G4double x, G4int A);
 82 
 83   // Sample Charge of fission products
 84   G4int FissionCharge(G4int A, G4int Z, G4double Af);
 85 
 86   // Sample Kinetic energy of fission products
 87   G4double FissionKineticEnergy(G4int A, G4int Z,
 88         G4int Af1, G4int Zf1,
 89         G4int Af2, G4int Zf2,
 90         G4double U, G4double Tmax);
 91     
 92   inline G4double Ratio(G4double A, G4double A11, 
 93                         G4double B1, G4double A00) const;
 94 
 95   inline G4double SymmetricRatio(G4int A, G4double A11) const;
 96 
 97   inline G4double AsymmetricRatio(G4int A, G4double A11) const;
 98 
 99   inline G4double LocalExp(G4double x) const;
100 
101   // Maximal Kinetic Energy that can be carried by fragment
102   G4double maxKineticEnergy{0.0};
103   G4double fissionBarrier{0.0};
104   G4double fissionProbability{0.0};
105   G4double fFactor{1.0};
106 
107   // For Fission barrier
108   G4VFissionBarrier* theFissionBarrierPtr;
109 
110   // For Fission probability emission
111   G4VEmissionProbability* theFissionProbabilityPtr;
112 
113   // For Level Density calculation
114   G4VLevelDensityParameter* theLevelDensityPtr;
115   G4PairingCorrection* pairingCorrection;
116 
117   G4bool myOwnFissionProbability{true};
118   G4bool myOwnFissionBarrier{true};
119   G4bool myOwnLevelDensity{true};
120 
121   G4FissionParameters theParam;
122   
123   G4int theSecID;  // Creator model ID for the secondaries created by this model
124   G4bool isInitialised{false};
125 };
126 
127 inline G4double G4CompetitiveFission::GetFissionBarrier(void) const 
128 { 
129   return fissionBarrier; 
130 }
131 
132 inline G4double G4CompetitiveFission::GetMaximalKineticEnergy(void) const 
133 { 
134   return maxKineticEnergy; 
135 }
136 
137 inline
138 G4double G4CompetitiveFission::Ratio(G4double A, G4double A11,
139              G4double B1, G4double A00) const
140 {
141   G4double res;
142   if (A11 >= A*0.5 && A11 <= (A00+10.0)) {
143     G4double x = (A11-A00)/A;
144     res = 1.0 - B1*x*x;
145   } else {
146     G4double x = 10.0/A;
147     res = 1.0 - B1*x*x - 2.0*x*B1*(A11-A00-10.0)/A;
148   }
149   return res;
150 }
151 
152 inline
153 G4double G4CompetitiveFission::AsymmetricRatio(G4int A, G4double A11) const
154 {
155   return Ratio(G4double(A),A11,23.5,134.0);
156 }
157 
158 inline
159 G4double G4CompetitiveFission::SymmetricRatio(G4int A, G4double A11) const
160 {
161   G4double A0 = G4double(A);
162   return Ratio(A0,A11,5.32,A0*0.5);
163 }
164 
165 inline G4double G4CompetitiveFission::LocalExp(G4double x) const
166 {
167   return (std::abs(x) < 8.) ? G4Exp(-0.5*x*x) : 0.0;
168 }
169 
170 #endif
171 
172 
173