- Timestamp:
- Nov 5, 2010, 3:45:55 PM (14 years ago)
- Location:
- trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include
- Files:
-
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4GNASHTransitions.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4GNASHTransitions.hh,v 1.4 2010/08/20 07:42:19 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 #ifndef G4GNASHTransitions_hh 27 30 #define G4GNASHTransitions_hh 1 … … 33 36 { 34 37 public: 35 G4GNASHTransitions() {} 36 virtual ~G4GNASHTransitions() {} 38 39 G4GNASHTransitions(); 40 41 virtual ~G4GNASHTransitions(); 42 43 virtual G4double CalculateProbability(const G4Fragment & aFragment); 44 45 virtual void PerformTransition(G4Fragment & aFragment); 37 46 38 47 private: 39 48 40 G4GNASHTransitions(const G4GNASHTransitions &) : G4VPreCompoundTransitions() {} 41 42 const G4GNASHTransitions& operator=(const G4GNASHTransitions &right); 49 G4GNASHTransitions(const G4GNASHTransitions &); 50 const G4GNASHTransitions& operator=(const G4GNASHTransitions &right); 43 51 44 52 G4bool operator==(const G4GNASHTransitions &right) const; … … 46 54 G4bool operator!=(const G4GNASHTransitions &right) const; 47 55 48 public:49 50 virtual G4double CalculateProbability(const G4Fragment & aFragment);51 52 virtual G4Fragment PerformTransition(const G4Fragment & aFragment);53 54 //JMQ 03/01/0855 public:56 // inline G4double GetTransitionProb1() const57 G4double GetTransitionProb1()58 {return 0;}59 // inline G4double GetTransitionProb2() const60 G4double GetTransitionProb2()61 {return 0;}62 // inline G4double GetTransitionProb3() const63 G4double GetTransitionProb3()64 {return 0;}65 //66 67 56 68 57 }; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCAlpha.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCAlpha.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 30 // 31 // Modified: 32 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 33 // the source, use G4Pow 27 34 28 35 #ifndef G4HETCAlpha_h … … 31 38 #include "G4HETCChargedFragment.hh" 32 39 #include "G4ReactionProduct.hh" 33 #include "G4Alpha.hh"34 35 40 #include "G4AlphaCoulombBarrier.hh" 36 37 41 38 42 class G4HETCAlpha : public G4HETCChargedFragment 39 43 { 40 44 public: 41 // default constructor42 G4HETCAlpha():G4HETCChargedFragment(4,2,&theAlphaCoulombBarrier,"Alpha") {}43 45 44 // copy constructor 45 G4HETCAlpha(const G4HETCAlpha &right): G4HETCChargedFragment(right) {} 46 G4HETCAlpha(); 46 47 47 // destructor 48 ~G4HETCAlpha() {} 48 ~G4HETCAlpha(); 49 49 50 // operators 51 const G4HETCAlpha & operator=(const G4HETCAlpha &right) 52 { 53 if (&right != this) this->G4HETCChargedFragment::operator=(right); 54 return *this; 55 }; 56 57 G4bool operator==(const G4HETCAlpha &right) const 58 { 59 return G4HETCChargedFragment::operator==(right); 60 } 50 protected: 61 51 62 63 G4bool operator!=(const G4HETCAlpha &right) const 64 { 65 return G4HETCChargedFragment::operator!=(right); 66 } 52 virtual G4double GetAlpha(); 67 53 54 virtual G4double GetBeta(); 68 55 69 G4ReactionProduct * GetReactionProduct() const 70 { 71 G4ReactionProduct * theReactionProduct = 72 new G4ReactionProduct(G4Alpha::AlphaDefinition()); 73 theReactionProduct->SetMomentum(GetMomentum().vect()); 74 theReactionProduct->SetTotalEnergy(GetMomentum().e()); 75 #ifdef PRECOMPOUND_TEST 76 theReactionProduct->SetCreatorModel("G4PrecompoundModel"); 77 #endif 78 return theReactionProduct; 79 } 80 81 private: 82 virtual G4double GetAlpha() 83 { 84 G4double C = 0.0; 85 G4double aZ = GetZ() + GetRestZ(); 86 if (aZ <= 30) 87 { 88 C = 0.10; 89 } 90 else if (aZ <= 50) 91 { 92 C = 0.1 + -((aZ-50.)/20.)*0.02; 93 } 94 else if (aZ < 70) 95 { 96 C = 0.08 + -((aZ-70.)/20.)*0.02; 97 } 98 else 99 { 100 C = 0.06; 101 } 102 return 1.0+C; 103 } 104 105 virtual G4double GetBeta() 106 { 107 return -GetCoulombBarrier(); 108 } 109 110 111 virtual G4double GetSpinFactor() 112 { 113 return 1.0; 114 } 56 virtual G4double GetSpinFactor(); 115 57 116 58 virtual G4double K(const G4Fragment & aFragment); 117 59 60 private: 118 61 119 private: 62 // operators 63 G4HETCAlpha(const G4HETCAlpha &right); 64 const G4HETCAlpha & operator=(const G4HETCAlpha &right); 65 G4bool operator==(const G4HETCAlpha &right) const; 66 G4bool operator!=(const G4HETCAlpha &right) const; 120 67 121 68 G4AlphaCoulombBarrier theAlphaCoulombBarrier; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCChargedFragment.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCChargedFragment.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 27 30 … … 30 33 31 34 #include "G4HETCFragment.hh" 32 #include "G4VCoulombBarrier.hh"33 34 35 35 36 class G4HETCChargedFragment : public G4HETCFragment 36 37 { 37 protected:38 // default constructor39 G4HETCChargedFragment() {}40 41 38 public: 42 39 43 // copy constructor 44 G4HETCChargedFragment(const G4HETCChargedFragment &right): 45 G4HETCFragment(right) {} 40 G4HETCChargedFragment(const G4ParticleDefinition*, 41 G4VCoulombBarrier * aCoulombBarrier); 46 42 47 // constructor 48 G4HETCChargedFragment(const G4double anA, 49 const G4double aZ, 50 G4VCoulombBarrier* aCoulombBarrier, 51 const G4String & aName): 52 G4HETCFragment(anA,aZ,aCoulombBarrier,aName) {} 43 virtual ~G4HETCChargedFragment(); 53 44 54 virtual ~G4HETCChargedFragment() {} 45 virtual G4double GetKineticEnergy(const G4Fragment & aFragment); 46 47 private: 55 48 56 49 // operators 50 G4HETCChargedFragment(); 51 G4HETCChargedFragment(const G4HETCChargedFragment &right); 57 52 const G4HETCChargedFragment & 58 operator=(const G4HETCChargedFragment &right) 59 { 60 if (&right != this) this->G4HETCFragment::operator=(right); 61 return *this; 62 } 63 64 G4bool operator==(const G4HETCChargedFragment &right) const 65 { 66 return G4HETCFragment::operator==(right); 67 } 68 69 G4bool operator!=(const G4HETCChargedFragment &right) const 70 { 71 return G4HETCFragment::operator!=(right); 72 } 73 74 75 virtual G4double GetKineticEnergy(const G4Fragment & aFragment); 76 53 operator=(const G4HETCChargedFragment &right); 54 G4bool operator==(const G4HETCChargedFragment &right) const; 55 G4bool operator!=(const G4HETCChargedFragment &right) const; 77 56 78 57 }; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCDeuteron.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCDeuteron.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 30 // 31 // Modified: 32 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 33 // the source, use G4Pow 34 // 27 35 28 36 #ifndef G4HETCDeuteron_h … … 31 39 #include "G4HETCChargedFragment.hh" 32 40 #include "G4ReactionProduct.hh" 33 #include "G4Deuteron.hh"34 35 41 #include "G4DeuteronCoulombBarrier.hh" 36 37 42 38 43 class G4HETCDeuteron : public G4HETCChargedFragment 39 44 { 40 45 public: 41 // default constructor42 G4HETCDeuteron():G4HETCChargedFragment(2,1,&theDeuteronCoulombBarrier,"Deuteron") {}43 46 44 // copy constructor 45 G4HETCDeuteron(const G4HETCDeuteron &right): G4HETCChargedFragment(right) {} 47 G4HETCDeuteron(); 48 49 ~G4HETCDeuteron(); 46 50 47 // destructor 48 ~G4HETCDeuteron() {} 49 50 // operators 51 const G4HETCDeuteron & operator=(const G4HETCDeuteron &right) 52 { 53 if (&right != this) this->G4HETCChargedFragment::operator=(right); 54 return *this; 55 } 51 protected: 56 52 57 G4bool operator==(const G4HETCDeuteron &right) const 58 { 59 return G4HETCChargedFragment::operator==(right); 60 } 53 virtual G4double GetAlpha(); 61 54 62 63 G4bool operator!=(const G4HETCDeuteron &right) const 64 { 65 return G4HETCChargedFragment::operator!=(right); 66 } 55 virtual G4double GetBeta(); 67 56 57 virtual G4double GetSpinFactor(); 68 58 69 G4ReactionProduct * GetReactionProduct() const70 {71 G4ReactionProduct * theReactionProduct =72 new G4ReactionProduct(G4Deuteron::DeuteronDefinition());73 theReactionProduct->SetMomentum(GetMomentum().vect());74 theReactionProduct->SetTotalEnergy(GetMomentum().e());75 #ifdef PRECOMPOUND_TEST76 theReactionProduct->SetCreatorModel("G4PrecompoundModel");77 #endif78 return theReactionProduct;79 }80 81 private:82 virtual G4double GetAlpha()83 {84 G4double C = 0.0;85 G4double aZ = GetZ() + GetRestZ();86 if (aZ >= 70)87 {88 C = 0.10;89 }90 else91 {92 C = ((((0.15417e-06*aZ) - 0.29875e-04)*aZ + 0.21071e-02)*aZ - 0.66612e-01)*aZ + 0.98375;93 }94 return 1.0 + C/2.0;95 }96 97 virtual G4double GetBeta()98 {99 return -GetCoulombBarrier();100 }101 102 virtual G4double GetSpinFactor()103 {104 // 2s+1105 return 3.0;106 }107 108 59 virtual G4double K(const G4Fragment & aFragment); 109 110 60 111 61 private: 112 62 63 // operators 64 G4HETCDeuteron(const G4HETCDeuteron &right); 65 const G4HETCDeuteron & operator=(const G4HETCDeuteron &right); 66 G4bool operator==(const G4HETCDeuteron &right) const; 67 G4bool operator!=(const G4HETCDeuteron &right) const; 68 69 private: 70 113 71 G4DeuteronCoulombBarrier theDeuteronCoulombBarrier; 114 72 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCEmissionFactory.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCEmissionFactory.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 29 // 30 26 31 #ifndef G4HETCEmissionFactory_hh 27 32 #define G4HETCEmissionFactory_hh … … 29 34 #include "G4VPreCompoundEmissionFactory.hh" 30 35 31 32 36 class G4HETCEmissionFactory : public G4VPreCompoundEmissionFactory 33 37 { 34 38 public: 35 39 36 G4HETCEmissionFactory() {}; 37 virtual ~G4HETCEmissionFactory() {}; 40 G4HETCEmissionFactory(); 41 virtual ~G4HETCEmissionFactory(); 42 43 protected: 44 45 virtual std::vector<G4VPreCompoundFragment*> * CreateFragmentVector(); 38 46 39 47 private: 40 48 41 G4HETCEmissionFactory(const G4HETCEmissionFactory & ) : G4VPreCompoundEmissionFactory() {};49 G4HETCEmissionFactory(const G4HETCEmissionFactory & ); 42 50 const G4HETCEmissionFactory & operator=(const G4HETCEmissionFactory & val); 43 51 G4bool operator==(const G4HETCEmissionFactory & val) const; 44 52 G4bool operator!=(const G4HETCEmissionFactory & val) const; 45 53 46 private:47 48 virtual std::vector<G4VPreCompoundFragment*> * CreateFragmentVector();49 50 54 }; 51 55 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCFragment.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCFragment.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 30 // 31 // Modified: 32 // 20.08.2010 V.Ivanchenko added G4Pow and G4PreCompoundParameters pointers 33 // use int Z and A and cleanup 27 34 28 35 #ifndef G4HETCFragment_h … … 30 37 31 38 #include "G4VPreCompoundFragment.hh" 39 #include "Randomize.hh" 32 40 33 41 class G4HETCFragment : public G4VPreCompoundFragment 34 42 { 35 protected:36 // default constructor37 G4HETCFragment() {};38 39 43 public: 40 // copy constructor 41 G4HETCFragment(const G4HETCFragment &right); 42 43 // constructor 44 G4HETCFragment(const G4double anA, const G4double aZ, 45 G4VCoulombBarrier * aCoulombBarrier, 46 const G4String & aName); 44 45 G4HETCFragment(const G4ParticleDefinition*, 46 G4VCoulombBarrier * aCoulombBarrier); 47 47 48 48 virtual ~G4HETCFragment(); 49 50 // ========== 51 // operators 52 // ========== 53 54 const G4HETCFragment& 55 operator= (const G4HETCFragment &right); 56 57 G4int operator==(const G4HETCFragment &right) const; 58 59 G4int operator!=(const G4HETCFragment &right) const; 60 49 50 G4double CalcEmissionProbability(const G4Fragment & aFragment); 51 61 52 protected: 62 53 … … 67 58 virtual G4double GetBeta() = 0; 68 59 69 public: 70 60 inline G4double BetaRand(const G4int N, const G4int L) const; 61 62 private: 71 63 72 G4double CalcEmissionProbability(const G4Fragment & aFragment);73 74 private:75 64 // This method performs integration for probability function over 76 65 // fragment kinetic energy … … 78 67 const G4double & Up, 79 68 const G4Fragment & aFragment); 80 81 // ============================82 // Data members access methods83 // ============================84 85 69 86 inline G4bool IsItPossible(const G4Fragment & aFragment) const; 70 G4HETCFragment(); 71 G4HETCFragment(const G4HETCFragment &right); 72 const G4HETCFragment& 73 operator= (const G4HETCFragment &right); 74 G4int operator==(const G4HETCFragment &right) const; 75 G4int operator!=(const G4HETCFragment &right) const; 87 76 88 protected: 89 90 inline G4double BetaRand(const G4int N, const G4int L) const; 91 77 G4double r2norm; 92 78 }; 93 79 94 #include "G4HETCFragment.icc" 80 inline G4double G4HETCFragment:: 81 BetaRand(const G4int N, const G4int L) const 82 { 83 G4double Y1 = CLHEP::RandGamma::shoot(N,1); 84 G4double Y2 = CLHEP::RandGamma::shoot(L,1); 85 86 return Y1/(Y1+Y2); 87 } 95 88 96 89 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCFragment.icc
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCFragment.icc,v 1.4 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 27 30 28 29 #include <CLHEP/Random/RandGamma.h>30 31 inline G4bool G4HETCFragment::32 IsItPossible(const G4Fragment & aFragment) const33 {34 G4int pplus = aFragment.GetNumberOfCharged();35 G4int pneut = aFragment.GetNumberOfParticles()-pplus;36 return (pneut >= (GetA()-GetZ()) && pplus >= GetZ());37 }38 39 inline G4double G4HETCFragment::40 BetaRand(const G4int N, const G4int L) const41 {42 G4double Y1 = CLHEP::RandGamma::shoot(N,1);43 G4double Y2 = CLHEP::RandGamma::shoot(L,1);44 45 return Y1/(Y1+Y2);46 } -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCHe3.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCHe3.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 30 // 31 // Modified: 32 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 33 // the source, use G4Pow 27 34 28 35 #ifndef G4HETCHe3_h … … 31 38 #include "G4HETCChargedFragment.hh" 32 39 #include "G4ReactionProduct.hh" 33 #include "G4He3.hh"34 35 40 #include "G4He3CoulombBarrier.hh" 36 37 41 38 42 class G4HETCHe3 : public G4HETCChargedFragment 39 43 { 40 44 public: 41 // default constructor42 G4HETCHe3():G4HETCChargedFragment(3,2,&theHe3CoulombBarrier,"He3") {}43 45 44 // copy constructor 45 G4HETCHe3(const G4HETCHe3 &right): G4HETCChargedFragment(right) {} 46 G4HETCHe3(); 46 47 47 // destructor 48 ~G4HETCHe3() {} 48 ~G4HETCHe3(); 49 49 50 // operators 51 const G4HETCHe3 & operator=(const G4HETCHe3 &right) 52 { 53 if (&right != this) this->G4HETCChargedFragment::operator=(right); 54 return *this; 55 } 56 57 G4bool operator==(const G4HETCHe3 &right) const 58 { 59 return G4HETCChargedFragment::operator==(right); 60 } 50 protected: 61 51 62 63 G4bool operator!=(const G4HETCHe3 &right) const 64 { 65 return G4HETCChargedFragment::operator!=(right); 66 } 52 virtual G4double GetAlpha(); 67 53 54 virtual G4double GetBeta(); 68 55 69 G4ReactionProduct * GetReactionProduct() const 70 { 71 G4ReactionProduct * theReactionProduct = 72 new G4ReactionProduct(G4He3::He3Definition()); 73 theReactionProduct->SetMomentum(GetMomentum().vect()); 74 theReactionProduct->SetTotalEnergy(GetMomentum().e()); 75 #ifdef PRECOMPOUND_TEST 76 theReactionProduct->SetCreatorModel("G4PrecompoundModel"); 77 #endif 78 return theReactionProduct; 79 } 80 81 private: 82 virtual G4double GetAlpha() 83 { 84 G4double C = 0.0; 85 G4double aZ = GetZ() + GetRestZ(); 86 if (aZ <= 30) 87 { 88 C = 0.10; 89 } 90 else if (aZ <= 50) 91 { 92 C = 0.1 + -((aZ-50.)/20.)*0.02; 93 } 94 else if (aZ < 70) 95 { 96 C = 0.08 + -((aZ-70.)/20.)*0.02; 97 } 98 else 99 { 100 C = 0.06; 101 } 102 return 1.0 + C*(4.0/3.0); 103 } 104 105 106 virtual G4double GetBeta() 107 { 108 return -GetCoulombBarrier(); 109 } 110 111 // virtual G4double FactorialFactor(const G4double N, const G4double P) 112 // { 113 // return 114 // (N-3.0)*(P-2.0)*( 115 // (((N-2.0)*(P-1.0))/2.0) *( 116 // (((N-1.0)*P)/3.0) 117 // ) 118 // ); 119 // } 120 121 virtual G4double GetSpinFactor() 122 { 123 // 2s+1 124 return 2.0; 125 } 56 virtual G4double GetSpinFactor(); 126 57 127 58 virtual G4double K(const G4Fragment & aFragment); … … 129 60 private: 130 61 62 // operators 63 G4HETCHe3(const G4HETCHe3 &right); 64 const G4HETCHe3 & operator=(const G4HETCHe3 &right); 65 G4bool operator==(const G4HETCHe3 &right) const; 66 G4bool operator!=(const G4HETCHe3 &right) const; 67 131 68 G4He3CoulombBarrier theHe3CoulombBarrier; 132 133 69 }; 134 70 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCNeutron.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCNeutron.hh,v 1.4 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 27 30 // 31 // Modified: 32 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 33 // the source, use G4Pow 28 34 29 35 #ifndef G4HETCNeutron_h … … 32 38 #include "G4HETCFragment.hh" 33 39 #include "G4ReactionProduct.hh" 34 #include "G4Neutron.hh"35 #include "G4PreCompoundParameters.hh"36 #include "Randomize.hh"37 38 40 #include "G4NeutronCoulombBarrier.hh" 39 40 41 41 42 class G4HETCNeutron : public G4HETCFragment 42 43 { 43 44 public: 44 // default constructor45 G4HETCNeutron() : G4HETCFragment(1,0,&theNeutronCoulomBarrier,"Neutron") {}46 45 47 // copy constructor 48 G4HETCNeutron(const G4HETCNeutron &right): G4HETCFragment(right) {} 46 G4HETCNeutron(); 49 47 50 // destructor 51 ~G4HETCNeutron() {} 48 ~G4HETCNeutron(); 49 50 virtual G4double GetKineticEnergy(const G4Fragment & aFragment); 51 52 protected: 53 54 virtual G4double GetAlpha(); 55 56 virtual G4double GetBeta(); 57 58 virtual G4double GetSpinFactor(); 59 60 virtual G4double K(const G4Fragment & aFragment); 61 62 private: 52 63 53 64 // operators 54 const G4HETCNeutron & operator=(const G4HETCNeutron &right) {55 if (&right != this) this->G4HETCFragment::operator=(right);56 return *this;57 }65 G4HETCNeutron(const G4HETCNeutron &right); 66 const G4HETCNeutron & operator=(const G4HETCNeutron &right); 67 G4bool operator==(const G4HETCNeutron &right) const; 68 G4bool operator!=(const G4HETCNeutron &right) const; 58 69 59 G4bool operator==(const G4HETCNeutron &right) const 60 { return G4HETCFragment::operator==(right);} 70 G4NeutronCoulombBarrier theNeutronCoulombBarrier; 61 71 62 G4bool operator!=(const G4HETCNeutron &right) const63 { return G4HETCFragment::operator!=(right);}64 65 66 G4ReactionProduct * GetReactionProduct() const67 {68 G4ReactionProduct * theReactionProduct =69 new G4ReactionProduct(G4Neutron::NeutronDefinition());70 theReactionProduct->SetMomentum(GetMomentum().vect());71 theReactionProduct->SetTotalEnergy(GetMomentum().e());72 #ifdef PRECOMPOUND_TEST73 theReactionProduct->SetCreatorModel("G4PrecompoundModel");74 #endif75 return theReactionProduct;76 }77 78 virtual G4double GetKineticEnergy(const G4Fragment & aFragment);79 80 private:81 virtual G4double GetAlpha()82 {83 return 0.76+2.2/std::pow(GetRestA(),1.0/3.0);84 }85 86 virtual G4double GetBeta()87 {88 return (2.12/std::pow(GetRestA(),2.0/3.0)-0.05)*MeV/GetAlpha();89 }90 91 virtual G4double GetSpinFactor()92 {93 // (2s+1)94 return 2.0;95 }96 97 virtual G4double K(const G4Fragment& aFragment);98 99 private:100 101 G4NeutronCoulombBarrier theNeutronCoulomBarrier;102 103 72 }; 104 73 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCProton.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCProton.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 30 // 31 // Modified: 32 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 33 // the source, use G4Pow 27 34 28 35 #ifndef G4HETCProton_h … … 31 38 #include "G4HETCChargedFragment.hh" 32 39 #include "G4ReactionProduct.hh" 33 #include "G4Proton.hh"34 #include "G4PreCompoundParameters.hh"35 #include "Randomize.hh"36 37 40 #include "G4ProtonCoulombBarrier.hh" 38 39 41 40 42 class G4HETCProton : public G4HETCChargedFragment 41 43 { 42 44 public: 43 // default constructor44 G4HETCProton():G4HETCChargedFragment(1,1,&theProtonCoulombBarrier,"Proton") {}45 46 // copy constructor47 G4HETCProton(const G4HETCProton &right): G4HETCChargedFragment(right) {}48 45 49 // destructor 50 ~G4HETCProton() {}; 51 52 // operators 53 const G4HETCProton & operator=(const G4HETCProton &right) 54 { 55 if (&right != this) this->G4HETCChargedFragment::operator=(right); 56 return *this; 57 } 46 G4HETCProton(); 58 47 59 G4bool operator==(const G4HETCProton &right) const 60 { 61 return G4HETCChargedFragment::operator==(right); 62 } 48 ~G4HETCProton(); 63 49 64 65 G4bool operator!=(const G4HETCProton &right) const 66 { 67 return G4HETCChargedFragment::operator!=(right); 68 } 50 protected: 69 51 52 virtual G4double GetAlpha(); 70 53 71 G4ReactionProduct * GetReactionProduct() const 72 { 73 G4ReactionProduct * theReactionProduct = 74 new G4ReactionProduct(G4Proton::ProtonDefinition()); 75 theReactionProduct->SetMomentum(GetMomentum().vect()); 76 theReactionProduct->SetTotalEnergy(GetMomentum().e()); 77 #ifdef PRECOMPOUND_TEST 78 theReactionProduct->SetCreatorModel("G4PrecompoundModel"); 79 #endif 80 return theReactionProduct; 81 } 82 83 private: 84 virtual G4double GetAlpha() 85 { 86 G4double aZ = static_cast<G4double>(GetRestZ()); 87 G4double C = 0.0; 88 if (aZ >= 70) 89 { 90 C = 0.10; 91 } 92 else 93 { 94 C = ((((0.15417e-06*aZ) - 0.29875e-04)*aZ + 0.21071e-02)*aZ - 0.66612e-01)*aZ + 0.98375; 95 } 96 return 1.0 + C; 97 } 98 99 virtual G4double GetBeta() 100 { 101 return -GetCoulombBarrier(); 102 } 103 104 virtual G4double GetSpinFactor() 105 { 106 // 2s+1 107 return 2.0; 108 } 54 virtual G4double GetBeta(); 55 56 virtual G4double GetSpinFactor(); 109 57 110 58 virtual G4double K(const G4Fragment & aFragment); 111 59 112 60 private: 61 62 // operators 63 G4HETCProton(const G4HETCProton &right); 64 const G4HETCProton & operator=(const G4HETCProton &right); 65 G4bool operator==(const G4HETCProton &right) const; 66 G4bool operator!=(const G4HETCProton &right) const; 113 67 114 68 G4ProtonCoulombBarrier theProtonCoulombBarrier; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4HETCTriton.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4HETCTriton.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 30 // 31 // Modified: 32 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 33 // the source, use G4Pow 27 34 28 35 #ifndef G4HETCTriton_h … … 31 38 #include "G4HETCChargedFragment.hh" 32 39 #include "G4ReactionProduct.hh" 33 #include "G4Triton.hh"34 35 40 #include "G4TritonCoulombBarrier.hh" 36 37 41 38 42 class G4HETCTriton : public G4HETCChargedFragment 39 43 { 40 44 public: 41 // default constructor42 G4HETCTriton():G4HETCChargedFragment(3,1,&theTritonCoulombBarrier,"Triton") {}43 45 44 // copy constructor 45 G4HETCTriton(const G4HETCTriton &right): G4HETCChargedFragment(right) {} 46 G4HETCTriton(); 46 47 47 // destructor 48 ~G4HETCTriton() {} 48 ~G4HETCTriton(); 49 50 protected: 51 52 virtual G4double GetAlpha(); 53 54 virtual G4double GetBeta(); 55 56 virtual G4double GetSpinFactor(); 57 58 virtual G4double K(const G4Fragment & aFragment); 59 60 private: 49 61 50 62 // operators 51 const G4HETCTriton & operator=(const G4HETCTriton &right) 52 { 53 if (&right != this) this->G4HETCChargedFragment::operator=(right); 54 return *this; 55 } 63 G4HETCTriton(const G4HETCTriton &right); 64 const G4HETCTriton & operator=(const G4HETCTriton &right); 65 G4bool operator==(const G4HETCTriton &right) const; 66 G4bool operator!=(const G4HETCTriton &right) const; 56 67 57 G4bool operator==(const G4HETCTriton &right) const58 {59 return G4HETCChargedFragment::operator==(right);60 }61 62 63 G4bool operator!=(const G4HETCTriton &right) const64 {65 return G4HETCChargedFragment::operator!=(right);66 }67 68 69 G4ReactionProduct * GetReactionProduct() const70 {71 G4ReactionProduct * theReactionProduct =72 new G4ReactionProduct(G4Triton::TritonDefinition());73 theReactionProduct->SetMomentum(GetMomentum().vect());74 theReactionProduct->SetTotalEnergy(GetMomentum().e());75 #ifdef PRECOMPOUND_TEST76 theReactionProduct->SetCreatorModel("G4PrecompoundModel");77 #endif78 return theReactionProduct;79 }80 81 private:82 virtual G4double GetAlpha()83 {84 G4double C = 0.0;85 G4double aZ = GetZ() + GetRestZ();86 if (aZ >= 70)87 {88 C = 0.10;89 }90 else91 {92 C = ((((0.15417e-06*aZ) - 0.29875e-04)*aZ + 0.21071e-02)*aZ - 0.66612e-01)*aZ + 0.98375;93 }94 95 return 1.0 + C/3.0;96 }97 98 virtual G4double GetBeta()99 {100 return -GetCoulombBarrier();101 }102 103 104 105 virtual G4double GetSpinFactor()106 {107 // 2s+1108 return 2.0;109 }110 111 virtual G4double K(const G4Fragment& aFragment);112 113 private:114 115 68 G4TritonCoulombBarrier theTritonCoulombBarrier; 116 117 69 }; 118 70 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4LowEIonFragmentation.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LowEIonFragmentation.hh,v 1. 5 2010/06/11 15:34:18vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 4-beta-01$26 // $Id: G4LowEIonFragmentation.hh,v 1.6 2010/08/20 07:42:19 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 28 // 29 29 //--------------------------------------------------------------------------- 30 30 // 31 // $Id: G4LowEIonFragmentation.hh,v 1. 5 2010/06/11 15:34:18vnivanch Exp $32 // GEANT4 tag $Name: geant4-09-0 4-beta-01$31 // $Id: G4LowEIonFragmentation.hh,v 1.6 2010/08/20 07:42:19 vnivanch Exp $ 32 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 33 33 // 34 34 // ClassName: G4LowEIonFragmentation … … 57 57 G4LowEIonFragmentation(); 58 58 59 ~G4LowEIonFragmentation();59 virtual ~G4LowEIonFragmentation(); 60 60 61 private: 62 63 G4LowEIonFragmentation(const G4LowEIonFragmentation &); 64 65 const G4LowEIonFragmentation& operator=(const G4LowEIonFragmentation &right); 66 67 G4bool operator==(const G4LowEIonFragmentation &right) const; 68 69 G4bool operator!=(const G4LowEIonFragmentation &right) const; 70 71 public: 72 73 G4HadFinalState * ApplyYourself(const G4HadProjectile & thePrimary, G4Nucleus & theNucleus); 61 virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & thePrimary, 62 G4Nucleus & theNucleus); 74 63 75 64 static G4double GetCrossSection() 76 65 { 77 // clog << "area/millibarn = "<<area/millibarn<<G4endl;78 // clog << "hits = "<<hits<<G4endl;79 // clog << "totalTries = "<<totalTries<<G4endl;66 // clog << "area/millibarn = "<<area/millibarn<<G4endl; 67 // clog << "hits = "<<hits<<G4endl; 68 // clog << "totalTries = "<<totalTries<<G4endl; 80 69 return area*static_cast<G4double>(hits)/static_cast<G4double>(totalTries)/millibarn; 81 70 } 71 82 72 private: 83 73 74 G4LowEIonFragmentation(const G4LowEIonFragmentation &); 75 const G4LowEIonFragmentation& operator=(const G4LowEIonFragmentation &right); 76 G4bool operator==(const G4LowEIonFragmentation &right) const; 77 G4bool operator!=(const G4LowEIonFragmentation &right) const; 78 79 // Members 84 80 85 81 G4HadFinalState theResult; … … 89 85 90 86 private: 87 91 88 static G4int hits; 92 89 static G4int totalTries; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundAlpha.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundAlpha.hh,v 1.12 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 27 30 // 28 //J. M. Quesada (July 08) 29 31 // Modified: 32 // J. M. Quesada (July 08) cleanup 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor, 35 // moved constructor and destructor to source 30 36 31 37 #ifndef G4PreCompoundAlpha_h … … 33 39 34 40 #include "G4PreCompoundIon.hh" 35 #include "G4ReactionProduct.hh"36 #include "G4Alpha.hh"37 41 #include "G4AlphaCoulombBarrier.hh" 38 #include "G4PreCompoundParameters.hh"39 42 40 43 class G4PreCompoundAlpha : public G4PreCompoundIon 41 44 { 42 45 public: 43 // default constructor44 G4PreCompoundAlpha():G4PreCompoundIon(4,2,&theAlphaCoulombBarrier,"Alpha") {}45 46 46 // copy constructor 47 G4PreCompoundAlpha(const G4PreCompoundAlpha &right): G4PreCompoundIon(right){} 47 G4PreCompoundAlpha(); 48 48 49 // destructor 50 ~G4PreCompoundAlpha() {} 49 virtual ~G4PreCompoundAlpha(); 51 50 52 // operators 53 const G4PreCompoundAlpha & operator=(const G4PreCompoundAlpha &right) { 54 if (&right != this) this->G4PreCompoundIon::operator=(right); 55 return *this; 56 }; 51 protected: 57 52 58 G4bool operator==(const G4PreCompoundAlpha &right) const 59 { return G4PreCompoundIon::operator==(right);} 53 virtual G4double GetRj(G4int NumberParticles, G4int NumberCharged); 60 54 55 virtual G4double CrossSection(G4double ekin) ; 56 57 virtual G4double FactorialFactor(G4int N, G4int P); 58 59 virtual G4double CoalescenceFactor(G4int A); 60 61 virtual G4double GetAlpha(); 62 63 G4double GetOpt12(G4double K); 64 65 G4double GetOpt34(G4double K); 61 66 62 G4bool operator!=(const G4PreCompoundAlpha &right) const63 { return G4PreCompoundIon::operator!=(right);}64 65 66 G4ReactionProduct * GetReactionProduct() const;67 68 67 private: 69 68 70 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged); 69 // operators 70 G4PreCompoundAlpha(const G4PreCompoundAlpha &right); 71 const G4PreCompoundAlpha& 72 operator= (const G4PreCompoundAlpha &right); 73 G4int operator==(const G4PreCompoundAlpha &right) const; 74 G4int operator!=(const G4PreCompoundAlpha &right) const; 71 75 72 virtual G4double CrossSection(const G4double K) ; 73 74 virtual G4double FactorialFactor(const G4double N, const G4double P); 75 76 virtual G4double CoalescenceFactor(const G4double A); 77 78 G4double GetOpt0(const G4double K); 79 G4double GetOpt12(const G4double K); 80 G4double GetOpt34(const G4double K); 81 82 G4double GetAlpha(); 83 84 G4double GetBeta(); 85 86 //data members 87 88 G4AlphaCoulombBarrier theAlphaCoulombBarrier; 89 G4double ResidualA; 90 G4double ResidualZ; 91 G4double theA; 92 G4double theZ; 93 G4double ResidualAthrd; 94 G4double FragmentA; 95 G4double FragmentAthrd; 76 G4AlphaCoulombBarrier theAlphaCoulombBarrier; 77 G4double ResidualAthrd; 78 G4double FragmentAthrd; 79 G4int FragmentA; 80 G4int ResidualA; 81 G4int ResidualZ; 82 G4int theA; 83 G4int theZ; 96 84 97 85 }; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundDeuteron.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundDeuteron.hh,v 1.13 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 27 30 // 28 //J. M. Quesada (July 08) 31 // Modified: 32 // J. M. Quesada (July 08) cleanup 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor, 35 // moved constructor and destructor to source 29 36 30 37 #ifndef G4PreCompoundDeuteron_h … … 32 39 33 40 #include "G4PreCompoundIon.hh" 34 #include "G4ReactionProduct.hh"35 #include "G4Deuteron.hh"36 41 #include "G4DeuteronCoulombBarrier.hh" 37 #include "G4PreCompoundParameters.hh"38 39 42 40 43 class G4PreCompoundDeuteron : public G4PreCompoundIon 41 44 { 42 45 public: 43 // default constructor44 G4PreCompoundDeuteron():G4PreCompoundIon(2,1,&theDeuteronCoulombBarrier,"Deuteron") {}45 46 46 // copy constructor 47 G4PreCompoundDeuteron(const G4PreCompoundDeuteron &right): G4PreCompoundIon(right) {} 47 G4PreCompoundDeuteron(); 48 48 49 // destructor 50 ~G4PreCompoundDeuteron() {} 49 ~G4PreCompoundDeuteron(); 51 50 52 // operators 53 const G4PreCompoundDeuteron & operator=(const G4PreCompoundDeuteron &right) { 54 if (&right != this) this->G4PreCompoundIon::operator=(right); 55 return *this; 56 } 51 protected: 57 52 58 G4bool operator==(const G4PreCompoundDeuteron &right) const 59 { return G4PreCompoundIon::operator==(right);} 53 virtual G4double GetRj(G4int NumberParticles, G4int NumberCharged); 60 54 55 virtual G4double CrossSection(G4double ekin); 56 57 virtual G4double FactorialFactor(G4int N, G4int P); 58 59 virtual G4double CoalescenceFactor(G4int A); 60 61 virtual G4double GetAlpha(); 61 62 62 G4bool operator!=(const G4PreCompoundDeuteron &right) const 63 { return G4PreCompoundIon::operator!=(right);} 63 G4double GetOpt12(G4double K); 64 64 65 G4double GetOpt34(G4double K); 65 66 66 G4ReactionProduct * GetReactionProduct() const;67 68 69 67 private: 70 68 71 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged); 69 // operators 70 G4PreCompoundDeuteron(const G4PreCompoundDeuteron &right); 71 const G4PreCompoundDeuteron& 72 operator= (const G4PreCompoundDeuteron &right); 73 G4int operator==(const G4PreCompoundDeuteron &right) const; 74 G4int operator!=(const G4PreCompoundDeuteron &right) const; 72 75 73 virtual G4double CrossSection(const G4double K) ; 76 G4DeuteronCoulombBarrier theDeuteronCoulombBarrier; 77 G4int ResidualA; 78 G4int ResidualZ; 79 G4int theA; 80 G4int theZ; 81 G4int FragmentA; 82 G4double ResidualAthrd; 83 G4double FragmentAthrd; 84 }; 74 85 75 virtual G4double FactorialFactor(const G4double N, const G4double P);76 77 virtual G4double CoalescenceFactor(const G4double A);78 79 G4double GetOpt0(const G4double K);80 G4double GetOpt12(const G4double K);81 G4double GetOpt34(const G4double K);82 83 G4double GetAlpha();84 85 G4double GetBeta();86 87 //data members88 89 G4DeuteronCoulombBarrier theDeuteronCoulombBarrier;90 G4double ResidualA;91 G4double ResidualZ;92 G4double theA;93 G4double theZ;94 G4double ResidualAthrd;95 G4double FragmentA;96 G4double FragmentAthrd;97 98 };99 86 #endif 100 87 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundEmission.hh,v 1. 7 2009/11/12 14:33:44 gunterExp $27 // GEANT4 tag $Name: geant4-09-0 4-beta-01$26 // $Id: G4PreCompoundEmission.hh,v 1.9 2010/09/01 14:51:21 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 28 // 29 29 // Hadronic Process: Nuclear Preequilibrium … … 34 34 // JMQ (06 September 2008) Also external choice has been added for: 35 35 // - superimposed Coulomb barrier (if useSICB=true) 36 // 20.08.2010 V.Ivanchenko added G4Pow and G4PreCompoundParameters pointers 37 // use int Z and A and cleanup; 38 // inline methods moved from icc file to hh 36 39 37 40 #ifndef G4PreCompoundEmission_h … … 41 44 #include "G4ReactionProduct.hh" 42 45 #include "G4Fragment.hh" 43 #include "Randomize.hh"44 #include "G4PreCompoundParameters.hh"45 46 #include "G4PreCompoundFragmentVector.hh" 46 47 47 48 class G4VPreCompoundEmissionFactory; 48 49 50 class G4Pow; 51 class G4PreCompoundParameters; 49 52 50 53 class G4PreCompoundEmission 51 54 { 52 55 public: 56 53 57 G4PreCompoundEmission(); 58 54 59 ~G4PreCompoundEmission(); 55 60 61 void SetDefaultModel(); 62 63 void SetHETCModel(); 64 65 G4ReactionProduct * PerformEmission(G4Fragment & aFragment); 66 67 inline G4double GetTotalProbability(const G4Fragment & aFragment); 68 69 inline void Initialize(const G4Fragment & aFragment); 70 71 inline void SetOPTxs(G4int); 72 73 inline void UseSICB(G4bool); 74 56 75 private: 76 77 void AngularDistribution(G4VPreCompoundFragment * theFragment, 78 const G4Fragment& aFragment, 79 G4double KineticEnergy); 80 81 G4double rho(G4int p, G4int h, G4double g, G4double E, G4double Ef) const; 82 57 83 G4PreCompoundEmission(const G4PreCompoundEmission &right); 58 84 const G4PreCompoundEmission& operator=(const G4PreCompoundEmission &right); … … 60 86 G4bool operator!=(const G4PreCompoundEmission &right) const; 61 87 62 public:63 64 inline void SetUp(const G4Fragment & aFragment);65 inline void Initialize(const G4Fragment & aFragment);66 67 inline G4double GetTotalProbability(const G4Fragment & aFragment);68 69 G4ReactionProduct * PerformEmission(G4Fragment & aFragment);70 71 void SetDefaultModel();72 void SetHETCModel();73 74 private:75 76 G4ThreeVector AngularDistribution(G4VPreCompoundFragment * theFragment,77 const G4Fragment& aFragment,78 const G4double KineticEnergy) const;79 80 81 82 G4double rho(const G4double p, const G4double h, const G4double g,83 const G4double E, const G4double Ef) const;84 85 G4double factorial(G4double a) const;86 G4double logfactorial(G4double a) const;87 88 //for inverse cross section choice89 public:90 inline void SetOPTxs(G4int);91 //for superimposed CoulomBarrier for inverse cross sections92 inline void UseSICB(G4bool);93 94 95 88 //============== 96 89 // Data Members 97 90 //============== 91 92 G4Pow* g4pow; 93 G4PreCompoundParameters* theParameters; 98 94 99 95 // A vector with the allowed emission fragments … … 101 97 G4VPreCompoundEmissionFactory * theFragmentsFactory; 102 98 103 // Projectile energy 104 G4double ProjEnergy; 105 106 // Projectile direction 107 G4ThreeVector theIncidentDirection; 108 99 // Momentum of emitted fragment 100 G4ThreeVector theFinalMomentum; 109 101 }; 110 102 111 #include "G4PreCompoundEmission.icc" 103 inline G4double 104 G4PreCompoundEmission::GetTotalProbability(const G4Fragment& aFragment) 105 { 106 return theFragmentsVector->CalculateProbabilities(aFragment); 107 } 108 109 inline void 110 G4PreCompoundEmission::Initialize(const G4Fragment& aFragment) 111 { 112 theFragmentsVector->Initialize(aFragment); 113 } 114 115 inline void G4PreCompoundEmission::SetOPTxs(G4int opt) 116 { 117 theFragmentsVector->SetOPTxs(opt); 118 } 119 120 inline void G4PreCompoundEmission::UseSICB(G4bool use) 121 { 122 theFragmentsVector->UseSICB(use); 123 } 112 124 113 125 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.icc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundEmission.icc,v 1. 5 2009/02/10 16:01:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 4-beta-01$26 // $Id: G4PreCompoundEmission.icc,v 1.6 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 28 // 29 29 // … … 36 36 // - superimposed Coulomb barrier (if useSICB=true) 37 37 38 inline void G4PreCompoundEmission::Initialize(const G4Fragment & aFragment)39 {40 theFragmentsVector->Initialize(aFragment);41 return;42 }43 38 44 inline G4double G4PreCompoundEmission::GetTotalProbability(const G4Fragment & aFragment)45 {46 return theFragmentsVector->CalculateProbabilities(aFragment);47 }48 49 inline void G4PreCompoundEmission::SetUp(const G4Fragment & aFragment)50 {51 // This should be the projectile energy. If I would know which is the projectile (proton, neutron)52 // I could remove the binding energy. But, what happens if INC precedes precompound? This approximation53 // seems to work well enough54 ProjEnergy = aFragment.GetExcitationEnergy();55 theIncidentDirection = aFragment.GetMomentum().vect().unit();56 theFragmentsVector->ResetStage();57 return;58 }59 60 //for inverse cross section choice61 inline void G4PreCompoundEmission::SetOPTxs(G4int opt)62 {63 theFragmentsVector->SetOPTxs(opt);64 return;65 }66 //for superimposed Coumlomb Barrier for inverse cross sections67 inline void G4PreCompoundEmission::UseSICB(G4bool use)68 {69 theFragmentsVector->UseSICB(use);70 return;71 }72 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmissionFactory.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundEmissionFactory.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 29 // 30 26 31 #ifndef G4PreCompoundEmissionFactory_hh 27 32 #define G4PreCompoundEmissionFactory_hh … … 29 34 #include "G4VPreCompoundEmissionFactory.hh" 30 35 31 32 36 class G4PreCompoundEmissionFactory : public G4VPreCompoundEmissionFactory 33 37 { 34 38 public: 35 39 36 G4PreCompoundEmissionFactory() {}; 37 virtual ~G4PreCompoundEmissionFactory() {}; 40 G4PreCompoundEmissionFactory(); 41 virtual ~G4PreCompoundEmissionFactory(); 42 43 protected: 44 45 virtual std::vector<G4VPreCompoundFragment*> * CreateFragmentVector(); 38 46 39 47 private: 40 48 41 G4PreCompoundEmissionFactory(const G4PreCompoundEmissionFactory & ) : G4VPreCompoundEmissionFactory() {}; 42 const G4PreCompoundEmissionFactory & operator=(const G4PreCompoundEmissionFactory & val); 49 G4PreCompoundEmissionFactory(const G4PreCompoundEmissionFactory & ); 50 const G4PreCompoundEmissionFactory & operator= 51 (const G4PreCompoundEmissionFactory & val); 43 52 G4bool operator==(const G4PreCompoundEmissionFactory & val) const; 44 53 G4bool operator!=(const G4PreCompoundEmissionFactory & val) const; 45 46 private:47 48 virtual std::vector<G4VPreCompoundFragment*> * CreateFragmentVector();49 54 50 55 }; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragment.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // J. M. Quesada (August 2008).27 // Based on previous work by V. Lara26 // $Id: G4PreCompoundFragment.hh,v 1.6 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 28 // 29 // Modif (03 September 2008) by J. M. Quesada for external choice of inverse 30 // cross section option (default OPTxs=2) 31 // JMQ (06 September 2008) Also external choice has been added for 32 // superimposed Coulomb barrier (if useSICB=true, default false) 33 29 // J. M. Quesada (August 2008). 30 // Based on previous work by V. Lara 31 // 32 // Modified: 33 // 03.09.2008 by J. M. Quesada for external choice of inverse 34 // cross section option (default OPTxs=2) 35 // 06.09.2008 by JMQ Also external choice has been added for 36 // superimposed Coulomb barrier (if useSICB=true, default false) 37 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 38 // G4ParticleDefinition to constructor 34 39 35 40 #ifndef G4PreCompoundFragment_h … … 40 45 class G4PreCompoundFragment : public G4VPreCompoundFragment 41 46 { 42 protected:43 // default constructor44 G4PreCompoundFragment() {};45 46 47 public: 47 // copy constructor 48 G4PreCompoundFragment(const G4PreCompoundFragment &right); 49 50 // constructor 51 G4PreCompoundFragment(const G4double anA, const G4double aZ, 52 G4VCoulombBarrier * aCoulombBarrier, 53 const G4String & aName); 48 49 G4PreCompoundFragment(const G4ParticleDefinition*, 50 G4VCoulombBarrier * aCoulombBarrier); 54 51 55 52 virtual ~G4PreCompoundFragment(); 56 57 // ==========58 // operators59 // ==========60 61 const G4PreCompoundFragment&62 operator= (const G4PreCompoundFragment &right);63 64 G4int operator==(const G4PreCompoundFragment &right) const;65 66 G4int operator!=(const G4PreCompoundFragment &right) const;67 53 68 public:69 70 // Initialization method71 // void Initialize(const G4Fragment & aFragment);72 73 54 // ================================================ 74 55 // Methods for calculating the emission probability … … 81 62 G4double GetKineticEnergy(const G4Fragment & aFragment); 82 63 64 protected: 65 66 virtual G4double 67 ProbabilityDistributionFunction(G4double K, 68 const G4Fragment & aFragment) = 0; 69 83 70 private: 84 71 // This method performs integration for probability function over 85 72 // fragment kinetic energy 86 G4double IntegrateEmissionProbability( const G4double &Low,87 const G4double &Up,73 G4double IntegrateEmissionProbability(G4double Low, 74 G4double Up, 88 75 const G4Fragment & aFragment); 89 protected:90 76 91 virtual G4double 92 ProbabilityDistributionFunction(const G4double K, 93 const G4Fragment & aFragment) = 0; 77 // default constructor 78 G4PreCompoundFragment(); 79 // operators 80 G4PreCompoundFragment(const G4PreCompoundFragment &right); 81 const G4PreCompoundFragment& 82 operator= (const G4PreCompoundFragment &right); 83 G4int operator==(const G4PreCompoundFragment &right) const; 84 G4int operator!=(const G4PreCompoundFragment &right) const; 94 85 95 86 }; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // 27 // $Id: G4PreCompoundFragmentVector.hh,v 1.6 2009/02/10 16:01:37 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 26 // $Id: G4PreCompoundFragmentVector.hh,v 1.7 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 28 // 30 29 // Hadronic Process: Nuclear Preequilibrium 31 30 // by V. Lara 32 31 // 33 // Modif (03 September 2008) by J. M. Quesada for external choice of inverse 32 // Modified: 33 // 03.09.2008 by J. M. Quesada for external choice of inverse 34 34 // cross section option 35 // JMQ (06 September 2008) Also external choice has been added for: 36 // - superimposed Coulomb barrier (if useSICB=true) 35 // 06.09.2008 JMQ Also external choice has been added for: 36 // - superimposed Coulomb barrier (if useSICB=true) 37 // 27.08.2010 V.Ivanchenko simplify and make more efficient by adding extra 38 // vector of probabilities, moved constructor and destructor to source, 39 // simplify run time computations making inlined 40 // 37 41 38 42 #ifndef G4PreCompoundFragmentVector_h … … 40 44 41 45 #include "G4VPreCompoundFragment.hh" 46 #include "G4DataVector.hh" 47 #include "Randomize.hh" 48 #include "globals.hh" 49 #include <vector> 50 51 typedef std::vector<G4VPreCompoundFragment*> pcfvector; 42 52 43 53 class G4PreCompoundFragmentVector 44 54 { 45 typedef std::vector<G4VPreCompoundFragment*> pcfvector;46 55 public: 47 inline G4PreCompoundFragmentVector(pcfvector * avector); 48 inline ~G4PreCompoundFragmentVector(); 49 56 57 G4PreCompoundFragmentVector(pcfvector * avector); 58 59 ~G4PreCompoundFragmentVector(); 60 61 void SetVector(pcfvector * avector); 62 63 void SetOPTxs(G4int); 64 65 void UseSICB(G4bool); 66 67 inline void Initialize(const G4Fragment & aFragment); 68 69 inline G4double CalculateProbabilities(const G4Fragment & aFragment); 70 71 inline G4VPreCompoundFragment * ChooseFragment(); 72 50 73 private: 74 51 75 G4PreCompoundFragmentVector(const G4PreCompoundFragmentVector &right); 52 76 const G4PreCompoundFragmentVector& … … 55 79 G4bool operator!=(const G4PreCompoundFragmentVector &right) const; 56 80 57 public: 81 pcfvector * theChannels; 82 G4DataVector probabilities; 58 83 59 inline void Initialize(const G4Fragment & aFragment); 60 inline void ResetStage(); 61 inline void SetVector(pcfvector * avector); 62 63 G4double CalculateProbabilities(const G4Fragment & aFragment); 64 65 G4VPreCompoundFragment * ChooseFragment(void); 66 67 private: 68 69 pcfvector * theChannels; 70 71 G4double TotalEmissionProbability; 72 73 //for inverse cross section choice 74 public: 75 inline void SetOPTxs(G4int); 76 //for superimposed CoulomBarrier for inverse cross sections 77 inline void UseSICB(G4bool); 78 84 G4int nChannels; 79 85 80 86 }; 81 87 82 #include "G4PreCompoundFragmentVector.icc" 88 inline void 89 G4PreCompoundFragmentVector::Initialize(const G4Fragment & aFragment) 90 { 91 for (G4int i=0; i< nChannels; ++i) { 92 (*theChannels)[i]->Initialize(aFragment); 93 } 94 } 95 96 inline G4double 97 G4PreCompoundFragmentVector::CalculateProbabilities(const G4Fragment & aFragment) 98 { 99 //G4cout << "## G4PreCompoundFragmentVector::CalculateProbabilities" << G4endl; 100 G4double probtot = 0.0; 101 for (G4int i=0; i< nChannels; ++i) { 102 G4double prob = (*theChannels)[i]->CalcEmissionProbability(aFragment); 103 probtot += prob; 104 probabilities[i] = probtot; 105 //G4cout<<" prob= "<<prob<<" for "<<(*theChannels)[i]->GetName()<<G4endl; 106 } 107 return probtot; 108 } 109 110 inline G4VPreCompoundFragment* G4PreCompoundFragmentVector::ChooseFragment() 111 { 112 G4double x = probabilities[nChannels-1]*G4UniformRand(); 113 G4int i=0; 114 for (; i<nChannels; ++i) { 115 if(x <= probabilities[i]) { break; } 116 } 117 return (*theChannels)[i]; 118 } 83 119 84 120 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.icc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4PreCompoundFragmentVector.icc,v 1. 4 2008/09/22 10:18:36 ahowardExp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4PreCompoundFragmentVector.icc,v 1.5 2010/08/28 15:16:55 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // Hadronic Process: Nuclear Preequilibrium … … 36 36 // - superimposed Coulomb barrier (if useSICB=true) 37 37 38 inline G4PreCompoundFragmentVector::G4PreCompoundFragmentVector(pcfvector * avector) :39 theChannels(avector), TotalEmissionProbability(0.0)40 {41 }42 38 43 44 inline G4PreCompoundFragmentVector::~G4PreCompoundFragmentVector()45 {46 }47 48 inline void G4PreCompoundFragmentVector::SetVector(pcfvector * avector)49 {50 theChannels = avector;51 }52 53 inline void54 G4PreCompoundFragmentVector::55 Initialize(const G4Fragment & aFragment)56 {57 TotalEmissionProbability = 0.0;58 for (pcfvector::iterator i=theChannels->begin();59 i != theChannels->end(); i++) (*i)->Initialize(aFragment);60 return;61 }62 63 inline void G4PreCompoundFragmentVector::64 ResetStage()65 {66 for (pcfvector::iterator i=theChannels->begin(); i != theChannels->end(); i++)67 (*i)->ResetStage();68 return;69 }70 71 //for inverse cross section choice72 inline void G4PreCompoundFragmentVector::73 SetOPTxs(G4int opt)74 {75 for (pcfvector::iterator i = theChannels->begin(); i != theChannels->end(); ++i)76 (*i)->SetOPTxs(opt);77 return;78 }79 80 //for superimposed Coulomb Barrier for inverse cross sections81 inline void G4PreCompoundFragmentVector::82 UseSICB(G4bool use)83 {84 for (pcfvector::iterator i = theChannels->begin(); i != theChannels->end(); ++i)85 (*i)->UseSICB(use);86 return;87 } -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundHe3.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundHe3.hh,v 1.11 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 26 29 // by V. Lara 27 30 // 28 //J. M. Quesada (July 08) 31 // Modified: 32 // J. M. Quesada (July 08) cleanup 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor, 35 // moved constructor and destructor to source 29 36 30 37 #ifndef G4PreCompoundHe3_h … … 32 39 33 40 #include "G4PreCompoundIon.hh" 34 #include "G4ReactionProduct.hh"35 #include "G4He3.hh"36 41 #include "G4He3CoulombBarrier.hh" 37 #include "G4PreCompoundParameters.hh"38 42 39 43 class G4PreCompoundHe3 : public G4PreCompoundIon 40 44 { 41 45 public: 42 // default constructor43 G4PreCompoundHe3():G4PreCompoundIon(3,2,&theHe3CoulombBarrier,"He3") {}44 46 45 // copy constructor 46 G4PreCompoundHe3(const G4PreCompoundHe3 &right): G4PreCompoundIon(right) {} 47 G4PreCompoundHe3(); 47 48 48 // destructor 49 ~G4PreCompoundHe3() {} 49 virtual ~G4PreCompoundHe3(); 50 50 51 // operators 52 const G4PreCompoundHe3 & operator=(const G4PreCompoundHe3 &right) { 53 if (&right != this) this->G4PreCompoundIon::operator=(right); 54 return *this; 55 } 51 protected: 56 52 57 G4bool operator==(const G4PreCompoundHe3 &right) const 58 { return G4PreCompoundIon::operator==(right);} 53 virtual G4double GetRj(G4int NumberParticles, G4int NumberCharged); 59 54 55 virtual G4double CrossSection(G4double ekin) ; 56 57 virtual G4double FactorialFactor(G4int N, G4int P); 58 59 virtual G4double CoalescenceFactor(G4int A); 60 61 virtual G4double GetAlpha(); 60 62 61 G4bool operator!=(const G4PreCompoundHe3 &right) const 62 { return G4PreCompoundIon::operator!=(right);} 63 G4double GetOpt12(G4double K); 63 64 64 65 G4ReactionProduct * GetReactionProduct() const; 66 65 G4double GetOpt34(G4double K); 67 66 68 67 private: 69 68 70 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged); 69 // operators 70 G4PreCompoundHe3(const G4PreCompoundHe3 &right); 71 const G4PreCompoundHe3& 72 operator= (const G4PreCompoundHe3 &right); 73 G4int operator==(const G4PreCompoundHe3 &right) const; 74 G4int operator!=(const G4PreCompoundHe3 &right) const; 71 75 72 virtual G4double CrossSection(const G4double K) ; 76 G4He3CoulombBarrier theHe3CoulombBarrier; 77 G4double ResidualAthrd; 78 G4double FragmentAthrd; 79 G4int FragmentA; 80 G4int ResidualA; 81 G4int ResidualZ; 82 G4int theA; 83 G4int theZ; 84 }; 73 85 74 virtual G4double FactorialFactor(const G4double N, const G4double P);75 76 virtual G4double CoalescenceFactor(const G4double A);77 78 G4double GetOpt0(const G4double K);79 G4double GetOpt12(const G4double K);80 G4double GetOpt34(const G4double K);81 82 G4double GetAlpha();83 84 G4double GetBeta();85 86 //data members87 88 G4He3CoulombBarrier theHe3CoulombBarrier;89 G4double ResidualA;90 G4double ResidualZ;91 G4double theA;92 G4double theZ;93 G4double ResidualAthrd;94 G4double FragmentA;95 G4double FragmentAthrd;96 97 98 };99 86 #endif 100 87 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundIon.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // J. M. Quesada (August 2008).27 // Based on previous work by V. Lara26 // $Id: G4PreCompoundIon.hh,v 1.8 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 28 // 29 // J. M. Quesada (August 2008). 30 // Based on previous work by V. Lara 31 // 32 // Modified: 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor, 35 // moved constructor and destructor to source, 36 // added inline methods 29 37 30 38 #ifndef G4PreCompoundIon_h … … 35 43 class G4PreCompoundIon : public G4PreCompoundFragment 36 44 { 37 protected:38 // default constructor39 G4PreCompoundIon() {}40 41 45 public: 42 46 43 // copy constructor 44 G4PreCompoundIon(const G4PreCompoundIon &right): 45 G4PreCompoundFragment(right) {} 46 47 // constructor 48 G4PreCompoundIon(const G4double anA, 49 const G4double aZ, 50 G4VCoulombBarrier* aCoulombBarrier, 51 const G4String & aName): 52 G4PreCompoundFragment(anA,aZ,aCoulombBarrier,aName) {} 53 54 virtual ~G4PreCompoundIon() {} 55 56 // operators 57 const G4PreCompoundIon & 58 operator=(const G4PreCompoundIon &right) 59 { 60 if (&right != this) this->G4PreCompoundFragment::operator=(right); 61 return *this; 62 } 63 64 G4bool operator==(const G4PreCompoundIon &right) const 65 { 66 return G4PreCompoundFragment::operator==(right); 67 } 68 69 G4bool operator!=(const G4PreCompoundIon &right) const 70 { 71 return G4PreCompoundFragment::operator!=(right); 72 } 73 74 virtual G4double ProbabilityDistributionFunction(const G4double eKin, 75 const G4Fragment& aFragment); 47 G4PreCompoundIon(const G4ParticleDefinition*, 48 G4VCoulombBarrier * aCoulombBarrier); 49 50 virtual ~G4PreCompoundIon(); 76 51 77 private: 52 protected: 53 54 virtual G4double 55 ProbabilityDistributionFunction(G4double eKin, 56 const G4Fragment& aFragment); 78 57 79 G4bool IsItPossible(const G4Fragment& aFragment) ; 80 81 protected: 58 virtual G4double CrossSection(G4double ekin) = 0; 82 59 83 virtual G4double CrossSection(const G4double ekin)=0; 60 virtual G4double 61 GetRj(G4int NumberParticles, G4int NumberCharged) = 0; 84 62 85 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) = 0;63 virtual G4double FactorialFactor(G4int N, G4int P) = 0; 86 64 87 virtual G4double FactorialFactor(const G4double N, const G4double P) = 0;65 virtual G4double CoalescenceFactor(G4int A) = 0; 88 66 89 virtual G4double CoalescenceFactor(const G4double A) = 0;67 virtual G4double GetAlpha() = 0; 90 68 91 }; 69 inline G4double GetBeta(); 70 71 inline G4double GetOpt0(G4double ekin); 72 73 private: 74 75 // default constructor 76 G4PreCompoundIon(); 77 // operators 78 G4PreCompoundIon(const G4PreCompoundIon &right); 79 const G4PreCompoundIon& 80 operator= (const G4PreCompoundIon &right); 81 G4int operator==(const G4PreCompoundIon &right) const; 82 G4int operator!=(const G4PreCompoundIon &right) const; 83 84 G4double fact; 85 }; 86 87 inline G4double G4PreCompoundIon::GetBeta() 88 { 89 return -GetCoulombBarrier(); 90 } 91 92 // *********************** OPT=0 : Dostrovski's cross section *************** 93 inline G4double G4PreCompoundIon::GetOpt0(G4double K) 94 { 95 G4double r0 = theParameters->Getr0()*ResidualA13(); 96 // cross section is now given in mb (r0 is in mm) for the sake of consistency 97 //with the rest of the options 98 return 1.e+25*CLHEP::pi*r0*r0*ResidualA13()*GetAlpha()*(1.+GetBeta()/K); 99 } 92 100 93 101 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundModel.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // 27 // $Id: G4PreCompoundModel.hh,v 1.7 2009/11/19 10:19:31 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 26 // $Id: G4PreCompoundModel.hh,v 1.9 2010/08/20 07:41:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 28 // 30 29 // by V. Lara 31 30 // 32 31 // Class Description 33 32 // Model implementation for pre-equilibrium decay models in geant4. … … 37 36 // Class Description - End 38 37 // 39 // Modif (03 September 2008) by J. M. Quesada for external choice of inverse 40 // cross section option.(default OPTxs=3) 41 // JMQ (06 September 2008) Also external choices have been added for: 38 // Modified: 39 // 03.09.2008 J.M.Quesada added external choice of inverse 40 // cross section option.(default OPTxs=3) 41 // 06.09.2008 J.M.Quesada external choices have been added for: 42 42 // - superimposed Coulomb barrier (if useSICB=true, default false) 43 43 // - "never go back" hipothesis (if useNGB=true, default false) 44 44 // - soft cutoff from preeq. to equlibrium (if useSCO=true, default false) 45 45 // - CEM transition probabilities (if useCEMtr=true) 46 // J. M. Quesada (30.10.09) : CEM transition probabilities are set as default 46 // 30.10.2009 J.M.Quesada CEM transition probabilities are set as default 47 // 20.08.2010 V.Ivanchenko Cleanup of the code - changed data members and inline methods 47 48 48 49 #ifndef G4PreCompoundModel_h … … 50 51 51 52 #include "G4VPreCompoundModel.hh" 52 #include "G4LorentzVector.hh"53 54 55 #include "G4NucleiProperties.hh"56 #include "G4PreCompoundParameters.hh"57 #include "G4ExcitationHandler.hh"58 53 #include "G4Fragment.hh" 59 #include "Randomize.hh"60 61 //#include "G4PreCompoundEmission.hh"62 63 #include "G4DynamicParticle.hh"64 54 #include "G4ReactionProductVector.hh" 65 55 #include "G4ReactionProduct.hh" 66 #include "G4ParticleTypes.hh" 67 #include "G4ParticleTable.hh" 56 #include "G4ExcitationHandler.hh" 68 57 69 //#define debug 70 //#define verbose 58 class G4PreCompoundParameters; 59 class G4PreCompoundEmission; 60 class G4VPreCompoundTransitions; 61 class G4ParticleDefinition; 71 62 72 63 class G4PreCompoundModel : public G4VPreCompoundModel 73 { 74 64 { 75 65 public: 76 66 … … 79 69 virtual ~G4PreCompoundModel(); 80 70 81 private: 71 virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & thePrimary, 72 G4Nucleus & theNucleus); 82 73 83 G4PreCompoundModel();74 virtual G4ReactionProductVector* DeExcite(G4Fragment& aFragment); 84 75 85 G4PreCompoundModel(const G4PreCompoundModel &); 76 void UseHETCEmission(); 77 void UseDefaultEmission(); 78 void UseGNASHTransition(); 79 void UseDefaultTransition(); 86 80 87 const G4PreCompoundModel& operator=(const G4PreCompoundModel &right); 88 G4bool operator==(const G4PreCompoundModel &right) const; 89 G4bool operator!=(const G4PreCompoundModel &right) const; 81 //for cross section selection 82 void SetOPTxs(G4int opt); 90 83 91 public: 92 93 G4HadFinalState * ApplyYourself(const G4HadProjectile & thePrimary, G4Nucleus & theNucleus);94 95 G4ReactionProductVector* DeExcite(const G4Fragment& aFragment) const;84 //for the rest of external choices 85 void UseSICB(); 86 void UseNGB(); 87 void UseSCO(); 88 void UseCEMtr(); 96 89 97 90 #ifdef PRECOMPOUND_TEST … … 102 95 #endif 103 96 104 inline void UseHETCEmission() { useHETCEmission = true; }105 inline void UseDefaultEmission() { useHETCEmission = false; }106 inline void UseGNASHTransition() { useGNASHTransition = true; }107 inline void UseDefaultTransition() { useGNASHTransition = false; }108 109 //for cross section selection110 inline void SetOPTxs(G4int opt) { OPTxs = opt; }111 //for the rest of external choices112 inline void UseSICB() { useSICB = true; }113 inline void UseNGB() { useNGB = true; }114 inline void UseSCO() { useSCO = true; }115 inline void UseCEMtr() { useCEMtr = true; }116 97 private: 117 98 99 inline 118 100 void PerformEquilibriumEmission(const G4Fragment & aFragment, 119 101 G4ReactionProductVector * theResult) const; 120 102 121 private: 103 G4PreCompoundModel(); 104 G4PreCompoundModel(const G4PreCompoundModel &); 105 const G4PreCompoundModel& operator=(const G4PreCompoundModel &right); 106 G4bool operator==(const G4PreCompoundModel &right) const; 107 G4bool operator!=(const G4PreCompoundModel &right) const; 122 108 123 109 #ifdef debug … … 131 117 //============== 132 118 119 G4PreCompoundParameters* theParameters; 120 G4PreCompoundEmission* theEmission; 121 G4VPreCompoundTransitions* theTransition; 133 122 123 const G4ParticleDefinition* proton; 124 const G4ParticleDefinition* neutron; 134 125 135 G4bool 136 G4bool 126 G4bool useHETCEmission; 127 G4bool useGNASHTransition; 137 128 138 //for cross section options129 //for cross section options 139 130 G4int OPTxs; 140 //for the rest of external choices 131 132 //for the rest of external choices 141 133 G4bool useSICB; 142 134 G4bool useNGB; … … 144 136 G4bool useCEMtr; 145 137 146 147 G4HadFinalState theResult; 138 G4HadFinalState theResult; 148 139 149 140 #ifdef PRECOMPOUND_TEST … … 151 142 static std::vector<G4String*> theCreatorModels; 152 143 #endif 144 }; 153 145 154 }; 146 inline void 147 G4PreCompoundModel::PerformEquilibriumEmission(const G4Fragment & aFragment, 148 G4ReactionProductVector * Result) const 149 { 150 G4ReactionProductVector* theEquilibriumResult = 151 GetExcitationHandler()->BreakItUp(aFragment); 152 Result->insert(Result->end(),theEquilibriumResult->begin(), theEquilibriumResult->end()); 153 delete theEquilibriumResult; 154 } 155 155 156 #endif 156 157 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNeutron.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundNeutron.hh,v 1.13 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 26 28 // 27 //J. M. Quesada (July 08) 28 29 // by V. Lara 30 // 31 // Modified: 32 // J. M. Quesada (July 08) cleanup 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor, 35 // moved constructor and destructor to source 29 36 30 37 #ifndef G4PreCompoundNeutron_h … … 32 39 33 40 #include "G4PreCompoundNucleon.hh" 34 #include "G4ReactionProduct.hh"35 #include "G4Neutron.hh"36 #include "G4PreCompoundParameters.hh"37 #include "Randomize.hh"38 41 #include "G4NeutronCoulombBarrier.hh" 39 40 42 41 43 class G4PreCompoundNeutron : public G4PreCompoundNucleon 42 44 { 43 45 public: 44 // default constructor45 G4PreCompoundNeutron() : G4PreCompoundNucleon(1,0,&theNeutronCoulombBarrier,"Neutron") {}46 46 47 // copy constructor 48 G4PreCompoundNeutron(const G4PreCompoundNeutron &right): G4PreCompoundNucleon(right) {} 47 G4PreCompoundNeutron(); 49 48 50 // destructor 51 ~G4PreCompoundNeutron() {} 49 virtual ~G4PreCompoundNeutron(); 52 50 53 // operators 54 const G4PreCompoundNeutron & operator=(const G4PreCompoundNeutron &right) { 55 if (&right != this) this->G4PreCompoundNucleon::operator=(right); 56 return *this; 57 } 51 protected: 58 52 59 G4bool operator==(const G4PreCompoundNeutron &right) const 60 { return G4PreCompoundNucleon::operator==(right);} 61 62 G4bool operator!=(const G4PreCompoundNeutron &right) const 63 { return G4PreCompoundNucleon::operator!=(right);} 53 virtual G4double GetRj(G4int NumberParticles, G4int NumberCharged); 64 54 55 virtual G4double CrossSection(G4double ekin); 65 56 66 G4ReactionProduct * GetReactionProduct() const; 67 57 virtual G4double GetAlpha(); 58 59 virtual G4double GetBeta(); 60 61 G4double GetOpt12(G4double K); 62 63 G4double GetOpt34(G4double K); 64 68 65 private: 69 66 70 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged); 67 // operators 68 G4PreCompoundNeutron(const G4PreCompoundNeutron &right); 69 const G4PreCompoundNeutron& 70 operator= (const G4PreCompoundNeutron &right); 71 G4int operator==(const G4PreCompoundNeutron &right) const; 72 G4int operator!=(const G4PreCompoundNeutron &right) const; 71 73 72 virtual G4double CrossSection(const G4double K); 73 74 75 G4double GetOpt0(const G4double K); 76 G4double GetOpt12(const G4double K); 77 G4double GetOpt34(const G4double K); 78 79 80 G4double GetAlpha(); 81 82 G4double GetBeta(); 83 84 //data members 85 86 G4NeutronCoulombBarrier theNeutronCoulombBarrier; 87 G4double ResidualA; 88 G4double ResidualZ; 89 G4double theA; 90 G4double theZ; 91 G4double ResidualAthrd; 92 G4double FragmentA; 93 G4double FragmentAthrd; 94 95 74 G4NeutronCoulombBarrier theNeutronCoulombBarrier; 75 G4double ResidualAthrd; 76 G4double FragmentAthrd; 77 G4int FragmentA; 78 G4int ResidualA; 79 G4int ResidualZ; 80 G4int theA; 81 G4int theZ; 96 82 }; 97 98 83 99 84 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNucleon.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // J. M. Quesada (August 2008).27 // Based on previous work by V. Lara26 // $Id: G4PreCompoundNucleon.hh,v 1.7 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 28 // 29 // J. M. Quesada (August 2008). 30 // Based on previous work by V. Lara 31 // 32 // Modified: 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor 29 35 30 36 … … 36 42 class G4PreCompoundNucleon : public G4PreCompoundFragment 37 43 { 44 public: 45 46 G4PreCompoundNucleon(const G4ParticleDefinition*, 47 G4VCoulombBarrier * aCoulombBarrier); 48 49 virtual ~G4PreCompoundNucleon(); 50 51 protected: 52 53 virtual G4double 54 ProbabilityDistributionFunction(G4double eKin, 55 const G4Fragment& aFragment); 56 57 virtual G4double CrossSection(G4double ekin) = 0; 58 59 virtual G4double 60 GetRj(G4int NumberParticles, G4int NumberCharged) = 0; 61 62 virtual G4double GetAlpha() = 0; 63 64 virtual G4double GetBeta() = 0; 65 66 inline G4double GetOpt0(G4double ekin); 67 38 68 private: 69 39 70 // default constructor 40 G4PreCompoundNucleon() {}; 71 G4PreCompoundNucleon(); 72 // operators 73 G4PreCompoundNucleon(const G4PreCompoundNucleon &right); 74 const G4PreCompoundNucleon& 75 operator= (const G4PreCompoundNucleon &right); 76 G4int operator==(const G4PreCompoundNucleon &right) const; 77 G4int operator!=(const G4PreCompoundNucleon &right) const; 41 78 42 public: 43 44 // copy constructor 45 G4PreCompoundNucleon(const G4PreCompoundNucleon &right): 46 G4PreCompoundFragment(right) {} 79 G4double fact; 80 }; 47 81 48 // constructor 49 G4PreCompoundNucleon(const G4double anA, 50 const G4double aZ, 51 G4VCoulombBarrier* aCoulombBarrier, 52 const G4String & aName) : 53 G4PreCompoundFragment(anA,aZ,aCoulombBarrier,aName) {} 54 55 56 virtual ~G4PreCompoundNucleon() {} 57 58 // operators 59 const G4PreCompoundNucleon & 60 operator=(const G4PreCompoundNucleon &right) 61 { 62 if (&right != this) this->G4PreCompoundFragment::operator=(right); 63 return *this; 64 } 65 66 G4bool operator==(const G4PreCompoundNucleon &right) const 67 { 68 return G4PreCompoundFragment::operator==(right); 69 } 70 71 G4bool operator!=(const G4PreCompoundNucleon &right) const 72 { 73 return G4PreCompoundFragment::operator!=(right); 74 } 75 76 virtual G4double ProbabilityDistributionFunction(const G4double eKin, 77 const G4Fragment& aFragment); 78 79 private: 80 81 G4bool IsItPossible(const G4Fragment&) ; 82 83 protected: 84 85 virtual G4double CrossSection(const G4double ekin)=0; 86 87 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) = 0; 88 89 }; 82 // *********************** OPT=0 : Dostrovski's cross section *************** 83 inline G4double G4PreCompoundNucleon::GetOpt0(G4double K) 84 { 85 G4double r0 = theParameters->Getr0()*ResidualA13(); 86 // cross section is now given in mb (r0 is in mm) for the sake of consistency 87 //with the rest of the options 88 return 1.e+25*CLHEP::pi*r0*r0*ResidualA13()*GetAlpha()*(1.+GetBeta()/K); 89 } 90 90 91 91 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundParameters.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // 27 // $Id: G4PreCompoundParameters.hh,v 1.5 2008/05/08 10:34:25 quesada Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 26 // $Id: G4PreCompoundParameters.hh,v 1.6 2010/08/18 14:07:24 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 28 // 30 29 // by V. Lara 31 30 // 32 //J. M. Quesada (Apr. 2008) Level density set to A/10 at preequilibrium 33 31 // 01.04.2008 J. M. Quesada Level density set to A/10 at preequilibrium 32 // 18.08.2010 V.Ivanchenko make this class as a standard singleton 33 // 34 34 35 35 #ifndef G4PreCompoundParameters_h … … 40 40 class G4PreCompoundParameters 41 41 { 42 private:43 static G4PreCompoundParameters thePreCompoundParameters;44 45 // default constructor46 // G4PreCompoundParameters() : theLevelDensity(0.125/MeV),47 //JMQ level density parameter set to A/10 at preequilibrium48 G4PreCompoundParameters() : theLevelDensity(0.10/MeV),49 r0(1.5*fermi),Transitions_r0(0.6*fermi),FermiEnergy(35.0*MeV)50 {}51 52 42 public: 53 43 54 ~G4PreCompoundParameters() {}; 44 static G4PreCompoundParameters * GetAddress(); 45 46 ~G4PreCompoundParameters(); 55 47 56 static G4PreCompoundParameters * GetAddress();48 inline G4double GetLevelDensity(); 57 49 58 G4double GetLevelDensity() 59 { return theLevelDensity; } 60 50 inline G4double Getr0(); 61 51 62 G4double Getr0() 63 { return r0; } 52 inline G4double GetTransitionsr0(); 64 53 65 G4double GetTransitionsr0() 66 { return Transitions_r0; } 67 68 69 G4double GetFermiEnergy() 70 { return FermiEnergy; } 54 inline G4double GetFermiEnergy(); 71 55 72 56 private: 73 // Level density parameter74 const G4double theLevelDensity;75 57 76 // Nuclear radius r0 77 const G4double r0; 58 G4PreCompoundParameters(); 59 60 static G4PreCompoundParameters* theParameters; 61 62 // Level density parameter 63 G4double fLevelDensity; 64 65 // Nuclear radius r0 66 G4double fR0; 78 67 79 80 const G4doubleTransitions_r0;68 // Nuclear radius r0 for transitions 69 G4double fTransitions_r0; 81 70 82 // Fermi energy level 83 const G4double FermiEnergy; 84 71 // Fermi energy level 72 G4double fFermiEnergy; 85 73 }; 86 74 75 inline G4double G4PreCompoundParameters::GetLevelDensity() 76 { 77 return fLevelDensity; 78 } 79 80 inline G4double G4PreCompoundParameters::Getr0() 81 { 82 return fR0; 83 } 84 85 inline G4double G4PreCompoundParameters::GetTransitionsr0() 86 { 87 return fTransitions_r0; 88 } 89 90 inline G4double G4PreCompoundParameters::GetFermiEnergy() 91 { 92 return fFermiEnergy; 93 } 94 87 95 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundProton.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundProton.hh,v 1.13 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 26 28 // 27 //J. M. Quesada (July 08) 29 // by V. Lara 30 // 31 // Modified: 32 // J. M. Quesada (July 08) cleanup 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor, 35 // moved constructor and destructor to source 28 36 29 37 #ifndef G4PreCompoundProton_h … … 31 39 32 40 #include "G4PreCompoundNucleon.hh" 33 #include "G4ReactionProduct.hh"34 #include "G4Proton.hh"35 #include "G4PreCompoundParameters.hh"36 #include "Randomize.hh"37 41 #include "G4ProtonCoulombBarrier.hh" 38 42 … … 40 44 { 41 45 public: 42 // default constructor43 G4PreCompoundProton():G4PreCompoundNucleon(1,1,&theProtonCoulombBarrier,"Proton") {}44 46 45 // copy constructor 46 G4PreCompoundProton(const G4PreCompoundProton &right): G4PreCompoundNucleon(right) {} 47 G4PreCompoundProton(); 47 48 48 // destructor 49 ~G4PreCompoundProton() {}; 49 virtual ~G4PreCompoundProton(); 50 50 51 // operators 52 const G4PreCompoundProton & operator=(const G4PreCompoundProton &right) { 53 if (&right != this) this->G4PreCompoundNucleon::operator=(right); 54 return *this; 55 }; 51 protected: 56 52 57 G4bool operator==(const G4PreCompoundProton &right) const 58 { return G4PreCompoundNucleon::operator==(right);} 53 virtual G4double GetRj(G4int NumberParticles, G4int NumberCharged); 59 54 60 61 G4bool operator!=(const G4PreCompoundProton &right) const 62 { return G4PreCompoundNucleon::operator!=(right);} 55 virtual G4double CrossSection(G4double ekin) ; 63 56 57 virtual G4double GetAlpha(); 64 58 65 G4ReactionProduct * GetReactionProduct() const; 66 67 59 virtual G4double GetBeta(); 60 61 G4double GetOpt1(G4double K); 62 63 G4double GetOpt2(G4double K); 64 65 G4double GetOpt3(G4double K); 66 68 67 private: 69 68 70 //JMQ (Sep. 07) combinatorial factor Rj 71 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged); 69 // operators 70 G4PreCompoundProton(const G4PreCompoundProton &right); 71 const G4PreCompoundProton& 72 operator= (const G4PreCompoundProton &right); 73 G4int operator==(const G4PreCompoundProton &right) const; 74 G4int operator!=(const G4PreCompoundProton &right) const; 72 75 73 virtual G4double CrossSection(const G4double K) ; 74 75 76 G4double GetOpt0(const G4double K); 77 G4double GetOpt1(const G4double K); 78 G4double GetOpt2(const G4double K); 79 G4double GetOpt3(const G4double K); 80 81 G4double GetAlpha(); 82 83 G4double GetBeta(); 84 85 //data members 86 87 G4ProtonCoulombBarrier theProtonCoulombBarrier; 88 G4double ResidualA; 89 G4double ResidualZ; 90 G4double theA; 91 G4double theZ; 92 G4double ResidualAthrd; 93 G4double FragmentA; 94 G4double FragmentAthrd; 95 96 97 76 G4ProtonCoulombBarrier theProtonCoulombBarrier; 77 G4double ResidualAthrd; 78 G4double FragmentAthrd; 79 G4int FragmentA; 80 G4int ResidualA; 81 G4int ResidualZ; 82 G4int theA; 83 G4int theZ; 98 84 }; 99 85 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTransitions.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // 27 // $Id: G4PreCompoundTransitions.hh,v 1.6 2008/09/22 10:18:36 ahoward Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 26 // $Id: G4PreCompoundTransitions.hh,v 1.8 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 28 // 30 29 // by V. Lara 31 // J. M. Quesada . New methods for accessing to individual transition probabilities (landa+, landa-, landa0) from32 // G4PreCompoundModel.cc33 30 // 01.05.2008 J. M. Quesada . New methods for accessing to individual transition 31 // probabilities (landa+, landa-, landa0) from G4PreCompoundModel 32 // 20.08.2010 V.Ivanchenko move constructor and destructor to the source 34 33 35 34 #ifndef G4PreCompoundTransitions_h … … 48 47 #include "globals.hh" 49 48 #include "G4Fragment.hh" 50 #include "G4PreCompoundParameters.hh" 51 #include "G4Proton.hh" 52 #include "Randomize.hh" 49 50 class G4ParticleDefinition; 51 class G4Pow; 53 52 54 53 class G4PreCompoundTransitions : public G4VPreCompoundTransitions 55 56 54 { 57 55 public: 58 56 59 // Calculates transition probabilities with Delta N = +2 (Trans1) -2 (Trans2) and 0 (Trans3)57 G4PreCompoundTransitions(); 60 58 61 G4PreCompoundTransitions() : TransitionProb1(0.0), TransitionProb2(0.0), TransitionProb3(0.0){}59 virtual ~G4PreCompoundTransitions(); 62 60 63 virtual ~G4PreCompoundTransitions() {} 61 virtual G4double CalculateProbability(const G4Fragment & aFragment); 62 63 virtual void PerformTransition(G4Fragment & aFragment); 64 64 65 65 private: 66 66 67 G4PreCompoundTransitions(const G4PreCompoundTransitions &) : G4VPreCompoundTransitions() {}; 68 67 G4PreCompoundTransitions(const G4PreCompoundTransitions &); 69 68 const G4PreCompoundTransitions& operator=(const G4PreCompoundTransitions &right); 70 71 69 G4bool operator==(const G4PreCompoundTransitions &right) const; 72 73 70 G4bool operator!=(const G4PreCompoundTransitions &right) const; 74 71 75 public: 76 77 virtual G4double CalculateProbability(const G4Fragment & aFragment); 78 79 virtual G4Fragment PerformTransition(const G4Fragment & aFragment); 80 81 private: 82 83 G4double TransitionProb1; 84 G4double TransitionProb2; 85 G4double TransitionProb3; 72 G4Pow* g4pow; 73 const G4ParticleDefinition* proton; 86 74 87 88 //J. M.Quesada (May. 08) 89 public: 90 // inline G4double GetTransitionProb1() const 91 G4double GetTransitionProb1() 92 { 93 return TransitionProb1; 94 } 95 // inline G4double GetTransitionProb2() const 96 G4double GetTransitionProb2() 97 { 98 return TransitionProb2; 99 } 100 // inline G4double GetTransitionProb3() const 101 G4double GetTransitionProb3() 102 { 103 return TransitionProb3; 104 } 105 75 G4double FermiEnergy; 76 G4double r0; // Nuclear radius 77 G4double aLDP;// Level density parameter 106 78 }; 107 79 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTriton.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PreCompoundTriton.hh,v 1.12 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 26 28 // 27 29 // by V. Lara 28 30 // 29 //J. M. Quesada (July 08) 31 // Modified: 32 // J. M. Quesada (July 08) cleanup 33 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 34 // G4ParticleDefinition to constructor, 35 // moved constructor and destructor to source 30 36 31 37 #ifndef G4PreCompoundTriton_h … … 33 39 34 40 #include "G4PreCompoundIon.hh" 35 #include "G4ReactionProduct.hh"36 #include "G4Triton.hh"37 41 #include "G4TritonCoulombBarrier.hh" 38 #include "G4PreCompoundParameters.hh"39 40 42 41 43 class G4PreCompoundTriton : public G4PreCompoundIon 42 44 { 43 45 public: 44 // default constructor45 G4PreCompoundTriton():G4PreCompoundIon(3,1,&theTritonCoulombBarrier,"Triton") {}46 46 47 // copy constructor 48 G4PreCompoundTriton(const G4PreCompoundTriton &right): G4PreCompoundIon(right) {} 47 G4PreCompoundTriton(); 49 48 50 // destructor 51 ~G4PreCompoundTriton() {} 49 virtual ~G4PreCompoundTriton(); 52 50 53 // operators 54 // const G4PreCompoundTriton & operator=(const G4PreCompoundTriton &right) { 55 // if (&right != this) this->G4PreCompoundIon::operator=(right); 56 // return *this; 57 // } 51 protected: 58 52 59 // G4bool operator==(const G4PreCompoundTriton &right) const 60 // { return G4PreCompoundIon::operator==(right);} 53 virtual G4double GetRj(G4int NumberParticles, G4int NumberCharged); 61 54 55 virtual G4double CrossSection(G4double ekin) ; 56 57 virtual G4double FactorialFactor(G4int N, G4int P); 58 59 virtual G4double CoalescenceFactor(G4int A); 60 61 virtual G4double GetAlpha(); 62 62 63 // G4bool operator!=(const G4PreCompoundTriton &right) const 64 // { return G4PreCompoundIon::operator!=(right);} 63 G4double GetOpt12(G4double K); 65 64 66 67 G4ReactionProduct * GetReactionProduct() const; 68 65 G4double GetOpt34(G4double K); 69 66 70 67 private: 71 68 72 virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged); 69 // operators 70 G4PreCompoundTriton(const G4PreCompoundTriton &right); 71 const G4PreCompoundTriton& 72 operator= (const G4PreCompoundTriton &right); 73 G4int operator==(const G4PreCompoundTriton &right) const; 74 G4int operator!=(const G4PreCompoundTriton &right) const; 73 75 74 virtual G4double CrossSection(const G4double K) ; 75 76 virtual G4double FactorialFactor(const G4double N, const G4double P); 77 78 virtual G4double CoalescenceFactor(const G4double A); 79 80 G4double GetOpt0(const G4double K); 81 G4double GetOpt12(const G4double K); 82 G4double GetOpt34(const G4double K); 83 84 G4double GetAlpha(); 85 86 G4double GetBeta(); 87 88 //data members 89 90 G4TritonCoulombBarrier theTritonCoulombBarrier; 91 G4double ResidualA; 92 G4double ResidualZ; 93 G4double theA; 94 G4double theZ; 95 G4double ResidualAthrd; 96 G4double FragmentA; 97 G4double FragmentAthrd; 76 G4TritonCoulombBarrier theTritonCoulombBarrier; 77 G4double ResidualAthrd; 78 G4double FragmentAthrd; 79 G4int FragmentA; 80 G4int ResidualA; 81 G4int ResidualZ; 82 G4int theA; 83 G4int theZ; 98 84 }; 99 85 -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundEmissionFactory.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 26 // $Id: G4VPreCompoundEmissionFactory.hh,v 1.3 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 27 29 // by V. Lara 28 30 // 29 31 30 32 #ifndef G4VPreCompoundEmissionFactory_hh 31 33 #define G4VPreCompoundEmissionFactory_hh 32 33 34 34 35 #include "G4VPreCompoundFragment.hh" … … 38 39 { 39 40 public: 40 G4VPreCompoundEmissionFactory() : _fragvector(0) {}; 41 42 G4VPreCompoundEmissionFactory(); 43 41 44 virtual ~G4VPreCompoundEmissionFactory(); 42 45 43 private: 44 G4VPreCompoundEmissionFactory(const G4VPreCompoundEmissionFactory & ) {}; 45 const G4VPreCompoundEmissionFactory & operator=(const G4VPreCompoundEmissionFactory & val); 46 G4bool operator==(const G4VPreCompoundEmissionFactory & val) const; 47 G4bool operator!=(const G4VPreCompoundEmissionFactory & val) const; 48 49 public: 50 51 std::vector<G4VPreCompoundFragment*> * GetFragmentVector(); 46 inline std::vector<G4VPreCompoundFragment*> * GetFragmentVector(); 52 47 53 48 protected: … … 56 51 57 52 private: 58 std::vector<G4VPreCompoundFragment*> * _fragvector; 53 54 G4VPreCompoundEmissionFactory(const G4VPreCompoundEmissionFactory & ); 55 const G4VPreCompoundEmissionFactory & operator= 56 (const G4VPreCompoundEmissionFactory & val); 57 G4bool operator==(const G4VPreCompoundEmissionFactory & val) const; 58 G4bool operator!=(const G4VPreCompoundEmissionFactory & val) const; 59 60 std::vector<G4VPreCompoundFragment*> * fragvector; 59 61 60 62 struct DeleteFragment … … 68 70 69 71 }; 72 73 inline std::vector<G4VPreCompoundFragment*> * 74 G4VPreCompoundEmissionFactory::GetFragmentVector() 75 { 76 if (fragvector == 0) { fragvector = CreateFragmentVector(); } 77 return fragvector; 78 } 79 70 80 #endif -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // 27 // $Id: G4VPreCompoundFragment.hh,v 1.10 2009/02/10 16:01:37 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 26 // $Id: G4VPreCompoundFragment.hh,v 1.11 2010/08/28 15:16:55 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 28 // 30 29 // J. M. Quesada (August 2008). … … 35 34 // JMQ (06 September 2008) Also external choice has been added for: 36 35 // - superimposed Coulomb barrier (if useSICB=true) 36 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added 37 // G4ParticleDefinition to constructor, 38 // inline method to build G4ReactionProduct; 39 // remove string name 40 // 37 41 38 42 #ifndef G4VPreCompoundFragment_h … … 41 45 #include "G4ios.hh" 42 46 #include <iomanip> 43 #include "G4Particle Table.hh"47 #include "G4ParticleDefinition.hh" 44 48 #include "G4IonTable.hh" 45 49 #include "G4Fragment.hh" 46 50 #include "G4VCoulombBarrier.hh" 47 48 class G4ReactionProduct; 51 #include "G4ReactionProduct.hh" 52 #include "G4PreCompoundParameters.hh" 53 #include "G4Pow.hh" 49 54 50 55 class G4VPreCompoundFragment 51 56 { 57 public: 58 52 59 // ============================ 53 60 // Constructors and destructor 54 61 // ============================ 55 56 protected:57 // default constructor58 G4VPreCompoundFragment() {};59 62 60 public: 61 // copy constructor 62 G4VPreCompoundFragment(const G4VPreCompoundFragment &right); 63 64 // constructor 65 G4VPreCompoundFragment(const G4double anA, const G4double aZ, 66 G4VCoulombBarrier * aCoulombBarrier, 67 const G4String & aName); 68 63 G4VPreCompoundFragment(const G4ParticleDefinition*, 64 G4VCoulombBarrier * aCoulombBarrier); 69 65 70 66 virtual ~G4VPreCompoundFragment(); … … 73 69 // operators 74 70 // ========== 75 76 const G4VPreCompoundFragment&77 operator= (const G4VPreCompoundFragment &right);78 79 G4int operator==(const G4VPreCompoundFragment &right) const;80 81 G4int operator!=(const G4VPreCompoundFragment &right) const;82 71 83 72 friend std::ostream& … … 89 78 // Pure Virtual methods 90 79 // ===================== 91 virtual G4ReactionProduct * GetReactionProduct() const = 0;92 80 93 81 // Initialization method … … 103 91 virtual G4double GetKineticEnergy(const G4Fragment & aFragment) = 0; 104 92 105 public: 106 inline G4double GetA() const; 93 inline G4ReactionProduct * GetReactionProduct() const; 94 95 inline G4int GetA() const; 107 96 108 inline G4 doubleGetZ() const;97 inline G4int GetZ() const; 109 98 110 inline G4 doubleGetRestA() const;99 inline G4int GetRestA() const; 111 100 112 inline G4double GetRestZ() const; 101 inline G4int GetRestZ() const; 102 103 inline G4double ResidualA13() const; 113 104 114 105 inline G4double GetCoulombBarrier() const; … … 128 119 inline G4double GetReducedMass() const; 129 120 130 inline const G4LorentzVector GetMomentum() const;121 inline const G4LorentzVector& GetMomentum() const; 131 122 132 123 inline void SetMomentum(const G4LorentzVector & value); 133 124 134 inline void SetFragmentName(const G4String& aName);135 136 125 inline const G4String GetName() const; 137 138 inline void ResetStage();139 140 inline G4int GetStage() const;141 142 inline void IncrementStage();143 126 144 127 //for inverse cross section choice … … 147 130 inline void UseSICB(G4bool); 148 131 132 protected: 149 133 134 inline G4bool IsItPossible(const G4Fragment & aFragment) const; 135 136 private: 137 138 // default constructor 139 G4VPreCompoundFragment(); 140 // copy constructor 141 G4VPreCompoundFragment(const G4VPreCompoundFragment &right); 142 const G4VPreCompoundFragment& 143 operator= (const G4VPreCompoundFragment &right); 144 G4int operator==(const G4VPreCompoundFragment &right) const; 145 G4int operator!=(const G4VPreCompoundFragment &right) const; 150 146 151 147 // ============= … … 153 149 // ============= 154 150 155 156 private: 157 158 G4double theA; 159 160 G4double theZ; 161 private: 162 163 G4double theRestNucleusA; 164 165 G4double theRestNucleusZ; 166 protected: 167 G4double theCoulombBarrier; 168 private: 151 const G4ParticleDefinition* particle; 169 152 G4VCoulombBarrier * theCoulombBarrierPtr; 170 153 154 G4int theA; 155 G4int theZ; 156 G4int theRestNucleusA; 157 G4int theRestNucleusZ; 158 159 G4double theRestNucleusA13; 171 160 G4double theBindingEnergy; 161 G4double theMaximalKineticEnergy; 162 G4double theRestNucleusMass; 163 G4double theReducedMass; 164 G4double theMass; 172 165 173 G4 double theMaximalKineticEnergy;166 G4LorentzVector theMomentum; 174 167 175 168 protected: 169 170 G4PreCompoundParameters* theParameters; 171 G4Pow* g4pow; 172 176 173 G4double theEmissionProbability; 177 private: 178 G4LorentzVector theMomentum; 179 180 G4String theFragmentName; 174 G4double theCoulombBarrier; 181 175 182 G4int theStage; 183 184 protected: 185 //for inverse cross section choice 176 //for inverse cross section choice 186 177 G4int OPTxs; 187 //for superimposed Coulomb Barrier for inverse cross sections178 //for superimposed Coulomb Barrier for inverse cross sections 188 179 G4bool useSICB; 189 180 }; -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.icc
r1337 r1340 25 25 // 26 26 // 27 // $Id: G4VPreCompoundFragment.icc,v 1. 7 2008/09/22 10:18:36 ahowardExp $28 // GEANT4 tag $Name: geant4-09-0 4-beta-01$27 // $Id: G4VPreCompoundFragment.icc,v 1.8 2010/08/28 15:16:55 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 29 29 // 30 30 // by V. Lara … … 34 34 // JMQ (06 September 2008) Also external choice has been added for: 35 35 // - superimposed Coulomb barrier (if useSICB=true) 36 // 23.08.2010 V.Ivanchenko general cleanup, move constructor and destructor 37 // the source, make GetReactionProduct() and IsItPossible inlined 36 38 37 inline G4double G4VPreCompoundFragment::GetA() const 39 inline G4bool G4VPreCompoundFragment:: 40 IsItPossible(const G4Fragment & aFragment) const 41 { 42 G4int pplus = aFragment.GetNumberOfCharged(); 43 G4int pneut = aFragment.GetNumberOfParticles()-pplus; 44 return ((pneut >= theA - theZ) && (pplus >= theZ) 45 && (theMaximalKineticEnergy > 0)); 46 } 47 48 49 inline 50 G4ReactionProduct * G4VPreCompoundFragment::GetReactionProduct() const 51 { 52 G4ReactionProduct * theReactionProduct = 53 new G4ReactionProduct(const_cast<G4ParticleDefinition*>(particle)); 54 theReactionProduct->SetMomentum(GetMomentum().vect()); 55 theReactionProduct->SetTotalEnergy(GetMomentum().e()); 56 return theReactionProduct; 57 } 58 59 inline G4int G4VPreCompoundFragment::GetA() const 38 60 { 39 61 return theA; 40 62 } 41 63 42 inline G4 doubleG4VPreCompoundFragment::GetZ() const64 inline G4int G4VPreCompoundFragment::GetZ() const 43 65 { 44 66 return theZ; 45 67 } 46 68 47 inline G4 doubleG4VPreCompoundFragment::GetRestA() const69 inline G4int G4VPreCompoundFragment::GetRestA() const 48 70 { 49 71 return theRestNucleusA; 50 72 } 51 73 52 inline G4 doubleG4VPreCompoundFragment::GetRestZ() const74 inline G4int G4VPreCompoundFragment::GetRestZ() const 53 75 { 54 76 return theRestNucleusZ; 77 } 78 79 inline G4double G4VPreCompoundFragment::ResidualA13() const 80 { 81 return theRestNucleusA13; 55 82 } 56 83 … … 82 109 inline G4double G4VPreCompoundFragment::GetNuclearMass(void) const 83 110 { 84 return G4ParticleTable::GetParticleTable()-> 85 GetIonTable()->GetIonMass(static_cast<G4int>(theZ),static_cast<G4int>(theA)); 111 return theMass; 86 112 } 87 88 113 89 114 inline G4double G4VPreCompoundFragment::GetRestNuclearMass() const 90 115 { 91 return G4ParticleTable::GetParticleTable()->GetIonTable()-> 92 GetIonMass(static_cast<G4int>(theRestNucleusZ),static_cast<G4int>(theRestNucleusA)); 116 return theRestNucleusMass; 93 117 } 94 95 118 96 119 inline G4double G4VPreCompoundFragment::GetReducedMass() const 97 120 { 98 return GetRestNuclearMass()*GetNuclearMass()/ 99 (GetNuclearMass()+GetRestNuclearMass()); 121 return theReducedMass; 100 122 } 101 123 102 103 inline const G4LorentzVector G4VPreCompoundFragment:: 104 GetMomentum() const 124 inline 125 const G4LorentzVector& G4VPreCompoundFragment::GetMomentum() const 105 126 { 106 127 return theMomentum; 107 128 } 108 109 129 110 inline void G4VPreCompoundFragment::111 SetMomentum(const G4LorentzVector & value)130 inline 131 void G4VPreCompoundFragment::SetMomentum(const G4LorentzVector & value) 112 132 { 113 133 theMomentum = value; 114 }115 116 inline void G4VPreCompoundFragment::117 SetFragmentName(const G4String& aName)118 {119 theFragmentName = aName;120 134 } 121 135 … … 123 137 GetName() const 124 138 { 125 return theFragmentName; 126 } 127 128 inline void G4VPreCompoundFragment::ResetStage() 129 { 130 theStage = 1; 131 } 132 133 inline G4int G4VPreCompoundFragment::GetStage() const 134 { 135 return theStage; 136 } 137 138 inline void G4VPreCompoundFragment::IncrementStage() 139 { 140 theStage++; 139 return particle->GetParticleName(); 141 140 } 142 141 … … 145 144 { 146 145 OPTxs=opt; 147 return;148 146 } 149 147 … … 152 150 { 153 151 useSICB=use; 154 return;155 152 } -
trunk/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundTransitions.hh
r962 r1340 24 24 // ******************************************************************** 25 25 // 26 //J. M. Quesada (May 08). New virtual classes have been added 26 // $Id: G4VPreCompoundTransitions.hh,v 1.6 2010/08/20 07:42:19 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-ref-09 $ 28 // 29 // J. M. Quesada (May 08). New virtual classes have been added Prob1,2,3 27 30 // JMQ (06 September 2008) Also external choices have been added for: 28 31 // - "never go back" hipothesis (useNGB=true) 29 32 // - CEM transition probabilities (useCEMtr=true) 33 // 20.08.2010 V.Ivanchenko move constructor and destructor to the source 30 34 31 35 #ifndef G4VPreCompoundTransitions_hh … … 38 42 public: 39 43 40 G4VPreCompoundTransitions() :useNGB(false),useCEMtr(false) {}41 virtual ~G4VPreCompoundTransitions() {}44 G4VPreCompoundTransitions(); 45 virtual ~G4VPreCompoundTransitions(); 42 46 43 47 virtual G4double CalculateProbability(const G4Fragment& aFragment) = 0; 44 virtual G4Fragment PerformTransition(const G4Fragment& aFragment) = 0; 45 //J. M. Quesada (May.08) New virtual classes 46 virtual G4double GetTransitionProb1()=0; 47 virtual G4double GetTransitionProb2()=0; 48 virtual G4double GetTransitionProb3()=0; 48 virtual void PerformTransition(G4Fragment& aFragment) = 0; 49 50 inline G4double GetTransitionProb1() const; 51 52 inline G4double GetTransitionProb2() const; 53 54 inline G4double GetTransitionProb3() const; 49 55 50 56 // for never go back hypothesis (if useNGB=true, default=false) … … 53 59 inline void UseCEMtr(G4bool use){useCEMtr=use;} 54 60 61 private: 62 63 G4VPreCompoundTransitions(const G4VPreCompoundTransitions &); 64 const G4VPreCompoundTransitions& operator=(const G4VPreCompoundTransitions &right); 65 G4bool operator==(const G4VPreCompoundTransitions &right) const; 66 G4bool operator!=(const G4VPreCompoundTransitions &right) const; 67 55 68 protected: 69 56 70 G4bool useNGB; 57 71 G4bool useCEMtr; 72 73 G4double TransitionProb1; 74 G4double TransitionProb2; 75 G4double TransitionProb3; 58 76 }; 59 77 78 //J. M.Quesada (May. 08) 79 inline G4double G4VPreCompoundTransitions::GetTransitionProb1() const 80 { 81 return TransitionProb1; 82 } 83 inline G4double G4VPreCompoundTransitions::GetTransitionProb2() const 84 { 85 return TransitionProb2; 86 } 87 inline G4double G4VPreCompoundTransitions::GetTransitionProb3() const 88 { 89 return TransitionProb3; 90 } 91 92 60 93 #endif
Note: See TracChangeset
for help on using the changeset viewer.