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 ]

Diff markup

Differences between /processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh (Version 11.3.0) and /processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh (Version 10.3)


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