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