Import Geant4 5.1.0 source tree
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicShell.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransition.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AugerData.hh
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
//
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4BremsstrahlungParameters.hh,v 1.6 2001/11/29 19:01:44 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4BremsstrahlungParameters.hh,v 1.8 2003/02/28 08:41:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// V. Ivanchenko (Vladimir.Ivantchenko@cern.ch)
|
||||
@@ -34,6 +34,8 @@
|
||||
// 12.09.01 V.Ivanchenko Add activeZ and paramA
|
||||
// 25.09.01 V.Ivanchenko Add parameter C and change interface to B
|
||||
// 29.11.01 V.Ivanchenko Parametrisation is updated
|
||||
// 21.02.03 V.Ivanchenko Number of parameters is defined in the constructor
|
||||
// 28.02.03 V.Ivanchenko Filename is defined in the constructor
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -56,32 +58,32 @@ class G4VEMDataSet;
|
||||
class G4VDataSetAlgorithm;
|
||||
|
||||
class G4BremsstrahlungParameters {
|
||||
|
||||
|
||||
public:
|
||||
|
||||
G4BremsstrahlungParameters(G4int minZ = 1, G4int maxZ = 99);
|
||||
G4BremsstrahlungParameters(const G4String& name, size_t num, G4int minZ = 1, G4int maxZ = 99);
|
||||
|
||||
~G4BremsstrahlungParameters();
|
||||
|
||||
|
||||
G4double Parameter(G4int parameterIndex, G4int Z, G4double energy) const;
|
||||
|
||||
G4double ParameterC(G4int index) const;
|
||||
|
||||
|
||||
void PrintData() const;
|
||||
|
||||
private:
|
||||
|
||||
// hide assignment operator
|
||||
// hide assignment operator
|
||||
G4BremsstrahlungParameters(const G4BremsstrahlungParameters&);
|
||||
G4BremsstrahlungParameters & operator=(const G4BremsstrahlungParameters &right);
|
||||
|
||||
void LoadData();
|
||||
void LoadData(const G4String& name);
|
||||
|
||||
G4std::map<G4int,G4VEMDataSet*,G4std::less<G4int> > param;
|
||||
|
||||
G4DataVector paramC;
|
||||
G4DataVector activeZ;
|
||||
|
||||
|
||||
G4int zMin;
|
||||
G4int zMax;
|
||||
|
||||
@@ -90,7 +92,7 @@ private:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4CompositeEMDataSet.hh,v 1.4 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4CrossSectionHandler.hh,v 1.7 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4EMDataSet.hh,v 1.3 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4FluoTransition.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LinInterpolation.hh,v 1.2 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LogLogInterpolation.hh,v 1.3 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4LowEnergyBremsstrahlung.hh,v 1.30 2002/07/19 17:44:43 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4LowEnergyBremsstrahlung.hh,v 1.31 2003/02/21 17:05:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
//
|
||||
@@ -34,6 +34,7 @@
|
||||
// 10 Oct 2001 M.G. Pia Revision to improve code quality
|
||||
// and consistency with design
|
||||
// 29 Nov 2001 V.Ivanchenko New parametrisation of EEDL data
|
||||
// 21 Feb 2003 V.Ivanchenko Energy bins for spectrum are defined here
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -73,7 +74,7 @@ public:
|
||||
void BuildPhysicsTable(const G4ParticleDefinition& particleType);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& track,
|
||||
const G4Step& step);
|
||||
const G4Step& step);
|
||||
|
||||
void SetCutForLowEnSecPhotons(G4double cut);
|
||||
|
||||
@@ -96,6 +97,7 @@ private:
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* theMeanFreePath;
|
||||
G4VEnergySpectrum* energySpectrum;
|
||||
G4DataVector energyBins;
|
||||
|
||||
// Lower limit for generation of gamma in this model
|
||||
G4DataVector cutForSecondaryPhotons;
|
||||
@@ -103,9 +105,9 @@ private:
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
|
||||
// $Id: G4LowEnergyCompton.hh,v 1.19 2001/12/13 12:04:13 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LowEnergyGammaConversion.hh,v 1.14 2001/10/08 07:45:33 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4LowEnergyIonisation.hh,v 1.38 2002/07/19 17:44:43 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4LowEnergyIonisation.hh,v 1.39 2003/02/07 15:39:02 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
//
|
||||
@@ -36,6 +36,7 @@
|
||||
// consistency with design
|
||||
// 29 Nov 2001 V.Ivanchenko New parametrisation of EEDL data
|
||||
// 31 May 2002 V.Ivanchenko Add Auger flag
|
||||
// 06 Feb 2003 V.Ivanchenko Change signature of deexcitation for cut per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -95,7 +96,7 @@ protected:
|
||||
|
||||
protected:
|
||||
|
||||
virtual G4std::vector<G4DynamicParticle*>* DeexciteAtom(const G4Material* material,
|
||||
virtual G4std::vector<G4DynamicParticle*>* DeexciteAtom(const G4MaterialCutsCouple* couple,
|
||||
G4double incidentEnergy,
|
||||
G4double eLoss);
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LowEnergyPhotoElectric.hh,v 1.25 2002/06/01 03:14:18 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LowEnergyPolarizedCompton.hh,v 1.8 2002/05/31 18:11:45 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LowEnergyRayleigh.hh,v 1.15 2001/10/08 07:45:35 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4PenelopeBremsstrahlung.hh,v 1.2 2003/03/19 10:27:44 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 03 Feb 2003 L. Pandola 1st implementation
|
||||
// 18 Mar 2003 L. Pandola positrons added
|
||||
// Class description:
|
||||
// Penelope electromagnetic process, electron and positron Bremsstrahlung
|
||||
// --------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4PENELOPEBREMSSTRAHLUNG_HH
|
||||
#define G4PENELOPEBREMSSTRAHLUNG_HH 1
|
||||
|
||||
#include "G4eLowEnergyLoss.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4PenelopeBremsstrahlungAngular.hh"
|
||||
|
||||
class G4Track;
|
||||
class G4Step;
|
||||
class G4ParticleDefinition;
|
||||
class G4VParticleChange;
|
||||
class G4VEMDataSet;
|
||||
class G4VEnergySpectrum;
|
||||
class G4VCrossSectionHandler;
|
||||
class G4PenelopeBremsstrahlung : public G4eLowEnergyLoss
|
||||
{
|
||||
typedef G4std::vector<G4PenelopeBremsstrahlungAngular*> G4AngularData;
|
||||
//vector of pointers to the angular factors of the elements in each material
|
||||
|
||||
public:
|
||||
|
||||
G4PenelopeBremsstrahlung(const G4String& processName = "PenelopeBrem");
|
||||
|
||||
~G4PenelopeBremsstrahlung();
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
void BuildPhysicsTable(const G4ParticleDefinition& particleType);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& track,
|
||||
const G4Step& step);
|
||||
|
||||
void SetCutForLowEnSecPhotons(G4double cut);
|
||||
|
||||
void PrintInfoDefinition();
|
||||
|
||||
//For testing purpose only
|
||||
G4double DumpMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
|
||||
|
||||
protected:
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& track,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition );
|
||||
|
||||
private:
|
||||
|
||||
// Hide copy constructor and assignment operator as private
|
||||
G4PenelopeBremsstrahlung(const G4PenelopeBremsstrahlung& );
|
||||
G4PenelopeBremsstrahlung& operator = (const G4PenelopeBremsstrahlung& right);
|
||||
|
||||
void BuildLossTable(const G4ParticleDefinition& ParticleType);
|
||||
|
||||
void LoadAngularData();
|
||||
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* theMeanFreePath;
|
||||
G4VEnergySpectrum* energySpectrum;
|
||||
G4std::vector<G4AngularData*> materialAngularData;
|
||||
//Vector of pointers to the vectors containing tha angular data
|
||||
//one element=one material
|
||||
|
||||
// Lower limit for generation of gamma in this model
|
||||
G4DataVector cutForSecondaryPhotons;
|
||||
G4double cutForPhotons;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4PenelopeBremsstrahlungAngular.hh,v 1.1 2003/03/13 17:23:03 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 04 Feb 2003 L. Pandola 1st implementation
|
||||
// Class description:
|
||||
// Calculation of angular distribution for Penelope Bremsstrahlung
|
||||
// --------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4PENELOPEBREMSSTRAHLUNGANGULAR_HH
|
||||
#define G4PENELOPEBREMSSTRAHLUNGANGULAR_HH 1
|
||||
#include "globals.hh"
|
||||
|
||||
class G4PenelopeBremsstrahlungAngular
|
||||
{
|
||||
|
||||
private:
|
||||
enum{NumberofZPoints=6,
|
||||
NumberofEPoints=6,
|
||||
NumberofKPoints=4,
|
||||
reducedEnergyGrid=21};
|
||||
|
||||
public:
|
||||
|
||||
G4PenelopeBremsstrahlungAngular(G4int Zmat);
|
||||
~G4PenelopeBremsstrahlungAngular();
|
||||
G4double ExtractCosTheta(G4double PrimaryEnergy,G4double GammaEnergy);
|
||||
|
||||
private:
|
||||
|
||||
void InterpolationTableForZ(); //Initialization of tables (part 1)
|
||||
void InterpolationForK(); //Initialization of tables (part 2)
|
||||
|
||||
G4double betas[NumberofEPoints]; //betas for interpolation
|
||||
//tables for interpolation
|
||||
G4double Q1[NumberofEPoints][NumberofKPoints],Q2[NumberofEPoints][NumberofKPoints];
|
||||
//expanded tables for interpolation
|
||||
G4double Q1E[NumberofEPoints][reducedEnergyGrid],Q2E[NumberofEPoints][reducedEnergyGrid];
|
||||
//Z of the element
|
||||
G4int Zmat;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4PenelopeBremsstrahlungContinuous.hh,v 1.2 2003/03/19 10:28:28 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 20 Feb 2003 L. Pandola 1st implementation
|
||||
// 17 Mar 2003 L. Pandola Added the correction for positrons
|
||||
// Class description:
|
||||
// Calculation of continuous energy loss for Penelope Bremsstrahlung
|
||||
// It is used both for electrons and positrons
|
||||
// --------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4PENELOPEBREMSSTRAHLUNGCONTINUOUS_HH
|
||||
#define G4PENELOPEBREMSSTRAHLUNGCONTINUOUS_HH 1
|
||||
#include "globals.hh"
|
||||
|
||||
class G4PenelopeBremsstrahlungContinuous
|
||||
{
|
||||
private:
|
||||
enum{ NumberofEPoints=57,
|
||||
NumberofKPoints=32,
|
||||
NumberofExtendedEGrid=200};
|
||||
|
||||
public:
|
||||
|
||||
G4PenelopeBremsstrahlungContinuous(G4int Zmat,G4double tCut, G4double emin, G4double emax,
|
||||
const G4String partName);
|
||||
~G4PenelopeBremsstrahlungContinuous();
|
||||
G4double CalculateStopping(G4double PrimaryEnergy);
|
||||
|
||||
private:
|
||||
|
||||
void PrepareInterpolationTable();
|
||||
void LoadFromFile();
|
||||
G4double PositronCorrection(G4double energy); //correction function for positrons
|
||||
|
||||
G4int Zmat;
|
||||
G4double tCut;
|
||||
G4double MinE,MaxE;
|
||||
const G4String partName;
|
||||
G4double DLFC; //needed for calculation of extended energy grid
|
||||
G4double Energies[NumberofEPoints];
|
||||
G4double ReducedCS[NumberofEPoints][NumberofKPoints];
|
||||
G4double TotalCS[NumberofEPoints];
|
||||
G4double ExtendedLogEnergy[NumberofExtendedEGrid];
|
||||
G4double p0[NumberofExtendedEGrid][NumberofKPoints];
|
||||
//G4double Pbcut[NumberofExtendedEGrid]; //serve?
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
|
||||
// $Id: G4PenelopeCompton.hh,v 1.5 2003/02/24 00:36:10 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 05 Dec 2002 L. Pandola 1st implementation
|
||||
// 12 Feb 2003 MG Pia const argument in SelectRandomAtomForCompton
|
||||
// 14 Feb 2003 MG Pia Modified some variables to lowercase initial
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Compton Scattering
|
||||
// Penelope Model
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPECOMPTON_HH
|
||||
#define G4PENELOPECOMPTON_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
|
||||
class G4Track;
|
||||
class G4Step;
|
||||
class G4ParticleDefinition;
|
||||
class G4VParticleChange;
|
||||
class G4VEMDataSet;
|
||||
class G4VRangeTest;
|
||||
class G4Material;
|
||||
|
||||
class G4PenelopeCompton : public G4VDiscreteProcess {
|
||||
|
||||
public:
|
||||
|
||||
G4PenelopeCompton(const G4String& processName ="PenCompton");
|
||||
|
||||
~G4PenelopeCompton();
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition& definition);
|
||||
|
||||
void BuildPhysicsTable(const G4ParticleDefinition& photon);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep);
|
||||
|
||||
// For testing purpose only
|
||||
G4double DumpMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
|
||||
|
||||
protected:
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
|
||||
private:
|
||||
|
||||
// Hide copy constructor and assignment operator as private
|
||||
G4PenelopeCompton& operator=(const G4PenelopeCompton& right);
|
||||
G4PenelopeCompton(const G4PenelopeCompton& );
|
||||
|
||||
void ReadData();
|
||||
|
||||
G4double CrossSection(G4double energy,G4int Z);
|
||||
G4double DifferentialCrossSection (G4double cdt);
|
||||
|
||||
G4double lowEnergyLimit; // low energy limit applied to the process
|
||||
G4double highEnergyLimit; // high energy limit applied to the process
|
||||
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
G4VRangeTest* rangeTest;
|
||||
|
||||
const G4double intrinsicLowEnergyLimit; // intrinsic validity range
|
||||
const G4double intrinsicHighEnergyLimit;
|
||||
|
||||
G4double energyForIntegration; //for numerical integration of
|
||||
G4int ZForIntegration;// analytical cross section
|
||||
|
||||
G4std::vector<G4DataVector*> *ionizationEnergy;
|
||||
G4std::vector<G4DataVector*> *hartreeFunction;
|
||||
G4std::vector<G4DataVector*> *occupationNumber;
|
||||
|
||||
G4int SelectRandomAtomForCompton(const G4Material* material,G4double e) const;
|
||||
|
||||
const G4int nBins; //for building cross section table
|
||||
|
||||
G4std::vector<G4VEMDataSet*>* matCrossSections; //for random choice of atom
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4PenelopeGammaConversion.hh,v 1.1 2002/12/06 16:25:00 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: L. Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 02 Dec 2002 L.Pandola 1st implementation
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy process, Photon conversion
|
||||
// Penelope model
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPEGAMMACONVERSION_HH
|
||||
#define G4PENELOPEGAMMACONVERSION_HH 1
|
||||
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
class G4Track;
|
||||
class G4Step;
|
||||
class G4ParticleDefinition;
|
||||
class G4VParticleChange;
|
||||
class G4VEMDataSet;
|
||||
class G4VCrossSectionHandler;
|
||||
class G4VRangeTest;
|
||||
|
||||
class G4PenelopeGammaConversion : public G4VDiscreteProcess {
|
||||
|
||||
public:
|
||||
|
||||
G4PenelopeGammaConversion(const G4String& processName ="PenConversion");
|
||||
|
||||
~G4PenelopeGammaConversion();
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition& photon);
|
||||
|
||||
void BuildPhysicsTable(const G4ParticleDefinition& photon);
|
||||
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep);
|
||||
|
||||
// For testing purpose only
|
||||
G4double DumpMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
|
||||
|
||||
protected:
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
|
||||
private:
|
||||
|
||||
// Hide copy constructor and assignment operator as private
|
||||
G4PenelopeGammaConversion& operator=(const G4PenelopeGammaConversion &right);
|
||||
G4PenelopeGammaConversion(const G4PenelopeGammaConversion& );
|
||||
|
||||
G4double GetScreeningRadius(G4double Z);
|
||||
G4double ScreenFunction(G4double screenVariable,G4int icase);
|
||||
G4double CoulombCorrection(G4double ZAlpha);
|
||||
G4double LowEnergyCorrection(G4double ZAlpha,G4double eki);
|
||||
|
||||
G4double lowEnergyLimit; // low energy limit applied to the process
|
||||
G4double highEnergyLimit; // high energy limit applied to the process
|
||||
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
|
||||
G4VRangeTest* rangeTest;
|
||||
|
||||
const G4double intrinsicLowEnergyLimit; // intrinsic validity range
|
||||
const G4double intrinsicHighEnergyLimit;
|
||||
|
||||
const G4double smallEnergy;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Author: Luciano Pandola (Luciano.Pandola@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 30 Nov 2002 LP Created
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
// Numerical quadrature of a function
|
||||
// G4double function (G4double x)
|
||||
// using Gauss adaptive-bipartition formula.
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPEINTEGRATOR_HH
|
||||
#define G4PENELOPEINTEGRATOR_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include <math.h>
|
||||
|
||||
template <class T,class F>
|
||||
class G4PenelopeIntegrator
|
||||
{
|
||||
public:
|
||||
|
||||
G4PenelopeIntegrator(){;}
|
||||
|
||||
~G4PenelopeIntegrator(){;}
|
||||
|
||||
G4double Calculate(T& typeT,F f,G4double LowPoint,G4double HighPoint,
|
||||
G4double MaxError);
|
||||
G4double Calculate(T* ptrT,F f,G4double LowPoint,G4double HighPoint,
|
||||
G4double MaxError);
|
||||
|
||||
};
|
||||
|
||||
#include "G4PenelopeIntegrator.icc"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Author: Luciano Pandola (Luciano.Pandola@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 30 Nov 2002 LP Created
|
||||
// 14 Feb 2003 MGP Corrected compilation errors from SUN
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
template <class T,class F>
|
||||
G4double G4PenelopeIntegrator<T,F>::Calculate(T& typeT, F f,
|
||||
G4double LowPoint,G4double HighPoint,
|
||||
G4double MaxError)
|
||||
{
|
||||
const G4int npoints=10;
|
||||
const G4int ncallsmax=20000;
|
||||
const G4int nst=256;
|
||||
static G4double Abscissas[10] = {7.652651133497334e-02,2.2778585114164508e-01,3.7370608871541956e-01,
|
||||
5.1086700195082710e-01,6.3605368072651503e-01,7.4633190646015079e-01,
|
||||
8.3911697182221882e-01,9.1223442825132591e-01,9.6397192727791379e-01,
|
||||
9.9312859918509492e-01};
|
||||
static G4double Weights[10] = {1.5275338713072585e-01,1.4917298647260375e-01,1.4209610931838205e-01,
|
||||
1.3168863844917663e-01,1.1819453196151842e-01,1.0193011981724044e-01,
|
||||
8.3276741576704749e-02,6.2672048334109064e-02,4.0601429800386941e-02,
|
||||
1.7614007139152118e-02};
|
||||
|
||||
//Error control
|
||||
G4double Ctol = G4std::min(G4std::max(MaxError,1e-13),1e-02);
|
||||
G4double Ptol = 0.01*Ctol;
|
||||
G4double Err=1e35;
|
||||
//Gauss integration from LowPoint to HighPoint
|
||||
G4double h,sumga,a,b,c,d;
|
||||
h=HighPoint-LowPoint;
|
||||
sumga=0.0;
|
||||
a=0.5*(HighPoint-LowPoint);
|
||||
b=0.5*(HighPoint+LowPoint);
|
||||
c=a*Abscissas[0];
|
||||
d=Weights[0]*((typeT.*f)(b+c)+(typeT.*f)(b-c));
|
||||
G4int i;
|
||||
for (i=2;i<=npoints;i++){
|
||||
c=a*Abscissas[i-1];
|
||||
d=d+Weights[i-1]*((typeT.*f)(b+c)+(typeT.*f)(b-c));
|
||||
}
|
||||
G4int icall = 2*npoints;
|
||||
G4int LH=1;
|
||||
G4double S[nst],x[nst],sn[nst],xrn[nst];
|
||||
S[0]=d*a;
|
||||
x[0]=LowPoint;
|
||||
|
||||
//Adaptive bipartition scheme
|
||||
do{
|
||||
G4double h0=h;
|
||||
h=0.5*h; //bipartition
|
||||
G4double sumr=0;
|
||||
G4int LHN=0;
|
||||
G4double si,xa,xb,xc;
|
||||
for (i=1;i<=LH;i++){
|
||||
si=S[i-1];
|
||||
xa=x[i-1];
|
||||
xb=xa+h;
|
||||
xc=xa+h0;
|
||||
a=0.5*(xb-xa);
|
||||
b=0.5*(xb+xa);
|
||||
c=a*Abscissas[0];
|
||||
d=Weights[0]*((typeT.*f)(b+c)+(typeT.*f)(b-c));
|
||||
G4int j;
|
||||
for (j=1;j<npoints;j++){
|
||||
c=a*Abscissas[j];
|
||||
d=d+Weights[j]*((typeT.*f)(b+c)+(typeT.*f)(b-c));
|
||||
}
|
||||
G4double s1,s2,s12;
|
||||
s1=d*a;
|
||||
a=0.5*(xc-xb);
|
||||
b=0.5*(xc+xb);
|
||||
c=a*Abscissas[0];
|
||||
d=Weights[0]*((typeT.*f)(b+c)+(typeT.*f)(b-c));
|
||||
for (j=1;j<npoints;j++){
|
||||
c=a*Abscissas[j];
|
||||
d=d+Weights[j]*((typeT.*f)(b+c)+(typeT.*f)(b-c));
|
||||
}
|
||||
s2=d*a;
|
||||
icall=icall+4*npoints;
|
||||
s12=s1+s2;
|
||||
if (abs(s12-si)<G4std::max(Ptol*abs(s12),1e-35)){
|
||||
sumga=sumga+s12;
|
||||
}
|
||||
else
|
||||
{
|
||||
sumr=sumr+s12;
|
||||
LHN=LHN+2;
|
||||
sn[LHN-1]=s2;
|
||||
xrn[LHN-1]=xb;
|
||||
sn[LHN-2]=s1;
|
||||
xrn[LHN-2]=xa;
|
||||
}
|
||||
if (icall>ncallsmax || LHN>nst)
|
||||
{
|
||||
G4cout << "G4PenelopeIntegrator: " << G4endl;
|
||||
G4cout << "LowPoint: " << LowPoint << ", High Point: " << HighPoint << G4endl;
|
||||
G4cout << "Tolerance: " << MaxError << G4endl;
|
||||
G4cout << "Calls: " << icall << ", Integral: " << sumga << ", Error: " << Err << G4cout;
|
||||
G4cout << "Number of open subintervals: " << LHN << G4endl;
|
||||
G4cout << "WARNING: the required accuracy has not been attained" << G4endl;
|
||||
return sumga;
|
||||
}
|
||||
}
|
||||
Err=abs(sumr)/G4std::max(abs(sumr+sumga),1e-35);
|
||||
if (Err < Ctol || LHN == 0) return sumga; //end of cycle
|
||||
LH=LHN;
|
||||
for (G4int i=0;i<LH;i++){
|
||||
S[i]=sn[i];
|
||||
x[i]=xrn[i];
|
||||
}
|
||||
}while(Ctol < 1.0); //infinite loop
|
||||
return 0; //It should never get here
|
||||
}
|
||||
|
||||
template <class T,class F>
|
||||
G4double G4PenelopeIntegrator<T,F>::Calculate(T* ptrT, F f,
|
||||
G4double LowPoint,G4double HighPoint,
|
||||
G4double MaxError)
|
||||
{
|
||||
return Calculate(*ptrT,f,LowPoint,HighPoint,MaxError);
|
||||
}
|
||||
|
||||
|
||||
+24
-32
@@ -21,56 +21,48 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4CutsPerMaterialWarning.hh,v 1.1 2001/11/07 22:38:47 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// Author: Luciano Pandola (Luciano.Pandola@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 7 Nov 2001 MGP Created
|
||||
// 17 Feb 2003 LP Created
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
// Functor class to print a warning if the deprecated, unsupported feature
|
||||
// of having different range cuts for different materials is used
|
||||
// Will be removed when properly designed "range cuts by region"
|
||||
// will be available in Geant4
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE/
|
||||
|
||||
// Cubic spline interpolation and momentum calculation of given order
|
||||
// obtained by linear interpolation
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4CUTSPERMATERIALWARNING_HH
|
||||
#define G4CUTSPERMATERIALWARNING_HH 1
|
||||
#ifndef G4PENELOPEINTERPOLATOR_HH
|
||||
#define G4PENELOPEINTERPOLATOR_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4Material;
|
||||
|
||||
class G4CutsPerMaterialWarning
|
||||
{
|
||||
class G4DataVector;
|
||||
class G4PenelopeInterpolator
|
||||
{
|
||||
public:
|
||||
|
||||
G4CutsPerMaterialWarning() { }
|
||||
G4PenelopeInterpolator(G4double* pX, G4double* pY, G4int nbOfData, G4double S1=0, G4double SN=0);
|
||||
|
||||
~G4CutsPerMaterialWarning() { }
|
||||
~G4PenelopeInterpolator(){;}
|
||||
|
||||
void PrintWarning(const G4ParticleDefinition* particle) const;
|
||||
|
||||
G4double CubicSplineInterpolation(G4double xx);
|
||||
G4double FirstDerivative(G4double xx);
|
||||
G4double CalculateMomentum(G4double UpperLimit,G4int MomentumOrder);
|
||||
|
||||
private:
|
||||
|
||||
G4int FindBin(G4double xx);
|
||||
//coefficients
|
||||
G4DataVector* a;
|
||||
G4DataVector* b;
|
||||
G4DataVector* c;
|
||||
G4DataVector* d;
|
||||
//stored data
|
||||
G4DataVector* x;
|
||||
G4DataVector* y;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4PenelopePhotoElectric.hh,v 1.2 2003/02/23 23:42:52 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 07 Jan 2003 L.Pandola 1st implementation
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic process, Photoelectric effect with
|
||||
// Penelope model and tables
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPEPHOTOELECTRIC_HH
|
||||
#define G4PENELOPEPHOTOELECTRIC_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
|
||||
class G4Track;
|
||||
class G4Step;
|
||||
class G4ParticleDefinition;
|
||||
class G4VParticleChange;
|
||||
class G4VEMDataSet;
|
||||
class G4VCrossSectionHandler;
|
||||
class G4VRangeTest;
|
||||
|
||||
class G4PenelopePhotoElectric : public G4VDiscreteProcess {
|
||||
|
||||
public:
|
||||
|
||||
G4PenelopePhotoElectric(const G4String& processName ="PenPhotoElec");
|
||||
|
||||
~G4PenelopePhotoElectric();
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
void BuildPhysicsTable(const G4ParticleDefinition& photon);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep);
|
||||
|
||||
void SetCutForLowEnSecPhotons(G4double);
|
||||
|
||||
void SetCutForLowEnSecElectrons(G4double);
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
// For testing purpose only
|
||||
G4double DumpMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
|
||||
|
||||
protected:
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
|
||||
private:
|
||||
|
||||
// Hide copy constructor and assignment operator as private
|
||||
G4PenelopePhotoElectric& operator=(const G4PenelopePhotoElectric& right);
|
||||
G4PenelopePhotoElectric(const G4PenelopePhotoElectric& );
|
||||
|
||||
G4double lowEnergyLimit; // low energy limit applied to the process
|
||||
G4double highEnergyLimit; // high energy limit applied to the process
|
||||
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VCrossSectionHandler* shellCrossSectionHandler;
|
||||
|
||||
G4VRangeTest* rangeTest;
|
||||
|
||||
const G4double intrinsicLowEnergyLimit; // intrinsic validity range
|
||||
const G4double intrinsicHighEnergyLimit;
|
||||
|
||||
G4double cutForLowEnergySecondaryPhotons;
|
||||
G4double cutForLowEnergySecondaryElectrons;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4PenelopeRayleigh.hh,v 1.3 2003/03/13 16:53:50 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 01 Dec 2002 L.Pandola 1st implementation
|
||||
// 14 Feb 2003 MG Pia Removed data member material
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic process, Rayleigh effect
|
||||
// Penelope model
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPERAYLEIGH_HH
|
||||
#define G4PENELOPERAYLEIGH_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
#include "G4PenelopeIntegrator.hh"
|
||||
class G4Track;
|
||||
class G4Step;
|
||||
class G4ParticleDefinition;
|
||||
class G4VParticleChange;
|
||||
class G4VEMDataSet;
|
||||
class G4Material;
|
||||
class G4DataVector;
|
||||
|
||||
class G4PenelopeRayleigh : public G4VDiscreteProcess {
|
||||
|
||||
public:
|
||||
|
||||
G4PenelopeRayleigh(const G4String& processName ="PenRayleigh");
|
||||
|
||||
~G4PenelopeRayleigh();
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
void BuildPhysicsTable(const G4ParticleDefinition& photon);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep);
|
||||
|
||||
G4double MolecularFormFactor(G4double x);
|
||||
G4double DifferentialCrossSection (G4double e);
|
||||
|
||||
// For testing purpose only
|
||||
G4double DumpMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
|
||||
private:
|
||||
|
||||
// Hide copy constructor and assignment operator as private
|
||||
G4PenelopeRayleigh& operator=(const G4PenelopeRayleigh &right);
|
||||
G4PenelopeRayleigh(const G4PenelopeRayleigh& );
|
||||
|
||||
G4double lowEnergyLimit; // low energy limit applied to the process
|
||||
G4double highEnergyLimit; // high energy limit applied to the process
|
||||
|
||||
//void InizialiseSampling(const G4Material* material);
|
||||
void InizialiseSampling();
|
||||
|
||||
G4DataVector* samplingFunction_x;
|
||||
G4DataVector* samplingFunction_y;
|
||||
|
||||
G4double samplingConstant;
|
||||
G4double facte; //cross section factor
|
||||
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
const G4Material* material;
|
||||
const G4int nBins;
|
||||
const G4double intrinsicLowEnergyLimit; // intrinsic validity range
|
||||
const G4double intrinsicHighEnergyLimit;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,14 +21,15 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4RangeNoTest.hh,v 1.1 2001/10/08 07:51:41 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4RangeNoTest.hh,v 1.2 2003/01/22 18:42:22 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 22 Jan 2003 V.Ivanchenko Cut per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
@@ -45,27 +46,27 @@
|
||||
#include "G4VRangeTest.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4Material;
|
||||
class G4MaterialCutsCouple;
|
||||
|
||||
class G4RangeNoTest : public G4VRangeTest {
|
||||
|
||||
|
||||
public:
|
||||
|
||||
G4RangeNoTest() { }
|
||||
|
||||
virtual ~G4RangeNoTest() { }
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4Material* material,
|
||||
G4double energy,
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double energy,
|
||||
G4double safety) const { return true; }
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,14 +21,15 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4RangeTest.hh,v 1.2 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4RangeTest.hh,v 1.3 2003/01/22 18:42:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 21 Jan 2003 VI Cuts per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
@@ -48,16 +49,16 @@ class G4ParticleDefinition;
|
||||
class G4Material;
|
||||
|
||||
class G4RangeTest : public G4VRangeTest {
|
||||
|
||||
|
||||
public:
|
||||
|
||||
G4RangeTest() { }
|
||||
|
||||
virtual ~G4RangeTest();
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4Material* material,
|
||||
G4double energy,
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double energy,
|
||||
G4double safety) const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4SemiLogInterpolation.hh,v 1.3 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4ShellData.hh,v 1.2 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4ShellEMDataSet.hh,v 1.4 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
// History:
|
||||
// -----------
|
||||
// 21 Sept 2001 Elena Guardincerri Created
|
||||
// 25 Mar 2002 V.Ivanchenko Change AverageNOfIonisations int->double
|
||||
// 25 Mar 2002 V.Ivanchenko Change AverageNOfIonisations int->double
|
||||
// 12 Apr 2003 V.Ivanchenko Migrade to cut per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -46,25 +47,25 @@
|
||||
#include "g4std/vector"
|
||||
|
||||
class G4VEMDataSet;
|
||||
class G4Material;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Element;
|
||||
class G4ShellVacancy
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
G4ShellVacancy();
|
||||
|
||||
|
||||
~G4ShellVacancy();
|
||||
|
||||
G4std::vector<G4int> GenerateNumberOfIonisations(const G4Material* material,
|
||||
G4double incidentEnergy,
|
||||
|
||||
G4std::vector<G4int> GenerateNumberOfIonisations(const G4MaterialCutsCouple* couple,
|
||||
G4double incidentEnergy,
|
||||
G4double eLoss) const;
|
||||
|
||||
|
||||
void AddXsiTable(G4VEMDataSet* set);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
G4double AverageNOfIonisations(const G4Material* material,
|
||||
|
||||
G4double AverageNOfIonisations(const G4MaterialCutsCouple* couple,
|
||||
G4int index,
|
||||
G4double energy,
|
||||
G4double eLoss) const;
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4VCrossSectionHandler.hh,v 1.11 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4VCrossSectionHandler.hh,v 1.12 2003/01/22 18:42:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
@@ -31,6 +31,7 @@
|
||||
// 16 Sep 2001 MGP Created
|
||||
// 26 Sep 2001 V.Ivanchenko Hide copy constructor and assignement operator
|
||||
// 18 Apr 2002 V.Ivanchenko Move member function ValueForMaterial to public
|
||||
// 21 Jan 2003 V.Ivanchenko Cut per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -48,6 +49,7 @@
|
||||
#include "G4DataVector.hh"
|
||||
#include "g4std/map"
|
||||
#include "g4std/vector"
|
||||
#include "G4MaterialCutsCouple.hh"
|
||||
|
||||
class G4VDataSetAlgorithm;
|
||||
class G4VEMDataSet;
|
||||
@@ -55,34 +57,34 @@ class G4Material;
|
||||
class G4Element;
|
||||
|
||||
class G4VCrossSectionHandler {
|
||||
|
||||
|
||||
public:
|
||||
|
||||
G4VCrossSectionHandler();
|
||||
|
||||
G4VCrossSectionHandler(G4VDataSetAlgorithm* interpolation,
|
||||
G4double minE = 250*eV, G4double maxE = 100*GeV,
|
||||
G4double minE = 250*eV, G4double maxE = 100*GeV,
|
||||
G4int nBins = 200,
|
||||
G4double unitE = MeV, G4double unitData = barn,
|
||||
G4int minZ = 1, G4int maxZ = 99);
|
||||
|
||||
virtual ~G4VCrossSectionHandler();
|
||||
|
||||
|
||||
void Initialise(G4VDataSetAlgorithm* interpolation = 0,
|
||||
G4double minE = 250*eV, G4double maxE = 100*GeV,
|
||||
G4double minE = 250*eV, G4double maxE = 100*GeV,
|
||||
G4int numberOfBins = 200,
|
||||
G4double unitE = MeV, G4double unitData = barn,
|
||||
G4int minZ = 1, G4int maxZ = 99);
|
||||
|
||||
G4int SelectRandomAtom(const G4Material* material, G4double e) const;
|
||||
G4int SelectRandomAtom(const G4MaterialCutsCouple* couple, G4double e) const;
|
||||
|
||||
const G4Element* SelectRandomElement(const G4Material* material,
|
||||
G4double e) const;
|
||||
const G4Element* SelectRandomElement(const G4MaterialCutsCouple* material,
|
||||
G4double e) const;
|
||||
|
||||
G4int SelectRandomShell(G4int Z, G4double e) const;
|
||||
|
||||
G4VEMDataSet* BuildMeanFreePathForMaterials(const G4DataVector* energyCuts = 0);
|
||||
|
||||
|
||||
G4double FindValue(G4int Z, G4double e) const;
|
||||
|
||||
G4double FindValue(G4int Z, G4double e, G4int shellIndex) const;
|
||||
@@ -94,21 +96,21 @@ public:
|
||||
void LoadShellData(const G4String& dataFile);
|
||||
|
||||
void PrintData() const;
|
||||
|
||||
|
||||
void Clear();
|
||||
|
||||
protected:
|
||||
|
||||
protected:
|
||||
|
||||
G4int NumberOfComponents(G4int Z) const;
|
||||
|
||||
void ActiveElements();
|
||||
|
||||
// Factory method
|
||||
virtual G4std::vector<G4VEMDataSet*>* BuildCrossSectionsForMaterials(const G4DataVector& energyVector,
|
||||
virtual G4std::vector<G4VEMDataSet*>* BuildCrossSectionsForMaterials(const G4DataVector& energyVector,
|
||||
const G4DataVector* energyCuts = 0) = 0;
|
||||
|
||||
// Factory method
|
||||
virtual G4VDataSetAlgorithm* CreateInterpolation();
|
||||
virtual G4VDataSetAlgorithm* CreateInterpolation();
|
||||
|
||||
const G4VDataSetAlgorithm* GetInterpolation() const { return interpolation; }
|
||||
|
||||
@@ -120,7 +122,7 @@ private:
|
||||
G4VCrossSectionHandler & operator=(const G4VCrossSectionHandler &right);
|
||||
|
||||
G4VDataSetAlgorithm* interpolation;
|
||||
|
||||
|
||||
G4double eMin;
|
||||
G4double eMax;
|
||||
G4int nBins;
|
||||
@@ -129,15 +131,15 @@ private:
|
||||
G4double unit2;
|
||||
|
||||
G4int zMin;
|
||||
G4int zMax;
|
||||
G4int zMax;
|
||||
|
||||
G4DataVector activeZ;
|
||||
|
||||
G4std::map<G4int,G4VEMDataSet*,G4std::less<G4int> > dataMap;
|
||||
|
||||
|
||||
G4std::vector<G4VEMDataSet*>* crossSections;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4VDataSetAlgorithm.hh,v 1.6 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4VEMDataSet.hh,v 1.6 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -21,14 +21,15 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4VRangeTest.hh,v 1.1 2001/10/08 07:51:42 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4VRangeTest.hh,v 1.2 2003/01/22 18:42:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 5 Oct 2001 MGP Created
|
||||
// 22 Jan 2003 V.Ivanchenko Cut per region
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
@@ -43,27 +44,27 @@
|
||||
|
||||
#include "globals.hh"
|
||||
class G4ParticleDefinition;
|
||||
class G4Material;
|
||||
class G4MaterialCutsCouple;
|
||||
|
||||
class G4VRangeTest {
|
||||
|
||||
|
||||
public:
|
||||
|
||||
G4VRangeTest() { }
|
||||
|
||||
virtual ~G4VRangeTest() { }
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4Material* material,
|
||||
G4double energy,
|
||||
|
||||
virtual G4bool Escape(const G4ParticleDefinition* particle,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double energy,
|
||||
G4double safety) const = 0;
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4VeLowEnergyLoss.hh,v 1.7 2001/11/23 11:45:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4VeLowEnergyLoss.hh,v 1.8 2003/01/22 18:42:24 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// 3.4.2000 Veronique Lefebure:
|
||||
// Move utils/include/G4VEnergyLoss.hh to
|
||||
@@ -45,12 +45,13 @@
|
||||
// class.
|
||||
//
|
||||
// -----------------------------------------------------------
|
||||
// created on 28 January 2000 by L. Urban
|
||||
// created on 28 January 2000 by L. Urban
|
||||
// -----------------------------------------------------------
|
||||
//
|
||||
// Modifications:
|
||||
// 20/09/00 V.Ivanchenko update fluctuations
|
||||
// 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
|
||||
@@ -69,11 +70,11 @@
|
||||
#include "G4VContinuousDiscreteProcess.hh"
|
||||
#include "G4PhysicsLogVector.hh"
|
||||
#include "G4PhysicsLinearVector.hh"
|
||||
#include "G4MaterialCutsCouple.hh"
|
||||
|
||||
|
||||
class G4VeLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
class G4VeLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
G4VeLowEnergyLoss(const G4String& ,
|
||||
G4ProcessType aType = fNotDefined );
|
||||
@@ -103,28 +104,28 @@ class G4VeLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
// code for the energy loss fluctuation
|
||||
|
||||
G4double GetLossWithFluct(const G4DynamicParticle* aParticle,
|
||||
G4Material* aMaterial,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double MeanLoss,
|
||||
G4double step);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// hide default constructor and assignment operator as private
|
||||
// hide default constructor and assignment operator as private
|
||||
G4VeLowEnergyLoss();
|
||||
G4VeLowEnergyLoss & operator=(const G4VeLowEnergyLoss &right);
|
||||
|
||||
protected:
|
||||
|
||||
// data members to speed up the fluctuation calculation
|
||||
G4Material* lastMaterial;
|
||||
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
|
||||
// static part of the class
|
||||
|
||||
public: // With description
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eBremsstrahlungSpectrum.hh,v 1.3 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4eBremsstrahlungSpectrum.hh,v 1.5 2003/02/28 08:41:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -31,17 +31,19 @@
|
||||
// File name: G4EBremsstrahlungSpectrum
|
||||
//
|
||||
// Author: V.Ivanchenko (Vladimir.Ivantchenko@cern.ch)
|
||||
//
|
||||
//
|
||||
// Creation date: 27 September 2001
|
||||
//
|
||||
// Modifications:
|
||||
// Modifications:
|
||||
// 10.10.01 MGP Revision to improve code quality and consistency with design
|
||||
// 29.11.01 V.Ivanchenko Parametrisation is updated
|
||||
// 21.02.03 V.Ivanchenko Energy bins are defined in the constructor
|
||||
// 28.02.03 V.Ivanchenko Filename is defined in the constructor
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class Description:
|
||||
// Provides various integration over gamma spectrum of e- Bremsstrahlung.
|
||||
// Class Description:
|
||||
// Provides various integration over gamma spectrum of e- Bremsstrahlung.
|
||||
// Parametrisation is described in Physics Reference Manual based on
|
||||
// data from EEDL database.
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
@@ -53,7 +55,7 @@
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4VEnergySpectrum.hh"
|
||||
#include "G4VEnergySpectrum.hh"
|
||||
|
||||
class G4BremsstrahlungParameters;
|
||||
|
||||
@@ -61,51 +63,51 @@ class G4eBremsstrahlungSpectrum : public G4VEnergySpectrum
|
||||
{
|
||||
public:
|
||||
|
||||
G4eBremsstrahlungSpectrum();
|
||||
G4eBremsstrahlungSpectrum(const G4DataVector& bins,const G4String& name);
|
||||
|
||||
~G4eBremsstrahlungSpectrum();
|
||||
|
||||
G4double Probability(G4int Z,
|
||||
G4double tMin,
|
||||
G4double tMax,
|
||||
G4double kineticEnergy,
|
||||
G4int shell=0,
|
||||
G4double Probability(G4int Z,
|
||||
G4double tMin,
|
||||
G4double tMax,
|
||||
G4double kineticEnergy,
|
||||
G4int shell=0,
|
||||
const G4ParticleDefinition* pd=0) const;
|
||||
|
||||
G4double AverageEnergy(G4int Z,
|
||||
G4double tMin,
|
||||
G4double AverageEnergy(G4int Z,
|
||||
G4double tMin,
|
||||
G4double tMax,
|
||||
G4double kineticEnergy,
|
||||
G4int shell=0,
|
||||
G4int shell=0,
|
||||
const G4ParticleDefinition* pd=0) const;
|
||||
|
||||
G4double SampleEnergy(G4int Z,
|
||||
G4double tMin,
|
||||
G4double SampleEnergy(G4int Z,
|
||||
G4double tMin,
|
||||
G4double tMax,
|
||||
G4double kineticEnergy,
|
||||
G4int shell=0,
|
||||
G4int shell=0,
|
||||
const G4ParticleDefinition* pd=0) const;
|
||||
|
||||
G4double MaxEnergyOfSecondaries(G4double kineticEnergy,
|
||||
G4int Z = 0,
|
||||
const G4ParticleDefinition* pd=0) const;
|
||||
|
||||
G4double Excitation(G4int Z, G4double kineticEnergy) const;
|
||||
G4double Excitation(G4int Z, G4double kineticEnergy) const;
|
||||
|
||||
void PrintData() const;
|
||||
|
||||
private:
|
||||
|
||||
G4double IntSpectrum(G4double xMin, G4double xMax,
|
||||
const G4DataVector& p) const;
|
||||
|
||||
const G4DataVector& p) const;
|
||||
|
||||
G4double AverageValue(G4double xMin, G4double xMax,
|
||||
const G4DataVector& p) const;
|
||||
|
||||
G4double Function(G4double x, const G4DataVector& p) const;
|
||||
const G4DataVector& p) const;
|
||||
|
||||
G4double Function(G4double x, const G4DataVector& p) const;
|
||||
|
||||
|
||||
// Hide copy constructor and assignment operator
|
||||
// Hide copy constructor and assignment operator
|
||||
G4eBremsstrahlungSpectrum(const G4eBremsstrahlungSpectrum&);
|
||||
G4eBremsstrahlungSpectrum & operator = (const G4eBremsstrahlungSpectrum &right);
|
||||
|
||||
@@ -113,7 +115,7 @@ private:
|
||||
G4double lowestE;
|
||||
size_t length;
|
||||
G4int verbose;
|
||||
G4DataVector xp;
|
||||
const G4DataVector& xp;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eIonisationCrossSectionHandler.hh,v 1.4 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4eIonisationParameters.hh,v 1.6 2001/11/29 19:01:45 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// V. Ivanchenko
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eIonisationSpectrum.hh,v 1.4 2002/05/30 19:52:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4eLowEnergyLoss.hh,v 1.8 2002/03/28 11:48:56 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4eLowEnergyLoss.hh,v 1.10 2003/02/07 15:39:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -57,11 +57,12 @@
|
||||
// 18.10.01 Revision to improve code quality and consistency with design
|
||||
// 23.11.01 V.Ivanchenko Move static member-functions from header to source
|
||||
// 28.03.02 V.Ivanchenko add fluorescence flag
|
||||
// 21.01.03 V.Ivanchenko cut per region
|
||||
// ------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4eLowEnergyLoss_h
|
||||
#define G4eLowEnergyLoss_h 1
|
||||
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
@@ -79,19 +80,19 @@
|
||||
#include "G4EnergyLossTables.hh"
|
||||
|
||||
class G4EnergyLossMessenger;
|
||||
|
||||
|
||||
class G4eLowEnergyLoss : public G4VeLowEnergyLoss
|
||||
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
G4eLowEnergyLoss(const G4String& );
|
||||
|
||||
~G4eLowEnergyLoss();
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
// true for e+/e- , false otherwise
|
||||
|
||||
|
||||
void BuildDEDXTable(const G4ParticleDefinition& aParticleType);
|
||||
// It builds dE/dx and range tables for aParticleType and
|
||||
// for every material contained in the materialtable.
|
||||
@@ -117,42 +118,43 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss
|
||||
const G4Step& step) = 0;
|
||||
// Virtual function to be overridden in the derived classes
|
||||
// ( ionisation and bremsstrahlung) .
|
||||
|
||||
|
||||
static void SetNbOfProcesses(G4int nb);
|
||||
// Sets number of processes giving contribution to the energy loss
|
||||
|
||||
static void PlusNbOfProcesses();
|
||||
// Increases number of processes giving contribution to the energy loss
|
||||
|
||||
static void MinusNbOfProcesses();
|
||||
static void MinusNbOfProcesses();
|
||||
// Decreases number of processes giving contribution to the energy loss
|
||||
|
||||
static G4int GetNbOfProcesses();
|
||||
// Gets number of processes giving contribution to the energy loss
|
||||
// ( default value = 2)
|
||||
|
||||
static void SetLowerBoundEloss(G4double val);
|
||||
static void SetUpperBoundEloss(G4double val);
|
||||
|
||||
static void SetLowerBoundEloss(G4double val);
|
||||
static void SetUpperBoundEloss(G4double val);
|
||||
static void SetNbinEloss(G4int nb);
|
||||
|
||||
static G4double GetLowerBoundEloss();
|
||||
static G4double GetUpperBoundEloss();
|
||||
static G4int GetNbinEloss();
|
||||
|
||||
static G4double GetLowerBoundEloss();
|
||||
static G4double GetUpperBoundEloss();
|
||||
static G4int GetNbinEloss();
|
||||
|
||||
void ActivateFluorescence(G4bool val);
|
||||
// Set fluorescence flag on/off
|
||||
|
||||
G4bool Fluorescence() const;
|
||||
// Get flurescence flag
|
||||
|
||||
// Get flurescence flag
|
||||
|
||||
protected:
|
||||
|
||||
virtual G4std::vector<G4DynamicParticle*>* DeexciteAtom(const G4Material* material,
|
||||
G4double incidentEnergy,
|
||||
G4double eLoss) { return 0; }
|
||||
virtual G4std::vector<G4DynamicParticle*>* DeexciteAtom(
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double incidentEnergy,
|
||||
G4double eLoss) { return 0; };
|
||||
|
||||
G4PhysicsTable* theLossTable;
|
||||
|
||||
|
||||
G4double MinKineticEnergy ; // particle with kinetic energy
|
||||
// smaller than MinKineticEnergy
|
||||
// is stopped in AlongStepDoIt
|
||||
@@ -168,31 +170,31 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss
|
||||
//inverse tables of the range tables
|
||||
static G4PhysicsTable* theInverseRangeElectronTable;
|
||||
static G4PhysicsTable* theInverseRangePositronTable;
|
||||
|
||||
|
||||
// lab and proper time tables
|
||||
static G4PhysicsTable* theLabTimeElectronTable ;
|
||||
static G4PhysicsTable* theLabTimePositronTable ;
|
||||
static G4PhysicsTable* theProperTimeElectronTable ;
|
||||
static G4PhysicsTable* theProperTimePositronTable ;
|
||||
|
||||
//processes inherited from G4eLowEnergyLoss
|
||||
//processes inherited from G4eLowEnergyLoss
|
||||
//register themselves in the static array Recorder
|
||||
//for electrons/positrons separately
|
||||
//nb of contributing processes = NbOfProcesses
|
||||
static G4int NbOfProcesses;
|
||||
static G4int CounterOfElectronProcess;
|
||||
static G4int CounterOfPositronProcess ;
|
||||
static G4int CounterOfPositronProcess ;
|
||||
static G4PhysicsTable** RecorderOfElectronProcess;
|
||||
static G4PhysicsTable** RecorderOfPositronProcess;
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
G4double GetConstraints(const G4DynamicParticle* aParticle,
|
||||
G4Material* aMaterial);
|
||||
|
||||
const G4MaterialCutsCouple* couple);
|
||||
|
||||
// hide assignment operator
|
||||
G4eLowEnergyLoss (G4eLowEnergyLoss &);
|
||||
G4eLowEnergyLoss (G4eLowEnergyLoss &);
|
||||
G4eLowEnergyLoss & operator=(const G4eLowEnergyLoss &right);
|
||||
|
||||
|
||||
@@ -200,21 +202,21 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss
|
||||
|
||||
G4int CounterOfProcess;
|
||||
G4PhysicsTable** RecorderOfProcess;
|
||||
|
||||
|
||||
G4double fdEdx; // computed in GetConstraints
|
||||
G4double fRangeNow; // computed in GetConstraints
|
||||
|
||||
G4double linLossLimit ; // used in AlongStepDoIt
|
||||
|
||||
|
||||
|
||||
//New ParticleChange
|
||||
G4ParticleChangeForLoss fParticleChange ;
|
||||
|
||||
//
|
||||
//
|
||||
// static part of the class
|
||||
//
|
||||
|
||||
static G4int NbinEloss; // number of bins in table,
|
||||
|
||||
static G4int NbinEloss; // number of bins in table,
|
||||
// calculated in BuildPhysicTable
|
||||
static G4double LowerBoundEloss;
|
||||
static G4double UpperBoundEloss;
|
||||
@@ -229,14 +231,14 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss
|
||||
static G4PhysicsTable* thepRangeCoeffATable;
|
||||
static G4PhysicsTable* thepRangeCoeffBTable;
|
||||
static G4PhysicsTable* thepRangeCoeffCTable;
|
||||
|
||||
|
||||
static G4EnergyLossMessenger* eLossMessenger;
|
||||
|
||||
G4bool theFluo; // Fluorescence flag
|
||||
|
||||
G4bool theFluo; // Fluorescence flag
|
||||
|
||||
};
|
||||
|
||||
|
||||
#include "G4eLowEnergyLoss.icc"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4eLowEnergyLoss.icc,v 1.4 2002/03/28 11:48:58 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4eLowEnergyLoss.icc,v 1.6 2003/04/18 17:50:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// ---------------------------------------------------------------
|
||||
// GEANT 4 class inlined methods file
|
||||
@@ -32,18 +32,20 @@
|
||||
// ------------ G4eLowEnergyLoss physics process ------------
|
||||
// by Laszlo Urban, 20 March 1997
|
||||
// ***************************************************************
|
||||
// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS.
|
||||
// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS.
|
||||
// It calculates the energy loss of e+/e-.
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// 08-09-98: cleanup
|
||||
// 08-09-98 cleanup
|
||||
// 28-03-02 V.Ivanchenko add fluorescence flag
|
||||
// 21-01-03 V.Ivanchenko cut per region
|
||||
// 18-04-03 V.Ivanchenko finalRange redefinition
|
||||
//
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
inline G4double G4eLowEnergyLoss::GetConstraints(
|
||||
const G4DynamicParticle* aParticle,
|
||||
G4Material* aMaterial)
|
||||
const G4MaterialCutsCouple* couple)
|
||||
{
|
||||
G4double StepLimit;
|
||||
// returns the Step limit
|
||||
@@ -53,25 +55,21 @@ inline G4double G4eLowEnergyLoss::GetConstraints(
|
||||
const G4ParticleDefinition* ParticleType=aParticle->GetDefinition();
|
||||
|
||||
Charge = aParticle->GetDefinition()->GetPDGCharge();
|
||||
if(Charge != lastCharge)
|
||||
{
|
||||
lastCharge = Charge ;
|
||||
|
||||
}
|
||||
if(Charge != lastCharge) lastCharge = Charge ;
|
||||
|
||||
G4double KineticEnergy = aParticle->GetKineticEnergy();
|
||||
|
||||
fdEdx = G4EnergyLossTables::GetDEDX(ParticleType,KineticEnergy,aMaterial);
|
||||
fdEdx = G4EnergyLossTables::GetDEDX(ParticleType,KineticEnergy,couple);
|
||||
fRangeNow =
|
||||
G4EnergyLossTables::GetRange(ParticleType,KineticEnergy,aMaterial);
|
||||
G4EnergyLossTables::GetRange(ParticleType,KineticEnergy,couple);
|
||||
|
||||
// compute the (random) Step limit
|
||||
if (fRangeNow>finalRange)
|
||||
{
|
||||
StepLimit = c1lim*fRangeNow+c2lim+c3lim/fRangeNow;
|
||||
G4double r = G4std::min(finalRange, couple->GetProductionCuts()
|
||||
->GetProductionCut(idxG4ElectronCut));
|
||||
|
||||
if (fRangeNow > r) {
|
||||
StepLimit = dRoverRange*fRangeNow + r*(1.0 - dRoverRange)*(2.0 - r/fRangeNow);
|
||||
//randomise this value
|
||||
if (rndmStepFlag) StepLimit = finalRange +
|
||||
(StepLimit-finalRange)*G4UniformRand();
|
||||
if (rndmStepFlag) StepLimit = finalRange + (StepLimit-finalRange)*G4UniformRand();
|
||||
if (StepLimit > fRangeNow) StepLimit = fRangeNow;
|
||||
}
|
||||
else StepLimit = fRangeNow;
|
||||
@@ -79,7 +77,7 @@ inline G4double G4eLowEnergyLoss::GetConstraints(
|
||||
return StepLimit;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
|
||||
inline G4double G4eLowEnergyLoss::GetContinuousStepLimit(
|
||||
const G4Track& track,
|
||||
@@ -87,16 +85,16 @@ inline G4double G4eLowEnergyLoss::GetContinuousStepLimit(
|
||||
G4double currentMinimumStep,
|
||||
G4double&)
|
||||
{
|
||||
|
||||
|
||||
G4double Step =
|
||||
GetConstraints(track.GetDynamicParticle(),track.GetMaterial());
|
||||
GetConstraints(track.GetDynamicParticle(),track.GetMaterialCutsCouple());
|
||||
|
||||
if ((Step>0.0)&&(Step<currentMinimumStep)) currentMinimumStep = Step;
|
||||
|
||||
return Step ;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
inline G4bool G4eLowEnergyLoss::IsApplicable(const G4ParticleDefinition&
|
||||
particle)
|
||||
{
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
// 17 August 1999 G.Mancinelli implemented ICRU parametrization (protons)
|
||||
// 20 August 1999 G.Mancinelli implemented ICRU parametrization (alpha)
|
||||
// 31 August 1999 V.Ivanchenko update and cleen up
|
||||
// 23 May 2000 MG Pia Clean up for QAO model
|
||||
// 23 May 2000 MG Pia Clean up for QAO model
|
||||
// 25 July 2000 V.Ivanchenko New design iteration
|
||||
// 09 August 2000 V.Ivanchenko Add GetContinuousStepLimit
|
||||
// 17 August 2000 V.Ivanchenko Add IonFluctuationModel
|
||||
@@ -45,6 +45,7 @@
|
||||
// 30 Oct 2001 V.Ivanchenko Add minGammaEnergy and minElectronEnergy
|
||||
// 07 Dec 2001 V.Ivanchenko Add SetFluorescence method
|
||||
// 26 Feb 2002 V.Ivanchenko Add initialMass for GenericIons
|
||||
// 21 Jan 2003 V.Ivanchenko Cut per region
|
||||
// ------------------------------------------------------------
|
||||
|
||||
// Class Description:
|
||||
@@ -83,6 +84,7 @@
|
||||
#include "G4IonChuFluctuationModel.hh"
|
||||
#include "G4IonYangFluctuationModel.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
#include "G4MaterialCutsCouple.hh"
|
||||
|
||||
class G4VEMDataSet;
|
||||
class G4ShellVacancy;
|
||||
@@ -158,31 +160,31 @@ public: // With description
|
||||
|
||||
void SetNuclearStoppingOff() {nStopping = false;};
|
||||
// This method switch off calculation of the nuclear stopping power.
|
||||
|
||||
|
||||
void SetBarkasOn() {theBarkas = true;};
|
||||
// This method switch on calculation of the Barkas and Bloch effects.
|
||||
|
||||
// This method switch on calculation of the Barkas and Bloch effects.
|
||||
|
||||
void SetBarkasOff() {theBarkas = false;};
|
||||
// This method switch off calculation of the Barkas and Bloch effects.
|
||||
|
||||
void SetFluorescence(const G4bool val) {theFluo = val;};
|
||||
// This method switch on/off simulation of the fluorescence of the media.
|
||||
|
||||
G4VParticleChange* AlongStepDoIt(const G4Track& trackData ,
|
||||
// This method switch on/off simulation of the fluorescence of the media.
|
||||
|
||||
G4VParticleChange* AlongStepDoIt(const G4Track& trackData ,
|
||||
const G4Step& stepData ) ;
|
||||
// Function to determine total energy deposition on the step
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& track,
|
||||
const G4Step& Step ) ;
|
||||
const G4Step& Step ) ;
|
||||
// Simulation of delta rays production.
|
||||
|
||||
|
||||
G4double ComputeDEDX(const G4ParticleDefinition* aParticle,
|
||||
const G4Material* material,
|
||||
const G4MaterialCutsCouple* couple,
|
||||
G4double kineticEnergy);
|
||||
// This method returns electronic dE/dx for protons or antiproton.
|
||||
|
||||
void SetCutForSecondaryPhotons(G4double cut);
|
||||
// Set threshold energy for fluorescence
|
||||
// Set threshold energy for fluorescence
|
||||
|
||||
void SetCutForAugerElectrons(G4double cut);
|
||||
// Set threshold energy for Auger electron production
|
||||
@@ -204,14 +206,14 @@ private:
|
||||
void BuildDataForFluorescence(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
void BuildLambdaTable(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
void SetProtonElectronicStoppingPowerModel(const G4String& dedxTable)
|
||||
{theProtonTable = dedxTable ;};
|
||||
// This method defines the ionisation parametrisation method via its name
|
||||
|
||||
void SetAntiProtonElectronicStoppingPowerModel(const G4String& dedxTable)
|
||||
void SetProtonElectronicStoppingPowerModel(const G4String& dedxTable)
|
||||
{theProtonTable = dedxTable ;};
|
||||
// This method defines the ionisation parametrisation method via its name
|
||||
|
||||
void SetAntiProtonElectronicStoppingPowerModel(const G4String& dedxTable)
|
||||
{theAntiProtonTable = dedxTable ;};
|
||||
|
||||
|
||||
G4double ComputeMicroscopicCrossSection(
|
||||
const G4ParticleDefinition& aParticleType,
|
||||
G4double kineticEnergy,
|
||||
@@ -219,48 +221,48 @@ private:
|
||||
G4double deltaCutInEnergy) const;
|
||||
|
||||
G4double GetConstraints(const G4DynamicParticle* particle,
|
||||
const G4Material* material);
|
||||
const G4MaterialCutsCouple* couple);
|
||||
// Function to determine StepLimit
|
||||
|
||||
G4double ProtonParametrisedDEDX(const G4Material* material,
|
||||
G4double ProtonParametrisedDEDX(const G4MaterialCutsCouple* couple,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
G4double AntiProtonParametrisedDEDX(const G4Material* material,
|
||||
G4double AntiProtonParametrisedDEDX(const G4MaterialCutsCouple* couple,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
G4double DeltaRaysEnergy(const G4Material* material,
|
||||
|
||||
G4double DeltaRaysEnergy(const G4MaterialCutsCouple* couple,
|
||||
G4double kineticEnergy,
|
||||
G4double particleMass) const;
|
||||
// This method returns average energy loss due to delta-rays emission with
|
||||
// This method returns average energy loss due to delta-rays emission with
|
||||
// energy higher than the cut energy for given material.
|
||||
|
||||
G4double BarkasTerm(const G4Material* material,
|
||||
G4double BarkasTerm(const G4Material* material,
|
||||
G4double kineticEnergy) const;
|
||||
// Function to compute the Barkas term for protons
|
||||
|
||||
// Function to compute the Barkas term for protons
|
||||
|
||||
G4double BlochTerm(const G4Material* material,
|
||||
G4double kineticEnergy,
|
||||
G4double cSquare) const;
|
||||
G4double cSquare) const;
|
||||
// Function to compute the Bloch term for protons
|
||||
|
||||
G4double ElectronicLossFluctuation(const G4DynamicParticle* particle,
|
||||
const G4Material* material,
|
||||
const G4MaterialCutsCouple* material,
|
||||
G4double meanLoss,
|
||||
G4double step) const;
|
||||
// Function to sample electronic losses
|
||||
|
||||
G4std::vector<G4DynamicParticle*>* DeexciteAtom(const G4Material* material,
|
||||
G4std::vector<G4DynamicParticle*>* DeexciteAtom(const G4MaterialCutsCouple* couple,
|
||||
G4double incidentEnergy,
|
||||
G4double hMass,
|
||||
G4double eLoss);
|
||||
|
||||
G4int SelectRandomAtom(const G4Material* material,
|
||||
G4int SelectRandomAtom(const G4MaterialCutsCouple* couple,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
// hide assignment operator
|
||||
|
||||
// hide assignment operator
|
||||
G4hLowEnergyIonisation & operator=(const G4hLowEnergyIonisation &right);
|
||||
G4hLowEnergyIonisation(const G4hLowEnergyIonisation&);
|
||||
|
||||
|
||||
private:
|
||||
// private data members ...............................
|
||||
G4VLowEnergyModel* theBetheBlochModel;
|
||||
@@ -276,7 +278,7 @@ private:
|
||||
G4String theAntiProtonTable;
|
||||
G4String theNuclearTable;
|
||||
|
||||
// interval of parametrisation of electron stopping power
|
||||
// interval of parametrisation of electron stopping power
|
||||
G4double protonLowEnergy;
|
||||
G4double protonHighEnergy;
|
||||
G4double antiProtonLowEnergy;
|
||||
@@ -291,15 +293,15 @@ private:
|
||||
G4double minGammaEnergy;
|
||||
G4double minElectronEnergy;
|
||||
G4PhysicsTable* theMeanFreePathTable;
|
||||
|
||||
|
||||
const G4double paramStepLimit; // parameter limits the step at low energy
|
||||
|
||||
|
||||
G4double fdEdx; // computed in GetContraints
|
||||
G4double fRangeNow ; //
|
||||
G4double fRangeNow ; //
|
||||
G4double charge; //
|
||||
G4double chargeSquare; //
|
||||
G4double initialMass; // mass to calculate Lambda tables
|
||||
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
G4ShellVacancy* shellVacancy;
|
||||
G4VhShellCrossSection* shellCS;
|
||||
@@ -309,15 +311,15 @@ private:
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
inline G4double G4hLowEnergyIonisation::GetContinuousStepLimit(
|
||||
const G4Track& track,
|
||||
G4double,
|
||||
G4double currentMinimumStep,
|
||||
G4double&)
|
||||
{
|
||||
{
|
||||
G4double Step =
|
||||
GetConstraints(track.GetDynamicParticle(),track.GetMaterial()) ;
|
||||
GetConstraints(track.GetDynamicParticle(),track.GetMaterialCutsCouple()) ;
|
||||
|
||||
if((Step>0.0)&&(Step<currentMinimumStep))
|
||||
currentMinimumStep = Step ;
|
||||
@@ -328,16 +330,16 @@ inline G4double G4hLowEnergyIonisation::GetContinuousStepLimit(
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4bool G4hLowEnergyIonisation::IsApplicable(
|
||||
const G4ParticleDefinition& particle)
|
||||
const G4ParticleDefinition& particle)
|
||||
{
|
||||
return(particle.GetPDGCharge() != 0.0
|
||||
return(particle.GetPDGCharge() != 0.0
|
||||
&& particle.GetPDGMass() > proton_mass_c2*0.1);
|
||||
}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4hLowEnergyLoss.hh,v 1.13 2001/11/23 11:45:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// $Id: G4hLowEnergyLoss.hh,v 1.15 2003/04/18 17:50:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// $Id:
|
||||
// ------------------------------------------------------------
|
||||
@@ -50,16 +50,18 @@
|
||||
// 31/03/00 V.Ivanchenko rename to lowenergy as G4hLowEnergyLoss.hh
|
||||
// 09/08/00 V.Ivanchenko remove GetContinuousStepLimit and IsApplicable
|
||||
// 23/11/01 V.Ivanchenko Move static member-functions from header to source
|
||||
// 22/01/03 V.Ivanchenko Cuts per region
|
||||
// 18/04/03 V.Ivanchenko Make dRoverRange protected
|
||||
//
|
||||
// Class description:
|
||||
// Class for Low Energy electromagnetic energy loss of hadrons
|
||||
// Class for Low Energy electromagnetic energy loss of hadrons
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// ****************************************************************************
|
||||
|
||||
#ifndef G4hLowEnergyLoss_h
|
||||
#define G4hLowEnergyLoss_h 1
|
||||
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
@@ -74,11 +76,11 @@
|
||||
#include "G4Step.hh"
|
||||
#include "G4PhysicsLogVector.hh"
|
||||
#include "G4PhysicsLinearVector.hh"
|
||||
|
||||
|
||||
class G4EnergyLossMessenger;
|
||||
|
||||
|
||||
class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -98,9 +100,11 @@ class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
|
||||
protected:
|
||||
|
||||
G4bool CutsWhereModified();
|
||||
|
||||
private:
|
||||
|
||||
// hide assignment operator
|
||||
// hide assignment operator
|
||||
|
||||
G4hLowEnergyLoss(G4hLowEnergyLoss &);
|
||||
G4hLowEnergyLoss & operator=(const G4hLowEnergyLoss &right);
|
||||
@@ -116,18 +120,18 @@ class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
static G4double Mass,taulow,tauhigh,ltaulow,ltauhigh;
|
||||
|
||||
protected:
|
||||
G4Material *lastMaterial ;
|
||||
// G4Material *lastMaterial ;
|
||||
const G4double MaxExcitationNumber ;
|
||||
const G4double probLimFluct ;
|
||||
const long nmaxDirectFluct,nmaxCont1,nmaxCont2 ;
|
||||
|
||||
// ====================================================================
|
||||
// static part of the class
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// get the number of processes contributing to the cont.energy loss
|
||||
static G4int GetNumberOfProcesses();
|
||||
static G4int GetNumberOfProcesses();
|
||||
|
||||
// set the number of processes contributing to the cont.energy loss
|
||||
static void SetNumberOfProcesses(G4int number);
|
||||
@@ -209,7 +213,7 @@ class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
static G4PhysicsTable* theProperTimepTable ;
|
||||
static G4PhysicsTable* theProperTimepbarTable ;
|
||||
|
||||
// processes inherited from G4hLowEnergyLoss
|
||||
// processes inherited from G4hLowEnergyLoss
|
||||
// register themselves in the static array Recorder
|
||||
static G4PhysicsTable** RecorderOfpProcess;
|
||||
static G4PhysicsTable** RecorderOfpbarProcess;
|
||||
@@ -230,7 +234,7 @@ class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
static G4double HighestKineticEnergy;
|
||||
static G4int TotBin; // number of bins in table,
|
||||
// calculated in BuildPhysicsTable
|
||||
|
||||
|
||||
static G4double RTable,LOGRTable; // LOGRTable=log(HighestKineticEnergy
|
||||
// /LowestKineticEnergy)/TotBin
|
||||
// RTable = exp(LOGRTable)
|
||||
@@ -259,16 +263,16 @@ class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
static G4PhysicsTable* theRangeCoeffCTable;
|
||||
static G4int NumberOfProcesses ;
|
||||
|
||||
static G4double dRoverRange ; // maximum allowed deltarange/range
|
||||
// in one step
|
||||
protected:
|
||||
|
||||
G4PhysicsTable* theLossTable ;
|
||||
|
||||
G4double linLossLimit ;
|
||||
|
||||
|
||||
G4double MinKineticEnergy ;
|
||||
|
||||
static G4double dRoverRange ; // maximum allowed deltarange/range
|
||||
// in one step
|
||||
static G4double finalRange ; // last step before stop
|
||||
static G4double c1lim,c2lim,c3lim ; // coeffs for computing steplimit
|
||||
|
||||
@@ -278,6 +282,6 @@ class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4hLowEnergyLoss.icc,v 1.2 2001/07/11 10:02:40 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-05-00 $
|
||||
// GEANT4 tag $Name: geant4-05-01 $
|
||||
//
|
||||
// $Id:
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * 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. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4hSRIM2000p
|
||||
//
|
||||
// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch)
|
||||
//
|
||||
// Creation date: 7 Jan 2003
|
||||
//
|
||||
// Modifications:
|
||||
// 07/01/2003 V.Ivanchenko First implementation
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Electronic stopping power parametrised according to
|
||||
// J. F. Ziegler, SRIM-2000 software package from www.SRIM.org
|
||||
//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4hSRIM2000p_h
|
||||
#define G4hSRIM2000p_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VhElectronicStoppingPower.hh"
|
||||
|
||||
class G4Material;
|
||||
|
||||
class G4hSRIM2000p : public G4VhElectronicStoppingPower
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4hSRIM2000p();
|
||||
|
||||
~G4hSRIM2000p();
|
||||
|
||||
G4bool HasMaterial(const G4Material* material);
|
||||
|
||||
G4double StoppingPower(const G4Material* material,
|
||||
G4double kineticEnergy);
|
||||
|
||||
G4double ElectronicStoppingPower(G4double z,
|
||||
G4double kineticEnergy) const;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
const G4double protonMassAMU;
|
||||
static G4double a[92][8];
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user