Import Geant4 3.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:10:37 +02:00
parent 137e303ecc
commit 36c080dca6
3464 changed files with 119310 additions and 52696 deletions
@@ -1,19 +1,33 @@
// 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.
// ********************************************************************
// * 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: G4MuBremsstrahlung.cc,v 1.14 2001/02/05 17:50:29 gcosmo Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
// $Id: G4MuBremsstrahlung.cc,v 1.15.2.2 2001/06/28 20:19:45 gunter Exp $
// GEANT4 tag $Name: $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
// -------- G4MuBremsstrahlung physics process ---------
@@ -22,7 +36,9 @@
// 08-04-98: remove 'tracking cut' of muon in oIt, MMa
// 26/10/98: new cross section of R.Kokoulin,cleanup , L.Urban
// 10/02/00 modifications , new e.m. structure, L.Urban
// 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation
// --------------------------------------------------------------
#include "G4MuBremsstrahlung.hh"
#include "G4UnitsTable.hh"
@@ -33,8 +49,10 @@ G4double G4MuBremsstrahlung::adat[]={1.01,9.01,26.98,63.55,238.03};
G4int G4MuBremsstrahlung::ntdat = 8 ;
G4double G4MuBremsstrahlung::tdat[]={1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10};
G4int G4MuBremsstrahlung::NBIN = 1000; // 100 ;
G4double G4MuBremsstrahlung::ya[1001]={0.};
G4double G4MuBremsstrahlung::proba[5][8][1001]={0.};
//G4double G4MuBremsstrahlung::ya[1001]={0.};
//G4double G4MuBremsstrahlung::proba[5][8][1001]={0.};
G4double G4MuBremsstrahlung::ya[1001];
G4double G4MuBremsstrahlung::proba[5][8][1001];
G4double G4MuBremsstrahlung::CutFixed=0.98*keV ;
@@ -214,7 +232,7 @@ void G4MuBremsstrahlung::BuildLambdaTable(
PartialSumSigma.resize(G4Material::GetNumberOfMaterials());
G4PhysicsLogVector* ptrVector;
for ( G4int J=0 ; J < G4Material::GetNumberOfMaterials(); J++ )
for ( size_t J=0 ; J < G4Material::GetNumberOfMaterials(); J++ )
{
ptrVector = new G4PhysicsLogVector(
LowerBoundLambda,UpperBoundLambda,NbinLambda);
@@ -408,9 +426,9 @@ void G4MuBremsstrahlung::MakeSamplingTables(
G4double CrossSection = 0.0 ;
G4double c,y,ymin,ymax,dy,yy,dx,x,ep,ybin ;
G4double c,y,ymin,ymax,dy,yy,dx,x,ep;
G4int NbofIntervals ;
//G4int NbofIntervals ;
// calculate the differential cross section
// numerical integration in
// log ...............
@@ -495,13 +513,17 @@ G4VParticleChange* G4MuBremsstrahlung::PostStepDoIt(const G4Track& trackData,
return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData);
// sampling using tables
G4double v,xc,x,yc,y ;
G4int iZ,iT,iy ;
//G4double v,xc,x,yc,y ;
//G4int iZ,iT,iy ;
G4double v,x,y ;
G4int iy;
// select sampling table ;
G4double lnZ = log(anElement->GetZ()) ;
G4double delmin = 1.e10 ;
G4double del ;
G4int izz,itt,NBINminus1 ;
G4int izz = 0;
G4int itt = 0;
G4int NBINminus1;
NBINminus1 = NBIN-1 ;
for (G4int iz=0; iz<nzdat; iz++)
{
@@ -1,19 +1,33 @@
// 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.
// ********************************************************************
// * 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: G4MuIonisation.cc,v 1.12 2001/03/23 07:27:29 urban Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
// $Id: G4MuIonisation.cc,v 1.13.2.2 2001/06/28 20:19:45 gunter Exp $
// GEANT4 tag $Name: $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
// ------------ G4MuIonisation physics process -------------
@@ -26,6 +40,7 @@
// 26/10/98: new stuff from R.Kokoulin + cleanup , L.Urban
// 10/02/00 modifications , new e.m. structure, L.Urban
// 23/03/01: R.Kokoulin's correction is commented out, L.Urban
// 29.05.01 V.Ivanchenko minor changes to provide ANSI -wall compilation
// --------------------------------------------------------------
@@ -95,7 +110,7 @@ void G4MuIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType)
G4double LowEdgeEnergy , ionloss ;
G4double deltaloss ;
G4double RateMass ;
G4bool isOutRange ;
//G4bool isOutRange ;
static const G4MaterialTable* theMaterialTable=
G4Material::GetMaterialTable();
const G4double twoln10 = 2.*log(10.) ;
@@ -143,7 +158,7 @@ void G4MuIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType)
material->GetNumberOfElements() ;
DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ;
G4double tau,tau0,Tmax,gamma,bg2,beta2,rcut,delta,x,sh ;
G4double tau,Tmax,gamma,bg2,beta2,rcut,delta,x,sh ;
for (G4int i = 0 ; i < TotBin ; i++)
{
LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ;
@@ -249,8 +264,8 @@ void G4MuIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType)
void G4MuIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType)
{
// Build mean free path tables for the delta ray production process
G4double LowEdgeEnergy,Tmax , Value ,sigma ;
G4bool isOutRange ;
G4double LowEdgeEnergy, Value ,sigma ;
//G4bool isOutRange ;
const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable();
G4int numOfMaterials = theMaterialTable->length();
@@ -1,18 +1,32 @@
// 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.
// ********************************************************************
// * 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: G4MuPairProduction.cc,v 1.16 2001/02/05 17:50:29 gcosmo Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
// $Id: G4MuPairProduction.cc,v 1.17.2.2 2001/06/28 20:19:45 gunter Exp $
// GEANT4 tag $Name: $
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
// -------- G4MuPairProduction physics process ---------
@@ -22,6 +36,7 @@
// 26/10/98, new stuff from R. Kokoulin + cleanup , L.Urban
// 06/05/99 , bug fixed , L.Urban
// 10/02/00 modifications+bug fix , new e.m. structure, L.Urban
// 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation
// --------------------------------------------------------------
#include "G4MuPairProduction.hh"
@@ -35,8 +50,10 @@ G4double G4MuPairProduction::zdat[]={1.,4.,13.,26.,92.};
G4int G4MuPairProduction::ntdat = 8 ;
G4double G4MuPairProduction::tdat[]={1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10};
G4int G4MuPairProduction::NBIN = 1000 ; //100 ;
G4double G4MuPairProduction::ya[1001]={0.};
G4double G4MuPairProduction::proba[5][8][1001]={0.};
//G4double G4MuPairProduction::ya[1001]={0.};
//G4double G4MuPairProduction::proba[5][8][1001]={0.};
G4double G4MuPairProduction::ya[1001];
G4double G4MuPairProduction::proba[5][8][1001];
G4double G4MuPairProduction::MinPairEnergy = 4.*electron_mass_c2 ;
G4double G4MuPairProduction::LowerBoundLambda = 1.*keV ;
@@ -242,7 +259,7 @@ void G4MuPairProduction::BuildLambdaTable(
PartialSumSigma.resize(G4Material::GetNumberOfMaterials());
G4PhysicsLogVector* ptrVector;
for ( G4int J=0 ; J < G4Material::GetNumberOfMaterials(); J++ )
for ( size_t J=0 ; J < G4Material::GetNumberOfMaterials(); J++ )
{
ptrVector = new G4PhysicsLogVector(
LowerBoundLambda,UpperBoundLambda,NbinLambda);
@@ -374,7 +391,7 @@ void G4MuPairProduction::MakeSamplingTables(
G4double CrossSection = 0.0 ;
G4int NbofIntervals ;
//G4int NbofIntervals ;
c = log(MaxPairEnergy/MinPairEnergy) ;
ymin = -5. ;
@@ -627,7 +644,7 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData,
// limits of the energy sampling
G4double TotalEnergy = KineticEnergy + ParticleMass ;
G4double TotalMomentum = sqrt(KineticEnergy*(TotalEnergy+ParticleMass)) ;
//G4double TotalMomentum = sqrt(KineticEnergy*(TotalEnergy+ParticleMass)) ;
G4double Z3 = anElement->GetIonisation()->GetZ3() ;
G4double MaxPairEnergy = TotalEnergy-0.75*esq*ParticleMass*Z3 ;
@@ -636,14 +653,16 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData,
// sample e-e+ energy, pair energy first
G4double PairEnergy,xc,x,yc,y ;
G4int iZ,iT,iy ;
// G4int iZ,iT;
G4int iy ;
// select sampling table ;
G4double lnZ = log(anElement->GetZ()) ;
G4double delmin = 1.e10 ;
G4double del ;
G4int izz,itt,NBINminus1 ;
NBINminus1 = NBIN-1 ;
G4int izz = 0;
G4int itt = 0;
G4int NBINminus1 = NBIN-1;
for (G4int iz=0; iz<nzdat; iz++)
{
del = abs(lnZ-log(zdat[iz])) ;
@@ -718,9 +737,10 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData,
G4int numberofsecondaries = 1 ;
G4int flagelectron = 0 ;
G4int flagpositron = 1 ;
G4DynamicParticle *aParticle1,*aParticle2 ;
G4DynamicParticle* aParticle1 = 0;
G4DynamicParticle* aParticle2 = 0;
G4double ElectronMomentum , PositronMomentum ;
G4double finalPx,finalPy,finalPz ;
//G4double finalPx,finalPy,finalPz ;
G4double ElectKineEnergy = ElectronEnergy - electron_mass_c2 ;
@@ -771,8 +791,7 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData,
aParticleChange.AddSecondary( aParticle2 ) ;
G4double NewKinEnergy = KineticEnergy - ElectronEnergy - PositronEnergy ;
G4double finalMomentum=sqrt(NewKinEnergy*
(NewKinEnergy+2.*ParticleMass)) ;
//G4double finalMomentum=sqrt(NewKinEnergy*(NewKinEnergy+2.*ParticleMass));
aParticleChange.SetMomentumChange( ParticleDirection );
@@ -1,17 +1,31 @@
// 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.
// ********************************************************************
// * 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: G4VMuEnergyLoss.cc,v 1.8 2001/01/11 10:42:52 urban Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
// $Id: G4VMuEnergyLoss.cc,v 1.9.2.2 2001/06/28 20:19:45 gunter Exp $
// GEANT4 tag $Name: $
// --------------------------------------------------------------
// GEANT 4 class implementation file
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
// ---------- G4VMuEnergyLoss physics process -----------
@@ -25,6 +39,7 @@
// cleanup L.Urban on 23/10/98
// corrections due to new e.m. structure L.Urban 10/02/00
// signature in GetLossWithFluct changed L.Urban 30/10/00
// 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation
// --------------------------------------------------------------
@@ -43,46 +58,46 @@ G4int G4VMuEnergyLoss::CounterOfmuplusProcess = 0 ;
G4int G4VMuEnergyLoss::CounterOfmuminusProcess = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theDEDXmuplusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theRangemuplusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theInverseRangemuplusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theLabTimemuplusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theProperTimemuplusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theDEDXmuplusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theRangemuplusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theInverseRangemuplusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theLabTimemuplusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theProperTimemuplusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theDEDXmuminusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theRangemuminusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theInverseRangemuminusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theLabTimemuminusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theProperTimemuminusTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::theDEDXmuminusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theRangemuminusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theInverseRangemuminusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theLabTimemuminusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::theProperTimemuminusTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffATable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffBTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffCTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffATable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffBTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffCTable = NULL ;
G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffATable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffBTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::themuplusRangeCoeffCTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffATable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffBTable = 0 ;
G4PhysicsTable* G4VMuEnergyLoss::themuminusRangeCoeffCTable = 0 ;
G4double G4VMuEnergyLoss::LowerBoundEloss = 1.*keV ;
G4double G4VMuEnergyLoss::UpperBoundEloss = 1000000.*TeV ;
G4int G4VMuEnergyLoss::NbinEloss = 150 ;
G4double G4VMuEnergyLoss::RTable,G4VMuEnergyLoss::LOGRTable;
G4EnergyLossMessenger* G4VMuEnergyLoss::eLossMessenger = NULL ;
G4EnergyLossMessenger* G4VMuEnergyLoss::eLossMessenger = 0 ;
// constructor and destructor
G4VMuEnergyLoss::G4VMuEnergyLoss(const G4String& processName)
: G4VEnergyLoss (processName),
theLossTable(NULL),
theRangeCoeffATable(NULL),
theRangeCoeffBTable(NULL),
theRangeCoeffCTable(NULL),
theLossTable(0),
lastgammaCutInRange(0.),
lastelectronCutInRange(0.),
theElectron ( G4Electron::Electron() ),
thePositron ( G4Positron::Positron() ),
theMuonPlus ( G4MuonPlus::MuonPlus() ),
theMuonMinus ( G4MuonMinus::MuonMinus() )
theMuonMinus ( G4MuonMinus::MuonMinus() ),
theRangeCoeffATable(0),
theRangeCoeffBTable(0),
theRangeCoeffCTable(0)
{
}
@@ -90,7 +105,7 @@ G4VMuEnergyLoss::~G4VMuEnergyLoss()
{
if(theLossTable) {
theLossTable->clearAndDestroy();
delete theLossTable; theLossTable = NULL;
delete theLossTable; theLossTable = 0;
}
}
@@ -398,7 +413,7 @@ G4VParticleChange* G4VMuEnergyLoss::AlongStepDoIt(
G4double charge = aParticle->GetDefinition()->GetPDGCharge();
G4Material* aMaterial = trackData.GetMaterial();
G4int index = aMaterial->GetIndex();
//G4int index = aMaterial->GetIndex();
G4double Step = stepData.GetStepLength();