Geant4 Cross Reference |
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 // Hadronic Process: Nuclear De-excitations 27 // by V. Lara (Oct 1998) 28 // 29 // Modif (03 September 2008) by J. M. Quesada for external choice of inverse 30 // cross section option 31 // JMQ (06 September 2008) Also external choices have been added for 32 // superimposed Coulomb barrier (if useSICB is set true, by default is false) 33 // 34 // V.Ivanchenko general clean-up since 2010 35 // 36 37 #ifndef G4VEmissionProbability_h 38 #define G4VEmissionProbability_h 1 39 40 #include "globals.hh" 41 #include "G4Fragment.hh" 42 43 class G4NuclearLevelData; 44 class G4Pow; 45 46 class G4VEmissionProbability 47 { 48 public: 49 50 explicit G4VEmissionProbability(G4int Z, G4int A); 51 52 virtual ~G4VEmissionProbability() = default; 53 54 virtual void Initialise(); 55 56 virtual G4double EmissionProbability(const G4Fragment & fragment, 57 G4double anEnergy); 58 59 virtual G4double ComputeProbability(G4double anEnergy, G4double CB); 60 61 G4int GetZ(void) const { return theZ; } 62 63 G4int GetA(void) const { return theA; } 64 65 // Z, A, rmass are residual parameters 66 // fmass is SCM mass of decaying nucleus 67 // exc is an excitation of emitted fragment 68 void SetDecayKinematics(G4int rZ, G4int rA, G4double rmass, G4double fmass) 69 { 70 resZ = rZ; 71 resA = rA; 72 pMass = fmass; 73 pResMass = rmass; 74 } 75 76 G4double GetRecoilExcitation() const { return fExcRes; }; 77 78 void SetEvapExcitation(G4double exc) { fExc = exc; }; 79 80 G4double GetProbability() const { return pProbability; }; 81 82 void ResetProbability() { pProbability = 0.0; }; 83 84 // this method may be called only if the probability is computed 85 // for given initial fragment and decay channel 86 G4double SampleEnergy(); 87 88 G4VEmissionProbability(const G4VEmissionProbability &right) = delete; 89 const G4VEmissionProbability & operator= 90 (const G4VEmissionProbability &right) = delete; 91 G4bool operator==(const G4VEmissionProbability &right) const = delete; 92 G4bool operator!=(const G4VEmissionProbability &right) const = delete; 93 94 protected: 95 96 void ResetIntegrator(size_t nbin, G4double de, G4double eps); 97 98 G4double IntegrateProbability(G4double elow, G4double ehigh, G4double CB); 99 100 G4NuclearLevelData* pNuclearLevelData; 101 G4Pow* pG4pow; 102 103 G4int OPTxs; 104 G4int pVerbose; 105 G4int theZ; 106 G4int theA; 107 G4int resZ = 0; 108 G4int resA = 0; 109 110 G4double pMass = 0.0; // initial fragment 111 G4double pEvapMass = 0.0; 112 G4double pResMass = 0.0; 113 G4double pProbability = 0.0; 114 G4double pTolerance = 0.0; 115 G4double pWidth = 0.0; 116 117 private: 118 119 G4double FindRecoilExcitation(const G4double e); 120 121 G4double fExc = 0.0; 122 G4double fExcRes = 0.0; 123 124 G4double fE1 = 0.0; 125 G4double fE2 = 0.0; 126 G4double fP2 = 0.0; 127 128 G4double emin = 0.0; 129 G4double emax = 0.0; 130 G4double eCoulomb = 0.0; 131 G4double accuracy = 0.005; 132 G4double probmax = 0.0; 133 G4double elimit; 134 135 G4bool fFD = false; 136 }; 137 138 #endif 139