Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -25,7 +25,6 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
@@ -119,7 +118,7 @@ private:
|
||||
G4AtomicTransitionManager& operator=(const G4AtomicTransitionManager& right);
|
||||
G4AtomicTransitionManager(const G4AtomicTransitionManager&);
|
||||
|
||||
static G4AtomicTransitionManager* instance;
|
||||
static G4ThreadLocal G4AtomicTransitionManager* instance;
|
||||
|
||||
// the first element of the map is the atomic number Z.
|
||||
// the second element is a vector of G4AtomicShell*.
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AugerData.hh
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4BoldyshevTripletModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
// GEANT4 tag $Name: geant4-09-03-patch-01 $
|
||||
//
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4BremsstrahlungParameters.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// V. Ivanchenko (Vladimir.Ivantchenko@cern.ch)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CompositeEMDataSet.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CrossSectionDataSet.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Riccardo Capra <capra@ge.infn.it>
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CrossSectionHandler.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4DopplerProfile.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4EMDataSet.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4FluoTransition.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Generator2BN.hh 68038 2013-03-13 14:16:11Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Generator2BS.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -109,8 +109,10 @@ class G4IonDEDXScalingICRU73 : public G4VIonDEDXScalingAlgorithm {
|
||||
G4int minAtomicNumber;
|
||||
G4int maxAtomicNumber;
|
||||
|
||||
G4bool referencePrepared;
|
||||
|
||||
// Some properties of reference particle (Fe) are stored for faster access
|
||||
G4ParticleDefinition* referenceFe;
|
||||
///////////////////////////G4ParticleDefinition* referenceFe;
|
||||
G4int atomicNumberRefFe;
|
||||
G4int massNumberRefFe;
|
||||
G4double atomicNumberRefPow23Fe;
|
||||
@@ -118,7 +120,7 @@ class G4IonDEDXScalingICRU73 : public G4VIonDEDXScalingAlgorithm {
|
||||
G4double massRefFe;
|
||||
|
||||
// Some properties of reference particle (Ar) are stored for faster access
|
||||
G4ParticleDefinition* referenceAr;
|
||||
///////////////////////////G4ParticleDefinition* referenceAr;
|
||||
G4int atomicNumberRefAr;
|
||||
G4int massNumberRefAr;
|
||||
G4double atomicNumberRefPow23Ar;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4IonParametrisedLossModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// ===========================================================================
|
||||
// GEANT4 class header file
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4IonParametrisedLossModel.icc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// ===========================================================================
|
||||
// GEANT4 class
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LinInterpolation.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
+59
-70
@@ -23,103 +23,92 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
// on base of G4LowEnergyBremsstrahlung developed by A.Forti and V.Ivanchenko
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 03 Mar 2009 L. Pandola 1st implementation. Migration from EM process
|
||||
// to EM model. Physics is unchanged.
|
||||
// $Id: G4LivermoreBremsstrahlungModel.hh 74822 2013-10-22 14:42:13Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, e- bremsstrahlung
|
||||
// with Livermore Model
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4LivermoreBremsstrahlungModel
|
||||
//
|
||||
// Author: Andreas Schaelicke & Vladimir Ivantchenko
|
||||
//
|
||||
// Creation date: 04.10.2011
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Implementation of the bremssrahlung energy spectrum using
|
||||
// 1. S.M. Seltzer and M.J. Berger Nucl. Instr. Meth. B12 (1985) 95
|
||||
// 2. S.M. Seltzer and M.J. Berger Atomic data and Nuclear Data
|
||||
// Tables 35 (1986) 345
|
||||
// Cross section computation in the base class G4eBremsstrahlungRelModel
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4LIVERMOREBREMSSTRAHLUNGMODEL_HH
|
||||
#define G4LIVERMOREBREMSSTRAHLUNGMODEL_HH 1
|
||||
#ifndef G4LivermoreBremsstrahlungModel_h
|
||||
#define G4LivermoreBremsstrahlungModel_h 1
|
||||
|
||||
#include "G4eBremsstrahlungRelModel.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForLoss.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
//class G4VBremAngularDistribution;
|
||||
class G4BremsstrahlungCrossSectionHandler;
|
||||
class G4VEnergySpectrum;
|
||||
class G4Physics2DVector;
|
||||
|
||||
class G4LivermoreBremsstrahlungModel : public G4VEmModel
|
||||
class G4LivermoreBremsstrahlungModel : public G4eBremsstrahlungRelModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LivermoreBremsstrahlungModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName = "LowEnBrem");
|
||||
|
||||
|
||||
G4LivermoreBremsstrahlungModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "LowEnBrem");
|
||||
|
||||
virtual ~G4LivermoreBremsstrahlungModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void InitialiseForElement(const G4ParticleDefinition*, G4int Z);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double cutEnergy,
|
||||
G4double maxEnergy);
|
||||
|
||||
virtual G4double ComputeDEDXPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy);
|
||||
|
||||
// min cut in kinetic energy allowed by the model
|
||||
virtual G4double MinEnergyCut(const G4ParticleDefinition*,
|
||||
const G4MaterialCutsCouple*);
|
||||
|
||||
void SetVerboseLevel(G4int vl) {verboseLevel = vl;};
|
||||
/*
|
||||
void SetAngularGenerator(G4VBremAngularDistribution* distribution);
|
||||
void SetAngularGenerator(const G4String& name);
|
||||
*/
|
||||
inline void SetBicubicInterpolationFlag(G4bool);
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForLoss* fParticleChange;
|
||||
|
||||
virtual G4double ComputeDXSectionPerAtom(G4double gammaEnergy);
|
||||
|
||||
virtual G4String DirectoryPath() const;
|
||||
|
||||
private:
|
||||
|
||||
G4LivermoreBremsstrahlungModel & operator=(const G4LivermoreBremsstrahlungModel &right);
|
||||
G4LivermoreBremsstrahlungModel(const G4LivermoreBremsstrahlungModel&);
|
||||
|
||||
void ReadData(G4int Z, const char* path = 0);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
G4int fNBinEnergyLoss;
|
||||
// hide assignment operator
|
||||
G4LivermoreBremsstrahlungModel & operator=(const G4LivermoreBremsstrahlungModel &right);
|
||||
G4LivermoreBremsstrahlungModel(const G4LivermoreBremsstrahlungModel&);
|
||||
|
||||
G4bool isInitialised;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
G4BremsstrahlungCrossSectionHandler* crossSectionHandler;
|
||||
G4VEnergySpectrum* energySpectrum;
|
||||
G4DataVector energyBins;
|
||||
|
||||
//G4VBremAngularDistribution* angularDistribution;
|
||||
// G4VBremAngularDistribution* TsaiAngularDistribution;
|
||||
//G4String generatorName;
|
||||
static G4Physics2DVector* dataSB[101];
|
||||
static G4double ylimit[101];
|
||||
static G4double expnumlim;
|
||||
G4int nwarn;
|
||||
size_t idx;
|
||||
size_t idy;
|
||||
G4bool useBicubicInterpolation;
|
||||
};
|
||||
|
||||
#endif
|
||||
inline void G4LivermoreBremsstrahlungModel::SetBicubicInterpolationFlag(G4bool val)
|
||||
{
|
||||
useBicubicInterpolation = val;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,31 +23,30 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermoreComptonModel.hh 76220 2013-11-08 10:15:00Z gcosmo $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Author: Sebastien Incerti
|
||||
// 30 October 2008
|
||||
// on base of G4LowEnergyCompton developed by A.Forti and M.G.Pia
|
||||
//
|
||||
// Modified:
|
||||
// Author: Alexander Bagulya
|
||||
// 11 March 2012
|
||||
// on the base of G4LivermoreComptonModel
|
||||
//
|
||||
// History:
|
||||
// --------
|
||||
// 30 May 2011 V Ivanchenko Migration to model design for deexcitation
|
||||
|
||||
#ifndef G4LivermoreComptonModel_h
|
||||
#define G4LivermoreComptonModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ShellData.hh"
|
||||
#include "G4DopplerProfile.hh"
|
||||
#include "G4LPhysicsFreeVector.hh"
|
||||
|
||||
class G4ParticleChangeForGamma;
|
||||
class G4VCrossSectionHandler;
|
||||
class G4VAtomDeexcitation;
|
||||
class G4VEMDataSet;
|
||||
class G4ShellData;
|
||||
class G4DopplerProfile;
|
||||
|
||||
class G4LivermoreComptonModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LivermoreComptonModel(const G4ParticleDefinition* p = 0,
|
||||
@@ -57,6 +56,11 @@ public:
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel* masterModel);
|
||||
|
||||
virtual void InitialiseForElement(const G4ParticleDefinition*, G4int Z);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom( const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
@@ -70,28 +74,31 @@ public:
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
G4VEMDataSet* scatterFunctionData;
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
void ReadData(size_t Z, const char* path = 0);
|
||||
|
||||
G4VAtomDeexcitation* fAtomDeexcitation;
|
||||
|
||||
G4ShellData shellData;
|
||||
G4DopplerProfile profileData;
|
||||
G4double ComputeScatteringFunction(G4double x, G4int Z);
|
||||
|
||||
G4LivermoreComptonModel & operator=(const G4LivermoreComptonModel &right);
|
||||
G4LivermoreComptonModel(const G4LivermoreComptonModel&);
|
||||
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
G4double lowestEnergy;
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
G4VAtomDeexcitation* fAtomDeexcitation;
|
||||
|
||||
static G4ShellData* shellData;
|
||||
static G4DopplerProfile* profileData;
|
||||
|
||||
static G4int maxZ;
|
||||
static G4LPhysicsFreeVector* data[100];
|
||||
|
||||
static const G4double ScatFuncFitParam[101][9];
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermoreComptonModifiedModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Sebastien Incerti
|
||||
// 30 October 2008
|
||||
|
||||
+27
-10
@@ -25,7 +25,8 @@
|
||||
//
|
||||
// Author: Sebastien Incerti
|
||||
// 22 January 2012
|
||||
// on base of G4LivermoreGammaConversionModel
|
||||
// on base of G4LivermoreGammaConversionModel (original version)
|
||||
// and G4LivermoreRayleighModel (MT version)
|
||||
|
||||
#ifndef G4LivermoreGammaConversionModel_h
|
||||
#define G4LivermoreGammaConversionModel_h 1
|
||||
@@ -43,11 +44,19 @@ class G4LivermoreGammaConversionModel : public G4VEmModel
|
||||
public:
|
||||
|
||||
G4LivermoreGammaConversionModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "LivermoreConversion");
|
||||
const G4String& nam = "LivermoreConversion");
|
||||
|
||||
virtual ~G4LivermoreGammaConversionModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void Initialise(const G4ParticleDefinition*,
|
||||
const G4DataVector&);
|
||||
|
||||
//MT
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel* masterModel);
|
||||
|
||||
virtual void InitialiseForElement(const G4ParticleDefinition*, G4int Z);
|
||||
//END MT
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
@@ -60,8 +69,12 @@ public:
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
virtual G4double MinPrimaryEnergy(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double);
|
||||
|
||||
private:
|
||||
|
||||
@@ -73,17 +86,21 @@ private:
|
||||
G4LivermoreGammaConversionModel & operator=(const G4LivermoreGammaConversionModel &right);
|
||||
G4LivermoreGammaConversionModel(const G4LivermoreGammaConversionModel&);
|
||||
|
||||
G4double smallEnergy;
|
||||
G4bool isInitialised;
|
||||
G4int maxZ;
|
||||
G4int verboseLevel;
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
G4int verboseLevel;
|
||||
G4double smallEnergy;
|
||||
|
||||
//MT
|
||||
static G4int maxZ;
|
||||
static G4LPhysicsFreeVector* data[100]; // 100 because Z range is 1-99
|
||||
// in LivermoreRayleighModel, 101
|
||||
// because Z range is 1-100
|
||||
//END MT
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
std::vector<G4LPhysicsFreeVector*> data;
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
+4
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermoreGammaConversionModelRC.hh 74822 2013-10-22 14:42:13Z gcosmo $
|
||||
//
|
||||
// Author: Francesco Longo & Gerardo Depaola
|
||||
// on base of G4LivermoreGammaConversionModel
|
||||
@@ -91,6 +91,9 @@ private:
|
||||
G4LivermoreGammaConversionModelRC & operator=(const G4LivermoreGammaConversionModelRC &right);
|
||||
G4LivermoreGammaConversionModelRC(const G4LivermoreGammaConversionModelRC&);
|
||||
|
||||
G4double fbeta (G4double x);
|
||||
G4double Dilog (G4double x);
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermoreIonisationCrossSection.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermoreIonisationModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
// on base of G4LowEnergyIonisation developed by A.Forti and V.Ivanchenko
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermoreNuclearGammaConversionModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Authors: G.Depaola & F.Longo
|
||||
//
|
||||
|
||||
+12
-10
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermorePhotoElectricModel.hh 72941 2013-08-14 13:32:37Z gcosmo $
|
||||
//
|
||||
// Author: Sebastien Incerti
|
||||
// 30 October 2008
|
||||
@@ -72,8 +72,10 @@ public:
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
inline void SetLimitNumberOfShells(G4int);
|
||||
|
||||
virtual void InitialiseForElement(const G4ParticleDefinition*, G4int Z);
|
||||
|
||||
inline void SetLimitNumberOfShells(G4int);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -83,8 +85,8 @@ private:
|
||||
|
||||
void ReadData(G4int Z, const char* path = 0);
|
||||
|
||||
G4LivermorePhotoElectricModel & operator=(const G4LivermorePhotoElectricModel &right);
|
||||
G4LivermorePhotoElectricModel(const G4LivermorePhotoElectricModel&);
|
||||
G4LivermorePhotoElectricModel & operator=(const G4LivermorePhotoElectricModel &right);
|
||||
G4LivermorePhotoElectricModel(const G4LivermorePhotoElectricModel&);
|
||||
|
||||
G4ParticleDefinition* theGamma;
|
||||
G4ParticleDefinition* theElectron;
|
||||
@@ -95,12 +97,12 @@ private:
|
||||
G4bool fDeexcitationActive;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4LPhysicsFreeVector* fCrossSection[99];
|
||||
G4LPhysicsFreeVector* fCrossSectionLE[99];
|
||||
std::vector<G4double> fParam[99];
|
||||
G4int fNShells[99];
|
||||
G4int fNShellsUsed[99];
|
||||
G4ElementData fShellCrossSection;
|
||||
static G4LPhysicsFreeVector* fCrossSection[99];
|
||||
static G4LPhysicsFreeVector* fCrossSectionLE[99];
|
||||
static std::vector<G4double>* fParam[99];
|
||||
static G4int fNShells[99];
|
||||
static G4int fNShellsUsed[99];
|
||||
static G4ElementData* fShellCrossSection;
|
||||
|
||||
G4VAtomDeexcitation* fAtomDeexcitation;
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermorePolarizedComptonModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Authors: G.Depaola & F.Longo
|
||||
//
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermorePolarizedGammaConversionModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Authors: G.Depaola & F.Longo
|
||||
//
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermorePolarizedPhotoElectricModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Authors: G.Depaola & F.Longo
|
||||
//
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LivermorePolarizedRayleighModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Sebastien Incerti
|
||||
// 30 October 2008
|
||||
|
||||
@@ -47,6 +47,11 @@ public:
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel* masterModel);
|
||||
|
||||
virtual void InitialiseForElement(const G4ParticleDefinition*, G4int Z);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
@@ -71,12 +76,12 @@ private:
|
||||
G4LivermoreRayleighModel(const G4LivermoreRayleighModel&);
|
||||
|
||||
G4bool isInitialised;
|
||||
G4int maxZ;
|
||||
G4int verboseLevel;
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
|
||||
std::vector<G4LPhysicsFreeVector*> dataCS;
|
||||
static G4int maxZ;
|
||||
static G4LPhysicsFreeVector* dataCS[101];
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LogLogInterpolation.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// MR - 04/04/2012
|
||||
// Based on G4DNACrossSectionDataSet
|
||||
//
|
||||
|
||||
#ifndef G4MICROELECCROSSSECTIONDATASET_HH
|
||||
#define G4MICROELECCROSSSECTIONDATASET_HH 1
|
||||
|
||||
#include <CLHEP/Units/SystemOfUnits.h>
|
||||
|
||||
#include "G4ShellEMDataSet.hh"
|
||||
|
||||
class G4MicroElecCrossSectionDataSet : public G4VEMDataSet
|
||||
{
|
||||
|
||||
public:
|
||||
G4MicroElecCrossSectionDataSet(G4VDataSetAlgorithm* algo,
|
||||
G4double xUnit=CLHEP::MeV,
|
||||
G4double dataUnit=CLHEP::barn);
|
||||
|
||||
virtual ~G4MicroElecCrossSectionDataSet();
|
||||
|
||||
virtual G4double FindValue(G4double e, G4int componentId=0) const;
|
||||
|
||||
virtual void PrintData(void) const;
|
||||
|
||||
virtual const G4VEMDataSet* GetComponent(G4int componentId) const
|
||||
{ return components[componentId]; }
|
||||
|
||||
virtual void AddComponent(G4VEMDataSet* dataSet)
|
||||
{ components.push_back(dataSet); }
|
||||
|
||||
virtual size_t NumberOfComponents(void) const
|
||||
{ return components.size(); }
|
||||
|
||||
virtual const G4DataVector& GetEnergies(G4int componentId) const
|
||||
{ return GetComponent(componentId)->GetEnergies(0); }
|
||||
|
||||
virtual const G4DataVector& GetData(G4int componentId) const
|
||||
{ return GetComponent(componentId)->GetData(0); }
|
||||
|
||||
virtual const G4DataVector& GetLogEnergies(G4int componentId) const
|
||||
{ return GetComponent(componentId)->GetLogEnergies(0); }
|
||||
|
||||
virtual const G4DataVector& GetLogData(G4int componentId) const
|
||||
{ return GetComponent(componentId)->GetLogData(0); }
|
||||
|
||||
virtual void SetEnergiesData(G4DataVector* x, G4DataVector* values, G4int componentId);
|
||||
|
||||
virtual void SetLogEnergiesData(G4DataVector* x,
|
||||
G4DataVector* values,
|
||||
G4DataVector* log_x,
|
||||
G4DataVector* log_values,
|
||||
G4int componentId);
|
||||
|
||||
virtual G4bool LoadData(const G4String & argFileName);
|
||||
virtual G4bool LoadNonLogData(const G4String & argFileName);
|
||||
|
||||
virtual G4bool SaveData(const G4String & argFileName) const;
|
||||
|
||||
virtual G4double RandomSelect(G4int /*componentId */) const { return -1.; };
|
||||
|
||||
|
||||
// void CleanUpComponents();
|
||||
|
||||
private:
|
||||
|
||||
G4String FullFileName(const G4String & argFileName) const;
|
||||
|
||||
// Hide copy constructor and assignment operator
|
||||
G4MicroElecCrossSectionDataSet();
|
||||
G4MicroElecCrossSectionDataSet(const G4MicroElecCrossSectionDataSet & copy);
|
||||
G4MicroElecCrossSectionDataSet& operator=(const G4MicroElecCrossSectionDataSet & 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 /* G4MicroElecCrossSectionDataSet_HH */
|
||||
+29
-33
@@ -24,53 +24,49 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// G4MicroElecElastic.hh, 2011/08/29 A.Valentin, M. Raine
|
||||
//
|
||||
// GEANT4 Class file
|
||||
// Based on the following publications
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for electrons in Si,
|
||||
// NIM B, vol. 288, pp. 66 - 73, 2012.
|
||||
//
|
||||
//
|
||||
// File name: G4hZiegler1977Nuclear
|
||||
//
|
||||
// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch)
|
||||
//
|
||||
// Creation date: 20 July 2000
|
||||
//
|
||||
// Modifications:
|
||||
// 20/07/2000 V.Ivanchenko First implementation
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Nuclear stopping power parametrised according to
|
||||
// J.F.Ziegler, Helium Stopping Powers and
|
||||
// Ranges in All Elemental Matter, Vol.4, Pergamon Press, 1977
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
#ifndef G4MicroElecElastic_h
|
||||
#define G4MicroElecElastic_h 1
|
||||
|
||||
#ifndef G4hZiegler1977Nuclear_h
|
||||
#define G4hZiegler1977Nuclear_h 1
|
||||
#include "G4VEmProcess.hh"
|
||||
#include "G4Electron.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VhNuclearStoppingPower.hh"
|
||||
// Available models
|
||||
#include "G4MicroElecElasticModel.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4MicroElecElastic : public G4VEmProcess
|
||||
|
||||
class G4hZiegler1977Nuclear : public G4VhNuclearStoppingPower
|
||||
{
|
||||
public:
|
||||
|
||||
public:
|
||||
G4MicroElecElastic(const G4String& processName ="MicroElecElastic",
|
||||
G4ProcessType type = fElectromagnetic);
|
||||
|
||||
G4hZiegler1977Nuclear();
|
||||
virtual ~G4MicroElecElastic();
|
||||
|
||||
~G4hZiegler1977Nuclear();
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void PrintInfo();
|
||||
|
||||
G4double NuclearStoppingPower(G4double kineticEnergy,
|
||||
G4double z1, G4double z2,
|
||||
G4double m1, G4double m2) const;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
virtual void InitialiseProcess(const G4ParticleDefinition*);
|
||||
|
||||
private:
|
||||
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,153 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// G4MicroElecElasticModel.hh, 2011/08/29 A.Valentin, M. Raine
|
||||
//
|
||||
// Based on the following publications
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for electrons in Si,
|
||||
// NIM B, vol. 288, pp. 66 - 73, 2012.
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef G4MicroElecElasticModel_h
|
||||
#define G4MicroElecElasticModel_h 1
|
||||
|
||||
#include <map>
|
||||
#include <CLHEP/Units/SystemOfUnits.h>
|
||||
|
||||
#include "G4MicroElecCrossSectionDataSet.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
class G4MicroElecElasticModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4MicroElecElasticModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "MicroElecElasticModel");
|
||||
|
||||
virtual ~G4MicroElecElasticModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
inline void SetKillBelowThreshold (G4double threshold);
|
||||
G4double GetKillBelowThreshold () { return killBelowEnergy; }
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
G4Material* nistSi;
|
||||
G4double killBelowEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double lowEnergyLimitOfModel;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4MicroElecCrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
// Final state
|
||||
|
||||
G4double Theta(G4ParticleDefinition * aParticleDefinition, G4double k, G4double integrDiff);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLogInterpolate(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;
|
||||
std::vector<double> eTdummyVec;
|
||||
|
||||
typedef std::map<double, std::vector<double> > VecMap;
|
||||
VecMap eVecm;
|
||||
|
||||
G4double RandomizeCosTheta(G4double k);
|
||||
|
||||
//
|
||||
|
||||
G4MicroElecElasticModel & operator=(const G4MicroElecElasticModel &right);
|
||||
G4MicroElecElasticModel(const G4MicroElecElasticModel&);
|
||||
|
||||
};
|
||||
|
||||
inline void G4MicroElecElasticModel::SetKillBelowThreshold (G4double threshold)
|
||||
{
|
||||
killBelowEnergy = threshold;
|
||||
|
||||
if (threshold < 5*CLHEP::eV)
|
||||
{
|
||||
G4Exception ("*** WARNING : the G4MicroElecElasticModel class is not validated below 5 eV !","",JustWarning,"") ;
|
||||
threshold = 0.025*CLHEP::eV;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+36
-40
@@ -24,62 +24,58 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// G4MicroElecInelastic.hh, 2011/08/29 A.Valentin, M. Raine
|
||||
//
|
||||
// GEANT4 Class file
|
||||
// Based on the following publications
|
||||
//
|
||||
// - Inelastic cross-sections of low energy electrons in silicon
|
||||
// for the simulation of heavy ion tracks with theGeant4-DNA toolkit,
|
||||
// NSS Conf. Record 2010, pp. 80-85
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for electrons in Si,
|
||||
// NIM B, vol. 288, pp. 66-73, 2012.
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for protons and
|
||||
// heavy ions in Si, NIM B, vol. 287, pp. 124-129, 2012.
|
||||
//
|
||||
// File name: G4hZiegler1977He
|
||||
//
|
||||
// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch)
|
||||
//
|
||||
// Creation date: 20 July 2000
|
||||
//
|
||||
// Modifications:
|
||||
// 20/07/2000 V.Ivanchenko First implementation
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Electronic stopping power parameterised according to
|
||||
// J.F.Ziegler, Helium Stopping Powers and
|
||||
// Ranges in All Elemental Matter, Vol.4, Pergamon Press, 1977
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE/
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
#ifndef G4MicroElecInelastic_h
|
||||
#define G4MicroElecInelastic_h 1
|
||||
|
||||
#ifndef G4hZiegler1977He_h
|
||||
#define G4hZiegler1977He_h 1
|
||||
#include "G4VEmProcess.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VhElectronicStoppingPower.hh"
|
||||
// Available models
|
||||
#include "G4MicroElecInelasticModel.hh"
|
||||
|
||||
class G4Material;
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4MicroElecInelastic : public G4VEmProcess
|
||||
|
||||
class G4hZiegler1977He : public G4VhElectronicStoppingPower
|
||||
{
|
||||
public:
|
||||
|
||||
public:
|
||||
G4MicroElecInelastic(const G4String& processName ="MicroElecIonisation",
|
||||
G4ProcessType type = fElectromagnetic);
|
||||
|
||||
G4hZiegler1977He() ;
|
||||
virtual ~G4MicroElecInelastic();
|
||||
|
||||
~G4hZiegler1977He() ;
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void PrintInfo();
|
||||
|
||||
G4bool HasMaterial(const G4Material* material);
|
||||
|
||||
G4double StoppingPower(const G4Material* material,
|
||||
G4double kineticEnergy);
|
||||
|
||||
G4double ElectronicStoppingPower(G4double z,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
G4double rateMass; // HeMassAMU/ProtonMassAMU
|
||||
virtual void InitialiseProcess(const G4ParticleDefinition*);
|
||||
|
||||
private:
|
||||
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,162 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// G4MicroElecInelasticModel.hh, 2011/08/29 A.Valentin, M. Raine
|
||||
//
|
||||
// Based on the following publications
|
||||
//
|
||||
// - Inelastic cross-sections of low energy electrons in silicon
|
||||
// for the simulation of heavy ion tracks with theGeant4-DNA toolkit,
|
||||
// NSS Conf. Record 2010, pp. 80-85
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for electrons in Si,
|
||||
// NIM B, vol. 288, pp. 66-73, 2012.
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for protons and
|
||||
// heavy ions in Si, NIM B, vol. 287, pp. 124-129, 2012.
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef G4MicroElecInelasticModel_h
|
||||
#define G4MicroElecInelasticModel_h 1
|
||||
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
|
||||
#include "G4MicroElecCrossSectionDataSet.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
|
||||
#include "G4MicroElecSiStructure.hh"
|
||||
#include "G4VAtomDeexcitation.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
class G4MicroElecInelasticModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4MicroElecInelasticModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "MicroElecInelasticModel");
|
||||
|
||||
virtual ~G4MicroElecInelasticModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume( const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
//deexcitation manager to produce fluo photns and e-
|
||||
G4VAtomDeexcitation* fAtomDeexcitation;
|
||||
|
||||
G4Material* nistSi;
|
||||
|
||||
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
|
||||
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
|
||||
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4MicroElecCrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
// Final state
|
||||
|
||||
G4MicroElecSiStructure SiStructure;
|
||||
|
||||
G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
|
||||
|
||||
void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
|
||||
outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
|
||||
|
||||
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[7];
|
||||
TriDimensionMap pDiffCrossSectionData[7];
|
||||
std::vector<double> eTdummyVec;
|
||||
std::vector<double> pTdummyVec;
|
||||
|
||||
typedef std::map<double, std::vector<double> > VecMap;
|
||||
VecMap eVecm;
|
||||
VecMap pVecm;
|
||||
|
||||
// Partial cross section
|
||||
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
//
|
||||
|
||||
G4MicroElecInelasticModel & operator=(const G4MicroElecInelasticModel &right);
|
||||
G4MicroElecInelasticModel(const G4MicroElecInelasticModel&);
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+34
-42
@@ -24,58 +24,50 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// G4MicroElecSiStructure.hh, 2011/08/29 A.Valentin, M. Raine
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// Based on the following publications
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 21 Jan 2003 VI Cuts per region
|
||||
// - Inelastic cross-sections of low energy electrons in silicon
|
||||
// for the simulation of heavy ion tracks with theGeant4-DNA toolkit,
|
||||
// NSS Conf. Record 2010, pp. 80-85
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for electrons in Si,
|
||||
// NIM B, vol. 288, pp. 66-73, 2012.
|
||||
// - Geant4 physics processes for microdosimetry simulation:
|
||||
// very low energy electromagnetic models for protons and
|
||||
// heavy ions in Si, NIM B, vol. 287, pp. 124-129, 2012.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
// Class for a strategy pattern encapsulating algorithms to test the range
|
||||
// of a perticle: test range against cut and safety
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4RANGETEST_HH
|
||||
#define G4RANGETEST_HH 1
|
||||
|
||||
#ifndef G4MICROELECSISTRUCTURE_HH
|
||||
#define G4MICROELECSISTRUCTURE_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VRangeTest.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4Material;
|
||||
|
||||
class G4RangeTest : public G4VRangeTest {
|
||||
#include <vector>
|
||||
|
||||
|
||||
class G4MicroElecSiStructure
|
||||
{
|
||||
public:
|
||||
|
||||
G4MicroElecSiStructure();
|
||||
|
||||
virtual ~G4MicroElecSiStructure();
|
||||
|
||||
G4double Energy(G4int level);
|
||||
|
||||
G4RangeTest() { }
|
||||
|
||||
virtual ~G4RangeTest();
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double energy,
|
||||
G4double safety) const;
|
||||
|
||||
G4int NumberOfLevels() { return nLevels; }
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Number of levels of silicon
|
||||
G4int nLevels;
|
||||
|
||||
std::vector<G4double> energyConstant;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeAnnihilationModel.hh 74452 2013-10-07 15:08:00Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -31,6 +31,7 @@
|
||||
// -----------
|
||||
// 29 Oct 2008 L. Pandola 1st implementation. Migration from EM process
|
||||
// to EM model
|
||||
// 02 Oct 2013 L. Pandola Migration to MT paradigm
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -62,6 +63,8 @@ public:
|
||||
virtual ~G4PenelopeAnnihilationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel* );
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
@@ -75,12 +78,13 @@ public:
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
const G4ParticleDefinition* fParticle;
|
||||
|
||||
private:
|
||||
G4double ComputeCrossSectionPerElectron(G4double energy);
|
||||
@@ -88,6 +92,8 @@ private:
|
||||
G4PenelopeAnnihilationModel & operator=(const G4PenelopeAnnihilationModel &right);
|
||||
G4PenelopeAnnihilationModel(const G4PenelopeAnnihilationModel&);
|
||||
|
||||
void SetParticle(const G4ParticleDefinition*);
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
@@ -95,7 +101,7 @@ private:
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
//Stored here so it is not recalculated every time
|
||||
G4double fPielr2;
|
||||
static G4double fPielr2;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+15
-8
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id$
|
||||
// $Id: G4PenelopeBremsstrahlungAngular.hh 74452 2013-10-07 15:08:00Z gcosmo $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
@@ -36,6 +36,7 @@
|
||||
// 13 Mar 2012 L. Pandola Made a derived class of G4VEmAngularDistribution
|
||||
// and update the interface accordingly
|
||||
// 18 Jul 2012 L. Pandola Migrate to the new interface of G4VEmAngularDistribution
|
||||
// 03 Oct 2013 L. Pandola Migration to MT
|
||||
//
|
||||
// Class description:
|
||||
// Calculation of angular distribution for Penelope Bremsstrahlung
|
||||
@@ -59,8 +60,6 @@ public:
|
||||
G4PenelopeBremsstrahlungAngular();
|
||||
~G4PenelopeBremsstrahlungAngular();
|
||||
|
||||
//! The Initialize() method forces the cleaning of tables
|
||||
void Initialize();
|
||||
|
||||
//! Old interface, backwards compatibility. Will not work in this case
|
||||
//! it will produce a G4Exception().
|
||||
@@ -69,7 +68,6 @@ public:
|
||||
const G4int Z);
|
||||
|
||||
//! Samples the direction of the outgoing photon (in global coordinates).
|
||||
//! Forces the calculation of tables, if they are not available
|
||||
G4ThreeVector& SampleDirection(const G4DynamicParticle* dp,
|
||||
G4double out_energy,
|
||||
G4int Z,
|
||||
@@ -79,11 +77,20 @@ public:
|
||||
void SetVerbosityLevel(G4int vl){verbosityLevel = vl;};
|
||||
G4int GetVerbosityLevel(){return verbosityLevel;};
|
||||
|
||||
private:
|
||||
void PrepareInterpolationTables(G4double Zeq);
|
||||
void ClearTables();
|
||||
//! Reserved for Master Model
|
||||
//! The Initialize() method forces the cleaning of tables
|
||||
void Initialize();
|
||||
//! Reserved for Master Model
|
||||
void PrepareTables(const G4Material* material,
|
||||
G4bool isMaster);
|
||||
|
||||
G4double GetEffectiveZ(const G4Material* material);
|
||||
|
||||
private:
|
||||
|
||||
void ClearTables();
|
||||
|
||||
G4double CalculateEffectiveZ(const G4Material* material);
|
||||
|
||||
std::map<const G4Material*,G4double> *theEffectiveZSq;
|
||||
|
||||
//Tables containing the Lorentz sampling coefficients
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeBremsstrahlungFS.hh 75573 2013-11-04 11:48:15Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -32,6 +32,11 @@
|
||||
// 20 Oct 2010 L. Pandola 1st implementation.
|
||||
// 02 May 2011 L. Pandola Remove dependency on CLHEP::HepMatrix
|
||||
// 24 May 2011 L. Pandola Renamed (make default Penelope)
|
||||
// 03 Oct 2013 L. Pandola Migration to MT
|
||||
// 07 Oct 2013 L. Pandola Add verbosity and ismaster flag for the
|
||||
// master-only methods
|
||||
// 30 Oct 2013 L. Pandola Add a G4Cache of temporary vectors as
|
||||
// private member.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -45,6 +50,7 @@
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4Cache.hh"
|
||||
#include <map>
|
||||
|
||||
class G4PhysicsFreeVector;
|
||||
@@ -55,21 +61,30 @@ class G4PhysicsTable;
|
||||
class G4PenelopeBremsstrahlungFS
|
||||
{
|
||||
public:
|
||||
|
||||
G4PenelopeBremsstrahlungFS();
|
||||
//! Only master models are supposed to create instances
|
||||
G4PenelopeBremsstrahlungFS(G4int verbosity=0);
|
||||
~G4PenelopeBremsstrahlungFS();
|
||||
|
||||
G4double GetEffectiveZSquared(const G4Material* mat);
|
||||
void ClearTables();
|
||||
size_t GetNBinsX(){return nBinsX;};
|
||||
|
||||
|
||||
//utilities
|
||||
//!
|
||||
//! Master and workers (do not touch tables)
|
||||
//! All of them are const
|
||||
//!
|
||||
G4double GetEffectiveZSquared(const G4Material* mat) const;
|
||||
size_t GetNBinsX() const {return nBinsX;};
|
||||
G4double GetMomentumIntegral(G4double* y,
|
||||
G4double up,G4int momOrder);
|
||||
G4double up,G4int momOrder) const;
|
||||
const G4PhysicsTable* GetScaledXSTable(const G4Material*,
|
||||
const G4double cut) const;
|
||||
G4double SampleGammaEnergy(G4double energy,
|
||||
const G4Material*, const G4double cut) const;
|
||||
|
||||
G4PhysicsTable* GetScaledXSTable(const G4Material*,G4double cut);
|
||||
G4double SampleGammaEnergy(G4double energy,const G4Material*, G4double cut);
|
||||
//! Reserved for the master model: they build and handle tables
|
||||
void ClearTables(G4bool isMaster=true);
|
||||
void BuildScaledXSTable(const G4Material* material,G4double cut,
|
||||
G4bool isMaster);
|
||||
|
||||
void SetVerbosity(G4int ver){fVerbosity=ver;};
|
||||
G4int GetVerbosity(){return fVerbosity;};
|
||||
|
||||
private:
|
||||
//assignment operator
|
||||
@@ -78,12 +93,11 @@ private:
|
||||
G4PenelopeBremsstrahlungFS(const G4PenelopeBremsstrahlungFS&);
|
||||
|
||||
//Differential cross section tables
|
||||
//Table contains G4PhysicsVectors of log(XS(E,x)) vs. log(E) for a grid of 32 values in
|
||||
//x (= reduced photon energy)
|
||||
//Table contains G4PhysicsVectors of log(XS(E,x)) vs. log(E)
|
||||
//for a grid of 32 values in x (= reduced photon energy)
|
||||
std::map< std::pair<const G4Material*,G4double> ,
|
||||
G4PhysicsTable*> *theReducedXSTable;
|
||||
|
||||
void BuildScaledXSTable(const G4Material* material,G4double cut);
|
||||
std::map<const G4Material*,G4double> *theEffectiveZSq;
|
||||
|
||||
|
||||
@@ -114,8 +128,11 @@ private:
|
||||
|
||||
//temporary vector. Used as member variable to avoid to book/release the
|
||||
//memory on the fly. This vector is over-written at every call of
|
||||
//SampleGammaEnergy()
|
||||
G4PhysicsFreeVector* theTempVec;
|
||||
//SampleGammaEnergy(). It is thread-local (each thread has its own)
|
||||
//and managed by G4Cache
|
||||
G4Cache<G4PhysicsFreeVector*> fCache;
|
||||
|
||||
G4int fVerbosity;
|
||||
|
||||
};
|
||||
|
||||
|
||||
+13
-5
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeBremsstrahlungModel.hh 76988 2013-11-20 09:54:40Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -31,6 +31,7 @@
|
||||
// -----------
|
||||
// 23 Aug 2010 L. Pandola 1st implementation.
|
||||
// 24 May 2011 L. Pandola Renamed (make v2008 as default Penelope)
|
||||
// 02 Oct 2013 L. Pandola Migrated to multi-thread
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -54,7 +55,6 @@ class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PhysicsTable;
|
||||
class G4PenelopeOscillatorManager;
|
||||
class G4PenelopeCrossSection;
|
||||
class G4PenelopeBremsstrahlungFS;
|
||||
@@ -71,7 +71,9 @@ public:
|
||||
virtual ~G4PenelopeBremsstrahlungModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel*);
|
||||
|
||||
//DUMMY METHOD
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition* theParticle,
|
||||
G4double kinEnergy,
|
||||
@@ -108,6 +110,7 @@ public:
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForLoss* fParticleChange;
|
||||
const G4ParticleDefinition* fParticle;
|
||||
|
||||
private:
|
||||
void ClearTables();
|
||||
@@ -117,7 +120,8 @@ private:
|
||||
|
||||
G4PenelopeCrossSection* GetCrossSectionTableForCouple(const G4ParticleDefinition*,
|
||||
const G4Material*,G4double cut);
|
||||
|
||||
void SetParticle(const G4ParticleDefinition*);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
@@ -130,7 +134,8 @@ private:
|
||||
|
||||
//
|
||||
//Members to handle and store cross section tables
|
||||
void BuildXSTable(const G4Material*,G4double cut);
|
||||
void BuildXSTable(const G4Material* material,G4double cut);
|
||||
|
||||
//This is the main energy grid
|
||||
G4PhysicsLogVector* energyGrid;
|
||||
size_t nBins;
|
||||
@@ -143,6 +148,9 @@ private:
|
||||
G4PenelopeBremsstrahlungFS* fPenelopeFSHelper;
|
||||
G4PenelopeBremsstrahlungAngular* fPenelopeAngular;
|
||||
|
||||
//Used only for G4EmCalculator and Unit Tests
|
||||
G4bool fLocalTable;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeComptonModel.hh 74626 2013-10-17 07:00:59Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -34,6 +34,7 @@
|
||||
// to G4PenelopeOscillatorManager
|
||||
// 24 May 2011 L. Pandola Renamed (make v2008 as default Penelope)
|
||||
// 10 Jun 2011 L. Pandola Migrated to the new AtomDeexcitation interface
|
||||
// 09 Oct 2013 L. Pandola Migration to MT
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//*
|
||||
@@ -70,6 +71,8 @@ public:
|
||||
virtual ~G4PenelopeComptonModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel *masterModel);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
@@ -99,8 +102,11 @@ public:
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
const G4ParticleDefinition* fParticle;
|
||||
|
||||
private:
|
||||
void SetParticle(const G4ParticleDefinition*);
|
||||
|
||||
//Differential cross section which is numerically integrated
|
||||
G4double DifferentialCrossSection (G4double cdt,G4double energy,
|
||||
G4PenelopeOscillator* osc);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeCrossSection.hh 74626 2013-10-17 07:00:59Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -81,31 +81,33 @@ public:
|
||||
~G4PenelopeCrossSection();
|
||||
|
||||
//! Returns total cross section at the given energy
|
||||
G4double GetTotalCrossSection(G4double energy);
|
||||
G4double GetTotalCrossSection(G4double energy) const;
|
||||
//! Returns hard cross section at the given energy
|
||||
G4double GetHardCrossSection(G4double energy);
|
||||
G4double GetHardCrossSection(G4double energy) const;
|
||||
//! Returns the total stopping power due to soft collisions
|
||||
G4double GetSoftStoppingPower(G4double energy);
|
||||
G4double GetSoftStoppingPower(G4double energy) const;
|
||||
//! Returns the hard cross section for the given shell (per molecule)
|
||||
G4double GetShellCrossSection(size_t shellID,G4double energy);
|
||||
G4double GetShellCrossSection(size_t shellID,G4double energy) const;
|
||||
//! Returns the hard cross section for the given shell (normalized to 1)
|
||||
G4double GetNormalizedShellCrossSection(size_t shellID,G4double energy);
|
||||
G4double GetNormalizedShellCrossSection(size_t shellID,G4double energy) const;
|
||||
|
||||
size_t GetNumberOfShells(){return numberOfShells;};
|
||||
size_t GetNumberOfShells() const {return numberOfShells;};
|
||||
|
||||
//!
|
||||
//! Public interface for the master thread
|
||||
//!
|
||||
void AddCrossSectionPoint(size_t binNumber,
|
||||
G4double energy,G4double XH0, G4double XH1,
|
||||
G4double XH2,
|
||||
G4double XS0, G4double XS1, G4double XS2);
|
||||
|
||||
void AddShellCrossSectionPoint(size_t binNumber,
|
||||
size_t shellID,G4double energy,G4double xs);
|
||||
void NormalizeShellCrossSections();
|
||||
|
||||
private:
|
||||
G4PenelopeCrossSection & operator=(const G4PenelopeCrossSection &right);
|
||||
G4PenelopeCrossSection(const G4PenelopeCrossSection&);
|
||||
void NormalizeShellCrossSections();
|
||||
|
||||
|
||||
G4bool isNormalized;
|
||||
|
||||
size_t numberOfEnergyPoints;
|
||||
|
||||
+10
-4
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeGammaConversionModel.hh 75573 2013-11-04 11:48:15Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -31,6 +31,7 @@
|
||||
// -----------
|
||||
// 13 Jan 2010 L. Pandola First implementation
|
||||
// 24 May 2011 L. Pandola Renamed (make v2008 as default Penelope)
|
||||
// 18 Sep 2013 L. Pandola Migration to MT paradigm
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -64,7 +65,7 @@ public:
|
||||
virtual ~G4PenelopeGammaConversionModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*, G4VEmModel*);
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
@@ -84,12 +85,14 @@ public:
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
const G4ParticleDefinition* fParticle;
|
||||
|
||||
private:
|
||||
G4PenelopeGammaConversionModel & operator=(const
|
||||
G4PenelopeGammaConversionModel &right);
|
||||
G4PenelopeGammaConversionModel(const G4PenelopeGammaConversionModel&);
|
||||
|
||||
void SetParticle(const G4ParticleDefinition*);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
@@ -115,10 +118,13 @@ private:
|
||||
|
||||
std::pair<G4double,G4double> GetScreeningFunctions(G4double);
|
||||
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
//Used only for G4EmCalculator and Unit Tests
|
||||
G4bool fLocalTable;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeIonisationCrossSection.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeIonisationModel.hh 75573 2013-11-04 11:48:15Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -33,6 +33,7 @@
|
||||
// 25 May 2011 L. Pandola Renamed (make v2008 as default Penelope)
|
||||
// 09 Mar 2012 L. Pandola Moved the management and calculation of
|
||||
// cross sections to a separate class
|
||||
// 07 Oct 2013 L. Pandola Migration to MT
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -72,6 +73,8 @@ public:
|
||||
virtual ~G4PenelopeIonisationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel*);
|
||||
|
||||
//*This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//*a warning if one tries to get Cross Sections per Atom via the
|
||||
@@ -109,12 +112,14 @@ public:
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForLoss* fParticleChange;
|
||||
const G4ParticleDefinition* fParticle;
|
||||
|
||||
private:
|
||||
|
||||
G4PenelopeIonisationModel & operator=(const G4PenelopeIonisationModel &right);
|
||||
G4PenelopeIonisationModel(const G4PenelopeIonisationModel&);
|
||||
|
||||
void SetParticle(const G4ParticleDefinition*);
|
||||
|
||||
void SampleFinalStateElectron(const G4Material*,G4double cutEnergy,G4double kineticEnergy);
|
||||
void SampleFinalStatePositron(const G4Material*,G4double cutEnergy,G4double kineticEnergy);
|
||||
@@ -140,6 +145,9 @@ private:
|
||||
|
||||
size_t nBins;
|
||||
|
||||
//Used only for G4EmCalculator and Unit Tests
|
||||
G4bool fLocalTable;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+8
-10
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeIonisationXSHandler.hh 74626 2013-10-17 07:00:59Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -70,24 +70,22 @@ public:
|
||||
virtual ~G4PenelopeIonisationXSHandler();
|
||||
|
||||
//!Returns the density coeection for the material at the given energy
|
||||
G4double GetDensityCorrection(const G4Material*,G4double energy);
|
||||
|
||||
G4double GetDensityCorrection(const G4Material*,const G4double energy) const;
|
||||
//! Returns the table of cross sections for the given particle, given
|
||||
//! material and given cut as a G4PenelopeCrossSection* pointer.
|
||||
G4PenelopeCrossSection* GetCrossSectionTableForCouple(const G4ParticleDefinition*,
|
||||
const G4Material*,G4double cut);
|
||||
const G4PenelopeCrossSection* GetCrossSectionTableForCouple(const G4ParticleDefinition*,
|
||||
const G4Material*,const G4double cut) const;
|
||||
//!Setter for the verbosity level
|
||||
void SetVerboseLevel(G4int vl){verboseLevel = vl;};
|
||||
|
||||
//! This can be inkoved only by the master
|
||||
void BuildXSTable(const G4Material*,G4double cut,
|
||||
const G4ParticleDefinition*,G4bool isMaster=true);
|
||||
|
||||
private:
|
||||
G4PenelopeIonisationXSHandler & operator=(const G4PenelopeIonisationXSHandler &right);
|
||||
G4PenelopeIonisationXSHandler(const G4PenelopeIonisationXSHandler&);
|
||||
|
||||
|
||||
void BuildXSTable(const G4Material*,G4double cut,
|
||||
const G4ParticleDefinition*);
|
||||
|
||||
|
||||
void BuildDeltaTable(const G4Material*);
|
||||
|
||||
G4DataVector* ComputeShellCrossSectionsElectron(G4PenelopeOscillator* ,
|
||||
|
||||
@@ -113,7 +113,7 @@ private:
|
||||
G4PenelopeOscillatorManager& right);
|
||||
G4PenelopeOscillatorManager(const G4PenelopeOscillatorManager&);
|
||||
|
||||
static G4PenelopeOscillatorManager* instance;
|
||||
static G4ThreadLocal G4PenelopeOscillatorManager* instance;
|
||||
|
||||
//In Penelope2008, the Ionisation and Compton oscillator tables are
|
||||
//slightly different!
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopePhotoElectricModel.hh 75573 2013-11-04 11:48:15Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -32,6 +32,7 @@
|
||||
// 08 Jan 2010 L. Pandola 1st implementation.
|
||||
// 25 May 2011 L. Pandola Renamed (make v2008 as default Penelope)
|
||||
// 10 Jun 2011 L. Pandola Migrated to the new AtomDeexcitation interface
|
||||
// 18 Sep 2013 L. Pandola Migrated to the MT paradigm
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -66,6 +67,8 @@ public:
|
||||
virtual ~G4PenelopePhotoElectricModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel *masterModel);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
@@ -91,11 +94,14 @@ public:
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
const G4ParticleDefinition* fParticle;
|
||||
|
||||
private:
|
||||
G4PenelopePhotoElectricModel & operator=(const G4PenelopePhotoElectricModel &right);
|
||||
G4PenelopePhotoElectricModel(const G4PenelopePhotoElectricModel&);
|
||||
|
||||
void SetParticle(const G4ParticleDefinition*);
|
||||
|
||||
G4double SampleElectronDirection(G4double energy);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
@@ -119,6 +125,8 @@ private:
|
||||
size_t SelectRandomShell(G4int Z,G4double energy);
|
||||
G4String WriteTargetShell(size_t shellID);
|
||||
|
||||
//Used only for G4EmCalculator and Unit Tests
|
||||
G4bool fLocalTable;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeRayleighModel.hh 75573 2013-11-04 11:48:15Z gcosmo $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -31,6 +31,7 @@
|
||||
// -----------
|
||||
// 03 Dec 2009 L. Pandola 1st implementation.
|
||||
// 25 May 2011 L. Pandola Renamed (make v2008 as default Penelope)
|
||||
// 27 Sep 2013 L. Pandola Migration to MT paradigm
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -64,7 +65,9 @@ public:
|
||||
virtual ~G4PenelopeRayleighModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual void InitialiseLocal(const G4ParticleDefinition*,
|
||||
G4VEmModel *masterModel);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
@@ -86,11 +89,14 @@ public:
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
const G4ParticleDefinition* fParticle;
|
||||
|
||||
private:
|
||||
G4PenelopeRayleighModel& operator=(const G4PenelopeRayleighModel &right);
|
||||
G4PenelopeRayleighModel(const G4PenelopeRayleighModel&);
|
||||
|
||||
void SetParticle(const G4ParticleDefinition*);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by
|
||||
//the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
@@ -121,6 +127,9 @@ private:
|
||||
G4double GetFSquared(const G4Material*,const G4double);
|
||||
void InitializeSamplingAlgorithm(const G4Material*);
|
||||
|
||||
//Used only for G4EmCalculator and Unit Tests
|
||||
G4bool fLocalTable;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4PenelopeSamplingData.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
|
||||
@@ -120,18 +120,18 @@ private:
|
||||
// number, energy and oscillator strenghts
|
||||
// for an harmonic oscillator model of material
|
||||
static const G4int nbofShellForMaterial[6];
|
||||
static G4double alShellEnergy[3];
|
||||
static G4double alShellStrength[3];
|
||||
static G4double siShellEnergy[3];
|
||||
static G4double siShellStrength[3];
|
||||
static G4double cuShellEnergy[4];
|
||||
static G4double cuShellStrength[4];
|
||||
static G4double taShellEnergy[6];
|
||||
static G4double taShellStrength[6];
|
||||
static G4double auShellEnergy[6];
|
||||
static G4double auShellStrength[6];
|
||||
static G4double ptShellEnergy[6];
|
||||
static G4double ptShellStrength[6];
|
||||
static const G4double alShellEnergy[3];
|
||||
static const G4double alShellStrength[3];
|
||||
static const G4double siShellEnergy[3];
|
||||
static const G4double siShellStrength[3];
|
||||
static const G4double cuShellEnergy[4];
|
||||
static const G4double cuShellStrength[4];
|
||||
static const G4double taShellEnergy[6];
|
||||
static const G4double taShellStrength[6];
|
||||
static const G4double auShellEnergy[6];
|
||||
static const G4double auShellStrength[6];
|
||||
static const G4double ptShellEnergy[6];
|
||||
static const G4double ptShellStrength[6];
|
||||
|
||||
G4int numberOfMaterials;
|
||||
|
||||
|
||||
@@ -1,81 +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$
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 22 Jan 2003 V.Ivanchenko Cut per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
// Class for a strategy pattern encapsulating algorithms to test the range
|
||||
// of a particle: no test is performed
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4RANGENOTEST_HH
|
||||
#define G4RANGENOTEST_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VRangeTest.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4MaterialCutsCouple;
|
||||
|
||||
class G4RangeNoTest : public G4VRangeTest {
|
||||
|
||||
public:
|
||||
|
||||
G4RangeNoTest() { }
|
||||
|
||||
virtual ~G4RangeNoTest() { }
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition*, // particle
|
||||
const G4MaterialCutsCouple*, // couple,
|
||||
G4double, // energy,
|
||||
G4double ) const { return true; } // safety
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4RayleighScattering.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
//------------------ G4RayleighScattering physics process -----------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4SemiLogInterpolation.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4ShellData.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4ShellEMDataSet.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4UAtomicDeexcitation.cc,v 1.11
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4VCrossSectionHandler.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4VDataSetAlgorithm.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4VEMDataSet.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
-182
@@ -1,182 +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$
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
//
|
||||
// File name: G4VLowEnergyDiscretePhotonProcess.hh
|
||||
//
|
||||
// Author: Capra Riccardo
|
||||
//
|
||||
// Creation date: May 2005
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 02 May 2005 R. Capra 1st implementation
|
||||
// 20 May 2005 MGP Modified protected member functions to return a const pointer
|
||||
//
|
||||
//----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#ifndef G4VLowEnergyDiscretePhotonProcess_hh
|
||||
#define G4VLowEnergyDiscretePhotonProcess_hh
|
||||
|
||||
// Base class
|
||||
#include "G4VLowEnergyTestableDiscreteProcess.hh"
|
||||
|
||||
// Forward declaration
|
||||
class G4String;
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4Track;
|
||||
class G4VCrossSectionHandler;
|
||||
class G4VEMDataSet;
|
||||
class G4VDataSetAlgorithm;
|
||||
|
||||
// G4VLowEnergyDiscretePhotonProcess
|
||||
// A common class for Rayleigh and Compton processes
|
||||
class G4VLowEnergyDiscretePhotonProcess : public G4VLowEnergyTestableDiscreteProcess
|
||||
{
|
||||
public:
|
||||
// Class constructor
|
||||
//
|
||||
// Creates crossSectionHandler and scatterFunctionData
|
||||
// scatterFunctionData are loaded from the scatterFile file, and are interpolated with scatterInterpolation algorithm
|
||||
// processName The name of the process
|
||||
// aCrossSectionFileName The name of the cross-section data file
|
||||
// aScatterFileName The name of the scatter function data
|
||||
// aScatterInterpolation The interpolation algorithm
|
||||
// aLowEnergyLimit The lower energy limit of validity against data
|
||||
// aHighEnergyLimit The higher energy limit of validity against data
|
||||
G4VLowEnergyDiscretePhotonProcess(const G4String& processName,
|
||||
const G4String& aCrossSectionFileName,
|
||||
const G4String& aScatterFileName,
|
||||
G4VDataSetAlgorithm* aScatterInterpolation,
|
||||
G4double aLowEnergyLimit,
|
||||
G4double aHighEnergyLimit);
|
||||
|
||||
// Class destructor
|
||||
//
|
||||
// Deletes crossSectionHandler, meanFreePathTable and scatterFunctionData
|
||||
virtual ~G4VLowEnergyDiscretePhotonProcess(void);
|
||||
|
||||
|
||||
|
||||
// Checks if the process is applicable to the particle
|
||||
//
|
||||
// For processes inheriting from this class the only applicable particle is the photon
|
||||
// particleDefinition Is the particle to be checked for the applicability of the process
|
||||
// true only if the particle is a photon
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition& particleDefinition);
|
||||
|
||||
// Updates the crossSectionHandler and builds the meanFreePathTable from it
|
||||
//
|
||||
// crossSectionHandler data is loaded from crossSectionFile file
|
||||
// photon particle is always a photon
|
||||
virtual void BuildPhysicsTable(const G4ParticleDefinition& photon);
|
||||
|
||||
|
||||
|
||||
// Returns the low energy limit of the process
|
||||
// The low energy limit of the process
|
||||
inline G4double GetLowEnergyLimit(void) const {return lowEnergyLimit;}
|
||||
|
||||
// Returns the high energy limit of the process
|
||||
// The high energy limit of the process
|
||||
inline G4double GetHighEnergyLimit(void) const {return highEnergyLimit;}
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
// Evaluates the process mean free path
|
||||
//
|
||||
// Mean free path evaluation is based on meanFreePathTable generated by the crossSectionHandler with data taken from the crossSectionFile.
|
||||
// The method uses lowEnergyLimit and highEnergyLimit
|
||||
// aTrack the particle momentum for which the mean free path must be evaluates (a photon)
|
||||
// previousStepSize the size of the prevous step (not used by this implementation)
|
||||
// condition the consition to be updated (not used by this implementation)
|
||||
// The mean free path for the process
|
||||
virtual G4double GetMeanFreePath(const G4Track &aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
|
||||
// Returns the cross-section handler
|
||||
// The cross-section handler
|
||||
inline const G4VCrossSectionHandler* GetCrossSectionHandler(void) const {return crossSectionHandler;}
|
||||
|
||||
// Returns the mean free path table
|
||||
// The mean free path table
|
||||
inline const G4VEMDataSet* GetMeanFreePathTable(void) const {return meanFreePathTable;}
|
||||
|
||||
// Returns the scatter function data
|
||||
// The scatter function data
|
||||
inline const G4VEMDataSet* GetScatterFunctionData(void) const {return scatterFunctionData;}
|
||||
|
||||
|
||||
|
||||
// Verifies if the polarization vector is orthonormal to the photon direction
|
||||
//
|
||||
// This method is used by polarized processes. It returns always a vector orthonormal to the photon direction.
|
||||
// When G4DynamicParticle::GetPolarization() is well defined the returned vector matches this vector.
|
||||
// When G4DynamicParticle::GetPolarization() is sensibly different from a null-vector, the returned vector is
|
||||
// orthonormal to the photon direction and on the plane made with G4DynamicParticle::GetPolarization()
|
||||
// When G4DynamicParticle::GetPolarization() is almost a null-vector, the returned vector is a random
|
||||
// vector orthonormal to the photon direction
|
||||
// photon The incoming photon
|
||||
// s Always a vector ortogonal to the photon direction.
|
||||
G4ThreeVector GetPhotonPolarization(const G4DynamicParticle& photon);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Hides copy constructor
|
||||
G4VLowEnergyDiscretePhotonProcess(const G4VLowEnergyDiscretePhotonProcess& );
|
||||
|
||||
// Hides assignment operator
|
||||
G4VLowEnergyDiscretePhotonProcess& operator=(const G4VLowEnergyDiscretePhotonProcess& );
|
||||
|
||||
// Low energy limit
|
||||
G4double lowEnergyLimit;
|
||||
|
||||
// High energy limit
|
||||
G4double highEnergyLimit;
|
||||
|
||||
// Cross-section file name
|
||||
G4String crossSectionFileName;
|
||||
|
||||
// Cross-section handler
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
|
||||
// The mean free path table based on cross-section data
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
// Scatter function table
|
||||
G4VEMDataSet* scatterFunctionData;
|
||||
};
|
||||
|
||||
#endif /* G4VLowEnergyDiscretePhotonProcess_hh */
|
||||
-53
@@ -1,53 +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$
|
||||
//
|
||||
|
||||
#ifndef G4VLowEnergyTestableDiscreteProcess_hh
|
||||
#define G4VLowEnergyTestableDiscreteProcess_hh 1
|
||||
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
|
||||
class G4VLowEnergyTestableDiscreteProcess : public G4VDiscreteProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4VLowEnergyTestableDiscreteProcess(const G4String & name) : G4VDiscreteProcess(name) {}
|
||||
|
||||
virtual ~G4VLowEnergyTestableDiscreteProcess() {}
|
||||
|
||||
G4double DumpMeanFreePath(const G4Track & aTrack, G4double previousStepSize, G4ForceCondition * condition)
|
||||
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
|
||||
|
||||
private:
|
||||
// Hides default constructor and assignment operator as private
|
||||
G4VLowEnergyTestableDiscreteProcess();
|
||||
G4VLowEnergyTestableDiscreteProcess & operator=(const G4VLowEnergyTestableDiscreteProcess & right);
|
||||
};
|
||||
|
||||
#endif /* G4VLowEnergyTestableDiscreteProcess_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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4VPhotoElectricAngularDistribution
|
||||
//
|
||||
// Author: Pedro Rodrigues (psilva@lip.pt)
|
||||
// Andreia Trindade (andreia@lip.pt)
|
||||
//
|
||||
// Creation date: 10 May 2004
|
||||
//
|
||||
// Modifications:
|
||||
// 10 May 2004 A. Trindade First implementation acording with new design
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Abstract class for PhotoElectricsstrahlung Angular Distribution Generation
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4VPhotoElectricAngularDistribution_h
|
||||
#define G4VPhotoElectricAngularDistribution_h 1
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
class G4VPhotoElectricAngularDistribution
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4VPhotoElectricAngularDistribution(const G4String& name);
|
||||
|
||||
virtual ~G4VPhotoElectricAngularDistribution();
|
||||
|
||||
virtual G4ThreeVector GetPhotoElectronDirection(const G4ThreeVector& direction,
|
||||
const G4double kineticEnergy,
|
||||
const G4ThreeVector& polarization,
|
||||
const G4int shellID) const = 0;
|
||||
|
||||
virtual void PrintGeneratorInformation() const = 0;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
// hide assignment operator
|
||||
G4VPhotoElectricAngularDistribution & operator=(const G4VPhotoElectricAngularDistribution &right);
|
||||
G4VPhotoElectricAngularDistribution(const G4VPhotoElectricAngularDistribution&);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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$
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 22 Jan 2003 V.Ivanchenko Cut per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
// Base class for a strategy pattern encapsulating algorithms to test the range
|
||||
// of a particle
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4VRANGETEST_HH
|
||||
#define G4VRANGETEST_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
class G4ParticleDefinition;
|
||||
class G4MaterialCutsCouple;
|
||||
|
||||
class G4VRangeTest {
|
||||
|
||||
public:
|
||||
|
||||
G4VRangeTest() { }
|
||||
|
||||
virtual ~G4VRangeTest() { }
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double energy,
|
||||
G4double safety) const = 0;
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,248 +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$
|
||||
//
|
||||
// 3.4.2000 Veronique Lefebure:
|
||||
// Move utils/include/G4VEnergyLoss.hh to
|
||||
// lowenergy/include/G4VeLowEnergyLoss.hh
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
//
|
||||
// Class Description
|
||||
//
|
||||
// General service class for the energy loss classes
|
||||
//
|
||||
// It contains code needed to compute the range tables,
|
||||
// time tables, the inverse range tables and some auxiliary
|
||||
// tables.
|
||||
// The energy loss fluctuation code is here,too.
|
||||
//
|
||||
// All the EnergyLoss classes are inherited from G4VeLowEnergyLoss
|
||||
// class.
|
||||
//
|
||||
// -----------------------------------------------------------
|
||||
// created on 28 January 2000 by L. Urban
|
||||
// -----------------------------------------------------------
|
||||
//
|
||||
// Modifications:
|
||||
// 20/09/00 V.Ivanchenko update fluctuations
|
||||
// 23/11/01 V.Ivanchenko Move static member-functions from header to source
|
||||
// 22/01/03 V.Ivanchenko Cut per range
|
||||
//
|
||||
// Class description:
|
||||
// Abstract class for Low Energy Electromagnetic electron energy loss
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -----------------------------------------------------------
|
||||
|
||||
#ifndef G4VeLowEnergyLoss_h
|
||||
#define G4VeLowEnergyLoss_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4Poisson.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4VContinuousDiscreteProcess.hh"
|
||||
#include "G4PhysicsLogVector.hh"
|
||||
#include "G4PhysicsLinearVector.hh"
|
||||
#include "G4MaterialCutsCouple.hh"
|
||||
|
||||
class G4VeLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4VeLowEnergyLoss(const G4String& ,
|
||||
G4ProcessType aType = fNotDefined );
|
||||
G4VeLowEnergyLoss(G4VeLowEnergyLoss &);
|
||||
|
||||
virtual ~G4VeLowEnergyLoss();
|
||||
|
||||
virtual G4double GetContinuousStepLimit(const G4Track& track,
|
||||
G4double previousStepSize,
|
||||
G4double currentMinimumStep,
|
||||
G4double& currentSafety) = 0 ;
|
||||
|
||||
virtual G4VParticleChange* AlongStepDoIt(const G4Track& track,
|
||||
const G4Step& Step) = 0 ;
|
||||
|
||||
virtual G4double GetMeanFreePath(const G4Track& track,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition) = 0;
|
||||
|
||||
virtual G4VParticleChange* PostStepDoIt(const G4Track& track,
|
||||
const G4Step& Step) = 0;
|
||||
|
||||
|
||||
|
||||
protected:// with description
|
||||
|
||||
// code for the energy loss fluctuation
|
||||
|
||||
G4double GetLossWithFluct(const G4DynamicParticle* aParticle,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double MeanLoss,
|
||||
G4double step);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// hide default constructor and assignment operator as private
|
||||
G4VeLowEnergyLoss();
|
||||
G4VeLowEnergyLoss & operator=(const G4VeLowEnergyLoss &right);
|
||||
|
||||
protected:
|
||||
|
||||
// data members to speed up the fluctuation calculation
|
||||
const G4Material* lastMaterial;
|
||||
G4int imat;
|
||||
G4double f1Fluct,f2Fluct,e1Fluct,e2Fluct,rateFluct,ipotFluct;
|
||||
G4double e1LogFluct,e2LogFluct,ipotLogFluct;
|
||||
|
||||
const G4int nmaxCont1,nmaxCont2 ;
|
||||
|
||||
// static part of the class
|
||||
|
||||
public: // With description
|
||||
|
||||
static void SetRndmStep (G4bool value);
|
||||
// use / do not use randomisation in energy loss steplimit
|
||||
// ( default = no randomisation)
|
||||
|
||||
static void SetEnlossFluc (G4bool value);
|
||||
// compute energy loss with/without fluctuation
|
||||
// ( default : with fluctuation)
|
||||
|
||||
static void SetStepFunction (G4double c1, G4double c2);
|
||||
// sets values for data members used to compute the step limit:
|
||||
// dRoverRange : max. relative range change in one step,
|
||||
// finalRange : if range <= finalRange --> last step for the particle.
|
||||
|
||||
|
||||
protected: // With description
|
||||
|
||||
// Build range table starting from the DEDXtable
|
||||
static G4PhysicsTable*
|
||||
BuildRangeTable(G4PhysicsTable* theDEDXTable,
|
||||
G4PhysicsTable* theRangeTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin);
|
||||
|
||||
// Build time tables starting from the DEDXtable
|
||||
static G4PhysicsTable*
|
||||
BuildLabTimeTable(G4PhysicsTable* theDEDXTable,
|
||||
G4PhysicsTable* theLabTimeTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin);
|
||||
|
||||
static G4PhysicsTable*
|
||||
BuildProperTimeTable(G4PhysicsTable* theDEDXTable,
|
||||
G4PhysicsTable* ProperTimeTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin);
|
||||
|
||||
// Build tables of coefficients needed for inverting the range table
|
||||
static G4PhysicsTable*
|
||||
BuildRangeCoeffATable(G4PhysicsTable* theRangeTable,
|
||||
G4PhysicsTable* theCoeffATable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin);
|
||||
static G4PhysicsTable*
|
||||
BuildRangeCoeffBTable(G4PhysicsTable* theRangeTable,
|
||||
G4PhysicsTable* theCoeffBTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin);
|
||||
static G4PhysicsTable*
|
||||
BuildRangeCoeffCTable(G4PhysicsTable* theRangeTable,
|
||||
G4PhysicsTable* theCoeffCTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin);
|
||||
|
||||
// Invert range table
|
||||
static G4PhysicsTable*
|
||||
BuildInverseRangeTable(G4PhysicsTable* theRangeTable,
|
||||
G4PhysicsTable* theRangeCoeffATable,
|
||||
G4PhysicsTable* theRangeCoeffBTable,
|
||||
G4PhysicsTable* theRangeCoeffCTable,
|
||||
G4PhysicsTable* theInverseRangeTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin);
|
||||
|
||||
private:
|
||||
|
||||
static void BuildRangeVector(G4PhysicsTable* theDEDXTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin,
|
||||
G4int materialIndex,G4PhysicsLogVector* rangeVector);
|
||||
|
||||
static void BuildRangeVectorNew(const G4PhysicsTable*,G4int,
|
||||
G4int,G4PhysicsLogVector*);
|
||||
|
||||
static G4double RangeIntLin(G4PhysicsVector* physicsVector
|
||||
,G4int nbin);
|
||||
|
||||
static G4double RangeIntLog(G4PhysicsVector* physicsVector
|
||||
,G4int nbin);
|
||||
|
||||
static void BuildLabTimeVector(G4PhysicsTable* theDEDXTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin,
|
||||
G4int materialIndex,G4PhysicsLogVector* rangeVector);
|
||||
|
||||
static void BuildProperTimeVector(G4PhysicsTable* theDEDXTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin,
|
||||
G4int materialIndex,G4PhysicsLogVector* rangeVector);
|
||||
|
||||
static G4double LabTimeIntLog(G4PhysicsVector* physicsVector
|
||||
,G4int nbin);
|
||||
|
||||
static G4double ProperTimeIntLog(G4PhysicsVector* physicsVector,
|
||||
G4int nbin);
|
||||
|
||||
static void InvertRangeVector(G4PhysicsTable* theRangeTable,
|
||||
G4PhysicsTable* theRangeCoeffATable,
|
||||
G4PhysicsTable* theRangeCoeffBTable,
|
||||
G4PhysicsTable* theRangeCoeffCTable,
|
||||
G4double Tmin,G4double Tmax,G4int nbin,
|
||||
G4int materialIndex,G4PhysicsLogVector* rangeVector);
|
||||
|
||||
|
||||
// data members
|
||||
protected:
|
||||
|
||||
// variables for the integration routines
|
||||
static G4double ParticleMass,taulow,tauhigh,ltaulow,ltauhigh;
|
||||
|
||||
|
||||
static G4double dRoverRange; // dRoverRange is the maximum allowed
|
||||
// deltarange/range in one Step
|
||||
static G4double finalRange; // final step before stopping
|
||||
static G4double c1lim,c2lim,c3lim ; // coeffs for computing steplimit
|
||||
|
||||
static G4bool rndmStepFlag; // control the randomization of the step
|
||||
static G4bool EnlossFlucFlag; // control the energy loss fluctuation
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4VecpssrLiModel.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
|
||||
@@ -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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4VhEnergyLossModel
|
||||
//
|
||||
// Author: Maria Grazia Pia (MariaGrazia.Pia@ge.infn.it)
|
||||
//
|
||||
// Creation date: 7 May 2000
|
||||
//
|
||||
// Modifications:
|
||||
// 22/05/2000 MGP Version compliant with design
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Abstract class for hadron energy loss model
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4VHENERGYLOSSMODEL_HH
|
||||
#define G4VHENERGYLOSSMODEL_HH
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4Material;
|
||||
|
||||
class G4VhEnergyLossModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4VhEnergyLossModel() {};
|
||||
|
||||
virtual ~G4VhEnergyLossModel() {};
|
||||
|
||||
virtual G4double EnergyLoss(const G4DynamicParticle* particle,
|
||||
const G4Material* material) const = 0;
|
||||
|
||||
virtual G4double LowEnergyLimit() const = 0;
|
||||
|
||||
virtual G4double HighEnergyLimit() const = 0;
|
||||
|
||||
virtual G4bool IsInCharge(G4double energy,
|
||||
const G4ParticleDefinition* partDef,
|
||||
const G4Material* material) const = 0;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -24,7 +24,6 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4UAtomicDeexcitation.cc,v 1.11
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4eBremsstrahlungSpectrum.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eCrossSectionHandler.cc,v 1.21 2009-09-27 10:47:42 sincerti Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4eIonisationCrossSectionHandler.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4eIonisationParameters.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// V. Ivanchenko
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4eIonisationSpectrum.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4empCrossSection.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
@@ -1,135 +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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4hQAOModel
|
||||
//
|
||||
// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch)
|
||||
//
|
||||
// Creation date: 27 April 2004
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Electronic stopping power for negative heavy partiles
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4hQAOModel_h
|
||||
#define G4hQAOModel_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VhElectronicStoppingPower.hh"
|
||||
|
||||
class G4Material;
|
||||
class G4Element;
|
||||
|
||||
class G4hQAOModel : public G4VhElectronicStoppingPower
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4hQAOModel();
|
||||
|
||||
~G4hQAOModel();
|
||||
|
||||
G4bool HasMaterial(const G4Material*) {return true;};
|
||||
|
||||
G4double StoppingPower(const G4Material* material,
|
||||
G4double kineticEnergy);
|
||||
|
||||
G4double ElectronicStoppingPower(G4double z,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
private:
|
||||
|
||||
// get number of shell, energy and oscillator strenghts for material
|
||||
G4int GetNumberOfShell(G4int z) const;
|
||||
|
||||
G4double GetShellEnergy(G4int z, G4int nbOfTheShell) const;
|
||||
G4double GetOscillatorEnergy(G4int z, G4int nbOfTheShell) const;
|
||||
G4double GetShellStrength(G4int z, G4int nbOfTheShell) const;
|
||||
G4double GetOccupationNumber(G4int z, G4int ShellNb) const;
|
||||
|
||||
// calculate stopping number for L's term
|
||||
G4double GetL0(G4double normEnergy) const;
|
||||
// terms in Z^2
|
||||
G4double GetL1(G4double normEnergy) const;
|
||||
// terms in Z^3
|
||||
G4double GetL2(G4double normEnergy) const;
|
||||
// terms in Z^4
|
||||
|
||||
// hide assignment operator
|
||||
G4hQAOModel & operator=(const G4hQAOModel &right);
|
||||
G4hQAOModel(const G4hQAOModel&);
|
||||
|
||||
// Z of element at now avaliable for the model
|
||||
static const G4int materialAvailable[6];
|
||||
|
||||
// number, energy and oscillator strenghts
|
||||
// for an harmonic oscillator model of material
|
||||
static const G4int nbofShellForMaterial[6];
|
||||
static const G4double alShellEnergy[3];
|
||||
static const G4double alShellStrength[3];
|
||||
static const G4double siShellEnergy[3];
|
||||
static const G4double siShellStrength[3];
|
||||
static const G4double cuShellEnergy[4];
|
||||
static const G4double cuShellStrength[4];
|
||||
static const G4double taShellEnergy[6];
|
||||
static const G4double taShellStrength[6];
|
||||
static const G4double auShellEnergy[6];
|
||||
static const G4double auShellStrength[6];
|
||||
static const G4double ptShellEnergy[6];
|
||||
static const G4double ptShellStrength[6];
|
||||
|
||||
|
||||
// variable for calculation of stopping number of L's term
|
||||
static const G4double L0[67][2];
|
||||
static const G4double L1[22][2];
|
||||
static const G4double L2[14][2];
|
||||
static const G4int nbOfElectronPerSubShell[1540];
|
||||
static const G4int fNumberOfShells[101];
|
||||
|
||||
G4int numberOfMaterials;
|
||||
G4int sizeL0;
|
||||
G4int sizeL1;
|
||||
G4int sizeL2;
|
||||
|
||||
const G4Material* currentMaterial;
|
||||
const G4Element* currentElement;
|
||||
|
||||
G4double theZieglerFactor;
|
||||
G4double thePlasmonFactor;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4hZiegler1977p
|
||||
//
|
||||
// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch)
|
||||
//
|
||||
// Creation date: 20 July 2000
|
||||
//
|
||||
// Modifications:
|
||||
// 20/07/2000 V.Ivanchenko First implementation
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Electronic stopping power parametrised according to
|
||||
// H.H.Andersen & J.F.Ziegler, Hydrogen Stopping Powers and
|
||||
// Ranges in All Elements, Vol.3, Pergamon Press, 1977
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4hZiegler1977p_h
|
||||
#define G4hZiegler1977p_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VhElectronicStoppingPower.hh"
|
||||
|
||||
class G4Material;
|
||||
|
||||
class G4hZiegler1977p : public G4VhElectronicStoppingPower
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4hZiegler1977p();
|
||||
|
||||
~G4hZiegler1977p();
|
||||
|
||||
G4bool HasMaterial(const G4Material* material);
|
||||
|
||||
G4double StoppingPower(const G4Material* material,
|
||||
G4double kineticEnergy);
|
||||
|
||||
G4double ElectronicStoppingPower(G4double z,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
const G4double protonMassAMU;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -77,7 +77,7 @@ protected:
|
||||
|
||||
private:
|
||||
const G4double protonMassAMU;
|
||||
static G4double a[92][8];
|
||||
static const G4double a[92][8];
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4teoCrossSection.hh 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user