Import Geant4 9.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:37:50 +02:00
parent a8e9364cea
commit 96c8bcd0af
6923 changed files with 198390 additions and 41849 deletions
@@ -1,4 +1,4 @@
$Id: History,v 1.19 2007/05/31 11:13:31 vnivanch Exp $
$Id: History,v 1.22 2007/11/13 18:36:29 vnivanch Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,14 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
13 November 07: V.Ivanchenko (emhighenergy-V09-00-01)
- G4mplIonisationModel - introduced theoretical asymtotic low-energy
parameterization of dEdx
14 August 07: V.Ivanchenko (emhighenergy-V09-00-00)
- G4mplIonisationModel - fixed low-energy parameterization of monopole
energy loss; verified mean energy loss (M.Vladymirov)
31 May 07: V.Ivanchenko (emhighenergy-V08-03-02)
- G4mplIonisation - fixed destruction of monopole ionisation model
@@ -25,7 +25,7 @@
//
//
// $Id: G4AnnihiToMuPair.hh,v 1.2 2006/06/29 19:32:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4AnnihiToMuPair physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BetheBlochNoDeltaModel.hh,v 1.7 2006/06/29 19:32:14 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BraggNoDeltaModel.hh,v 1.6 2006/06/29 19:32:16 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4GammaConversionToMuons.hh,v 1.2 2006/06/29 19:32:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4GammaConversionToMuons physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4Vee2hadrons.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeCrossSections.hh,v 1.2 2006/06/29 19:32:22 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadrons.hh,v 1.8 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsModel.hh,v 1.6 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsMultiModel.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToTwoPiModel.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4hhIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4mplIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4mplIonisationModel.hh,v 1.4 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4mplIonisationModel.hh,v 1.6 2007/11/13 18:36:29 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -38,7 +38,7 @@
// Creation date: 06.09.2005
//
// Modifications:
//
// 12.08.2007 ComputeDEDXAhlen function added (M. Vladymyrov)
//
// Class Description:
//
@@ -92,6 +92,7 @@ public:
private:
void SetParticle(const G4ParticleDefinition* p);
G4double ComputeDEDXAhlen(const G4Material* material, G4double bg2);
// hide assignment operator
G4mplIonisationModel & operator=(const G4mplIonisationModel &right);
@@ -102,13 +103,17 @@ private:
G4double mass;
G4double magCharge;
G4double chargeSquare;
G4double twoln10;
G4double beta2low;
G4double betalow;
G4double betalim;
G4double beta2lim;
G4double bg2lim;
G4double factlow;
G4double chargeSquare;
G4double dedxlim;
G4int nmpl;
G4double pi_hbarc2_over_mc2;
G4double approxConst;
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4AnnihiToMuPair.cc,v 1.3 2006/06/29 19:32:34 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4AnnihiToMuPair physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BetheBlochNoDeltaModel.cc,v 1.3 2006/06/29 19:32:36 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BraggNoDeltaModel.cc,v 1.3 2006/06/29 19:32:38 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4GammaConversionToMuons.cc,v 1.4 2006/06/29 19:32:40 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// ------------ G4GammaConversionToMuons physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeCrossSections.cc,v 1.6 2006/06/29 19:32:42 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadrons.cc,v 1.7 2006/06/29 19:32:44 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsModel.cc,v 1.8 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadronsMultiModel.cc,v 1.4 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToTwoPiModel.cc,v 1.5 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4hhIonisation.cc,v 1.6 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4mplIonisation.cc,v 1.5 2007/05/31 11:13:31 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4mplIonisationModel.cc,v 1.3 2006/12/13 15:44:27 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4mplIonisationModel.cc,v 1.5 2007/11/13 18:36:29 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// -------------------------------------------------------------------
//
@@ -38,10 +38,17 @@
// Creation date: 06.09.2005
//
// Modifications:
// 12.08.2007 Changing low energy approximation and extrapolation.
// Small bug fixing and refactoring (M. Vladymyrov)
// 13.11.2007 Use low-energy asymptotic from [3] (V.Ivanchenko)
//
//
// -------------------------------------------------------------------
//
// References
// [1] Steven P. Ahlen: Energy loss of relativistic heavy ionizing particles,
// S.P. Ahlen, Rev. Mod. Phys 52(1980), p121
// [2] K.A. Milton arXiv:hep-ex/0602040
// [3] S.P. Ahlen and K. Kinoshita, Phys. Rev. D26 (1982) 2347
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -56,21 +63,21 @@
using namespace std;
G4mplIonisationModel::G4mplIonisationModel(G4double mCharge,
const G4String& nam)
G4mplIonisationModel::G4mplIonisationModel(G4double mCharge, const G4String& nam)
: G4VEmModel(nam),G4VEmFluctuationModel(nam),
magCharge(mCharge),
twoln10(2.0*log(10.0)),
beta2low(0.0001),
beta2lim(0.01),
twoln10(log(100.0)),
betalow(0.01),
betalim(0.1),
beta2lim(betalim*betalim),
bg2lim(beta2lim*(1.0 + beta2lim))
{
nmpl = G4int(abs(magCharge)/68.0);
nmpl = G4int(abs(magCharge) * 2 * fine_structure_const + 0.5);
if(nmpl > 6) nmpl = 6;
else if(nmpl < 1) nmpl = 1;
G4double x = 45.0*GeV*G4double(nmpl)/cm;
factlow = x*x;
chargeSquare = magCharge*magCharge;
pi_hbarc2_over_mc2 = pi * hbarc * hbarc / electron_mass_c2;
chargeSquare = magCharge * magCharge;
dedxlim = 45.*nmpl*nmpl*GeV*cm2/g;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -99,60 +106,74 @@ G4double G4mplIonisationModel::ComputeDEDXPerVolume(const G4Material* material,
G4double kineticEnergy,
G4double)
{
G4double tau = kineticEnergy/mass;
G4double tau = kineticEnergy / mass;
G4double gam = tau + 1.0;
G4double bg2 = tau * (tau+2.0);
G4double beta2 = bg2/(gam*gam);
G4double bg2 = tau * (tau + 2.0);
G4double beta2 = bg2 / (gam * gam);
G4double beta = sqrt(beta2);
G4double dedx0 = factlow*abs(beta2);
// low-energy asymptotic formula
G4double dedx = dedxlim*beta*material->GetDensity();
if(beta2 > beta2low) {
// above asymptotic
if(beta > betalow) {
G4double b2 = beta2;
if(beta2 < beta2lim) {
beta2= beta2lim;
bg2 = bg2lim;
// high energy
if(beta >= betalim) {
dedx = ComputeDEDXAhlen(material, bg2);
} else {
G4double dedx1 = dedxlim*betalow*material->GetDensity();
G4double dedx2 = ComputeDEDXAhlen(material, bg2lim);
// extrapolation between two formula
G4double kapa2 = beta - betalow;
G4double kapa1 = betalim - beta;
dedx = (kapa1*dedx1 + kapa2*dedx2)/(kapa1 + kapa2);
}
}
return dedx;
}
G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy();
G4double cden = material->GetIonisation()->GetCdensity();
G4double mden = material->GetIonisation()->GetMdensity();
G4double aden = material->GetIonisation()->GetAdensity();
G4double x0den = material->GetIonisation()->GetX0density();
G4double x1den = material->GetIonisation()->GetX1density();
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4double eDensity = material->GetElectronDensity();
G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, G4double bg2)
{
G4double eDensity = material->GetElectronDensity();
G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy();
G4double cden = material->GetIonisation()->GetCdensity();
G4double mden = material->GetIonisation()->GetMdensity();
G4double aden = material->GetIonisation()->GetAdensity();
G4double x0den = material->GetIonisation()->GetX0density();
G4double x1den = material->GetIonisation()->GetX1density();
G4double dedx = 2.0*log(2.0*electron_mass_c2*bg2/eexc) - 1.0;
// Ahlen's formula for nonconductors, [1]p157, f(5.7)
G4double dedx = log(2.0 * electron_mass_c2 * bg2 / eexc) - 0.5;
G4double k = 0.406;
if(nmpl > 1) k = 0.346;
const G4double B[7] = { 0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685};
// Kazama et al. cross-section correction
G4double k = 0.406;
if(nmpl > 1) k = 0.346;
dedx += k - B[nmpl];
// Bloch correction
const G4double B[7] = { 0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685};
// density correction
G4double x = log(bg2)/twoln10;
if ( x >= x0den ) {
dedx -= twoln10*x - cden ;
if ( x < x1den ) dedx -= aden*pow((x1den-x),mden) ;
}
dedx += 0.5 * k - B[nmpl];
// now compute the total ionization loss
if (dedx < 0.0) dedx = 0.0 ;
dedx *= twopi_mc2_rcl2*chargeSquare*eDensity;
// extrapolate between two formula
if(beta2 < beta2lim) {
x = log(dedx0) + log(dedx/dedx0)*log(b2/beta2low)/log(beta2lim/beta2low);
dedx = exp(x);
}
dedx0 = dedx;
// density effect correction
G4double deltam;
G4double x = log(bg2) / twoln10;
if ( x >= x0den ) {
deltam = twoln10 * x - cden;
if ( x < x1den ) deltam += aden * pow((x1den-x), mden);
dedx -= 0.5 * deltam;
}
return dedx0;
// now compute the total ionization loss
dedx *= pi_hbarc2_over_mc2 * eDensity * nmpl * nmpl;
if (dedx < 0.0) dedx = 0;
return dedx;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -180,9 +201,5 @@ G4double G4mplIonisationModel::SampleFluctuations(
loss = G4RandGauss::shoot(meanLoss,siga);
} while (0.0 > loss || loss > twomeanLoss);
}
//G4cout << "G4mplIonisationModel::SampleFluctuations: loss= " << loss
//<< " siga= " << siga << G4endl;
return loss;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -1,4 +1,4 @@
$Id: History,v 1.258 2007/06/07 13:57:26 pia Exp $
$Id: History,v 1.284 2007/11/26 17:27:09 pia Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,125 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
26.11.2007 MGP, tag emlowen-V09-00-28
Cleaned up std:: in G4FinalStateIonisationBorn/Rudd
14.11.2007 MGP, tag emlowen-V09-00-27
Correction to Problem Report 986 in G4AtomicDeexcitation
??.11.2007 Undocumented tag emlowen-V09-00-26
14.11.2007 MGP, tag emlowen-V09-00-25
Workaround in G4DNAProcess to avoid meanFrePath=0 when
cross section is DBL_MAX
13.11.2007 MGP, tag emlowen-V09-00-24
Fixed calculation of local energy deposit in G4DNAProcess
in the case when the primary particle is killed
Minor code improvements in G4FinalStateIonisationBorn.cc.
12.11.2007 G.Cosmo, tag emlowen-V09-00-23
Fixed trivial compilation error on WIN32-VC system in file
G4FinalStateIonisationBorn.cc.
09.11.2007 MGP, tag emlowen-V09-00-22
Added cross section and final state policy classes to configure
a process to kill particles below threshold
09.11.2007 MGP, tag emlowen-V09-00-21
Initialized data members missing initialization
09.11.2007 MGP, tag emlowen-V09-00-20
Removed verbose printouts in Geant4-DNA processes
09.11.2007 MGP, tag emlowen-V09-00-19
Fixed compilation problems on Windows
09.11.2007 MGP, tag emlowen-V09-00-18
Fixed compilation problems on Solaris
08.11.2007 MGP, tag emlowen-V09-00-17
Added Rudd ionisation
08.11.2007 MGP, tag emlowen-V09-00-16
Added Born ionisation final state
08.11.2007 MGP, tag emlowen-V09-00-15
Added Miller-Green excitation
08.11.2007 MGP, tag emlowen-V09-00-14
Modified data file name in G4EMLOW5.1
08.11.2007 MGP, tag emlowen-V09-00-13
Added charge increase/decrease Geant4-DNA cross sections
and final states (code by S. Incerti + code review by MGP)
08.11.2007 MGP, tag emlowen-V09-00-12
Removed obsolete G4DNA* files from CVS
22.10.2007 MGP, tag emlowen-V09-00-11
Added G4CrossSectionIonisationBorn
Excludes prototype G4DNA* classes (still available in CVS head)
Pertinent G4DNA* classes included are:
G4DNAProcess (.hh .icc),
G4DNACrossSectionDataSet (.hh .cc),
G4DNAGenericIonsManager (.hh .cc)
15.10.2007 MGP, tag emlowen-V09-00-10
Added electron excitation (Emfietzoglou model),
proton Born excitation, electron ionisation (Born) cross section; modified G4DNACrossSectionDataSet to
remove inheritance from concrete base class introduced
by a developer against the baseline design
Obsolete G4DNA* classes not compliant with the design
as in the TNS paper are still in this tag for convenience;
they will be removed from the repository when the
migration to the design as in the paper is completed
Goes with G4EMLOW5.0 (where a new dna/directory has been
added containing Geant4-DNA data tables for interpolation)
13.10.2007 MGP, tag emlowen-V09-00-09
Added Brenner-Zaider elastic scattering final state
12.10.2007 MGP, tag emlowen-V09-00-08
Fully working Geant4-DNA electron elastic scattering,
screened Rutherford cross section and final state
12.10.2007 MGP, tag emlowen-V09-00-07
Improved G4DNAProcess, G4FinalStateProduct
12.10.2007 MGP, tag emlowen-V09-00-06
First core of Geant4-DNA physics compliant with design
as in TNS paper: G4DNAProcess, G4FinalStateProduct,
G4eCrossSectionScreenedRutherford, G4DummyFinal State
(MG implementation)
12.10.2007 MGP, tag emlowen-V09-00-05
Extended G4DNAFinalStateProduct to deal with primary
particle modified in final state
Modified G4DNAProcess.icc accordingly
12.10.2007 MGP, tag emlowen-V09-00-04
Refactoring Geant4-DNA domain to be compliant with TNS paper
Added G4DNAProcess and G4DNAFinalStateProduct
11.10.2007 MGP, tag emlowen-V09-00-03
Identical to emlowen-V09-00-02, which apparently already
existed on some files (it is unclear where it originared from)
11.10.2007 MGP, tag emlowen-V09-00-02
Re-update to atomic relaxation fixes as in emlowen-V09-00-00
emlowen-V09-00-00 was rejected because of a mismatch between
code and G4EMLOW data library
This tag goes with G4EMLOW4.4
11.10.2007 MGP, tag emlowen-V09-00-01
Fix to bug 965 of G4PenelopeRayleigh by L. Pandola
23.07.2007 MGP, tag emlowen-V09-00-00
Deleted tag emlowen-V09-00-01 made by A.M. (no V-09-00-00 existed)
Fixes by A.M. to handle Z=100 in the Livermore library
and to correct Problem Report 933 (the latter fixes are not
documented)
04.06.2007 MGP, tag emlowen-V08-03-03
Tag on top of emlowen-V08-03-00a
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicShell.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -110,7 +110,7 @@ public:
protected:
G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 99,
G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 100,
G4int limitInfTable = 6, G4int limitSupTable=100 );
~G4AtomicTransitionManager();
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4AugerData.hh
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4BremsstrahlungParameters.hh,v 1.10 2006/06/29 19:33:06 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
// V. Ivanchenko (Vladimir.Ivantchenko@cern.ch)
@@ -25,7 +25,7 @@
//
//
// $Id: G4CompositeEMDataSet.hh,v 1.8 2006/06/29 19:33:08 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -24,46 +24,62 @@
// ********************************************************************
//
//
// $Id: G4DNAElectronElasticScatteringInWater.hh,v 1.6 2006/10/14 11:03:03 pia Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionChargeDecrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Nucl. Instr. Meth. 155 (1978) 145-156
// J. Phys. D: Appl. Phys. 33 (2000) 932-944
// Phys. Med. Biol. 45 (2000) 3171-3194
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
#ifndef G4DNAELECTRONELASTICSCATTERINGINWATER_HH
#define G4DNAELECTRONELASTICSCATTERINGINWATER_HH 1
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEDECREASE_HH
#define G4CROSSSECTIONCHARGEDECREASE_HH 1
#include "G4VDNAProcessInWater.hh"
#include "globals.hh"
#include <map>
#include "G4CrossSectionChargeDecreasePartial.hh"
class G4Track;
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// FinalStatesPolicy must provide:
// - [protected] G4double RandomizeCosTheta(G4double k, G4int z)
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAElectronElasticScatteringInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
class G4CrossSectionChargeDecrease
{
public:
G4DNAElectronElasticScatteringInWater(const G4String & name): G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAElectronElasticScatteringInWater() {}
virtual G4VParticleChange* PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
G4CrossSectionChargeDecrease();
virtual ~G4CrossSectionChargeDecrease();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
// Hides default constructor and assignment operator as private
G4DNAElectronElasticScatteringInWater(const G4DNAElectronElasticScatteringInWater & copy);
G4DNAElectronElasticScatteringInWater & operator=(const G4DNAElectronElasticScatteringInWater & right);
};
#include "G4DNAElectronElasticScatteringInWater.icc"
#endif /* G4DNAELECTRONELASTICSCATTERINGINWATER_HH */
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4CrossSectionChargeDecreasePartial partialCrossSection;
};
#endif
@@ -0,0 +1,91 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionChargeDecreasePartial.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
// 08 Nov 2007 MGP Got code from S.I.; lowercase data member
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH
#define G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH 1
#include "globals.hh"
class G4ParticleDefinition;
class G4CrossSectionChargeDecreasePartial
{
public:
G4CrossSectionChargeDecreasePartial();
virtual ~G4CrossSectionChargeDecreasePartial();
G4double CrossSection(G4double energy, G4int level, const G4ParticleDefinition* particle);
G4double Sum(G4double energy, const G4ParticleDefinition* particle);
G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle);
// Copy constructor and assignment operator to be added here
private:
G4int numberOfPartialCrossSections[3]; // 3 is the particle type index
G4double f0[2][3];
G4double a0[2][3];
G4double a1[2][3];
G4double b0[2][3];
G4double b1[2][3];
G4double c0[2][3];
G4double d0[2][3];
G4double x0[2][3];
G4double x1[2][3];
};
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionChargeIncrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEIncrease_HH
#define G4CROSSSECTIONCHARGEIncrease_HH 1
#include "globals.hh"
#include <map>
#include "G4CrossSectionChargeIncreasePartial.hh"
class G4Track;
class G4CrossSectionChargeIncrease
{
public:
G4CrossSectionChargeIncrease();
virtual ~G4CrossSectionChargeIncrease();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4CrossSectionChargeIncreasePartial partialCrossSection;
};
#endif
@@ -0,0 +1,90 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionChargeIncreasePartial.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEIncreasePARTIAL_HH
#define G4CROSSSECTIONCHARGEIncreasePARTIAL_HH 1
#include "globals.hh"
class G4ParticleDefinition;
class G4CrossSectionChargeIncreasePartial
{
public:
G4CrossSectionChargeIncreasePartial();
virtual ~G4CrossSectionChargeIncreasePartial();
G4double CrossSection(G4double energy, G4int level, const G4ParticleDefinition* particle);
G4double Sum(G4double energy, const G4ParticleDefinition* particle);
G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle);
// Copy constructor and assignment operator to be added here
private:
G4int numberOfPartialCrossSections[2]; // 2 is the particle type index
G4double f0[2][2];
G4double a0[2][2];
G4double a1[2][2];
G4double b0[2][2];
G4double b1[2][2];
G4double c0[2][2];
G4double d0[2][2];
G4double x0[2][2];
G4double x1[2][2];
};
#endif
@@ -24,49 +24,59 @@
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionElasticScreenedRutherford.hh,v 1.1 2007/10/12 23:07:10 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifdef G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
template <typename EnergyLimitsPolicy>
G4bool G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONELASTICSCREENEDRUTHERFORD_HH
#define G4CROSSSECTIONELASTICSCREENEDRUTHERFORD_HH 1
#include "globals.hh"
class G4Track;
class G4CrossSectionElasticScreenedRutherford
{
public:
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int /* finalStateIndex */) const
{
return 1;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition * G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int /* finalStateIndex */)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
return instance->GetIon("alpha++");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: IncomingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
return 54.509*eV;
}
#endif /* G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH */
G4CrossSectionElasticScreenedRutherford();
virtual ~G4CrossSectionElasticScreenedRutherford();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4double RutherfordCrossSection(G4double energy, G4double z);
G4double ScreeningFactor(G4double energy, G4double z);
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
};
#endif
@@ -24,43 +24,60 @@
// ********************************************************************
//
//
// $Id: G4DNAChargeDecreaseInWater.hh,v 1.4 2006/06/29 19:33:40 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionExcitationBorn.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifndef G4DNACHARGEDECREASEINWATER_HH
#define G4DNACHARGEDECREASEINWATER_HH 1
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
#include "G4VDNAProcessInWater.hh"
// -------------------------------------------------------------------
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
// - [protected] G4int NumberOfFinalStates(G4int finalStateIndex)
// - [protected] G4double OverallBindingEnergyConstant(G4int finalStateIndex)
#ifndef G4CROSSSECTIONEXCITATIONBORN_HH
#define G4CROSSSECTIONEXCITATIONBORN_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
#include "G4DNACrossSectionDataSet.hh"
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAChargeDecreaseInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
class G4Track;
class G4CrossSectionExcitationBorn
{
public:
G4DNAChargeDecreaseInWater(const G4String& name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAChargeDecreaseInWater() {}
virtual G4VParticleChange* PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
G4CrossSectionExcitationBorn();
virtual ~G4CrossSectionExcitationBorn();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
// Hides default constructor and assignment operator as private
G4DNAChargeDecreaseInWater(const G4DNAChargeDecreaseInWater & copy);
G4DNAChargeDecreaseInWater& operator=(const G4DNAChargeDecreaseInWater & right);
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4DNACrossSectionDataSet* table;
};
#include "G4DNAChargeDecreaseInWater.icc"
#endif /* G4DNACHARGEDECREASEINWATER_HH */
#endif
@@ -24,56 +24,54 @@
// ********************************************************************
//
//
// $Id: G4DNAHeliumChargeIncrease.cc,v 1.2 2006/06/29 19:39:26 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionExcitationBornPartial.hh,v 1.1 2007/10/15 08:34:12 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#include "G4DNAHeliumChargeIncrease.hh"
#include "G4DNAGenericIonsManager.hh"
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
G4DNAHeliumChargeIncreaseEnergyLimitsPolicy :: G4DNAHeliumChargeIncreaseEnergyLimitsPolicy()
:
lowEnergyLimit(1.*keV),
zeroBelowLowEnergyLimit(true),
highEnergyLimit(10.*MeV),
zeroAboveHighEnergyLimit(true)
{
}
// -------------------------------------------------------------------
G4DNAHeliumChargeIncreaseIncomingParticlePolicy :: G4DNAHeliumChargeIncreaseIncomingParticlePolicy()
{
f0[0]=1.;
a0[0]=2.25;
a1[0]=-0.75;
b0[0]=-30.93;
c0[0]=0.590;
d0[0]=2.35;
x0[0]=4.29;
f0[1]=1.;
a0[1]=2.25;
a1[1]=-0.75;
b0[1]=-32.61;
c0[1]=0.435;
d0[1]=2.70;
x0[1]=4.45;
// x1 and b1 will be calculated by G4DNADingfelderChargeChangeTotalCrossSectionPolicy<, > :: PartialCrossSection
x1[0]=-1.;
b1[0]=-1.;
x1[1]=-1.;
b1[1]=-1.;
}
const G4ParticleDefinition * G4DNAHeliumChargeIncreaseIncomingParticlePolicy :: IncomingParticleDefinition(void) const
{
G4DNAGenericIonsManager *instance;
instance = G4DNAGenericIonsManager::Instance();
#ifndef G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH
#define G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH 1
return instance->GetIon("helium");
}
G4int G4DNAHeliumChargeIncreaseIncomingParticlePolicy :: NumberOfPartialCrossSections(void) const
#include "globals.hh"
#include <vector>
#include "G4DNACrossSectionDataSet.hh"
class G4CrossSectionExcitationBornPartial
{
return 2;
}
public:
G4CrossSectionExcitationBornPartial();
virtual ~G4CrossSectionExcitationBornPartial();
// Select an excitation level according to the partial cross sections
G4int RandomSelect(G4double energy);
// Copy constructor and assignment operator to be added here
private:
G4DNACrossSectionDataSet* table;
};
#endif
@@ -24,52 +24,58 @@
// ********************************************************************
//
//
// $Id: G4VDNAProcessInWater.hh,v 1.6 2006/06/29 19:37:03 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionExcitationEmfietzoglou.hh,v 1.2 2007/10/15 08:31:49 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifndef G4VDNAPROCESSINWATER_HH
#define G4VDNAPROCESSINWATER_HH 1
#include "G4VLowEnergyTestableDiscreteProcess.hh"
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH
#define G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH 1
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
#include "globals.hh"
#include "G4CrossSectionExcitationEmfietzoglouPartial.hh"
class G4Track;
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4VDNAProcessInWater : public G4VLowEnergyTestableDiscreteProcess, public TotalCrossSectionPolicy, public FinalStatesPolicy
class G4CrossSectionExcitationEmfietzoglou
{
public:
G4VDNAProcessInWater(const G4String& name) : G4VLowEnergyTestableDiscreteProcess(name) {}
virtual ~G4VDNAProcessInWater() {}
virtual G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep);
virtual void BuildPhysicsTable(const G4ParticleDefinition& aParticleDefinition);
virtual G4bool IsApplicable(const G4ParticleDefinition& aParticleDefinition);
protected:
void ValidateInWater(const G4Track& aTrack) const;
virtual G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition);
G4CrossSectionExcitationEmfietzoglou();
virtual ~G4CrossSectionExcitationEmfietzoglou();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4CrossSectionExcitationEmfietzoglouPartial partialCrossSection;
// Hides default constructor and assignment operator as private
G4VDNAProcessInWater();
G4VDNAProcessInWater& operator=(const G4VDNAProcessInWater & right);
};
#include "G4VDNAProcessInWater.icc"
#endif /* G4VDNAPROCESSINWATER_HH */
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionExcitationEmfietzoglouPartial.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH
#define G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
class G4Track;
class G4CrossSectionExcitationEmfietzoglouPartial
{
public:
G4CrossSectionExcitationEmfietzoglouPartial();
virtual ~G4CrossSectionExcitationEmfietzoglouPartial();
G4double CrossSection(G4double energy,G4int level);
G4double Sum(G4double energy);
G4int RandomSelect(G4double energy);
// Copy constructor and assignment operator to be added here
private:
// Number of excitation levels of the water molecule
G4int nLevels;
G4WaterExcitationStructure waterExcitation;
};
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionExcitationMillerGreen.hh,v 1.2 2007/11/08 19:56:02 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONMILLERGREEN_HH
#define G4CROSSSECTIONEXCITATIONMILLERGREEN_HH 1
#include "globals.hh"
#include <map>
#include "G4CrossSectionExcitationMillerGreenPartial.hh"
class G4Track;
class G4CrossSectionExcitationMillerGreen
{
public:
G4CrossSectionExcitationMillerGreen();
virtual ~G4CrossSectionExcitationMillerGreen();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4CrossSectionExcitationMillerGreenPartial partialCrossSection;
};
#endif
@@ -0,0 +1,110 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionExcitationMillerGreenPartial.hh,v 1.1 2007/11/08 19:56:02 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH
#define G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
#include "G4ParticleDefinition.hh"
class G4Track;
class G4CrossSectionExcitationMillerGreenPartial
{
public:
G4CrossSectionExcitationMillerGreenPartial();
virtual ~G4CrossSectionExcitationMillerGreenPartial();
G4double CrossSection(G4double energy,G4int level, const G4ParticleDefinition* particle);
G4double Sum(G4double energy, const G4ParticleDefinition* particle);
G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle);
// Copy constructor and assignment operator to be added here
private:
// Number of excitation levels of the water molecule
G4int nLevels;
G4WaterExcitationStructure waterExcitation;
G4double S_1s(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double S_2s(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double S_2p(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double R(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double kineticEnergyCorrection[4]; // 4 is the particle type index
G4double slaterEffectiveCharge[3][4];
G4double sCoefficient[3][4];
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4CrossSectionHandler.hh,v 1.9 2006/06/29 19:33:10 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBorn.hh,v 1.1 2007/10/22 09:12:58 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORN_HH
#define G4CROSSSECTIONIONISATIONBORN_HH 1
#include "globals.hh"
#include <map>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationBorn
{
public:
G4CrossSectionIonisationBorn();
~G4CrossSectionIonisationBorn();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
};
#endif
@@ -0,0 +1,83 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBornElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORNELECTRON_HH
#define G4CROSSSECTIONIONISATIONBORNELECTRON_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationBornElectron
{
public:
G4CrossSectionIonisationBornElectron();
virtual ~G4CrossSectionIonisationBornElectron();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4DNACrossSectionDataSet* table;
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBornPartial.hh,v 1.1 2007/10/22 09:12:58 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORNPARTIAL_HH
#define G4CROSSSECTIONIONISATIONBORNPARTIAL_HH 1
#include "globals.hh"
#include <map>
#include <functional>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationBornPartial
{
public:
G4CrossSectionIonisationBornPartial();
~G4CrossSectionIonisationBornPartial();
// Partial cross section
// G4double CrossSection(G4double energy, const G4String& particle);
G4double CrossSection(const G4Track& track);
// Sum of partial cross sections at a given energy value for a particle type
G4double Sum(G4double energy, const G4String& particle);
G4int RandomSelect(G4double energy,const G4String& particle );
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
// G4DNACrossSectionDataSet* table;
};
#endif
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBornPartialElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORNPARTIALELECTRON_HH
#define G4CROSSSECTIONIONISATIONBORNPARTIALELECTRON_HH 1
#include "globals.hh"
#include <vector>
#include "G4DNACrossSectionDataSet.hh"
class G4CrossSectionIonisationBornPartialElectron
{
public:
G4CrossSectionIonisationBornPartialElectron();
virtual ~G4CrossSectionIonisationBornPartialElectron();
// Select an excitation level according to the partial cross sections
G4int RandomSelect(G4double energy);
// Copy constructor and assignment operator to be added here
private:
G4DNACrossSectionDataSet* table;
};
#endif
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationRudd.hh,v 1.1 2007/11/08 21:35:31 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONRUDD_HH
#define G4CROSSSECTIONIONISATIONRUDD_HH 1
#include "globals.hh"
#include <map>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationRudd
{
public:
G4CrossSectionIonisationRudd();
~G4CrossSectionIonisationRudd();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationRuddPartial.hh,v 1.1 2007/11/08 21:35:31 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONRuddPARTIAL_HH
#define G4CROSSSECTIONIONISATIONRuddPARTIAL_HH 1
#include "globals.hh"
#include <map>
#include <functional>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationRuddPartial
{
public:
G4CrossSectionIonisationRuddPartial();
~G4CrossSectionIonisationRuddPartial();
// Partial cross section
// G4double CrossSection(G4double energy, const G4String& particle);
G4double CrossSection(const G4Track& track);
// Sum of partial cross sections at a given energy value for a particle type
G4double Sum(G4double energy, const G4String& particle);
G4int RandomSelect(G4double energy,const G4String& particle );
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
// G4DNACrossSectionDataSet* table;
};
#endif
@@ -24,29 +24,57 @@
// ********************************************************************
//
//
// $Id: G4DNAExcitationInWater.icc,v 1.3 2006/06/29 19:34:14 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifdef G4DNAEXCITATIONINWATER_HH
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange * G4DNAExcitationInWater<TotalCrossSectionPolicy, FinalStatesPolicy> :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep)
{
const G4int z(10); // H2O number of electrons
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONKILL_HH
#define G4CROSSSECTIONKILL_HH 1
#include "globals.hh"
class G4Track;
class G4CrossSectionKill
{
public:
this->aParticleChange.Initialize(aTrack);
G4CrossSectionKill();
G4double k;
k=aTrack.GetDynamicParticle()->GetKineticEnergy();
virtual ~G4CrossSectionKill();
G4int excitationLevel(this->RandomizePartialCrossSection(k, z));
G4double excitationEnergy(this->EnergyConstant(excitationLevel));
G4double CrossSection(const G4Track&);
this->aParticleChange.ProposeEnergy(k-excitationEnergy);
this->aParticleChange.ProposeLocalEnergyDeposit(excitationEnergy);
this->aParticleChange.ProposeMomentumDirection(aTrack.GetDynamicParticle()->GetMomentumDirection());
this->aParticleChange.SetNumberOfSecondaries(0);
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
}
#endif /* G4DNAEXCITATIONINWATER_HH */
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
};
#endif
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeDecrease.hh,v 1.2 2006/06/29 19:33:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSCHARGEDECREASE_HH
#define G4DNAALPHAPLUSCHARGEDECREASE_HH 1
#include "G4DNAChargeDecreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[1];
G4double a0[1];
G4double a1[1];
G4double b0[1];
G4double b1[1];
G4double c0[1];
G4double d0[1];
G4double x0[1];
G4double x1[1];
};
class G4DNAAlphaPlusChargeDecrease : public G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusChargeDecrease(const G4String & name = "G4DNAAlphaPlusChargeDecrease") : G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusChargeDecrease() {}
};
#endif /* G4DNAALPHAPLUSCHARGEDECREASE_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#define G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy() {}
~G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4int finalStateIndex) const;
G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy(const G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & copy);
G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & right);
};
#include "G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc"
#endif /* G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,84 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int /* finalStateIndex */) const
{
return 1;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition * G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int /* finalStateIndex */)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
return instance->GetIon("helium");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: WaterBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Binding energy for W+ -> W++ + e- 10.79 eV
// Binding energy for W -> W+ + e- 10.79 eV
//
// Ionization energy of first water shell
// Rad. Phys. Chem. 59 p.267 by Dingf. et al.
return 10.79*eV;
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
return 24.587*eV;
}
#endif /* G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeIncrease.hh,v 1.2 2006/06/29 19:33:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSCHARGEINCREASE_HH
#define G4DNAALPHAPLUSCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[1];
G4double a0[1];
G4double a1[1];
G4double b0[1];
G4double b1[1];
G4double c0[1];
G4double d0[1];
G4double x0[1];
G4double x1[1];
};
class G4DNAAlphaPlusChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusChargeIncrease(const G4String & name = "G4DNAAlphaPlusChargeIncrease") : G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusChargeIncrease() {}
};
#endif /* G4DNAALPHAPLUSCHARGEINCREASE_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeIncreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH
#define G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy() {}
~G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy(const G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & copy);
G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusExcitation.hh,v 1.2 2006/06/29 19:33:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSEXCITATION_HH
#define G4DNAALPHAPLUSEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusExcitationEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusExcitationIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
const G4double kineticEnergyCorrection;
};
class G4DNAAlphaPlusExcitation : public G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusExcitationEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusExcitation(const G4String & name = "G4DNAAlphaPlusExcitation") : G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusExcitation() {}
};
#endif /* G4DNAALPHAPLUSEXCITATION_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusChargeDecrease.hh,v 1.2 2006/06/29 19:33:26 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH
#define G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH 1
#include "G4DNAChargeDecreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[2];
G4double a0[2];
G4double a1[2];
G4double b0[2];
G4double b1[2];
G4double c0[2];
G4double d0[2];
G4double x0[2];
G4double x1[2];
};
class G4DNAAlphaPlusPlusChargeDecrease : public G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusPlusChargeDecrease(const G4String & name = "G4DNAAlphaPlusPlusChargeDecrease") : G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusPlusChargeDecrease() {}
};
#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#define G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy() {}
~G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4int finalStateIndex) const;
G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy(const G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & copy);
G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & right);
};
#include "G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc"
#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,97 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int finalStateIndex) const
{
if (finalStateIndex==0)
return 1;
return 2;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int finalStateIndex)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
if (finalStateIndex==0)
return instance->GetIon("alpha+");
return instance->GetIon("helium");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: WaterBindingEnergyConstant(G4int finalStateIndex) const
{
// Binding energy for W+ -> W++ + e- 10.79 eV
// Binding energy for W -> W+ + e- 10.79 eV
//
// Ionization energy of first water shell
// Rad. Phys. Chem. 59 p.267 by Dingf. et al.
if (finalStateIndex==0)
return 10.79*eV;
return 10.79*2*eV;
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
if (finalStateIndex==0)
return 54.509*eV;
return (54.509 + 24.587)*eV;
}
#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusExcitation.hh,v 1.2 2006/06/29 19:33:32 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSPLUSEXCITATION_HH
#define G4DNAALPHAPLUSPLUSEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
const G4double kineticEnergyCorrection;
};
class G4DNAAlphaPlusPlusExcitation : public G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusPlusExcitation(const G4String & name = "G4DNAAlphaPlusPlusExcitation") : G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusPlusExcitation() {}
};
#endif /* G4DNAALPHAPLUSPLUSEXCITATION_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNABornExcitationFinalStatesPolicy, 2005/09/19 13:51:45 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-
#ifndef G4DNABornExcitationFinalStatesPolicy_HH
#define G4DNABornExcitationFinalStatesPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNABornExcitationFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNABornExcitationFinalStatesPolicy() {}
~G4DNABornExcitationFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4double EnergyConstant(G4int excitationLevelIndex) const;
// Hides default constructor and assignment operator as private
G4DNABornExcitationFinalStatesPolicy(const G4DNABornExcitationFinalStatesPolicy & copy);
G4DNABornExcitationFinalStatesPolicy & operator=(const G4DNABornExcitationFinalStatesPolicy & right);
};
#include "G4DNABornExcitationFinalStatesPolicy.icc"
#endif /* G4DNABornExcitationFinalStatesPolicy_HH */
@@ -1,85 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAChargeDecreaseInWater.icc,v 1.4 2006/06/29 19:33:42 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNACHARGEDECREASEINWATER_HH
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange * G4DNAChargeDecreaseInWater<TotalCrossSectionPolicy, FinalStatesPolicy> :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep)
{
this->aParticleChange.Initialize(aTrack);
this->aParticleChange.ProposeTrackStatus(fStopAndKill);
G4double inK(aTrack.GetDynamicParticle()->GetKineticEnergy());
const G4int z(10); // H2O number of electrons
G4int finalStateIndex(TotalCrossSectionPolicy::RandomizePartialCrossSection(inK, z));
G4int n(FinalStatesPolicy::NumberOfFinalStates(finalStateIndex));
G4double waterBindingEnergy(FinalStatesPolicy::WaterBindingEnergyConstant(finalStateIndex));
G4double outgoingParticleBindingEnergy(FinalStatesPolicy::OutgoingParticleBindingEnergyConstant(finalStateIndex));
G4double outK(inK - n*(inK*electron_mass_c2/proton_mass_c2) - waterBindingEnergy + outgoingParticleBindingEnergy);
if (outK<0)
{
G4String message;
message="G4DNAChargeDecreaseInWater<>::PostStepDoIt - Final kinetic energy is below 0! Process ";
message+=this->GetProcessName();
G4Exception(message);
}
this->aParticleChange.ProposeLocalEnergyDeposit(waterBindingEnergy);
this->aParticleChange.SetNumberOfSecondaries(1);
this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), outK));
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
/* aParticleChange.Initialize(aTrack);
G4double k=aTrack.GetDynamicParticle()->GetKineticEnergy();
G4int finalStateIndex(FinalStatesPolicy::NumberOfFinalStates());
G4int randomShell;
G4double electronBindingEnergy=0.;
for(G4int index=0; index<finalStateIndex; index++)
{
randomShell = TotalCrossSectionPolicy::RandomizePartialCrossSection(k);
electronBindingEnergy+=TotalCrossSectionPolicy::WaterBindingEnergy(randomShell);
}
G4double overallBindingEnergy(FinalStatesPolicy::OverallBindingEnergyConstant(finalStateIndex));
aParticleChange.ProposeLocalEnergyDeposit(electronBindingEnergy);
aParticleChange.SetNumberOfSecondaries(1);
G4DynamicParticle *newParticle = new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex),
aTrack.GetDynamicParticle()->GetMomentumDirection(),
k-finalStateIndex*(k*electron_mass_c2/proton_mass_c2)-electronBindingEnergy+overallBindingEnergy);
aParticleChange.ProposeTrackStatus(fStopAndKill);
aParticleChange.AddSecondary(newParticle);
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep); */
}
#endif /* G4DNACHARGEDECREASEINWATER_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAChargeIncreaseInWater.hh,v 1.3 2006/06/29 19:33:44 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifndef G4DNACHARGEINCREASEINWATER_HH
#define G4DNACHARGEINCREASEINWATER_HH 1
#include "G4VDNAProcessInWater.hh"
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
// - [protected] G4int NumberOfFinalStates(G4int finalStateIndex)
// - [protected] G4double OverallBindingEnergyConstant(G4int finalStateIndex)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAChargeIncreaseInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
{
public:
G4DNAChargeIncreaseInWater(const G4String & name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAChargeIncreaseInWater() {}
virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
private:
// Hides default constructor and assignment operator as private
G4DNAChargeIncreaseInWater(const G4DNAChargeIncreaseInWater & copy);
G4DNAChargeIncreaseInWater & operator=(const G4DNAChargeIncreaseInWater & right);
};
#include "G4DNAChargeIncreaseInWater.icc"
#endif /* G4DNACHARGEINCREASEINWATER_HH */
@@ -1,71 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAChargeIncreaseInWater.icc,v 1.4 2006/06/29 19:33:46 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNACHARGEINCREASEINWATER_HH
#include "G4Electron.hh"
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange* G4DNAChargeIncreaseInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
{
this->aParticleChange.Initialize(aTrack);
this->aParticleChange.ProposeLocalEnergyDeposit(0.);
this->aParticleChange.ProposeTrackStatus(fStopAndKill);
G4double inK(aTrack.GetDynamicParticle()->GetKineticEnergy());
const G4int z(10); // H2O number of electrons
G4int finalStateIndex(TotalCrossSectionPolicy::RandomizePartialCrossSection(inK, z));
G4int n(FinalStatesPolicy::NumberOfFinalStates(finalStateIndex));
G4double outK(inK-FinalStatesPolicy::IncomingParticleBindingEnergyConstant(finalStateIndex));
G4double electronK(inK*electron_mass_c2/proton_mass_c2);
if (outK<0)
{
G4String message;
message="G4DNAChargeIncreaseInWater<>::PostStepDoIt - Final kinetic energy is below 0! Process ";
message+=this->GetProcessName();
G4Exception(message);
}
this->aParticleChange.SetNumberOfSecondaries(n+1);
this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), outK));
while (n>0)
{
n--;
this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), electronK));
}
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
}
#endif /* G4DNACHARGEINCREASEINWATER_HH */
@@ -24,14 +24,15 @@
// ********************************************************************
//
//
// $Id: G4DNACrossSectionDataSet.hh,v 1.2 2006/06/29 19:33:48 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4DNACrossSectionDataSet.hh,v 1.4 2007/10/15 08:31:49 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Riccardo Capra <capra@ge.infn.it>
//
// History:
// -----------
// 30 Jun 2005 RC Created
// 14 Oct 2007 MGP Removed inheritance from concrete class G4ShellEMDataSet
//
// -------------------------------------------------------------------
@@ -48,16 +49,64 @@
#include "G4ShellEMDataSet.hh"
class G4DNACrossSectionDataSet : public G4ShellEMDataSet
class G4DNACrossSectionDataSet : public G4VEMDataSet
{
public:
G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm, G4double argUnitEnergies=MeV, G4double argUnitData=barn);
virtual ~G4DNACrossSectionDataSet();
G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm,
G4double argUnitEnergies=MeV,
G4double argUnitData=barn);
virtual G4bool LoadData(const G4String & argFileName);
virtual G4bool SaveData(const G4String & argFileName) const;
virtual ~G4DNACrossSectionDataSet();
virtual G4double FindValue(G4double argEnergy, G4int argComponentId=0) const;
virtual void PrintData(void) const;
virtual const G4VEMDataSet* GetComponent(G4int argComponentId) const
{ return components[argComponentId]; }
virtual void AddComponent(G4VEMDataSet * argDataSet)
{ components.push_back(argDataSet); }
virtual size_t NumberOfComponents(void) const
{ return components.size(); }
virtual const G4DataVector& GetEnergies(G4int argComponentId) const
{ return GetComponent(argComponentId)->GetEnergies(0); }
virtual const G4DataVector& GetData(G4int argComponentId) const
{ return GetComponent(argComponentId)->GetData(0); }
virtual void SetEnergiesData(G4DataVector* argEnergies, G4DataVector* argData, G4int argComponentId);
virtual G4bool LoadData(const G4String & argFileName);
virtual G4bool SaveData(const G4String & argFileName) const;
// void CleanUpComponents();
private:
G4String FullFileName(const G4String & argFileName) const;
};
G4String FullFileName(const G4String & argFileName) const;
// Hide copy constructor and assignment operator
G4DNACrossSectionDataSet();
G4DNACrossSectionDataSet(const G4DNACrossSectionDataSet & copy);
G4DNACrossSectionDataSet& operator=(const G4DNACrossSectionDataSet & right);
std::vector<G4VEMDataSet*> components; // Owned pointers
G4int z;
G4VDataSetAlgorithm* algorithm; // Owned pointer
G4double unitEnergies;
G4double unitData;
G4double GetUnitEnergies() const { return unitEnergies; }
G4double GetUnitData() const { return unitData; }
const G4VDataSetAlgorithm* GetAlgorithm() const { return algorithm; }
void CleanUpComponents(void);
};
#endif /* G4DNACROSSSECTIONDATASET_HH */
@@ -1,77 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:33:50 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH
#define G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// - [protected] G4int NumberOfPartialCrossSections(void)
// - [protected] const G4double f0[]
// - [protected] const G4double a0[]
// - [protected] const G4double a1[]
// - [protected] const G4double b0[]
// - [protected] const G4double b1[]
// - [protected] const G4double c0[]
// - [protected] const G4double d0[]
// - [protected] G4double x0[]
// - [protected] G4double x1[]
// EnergyLimitsPolicy must provide:
// - [protected] const G4double lowEnergyLimit
// - [protected] const G4double zeroBelowLowEnergyLimit
// - [protected] const G4double highEnergyLimit
// - [protected] const G4double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNADingfelderChargeChangeTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNADingfelderChargeChangeTotalCrossSectionPolicy() {}
~G4DNADingfelderChargeChangeTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z);
G4int RandomizePartialCrossSection(G4double k, G4int z);
void BuildTotalCrossSection(void) const {}
// G4int StepFunction(G4double x) const;
// G4double WaterBindingEnergy(G4int levelIndex) const;
private:
G4double PartialCrossSection(G4double k, G4int z, G4int index);
// Hides default constructor and assignment operator as private
G4DNADingfelderChargeChangeTotalCrossSectionPolicy(const G4DNADingfelderChargeChangeTotalCrossSectionPolicy & copy);
G4DNADingfelderChargeChangeTotalCrossSectionPolicy & operator=(const G4DNADingfelderChargeChangeTotalCrossSectionPolicy & right);
};
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc"
#endif /* G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH */
@@ -1,144 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc,v 1.3 2006/06/29 19:33:52 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNADingfelderChargeChangeTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int z)
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4int i(IncomingParticlePolicy::NumberOfPartialCrossSections());
G4double totalCrossSection(0.);
while (i>0)
{
i--;
totalCrossSection+=PartialCrossSection(k, z, i);
}
return totalCrossSection;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNADingfelderChargeChangeTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double k, G4int z)
{
const G4int n(IncomingParticlePolicy::NumberOfPartialCrossSections());
G4double * values(new G4double[n]);
G4double value(0);
G4int i(n);
while (i>0)
{
i--;
values[i]=PartialCrossSection(k, z, i);
value+=values[i];
}
value*=G4UniformRand();
i=n;
while (i>0)
{
i--;
if (values[i]>value)
break;
value-=values[i];
}
delete[] values;
return i;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNADingfelderChargeChangeTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: PartialCrossSection(G4double k, G4int /* z */, G4int index)
{
//
// sigma(T) = f0 10 ^ y(std::log10(T/eV))
//
// / a0 x + b0 x < x0
// |
// y(x) = < a0 x + b0 - c0 (x - x0)^d0 x0 <= x < x1
// |
// \ a1 x + b1 x >= x1
//
//
// f0, a0, a1, b0, b1, c0, d0, x0, x1 are parameters that change for protons and helium (0, +, ++)
//
// f0 has been added to the code in order to manage partial (shell-dependent) cross sections (if no shell dependence is present. f0=1. Sum of f0 over the considered shells should give 1)
//
// From Rad. Phys. and Chem. 59 (2000) 255-275, M. Dingfelder et al.
// Inelastic-collision cross sections of liquid water for interactions of energetic proton
//
if (IncomingParticlePolicy::x1[index]<IncomingParticlePolicy::x0[index])
{
//
// if x1 < x0 means that x1 and b1 will be calculated with the following formula (this piece of code is run on all alphas and not on protons)
//
// x1 = x0 + ((a0 - a1)/(c0 * d0)) ^ (1 / (d0 - 1))
//
// b1 = (a0 - a1) * x1 + b0 - c0 * (x1 - x0) ^ d0
//
IncomingParticlePolicy::x1[index]=IncomingParticlePolicy::x0[index] + std::pow((IncomingParticlePolicy::a0[index] - IncomingParticlePolicy::a1[index]) / (IncomingParticlePolicy::c0[index] * IncomingParticlePolicy::d0[index]), 1. / (IncomingParticlePolicy::d0[index] - 1.));
IncomingParticlePolicy::b1[index]=(IncomingParticlePolicy::a0[index] - IncomingParticlePolicy::a1[index]) * IncomingParticlePolicy::x1[index] + IncomingParticlePolicy::b0[index] - IncomingParticlePolicy::c0[index] * std::pow(IncomingParticlePolicy::x1[index] - IncomingParticlePolicy::x0[index], IncomingParticlePolicy::d0[index]);
}
G4double x(std::log10(k/eV));
G4double y;
if (x<IncomingParticlePolicy::x0[index])
y=IncomingParticlePolicy::a0[index] * x + IncomingParticlePolicy::b0[index];
else if (x<IncomingParticlePolicy::x1[index])
y=IncomingParticlePolicy::a0[index] * x + IncomingParticlePolicy::b0[index] - IncomingParticlePolicy::c0[index] * std::pow(x - IncomingParticlePolicy::x0[index], IncomingParticlePolicy::d0[index]);
else
y=IncomingParticlePolicy::a1[index] * x + IncomingParticlePolicy::b1[index];
return IncomingParticlePolicy::f0[index] * std::pow(10., y)*m*m;
}
#endif /* G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH */
@@ -1,76 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAElectronBornExcitation.hh,v 1.3 2006/06/29 19:33:54 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAElectronBornExcitation_HH
#define G4DNAElectronBornExcitation_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
#include "G4DNATotalCrossSectionFromFilePolicy.hh"
#include "G4DNABornExcitationFinalStatesPolicy.hh"
#include "G4LogLogInterpolation.hh"
class G4DNAElectronBornExcitationEnergyLimitsPolicy
{
protected:
G4DNAElectronBornExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAElectronBornExcitationIncomingParticlePolicy
{
protected:
G4DNAElectronBornExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAElectronBornExcitationDataFilePolicy
{
public : G4DNAElectronBornExcitationDataFilePolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
const G4double dataFileEnergyUnit;
const G4double dataFileCrossSectionUnit;
const char * const dataFileName;
};
class G4DNAElectronBornExcitation : public G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAElectronBornExcitationIncomingParticlePolicy, G4DNAElectronBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAElectronBornExcitationEnergyLimitsPolicy> >
{
public:
G4DNAElectronBornExcitation(const G4String & name = "G4DNAElectronBornExcitation") : G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAElectronBornExcitationIncomingParticlePolicy, G4DNAElectronBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAElectronBornExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAElectronBornExcitation() {}
};
#endif /* G4DNAElectronBornExcitation_HH */
@@ -1,51 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAElectronElasticEmfietzoglou.hh,v 1.3 2006/06/29 19:33:58 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAELECTRONELASTICEMFIETZOGLOU_HH
#define G4DNAELECTRONELASTICEMFIETZOGLOU_HH 1
#include "G4DNAElectronElasticScatteringInWater.hh"
#include "G4DNARutherfordTotalCrossSectionPolicy.hh"
#include "G4DNAEmfietzoglouAngularDistributionPolicy.hh"
struct G4DNAEmfietzoglouEnergyLimitsPolicy
{
static const G4double lowEnergyLimit;
static const G4bool zeroBelowLowEnergyLimit;
static const G4double highEnergyLimit;
static const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAElectronElasticEmfietzoglou : public G4DNAElectronElasticScatteringInWater<G4DNARutherfordTotalCrossSectionPolicy<G4DNAEmfietzoglouEnergyLimitsPolicy>, G4DNAEmfietzoglouAngularDistributionPolicy>
{
public:
G4DNAElectronElasticEmfietzoglou(const G4String & name = "G4DNAElectronElasticEmfietzoglou") : G4DNAElectronElasticScatteringInWater<G4DNARutherfordTotalCrossSectionPolicy<G4DNAEmfietzoglouEnergyLimitsPolicy>, G4DNAEmfietzoglouAngularDistributionPolicy>(name) {}
virtual ~G4DNAElectronElasticEmfietzoglou() {}
};
#endif /* G4DNAELECTRONELASTICEMFIETZOGLOU_HH */
@@ -1,61 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAElectronExcitation.hh,v 1.3 2006/06/29 19:34:04 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAELECTRONEXCITATION_HH
#define G4DNAELECTRONEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAElectronExcitationEnergyLimitsPolicy
{
protected:
G4DNAElectronExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAElectronExcitationIncomingParticlePolicy
{
protected:
G4DNAElectronExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAElectronExcitation : public G4DNAExcitationInWater<G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<G4DNAElectronExcitationIncomingParticlePolicy, G4DNAElectronExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAElectronExcitationEnergyLimitsPolicy> >
{
public:
G4DNAElectronExcitation(const G4String & name = "G4DNAElectronExcitation") : G4DNAExcitationInWater<G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<G4DNAElectronExcitationIncomingParticlePolicy, G4DNAElectronExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAElectronExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAElectronExcitation() {}
};
#endif /* G4DNAELECTRONEXCITATION_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy, 2005/07/26 10:39:54 francis
// GEANT4 tag $Name: emlowen-V07-01-02
#ifndef G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH
#define G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy() {}
~G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z) const;
G4int RandomizePartialCrossSection(G4double k, G4int z) const;
G4double EnergyConstant(G4int excitationLevelIndex) const;
void BuildTotalCrossSection(void) const {}
private:
G4double PartialCrossSection(G4double T, G4int z,G4int excitationLevelIndex) const;
// Hides default constructor and assignment operator as private
G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy(const G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & copy);
G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & operator=(const G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & right);
};
#include "G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc"
#endif /* G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH */
@@ -1,129 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc,v 2005/07/26 10:49:54 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int z ) const
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4int i(5);
G4double totalCrossSection(0.);
while (i>0)
{
i--;
totalCrossSection+=PartialCrossSection(k,z, i);
}
return totalCrossSection;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double k,G4int z) const
{
G4int i(5);
G4double values[5];
G4double value(0);
while (i>0)
{
i--;
values[i]=PartialCrossSection(k,z, i);
value+=values[i];
}
value*=G4UniformRand();
i=5;
while (i>0)
{
i--;
if (values[i]>value)
return i;
value-=values[i];
}
return 0;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: EnergyConstant(G4int excitationLevelIndex) const
{
const G4double ej[]={8.22*eV, 10.00*eV, 11.24*eV, 12.61*eV, 13.77*eV};
return ej[excitationLevelIndex];
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: PartialCrossSection(G4double t, G4int /*z*/, G4int excitationLevelIndex) const
{
// Aj T
// sigma(T) = ------------- (Bj / T) ln(Cj ---) [1 - Bj / T]^Pj
// 2 pi alpha0 R
//
// T is the incoming electron kinetic energy
// alpha0 is the Bohr Radius (Bohr_radius)
// Aj, Bj, Cj & Pj are parameters that can be found in Emfietzoglou's papers
//
//
// From Phys. Med. Biol. 48 (2003) 2355-2371, D.Emfietzoglou,
// Monte Carlo Simulation of the energy loss of low energy electrons in liquid Water
//
const G4double sigma0((10./3.343e22)*cm2);
const G4double aj[]={0.0205, 0.0209, 0.0130, 0.0026, 0.0025};
const G4double cj[]={4.9801, 3.3850, 2.8095, 1.9242, 3.4624};
const G4double pj[]={0.4757, 0.3483, 0.4443, 0.3429, 0.4379};
const G4double r(13.6*eV) ;
// z=z*1;
if(t<EnergyConstant(excitationLevelIndex)) return(0.);
G4double excSigma = ( aj[excitationLevelIndex] / (2.*pi*Bohr_radius)) * (EnergyConstant(excitationLevelIndex) / t) * std::log(cj[excitationLevelIndex]*(t/r)) * std::pow((1.- (EnergyConstant(excitationLevelIndex)/t)), pj[excitationLevelIndex]);
return(excSigma * sigma0);
}
#endif /* G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH */
@@ -1,64 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAExcitationInWater.hh,v 1.2 2006/06/29 19:34:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifndef G4DNAEXCITATIONINWATER_HH
#define G4DNAEXCITATIONINWATER_HH 1
#include "G4VDNAProcessInWater.hh"
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z)
// - [protected] G4double EnergyConstant(G4int excitationLevelIndex)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAExcitationInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
{
public:
G4DNAExcitationInWater(const G4String & name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAExcitationInWater() {}
virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
private:
// Hides default constructor and assignment operator as private
G4DNAExcitationInWater(const G4DNAExcitationInWater & copy);
G4DNAExcitationInWater & operator=(const G4DNAExcitationInWater & right);
};
#include "G4DNAExcitationInWater.icc"
#endif /* G4DNAEXCITATIONINWATER_HH */
@@ -25,7 +25,7 @@
//
//
// $Id: G4DNAGenericIonsManager.hh,v 1.3 2006/06/29 19:34:16 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
#ifndef G4DNAGENERICIONSMANAGER_HH
#define G4DNAGENERICIONSMANAGER_HH 1
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumChargeIncrease.hh,v 1.2 2006/06/29 19:34:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHELIUMCHARGEINCREASE_HH
#define G4DNAHELIUMCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAHeliumChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHeliumChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAHeliumChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHeliumChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAHeliumChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[2];
G4double a0[2];
G4double a1[2];
G4double b0[2];
G4double b1[2];
G4double c0[2];
G4double d0[2];
G4double x0[2];
G4double x1[2];
};
class G4DNAHeliumChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAHeliumChargeIncreaseIncomingParticlePolicy, G4DNAHeliumChargeIncreaseEnergyLimitsPolicy>, G4DNAHeliumChargeIncreaseFinalStatesPolicy<G4DNAHeliumChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAHeliumChargeIncrease(const G4String & name = "G4DNAHeliumChargeIncrease") : G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAHeliumChargeIncreaseIncomingParticlePolicy, G4DNAHeliumChargeIncreaseEnergyLimitsPolicy>, G4DNAHeliumChargeIncreaseFinalStatesPolicy<G4DNAHeliumChargeIncreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAHeliumChargeIncrease() {}
};
#endif /* G4DNAHELIUMCHARGEINCREASE_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumChargeIncreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH
#define G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAHeliumChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAHeliumChargeIncreaseFinalStatesPolicy() {}
~G4DNAHeliumChargeIncreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAHeliumChargeIncreaseFinalStatesPolicy(const G4DNAHeliumChargeIncreaseFinalStatesPolicy & copy);
G4DNAHeliumChargeIncreaseFinalStatesPolicy & operator=(const G4DNAHeliumChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,82 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int finalStateIndex) const
{
if (finalStateIndex==0)
return 1;
return 2;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int finalStateIndex)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
if (finalStateIndex==0)
return instance->GetIon("alpha+");
return instance->GetIon("alpha++");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
if (finalStateIndex==0)
return 24.587*eV;
return (54.509 + 24.587)*eV;
}
#endif /* G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumExcitation.hh,v 1.2 2006/06/29 19:34:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHELIUMEXCITATION_HH
#define G4DNAHELIUMEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHeliumExcitationEnergyLimitsPolicy
{
protected:
G4DNAHeliumExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHeliumExcitationIncomingParticlePolicy
{
protected:
G4DNAHeliumExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
const G4double kineticEnergyCorrection;
};
class G4DNAHeliumExcitation : public G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAHeliumExcitationIncomingParticlePolicy, G4DNAHeliumExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAHeliumExcitationEnergyLimitsPolicy> >
{
public:
G4DNAHeliumExcitation(const G4String & name = "G4DNAHeliumExcitation") : G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAHeliumExcitationIncomingParticlePolicy, G4DNAHeliumExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAHeliumExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAHeliumExcitation() {}
};
#endif /* G4DNAHELIUMEXCITATION_HH */
@@ -1,62 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncrease.hh,v 1.2 2006/06/29 19:34:26 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHYDROGENCHARGEINCREASE_HH
#define G4DNAHYDROGENCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh"
#include "G4DNAHydrogenChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHydrogenChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAHydrogenChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAHydrogenChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<G4DNAHydrogenChargeIncreaseIncomingParticlePolicy, G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy>, G4DNAHydrogenChargeIncreaseFinalStatesPolicy<G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAHydrogenChargeIncrease(const G4String & name = "G4DNAHydrogenChargeIncrease") : G4DNAChargeIncreaseInWater<G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<G4DNAHydrogenChargeIncreaseIncomingParticlePolicy, G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy>, G4DNAHydrogenChargeIncreaseFinalStatesPolicy<G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAHydrogenChargeIncrease() {}
};
#endif /* G4DNAHYDROGENCHARGEINCREASE_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncreaseFinalStates, 2005/09/15 14:20:26 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-08
#ifndef G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH
#define G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAHydrogenChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAHydrogenChargeIncreaseFinalStatesPolicy() {}
~G4DNAHydrogenChargeIncreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAHydrogenChargeIncreaseFinalStatesPolicy(const G4DNAHydrogenChargeIncreaseFinalStatesPolicy & copy);
G4DNAHydrogenChargeIncreaseFinalStatesPolicy & operator=(const G4DNAHydrogenChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,62 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:34:32 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH
#define G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy() {}
~G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z) const;
G4int RandomizePartialCrossSection(G4double k, G4int z) const;
void BuildTotalCrossSection(void) const {}
// Hides default constructor and assignment operator as private
G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy(const G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & copy);
G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & operator=(const G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & right);
};
#include "G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc"
#endif /* G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */
@@ -1,86 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc,v 1.3 2006/06/29 19:34:34 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int /* z */) const
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4double totalCrossSection(0.);
//--------Following model is proposed by Miller and Green---------
/*
const G4double s0 = 1e-20;
const G4double a = 79.3*keV;
const G4double omega = 0.652;
const G4double i = 12.61*eV;
const G4double nu = 0.943;
const G4double j = 27.7*keV;
totalCrossSection = (s0*std::pow(10*a/keV,omega)*std::pow(k/keV-i/keV, nu)) / (std::pow(j/keV,omega+nu) + std::pow(k/keV,omega+nu));*/
//----------Following model is proposed by Dingfelder--------------
const G4double aa=2.835;
const G4double bb=0.310;
const G4double cc=2.100;
const G4double dd=0.760;
const G4double fac=1.0e-18;
const G4double rr=13.606*eV;
G4double t = k / (proton_mass_c2/electron_mass_c2);
G4double x = t / rr;
G4double sigmal = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*cc*(std::pow(x,dd));
G4double sigmah = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*(aa*std::log(1.0+x)+bb)/x;
totalCrossSection = 1.0/(1.0/sigmal + 1.0/sigmah);
return totalCrossSection*m*m;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double /* k */, G4int /* z */) const
{
return 0;
}
#endif /* G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */
@@ -1,76 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenRuddIonization.hh,v 1.3 2006/06/29 19:34:36 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHYDROGENRUDDIONIZATION_HH
#define G4DNAHYDROGENRUDDIONIZATION_HH 1
#include "G4DNAIonizationInWater.hh"
#include "G4DNATotalCrossSectionFromFilePolicy.hh"
#include "G4DNARuddIonizationFinalStatesPolicy.hh"
#include "G4LogLogInterpolation.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHydrogenRuddIonizationEnergyLimitsPolicy
{
protected:
G4DNAHydrogenRuddIonizationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHydrogenRuddIonizationIncomingParticlePolicy
{
protected:
G4DNAHydrogenRuddIonizationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAHydrogenRuddDataFilePolicy
{
public :
G4DNAHydrogenRuddDataFilePolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
const G4double dataFileEnergyUnit;
const G4double dataFileCrossSectionUnit;
const char * const dataFileName;
};
class G4DNAHydrogenRuddIonization : public G4DNAIonizationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAHydrogenRuddIonizationIncomingParticlePolicy, G4DNAHydrogenRuddDataFilePolicy, G4LogLogInterpolation>, G4DNARuddIonizationFinalStatesPolicy<G4DNAHydrogenRuddIonizationEnergyLimitsPolicy, G4DNAHydrogenRuddIonizationIncomingParticlePolicy> >
{
public:
G4DNAHydrogenRuddIonization(const G4String & name = "G4DNAHydrogenRuddIonization") : G4DNAIonizationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAHydrogenRuddIonizationIncomingParticlePolicy, G4DNAHydrogenRuddDataFilePolicy, G4LogLogInterpolation>, G4DNARuddIonizationFinalStatesPolicy<G4DNAHydrogenRuddIonizationEnergyLimitsPolicy, G4DNAHydrogenRuddIonizationIncomingParticlePolicy> > (name) {}
virtual ~G4DNAHydrogenRuddIonization() {}
};
#endif /* G4DNAHYDROGENRUDDIONIZATION_HH */
@@ -1,70 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenRuddIonizationTotalCrossSectionPolicy, 2005/09/16 9:25:45 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-09
#ifndef G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH
#define G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAHydrogenRuddIonizationFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAHydrogenRuddIonizationFinalStatesPolicy() {}
~G4DNAHydrogenRuddIonizationFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4double RandomizeEjectedElectronEnergy(G4double incomingParticleEnergy, G4int shell) const;
void RandomizeEjectedElectronDirection(G4double incomingParticleEnergy, G4double
outgoingParticleEnergy, G4double & cosTheta, G4double & phi ) const;
G4double EnergyConstant(G4int ionizationLevel) const;
private:
G4double DifferentialCrossSection(G4double k, G4double energyTransfer, G4int shell) const;
// Hides default constructor and assignment operator as private
G4DNAHydrogenRuddIonizationFinalStatesPolicy(const G4DNAHydrogenRuddIonizationFinalStatesPolicy & copy);
G4DNAHydrogenRuddIonizationFinalStatesPolicy & operator=(const G4DNAHydrogenRuddIonizationFinalStatesPolicy & right);
};
#include "G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc"
#endif /* G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH */
@@ -1,143 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc,v 2005/09/16 09:27:54 Ziad FRANCIS
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH
#include "Randomize.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true);
else return (false);
}
template <typename EnergyLimitsPolicy>
void G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> ::BuildFinalStatesData(void) const
{}
template <typename EnergyLimitsPolicy>
G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> ::RandomizeEjectedElectronEnergy(G4double k, G4int shell) const
{
G4double maximumKineticEnergyTransfer = 4.* (electron_mass_c2 / proton_mass_c2) * k;
G4double crossSectionMaximum=0.;
for(G4double value=EnergyConstant(shell); value<=4.*EnergyConstant(shell) ; value+=0.1*eV){
G4double differentialCrossSection = DifferentialCrossSection(k, value, shell);
if(differentialCrossSection >= crossSectionMaximum) crossSectionMaximum = differentialCrossSection;
}
G4double secElecKinetic=0.;
do{
secElecKinetic = G4UniformRand() * maximumKineticEnergyTransfer;
}while(G4UniformRand()*crossSectionMaximum > DifferentialCrossSection(k,secElecKinetic+EnergyConstant(shell),shell));
return(secElecKinetic);
}
template <typename EnergyLimitsPolicy>
void G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> ::RandomizeEjectedElectronDirection(G4double k, G4double secKinetic, G4double & cosTheta, G4double & phi ) const
{
G4double maxSecKinetic = 4.* (electron_mass_c2 / proton_mass_c2) * k;
phi = twopi * G4UniformRand();
cosTheta = std::sqrt(secKinetic / maxSecKinetic);
}
template <typename EnergyLimitsPolicy>
G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy>::EnergyConstant(G4int ionizationLevel) const
{
const G4double bindingEnergy[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.0*eV};
return(bindingEnergy[ionizationLevel]);
}
template <typename EnergyLimitsPolicy>
G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy>::DifferentialCrossSection(G4double k, G4double energyTransfer, G4int ionizationLevelIndex) const
{
// Shells ids are 0 1 2 3 4 (4 is k shell)
// !!Attention, "energyTransfer" here is the energy transfered to the electron which means
// that the secondary kinetic energy is w = energyTransfer - bindingEnergy
//
// ds S F1(nu) + w * F2(nu)
// ---- = g(k) * ---- -------------------------------------------
// dw Bj (1+w)^3 * [1 + exp{alpha * (w - wc) / nu}]
//
// w is the secondary electron kinetic Energy in eV
//
// All the other parameters can be found in Rudd's Papers
//
// M.Eugene Rudd, 1988, User-Friendly model for the energy distribution of
// electrons from protons or electron collisions. Nucl. Tracks Rad. Meas.Vol 16 N0 2/3 pp 219-218
//
const G4int j=ionizationLevelIndex;
G4double A1 ; G4double B1 ; G4double C1 ; G4double D1 ; G4double E1 ;
G4double A2 ; G4double B2 ; G4double C2 ; G4double D2 ; G4double Alpha ;
if(j == 4) {//Data For Liquid Water K SHELL from Dingfelder (Protons in Water)
A1 = 1.25; B1 = 0.5; C1 = 1.00; D1 = 1.00; E1 = 3.00; A2 = 1.10; B2 = 1.30;
C2 = 1.00; D2 = 0.00; Alpha = 0.66;}
else {//Data For Liquid Water from Dingfelder (Protons in Water)
A1 = 1.02; B1 = 82.0; C1 = 0.45; D1 = -0.80; E1 = 0.38; A2 = 1.07; B2 = 14.6;
C2 = 0.60; D2 = 0.04; Alpha = 0.64;}
const G4double n = 2.;
const G4double Gj[5] = {0.99, 1.11, 1.11, 0.52, 1.};
//const G4double I[5]={12.61*eV, 14.73*eV, 18.55*eV, 32.2*eV, 539.7*eV}; // for water Vapor
//const G4double energyConstant[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.*eV};
G4double W = (energyTransfer - EnergyConstant(ionizationLevelIndex));
G4double w = W / EnergyConstant(ionizationLevelIndex);
G4double Ry = 13.6*eV;
G4double tau = (electron_mass_c2/proton_mass_c2) * k ;
G4double S = 4.*pi*Bohr_radius*Bohr_radius*n*std::pow((Ry/EnergyConstant(ionizationLevelIndex)),2);
G4double v2 = tau / EnergyConstant(ionizationLevelIndex);
G4double v = std::sqrt(v2);
G4double wc = 4.*v2 - 2.*v - (Ry/(4.*EnergyConstant(ionizationLevelIndex)));
G4double L1 = (C1* std::pow(v,(D1))) / (1.+ E1*std::pow(v, (D1+4.)));
G4double L2 = C2*std::pow(v,(D2));
G4double H1 = (A1*std::log(1.+v2)) / (v2+(B1/v2));
G4double H2 = (A2/v2) + (B2/(v2*v2));
G4double F1 = L1+H1;
G4double F2 = (L2*H2)/(L2+H2);
G4double value = (std::log(k/eV)-4.2)/0.5;
G4double g = (0.8/(1+std::exp(value))) + 0.9;
G4double sigma = g * Gj[j] * (S/EnergyConstant(ionizationLevelIndex)) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(Alpha*(w-wc)/v))) );
return(sigma);
}
#endif /* G4DNAHydrogenRuddIonizationTotalCrossSectionPolicy_HH */
@@ -1,64 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAIonizationInWater.hh,v 1.2 2006/06/29 19:34:43 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifndef G4DNAIONIZATIONINWATER_HH
#define G4DNAIONIZATIONINWATER_HH 1
#include "G4VDNAProcessInWater.hh"
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k)
// - [protected] G4double RandomizePartialCrossSection(G4double k, G4int shell)
// - [protected] void BuildTotalCrossSection(void)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAIonizationInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
{
public:
G4DNAIonizationInWater(const G4String & name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAIonizationInWater() {}
virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
private:
// Hides default constructor and assignment operator as private
G4DNAIonizationInWater(const G4DNAIonizationInWater & copy);
G4DNAIonizationInWater & operator=(const G4DNAIonizationInWater & right);
};
#include "G4DNAIonizationInWater.icc"
#endif /* G4DNAIONIZATIONINWATER_HH */
@@ -1,90 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAIonizationInWater.icc,v 1.4 2006/06/29 19:34:45 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAIONIZATIONINWATER_HH
#include "G4Electron.hh"
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange* G4DNAIonizationInWater<TotalCrossSectionPolicy, FinalStatesPolicy> :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep)
{
const G4int z(10); // H2O number of electrons
this->aParticleChange.Initialize(aTrack);
const G4DynamicParticle* aDynamicParticle = aTrack.GetDynamicParticle();
G4double k = aDynamicParticle->GetKineticEnergy();
G4ParticleMomentum primaryDirection = aDynamicParticle->GetMomentumDirection();
G4double particleMass = aDynamicParticle->GetDefinition()->GetPDGMass();
G4double TotalEnergy = k + particleMass;
G4double Psquare = k*(TotalEnergy+particleMass);
G4double TotalMomentum = std::sqrt(Psquare);
G4int ionizationShell(TotalCrossSectionPolicy::RandomizePartialCrossSection(k,z));
G4double secondaryKinetic(FinalStatesPolicy::RandomizeEjectedElectronEnergy(k,ionizationShell));
G4double bindingEnergy(FinalStatesPolicy::EnergyConstant(ionizationShell));
//Direction of the secondary electron
G4double cosTheta = 0.;
G4double phi = 0.;
FinalStatesPolicy::RandomizeEjectedElectronDirection(k,secondaryKinetic, cosTheta, phi);
G4double sinTheta = std::sqrt(1.-cosTheta*cosTheta);
G4double dirx = sinTheta*std::cos(phi),diry = sinTheta*std::sin(phi),dirz = cosTheta;
G4ThreeVector DeltaDirection(dirx,diry,dirz);
DeltaDirection.rotateUz(primaryDirection);
G4double DeltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic +
2.*electron_mass_c2 ));
//Primary Particle Direction
G4double finalPx = TotalMomentum*primaryDirection.x()
- DeltaTotalMomentum*DeltaDirection.x();
G4double finalPy = TotalMomentum*primaryDirection.y()
- DeltaTotalMomentum*DeltaDirection.y();
G4double finalPz = TotalMomentum*primaryDirection.z()
- DeltaTotalMomentum*DeltaDirection.z();
G4double finalMomentum =
std::sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz);
finalPx /= finalMomentum;
finalPy /= finalMomentum;
finalPz /= finalMomentum;
this->aParticleChange.ProposeMomentumDirection( finalPx,finalPy,finalPz );
this->aParticleChange.ProposeEnergy(k-bindingEnergy-secondaryKinetic);
this->aParticleChange.ProposeLocalEnergyDeposit(bindingEnergy);
this->aParticleChange.SetNumberOfSecondaries(1);
G4DynamicParticle* aElectron = new G4DynamicParticle(G4Electron::Electron(),DeltaDirection,secondaryKinetic);
this->aParticleChange.AddSecondary(aElectron);
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
}
#endif /* G4DNAIONIZATIONINWATER_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:34:47 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH
#define G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// - [protected] const G4double slaterEffectiveCharge[3]
// - [protected] const G4double sCoefficient[3]
// - [protected] const G4double kineticEnergyCorrection;
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy() {}
~G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z) const;
G4int RandomizePartialCrossSection(G4double k, G4int z) const;
G4double EnergyConstant(G4int excitationLevelIndex) const;
void BuildTotalCrossSection(void) const {}
private:
G4double PartialCrossSection(G4double t, G4int z, G4int excitationLevelIndex) const;
G4double S_1s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
G4double S_2s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
G4double S_2p(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
G4double R(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
// Hides default constructor and assignment operator as private
G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy(const G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & copy);
G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & operator=(const G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & right);
};
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc"
#endif /* G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH */
@@ -1,185 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc,v 1.2 2006/06/29 19:34:49 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int z ) const
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4int i(5);
G4double totalCrossSection(0.);
while (i>0)
{
i--;
totalCrossSection+=PartialCrossSection(k, z, i);
}
return totalCrossSection;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double k, G4int z) const
{
G4int i(5);
G4double values[5];
G4double value(0);
while (i>0)
{
i--;
values[i]=PartialCrossSection(k, z, i);
value+=values[i];
}
value*=G4UniformRand();
i=5;
while (i>0)
{
i--;
if (values[i]>value)
return i;
value-=values[i];
}
return 0;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: EnergyConstant(G4int excitationLevelIndex) const
{
const G4double ej[]={8.17*eV, 10.13*eV, 11.31*eV, 12.91*eV, 14.50*eV};
return ej[excitationLevelIndex];
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: PartialCrossSection(G4double t, G4int z, G4int excitationLevelIndex) const
{
// ( ( z * aj ) ^ omegaj ) * ( t - ej ) ^ nu
// sigma(t) = zEff^2 * sigma0 * --------------------------------------------
// jj ^ ( omegaj + nu ) + t ^ ( omegaj + nu )
//
// where t is the kinetic energy corrected by Helium mass over proton mass for Helium ions
//
// zEff is:
// 1 for protons
// 2 for alpha++
// and 2 - c1 S_1s - c2 S_2s - c3 S_2p for alpha+ and He
//
// Dingfelder et al., RPC 59 p. 266 (2000) from Miller and Green (1973)
const G4double sigma0(1.E+8 * barn);
const G4double nu(1.);
const G4double aj[]={876.*eV, 2084.*eV, 1373.*eV, 692.*eV, 900.*eV};
const G4double jj[]={19820.*eV, 23490.*eV, 27770.*eV, 30830.*eV, 33080.*eV};
const G4double omegaj[]={0.85, 0.88, 0.88, 0.78, 0.78};
G4double tCorrected;
tCorrected=t*IncomingParticlePolicy::kineticEnergyCorrection;
G4double numerator;
numerator=std::pow(z*aj[excitationLevelIndex], omegaj[excitationLevelIndex]) * std::pow(tCorrected - EnergyConstant(excitationLevelIndex), nu);
G4double power;
power=omegaj[excitationLevelIndex]+nu;
G4double denominator;
denominator=std::pow(jj[excitationLevelIndex], power) + std::pow(tCorrected, power);
G4ParticleDefinition const * particle(IncomingParticlePolicy::IncomingParticleDefinition());
G4double zEff=particle->GetPDGCharge()/eplus+particle->GetLeptonNumber();
zEff-=( IncomingParticlePolicy::sCoefficient[0]*S_1s(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[0], 1.) +
IncomingParticlePolicy::sCoefficient[1]*S_2s(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[1], 2.) +
IncomingParticlePolicy::sCoefficient[2]*S_2p(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[2], 2.) );
return sigma0 * zEff * zEff * numerator / denominator;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: S_1s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// 1 - e^(-2r) * ( 1 + 2 r + 2 r^2)
G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber));
return 1.-std::exp(-2*r) * ( ( 2. * r + 2. ) * r + 1. );
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: S_2s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 2 r^4)
G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber));
return 1.-std::exp(-2*r) * ( ( ( 2. * r * r + 2. ) * r + 2. ) * r + 1. );
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: S_2p(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 4/3 r^3 + 2/3 r^4)
G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber));
return 1.-std::exp(-2*r) * ( ( ( ( 2./3. * r + 4./3. ) * r + 2. ) * r + 2. ) * r + 1. );
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: R(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// tElectron = m_electron / m_alpha * t
G4double tElectron = 0.511/3728 * t;
return 2.*tElectron*slaterEffectiveCharge/(energyTransferred*shellNumber);
}
#endif /* G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH */
@@ -0,0 +1,106 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProcess.hh,v 1.5 2007/11/09 16:20:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@ge.infn.it)
//
// History:
// -----------
// 29 Sep 2007 MGP First (incomplete) implementation
//
// -------------------------------------------------------------------
// Class description:
// Host class for DNA physics policies
// Further documentation available in PAPER REF. TO BE ADDED
// -------------------------------------------------------------------
#ifndef G4DNAPROCESS_HH
#define G4DNAPROCESS_HH 1
#include "globals.hh"
#include "G4VDiscreteProcess.hh"
#include "G4Track.hh"
#include "G4Step.hh"
#include "G4ParticleDefinition.hh"
#include "G4VParticleChange.hh"
#include "G4DynamicParticle.hh"
#include "G4ThreeVector.hh"
#include "G4FinalStateProduct.hh"
#include <vector>
template < class TCrossSection, class TFinalState>
class G4DNAProcess : public G4VDiscreteProcess {
public:
// ---- MGP ---- Note: process name to be replaced with a better identifying mechanism
G4DNAProcess(const G4String& processName = "DNAProcess"): G4VDiscreteProcess(processName) { /* nop */; }
~G4DNAProcess() { /* nop */; }
// ---- MGP ---- Dummy initially: process is always applicable
virtual G4bool IsApplicable(const G4ParticleDefinition&) { return true; }
// ---- MGP ---- Dummy initially: no PhysicsTable (usefulness to be verified)
virtual void BuildPhysicsTable(const G4ParticleDefinition& /* particle */) { /* nop */; }
// Implemented in terms of TFinalState
virtual G4VParticleChange* PostStepDoIt(const G4Track& track, const G4Step& step);
// For testing purpose only
G4double DumpMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition)
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
protected:
// Implemented in terms of TCrossSection
virtual G4double GetMeanFreePath(const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
private:
// Hide copy constructor and assignment operator as private
G4DNAProcess& operator=(const G4DNAProcess& right);
G4DNAProcess(const G4DNAProcess& );
// Policy classes
TCrossSection crossSection;
TFinalState finalState;
};
#include "G4DNAProcess.icc"
#endif
@@ -0,0 +1,170 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProcess.icc,v 1.11 2007/12/10 16:31:19 gunter Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// Reference: TNS Geant4-DNA paper
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
template <class TCrossSection,class TFinalState>
G4double G4DNAProcess<TCrossSection,TFinalState>::GetMeanFreePath(const G4Track& track,
G4double /* previousStepSize */,
G4ForceCondition* /* condition */)
{
G4double meanFreePath = DBL_MAX;
// Assume the interacting medium to be water; one of the elements must be oxygen
G4Material* material(track.GetMaterial());
size_t i = material->GetNumberOfElements();
while (i>0)
{
i--;
const G4Element* element(material->GetElement(i));
if (element->GetZ() == 8.)
{
// Number of oxygen atoms per volume = number of water molecules per volume
G4double density = material->GetAtomicNumDensityVector()[i];
// G4cout << "density = " << density << G4endl;
if (density > 0.)
{
G4double cross = crossSection.CrossSection(track);
if (cross > 0.0) meanFreePath = 1. / (density*cross);
if (meanFreePath == 0.) meanFreePath = DBL_MIN;
return meanFreePath;
}
}
} // end while
// If it ends up here, it means that the material is not water
G4Exception("G4DNAProcess::GetMeanFreePath - material is not water");
// One does not really need a return statement here
return DBL_MAX;
}
template <class TCrossSection,class TFinalState>
G4VParticleChange* G4DNAProcess<TCrossSection,TFinalState>::PostStepDoIt(const G4Track& track, const G4Step& step)
{
aParticleChange.Initialize(track);
// G4cout << "Track initialized" << G4endl;
// Interaction product
const G4FinalStateProduct& product = finalState.GenerateFinalState(track,step);
// Number of secondary products to be generated
G4int nSecondaries = product.NumberOfSecondaries();
aParticleChange.SetNumberOfSecondaries(nSecondaries);
// Secondaries
for (G4int l = 0; l<nSecondaries; l++ )
{
G4DynamicParticle* particle = product.GetSecondaries()[l];
if (particle != 0)
{
// aParticleChange.SetNumberOfSecondaries(nSecondaries);
aParticleChange.AddSecondary(particle);
}
}
// Take care of incident particle to be killed, if necessary; dump its energy deposit locally
G4double deposit = product.GetEnergyDeposit();
if (deposit > 0.0) aParticleChange.ProposeLocalEnergyDeposit(deposit);
if (product.PrimaryParticleIsKilled())
{
aParticleChange.ProposeTrackStatus(fStopAndKill);
aParticleChange.ProposeEnergy(0.);
aParticleChange.ProposeMomentumDirection( 0., 0., 0. );
aParticleChange.ProposeLocalEnergyDeposit(track.GetKineticEnergy() + deposit);
}
else
{
// Modify incident particle kinematics taking into account the generated products
// ---- MGP ---- Temporary: assume at most one secondary product
// Sebastien: please check if consistent with current models or generalize
// Primary particle momentum and kinetic energy
G4ThreeVector primaryMomentum = track.GetMomentum();
G4double primaryKineticEnergy = track.GetKineticEnergy();
// Secondary product momentum and energy
G4double secondaryKineticEnergy = 0.;
if (nSecondaries >0 )
{
G4DynamicParticle* secondary = product.GetSecondaries()[0];
secondaryKineticEnergy = secondary->GetKineticEnergy();
// Calculate new primary particle kinetic energy
G4double finalKineticEnergy = primaryKineticEnergy - secondaryKineticEnergy - deposit;
if (finalKineticEnergy <= 0.0)
{
// Primary particle is stopped; kill it
aParticleChange.ProposeTrackStatus(fStopAndKill);
aParticleChange.ProposeEnergy(0.);
aParticleChange.ProposeMomentumDirection( 0., 0., 0. );
}
else
{
// Calculate new primary particle momentum: difference between original primary one and secondary
G4ThreeVector secondaryMomentum = secondary->GetMomentum();
G4ThreeVector finalMomentum = primaryMomentum - secondaryMomentum;
G4ThreeVector finalDirection = finalMomentum.unit();
aParticleChange.ProposeMomentumDirection(finalDirection);
aParticleChange.ProposeEnergy(finalKineticEnergy);
}
}
else
{
// Check whether primary particle is modified
if (product.PrimaryParticleIsModified())
{
G4ThreeVector finalDirection = product.GetModifiedDirection();
aParticleChange.ProposeMomentumDirection(finalDirection);
G4double finalKineticEnergy = product.GetModifiedEnergy();
aParticleChange.ProposeEnergy(finalKineticEnergy);
}
}
}
return G4VDiscreteProcess::PostStepDoIt(track,step );
}
@@ -1,77 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonBornExcitation.hh,v 1.2 2006/06/29 19:34:51 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAProtonBornExcitation_HH
#define G4DNAProtonBornExcitation_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
#include "G4DNATotalCrossSectionFromFilePolicy.hh"
#include "G4DNABornExcitationFinalStatesPolicy.hh"
#include "G4LogLogInterpolation.hh"
class G4DNAProtonBornExcitationEnergyLimitsPolicy
{
protected:
G4DNAProtonBornExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonBornExcitationIncomingParticlePolicy
{
protected:
G4DNAProtonBornExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAProtonBornExcitationDataFilePolicy
{
public :
G4DNAProtonBornExcitationDataFilePolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
const G4double dataFileEnergyUnit;
const G4double dataFileCrossSectionUnit;
const char * const dataFileName;
};
class G4DNAProtonBornExcitation : public G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAProtonBornExcitationIncomingParticlePolicy, G4DNAProtonBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAProtonBornExcitationEnergyLimitsPolicy> >
{
public:
G4DNAProtonBornExcitation(const G4String & name = "G4DNAProtonBornExcitation") : G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAProtonBornExcitationIncomingParticlePolicy, G4DNAProtonBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAProtonBornExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAProtonBornExcitation() {}
};
#endif /* G4DNAProtonBornExcitation_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeDecrease.hh,v 1.3 2006/06/29 19:34:53 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAPROTONCHARGEDECREASE_HH
#define G4DNAPROTONCHARGEDECREASE_HH 1
#include "G4DNAChargeDecreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAProtonChargeDecreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAProtonChargeDecreaseEnergyLimitsPolicy
{
protected:
G4DNAProtonChargeDecreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonChargeDecreaseIncomingParticlePolicy
{
protected:
G4DNAProtonChargeDecreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[1];
G4double a0[1];
G4double a1[1];
G4double b0[1];
G4double b1[1];
G4double c0[1];
G4double d0[1];
G4double x0[1];
G4double x1[1];
};
class G4DNAProtonChargeDecrease : public G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAProtonChargeDecreaseIncomingParticlePolicy, G4DNAProtonChargeDecreaseEnergyLimitsPolicy>, G4DNAProtonChargeDecreaseFinalStatesPolicy<G4DNAProtonChargeDecreaseEnergyLimitsPolicy> >
{
public:
G4DNAProtonChargeDecrease(const G4String & name = "G4DNAProtonChargeDecrease") : G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAProtonChargeDecreaseIncomingParticlePolicy, G4DNAProtonChargeDecreaseEnergyLimitsPolicy>, G4DNAProtonChargeDecreaseFinalStatesPolicy<G4DNAProtonChargeDecreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAProtonChargeDecrease() {}
};
#endif /* G4DNAPROTONCHARGEDECREASE_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH
#define G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAProtonChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAProtonChargeDecreaseFinalStatesPolicy() {}
~G4DNAProtonChargeDecreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4int finalStateIndex) const;
G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAProtonChargeDecreaseFinalStatesPolicy(const G4DNAProtonChargeDecreaseFinalStatesPolicy & copy);
G4DNAProtonChargeDecreaseFinalStatesPolicy & operator=(const G4DNAProtonChargeDecreaseFinalStatesPolicy & right);
};
#include "G4DNAProtonChargeDecreaseFinalStatesPolicy.icc"
#endif /* G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,79 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int /* finalStateIndex */) const
{
return 1;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int /* finalStateIndex */)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
return instance->GetIon("hydrogen");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: WaterBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Ionization energy of first water shell
// Rad. Phys. Chem. 59 p.267 by Dingf. et al.
// W + 10.79 eV -> W+ + e-
return 10.79*eV;
}
template <typename EnergyLimitsPolicy>
G4double G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const
{
return 13.6*eV;
}
#endif /* G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeIncrease.hh,v 1.3 2006/06/29 19:34:59 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAPROTONCHARGEINCREASE_HH
#define G4DNAPROTONCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.hh"
#include "G4DNAProtonChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAProtonChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAProtonChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAProtonChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition* IncomingParticleDefinition(void) const;
};
class G4DNAProtonChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNAProtonChargeIncreaseTotalCrossSectionPolicy<G4DNAProtonChargeIncreaseIncomingParticlePolicy, G4DNAProtonChargeIncreaseEnergyLimitsPolicy>, G4DNAProtonChargeIncreaseFinalStatesPolicy<G4DNAProtonChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAProtonChargeIncrease(const G4String& name = "G4DNAProtonChargeIncrease") :
G4DNAChargeIncreaseInWater<G4DNAProtonChargeIncreaseTotalCrossSectionPolicy<G4DNAProtonChargeIncreaseIncomingParticlePolicy, G4DNAProtonChargeIncreaseEnergyLimitsPolicy>,
G4DNAProtonChargeIncreaseFinalStatesPolicy<G4DNAProtonChargeIncreaseEnergyLimitsPolicy> >
(name) {}
virtual ~G4DNAProtonChargeIncrease() {}
};
#endif /* G4DNAPROTONCHARGEINCREASE_HH */
@@ -1,72 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeIncreaseFinalStates, 2005/09/15 14:20:26 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-08
#ifndef G4DNAProtonChargeIncreaseFinalStatesPolicy_HH
#define G4DNAProtonChargeIncreaseFinalStatesPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAProtonChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAProtonChargeIncreaseFinalStatesPolicy() {}
~G4DNAProtonChargeIncreaseFinalStatesPolicy() {}
// ---- MGP ---- The following line added to allow compilation with gcc 3.4.5, but it makes no sense! 25/05/2006
G4double IncomingParticleBindingEnergyConstant (G4int) const {return 0.;}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int ) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double ElectronsBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAProtonChargeIncreaseFinalStatesPolicy(const G4DNAProtonChargeIncreaseFinalStatesPolicy & copy);
G4DNAProtonChargeIncreaseFinalStatesPolicy & operator=(const G4DNAProtonChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAProtonChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAProtonChargeIncreaseFinalStatesPolicy_HH */
@@ -1,71 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeIncreaseFinalStatesPolicy.icc,v 2005/09/15 14:38:34 Ziad FRANCIS
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAProtonChargeIncreaseFinalStatesPolicy_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
#include "G4Proton.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::KillIncomingParticle(G4double energy) const
{
if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true);
else return (false);
}
template <typename EnergyLimitsPolicy>
G4int G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::NumberOfFinalStates(G4int) const
{
return(1);
}
template <typename EnergyLimitsPolicy>
void G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::BuildFinalStatesData(void) const
{}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::OutgoingParticleDefinition(G4int finalStateIndex)
{
G4double dummy;
dummy = finalStateIndex; //Just a dummy variable
return (G4Proton::Proton());
}
template <typename EnergyLimitsPolicy>
G4double G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::ElectronsBindingEnergyConstant(G4int finalStateIndex) const
{
if(finalStateIndex==1)return(13.6*eV);
else {G4cout<<"Warning in ProtonChargeIncreaseProcess not a permitted finalStateIndex Value !"<<G4endl;
return(0.);}
}
#endif /* G4DNAProtonChargeIncreaseTotalCrossSectionPolicy_HH */

Some files were not shown because too many files have changed in this diff Show More