Import Geant4 0.0.0 source tree
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# $Id: GNUmakefile,v 2.0 1998/07/02 16:36:46 gunter Exp $
|
||||
# -----------------------------------------------------------
|
||||
# GNUmakefile for hadronic processes library. G.Folger 10-Dec-97
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := G4hadronic_proc
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/global/HEPRandom/include \
|
||||
-I$(G4BASE)/global/HEPGeometry/include \
|
||||
-I$(G4BASE)/track/include \
|
||||
-I$(G4BASE)/geometry/volumes/include \
|
||||
-I$(G4BASE)/geometry/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
-I$(G4BASE)/processes/hadronic/util/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/particles/management/include \
|
||||
-I$(G4BASE)/particles/leptons/include \
|
||||
-I$(G4BASE)/particles/bosons/include \
|
||||
-I$(G4BASE)/particles/hadrons/mesons/include \
|
||||
-I$(G4BASE)/particles/hadrons/barions/include \
|
||||
-I$(G4BASE)/particles/hadrons/ions/include \
|
||||
-I$(G4BASE)/processes/management/include \
|
||||
-I$(G4BASE)/materials/include
|
||||
|
||||
include $(G4INSTALL)/config/common.gmk
|
||||
@@ -0,0 +1,37 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AlphaInelasticProcess.hh,v 2.0 1998/07/02 16:36:06 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: Alpha Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 21-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4AlphaInelasticProcess_h
|
||||
#define G4AlphaInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AlphaInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AlphaInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AlphaInelasticProcess(
|
||||
const G4String& processName = "AlphaInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4Alpha::Alpha() )
|
||||
G4HadronInelasticProcess( processName, G4Alpha::Alpha() )
|
||||
{ }
|
||||
|
||||
~G4AlphaInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiLambdaInelasticProcess.hh,v 2.0 1998/07/02 16:36:07 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiLambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiLambdaInelasticProcess_h
|
||||
#define G4AntiLambdaInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiLambdaInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiLambdaInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiLambdaInelasticProcess(
|
||||
const G4String& processName = "AntiLambdaInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiLambda::AntiLambda() )
|
||||
G4HadronInelasticProcess( processName, G4AntiLambda::AntiLambda() )
|
||||
{ }
|
||||
|
||||
~G4AntiLambdaInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiNeutronInelasticProcess.hh,v 2.0 1998/07/02 16:36:09 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiNeutron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiNeutronInelasticProcess_h
|
||||
#define G4AntiNeutronInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiNeutronInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiNeutronInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiNeutronInelasticProcess(
|
||||
const G4String& processName = "AntiNeutronInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiNeutron::AntiNeutron() )
|
||||
G4HadronInelasticProcess( processName, G4AntiNeutron::AntiNeutron() )
|
||||
{ }
|
||||
|
||||
~G4AntiNeutronInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiOmegaMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:10 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiOmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiOmegaMinusInelasticProcess_h
|
||||
#define G4AntiOmegaMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiOmegaMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiOmegaMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiOmegaMinusInelasticProcess(
|
||||
const G4String& processName = "AntiOmegaMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiOmegaMinus::AntiOmegaMinus() )
|
||||
G4HadronInelasticProcess( processName, G4AntiOmegaMinus::AntiOmegaMinus() )
|
||||
{ }
|
||||
|
||||
~G4AntiOmegaMinusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiProtonInelasticProcess.hh,v 2.0 1998/07/02 16:36:11 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiProton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiProtonInelasticProcess_h
|
||||
#define G4AntiProtonInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiProtonInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiProtonInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiProtonInelasticProcess(
|
||||
const G4String& processName = "AntiProtonInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiProton::AntiProton() )
|
||||
G4HadronInelasticProcess( processName, G4AntiProton::AntiProton() )
|
||||
{ }
|
||||
|
||||
~G4AntiProtonInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiSigmaMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:13 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiSigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiSigmaMinusInelasticProcess_h
|
||||
#define G4AntiSigmaMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiSigmaMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiSigmaMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiSigmaMinusInelasticProcess(
|
||||
const G4String& processName = "AntiSigmaMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiSigmaMinus::AntiSigmaMinus() )
|
||||
G4HadronInelasticProcess( processName, G4AntiSigmaMinus::AntiSigmaMinus() )
|
||||
{ }
|
||||
|
||||
~G4AntiSigmaMinusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiSigmaPlusInelasticProcess.hh,v 2.0 1998/07/02 16:36:15 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiSigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiSigmaPlusInelasticProcess_h
|
||||
#define G4AntiSigmaPlusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiSigmaPlusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiSigmaPlusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiSigmaPlusInelasticProcess(
|
||||
const G4String& processName = "AntiSigmaPlusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiSigmaPlus::AntiSigmaPlus() )
|
||||
G4HadronInelasticProcess( processName, G4AntiSigmaPlus::AntiSigmaPlus() )
|
||||
{ }
|
||||
|
||||
~G4AntiSigmaPlusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiXiMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:17 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiXiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiXiMinusInelasticProcess_h
|
||||
#define G4AntiXiMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiXiMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiXiMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiXiMinusInelasticProcess(
|
||||
const G4String& processName = "AntiXiMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiXiMinus::AntiXiMinus() )
|
||||
G4HadronInelasticProcess( processName, G4AntiXiMinus::AntiXiMinus() )
|
||||
{ }
|
||||
|
||||
~G4AntiXiMinusInelasticProcess()
|
||||
{ }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4AntiXiZeroInelasticProcess.hh,v 2.0 1998/07/02 16:36:18 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: AntiXiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4AntiXiZeroInelasticProcess_h
|
||||
#define G4AntiXiZeroInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4AntiXiZeroInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4AntiXiZeroInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4AntiXiZeroInelasticProcess(
|
||||
const G4String& processName = "AntiXiZeroInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4AntiXiZero::AntiXiZero() )
|
||||
G4HadronInelasticProcess( processName, G4AntiXiZero::AntiXiZero() )
|
||||
{ }
|
||||
|
||||
~G4AntiXiZeroInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4DeuteronInelasticProcess.hh,v 2.0 1998/07/02 16:36:19 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: Deuteron Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4DeuteronInelasticProcess_h
|
||||
#define G4DeuteronInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4DeuteronInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4DeuteronInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4DeuteronInelasticProcess(
|
||||
const G4String& processName = "DeuteronInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4Deuteron::Deuteron() )
|
||||
G4HadronInelasticProcess( processName, G4Deuteron::Deuteron() )
|
||||
{ }
|
||||
|
||||
~G4DeuteronInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4HadronCaptureProcess.hh,v 2.1 1998/07/12 03:07:02 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// G4 Neutron capture process -- header file
|
||||
// F.W. Jones, TRIUMF, 03-DEC-96
|
||||
//
|
||||
// For further comments see G4HadronCaptureProcess.cc.
|
||||
//
|
||||
// 27-MAR-97 FWJ: first version for Alpha release
|
||||
// 14-APR-97 FWJ: cross section data class name changed
|
||||
//
|
||||
// 19-MAY-98 FWJ: variant G4HadronCapture process for
|
||||
// G4CrossSectionDataSet/DataStore class design.
|
||||
// 29-JUN-98 FWJ: default data set G4HadronCrossSections
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4HadronCaptureProcess_h
|
||||
#define G4HadronCaptureProcess_h 1
|
||||
|
||||
//#include <rw/tphdict.h>
|
||||
#include "globals.hh"
|
||||
//#include "Randomize.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementVector.hh"
|
||||
//#include "G4ElementTable.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
//#include "G4PhysicsTable.hh"
|
||||
//#include "G4PhysicsVector.hh"
|
||||
//#include "G4LPhysicsFreeVector.hh"
|
||||
//#include "G4HadronicCrossSections.hh"
|
||||
#include "G4HadronFissionProcess.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4TrackStatus.hh"
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4CrossSectionDataStore.hh"
|
||||
#include "G4HadronCaptureDataSet.hh"
|
||||
|
||||
|
||||
class G4HadronCaptureProcess : public G4HadronicProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4HadronCaptureProcess(const G4String& processName ="LCapture");
|
||||
|
||||
~G4HadronCaptureProcess();
|
||||
|
||||
inline
|
||||
G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{
|
||||
return GetMeanFreePathBasic(aTrack.GetDynamicParticle(),
|
||||
aTrack.GetMaterial());
|
||||
}
|
||||
|
||||
G4double GetMeanFreePathBasic(const G4DynamicParticle* aParticle,
|
||||
const G4Material* aMaterial);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
|
||||
{
|
||||
SetDispatch(this);
|
||||
return G4HadronicProcess::GeneralPostStepDoIt(aTrack, aStep);
|
||||
}
|
||||
|
||||
void BuildThePhysicsTable(G4ParticleDefinition& aParticleType);
|
||||
|
||||
void SetCrossSectionDataStore(G4CrossSectionDataStore* aDataStore)
|
||||
{
|
||||
theCrossSectionDataStore = aDataStore;
|
||||
}
|
||||
|
||||
G4CrossSectionDataStore* GetCrossSectionDataStore()
|
||||
{
|
||||
return theCrossSectionDataStore;
|
||||
}
|
||||
|
||||
// void setCrossSectionDataVerboseLevel(G4int value)
|
||||
// {
|
||||
// theCrossSectionData.SetVerboseLevel(value);
|
||||
// }
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
void DumpPhysicsTable(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
private:
|
||||
|
||||
// Note: DEC compiler won't accept "const G4ParticleDefinition" here
|
||||
// because it instantiates the ClearAndDestroy method that deletes the
|
||||
// pointers in the dictionary.
|
||||
// RWTPtrHashDictionary<G4ParticleDefinition, G4PhysicsTable>
|
||||
// thePhysicsDictionary;
|
||||
|
||||
// G4HadronicCrossSections theCrossSectionData;
|
||||
G4CrossSectionDataStore* theCrossSectionDataStore;
|
||||
|
||||
G4double GetMicroscopicCrossSection(const G4DynamicParticle* aParticle,
|
||||
const G4Element* anElement);
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,117 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4HadronElasticProcess.hh,v 2.1 1998/07/12 03:07:03 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// G4 Hadron Elastic Scattering Process -- header file
|
||||
// F.W. Jones, TRIUMF, 04-JUN-96
|
||||
//
|
||||
// For further comments see G4HadronElasticProcess.cc
|
||||
//
|
||||
// Modified by FWJ 03-DEC-96: uses G4LCrossSectionData
|
||||
// Modified by FWJ FEB-97: adapted to new tracking design
|
||||
// Modified by FWJ MAR-97: newer new tracking design
|
||||
//
|
||||
// Modified by FWJ 27-MAR-97: first version for Alpha release
|
||||
// 14-APR-97 FWJ: cross section data class name changed
|
||||
//
|
||||
// changing design to use Model-scheme: HPW, 20th June 1997
|
||||
//
|
||||
// 14-APR-98 FWJ: variant G4HadronElastic process for
|
||||
// G4CrossSectionDataSet/DataStore class design.
|
||||
// 29-JUN-98 FWJ: default data set G4HadronCrossSections
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4HadronElasticProcess_h
|
||||
#define G4HadronElasticProcess_h 1
|
||||
|
||||
//#include <rw/tphdict.h>
|
||||
#include "globals.hh"
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4CrossSectionDataStore.hh"
|
||||
#include "G4HadronElasticDataSet.hh"
|
||||
//#include "Randomize.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementVector.hh"
|
||||
//#include "G4ElementTable.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
//#include "G4PhysicsTable.hh"
|
||||
//#include "G4PhysicsVector.hh"
|
||||
//#include "G4LPhysicsFreeVector.hh"
|
||||
//#include "G4HadronCrossSections.hh"
|
||||
#include "G4LightMedia.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4TrackStatus.hh"
|
||||
|
||||
|
||||
class G4HadronElasticProcess : public G4HadronicProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4HadronElasticProcess(const G4String& processName = "LElastic");
|
||||
|
||||
~G4HadronElasticProcess();
|
||||
|
||||
inline
|
||||
G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{
|
||||
return GetMeanFreePathBasic(aTrack.GetDynamicParticle(),
|
||||
aTrack.GetMaterial());
|
||||
}
|
||||
|
||||
G4double GetMeanFreePathBasic(const G4DynamicParticle* aParticle,
|
||||
const G4Material* aMaterial);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
|
||||
{
|
||||
SetDispatch(this);
|
||||
return G4HadronicProcess::GeneralPostStepDoIt(aTrack, aStep);
|
||||
}
|
||||
|
||||
void BuildPhysicsTable(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
void SetCrossSectionDataStore(G4CrossSectionDataStore* aDataStore)
|
||||
{
|
||||
theCrossSectionDataStore = aDataStore;
|
||||
}
|
||||
|
||||
G4CrossSectionDataStore* GetCrossSectionDataStore()
|
||||
{
|
||||
return theCrossSectionDataStore;
|
||||
}
|
||||
|
||||
// inline
|
||||
// void setCrossSectionDataVerboseLevel(G4int value)
|
||||
// {
|
||||
// theCrossSectionData.SetVerboseLevel(value);
|
||||
// }
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
void DumpPhysicsTable(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
private:
|
||||
|
||||
// Note: DEC compiler won't accept "const G4ParticleDefinition" here
|
||||
// because it instantiates the ClearAndDestroy method that deletes the
|
||||
// pointers in the dictionary.
|
||||
// RWTPtrHashDictionary<G4ParticleDefinition, G4PhysicsTable>
|
||||
// thePhysicsDictionary;
|
||||
|
||||
// G4HadronCrossSections theCrossSectionData;
|
||||
|
||||
G4CrossSectionDataStore* theCrossSectionDataStore;
|
||||
|
||||
G4double GetMicroscopicCrossSection(const G4DynamicParticle* aParticle,
|
||||
const G4Element* anElement);
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,114 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4HadronFissionProcess.hh,v 2.1 1998/07/12 03:07:03 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// G4 Fission Process -- header file
|
||||
// F.W. Jones, TRIUMF, 03-DEC-96
|
||||
//
|
||||
// For further comments see G4HadronFissionProcess.cc.
|
||||
//
|
||||
// 27-MAR-97 F.W.Jones: first version for Alpha release
|
||||
// 14-APR-97 FWJ: cross section data class name changed
|
||||
//
|
||||
// 19-MAY-98 FWJ: variant G4HadronFission process for
|
||||
// G4CrossSectionDataSet/DataStore class design.
|
||||
// 29-JUN-98 FWJ: default data set G4HadronCrossSections
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4HadronFissionProcess_h
|
||||
#define G4HadronFissionProcess_h 1
|
||||
|
||||
//#include <rw/tphdict.h>
|
||||
#include "globals.hh"
|
||||
//#include "Randomize.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementVector.hh"
|
||||
//#include "G4ElementTable.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
//#include "G4PhysicsTable.hh"
|
||||
//#include "G4PhysicsVector.hh"
|
||||
//#include "G4LPhysicsFreeVector.hh"
|
||||
//#include "G4HadronCrossSections.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4TrackStatus.hh"
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4CrossSectionDataStore.hh"
|
||||
#include "G4HadronFissionDataSet.hh"
|
||||
|
||||
|
||||
class G4HadronFissionProcess : public G4HadronicProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4HadronFissionProcess(const G4String& processName ="LFission");
|
||||
|
||||
~G4HadronFissionProcess();
|
||||
|
||||
inline
|
||||
G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize,
|
||||
G4ForceCondition* condition)
|
||||
{
|
||||
return GetMeanFreePathBasic(aTrack.GetDynamicParticle(),
|
||||
aTrack.GetMaterial());
|
||||
}
|
||||
|
||||
G4double GetMeanFreePathBasic(const G4DynamicParticle* aParticle,
|
||||
const G4Material* aMaterial);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
|
||||
{
|
||||
SetDispatch(this);
|
||||
return G4HadronicProcess::GeneralPostStepDoIt(aTrack, aStep);
|
||||
}
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition&)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void BuildThePhysicsTable(G4ParticleDefinition& aParticleType);
|
||||
|
||||
void SetCrossSectionDataStore(G4CrossSectionDataStore* aDataStore)
|
||||
{
|
||||
theCrossSectionDataStore = aDataStore;
|
||||
}
|
||||
|
||||
G4CrossSectionDataStore* GetCrossSectionDataStore()
|
||||
{
|
||||
return theCrossSectionDataStore;
|
||||
}
|
||||
|
||||
// void setCrossSectionDataVerboseLevel(G4int value)
|
||||
// {
|
||||
// theCrossSectionData.SetVerboseLevel(value);
|
||||
// }
|
||||
|
||||
void DumpPhysicsTable(const G4ParticleDefinition& aParticleType);
|
||||
|
||||
private:
|
||||
|
||||
// Note: DEC compiler won't accept "const G4ParticleDefinition" here
|
||||
// because it instantiates the ClearAndDestroy method that deletes the
|
||||
// pointers in the dictionary.
|
||||
// RWTPtrHashDictionary<G4ParticleDefinition, G4PhysicsTable>
|
||||
// thePhysicsDictionary;
|
||||
|
||||
// G4HadronicCrossSections theCrossSectionData;
|
||||
G4CrossSectionDataStore* theCrossSectionDataStore;
|
||||
|
||||
G4double GetMicroscopicCrossSection(const G4DynamicParticle* aParticle,
|
||||
const G4Element* anElement);
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,37 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4KaonMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:24 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: KaonMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 12-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4KaonMinusInelasticProcess_h
|
||||
#define G4KaonMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4KaonMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4KaonMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4KaonMinusInelasticProcess(
|
||||
const G4String& processName = "KaonMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4KaonMinus::KaonMinus() )
|
||||
G4HadronInelasticProcess( processName, G4KaonMinus::KaonMinus() )
|
||||
{ }
|
||||
|
||||
~G4KaonMinusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4KaonPlusInelasticProcess.hh,v 2.0 1998/07/02 16:36:26 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: KaonPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4KaonPlusInelasticProcess_h
|
||||
#define G4KaonPlusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4KaonPlusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4KaonPlusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4KaonPlusInelasticProcess(
|
||||
const G4String& processName = "KaonPlusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4KaonPlus::KaonPlus() )
|
||||
G4HadronInelasticProcess( processName, G4KaonPlus::KaonPlus() )
|
||||
{ }
|
||||
|
||||
~G4KaonPlusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4KaonZeroLInelasticProcess.hh,v 2.0 1998/07/02 16:36:27 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// G4 Process: KaonZeroL Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 11-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4KaonZeroLInelasticProcess_h
|
||||
#define G4KaonZeroLInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4KaonZeroLInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4KaonZeroLInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4KaonZeroLInelasticProcess(
|
||||
const G4String& processName = "KaonZeroLInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4KaonZeroLong::KaonZeroLong() )
|
||||
G4HadronInelasticProcess( processName, G4KaonZeroLong::KaonZeroLong() )
|
||||
{ }
|
||||
|
||||
~G4KaonZeroLInelasticProcess()
|
||||
{ }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,36 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4KaonZeroSInelasticProcess.hh,v 2.0 1998/07/02 16:36:28 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// G4 Process: KaonZeroS InelasticProcess Process
|
||||
// J.L. Chuma, TRIUMF, 11-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4KaonZeroSInelasticProcess_h
|
||||
#define G4KaonZeroSInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4KaonZeroSInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4KaonZeroSInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4KaonZeroSInelasticProcess(
|
||||
const G4String& processName = "KaonZeroSInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4KaonZeroShort::KaonZeroShort() )
|
||||
G4HadronInelasticProcess( processName, G4KaonZeroShort::KaonZeroShort() )
|
||||
{ }
|
||||
|
||||
~G4KaonZeroSInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4LambdaInelasticProcess.hh,v 2.0 1998/07/02 16:36:30 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process : Lambda Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 18-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4LambdaInelasticProcess_h
|
||||
#define G4LambdaInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4LambdaInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4LambdaInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4LambdaInelasticProcess(
|
||||
const G4String& processName = "LambdaInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4Lambda::Lambda() )
|
||||
G4HadronInelasticProcess( processName, G4Lambda::Lambda() )
|
||||
{ }
|
||||
|
||||
~G4LambdaInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4NeutronInelasticProcess.hh,v 2.0 1998/07/02 16:36:31 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: Neutron Inelastic Process
|
||||
// original by H.P. Wellisch
|
||||
// modified by J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4NeutronInelasticProcess_h
|
||||
#define G4NeutronInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4NeutronInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4NeutronInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4NeutronInelasticProcess(
|
||||
const G4String& processName = "NeutronInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4Neutron::Neutron() )
|
||||
G4HadronInelasticProcess( processName, G4Neutron::Neutron() )
|
||||
{ }
|
||||
|
||||
~G4NeutronInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4OmegaMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:33 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: OmegaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4OmegaMinusInelasticProcess_h
|
||||
#define G4OmegaMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4OmegaMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4OmegaMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4OmegaMinusInelasticProcess(
|
||||
const G4String& processName = "OmegaMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4OmegaMinus::OmegaMinus() )
|
||||
G4HadronInelasticProcess( processName, G4OmegaMinus::OmegaMinus() )
|
||||
{ }
|
||||
|
||||
~G4OmegaMinusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4PionMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:34 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// PionMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4PionMinusInelasticProcess_h
|
||||
#define G4PionMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4PionMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4PionMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4PionMinusInelasticProcess(
|
||||
const G4String& processName = "PionMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4PionMinus::PionMinus() )
|
||||
G4HadronInelasticProcess( processName, G4PionMinus::PionMinus() )
|
||||
{ }
|
||||
|
||||
~G4PionMinusInelasticProcess()
|
||||
{ }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,37 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4PionPlusInelasticProcess.hh,v 2.0 1998/07/02 16:36:36 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// PionPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4PionPlusInelasticProcess_h
|
||||
#define G4PionPlusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4PionPlusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4PionPlusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4PionPlusInelasticProcess(
|
||||
const G4String& processName = "PionPlusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4PionPlus::PionPlus() )
|
||||
G4HadronInelasticProcess( processName, G4PionPlus::PionPlus() )
|
||||
{ }
|
||||
|
||||
~G4PionPlusInelasticProcess()
|
||||
{ }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,40 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4ProtonInelasticProcess.hh,v 2.0 1998/07/02 16:36:38 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: Proton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
//
|
||||
// Note: there is no .cc file
|
||||
|
||||
#ifndef G4ProtonInelasticProcess_h
|
||||
#define G4ProtonInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4ProtonInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4ProtonInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4ProtonInelasticProcess(
|
||||
const G4String& processName = "ProtonInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4Proton::Proton() )
|
||||
G4HadronInelasticProcess( processName, G4Proton::Proton() )
|
||||
{ }
|
||||
|
||||
~G4ProtonInelasticProcess()
|
||||
{ }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4SigmaMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:39 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// G4 Process: SigmaMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4SigmaMinusInelasticProcess_h
|
||||
#define G4SigmaMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4SigmaMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4SigmaMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4SigmaMinusInelasticProcess(
|
||||
const G4String& processName = "SigmaMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4SigmaMinus::SigmaMinus() )
|
||||
G4HadronInelasticProcess( processName, G4SigmaMinus::SigmaMinus() )
|
||||
{ }
|
||||
|
||||
~G4SigmaMinusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,36 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4SigmaPlusInelasticProcess.hh,v 2.0 1998/07/02 16:36:41 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// G4 Process: SigmaPlus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4SigmaPlusInelasticProcess_h
|
||||
#define G4SigmaPlusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4SigmaPlusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4SigmaPlusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4SigmaPlusInelasticProcess(
|
||||
const G4String& processName = "SigmaPlusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4SigmaPlus::SigmaPlus() )
|
||||
G4HadronInelasticProcess( processName, G4SigmaPlus::SigmaPlus() )
|
||||
{ }
|
||||
|
||||
~G4SigmaPlusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,38 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4TritonInelasticProcess.hh,v 2.0 1998/07/02 16:36:42 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// Hadronic Process: Triton Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 25-Feb-1997
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4TritonInelasticProcess_h
|
||||
#define G4TritonInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4TritonInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4TritonInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4TritonInelasticProcess(
|
||||
const G4String& processName = "TritonInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4Triton::Triton() )
|
||||
G4HadronInelasticProcess( processName, G4Triton::Triton() )
|
||||
{ }
|
||||
|
||||
~G4TritonInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4XiMinusInelasticProcess.hh,v 2.0 1998/07/02 16:36:43 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// G4 Process: XiMinus Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4XiMinusInelasticProcess_h
|
||||
#define G4XiMinusInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4XiMinusInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4XiMinusInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4XiMinusInelasticProcess(
|
||||
const G4String& processName = "XiMinusInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4XiMinus::XiMinus() )
|
||||
G4HadronInelasticProcess( processName, G4XiMinus::XiMinus() )
|
||||
{ }
|
||||
|
||||
~G4XiMinusInelasticProcess()
|
||||
{ }
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,37 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4XiZeroInelasticProcess.hh,v 2.0 1998/07/02 16:36:45 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
// G4 Process: XiZero Inelastic Process
|
||||
// J.L. Chuma, TRIUMF, 05-Nov-1996
|
||||
// Last modified: 03-Apr-1997
|
||||
|
||||
#ifndef G4XiZeroInelasticProcess_h
|
||||
#define G4XiZeroInelasticProcess_h 1
|
||||
|
||||
//#include "G4HadronicInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// class G4XiZeroInelasticProcess : public G4HadronicInelasticProcess
|
||||
class G4XiZeroInelasticProcess : public G4HadronInelasticProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4XiZeroInelasticProcess(
|
||||
const G4String& processName = "XiZeroInelastic" ) :
|
||||
// G4HadronicInelasticProcess( processName, G4XiZero::XiZero() )
|
||||
G4HadronInelasticProcess( processName, G4XiZero::XiZero() )
|
||||
{ }
|
||||
|
||||
~G4XiZeroInelasticProcess()
|
||||
{ }
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,213 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4HadronCaptureProcess.cc,v 2.2 1998/07/13 17:26:38 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// G4 Process: Low-energy Neutron Capture
|
||||
// F.W. Jones, TRIUMF, 03-DEC-96
|
||||
//
|
||||
// This is a prototype of a low-energy neutron capture process.
|
||||
// Currently it is based on the GHEISHA routine CAPTUR,
|
||||
// and conforms fairly closely to the original Fortran.
|
||||
//
|
||||
// 27-MAR-97 FWJ: first version for Alpha release
|
||||
// 20-JUN-97 FWJ: added check for zero cross section
|
||||
//
|
||||
// 19-MAY-98 FWJ: variant G4HadronCapture process for
|
||||
// G4CrossSectionDataSet/DataStore class design.
|
||||
// 29-JUN-98 FWJ: default data set G4HadronCrossSections
|
||||
//
|
||||
|
||||
|
||||
#include "G4HadronCaptureProcess.hh"
|
||||
|
||||
//unsigned
|
||||
//G4HadronicCaptureProcessHashFun(const G4ParticleDefinition& aParticleDefinition)
|
||||
//{
|
||||
// return aParticleDefinition.GetParticleName().hash();
|
||||
//}
|
||||
|
||||
G4HadronCaptureProcess::G4HadronCaptureProcess(const G4String& processName) :
|
||||
G4HadronicProcess(processName),
|
||||
// thePhysicsDictionary(G4HadronCaptureProcessHashFun)
|
||||
theCrossSectionDataStore(new G4CrossSectionDataStore)
|
||||
{
|
||||
theCrossSectionDataStore->AddDataSet(new G4HadronCaptureDataSet);
|
||||
}
|
||||
|
||||
G4HadronCaptureProcess::~G4HadronCaptureProcess()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4HadronCaptureProcess::
|
||||
BuildThePhysicsTable(G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronCaptureProcess: no cross section data set");
|
||||
return;
|
||||
}
|
||||
|
||||
theCrossSectionDataStore->BuildPhysicsTable(aParticleType);
|
||||
|
||||
// G4double LowEdgeEnergy, Value;
|
||||
// G4bool isOutRange;
|
||||
//
|
||||
// static const G4ElementTable* theElementTable;
|
||||
// theElementTable = G4Element::GetElementTable();
|
||||
// G4int numOfElements = G4Element::GetNumberOfElements();
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "BuildThePhysicsTable: numOfElements " << numOfElements << endl;
|
||||
// G4cout << "BuildThePhysicsTable: thePhysicsTable " << thePhysicsTable << endl;
|
||||
// G4cout << " for particle: " << aParticleType.GetParticleName() << " " <<
|
||||
// aParticleType.GetPDGEncoding() << endl;
|
||||
// }
|
||||
// RWBoolean exists = thePhysicsDictionary.contains(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "exists=" << exists << endl;
|
||||
// }
|
||||
// if (exists) {
|
||||
// thePhysicsTable = thePhysicsDictionary.findValue(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " Retrieve tPT=" << thePhysicsTable << endl;
|
||||
// }
|
||||
//// Remove any previous items from table
|
||||
// thePhysicsTable->clearAndDestroy();
|
||||
// thePhysicsTable->resize(numOfElements);
|
||||
// }
|
||||
// else {
|
||||
// thePhysicsTable = new G4PhysicsTable(numOfElements);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " make new tPT=" << thePhysicsTable << endl;
|
||||
// G4cout << " entries() = " << thePhysicsTable->entries() << endl;
|
||||
// }
|
||||
// thePhysicsDictionary.insertKeyAndValue(&aParticleType, thePhysicsTable);
|
||||
// }
|
||||
//// Make a PhysicsVector for each element
|
||||
// for (G4int J = 0; J < numOfElements; J++) {
|
||||
// (*thePhysicsTable)(J) =
|
||||
// theCrossSectionData.MakePhysicsVector(*this,
|
||||
// aParticleType,
|
||||
// (*theElementTable)[J]);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
G4double
|
||||
G4HadronCaptureProcess::
|
||||
GetMicroscopicCrossSection(const G4DynamicParticle* aParticle,
|
||||
const G4Element* anElement)
|
||||
{
|
||||
// gives the microscopic cross section in GEANT4 internal units
|
||||
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronCaptureProcess: no cross section data Store");
|
||||
return DBL_MIN;
|
||||
}
|
||||
return theCrossSectionDataStore->GetCrossSection(aParticle, anElement);
|
||||
|
||||
// G4int J ;
|
||||
// G4bool isOutRange ;
|
||||
// G4double MicroscopicCrossSection ;
|
||||
//
|
||||
// RWBoolean exists =
|
||||
// thePhysicsDictionary.contains(aParticle->GetDefinition());
|
||||
// if (!exists) {
|
||||
// G4Exception("G4HadronCaptureProcess::GetMicroscopicCrossSection: "
|
||||
// "no physics table for particle");
|
||||
// return G4double(0);
|
||||
// }
|
||||
// thePhysicsTable =
|
||||
// thePhysicsDictionary.findValue(aParticle->GetDefinition());
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " Retrieve tPT=" << thePhysicsTable << endl;
|
||||
// }
|
||||
//
|
||||
// J = anElement->GetIndex();
|
||||
// MicroscopicCrossSection = (*((*thePhysicsTable)(J))).
|
||||
// GetValue(aParticle->GetKineticEnergy()/GeV,
|
||||
// isOutRange);
|
||||
// return MicroscopicCrossSection;
|
||||
}
|
||||
|
||||
|
||||
G4double
|
||||
G4HadronCaptureProcess::
|
||||
GetMeanFreePathBasic(const G4DynamicParticle* aParticle,
|
||||
const G4Material* aMaterial)
|
||||
{
|
||||
// returns the mean free path in GEANT4 internal units
|
||||
|
||||
const G4ElementVector* theElementVector;
|
||||
const G4double* theAtomicNumDensityVector;
|
||||
|
||||
G4int J = aMaterial->GetIndex();
|
||||
|
||||
theElementVector = aMaterial->GetElementVector();
|
||||
theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector();
|
||||
|
||||
G4double sigma = 0.;
|
||||
|
||||
for (G4int i = 0; i < aMaterial->GetNumberOfElements(); i++) {
|
||||
sigma = sigma + theAtomicNumDensityVector[i] *
|
||||
GetMicroscopicCrossSection(aParticle, (*theElementVector)(i));
|
||||
}
|
||||
if (verboseLevel > 1)
|
||||
G4cout << "G4HadronCaptureProcess::GetMeanFreePathBasic: sigma="
|
||||
<< sigma << endl;
|
||||
if (sigma > 0.)
|
||||
return 1./sigma;
|
||||
else
|
||||
return DBL_MAX;
|
||||
}
|
||||
|
||||
G4bool
|
||||
G4HadronCaptureProcess::IsApplicable(const G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
return (aParticleType == *(G4Neutron::Neutron()));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4HadronCaptureProcess::
|
||||
DumpPhysicsTable(const G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronCaptureProcess: no cross section data set");
|
||||
return;
|
||||
}
|
||||
|
||||
theCrossSectionDataStore->DumpPhysicsTable(aParticleType);
|
||||
|
||||
// RWBoolean exists = thePhysicsDictionary.contains(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "DumpPhysicsTable: exists=" << exists << endl;
|
||||
// }
|
||||
// if (!exists) {
|
||||
// G4cout << "DumpPhysicsTable: no phyics table for " <<
|
||||
// aParticleType.GetParticleName() << endl;
|
||||
// return;
|
||||
// }
|
||||
// G4PhysicsTable* pt = thePhysicsDictionary.findValue(&aParticleType);
|
||||
//
|
||||
// const G4ElementTable* et = G4Element::GetElementTable();
|
||||
// G4int numOfElements = G4Element::GetNumberOfElements();
|
||||
// if (verboseLevel > 1)
|
||||
// G4cout << "DumpPhysicsTable: numOfElements=" << numOfElements << endl;
|
||||
// G4LPhysicsFreeVector* pv;
|
||||
// for (G4int J = 0; J < numOfElements; J++) {
|
||||
// G4cout << endl << "Capture cross section data for " <<
|
||||
// aParticleType.GetParticleName() << " on " <<
|
||||
// ((*et)[J])->GetName() << endl << endl;
|
||||
// G4cout << endl << "Ek(GeV) sigma(mb)" << endl << endl;
|
||||
// pv = (G4LPhysicsFreeVector*)(*thePhysicsTable)(J);
|
||||
// pv->DumpValues();
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,261 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4HadronElasticProcess.cc,v 2.2 1998/07/13 17:26:40 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// G4 Process: Low-energy Elastic scattering
|
||||
// F.W. Jones, TRIUMF, 04-JUN-96
|
||||
//
|
||||
// This is a prototype of a low-energy elastic scattering process.
|
||||
// At present it just uses some GEANT3.21/GHEISHA code, translated
|
||||
// to C++ methods, to calculate cross sections and scattering events.
|
||||
// Eventually these methods will be replaced by ones that are more
|
||||
// accurate in the low-energy region (< 3GeV).
|
||||
|
||||
// Modified by FWJ 03-DEC-96: uses G4LCrossSectionData
|
||||
// Modified by FWJ FEB-97: adapted to new tracking design
|
||||
// Modified by FWJ MAR-97: newer new tracking design
|
||||
//
|
||||
// Modified by FWJ 27-MAR-97: first version for Alpha release
|
||||
// 20-JUN-97 FWJ: added check for zero cross section
|
||||
//
|
||||
// 14-APR-98 FWJ: variant G4HadronElastic process for
|
||||
// G4CrossSectionDataSet/DataStore class design.
|
||||
// 29-JUN-98 FWJ: default data set G4HadronCrossSections
|
||||
//
|
||||
|
||||
|
||||
#include "G4HadronElasticProcess.hh"
|
||||
|
||||
// Can this be brought into the class?
|
||||
//unsigned G4HadronElasticProcessHashFun(const G4ParticleDefinition& aParticleDefinition) {
|
||||
// return aParticleDefinition.GetParticleName().hash();
|
||||
//}
|
||||
|
||||
G4HadronElasticProcess::
|
||||
G4HadronElasticProcess(const G4String& processName) :
|
||||
G4HadronicProcess(processName),
|
||||
// thePhysicsDictionary(G4HadronElasticProcessHashFun),
|
||||
theCrossSectionDataStore(new G4CrossSectionDataStore)
|
||||
{
|
||||
theCrossSectionDataStore->AddDataSet(new G4HadronElasticDataSet);
|
||||
aParticleChange.SetNumberOfSecondaries(1);
|
||||
}
|
||||
|
||||
G4HadronElasticProcess::~G4HadronElasticProcess()
|
||||
{
|
||||
aParticleChange.Clear();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4HadronElasticProcess::
|
||||
BuildPhysicsTable(const G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronElasticProcess: no cross section data set");
|
||||
return;
|
||||
}
|
||||
|
||||
theCrossSectionDataStore->BuildPhysicsTable(aParticleType);
|
||||
|
||||
// G4double LowEdgeEnergy, Value;
|
||||
// G4bool isOutRange;
|
||||
//
|
||||
// static const G4ElementTable* theElementTable;
|
||||
// theElementTable = G4Element::GetElementTable();
|
||||
// G4int numOfElements = G4Element::GetNumberOfElements();
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "BuildPhysicsTable: numOfElements " << numOfElements << endl;
|
||||
// G4cout << "BuildPhysicsTable: thePhysicsTable " << thePhysicsTable << endl;
|
||||
// G4cout << " for particle: " << aParticleType.GetParticleName() << " " <<
|
||||
// aParticleType.GetPDGEncoding() << endl;
|
||||
// }
|
||||
//
|
||||
// RWBoolean exists = thePhysicsDictionary.contains(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "exists=" << exists << endl;
|
||||
// }
|
||||
// if (exists) {
|
||||
// thePhysicsTable = thePhysicsDictionary.findValue(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " Retrieve tPT=" << thePhysicsTable << endl;
|
||||
// }
|
||||
// Remove any previous items from table
|
||||
// thePhysicsTable->clearAndDestroy();
|
||||
// thePhysicsTable->resize(numOfElements);
|
||||
// }
|
||||
// else {
|
||||
// thePhysicsTable = new G4PhysicsTable(numOfElements);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " make new tPT=" << thePhysicsTable << endl;
|
||||
// G4cout << " entries() = " << thePhysicsTable->entries() << endl;
|
||||
// }
|
||||
// thePhysicsDictionary.insertKeyAndValue(&aParticleType, thePhysicsTable);
|
||||
// }
|
||||
// Make a PhysicsVector for each element
|
||||
// for (G4int J = 0; J < numOfElements; J++) {
|
||||
// (*thePhysicsTable)(J) =
|
||||
// theCrossSectionData.MakePhysicsVector(*this,
|
||||
// aParticleType,
|
||||
// (*theElementTable)[J]);
|
||||
// if (verboseLevel > 1)
|
||||
// G4cout << " added PhysicsVector " << (*thePhysicsTable)(J) << endl;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
G4double
|
||||
G4HadronElasticProcess::GetMicroscopicCrossSection(
|
||||
const G4DynamicParticle* aParticle, const G4Element* anElement)
|
||||
{
|
||||
// gives the microscopic cross section in GEANT4 internal units
|
||||
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronElasticProcess: no cross section data Store");
|
||||
return DBL_MIN;
|
||||
}
|
||||
return theCrossSectionDataStore->GetCrossSection(aParticle, anElement);
|
||||
|
||||
// G4int J ;
|
||||
// G4bool isOutRange ;
|
||||
// G4double MicroscopicCrossSection ;
|
||||
//
|
||||
// RWBoolean exists =
|
||||
// thePhysicsDictionary.contains(aParticle->GetDefinition());
|
||||
// if (!exists) {
|
||||
// G4Exception("G4HadronElasticProcess::GetMicroscopicCrossSection: "
|
||||
// "no physics table for particle");
|
||||
// return G4double(0);
|
||||
// }
|
||||
// thePhysicsTable =
|
||||
// thePhysicsDictionary.findValue(aParticle->GetDefinition());
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " Retrieve tPT=" << thePhysicsTable << endl;
|
||||
// }
|
||||
//
|
||||
// J = anElement->GetIndex();
|
||||
// MicroscopicCrossSection = (*((*thePhysicsTable)(J))).
|
||||
// GetValue(aParticle->GetTotalMomentum()/GeV,
|
||||
// isOutRange);
|
||||
// return MicroscopicCrossSection;
|
||||
}
|
||||
|
||||
|
||||
G4double
|
||||
G4HadronElasticProcess::
|
||||
GetMeanFreePathBasic(const G4DynamicParticle* aParticle,
|
||||
const G4Material* aMaterial)
|
||||
{
|
||||
// Returns the mean free path in GEANT4 internal units.
|
||||
// The cross section data is stored for individual elements,
|
||||
// so the total macroscopic cross section is summed over the elements.
|
||||
// (Cf. G4MuPairProduction which uses the material's effective Z to
|
||||
// calculate directly the cross section.
|
||||
|
||||
const G4ElementVector* theElementVector;
|
||||
const G4double* theAtomicNumDensityVector;
|
||||
|
||||
G4int J = aMaterial->GetIndex();
|
||||
|
||||
theElementVector = aMaterial->GetElementVector();
|
||||
theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector();
|
||||
|
||||
G4double sigma = 0.;
|
||||
|
||||
for (G4int i = 0; i < aMaterial->GetNumberOfElements(); i++) {
|
||||
sigma = sigma + theAtomicNumDensityVector[i] *
|
||||
GetMicroscopicCrossSection(aParticle, (*theElementVector)(i));
|
||||
}
|
||||
if (verboseLevel > 1)
|
||||
G4cout << "G4HadronElasticProcess::GetMeanFreePathBasic: sigma="
|
||||
<< sigma << endl;
|
||||
if (sigma > 0.)
|
||||
return 1./sigma;
|
||||
else
|
||||
return DBL_MAX;
|
||||
}
|
||||
|
||||
|
||||
G4bool
|
||||
G4HadronElasticProcess::
|
||||
IsApplicable(const G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
return (aParticleType == *(G4PionPlus::PionPlus()) ||
|
||||
aParticleType == *(G4PionZero::PionZero()) ||
|
||||
aParticleType == *(G4PionMinus::PionMinus()) ||
|
||||
aParticleType == *(G4KaonPlus::KaonPlus()) ||
|
||||
aParticleType == *(G4KaonZeroShort::KaonZeroShort()) ||
|
||||
aParticleType == *(G4KaonZeroLong::KaonZeroLong()) ||
|
||||
aParticleType == *(G4KaonMinus::KaonMinus()) ||
|
||||
aParticleType == *(G4Proton::Proton()) ||
|
||||
aParticleType == *(G4AntiProton::AntiProton()) ||
|
||||
aParticleType == *(G4Neutron::Neutron()) ||
|
||||
aParticleType == *(G4AntiNeutron::AntiNeutron()) ||
|
||||
aParticleType == *(G4Lambda::Lambda()) ||
|
||||
aParticleType == *(G4AntiLambda::AntiLambda()) ||
|
||||
aParticleType == *(G4SigmaPlus::SigmaPlus()) ||
|
||||
aParticleType == *(G4SigmaZero::SigmaZero()) ||
|
||||
aParticleType == *(G4SigmaMinus::SigmaMinus()) ||
|
||||
aParticleType == *(G4AntiSigmaPlus::AntiSigmaPlus()) ||
|
||||
aParticleType == *(G4AntiSigmaZero::AntiSigmaZero()) ||
|
||||
aParticleType == *(G4AntiSigmaMinus::AntiSigmaMinus()) ||
|
||||
aParticleType == *(G4XiZero::XiZero()) ||
|
||||
aParticleType == *(G4XiMinus::XiMinus()) ||
|
||||
aParticleType == *(G4AntiXiZero::AntiXiZero()) ||
|
||||
aParticleType == *(G4AntiXiMinus::AntiXiMinus()) ||
|
||||
aParticleType == *(G4Deuteron::Deuteron()) ||
|
||||
aParticleType == *(G4Triton::Triton()) ||
|
||||
aParticleType == *(G4Alpha::Alpha()) ||
|
||||
aParticleType == *(G4OmegaMinus::OmegaMinus()) ||
|
||||
aParticleType == *(G4AntiOmegaMinus::AntiOmegaMinus()));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4HadronElasticProcess::
|
||||
DumpPhysicsTable(const G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronElasticProcess: no cross section data set");
|
||||
return;
|
||||
}
|
||||
|
||||
theCrossSectionDataStore->DumpPhysicsTable(aParticleType);
|
||||
|
||||
// RWBoolean exists = thePhysicsDictionary.contains(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "DumpPhysicsTable: exists=" << exists << endl;
|
||||
// }
|
||||
// if (!exists) {
|
||||
// G4cout << "DumpPhysicsTable: no phyics table for " <<
|
||||
// aParticleType.GetParticleName() << endl;
|
||||
// return;
|
||||
// }
|
||||
// G4PhysicsTable* pt = thePhysicsDictionary.findValue(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " found PhysicsTable pt=" << pt << endl;
|
||||
// }
|
||||
//
|
||||
// const G4ElementTable* et = G4Element::GetElementTable();
|
||||
// G4int numOfElements = G4Element::GetNumberOfElements();
|
||||
// if (verboseLevel > 1)
|
||||
// G4cout << "DumpPhysicsTable: numOfElements=" << numOfElements << endl;
|
||||
// G4LPhysicsFreeVector* pv;
|
||||
// for (G4int J = 0; J < numOfElements; J++) {
|
||||
// G4cout << endl << "Cross section data for " <<
|
||||
// aParticleType.GetParticleName() << " on " <<
|
||||
// ((*et)[J])->GetName() << endl << endl;
|
||||
// pv = (G4LPhysicsFreeVector*)(*thePhysicsTable)(J);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " found PhysicsVector pv=" << pv << endl;
|
||||
// }
|
||||
// pv->DumpValues();
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: G4HadronFissionProcess.cc,v 2.2 1998/07/13 17:26:41 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// F.W. Jones, TRIUMF, 03-DEC-96
|
||||
//
|
||||
// This is a prototype of a low-energy fission process.
|
||||
// Currently it is based on the GHEISHA routine FISSIO,
|
||||
// and conforms fairly closely to the original Fortran.
|
||||
// Note: energy is in MeV and momentum is in MeV/c.
|
||||
//
|
||||
// 27-MAR-97 F.W.Jones: first version for Alpha release
|
||||
// 20-JUN-97 F.W.Jones: added check for zero cross section
|
||||
//
|
||||
// 19-MAY-98 FWJ: variant G4HadronFission process for
|
||||
// G4CrossSectionDataSet/DataStore class design.
|
||||
// 29-JUN-98 FWJ: default data set G4HadronCrossSections
|
||||
//
|
||||
|
||||
|
||||
#include "G4HadronFissionProcess.hh"
|
||||
|
||||
//unsigned
|
||||
//G4HadronicFissionProcessHashFun(const G4ParticleDefinition& aParticleDefinition)
|
||||
//{
|
||||
// return aParticleDefinition.GetParticleName().hash();
|
||||
//}
|
||||
|
||||
G4HadronFissionProcess::
|
||||
G4HadronFissionProcess(const G4String& processName) :
|
||||
G4HadronicProcess(processName),
|
||||
// thePhysicsDictionary(G4HadronicFissionProcessHashFun)
|
||||
theCrossSectionDataStore(new G4CrossSectionDataStore)
|
||||
{
|
||||
theCrossSectionDataStore->AddDataSet(new G4HadronFissionDataSet);
|
||||
}
|
||||
|
||||
G4HadronFissionProcess::~G4HadronFissionProcess()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4HadronFissionProcess::BuildThePhysicsTable(G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronFissionProcess: no cross section data set");
|
||||
return;
|
||||
}
|
||||
|
||||
theCrossSectionDataStore->BuildPhysicsTable(aParticleType);
|
||||
|
||||
// G4double LowEdgeEnergy, Value;
|
||||
// G4bool isOutRange;
|
||||
//
|
||||
// static const G4ElementTable* theElementTable;
|
||||
// theElementTable = G4Element::GetElementTable();
|
||||
// G4int numOfElements = G4Element::GetNumberOfElements();
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "BuildThePhysicsTable: numOfElements " << numOfElements << endl;
|
||||
// G4cout << "BuildThePhysicsTable: thePhysicsTable " << thePhysicsTable << endl;
|
||||
// G4cout << " for particle: " << aParticleType.GetParticleName() << " " <<
|
||||
// aParticleType.GetPDGEncoding() << endl;
|
||||
// }
|
||||
// RWBoolean exists = thePhysicsDictionary.contains(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "exists=" << exists << endl;
|
||||
// }
|
||||
// if (exists) {
|
||||
// thePhysicsTable = thePhysicsDictionary.findValue(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " Retrieve tPT=" << thePhysicsTable << endl;
|
||||
// }
|
||||
//// Remove any previous items from table
|
||||
// thePhysicsTable->clearAndDestroy();
|
||||
// thePhysicsTable->resize(numOfElements);
|
||||
// }
|
||||
// else {
|
||||
// thePhysicsTable = new G4PhysicsTable(numOfElements);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " make new tPT=" << thePhysicsTable << endl;
|
||||
// G4cout << " entries() = " << thePhysicsTable->entries() << endl;
|
||||
// }
|
||||
// thePhysicsDictionary.insertKeyAndValue(&aParticleType, thePhysicsTable);
|
||||
// }
|
||||
//// Make a PhysicsVector for each element
|
||||
// for (G4int J = 0; J < numOfElements; J++) {
|
||||
// (*thePhysicsTable)(J) =
|
||||
// theCrossSectionData.MakePhysicsVector(*this,
|
||||
// aParticleType,
|
||||
// (*theElementTable)[J]);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
G4double
|
||||
G4HadronFissionProcess::GetMicroscopicCrossSection(const G4DynamicParticle* aParticle,
|
||||
const G4Element* anElement)
|
||||
{
|
||||
// gives the microscopic cross section in GEANT4 internal units
|
||||
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronFissionProcess: no cross section data Store");
|
||||
return DBL_MIN;
|
||||
}
|
||||
return theCrossSectionDataStore->GetCrossSection(aParticle, anElement);
|
||||
|
||||
// G4int J ;
|
||||
// G4bool isOutRange ;
|
||||
// G4double MicroscopicCrossSection ;
|
||||
//
|
||||
// RWBoolean exists =
|
||||
// thePhysicsDictionary.contains(aParticle->GetDefinition());
|
||||
// if (!exists) {
|
||||
// G4Exception("G4HadronFissionProcess::GetMicroscopicCrossSection: "
|
||||
// "no physics table for particle");
|
||||
// return G4double(0);
|
||||
// }
|
||||
// thePhysicsTable =
|
||||
// thePhysicsDictionary.findValue(aParticle->GetDefinition());
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << " Retrieve tPT=" << thePhysicsTable << endl;
|
||||
// }
|
||||
//
|
||||
// J = anElement->GetIndex();
|
||||
// MicroscopicCrossSection = (*((*thePhysicsTable)(J))).
|
||||
// GetValue(aParticle->GetKineticEnergy()/GeV,
|
||||
// isOutRange);
|
||||
// return MicroscopicCrossSection;
|
||||
}
|
||||
|
||||
|
||||
G4double
|
||||
G4HadronFissionProcess::GetMeanFreePathBasic(const G4DynamicParticle* aParticle,
|
||||
const G4Material* aMaterial)
|
||||
{
|
||||
// returns the mean free path in GEANT4 internal units
|
||||
|
||||
const G4ElementVector* theElementVector;
|
||||
const G4double* theAtomicNumDensityVector;
|
||||
|
||||
G4int J = aMaterial->GetIndex();
|
||||
|
||||
theElementVector = aMaterial->GetElementVector();
|
||||
theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector();
|
||||
|
||||
G4double sigma = 0.;
|
||||
|
||||
for (G4int i = 0; i < aMaterial->GetNumberOfElements(); i++) {
|
||||
sigma = sigma + theAtomicNumDensityVector[i] *
|
||||
GetMicroscopicCrossSection(aParticle, (*theElementVector)(i));
|
||||
}
|
||||
if (verboseLevel > 1)
|
||||
G4cout << "G4HadronFissionProcess::GetMeanFreePathBasic: sigma="
|
||||
<< sigma << endl;
|
||||
if (sigma > 0.)
|
||||
return 1./sigma;
|
||||
else
|
||||
return DBL_MAX;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
G4HadronFissionProcess::
|
||||
DumpPhysicsTable(const G4ParticleDefinition& aParticleType)
|
||||
{
|
||||
if (!theCrossSectionDataStore) {
|
||||
G4Exception("G4HadronFissionProcess: no cross section data set");
|
||||
return;
|
||||
}
|
||||
|
||||
theCrossSectionDataStore->DumpPhysicsTable(aParticleType);
|
||||
|
||||
// RWBoolean exists = thePhysicsDictionary.contains(&aParticleType);
|
||||
// if (verboseLevel > 1) {
|
||||
// G4cout << "DumpPhysicsTable: exists=" << exists << endl;
|
||||
// }
|
||||
// if (!exists) {
|
||||
// G4Exception("G4HadronFissionProcess::DumpPhysicsTable: "
|
||||
// "no physics table for particle");
|
||||
// return;
|
||||
// }
|
||||
// G4PhysicsTable* pt = thePhysicsDictionary.findValue(&aParticleType);
|
||||
//
|
||||
// const G4ElementTable* et = G4Element::GetElementTable();
|
||||
// G4int numOfElements = G4Element::GetNumberOfElements();
|
||||
// if (verboseLevel > 1)
|
||||
// G4cout << "DumpPhysicsTable: numOfElements=" << numOfElements << endl;
|
||||
// G4LPhysicsFreeVector* pv;
|
||||
// for (G4int J = 0; J < numOfElements; J++) {
|
||||
// G4cout << endl << "Fission cross section data for " <<
|
||||
// aParticleType.GetParticleName() << " on " <<
|
||||
// ((*et)[J])->GetName() << endl << endl;
|
||||
// G4cout << endl << "Ek(GeV) sigma(mb)" << endl << endl;
|
||||
// pv = (G4LPhysicsFreeVector*)(*thePhysicsTable)(J);
|
||||
// pv->DumpValues();
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user