Changeset 1315 for trunk/source/processes/electromagnetic/standard/include
- Timestamp:
- Jun 18, 2010, 11:42:07 AM (14 years ago)
- Location:
- trunk/source/processes/electromagnetic/standard/include
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ASTARStopping.hh,v 1. 6 2008/11/13 12:04:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4ASTARStopping.hh,v 1.8 2010/04/26 17:22:08 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #ifndef G4ASTARStopping_h … … 55 55 56 56 #include "globals.hh" 57 #include "G4LPhysicsFreeVector.hh" 58 #include <vector> 57 59 58 60 class G4Material; … … 76 78 void Initialise(); 77 79 80 void AddData(G4double* e, G4double* s, G4int idx); 81 78 82 // hide assignment operator 79 83 G4ASTARStopping & operator=(const G4ASTARStopping &right); 80 84 G4ASTARStopping(const G4ASTARStopping&); 81 85 86 G4int matIndex; 82 87 const G4Material* currentMaterial; 83 G4int index, matIndex; 84 G4String name[74]; 85 G4double currentE, res; 86 G4double e[74][78], kinE[78]; 87 G4double effZ[74]; 88 G4double emin; 89 std::vector<G4String> name; 90 std::vector<G4double> effZ; 91 std::vector<G4LPhysicsFreeVector*> sdata; 88 92 }; 89 93 … … 97 101 { 98 102 return effZ[idx]; 99 } 103 } 100 104 101 105 #endif -
trunk/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BetheBlochModel.hh,v 1.2 0 2009/04/23 17:44:43vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4BetheBlochModel.hh,v 1.23 2010/05/27 14:26:17 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 116 116 G4double kineticEnergy); 117 117 118 virtual void CorrectionsAlongStep(const G4MaterialCutsCouple* ,119 const G4DynamicParticle* ,118 virtual void CorrectionsAlongStep(const G4MaterialCutsCouple* couple, 119 const G4DynamicParticle* dp, 120 120 G4double& eloss, 121 G4double& niel,121 G4double&, 122 122 G4double length); 123 123 … … 133 133 G4double kinEnergy); 134 134 135 inline G4double GetChargeSquareRatio() const; 136 137 inline void SetChargeSquareRatio(G4double val); 138 135 139 private: 136 140 137 inlinevoid SetupParameters();141 void SetupParameters(); 138 142 139 143 inline void SetParticle(const G4ParticleDefinition* p); … … 169 173 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 170 174 171 inline void G4BetheBlochModel::SetupParameters()172 {173 mass = particle->GetPDGMass();174 spin = particle->GetPDGSpin();175 G4double q = particle->GetPDGCharge()/eplus;176 chargeSquare = q*q;177 ratio = electron_mass_c2/mass;178 G4double magmom = particle->GetPDGMagneticMoment()*mass/(0.5*eplus*hbar_Planck*c_squared);179 magMoment2 = magmom*magmom - 1.0;180 formfact = 0.0;181 if(particle->GetLeptonNumber() == 0) {182 G4double x = 0.8426*GeV;183 if(spin == 0.0 && mass < GeV) {x = 0.736*GeV;}184 else if(mass > GeV) {185 x /= nist->GetZ13(mass/proton_mass_c2);186 // tlimit = 51.2*GeV*A13[iz]*A13[iz];187 }188 formfact = 2.0*electron_mass_c2/(x*x);189 tlimit = 2.0/formfact;190 }191 }192 193 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....194 195 175 inline void G4BetheBlochModel::SetParticle(const G4ParticleDefinition* p) 196 176 { 197 177 if(particle != p) { 198 178 particle = p; 199 if (p->GetPDGCharge()/eplus > 1.5 && p->GetBaryonNumber() > 2) isIon = true; 179 if (p->GetPDGCharge()/eplus > 1.5 && p->GetBaryonNumber() > 2) 180 { isIon = true; } 200 181 SetupParameters(); 201 182 } … … 206 187 inline void G4BetheBlochModel::SetGenericIon(const G4ParticleDefinition* p) 207 188 { 208 if(p && particle != p) { 209 if(p->GetParticleName() == "GenericIon") isIon = true;189 if(p && particle != p) { 190 if(p->GetParticleName() == "GenericIon") { isIon = true; } 210 191 } 211 192 } 212 193 194 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 195 196 inline G4double G4BetheBlochModel::GetChargeSquareRatio() const 197 { 198 return chargeSquare; 199 } 200 201 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 202 203 inline void G4BetheBlochModel::SetChargeSquareRatio(G4double val) 204 { 205 chargeSquare = val; 206 } 207 208 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 209 213 210 #endif -
trunk/source/processes/electromagnetic/standard/include/G4BraggModel.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggModel.hh,v 1.1 4 2009/11/10 19:25:47vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4BraggModel.hh,v 1.15 2010/05/27 10:08:58 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 121 121 const G4Material* mat, 122 122 G4double kineticEnergy); 123 /*124 // add correction to energy loss and compute non-ionizing energy loss125 virtual void CorrectionsAlongStep(const G4MaterialCutsCouple*,126 const G4DynamicParticle*,127 G4double& eloss,128 G4double& niel,129 G4double length);130 */131 123 132 124 protected: … … 134 126 virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 135 127 G4double kinEnergy); 128 129 inline G4double GetChargeSquareRatio() const; 130 131 inline void SetChargeSquareRatio(G4double val); 136 132 137 133 private: … … 197 193 } 198 194 195 inline G4double G4BraggModel::GetChargeSquareRatio() const 196 { 197 return chargeSquare; 198 } 199 200 inline void G4BraggModel::SetChargeSquareRatio(G4double val) 201 { 202 chargeSquare = val; 203 } 204 199 205 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 200 206 -
trunk/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4CoulombScattering.hh,v 1.1 3 2009/05/07 18:41:45vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4CoulombScattering.hh,v 1.14 2010/02/17 18:59:22 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 73 73 // Set energy above which high energy model will be used 74 74 inline void SetHEModelLimit(G4double); 75 76 // obsolete method to be removed77 inline void SetBuildTableFlag(G4bool);78 75 79 76 // Print out of the class parameters … … 125 122 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 126 123 127 inline void G4CoulombScattering::SetBuildTableFlag(G4bool)128 {}129 130 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....131 132 124 inline void G4CoulombScattering::SetHEModelLimit(G4double val) 133 125 { -
trunk/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4CoulombScatteringModel.hh,v 1.1 5 2008/07/31 13:11:34vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4CoulombScatteringModel.hh,v 1.17 2010/05/27 14:22:05 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 45 45 // 09.10.07 V.Ivanchenko reorganized methods, add cut dependence in scattering off e- 46 46 // 09.06.08 V.Ivanchenko SelectIsotope is moved to the base class 47 // 27.05.10 V.Ivanchenko added G4WentzelOKandVIxSection class to 48 // compute cross sections and sample scattering angle 47 49 // 48 50 // Class Description: -
trunk/source/processes/electromagnetic/standard/include/G4GoudsmitSaundersonMscModel.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4GoudsmitSaundersonMscModel.hh,v 1. 2 2009/06/04 13:45:49 gunterExp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4GoudsmitSaundersonMscModel.hh,v 1.4 2010/05/17 15:11:30 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 41 41 // Modifications: 42 42 // 04.03.2009 V.Ivanchenko cleanup and format according to Geant4 EM style 43 // 12.05.2010 O.Kadri: adding Qn1 and Qn12 as private doubles 43 44 // 44 45 // Class description: … … 54 55 //Ref.5:F. Salvat et al.,"ELSEPA--Dirac partial ...molecules", Comp. Phys. Comm. 165 (2005) pp 157-190; 55 56 //Ref.6:G4UrbanMscModel G4_v9.1Ref09; 56 //Ref.7:G4 eCoulombScatteringModel G4_v9.1Ref09.57 //Ref.7:G4WentzelVIModel G4_v9.3. 57 58 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 58 59 … … 63 64 #include "G4PhysicsTable.hh" 64 65 #include "globals.hh" 65 #include "G4DataInterpolation.hh"66 66 67 67 class G4DataVector; … … 114 114 G4GoudsmitSaundersonMscModel(const G4GoudsmitSaundersonMscModel&); 115 115 116 G4double 117 G4double 116 G4double lowKEnergy; 117 G4double highKEnergy; 118 118 G4double currentKinEnergy; 119 119 G4double currentRange; … … 125 125 G4double charge,lambdalimit; 126 126 G4double tPathLength,stepmin ; 127 G4double lambda 1,lambda11;127 G4double lambda0,lambda1,lambda11,Qn1,Qn12; 128 128 G4double mass; 129 G4double lambda0;130 129 G4int currentMaterialIndex; 131 130 … … 139 138 const G4ParticleDefinition* particle; 140 139 G4ParticleChangeForMSC* fParticleChange; 141 G4DataInterpolation* MyValue;142 140 const G4MaterialCutsCouple* currentCouple; 143 141 -
trunk/source/processes/electromagnetic/standard/include/G4GoudsmitSaundersonTable.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4GoudsmitSaundersonTable.hh,v 1. 3 2009/06/18 18:43:09vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4GoudsmitSaundersonTable.hh,v 1.4 2010/02/19 09:29:53 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PSTARStopping.hh,v 1. 5 2008/11/13 12:04:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4PSTARStopping.hh,v 1.7 2010/04/26 17:22:08 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #ifndef G4PSTARStopping_h … … 56 56 57 57 #include "globals.hh" 58 #include "G4LPhysicsFreeVector.hh" 59 #include <vector> 58 60 59 61 class G4Material; … … 76 78 void Initialise(); 77 79 80 void AddData(G4double* e, G4double* s, G4int idx); 81 78 82 // hide assignment operator 79 83 G4PSTARStopping & operator=(const G4PSTARStopping &right); 80 84 G4PSTARStopping(const G4PSTARStopping&); 81 85 86 G4int matIndex; 82 87 const G4Material* currentMaterial; 83 G4int index, matIndex; 84 G4String name[74]; 85 G4double currentE, res; 86 G4double e[74][60], kinE[60]; 88 G4double emin; 89 std::vector<G4String> name; 90 std::vector<G4LPhysicsFreeVector*> sdata; 87 91 }; 88 92 -
trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel93.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4UrbanMscModel93.hh,v 1. 1 2009/11/01 13:04:12 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4UrbanMscModel93.hh,v 1.4 2009/12/14 06:57:12 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4WaterStopping.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4WaterStopping.hh,v 1. 7 2009/06/19 10:39:48 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4WaterStopping.hh,v 1.8 2010/04/26 17:22:08 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #ifndef G4WaterStopping_h … … 79 79 G4int Z[17]; 80 80 G4double A[17]; 81 G4double emin; 81 82 std::vector<G4LPhysicsFreeVector*> dedx; 82 83 }; -
trunk/source/processes/electromagnetic/standard/include/G4WentzelVIModel.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4WentzelVIModel.hh,v 1.2 1 2009/10/10 15:16:57vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4WentzelVIModel.hh,v 1.29 2010/05/27 14:22:05 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 40 40 // 41 41 // Modifications: 42 // 42 // 27-05-2010 V.Ivanchenko added G4WentzelOKandVIxSection class to 43 // compute cross sections and sample scattering angle 43 44 // 44 45 // Class Description: … … 60 61 #include "G4VMscModel.hh" 61 62 #include "G4PhysicsTable.hh" 62 #include "G4MscStepLimitType.hh"63 63 #include "G4MaterialCutsCouple.hh" 64 #include "G4NistManager.hh" 65 64 #include "G4WentzelOKandVIxSection.hh" 65 66 class G4ParticleDefinition; 66 67 class G4LossTableManager; 67 class G4ParticleChangeForMSC; 68 class G4ParticleDefinition; 68 class G4Pow; 69 69 70 70 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... … … 100 100 private: 101 101 102 G4double ComputeTransportXSectionPerAtom();103 104 102 G4double ComputeXSectionPerVolume(); 105 103 106 void ComputeMaxElectronScattering(G4double cut);107 108 104 inline G4double GetLambda(G4double kinEnergy); 109 105 110 106 inline void SetupParticle(const G4ParticleDefinition*); 111 112 inline void SetupKinematic(G4double kinEnergy, G4double cut);113 114 inline void SetupTarget(G4double Z, G4double kinEnergy);115 107 116 108 inline void DefineMaterial(const G4MaterialCutsCouple*); … … 120 112 G4WentzelVIModel(const G4WentzelVIModel&); 121 113 122 const G4ParticleDefinition* theProton; 123 const G4ParticleDefinition* theElectron; 124 const G4ParticleDefinition* thePositron; 125 114 G4LossTableManager* theManager; 126 115 G4ParticleChangeForMSC* fParticleChange; 116 G4WentzelOKandVIxSection* wokvi; 117 G4Pow* fG4pow; 127 118 128 119 G4PhysicsTable* theLambdaTable; 129 G4PhysicsTable* theLambda2Table;130 G4LossTableManager* theManager;131 120 const G4DataVector* currentCuts; 132 121 133 G4NistManager* fNistManager;134 135 G4double numlimit;136 122 G4double tlimitminfix; 137 123 G4double invsqrt12; 138 124 139 // ca sh125 // cache kinematics 140 126 G4double preKinEnergy; 141 G4double ecut;142 G4double lambda0;143 127 G4double tPathLength; 144 128 G4double zPathLength; 145 129 G4double lambdaeff; 146 130 G4double currentRange; 147 G4double par1; 148 G4double par2; 149 G4double par3; 150 131 132 // data for single scattering mode 151 133 G4double xtsec; 152 134 std::vector<G4double> xsecn; … … 154 136 G4int nelments; 155 137 156 G4int nbins; 157 G4int nwarnings; 158 G4int nwarnlimit; 159 138 G4double numlimit; 139 140 // cache material 160 141 G4int currentMaterialIndex; 161 162 142 const G4MaterialCutsCouple* currentCouple; 163 143 const G4Material* currentMaterial; 164 144 165 145 // single scattering parameters 166 G4double coeff;167 146 G4double cosThetaMin; 168 147 G4double cosThetaMax; 169 148 G4double cosTetMaxNuc; 170 G4double cosTetMaxNuc2;171 G4double cosTetMaxElec;172 G4double cosTetMaxElec2;173 G4double q2Limit;174 G4double alpha2;175 149 176 150 // projectile 177 151 const G4ParticleDefinition* particle; 178 179 G4double chargeSquare;180 G4double spin;181 G4double mass;182 G4double tkin;183 G4double mom2;184 G4double invbeta2;185 G4double kinFactor;186 G4double etag;187 152 G4double lowEnergyLimit; 188 189 // target190 G4double targetZ;191 G4double targetMass;192 G4double screenZ;193 G4double formfactA;194 G4int iz;195 196 static G4double ScreenRSquare[100];197 static G4double FormFactor[100];198 153 199 154 // flags … … 222 177 G4double x; 223 178 if(theLambdaTable) { 224 G4bool b; 225 x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b); 179 x = ((*theLambdaTable)[currentMaterialIndex])->Value(e); 226 180 } else { 227 181 x = CrossSection(currentCouple,particle,e, 228 182 (*currentCuts)[currentMaterialIndex]); 229 183 } 230 if(x > DBL_MIN) x = 1./x;231 else x = DBL_MAX;184 if(x > DBL_MIN) { x = 1./x; } 185 else { x = DBL_MAX; } 232 186 return x; 233 187 } … … 240 194 if(p != particle) { 241 195 particle = p; 242 mass = particle->GetPDGMass(); 243 spin = particle->GetPDGSpin(); 244 G4double q = particle->GetPDGCharge()/eplus; 245 chargeSquare = q*q; 246 tkin = 0.0; 196 wokvi->SetupParticle(p); 247 197 } 248 198 } 249 199 250 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....251 252 inline void G4WentzelVIModel::SetupKinematic(G4double ekin, G4double cut)253 {254 if(ekin != tkin || ecut != cut) {255 tkin = ekin;256 mom2 = tkin*(tkin + 2.0*mass);257 invbeta2 = 1.0 + mass*mass/mom2;258 cosTetMaxNuc = cosThetaMax;259 if(mass < MeV && ekin <= 10.*cut) {260 cosTetMaxNuc = ekin*(cosThetaMax + 1.0)/(10.*cut) - 1.0;261 }262 ComputeMaxElectronScattering(cut);263 }264 }265 266 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....267 268 inline void G4WentzelVIModel::SetupTarget(G4double Z, G4double e)269 {270 if(Z != targetZ || e != etag) {271 etag = e;272 targetZ = Z;273 iz = G4int(Z);274 if(iz > 99) iz = 99;275 targetMass = fNistManager->GetAtomicMassAmu(iz)*amu_c2;276 screenZ = ScreenRSquare[iz]/mom2;277 G4double meff = targetMass/(mass+targetMass);278 kinFactor = coeff*targetZ*chargeSquare*invbeta2/(mom2*meff*meff);279 screenZ *=(1.13 + std::min(1.0,3.76*Z*Z*invbeta2*alpha2));280 if(mass > MeV) { screenZ *= 2.0; }281 formfactA = FormFactor[iz]*mom2;282 cosTetMaxNuc2 = cosTetMaxNuc;283 cosTetMaxElec2 = cosTetMaxElec;284 }285 }286 287 200 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 288 201 -
trunk/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eCoulombScatteringModel.hh,v 1. 49 2009/10/10 15:16:57vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4eCoulombScatteringModel.hh,v 1.56 2010/05/27 14:22:05 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 47 47 // 09.06.08 V.Ivanchenko add SelectIsotope and sampling of the recoil ion 48 48 // 17.06.09 C.Consoalndi modified SetupTarget method - remove kinFactor 49 // 27.05.10 V.Ivanchenko added G4WentzelOKandVIxSection class to 50 // compute cross sections and sample scattering angle 49 51 // 50 52 // … … 66 68 67 69 #include "G4VEmModel.hh" 68 #include "G4PhysicsTable.hh"69 70 #include "globals.hh" 70 #include "G4 NistManager.hh"71 #include <vector>71 #include "G4MaterialCutsCouple.hh" 72 #include "G4WentzelOKandVIxSection.hh" 72 73 73 74 class G4ParticleChangeForGamma; 74 75 class G4ParticleDefinition; 76 class G4ParticleTable; 77 class G4NistManager; 75 78 76 79 class G4eCoulombScatteringModel : public G4VEmModel … … 99 102 G4double maxEnergy); 100 103 104 // defines low energy limit of the model 105 inline void SetLowEnergyLimit(G4double val); 106 107 // obsolete method 101 108 inline void SetRecoilThreshold(G4double eth); 102 109 103 110 protected: 104 105 G4double CrossSectionPerAtom();106 107 G4double SampleCosineTheta();108 111 109 112 inline void DefineMaterial(const G4MaterialCutsCouple*); … … 111 114 inline void SetupParticle(const G4ParticleDefinition*); 112 115 113 inline void SetupKinematic(G4double kinEnergy, G4double cut);114 115 inline void SetupTarget(G4double Z, G4double kinEnergy);116 117 116 private: 118 119 void ComputeMaxElectronScattering(G4double cut);120 117 121 118 // hide assignment operator … … 125 122 protected: 126 123 127 const G4ParticleDefinition* theProton; 128 const G4ParticleDefinition* theElectron; 129 const G4ParticleDefinition* thePositron; 130 131 G4ParticleTable* theParticleTable; 124 G4ParticleTable* theParticleTable; 132 125 G4ParticleChangeForGamma* fParticleChange; 126 G4WentzelOKandVIxSection* wokvi; 133 127 G4NistManager* fNistManager; 134 128 … … 140 134 G4int currentMaterialIndex; 141 135 142 G4double coeff;143 136 G4double cosThetaMin; 144 137 G4double cosThetaMax; 145 138 G4double cosTetMinNuc; 146 139 G4double cosTetMaxNuc; 147 G4double cosTetMaxNuc2;148 G4double cosTetMaxElec;149 G4double cosTetMaxElec2;150 G4double q2Limit;151 140 G4double recoilThreshold; 152 G4double elecXSection; 153 G4double nucXSection; 154 G4double ecut; 141 G4double elecRatio; 142 G4double mass; 155 143 156 144 // projectile 157 145 const G4ParticleDefinition* particle; 146 const G4ParticleDefinition* theProton; 158 147 159 G4double chargeSquare;160 G4double spin;161 G4double mass;162 G4double tkin;163 G4double mom2;164 G4double invbeta2;165 G4double etag;166 148 G4double lowEnergyLimit; 167 149 168 // target169 G4double targetZ;170 G4double targetMass;171 G4double screenZ;172 G4double formfactA;173 G4int idxelm;174 G4int iz;175 176 150 private: 177 178 G4double alpha2;179 G4double faclim;180 181 static G4double ScreenRSquare[100];182 static G4double FormFactor[100];183 151 184 152 G4bool isInitialised; … … 206 174 particle = p; 207 175 mass = particle->GetPDGMass(); 208 spin = particle->GetPDGSpin(); 209 G4double q = particle->GetPDGCharge()/eplus; 210 chargeSquare = q*q; 211 tkin = 0.0; 176 wokvi->SetupParticle(p); 212 177 } 213 178 } … … 215 180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 216 181 217 inline void G4eCoulombScatteringModel::SetupKinematic(G4double ekin, 218 G4double cut) 182 inline void G4eCoulombScatteringModel::SetLowEnergyLimit(G4double val) 219 183 { 220 if(ekin != tkin || ecut != cut) { 221 tkin = ekin; 222 mom2 = tkin*(tkin + 2.0*mass); 223 invbeta2 = 1.0 + mass*mass/mom2; 224 cosTetMinNuc = cosThetaMin; 225 cosTetMaxNuc = cosThetaMax; 226 if(mass < MeV && cosThetaMin < 1.0 && ekin <= 10.*cut) { 227 cosTetMinNuc = ekin*(cosThetaMin + 1.0)/(10.*cut) - 1.0; 228 } 229 ComputeMaxElectronScattering(cut); 230 } 184 lowEnergyLimit = val; 231 185 } 232 233 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....234 235 inline void G4eCoulombScatteringModel::SetupTarget(G4double Z, G4double e)236 {237 if(Z != targetZ || e != etag) {238 etag = e;239 targetZ = Z;240 iz= G4int(Z);241 if(iz > 99) iz = 99;242 targetMass = fNistManager->GetAtomicMassAmu(iz)*amu_c2;243 screenZ = ScreenRSquare[iz]/mom2;244 screenZ *=(1.13 + std::min(1.0,3.76*Z*Z*invbeta2*alpha2));245 if(mass > MeV) { screenZ *= 2.0; }246 formfactA = FormFactor[iz]*mom2;247 cosTetMaxNuc2 = cosTetMaxNuc;248 if(1 == iz && particle == theProton && cosTetMaxNuc2 < 0.0) {249 cosTetMaxNuc2 = 0.0;250 }251 cosTetMaxElec2 = cosTetMaxElec;252 }253 }254 186 255 187 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/standard/include/G4hIonisation.hh
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hIonisation.hh,v 1.4 2 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4hIonisation.hh,v 1.44 2010/05/27 10:25:23 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 101 101 virtual void PrintInfo(); 102 102 103 // obsolete method 103 104 void ActivateNuclearStopping(G4bool); 104 105 … … 115 116 116 117 G4bool isInitialised; 117 G4bool nuclearStopping;118 118 119 119 G4double mass; … … 124 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 125 125 126 inline void G4hIonisation::ActivateNuclearStopping(G4bool val)127 {128 nuclearStopping = val;129 }130 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....132 133 126 #endif
Note: See TracChangeset
for help on using the changeset viewer.