Import Geant4 9.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:37:50 +02:00
parent a8e9364cea
commit 96c8bcd0af
6923 changed files with 198390 additions and 41849 deletions
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicShell.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -25,7 +25,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -110,7 +110,7 @@ public:
protected:
G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 99,
G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 100,
G4int limitInfTable = 6, G4int limitSupTable=100 );
~G4AtomicTransitionManager();
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4AugerData.hh
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4BremsstrahlungParameters.hh,v 1.10 2006/06/29 19:33:06 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
// V. Ivanchenko (Vladimir.Ivantchenko@cern.ch)
@@ -25,7 +25,7 @@
//
//
// $Id: G4CompositeEMDataSet.hh,v 1.8 2006/06/29 19:33:08 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -24,46 +24,62 @@
// ********************************************************************
//
//
// $Id: G4DNAElectronElasticScatteringInWater.hh,v 1.6 2006/10/14 11:03:03 pia Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionChargeDecrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Nucl. Instr. Meth. 155 (1978) 145-156
// J. Phys. D: Appl. Phys. 33 (2000) 932-944
// Phys. Med. Biol. 45 (2000) 3171-3194
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
#ifndef G4DNAELECTRONELASTICSCATTERINGINWATER_HH
#define G4DNAELECTRONELASTICSCATTERINGINWATER_HH 1
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEDECREASE_HH
#define G4CROSSSECTIONCHARGEDECREASE_HH 1
#include "G4VDNAProcessInWater.hh"
#include "globals.hh"
#include <map>
#include "G4CrossSectionChargeDecreasePartial.hh"
class G4Track;
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// FinalStatesPolicy must provide:
// - [protected] G4double RandomizeCosTheta(G4double k, G4int z)
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAElectronElasticScatteringInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
class G4CrossSectionChargeDecrease
{
public:
G4DNAElectronElasticScatteringInWater(const G4String & name): G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAElectronElasticScatteringInWater() {}
virtual G4VParticleChange* PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
G4CrossSectionChargeDecrease();
virtual ~G4CrossSectionChargeDecrease();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
// Hides default constructor and assignment operator as private
G4DNAElectronElasticScatteringInWater(const G4DNAElectronElasticScatteringInWater & copy);
G4DNAElectronElasticScatteringInWater & operator=(const G4DNAElectronElasticScatteringInWater & right);
};
#include "G4DNAElectronElasticScatteringInWater.icc"
#endif /* G4DNAELECTRONELASTICSCATTERINGINWATER_HH */
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4CrossSectionChargeDecreasePartial partialCrossSection;
};
#endif
@@ -0,0 +1,91 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionChargeDecreasePartial.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
// 08 Nov 2007 MGP Got code from S.I.; lowercase data member
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH
#define G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH 1
#include "globals.hh"
class G4ParticleDefinition;
class G4CrossSectionChargeDecreasePartial
{
public:
G4CrossSectionChargeDecreasePartial();
virtual ~G4CrossSectionChargeDecreasePartial();
G4double CrossSection(G4double energy, G4int level, const G4ParticleDefinition* particle);
G4double Sum(G4double energy, const G4ParticleDefinition* particle);
G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle);
// Copy constructor and assignment operator to be added here
private:
G4int numberOfPartialCrossSections[3]; // 3 is the particle type index
G4double f0[2][3];
G4double a0[2][3];
G4double a1[2][3];
G4double b0[2][3];
G4double b1[2][3];
G4double c0[2][3];
G4double d0[2][3];
G4double x0[2][3];
G4double x1[2][3];
};
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionChargeIncrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEIncrease_HH
#define G4CROSSSECTIONCHARGEIncrease_HH 1
#include "globals.hh"
#include <map>
#include "G4CrossSectionChargeIncreasePartial.hh"
class G4Track;
class G4CrossSectionChargeIncrease
{
public:
G4CrossSectionChargeIncrease();
virtual ~G4CrossSectionChargeIncrease();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4CrossSectionChargeIncreasePartial partialCrossSection;
};
#endif
@@ -0,0 +1,90 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionChargeIncreasePartial.hh,v 1.1 2007/11/08 18:24:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONCHARGEIncreasePARTIAL_HH
#define G4CROSSSECTIONCHARGEIncreasePARTIAL_HH 1
#include "globals.hh"
class G4ParticleDefinition;
class G4CrossSectionChargeIncreasePartial
{
public:
G4CrossSectionChargeIncreasePartial();
virtual ~G4CrossSectionChargeIncreasePartial();
G4double CrossSection(G4double energy, G4int level, const G4ParticleDefinition* particle);
G4double Sum(G4double energy, const G4ParticleDefinition* particle);
G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle);
// Copy constructor and assignment operator to be added here
private:
G4int numberOfPartialCrossSections[2]; // 2 is the particle type index
G4double f0[2][2];
G4double a0[2][2];
G4double a1[2][2];
G4double b0[2][2];
G4double b1[2][2];
G4double c0[2][2];
G4double d0[2][2];
G4double x0[2][2];
G4double x1[2][2];
};
#endif
@@ -24,49 +24,59 @@
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionElasticScreenedRutherford.hh,v 1.1 2007/10/12 23:07:10 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifdef G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
template <typename EnergyLimitsPolicy>
G4bool G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONELASTICSCREENEDRUTHERFORD_HH
#define G4CROSSSECTIONELASTICSCREENEDRUTHERFORD_HH 1
#include "globals.hh"
class G4Track;
class G4CrossSectionElasticScreenedRutherford
{
public:
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int /* finalStateIndex */) const
{
return 1;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition * G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int /* finalStateIndex */)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
return instance->GetIon("alpha++");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: IncomingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
return 54.509*eV;
}
#endif /* G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH */
G4CrossSectionElasticScreenedRutherford();
virtual ~G4CrossSectionElasticScreenedRutherford();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4double RutherfordCrossSection(G4double energy, G4double z);
G4double ScreeningFactor(G4double energy, G4double z);
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
};
#endif
@@ -24,43 +24,60 @@
// ********************************************************************
//
//
// $Id: G4DNAChargeDecreaseInWater.hh,v 1.4 2006/06/29 19:33:40 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionExcitationBorn.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifndef G4DNACHARGEDECREASEINWATER_HH
#define G4DNACHARGEDECREASEINWATER_HH 1
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
#include "G4VDNAProcessInWater.hh"
// -------------------------------------------------------------------
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
// - [protected] G4int NumberOfFinalStates(G4int finalStateIndex)
// - [protected] G4double OverallBindingEnergyConstant(G4int finalStateIndex)
#ifndef G4CROSSSECTIONEXCITATIONBORN_HH
#define G4CROSSSECTIONEXCITATIONBORN_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
#include "G4DNACrossSectionDataSet.hh"
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAChargeDecreaseInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
class G4Track;
class G4CrossSectionExcitationBorn
{
public:
G4DNAChargeDecreaseInWater(const G4String& name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAChargeDecreaseInWater() {}
virtual G4VParticleChange* PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
G4CrossSectionExcitationBorn();
virtual ~G4CrossSectionExcitationBorn();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
// Hides default constructor and assignment operator as private
G4DNAChargeDecreaseInWater(const G4DNAChargeDecreaseInWater & copy);
G4DNAChargeDecreaseInWater& operator=(const G4DNAChargeDecreaseInWater & right);
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4DNACrossSectionDataSet* table;
};
#include "G4DNAChargeDecreaseInWater.icc"
#endif /* G4DNACHARGEDECREASEINWATER_HH */
#endif
@@ -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: 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
//
// -------------------------------------------------------------------
// 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 G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH
#define G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH 1
#include "globals.hh"
#include <vector>
#include "G4DNACrossSectionDataSet.hh"
class G4CrossSectionExcitationBornPartial
{
public:
G4CrossSectionExcitationBornPartial();
virtual ~G4CrossSectionExcitationBornPartial();
// Select an excitation level according to the partial cross sections
G4int RandomSelect(G4double energy);
// Copy constructor and assignment operator to be added here
private:
G4DNACrossSectionDataSet* table;
};
#endif
@@ -24,52 +24,58 @@
// ********************************************************************
//
//
// $Id: G4VDNAProcessInWater.hh,v 1.6 2006/06/29 19:37:03 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionExcitationEmfietzoglou.hh,v 1.2 2007/10/15 08:31:49 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifndef G4VDNAPROCESSINWATER_HH
#define G4VDNAPROCESSINWATER_HH 1
#include "G4VLowEnergyTestableDiscreteProcess.hh"
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH
#define G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH 1
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
#include "globals.hh"
#include "G4CrossSectionExcitationEmfietzoglouPartial.hh"
class G4Track;
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4VDNAProcessInWater : public G4VLowEnergyTestableDiscreteProcess, public TotalCrossSectionPolicy, public FinalStatesPolicy
class G4CrossSectionExcitationEmfietzoglou
{
public:
G4VDNAProcessInWater(const G4String& name) : G4VLowEnergyTestableDiscreteProcess(name) {}
virtual ~G4VDNAProcessInWater() {}
virtual G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep);
virtual void BuildPhysicsTable(const G4ParticleDefinition& aParticleDefinition);
virtual G4bool IsApplicable(const G4ParticleDefinition& aParticleDefinition);
protected:
void ValidateInWater(const G4Track& aTrack) const;
virtual G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition);
G4CrossSectionExcitationEmfietzoglou();
virtual ~G4CrossSectionExcitationEmfietzoglou();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4CrossSectionExcitationEmfietzoglouPartial partialCrossSection;
// Hides default constructor and assignment operator as private
G4VDNAProcessInWater();
G4VDNAProcessInWater& operator=(const G4VDNAProcessInWater & right);
};
#include "G4VDNAProcessInWater.icc"
#endif /* G4VDNAPROCESSINWATER_HH */
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionExcitationEmfietzoglouPartial.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH
#define G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
class G4Track;
class G4CrossSectionExcitationEmfietzoglouPartial
{
public:
G4CrossSectionExcitationEmfietzoglouPartial();
virtual ~G4CrossSectionExcitationEmfietzoglouPartial();
G4double CrossSection(G4double energy,G4int level);
G4double Sum(G4double energy);
G4int RandomSelect(G4double energy);
// Copy constructor and assignment operator to be added here
private:
// Number of excitation levels of the water molecule
G4int nLevels;
G4WaterExcitationStructure waterExcitation;
};
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionExcitationMillerGreen.hh,v 1.2 2007/11/08 19:56:02 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONMILLERGREEN_HH
#define G4CROSSSECTIONEXCITATIONMILLERGREEN_HH 1
#include "globals.hh"
#include <map>
#include "G4CrossSectionExcitationMillerGreenPartial.hh"
class G4Track;
class G4CrossSectionExcitationMillerGreen
{
public:
G4CrossSectionExcitationMillerGreen();
virtual ~G4CrossSectionExcitationMillerGreen();
G4double CrossSection(const G4Track&);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4CrossSectionExcitationMillerGreenPartial partialCrossSection;
};
#endif
@@ -0,0 +1,110 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionExcitationMillerGreenPartial.hh,v 1.1 2007/11/08 19:56:02 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH
#define G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
#include "G4ParticleDefinition.hh"
class G4Track;
class G4CrossSectionExcitationMillerGreenPartial
{
public:
G4CrossSectionExcitationMillerGreenPartial();
virtual ~G4CrossSectionExcitationMillerGreenPartial();
G4double CrossSection(G4double energy,G4int level, const G4ParticleDefinition* particle);
G4double Sum(G4double energy, const G4ParticleDefinition* particle);
G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle);
// Copy constructor and assignment operator to be added here
private:
// Number of excitation levels of the water molecule
G4int nLevels;
G4WaterExcitationStructure waterExcitation;
G4double S_1s(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double S_2s(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double S_2p(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double R(G4double t,
G4double energyTransferred,
G4double slaterEffectiveCharge,
G4double shellNumber);
G4double kineticEnergyCorrection[4]; // 4 is the particle type index
G4double slaterEffectiveCharge[3][4];
G4double sCoefficient[3][4];
};
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4CrossSectionHandler.hh,v 1.9 2006/06/29 19:33:10 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBorn.hh,v 1.1 2007/10/22 09:12:58 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORN_HH
#define G4CROSSSECTIONIONISATIONBORN_HH 1
#include "globals.hh"
#include <map>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationBorn
{
public:
G4CrossSectionIonisationBorn();
~G4CrossSectionIonisationBorn();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
};
#endif
@@ -0,0 +1,83 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBornElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORNELECTRON_HH
#define G4CROSSSECTIONIONISATIONBORNELECTRON_HH 1
#include "globals.hh"
#include <vector>
#include "G4WaterExcitationStructure.hh"
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationBornElectron
{
public:
G4CrossSectionIonisationBornElectron();
virtual ~G4CrossSectionIonisationBornElectron();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4DNACrossSectionDataSet* table;
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBornPartial.hh,v 1.1 2007/10/22 09:12:58 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORNPARTIAL_HH
#define G4CROSSSECTIONIONISATIONBORNPARTIAL_HH 1
#include "globals.hh"
#include <map>
#include <functional>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationBornPartial
{
public:
G4CrossSectionIonisationBornPartial();
~G4CrossSectionIonisationBornPartial();
// Partial cross section
// G4double CrossSection(G4double energy, const G4String& particle);
G4double CrossSection(const G4Track& track);
// Sum of partial cross sections at a given energy value for a particle type
G4double Sum(G4double energy, const G4String& particle);
G4int RandomSelect(G4double energy,const G4String& particle );
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
// G4DNACrossSectionDataSet* table;
};
#endif
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationBornPartialElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONBORNPARTIALELECTRON_HH
#define G4CROSSSECTIONIONISATIONBORNPARTIALELECTRON_HH 1
#include "globals.hh"
#include <vector>
#include "G4DNACrossSectionDataSet.hh"
class G4CrossSectionIonisationBornPartialElectron
{
public:
G4CrossSectionIonisationBornPartialElectron();
virtual ~G4CrossSectionIonisationBornPartialElectron();
// Select an excitation level according to the partial cross sections
G4int RandomSelect(G4double energy);
// Copy constructor and assignment operator to be added here
private:
G4DNACrossSectionDataSet* table;
};
#endif
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationRudd.hh,v 1.1 2007/11/08 21:35:31 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONRUDD_HH
#define G4CROSSSECTIONIONISATIONRUDD_HH 1
#include "globals.hh"
#include <map>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationRudd
{
public:
G4CrossSectionIonisationRudd();
~G4CrossSectionIonisationRudd();
G4double CrossSection(const G4Track& track);
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4CrossSectionIonisationRuddPartial.hh,v 1.1 2007/11/08 21:35:31 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for ionisation cross section in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONIONISATIONRuddPARTIAL_HH
#define G4CROSSSECTIONIONISATIONRuddPARTIAL_HH 1
#include "globals.hh"
#include <map>
#include <functional>
#include "G4DNACrossSectionDataSet.hh"
class G4Track;
class G4CrossSectionIonisationRuddPartial
{
public:
G4CrossSectionIonisationRuddPartial();
~G4CrossSectionIonisationRuddPartial();
// Partial cross section
// G4double CrossSection(G4double energy, const G4String& particle);
G4double CrossSection(const G4Track& track);
// Sum of partial cross sections at a given energy value for a particle type
G4double Sum(G4double energy, const G4String& particle);
G4int RandomSelect(G4double energy,const G4String& particle );
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
MapData tableData;
// G4DNACrossSectionDataSet* table;
};
#endif
@@ -24,29 +24,57 @@
// ********************************************************************
//
//
// $Id: G4DNAExcitationInWater.icc,v 1.3 2006/06/29 19:34:14 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4CrossSectionKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifdef G4DNAEXCITATIONINWATER_HH
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange * G4DNAExcitationInWater<TotalCrossSectionPolicy, FinalStatesPolicy> :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep)
{
const G4int z(10); // H2O number of electrons
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
// design foundation and implementation of the first set of models,
// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4CROSSSECTIONKILL_HH
#define G4CROSSSECTIONKILL_HH 1
#include "globals.hh"
class G4Track;
class G4CrossSectionKill
{
public:
this->aParticleChange.Initialize(aTrack);
G4CrossSectionKill();
G4double k;
k=aTrack.GetDynamicParticle()->GetKineticEnergy();
virtual ~G4CrossSectionKill();
G4int excitationLevel(this->RandomizePartialCrossSection(k, z));
G4double excitationEnergy(this->EnergyConstant(excitationLevel));
G4double CrossSection(const G4Track&);
this->aParticleChange.ProposeEnergy(k-excitationEnergy);
this->aParticleChange.ProposeLocalEnergyDeposit(excitationEnergy);
this->aParticleChange.ProposeMomentumDirection(aTrack.GetDynamicParticle()->GetMomentumDirection());
this->aParticleChange.SetNumberOfSecondaries(0);
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
}
#endif /* G4DNAEXCITATIONINWATER_HH */
// Copy constructor and assignment operator to be added here
private:
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
};
#endif
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeDecrease.hh,v 1.2 2006/06/29 19:33:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSCHARGEDECREASE_HH
#define G4DNAALPHAPLUSCHARGEDECREASE_HH 1
#include "G4DNAChargeDecreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[1];
G4double a0[1];
G4double a1[1];
G4double b0[1];
G4double b1[1];
G4double c0[1];
G4double d0[1];
G4double x0[1];
G4double x1[1];
};
class G4DNAAlphaPlusChargeDecrease : public G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusChargeDecrease(const G4String & name = "G4DNAAlphaPlusChargeDecrease") : G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusChargeDecrease() {}
};
#endif /* G4DNAALPHAPLUSCHARGEDECREASE_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#define G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy() {}
~G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4int finalStateIndex) const;
G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy(const G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & copy);
G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & right);
};
#include "G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc"
#endif /* G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,84 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int /* finalStateIndex */) const
{
return 1;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition * G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int /* finalStateIndex */)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
return instance->GetIon("helium");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: WaterBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Binding energy for W+ -> W++ + e- 10.79 eV
// Binding energy for W -> W+ + e- 10.79 eV
//
// Ionization energy of first water shell
// Rad. Phys. Chem. 59 p.267 by Dingf. et al.
return 10.79*eV;
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
return 24.587*eV;
}
#endif /* G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeIncrease.hh,v 1.2 2006/06/29 19:33:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSCHARGEINCREASE_HH
#define G4DNAALPHAPLUSCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[1];
G4double a0[1];
G4double a1[1];
G4double b0[1];
G4double b1[1];
G4double c0[1];
G4double d0[1];
G4double x0[1];
G4double x1[1];
};
class G4DNAAlphaPlusChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusChargeIncrease(const G4String & name = "G4DNAAlphaPlusChargeIncrease") : G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy, G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy>, G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy<G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusChargeIncrease() {}
};
#endif /* G4DNAALPHAPLUSCHARGEINCREASE_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusChargeIncreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH
#define G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy() {}
~G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy(const G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & copy);
G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusExcitation.hh,v 1.2 2006/06/29 19:33:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSEXCITATION_HH
#define G4DNAALPHAPLUSEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusExcitationEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusExcitationIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
const G4double kineticEnergyCorrection;
};
class G4DNAAlphaPlusExcitation : public G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusExcitationEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusExcitation(const G4String & name = "G4DNAAlphaPlusExcitation") : G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusExcitation() {}
};
#endif /* G4DNAALPHAPLUSEXCITATION_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusChargeDecrease.hh,v 1.2 2006/06/29 19:33:26 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH
#define G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH 1
#include "G4DNAChargeDecreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[2];
G4double a0[2];
G4double a1[2];
G4double b0[2];
G4double b1[2];
G4double c0[2];
G4double d0[2];
G4double x0[2];
G4double x1[2];
};
class G4DNAAlphaPlusPlusChargeDecrease : public G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusPlusChargeDecrease(const G4String & name = "G4DNAAlphaPlusPlusChargeDecrease") : G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy, G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy>, G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusPlusChargeDecrease() {}
};
#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#define G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy() {}
~G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4int finalStateIndex) const;
G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy(const G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & copy);
G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & right);
};
#include "G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc"
#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,97 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int finalStateIndex) const
{
if (finalStateIndex==0)
return 1;
return 2;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int finalStateIndex)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
if (finalStateIndex==0)
return instance->GetIon("alpha+");
return instance->GetIon("helium");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: WaterBindingEnergyConstant(G4int finalStateIndex) const
{
// Binding energy for W+ -> W++ + e- 10.79 eV
// Binding energy for W -> W+ + e- 10.79 eV
//
// Ionization energy of first water shell
// Rad. Phys. Chem. 59 p.267 by Dingf. et al.
if (finalStateIndex==0)
return 10.79*eV;
return 10.79*2*eV;
}
template <typename EnergyLimitsPolicy>
G4double G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
if (finalStateIndex==0)
return 54.509*eV;
return (54.509 + 24.587)*eV;
}
#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAAlphaPlusPlusExcitation.hh,v 1.2 2006/06/29 19:33:32 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAALPHAPLUSPLUSEXCITATION_HH
#define G4DNAALPHAPLUSPLUSEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy
{
protected:
G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy
{
protected:
G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
const G4double kineticEnergyCorrection;
};
class G4DNAAlphaPlusPlusExcitation : public G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy> >
{
public:
G4DNAAlphaPlusPlusExcitation(const G4String & name = "G4DNAAlphaPlusPlusExcitation") : G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy, G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAAlphaPlusPlusExcitation() {}
};
#endif /* G4DNAALPHAPLUSPLUSEXCITATION_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNABornExcitationFinalStatesPolicy, 2005/09/19 13:51:45 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-
#ifndef G4DNABornExcitationFinalStatesPolicy_HH
#define G4DNABornExcitationFinalStatesPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNABornExcitationFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNABornExcitationFinalStatesPolicy() {}
~G4DNABornExcitationFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4double EnergyConstant(G4int excitationLevelIndex) const;
// Hides default constructor and assignment operator as private
G4DNABornExcitationFinalStatesPolicy(const G4DNABornExcitationFinalStatesPolicy & copy);
G4DNABornExcitationFinalStatesPolicy & operator=(const G4DNABornExcitationFinalStatesPolicy & right);
};
#include "G4DNABornExcitationFinalStatesPolicy.icc"
#endif /* G4DNABornExcitationFinalStatesPolicy_HH */
@@ -1,85 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAChargeDecreaseInWater.icc,v 1.4 2006/06/29 19:33:42 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNACHARGEDECREASEINWATER_HH
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange * G4DNAChargeDecreaseInWater<TotalCrossSectionPolicy, FinalStatesPolicy> :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep)
{
this->aParticleChange.Initialize(aTrack);
this->aParticleChange.ProposeTrackStatus(fStopAndKill);
G4double inK(aTrack.GetDynamicParticle()->GetKineticEnergy());
const G4int z(10); // H2O number of electrons
G4int finalStateIndex(TotalCrossSectionPolicy::RandomizePartialCrossSection(inK, z));
G4int n(FinalStatesPolicy::NumberOfFinalStates(finalStateIndex));
G4double waterBindingEnergy(FinalStatesPolicy::WaterBindingEnergyConstant(finalStateIndex));
G4double outgoingParticleBindingEnergy(FinalStatesPolicy::OutgoingParticleBindingEnergyConstant(finalStateIndex));
G4double outK(inK - n*(inK*electron_mass_c2/proton_mass_c2) - waterBindingEnergy + outgoingParticleBindingEnergy);
if (outK<0)
{
G4String message;
message="G4DNAChargeDecreaseInWater<>::PostStepDoIt - Final kinetic energy is below 0! Process ";
message+=this->GetProcessName();
G4Exception(message);
}
this->aParticleChange.ProposeLocalEnergyDeposit(waterBindingEnergy);
this->aParticleChange.SetNumberOfSecondaries(1);
this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), outK));
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
/* aParticleChange.Initialize(aTrack);
G4double k=aTrack.GetDynamicParticle()->GetKineticEnergy();
G4int finalStateIndex(FinalStatesPolicy::NumberOfFinalStates());
G4int randomShell;
G4double electronBindingEnergy=0.;
for(G4int index=0; index<finalStateIndex; index++)
{
randomShell = TotalCrossSectionPolicy::RandomizePartialCrossSection(k);
electronBindingEnergy+=TotalCrossSectionPolicy::WaterBindingEnergy(randomShell);
}
G4double overallBindingEnergy(FinalStatesPolicy::OverallBindingEnergyConstant(finalStateIndex));
aParticleChange.ProposeLocalEnergyDeposit(electronBindingEnergy);
aParticleChange.SetNumberOfSecondaries(1);
G4DynamicParticle *newParticle = new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex),
aTrack.GetDynamicParticle()->GetMomentumDirection(),
k-finalStateIndex*(k*electron_mass_c2/proton_mass_c2)-electronBindingEnergy+overallBindingEnergy);
aParticleChange.ProposeTrackStatus(fStopAndKill);
aParticleChange.AddSecondary(newParticle);
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep); */
}
#endif /* G4DNACHARGEDECREASEINWATER_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAChargeIncreaseInWater.hh,v 1.3 2006/06/29 19:33:44 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifndef G4DNACHARGEINCREASEINWATER_HH
#define G4DNACHARGEINCREASEINWATER_HH 1
#include "G4VDNAProcessInWater.hh"
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
// - [protected] G4int NumberOfFinalStates(G4int finalStateIndex)
// - [protected] G4double OverallBindingEnergyConstant(G4int finalStateIndex)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAChargeIncreaseInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
{
public:
G4DNAChargeIncreaseInWater(const G4String & name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAChargeIncreaseInWater() {}
virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
private:
// Hides default constructor and assignment operator as private
G4DNAChargeIncreaseInWater(const G4DNAChargeIncreaseInWater & copy);
G4DNAChargeIncreaseInWater & operator=(const G4DNAChargeIncreaseInWater & right);
};
#include "G4DNAChargeIncreaseInWater.icc"
#endif /* G4DNACHARGEINCREASEINWATER_HH */
@@ -1,71 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAChargeIncreaseInWater.icc,v 1.4 2006/06/29 19:33:46 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNACHARGEINCREASEINWATER_HH
#include "G4Electron.hh"
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange* G4DNAChargeIncreaseInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
{
this->aParticleChange.Initialize(aTrack);
this->aParticleChange.ProposeLocalEnergyDeposit(0.);
this->aParticleChange.ProposeTrackStatus(fStopAndKill);
G4double inK(aTrack.GetDynamicParticle()->GetKineticEnergy());
const G4int z(10); // H2O number of electrons
G4int finalStateIndex(TotalCrossSectionPolicy::RandomizePartialCrossSection(inK, z));
G4int n(FinalStatesPolicy::NumberOfFinalStates(finalStateIndex));
G4double outK(inK-FinalStatesPolicy::IncomingParticleBindingEnergyConstant(finalStateIndex));
G4double electronK(inK*electron_mass_c2/proton_mass_c2);
if (outK<0)
{
G4String message;
message="G4DNAChargeIncreaseInWater<>::PostStepDoIt - Final kinetic energy is below 0! Process ";
message+=this->GetProcessName();
G4Exception(message);
}
this->aParticleChange.SetNumberOfSecondaries(n+1);
this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), outK));
while (n>0)
{
n--;
this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), electronK));
}
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
}
#endif /* G4DNACHARGEINCREASEINWATER_HH */
@@ -24,14 +24,15 @@
// ********************************************************************
//
//
// $Id: G4DNACrossSectionDataSet.hh,v 1.2 2006/06/29 19:33:48 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4DNACrossSectionDataSet.hh,v 1.4 2007/10/15 08:31:49 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Riccardo Capra <capra@ge.infn.it>
//
// History:
// -----------
// 30 Jun 2005 RC Created
// 14 Oct 2007 MGP Removed inheritance from concrete class G4ShellEMDataSet
//
// -------------------------------------------------------------------
@@ -48,16 +49,64 @@
#include "G4ShellEMDataSet.hh"
class G4DNACrossSectionDataSet : public G4ShellEMDataSet
class G4DNACrossSectionDataSet : public G4VEMDataSet
{
public:
G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm, G4double argUnitEnergies=MeV, G4double argUnitData=barn);
virtual ~G4DNACrossSectionDataSet();
G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm,
G4double argUnitEnergies=MeV,
G4double argUnitData=barn);
virtual G4bool LoadData(const G4String & argFileName);
virtual G4bool SaveData(const G4String & argFileName) const;
virtual ~G4DNACrossSectionDataSet();
virtual G4double FindValue(G4double argEnergy, G4int argComponentId=0) const;
virtual void PrintData(void) const;
virtual const G4VEMDataSet* GetComponent(G4int argComponentId) const
{ return components[argComponentId]; }
virtual void AddComponent(G4VEMDataSet * argDataSet)
{ components.push_back(argDataSet); }
virtual size_t NumberOfComponents(void) const
{ return components.size(); }
virtual const G4DataVector& GetEnergies(G4int argComponentId) const
{ return GetComponent(argComponentId)->GetEnergies(0); }
virtual const G4DataVector& GetData(G4int argComponentId) const
{ return GetComponent(argComponentId)->GetData(0); }
virtual void SetEnergiesData(G4DataVector* argEnergies, G4DataVector* argData, G4int argComponentId);
virtual G4bool LoadData(const G4String & argFileName);
virtual G4bool SaveData(const G4String & argFileName) const;
// void CleanUpComponents();
private:
G4String FullFileName(const G4String & argFileName) const;
};
G4String FullFileName(const G4String & argFileName) const;
// Hide copy constructor and assignment operator
G4DNACrossSectionDataSet();
G4DNACrossSectionDataSet(const G4DNACrossSectionDataSet & copy);
G4DNACrossSectionDataSet& operator=(const G4DNACrossSectionDataSet & right);
std::vector<G4VEMDataSet*> components; // Owned pointers
G4int z;
G4VDataSetAlgorithm* algorithm; // Owned pointer
G4double unitEnergies;
G4double unitData;
G4double GetUnitEnergies() const { return unitEnergies; }
G4double GetUnitData() const { return unitData; }
const G4VDataSetAlgorithm* GetAlgorithm() const { return algorithm; }
void CleanUpComponents(void);
};
#endif /* G4DNACROSSSECTIONDATASET_HH */
@@ -1,77 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:33:50 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH
#define G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// - [protected] G4int NumberOfPartialCrossSections(void)
// - [protected] const G4double f0[]
// - [protected] const G4double a0[]
// - [protected] const G4double a1[]
// - [protected] const G4double b0[]
// - [protected] const G4double b1[]
// - [protected] const G4double c0[]
// - [protected] const G4double d0[]
// - [protected] G4double x0[]
// - [protected] G4double x1[]
// EnergyLimitsPolicy must provide:
// - [protected] const G4double lowEnergyLimit
// - [protected] const G4double zeroBelowLowEnergyLimit
// - [protected] const G4double highEnergyLimit
// - [protected] const G4double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNADingfelderChargeChangeTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNADingfelderChargeChangeTotalCrossSectionPolicy() {}
~G4DNADingfelderChargeChangeTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z);
G4int RandomizePartialCrossSection(G4double k, G4int z);
void BuildTotalCrossSection(void) const {}
// G4int StepFunction(G4double x) const;
// G4double WaterBindingEnergy(G4int levelIndex) const;
private:
G4double PartialCrossSection(G4double k, G4int z, G4int index);
// Hides default constructor and assignment operator as private
G4DNADingfelderChargeChangeTotalCrossSectionPolicy(const G4DNADingfelderChargeChangeTotalCrossSectionPolicy & copy);
G4DNADingfelderChargeChangeTotalCrossSectionPolicy & operator=(const G4DNADingfelderChargeChangeTotalCrossSectionPolicy & right);
};
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc"
#endif /* G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH */
@@ -1,144 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc,v 1.3 2006/06/29 19:33:52 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNADingfelderChargeChangeTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int z)
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4int i(IncomingParticlePolicy::NumberOfPartialCrossSections());
G4double totalCrossSection(0.);
while (i>0)
{
i--;
totalCrossSection+=PartialCrossSection(k, z, i);
}
return totalCrossSection;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNADingfelderChargeChangeTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double k, G4int z)
{
const G4int n(IncomingParticlePolicy::NumberOfPartialCrossSections());
G4double * values(new G4double[n]);
G4double value(0);
G4int i(n);
while (i>0)
{
i--;
values[i]=PartialCrossSection(k, z, i);
value+=values[i];
}
value*=G4UniformRand();
i=n;
while (i>0)
{
i--;
if (values[i]>value)
break;
value-=values[i];
}
delete[] values;
return i;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNADingfelderChargeChangeTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: PartialCrossSection(G4double k, G4int /* z */, G4int index)
{
//
// sigma(T) = f0 10 ^ y(std::log10(T/eV))
//
// / a0 x + b0 x < x0
// |
// y(x) = < a0 x + b0 - c0 (x - x0)^d0 x0 <= x < x1
// |
// \ a1 x + b1 x >= x1
//
//
// f0, a0, a1, b0, b1, c0, d0, x0, x1 are parameters that change for protons and helium (0, +, ++)
//
// f0 has been added to the code in order to manage partial (shell-dependent) cross sections (if no shell dependence is present. f0=1. Sum of f0 over the considered shells should give 1)
//
// From Rad. Phys. and Chem. 59 (2000) 255-275, M. Dingfelder et al.
// Inelastic-collision cross sections of liquid water for interactions of energetic proton
//
if (IncomingParticlePolicy::x1[index]<IncomingParticlePolicy::x0[index])
{
//
// if x1 < x0 means that x1 and b1 will be calculated with the following formula (this piece of code is run on all alphas and not on protons)
//
// x1 = x0 + ((a0 - a1)/(c0 * d0)) ^ (1 / (d0 - 1))
//
// b1 = (a0 - a1) * x1 + b0 - c0 * (x1 - x0) ^ d0
//
IncomingParticlePolicy::x1[index]=IncomingParticlePolicy::x0[index] + std::pow((IncomingParticlePolicy::a0[index] - IncomingParticlePolicy::a1[index]) / (IncomingParticlePolicy::c0[index] * IncomingParticlePolicy::d0[index]), 1. / (IncomingParticlePolicy::d0[index] - 1.));
IncomingParticlePolicy::b1[index]=(IncomingParticlePolicy::a0[index] - IncomingParticlePolicy::a1[index]) * IncomingParticlePolicy::x1[index] + IncomingParticlePolicy::b0[index] - IncomingParticlePolicy::c0[index] * std::pow(IncomingParticlePolicy::x1[index] - IncomingParticlePolicy::x0[index], IncomingParticlePolicy::d0[index]);
}
G4double x(std::log10(k/eV));
G4double y;
if (x<IncomingParticlePolicy::x0[index])
y=IncomingParticlePolicy::a0[index] * x + IncomingParticlePolicy::b0[index];
else if (x<IncomingParticlePolicy::x1[index])
y=IncomingParticlePolicy::a0[index] * x + IncomingParticlePolicy::b0[index] - IncomingParticlePolicy::c0[index] * std::pow(x - IncomingParticlePolicy::x0[index], IncomingParticlePolicy::d0[index]);
else
y=IncomingParticlePolicy::a1[index] * x + IncomingParticlePolicy::b1[index];
return IncomingParticlePolicy::f0[index] * std::pow(10., y)*m*m;
}
#endif /* G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH */
@@ -1,76 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAElectronBornExcitation.hh,v 1.3 2006/06/29 19:33:54 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAElectronBornExcitation_HH
#define G4DNAElectronBornExcitation_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
#include "G4DNATotalCrossSectionFromFilePolicy.hh"
#include "G4DNABornExcitationFinalStatesPolicy.hh"
#include "G4LogLogInterpolation.hh"
class G4DNAElectronBornExcitationEnergyLimitsPolicy
{
protected:
G4DNAElectronBornExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAElectronBornExcitationIncomingParticlePolicy
{
protected:
G4DNAElectronBornExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAElectronBornExcitationDataFilePolicy
{
public : G4DNAElectronBornExcitationDataFilePolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
const G4double dataFileEnergyUnit;
const G4double dataFileCrossSectionUnit;
const char * const dataFileName;
};
class G4DNAElectronBornExcitation : public G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAElectronBornExcitationIncomingParticlePolicy, G4DNAElectronBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAElectronBornExcitationEnergyLimitsPolicy> >
{
public:
G4DNAElectronBornExcitation(const G4String & name = "G4DNAElectronBornExcitation") : G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAElectronBornExcitationIncomingParticlePolicy, G4DNAElectronBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAElectronBornExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAElectronBornExcitation() {}
};
#endif /* G4DNAElectronBornExcitation_HH */
@@ -1,51 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAElectronElasticEmfietzoglou.hh,v 1.3 2006/06/29 19:33:58 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAELECTRONELASTICEMFIETZOGLOU_HH
#define G4DNAELECTRONELASTICEMFIETZOGLOU_HH 1
#include "G4DNAElectronElasticScatteringInWater.hh"
#include "G4DNARutherfordTotalCrossSectionPolicy.hh"
#include "G4DNAEmfietzoglouAngularDistributionPolicy.hh"
struct G4DNAEmfietzoglouEnergyLimitsPolicy
{
static const G4double lowEnergyLimit;
static const G4bool zeroBelowLowEnergyLimit;
static const G4double highEnergyLimit;
static const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAElectronElasticEmfietzoglou : public G4DNAElectronElasticScatteringInWater<G4DNARutherfordTotalCrossSectionPolicy<G4DNAEmfietzoglouEnergyLimitsPolicy>, G4DNAEmfietzoglouAngularDistributionPolicy>
{
public:
G4DNAElectronElasticEmfietzoglou(const G4String & name = "G4DNAElectronElasticEmfietzoglou") : G4DNAElectronElasticScatteringInWater<G4DNARutherfordTotalCrossSectionPolicy<G4DNAEmfietzoglouEnergyLimitsPolicy>, G4DNAEmfietzoglouAngularDistributionPolicy>(name) {}
virtual ~G4DNAElectronElasticEmfietzoglou() {}
};
#endif /* G4DNAELECTRONELASTICEMFIETZOGLOU_HH */
@@ -1,61 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAElectronExcitation.hh,v 1.3 2006/06/29 19:34:04 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAELECTRONEXCITATION_HH
#define G4DNAELECTRONEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAElectronExcitationEnergyLimitsPolicy
{
protected:
G4DNAElectronExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAElectronExcitationIncomingParticlePolicy
{
protected:
G4DNAElectronExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAElectronExcitation : public G4DNAExcitationInWater<G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<G4DNAElectronExcitationIncomingParticlePolicy, G4DNAElectronExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAElectronExcitationEnergyLimitsPolicy> >
{
public:
G4DNAElectronExcitation(const G4String & name = "G4DNAElectronExcitation") : G4DNAExcitationInWater<G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<G4DNAElectronExcitationIncomingParticlePolicy, G4DNAElectronExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAElectronExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAElectronExcitation() {}
};
#endif /* G4DNAELECTRONEXCITATION_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy, 2005/07/26 10:39:54 francis
// GEANT4 tag $Name: emlowen-V07-01-02
#ifndef G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH
#define G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy() {}
~G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z) const;
G4int RandomizePartialCrossSection(G4double k, G4int z) const;
G4double EnergyConstant(G4int excitationLevelIndex) const;
void BuildTotalCrossSection(void) const {}
private:
G4double PartialCrossSection(G4double T, G4int z,G4int excitationLevelIndex) const;
// Hides default constructor and assignment operator as private
G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy(const G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & copy);
G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & operator=(const G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & right);
};
#include "G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc"
#endif /* G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH */
@@ -1,129 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc,v 2005/07/26 10:49:54 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int z ) const
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4int i(5);
G4double totalCrossSection(0.);
while (i>0)
{
i--;
totalCrossSection+=PartialCrossSection(k,z, i);
}
return totalCrossSection;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double k,G4int z) const
{
G4int i(5);
G4double values[5];
G4double value(0);
while (i>0)
{
i--;
values[i]=PartialCrossSection(k,z, i);
value+=values[i];
}
value*=G4UniformRand();
i=5;
while (i>0)
{
i--;
if (values[i]>value)
return i;
value-=values[i];
}
return 0;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: EnergyConstant(G4int excitationLevelIndex) const
{
const G4double ej[]={8.22*eV, 10.00*eV, 11.24*eV, 12.61*eV, 13.77*eV};
return ej[excitationLevelIndex];
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: PartialCrossSection(G4double t, G4int /*z*/, G4int excitationLevelIndex) const
{
// Aj T
// sigma(T) = ------------- (Bj / T) ln(Cj ---) [1 - Bj / T]^Pj
// 2 pi alpha0 R
//
// T is the incoming electron kinetic energy
// alpha0 is the Bohr Radius (Bohr_radius)
// Aj, Bj, Cj & Pj are parameters that can be found in Emfietzoglou's papers
//
//
// From Phys. Med. Biol. 48 (2003) 2355-2371, D.Emfietzoglou,
// Monte Carlo Simulation of the energy loss of low energy electrons in liquid Water
//
const G4double sigma0((10./3.343e22)*cm2);
const G4double aj[]={0.0205, 0.0209, 0.0130, 0.0026, 0.0025};
const G4double cj[]={4.9801, 3.3850, 2.8095, 1.9242, 3.4624};
const G4double pj[]={0.4757, 0.3483, 0.4443, 0.3429, 0.4379};
const G4double r(13.6*eV) ;
// z=z*1;
if(t<EnergyConstant(excitationLevelIndex)) return(0.);
G4double excSigma = ( aj[excitationLevelIndex] / (2.*pi*Bohr_radius)) * (EnergyConstant(excitationLevelIndex) / t) * std::log(cj[excitationLevelIndex]*(t/r)) * std::pow((1.- (EnergyConstant(excitationLevelIndex)/t)), pj[excitationLevelIndex]);
return(excSigma * sigma0);
}
#endif /* G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH */
@@ -1,64 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAExcitationInWater.hh,v 1.2 2006/06/29 19:34:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifndef G4DNAEXCITATIONINWATER_HH
#define G4DNAEXCITATIONINWATER_HH 1
#include "G4VDNAProcessInWater.hh"
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k, G4int z)
// - [protected] void BuildTotalCrossSection(void)
// - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z)
// - [protected] G4double EnergyConstant(G4int excitationLevelIndex)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAExcitationInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
{
public:
G4DNAExcitationInWater(const G4String & name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAExcitationInWater() {}
virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
private:
// Hides default constructor and assignment operator as private
G4DNAExcitationInWater(const G4DNAExcitationInWater & copy);
G4DNAExcitationInWater & operator=(const G4DNAExcitationInWater & right);
};
#include "G4DNAExcitationInWater.icc"
#endif /* G4DNAEXCITATIONINWATER_HH */
@@ -25,7 +25,7 @@
//
//
// $Id: G4DNAGenericIonsManager.hh,v 1.3 2006/06/29 19:34:16 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// GEANT4 tag $Name: geant4-09-01 $
#ifndef G4DNAGENERICIONSMANAGER_HH
#define G4DNAGENERICIONSMANAGER_HH 1
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumChargeIncrease.hh,v 1.2 2006/06/29 19:34:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHELIUMCHARGEINCREASE_HH
#define G4DNAHELIUMCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAHeliumChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHeliumChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAHeliumChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHeliumChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAHeliumChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[2];
G4double a0[2];
G4double a1[2];
G4double b0[2];
G4double b1[2];
G4double c0[2];
G4double d0[2];
G4double x0[2];
G4double x1[2];
};
class G4DNAHeliumChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAHeliumChargeIncreaseIncomingParticlePolicy, G4DNAHeliumChargeIncreaseEnergyLimitsPolicy>, G4DNAHeliumChargeIncreaseFinalStatesPolicy<G4DNAHeliumChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAHeliumChargeIncrease(const G4String & name = "G4DNAHeliumChargeIncrease") : G4DNAChargeIncreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAHeliumChargeIncreaseIncomingParticlePolicy, G4DNAHeliumChargeIncreaseEnergyLimitsPolicy>, G4DNAHeliumChargeIncreaseFinalStatesPolicy<G4DNAHeliumChargeIncreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAHeliumChargeIncrease() {}
};
#endif /* G4DNAHELIUMCHARGEINCREASE_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumChargeIncreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH
#define G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAHeliumChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAHeliumChargeIncreaseFinalStatesPolicy() {}
~G4DNAHeliumChargeIncreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAHeliumChargeIncreaseFinalStatesPolicy(const G4DNAHeliumChargeIncreaseFinalStatesPolicy & copy);
G4DNAHeliumChargeIncreaseFinalStatesPolicy & operator=(const G4DNAHeliumChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,82 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int finalStateIndex) const
{
if (finalStateIndex==0)
return 1;
return 2;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int finalStateIndex)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
if (finalStateIndex==0)
return instance->GetIon("alpha+");
return instance->GetIon("alpha++");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAHeliumChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy> :: IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const
{
// Binding energy for He+ -> He++ + e- 54.509 eV
// Binding energy for He -> He+ + e- 24.587 eV
if (finalStateIndex==0)
return 24.587*eV;
return (54.509 + 24.587)*eV;
}
#endif /* G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHeliumExcitation.hh,v 1.2 2006/06/29 19:34:24 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHELIUMEXCITATION_HH
#define G4DNAHELIUMEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHeliumExcitationEnergyLimitsPolicy
{
protected:
G4DNAHeliumExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHeliumExcitationIncomingParticlePolicy
{
protected:
G4DNAHeliumExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
const G4double kineticEnergyCorrection;
};
class G4DNAHeliumExcitation : public G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAHeliumExcitationIncomingParticlePolicy, G4DNAHeliumExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAHeliumExcitationEnergyLimitsPolicy> >
{
public:
G4DNAHeliumExcitation(const G4String & name = "G4DNAHeliumExcitation") : G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAHeliumExcitationIncomingParticlePolicy, G4DNAHeliumExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAHeliumExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAHeliumExcitation() {}
};
#endif /* G4DNAHELIUMEXCITATION_HH */
@@ -1,62 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncrease.hh,v 1.2 2006/06/29 19:34:26 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHYDROGENCHARGEINCREASE_HH
#define G4DNAHYDROGENCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh"
#include "G4DNAHydrogenChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHydrogenChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAHydrogenChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAHydrogenChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<G4DNAHydrogenChargeIncreaseIncomingParticlePolicy, G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy>, G4DNAHydrogenChargeIncreaseFinalStatesPolicy<G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAHydrogenChargeIncrease(const G4String & name = "G4DNAHydrogenChargeIncrease") : G4DNAChargeIncreaseInWater<G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<G4DNAHydrogenChargeIncreaseIncomingParticlePolicy, G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy>, G4DNAHydrogenChargeIncreaseFinalStatesPolicy<G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAHydrogenChargeIncrease() {}
};
#endif /* G4DNAHYDROGENCHARGEINCREASE_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncreaseFinalStates, 2005/09/15 14:20:26 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-08
#ifndef G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH
#define G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAHydrogenChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAHydrogenChargeIncreaseFinalStatesPolicy() {}
~G4DNAHydrogenChargeIncreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAHydrogenChargeIncreaseFinalStatesPolicy(const G4DNAHydrogenChargeIncreaseFinalStatesPolicy & copy);
G4DNAHydrogenChargeIncreaseFinalStatesPolicy & operator=(const G4DNAHydrogenChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,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: G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc,v 2005/09/15 14:38:34 Ziad FRANCIS
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
#include "G4Proton.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAHydrogenChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAHydrogenChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAHydrogenChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::NumberOfFinalStates(G4int /* finalStateIndex */) const
{
return 1;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAHydrogenChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::OutgoingParticleDefinition(G4int /* finalStateIndex */)
{
return G4Proton::Proton();
}
template <typename EnergyLimitsPolicy>
G4double G4DNAHydrogenChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::IncomingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const
{
return 13.6*eV;
}
#endif /* G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH */
@@ -1,62 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:34:32 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH
#define G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy() {}
~G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z) const;
G4int RandomizePartialCrossSection(G4double k, G4int z) const;
void BuildTotalCrossSection(void) const {}
// Hides default constructor and assignment operator as private
G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy(const G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & copy);
G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & operator=(const G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & right);
};
#include "G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc"
#endif /* G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */
@@ -1,86 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc,v 1.3 2006/06/29 19:34:34 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int /* z */) const
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4double totalCrossSection(0.);
//--------Following model is proposed by Miller and Green---------
/*
const G4double s0 = 1e-20;
const G4double a = 79.3*keV;
const G4double omega = 0.652;
const G4double i = 12.61*eV;
const G4double nu = 0.943;
const G4double j = 27.7*keV;
totalCrossSection = (s0*std::pow(10*a/keV,omega)*std::pow(k/keV-i/keV, nu)) / (std::pow(j/keV,omega+nu) + std::pow(k/keV,omega+nu));*/
//----------Following model is proposed by Dingfelder--------------
const G4double aa=2.835;
const G4double bb=0.310;
const G4double cc=2.100;
const G4double dd=0.760;
const G4double fac=1.0e-18;
const G4double rr=13.606*eV;
G4double t = k / (proton_mass_c2/electron_mass_c2);
G4double x = t / rr;
G4double sigmal = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*cc*(std::pow(x,dd));
G4double sigmah = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*(aa*std::log(1.0+x)+bb)/x;
totalCrossSection = 1.0/(1.0/sigmal + 1.0/sigmah);
return totalCrossSection*m*m;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double /* k */, G4int /* z */) const
{
return 0;
}
#endif /* G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */
@@ -1,76 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenRuddIonization.hh,v 1.3 2006/06/29 19:34:36 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAHYDROGENRUDDIONIZATION_HH
#define G4DNAHYDROGENRUDDIONIZATION_HH 1
#include "G4DNAIonizationInWater.hh"
#include "G4DNATotalCrossSectionFromFilePolicy.hh"
#include "G4DNARuddIonizationFinalStatesPolicy.hh"
#include "G4LogLogInterpolation.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAHydrogenRuddIonizationEnergyLimitsPolicy
{
protected:
G4DNAHydrogenRuddIonizationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAHydrogenRuddIonizationIncomingParticlePolicy
{
protected:
G4DNAHydrogenRuddIonizationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAHydrogenRuddDataFilePolicy
{
public :
G4DNAHydrogenRuddDataFilePolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
const G4double dataFileEnergyUnit;
const G4double dataFileCrossSectionUnit;
const char * const dataFileName;
};
class G4DNAHydrogenRuddIonization : public G4DNAIonizationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAHydrogenRuddIonizationIncomingParticlePolicy, G4DNAHydrogenRuddDataFilePolicy, G4LogLogInterpolation>, G4DNARuddIonizationFinalStatesPolicy<G4DNAHydrogenRuddIonizationEnergyLimitsPolicy, G4DNAHydrogenRuddIonizationIncomingParticlePolicy> >
{
public:
G4DNAHydrogenRuddIonization(const G4String & name = "G4DNAHydrogenRuddIonization") : G4DNAIonizationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAHydrogenRuddIonizationIncomingParticlePolicy, G4DNAHydrogenRuddDataFilePolicy, G4LogLogInterpolation>, G4DNARuddIonizationFinalStatesPolicy<G4DNAHydrogenRuddIonizationEnergyLimitsPolicy, G4DNAHydrogenRuddIonizationIncomingParticlePolicy> > (name) {}
virtual ~G4DNAHydrogenRuddIonization() {}
};
#endif /* G4DNAHYDROGENRUDDIONIZATION_HH */
@@ -1,70 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenRuddIonizationTotalCrossSectionPolicy, 2005/09/16 9:25:45 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-09
#ifndef G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH
#define G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAHydrogenRuddIonizationFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAHydrogenRuddIonizationFinalStatesPolicy() {}
~G4DNAHydrogenRuddIonizationFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4double RandomizeEjectedElectronEnergy(G4double incomingParticleEnergy, G4int shell) const;
void RandomizeEjectedElectronDirection(G4double incomingParticleEnergy, G4double
outgoingParticleEnergy, G4double & cosTheta, G4double & phi ) const;
G4double EnergyConstant(G4int ionizationLevel) const;
private:
G4double DifferentialCrossSection(G4double k, G4double energyTransfer, G4int shell) const;
// Hides default constructor and assignment operator as private
G4DNAHydrogenRuddIonizationFinalStatesPolicy(const G4DNAHydrogenRuddIonizationFinalStatesPolicy & copy);
G4DNAHydrogenRuddIonizationFinalStatesPolicy & operator=(const G4DNAHydrogenRuddIonizationFinalStatesPolicy & right);
};
#include "G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc"
#endif /* G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH */
@@ -1,143 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc,v 2005/09/16 09:27:54 Ziad FRANCIS
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH
#include "Randomize.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true);
else return (false);
}
template <typename EnergyLimitsPolicy>
void G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> ::BuildFinalStatesData(void) const
{}
template <typename EnergyLimitsPolicy>
G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> ::RandomizeEjectedElectronEnergy(G4double k, G4int shell) const
{
G4double maximumKineticEnergyTransfer = 4.* (electron_mass_c2 / proton_mass_c2) * k;
G4double crossSectionMaximum=0.;
for(G4double value=EnergyConstant(shell); value<=4.*EnergyConstant(shell) ; value+=0.1*eV){
G4double differentialCrossSection = DifferentialCrossSection(k, value, shell);
if(differentialCrossSection >= crossSectionMaximum) crossSectionMaximum = differentialCrossSection;
}
G4double secElecKinetic=0.;
do{
secElecKinetic = G4UniformRand() * maximumKineticEnergyTransfer;
}while(G4UniformRand()*crossSectionMaximum > DifferentialCrossSection(k,secElecKinetic+EnergyConstant(shell),shell));
return(secElecKinetic);
}
template <typename EnergyLimitsPolicy>
void G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy> ::RandomizeEjectedElectronDirection(G4double k, G4double secKinetic, G4double & cosTheta, G4double & phi ) const
{
G4double maxSecKinetic = 4.* (electron_mass_c2 / proton_mass_c2) * k;
phi = twopi * G4UniformRand();
cosTheta = std::sqrt(secKinetic / maxSecKinetic);
}
template <typename EnergyLimitsPolicy>
G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy>::EnergyConstant(G4int ionizationLevel) const
{
const G4double bindingEnergy[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.0*eV};
return(bindingEnergy[ionizationLevel]);
}
template <typename EnergyLimitsPolicy>
G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy<EnergyLimitsPolicy>::DifferentialCrossSection(G4double k, G4double energyTransfer, G4int ionizationLevelIndex) const
{
// Shells ids are 0 1 2 3 4 (4 is k shell)
// !!Attention, "energyTransfer" here is the energy transfered to the electron which means
// that the secondary kinetic energy is w = energyTransfer - bindingEnergy
//
// ds S F1(nu) + w * F2(nu)
// ---- = g(k) * ---- -------------------------------------------
// dw Bj (1+w)^3 * [1 + exp{alpha * (w - wc) / nu}]
//
// w is the secondary electron kinetic Energy in eV
//
// All the other parameters can be found in Rudd's Papers
//
// M.Eugene Rudd, 1988, User-Friendly model for the energy distribution of
// electrons from protons or electron collisions. Nucl. Tracks Rad. Meas.Vol 16 N0 2/3 pp 219-218
//
const G4int j=ionizationLevelIndex;
G4double A1 ; G4double B1 ; G4double C1 ; G4double D1 ; G4double E1 ;
G4double A2 ; G4double B2 ; G4double C2 ; G4double D2 ; G4double Alpha ;
if(j == 4) {//Data For Liquid Water K SHELL from Dingfelder (Protons in Water)
A1 = 1.25; B1 = 0.5; C1 = 1.00; D1 = 1.00; E1 = 3.00; A2 = 1.10; B2 = 1.30;
C2 = 1.00; D2 = 0.00; Alpha = 0.66;}
else {//Data For Liquid Water from Dingfelder (Protons in Water)
A1 = 1.02; B1 = 82.0; C1 = 0.45; D1 = -0.80; E1 = 0.38; A2 = 1.07; B2 = 14.6;
C2 = 0.60; D2 = 0.04; Alpha = 0.64;}
const G4double n = 2.;
const G4double Gj[5] = {0.99, 1.11, 1.11, 0.52, 1.};
//const G4double I[5]={12.61*eV, 14.73*eV, 18.55*eV, 32.2*eV, 539.7*eV}; // for water Vapor
//const G4double energyConstant[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.*eV};
G4double W = (energyTransfer - EnergyConstant(ionizationLevelIndex));
G4double w = W / EnergyConstant(ionizationLevelIndex);
G4double Ry = 13.6*eV;
G4double tau = (electron_mass_c2/proton_mass_c2) * k ;
G4double S = 4.*pi*Bohr_radius*Bohr_radius*n*std::pow((Ry/EnergyConstant(ionizationLevelIndex)),2);
G4double v2 = tau / EnergyConstant(ionizationLevelIndex);
G4double v = std::sqrt(v2);
G4double wc = 4.*v2 - 2.*v - (Ry/(4.*EnergyConstant(ionizationLevelIndex)));
G4double L1 = (C1* std::pow(v,(D1))) / (1.+ E1*std::pow(v, (D1+4.)));
G4double L2 = C2*std::pow(v,(D2));
G4double H1 = (A1*std::log(1.+v2)) / (v2+(B1/v2));
G4double H2 = (A2/v2) + (B2/(v2*v2));
G4double F1 = L1+H1;
G4double F2 = (L2*H2)/(L2+H2);
G4double value = (std::log(k/eV)-4.2)/0.5;
G4double g = (0.8/(1+std::exp(value))) + 0.9;
G4double sigma = g * Gj[j] * (S/EnergyConstant(ionizationLevelIndex)) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(Alpha*(w-wc)/v))) );
return(sigma);
}
#endif /* G4DNAHydrogenRuddIonizationTotalCrossSectionPolicy_HH */
@@ -1,64 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAIonizationInWater.hh,v 1.2 2006/06/29 19:34:43 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifndef G4DNAIONIZATIONINWATER_HH
#define G4DNAIONIZATIONINWATER_HH 1
#include "G4VDNAProcessInWater.hh"
// TotalCrossSectionPolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void)
// - [protected] G4double TotalCrossSection(G4double k)
// - [protected] G4double RandomizePartialCrossSection(G4double k, G4int shell)
// - [protected] void BuildTotalCrossSection(void)
// FinalStatesPolicy must provide:
// - [protected] G4bool KillIncomingParticle(G4double k)
// - [protected] void BuildFinalStatesData(void)
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
class G4DNAIonizationInWater : public G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>
{
public:
G4DNAIonizationInWater(const G4String & name) : G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>(name) {}
virtual ~G4DNAIonizationInWater() {}
virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep);
private:
// Hides default constructor and assignment operator as private
G4DNAIonizationInWater(const G4DNAIonizationInWater & copy);
G4DNAIonizationInWater & operator=(const G4DNAIonizationInWater & right);
};
#include "G4DNAIonizationInWater.icc"
#endif /* G4DNAIONIZATIONINWATER_HH */
@@ -1,90 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAIonizationInWater.icc,v 1.4 2006/06/29 19:34:45 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAIONIZATIONINWATER_HH
#include "G4Electron.hh"
template<typename TotalCrossSectionPolicy, typename FinalStatesPolicy>
G4VParticleChange* G4DNAIonizationInWater<TotalCrossSectionPolicy, FinalStatesPolicy> :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep)
{
const G4int z(10); // H2O number of electrons
this->aParticleChange.Initialize(aTrack);
const G4DynamicParticle* aDynamicParticle = aTrack.GetDynamicParticle();
G4double k = aDynamicParticle->GetKineticEnergy();
G4ParticleMomentum primaryDirection = aDynamicParticle->GetMomentumDirection();
G4double particleMass = aDynamicParticle->GetDefinition()->GetPDGMass();
G4double TotalEnergy = k + particleMass;
G4double Psquare = k*(TotalEnergy+particleMass);
G4double TotalMomentum = std::sqrt(Psquare);
G4int ionizationShell(TotalCrossSectionPolicy::RandomizePartialCrossSection(k,z));
G4double secondaryKinetic(FinalStatesPolicy::RandomizeEjectedElectronEnergy(k,ionizationShell));
G4double bindingEnergy(FinalStatesPolicy::EnergyConstant(ionizationShell));
//Direction of the secondary electron
G4double cosTheta = 0.;
G4double phi = 0.;
FinalStatesPolicy::RandomizeEjectedElectronDirection(k,secondaryKinetic, cosTheta, phi);
G4double sinTheta = std::sqrt(1.-cosTheta*cosTheta);
G4double dirx = sinTheta*std::cos(phi),diry = sinTheta*std::sin(phi),dirz = cosTheta;
G4ThreeVector DeltaDirection(dirx,diry,dirz);
DeltaDirection.rotateUz(primaryDirection);
G4double DeltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic +
2.*electron_mass_c2 ));
//Primary Particle Direction
G4double finalPx = TotalMomentum*primaryDirection.x()
- DeltaTotalMomentum*DeltaDirection.x();
G4double finalPy = TotalMomentum*primaryDirection.y()
- DeltaTotalMomentum*DeltaDirection.y();
G4double finalPz = TotalMomentum*primaryDirection.z()
- DeltaTotalMomentum*DeltaDirection.z();
G4double finalMomentum =
std::sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz);
finalPx /= finalMomentum;
finalPy /= finalMomentum;
finalPz /= finalMomentum;
this->aParticleChange.ProposeMomentumDirection( finalPx,finalPy,finalPz );
this->aParticleChange.ProposeEnergy(k-bindingEnergy-secondaryKinetic);
this->aParticleChange.ProposeLocalEnergyDeposit(bindingEnergy);
this->aParticleChange.SetNumberOfSecondaries(1);
G4DynamicParticle* aElectron = new G4DynamicParticle(G4Electron::Electron(),DeltaDirection,secondaryKinetic);
this->aParticleChange.AddSecondary(aElectron);
return G4VDNAProcessInWater<TotalCrossSectionPolicy, FinalStatesPolicy>::PostStepDoIt(aTrack, aStep);
}
#endif /* G4DNAIONIZATIONINWATER_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:34:47 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH
#define G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// - [protected] const G4double slaterEffectiveCharge[3]
// - [protected] const G4double sCoefficient[3]
// - [protected] const G4double kineticEnergyCorrection;
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
class G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy() {}
~G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z) const;
G4int RandomizePartialCrossSection(G4double k, G4int z) const;
G4double EnergyConstant(G4int excitationLevelIndex) const;
void BuildTotalCrossSection(void) const {}
private:
G4double PartialCrossSection(G4double t, G4int z, G4int excitationLevelIndex) const;
G4double S_1s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
G4double S_2s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
G4double S_2p(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
G4double R(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const;
// Hides default constructor and assignment operator as private
G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy(const G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & copy);
G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & operator=(const G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & right);
};
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc"
#endif /* G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH */
@@ -1,185 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc,v 1.2 2006/06/29 19:34:49 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int z ) const
{
if (k < EnergyLimitsPolicy::lowEnergyLimit)
{
if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit)
return 0;
k=EnergyLimitsPolicy::lowEnergyLimit;
}
else if (k > EnergyLimitsPolicy::highEnergyLimit)
{
if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit)
return 0;
k=EnergyLimitsPolicy::highEnergyLimit;
}
G4int i(5);
G4double totalCrossSection(0.);
while (i>0)
{
i--;
totalCrossSection+=PartialCrossSection(k, z, i);
}
return totalCrossSection;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4int G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: RandomizePartialCrossSection(G4double k, G4int z) const
{
G4int i(5);
G4double values[5];
G4double value(0);
while (i>0)
{
i--;
values[i]=PartialCrossSection(k, z, i);
value+=values[i];
}
value*=G4UniformRand();
i=5;
while (i>0)
{
i--;
if (values[i]>value)
return i;
value-=values[i];
}
return 0;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: EnergyConstant(G4int excitationLevelIndex) const
{
const G4double ej[]={8.17*eV, 10.13*eV, 11.31*eV, 12.91*eV, 14.50*eV};
return ej[excitationLevelIndex];
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: PartialCrossSection(G4double t, G4int z, G4int excitationLevelIndex) const
{
// ( ( z * aj ) ^ omegaj ) * ( t - ej ) ^ nu
// sigma(t) = zEff^2 * sigma0 * --------------------------------------------
// jj ^ ( omegaj + nu ) + t ^ ( omegaj + nu )
//
// where t is the kinetic energy corrected by Helium mass over proton mass for Helium ions
//
// zEff is:
// 1 for protons
// 2 for alpha++
// and 2 - c1 S_1s - c2 S_2s - c3 S_2p for alpha+ and He
//
// Dingfelder et al., RPC 59 p. 266 (2000) from Miller and Green (1973)
const G4double sigma0(1.E+8 * barn);
const G4double nu(1.);
const G4double aj[]={876.*eV, 2084.*eV, 1373.*eV, 692.*eV, 900.*eV};
const G4double jj[]={19820.*eV, 23490.*eV, 27770.*eV, 30830.*eV, 33080.*eV};
const G4double omegaj[]={0.85, 0.88, 0.88, 0.78, 0.78};
G4double tCorrected;
tCorrected=t*IncomingParticlePolicy::kineticEnergyCorrection;
G4double numerator;
numerator=std::pow(z*aj[excitationLevelIndex], omegaj[excitationLevelIndex]) * std::pow(tCorrected - EnergyConstant(excitationLevelIndex), nu);
G4double power;
power=omegaj[excitationLevelIndex]+nu;
G4double denominator;
denominator=std::pow(jj[excitationLevelIndex], power) + std::pow(tCorrected, power);
G4ParticleDefinition const * particle(IncomingParticlePolicy::IncomingParticleDefinition());
G4double zEff=particle->GetPDGCharge()/eplus+particle->GetLeptonNumber();
zEff-=( IncomingParticlePolicy::sCoefficient[0]*S_1s(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[0], 1.) +
IncomingParticlePolicy::sCoefficient[1]*S_2s(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[1], 2.) +
IncomingParticlePolicy::sCoefficient[2]*S_2p(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[2], 2.) );
return sigma0 * zEff * zEff * numerator / denominator;
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: S_1s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// 1 - e^(-2r) * ( 1 + 2 r + 2 r^2)
G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber));
return 1.-std::exp(-2*r) * ( ( 2. * r + 2. ) * r + 1. );
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: S_2s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 2 r^4)
G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber));
return 1.-std::exp(-2*r) * ( ( ( 2. * r * r + 2. ) * r + 2. ) * r + 1. );
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: S_2p(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 4/3 r^3 + 2/3 r^4)
G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber));
return 1.-std::exp(-2*r) * ( ( ( ( 2./3. * r + 4./3. ) * r + 2. ) * r + 2. ) * r + 1. );
}
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<IncomingParticlePolicy, EnergyLimitsPolicy> :: R(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const
{
// tElectron = m_electron / m_alpha * t
G4double tElectron = 0.511/3728 * t;
return 2.*tElectron*slaterEffectiveCharge/(energyTransferred*shellNumber);
}
#endif /* G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH */
@@ -0,0 +1,106 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProcess.hh,v 1.5 2007/11/09 16:20:04 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@ge.infn.it)
//
// History:
// -----------
// 29 Sep 2007 MGP First (incomplete) implementation
//
// -------------------------------------------------------------------
// Class description:
// Host class for DNA physics policies
// Further documentation available in PAPER REF. TO BE ADDED
// -------------------------------------------------------------------
#ifndef G4DNAPROCESS_HH
#define G4DNAPROCESS_HH 1
#include "globals.hh"
#include "G4VDiscreteProcess.hh"
#include "G4Track.hh"
#include "G4Step.hh"
#include "G4ParticleDefinition.hh"
#include "G4VParticleChange.hh"
#include "G4DynamicParticle.hh"
#include "G4ThreeVector.hh"
#include "G4FinalStateProduct.hh"
#include <vector>
template < class TCrossSection, class TFinalState>
class G4DNAProcess : public G4VDiscreteProcess {
public:
// ---- MGP ---- Note: process name to be replaced with a better identifying mechanism
G4DNAProcess(const G4String& processName = "DNAProcess"): G4VDiscreteProcess(processName) { /* nop */; }
~G4DNAProcess() { /* nop */; }
// ---- MGP ---- Dummy initially: process is always applicable
virtual G4bool IsApplicable(const G4ParticleDefinition&) { return true; }
// ---- MGP ---- Dummy initially: no PhysicsTable (usefulness to be verified)
virtual void BuildPhysicsTable(const G4ParticleDefinition& /* particle */) { /* nop */; }
// Implemented in terms of TFinalState
virtual G4VParticleChange* PostStepDoIt(const G4Track& track, const G4Step& step);
// For testing purpose only
G4double DumpMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition)
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
protected:
// Implemented in terms of TCrossSection
virtual G4double GetMeanFreePath(const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
private:
// Hide copy constructor and assignment operator as private
G4DNAProcess& operator=(const G4DNAProcess& right);
G4DNAProcess(const G4DNAProcess& );
// Policy classes
TCrossSection crossSection;
TFinalState finalState;
};
#include "G4DNAProcess.icc"
#endif
@@ -0,0 +1,170 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProcess.icc,v 1.11 2007/12/10 16:31:19 gunter Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// Reference: TNS Geant4-DNA paper
//
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
template <class TCrossSection,class TFinalState>
G4double G4DNAProcess<TCrossSection,TFinalState>::GetMeanFreePath(const G4Track& track,
G4double /* previousStepSize */,
G4ForceCondition* /* condition */)
{
G4double meanFreePath = DBL_MAX;
// Assume the interacting medium to be water; one of the elements must be oxygen
G4Material* material(track.GetMaterial());
size_t i = material->GetNumberOfElements();
while (i>0)
{
i--;
const G4Element* element(material->GetElement(i));
if (element->GetZ() == 8.)
{
// Number of oxygen atoms per volume = number of water molecules per volume
G4double density = material->GetAtomicNumDensityVector()[i];
// G4cout << "density = " << density << G4endl;
if (density > 0.)
{
G4double cross = crossSection.CrossSection(track);
if (cross > 0.0) meanFreePath = 1. / (density*cross);
if (meanFreePath == 0.) meanFreePath = DBL_MIN;
return meanFreePath;
}
}
} // end while
// If it ends up here, it means that the material is not water
G4Exception("G4DNAProcess::GetMeanFreePath - material is not water");
// One does not really need a return statement here
return DBL_MAX;
}
template <class TCrossSection,class TFinalState>
G4VParticleChange* G4DNAProcess<TCrossSection,TFinalState>::PostStepDoIt(const G4Track& track, const G4Step& step)
{
aParticleChange.Initialize(track);
// G4cout << "Track initialized" << G4endl;
// Interaction product
const G4FinalStateProduct& product = finalState.GenerateFinalState(track,step);
// Number of secondary products to be generated
G4int nSecondaries = product.NumberOfSecondaries();
aParticleChange.SetNumberOfSecondaries(nSecondaries);
// Secondaries
for (G4int l = 0; l<nSecondaries; l++ )
{
G4DynamicParticle* particle = product.GetSecondaries()[l];
if (particle != 0)
{
// aParticleChange.SetNumberOfSecondaries(nSecondaries);
aParticleChange.AddSecondary(particle);
}
}
// Take care of incident particle to be killed, if necessary; dump its energy deposit locally
G4double deposit = product.GetEnergyDeposit();
if (deposit > 0.0) aParticleChange.ProposeLocalEnergyDeposit(deposit);
if (product.PrimaryParticleIsKilled())
{
aParticleChange.ProposeTrackStatus(fStopAndKill);
aParticleChange.ProposeEnergy(0.);
aParticleChange.ProposeMomentumDirection( 0., 0., 0. );
aParticleChange.ProposeLocalEnergyDeposit(track.GetKineticEnergy() + deposit);
}
else
{
// Modify incident particle kinematics taking into account the generated products
// ---- MGP ---- Temporary: assume at most one secondary product
// Sebastien: please check if consistent with current models or generalize
// Primary particle momentum and kinetic energy
G4ThreeVector primaryMomentum = track.GetMomentum();
G4double primaryKineticEnergy = track.GetKineticEnergy();
// Secondary product momentum and energy
G4double secondaryKineticEnergy = 0.;
if (nSecondaries >0 )
{
G4DynamicParticle* secondary = product.GetSecondaries()[0];
secondaryKineticEnergy = secondary->GetKineticEnergy();
// Calculate new primary particle kinetic energy
G4double finalKineticEnergy = primaryKineticEnergy - secondaryKineticEnergy - deposit;
if (finalKineticEnergy <= 0.0)
{
// Primary particle is stopped; kill it
aParticleChange.ProposeTrackStatus(fStopAndKill);
aParticleChange.ProposeEnergy(0.);
aParticleChange.ProposeMomentumDirection( 0., 0., 0. );
}
else
{
// Calculate new primary particle momentum: difference between original primary one and secondary
G4ThreeVector secondaryMomentum = secondary->GetMomentum();
G4ThreeVector finalMomentum = primaryMomentum - secondaryMomentum;
G4ThreeVector finalDirection = finalMomentum.unit();
aParticleChange.ProposeMomentumDirection(finalDirection);
aParticleChange.ProposeEnergy(finalKineticEnergy);
}
}
else
{
// Check whether primary particle is modified
if (product.PrimaryParticleIsModified())
{
G4ThreeVector finalDirection = product.GetModifiedDirection();
aParticleChange.ProposeMomentumDirection(finalDirection);
G4double finalKineticEnergy = product.GetModifiedEnergy();
aParticleChange.ProposeEnergy(finalKineticEnergy);
}
}
}
return G4VDiscreteProcess::PostStepDoIt(track,step );
}
@@ -1,77 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonBornExcitation.hh,v 1.2 2006/06/29 19:34:51 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAProtonBornExcitation_HH
#define G4DNAProtonBornExcitation_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
#include "G4DNATotalCrossSectionFromFilePolicy.hh"
#include "G4DNABornExcitationFinalStatesPolicy.hh"
#include "G4LogLogInterpolation.hh"
class G4DNAProtonBornExcitationEnergyLimitsPolicy
{
protected:
G4DNAProtonBornExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonBornExcitationIncomingParticlePolicy
{
protected:
G4DNAProtonBornExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAProtonBornExcitationDataFilePolicy
{
public :
G4DNAProtonBornExcitationDataFilePolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
const G4double dataFileEnergyUnit;
const G4double dataFileCrossSectionUnit;
const char * const dataFileName;
};
class G4DNAProtonBornExcitation : public G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAProtonBornExcitationIncomingParticlePolicy, G4DNAProtonBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAProtonBornExcitationEnergyLimitsPolicy> >
{
public:
G4DNAProtonBornExcitation(const G4String & name = "G4DNAProtonBornExcitation") : G4DNAExcitationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAProtonBornExcitationIncomingParticlePolicy, G4DNAProtonBornExcitationDataFilePolicy, G4LogLogInterpolation>, G4DNABornExcitationFinalStatesPolicy<G4DNAProtonBornExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAProtonBornExcitation() {}
};
#endif /* G4DNAProtonBornExcitation_HH */
@@ -1,74 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeDecrease.hh,v 1.3 2006/06/29 19:34:53 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAPROTONCHARGEDECREASE_HH
#define G4DNAPROTONCHARGEDECREASE_HH 1
#include "G4DNAChargeDecreaseInWater.hh"
#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh"
#include "G4DNAProtonChargeDecreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAProtonChargeDecreaseEnergyLimitsPolicy
{
protected:
G4DNAProtonChargeDecreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonChargeDecreaseIncomingParticlePolicy
{
protected:
G4DNAProtonChargeDecreaseIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4int NumberOfPartialCrossSections(void) const;
G4double f0[1];
G4double a0[1];
G4double a1[1];
G4double b0[1];
G4double b1[1];
G4double c0[1];
G4double d0[1];
G4double x0[1];
G4double x1[1];
};
class G4DNAProtonChargeDecrease : public G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAProtonChargeDecreaseIncomingParticlePolicy, G4DNAProtonChargeDecreaseEnergyLimitsPolicy>, G4DNAProtonChargeDecreaseFinalStatesPolicy<G4DNAProtonChargeDecreaseEnergyLimitsPolicy> >
{
public:
G4DNAProtonChargeDecrease(const G4String & name = "G4DNAProtonChargeDecrease") : G4DNAChargeDecreaseInWater<G4DNADingfelderChargeChangeTotalCrossSectionPolicy<G4DNAProtonChargeDecreaseIncomingParticlePolicy, G4DNAProtonChargeDecreaseEnergyLimitsPolicy>, G4DNAProtonChargeDecreaseFinalStatesPolicy<G4DNAProtonChargeDecreaseEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAProtonChargeDecrease() {}
};
#endif /* G4DNAPROTONCHARGEDECREASE_HH */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis
// GEANT4 tag $Name: emlowen-V07-01-07
#ifndef G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH
#define G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAProtonChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAProtonChargeDecreaseFinalStatesPolicy() {}
~G4DNAProtonChargeDecreaseFinalStatesPolicy() {}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int finalStateIndex) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4int finalStateIndex) const;
G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAProtonChargeDecreaseFinalStatesPolicy(const G4DNAProtonChargeDecreaseFinalStatesPolicy & copy);
G4DNAProtonChargeDecreaseFinalStatesPolicy & operator=(const G4DNAProtonChargeDecreaseFinalStatesPolicy & right);
};
#include "G4DNAProtonChargeDecreaseFinalStatesPolicy.icc"
#endif /* G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,79 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if (energy<EnergyLimitsPolicy::lowEnergyLimit)
return true;
return false;
}
template <typename EnergyLimitsPolicy>
void G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: BuildFinalStatesData(void) const
{
}
template <typename EnergyLimitsPolicy>
G4int G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: NumberOfFinalStates(G4int /* finalStateIndex */) const
{
return 1;
}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleDefinition(G4int /* finalStateIndex */)
{
G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance());
return instance->GetIon("hydrogen");
}
template <typename EnergyLimitsPolicy>
G4double G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: WaterBindingEnergyConstant(G4int /* finalStateIndex */) const
{
// Ionization energy of first water shell
// Rad. Phys. Chem. 59 p.267 by Dingf. et al.
// W + 10.79 eV -> W+ + e-
return 10.79*eV;
}
template <typename EnergyLimitsPolicy>
G4double G4DNAProtonChargeDecreaseFinalStatesPolicy<EnergyLimitsPolicy> :: OutgoingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const
{
return 13.6*eV;
}
#endif /* G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH */
@@ -1,66 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeIncrease.hh,v 1.3 2006/06/29 19:34:59 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAPROTONCHARGEINCREASE_HH
#define G4DNAPROTONCHARGEINCREASE_HH 1
#include "G4DNAChargeIncreaseInWater.hh"
#include "G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.hh"
#include "G4DNAProtonChargeIncreaseFinalStatesPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAProtonChargeIncreaseEnergyLimitsPolicy
{
protected:
G4DNAProtonChargeIncreaseEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonChargeIncreaseIncomingParticlePolicy
{
protected:
G4DNAProtonChargeIncreaseIncomingParticlePolicy();
const G4ParticleDefinition* IncomingParticleDefinition(void) const;
};
class G4DNAProtonChargeIncrease : public G4DNAChargeIncreaseInWater<G4DNAProtonChargeIncreaseTotalCrossSectionPolicy<G4DNAProtonChargeIncreaseIncomingParticlePolicy, G4DNAProtonChargeIncreaseEnergyLimitsPolicy>, G4DNAProtonChargeIncreaseFinalStatesPolicy<G4DNAProtonChargeIncreaseEnergyLimitsPolicy> >
{
public:
G4DNAProtonChargeIncrease(const G4String& name = "G4DNAProtonChargeIncrease") :
G4DNAChargeIncreaseInWater<G4DNAProtonChargeIncreaseTotalCrossSectionPolicy<G4DNAProtonChargeIncreaseIncomingParticlePolicy, G4DNAProtonChargeIncreaseEnergyLimitsPolicy>,
G4DNAProtonChargeIncreaseFinalStatesPolicy<G4DNAProtonChargeIncreaseEnergyLimitsPolicy> >
(name) {}
virtual ~G4DNAProtonChargeIncrease() {}
};
#endif /* G4DNAPROTONCHARGEINCREASE_HH */
@@ -1,72 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeIncreaseFinalStates, 2005/09/15 14:20:26 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-08
#ifndef G4DNAProtonChargeIncreaseFinalStatesPolicy_HH
#define G4DNAProtonChargeIncreaseFinalStatesPolicy_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
// - [protected] const double zeroBelowLowEnergyLimit
// - [protected] const double highEnergyLimit
// - [protected] const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAProtonChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAProtonChargeIncreaseFinalStatesPolicy() {}
~G4DNAProtonChargeIncreaseFinalStatesPolicy() {}
// ---- MGP ---- The following line added to allow compilation with gcc 3.4.5, but it makes no sense! 25/05/2006
G4double IncomingParticleBindingEnergyConstant (G4int) const {return 0.;}
G4bool KillIncomingParticle(G4double energy) const;
void BuildFinalStatesData(void) const;
G4int NumberOfFinalStates(G4int ) const;
G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex);
G4double ElectronsBindingEnergyConstant(G4int finalStateIndex) const;
// Hides default constructor and assignment operator as private
G4DNAProtonChargeIncreaseFinalStatesPolicy(const G4DNAProtonChargeIncreaseFinalStatesPolicy & copy);
G4DNAProtonChargeIncreaseFinalStatesPolicy & operator=(const G4DNAProtonChargeIncreaseFinalStatesPolicy & right);
};
#include "G4DNAProtonChargeIncreaseFinalStatesPolicy.icc"
#endif /* G4DNAProtonChargeIncreaseFinalStatesPolicy_HH */
@@ -1,71 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: G4DNAProtonChargeIncreaseFinalStatesPolicy.icc,v 2005/09/15 14:38:34 Ziad FRANCIS
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAProtonChargeIncreaseFinalStatesPolicy_HH
#include "Randomize.hh"
#include "G4DNAGenericIonsManager.hh"
#include "G4Proton.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::KillIncomingParticle(G4double energy) const
{
if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true);
else return (false);
}
template <typename EnergyLimitsPolicy>
G4int G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::NumberOfFinalStates(G4int) const
{
return(1);
}
template <typename EnergyLimitsPolicy>
void G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::BuildFinalStatesData(void) const
{}
template <typename EnergyLimitsPolicy>
G4ParticleDefinition* G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::OutgoingParticleDefinition(G4int finalStateIndex)
{
G4double dummy;
dummy = finalStateIndex; //Just a dummy variable
return (G4Proton::Proton());
}
template <typename EnergyLimitsPolicy>
G4double G4DNAProtonChargeIncreaseFinalStatesPolicy<EnergyLimitsPolicy>::ElectronsBindingEnergyConstant(G4int finalStateIndex) const
{
if(finalStateIndex==1)return(13.6*eV);
else {G4cout<<"Warning in ProtonChargeIncreaseProcess not a permitted finalStateIndex Value !"<<G4endl;
return(0.);}
}
#endif /* G4DNAProtonChargeIncreaseTotalCrossSectionPolicy_HH */
@@ -1,63 +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: G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.hh,v 1.4 2006/06/29 19:35:05 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH
#define G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// ---- MGP ---- WARNING: added dummy implementation to allow compilation with gcc 3.4.5 (25/05/2006)
// 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 G4DNAProtonChargeIncreaseTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNAProtonChargeIncreaseTotalCrossSectionPolicy() {}
~G4DNAProtonChargeIncreaseTotalCrossSectionPolicy() {}
G4double TotalCrossSection(G4double k, G4int z) const;
void BuildTotalCrossSection(void) const {}
G4int RandomizePartialCrossSection(G4double, G4int) {return 0;}
// Hides default constructor and assignment operator as private
G4DNAProtonChargeIncreaseTotalCrossSectionPolicy(const G4DNAProtonChargeIncreaseTotalCrossSectionPolicy & copy);
G4DNAProtonChargeIncreaseTotalCrossSectionPolicy & operator=(const G4DNAProtonChargeIncreaseTotalCrossSectionPolicy & right);
};
#include "G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.icc"
#endif /* G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */
@@ -1,83 +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: G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.icc,v 1.4 2006/06/29 19:35:07 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename EnergyLimitsPolicy>
G4double G4DNAProtonChargeIncreaseTotalCrossSectionPolicy<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 dummy;//Only a dummy
dummy = z;
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;
}
#endif /* G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_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: G4DNAProtonExcitation.hh,v 1.2 2006/06/29 19:35:09 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAPROTONEXCITATION_HH
#define G4DNAPROTONEXCITATION_HH 1
#include "G4DNAExcitationInWater.hh"
#include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAProtonExcitationEnergyLimitsPolicy
{
protected:
G4DNAProtonExcitationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonExcitationIncomingParticlePolicy
{
protected:
G4DNAProtonExcitationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
const G4double kineticEnergyCorrection;
};
class G4DNAProtonExcitation : public G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAProtonExcitationIncomingParticlePolicy, G4DNAProtonExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAProtonExcitationEnergyLimitsPolicy> >
{
public:
G4DNAProtonExcitation(const G4String & name = "G4DNAProtonExcitation") : G4DNAExcitationInWater<G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy<G4DNAProtonExcitationIncomingParticlePolicy, G4DNAProtonExcitationEnergyLimitsPolicy>, G4DNAStopAndKillBelowEnergyLimitPolicy<G4DNAProtonExcitationEnergyLimitsPolicy> > (name) {}
virtual ~G4DNAProtonExcitation() {}
};
#endif /* G4DNAPROTONEXCITATION_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: G4DNAProtonRuddIonization.hh,v 1.4 2006/06/29 19:35:11 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNAPROTONRUDDIONIZATION_HH
#define G4DNAPROTONRUDDIONIZATION_HH 1
#include "G4DNAIonizationInWater.hh"
#include "G4DNATotalCrossSectionFromFilePolicy.hh"
#include "G4DNARuddIonizationFinalStatesPolicy.hh"
#include "G4LogLogInterpolation.hh"
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh"
class G4DNAProtonRuddIonizationEnergyLimitsPolicy
{
protected:
G4DNAProtonRuddIonizationEnergyLimitsPolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
};
class G4DNAProtonRuddIonizationIncomingParticlePolicy
{
protected:
G4DNAProtonRuddIonizationIncomingParticlePolicy();
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
};
class G4DNAProtonRuddDataFilePolicy
{
public :
G4DNAProtonRuddDataFilePolicy();
const G4double lowEnergyLimit;
const G4bool zeroBelowLowEnergyLimit;
const G4double highEnergyLimit;
const G4bool zeroAboveHighEnergyLimit;
const G4double dataFileEnergyUnit;
const G4double dataFileCrossSectionUnit;
const char * const dataFileName;
};
class G4DNAProtonRuddIonization : public G4DNAIonizationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAProtonRuddIonizationIncomingParticlePolicy, G4DNAProtonRuddDataFilePolicy, G4LogLogInterpolation>, G4DNARuddIonizationFinalStatesPolicy<G4DNAProtonRuddIonizationEnergyLimitsPolicy, G4DNAProtonRuddIonizationIncomingParticlePolicy> >
{
public:
G4DNAProtonRuddIonization(const G4String & name = "G4DNAProtonRuddIonization") : G4DNAIonizationInWater<G4DNATotalCrossSectionFromFilePolicy<G4DNAProtonRuddIonizationIncomingParticlePolicy, G4DNAProtonRuddDataFilePolicy, G4LogLogInterpolation>, G4DNARuddIonizationFinalStatesPolicy<G4DNAProtonRuddIonizationEnergyLimitsPolicy, G4DNAProtonRuddIonizationIncomingParticlePolicy> > (name) {}
virtual ~G4DNAProtonRuddIonization() {}
};
#endif /* G4DNAPROTONRUDDIONIZATION_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: G4DNARuddIonizationFinalStatesPolicy, 2005/09/19 19:06:45 Ziad FRANCIS
// GEANT4 tag $Name: emlowen-V07-01-10
#ifndef G4DNARuddIonizationFinalStatesPolicy_HH
#define G4DNARuddIonizationFinalStatesPolicy_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, typename IncomingParticlePolicy>
class G4DNARuddIonizationFinalStatesPolicy : public EnergyLimitsPolicy, public IncomingParticlePolicy
{
protected:
G4DNARuddIonizationFinalStatesPolicy() {}
~G4DNARuddIonizationFinalStatesPolicy() {}
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;
G4double CorrectionFactor(G4double k) const;
// Hides default constructor and assignment operator as private
G4DNARuddIonizationFinalStatesPolicy(const G4DNARuddIonizationFinalStatesPolicy & copy);
G4DNARuddIonizationFinalStatesPolicy & operator=(const G4DNARuddIonizationFinalStatesPolicy & right);
};
#include "G4DNARuddIonizationFinalStatesPolicy.icc"
#endif /* G4DNARuddIonizationFinalStatesPolicy_HH */
@@ -1,151 +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: G4DNARuddIonizationFinalStatesPolicy.icc,v 2005/09/19 19:08:54 Ziad FRANCIS
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNARuddIonizationFinalStatesPolicy_HH
#include "Randomize.hh"
template <typename EnergyLimitsPolicy, typename IncomingParticlePolicy>
G4bool G4DNARuddIonizationFinalStatesPolicy<EnergyLimitsPolicy, IncomingParticlePolicy> :: KillIncomingParticle(G4double energy) const
{
if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true);
else return (false);
}
template <typename EnergyLimitsPolicy, typename IncomingParticlePolicy>
void G4DNARuddIonizationFinalStatesPolicy<EnergyLimitsPolicy, IncomingParticlePolicy> ::BuildFinalStatesData(void) const
{}
template <typename EnergyLimitsPolicy, typename IncomingParticlePolicy>
G4double G4DNARuddIonizationFinalStatesPolicy<EnergyLimitsPolicy, IncomingParticlePolicy> ::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, typename IncomingParticlePolicy>
G4double G4DNARuddIonizationFinalStatesPolicy<EnergyLimitsPolicy, IncomingParticlePolicy> ::CorrectionFactor(G4double k) const
{
if(IncomingParticlePolicy::IncomingParticleDefinition()->GetParticleName() == "proton") return(1);
else if(IncomingParticlePolicy::IncomingParticleDefinition()->GetParticleName() == "hydrogen") {
G4double value = (std::log(k/eV)-4.2)/0.5;
return((0.8/(1+std::exp(value))) + 0.9);
}
else return(1.);
}
template <typename EnergyLimitsPolicy, typename IncomingParticlePolicy>
void G4DNARuddIonizationFinalStatesPolicy<EnergyLimitsPolicy, IncomingParticlePolicy> ::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,typename IncomingParticlePolicy>
G4double G4DNARuddIonizationFinalStatesPolicy<EnergyLimitsPolicy, IncomingParticlePolicy>::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, typename IncomingParticlePolicy>
G4double G4DNARuddIonizationFinalStatesPolicy<EnergyLimitsPolicy, IncomingParticlePolicy>::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 sigma = CorrectionFactor(k/eV) * Gj[j] * (S/EnergyConstant(ionizationLevelIndex)) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(Alpha*(w-wc)/v))) );
return(sigma);
}
#endif /* G4DNARuddIonizationTotalCrossSectionPolicy_HH */
@@ -1,59 +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: G4DNARuddIonizationTotalCrossSectionPolicy, 2005/07/22 14:33:54 francis
// GEANT4 tag $Name: emlowen-V07-01-03
#ifndef G4DNARuddIonizationTotalCrossSectionPolicy_HH
#define G4DNARuddIonizationTotalCrossSectionPolicy_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 G4DNARuddIonizationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy
{
protected:
G4DNARuddIonizationTotalCrossSectionPolicy() {}
~G4DNARuddIonizationTotalCrossSectionPolicy() {}
// Hides default constructor and assignment operator as private
G4DNARuddIonizationTotalCrossSectionPolicy(const G4DNARuddIonizationTotalCrossSectionPolicy & copy);
G4DNARuddIonizationTotalCrossSectionPolicy & operator=(const G4DNARuddIonizationTotalCrossSectionPolicy & right);
};
// #include "G4DNARuddIonizationTotalCrossSectionPolicy.icc"
#endif /* G4DNARuddIonizationTotalCrossSectionPolicy_HH */
@@ -1,63 +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: G4DNARutherfordTotalCrossSectionPolicy.hh,v 1.3 2006/06/29 19:35:19 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH
#define G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH 1
#include "globals.hh"
// EnergyLimitsPolicy must provide:
// - [public] static const double lowEnergyLimit
// - [public] static const double zeroBelowLowEnergyLimit
// - [public] static const double highEnergyLimit
// - [public] static const double zeroAboveLowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNARutherfordTotalCrossSectionPolicy
{
protected:
G4DNARutherfordTotalCrossSectionPolicy() {}
~G4DNARutherfordTotalCrossSectionPolicy() {}
const G4ParticleDefinition * IncomingParticleDefinition(void) const;
G4double TotalCrossSection(G4double k, G4int z) const;
void BuildTotalCrossSection(void) const {}
private:
G4double RutherfordTotalCrossSection(G4double k, G4int z) const;
G4double ScreeningFactor(G4double k, G4int z) const;
// Hides default constructor and assignment operator as private
G4DNARutherfordTotalCrossSectionPolicy(const G4DNARutherfordTotalCrossSectionPolicy & copy);
G4DNARutherfordTotalCrossSectionPolicy & operator=(const G4DNARutherfordTotalCrossSectionPolicy & right);
};
#include "G4DNARutherfordTotalCrossSectionPolicy.icc"
#endif /* G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH */
@@ -1,124 +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: G4DNARutherfordTotalCrossSectionPolicy.icc,v 1.2 2006/06/29 19:35:21 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH
#include "G4Electron.hh"
template <typename EnergyLimitsPolicy>
const G4ParticleDefinition *G4DNARutherfordTotalCrossSectionPolicy<EnergyLimitsPolicy> :: IncomingParticleDefinition(void) const
{
return G4Electron::Electron();
}
template <typename EnergyLimitsPolicy>
G4double G4DNARutherfordTotalCrossSectionPolicy<EnergyLimitsPolicy> :: TotalCrossSection(G4double k, G4int z) const
{
// pi * sigma_Ruth(K)
// sigma_el(K) = --------------------
// n(K) * (n(K) + 1)
//
// Where K is the electron non-relativistic kinetic energy
// Cross section per water molecule
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 n=ScreeningFactor(k,z);
return (pi * RutherfordTotalCrossSection(k, z))/(n*(n+1.));
}
template <typename EnergyLimitsPolicy>
G4double G4DNARutherfordTotalCrossSectionPolicy<EnergyLimitsPolicy> :: RutherfordTotalCrossSection(G4double k, G4int z) const
{
// e^4 / K + m_e c^2 \^2
// sigma_Ruth(K) = Z (Z+1) -------------------- | --------------------- |
// (4 pi epsilon_0)^2 \ K * (K + 2 m_e c^2) /
//
// Where K is the electron non-relativistic kinetic energy
//
// Nucl. Instr. Meth. 155 (1978) 145-156
G4double length;
length=(e_squared*(k+electron_mass_c2))/(4*pi*epsilon0*k*(k+2*electron_mass_c2));
return static_cast<G4double>(z*(z+1))*length*length;
}
template <typename EnergyLimitsPolicy>
G4double G4DNARutherfordTotalCrossSectionPolicy<EnergyLimitsPolicy> :: ScreeningFactor(G4double k, G4int z) const
{
//
// alpha_1 + beta_1 ln(K/eV) constK Z^(2/3)
// n(T) = -------------------------- -----------------
// K/(m_e c^2) 2 + K/(m_e c^2)
//
// Where K is the electron non-relativistic kinetic energy
//
// n(T) > 0 for T < ~ 400 MeV
//
// Nucl. Instr. Meth. 155 (1978) 145-156
const G4double alpha_1(1.64);
const G4double beta_1(-0.0825);
const G4double constK(1.7E-5);
G4double numerator;
numerator=(alpha_1+beta_1*std::log(k/eV))*constK*std::pow(static_cast<double>(z), 2./3.);
k/=electron_mass_c2;
G4double denominator;
denominator=k*(2+k);
return numerator/denominator;
}
#endif /* G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH */
@@ -1,56 +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: G4DNAStopAndKillBelowEnergyLimitPolicy.hh,v 1.2 2006/06/29 19:35:23 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH
#define G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH 1
#include "globals.hh"
// EnergyLimitsPolicy must provide:
// - [protected] const double lowEnergyLimit
template <typename EnergyLimitsPolicy>
class G4DNAStopAndKillBelowEnergyLimitPolicy : public EnergyLimitsPolicy
{
protected:
G4DNAStopAndKillBelowEnergyLimitPolicy() {}
~G4DNAStopAndKillBelowEnergyLimitPolicy() {}
G4bool KillIncomingParticle(G4double k) const;
void BuildFinalStatesData(void) const {}
private:
// Hides default constructor and assignment operator as private
G4DNAStopAndKillBelowEnergyLimitPolicy(const G4DNAStopAndKillBelowEnergyLimitPolicy & copy);
G4DNAStopAndKillBelowEnergyLimitPolicy & operator=(const G4DNAStopAndKillBelowEnergyLimitPolicy & right);
};
#include "G4DNAStopAndKillBelowEnergyLimitPolicy.icc"
#endif /* G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH */
@@ -1,39 +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: G4DNAStopAndKillBelowEnergyLimitPolicy.icc,v 1.2 2006/06/29 19:35:25 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH
#include "G4Electron.hh"
template <typename EnergyLimitsPolicy>
G4bool G4DNAStopAndKillBelowEnergyLimitPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double k) const
{
return (k < EnergyLimitsPolicy::lowEnergyLimit);
}
#endif /* G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH */
@@ -1,75 +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: G4DNATotalCrossSectionFromFilePolicy.hh,v 1.5 2006/06/29 19:35:27 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
#ifndef G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH
#define G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH 1
#include "G4DNACrossSectionDataSet.hh"
// IncomingParticlePolicy must provide:
// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void);
// DataFilePolicy must provide:
// - [public] static const double lowEnergyLimit
// - [public] static const double zeroBelowLowEnergyLimit
// - [public] static const double highEnergyLimit
// - [public] static const double zeroAboveLowEnergyLimit
// - [public] static const double dataFileEnergyUnit
// - [public] static const double dataFileCrossSectionUnit
// - [public] static char const * const dataFileName
// InterpolationAlgorithmPolicy must inherit from [public] G4VDataSetAlgorithm
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
class G4DNATotalCrossSectionFromFilePolicy : public IncomingParticlePolicy
{
protected:
G4DNATotalCrossSectionFromFilePolicy();
~G4DNATotalCrossSectionFromFilePolicy();
G4double TotalCrossSection(G4double k, G4int z) const;
G4int RandomizePartialCrossSection(G4double k, G4int z);
G4int NumberOfPartialCrossSections(void);
void BuildTotalCrossSection(void);
private:
void Free(void);
G4DNACrossSectionDataSet* dataset;
G4double* valuesBuffer;
DataFilePolicy dataFilePolicy;
// Hides default constructor and assignment operator as private
G4DNATotalCrossSectionFromFilePolicy(const G4DNATotalCrossSectionFromFilePolicy & copy);
G4DNATotalCrossSectionFromFilePolicy & operator=(const G4DNATotalCrossSectionFromFilePolicy & right);
};
#include "G4DNATotalCrossSectionFromFilePolicy.icc"
#endif /* G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH */
@@ -1,146 +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: G4DNATotalCrossSectionFromFilePolicy.icc,v 1.4 2006/06/29 19:35:29 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
//
#ifdef G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH
#include "G4Electron.hh"
#include "Randomize.hh"
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
G4DNATotalCrossSectionFromFilePolicy<IncomingParticlePolicy, DataFilePolicy, InterpolationAlgorithmPolicy> :: G4DNATotalCrossSectionFromFilePolicy()
:
dataset(0),
valuesBuffer(0)
{
}
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
G4DNATotalCrossSectionFromFilePolicy<IncomingParticlePolicy, DataFilePolicy, InterpolationAlgorithmPolicy> :: ~G4DNATotalCrossSectionFromFilePolicy()
{
Free();
}
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
G4double G4DNATotalCrossSectionFromFilePolicy<IncomingParticlePolicy, DataFilePolicy, InterpolationAlgorithmPolicy> :: TotalCrossSection(G4double k, G4int /* z */) const
{
if (!dataset)
{
G4Exception("G4DNATotalCrossSectionFromFilePolicy<>::TotalCrossSection: dataset not loaded");
return 0;
}
if (k < dataFilePolicy.lowEnergyLimit)
{
if (dataFilePolicy.zeroBelowLowEnergyLimit)
return 0;
k=dataFilePolicy.lowEnergyLimit;
}
else if (k > dataFilePolicy.highEnergyLimit)
{
if (dataFilePolicy.zeroAboveHighEnergyLimit)
return 0;
k=dataFilePolicy.highEnergyLimit;
}
return dataset->FindValue(k);
}
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
G4int G4DNATotalCrossSectionFromFilePolicy<IncomingParticlePolicy, DataFilePolicy, InterpolationAlgorithmPolicy> :: RandomizePartialCrossSection(G4double k, G4int /* z */)
{
if (!dataset)
{
G4Exception("G4DNATotalCrossSectionFromFilePolicy<>::RandomizePartialCrossSection: dataset not loaded");
return 0;
}
const size_t n(dataset->NumberOfComponents());
size_t i(n);
G4double value(0);
while (i>0)
{
i--;
valuesBuffer[i]=dataset->GetComponent(i)->FindValue(k);
value+=valuesBuffer[i];
}
value*=G4UniformRand();
i=n;
while (i>0)
{
i--;
if (valuesBuffer[i]>value)
return i;
value-=valuesBuffer[i];
}
return 0;
}
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
G4int G4DNATotalCrossSectionFromFilePolicy<IncomingParticlePolicy, DataFilePolicy, InterpolationAlgorithmPolicy> :: NumberOfPartialCrossSections(void)
{
if (!dataset)
{
G4Exception("G4DNATotalCrossSectionFromFilePolicy<>::NumberOfPartialCrossSections: dataset not loaded");
return 0;
}
return dataset->NumberOfComponents();
}
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
void G4DNATotalCrossSectionFromFilePolicy<IncomingParticlePolicy, DataFilePolicy, InterpolationAlgorithmPolicy> :: BuildTotalCrossSection(void)
{
Free();
dataset=new G4DNACrossSectionDataSet(new InterpolationAlgorithmPolicy, dataFilePolicy.dataFileEnergyUnit, dataFilePolicy.dataFileCrossSectionUnit);
dataset->LoadData(dataFilePolicy.dataFileName);
valuesBuffer=new G4double[dataset->NumberOfComponents()];
}
template <typename IncomingParticlePolicy, typename DataFilePolicy, typename InterpolationAlgorithmPolicy>
void G4DNATotalCrossSectionFromFilePolicy<IncomingParticlePolicy, DataFilePolicy, InterpolationAlgorithmPolicy> :: Free(void)
{
if (dataset)
delete dataset;
if (valuesBuffer)
delete[] valuesBuffer;
}
#endif /* G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH */
@@ -24,34 +24,59 @@
// ********************************************************************
//
//
// $Id: G4DNABrennerAngularDistributionPolicy.hh,v 1.2 2006/06/29 19:33:38 gunter Exp $
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4DummyFinalState.hh,v 1.2 2007/10/07 12:52:18 pia Exp $
// GEANT4 tag $Name: geant4-09-01 $
//
// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
// Phys. Med. Biol. 29 N.4 (1983) 443-447
// History:
// -----------
// Date Name Modification
// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
//
// -------------------------------------------------------------------
#ifndef G4DNABRENNERANGULARDISTRIBUTIONPOLICY_HH
#define G4DNABRENNERANGULARDISTRIBUTIONPOLICY_HH 1
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// Reference for implementation model: NIM. 155, pp. 145-156, 1978
// Further documentation available from http://www.ge.infn.it/geant4/dna
#include "globals.hh"
// -------------------------------------------------------------------
#ifndef G4DUMMYFINALSTATE_HH
#define G4DUMMYFINALSTATE_HH 1
class G4DNABrennerAngularDistributionPolicy
#include "globals.hh"
//#include "G4Track.hh"
//#include "G4Step.hh"
#include "G4FinalStateProduct.hh"
class G4Track;
class G4Step;
class G4DummyFinalState
{
protected:
G4DNABrennerAngularDistributionPolicy() {}
virtual ~G4DNABrennerAngularDistributionPolicy() {}
G4double RandomizeCosTheta(G4double k, G4int z) const;
G4bool KillIncomingParticle(G4double k) const { return (k<stopAndKillLowEnergyLimit); }
void BuildFinalStatesData(void) const {}
public:
private:
G4double CalculatePolynomial(G4double k, const G4double *vector, G4int size) const;
// Hides default constructor and assignment operator as private
G4DNABrennerAngularDistributionPolicy(const G4DNABrennerAngularDistributionPolicy & copy);
G4DNABrennerAngularDistributionPolicy & operator=(const G4DNABrennerAngularDistributionPolicy & right);
G4DummyFinalState();
~G4DummyFinalState();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
static const G4double stopAndKillLowEnergyLimit;
};
#endif /* G4DNABRENNERANGULARDISTRIBUTIONPOLICY_HH */
#endif
@@ -25,7 +25,7 @@
//
//
// $Id: G4EMDataSet.hh,v 1.7 2006/06/29 19:35:31 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,92 @@
//
// ********************************************************************
// * 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: G4FinalStateChargeDecrease.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
// 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 G4FINALSTATECHARGEDECREASE_HH
#define G4FINALSTATECHARGEDECREASE_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
//#include "G4WaterExcitationStructure.hh"
#include "G4CrossSectionChargeDecreasePartial.hh"
class G4Track;
class G4Step;
class G4FinalStateChargeDecrease
{
public:
G4FinalStateChargeDecrease();
~G4FinalStateChargeDecrease();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
G4CrossSectionChargeDecreasePartial cross;
G4int NumberOfFinalStates(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4ParticleDefinition* OutgoingParticleDefinition(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4double OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
};
#endif
@@ -0,0 +1,92 @@
//
// ********************************************************************
// * 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: G4FinalStateChargeIncrease.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
// 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 G4FINALSTATECHARGEIncrease_HH
#define G4FINALSTATECHARGEIncrease_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
#include "G4CrossSectionChargeIncreasePartial.hh"
class G4Track;
class G4Step;
class G4FinalStateChargeIncrease
{
public:
G4FinalStateChargeIncrease();
~G4FinalStateChargeIncrease();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
G4CrossSectionChargeIncreasePartial cross;
G4int NumberOfFinalStates(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4ParticleDefinition* OutgoingParticleDefinition(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4double WaterBindingEnergyConstant(G4ParticleDefinition * aParticleDefinition, G4int finalStateIndex);
G4double OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
};
#endif
@@ -0,0 +1,92 @@
//
// ********************************************************************
// * 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: G4FinalStateElasticBrennerZaider.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
//
// -------------------------------------------------------------------
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// 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 G4FINALSTATEELASTICBRENNERZAIDER_HH
#define G4FINALSTATEELASTICBRENNERZAIDER_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
class G4Track;
class G4Step;
class G4FinalStateElasticBrennerZaider
{
public:
G4FinalStateElasticBrennerZaider();
~G4FinalStateElasticBrennerZaider();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
std::vector<G4double> betaCoeff;
std::vector<G4double> deltaCoeff;
std::vector<G4double> gamma035_10Coeff;
std::vector<G4double> gamma10_100Coeff;
std::vector<G4double> gamma100_200Coeff;
G4double RandomizeCosTheta(G4double k);
G4double CalculatePolynomial(G4double k, std::vector<G4double>& vec);
};
#endif
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * 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: G4FinalStateElasticScreenedRutherford.hh,v 1.2 2007/10/12 23:02:55 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
// 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 G4FINALSTATEELASTICSCREENEDRUTHERFORD_HH
#define G4FINALSTATEELASTICSCREENEDRUTHERFORD_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
class G4Track;
class G4Step;
class G4FinalStateElasticScreenedRutherford
{
public:
G4FinalStateElasticScreenedRutherford();
~G4FinalStateElasticScreenedRutherford();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
G4double RandomizeCosTheta(G4double k, G4int z) const;
G4double ScreeningFactor(G4double k, G4int z) const;
};
#endif
@@ -0,0 +1,88 @@
//
// ********************************************************************
// * 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: G4FinalStateExcitationBorn.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
// 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 G4FINALSTATEEXCITATIONBORN_HH
#define G4FINALSTATEEXCITATIONBORN_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
#include "G4WaterExcitationStructure.hh"
#include "G4CrossSectionExcitationBornPartial.hh"
class G4Track;
class G4Step;
class G4FinalStateExcitationBorn
{
public:
G4FinalStateExcitationBorn();
~G4FinalStateExcitationBorn();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
G4WaterExcitationStructure waterStructure;
G4CrossSectionExcitationBornPartial cross;
};
#endif
@@ -0,0 +1,88 @@
//
// ********************************************************************
// * 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: G4FinalStateExcitationEmfietzoglou.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
// 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 G4FINALSTATEEXCITATIONEMFIETZOGLOU_HH
#define G4FINALSTATEEXCITATIONEMFIETZOGLOU_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
#include "G4WaterExcitationStructure.hh"
#include "G4CrossSectionExcitationEmfietzoglouPartial.hh"
class G4Track;
class G4Step;
class G4FinalStateExcitationEmfietzoglou
{
public:
G4FinalStateExcitationEmfietzoglou();
~G4FinalStateExcitationEmfietzoglou();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
G4WaterExcitationStructure waterStructure;
G4CrossSectionExcitationEmfietzoglouPartial cross;
};
#endif
@@ -0,0 +1,88 @@
//
// ********************************************************************
// * 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: G4FinalStateExcitationMillerGreen.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
// 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 G4FINALSTATEEXCITATIONMILLERGREEN_HH
#define G4FINALSTATEEXCITATIONMILLERGREEN_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
#include "G4WaterExcitationStructure.hh"
#include "G4CrossSectionExcitationMillerGreenPartial.hh"
class G4Track;
class G4Step;
class G4FinalStateExcitationMillerGreen
{
public:
G4FinalStateExcitationMillerGreen();
~G4FinalStateExcitationMillerGreen();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
G4WaterExcitationStructure waterStructure;
G4CrossSectionExcitationMillerGreenPartial cross;
};
#endif
@@ -0,0 +1,129 @@
//
// ********************************************************************
// * 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: G4FinalStateIonisationBorn.hh,v 1.3 2007/11/13 15:20:19 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
// 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 G4FINALSTATEIONISATIONBORN_HH
#define G4FINALSTATEIONISATIONBORN_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
#include "G4WaterIonisationStructure.hh"
#include "G4CrossSectionIonisationBornPartial.hh"
class G4Track;
class G4Step;
class G4FinalStateIonisationBorn
{
public:
G4FinalStateIonisationBorn();
~G4FinalStateIonisationBorn();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4FinalStateProduct product;
G4WaterIonisationStructure waterStructure;
G4CrossSectionIonisationBornPartial cross;
G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
G4double QuadInterpolator(G4double e11,
G4double e12,
G4double e21,
G4double e22,
G4double x11,
G4double x12,
G4double x21,
G4double x22,
G4double t1,
G4double t2,
G4double t,
G4double e);
typedef std::map<double, std::map<double, double> > TriDimensionMap;
TriDimensionMap eDiffCrossSectionData[6];
TriDimensionMap pDiffCrossSectionData[6];
// TriDimensionMap eDiffCrossSectionData;
// TriDimensionMap pDiffCrossSectionData;
std::vector<double> eTdummyVec;
std::vector<double> pTdummyVec;
typedef std::map<double, std::vector<double> > VecMap;
VecMap eVecm;
VecMap pVecm;
// std::ifstream eDiffCrossSection;
// std::ifstream pDiffCrossSection;
};
#endif
@@ -0,0 +1,133 @@
//
// ********************************************************************
// * 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: G4FinalStateIonisationRudd.hh,v 1.2 2007/11/09 16:30:56 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
// 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 G4FINALSTATEIONISATIONRUDD_HH
#define G4FINALSTATEIONISATIONRUDD_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
#include "G4WaterIonisationStructure.hh"
#include "G4CrossSectionIonisationRuddPartial.hh"
class G4Track;
class G4Step;
class G4ParticleDefinition;
class G4FinalStateIonisationRudd
{
public:
G4FinalStateIonisationRudd();
~G4FinalStateIonisationRudd();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimitDefault;
G4double highEnergyLimitDefault;
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4FinalStateProduct product;
G4WaterIonisationStructure waterStructure;
G4CrossSectionIonisationRuddPartial cross;
G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition* particleDefinition,
G4double incomingParticleEnergy,
G4int shell);
void RandomizeEjectedElectronDirection(G4ParticleDefinition* particleDefinition,
G4double incomingParticleEnergy,
G4double outgoingParticleEnergy,
G4double cosTheta,
G4double phi);
G4double DifferentialCrossSection(G4ParticleDefinition* particleDefinition,
G4double k,
G4double energyTransfer,
G4int shell);
G4double CorrectionFactor(G4ParticleDefinition* particleDefinition, G4double k);
G4double S_1s(G4double t,
G4double energyTransferred,
G4double slaterEffectiveChg,
G4double shellNumber);
G4double S_2s(G4double t,
G4double energyTransferred,
G4double slaterEffectiveChg,
G4double shellNumber);
G4double S_2p(G4double t,
G4double energyTransferred,
G4double slaterEffectiveChg,
G4double shellNumber);
G4double R(G4double t,
G4double energyTransferred,
G4double slaterEffectiveChg,
G4double shellNumber) ;
G4double slaterEffectiveCharge[3];
G4double sCoefficient[3];
};
#endif
@@ -24,33 +24,60 @@
// ********************************************************************
//
//
// $Id: G4DNABornExcitationFinalStatesPolicy.icc,v 2005/09/19 13:55:54 Ziad FRANCIS
// GEANT4 tag $Name: geant4-09-00 $
// $Id: G4FinalStateKill.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 G4DNABornExcitationFinalStatesPolicy_HH
#include "Randomize.hh"
// Class description:
// Geant4-DNA Cross total cross section for electron elastic scattering in water
// Reference: TNS Geant4-DNA paper
// 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 G4DNABornExcitationFinalStatesPolicy<EnergyLimitsPolicy> :: KillIncomingParticle(G4double energy) const
{
if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true);
else return (false);
}
template <typename EnergyLimitsPolicy>
void G4DNABornExcitationFinalStatesPolicy<EnergyLimitsPolicy> ::BuildFinalStatesData(void) const
{}
template <typename EnergyLimitsPolicy>
G4double G4DNABornExcitationFinalStatesPolicy<EnergyLimitsPolicy>::EnergyConstant(G4int excitationLevelIndex) const
{
const G4double excitationEnergy[]={8.22*eV, 10.00*eV, 11.24*eV, 12.61*eV, 13.77*eV};
return(excitationEnergy[excitationLevelIndex]);
}
#ifndef G4FINALSTATEKILL_HH
#define G4FINALSTATEKILL_HH 1
#include "globals.hh"
#include "G4FinalStateProduct.hh"
class G4Track;
class G4Step;
class G4FinalStateKill
{
public:
G4FinalStateKill();
~G4FinalStateKill();
const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step);
private:
// Copy constructor and assignment operator to be added here
G4String name;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4FinalStateProduct product;
};
#endif /* G4DNABornExcitationTotalCrossSectionPolicy_HH */
#endif
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * 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: G4FinalStateProduct.hh,v 1.4 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
//
// -------------------------------------------------------------------
// Class description:
// Final state product
// Reference: TNS Geant4-DNA paper
// Further documentation available from http://www.ge.infn.it/geant4/dna
// -------------------------------------------------------------------
#ifndef G4FINALSTATEPRODUCT_HH
#define G4FINALSTATEPRODUCT_HH 1
#include "globals.hh"
#include "G4Track.hh"
#include "G4Step.hh"
#include <vector>
class G4DynamicParticle;
class G4FinalStateProduct
{
public:
G4FinalStateProduct();
~G4FinalStateProduct();
void Clear();
void AddSecondary(G4DynamicParticle* particle);
void AddEnergyDeposit(G4double energy);
void ModifyPrimaryParticle(G4double dirX, G4double dirY, G4double dirZ, G4double energy);
void ModifyPrimaryParticle(const G4ThreeVector& direction, G4double energy);
void KillPrimaryParticle();
G4bool PrimaryParticleIsKilled() const { return killStatus; }
G4bool PrimaryParticleIsModified() const { return isModified; }
G4int NumberOfSecondaries() const;
G4double GetEnergyDeposit() const { return localEnergyDeposit; }
G4double GetModifiedEnergy() const { return modifiedEnergy; }
const G4ThreeVector& GetModifiedDirection() const { return modifiedDirection; }
const std::vector<G4DynamicParticle*>& GetSecondaries() const;
// protected:
// Copy constructor and assignment operator to be added here
private:
G4bool killStatus;
G4bool isModified;
G4double localEnergyDeposit;
G4double modifiedEnergy;
std::vector<G4DynamicParticle*> secondaries;
G4ThreeVector modifiedDirection;
};
#endif

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