Import Geant4 6.1.0 source tree
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.191 2003/11/18 17:49:41 pia Exp $
|
||||
$Id: History,v 1.200 2004/03/23 12:45:14 gcosmo Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,41 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
23.03.2004 G.Cosmo, tag emlowen-V06-00-09
|
||||
Fix in G4PenelopeCompton for compilation on WIN32-VC.
|
||||
|
||||
15.03.2004 MGP, tag emlowen-V06-00-08
|
||||
Fix in G4PenelopeRayleigh related to PR 605
|
||||
Bug fix in G4PenelopeIonisation
|
||||
Performance improvement in Penelope processes
|
||||
|
||||
15.03.2004 MGP, tag emlowen-V06-00-07
|
||||
Performance improvement in G4Generator2BN
|
||||
|
||||
12.03.2004 MGP, tag emlowen-V06-00-06
|
||||
Fixed compilation warnings
|
||||
|
||||
12.03.2004 MGP, tag emlowen-V06-00-05
|
||||
G4PolarizedRayleigh removed
|
||||
|
||||
12.03.2004 MGP, tag emlowen-V06-00-04
|
||||
Contains G4PolarizedRayleigh, which has compilation problems,
|
||||
but no maintenance by authors, for future retrieval
|
||||
|
||||
11.03.2004 MGP, tag emlowen-V06-00-03
|
||||
Bug fixes in G4PenelopeCompton and G4PenelopeIonisation
|
||||
|
||||
11.03.2004 MGP, tag emlowen-V06-00-02
|
||||
Bug fix in G4IonisationParameters
|
||||
|
||||
26.01.2004 MGP, tag emlowen-V06-00-01
|
||||
Optimization of Bremsstrahlung angular generators,
|
||||
provided by LIP group
|
||||
|
||||
26.01.2004 MGP, tag emlowen-V06-00-00
|
||||
Fixed memory leaks in G4PenepoleInterpolator and
|
||||
G4PenelopeIonisation
|
||||
|
||||
18.11.2003 MGP, tag emlowen-V05-02-10
|
||||
Performance optimization in Bremsstrahlung angular distribution
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
@@ -72,7 +72,7 @@ private:
|
||||
|
||||
// Decides wether a radiative transition is possible and, if it is,
|
||||
// returns the identity of the starting shell for the transition
|
||||
const G4int SelectTypeOfTransition(G4int Z, G4int shellId);
|
||||
G4int SelectTypeOfTransition(G4int Z, G4int shellId);
|
||||
|
||||
// Generates a particle from a radiative transition and returns it
|
||||
G4DynamicParticle* GenerateFluorescence(G4int Z, G4int shellId,G4int provShellId);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicShell.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4AtomicTransition.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
//
|
||||
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 16 Sept 2001 Modofied according to a design iteration in the
|
||||
// LowEnergy category
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, a data container
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4AtomicTransition_h
|
||||
#define G4AtomicTransition_h 1
|
||||
|
||||
#include "G4DataVector.hh"
|
||||
#include "globals.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4AtomicTransition {
|
||||
|
||||
public:
|
||||
|
||||
G4AtomicTransition(G4int finalShell,
|
||||
const std::vector<G4int>& ids,
|
||||
const G4DataVector& energies,
|
||||
const G4DataVector& probabilities);
|
||||
~G4AtomicTransition();
|
||||
|
||||
// All the data stored and provided by this class are relative to a
|
||||
// given vacancy, whose identity is provided by the FinalShellId() method,
|
||||
// in an atom of a given material
|
||||
|
||||
// Returns the identities of the originating shells for the transitions
|
||||
const std::vector<G4int>& OriginatingShellIds() const;
|
||||
|
||||
// Return the energies of the transitions
|
||||
const G4DataVector& TransitionEnergies() const;
|
||||
|
||||
// Return the probabilities of the transitions
|
||||
const G4DataVector& TransitionProbabilities() const;
|
||||
|
||||
// Return the identity if the vacancy
|
||||
const G4int FinalShellId() const;
|
||||
|
||||
// Given the index of the originating shells returns its identity
|
||||
G4int OriginatingShellId(G4int index) const;
|
||||
|
||||
// Given the index of the originating shells returns the energy
|
||||
// of the transition starting from it
|
||||
G4double TransitionEnergy(G4int index) const;
|
||||
|
||||
// Given the index of the originating shells returns the probability
|
||||
// of the transition starting from it
|
||||
G4double TransitionProbability(G4int index) const;
|
||||
|
||||
private:
|
||||
|
||||
G4int finalShellId;
|
||||
std::vector<G4int> originatingShellIds;
|
||||
G4DataVector transitionEnergies;
|
||||
G4DataVector transitionProbabilities;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AugerData.hh
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
//
|
||||
|
||||
@@ -85,7 +85,7 @@ public:
|
||||
|
||||
// returns the id of the shell in wich the transition electron arrives
|
||||
|
||||
const G4int FinalShellId() const;
|
||||
G4int FinalShellId() const;
|
||||
|
||||
// Returns the id of the shell from wich come the auger electron , given the shell
|
||||
// from wich the transition electron comes from and the index number.
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4BremsstrahlungParameters.hh,v 1.9 2003/06/16 16:59:39 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4FluoTransition.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
//
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
const G4DataVector& TransitionProbabilities() const;
|
||||
|
||||
// Return the identity if the vacancy
|
||||
const G4int FinalShellId() const;
|
||||
G4int FinalShellId() const;
|
||||
|
||||
// Given the index of the originating shells returns its identity
|
||||
G4int OriginatingShellId(G4int index) const;
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
//
|
||||
// Modifications:
|
||||
// 02 Jun 2003 First implementation acording with new design
|
||||
// 07 Nov 2003 Lockup tables for fast initialization
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
@@ -89,11 +90,11 @@ private:
|
||||
|
||||
G4double b;
|
||||
G4int index_min, index_max;
|
||||
G4double* Atab;
|
||||
G4double* ctab;
|
||||
G4double kmin, Ekmin;
|
||||
G4double dtheta;
|
||||
G4double kcut;
|
||||
static G4double Atab[320];
|
||||
static G4double ctab[320];
|
||||
|
||||
// hide assignment operator
|
||||
G4Generator2BN & operator=(const G4Generator2BN &right);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LinInterpolation.hh,v 1.2 2002/05/28 09:15:26 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4LowEnergyBremsstrahlung.hh,v 1.35 2003/11/06 12:25:05 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4LowEnergyBremsstrahlung.hh,v 1.36 2003/11/10 17:50:46 trindade Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
//
|
||||
@@ -111,6 +111,8 @@ private:
|
||||
G4VEnergySpectrum* energySpectrum;
|
||||
G4DataVector energyBins;
|
||||
G4VBremAngularDistribution* angularDistribution;
|
||||
G4VBremAngularDistribution* TsaiAngularDistribution;
|
||||
G4String generatorName;
|
||||
|
||||
// Lower limit for generation of gamma in this model
|
||||
G4DataVector cutForSecondaryPhotons;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LowEnergyCompton.hh,v 1.20 2003/12/09 15:36:37 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4PenelopeBremsstrahlung.hh,v 1.7 2003/11/11 17:18:30 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4PenelopeBremsstrahlungAngular.hh,v 1.2 2003/11/07 12:26:08 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4PenelopeBremsstrahlungContinuous.hh,v 1.2 2003/03/19 10:28:28 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeCompton.hh,v 1.8 2003/12/09 15:36:38 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4PenelopeGammaConversion.hh,v 1.1 2002/12/06 16:25:00 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: L. Pandola
|
||||
//
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
// History:
|
||||
// -----------
|
||||
// 17 Feb 2003 LP Created
|
||||
// 17 Dec 2003 LP Bug fixed (removed memory leak)
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
@@ -46,7 +47,7 @@ public:
|
||||
|
||||
G4PenelopeInterpolator(G4double* pX, G4double* pY, G4int nbOfData, G4double S1=0, G4double SN=0);
|
||||
|
||||
~G4PenelopeInterpolator(){;}
|
||||
~G4PenelopeInterpolator();
|
||||
|
||||
G4double CubicSplineInterpolation(G4double xx);
|
||||
G4double FirstDerivative(G4double xx);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// $Id: G4PenelopeIonisation.hh,v 1.4 2003/07/09 12:36:46 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// Author: L. Pandola
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4PenelopePhotoElectric.hh,v 1.2 2003/02/23 23:42:52 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: L.Pandola
|
||||
//
|
||||
|
||||
@@ -21,15 +21,16 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4PenelopeRayleigh.hh,v 1.3 2003/03/13 16:53:50 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4PenelopeRayleigh.hh,v 1.4 2004/03/18 13:40:13 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 01 Dec 2002 L.Pandola 1st implementation
|
||||
// 14 Feb 2003 MG Pia Removed data member material
|
||||
// 01 Dec 2002 L.Pandola 1st implementation
|
||||
// 14 Feb 2003 MG Pia Removed data member material
|
||||
// 18 Mar 2004 M.Mendenhall Introduced SamplingTable
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// Class description:
|
||||
@@ -54,7 +55,10 @@ class G4DataVector;
|
||||
class G4PenelopeRayleigh : public G4VDiscreteProcess {
|
||||
|
||||
public:
|
||||
|
||||
|
||||
typedef std::map<const G4Material *,std::pair<G4DataVector *, G4DataVector *> >
|
||||
SamplingTablePair;
|
||||
|
||||
G4PenelopeRayleigh(const G4String& processName ="PenRayleigh");
|
||||
|
||||
~G4PenelopeRayleigh();
|
||||
@@ -97,6 +101,8 @@ private:
|
||||
G4DataVector* samplingFunction_x;
|
||||
G4DataVector* samplingFunction_y;
|
||||
|
||||
SamplingTablePair SamplingTables;
|
||||
|
||||
G4double samplingConstant;
|
||||
G4double facte; //cross section factor
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4RangeNoTest.hh,v 1.3 2003/05/20 20:03:34 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4VCrossSectionHandler.hh,v 1.13 2003/06/16 16:59:51 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// 3.4.2000 Veronique Lefebure:
|
||||
// Move utils/include/G4VEnergyLoss.hh to
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eBremsstrahlungSpectrum.hh,v 1.7 2003/12/09 15:36:39 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eIonisationCrossSectionHandler.hh,v 1.5 2003/06/16 16:59:53 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4eIonisationParameters.hh,v 1.7 2003/06/16 16:59:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// V. Ivanchenko
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eIonisationSpectrum.hh,v 1.6 2003/12/09 15:36:40 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4eLowEnergyLoss.hh,v 1.12 2003/06/16 16:59:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4eLowEnergyLoss.icc,v 1.7 2003/06/16 16:59:56 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// ---------------------------------------------------------------
|
||||
// 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-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// $Id:
|
||||
// ------------------------------------------------------------
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4hLowEnergyLoss.icc,v 1.2 2001/07/11 10:02:40 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// $Id:
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicDeexcitation.cc,v 1.11
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
@@ -110,7 +110,7 @@ do
|
||||
return vectorOfParticles;
|
||||
}
|
||||
|
||||
const G4int G4AtomicDeexcitation::SelectTypeOfTransition(G4int Z, G4int shellId)
|
||||
G4int G4AtomicDeexcitation::SelectTypeOfTransition(G4int Z, G4int shellId)
|
||||
{
|
||||
if (shellId <=0 )
|
||||
{G4Exception("G4AtomicDeexcitation: zero or negative shellId");}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicShell.cc,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.cc,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
// Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
|
||||
@@ -109,7 +109,7 @@ const G4DataVector* G4AugerTransition::AugerTransitionProbabilities(G4int startS
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
const G4int G4AugerTransition::FinalShellId() const
|
||||
G4int G4AugerTransition::FinalShellId() const
|
||||
{
|
||||
return finalShellId;
|
||||
}
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BremsstrahlungCrossSectionHandler.cc,v 1.8 2003/06/16 17:00:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4BremsstrahlungParameters.cc,v 1.17 2003/06/16 17:00:04 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
// V.Ivanchenko (Vladimir.Ivantchenko@cern.ch)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4CompositeEMDataSet.cc,v 1.7 2003/06/16 17:00:05 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4CrossSectionHandler.cc,v 1.16 2003/06/16 17:00:06 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4EMDataSet.cc,v 1.9 2003/06/16 17:00:07 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4FluoTransition.cc,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
|
||||
//
|
||||
@@ -63,7 +63,7 @@ const G4DataVector& G4FluoTransition::TransitionProbabilities() const
|
||||
return transitionProbabilities;
|
||||
}
|
||||
|
||||
const G4int G4FluoTransition::FinalShellId() const
|
||||
G4int G4FluoTransition::FinalShellId() const
|
||||
{
|
||||
return finalShellId;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
// Modifications:
|
||||
// 21 Jun 2003 First implementation acording with new design
|
||||
// 05 Nov 2003 MGP Fixed compilation warning
|
||||
// 14 Mar 2004 Code optimization
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
@@ -52,6 +53,99 @@
|
||||
#include "Randomize.hh"
|
||||
//
|
||||
|
||||
G4double G4Generator2BN::Atab[320] =
|
||||
{ 0.0264767, 0.0260006, 0.0257112, 0.0252475, 0.024792, 0.0243443, 0.0240726, 0.0236367,
|
||||
0.023209, 0.0227892, 0.0225362, 0.0221284, 0.0217282,0.0214894, 0.0211005, 0.0207189,
|
||||
0.0204935, 0.0201227, 0.0197588, 0.019546, 0.0191923,0.0188454, 0.0186445, 0.0183072,
|
||||
0.0179763, 0.0177866, 0.0174649, 0.0172828, 0.0169702,0.0166634, 0.0164915, 0.0161933,
|
||||
0.0160283, 0.0157384, 0.0155801, 0.0152981, 0.0151463,0.0148721, 0.0147263, 0.0144598,
|
||||
0.01432, 0.0140607, 0.0139267, 0.0136744, 0.0135459,0.0133005, 0.0131773, 0.0129385,
|
||||
0.0128205, 0.0125881, 0.012475, 0.0122488, 0.0121406,0.0119204, 0.0118167, 0.0117158,
|
||||
0.0115032, 0.0114067, 0.0111995, 0.0111072, 0.0110175,0.0108173, 0.0107316, 0.0105365,
|
||||
0.0104547, 0.0102646, 0.0101865, 0.010111, 0.00992684,0.0098548,0.00967532,0.00960671,
|
||||
0.00943171,0.00936643,0.00930328,0.0091337, 0.00907372,0.00890831,0.00885141,0.00869003,
|
||||
0.00863611,0.00858428,0.00842757,0.00837854,0.0082256,0.00817931,0.00803,0.00798639,
|
||||
0.00784058,0.00779958,0.00776046,0.00761866,0.00758201,0.00744346,0.00740928,0.00727384,
|
||||
0.00724201,0.00710969,0.00708004,0.00695074,0.00692333,0.00679688,0.00677166,0.00664801,
|
||||
0.00662484,0.00650396,0.00648286,0.00636458,0.00634545,0.00622977,0.00621258,0.00609936,
|
||||
0.00608412,0.00597331,0.00595991,0.00585143,0.00583988,0.0057337,0.0057239,0.00561991,
|
||||
0.0056119, 0.00551005,0.00550377,0.00540399,0.00539938,0.00530162,0.00529872,0.00520292,
|
||||
0.0051091, 0.00510777,0.00501582,0.00501608,0.00492594,0.00492781,0.00483942,0.0048429,
|
||||
0.00475622,0.00476127,0.00467625,0.00468287,0.00459947,0.00451785,0.00452581,0.00444573,
|
||||
0.00445522,0.00437664,0.00438768,0.00431057,0.00432316,0.00424745,0.0042616,0.00418726,
|
||||
0.004203, 0.00413, 0.00405869,0.00407563,0.00400561,0.00402414,0.00395536,0.00397553,
|
||||
0.00390795,0.00392975,0.00386339,0.00379862,0.00382167,0.00375805,0.00378276,0.00372031,
|
||||
0.00374678,0.00368538,0.00371363,0.00365335,0.00359463,0.0036242, 0.00356653,0.003598,
|
||||
0.00354139,0.00357481,0.00351921,0.00355464,0.00350005,0.0034471,0.00348403,0.00343208,
|
||||
0.0034712, 0.00342026,0.00346165,0.00341172,0.00345548,0.00340657,0.00335944,0.00340491,
|
||||
0.00335885,0.00340692,0.00336191,0.00341273,0.00336879,0.00342249,0.00337962,0.00333889,
|
||||
0.00339463,0.00335506,0.00341401,0.00337558,0.00343797,0.00340067,0.00336584,0.00343059,
|
||||
0.0033969, 0.00346557,0.00343302,0.00350594,0.00347448,0.00344563,0.00352163,0.00349383,
|
||||
0.00357485,0.00354807,0.00352395,0.00360885,0.00358571,0.00367661,0.00365446,0.00375194,
|
||||
0.00373078,0.00371234,0.00381532,0.00379787,0.00390882,0.00389241,0.00387881,0.00399675,
|
||||
0.00398425,0.00411183,0.00410042,0.00409197,0.00422843,0.00422123,0.00436974,0.0043637,
|
||||
0.00436082,0.00452075,0.00451934,0.00452125,0.00469406,0.00469756,0.00488741,0.00489221,
|
||||
0.00490102,0.00510782,0.00511801,0.00513271,0.0053589, 0.00537524,0.00562643,0.00564452,
|
||||
0.0056677, 0.00594482,0.00596999,0.0059999, 0.00630758,0.00634014,0.00637849,0.00672136,
|
||||
0.00676236,0.00680914,0.00719407,0.0072439, 0.00730063,0.0077349, 0.00779494,0.00786293,
|
||||
0.00835577,0.0084276, 0.00850759,0.00907162,0.00915592,0.00924925,0.00935226,0.00999779,
|
||||
0.0101059, 0.0102249, 0.0109763, 0.0111003, 0.0112367, 0.0113862, 0.0122637, 0.0124196,
|
||||
0.0125898, 0.0136311, 0.0138081, 0.0140011, 0.0142112, 0.0154536, 0.0156723, 0.0159099,
|
||||
0.016168, 0.0176664, 0.0179339, 0.0182246, 0.0185396, 0.020381, 0.0207026, 0.0210558,
|
||||
0.0214374, 0.0237377, 0.0241275, 0.0245528, 0.0250106, 0.0255038, 0.0284158, 0.0289213,
|
||||
0.0294621, 0.0300526, 0.0338619, 0.0344537, 0.0351108, 0.0358099, 0.036554, 0.0416399
|
||||
};
|
||||
|
||||
G4double G4Generator2BN::ctab[320] =
|
||||
{ 0.482253, 0.482253, 0.489021, 0.489021, 0.489021, 0.489021, 0.495933,
|
||||
0.495933, 0.495933, 0.495933, 0.502993, 0.502993, 0.502993, 0.510204,
|
||||
0.510204, 0.510204, 0.517572, 0.517572, 0.517572, 0.5251, 0.5251,
|
||||
0.5251, 0.532793, 0.532793, 0.532793, 0.540657, 0.540657, 0.548697,
|
||||
0.548697, 0.548697, 0.556917, 0.556917, 0.565323, 0.565323, 0.573921,
|
||||
0.573921, 0.582717, 0.582717, 0.591716, 0.591716, 0.600925, 0.600925,
|
||||
0.610352, 0.610352, 0.620001, 0.620001, 0.629882, 0.629882, 0.64,
|
||||
0.64, 0.650364, 0.650364, 0.660982, 0.660982, 0.671862, 0.683013,
|
||||
0.683013, 0.694444, 0.694444, 0.706165, 0.718184, 0.718184, 0.730514,
|
||||
0.730514, 0.743163, 0.743163, 0.756144, 0.769468, 0.769468, 0.783147,
|
||||
0.783147, 0.797194, 0.797194, 0.811622, 0.826446, 0.826446, 0.84168,
|
||||
0.84168, 0.857339, 0.857339, 0.873439, 0.889996, 0.889996, 0.907029,
|
||||
0.907029, 0.924556, 0.924556, 0.942596, 0.942596, 0.961169, 0.980296,
|
||||
0.980296, 1, 1, 1.0203, 1.0203, 1.04123, 1.04123,
|
||||
1.06281, 1.06281, 1.08507, 1.08507, 1.10803, 1.10803, 1.13173,
|
||||
1.13173, 1.1562, 1.1562, 1.18147, 1.18147, 1.20758, 1.20758,
|
||||
1.23457, 1.23457, 1.26247, 1.26247, 1.29132, 1.29132, 1.32118,
|
||||
1.32118, 1.35208, 1.35208, 1.38408, 1.38408, 1.41723, 1.41723,
|
||||
1.45159, 1.45159, 1.45159, 1.48721, 1.48721, 1.52416, 1.52416,
|
||||
1.5625, 1.5625, 1.60231, 1.60231, 1.64366, 1.64366, 1.68663,
|
||||
1.68663, 1.68663, 1.7313, 1.7313, 1.77778, 1.77778, 1.82615,
|
||||
1.82615, 1.87652, 1.87652, 1.92901, 1.92901, 1.98373, 1.98373,
|
||||
1.98373, 2.04082, 2.04082, 2.1004, 2.1004, 2.16263, 2.16263,
|
||||
2.22767, 2.22767, 2.22767, 2.29568, 2.29568, 2.36686, 2.36686,
|
||||
2.44141, 2.44141, 2.51953, 2.51953, 2.51953, 2.60146, 2.60146,
|
||||
2.68745, 2.68745, 2.77778, 2.77778, 2.87274, 2.87274, 2.87274,
|
||||
2.97265, 2.97265, 3.07787, 3.07787, 3.18878, 3.18878, 3.30579,
|
||||
3.30579, 3.30579, 3.42936, 3.42936, 3.55999, 3.55999, 3.69822,
|
||||
3.69822, 3.84468, 3.84468, 3.84468, 4, 4, 4.16493,
|
||||
4.16493, 4.34028, 4.34028, 4.34028, 4.52694, 4.52694, 4.7259,
|
||||
4.7259, 4.93827, 4.93827, 4.93827, 5.16529, 5.16529, 5.40833,
|
||||
5.40833, 5.40833, 5.66893, 5.66893, 5.94884, 5.94884, 6.25,
|
||||
6.25, 6.25, 6.57462, 6.57462, 6.92521, 6.92521, 6.92521,
|
||||
7.3046, 7.3046, 7.71605, 7.71605, 7.71605, 8.16327, 8.16327,
|
||||
8.65052, 8.65052, 8.65052, 9.18274, 9.18274, 9.18274, 9.76562,
|
||||
9.76562, 10.4058, 10.4058, 10.4058, 11.1111, 11.1111, 11.1111,
|
||||
11.8906, 11.8906, 12.7551, 12.7551, 12.7551, 13.7174, 13.7174,
|
||||
13.7174, 14.7929, 14.7929, 14.7929, 16, 16, 16,
|
||||
17.3611, 17.3611, 17.3611, 18.9036, 18.9036, 18.9036, 20.6612,
|
||||
20.6612, 20.6612, 22.6757, 22.6757, 22.6757, 22.6757, 25,
|
||||
25, 25, 27.7008, 27.7008, 27.7008, 27.7008, 30.8642,
|
||||
30.8642, 30.8642, 34.6021, 34.6021, 34.6021, 34.6021, 39.0625,
|
||||
39.0625, 39.0625, 39.0625, 44.4444, 44.4444, 44.4444, 44.4444,
|
||||
51.0204, 51.0204, 51.0204, 51.0204, 59.1716, 59.1716, 59.1716,
|
||||
59.1716, 59.1716, 69.4444, 69.4444, 69.4444, 69.4444, 82.6446,
|
||||
82.6446, 82.6446, 82.6446, 82.6446, 100
|
||||
};
|
||||
|
||||
|
||||
G4Generator2BN::G4Generator2BN(const G4String& name):G4VBremAngularDistribution(name)
|
||||
{
|
||||
b = 1.2;
|
||||
@@ -66,23 +160,15 @@ G4Generator2BN::G4Generator2BN(const G4String& name):G4VBremAngularDistribution(
|
||||
// Increment Theta value for surface interpolation
|
||||
dtheta = 0.1*rad;
|
||||
|
||||
// Majorant Surface Values
|
||||
Atab = new G4double[320];
|
||||
ctab = new G4double[320];
|
||||
|
||||
// Construct Majorant Surface to 2BN cross-section
|
||||
ConstructMajorantSurface();
|
||||
// (we dont need this. Pre-calculated values are used instead due to performance issues
|
||||
// ConstructMajorantSurface();
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
G4Generator2BN::~G4Generator2BN()
|
||||
{
|
||||
|
||||
delete[] Atab;
|
||||
delete[] ctab;
|
||||
|
||||
}
|
||||
{;}
|
||||
|
||||
//
|
||||
|
||||
@@ -116,7 +202,7 @@ G4double G4Generator2BN::Calculatedsdkdt(G4double kout, G4double theta, G4double
|
||||
// classic radius (in cm)
|
||||
G4double r0 = 2.82E-13;
|
||||
//squared classic radius (in barn)
|
||||
G4double r02 = pow(r0,2)*1.0E+24;
|
||||
G4double r02 = r0*r0*1.0E+24;
|
||||
|
||||
// Photon energy cannot be greater than electron kinetic energy
|
||||
if(kout > (Eel-electron_mass_c2)){
|
||||
@@ -133,29 +219,42 @@ G4double G4Generator2BN::Calculatedsdkdt(G4double kout, G4double theta, G4double
|
||||
return dsdkdt_value;
|
||||
}
|
||||
|
||||
|
||||
G4double p0 = sqrt(E0*E0-1);
|
||||
G4double p = sqrt(E*E-1);
|
||||
G4double L = log((E*E0-1+p*p0)/(E*E0-1-p*p0));
|
||||
G4double delta0 = E0 - p0*cos(theta);
|
||||
G4double epsilon = log((E+p)/(E-p));
|
||||
G4double Q = sqrt(pow(p0,2)+pow(k,2)-2*k*p0*cos(theta));
|
||||
G4double Z2 = Z*Z;
|
||||
G4double sintheta2 = sin(theta)*sin(theta);
|
||||
G4double E02 = E0*E0;
|
||||
G4double E2 = E*E;
|
||||
G4double p02 = E0*E0-1;
|
||||
G4double k2 = k*k;
|
||||
G4double delta02 = delta0*delta0;
|
||||
G4double delta04 = delta02* delta02;
|
||||
G4double Q = sqrt(p02+k2-2*k*p0*cos(theta));
|
||||
G4double Q2 = Q*Q;
|
||||
G4double epsilonQ = log((Q+p)/(Q-p));
|
||||
|
||||
dsdkdt_value = pow(Z,2) * (r02/(8*M_PI*137)) * (1/k) * (p/p0) *
|
||||
( (8 * (pow(sin (theta),2)*(2*pow(E0,2)+1))/(pow(p0,2)*pow(delta0,4))) -
|
||||
((2*(5*pow(E0,2)+2*E*E0+3))/(pow(p0,2) * pow(delta0,2))) -
|
||||
((2*(pow(p0,2)-pow(k,2)))/((pow(Q,2)*pow(delta0,2)))) +
|
||||
((4*E)/(pow(p0,2)*delta0)) +
|
||||
(L/(p*p0))*(
|
||||
((4*E0*pow(sin(theta),2)*(3*k-pow(p0,2)*E))/(pow(p0,2)*pow(delta0,4))) +
|
||||
((4*pow(E0,2)*(pow(E0,2)+pow(E,2)))/(pow(p0,2)*pow(delta0,2))) +
|
||||
((2-2*(7*pow(E0,2)-3*E*E0+pow(E,2)))/(pow(p0,2)*pow(delta0,2))) +
|
||||
(2*k*(pow(E0,2)+E*E0-1))/((pow(p0,2)*delta0))
|
||||
) -
|
||||
|
||||
dsdkdt_value = Z2 * (r02/(8*M_PI*137)) * (1/k) * (p/p0) *
|
||||
( (8 * (sintheta2*(2*E02+1))/(p02*delta04)) -
|
||||
((2*(5*E02+2*E*E0+3))/(p02 * delta02)) -
|
||||
((2*(p02-k2))/((Q2*delta02))) +
|
||||
((4*E)/(p02*delta0)) +
|
||||
(L/(p*p0))*(
|
||||
((4*E0*sintheta2*(3*k-p02*E))/(p02*delta04)) +
|
||||
((4*E02*(E02+E2))/(p02*delta02)) +
|
||||
((2-2*(7*E02-3*E*E0+E2))/(p02*delta02)) +
|
||||
(2*k*(E02+E*E0-1))/((p02*delta0))
|
||||
) -
|
||||
((4*epsilon)/(p*delta0)) +
|
||||
((epsilonQ)/(p*Q))*
|
||||
(4/pow(delta0,2)-(6*k/delta0)-(2*k*(pow(p0,2)-pow(k,2)))/(pow(Q,2)*delta0))
|
||||
);
|
||||
(4/delta02-(6*k/delta0)-(2*k*(p02-k2))/(Q2*delta0))
|
||||
);
|
||||
|
||||
|
||||
|
||||
dsdkdt_value = dsdkdt_value*sin(theta);
|
||||
return dsdkdt_value;
|
||||
@@ -205,7 +304,7 @@ void G4Generator2BN::ConstructMajorantSurface()
|
||||
c = 0;
|
||||
A = 0;
|
||||
}else{
|
||||
c = 1/pow(thetamax,2);
|
||||
c = 1/(thetamax*thetamax);
|
||||
A = 2*sqrt(c)*dsmax/(pow(kmin,-b));
|
||||
}
|
||||
|
||||
@@ -266,7 +365,8 @@ G4double G4Generator2BN::Generate2BN(G4double Ek, G4double k) const
|
||||
G4double A2;
|
||||
G4double A, c;
|
||||
|
||||
G4int trials, index;
|
||||
G4int trials = 0;
|
||||
G4int index;
|
||||
|
||||
// find table index
|
||||
index = G4int(log10(Ek)*100) - index_min;
|
||||
@@ -293,7 +393,7 @@ G4double G4Generator2BN::Generate2BN(G4double Ek, G4double k) const
|
||||
|
||||
// generate theta accordimg to theta/(1+c*pow(theta,2)
|
||||
// Normalization constant
|
||||
cte2 = 2*c/log(1+c*pow(M_PI,2));
|
||||
cte2 = 2*c/log(1+c*M_PI*M_PI);
|
||||
|
||||
y = G4UniformRand();
|
||||
t = sqrt((exp(2*c*y/cte2)-1)/c);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LinInterpolation.cc,v 1.2 2002/05/28 09:20:19 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LogLogInterpolation.cc,v 1.5 2003/06/25 14:24:12 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LowEnergyBremsstrahlung.cc,v 1.66 2003/11/06 12:53:04 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4LowEnergyBremsstrahlung.cc,v 1.68 2004/01/08 17:04:52 silvarod Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
//
|
||||
@@ -85,8 +85,10 @@ G4LowEnergyBremsstrahlung::G4LowEnergyBremsstrahlung(const G4String& nam)
|
||||
{
|
||||
cutForPhotons = 0.;
|
||||
verboseLevel = 0;
|
||||
generatorName = "tsai";
|
||||
angularDistribution = new G4ModifiedTsai("TsaiGenerator"); // default generator
|
||||
angularDistribution->PrintGeneratorInformation();
|
||||
// angularDistribution->PrintGeneratorInformation();
|
||||
TsaiAngularDistribution = new G4ModifiedTsai("TsaiGenerator");
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -101,6 +103,8 @@ G4LowEnergyBremsstrahlung::G4LowEnergyBremsstrahlung(const G4String& nam, G4VBre
|
||||
verboseLevel = 0;
|
||||
|
||||
angularDistribution->PrintGeneratorInformation();
|
||||
|
||||
TsaiAngularDistribution = new G4ModifiedTsai("TsaiGenerator");
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -110,6 +114,7 @@ G4LowEnergyBremsstrahlung::~G4LowEnergyBremsstrahlung()
|
||||
if(energySpectrum) delete energySpectrum;
|
||||
if(theMeanFreePath) delete theMeanFreePath;
|
||||
delete angularDistribution;
|
||||
delete TsaiAngularDistribution;
|
||||
energyBins.clear();
|
||||
}
|
||||
|
||||
@@ -308,7 +313,13 @@ G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& track,
|
||||
G4double tGamma = energySpectrum->SampleEnergy(Z, tCut, kineticEnergy, kineticEnergy);
|
||||
G4double totalEnergy = kineticEnergy + electron_mass_c2;
|
||||
G4double finalEnergy = kineticEnergy - tGamma; // electron/positron final energy
|
||||
G4double theta = angularDistribution->PolarAngle(kineticEnergy,finalEnergy,Z);
|
||||
G4double theta = 0;
|
||||
|
||||
if((kineticEnergy < 1*MeV && kineticEnergy > 1*keV && generatorName == "2bn")){
|
||||
theta = angularDistribution->PolarAngle(kineticEnergy,finalEnergy,Z);
|
||||
}else{
|
||||
theta = TsaiAngularDistribution->PolarAngle(kineticEnergy,finalEnergy,Z);
|
||||
}
|
||||
|
||||
G4double phi = twopi * G4UniformRand();
|
||||
G4double dirZ = cos(theta);
|
||||
@@ -396,16 +407,19 @@ void G4LowEnergyBremsstrahlung::SetAngularGenerator(const G4String& name)
|
||||
{
|
||||
delete angularDistribution;
|
||||
angularDistribution = new G4ModifiedTsai("TsaiGenerator");
|
||||
generatorName = name;
|
||||
}
|
||||
else if (name == "2bn")
|
||||
{
|
||||
delete angularDistribution;
|
||||
angularDistribution = new G4Generator2BN("2BNGenerator");
|
||||
generatorName = name;
|
||||
}
|
||||
else if (name == "2bs")
|
||||
{
|
||||
delete angularDistribution;
|
||||
angularDistribution = new G4Generator2BS("2BSGenerator");
|
||||
generatorName = name;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LowEnergyCompton.cc,v 1.37 2003/05/20 20:16:13 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// --------------------------------------------------------------------
|
||||
///
|
||||
// $Id: G4LowEnergyGammaConversion.cc,v 1.32 2003/06/16 17:00:11 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LowEnergyIonisation.cc,v 1.95 2003/06/16 17:00:12 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LowEnergyPhotoElectric.cc,v 1.51 2003/06/16 17:00:15 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4LowEnergyPolarizedCompton.cc,v 1.17 2003/11/18 16:39:21 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class implementation file
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// --------------------------------------------------------------------
|
||||
//
|
||||
// $Id: G4LowEnergyRayleigh.cc,v 1.33 2003/05/20 20:16:13 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: A. Forti
|
||||
// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
// History:
|
||||
// --------
|
||||
// 02 Jul 2003 L.Pandola First implementation
|
||||
// 16 Mar 2004 L.Pandola Removed unnecessary calls to pow(a,b)
|
||||
|
||||
#include "G4PenelopeAnnihilation.hh"
|
||||
#include "Randomize.hh"
|
||||
@@ -126,10 +127,10 @@ G4double G4PenelopeAnnihilation::calculateCrossSectionPerElectron
|
||||
//Heitler dcs formula for annihilation with free electrons at rest
|
||||
G4double crossSection=0.0;
|
||||
G4double gamma = 1.0+std::max(ene,1.0*eV)/electron_mass_c2;
|
||||
G4double gamma2 = pow(gamma,2);
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double f2 = gamma2-1.0;
|
||||
G4double f1 = sqrt(f2);
|
||||
G4double pielr2 = pi*pow(classic_electr_radius,2);
|
||||
G4double pielr2 = pi*classic_electr_radius*classic_electr_radius;
|
||||
crossSection = pielr2*((gamma2+4.0*gamma+1.0)*log(gamma+f1)/f2
|
||||
- (gamma+3.0)/f1)/(gamma+1.0);
|
||||
return crossSection;
|
||||
@@ -157,7 +158,7 @@ G4VParticleChange* G4PenelopeAnnihilation::PostStepDoIt(const G4Track& aTrack,
|
||||
G4double ani = 1.0+gamma;
|
||||
G4double chimin = 1.0/(ani+gamma21);
|
||||
G4double rchi = (1.0-chimin)/chimin;
|
||||
G4double gt0 = pow(ani,2)-2.0;
|
||||
G4double gt0 = ani*ani-2.0;
|
||||
G4double epsilon=0.0, reject=0.0, test=0.0;
|
||||
do{
|
||||
epsilon = chimin*pow(rchi,G4UniformRand());
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeBremsstrahlung.cc,v 1.14 2003/11/18 17:29:43 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeBremsstrahlungAngular.cc,v 1.5 2003/11/07 12:25:35 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-06-00-patch-01 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
//
|
||||
|
||||
+7
-8
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeBremsstrahlungContinuous.cc,v 1.5 2003/06/16 17:00:18 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4PenelopeBremsstrahlungContinuous.cc,v 1.6 2004/03/17 08:57:26 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
//
|
||||
@@ -35,6 +35,7 @@
|
||||
// 20 Feb 2003 L. Pandola 1st implementation
|
||||
// 17 Mar 2003 L. Pandola Added the correction for positrons
|
||||
// 19 Mar 2003 L. Pandola Bugs fixed
|
||||
// 17 Mar 2004 L. Pandola Removed unnecessary calls to pow(a,b)
|
||||
//----------------------------------------------------------------
|
||||
|
||||
#include "G4PenelopeBremsstrahlungContinuous.hh"
|
||||
@@ -135,7 +136,7 @@ void G4PenelopeBremsstrahlungContinuous::PrepareInterpolationTable()
|
||||
|
||||
delete interpolator;
|
||||
G4double Fact = (millibarn/cm2)*(Energies[i]+electron_mass_c2)*(1.0/fine_structure_const)/
|
||||
(pow(classic_electr_radius,2)*(Energies[i]+2.0*electron_mass_c2));
|
||||
(classic_electr_radius*classic_electr_radius*(Energies[i]+2.0*electron_mass_c2));
|
||||
G4double Normalization = TotalCS[i]/(Rsum*Fact);
|
||||
G4double TST = abs(Normalization-100.0);
|
||||
if (TST > 1.0) {
|
||||
@@ -209,10 +210,8 @@ G4double G4PenelopeBremsstrahlungContinuous::CalculateStopping(G4double e1)
|
||||
G4double Xek = Xe-Ke;
|
||||
|
||||
//Global x-section factor
|
||||
G4double Fact=pow((G4double) Zmat,2)*(pow(e1+electron_mass_c2,2)/(e1*(e1+2.0*electron_mass_c2)))
|
||||
*(millibarn/cm2);
|
||||
//G4cout << "Particella: " << partName << ";Z: " << Zmat << ";Energia: " << e1 << "; fattore di correzione: "
|
||||
// << PositronCorrection(e1) << G4endl;
|
||||
G4double Fact=Zmat*Zmat*(e1+electron_mass_c2)*(e1+electron_mass_c2)/(e1*(e1+2.0*electron_mass_c2))
|
||||
*(millibarn/cm2);
|
||||
Fact=Fact*PositronCorrection(e1);
|
||||
|
||||
//Moments of the scaled bremss x-section
|
||||
@@ -263,7 +262,7 @@ G4double G4PenelopeBremsstrahlungContinuous::PositronCorrection(G4double en)
|
||||
return 1.0; //no correction for electrons
|
||||
}
|
||||
else if (partName == "e+"){
|
||||
T=log(1+((1e6*en)/(pow( (G4double) Zmat,2)*electron_mass_c2)));
|
||||
T=log(1+((1e6*en)/(Zmat*Zmat*electron_mass_c2)));
|
||||
for (G4int i=0;i<7;i++){
|
||||
correct += Coeff[i]*pow(T,i+1);
|
||||
}
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeCompton.cc,v 1.16 2003/06/16 17:00:19 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4PenelopeCompton.cc,v 1.19 2004/03/23 12:44:22 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -37,6 +37,9 @@
|
||||
// 20 Mar 2003 L.Pandola ReadData() changed (performance improved)
|
||||
// 26 Mar 2003 L.Pandola Added fluorescence
|
||||
// 24 May 2003 MGP Removed memory leak
|
||||
// 09 Mar 2004 L.Pandola Bug fixed in the generation of final state
|
||||
// (bug report # 585)
|
||||
// 17 Mar 2004 L.Pandola Removed unnecessary calls to pow(a,b)
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -108,11 +111,17 @@ G4PenelopeCompton::~G4PenelopeCompton()
|
||||
{
|
||||
delete meanFreePathTable;
|
||||
delete rangeTest;
|
||||
|
||||
for (size_t i1=0;i1<matCrossSections->size();i1++)
|
||||
{
|
||||
delete (*matCrossSections)[i1];
|
||||
}
|
||||
|
||||
delete matCrossSections;
|
||||
|
||||
for (size_t i=0; i<ionizationEnergy->size(); i++)
|
||||
for (size_t i2=0; i2<ionizationEnergy->size(); i2++)
|
||||
{
|
||||
delete (*ionizationEnergy)[i];
|
||||
delete (*ionizationEnergy)[i2];
|
||||
}
|
||||
delete ionizationEnergy;
|
||||
|
||||
@@ -186,6 +195,8 @@ void G4PenelopeCompton::BuildPhysicsTable(const G4ParticleDefinition& )
|
||||
matCrossSections->push_back(setForMat);
|
||||
}
|
||||
|
||||
|
||||
//Build the mean free path table!
|
||||
G4double matCS = 0.0;
|
||||
G4VEMDataSet* matCrossSet = new G4CompositeEMDataSet(algo,1.,1.);
|
||||
G4VEMDataSet* materialSet = new G4CompositeEMDataSet(algo,1.,1.);
|
||||
@@ -311,14 +322,14 @@ G4VParticleChange* G4PenelopeCompton::PostStepDoIt(const G4Track& aTrack,
|
||||
harFunc = (*((*hartreeFunction)[Z-1]))[i]/fine_structure_const;
|
||||
occupNb = (G4int) (*((*occupationNumber)[Z-1]))[i];
|
||||
pzomc = harFunc*(aux-electron_mass_c2*ionEnergy)/
|
||||
(electron_mass_c2*sqrt(2.0*aux+pow(ionEnergy,2)));
|
||||
(electron_mass_c2*sqrt(2.0*aux+ionEnergy*ionEnergy));
|
||||
if (pzomc > 0)
|
||||
{
|
||||
rni = 1.0-0.5*exp(0.5-pow(sqrt(0.5)+sqrt(2.0)*pzomc,2));
|
||||
rni = 1.0-0.5*exp(0.5-(sqrt(0.5)+sqrt(2.0)*pzomc)*(sqrt(0.5)+sqrt(2.0)*pzomc));
|
||||
}
|
||||
else
|
||||
{
|
||||
rni = 0.5*exp(0.5-pow(sqrt(0.5)-sqrt(2.0)*pzomc,2));
|
||||
rni = 0.5*exp(0.5-(sqrt(0.5)-sqrt(2.0)*pzomc)*(sqrt(0.5)-sqrt(2.0)*pzomc));
|
||||
}
|
||||
s0 = s0 + occupNb*rni;
|
||||
}
|
||||
@@ -347,14 +358,14 @@ G4VParticleChange* G4PenelopeCompton::PostStepDoIt(const G4Track& aTrack,
|
||||
harFunc = (*((*hartreeFunction)[Z-1]))[i]/fine_structure_const;
|
||||
occupNb = (G4int) (*((*occupationNumber)[Z-1]))[i];
|
||||
pzomc = harFunc*(aux-electron_mass_c2*ionEnergy)/
|
||||
(electron_mass_c2*sqrt(2.0*aux+pow(ionEnergy,2)));
|
||||
(electron_mass_c2*sqrt(2.0*aux+ionEnergy*ionEnergy));
|
||||
if (pzomc > 0)
|
||||
{
|
||||
rn[i] = 1.0-0.5*exp(0.5-pow(sqrt(0.5)+sqrt(2.0)*pzomc,2));
|
||||
rn[i] = 1.0-0.5*exp(0.5-(sqrt(0.5)+sqrt(2.0)*pzomc)*(sqrt(0.5)+sqrt(2.0)*pzomc));
|
||||
}
|
||||
else
|
||||
{
|
||||
rn[i] = 0.5*exp(0.5-pow(sqrt(0.5)-sqrt(2.0)*pzomc,2));
|
||||
rn[i] = 0.5*exp(0.5-(sqrt(0.5)-sqrt(2.0)*pzomc)*(sqrt(0.5)-sqrt(2.0)*pzomc));
|
||||
}
|
||||
S = S + occupNb*rn[i];
|
||||
pac[i] = S;
|
||||
@@ -409,7 +420,7 @@ G4VParticleChange* G4PenelopeCompton::PostStepDoIt(const G4Track& aTrack,
|
||||
}while ((fpzmax*G4UniformRand())>fpz);
|
||||
|
||||
//Energy of the scattered photon
|
||||
G4double T = pow(pzomc,2);
|
||||
G4double T = pzomc*pzomc;
|
||||
G4double b1 = 1.0-T*tau*tau;
|
||||
G4double b2 = 1.0-T*tau*cosTheta;
|
||||
if (pzomc > 0.0)
|
||||
@@ -423,7 +434,7 @@ G4VParticleChange* G4PenelopeCompton::PostStepDoIt(const G4Track& aTrack,
|
||||
}
|
||||
|
||||
|
||||
G4double sinTheta = sqrt(1-pow(cosTheta,2));
|
||||
G4double sinTheta = sqrt(1-cosTheta*cosTheta);
|
||||
G4double phi = twopi * G4UniformRand() ;
|
||||
G4double dirx = sinTheta * cos(phi);
|
||||
G4double diry = sinTheta * sin(phi);
|
||||
@@ -453,7 +464,7 @@ G4VParticleChange* G4PenelopeCompton::PostStepDoIt(const G4Track& aTrack,
|
||||
G4double diffEnergy = photonEnergy0*(1-epsilon);
|
||||
ionEnergy = (*((*ionizationEnergy)[Z-1]))[iosc];
|
||||
//G4double eKineticEnergy = diffEnergy - ionEnergy;
|
||||
G4double Q2 = pow(photonEnergy0,2)+photonEnergy1*(photonEnergy1-2.0*photonEnergy0*cosTheta);
|
||||
G4double Q2 = photonEnergy0*photonEnergy0+photonEnergy1*(photonEnergy1-2.0*photonEnergy0*cosTheta);
|
||||
G4double cosThetaE; //scattering angle for the electron
|
||||
if (Q2 > 1.0e-12)
|
||||
{
|
||||
@@ -463,7 +474,7 @@ G4VParticleChange* G4PenelopeCompton::PostStepDoIt(const G4Track& aTrack,
|
||||
{
|
||||
cosThetaE = 1.0;
|
||||
}
|
||||
G4double sinThetaE = sqrt(1-pow(cosThetaE,2));
|
||||
G4double sinThetaE = sqrt(1-cosThetaE*cosThetaE);
|
||||
|
||||
|
||||
|
||||
@@ -527,7 +538,7 @@ G4VParticleChange* G4PenelopeCompton::PostStepDoIt(const G4Track& aTrack,
|
||||
G4double yEl = sinThetaE * sin(phi+pi);
|
||||
G4double zEl = cosThetaE;
|
||||
G4ThreeVector eDirection(xEl,yEl,zEl); //electron direction
|
||||
|
||||
eDirection.rotateUz(photonDirection0);
|
||||
electron = new G4DynamicParticle (G4Electron::Electron(),
|
||||
eDirection,eKineticEnergy) ;
|
||||
nbOfSecondaries++;
|
||||
@@ -693,23 +704,23 @@ G4double G4PenelopeCompton::DifferentialCrossSection(G4double cosTheta)
|
||||
if (energy > ionEnergy)
|
||||
{
|
||||
G4double aux = energy * (energy-ionEnergy)*cdt1;
|
||||
Pzimax = (aux - electron_mass_c2*ionEnergy)/(electron_mass_c2*sqrt(2*aux+pow(ionEnergy,2)));
|
||||
Pzimax = (aux - electron_mass_c2*ionEnergy)/(electron_mass_c2*sqrt(2*aux+ionEnergy*ionEnergy));
|
||||
harFunc = (*((*hartreeFunction)[Z-1]))[i]/fine_structure_const;
|
||||
occupNb = (G4int) (*((*occupationNumber)[Z-1]))[i];
|
||||
x = harFunc*Pzimax;
|
||||
if (x > 0)
|
||||
{
|
||||
siap = 1.0-0.5*exp(k12-pow((k1+k2*x),2));
|
||||
siap = 1.0-0.5*exp(k12-(k1+k2*x)*(k1+k2*x));
|
||||
}
|
||||
else
|
||||
{
|
||||
siap = 0.5*exp(k12-pow((k1-k2*x),2));
|
||||
siap = 0.5*exp(k12-(k1-k2*x)*(k1-k2*x));
|
||||
}
|
||||
sia = sia + occupNb*siap; //sum of all contributions;
|
||||
}
|
||||
}
|
||||
XKN = EOEC+ECOE-1+cosTheta*cosTheta;
|
||||
diffCS = pi*pow(classic_electr_radius,2)*pow(ECOE,2)*XKN*sia;
|
||||
diffCS = pi*classic_electr_radius*classic_electr_radius*ECOE*ECOE*XKN*sia;
|
||||
return diffCS;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
// 13 Mar 2003 L.Pandola Code "cleaned"
|
||||
// 25 Mar 2003 L.Pandola Changed the name of the database file to read
|
||||
// 24 Apr 2003 V.Ivanchenko Cut per region mfpt
|
||||
// 17 Mar 2004 L.Pandola Removed unnecessary calls to pow(a,b)
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#include "G4PenelopeGammaConversion.hh"
|
||||
@@ -326,8 +327,13 @@ G4double G4PenelopeGammaConversion::CoulombCorrection(G4double a)
|
||||
{
|
||||
G4double fc=0;
|
||||
G4double b[7] = {0.202059,-0.03693,0.00835,-0.00201,0.00049,-0.00012,0.00003};
|
||||
fc = ((1.0/(1.0+a*a))+b[0]+b[1]*pow(a,2)+b[2]*pow(a,4)+b[3]*pow(a,6)+b[4]*pow(a,8)+b[5]*pow(a,10)+b[6]*pow(a,12));
|
||||
fc=pow(a,2)*fc;
|
||||
G4double aSquared = a*a;
|
||||
G4double aFourth = aSquared*aSquared;
|
||||
G4double aEighth = aFourth*aFourth;
|
||||
|
||||
fc = ((1.0/(1.0+a*a))+b[0]+b[1]*aSquared+b[2]*aFourth+b[3]*(aSquared*aFourth)+
|
||||
b[4]*aEighth+b[5]*(aEighth*aSquared)+b[6]*(aEighth*aFourth));
|
||||
fc=aSquared*fc;
|
||||
return fc;
|
||||
}
|
||||
|
||||
@@ -336,8 +342,9 @@ G4double G4PenelopeGammaConversion::LowEnergyCorrection(G4double a,G4double eki)
|
||||
G4double f0=0,t=0;
|
||||
G4double b[12] = {-1.744,-12.10,11.18,8.523,73.26,-41.41,-13.52,-121.1,94.41,8.946,62.05,-63.41};
|
||||
t=sqrt(2.0*eki);
|
||||
f0=(b[0]+b[1]*a+b[2]*a*a)*t+(b[3]+b[4]*a+b[5]*a*a)*pow(t,2)+(b[6]+b[7]*a+b[8]*a*a)*pow(t,3)+
|
||||
(b[9]+b[10]*a+b[11]*a*a)*pow(t,4);
|
||||
G4double tSq = t*t;
|
||||
f0=(b[0]+b[1]*a+b[2]*a*a)*t+(b[3]+b[4]*a+b[5]*a*a)*(tSq)+(b[6]+b[7]*a+b[8]*a*a)*(tSq*t)+
|
||||
(b[9]+b[10]*a+b[11]*a*a)*(tSq*tSq);
|
||||
return f0;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
// History:
|
||||
// -----------
|
||||
// 17 Feb 2003 LP Created
|
||||
// 17 Dec 2003 LP Removed memory leak
|
||||
// 17 Mar 2004 LP Removed unnecessary calls to pow(a,b)
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -97,15 +99,20 @@ G4PenelopeInterpolator::G4PenelopeInterpolator(G4double* pX,G4double* pY,G4int n
|
||||
G4double SI1=S1;
|
||||
G4double SI=0,H=0,HI=0;
|
||||
G4double store=0;
|
||||
G4double help1=0;
|
||||
G4double help2=0;
|
||||
|
||||
for (i=0;i<N1;i++){
|
||||
SI=SI1;
|
||||
SI1=D[i+1];
|
||||
H=A[i];
|
||||
HI=1.0/H;
|
||||
store=HI*(SI*pow(pX[i+1],3)-SI1*pow(pX[i],3))/6.0+HI*(pY[i]*pX[i+1]-pY[i+1]*pX[i])+
|
||||
help1 = pX[i+1]*pX[i+1]*pX[i+1];
|
||||
help2 = pX[i]*pX[i]*pX[i];
|
||||
store=HI*(SI*help1-SI1*help2)/6.0+HI*(pY[i]*pX[i+1]-pY[i+1]*pX[i])+
|
||||
H*(SI1*pX[i]-SI*pX[i+1])/6.0;
|
||||
a->push_back(store);
|
||||
store=(HI/2.0)*(SI1*pow(pX[i],2)-SI*pow(pX[i+1],2))+HI*(pY[i+1]-pY[i])+(H/6.0)*(SI-SI1);
|
||||
store=(HI/2.0)*(SI1*(pX[i]*pX[i])-SI*(pX[i+1]*pX[i+1]))+HI*(pY[i+1]-pY[i])+(H/6.0)*(SI-SI1);
|
||||
b->push_back(store);
|
||||
store=(HI/2.0)*(SI*pX[i+1]-SI1*pX[i]);
|
||||
c->push_back(store);
|
||||
@@ -130,6 +137,16 @@ G4PenelopeInterpolator::G4PenelopeInterpolator(G4double* pX,G4double* pY,G4int n
|
||||
return;
|
||||
}
|
||||
|
||||
G4PenelopeInterpolator::~G4PenelopeInterpolator()
|
||||
{
|
||||
delete a;
|
||||
delete b;
|
||||
delete c;
|
||||
delete d;
|
||||
delete x;
|
||||
delete y;
|
||||
}
|
||||
|
||||
G4double G4PenelopeInterpolator::CubicSplineInterpolation(G4double xx)
|
||||
{
|
||||
G4double interp=0;
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeIonisation.cc,v 1.8 2003/12/09 15:36:41 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4PenelopeIonisation.cc,v 1.12 2004/03/18 13:44:44 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
//
|
||||
@@ -33,11 +33,19 @@
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
// 25.03.03 L.Pandola First implementation
|
||||
// 03.06.03 L.Pandola Added continuous part
|
||||
// 30.06.03 L.Pandola Added positrons
|
||||
// 01.07.03 L.Pandola Changed cross section files for e- and e+
|
||||
// Interface with PenelopeCrossSectionHandler
|
||||
// 25.03.03 L.Pandola First implementation
|
||||
// 03.06.03 L.Pandola Added continuous part
|
||||
// 30.06.03 L.Pandola Added positrons
|
||||
// 01.07.03 L.Pandola Changed cross section files for e- and e+
|
||||
// Interface with PenelopeCrossSectionHandler
|
||||
// 18.01.04 M.Mendenhall (Vanderbilt University) [bug report 568]
|
||||
// Changed returns in CalculateDiscreteForElectrons()
|
||||
// to eliminate leaks
|
||||
// 20.01.04 L.Pandola Changed returns in CalculateDiscreteForPositrons()
|
||||
// to eliminate the same bug
|
||||
// 10.03.04 L.Pandola Bug fixed with reference system of delta rays
|
||||
// 17.03.04 L.Pandola Removed unnecessary calls to pow(a,b)
|
||||
// 18.03.04 L.Pandola Bug fixed in the destructor
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#include "G4PenelopeIonisation.hh"
|
||||
@@ -88,7 +96,7 @@ G4PenelopeIonisation::~G4PenelopeIonisation()
|
||||
{
|
||||
if (ionizationEnergy->count(Z)) delete (ionizationEnergy->find(Z)->second);
|
||||
if (resonanceEnergy->count(Z)) delete (resonanceEnergy->find(Z)->second);
|
||||
if (occupationNumber->count(Z)) delete (resonanceEnergy->find(Z)->second);
|
||||
if (occupationNumber->count(Z)) delete (occupationNumber->find(Z)->second);
|
||||
if (shellFlag->count(Z)) delete (shellFlag->find(Z)->second);
|
||||
}
|
||||
delete ionizationEnergy;
|
||||
@@ -357,8 +365,6 @@ G4VParticleChange* G4PenelopeIonisation::PostStepDoIt(const G4Track& track,
|
||||
|
||||
std::vector<G4DynamicParticle*>* photonVector=0;
|
||||
G4DynamicParticle* aPhoton;
|
||||
// G4AtomicDeexciation deexcitationManager;
|
||||
|
||||
if (Z>5 && (ionEnergy > cutg || ionEnergy > cute))
|
||||
{
|
||||
photonVector = deexcitationManager.GenerateParticles(Z,shellId);
|
||||
@@ -395,7 +401,7 @@ G4VParticleChange* G4PenelopeIonisation::PostStepDoIt(const G4Track& track,
|
||||
G4double yEl = sin2 * sin(phi2);
|
||||
G4double zEl = cosThetaSecondary;
|
||||
G4ThreeVector eDirection(xEl,yEl,zEl); //electron direction
|
||||
|
||||
eDirection.rotateUz(electronDirection0);
|
||||
electron = new G4DynamicParticle (G4Electron::Electron(),
|
||||
eDirection,eKineticEnergy) ;
|
||||
nbOfSecondaries++;
|
||||
@@ -480,7 +486,7 @@ void G4PenelopeIonisation::CalculateDiscreteForElectrons(G4double ene,G4double c
|
||||
G4double gamma = 1.0+ene/electron_mass_c2;
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double amol = pow((gamma-1.0)/gamma,2);
|
||||
G4double amol = (gamma-1.0)*(gamma-1.0)/gamma2;
|
||||
G4double cps = ene*rb;
|
||||
G4double cp = sqrt(cps);
|
||||
|
||||
@@ -488,13 +494,14 @@ void G4PenelopeIonisation::CalculateDiscreteForElectrons(G4double ene,G4double c
|
||||
G4double distantTransvCS0 = std::max(log(gamma2)-beta2-delta,0.0);
|
||||
|
||||
G4double rl,rl1;
|
||||
|
||||
if (cutoff > ene) return; //delta rays are not generated
|
||||
|
||||
G4DataVector* qm = new G4DataVector();
|
||||
G4DataVector* cumulHardCS = new G4DataVector();
|
||||
G4DataVector* typeOfInteraction = new G4DataVector();
|
||||
G4DataVector* nbOfLevel = new G4DataVector();
|
||||
|
||||
if (cutoff > ene) return; //delta rays are not generated
|
||||
|
||||
//Hard close collisions with outer shells
|
||||
G4double wmaxc = 0.5*ene;
|
||||
G4double closeCS0 = 0.0;
|
||||
@@ -541,11 +548,11 @@ void G4PenelopeIonisation::CalculateDiscreteForElectrons(G4double ene,G4double c
|
||||
{
|
||||
if (wi>(1e-6*ene)){
|
||||
G4double cpp=sqrt((ene-wi)*(ene-wi+2.0*electron_mass_c2));
|
||||
qm->push_back(sqrt(pow(cp-cpp,2)+electron_mass_c2*electron_mass_c2)-electron_mass_c2);
|
||||
qm->push_back(sqrt((cp-cpp)*(cp-cpp)+electron_mass_c2*electron_mass_c2)-electron_mass_c2);
|
||||
}
|
||||
else
|
||||
{
|
||||
qm->push_back(pow(wi,2)/(beta2*2.0*electron_mass_c2));
|
||||
qm->push_back((wi*wi)/(beta2*2.0*electron_mass_c2));
|
||||
}
|
||||
//verificare che quando arriva qui il vettore ha SEMPRE l'i-esimo elemento
|
||||
if ((*qm)[i] < wi)
|
||||
@@ -600,6 +607,10 @@ void G4PenelopeIonisation::CalculateDiscreteForElectrons(G4double ene,G4double c
|
||||
energySecondary=0.0;
|
||||
cosThetaSecondary=0.0;
|
||||
iOsc=-1;
|
||||
delete qm;
|
||||
delete cumulHardCS;
|
||||
delete typeOfInteraction;
|
||||
delete nbOfLevel;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -701,7 +712,7 @@ void G4PenelopeIonisation::CalculateDiscreteForElectrons(G4double ene,G4double c
|
||||
}
|
||||
rk2 = rk*rk;
|
||||
rkf = rk/(1.0-rk);
|
||||
phi = 1.0+pow(rkf,2)-rkf+amol*(rk2+rkf);
|
||||
phi = 1.0+(rkf*rkf)-rkf+amol*(rk2+rkf);
|
||||
}while ((G4UniformRand()*(1.0+A*rk2)) > phi);
|
||||
//Energy and scattering angle (primary electron);
|
||||
kineticEnergy1 = ene*(1.0-rk);
|
||||
@@ -796,6 +807,7 @@ G4double G4PenelopeIonisation::CalculateDeltaFermi(G4double ene,G4int Z,
|
||||
G4double wl2 = 0.0;
|
||||
G4double fdel=0.0;
|
||||
G4double wr=0;
|
||||
G4double help1=0.0;
|
||||
size_t nbOsc = resonanceEnergy->find(Z)->second->size();
|
||||
for(size_t i=0;i<nbOsc;i++)
|
||||
{
|
||||
@@ -804,7 +816,8 @@ G4double G4PenelopeIonisation::CalculateDeltaFermi(G4double ene,G4int Z,
|
||||
fdel += occupNb/(wr*wr+wl2);
|
||||
}
|
||||
if (fdel < TST) return delta;
|
||||
wl2 = pow((*(resonanceEnergy->find(Z)->second))[nbOsc-1],2);
|
||||
help1 = (*(resonanceEnergy->find(Z)->second))[nbOsc-1];
|
||||
wl2 = help1*help1;
|
||||
do{
|
||||
wl2=wl2*2.0;
|
||||
fdel = 0.0;
|
||||
@@ -854,7 +867,8 @@ G4double G4PenelopeIonisation::CalculateContinuous(G4double ene,G4double cutoff,
|
||||
G4double gamma = 1.0+ene/electron_mass_c2;
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double constant = pi*pow(classic_electr_radius,2)*2.0*electron_mass_c2/beta2;
|
||||
G4double constant = pi*classic_electr_radius*classic_electr_radius
|
||||
*2.0*electron_mass_c2/beta2;
|
||||
|
||||
|
||||
G4double delta = CalculateDeltaFermi(ene,Z,electronVolumeDensity);
|
||||
@@ -886,7 +900,7 @@ G4double G4PenelopeIonisation::CalculateStoppingPowerForElectrons(G4double ene,G
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double cps = ene*(ene+2.0*electron_mass_c2);
|
||||
G4double amol = pow((gamma-1.0)/gamma,2);
|
||||
G4double amol = (gamma-1.0)*(gamma-1.0)/gamma2;
|
||||
G4double sPower = 0.0;
|
||||
if (ene < resEne) return sPower;
|
||||
|
||||
@@ -901,7 +915,7 @@ G4double G4PenelopeIonisation::CalculateStoppingPowerForElectrons(G4double ene,G
|
||||
|
||||
if (resEne > ene*(1e-6))
|
||||
{
|
||||
qm = sqrt(pow(cp-cp1,2)+pow(electron_mass_c2,2))-electron_mass_c2;
|
||||
qm = sqrt((cp-cp1)*(cp-cp1)+(electron_mass_c2*electron_mass_c2))-electron_mass_c2;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -934,7 +948,7 @@ G4double G4PenelopeIonisation::CalculateStoppingPowerForElectrons(G4double ene,G
|
||||
if (wl > (wu-1*eV)) return sPower;
|
||||
sPower += log(wu/wl)+(ene/(ene-wu))-(ene/(ene-wl))
|
||||
+ (2.0 - amol)*log((ene-wu)/(ene-wl))
|
||||
+ amol*(pow(wu,2)-pow(wl,2))/(2.0*pow(ene,2));
|
||||
+ amol*((wu*wu)-(wl*wl))/(2.0*ene*ene);
|
||||
|
||||
return sPower;
|
||||
}
|
||||
@@ -947,11 +961,12 @@ G4double G4PenelopeIonisation::CalculateStoppingPowerForPositrons(G4double ene,G
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double cps = ene*(ene+2.0*electron_mass_c2);
|
||||
G4double amol = pow(ene/(ene+electron_mass_c2),2);
|
||||
G4double bha1 = amol*(2.0*pow(gamma+1.0,2)-1.0)/(gamma2-1.0);
|
||||
G4double bha2 = amol*(3.0+1.0/pow(gamma+1.0,2));
|
||||
G4double bha3 = amol*2.0*gamma*(gamma-1.0)/pow(gamma+1.0,2);
|
||||
G4double bha4 = amol*pow(gamma-1.0,2)/pow(gamma+1.0,2);
|
||||
G4double amol = (ene/(ene+electron_mass_c2)) * (ene/(ene+electron_mass_c2));
|
||||
G4double help = (gamma+1.0)*(gamma+1.0);
|
||||
G4double bha1 = amol*(2.0*help-1.0)/(gamma2-1.0);
|
||||
G4double bha2 = amol*(3.0+1.0/help);
|
||||
G4double bha3 = amol*2.0*gamma*(gamma-1.0)/help;
|
||||
G4double bha4 = amol*(gamma-1.0)*(gamma-1.0)/help;
|
||||
|
||||
G4double sPower = 0.0;
|
||||
if (ene < resEne) return sPower;
|
||||
@@ -967,7 +982,7 @@ G4double G4PenelopeIonisation::CalculateStoppingPowerForPositrons(G4double ene,G
|
||||
|
||||
if (resEne > ene*(1e-6))
|
||||
{
|
||||
qm = sqrt(pow(cp-cp1,2)+pow(electron_mass_c2,2))-electron_mass_c2;
|
||||
qm = sqrt((cp-cp1)*(cp-cp1)+(electron_mass_c2*electron_mass_c2))-electron_mass_c2;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -999,9 +1014,9 @@ G4double G4PenelopeIonisation::CalculateStoppingPowerForPositrons(G4double ene,G
|
||||
wl = resEne;
|
||||
if (wl > (wu-1*eV)) return sPower;
|
||||
sPower += log(wu/wl)-bha1*(wu-wl)/ene
|
||||
+ bha2*(pow(wu,2)-pow(wl,2))/(2.0*pow(ene,2))
|
||||
- bha3*(pow(wu,3)-pow(wl,3))/(3.0*pow(ene,3))
|
||||
+ bha4*(pow(wu,4)-pow(wl,4))/(4.0*pow(ene,4));
|
||||
+ bha2*((wu*wu)-(wl*wl))/(2.0*ene*ene)
|
||||
- bha3*((wu*wu*wu)-(wl*wl*wl))/(3.0*ene*ene*ene)
|
||||
+ bha4*((wu*wu*wu*wu)-(wl*wl*wl*wl))/(4.0*ene*ene*ene*ene);
|
||||
|
||||
return sPower;
|
||||
}
|
||||
@@ -1020,24 +1035,27 @@ void G4PenelopeIonisation::CalculateDiscreteForPositrons(G4double ene,G4double c
|
||||
G4double gamma = 1.0+ene/electron_mass_c2;
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double amol = pow((gamma-1.0)/gamma,2);
|
||||
G4double amol = (gamma-1.0)*(gamma-1.0)/gamma2;
|
||||
G4double cps = ene*rb;
|
||||
G4double cp = sqrt(cps);
|
||||
G4double bha1 = amol*(2.0*pow(gamma+1.0,2)-1.0)/(gamma2-1.0);
|
||||
G4double bha2 = amol*(3.0+1.0/pow(gamma+1.0,2));
|
||||
G4double bha3 = amol*2.0*gamma*(gamma-1.0)/pow(gamma+1.0,2);
|
||||
G4double bha4 = amol*pow(gamma-1.0,2)/pow(gamma+1.0,2);
|
||||
G4double help = (gamma+1.0)*(gamma+1.0);
|
||||
G4double bha1 = amol*(2.0*help-1.0)/(gamma2-1.0);
|
||||
G4double bha2 = amol*(3.0+1.0/help);
|
||||
G4double bha3 = amol*2.0*gamma*(gamma-1.0)/help;
|
||||
G4double bha4 = amol*(gamma-1.0)*(gamma-1.0)/help;
|
||||
|
||||
G4double delta = CalculateDeltaFermi(ene,Z,electronVolumeDensity);
|
||||
G4double distantTransvCS0 = std::max(log(gamma2)-beta2-delta,0.0);
|
||||
|
||||
G4double rl,rl1;
|
||||
|
||||
if (cutoff > ene) return; //delta rays are not generated
|
||||
|
||||
G4DataVector* qm = new G4DataVector();
|
||||
G4DataVector* cumulHardCS = new G4DataVector();
|
||||
G4DataVector* typeOfInteraction = new G4DataVector();
|
||||
G4DataVector* nbOfLevel = new G4DataVector();
|
||||
|
||||
if (cutoff > ene) return; //delta rays are not generated
|
||||
|
||||
//Hard close collisions with outer shells
|
||||
G4double wmaxc = ene;
|
||||
@@ -1049,8 +1067,8 @@ void G4PenelopeIonisation::CalculateDiscreteForPositrons(G4double ene,G4double c
|
||||
rl1=1.0-rl;
|
||||
if (rl < 1.0)
|
||||
closeCS0 = (((1.0/rl)-1.0) + bha1*log(rl) + bha2*rl1
|
||||
+ (bha3/2.0)*(pow(rl,2)-1.0)
|
||||
+ (bha4/3.0)*(1.0-pow(rl,3)))/ene;
|
||||
+ (bha3/2.0)*((rl*rl)-1.0)
|
||||
+ (bha4/3.0)*(1.0-(rl*rl*rl)))/ene;
|
||||
}
|
||||
|
||||
// Cross sections for the different oscillators
|
||||
@@ -1087,11 +1105,11 @@ void G4PenelopeIonisation::CalculateDiscreteForPositrons(G4double ene,G4double c
|
||||
{
|
||||
if (wi>(1e-6*ene)){
|
||||
G4double cpp=sqrt((ene-wi)*(ene-wi+2.0*electron_mass_c2));
|
||||
qm->push_back(sqrt(pow(cp-cpp,2)+electron_mass_c2*electron_mass_c2)-electron_mass_c2);
|
||||
qm->push_back(sqrt((cp-cpp)*(cp-cpp)+ electron_mass_c2 * electron_mass_c2)-electron_mass_c2);
|
||||
}
|
||||
else
|
||||
{
|
||||
qm->push_back(pow(wi,2)/(beta2+2.0*electron_mass_c2));
|
||||
qm->push_back(wi*wi/(beta2+2.0*electron_mass_c2));
|
||||
}
|
||||
//verificare che quando arriva qui il vettore ha SEMPRE l'i-esimo elemento
|
||||
if ((*qm)[i] < wi)
|
||||
@@ -1126,8 +1144,8 @@ void G4PenelopeIonisation::CalculateDiscreteForPositrons(G4double ene,G4double c
|
||||
rl=wi/ene;
|
||||
rl1=1.0-rl;
|
||||
closeCS = occupNb*(((1.0/rl)-1.0)+bha1*log(rl)+bha2*rl1
|
||||
+ (bha3/2.0)*(pow(rl,2)-1.0)
|
||||
+ (bha4/3.0)*(1.0-pow(rl,3)))/ene;
|
||||
+ (bha3/2.0)*((rl*rl)-1.0)
|
||||
+ (bha4/3.0)*(1.0-(rl*rl*rl)))/ene;
|
||||
cumulHardCS->push_back(totalHardCS);
|
||||
typeOfInteraction->push_back(3.0); //close
|
||||
nbOfLevel->push_back((G4double) i);
|
||||
@@ -1148,6 +1166,10 @@ void G4PenelopeIonisation::CalculateDiscreteForPositrons(G4double ene,G4double c
|
||||
energySecondary=0.0;
|
||||
cosThetaSecondary=0.0;
|
||||
iOsc=-1;
|
||||
delete qm;
|
||||
delete cumulHardCS;
|
||||
delete typeOfInteraction;
|
||||
delete nbOfLevel;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1271,7 +1293,7 @@ G4double G4PenelopeIonisation::CalculateCrossSectionsRatio(G4double ene,G4double
|
||||
G4double gamma = 1.0+ene/electron_mass_c2;
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double constant = pi*pow(classic_electr_radius,2)*2.0*electron_mass_c2/beta2;
|
||||
G4double constant = pi*classic_electr_radius*classic_electr_radius*2.0*electron_mass_c2/beta2;
|
||||
G4double delta = CalculateDeltaFermi(ene,Z,electronVolumeDensity);
|
||||
G4int nbOsc = (G4int) resonanceEnergy->find(Z)->second->size();
|
||||
G4double S0 = 0.0, H0=0.0;
|
||||
@@ -1308,7 +1330,7 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForElectrons(G4double ene,G4dou
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double cps = ene*(ene+2.0*electron_mass_c2);
|
||||
G4double amol = pow(ene/(ene+electron_mass_c2),2);
|
||||
G4double amol = (ene/(ene+electron_mass_c2)) * (ene/(ene+electron_mass_c2)) ;
|
||||
G4double hardCont = 0.0;
|
||||
G4double softCont = 0.0;
|
||||
if (ene < resEne) return 0.0;
|
||||
@@ -1324,7 +1346,7 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForElectrons(G4double ene,G4dou
|
||||
|
||||
if (resEne > ene*(1e-6))
|
||||
{
|
||||
qm = sqrt(pow(cp-cp1,2)+pow(electron_mass_c2,2))-electron_mass_c2;
|
||||
qm = sqrt((cp-cp1)*(cp-cp1)+(electron_mass_c2*electron_mass_c2))-electron_mass_c2;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1364,7 +1386,7 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForElectrons(G4double ene,G4dou
|
||||
hardCont += (1.0/(ene-wu))-(1.0/(ene-wl))
|
||||
- (1.0/wu)+(1.0/wl)
|
||||
+ (1.0-amol)*log(((ene-wu)*wl)/((ene-wl)*wu))/ene
|
||||
+ amol*(wu-wl)/pow(ene,2);
|
||||
+ amol*(wu-wl)/(ene*ene);
|
||||
wu=wl;
|
||||
}
|
||||
|
||||
@@ -1376,7 +1398,7 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForElectrons(G4double ene,G4dou
|
||||
softCont += (1.0/(ene-wu))-(1.0/(ene-wl))
|
||||
- (1.0/wu)+(1.0/wl)
|
||||
+ (1.0-amol)*log(((ene-wu)*wl)/((ene-wl)*wu))/ene
|
||||
+ amol*(wu-wl)/pow(ene,2);
|
||||
+ amol*(wu-wl)/(ene*ene);
|
||||
if (index == 1) return softCont;
|
||||
return hardCont;
|
||||
}
|
||||
@@ -1389,11 +1411,12 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForPositrons(G4double ene,G4dou
|
||||
G4double gamma2 = gamma*gamma;
|
||||
G4double beta2 = (gamma2-1.0)/gamma2;
|
||||
G4double cps = ene*(ene+2.0*electron_mass_c2);
|
||||
G4double amol = pow(ene/(ene+electron_mass_c2),2);
|
||||
G4double bha1 = amol*(2.0*pow(gamma+1.0,2)-1.0)/(gamma2-1.0);
|
||||
G4double bha2 = amol*(3.0+1.0/pow(gamma+1.0,2));
|
||||
G4double bha3 = amol*2.0*gamma*(gamma-1.0)/pow(gamma+1.0,2);
|
||||
G4double bha4 = amol*pow(gamma-1.0,2)/pow(gamma+1.0,2);
|
||||
G4double amol = (ene/(ene+electron_mass_c2)) * (ene/(ene+electron_mass_c2)) ;
|
||||
G4double help = (gamma+1.0)*(gamma+1.0);
|
||||
G4double bha1 = amol*(2.0*help-1.0)/(gamma2-1.0);
|
||||
G4double bha2 = amol*(3.0+1.0/help);
|
||||
G4double bha3 = amol*2.0*gamma*(gamma-1.0)/help;
|
||||
G4double bha4 = amol*(gamma-1.0)*(gamma-1.0)/help;
|
||||
G4double hardCont = 0.0;
|
||||
G4double softCont = 0.0;
|
||||
if (ene < resEne) return 0.0;
|
||||
@@ -1410,7 +1433,7 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForPositrons(G4double ene,G4dou
|
||||
|
||||
if (resEne > ene*(1e-6))
|
||||
{
|
||||
qm = sqrt(pow(cp-cp1,2)+pow(electron_mass_c2,2))-electron_mass_c2;
|
||||
qm = sqrt((cp-cp1)*(cp-cp1)+(electron_mass_c2*electron_mass_c2))-electron_mass_c2;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1447,8 +1470,8 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForPositrons(G4double ene,G4dou
|
||||
|
||||
if (wl < (wu-1*eV)) {
|
||||
hardCont += (1.0/wl)-(1.0/wu)-bha1*log(wu/wl)/ene
|
||||
+ bha2*(wu-wl)/pow(ene,2) -bha3*(pow(wu,2)-pow(wl,2))/(2.0*pow(ene,3))
|
||||
+ bha4*(pow(wu,3)-pow(wl,3))/(3.0*pow(ene,4));
|
||||
+ bha2*(wu-wl)/(ene*ene) -bha3*((wu*wu)-(wl*wl))/(2.0*ene*ene*ene)
|
||||
+ bha4*((wu*wu*wu)-(wl*wl*wl))/(3.0*ene*ene*ene*ene);
|
||||
wu=wl;
|
||||
}
|
||||
wl = resEne;
|
||||
@@ -1458,8 +1481,8 @@ G4double G4PenelopeIonisation::CrossSectionsRatioForPositrons(G4double ene,G4dou
|
||||
if (index == 2) return hardCont;
|
||||
}
|
||||
softCont += (1.0/wl)-(1.0/wu)-bha1*log(wu/wl)/ene
|
||||
+ bha2*(wu-wl)/pow(ene,2) -bha3*(pow(wu,2)-pow(wl,2))/(2.0*pow(ene,3))
|
||||
+ bha4*(pow(wu,3)-pow(wl,3))/(3.0*pow(ene,4));
|
||||
+ bha2*(wu-wl)/(ene*ene) -bha3*((wu*wu)-(wl*wl))/(2.0*ene*ene*ene)
|
||||
+ bha4*((wu*wu*wu)-(wl*wl*wl))/(3.0*ene*ene*ene*ene);
|
||||
|
||||
if (index == 1) return softCont;
|
||||
return hardCont;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4PenelopePhotoElectric.cc,v 1.7 2003/06/16 17:00:22 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: L. Pandola
|
||||
//
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
//
|
||||
// --------------------------------------------------------------------
|
||||
//
|
||||
// $Id: G4PenelopeRayleigh.cc,v 1.9 2003/06/16 17:00:23 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4PenelopeRayleigh.cc,v 1.11 2004/03/18 13:40:36 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Author: L. Pandola (luciano.pandola@cern.ch)
|
||||
//
|
||||
@@ -33,6 +33,8 @@
|
||||
// from SUN
|
||||
// 10 Mar 2003 V.Ivanchenko Remove CutPerMaterial warning
|
||||
// 12 Mar 2003 L.Pandola Code "cleaned" - Cuts per region
|
||||
// 17 Mar 2004 L.Pandola Removed unnecessary calls to pow(a,b)
|
||||
// 18 Mar 2004 M.Mendenhall Introduced SamplingTable (performance improvement)
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
#include "G4PenelopeRayleigh.hh"
|
||||
@@ -72,8 +74,8 @@ G4PenelopeRayleigh::G4PenelopeRayleigh(const G4String& processName)
|
||||
G4Exception("G4PenelopeRayleigh::G4PenelopeRayleigh - energy limit outside intrinsic process validity range");
|
||||
}
|
||||
|
||||
samplingFunction_x = new G4DataVector();
|
||||
samplingFunction_y = new G4DataVector();
|
||||
samplingFunction_x = 0;
|
||||
samplingFunction_y = 0;
|
||||
meanFreePathTable = 0;
|
||||
material = 0;
|
||||
|
||||
@@ -89,11 +91,16 @@ G4PenelopeRayleigh::G4PenelopeRayleigh(const G4String& processName)
|
||||
|
||||
G4PenelopeRayleigh::~G4PenelopeRayleigh()
|
||||
{
|
||||
delete meanFreePathTable;
|
||||
delete samplingFunction_x;
|
||||
delete samplingFunction_y;
|
||||
delete meanFreePathTable;
|
||||
|
||||
SamplingTablePair::iterator i;
|
||||
for(i=SamplingTables.begin(); i != SamplingTables.end(); i++) {
|
||||
delete (*i).second.first;
|
||||
delete (*i).second.second;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void G4PenelopeRayleigh::BuildPhysicsTable(const G4ParticleDefinition& )
|
||||
{
|
||||
|
||||
@@ -140,16 +147,17 @@ void G4PenelopeRayleigh::BuildPhysicsTable(const G4ParticleDefinition& )
|
||||
{
|
||||
energies->push_back(energyVector[bin]);
|
||||
G4double ec=std::min(energyVector[bin],0.5*IZZ);
|
||||
facte=k1*pow(ec/electron_mass_c2,2);
|
||||
G4double energyRatio = ec/electron_mass_c2;
|
||||
facte = k1*energyRatio*energyRatio;
|
||||
G4double cs=0;
|
||||
G4PenelopeIntegrator<G4PenelopeRayleigh,G4double(G4PenelopeRayleigh::*)(G4double)> theIntegrator;
|
||||
cs =
|
||||
theIntegrator.Calculate(this,&G4PenelopeRayleigh::DifferentialCrossSection,-1.0,0.90,1e-06);
|
||||
cs += theIntegrator.Calculate(this,&G4PenelopeRayleigh::DifferentialCrossSection,0.90,0.9999999,1e-06);
|
||||
cs = cs*pow((ec/energyVector[bin]),2)*pi*pow(classic_electr_radius,2);
|
||||
cs = cs*(ec/energyVector[bin])*(ec/energyVector[bin])*pi*classic_electr_radius*classic_electr_radius;
|
||||
const G4double* vector_of_atoms = material->GetVecNbOfAtomsPerVolume();
|
||||
const G4int* stechiometric = material->GetAtomsVector();
|
||||
G4double density;
|
||||
G4double density=0.;
|
||||
if (stechiometric)
|
||||
{
|
||||
density = vector_of_atoms[iright]/stechiometric[iright]; //number of molecules per volume
|
||||
@@ -317,33 +325,42 @@ G4double G4PenelopeRayleigh::GetMeanFreePath(const G4Track& track,
|
||||
|
||||
void G4PenelopeRayleigh::InizialiseSampling()
|
||||
{
|
||||
SamplingTablePair::iterator theTable=SamplingTables.find(material);
|
||||
const G4int points=241;
|
||||
samplingFunction_x->clear();
|
||||
samplingFunction_y->clear();
|
||||
G4double sum = 0.0;
|
||||
G4double Xlow=0;
|
||||
G4double Xlow = 0.;
|
||||
G4double Xhigh=1e-04;
|
||||
G4double fact = pow((1e06/Xhigh),(1/240.0));
|
||||
G4PenelopeIntegrator<G4PenelopeRayleigh,G4double(G4PenelopeRayleigh::*)(G4double)> theIntegrator;
|
||||
sum = theIntegrator.Calculate(this,&G4PenelopeRayleigh::MolecularFormFactor,
|
||||
Xlow,Xhigh,1e-10);
|
||||
samplingFunction_x->push_back(Xhigh);
|
||||
samplingFunction_y->push_back(sum);
|
||||
G4int i;
|
||||
for (i=1;i<points;i++){
|
||||
Xlow=Xhigh;
|
||||
Xhigh=Xhigh*fact;
|
||||
sum = theIntegrator.Calculate(this,
|
||||
&G4PenelopeRayleigh::MolecularFormFactor,
|
||||
Xlow,Xhigh,1e-10);
|
||||
samplingFunction_x->push_back(Xhigh);
|
||||
samplingFunction_y->push_back(sum+(*samplingFunction_y)[i-1]);
|
||||
}
|
||||
for (i=0;i<points;i++){
|
||||
(*samplingFunction_x)[i]=log((*samplingFunction_x)[i]);
|
||||
(*samplingFunction_y)[i]=log((*samplingFunction_y)[i]);
|
||||
}
|
||||
samplingConstant=log(fact);
|
||||
|
||||
if (theTable==SamplingTables.end()) { //material not inizialized yet
|
||||
samplingFunction_x = new G4DataVector();
|
||||
samplingFunction_y = new G4DataVector();
|
||||
G4double sum = 0.0;
|
||||
G4PenelopeIntegrator<G4PenelopeRayleigh,G4double(G4PenelopeRayleigh::*)(G4double)> theIntegrator;
|
||||
sum = theIntegrator.Calculate(this,&G4PenelopeRayleigh::MolecularFormFactor,
|
||||
Xlow,Xhigh,1e-10);
|
||||
samplingFunction_x->push_back(Xhigh);
|
||||
samplingFunction_y->push_back(sum);
|
||||
G4int i;
|
||||
for (i=1;i<points;i++){
|
||||
Xlow=Xhigh;
|
||||
Xhigh=Xhigh*fact;
|
||||
sum = theIntegrator.Calculate(this,
|
||||
&G4PenelopeRayleigh::MolecularFormFactor,
|
||||
Xlow,Xhigh,1e-10);
|
||||
samplingFunction_x->push_back(Xhigh);
|
||||
samplingFunction_y->push_back(sum+(*samplingFunction_y)[i-1]);
|
||||
}
|
||||
for (i=0;i<points;i++){
|
||||
(*samplingFunction_x)[i]=log((*samplingFunction_x)[i]);
|
||||
(*samplingFunction_y)[i]=log((*samplingFunction_y)[i]);
|
||||
}
|
||||
SamplingTables[material] = std::pair<G4DataVector*,G4DataVector*> (samplingFunction_x,samplingFunction_y);
|
||||
}
|
||||
else { //material already inizialized
|
||||
samplingFunction_x=(*theTable).second.first;
|
||||
samplingFunction_y=(*theTable).second.second;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -463,7 +480,8 @@ G4double G4PenelopeRayleigh::MolecularFormFactor(G4double y)
|
||||
for (G4int i=0;i<nElements;i++){
|
||||
G4int Z = (G4int) (*elementVector)[i]->GetZ();
|
||||
if (Z>ntot) Z=95;
|
||||
fa=Z*(1+y*(RA1[Z-1]+x*(RA2[Z-1]+x*RA3[Z-1])))/pow((1+y*(RA4[Z-1]+y*RA5[Z-1])),2);
|
||||
G4double denomin = 1+y*(RA4[Z-1]+y*RA5[Z-1]);
|
||||
fa=Z*(1+y*(RA1[Z-1]+x*(RA2[Z-1]+x*RA3[Z-1])))/(denomin*denomin);
|
||||
G4bool a = ((Z>10) && (fa>2.0));
|
||||
if (a)
|
||||
{
|
||||
@@ -471,7 +489,7 @@ G4double G4PenelopeRayleigh::MolecularFormFactor(G4double y)
|
||||
G4double k1=0.3125;
|
||||
G4double k2=2.426311e-02;
|
||||
Pa=(Z-k1)*fine_structure_const;
|
||||
Pg=sqrt(1-pow(Pa,2));
|
||||
Pg=sqrt(1-(Pa*Pa));
|
||||
Pq=k2*x/Pa;
|
||||
fb=sin(2*Pg*atan(Pq))/(Pg*Pq*pow((1+Pq*Pq),Pg));
|
||||
fa=std::max(fa,fb);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4RangeTest.cc,v 1.7 2003/06/16 17:00:24 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4SemiLogInterpolation.cc,v 1.4 2002/05/28 09:20:21 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4ShellData.cc,v 1.6 2003/06/16 17:00:25 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4ShellEMDataSet.cc,v 1.10 2003/06/16 17:00:26 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4VCrossSectionHandler.cc,v 1.13 2003/06/16 17:00:28 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4VeLowEnergyLoss.cc,v 1.23 2003/06/16 17:00:29 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eBremsstrahlungSpectrum.cc,v 1.11 2003/06/16 17:00:32 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eIonisationCrossSectionHandler.cc,v 1.10 2003/06/16 17:00:33 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -21,21 +21,22 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4eIonisationParameters.cc,v 1.20 2003/06/16 17:00:34 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4eIonisationParameters.cc,v 1.21 2004/02/17 11:17:31 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 31 Jul 2001 MGP Created, with dummy implementation
|
||||
// 12.09.01 V.Ivanchenko Add param and interpolation of parameters
|
||||
// 04.10.01 V.Ivanchenko Add BindingEnergy method
|
||||
// 25.10.01 MGP Many bug fixes, mostly related to the
|
||||
// 12.09.01 V.Ivanchenko Add param and interpolation of parameters
|
||||
// 04.10.01 V.Ivanchenko Add BindingEnergy method
|
||||
// 25.10.01 MGP Many bug fixes, mostly related to the
|
||||
// management of pointers
|
||||
// 29.11.01 V.Ivanchenko New parametrisation + Excitation
|
||||
// 29.11.01 V.Ivanchenko New parametrisation + Excitation
|
||||
// 30.05.02 V.Ivanchenko Format and names of the data files were
|
||||
// chenged to "ion-..."
|
||||
// chenged to "ion-..."
|
||||
// 17.02.04 V.Ivanchenko Increase buffer size
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -185,14 +186,14 @@ void G4eIonisationParameters::LoadData()
|
||||
for (size_t i=0; i<nZ; i++) {
|
||||
|
||||
G4int Z = (G4int)activeZ[i];
|
||||
char nameChar[100] = {""};
|
||||
std::ostrstream ost(nameChar, 100, std::ios::out);
|
||||
char nameChar[1000] = {""};
|
||||
std::ostrstream ost(nameChar, 1000, std::ios::out);
|
||||
ost << pathString << Z << ".dat";
|
||||
G4String name(nameChar);
|
||||
|
||||
G4String name(nameChar);
|
||||
|
||||
std::ifstream file(name);
|
||||
std::filebuf* lsdp = file.rdbuf();
|
||||
|
||||
|
||||
if (! (lsdp->is_open()) ) {
|
||||
G4String excep = G4String("G4IonisationParameters - data file: ")
|
||||
+ name + G4String(" not found. The version 1.# of G4LEDATA should be used");
|
||||
@@ -202,7 +203,7 @@ void G4eIonisationParameters::LoadData()
|
||||
// The file is organized into:
|
||||
// For each shell there are two lines:
|
||||
// 1st line:
|
||||
// 1st column is the energy of incident e-,
|
||||
// 1st column is the energy of incident e-,
|
||||
// 2d column is the parameter of screan term;
|
||||
// 2d line:
|
||||
// 3 energy (MeV) subdividing different approximation area of the spectrum
|
||||
@@ -321,7 +322,7 @@ void G4eIonisationParameters::LoadData()
|
||||
<< " ener1= " << ener1
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
|
||||
// End of file
|
||||
if (ener == -2) {
|
||||
break;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eIonisationSpectrum.cc,v 1.22 2003/06/16 17:00:35 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4eLowEnergyLoss.cc,v 1.31 2003/06/16 17:00:36 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -----------------------------------------------------------
|
||||
// GEANT 4 class implementation file
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4hLowEnergyLoss.cc,v 1.20 2003/05/20 20:16:14 pia Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// GEANT4 tag $Name: geant4-05-02-patch-01 $
|
||||
//
|
||||
// -----------------------------------------------------------
|
||||
// GEANT 4 class implementation file
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.63 2003/11/12 16:30:32 vnivanch Exp $
|
||||
$Id: History,v 1.66 2004/03/02 17:45:03 vnivanch Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,16 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
02 March 04: V.Ivant (muons-V06-00-02)
|
||||
- Minor fix in initialisation of MuPairProductionModel
|
||||
|
||||
17 Feb 04: V.Ivant (muons-V06-00-01)
|
||||
- Update parameterizations in G4MuPairProductionModel
|
||||
- Update radiative corrections for G4MuBetheBlochModel
|
||||
|
||||
22 Jan 04: V.Ivant (muons-V06-00-00)
|
||||
- Migrade to G4ParticleChangeForLoss
|
||||
|
||||
11 Nov 03: V.Ivant (muons-V05-02-09)
|
||||
- Remove force of verbose=0 for G4MuIonisation
|
||||
- Substitute G4VEnergyLossSTD by G4VEnergyLossProcess
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
No.events=1000000
|
||||
X=1000 g/cm2 Fe
|
||||
T=100 GeV T=10000 GeV
|
||||
bc b k n p b k n p
|
||||
-.950 1015.9 155842.0 .0 80340.4 1018.8 165585.0 .0 281133.8
|
||||
-.850 1015.2 123833.1 .0 75005.4 1018.8 131898.4 .0 284400.3
|
||||
-.750 1014.3 98379.0 .0 68839.1 1018.8 105052.9 .0 285790.3
|
||||
-.650 1013.1 78139.7 1002.2 62042.4 1018.8 83661.7 1760.4 285381.4
|
||||
-.550 1011.6 62048.8 901.3 54844.3 1018.8 66618.6 1590.7 283275.9
|
||||
-.450 1009.8 49257.4 811.0 47492.3 1018.8 53041.3 1439.8 279594.9
|
||||
-.350 1007.5 39090.2 730.2 40236.1 1018.7 42226.3 1305.5 274473.0
|
||||
-.250 1004.7 31009.8 657.6 33308.3 1018.7 33612.7 1186.1 268052.0
|
||||
-.150 1001.1 24588.6 592.5 26906.0 1018.7 26753.0 1079.9 260475.6
|
||||
-.050 996.7 19486.5 534.1 21179.8 1018.7 21290.8 985.6 251883.9
|
||||
.050 991.2 15433.1 481.6 16229.7 1018.7 16941.9 901.9 242410.7
|
||||
.150 984.5 12213.2 434.6 12102.7 1018.6 13479.8 827.8 232180.2
|
||||
.250 976.1 9655.8 392.4 8790.1 1018.6 10723.9 762.4 221306.5
|
||||
.350 965.9 7624.9 354.5 6229.3 1018.6 8530.4 704.6 209892.6
|
||||
.450 953.5 6012.3 320.5 4317.9 1018.5 6784.8 653.6 198031.8
|
||||
.550 938.4 4732.2 289.7 2934.4 1018.4 5395.7 608.8 185808.4
|
||||
.650 920.3 3716.2 261.8 1959.1 1018.3 4290.5 569.3 173300.2
|
||||
.750 898.6 2910.0 236.4 1286.7 1018.2 3411.2 534.5 160580.9
|
||||
.850 873.0 2270.7 212.9 831.9 1018.1 2711.8 503.9 147723.5
|
||||
.950 843.0 1764.0 191.1 529.5 1017.9 2155.4 476.9 134803.8
|
||||
1.050 808.1 1362.6 170.7 331.4 1017.6 1712.9 452.9 121905.0
|
||||
1.150 768.2 1045.2 151.3 203.8 1017.3 1361.1 431.7 109121.5
|
||||
1.250 723.1 794.6 132.7 123.0 1017.0 1081.3 412.7 96562.6
|
||||
1.350 672.9 597.4 114.8 72.7 1016.5 858.8 395.6 84354.7
|
||||
1.450 618.4 442.8 97.6 42.1 1015.9 682.0 380.1 72639.3
|
||||
1.550 560.7 322.7 81.1 23.9 1015.1 541.4 366.0 61567.2
|
||||
1.650 501.8 230.4 65.5 13.5 1014.2 429.7 352.9 51286.6
|
||||
1.750 444.1 160.9 51.1 7.7 1013.0 340.9 340.7 41928.2
|
||||
1.850 387.1 110.4 37.8 4.6 1011.5 270.4 329.1 33591.5
|
||||
1.950 300.1 75.6 22.1 2.8 1009.6 214.3 318.0 26338.0
|
||||
2.050 .0 .0 .0 .0 1007.3 169.8 307.3 20189.6
|
||||
2.150 .0 .0 .0 .0 1004.3 134.4 296.6 15126.5
|
||||
2.250 .0 .0 .0 .0 1000.6 106.3 286.0 11085.2
|
||||
2.350 .0 .0 .0 .0 996.0 84.0 275.3 7959.3
|
||||
2.450 .0 .0 .0 .0 990.3 66.3 264.3 5611.7
|
||||
2.550 .0 .0 .0 .0 983.1 52.2 253.0 3893.8
|
||||
2.650 .0 .0 .0 .0 974.1 41.1 241.2 2663.7
|
||||
2.750 .0 .0 .0 .0 963.0 32.2 228.8 1798.5
|
||||
2.850 .0 .0 .0 .0 949.4 25.2 215.7 1199.0
|
||||
2.950 .0 .0 .0 .0 932.7 19.6 201.9 788.9
|
||||
3.050 .0 .0 .0 .0 912.4 15.2 187.2 511.9
|
||||
3.150 .0 .0 .0 .0 887.9 11.7 171.6 327.1
|
||||
3.250 .0 .0 .0 .0 859.0 8.9 155.1 205.6
|
||||
3.350 .0 .0 .0 .0 825.4 6.8 137.7 126.8
|
||||
3.450 .0 .0 .0 .0 787.7 5.1 119.8 76.7
|
||||
3.550 .0 .0 .0 .0 747.4 3.7 101.5 45.6
|
||||
3.650 .0 .0 .0 .0 707.8 2.7 83.5 26.8
|
||||
3.750 .0 .0 .0 .0 675.1 2.0 66.1 15.8
|
||||
3.850 .0 .0 .0 .0 658.6 1.4 49.5 9.8
|
||||
3.950 .0 .0 .0 .0 655.9 1.0 29.2 6.6
|
||||
@@ -1,21 +0,0 @@
|
||||
COMMENTS ON IONISATION AND KNOCK-ON ELECTRONS WITH
|
||||
CORRECTION
|
||||
|
||||
1) Let us introduce Tbound (? 100 KeV); below Tbound the correction to the
|
||||
differential cross section is negligibly small.
|
||||
2) There also exists Tmax (= function (E)) defined by kinematics. In this case, the
|
||||
following possibilities appear:
|
||||
3) Tmax < Tbound; usual BBS energy loss (and Bhabha cross section – for Tcut <
|
||||
Tmax, with correction or without it, it does not play any substantial role) may be
|
||||
used, as it was earlier. But it takes place only for rather low muon energies.
|
||||
4) Tmax > Tbound, with three possibilities for Tcut:
|
||||
5) Tcut < Tbound: restricted BBS energy loss (< Tcut), numerical calculation of the total
|
||||
cross section with accurate formula and sampling with accurate formula are needed.
|
||||
6) Tbound < Tcut < Tmax: for energy loss it is necessary to take “usual” restricted BBS
|
||||
(< Tbound) plus “twice restricted” numerically integrated energy loss for the interval
|
||||
(Tbound,Tcut), total cross section and sampling being similar to preceding point.
|
||||
7) Tcut > Tmax: restricted BBS (< Tbound) plus twice restricted numerical (Tbound,
|
||||
Tmax); discrete interactions are not simulated.
|
||||
|
||||
RPK 10.05.2000
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
By R.P.Kokoulin, May 12th, 2000
|
||||
|
||||
Multiple Coulomb Scattering – some questions and problems
|
||||
|
||||
Apart from the problems of creation and development of convenient
|
||||
procedure for fast simulation of the effect, some principal questions are to be
|
||||
answered (possibly, most of them have already been investigated)
|
||||
|
||||
General
|
||||
|
||||
Is it possible to use cross section formulae without magnetic formfactor and spin effects:
|
||||
|
||||
a) for nucleus (probably yes);
|
||||
b) for proton (possibly yes);
|
||||
c) for electron (probably no).
|
||||
|
||||
Should the scattering on the screened nucleus and on atomic electrons be considered
|
||||
separately? (likely, they should; they probably can be combined later, but…)
|
||||
|
||||
Scattering on the nucleus:
|
||||
|
||||
a) influence of the choice of the elastic atomic formfactor (TF, HF, hydrogen-like, …);
|
||||
there is a hope that the difference is small (with a proper choice of the parameters) but
|
||||
it should be estimated;
|
||||
b) influence of the nuclear size (it should influence RMS angle and distribution shape on
|
||||
the tail);
|
||||
c) influence of the choice of nuclear formfactor (exponential, Gaussian, Fermi model,
|
||||
etc.); probably, it is small (only RMS nucleus radius is crucial) but it is better to
|
||||
compare directly;
|
||||
d) contribution of inelastic nucleus formfactor (incoherent scattering on protons of the
|
||||
nucleus);
|
||||
e) necessity of taking into account proton formfactor (for incoherent scattering); last two
|
||||
points are expected to give small effect but need evaluation.
|
||||
|
||||
Scattering on atomic electrons:
|
||||
|
||||
a) introduction and influence of the choice of inelastic atomic formfactor (TH,
|
||||
hydrogen-like exponential, what else?) – it should be evaluated; more simple
|
||||
approaches, such as Z(Z+1) substitutions, seem to be incorrect;
|
||||
b) problem of a double account for scattering on electrons if explicit simulation of the
|
||||
elastic scattering of the projectile on electrons (possibly, above the cut Tcut) is
|
||||
included (knock-on electron production with full kinematics) – the possible way is to
|
||||
consider restricted multiple scattering (below Tcut).
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
Some references concerning multiple scattering (May, 2000; RPK)
|
||||
|
||||
1) S.Hayakawa. Cosmic Ray Physics.
|
||||
2) S.Striganov. Nucl.Phys.B (Proc.Suppl.) 51A (1996) 172-178.
|
||||
3) B.Rossi. High Energy Particles.
|
||||
4) I.S.Baishev e.a. Sov.J.Nucl.Phys. 42 (1985) 745-749.
|
||||
5) G.R.Lynch, O.I.Dahl. NIM B58 (1991) 6-10.
|
||||
6) A.Van Ginneken. NIM A251 (1986) 21-39.
|
||||
7) A.Van Ginneken. NIM A362 (1995) 213-223.
|
||||
8) D.Liljequist. J.Appl.Phys. 62 (1987) 333-341.
|
||||
9) D.Liljequist, M.Ismail. J.Appl.Phys. 62 (1987) 342-350.
|
||||
10) D.Liljequist e.a. J.Appl.Phys. 68 (1990) 3061-3065.
|
||||
11) G.Shen e.a. Phys.Rev.D 20 (1979) 1584-1588.
|
||||
12) J.M.Fernandez-Varea e.a. NIM B73 (1993) 447-473.
|
||||
13) P.Arce, M.Wadhwa. CMS Note 1999/000 (?).
|
||||
14) L.Urban. G4 Phys.Ref.Manual (also G3toG4/quick overview and references).
|
||||
15) G.Moliere. Z.Naturforsch. 2a (1947) 133-145.
|
||||
16) G.Moliere. Z.Naturforsch. 3a (1948) 78-97.
|
||||
17) H.A.Bethe. Phys.Rev. 89 (1953) 1256-1266.
|
||||
18) W.T.Scott. Rev.Mod.Phys. 35 (1963) 231-313.
|
||||
19) L.N.Cooper, J.Rainwater. Phys.Rev. 97 (1955) 492-504.
|
||||
20) U.Fano. Phys.Rev. 93 (1954) 117-120.
|
||||
21) H.W.Lewis. Phys.Rev. 78 (1950) 526-529.
|
||||
22) S.Goudsmit, J.L.Sounderson. Phys.Rev. 57 (1940) 24-29.
|
||||
23) S.Goudsmit, J.L.Sounderson. Phys.Rev. 58 (1940) 36-42.
|
||||
24) Y.S.Tsai. Rev.Mod.Phys. 46 (1974) 815-851; ibid. 49 (1977) 421 - Errata.
|
||||
25) L.V.Spencer, C.H.Blanchard. Phys.Rev. 93 (1954) 114-116.
|
||||
@@ -1,47 +0,0 @@
|
||||
Prepared by R.Kokoulin, May 22nd, 2000
|
||||
|
||||
Brief summary of G4 muon activity, May 2nd - May 23rd, 2000
|
||||
S.Kelner, R.Kokoulin, M.Maire, A.Rybin, L.Urban
|
||||
|
||||
1. G4 muon tests
|
||||
The test procedure of the verification of muon interaction simulation which allows to check
|
||||
both mean free path calculation and energy transfer sampling has been suggested and
|
||||
implemented.
|
||||
First test results revealed appreciable deviations of the distributions of the energy loss from
|
||||
theoretical dependencies (for bremsstrahlung, pair production, nuclear interaction). Several bugs
|
||||
have been found and eliminated; it has greatly improved the agreement.
|
||||
The program of further G4 muon tests has been prepared and agreed, including thin target
|
||||
tests (extending the set of materials, energies, and increasing statistics), and thick target
|
||||
simulation which will allow to verify the consistency of consideration of restricted continuous
|
||||
energy loss.
|
||||
|
||||
2. Refinement of the processes already implemented
|
||||
Simple formulae and algorithm for sampling photon and muon angles in muon
|
||||
bremsstrahlung have been suggested and prepared for implementation in G4. It will be coded in
|
||||
the nearest days.
|
||||
Final states for other processes (pair production, photonuclear interaction) have been
|
||||
clarified, fixed and introduced into documentation.
|
||||
Logical scheme of a consistent inclusion of bremsstrahlung correction in high-energy knock-
|
||||
on electron production and ionisation energy loss is prepared.
|
||||
List of questions concerning the validity of multiple scattering model has been compiled.
|
||||
After answering these questions, the "calibration" simulation of MCS for high-energy muons can
|
||||
be performed.
|
||||
|
||||
3. Documentation
|
||||
Sections concerning three basic muon interaction processes (bremsstrahlung, pair production,
|
||||
photonuclear interaction) for PRM (Phys. Ref. Manual) have been extended, updated and
|
||||
corrected.
|
||||
Suggestions for improvements for the section in PRM about muon ionisation, and also
|
||||
comments and corrections for "Electromagnetic Physics" gallery have been prepared.
|
||||
|
||||
4. Extension of the muon interactions in G4
|
||||
List of muon processes for further inclusion in G4 has been discussed. The processes of
|
||||
interest are: muon pair production by photon, muon pair production by muon, diffractive
|
||||
bremsstrahlung (which leads to a difference in positive/negative muon energy loss). Refinement
|
||||
of multiple scattering and introduction of the screening correction to bremsstrahlung and pair
|
||||
production based on recent calculations of radiation logarithm in HF model are also important
|
||||
and can improve the accuracy of G4-based simulations. The level of theoretical knowledge of
|
||||
these processes is sufficient for their implementation into algorithms and codes.
|
||||
Theoretical clarification of LPM and Coulomb corrections for electron pair production by
|
||||
muons is needed; these are important both for accelerator and high-energy cosmic ray
|
||||
applications.
|
||||
@@ -1,36 +0,0 @@
|
||||
List of problems with G4muons 15.05.00
|
||||
|
||||
(Rostislav, Andrew, Laszlo, Michel, Stas, …, May 15th – May 22nd )
|
||||
|
||||
1) Tests electromagnetic (conduction, search of the possible
|
||||
sources of disagreement,…)
|
||||
a) brems
|
||||
b) pairs
|
||||
c) knock-on
|
||||
|
||||
2) Tests photonuclear
|
||||
|
||||
3) Physics Reference Manual
|
||||
Brems, pairs, photonuclear, ionisation
|
||||
a) to agree
|
||||
b) to correct
|
||||
c) to verify
|
||||
d) to commission
|
||||
|
||||
4)”A Quick Overview” - corrections
|
||||
|
||||
5) Summary Note on HE muons in G4
|
||||
a) to prepare draft
|
||||
b) to discuss and to correct
|
||||
c) to prepare the iteration (pre-final)
|
||||
|
||||
6) Discussions:
|
||||
a) final states in the above processes
|
||||
b) multiple scattering – applicability for HE muons
|
||||
c) muon pairs by photon
|
||||
d) muon pairs by muon
|
||||
e) diffractive bremsstrahlung
|
||||
f) …
|
||||
|
||||
7) Concluding remarks and summary
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
List of tests of HE muon interactions in Geant4
|
||||
(By RPK 20-21.05.00)
|
||||
|
||||
Thin target (to continue the works started):
|
||||
|
||||
10 TeV, 100 cm iron, 10^5 muons, 4 processes: delta, brems, pairs, photonuclear
|
||||
(to compare with the expectation: X*?(T,?)*?*N?*?lg*log10)
|
||||
|
||||
Remaining problems found at the moment:
|
||||
|
||||
1) Knock-on electron production for high-energy muons has to be modified (including
|
||||
contribution from electron bremsstrahlung diagrams and radiative corrections); now it
|
||||
is not implemented properly;
|
||||
2) There is a hint for a peak near the edge of the distribution of energy lost by muon in
|
||||
photonuclear interaction (similar to that which was found and eliminated earlier in the
|
||||
bremsstrahlung); - problem has been solved! (L.U.,May 22nd)
|
||||
3) It is not clear whether the energy lost by muon is equal to the energy transferred to
|
||||
secondary particles (kinetic energy of delta-electron, total energy of electron and
|
||||
positron in pair production, etc.). There is a hint that they are different.
|
||||
4) With high statistics simulation, an error appears sometimes in
|
||||
G4HEInelastic::GenerateNBodyEvent (total mass >= total energy).
|
||||
|
||||
After the general agreement is reached, to extend these calculations (with additional
|
||||
energy/material):
|
||||
|
||||
Muon energies: 100 GeV and 10 TeV
|
||||
Materials: iron (100 cm, or 787 g/cm^2) and carbon (graphite, 500 cm x 2.265 g/cm^3)
|
||||
|
||||
Again, after the agreement is reached, to perform calculations for iron and carbon target
|
||||
at 10 TeV energy with increased statistics (about 10^6 muons), to compare with
|
||||
expectation (also in terms of the ratio "simulated/expected"), to prepare beautiful pictures
|
||||
for inclusion in EM Physics gallery and other presentations.
|
||||
|
||||
Thick target (distribution of the total energy lost by muon in bulk matter, including
|
||||
continuous energy loss and all 4 discrete processes), 3 m iron, 1 TeV muon energy,
|
||||
statistics about 10^5, then 10^6 muons:
|
||||
|
||||
- histograms of the residual muon energy (in linear scale, 2 GeV bin) and of the energy
|
||||
lost by muon (in log scale, 0.10 bin in common logarithm); comparison is possible
|
||||
with Van Ginneken's TRAMU (the figure given by Particle Data Group) and with
|
||||
Geant 3.21** (A.Rybin); also simulation with original Geant 3.21 is of interest - to
|
||||
show, where it was wrong;
|
||||
- cut variation: with cut = 1 - 100 MeV the distribution should be the same (in
|
||||
particular, this is one of the tests of the consistency of continuous loss calculation);
|
||||
- histograms of the scattering angle and lateral displacement (nothing to compare? may
|
||||
be, Geant 3.21 ?).
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4MuBetheBlochModel.hh,v 1.8 2003/07/21 12:52:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-06-00 $
|
||||
// $Id: G4MuBetheBlochModel.hh,v 1.9 2004/02/10 18:07:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-06-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -39,6 +39,7 @@
|
||||
// 23-12-02 Change interface in order to move to cut per region (V.Ivanchenko)
|
||||
// 24-01-03 Make models region aware (V.Ivanchenko)
|
||||
// 13-02-03 Add Nama (V.Ivanchenko)
|
||||
// 10-02-04 Calculation of radiative corrections using R.Kokoulin model (V.Ivanchenko)
|
||||
//
|
||||
|
||||
//
|
||||
@@ -113,30 +114,23 @@ private:
|
||||
|
||||
void SetParticle(const G4ParticleDefinition* p);
|
||||
|
||||
G4double CrossSectionPerAtom(G4double Z,
|
||||
G4double kineticEnergy,
|
||||
G4double tmin,
|
||||
G4double tmax,
|
||||
G4double tmaxSecondary);
|
||||
|
||||
G4double DifCrossSectionPerAtom(G4double kineticEnergy,
|
||||
G4double knockonEnergy,
|
||||
G4double tmaxSecondary);
|
||||
|
||||
// hide assignment operator
|
||||
// hide assignment operator
|
||||
G4MuBetheBlochModel & operator=(const G4MuBetheBlochModel &right);
|
||||
G4MuBetheBlochModel(const G4MuBetheBlochModel&);
|
||||
|
||||
const G4ParticleDefinition* particle;
|
||||
G4double limitKinEnergy;
|
||||
G4double logLimitKinEnergy;
|
||||
G4double mass;
|
||||
G4double chargeSquare;
|
||||
G4double massSquare;
|
||||
G4double ratio;
|
||||
G4double highKinEnergy;
|
||||
G4double lowKinEnergy;
|
||||
G4double twoln10;
|
||||
G4double bg2lim;
|
||||
G4double taulim;
|
||||
G4double qc;
|
||||
G4double alphaprime;
|
||||
static G4double xgi[8],wgi[8];
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -145,11 +139,9 @@ inline G4double G4MuBetheBlochModel::MaxSecondaryEnergy(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy)
|
||||
{
|
||||
|
||||
G4double gamma= kinEnergy/mass + 1.0;
|
||||
G4double tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /
|
||||
(1. + 2.0*gamma*ratio + ratio*ratio);
|
||||
|
||||
G4double tau = kinEnergy/mass;
|
||||
G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
|
||||
(1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
|
||||
return tmax;
|
||||
}
|
||||
|
||||
@@ -157,12 +149,9 @@ inline G4double G4MuBetheBlochModel::MaxSecondaryEnergy(
|
||||
|
||||
inline G4double G4MuBetheBlochModel::MaxSecondaryEnergy(const G4DynamicParticle* dp)
|
||||
{
|
||||
|
||||
G4double kineticEnergy = dp->GetKineticEnergy();
|
||||
G4double gamma= kineticEnergy/mass + 1.0;
|
||||
G4double tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /
|
||||
(1. + 2.0*gamma*ratio + ratio*ratio);
|
||||
|
||||
G4double tau = dp->GetKineticEnergy()/mass;
|
||||
G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
|
||||
(1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
|
||||
return tmax;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user