Import Geant4 1.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 15:28:20 +02:00
parent aaa409b6ee
commit ca1c8cb059
2995 changed files with 106830 additions and 299600 deletions
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4IVContinuousDiscreteProcess.hh,v 1.4 1999/04/30 08:01:53 urban Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4IVContinuousDiscreteProcess.hh,v 1.5 1999/11/07 17:11:42 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
// $Id:
// ------------------------------------------------------------
@@ -14,6 +14,11 @@
//
// For information related to this code contact:
// CERN, CN Division, ASD group
//
// Class Description
// Abstract class which defines the public behavior of
// discrete physics interactions using integral approach
//
// ------------------------------------------------------------
// New Physics scheme 8 Mar. 1997 H.Kurahige
// ------------------------------------------------------------
@@ -43,7 +48,8 @@ class G4IVContinuousDiscreteProcess : public G4VProcess
virtual ~G4IVContinuousDiscreteProcess();
virtual G4double PostStepGetPhysicalInteractionLength(
public: // with description
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition
@@ -79,7 +85,7 @@ class G4IVContinuousDiscreteProcess : public G4VProcess
const G4Step&
) {return 0;};
protected:
protected: // with description
virtual G4double GetContinuousStepLimit(const G4Track& aTrack,
G4double previousStepSize,
G4double currentMinimumStep,
@@ -90,7 +96,7 @@ class G4IVContinuousDiscreteProcess : public G4VProcess
// the arguments of AlongStepGPIL()
G4GPILSelection valueGPILSelection;
protected:
protected: // with description
//------------------------------------------------------
virtual void SubtractNumberOfInteractionLengthLeft(
G4double previousStepSize) ;
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4IVRestDiscreteProcess.hh,v 1.4 1999/04/30 08:01:55 urban Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4IVRestDiscreteProcess.hh,v 1.5 1999/11/07 17:11:42 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
// $Id:
// ------------------------------------------------------------
@@ -14,6 +14,11 @@
//
// For information related to this code contact:
// CERN, CN Division, ASD group
//
// Class Description
// Abstract class which defines the public behavior of
// rest + discrete physics interactions.
//
// ------------------------------------------------------------
// New Physics scheme 8 Mar. 1997 H.Kurahige
// ------------------------------------------------------------
@@ -32,14 +37,19 @@ class G4IVRestDiscreteProcess : public G4VProcess
{
// Abstract class which defines the public behavior of
// rest + discrete physics interactions.
public:
public: // with description
// constructors
G4IVRestDiscreteProcess(const G4String& ,
G4ProcessType aType = fNotDefined );
G4IVRestDiscreteProcess(G4IVRestDiscreteProcess &);
public:
virtual ~G4IVRestDiscreteProcess();
public: // with description
// GPIL and DoIt methods derived from G4VProcess
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
@@ -76,7 +86,7 @@ class G4IVRestDiscreteProcess : public G4VProcess
const G4Step&
) {return 0;}
protected:
protected:// with description
virtual void SubtractNumberOfInteractionLengthLeft(
G4double previousStepSize) ;
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ParticleTypes.hh,v 1.2 1999/04/13 09:44:52 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ParticleTypes.hh,v 1.3 1999/11/07 17:11:43 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -17,7 +17,9 @@
// History: first implementation, based on object model of
// 4-th April 1996, G.Cosmo
// ----------------- G4ParticleTypes.hh -----------------
// Files including all existing particle definitions GEANT4 classes
// Class Description
// Files including all existing particle definitions GEANT4 classes
//
// ****************************************************************
// Created, G.Cosmo, 19 September 1996
// Modified H.Kurashige 8 Mar. 1997
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcTblElement.hh,v 1.3 1999/06/01 14:52:35 gcosmo Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcTblElement.hh,v 1.4.2.1 1999/11/11 14:31:29 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -17,13 +17,16 @@
// History: first implementation, based on object model of
// 4th Aug 1998, H.Kurashige
// ------------------------------------------------------------
// Class Description
// This class is used by G4ProcessTable ONLY for booking !!!
//
#ifndef G4ProcTblElement_h
#define G4ProcTblElement_h 1
#include "globals.hh"
#include "G4ios.hh"
#include <rw/tpordvec.h>
#include "g4rw/tpordvec.h"
#include "G4ParticleDefinition.hh"
#include "G4VProcess.hh"
@@ -52,7 +55,7 @@ class G4ProcTblElement
// equal / unequal operator
protected:
typedef RWTPtrOrderedVector<G4ProcessManager> G4ProcMgrVector;
typedef G4RWTPtrOrderedVector<G4ProcessManager> G4ProcMgrVector;
inline G4int Length() const ;
inline void Insert(G4ProcessManager* aProcMgr);
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcessAttribute.hh,v 1.2 1999/04/13 09:44:57 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcessAttribute.hh,v 1.3 1999/11/07 17:11:43 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -17,6 +17,9 @@
// History: first implementation, based on object model of
// 2nd December 1997, H.Kurashige
// ---------------- G4ProcessAttribute -----------------
// Class Description
// This class is used by G4ProcessManager ONLY for booking !!!
//
// History:
// adds copy constructor 27 June 1998 H.Kurashige
// ------------------------------------------------------------
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcessManager.hh,v 1.3 1999/05/03 01:52:36 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcessManager.hh,v 1.5.2.1 1999/11/11 14:31:29 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -17,6 +17,26 @@
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
// ---------------- G4ProcessManager -----------------
// Class Description
// It collects all physics a particle can undertake as seven vectors.
// These vectors are
// one vector for all processes (called as "process List")
// two vectors for processes with AtRestGetPhysicalInteractionLength
// and AtRestDoIt
// two vectors for processes with AlongStepGetPhysicalInteractionLength
// and AlongStepDoIt
// two vectors for processes with PostStepGetPhysicalInteractionLength
// and PostStepDoIt
// The tracking will message three types of GetPhysicalInteractionLength
// in order to limit the Step and select the occurence of processes.
// It will message the corresponding DoIt() to apply the selected
// processes. In addition, the Tracking will limit the Step
// and select the occurence of the processes according to
// the shortest physical interaction length computed (except for
// processes at rest, for which the Tracking will select the
// occurence of the process which returns the shortest mean
// life-time from the GetPhysicalInteractionLength()).
//
// History:
// revised by G.Cosmo, 06 May 1996
// Added vector of processes at rest, 06 May 1996
@@ -32,7 +52,7 @@
#include "globals.hh"
#include "G4ios.hh"
#include <rw/tpordvec.h>
#include "g4rw/tpordvec.h"
#include "G4VProcess.hh"
#include "G4ProcessVector.hh"
@@ -65,25 +85,7 @@ enum G4ProcessVectorOrdering
class G4ProcessManager
{
// It collects all physics a particle can undertake as seven vectors.
// These vectors are
// one vector for all processes (called as "process List")
// two vectors for processes with AtRestGetPhysicalInteractionLength
// and AtRestDoIt
// two vectors for processes with AlongStepGetPhysicalInteractionLength
// and AlongStepDoIt
// two vectors for processes with PostStepGetPhysicalInteractionLength
// and PostStepDoIt
// The tracking will message three types of GetPhysicalInteractionLength
// in order to limit the Step and select the occurence of processes.
// It will message the corresponding DoIt() to apply the selected
// processes. In addition, the Tracking will limit the Step
// and select the occurence of the processes according to
// the shortest physical interaction length computed (except for
// processes at rest, for which the Tracking will select the
// occurence of the process which returns the shortest mean
// life-time from the GetPhysicalInteractionLength()).
public:
// copy constructor
G4ProcessManager(G4ProcessManager &right);
@@ -105,6 +107,7 @@ class G4ProcessManager
G4int operator==(const G4ProcessManager &right) const;
G4int operator!=(const G4ProcessManager &right) const;
public: // with description
G4ProcessVector* GetProcessList() const;
// Returns the address of the vector of all processes
@@ -248,6 +251,31 @@ class G4ProcessManager
// in order to inform Start/End of tracking for each track
// to the process manager and all physics processes
public:
enum {SizeOfProcVectorArray = 6};
private:
G4ProcessVector* theProcVector[SizeOfProcVectorArray];
// vector for processes with GetPhysicalInteractionLength/DoIt
typedef G4RWTPtrOrderedVector<G4ProcessAttribute> G4ProcessAttrVector;
G4ProcessAttrVector* theAttrVector;
// vector for process attribute
protected: // with description
G4int InsertAt(G4int position, G4VProcess* process, G4int ivec);
// insert process at position in theProcVector[ivec]
G4int RemoveAt(G4int position, G4VProcess* process, G4int ivec);
// remove process at position in theProcVector[ivec]
G4int FindInsertPosition(G4int ord, G4int ivec);
// find insert position according to ordering parameter
// in theProcVector[ivec]
G4int GetProcessVectorId(G4ProcessVectorDoItIndex idx,
G4ProcessVectorTypeIndex typ = typeGPIL) const;
private:
G4ProcessAttribute* GetAttribute(G4int index) const;
G4ProcessAttribute* GetAttribute(G4VProcess *aProcess) const;
@@ -265,198 +293,29 @@ class G4ProcessManager
G4ProcessVector* theProcessList;
// vector for all processes (called as "process List")
public:
enum {SizeOfProcVectorArray = 6};
private:
G4ProcessVector* theProcVector[SizeOfProcVectorArray];
// vector for processes with GetPhysicalInteractionLength/DoIt
typedef RWTPtrOrderedVector<G4ProcessAttribute> G4ProcessAttrVector;
G4ProcessAttrVector* theAttrVector;
// vector for process attribute
protected:
G4int InsertAt(G4int position, G4VProcess* process, G4int ivec);
// insert process at position in theProcVector[ivec]
G4int RemoveAt(G4int position, G4VProcess* process, G4int ivec);
// remove process at position in theProcVector[ivec]
G4int FindInsertPosition(G4int ord, G4int ivec);
// find insert position according to ordering parameter
// in theProcVector[ivec]
G4int GetProcessVectorId(G4ProcessVectorDoItIndex idx,
G4ProcessVectorTypeIndex typ = typeGPIL) const;
private:
private:
G4bool duringTracking;
void CreateGPILvectors();
void SetIndexToProcessVector(G4int ivec);
public:
public: // with description
void DumpInfo();
void SetVerboseLevel(G4int value);
G4int GetVerboseLevel() const;
protected:
G4int verboseLevel;
// controle flag for output message
// 0: Silent
// 1: Warning message
// 2: More
protected:
G4int verboseLevel;
private:
static G4ProcessManagerMessenger* fProcessManagerMessenger;
static G4int counterOfObjects;
};
#include "G4ProcessAttribute.hh"
// -----------------------------------------
// inlined function members implementation
// -----------------------------------------
inline
void G4ProcessManager::SetParticleType(const G4ParticleDefinition* aParticle)
{
theParticleType = aParticle;
}
inline
G4ProcessVector* G4ProcessManager::GetProcessList() const
{
return theProcessList;
}
inline
G4int G4ProcessManager::GetProcessListLength() const
{
return numberOfProcesses;
}
inline
G4int G4ProcessManager::GetProcessIndex(G4VProcess* aProcess) const
{
G4int idx = theProcessList->index(aProcess);
if (idx>=numberOfProcesses) idx = -1;
return idx;
}
inline
G4int G4ProcessManager::GetProcessVectorId(G4ProcessVectorDoItIndex idx,
G4ProcessVectorTypeIndex typ) const
{
if ( idx == idxAtRest ) {
if (typ == typeGPIL) { return 0; }
else { return 1; }
} else if ( idx == idxAlongStep ) {
if (typ == typeGPIL) { return 2; }
else { return 3; }
} else if ( idx == idxPostStep ) {
if (typ == typeGPIL) { return 4; }
else { return 5; }
} else {
return -1;
}
}
inline
G4ProcessVector* G4ProcessManager::GetProcessVector(
G4ProcessVectorDoItIndex idx,
G4ProcessVectorTypeIndex typ
) const
{
G4int ivec = GetProcessVectorId(idx, typ);
if ( ivec >=0 ) {
return theProcVector[ivec];
} else {
return 0;
}
}
inline
G4ProcessVector* G4ProcessManager::GetAtRestProcessVector(G4ProcessVectorTypeIndex typ) const
{
if (typ == typeGPIL) { return theProcVector[0]; }
else { return theProcVector[1]; }
}
inline
G4ProcessVector* G4ProcessManager::GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ) const
{
if (typ == typeGPIL) { return theProcVector[2]; }
else { return theProcVector[3]; }
}
inline
G4ProcessVector* G4ProcessManager::GetPostStepProcessVector(G4ProcessVectorTypeIndex typ) const
{
if (typ == typeGPIL) { return theProcVector[4]; }
else { return theProcVector[5]; }
}
inline
G4int G4ProcessManager::GetAtRestIndex(
G4VProcess* aProcess,
G4ProcessVectorTypeIndex typ
) const
{
return GetProcessVectorIndex(aProcess, idxAtRest, typ);
}
inline
G4int G4ProcessManager::GetAlongStepIndex(
G4VProcess* aProcess,
G4ProcessVectorTypeIndex typ
) const
{
return GetProcessVectorIndex(aProcess, idxAlongStep, typ);
}
inline
G4int G4ProcessManager::GetPostStepIndex(
G4VProcess* aProcess,
G4ProcessVectorTypeIndex typ
) const
{
return GetProcessVectorIndex(aProcess, idxPostStep, typ);
}
inline
G4int G4ProcessManager::AddRestProcess(G4VProcess *aProcess,G4int ord)
{
return AddProcess(aProcess, ord, ordInActive, ordInActive);
}
inline
G4int G4ProcessManager::AddContinuousProcess(G4VProcess *aProcess,G4int ord)
{
return AddProcess(aProcess, ordInActive, ord, ordInActive);
}
inline
G4int G4ProcessManager::AddDiscreteProcess(G4VProcess *aProcess,G4int ord)
{
return AddProcess(aProcess, ordInActive, ordInActive, ord);
}
inline
G4ParticleDefinition* G4ProcessManager::GetParticleType() const
{
return (G4ParticleDefinition* )theParticleType;
}
inline
void G4ProcessManager::SetVerboseLevel(G4int value)
{
verboseLevel = value;
}
inline
G4int G4ProcessManager::GetVerboseLevel() const
{
return verboseLevel;
}
#include "G4ProcessManager.icc"
#endif
@@ -0,0 +1,160 @@
// 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: G4ProcessManager.icc,v 1.1.4.1 1999/12/07 20:52:47 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
#include "G4ProcessAttribute.hh"
// -----------------------------------------
// inlined function members implementation
// -----------------------------------------
inline
void G4ProcessManager::SetParticleType(const G4ParticleDefinition* aParticle)
{
theParticleType = aParticle;
}
inline
G4ProcessVector* G4ProcessManager::GetProcessList() const
{
return theProcessList;
}
inline
G4int G4ProcessManager::GetProcessListLength() const
{
return numberOfProcesses;
}
inline
G4int G4ProcessManager::GetProcessIndex(G4VProcess* aProcess) const
{
G4int idx = theProcessList->index(aProcess);
if (idx>=numberOfProcesses) idx = -1;
return idx;
}
inline
G4int G4ProcessManager::GetProcessVectorId(G4ProcessVectorDoItIndex idx,
G4ProcessVectorTypeIndex typ) const
{
if ( idx == idxAtRest ) {
if (typ == typeGPIL) { return 0; }
else { return 1; }
} else if ( idx == idxAlongStep ) {
if (typ == typeGPIL) { return 2; }
else { return 3; }
} else if ( idx == idxPostStep ) {
if (typ == typeGPIL) { return 4; }
else { return 5; }
} else {
return -1;
}
}
inline
G4ProcessVector* G4ProcessManager::GetProcessVector(
G4ProcessVectorDoItIndex idx,
G4ProcessVectorTypeIndex typ
) const
{
G4int ivec = GetProcessVectorId(idx, typ);
if ( ivec >=0 ) {
return theProcVector[ivec];
} else {
return 0;
}
}
inline
G4ProcessVector* G4ProcessManager::GetAtRestProcessVector(G4ProcessVectorTypeIndex typ) const
{
if (typ == typeGPIL) { return theProcVector[0]; }
else { return theProcVector[1]; }
}
inline
G4ProcessVector* G4ProcessManager::GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ) const
{
if (typ == typeGPIL) { return theProcVector[2]; }
else { return theProcVector[3]; }
}
inline
G4ProcessVector* G4ProcessManager::GetPostStepProcessVector(G4ProcessVectorTypeIndex typ) const
{
if (typ == typeGPIL) { return theProcVector[4]; }
else { return theProcVector[5]; }
}
inline
G4int G4ProcessManager::GetAtRestIndex(
G4VProcess* aProcess,
G4ProcessVectorTypeIndex typ
) const
{
return GetProcessVectorIndex(aProcess, idxAtRest, typ);
}
inline
G4int G4ProcessManager::GetAlongStepIndex(
G4VProcess* aProcess,
G4ProcessVectorTypeIndex typ
) const
{
return GetProcessVectorIndex(aProcess, idxAlongStep, typ);
}
inline
G4int G4ProcessManager::GetPostStepIndex(
G4VProcess* aProcess,
G4ProcessVectorTypeIndex typ
) const
{
return GetProcessVectorIndex(aProcess, idxPostStep, typ);
}
inline
G4int G4ProcessManager::AddRestProcess(G4VProcess *aProcess,G4int ord)
{
return AddProcess(aProcess, ord, ordInActive, ordInActive);
}
inline
G4int G4ProcessManager::AddContinuousProcess(G4VProcess *aProcess,G4int ord)
{
return AddProcess(aProcess, ordInActive, ord, ordInActive);
}
inline
G4int G4ProcessManager::AddDiscreteProcess(G4VProcess *aProcess,G4int ord)
{
return AddProcess(aProcess, ordInActive, ordInActive, ord);
}
inline
G4ParticleDefinition* G4ProcessManager::GetParticleType() const
{
return (G4ParticleDefinition* )theParticleType;
}
inline
void G4ProcessManager::SetVerboseLevel(G4int value)
{
verboseLevel = value;
}
inline
G4int G4ProcessManager::GetVerboseLevel() const
{
return verboseLevel;
}
@@ -1,22 +1,22 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcessManagerMessenger.hh,v 1.2 1999/04/13 09:45:01 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcessManagerMessenger.hh,v 1.4 1999/11/07 17:11:44 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
//---------------------------------------------------------------
//
// G4ProcessManagerMessenger.hh
//
// Description:
// Class Description:
// This is a messenger class to interface to exchange information
// between ProcessManager and UI.
//
//-
// /particle/process/ Process Manager control commands.
// Commands :
// dump * dump process manager information.
@@ -52,17 +52,26 @@ class G4ProcessManagerMessenger: public G4UImessenger
{
public:
G4ProcessManagerMessenger(G4ParticleTable* pTable = 0);
// constructor
virtual ~G4ProcessManagerMessenger();
// destructor
public: // with description
virtual void SetNewValue(G4UIcommand * command,G4String newValues);
// set new value for command string
virtual void SetNewValue(G4UIcommand * command,G4String newValues);
virtual G4String GetCurrentValue(G4UIcommand * command);
// get current value for command string
private:
G4ProcessManagerMessenger(const G4ProcessManagerMessenger&){};
// hide copy constructor as private
private:
G4ParticleDefinition* SetCurrentParticle();
// set particle currently concerned
private:
G4ParticleTable* theParticleTable;
G4ParticleDefinition* currentParticle;
@@ -1,13 +1,13 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcessTable.hh,v 1.2 1999/04/13 09:45:02 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcessTable.hh,v 1.4.2.1 1999/11/11 14:31:30 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -18,6 +18,10 @@
// History: first implementation, based on object model of
// 4th Aug 1998, H.Kurashige
//
// Class Description
// This class is used for "book keeping" of all processes
// which are registered in all particles
//
// History:
// Added G4ProcessTableMesseneger 16 Aug. 1998, H.Kurashige
//
@@ -28,8 +32,8 @@
#include "globals.hh"
#include "G4ios.hh"
#include <rw/tpordvec.h>
#include <rw/tvordvec.h>
#include "g4rw/tpordvec.h"
#include "g4rw/tvordvec.h"
#include "G4ProcTblElement.hh"
#include "G4ProcessVector.hh"
@@ -37,7 +41,6 @@ class G4ProcessTableMessenger;
class G4ProcessTable
{
// this class is used by G4ProcessTable ONLY for booking !!!
public:
G4ProcessTable();
// Constructors
@@ -53,12 +56,15 @@ class G4ProcessTable
G4int operator!=(const G4ProcessTable &right) const;
// equal / unequal operator
public:
public: // with description
static G4ProcessTable* GetProcessTable();
// return the pointer to G4ProcessTable object
// G4ProcessTable is a "singleton" and can get its pointer by this function
G4int Length() const;
// return the number of processes in the table
G4int Insert(G4VProcess* aProcess, G4ProcessManager* aProcMgr);
G4int Remove(G4VProcess* aProcess, G4ProcessManager* aProcMgr);
// insert and remove methods
@@ -103,14 +109,19 @@ class G4ProcessTable
void SetProcessActivation( G4ProcessType processType,
G4ProcessManager* processManager,
G4bool fActive );
// These methods are provided to activate or inactivate processes
public:
typedef RWTPtrOrderedVector<G4ProcTblElement> G4ProcTableVector;
typedef RWTValOrderedVector<G4String> G4ProcNameVector;
typedef G4RWTPtrOrderedVector<G4ProcTblElement> G4ProcTableVector;
typedef G4RWTValOrderedVector<G4String> G4ProcNameVector;
public: // with description
G4ProcNameVector* GetNameList();
G4ProcTableVector* GetProcTableVector();
// return pointer of the list of process name
G4ProcTableVector* GetProcTableVector();
// return pointer of the vector of G4ProcTblElement
private:
G4ProcTableVector* Find( G4ProcTableVector* procTableVector,
const G4String& processName );
@@ -120,18 +131,26 @@ class G4ProcessTable
// which includes ProcTbleElement specified
G4ProcessVector* ExtractProcesses( G4ProcTableVector* procTableVector);
public:
// extract all process objects from the process table
public: // with description
void DumpInfo(G4VProcess* process, G4ParticleDefinition* particle=0);
public:
// dump out information of the process table
// second argument is used to specify processes designated by a particle
public: // with description
G4UImessenger* CreateMessenger();
void DeleteMessenger();
// These methods are used by RunManager to let the process table
// know the timing of creation/destructuion of messengers
public:
public: // with description
void SetVerboseLevel(G4int value);
G4int GetVerboseLevel() const;
// Set/Get controle flag for output message
// 0: Silent
// 1: Warning message
// 2: More
private:
@@ -149,9 +168,7 @@ class G4ProcessTable
private:
G4int verboseLevel;
// controle flag for output message
// 0: Silent
// 1: Warning message
// 2: More
};
inline
@@ -1,22 +1,22 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcessTableMessenger.hh,v 1.2 1999/04/13 09:45:05 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcessTableMessenger.hh,v 1.3 1999/11/07 17:11:45 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
//---------------------------------------------------------------
//
// G4ProcessTableMessenger.hh
//
// Description:
// Class Description:
// This is a messenger class to interface to exchange information
// between ProcessTable and UI.
//
//-
// /process/ Process Table control commands.
// Commands :
// list * :Dump process name registered.
@@ -50,6 +50,7 @@ class G4ProcessTableMessenger: public G4UImessenger
G4ProcessTableMessenger(G4ProcessTable* pTable);
virtual ~G4ProcessTableMessenger();
public: // with description
virtual void SetNewValue(G4UIcommand * command,G4String newValues);
virtual G4String GetCurrentValue(G4UIcommand * command);
@@ -1,19 +1,19 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcessType.hh,v 1.2 1999/04/13 09:45:06 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcessType.hh,v 1.3 1999/11/07 17:11:45 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
//---------------------------------------------------------------
//
// G4ProcessType.hh
//
// Description:
// Class Description:
// This is an enumerator to define process type
//
//
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4ProcessVector.hh,v 1.2 1999/04/13 09:45:07 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4ProcessVector.hh,v 1.3.2.1 1999/11/11 14:31:30 gunter Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -16,6 +16,10 @@
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
//
// Class Description
// This class is a container for pointers to physics process objects. Its
// functionality is derived from G4RWTPtrOrderedVector<T>.
// ------------------------------------------------------------
#ifndef G4ProcessVector_h
@@ -23,19 +27,19 @@
#include "globals.hh"
#include "G4ios.hh"
#include <rw/tpordvec.h>
#include "g4rw/tpordvec.h"
#include "G4VProcess.hh"
class G4ProcessVector : public RWTPtrOrderedVector<G4VProcess>
class G4ProcessVector : public G4RWTPtrOrderedVector<G4VProcess>
{
// Is a container for pointers to physics process objects. Its
// functionality is derived from RWTPtrOrderedVector<T>.
// functionality is derived from G4RWTPtrOrderedVector<T>.
public:
G4ProcessVector(size_t capac=RWDEFAULT_CAPACITY)
: RWTPtrOrderedVector<G4VProcess>(capac) {;}
G4ProcessVector(size_t capac=G4RWDEFAULT_CAPACITY)
: G4RWTPtrOrderedVector<G4VProcess>(capac) {;}
// Constructor.
virtual ~G4ProcessVector() {;}
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VContinuousDiscreteProcess.hh,v 1.2 1999/04/13 09:45:09 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VContinuousDiscreteProcess.hh,v 1.3 1999/11/07 17:11:46 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -14,6 +14,11 @@
//
// For information related to this code contact:
// CERN, CN Division, ASD group
// Abstract class which defines the public behavior of
//
// Class Description
// discrete physics interactions.
//
// ------------------------------------------------------------
// New Physics scheme 8 Mar. 1997 H.Kurahige
// ------------------------------------------------------------
@@ -43,6 +48,7 @@ class G4VContinuousDiscreteProcess : public G4VProcess
virtual ~G4VContinuousDiscreteProcess();
public :// with description
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
@@ -78,7 +84,8 @@ class G4VContinuousDiscreteProcess : public G4VProcess
const G4Track& ,
const G4Step&
) {return 0;};
protected:
protected:// with description
virtual G4double GetMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition
@@ -86,7 +93,7 @@ class G4VContinuousDiscreteProcess : public G4VProcess
// Calculates from the macroscopic cross section a mean
// free path, the value is returned in units of distance.
protected:
protected:// with description
virtual G4double GetContinuousStepLimit(const G4Track& aTrack,
G4double previousStepSize,
G4double currentMinimumStep,
@@ -97,7 +104,7 @@ class G4VContinuousDiscreteProcess : public G4VProcess
// the arguments of AlongStepGPIL()
G4GPILSelection valueGPILSelection;
protected:
protected:// with description
// these two methods are set/get methods for valueGPILSelection
void SetGPILSelection(G4GPILSelection selection)
{ valueGPILSelection = selection;};
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VContinuousProcess.hh,v 1.2 1999/04/13 09:45:10 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VContinuousProcess.hh,v 1.3 1999/11/07 17:11:46 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -17,6 +17,11 @@
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
// add G4VContinuousProcess(const G4String&) 24 Jul 1996, Hisaya kurashige
//
// Class Description
// Abstract class which defines the public behavior of
// Continuous physics interactions.
//
// ------------------------------------------------------------
// New Physics scheme 18 Dec. 1996 H.Kurahige
// ------------------------------------------------------------
@@ -48,6 +53,7 @@ class G4VContinuousProcess : public G4VProcess
virtual ~G4VContinuousProcess();
public: // with description
virtual G4double AlongStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
@@ -84,20 +90,21 @@ class G4VContinuousProcess : public G4VProcess
const G4Step&
) {return 0;};
protected:
protected: // with description
virtual G4double GetContinuousStepLimit(const G4Track& aTrack,
G4double previousStepSize,
G4double currentMinimumStep,
G4double& currentSafety
)=0;
// This pure virtual function is used to calculate step limit
// for AlongStep in the derived processes
private:
// this is the returnd value of G4GPILSelection in
// the arguments of AlongStepGPIL()
G4GPILSelection valueGPILSelection;
protected:
// these two methods are set/get methods for valueGPILSelection
protected: // with description
// these two methods are set/get methods for valueGPILSelection
void SetGPILSelection(G4GPILSelection selection)
{ valueGPILSelection = selection;};
@@ -1,13 +1,13 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VDiscreteProcess.hh,v 1.2 1999/04/13 09:45:11 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VDiscreteProcess.hh,v 1.3 1999/11/07 17:11:46 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -18,6 +18,11 @@
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
// add G4VDiscreteProcess(const G4String&) 24 Jul 1996, Hisaya kurashige
//
// Class Description
// Abstract class which defines the public behavior of
// discrete physics interactions.
//
// ------------------------------------------------------------
// New Physics scheme 18 Dec. 1996 H.Kurahige
// ------------------------------------------------------------
@@ -48,6 +53,7 @@ class G4VDiscreteProcess : public G4VProcess
virtual ~G4VDiscreteProcess();
public :// with description
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
@@ -84,7 +90,7 @@ class G4VDiscreteProcess : public G4VProcess
const G4Step&
) {return 0;};
protected:
protected:// with description
virtual G4double GetMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VProcess.hh,v 1.3 1999/04/14 10:50:42 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VProcess.hh,v 1.5 1999/11/07 17:11:47 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -16,6 +16,12 @@
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
//
// Class Description
// This class is the virtual class for physics process objects.
// It defines public methods which describe the behavior of
// a physics process.
//
// ------------------------------------------------------------
// New Physics scheme 18 Dec. 1996 H.Kurahige
// ------------------------------------------------------------
@@ -55,7 +61,7 @@ class G4VProcess
// G4VProcess G4VProcess();
G4VProcess & operator=(const G4VProcess &right);
public:
public: // with description
// constructor requires the process name and type
G4VProcess(const G4String& aName = "NoName",
G4ProcessType aType = fNotDefined );
@@ -64,11 +70,18 @@ class G4VProcess
// physics table (0 pointer is assigned)
G4VProcess(G4VProcess &right);
public:
// destructor
virtual ~G4VProcess();
// equal opperators
G4int operator==(const G4VProcess &right) const;
G4int operator!=(const G4VProcess &right) const;
public: // with description
////////////////////////////
// DoIt /////////////////
///////////////////////////
virtual G4VParticleChange* PostStepDoIt(
const G4Track& track,
const G4Step& stepData
@@ -92,6 +105,9 @@ class G4VProcess
// const G4Step& stepData:
// reference to the current G4Step information
//////////////////////////
// GPIL //////////////
/////////////////////////
virtual G4double AlongStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
@@ -136,9 +152,12 @@ class G4VProcess
// this value is used for transformation of
// true path length to geometrical path length
//////////////////////
virtual G4bool IsApplicable(const G4ParticleDefinition&){return true;};
// Returns true if this process object is applicable to
// the particle type
// Process will not be registered to a particle if IsApplicable is false
virtual void BuildPhysicsTable(const G4ParticleDefinition&){};
// Messaged by the Particle definition (via the Process manager)
@@ -153,6 +172,7 @@ class G4VProcess
// private void BuildThePhysicsTable()
// function. Not another BuildPhysicsTable, please.
////////////////////////////
const G4String& GetProcessName() const;
// Returns the name of the process.
@@ -188,11 +208,11 @@ class G4VProcess
G4double currentInteractionLength;
// The InteractionLength in the current material
public:
public: // with description
virtual void ResetNumberOfInteractionLengthLeft();
// reset (determine the value of)NumberOfInteractionLengthLeft
protected:
protected: // with description
virtual void SubtractNumberOfInteractionLengthLeft(
G4double previousStepSize
);
@@ -211,19 +231,22 @@ class G4VProcess
G4ProcessType theProcessType;
// The type of the process
public:
public: // with description
virtual void DumpInfo() const;
public:
// dump out process information
public: // with description
void SetVerboseLevel(G4int value);
G4int GetVerboseLevel() const;
// set/get controle flag for output message
// 0: Silent
// 1: Warning message
// 2: More
protected:
G4int verboseLevel;
// controle flag for output message
// 0: Silent
// 1: Warning message
// 2: More
};
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VRestContinuousDiscreteProcess.hh,v 1.2 1999/04/13 09:45:14 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VRestContinuousDiscreteProcess.hh,v 1.3 1999/11/07 17:11:47 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -14,6 +14,11 @@
//
// For information related to this code contact:
// CERN, CN Division, ASD group
//
// Class Description
// Abstract class which defines the public behavior of
// continuous and discrete physics interactions.
//
// ------------------------------------------------------------
// New Physics scheme 8 Mar. 1997 H.Kurahige
// ------------------------------------------------------------
@@ -44,6 +49,8 @@ class G4VRestContinuousDiscreteProcess : public G4VProcess
virtual ~G4VRestContinuousDiscreteProcess();
public :// with description
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
@@ -78,7 +85,7 @@ class G4VRestContinuousDiscreteProcess : public G4VProcess
const G4Step&
);
protected:
protected: // with description
virtual G4double GetMeanLifeTime(const G4Track& aTrack,G4ForceCondition* condition)=0;
// Calculates the mean life-time (i.e. for decays) of the
// particle at rest due to the occurence of the given process,
@@ -96,15 +103,14 @@ class G4VRestContinuousDiscreteProcess : public G4VProcess
// the arguments of AlongStepGPIL()
G4GPILSelection valueGPILSelection;
protected:
protected: // with description
// these two methods are set/get methods for valueGPILSelection
// these two methods are set/get methods for valueGPILSelection
void SetGPILSelection(G4GPILSelection selection)
void SetGPILSelection(G4GPILSelection selection)
{ valueGPILSelection = selection;};
G4GPILSelection GetGPILSelection() const{return valueGPILSelection;};
protected:
protected: // with description
virtual G4double GetMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VRestContinuousProcess.hh,v 1.2 1999/04/13 09:45:15 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VRestContinuousProcess.hh,v 1.3 1999/11/07 17:11:47 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -14,6 +14,11 @@
//
// For information related to this code contact:
// CERN, CN Division, ASD group
//
// Class Description
// Abstract class which defines the public behavior of
// discrete physics interactions.
//
// ------------------------------------------------------------
// New Physics scheme 8 Mar. 1997 H.Kurahige
// ------------------------------------------------------------
@@ -44,6 +49,8 @@ class G4VRestContinuousProcess : public G4VProcess
virtual ~G4VRestContinuousProcess();
public: // with description
virtual G4double AtRestGetPhysicalInteractionLength(
const G4Track& ,
G4ForceCondition*
@@ -79,25 +86,29 @@ class G4VRestContinuousProcess : public G4VProcess
const G4Track& ,
const G4Step&
) {return 0;};
protected:
protected: // with description
virtual G4double GetContinuousStepLimit(const G4Track& aTrack,
G4double previousStepSize,
G4double currentMinimumStep,
G4double& currentSafety
)=0;
// This pure virtual function is used to calculate step limit
// for AlongStep in the derived processes
private:
// this is the returnd value of G4GPILSelection in
// the arguments of AlongStepGPIL()
G4GPILSelection valueGPILSelection;
protected:
protected:// with description
// these two methods are set/get methods for valueGPILSelection
void SetGPILSelection(G4GPILSelection selection)
{ valueGPILSelection = selection;};
G4GPILSelection GetGPILSelection() const{return valueGPILSelection;};
protected:
protected: // with description
virtual G4double GetMeanLifeTime(const G4Track& aTrack,G4ForceCondition* condition)=0;
// Calculates the mean life-time (i.e. for decays) of the
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VRestDiscreteProcess.hh,v 1.2 1999/04/13 09:45:16 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VRestDiscreteProcess.hh,v 1.3 1999/11/07 17:11:48 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -14,6 +14,11 @@
//
// For information related to this code contact:
// CERN, CN Division, ASD group
//
// Class Description
// Abstract class which defines the public behavior of
// rest + discrete physics interactions.
//
// ------------------------------------------------------------
// New Physics scheme 8 Mar. 1997 H.Kurahige
// ------------------------------------------------------------
@@ -44,6 +49,7 @@ class G4VRestDiscreteProcess : public G4VProcess
virtual ~G4VRestDiscreteProcess();
public :// with description
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
@@ -80,7 +86,7 @@ class G4VRestDiscreteProcess : public G4VProcess
const G4Step&
) {return 0;};
protected:
protected:// with description
virtual G4double GetMeanFreePath(const G4Track& aTrack,
G4double previousStepSize,
G4ForceCondition* condition
@@ -1,12 +1,12 @@
// This code implementation is the intellectual property of
// the RD44 GEANT4 collaboration.
// 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: G4VRestProcess.hh,v 1.2 1999/04/13 09:45:17 kurasige Exp $
// GEANT4 tag $Name: geant4-00-01 $
// $Id: G4VRestProcess.hh,v 1.3 1999/11/07 17:11:48 kurasige Exp $
// GEANT4 tag $Name: geant4-01-00 $
//
//
// ------------------------------------------------------------
@@ -16,6 +16,11 @@
// CERN, CN Division, ASD group
// History: first implementation, based on object model of
// 2nd December 1995, G.Cosmo
//
// Class Description
// Abstract class which defines the public behavior of
// physics interactions at rest.
//
// ------------------------------------------------------------
// New Physics scheme 18 Dec. 1996 H.Kurahige
// ------------------------------------------------------------
@@ -48,6 +53,7 @@ class G4VRestProcess : public G4VProcess
virtual ~G4VRestProcess();
public: // with description
virtual G4double AtRestGetPhysicalInteractionLength(
const G4Track& track,
G4ForceCondition* condition
@@ -84,7 +90,7 @@ class G4VRestProcess : public G4VProcess
const G4Step&
) {return 0;};
protected:
protected: // with description
virtual G4double GetMeanLifeTime(const G4Track& aTrack,G4ForceCondition* condition)=0;
// Calculates the mean life-time (i.e. for decays) of the