Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010-09-29 18:53:09 bmorgan Exp $
|
||||
# $Id: CMakeLists.txt 66787 2013-01-12 15:17:10Z gcosmo $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.8 2009-06-18 16:18:41 mantero Exp $
|
||||
# $Id: GNUmakefile 71326 2013-06-13 17:08:23Z gcosmo $
|
||||
# --------------------------------------------------------------------
|
||||
# GNUmakefile for electromagnetic sub-library. John Allison, 25/6/98.
|
||||
# --------------------------------------------------------------------
|
||||
@@ -21,7 +21,6 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/standard/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.483 2011-01-04 11:50:19 vnivanch Exp $
|
||||
$Id: History 77345 2013-11-22 16:00:21Z gcosmo $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,219 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
21.11.2013 V. Ivanchenko, tag emlowen-V09-06-48
|
||||
G4QAOLowEnergyLoss, G4hICRU49He, G4hICRU49p,
|
||||
G4hParametrisedLossModel - removed G4ThreadLocal
|
||||
|
||||
20.11.2013 L. Pandola, tag emlowen-V09-06-47
|
||||
Fix double-deletion problem reported by Gabriele
|
||||
and some cosmetics (G4PenelopeBremsstrahlungFS)
|
||||
|
||||
19.11.2013 V. Ivanchenko, tag emlowen-V09-06-46
|
||||
G4LivermoreComptonModel - fixed form-factor parameterisation
|
||||
by increasing number of digits in form-factor table
|
||||
|
||||
17.11.2013 V. Ivanchenko, L. Pandola, tag emlowen-V09-06-45
|
||||
G4LivermorePhotoElectricModel and G4PenelopeIonisationXSHandler,
|
||||
- fixed Coverity defect.
|
||||
|
||||
08.11.2013 V. Ivanchenko, tag emlowen-V09-06-44
|
||||
G4IonParametrisedLossModel - fixed destructor
|
||||
|
||||
08.11.2013 V. Ivanchenko, tag emlowen-V09-06-43
|
||||
G4IonDEDXHandler, G4LivermoreComptonModel,
|
||||
G4LivermoreGammaConversionModel,
|
||||
G4LivermorePhotoElectricModel, G4LivermoreRayleighModel,
|
||||
G4LivermoreBremsstrahlungModel - cleanup
|
||||
|
||||
07.11.2013 V. Ivanchenko, tag emlowen-V09-06-42
|
||||
G4PenelopeBremsstrahlungAngular,
|
||||
G4PenelopeBremsstrahlungFS, G4PenelopeBremsstrahlungModel,
|
||||
G4PenelopeIonisationXSHandler - do not delete
|
||||
G4PhysicsVector at destruction
|
||||
|
||||
07.11.2013 V. Ivanchenko, tag emlowen-V09-06-41
|
||||
G4IonDEDXHandler, G4LivermoreComptonModel,
|
||||
G4LivermoreGammaConversionModel,
|
||||
G4LivermorePhotoElectricModel, G4LivermoreRayleighModel,
|
||||
G4PenelopeCrossSection, G4PenelopeGammaConversionModel,
|
||||
G4PenelopePhotoElectricModel, G4PenelopeRayleighModel
|
||||
- do not delete G4PhysicsVector at destruction
|
||||
|
||||
05.11.2013 V. Ivanchenko, tag emlowen-V09-06-40
|
||||
G4LivermoreComptonModel - fixed compillation problem
|
||||
and problem of spectra due to which previous tag was
|
||||
rejected
|
||||
|
||||
02.11.2013 L. Pandola, tag emlowen-V09-06-39
|
||||
Bug fixes in Penelope Ionisation and Bremsstrahlung
|
||||
after emlowen-V09-06-36. Should occur only in unit
|
||||
tests or by G4EmCalculator.
|
||||
|
||||
01.11.2013 V. Ivanchenko, tag emlowen-V09-06-38
|
||||
G4LivermorePhotoElectricModel - do not upload data in
|
||||
SampleSecondaries method, instead kill the gamma
|
||||
|
||||
01.11.2013 V. Ivanchenko, tag emlowen-V09-06-37
|
||||
G4LivermoreGammaConversionModel, G4LivermoreRayleighModel,
|
||||
G4LivermorePhotoElectricModel, G4LivermoreComptonModel - more
|
||||
accurate read data from file in run time (shoudl be used
|
||||
onlz in Unit tests and by G4EmCalculator)
|
||||
|
||||
31.10.2013 L. Pandola, tag emlowen-V09-06-36
|
||||
Allow for (AutoLock-protected) creation on-the-fly of
|
||||
tables. Nothing changes for loops driven by the RunManager.
|
||||
Allows to get the CrossSection and StoppingPower without
|
||||
crash from Unit Tests and G4EmCalculator
|
||||
|
||||
30.10.2013 L. Pandola, tag emlowen-V09-06-35
|
||||
Implemented G4Cache in G4PenelopeBremsstrahlungFS, to
|
||||
avoid the new/delete mechanism of emlowen-V09-06-34 in
|
||||
a MT-safe way.
|
||||
|
||||
28.10.2013 L. Pandola, tag emlowen-V09-06-34
|
||||
Remove AutoLock from G4PenelopeBremsstrahlungFS. Support
|
||||
vector is allocated and released at every loop (not
|
||||
optimal) to avoid interference of threads.
|
||||
|
||||
27.10.2013 S. Incerti, M. Raine, tag emlowen-V09-06-33
|
||||
Updated sources.cmake
|
||||
Fixed Coverity reports is G4LivermoreComptonMode (VI),
|
||||
G4LivermorePhotoElectricModel (VI) and
|
||||
G4PenelopeComptonModel (LP)
|
||||
|
||||
24.10.2013 S. Incerti, M. Raine, tag emlowen-V09-06-32
|
||||
Added G4MicroElec* processes and models
|
||||
in replacement of G4MuElec*
|
||||
|
||||
22.10.2013, V.Ivanchenko, tag emlowen-V09-06-31
|
||||
G4LivermoreComptonModel, G4LivermoreGammaConversionModel,
|
||||
G4RayleighAngularGenerator - use G4Log, G4Exp
|
||||
|
||||
22.10.2013, V.Ivanchenko, tag emlowen-V09-06-30
|
||||
G4LivermoreGammaConversionModelRC - fixed compillation
|
||||
warnings due non-accurate definition of variables
|
||||
G4LivermoreComptonModel (A.Bagulya) and
|
||||
G4LivermoreBremsstrahlungModel are migrated to MT
|
||||
|
||||
17.10.2013, L.Pandola, tag emlowen-V09-06-29
|
||||
Partially revert the MT migration of emlowen-V09-06-26
|
||||
to fix a problem found by STT. The angular generator of
|
||||
Penelope bremsstrahlung is kept thread-local (one copy
|
||||
per worker).
|
||||
|
||||
16.10.2013, L.Pandola, tag emlowen-V09-06-28
|
||||
Migration to MT for the Penelope Compton model
|
||||
Fix Exception on G4PenelopeOscillatorManager
|
||||
reported by Krzysztof Genser for specific materials
|
||||
|
||||
08.10.2013, L.Pandola, tag emlowen-V09-06-27
|
||||
Enforce const for G4PenelopeBremsstrahlungFS methods
|
||||
used by the workers.
|
||||
Migration to MT for the Penelope Ionisation model,
|
||||
and related helper classes (including Penelope PIXE).
|
||||
|
||||
07.10.2013, L.Pandola, tag emlowen-V09-06-26
|
||||
Migration to MT for the Penelope models of
|
||||
bremsstrahlung and e+ annihilation.
|
||||
Improve CPU performances of G4PenelopePhotoElectricModel
|
||||
|
||||
01.10.2013, L.Pandola, tag emlowen-V09-06-25
|
||||
Migration to MT for G4PenelopePhotoElectricModel,
|
||||
G4PenelopeRayleighModel and G4PenelopeGammaConversionModel
|
||||
|
||||
05.09.2013 M.Asai, tag emlowen-V09-06-24
|
||||
- G4IonDEDXScalingICRU73 - remove GetIon for reference
|
||||
Fe and Ar but use G4IonTable::GetIonMass() instead
|
||||
to prevent unnecessary instantiation of ion objects
|
||||
for individual threads.
|
||||
|
||||
09.08.2013 V.Ivanchenko, tag emlowen-V09-06-23
|
||||
- fixed bug in previous tag
|
||||
|
||||
09.08.2013 V.Ivanchenko, tag emlowen-V09-06-22
|
||||
- G4LivermorePhotoElectricModel - migration to MT
|
||||
|
||||
04.08.2013 S.Incerti, tag emlowen-V09-06-21
|
||||
- G4LivermoreGammaConversionModel - migration to MT
|
||||
|
||||
01.08.2013 V.Ivanchenko, tag emlowen-V09-06-20
|
||||
- G4PenelopeRayleighModel - removed debug printout
|
||||
- G4LivermoreRayleighModel - migration to MT: sharing
|
||||
internal tables between threads, two new methods
|
||||
added InitialiseLocal, InitialiseForElement
|
||||
|
||||
23.07.2013 V.Ivanchenko, tag emlowen-V09-06-18
|
||||
22.07.2013 V.Ivanchenko, tag emlowen-V09-06-17
|
||||
- added protection for MT mode in G4PenelopeRaylModel
|
||||
|
||||
03.07.2013 M.Asai, tag emlowen-V09-06-16
|
||||
- Fix G4IonDEDXScalingICRU73.cc for multi-threading:
|
||||
"referenceAr" and "referenceFe" are now instantiated
|
||||
but not registered to the particel table.
|
||||
|
||||
25.06.2013 S.Incerti, B. Bouguelmouna, tag emlowen-V09-06-15
|
||||
- Fix Mi shell cross section computation in G4teoCrossSection
|
||||
|
||||
17.06.2013 V.Ivanchenko, tag emlowen-V09-06-14
|
||||
- G4IonDEDXHandler, G4IonParametrisedLossModel,
|
||||
G4LivermoreGammaConversionModel,
|
||||
G4PenelopeBremsstrahlungAngular - moved call
|
||||
SetSpline(true) to be always after the vector is
|
||||
filled - only in that case spline interpolation
|
||||
is enabled in the most recent version of G4PhysicsVector
|
||||
|
||||
13.06.2013 M.Karamitros, tag emlowen-V09-06-13
|
||||
- GNUmakefile: Dependency on hadronic package withdrawn
|
||||
|
||||
13.06.2013 M.Karamitros, tag emlowen-V09-06-12
|
||||
- G4LowEPComptonModel.cc : Dependency on G4HadTmpUtil withdrawn
|
||||
|
||||
29.03.2013 L.Pandola, tag emlowen-V09-06-11
|
||||
- replaced "static G4ThreadLocal" with "static const"
|
||||
when applicable
|
||||
- added static keyword to some constants.
|
||||
|
||||
21.02.2013 V.Ivanchenko, L. Pandola, tag emlowen-V09-06-10
|
||||
G4Generator2BN and G4PenelopeComptonModel
|
||||
- removed G4ThreadLocal declarations
|
||||
|
||||
15.02.2013 V.Ivanchenko, tag emlowen-V09-06-09
|
||||
- G4LowEPComptonModel - fixed compillation problem at MAC and Windows
|
||||
|
||||
14.02.2013 V.Ivanchenko, tag emlowen-V09-06-08
|
||||
- G4LowEPComptonModel - J.Brown fixed numerical problem (seen by FPE)
|
||||
|
||||
06.02.2013 S. Incerti, tag emlowen-V09-06-07
|
||||
- Removed useless verbosity
|
||||
|
||||
20.12.2012 V.Ivanchenko, tag emlowen-V09-06-06
|
||||
- Fixed build
|
||||
|
||||
20.12.2012 V.Ivanchenko, tag emlowen-V09-06-05
|
||||
- G4AtomicDeexcitation is return back as number of classes
|
||||
which are still in use
|
||||
- G4PenelopeIonisationModel - removed unused obsolete header
|
||||
|
||||
19.12.2012 V.Ivanchenko, tag emlowen-V09-06-04
|
||||
- Fixed build problems
|
||||
|
||||
19.12.2012 V.Ivanchenko, tag emlowen-V09-06-03
|
||||
- G4AtomicDeexcitation is cloned from G4UAtomicDeexcitation
|
||||
- removed obsolete unused classes
|
||||
|
||||
07.12.2012 V.Ivanchenko, tag emlowen-V09-06-02
|
||||
- G4MuElecInelastic, G4MuElecElastic - substituted calls to obsolete
|
||||
method
|
||||
|
||||
05.12.2012 L. Pandola, tag emlowen-V09-06-01
|
||||
Slightly change the fix on G4LivermorePhotoElectricModel
|
||||
introduced in the previous tag; bug fix #1402
|
||||
|
||||
04.12.2012 A. Mantero, tag emlowen-V09-06-00
|
||||
- G4LivermorePhotoElectricModel: fixed a bug in line 310
|
||||
- G4UAtomDeexcitation: Added some debug options
|
||||
|
||||
12.11.2012 V.Ivanchenko, tag emlowen-V09-05-48
|
||||
- G4MuElecInelasticModel Gunter Folger fixed usage of iterators at
|
||||
boundary of vectors
|
||||
|
||||
@@ -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 $
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.4 2010-11-15 08:24:43 gcosmo Exp $
|
||||
# $Id: sources.cmake 75171 2013-10-29 09:24:43Z gcosmo $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@@ -78,11 +78,6 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4hIonEffChargeSquare.hh
|
||||
G4hNuclearStoppingModel.hh
|
||||
G4hParametrisedLossModel.hh
|
||||
G4hQAOModel.hh
|
||||
G4hSRIM2000p.hh
|
||||
G4hZiegler1977He.hh
|
||||
G4hZiegler1977Nuclear.hh
|
||||
G4hZiegler1977p.hh
|
||||
G4hZiegler1985Nuclear.hh
|
||||
G4hZiegler1985p.hh
|
||||
G4IonChuFluctuationModel.hh
|
||||
@@ -110,6 +105,12 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4LivermoreRayleighModel.hh
|
||||
G4LogLogInterpolation.hh
|
||||
G4LowEPComptonModel.hh
|
||||
G4MicroElecCrossSectionDataSet.hh
|
||||
G4MicroElecElastic.hh
|
||||
G4MicroElecElasticModel.hh
|
||||
G4MicroElecInelastic.hh
|
||||
G4MicroElecInelasticModel.hh
|
||||
G4MicroElecSiStructure.hh
|
||||
G4MuElecCrossSectionDataSet.hh
|
||||
G4MuElecElastic.hh
|
||||
G4MuElecElasticModel.hh
|
||||
@@ -137,8 +138,6 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4PhotoElectricAngularGeneratorSauterGavrila.hh
|
||||
G4PhotoElectricAngularGeneratorSimple.hh
|
||||
G4QAOLowEnergyLoss.hh
|
||||
G4RangeNoTest.hh
|
||||
G4RangeTest.hh
|
||||
G4RayleighAngularGenerator.hh
|
||||
G4RayleighScattering.hh
|
||||
G4SemiLogInterpolation.hh
|
||||
@@ -152,19 +151,13 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4VecpssrKModel.hh
|
||||
G4VecpssrLiModel.hh
|
||||
G4VecpssrMiModel.hh
|
||||
G4VeLowEnergyLoss.hh
|
||||
G4VEMDataSet.hh
|
||||
G4VEnergySpectrum.hh
|
||||
G4VhElectronicStoppingPower.hh
|
||||
G4VhEnergyLossModel.hh
|
||||
G4VhNuclearStoppingPower.hh
|
||||
G4VhShellCrossSection.hh
|
||||
G4VIonDEDXScalingAlgorithm.hh
|
||||
G4VLowEnergyDiscretePhotonProcess.hh
|
||||
G4VLowEnergyModel.hh
|
||||
G4VLowEnergyTestableDiscreteProcess.hh
|
||||
G4VPhotoElectricAngularDistribution.hh
|
||||
G4VRangeTest.hh
|
||||
SOURCES
|
||||
G4AtomicDeexcitation.cc
|
||||
G4AtomicTransitionManager.cc
|
||||
@@ -200,11 +193,6 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4hIonEffChargeSquare.cc
|
||||
G4hNuclearStoppingModel.cc
|
||||
G4hParametrisedLossModel.cc
|
||||
G4hQAOModel.cc
|
||||
G4hSRIM2000p.cc
|
||||
G4hZiegler1977He.cc
|
||||
G4hZiegler1977Nuclear.cc
|
||||
G4hZiegler1977p.cc
|
||||
G4hZiegler1985Nuclear.cc
|
||||
G4hZiegler1985p.cc
|
||||
G4IonChuFluctuationModel.cc
|
||||
@@ -231,6 +219,12 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4LivermoreRayleighModel.cc
|
||||
G4LogLogInterpolation.cc
|
||||
G4LowEPComptonModel.cc
|
||||
G4MicroElecCrossSectionDataSet.cc
|
||||
G4MicroElecElastic.cc
|
||||
G4MicroElecElasticModel.cc
|
||||
G4MicroElecInelastic.cc
|
||||
G4MicroElecInelasticModel.cc
|
||||
G4MicroElecSiStructure.cc
|
||||
G4MuElecCrossSectionDataSet.cc
|
||||
G4MuElecElastic.cc
|
||||
G4MuElecElasticModel.cc
|
||||
@@ -258,7 +252,6 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4PhotoElectricAngularGeneratorSauterGavrila.cc
|
||||
G4PhotoElectricAngularGeneratorSimple.cc
|
||||
G4QAOLowEnergyLoss.cc
|
||||
G4RangeTest.cc
|
||||
G4RayleighAngularGenerator.cc
|
||||
G4RayleighScattering.cc
|
||||
G4SemiLogInterpolation.cc
|
||||
@@ -271,15 +264,12 @@ GEANT4_DEFINE_MODULE(NAME G4emlowenergy
|
||||
G4VecpssrKModel.cc
|
||||
G4VecpssrLiModel.cc
|
||||
G4VecpssrMiModel.cc
|
||||
G4VeLowEnergyLoss.cc
|
||||
G4VEMDataSet.cc
|
||||
G4VhElectronicStoppingPower.cc
|
||||
G4VhNuclearStoppingPower.cc
|
||||
G4VhShellCrossSection.cc
|
||||
G4VIonDEDXScalingAlgorithm.cc
|
||||
G4VLowEnergyDiscretePhotonProcess.cc
|
||||
G4VLowEnergyModel.cc
|
||||
G4VPhotoElectricAngularDistribution.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4baryons
|
||||
G4bosons
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.cc,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)
|
||||
@@ -158,7 +157,7 @@ std::map<G4int,std::vector<G4AtomicShell*>,std::less<G4int> >::iterator pos;
|
||||
|
||||
}
|
||||
|
||||
G4AtomicTransitionManager* G4AtomicTransitionManager::instance = 0;
|
||||
G4ThreadLocal G4AtomicTransitionManager* G4AtomicTransitionManager::instance = 0;
|
||||
|
||||
G4AtomicTransitionManager* G4AtomicTransitionManager::Instance()
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4BoldyshevTripletModel.cc 74822 2013-10-22 14:42:13Z gcosmo $
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
//
|
||||
@@ -233,6 +233,12 @@ void G4BoldyshevTripletModel::SampleSecondaries(std::vector<G4DynamicParticle*>*
|
||||
*(S - electron_mass_c2*electron_mass_c2)*sin(theta_re)*sin(theta_re);
|
||||
ener_re = electron_mass_c2 * (S + electron_mass_c2*electron_mass_c2)/sqrt(D2);
|
||||
|
||||
// New Recoil energy calculation
|
||||
|
||||
G4double momentum_recoil = 2* (electron_mass_c2) * (std::cos(theta_re)/(std::sin(phi_re)*std::sin(phi_re)));
|
||||
G4double ener_recoil = sqrt( momentum_recoil*momentum_recoil + electron_mass_c2*electron_mass_c2);
|
||||
ener_re = ener_recoil;
|
||||
|
||||
// G4cout << "electron de retroceso " << ener_re << " " << theta_re << " " << phi_re << G4endl;
|
||||
|
||||
// Recoil electron creation
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4BremsstrahlungCrossSectionHandler.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4BremsstrahlungParameters.cc 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.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
|
||||
// $Id$
|
||||
// $Id: G4CrossSectionDataSet.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Riccardo Capra <capra@ge.infn.it>
|
||||
// Code review by MGP October 2007: removed inheritance from concrete class
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4CrossSectionHandler.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4DopplerProfile.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4FluoTransition.cc,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.cc 68038 2013-03-13 14:16:11Z gcosmo $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4Generator2BS.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -164,7 +164,7 @@ G4double G4IonChuFluctuationModel::ChuFluctuationModel(const G4Material* materia
|
||||
G4double zeff = (material->GetElectronDensity())/
|
||||
(material->GetTotNbOfAtomsPerVolume()) ;
|
||||
|
||||
static G4double a[96][4] = {
|
||||
static const G4double a[96][4] = {
|
||||
{-0.3291, -0.8312, 0.2460, -1.0220},
|
||||
{-0.5615, -0.5898, 0.5205, -0.7258},
|
||||
{-0.5280, -0.4981, 0.5519, -0.5865},
|
||||
|
||||
@@ -105,10 +105,10 @@ G4IonDEDXHandler::~G4IonDEDXHandler() {
|
||||
// All stopping power vectors built according to Bragg's addivitiy rule
|
||||
// are deleted. All other stopping power vectors are expected to be
|
||||
// deleted by their creator class (sub-class of G4VIonDEDXTable).
|
||||
DEDXTableBraggRule::iterator iter = stoppingPowerTableBragg.begin();
|
||||
DEDXTableBraggRule::iterator iter_end = stoppingPowerTableBragg.end();
|
||||
// DEDXTableBraggRule::iterator iter = stoppingPowerTableBragg.begin();
|
||||
// DEDXTableBraggRule::iterator iter_end = stoppingPowerTableBragg.end();
|
||||
|
||||
for(;iter != iter_end; iter++) delete iter -> second;
|
||||
// for(;iter != iter_end; iter++) delete iter -> second;
|
||||
stoppingPowerTableBragg.clear();
|
||||
|
||||
stoppingPowerTable.clear();
|
||||
@@ -285,7 +285,6 @@ G4bool G4IonDEDXHandler::BuildDEDXTable(
|
||||
new G4LPhysicsFreeVector(nmbdEdxBins,
|
||||
lowerEdge,
|
||||
upperEdge);
|
||||
dEdxBragg -> SetSpline(useSplines);
|
||||
|
||||
const G4double* massFractionVector = material -> GetFractionVector();
|
||||
|
||||
@@ -303,6 +302,7 @@ G4bool G4IonDEDXHandler::BuildDEDXTable(
|
||||
|
||||
dEdxBragg -> PutValues(j, edge, value);
|
||||
}
|
||||
dEdxBragg -> SetSpline(useSplines);
|
||||
|
||||
#ifdef PRINT_DEBUG
|
||||
G4cout << "G4IonDEDXHandler::BuildPhysicsVector() for ion with Z="
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include "G4IonDEDXScalingICRU73.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4IonTable.hh"
|
||||
#include "G4Material.hh"
|
||||
|
||||
|
||||
@@ -63,13 +64,12 @@ G4IonDEDXScalingICRU73::G4IonDEDXScalingICRU73(
|
||||
G4int maxAtomicNumberIon) :
|
||||
minAtomicNumber( minAtomicNumberIon ),
|
||||
maxAtomicNumber( maxAtomicNumberIon ),
|
||||
referenceFe( 0 ),
|
||||
referencePrepared( false ),
|
||||
atomicNumberRefFe( 26 ),
|
||||
massNumberRefFe( 56 ),
|
||||
atomicNumberRefPow23Fe( 0 ),
|
||||
chargeRefFe( 0 ),
|
||||
massRefFe( 0 ),
|
||||
referenceAr( 0 ),
|
||||
atomicNumberRefAr( 18 ),
|
||||
massNumberRefAr( 40 ),
|
||||
atomicNumberRefPow23Ar( 0 ),
|
||||
@@ -89,30 +89,24 @@ G4IonDEDXScalingICRU73::G4IonDEDXScalingICRU73(
|
||||
// ###########################################################################
|
||||
|
||||
G4IonDEDXScalingICRU73::~G4IonDEDXScalingICRU73() {
|
||||
|
||||
}
|
||||
|
||||
// ###########################################################################
|
||||
|
||||
void G4IonDEDXScalingICRU73::CreateReferenceParticles() {
|
||||
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
|
||||
G4double excitationEnergy = 0.0;
|
||||
|
||||
referenceFe = particleTable -> GetIon(atomicNumberRefFe, massNumberRefFe,
|
||||
excitationEnergy);
|
||||
referenceAr = particleTable -> GetIon(atomicNumberRefAr, massNumberRefAr,
|
||||
excitationEnergy);
|
||||
|
||||
massRefFe = referenceFe -> GetPDGMass();
|
||||
massRefAr = referenceAr -> GetPDGMass();
|
||||
G4IonTable* ionTable = G4IonTable::GetIonTable();
|
||||
|
||||
chargeRefFe = referenceFe -> GetPDGCharge();
|
||||
chargeRefAr = referenceAr -> GetPDGCharge();
|
||||
massRefFe = ionTable->GetIonMass(atomicNumberRefFe,massNumberRefFe);
|
||||
massRefAr = ionTable->GetIonMass(atomicNumberRefAr,massNumberRefAr);
|
||||
|
||||
chargeRefFe = G4double(atomicNumberRefFe)*CLHEP::eplus;
|
||||
chargeRefAr = G4double(atomicNumberRefAr)*CLHEP::eplus;
|
||||
|
||||
atomicNumberRefPow23Fe = std::pow(G4double(atomicNumberRefFe), 2./3.);
|
||||
atomicNumberRefPow23Ar = std::pow(G4double(atomicNumberRefAr), 2./3.);
|
||||
|
||||
referencePrepared = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +127,7 @@ G4double G4IonDEDXScalingICRU73::ScalingFactorEnergy (
|
||||
cacheAtomicNumber != atomicNumberRefFe &&
|
||||
cacheAtomicNumber != atomicNumberRefAr) {
|
||||
|
||||
if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
|
||||
if(!referencePrepared) CreateReferenceParticles();
|
||||
|
||||
if( useFe )
|
||||
factor = cacheMassNumber * (massRefFe / cacheMass) / massNumberRefFe;
|
||||
@@ -161,7 +155,7 @@ G4double G4IonDEDXScalingICRU73::ScalingFactorDEDX(
|
||||
cacheAtomicNumber != atomicNumberRefFe &&
|
||||
cacheAtomicNumber != atomicNumberRefAr) {
|
||||
|
||||
if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
|
||||
if(!referencePrepared) CreateReferenceParticles();
|
||||
|
||||
if( useFe ) {
|
||||
|
||||
@@ -219,7 +213,7 @@ G4int G4IonDEDXScalingICRU73::AtomicNumberBaseIon(
|
||||
atomicNumberIon != atomicNumberRefFe &&
|
||||
atomicNumberIon != atomicNumberRefAr) {
|
||||
|
||||
if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
|
||||
if(!referencePrepared) CreateReferenceParticles();
|
||||
|
||||
if( useFe ) atomicNumber = atomicNumberRefFe;
|
||||
else atomicNumber = atomicNumberRefAr;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4IonParametrisedLossModel.cc 76243 2013-11-08 11:11:38Z gcosmo $
|
||||
//
|
||||
// ===========================================================================
|
||||
// GEANT4 class source file
|
||||
@@ -159,30 +159,12 @@ G4IonParametrisedLossModel::G4IonParametrisedLossModel(
|
||||
|
||||
G4IonParametrisedLossModel::~G4IonParametrisedLossModel() {
|
||||
|
||||
// Range vs energy table objects are deleted and the container is cleared
|
||||
RangeEnergyTable::iterator iterRange = r.begin();
|
||||
RangeEnergyTable::iterator iterRange_end = r.end();
|
||||
|
||||
for(;iterRange != iterRange_end; iterRange++) delete iterRange -> second;
|
||||
r.clear();
|
||||
|
||||
// Energy vs range table objects are deleted and the container is cleared
|
||||
EnergyRangeTable::iterator iterEnergy = E.begin();
|
||||
EnergyRangeTable::iterator iterEnergy_end = E.end();
|
||||
|
||||
for(;iterEnergy != iterEnergy_end; iterEnergy++) delete iterEnergy -> second;
|
||||
E.clear();
|
||||
|
||||
// dE/dx table objects are deleted and the container is cleared
|
||||
LossTableList::iterator iterTables = lossTableList.begin();
|
||||
LossTableList::iterator iterTables_end = lossTableList.end();
|
||||
|
||||
for(;iterTables != iterTables_end; iterTables++) delete *iterTables;
|
||||
lossTableList.clear();
|
||||
|
||||
// The Bragg ion and Bethe Bloch objects are deleted
|
||||
delete betheBlochModel;
|
||||
delete braggIonModel;
|
||||
}
|
||||
|
||||
// #########################################################################
|
||||
@@ -1090,7 +1072,6 @@ void G4IonParametrisedLossModel::BuildRangeVector(
|
||||
new G4LPhysicsFreeVector(nmbBins+1,
|
||||
lowerEnergy,
|
||||
upperEnergy);
|
||||
energyRangeVector -> SetSpline(true);
|
||||
|
||||
G4double dedxLow = ComputeDEDXPerVolume(material,
|
||||
particle,
|
||||
@@ -1149,26 +1130,26 @@ void G4IonParametrisedLossModel::BuildRangeVector(
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
G4bool b;
|
||||
energyRangeVector -> SetSpline(true);
|
||||
|
||||
G4double lowerRangeEdge =
|
||||
energyRangeVector -> GetValue(lowerEnergy, b);
|
||||
energyRangeVector -> Value(lowerEnergy);
|
||||
G4double upperRangeEdge =
|
||||
energyRangeVector -> GetValue(upperEnergy, b);
|
||||
energyRangeVector -> Value(upperEnergy);
|
||||
|
||||
G4LPhysicsFreeVector* rangeEnergyVector
|
||||
= new G4LPhysicsFreeVector(nmbBins+1,
|
||||
lowerRangeEdge,
|
||||
upperRangeEdge);
|
||||
rangeEnergyVector -> SetSpline(true);
|
||||
|
||||
for(size_t i = 0; i < nmbBins+1; i++) {
|
||||
G4double energy = energyRangeVector -> GetLowEdgeEnergy(i);
|
||||
G4double energy = energyRangeVector -> Energy(i);
|
||||
rangeEnergyVector ->
|
||||
PutValues(i, energyRangeVector -> GetValue(energy, b), energy);
|
||||
PutValues(i, energyRangeVector -> Value(energy), energy);
|
||||
}
|
||||
|
||||
rangeEnergyVector -> SetSpline(true);
|
||||
|
||||
#ifdef PRINT_DEBUG_TABLES
|
||||
G4cout << *energyLossVector
|
||||
<< *energyRangeVector
|
||||
@@ -1197,18 +1178,17 @@ G4double G4IonParametrisedLossModel::ComputeLossForStep(
|
||||
G4PhysicsVector* rangeEnergy = rangeCacheRangeEnergy;
|
||||
|
||||
if(energyRange != 0 && rangeEnergy != 0) {
|
||||
G4bool b;
|
||||
|
||||
G4double lowerEnEdge = energyRange -> GetLowEdgeEnergy( 0 );
|
||||
G4double lowerRangeEdge = rangeEnergy -> GetLowEdgeEnergy( 0 );
|
||||
G4double lowerEnEdge = energyRange -> Energy( 0 );
|
||||
G4double lowerRangeEdge = rangeEnergy -> Energy( 0 );
|
||||
|
||||
// Computing range for pre-step kinetic energy:
|
||||
G4double range = energyRange -> GetValue(kineticEnergy, b);
|
||||
G4double range = energyRange -> Value(kineticEnergy);
|
||||
|
||||
// Energy below vector boundary:
|
||||
if(kineticEnergy < lowerEnEdge) {
|
||||
|
||||
range = energyRange -> GetValue(lowerEnEdge, b);
|
||||
range = energyRange -> Value(lowerEnEdge);
|
||||
range *= std::sqrt(kineticEnergy / lowerEnEdge);
|
||||
}
|
||||
|
||||
@@ -1231,7 +1211,7 @@ G4double G4IonParametrisedLossModel::ComputeLossForStep(
|
||||
}
|
||||
else {
|
||||
|
||||
G4double energy = rangeEnergy -> GetValue(range - stepLength, b);
|
||||
G4double energy = rangeEnergy -> Value(range - stepLength);
|
||||
loss = kineticEnergy - energy;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ G4double G4IonYangFluctuationModel::YangFluctuationModel(const G4Material* mater
|
||||
// 2 for ions in atomic gases
|
||||
// 3 for ions in molecular gases
|
||||
// 4 for ions in solids
|
||||
static G4double b[5][4] = {
|
||||
static const G4double b[5][4] = {
|
||||
{0.1014, 0.3700, 0.9642, 3.987},
|
||||
{0.1955, 0.6941, 2.522, 1.040},
|
||||
{0.05058, 0.08975, 0.1419, 10.80},
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id$
|
||||
// $Id: G4LinInterpolation.cc 66241 2012-12-13 18:34:42Z gunter $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user