Changeset 1340 for trunk/source/processes/hadronic/cross_sections/include
- Timestamp:
- Nov 5, 2010, 3:45:55 PM (14 years ago)
- Location:
- trunk/source/processes/hadronic/cross_sections/include
- Files:
-
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/cross_sections/include/G4BGGNucleonElasticXS.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGNucleonElasticXS.hh,v 1. 5 2009/11/19 11:41:30 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4BGGNucleonElasticXS.hh,v 1.6 2010/10/12 06:02:09 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 55 55 #include "G4ParticleDefinition.hh" 56 56 #include "G4Element.hh" 57 #include "G4HadTmpUtil.hh" 57 58 58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......59 59 60 60 class G4GlauberGribovCrossSection; … … 74 74 75 75 virtual 76 G4bool Is ZAApplicable(const G4DynamicParticle*, G4double Z, G4doubleA);76 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A); 77 77 78 78 virtual … … 81 81 82 82 virtual 83 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4double/*Z*/,84 G4double/*A*/, G4double aTemperature = 0.);83 G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/, 84 G4int /*A*/, G4double aTemperature = 0.); 85 85 86 86 virtual … … 94 94 void Initialise(); 95 95 96 G4double CoulombFactor(G4double kinEnergy, G4 doubleA);96 G4double CoulombFactor(G4double kinEnergy, G4int A); 97 97 98 98 G4double fGlauberEnergy; … … 109 109 }; 110 110 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......112 111 113 112 inline … … 116 115 { 117 116 return true; 118 // return IsZAApplicable(dp, elm->GetZ(), elm->GetN());119 117 } 120 118 121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......122 119 123 120 inline 124 G4bool G4BGGNucleonElasticXS::Is ZAApplicable(const G4DynamicParticle*,125 G4double /*Z*/, G4double/* A*/)121 G4bool G4BGGNucleonElasticXS::IsIsoApplicable(const G4DynamicParticle*, 122 G4int /*Z*/, G4int/* A*/) 126 123 { 127 124 return true; 128 // return (dp->GetDefinition() == particle);129 125 } 130 126 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......132 127 133 128 inline … … 136 131 G4double temp) 137 132 { 138 return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp); 133 // return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp); 134 G4int Z = G4lrint(elm->GetZ()); 135 G4int N = G4lrint(elm->GetN()); 136 return GetZandACrossSection(dp, Z, N, temp); 139 137 } 140 138 141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......142 143 139 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4BGGNucleonInelasticXS.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGNucleonInelasticXS.hh,v 1. 6 2009/11/19 11:44:46 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4BGGNucleonInelasticXS.hh,v 1.7 2010/10/12 06:02:28 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 55 55 #include "G4ParticleDefinition.hh" 56 56 #include "G4Element.hh" 57 #include "G4HadTmpUtil.hh" 57 58 58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......59 59 60 60 class G4GlauberGribovCrossSection; … … 74 74 75 75 virtual 76 G4bool Is ZAApplicable(const G4DynamicParticle*, G4double Z, G4doubleA);76 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A); 77 77 78 78 virtual … … 81 81 82 82 virtual 83 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4double/*Z*/,84 G4double/*A*/, G4double aTemperature = 0.);83 G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/, 84 G4int /*A*/, G4double aTemperature = 0.); 85 85 86 86 virtual … … 94 94 void Initialise(); 95 95 96 G4double CoulombFactor(G4double kinEnergy, G4 doubleA);96 G4double CoulombFactor(G4double kinEnergy, G4int A); 97 97 98 98 G4double fGlauberEnergy; … … 109 109 }; 110 110 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......112 111 113 112 inline … … 116 115 { 117 116 return true; 118 // return IsZAApplicable(dp, elm->GetZ(), elm->GetN());119 117 } 120 118 121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......122 119 123 120 inline 124 G4bool G4BGGNucleonInelasticXS::Is ZAApplicable(const G4DynamicParticle*,125 G4double /*Z*/, G4double/* A*/)121 G4bool G4BGGNucleonInelasticXS::IsIsoApplicable(const G4DynamicParticle*, 122 G4int /*Z*/, G4int/* A*/) 126 123 { 127 124 return false; 128 // return (dp->GetDefinition() == particle);129 125 } 130 126 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......132 127 133 128 inline … … 136 131 G4double temp) 137 132 { 138 return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp); 133 G4int Z = G4lrint(elm->GetZ()); 134 G4int N = G4lrint(elm->GetN()); 135 return GetZandACrossSection(dp, Z, N, temp); 139 136 } 140 137 141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......142 138 143 139 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4BGGPionElasticXS.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGPionElasticXS.hh,v 1. 5 2009/11/19 11:46:13 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4BGGPionElasticXS.hh,v 1.7 2010/10/20 09:07:38 stesting Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 55 55 #include "G4ParticleDefinition.hh" 56 56 #include "G4Element.hh" 57 #include "G4HadTmpUtil.hh" 57 58 58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......59 59 60 60 class G4GlauberGribovCrossSection; … … 73 73 G4bool IsApplicable(const G4DynamicParticle*, const G4Element*); 74 74 75 // virtual 76 // G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A); 77 75 78 virtual 76 G4bool Is ZAApplicable(const G4DynamicParticle*, G4double Z, G4doubleA);79 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A); 77 80 78 81 virtual … … 80 83 const G4Element*, G4double aTemperature = 0.); 81 84 85 // virtual 86 // G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/, 87 // G4double /*A*/, G4double aTemperature = 0.); 88 82 89 virtual 83 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4double/*Z*/,84 G4double/*A*/, G4double aTemperature = 0.);90 G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/, 91 G4int /*A*/, G4double aTemperature = 0.); 85 92 86 93 virtual … … 94 101 void Initialise(); 95 102 96 G4double CoulombFactor(G4double kinEnergy, G4double A); 103 // G4double CoulombFactor(G4double kinEnergy, G4double A); 104 G4double CoulombFactor(G4double kinEnergy, G4int A); 97 105 98 106 G4double fGlauberEnergy; … … 116 124 { 117 125 return true; 118 //return IsZAApplicable(dp, elm->GetZ(), elm->GetN());119 126 } 120 127 121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 128 //inline 129 //G4bool G4BGGPionElasticXS::IsZAApplicable(const G4DynamicParticle*, 130 // G4double /*Z*/, G4double/* A*/) 122 131 123 132 inline 124 G4bool G4BGGPionElasticXS::Is ZAApplicable(const G4DynamicParticle*,125 G4double /*Z*/, G4double/* A*/)133 G4bool G4BGGPionElasticXS::IsIsoApplicable(const G4DynamicParticle*, 134 G4int /*Z*/, G4int/* A*/) 126 135 { 127 136 return false; 128 // return (dp->GetDefinition() == particle);129 137 } 130 138 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......132 139 133 inline 140 inline 134 141 G4double G4BGGPionElasticXS::GetCrossSection(const G4DynamicParticle* dp, 135 142 const G4Element* elm, 136 143 G4double temp) 137 144 { 138 return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp); 145 // return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp); 146 G4int Z = G4lrint(elm->GetZ()); 147 G4int N = G4lrint(elm->GetN()); 148 return GetZandACrossSection(dp, Z, N, temp); 139 149 } 140 150 141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......142 143 151 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4BGGPionInelasticXS.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BGGPionInelasticXS.hh,v 1. 5 2009/11/19 11:47:19 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4BGGPionInelasticXS.hh,v 1.6 2010/10/12 06:04:02 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 55 55 #include "G4ParticleDefinition.hh" 56 56 #include "G4Element.hh" 57 #include "G4HadTmpUtil.hh" 57 58 58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......59 59 60 60 class G4GlauberGribovCrossSection; … … 73 73 G4bool IsApplicable(const G4DynamicParticle*, const G4Element*); 74 74 75 // virtual 76 // G4bool IsZAApplicable(const G4DynamicParticle*, G4double Z, G4double A); 77 75 78 virtual 76 G4bool Is ZAApplicable(const G4DynamicParticle*, G4double Z, G4doubleA);79 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A); 77 80 78 81 virtual … … 80 83 const G4Element*, G4double aTemperature = 0.); 81 84 85 // virtual 86 // G4double GetIsoZACrossSection(const G4DynamicParticle*, G4double /*Z*/, 87 // G4double /*A*/, G4double aTemperature = 0.); 88 82 89 virtual 83 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4double/*Z*/,84 G4double/*A*/, G4double aTemperature = 0.);90 G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/, 91 G4int /*A*/, G4double aTemperature = 0.); 85 92 86 93 virtual … … 94 101 void Initialise(); 95 102 96 G4double CoulombFactor(G4double kinEnergy, G4 doubleA);103 G4double CoulombFactor(G4double kinEnergy, G4int A); 97 104 98 105 G4double fGlauberEnergy; … … 109 116 }; 110 117 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......112 118 113 119 inline … … 116 122 { 117 123 return true; 118 // return IsZAApplicable(dp, elm->GetZ(), elm->GetN());119 124 } 120 125 121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......122 126 123 127 inline 124 G4bool G4BGGPionInelasticXS::Is ZAApplicable(const G4DynamicParticle*,125 G4double /*Z*/, G4double/* A*/)128 G4bool G4BGGPionInelasticXS::IsIsoApplicable(const G4DynamicParticle*, 129 G4int /*Z*/, G4int/* A*/) 126 130 { 127 131 return false; 128 // return (dp->GetDefinition() == particle);129 132 } 130 133 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......132 134 133 135 inline … … 136 138 G4double temp) 137 139 { 138 return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp); 140 // return GetIsoZACrossSection(dp, elm->GetZ(), elm->GetN(), temp); 141 G4int Z = G4lrint(elm->GetZ()); 142 G4int N = G4lrint(elm->GetN()); 143 return GetZandACrossSection(dp, Z, N, temp); 139 144 } 140 145 141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......142 143 146 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4EMDissociationCrossSection.hh
r819 r1340 79 79 virtual G4bool IsApplicable (const G4DynamicParticle*, const G4Element*); 80 80 81 virtual G4bool IsZAApplicable(const G4DynamicParticle*, G4double ZZ, 82 G4double AA); 81 virtual G4bool IsIsoApplicable(const G4DynamicParticle*, G4int ZZ, G4int AA); 83 82 84 83 virtual G4double GetCrossSection (const G4DynamicParticle *, 85 84 const G4Element *, G4double); 86 85 87 virtual G4double Get IsoZACrossSection(const G4DynamicParticle*,88 G4 double ZZ, G4doubleAA,86 virtual G4double GetZandACrossSection(const G4DynamicParticle*, 87 G4int ZZ, G4int AA, 89 88 G4double temperature); 90 89 … … 110 109 G4double xd; 111 110 }; 112 /////////////////////////////////////////////////////////////////////////////// 113 // 111 114 112 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4ElectroNuclearCrossSection.hh
r1337 r1340 25 25 // 26 26 // 27 // GEANT4 tag $Name: geant4-09-04-beta-01$27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // … … 55 55 G4bool IsApplicable(const G4DynamicParticle* aParticle, const G4Element* ) 56 56 { 57 return Is ZAApplicable(aParticle, 0., 0.);57 return IsIsoApplicable(aParticle, 0, 0); 58 58 } 59 59 60 G4bool Is ZAApplicable(const G4DynamicParticle* aParticle, G4double /*ZZ*/,61 G4double/*AA*/)60 G4bool IsIsoApplicable(const G4DynamicParticle* aParticle, 61 G4int /*ZZ*/, G4int /*AA*/) 62 62 { 63 63 G4bool result = false; 64 if( aParticle->GetDefinition()==G4Electron::ElectronDefinition()) result = true; 65 if( aParticle->GetDefinition()==G4Positron::PositronDefinition()) result = true; 64 if (aParticle->GetDefinition() == G4Electron::ElectronDefinition()) 65 result = true; 66 if (aParticle->GetDefinition() == G4Positron::PositronDefinition()) 67 result = true; 66 68 return result; 67 69 } … … 71 73 const G4Element* anElement, G4double T=0.); 72 74 73 G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle, 74 G4double ZZ, G4double AA, G4double T=0.); 75 75 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 76 G4int ZZ, G4int AA, G4double T=0.); 76 77 77 78 G4double GetEquivalentPhotonEnergy(); … … 87 88 private: 88 89 G4int GetFunctions(G4double a, G4double* x, G4double* y, G4double* z); 89 //G4double LinearFit(G4double X, G4int N, const G4double* XN, const G4double* YN); 90 90 91 G4double ThresholdEnergy(G4int Z, G4int N); 91 92 G4double HighEnergyJ1(G4double lE); … … 111 112 static G4double lastH; // Last value of the High energy A-dependence 112 113 113 static std::vector <G4double*> J1; // Vector of pointers to the J1 tabulated functions 114 static std::vector <G4double*> J2; // Vector of pointers to the J2 tabulated functions 115 static std::vector <G4double*> J3; // Vector of pointers to the J3 tabulated functions 114 // Vector of pointers to the J1 tabulated functions 115 static std::vector <G4double*> J1; 116 117 // Vector of pointers to the J2 tabulated functions 118 static std::vector <G4double*> J2; 119 120 // Vector of pointers to the J3 tabulated functions 121 static std::vector <G4double*> J3; 116 122 }; 117 123 118 inline G4double G4ElectroNuclearCrossSection::DFun(G4double x)// Parametrization of the PhotoNucCS 124 125 inline G4double 126 G4ElectroNuclearCrossSection::DFun(G4double x) 119 127 { 120 static const G4double shd=1.0734; // HE PomShadowing(D) 121 static const G4double poc=0.0375; // HE Pomeron coefficient 122 static const G4double pos=16.5; // HE Pomeron shift 123 static const G4double reg=.11; // HE Reggeon slope 124 static const G4double mel=0.5109989; // Mass of an electron in MeV 125 static const G4double lmel=std::log(mel); // Log of an electron mass 126 G4double y=std::exp(x-lastG-lmel); // y for the x 127 G4double flux=lastG*(2.-y*(2.-y))-1.; // flux factor 128 // Parametrization of the PhotoNucCS 129 static const G4double shd=1.0734; // HE PomShadowing(D) 130 static const G4double poc=0.0375; // HE Pomeron coefficient 131 static const G4double pos=16.5; // HE Pomeron shift 132 static const G4double reg=.11; // HE Reggeon slope 133 static const G4double mel=0.5109989; // Mass of an electron in MeV 134 static const G4double lmel=std::log(mel); // Log of an electron mass 135 G4double y=std::exp(x-lastG-lmel); // y for the x 136 G4double flux=lastG*(2.-y*(2.-y))-1.; // flux factor 128 137 return (poc*(x-pos)+shd*std::exp(-reg*x))*flux; 129 138 } 130 139 131 inline G4double G4ElectroNuclearCrossSection::Fun(G4double x) // Integrated PhoNuc cross section 140 141 inline G4double 142 G4ElectroNuclearCrossSection::Fun(G4double x) 132 143 { 144 // Integrated PhoNuc cross section 133 145 G4double dlg1=lastG+lastG-1.; 134 146 G4double lgoe=lastG/lastE; … … 137 149 } 138 150 139 inline G4double G4ElectroNuclearCrossSection::HighEnergyJ1(G4double lEn) 151 152 inline G4double 153 G4ElectroNuclearCrossSection::HighEnergyJ1(G4double lEn) 140 154 { 141 155 static const G4double le=std::log(50000.); // std::log(E0) … … 150 164 } 151 165 152 inline G4double G4ElectroNuclearCrossSection::HighEnergyJ2(G4double lEn) 166 167 inline G4double 168 G4ElectroNuclearCrossSection::HighEnergyJ2(G4double lEn) 153 169 { 154 170 static const G4double e=50000.; // E0 … … 164 180 } 165 181 166 inline G4double G4ElectroNuclearCrossSection::HighEnergyJ3(G4double lEn) 182 183 inline G4double 184 G4ElectroNuclearCrossSection::HighEnergyJ3(G4double lEn) 167 185 { 168 186 static const G4double e=50000.; // E0 -
trunk/source/processes/hadronic/cross_sections/include/G4GGNuclNuclCrossSection.hh
r1228 r1340 31 31 // 32 32 // 33 //34 //35 //36 33 // 24.11.08 V. Grichine - first implementation based on G4GlauberGribovCrossSection 37 34 // … … 60 57 61 58 virtual 62 G4bool Is ZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4doubleA);59 G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int Z, G4int A); 63 60 64 61 virtual … … 68 65 69 66 virtual 70 G4double Get IsoZACrossSection(const G4DynamicParticle*,71 G4 double Z, G4doubleA,67 G4double GetZandACrossSection(const G4DynamicParticle*, 68 G4int Z, G4int A, 72 69 G4double aTemperature = 0.0); 73 70 74 71 G4double GetCoulombBarier(const G4DynamicParticle*, 75 72 G4double Z, G4double A, G4double pR, G4double tR); 76 73 77 74 virtual … … 87 84 88 85 G4double GetHadronNucleonXsc(const G4DynamicParticle*, const G4Element*); 89 G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4 double At, G4doubleZt);86 G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4int At, G4int Zt); 90 87 91 88 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, const G4Element*); 92 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4double At, G4double Zt); 93 94 // G4double GetHadronNucleonXscNS(const G4DynamicParticle*, const G4Element*); 95 // G4double GetHadronNucleonXscNS(const G4DynamicParticle*,G4double At, G4double Zt); 96 89 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4int At, G4int Zt); 97 90 G4double GetHadronNucleonXscNS(G4ParticleDefinition*,G4double pTkin, G4ParticleDefinition*); 98 91 99 // G4double GetHNinelasticXsc(const G4DynamicParticle*, const G4Element*); 100 // G4double GetHNinelasticXsc(const G4DynamicParticle*, G4double At, G4double Zt); 101 102 G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4double At, G4double Zt); 103 104 G4double CalculateEcmValue ( const G4double , const G4double , const G4double ); 105 92 G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4int At, G4int Zt); 93 G4double CalculateEcmValue(const G4double, const G4double, const G4double); 106 94 G4double CalcMandelstamS( const G4double , const G4double , const G4double ); 107 95 108 G4double GetElasticGlauberGribov(const G4DynamicParticle*,G4 double Z, G4doubleA);109 G4double GetInelasticGlauberGribov(const G4DynamicParticle*,G4 double Z, G4doubleA);96 G4double GetElasticGlauberGribov(const G4DynamicParticle*,G4int Z, G4int A); 97 G4double GetInelasticGlauberGribov(const G4DynamicParticle*,G4int Z, G4int A); 110 98 111 99 G4double GetTotalGlauberGribovXsc() { return fTotalXsc; }; … … 118 106 G4double GetNucleusRadius(const G4DynamicParticle*, const G4Element*); 119 107 120 121 108 G4double GetNucleusRadius(G4double At); 122 109 G4double GetNucleusRadiusGG(G4double At); 123 110 G4double GetNucleusRadiusDE(G4double At); 124 125 111 126 112 inline void SetEnergyLowerLimit(G4double E ){fLowerLimit=E;}; … … 144 130 // Inlines 145 131 146 inline 147 G4 double G4GGNuclNuclCrossSection::GetElasticGlauberGribov(148 const G4DynamicParticle* dp, G4double Z, G4doubleA)132 inline G4double 133 G4GGNuclNuclCrossSection::GetElasticGlauberGribov(const G4DynamicParticle* dp, 134 G4int Z, G4int A) 149 135 { 150 Get IsoZACrossSection(dp, Z, A);136 GetZandACrossSection(dp, Z, A); 151 137 return fElasticXsc; 152 138 } … … 154 140 ///////////////////////////////////////////////////////////////// 155 141 156 inline 157 G4 double G4GGNuclNuclCrossSection::GetInelasticGlauberGribov(158 const G4DynamicParticle* dp, G4double Z, G4doubleA)142 inline G4double 143 G4GGNuclNuclCrossSection::GetInelasticGlauberGribov(const G4DynamicParticle* dp, 144 G4int Z, G4int A) 159 145 { 160 Get IsoZACrossSection(dp, Z, A);146 GetZandACrossSection(dp, Z, A); 161 147 return fInelasticXsc; 162 148 } 163 149 164 165 166 150 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4GeneralSpaceNNCrossSection.hh
r819 r1340 91 91 const G4Element* theTarget); 92 92 93 virtual G4bool Is ZAApplicable(const G4DynamicParticle* theProjectile,94 G4 double ZZ, G4doubleAA);93 virtual G4bool IsIsoApplicable(const G4DynamicParticle* theProjectile, 94 G4int ZZ, G4int AA); 95 95 96 96 virtual G4double GetCrossSection(const G4DynamicParticle* theProjectile, 97 97 const G4Element* theTarget, G4double theTemperature); 98 98 99 virtual G4double Get IsoZACrossSection(const G4DynamicParticle* theProjectile,100 G4 double ZZ, G4doubleAA, G4double theTemperature);99 virtual G4double GetZandACrossSection(const G4DynamicParticle* theProjectile, 100 G4int ZZ, G4int AA, G4double theTemperature); 101 101 102 102 virtual void BuildPhysicsTable(const G4ParticleDefinition&) … … 114 114 G4IonsShenCrossSection *Shen; 115 115 }; 116 //////////////////////////////////////////////////////////////////////////////// 117 // 116 118 117 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4GlauberGribovCrossSection.hh
r1228 r1340 47 47 #include "G4Proton.hh" 48 48 #include "G4Nucleus.hh" 49 #include "G4HadTmpUtil.hh" 49 50 50 51 #include "G4VCrossSectionDataSet.hh" … … 63 64 64 65 virtual 65 G4bool Is ZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4doubleA);66 G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int Z, G4int A); 66 67 67 68 virtual … … 71 72 72 73 virtual 73 G4double Get IsoZACrossSection(const G4DynamicParticle*,74 G4double Z, G4double A, 75 74 G4double GetZandACrossSection(const G4DynamicParticle*, 75 G4int Z, G4int A, 76 G4double aTemperature = 0.0); 76 77 77 78 virtual … … 83 84 {G4cout << "G4GlauberGribovCrossSection: uses Glauber-Gribov formula"<<G4endl;} 84 85 85 G4double GetRatioSD(const G4DynamicParticle*, G4 double At, G4doubleZt);86 G4double GetRatioQE(const G4DynamicParticle*, G4 double At, G4doubleZt);86 G4double GetRatioSD(const G4DynamicParticle*, G4int At, G4int Zt); 87 G4double GetRatioQE(const G4DynamicParticle*, G4int At, G4int Zt); 87 88 88 89 G4double GetHadronNucleonXsc(const G4DynamicParticle*, const G4Element*); 89 G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4 double At, G4doubleZt);90 G4double GetHadronNucleonXsc(const G4DynamicParticle*, G4int At, G4int Zt); 90 91 91 92 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, const G4Element*); 92 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4 double At, G4doubleZt);93 G4double GetHadronNucleonXscPDG(const G4DynamicParticle*, G4int At, G4int Zt); 93 94 94 95 G4double GetHadronNucleonXscNS(const G4DynamicParticle*, const G4Element*); 95 G4double GetHadronNucleonXscNS(const G4DynamicParticle*, G4double At, G4doubleZt);96 G4double GetHadronNucleonXscNS(const G4DynamicParticle*, G4int At, G4int Zt); 96 97 97 98 G4double GetHNinelasticXsc(const G4DynamicParticle*, const G4Element*); 98 G4double GetHNinelasticXsc(const G4DynamicParticle*, G4 double At, G4doubleZt);99 G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4 double At, G4doubleZt);99 G4double GetHNinelasticXsc(const G4DynamicParticle*, G4int At, G4int Zt); 100 G4double GetHNinelasticXscVU(const G4DynamicParticle*, G4int At, G4int Zt); 100 101 101 102 G4double CalculateEcmValue ( const G4double , const G4double , const G4double ); … … 103 104 G4double CalcMandelstamS( const G4double , const G4double , const G4double ); 104 105 105 G4double GetElasticGlauberGribov(const G4DynamicParticle*, G4double Z, G4doubleA);106 G4double GetInelasticGlauberGribov(const G4DynamicParticle*, G4double Z, G4doubleA);106 G4double GetElasticGlauberGribov(const G4DynamicParticle*, G4int Z, G4int A); 107 G4double GetInelasticGlauberGribov(const G4DynamicParticle*, G4int Z, G4int A); 107 108 108 109 G4double GetTotalGlauberGribovXsc() { return fTotalXsc; }; … … 114 115 115 116 G4double GetNucleusRadius(const G4DynamicParticle*, const G4Element*); 116 G4double GetNucleusRadius(G4 doubleAt);117 118 inline G4double GetParticleBarCorTot( const G4ParticleDefinition* theParticle, G4double Z);119 inline G4double GetParticleBarCorIn( const G4ParticleDefinition* theParticle, G4double Z);117 G4double GetNucleusRadius(G4int At); 118 119 inline G4double GetParticleBarCorTot(const G4ParticleDefinition* theParticle, G4int Z); 120 inline G4double GetParticleBarCorIn(const G4ParticleDefinition* theParticle, G4int Z); 120 121 121 122 inline void SetEnergyLowerLimit(G4double E ){fLowerLimit=E;}; … … 180 181 181 182 inline 182 G4double G4GlauberGribovCrossSection::GetElasticGlauberGribov( 183 const G4DynamicParticle* dp, G4double Z, G4double A) 184 { 185 GetIsoZACrossSection(dp, Z, A); 183 G4double 184 G4GlauberGribovCrossSection::GetElasticGlauberGribov(const G4DynamicParticle* dp, 185 G4int Z, G4int A) 186 { 187 GetZandACrossSection(dp, Z, A); 186 188 return fElasticXsc; 187 189 } … … 190 192 191 193 inline 192 G4double G4GlauberGribovCrossSection::GetInelasticGlauberGribov( 193 const G4DynamicParticle* dp, G4double Z, G4double A) 194 { 195 GetIsoZACrossSection(dp, Z, A); 194 G4double 195 G4GlauberGribovCrossSection::GetInelasticGlauberGribov(const G4DynamicParticle* dp, 196 G4int Z, G4int A) 197 { 198 GetZandACrossSection(dp, Z, A); 196 199 return fInelasticXsc; 197 200 } … … 204 207 205 208 inline G4double G4GlauberGribovCrossSection::GetParticleBarCorTot( 206 const G4ParticleDefinition* theParticle, G4double Z ) 207 { 208 G4int iZ = G4int(Z); 209 210 if( iZ >= 2 && iZ <= 92) 209 const G4ParticleDefinition* theParticle, G4int Z) 210 { 211 if(Z >= 2 && Z <= 92) 211 212 { 212 if( theParticle == theProton ) return fProtonBarCorrectionTot[ iZ];213 else if( theParticle == theNeutron) return fNeutronBarCorrectionTot[ iZ];214 else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionTot[ iZ];215 else if( theParticle == thePiMinus) return fPionMinusBarCorrectionTot[ iZ];213 if( theParticle == theProton ) return fProtonBarCorrectionTot[Z]; 214 else if( theParticle == theNeutron) return fNeutronBarCorrectionTot[Z]; 215 else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionTot[Z]; 216 else if( theParticle == thePiMinus) return fPionMinusBarCorrectionTot[Z]; 216 217 else return 1.0; 217 218 } … … 226 227 227 228 inline G4double G4GlauberGribovCrossSection::GetParticleBarCorIn( 228 const G4ParticleDefinition* theParticle, G4double Z ) 229 { 230 G4int iZ = G4int(Z); 231 232 if( iZ >= 2 && iZ <= 92) 229 const G4ParticleDefinition* theParticle, G4int Z) 230 { 231 if(Z >= 2 && Z <= 92) 233 232 { 234 if( theParticle == theProton ) return fProtonBarCorrectionIn[ iZ];235 else if( theParticle == theNeutron) return fNeutronBarCorrectionIn[ iZ];236 else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionIn[ iZ];237 else if( theParticle == thePiMinus) return fPionMinusBarCorrectionIn[ iZ];233 if( theParticle == theProton ) return fProtonBarCorrectionIn[Z]; 234 else if( theParticle == theNeutron) return fNeutronBarCorrectionIn[Z]; 235 else if( theParticle == thePiPlus ) return fPionPlusBarCorrectionIn[Z]; 236 else if( theParticle == thePiMinus) return fPionMinusBarCorrectionIn[Z]; 238 237 else return 1.0; 239 238 } -
trunk/source/processes/hadronic/cross_sections/include/G4HadronCaptureDataSet.hh
r819 r1340 23 23 // * acceptance of all terms of the Geant4 Software license. * 24 24 // ******************************************************************** 25 //26 25 // 27 26 // … … 64 63 } 65 64 66 G4bool Is ZAApplicable(const G4DynamicParticle* aParticle,67 G4double ZZ, G4doubleAA)65 G4bool IsIsoApplicable(const G4DynamicParticle* aParticle, 66 G4int ZZ, G4int AA) 68 67 { 69 68 return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA); … … 77 76 } 78 77 79 G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle, 80 G4double ZZ, G4double AA, 81 G4double /*aTemperature*/) 78 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 79 G4int ZZ, G4int AA, G4double /*aTemperature*/) 82 80 { 83 81 return theHadronCrossSections->GetCaptureCrossSection(aParticle, ZZ, AA); -
trunk/source/processes/hadronic/cross_sections/include/G4HadronCrossSections.hh
r1337 r1340 25 25 // 26 26 // 27 // GEANT4 tag $Name: geant4-09-04-beta-01$27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // … … 55 55 #include "G4VProcess.hh" 56 56 #include "G4DynamicParticle.hh" 57 //#include "G4ParticleTypes.hh"57 #include "G4HadTmpUtil.hh" 58 58 #include "G4PionPlus.hh" 59 59 #include "G4PionZero.hh" … … 84 84 #include "G4OmegaMinus.hh" 85 85 #include "G4AntiOmegaMinus.hh" 86 //#include "G4LPhysicsFreeVector.hh"87 86 88 87 … … 95 94 G4HadronCrossSections() 96 95 : prevParticleDefinition(0), lastEkx(0.), lastEkxPower(0.), verboseLevel(0) 97 { 98 } 96 {} 99 97 100 98 ~G4HadronCrossSections() 101 { 102 } 99 {} 103 100 104 101 static G4HadronCrossSections* Instance() … … 123 120 124 121 G4double GetElasticCrossSection(const G4DynamicParticle*, 125 G4 double /*ZZ*/, G4double/*AA*/);122 G4int /*ZZ*/, G4int /*AA*/); 126 123 127 124 G4double GetInelasticCrossSection(const G4DynamicParticle*, … … 129 126 130 127 G4double GetInelasticCrossSection(const G4DynamicParticle*, 131 G4 double /*ZZ*/, G4double/*AA*/);128 G4int /*ZZ*/, G4int /*AA*/); 132 129 133 130 G4double GetCaptureCrossSection(const G4DynamicParticle* aParticle, 134 131 const G4Element* anElement) 135 132 { 136 return GetCaptureCrossSection(aParticle, anElement->GetZ(), 137 anElement->GetN()); 133 G4int Z = G4lrint(anElement->GetZ()); 134 G4int A = G4lrint(anElement->GetN()); 135 return GetCaptureCrossSection(aParticle, Z, A); 138 136 } 139 137 140 138 G4double GetCaptureCrossSection(const G4DynamicParticle*, 141 G4 double /*ZZ*/, G4double/*AA*/);139 G4int /*ZZ*/, G4int /*AA*/); 142 140 143 141 G4double GetFissionCrossSection(const G4DynamicParticle* aParticle, 144 142 const G4Element* anElement) 145 143 { 146 return GetFissionCrossSection(aParticle, anElement->GetZ(), 147 anElement->GetN()); 144 G4int Z = G4lrint(anElement->GetZ()); 145 G4int A = G4lrint(anElement->GetN()); 146 return GetFissionCrossSection(aParticle, Z, A); 148 147 } 149 148 150 149 G4double GetFissionCrossSection(const G4DynamicParticle*, 151 G4 double /*ZZ*/, G4double/*AA*/);150 G4int /*ZZ*/, G4int /*AA*/); 152 151 153 152 … … 177 176 178 177 void CalcScatteringCrossSections(const G4DynamicParticle*, 179 G4 double /*ZZ*/, G4double/*AA*/);178 G4int /*ZZ*/, G4int /*AA*/); 180 179 181 180 static G4HadronCrossSections* theInstance; … … 199 198 static G4float csin[NPARTS][TSIZE]; 200 199 201 202 200 static G4float cspiel[3][TSIZE]; 203 201 static G4float cspiin[3][TSIZE]; -
trunk/source/processes/hadronic/cross_sections/include/G4HadronElasticDataSet.hh
r819 r1340 63 63 } 64 64 65 G4bool Is ZAApplicable(const G4DynamicParticle* aParticle,66 G4double ZZ, G4doubleAA)65 G4bool IsIsoApplicable(const G4DynamicParticle* aParticle, 66 G4int ZZ, G4int AA) 67 67 { 68 68 return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA); … … 77 77 } 78 78 79 G4double Get IsoZACrossSection(const G4DynamicParticle* aParticle,80 G4double ZZ, G4doubleAA,81 G4double /*aTemperature*/)79 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 80 G4int ZZ, G4int AA, 81 G4double /*aTemperature*/) 82 82 { 83 83 return theHadronCrossSections->GetElasticCrossSection(aParticle, ZZ, AA); -
trunk/source/processes/hadronic/cross_sections/include/G4HadronFissionDataSet.hh
r819 r1340 62 62 } 63 63 64 G4bool Is ZAApplicable(const G4DynamicParticle* aParticle,65 G4double ZZ, G4doubleAA)64 G4bool IsIsoApplicable(const G4DynamicParticle* aParticle, 65 G4int ZZ, G4int AA) 66 66 { 67 67 return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA); … … 76 76 } 77 77 78 G4double Get IsoZACrossSection(const G4DynamicParticle* aParticle,79 G4double ZZ, G4doubleAA,80 G4double /*aTemperature*/)78 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 79 G4int ZZ, G4int AA, 80 G4double /*aTemperature*/) 81 81 { 82 82 return theHadronCrossSections->GetFissionCrossSection(aParticle, ZZ, AA); -
trunk/source/processes/hadronic/cross_sections/include/G4HadronInelasticDataSet.hh
r819 r1340 63 63 64 64 65 G4bool Is ZAApplicable(const G4DynamicParticle* aParticle,66 G4double ZZ, G4doubleAA)65 G4bool IsIsoApplicable(const G4DynamicParticle* aParticle, 66 G4int ZZ, G4int AA) 67 67 { 68 68 return theHadronCrossSections->IsApplicable(aParticle, ZZ, AA); … … 77 77 } 78 78 79 G4double Get IsoZACrossSection(const G4DynamicParticle* aParticle,80 G4double ZZ, G4doubleAA,81 G4double /*aTemperature*/)79 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 80 G4int ZZ, G4int AA, 81 G4double /*aTemperature*/) 82 82 { 83 83 return theHadronCrossSections->GetInelasticCrossSection(aParticle, ZZ, AA); -
trunk/source/processes/hadronic/cross_sections/include/G4HadronNucleonXsc.hh
r1228 r1340 31 31 // 32 32 // 33 //34 //35 33 // 14.03.07 V. Grichine - first implementation 36 34 // … … 59 57 60 58 virtual 61 G4bool Is ZAApplicable(const G4DynamicParticle* aDP, G4double Z, G4doubleA);59 G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int Z, G4int A); 62 60 63 61 virtual -
trunk/source/processes/hadronic/cross_sections/include/G4IonProtonCrossSection.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 #ifndef G4IonProtonCrossSection_h 27 #define G4IonProtonCrossSection_h 28 29 #include "globals.hh" 30 #include "G4Proton.hh" 31 // Class Description 26 // $Id: G4IonProtonCrossSection.hh,v 1.12 2010/10/15 21:05:10 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 // 29 // ------------------------------------------------------------------- 30 // 31 // GEANT4 Class header file 32 // 33 // File name: G4IonProtonCrossSection 34 // 35 // 32 36 // Cross-sections for ion proton scattering up to 20 GeV, getting the low 33 37 // energy threshold behaviour right. 34 38 // H.P. Wellisch (TRIUMF), D. Axen (British Columbia U.). 1996. 35 39 // Published in Phys.Rev.C54:1329-1332,1996 36 // Class Description - End 40 // 41 // Original by H.P.Wellisch 28 June 2001 42 // 43 // Modifications: 44 // 30-07-2010 V.Ivanchenko move virtual methods to source, 45 // add constructor and destructor, 46 // make G4ProtonInelasticCrossSection class member, 47 // fix bug in kinematics 48 // 49 50 #ifndef G4IonProtonCrossSection_h 51 #define G4IonProtonCrossSection_h 1 37 52 38 53 #include "G4VCrossSectionDataSet.hh" 39 #include "G4ProtonInelasticCrossSection.hh" 54 #include "globals.hh" 55 56 class G4ProtonInelasticCrossSection; 40 57 41 58 class G4IonProtonCrossSection : public G4VCrossSectionDataSet 42 59 { 43 60 public: 44 61 45 virtual 46 G4bool IsZAApplicable(const G4DynamicParticle* aPart, G4double /*ZZ*/, 47 G4double AA) 48 { 49 G4bool result = false; 50 if((AA < 1.1) && 51 ( aPart->GetKineticEnergy()/aPart->GetDefinition() 52 ->GetBaryonNumber() < 20*GeV && 53 aPart->GetDefinition()->GetBaryonNumber() > 4) 54 ) result = true; 55 return result; 56 } 62 G4IonProtonCrossSection(); 57 63 58 virtual 59 G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element* anEle) 60 { 61 return IsZAApplicable(aPart, 0., anEle->GetN()); 62 } 64 virtual ~G4IonProtonCrossSection(); 63 65 64 virtual 65 G4double GetCrossSection(const G4DynamicParticle* aPart, 66 const G4Element*, G4double ) 67 { 68 return GetIsoZACrossSection(aPart, 0., 0., 0.); 69 } 66 virtual 67 G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element* anEle); 70 68 71 virtual 72 G4double GetIsoZACrossSection(const G4DynamicParticle* aPart, 73 G4double /*ZZ*/, G4double /*AA*/, 74 G4double /*temperature*/) 75 { 76 G4ProtonInelasticCrossSection theForward; 77 return theForward.GetCrossSection(aPart->GetKineticEnergy(), 78 aPart->GetDefinition()->GetBaryonNumber(), 79 aPart->GetDefinition()->GetPDGCharge()); 80 } 69 virtual 70 G4bool IsIsoApplicable(const G4DynamicParticle* aPart, 71 G4int Z, G4int A); 81 72 73 virtual 74 G4double GetCrossSection(const G4DynamicParticle* aPart, 75 const G4Element*, G4double); 76 77 virtual 78 G4double GetZandACrossSection(const G4DynamicParticle* aPart, 79 G4int Z=1, G4int A=1, G4double T=0.); 82 80 83 virtual 84 void BuildPhysicsTable(const G4ParticleDefinition&) 85 {} 81 virtual void BuildPhysicsTable(const G4ParticleDefinition&); 86 82 87 virtual 88 void DumpPhysicsTable(const G4ParticleDefinition&) 89 {G4cout << "G4IonProtonCrossSection: uses formula"<<G4endl;} 83 virtual void DumpPhysicsTable(const G4ParticleDefinition&); 84 85 private: // Without Description 86 87 G4IonProtonCrossSection & operator=(const G4IonProtonCrossSection &right); 88 G4IonProtonCrossSection(const G4IonProtonCrossSection&); 89 90 G4ProtonInelasticCrossSection* theForward; 90 91 91 92 }; -
trunk/source/processes/hadronic/cross_sections/include/G4IonsKoxCrossSection.hh
r819 r1340 57 57 G4bool IsApplicable(const G4DynamicParticle* aDP, const G4Element*) 58 58 { 59 return Is ZAApplicable(aDP, 0., 0.);59 return IsIsoApplicable(aDP, 0, 0); 60 60 } 61 61 62 62 63 virtual 63 G4bool Is ZAApplicable(const G4DynamicParticle* aDP, G4double /*ZZ*/,64 G4double/*AA*/)64 G4bool IsIsoApplicable(const G4DynamicParticle* aDP, 65 G4int /*ZZ*/, G4int /*AA*/) 65 66 { 66 67 G4int baryonNumber = aDP->GetDefinition()->GetBaryonNumber(); … … 71 72 } 72 73 74 73 75 virtual 74 76 G4double GetCrossSection(const G4DynamicParticle*, 75 77 const G4Element*, G4double aTemperature); 76 78 79 77 80 virtual 78 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4doubleZZ,79 G4 doubleAA, G4double aTemperature);81 G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ, 82 G4int AA, G4double aTemperature); 80 83 81 84 virtual -
trunk/source/processes/hadronic/cross_sections/include/G4IonsShenCrossSection.hh
r819 r1340 61 61 G4bool IsApplicable(const G4DynamicParticle* aDP, const G4Element*) 62 62 { 63 return IsZAApplicable(aDP, 0., 0.);63 return IsIsoApplicable(aDP, 0, 0); 64 64 } 65 65 66 66 virtual 67 G4bool Is ZAApplicable(const G4DynamicParticle* aDP,68 G4double /*ZZ*/, G4double/*AA*/)67 G4bool IsIsoApplicable(const G4DynamicParticle* aDP, 68 G4int /*ZZ*/, G4int /*AA*/) 69 69 { 70 71 72 73 74 70 G4int baryonNumber = aDP->GetDefinition()->GetBaryonNumber(); 71 G4double kineticEnergy = aDP->GetKineticEnergy(); 72 if ( kineticEnergy / baryonNumber <= upperLimit ) 73 return true; 74 return false; 75 75 } 76 76 … … 81 81 82 82 virtual 83 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4doubleZZ,84 G4 doubleAA, G4double aTemperature);83 G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ, 84 G4int AA, G4double aTemperature); 85 85 86 86 virtual … … 97 97 const G4double r0; 98 98 99 G4double calEcmValue ( const G4double , const G4double , const G4double);100 G4double calCeValue ( const G4double);99 G4double calEcmValue(const G4double, const G4double, const G4double); 100 G4double calCeValue(const G4double); 101 101 }; 102 102 -
trunk/source/processes/hadronic/cross_sections/include/G4IonsSihverCrossSection.hh
r819 r1340 54 54 G4bool IsApplicable(const G4DynamicParticle* aDP, const G4Element*) 55 55 { 56 return Is ZAApplicable(aDP, 0., 0.);56 return IsIsoApplicable(aDP, 0, 0); 57 57 } 58 58 59 59 virtual 60 G4bool Is ZAApplicable(const G4DynamicParticle* aDP, G4double/*ZZ*/,61 G4double/*AA*/)60 G4bool IsIsoApplicable(const G4DynamicParticle* aDP, G4int /*ZZ*/, 61 G4int /*AA*/) 62 62 { 63 63 G4int BaryonNumber = aDP->GetDefinition()->GetBaryonNumber(); … … 73 73 74 74 virtual 75 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4doubleZZ,76 G4 doubleAA, G4double aTemperature);75 G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ, 76 G4int AA, G4double aTemperature); 77 77 78 78 virtual -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronCaptureXS.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4NeutronCaptureXS.hh,v 1. 1 2009/11/12 00:36:01 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4NeutronCaptureXS.hh,v 1.4 2010/10/15 22:32:40 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 38 38 // Modifications: 39 39 // 40 41 // Class Description: 42 // This is a base class for neutron radiative capture cross section based on 43 // data files from G4NEUTRONXSDATA data set 44 // Class Description - End 40 45 41 42 46 #ifndef G4NeutronCaptureXS_h 43 47 #define G4NeutronCaptureXS_h 1 … … 45 49 #include "G4VCrossSectionDataSet.hh" 46 50 #include "globals.hh" 51 #include <vector> 47 52 48 53 class G4DynamicParticle; … … 55 60 public: // With Description 56 61 57 G4int Z;58 62 G4NeutronCaptureXS(); 59 63 60 64 virtual ~G4NeutronCaptureXS(); 61 65 62 // The following methods need to be implemented for each new data set.63 66 virtual 64 67 G4bool IsApplicable(const G4DynamicParticle*, const G4Element*); 65 68 66 69 virtual 67 G4bool IsZAApplicable(const G4DynamicParticle*, 68 G4double /*Z*/, G4double /*A*/); 70 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*A*/); 69 71 70 72 virtual … … 79 81 void DumpPhysicsTable(const G4ParticleDefinition&); 80 82 81 82 public: // Without Description 83 84 inline void SetVerboseLevel(G4int value) 85 { 86 verboseLevel = value; 87 } 88 inline G4int GetVerboseLevel() 89 { 90 return verboseLevel; 91 } 92 93 private: // Without Description 83 private: 94 84 95 85 void Initialise(G4int Z, const char* = 0); … … 98 88 G4NeutronCaptureXS(const G4NeutronCaptureXS&); 99 89 100 G4double emax; 101 G4PhysicsVector* data[93]; 90 G4double emax; 91 G4int maxZ; 92 std::vector<G4PhysicsVector*> data; 102 93 103 94 G4bool isInitialized; -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronElasticXS.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4NeutronElasticXS.hh,v 1. 3 2009/11/19 11:51:46 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4NeutronElasticXS.hh,v 1.6 2010/10/15 22:32:55 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 39 39 // 40 40 41 // Class Description: 42 // This is a base class for neutron elastic hadronic cross section based on 43 // data files from G4NEUTRONXSDATA data set 44 // Class Description - End 41 45 42 46 #ifndef G4NeutronElasticXS_h … … 45 49 #include "G4VCrossSectionDataSet.hh" 46 50 #include "globals.hh" 51 #include <vector> 47 52 48 53 class G4DynamicParticle; … … 51 56 class G4PhysicsVector; 52 57 class G4GlauberGribovCrossSection; 58 class G4HadronNucleonXsc; 53 59 54 60 class G4NeutronElasticXS : public G4VCrossSectionDataSet … … 56 62 public: // With Description 57 63 58 G4int Z;59 64 G4NeutronElasticXS(); 60 65 61 66 virtual ~G4NeutronElasticXS(); 62 67 63 // The following methods need to be implemented for each new data set.64 68 virtual 65 69 G4bool IsApplicable(const G4DynamicParticle*, const G4Element*); 66 70 67 71 virtual 68 G4bool IsZAApplicable(const G4DynamicParticle*, 69 G4double /*Z*/, G4double /*A*/); 72 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*A*/); 70 73 71 74 virtual … … 80 83 void DumpPhysicsTable(const G4ParticleDefinition&); 81 84 82 public: // Without Description 83 84 inline void SetVerboseLevel(G4int value) 85 { 86 verboseLevel = value; 87 } 88 inline G4int GetVerboseLevel() 89 { 90 return verboseLevel; 91 } 92 93 private: // Without Description 85 private: 94 86 95 87 void Initialise(G4int Z, G4DynamicParticle* dp = 0, const char* = 0); … … 99 91 100 92 G4GlauberGribovCrossSection* ggXsection; 93 G4HadronNucleonXsc* fNucleon; 101 94 102 G4PhysicsVector* data[93]; 103 G4double coeff[93]; 95 const G4ParticleDefinition* proton; 96 97 std::vector<G4PhysicsVector*> data; 98 std::vector<G4double> coeff; 99 G4int maxZ; 104 100 105 101 G4bool isInitialized; -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronInelasticCrossSection.hh
r1228 r1340 58 58 } 59 59 60 G4bool Is ZAApplicable(const G4DynamicParticle* aPart,61 G4double ZZ, G4double/*AA*/)60 G4bool IsIsoApplicable(const G4DynamicParticle* aPart, 61 G4int ZZ, G4int /*AA*/) 62 62 { 63 63 G4bool result = false; … … 74 74 const G4Element*, G4double aTemperature); 75 75 76 G4double Get IsoZACrossSection(const G4DynamicParticle* aParticle,77 G4 double ZZ, G4doubleAA,76 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 77 G4int ZZ, G4int AA, 78 78 G4double /*aTemperature*/) 79 79 { … … 82 82 83 83 84 G4double GetCrossSection(G4double anEnergy, G4double anA, G4double aZ); 84 G4double GetCrossSection(G4double anEnergy, G4int anA, G4int aZ); 85 85 86 86 87 virtual -
trunk/source/processes/hadronic/cross_sections/include/G4NeutronInelasticXS.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4NeutronInelasticXS.hh,v 1. 3 2009/11/19 11:52:27 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4NeutronInelasticXS.hh,v 1.6 2010/10/15 22:33:22 dennis Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 38 38 // Modifications: 39 39 // 40 41 // Class Description: 42 // This is a base class for neutron inelastic hadronic cross section based on 43 // data files from G4NEUTRONXSDATA data set 44 // Class Description - End 40 45 41 42 46 #ifndef G4NeutronInelasticXS_h 43 47 #define G4NeutronInelasticXS_h 1 … … 45 49 #include "G4VCrossSectionDataSet.hh" 46 50 #include "globals.hh" 51 #include <vector> 47 52 48 53 class G4DynamicParticle; … … 51 56 class G4PhysicsVector; 52 57 class G4GlauberGribovCrossSection; 58 class G4HadronNucleonXsc; 53 59 54 60 class G4NeutronInelasticXS : public G4VCrossSectionDataSet 55 61 { 56 public: // With Description62 public: 57 63 58 G4int Z;59 64 G4NeutronInelasticXS(); 60 65 61 66 virtual ~G4NeutronInelasticXS(); 62 67 63 // The following methods need to be implemented for each new data set.64 68 virtual 65 69 G4bool IsApplicable(const G4DynamicParticle*, const G4Element*); 66 70 67 71 virtual 68 G4bool IsZAApplicable(const G4DynamicParticle*, 69 G4double /*Z*/, G4double /*A*/); 72 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*A*/); 70 73 71 74 virtual 72 G4double GetCrossSection(const G4DynamicParticle*, 73 const G4Element*, 75 G4double GetCrossSection(const G4DynamicParticle*, const G4Element*, 74 76 G4double aTemperature = 0.); 75 77 … … 80 82 void DumpPhysicsTable(const G4ParticleDefinition&); 81 83 82 public: // Without Description 83 84 inline void SetVerboseLevel(G4int value) 85 { 86 verboseLevel = value; 87 } 88 inline G4int GetVerboseLevel() 89 { 90 return verboseLevel; 91 } 92 93 private: // Without Description 84 private: 94 85 95 86 void Initialise(G4int Z, G4DynamicParticle* dp = 0, const char* = 0); … … 99 90 100 91 G4GlauberGribovCrossSection* ggXsection; 92 G4HadronNucleonXsc* fNucleon; 101 93 102 G4PhysicsVector* data[93]; 103 G4double coeff[93]; 94 const G4ParticleDefinition* proton; 95 96 std::vector<G4PhysicsVector*> data; 97 std::vector<G4double> coeff; 98 G4int maxZ; 104 99 105 100 G4bool isInitialized; -
trunk/source/processes/hadronic/cross_sections/include/G4NucleonNuclearCrossSection.hh
r819 r1340 52 52 virtual ~G4NucleonNuclearCrossSection(); 53 53 54 virtual G4bool IsApplicable(const G4DynamicParticle* aParticle, const G4Element* anElement); 55 56 virtual G4bool IsZAApplicable(const G4DynamicParticle* aParticle, G4double Z, G4double A); 54 virtual G4bool IsApplicable(const G4DynamicParticle* aParticle, 55 const G4Element* anElement); 56 57 virtual G4bool IsIsoApplicable(const G4DynamicParticle* aParticle, 58 G4int Z, G4int A); 57 59 58 60 G4double GetCrossSection(const G4DynamicParticle* aParticle, … … 60 62 G4double T=0.); 61 63 62 G4double Get IsoZACrossSection(const G4DynamicParticle* aParticle,63 G4 double ZZ, G4doubleAA, G4double T=0. );64 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 65 G4int ZZ, G4int AA, G4double T=0. ); 64 66 65 67 G4double GetElasticCrossSection(const G4DynamicParticle* aParticle, 66 G4 double ZZ, G4doubleAA);68 G4int ZZ, G4int AA); 67 69 68 70 G4double GetTotalXsc() { return fTotalXsc; }; … … 190 192 inline 191 193 G4double G4NucleonNuclearCrossSection::GetElasticCrossSection( 192 const G4DynamicParticle* dp, G4 double ZZ, G4doubleAA)194 const G4DynamicParticle* dp, G4int ZZ, G4int AA) 193 195 { 194 Get IsoZACrossSection(dp, ZZ, AA);196 GetZandACrossSection(dp, ZZ, AA); 195 197 return fElasticXsc; 196 198 } -
trunk/source/processes/hadronic/cross_sections/include/G4PhotoNuclearCrossSection.hh
r1337 r1340 25 25 // 26 26 // 27 // GEANT4 tag $Name: geant4-09-04-beta-01$27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // … … 53 53 G4bool IsApplicable(const G4DynamicParticle* particle, const G4Element* ) 54 54 { 55 return Is ZAApplicable(particle, 0, 0);55 return IsIsoApplicable(particle, 0, 0); 56 56 } 57 57 58 G4bool Is ZAApplicable(const G4DynamicParticle* particle,59 G4double /*ZZ*/, G4double/*AA*/)58 G4bool IsIsoApplicable(const G4DynamicParticle* particle, 59 G4int /*ZZ*/, G4int /*AA*/) 60 60 { 61 61 G4bool result = false; … … 68 68 const G4Element* element, G4double temp = 0.); 69 69 70 G4double GetIsoZACrossSection(const G4DynamicParticle* particle, 71 G4double ZZ, G4double AA,72 G4 double /*aTemperature*/);70 71 G4double GetZandACrossSection(const G4DynamicParticle* particle, 72 G4int ZZ, G4int AA, G4double /*aTemperature*/); 73 73 74 74 … … 78 78 79 79 private: 80 G4int GetFunctions(G4double a, G4double* y, G4double* z); 81 G4double EquLinearFit(G4double X, G4int N,const G4double X0,const G4double XD, const G4double* Y); 80 81 G4int GetFunctions(G4double a, G4double* y, G4double* z); 82 G4double EquLinearFit(G4double X, G4int N, const G4double X0, 83 const G4double XD, const G4double* Y); 82 84 G4double ThresholdEnergy(G4int Z, G4int N); 83 85 84 86 // Body 85 87 private: 88 86 89 static G4int lastN; // The last N of calculated nucleus 87 90 static G4int lastZ; // The last Z of calculated nucleus … … 93 96 static G4double lastSP; // Last value of the ShadowingPomeron (A-dependent) 94 97 95 static std::vector <G4double*> GDR; // Vector of pointers to the GDRPhotonuclearCrossSection 96 static std::vector <G4double*> HEN; // Vector of pointers to the HighEnPhotonuclearCrossSect 98 // Vector of pointers to the GDRPhotonuclearCrossSection 99 static std::vector <G4double*> GDR; 100 101 // Vector of pointers to the HighEnPhotonuclearCrossSect 102 static std::vector <G4double*> HEN; 97 103 98 104 }; -
trunk/source/processes/hadronic/cross_sections/include/G4PiNuclearCrossSection.hh
r1228 r1340 42 42 virtual ~G4PiNuclearCrossSection(); 43 43 44 G4bool IsApplicable(const G4DynamicParticle* aParticle, const G4Element* anElement) 44 G4bool IsApplicable(const G4DynamicParticle* aParticle, 45 const G4Element* anElement) 45 46 { 46 47 G4bool result = false; … … 52 53 } 53 54 54 G4bool IsZAApplicable(const G4DynamicParticle* particle,55 G4double ZZ, G4double/*AA*/)55 G4bool 56 IsIsoApplicable(const G4DynamicParticle* particle, G4int ZZ, G4int /*AA*/) 56 57 { 57 58 G4bool result = false; 58 59 if(particle->GetDefinition() == G4PionMinus::PionMinus()) result=true; 59 60 if(particle->GetDefinition() == G4PionPlus::PionPlus()) result=true; 60 if( G4lrint(ZZ)== 1) result = false;61 if(ZZ == 1) result = false; 61 62 if(particle->GetKineticEnergy() > 99.9*TeV) result=false; 62 63 return result; 63 64 } 65 64 66 65 67 G4double GetCrossSection(const G4DynamicParticle* particle, … … 67 69 G4double temperature) 68 70 { 69 return GetIsoZACrossSection(particle, element->GetZ(), 70 element->GetN(), temperature); 71 G4int Z = G4lrint(element->GetZ()); 72 G4int A = G4lrint(element->GetN()); 73 return GetZandACrossSection(particle, Z, A, temperature); 71 74 } 72 75 73 G4double Get IsoZACrossSection(const G4DynamicParticle* aParticle,74 G4 double ZZ, G4doubleAA,76 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 77 G4int ZZ, G4int AA, 75 78 G4double /*aTemperature*/); 76 79 77 G4double GetTotalXsc() { return fTotalXsc;};78 G4double GetElasticXsc() { return fElasticXsc;};80 G4double GetTotalXsc() {return fTotalXsc;}; 81 G4double GetElasticXsc() {return fElasticXsc;}; 79 82 80 83 -
trunk/source/processes/hadronic/cross_sections/include/G4ProtonInelasticCrossSection.hh
r1228 r1340 56 56 { 57 57 G4bool result = false; 58 if ((aPart->GetDefinition()==G4Proton::Proton()) &&58 if ( (aPart->GetDefinition()==G4Proton::Proton()) && 59 59 ( aPart->GetKineticEnergy()<100*TeV) ) result = true; 60 60 if(aEle->GetZ()<3) result = false; … … 62 62 } 63 63 64 G4bool IsZAApplicable(const G4DynamicParticle* aParticle, 65 G4double ZZ, G4double /*AA*/) 64 65 G4bool 66 IsIsoApplicable(const G4DynamicParticle* aParticle, G4int ZZ, G4int /*AA*/) 66 67 { 67 68 G4bool result = false; … … 72 73 } 73 74 75 74 76 virtual 75 77 G4double GetCrossSection(const G4DynamicParticle*, 76 78 const G4Element*, G4double aTemperature); 79 77 80 78 G4double GetIsoZACrossSection(const G4DynamicParticle* aParticle,79 G4double ZZ, G4double AA,80 81 G4double 82 GetZandACrossSection(const G4DynamicParticle* aParticle, 83 G4int ZZ, G4int AA, G4double /*aTemperature*/) 81 84 { 82 85 return GetCrossSection(aParticle->GetKineticEnergy(), AA, ZZ); … … 84 87 85 88 86 G4double GetCrossSection(G4double anEnergy, G4double anA, G4double aZ); 89 G4double GetCrossSection(G4double anEnergy, G4int anA, G4int aZ); 90 87 91 88 92 virtual 89 93 void BuildPhysicsTable(const G4ParticleDefinition&) 90 94 {} 95 91 96 92 97 virtual -
trunk/source/processes/hadronic/cross_sections/include/G4TripathiCrossSection.hh
r1196 r1340 49 49 G4bool IsApplicable(const G4DynamicParticle* aPart, const G4Element*) 50 50 { 51 return Is ZAApplicable(aPart, 0., 0.);51 return IsIsoApplicable(aPart, 0, 0); 52 52 } 53 53 54 54 virtual 55 G4bool Is ZAApplicable(const G4DynamicParticle* aPart, G4double /*ZZ*/,56 G4double/*AA*/)55 G4bool IsIsoApplicable(const G4DynamicParticle* aPart, 56 G4int /*ZZ*/, G4int /*AA*/) 57 57 { 58 58 G4bool result = false; 59 if ((aPart->GetDefinition()->GetBaryonNumber()>2.5) &&59 if ( (aPart->GetDefinition()->GetBaryonNumber()>2.5) && 60 60 ( aPart->GetKineticEnergy()/aPart->GetDefinition()->GetBaryonNumber()<1*GeV) ) result = true; 61 61 return result; … … 68 68 69 69 virtual 70 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4doubleZZ,71 G4 doubleAA, G4double aTemperature);70 G4double GetZandACrossSection(const G4DynamicParticle*, G4int ZZ, 71 G4int AA, G4double aTemperature); 72 72 73 73 virtual -
trunk/source/processes/hadronic/cross_sections/include/G4TripathiLightCrossSection.hh
r819 r1340 86 86 const G4Element* theTarget); 87 87 88 virtual G4bool Is ZAApplicable(const G4DynamicParticle* theProjectile,89 G4double ZZ, G4doubleAA);88 virtual G4bool IsIsoApplicable(const G4DynamicParticle* theProjectile, 89 G4int ZZ, G4int AA); 90 90 91 91 virtual G4double GetCrossSection(const G4DynamicParticle* theProjectile, … … 93 93 94 94 virtual 95 G4double Get IsoZACrossSection(const G4DynamicParticle* theProjectile,96 G4 double ZZ, G4doubleAA,95 G4double GetZandACrossSection(const G4DynamicParticle* theProjectile, 96 G4int ZZ, G4int AA, 97 97 G4double theTemperature); 98 98 … … 102 102 virtual void DumpPhysicsTable(const G4ParticleDefinition&) 103 103 {G4cout << "G4TripathiLightCrossSection: uses formula"<<G4endl;} 104 void SetLowEnergyCheck 104 void SetLowEnergyCheck(G4bool); 105 105 106 106 private: … … 110 110 G4bool lowEnergyCheck; 111 111 }; 112 /////////////////////////////////////////////////////////////////////////////// 113 // 112 114 113 #endif -
trunk/source/processes/hadronic/cross_sections/include/G4UElasticCrossSection.hh
r819 r1340 61 61 62 62 virtual 63 G4bool Is ZAApplicable(const G4DynamicParticle*, G4double Z, G4doubleA);63 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A); 64 64 65 65 virtual … … 68 68 69 69 virtual 70 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4double/*Z*/,71 G4double/*A*/, G4double aTemperature = 0.);70 G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/, 71 G4int /*A*/, G4double aTemperature = 0.); 72 72 73 73 virtual -
trunk/source/processes/hadronic/cross_sections/include/G4UInelasticCrossSection.hh
r819 r1340 61 61 62 62 virtual 63 G4bool Is ZAApplicable(const G4DynamicParticle*, G4double Z, G4doubleA);63 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A); 64 64 65 65 virtual … … 68 68 69 69 virtual 70 G4double Get IsoZACrossSection(const G4DynamicParticle*, G4double/*Z*/,71 G4 double/*A*/, G4double aTemperature = 0.);70 G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/, 71 G4int /*A*/, G4double aTemperature = 0.); 72 72 73 73 virtual … … 90 90 G4HadronCrossSections* fGheisha; 91 91 92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......93 94 92 }; 95 93 -
trunk/source/processes/hadronic/cross_sections/include/G4UPiNuclearCrossSection.hh
r1315 r1340 39 39 #include "G4DynamicParticle.hh" 40 40 #include "G4DataVector.hh" 41 #include "G4HadTmpUtil.hh" 41 42 #include "globals.hh" 42 43 #include <vector> … … 57 58 58 59 virtual 59 G4bool Is ZAApplicable(const G4DynamicParticle* aParticle,60 G4double Z, G4doubleA);60 G4bool IsIsoApplicable(const G4DynamicParticle* aParticle, 61 G4int Z, G4int A); 61 62 62 63 virtual … … 65 66 66 67 virtual 67 G4double Get IsoZACrossSection(const G4DynamicParticle* aParticle,68 G4 double Z, G4doubleA, G4double T=0.);68 G4double GetZandACrossSection(const G4DynamicParticle* aParticle, 69 G4int Z, G4int A, G4double T=0.); 69 70 70 71 G4double GetElasticCrossSection(const G4DynamicParticle* aParticle, … … 72 73 73 74 G4double GetElasticCrossSection(const G4DynamicParticle* aParticle, 74 G4 double Z, G4doubleA);75 G4int Z, G4int A); 75 76 76 77 G4double GetInelasticCrossSection(const G4DynamicParticle* aParticle, … … 78 79 79 80 G4double GetInelasticCrossSection(const G4DynamicParticle* aParticle, 80 G4 double Z, G4doubleA);81 G4int Z, G4int A); 81 82 82 83 void BuildPhysicsTable(const G4ParticleDefinition&); … … 91 92 const G4double* in, const G4double* e, G4int n); 92 93 93 G4double Interpolate(G4 double Z, G4doubleA, G4double ekin,94 G4double Interpolate(G4int Z, G4int A, G4double ekin, 94 95 G4PhysicsTable*); 95 96 … … 115 116 const G4Element* elm) 116 117 { 117 return IsZAApplicable(part, elm->GetZ(), elm->GetN()); 118 G4int Z = G4lrint(elm->GetZ()); 119 G4int A = G4lrint(elm->GetN()); 120 return IsIsoApplicable(part, Z, A); 118 121 } 119 122 120 inline G4bool G4UPiNuclearCrossSection::IsZAApplicable(121 122 G4double Z, G4double)123 inline G4bool 124 G4UPiNuclearCrossSection::IsIsoApplicable(const G4DynamicParticle* part, 125 G4int Z, G4int) 123 126 { 124 127 return ((part->GetDefinition() == piMinus || 125 128 part->GetDefinition() == piPlus) && 126 Z > 1 .5);129 Z > 1); 127 130 } 128 131 … … 131 134 const G4Element* elm, G4double) 132 135 { 133 return GetInelasticCrossSection(dp, elm->GetZ(), elm->GetN()); 136 G4int Z = G4lrint(elm->GetZ()); 137 G4int A = G4lrint(elm->GetN()); 138 return GetInelasticCrossSection(dp, Z, A); 134 139 } 135 140 136 inline G4double G4UPiNuclearCrossSection::GetIsoZACrossSection(137 138 G4double Z, G4doubleA, G4double)141 inline G4double 142 G4UPiNuclearCrossSection::GetZandACrossSection(const G4DynamicParticle* dp, 143 G4int Z, G4int A, G4double) 139 144 { 140 145 return GetInelasticCrossSection(dp, Z, A); … … 145 150 const G4Element* elm) 146 151 { 147 return GetInelasticCrossSection(dp, elm->GetZ(), elm->GetN()); 152 G4int Z = G4lrint(elm->GetZ()); 153 G4int A = G4lrint(elm->GetN()); 154 return GetInelasticCrossSection(dp, Z, A); 148 155 } 149 156 … … 152 159 const G4Element* elm) 153 160 { 154 return GetElasticCrossSection(dp, elm->GetZ(), elm->GetN()); 161 G4int Z = G4lrint(elm->GetZ()); 162 G4int A = G4lrint(elm->GetN()); 163 return GetElasticCrossSection(dp, Z, A); 155 164 } 156 165 -
trunk/source/processes/hadronic/cross_sections/include/G4VCrossSectionDataSet.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VCrossSectionDataSet.hh,v 1.1 3 2009/01/24 11:54:47vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4VCrossSectionDataSet.hh,v 1.14 2010/07/05 13:39:11 vnivanch Exp $ 27 // GEANT4 tag $Name: hadr-cross-V09-03-12 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 38 38 // Modifications: 39 39 // 23.01.2009 V.Ivanchenko move constructor and destructor to source 40 // 05.07.2010 V.Ivanchenko added name, min and max energy limit and 41 // corresponding access methods 40 42 // 41 43 … … 58 60 public: //with description 59 61 60 G4VCrossSectionDataSet( );62 G4VCrossSectionDataSet(const G4String& nam = ""); 61 63 62 64 virtual ~G4VCrossSectionDataSet(); … … 68 70 virtual 69 71 G4bool IsZAApplicable(const G4DynamicParticle*, G4double /*Z*/, G4double /*A*/); 72 73 virtual 74 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int /*Z*/, G4int /*N*/); 70 75 71 76 virtual … … 83 88 84 89 virtual 90 G4double GetZandACrossSection(const G4DynamicParticle*, G4int /*Z*/, 91 G4int /*A*/, G4double aTemperature = 0.); 92 93 virtual 85 94 void BuildPhysicsTable(const G4ParticleDefinition&) = 0; 86 95 … … 90 99 public: // Without Description 91 100 92 inline void SetVerboseLevel(G4int value) 93 { 94 verboseLevel = value; 95 } 101 inline void SetVerboseLevel(G4int value); 96 102 97 inline G4int GetVerboseLevel() 98 { 99 return verboseLevel; 100 } 103 inline G4double GetMinKinEnergy() const; 104 105 inline void SetMinKinEnergy(G4double value); 106 107 inline G4double GetMaxKinEnergy() const; 108 109 inline void SetMaxKinEnergy(G4double value); 110 111 inline const G4String& GetName() const; 101 112 102 113 protected: 103 114 104 115 G4int verboseLevel; 116 117 private: 118 119 G4VCrossSectionDataSet & operator=(const G4VCrossSectionDataSet &right); 120 G4VCrossSectionDataSet(const G4VCrossSectionDataSet&); 121 122 G4double minKinEnergy; 123 G4double maxKinEnergy; 124 125 const G4String name; 105 126 }; 106 127 128 inline void G4VCrossSectionDataSet::SetVerboseLevel(G4int value) 129 { 130 verboseLevel = value; 131 } 132 133 inline void G4VCrossSectionDataSet::SetMinKinEnergy(G4double value) 134 { 135 minKinEnergy = value; 136 } 137 138 inline G4double G4VCrossSectionDataSet::GetMinKinEnergy() const 139 { 140 return minKinEnergy; 141 } 142 143 inline void G4VCrossSectionDataSet::SetMaxKinEnergy(G4double value) 144 { 145 maxKinEnergy = value; 146 } 147 148 inline G4double G4VCrossSectionDataSet::GetMaxKinEnergy() const 149 { 150 return maxKinEnergy; 151 } 152 153 inline const G4String& G4VCrossSectionDataSet::GetName() const 154 { 155 return name; 156 } 157 107 158 #endif
Note: See TracChangeset
for help on using the changeset viewer.