Import Geant4 6.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 10:41:53 +02:00
parent 4aea781e80
commit 96686e0c8f
6560 changed files with 153347 additions and 238155 deletions
@@ -22,7 +22,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// 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-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// 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-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
@@ -19,11 +19,9 @@
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4AugerData.hh
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4BremsstrahlungParameters.hh,v 1.9 2003/06/16 16:59:39 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
// V. Ivanchenko (Vladimir.Ivantchenko@cern.ch)
@@ -22,7 +22,7 @@
//
//
// $Id: G4CompositeEMDataSet.hh,v 1.5 2003/06/16 16:59:40 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4CrossSectionHandler.hh,v 1.8 2003/06/16 16:59:41 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4EMDataSet.hh,v 1.4 2003/05/20 20:03:34 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -19,9 +19,6 @@
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
//
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4FluoTransition.hh,v 1.2 ????
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
//
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * 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: G4Generator2BN
//
// Author: Andreia Trindade (andreia@lip.pt)
// Pedro Rodrigues (psilva@lip.pt)
// Luis Peralta (luis@lip.pt)
//
// Creation date: 2 June 2003
//
// Modifications:
// 02 Jun 2003 First implementation acording with new design
//
//
// Class Description:
//
// Concrete class for Bremsstrahlung Angular Distribution Generation - 2BN Distribution
// Further documentation available from http://www.ge.infn.it/geant4/lowE
// -------------------------------------------------------------------
//
#ifndef G4Generator2BN_h
#define G4Generator2BN_h 1
#include "G4ios.hh"
#include "globals.hh"
#include "G4VBremAngularDistribution.hh"
class G4Generator2BN : public G4VBremAngularDistribution
{
public:
G4Generator2BN(const G4String& name);
~G4Generator2BN();
G4double PolarAngle(const G4double initial_energy,
const G4double final_energy,
const G4int Z);
void PrintGeneratorInformation() const;
public:
void SetInterpolationThetaIncrement(G4double increment) {dtheta = increment;};
G4double GetInterpolationThetaIncrement() {return dtheta;};
void SetGammaCutValue(G4double cutValue) {kcut = cutValue;};
G4double GetGammaCutValue() {return kcut;};
void ConstructMajorantSurface();
protected:
G4double CalculateFkt(G4double k, G4double theta, G4double A, G4double c) const;
G4double Calculatedsdkdt(G4double kout, G4double theta, G4double Eel) const;
G4double Generate2BN(G4double Ek, G4double k) const;
private:
G4double b;
G4int index_min, index_max;
G4double* Atab;
G4double* ctab;
G4double kmin, Ekmin;
G4double dtheta;
G4double kcut;
// hide assignment operator
G4Generator2BN & operator=(const G4Generator2BN &right);
G4Generator2BN(const G4Generator2BN&);
};
#endif
@@ -0,0 +1,87 @@
//
// ********************************************************************
// * 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: G4Generator2BS
//
// Author: Andreia Trindade (andreia@lip.pt)
// Pedro Rodrigues (psilva@lip.pt)
// Luis Peralta (luis@lip.pt)
//
// Creation date: 2 June 2003
//
// Modifications:
// 02 Jun 2003 First implementation acording with new design
//
//
// Class Description:
//
// Concrete class for Bremsstrahlung Angular Distribution Generation - 2BS Distribution
// Further documentation available from http://www.ge.infn.it/geant4/lowE
// -------------------------------------------------------------------
//
#ifndef G4Generator2BS_h
#define G4Generator2BS_h 1
#include "G4ios.hh"
#include "globals.hh"
#include "G4VBremAngularDistribution.hh"
class G4Generator2BS : public G4VBremAngularDistribution
{
public:
G4Generator2BS(const G4String& name);
~G4Generator2BS();
G4double PolarAngle(const G4double initial_energy,
const G4double final_energy,
const G4int Z);
void PrintGeneratorInformation() const;
protected:
G4double RejectionFunction(G4double value) const;
private:
G4double z;
G4double rejection_argument1, rejection_argument2, rejection_argument3;
G4double EnergyRatio;
// hide assignment operator
G4Generator2BS & operator=(const G4Generator2BS &right);
G4Generator2BS(const G4Generator2BS&);
};
#endif
@@ -22,7 +22,7 @@
//
//
// $Id: G4LinInterpolation.hh,v 1.2 2002/05/28 09:15:26 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// 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-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,8 +22,8 @@
//
//
// -------------------------------------------------------------------
// $Id: G4LowEnergyBremsstrahlung.hh,v 1.33 2003/05/20 23:33:25 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
// $Id: G4LowEnergyBremsstrahlung.hh,v 1.35 2003/11/06 12:25:05 pia Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: A. Forti
//
@@ -36,6 +36,7 @@
// 29 Nov 2001 V.Ivanchenko New parametrisation of EEDL data
// 21 Feb 2003 V.Ivanchenko Energy bins for spectrum are defined here
// 24 Mar 2003 P.Rodrigues Changes to accommodate new angular generators
// 06 Nov 2003 MGP Overloaded SetAngularGenerator
//
// -------------------------------------------------------------------
@@ -68,11 +69,11 @@ class G4LowEnergyBremsstrahlung : public G4eLowEnergyLoss
public:
G4LowEnergyBremsstrahlung(const G4String& processName = "LowEnBrem");
// Commented out for release 5.2 (June 2003), allowing no interface change
// G4LowEnergyBremsstrahlung(const G4String& processName = "LowEnBrem",
// G4VBremAngularDistribution* distribution = 0);
// G4LowEnergyBremsstrahlung(const G4String& processName = "LowEnBrem",
// G4VBremAngularDistribution* distribution = 0);
~G4LowEnergyBremsstrahlung();
G4bool IsApplicable(const G4ParticleDefinition&);
@@ -81,14 +82,16 @@ public:
G4VParticleChange* PostStepDoIt(const G4Track& track,
const G4Step& step);
void SetCutForLowEnSecPhotons(G4double cut);
// Temporary for release 5.2 (June 2003), allowing no interface change
void SetAngularGenerator(G4VBremAngularDistribution* distribution);
void SetAngularGenerator(const G4String& name);
void PrintInfoDefinition();
protected:
G4double GetMeanFreePath(const G4Track& track,
@@ -19,9 +19,9 @@
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// $Id: G4LowEnergyCompton.hh,v 1.19 2001/12/13 12:04:13 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// $Id: G4LowEnergyCompton.hh,v 1.20 2003/12/09 15:36:37 gunter Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// 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-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: A. Forti
// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
@@ -22,7 +22,7 @@
//
// -------------------------------------------------------------------
// $Id: G4LowEnergyIonisation.hh,v 1.40 2003/06/16 16:59:44 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: A. Forti
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4LowEnergyPhotoElectric.hh,v 1.25 2002/06/01 03:14:18 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// 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-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// ------------------------------------------------------------
// 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-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
//
//
@@ -64,10 +64,8 @@ public:
~G4ModifiedTsai();
G4double PolarAngle(const G4double initial_energy,
const G4double initial_momentum,
const G4double final_energy,
const G4double final_momentum,
const G4int Z) const;
const G4double final_energy,
const G4int Z);
void PrintGeneratorInformation() const;
@@ -0,0 +1,104 @@
//
// ********************************************************************
// * 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
//
// History:
// -----------
// 01 Jul 2003 L. Pandola 1st implementation
//
// -------------------------------------------------------------------
// Class description:
// Low Energy Electromagnetic Physics, Positron Annihilation
// Penelope Model
// -------------------------------------------------------------------
#ifndef G4PenelopeAnnihilation_h
#define G4PenelopeAnnihilation_h 1
#include "globals.hh"
#include "G4VRestDiscreteProcess.hh"
class G4PhysicsTableclass;
class G4ParticleDefinition;
class G4VParticleChange;
class G4Track;
class G4Step;
class G4Material;
class G4PenelopeAnnihilation : public G4VRestDiscreteProcess
{
public:
G4PenelopeAnnihilation(const G4String& processName ="PenAnnih");
~G4PenelopeAnnihilation();
G4bool IsApplicable(const G4ParticleDefinition&);
void BuildPhysicsTable(const G4ParticleDefinition&);
void PrintInfoDefinition();
G4double DumpMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition)
{ return GetMeanFreePath(aTrack, previousStepSize, condition); }
protected:
G4double GetMeanFreePath(const G4Track&,G4double,
G4ForceCondition*);
public:
G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
const G4Step& aStep);
G4double GetMeanLifeTime(const G4Track& aTrack,
G4ForceCondition* condition);
G4VParticleChange* AtRestDoIt(const G4Track& aTrack,
const G4Step& aStep);
private:
G4double calculateCrossSectionPerElectron(G4double energy);
private:
// hide assignment operator as private
G4PenelopeAnnihilation& operator=(const G4PenelopeAnnihilation& right);
G4PenelopeAnnihilation(const G4PenelopeAnnihilation& );
private:
G4PhysicsTable* meanFreePathTable;
G4double lowEnergyLimit; // low energy limit of the tables
G4double highEnergyLimit; // high energy limit of the tables
G4int nBins; // number of bins in the tables
G4double cutForLowEnergySecondaryPhotons;
};
#endif
@@ -22,8 +22,8 @@
//
//
// -------------------------------------------------------------------
// $Id: G4PenelopeBremsstrahlung.hh,v 1.6 2003/06/16 16:59:45 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// $Id: G4PenelopeBremsstrahlung.hh,v 1.7 2003/11/11 17:18:30 pandola Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: L.Pandola
//
@@ -33,6 +33,7 @@
// 18 Mar 2003 L. Pandola positrons added
// 23 May 2003 L. Pandola ebins added as private member
// 25 May 2003 MGP ebins removed from data members
// 11 Nov 2003 L. Pandola Code review: use std::map for angular data
// Class description:
// Penelope electromagnetic process, electron and positron Bremsstrahlung
// --------------------------------------------------------------
@@ -55,9 +56,6 @@ class G4VEnergySpectrum;
class G4VCrossSectionHandler;
class G4PenelopeBremsstrahlung : public G4eLowEnergyLoss
{
typedef std::vector<G4PenelopeBremsstrahlungAngular*> G4AngularData;
//vector of pointers to the angular factors of the elements in each material
public:
G4PenelopeBremsstrahlung(const G4String& processName = "PenelopeBrem");
@@ -101,9 +99,9 @@ private:
G4VEMDataSet* theMeanFreePath;
G4VEnergySpectrum* energySpectrum;
// Vector of pointers to the vectors containing tha angular data
// one element = one material
std::vector<G4AngularData*> materialAngularData;
// Map to the objects containing tha angular data
std::map<G4int,G4PenelopeBremsstrahlungAngular*> *angularData;
// Lower limit for generation of gamma in this model
G4DataVector cutForSecondaryPhotons;
@@ -22,14 +22,15 @@
//
//
// -------------------------------------------------------------------
// $Id: G4PenelopeBremsstrahlungAngular.hh,v 1.1 2003/03/13 17:23:03 pandola Exp $
// GEANT4 tag $Name: geant4-05-02 $
// $Id: G4PenelopeBremsstrahlungAngular.hh,v 1.2 2003/11/07 12:26:08 pandola Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: L.Pandola
//
// History:
// -----------
// 04 Feb 2003 L. Pandola 1st implementation
// 07 Nov 2003 L. Pandola Added method for testing
// Class description:
// Calculation of angular distribution for Penelope Bremsstrahlung
// --------------------------------------------------------------
@@ -53,7 +54,8 @@ public:
G4PenelopeBremsstrahlungAngular(G4int Zmat);
~G4PenelopeBremsstrahlungAngular();
G4double ExtractCosTheta(G4double PrimaryEnergy,G4double GammaEnergy);
G4int GetAtomicNumber(); //testing purpose
private:
void InterpolationTableForZ(); //Initialization of tables (part 1)
@@ -23,7 +23,7 @@
//
// -------------------------------------------------------------------
// $Id: G4PenelopeBremsstrahlungContinuous.hh,v 1.2 2003/03/19 10:28:28 pandola Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: L.Pandola
//
@@ -19,9 +19,9 @@
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// $Id: G4PenelopeCompton.hh,v 1.7 2003/06/16 16:59:46 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// $Id: G4PenelopeCompton.hh,v 1.8 2003/12/09 15:36:38 gunter Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Luciano Pandola
//
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * 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: G4PenelopeCrossSectionHandler
//
// Author: Luciano Pandola
//
// Creation date: 04 July 2003
//
// -------------------------------------------------------------------
// Class description:
// Provides cross sections with cut for Penelope Ionisation
// -------------------------------------------------------------------
//
#ifndef G4PENELOPECROSSSECTIONHANDLER_HH
#define G4PENELOPECROSSSECTIONHANDLER_HH 1
#include "G4VCrossSectionHandler.hh"
#include "globals.hh"
class G4PenelopeIonisation;
class G4DataVector;
class G4VEMDataSet;
class G4VDataSetAlgorithm;
class G4ParticleDefinition;
class G4PenelopeCrossSectionHandler : public G4VCrossSectionHandler
{
public:
G4PenelopeCrossSectionHandler(G4PenelopeIonisation* theProcess,
const G4ParticleDefinition& aPartycleType,
G4VDataSetAlgorithm* alg,
G4double emin,
G4double emax,
G4int nbin);
~G4PenelopeCrossSectionHandler();
protected:
std::vector<G4VEMDataSet*>* BuildCrossSectionsForMaterials(
const G4DataVector& energyVector,
const G4DataVector* energyCuts);
private:
// Hide copy constructor and assignment operator
G4PenelopeCrossSectionHandler& operator=(const G4PenelopeCrossSectionHandler& right);
G4PenelopeCrossSectionHandler(const G4PenelopeCrossSectionHandler&);
G4PenelopeIonisation* process;
const G4ParticleDefinition& particle;
G4VDataSetAlgorithm* interp;
};
#endif
@@ -22,7 +22,7 @@
//
//
// $Id: G4PenelopeGammaConversion.hh,v 1.1 2002/12/06 16:25:00 pandola Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: L. Pandola
//
@@ -0,0 +1,157 @@
//
// ********************************************************************
// * 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: G4PenelopeIonisation.hh,v 1.4 2003/07/09 12:36:46 pandola Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: L. Pandola
//
// History:
// -----------
// 20 Mar 2003 L. Pandola 1st implementation
// 30 Jun 2003 L. Pandola methods for positrons added
// 04 Jul 2003 L. Pandola added methods for interfacing
// with the cross section handler
// -------------------------------------------------------------------
//
// Class description:
// Penelope electromagnetic process, electron and positron Ionisation
// Further documentation available from http://www.ge.infn.it/geant4/lowE
// --------------------------------------------------------------
#ifndef G4PENELOPEIONISATION_HH
#define G4PENELOPEIONISATION_HH 1
#include "G4eLowEnergyLoss.hh"
#include "G4AtomicDeexcitation.hh"
#include "globals.hh"
class G4Track;
class G4Step;
class G4ParticleDefinition;
class G4VParticleChange;
class G4VDataSetAlgorithm;
class G4ParticleChange;
class G4VCrossSectionHandler;
class G4VEMDataSet;
class G4PenelopeIonisation : public G4eLowEnergyLoss
{
public:
G4PenelopeIonisation(const G4String& processName = "PenelopeIoni");
~G4PenelopeIonisation();
G4bool IsApplicable(const G4ParticleDefinition&);
void PrintInfoDefinition();
void BuildPhysicsTable(const G4ParticleDefinition& ParticleType);
G4VParticleChange* PostStepDoIt(const G4Track& track,
const G4Step& step);
void SetCutForLowEnSecPhotons(G4double cut);
void SetCutForLowEnSecElectrons(G4double cut);
void ActivateAuger(G4bool val);
G4double CalculateCrossSectionsRatio(G4double,G4double,
G4int, G4double,
const G4ParticleDefinition&);
// 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
G4PenelopeIonisation(const G4PenelopeIonisation& );
G4PenelopeIonisation& operator = (const G4PenelopeIonisation& right);
void BuildLossTable(const G4ParticleDefinition& ParticleType);
void CalculateDiscreteForElectrons(G4double,G4double,G4int,G4double);
void CalculateDiscreteForPositrons(G4double,G4double,G4int,G4double);
void ReadData();
G4double CalculateDeltaFermi(G4double,G4int,G4double);
G4double CalculateContinuous(G4double,G4double,G4int,G4double,
const G4ParticleDefinition&);
G4double CalculateStoppingPowerForElectrons(G4double,
G4double,G4double,G4double);
G4double CalculateStoppingPowerForPositrons(G4double,
G4double,G4double,G4double);
G4double CrossSectionsRatioForElectrons(G4double,G4double,
G4double,G4double,
G4int);
G4double CrossSectionsRatioForPositrons(G4double,G4double,
G4double,G4double,
G4int);
G4VCrossSectionHandler* crossSectionHandler;
G4VEMDataSet* theMeanFreePath;
// Lower limit for generation of gamma in this model
G4DataVector cutForDelta;
G4double cutForPhotons;
G4double cutForElectrons;
G4AtomicDeexcitation deexcitationManager;
//Parameters of hard interactions
G4double kineticEnergy1;
G4double cosThetaPrimary;
G4double energySecondary;
G4double cosThetaSecondary;
G4int iOsc;
//Parameters of atomic shells
std::map<G4int,G4DataVector*> *ionizationEnergy;
std::map<G4int,G4DataVector*> *resonanceEnergy;
std::map<G4int,G4DataVector*> *occupationNumber;
std::map<G4int,G4DataVector*> *shellFlag;
};
#endif
@@ -22,7 +22,7 @@
//
//
// $Id: G4PenelopePhotoElectric.hh,v 1.2 2003/02/23 23:42:52 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: L.Pandola
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4PenelopeRayleigh.hh,v 1.3 2003/03/13 16:53:50 pandola Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Luciano Pandola
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4RangeNoTest.hh,v 1.3 2003/05/20 20:03:34 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4RangeTest.hh,v 1.3 2003/01/22 18:42:23 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4SemiLogInterpolation.hh,v 1.3 2002/05/28 09:15:26 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4ShellData.hh,v 1.3 2003/06/16 16:59:48 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4ShellEMDataSet.hh,v 1.5 2003/06/16 16:59:49 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -63,10 +63,8 @@ public:
virtual ~G4VBremAngularDistribution();
virtual G4double PolarAngle(const G4double initial_energy,
const G4double initial_momentum,
const G4double final_energy,
const G4double final_momentum,
const G4int Z) const = 0;
const G4int Z) = 0;
virtual void PrintGeneratorInformation() const = 0;
@@ -22,7 +22,7 @@
//
//
// $Id: G4VCrossSectionHandler.hh,v 1.13 2003/06/16 16:59:51 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4VDataSetAlgorithm.hh,v 1.6 2002/05/28 09:15:26 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// 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-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4VRangeTest.hh,v 1.2 2003/01/22 18:42:23 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4VeLowEnergyLoss.hh,v 1.8 2003/01/22 18:42:24 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// 3.4.2000 Veronique Lefebure:
// Move utils/include/G4VEnergyLoss.hh to
@@ -19,9 +19,9 @@
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: G4eBremsstrahlungSpectrum.hh,v 1.6 2003/05/25 14:35:41 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// $Id: G4eBremsstrahlungSpectrum.hh,v 1.7 2003/12/09 15:36:39 gunter Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// -------------------------------------------------------------------
//
@@ -21,7 +21,7 @@
// ********************************************************************
//
// $Id: G4eIonisationCrossSectionHandler.hh,v 1.5 2003/06/16 16:59:53 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// -------------------------------------------------------------------
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4eIonisationParameters.hh,v 1.7 2003/06/16 16:59:54 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
// V. Ivanchenko
@@ -19,9 +19,9 @@
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: G4eIonisationSpectrum.hh,v 1.5 2003/05/20 20:03:34 pia Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// $Id: G4eIonisationSpectrum.hh,v 1.6 2003/12/09 15:36:40 gunter Exp $
// GEANT4 tag $Name: geant4-06-00 $
//
// -------------------------------------------------------------------
//
@@ -22,7 +22,7 @@
//
//
// $Id: G4eLowEnergyLoss.hh,v 1.12 2003/06/16 16:59:55 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// -------------------------------------------------------------------
@@ -22,7 +22,7 @@
//
//
// $Id: G4eLowEnergyLoss.icc,v 1.7 2003/06/16 16:59:56 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// ---------------------------------------------------------------
// GEANT 4 class inlined methods file
@@ -22,7 +22,7 @@
//
//
// $Id: G4hLowEnergyLoss.hh,v 1.15 2003/04/18 17:50:32 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// $Id:
// ------------------------------------------------------------
@@ -22,7 +22,7 @@
//
//
// $Id: G4hLowEnergyLoss.icc,v 1.2 2001/07/11 10:02:40 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
// GEANT4 tag $Name: geant4-06-00 $
//
// $Id:
// ---------------------------------------------------------------