Files
geant4/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh
T
2016-06-01 15:25:35 +02:00

118 lines
3.4 KiB
C++

// 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