Import Geant4 9.1.0 source tree
This commit is contained in:
@@ -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)
|
||||
//
|
||||
|
||||
Regular → Executable
+50
-34
@@ -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
|
||||
Executable
+91
@@ -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
|
||||
+85
@@ -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
|
||||
Executable
+90
@@ -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
|
||||
+51
-41
@@ -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
|
||||
+46
-29
@@ -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
|
||||
+45
-47
@@ -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
|
||||
+44
-38
@@ -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
|
||||
+85
@@ -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
|
||||
+85
@@ -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
|
||||
Executable
+110
@@ -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
|
||||
+83
@@ -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
|
||||
+101
@@ -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
|
||||
+77
@@ -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
|
||||
+89
@@ -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
|
||||
Executable
+101
@@ -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
|
||||
+48
-20
@@ -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 */
|
||||
-67
@@ -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 */
|
||||
|
||||
|
||||
-84
@@ -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 */
|
||||
-66
@@ -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 */
|
||||
-74
@@ -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 */
|
||||
-67
@@ -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 */
|
||||
|
||||
|
||||
-97
@@ -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 */
|
||||
-65
@@ -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 */
|
||||
|
||||
-77
@@ -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 */
|
||||
|
||||
-144
@@ -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 */
|
||||
-51
@@ -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 */
|
||||
-67
@@ -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 */
|
||||
|
||||
-129
@@ -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 */
|
||||
-66
@@ -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 */
|
||||
|
||||
|
||||
-82
@@ -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 */
|
||||
-66
@@ -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 */
|
||||
|
||||
|
||||
-62
@@ -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 */
|
||||
|
||||
-86
@@ -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 */
|
||||
-70
@@ -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 */
|
||||
|
||||
|
||||
-143
@@ -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 */
|
||||
-74
@@ -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 */
|
||||
|
||||
-185
@@ -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 */
|
||||
-67
@@ -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 */
|
||||
|
||||
|
||||
-79
@@ -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 */
|
||||
-72
@@ -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 */
|
||||
|
||||
|
||||
-71
@@ -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
Reference in New Issue
Block a user