Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ParticleHPData Class Reference

#include <G4ParticleHPData.hh>

Public Member Functions

 G4ParticleHPData (G4ParticleDefinition *projectile)
 
 ~G4ParticleHPData ()
 
G4PhysicsVectorMakePhysicsVector (const G4Element *thE, G4ParticleHPFissionData *theP)
 
G4PhysicsVectorMakePhysicsVector (const G4Element *thE, G4NeutronHPCaptureData *theP)
 
G4PhysicsVectorMakePhysicsVector (const G4Element *thE, G4ParticleHPElasticData *theP)
 
G4PhysicsVectorMakePhysicsVector (const G4Element *thE, G4ParticleHPInelasticData *theP)
 
G4PhysicsVectorDoPhysicsVector (G4ParticleHPVector *theVector)
 

Static Public Member Functions

static G4ParticleHPDataInstance (G4ParticleDefinition *projectile)
 

Detailed Description

Definition at line 46 of file G4ParticleHPData.hh.

Constructor & Destructor Documentation

◆ G4ParticleHPData()

G4ParticleHPData::G4ParticleHPData ( G4ParticleDefinition * projectile)
explicit

Definition at line 36 of file G4ParticleHPData.cc.

37 : theProjectile(projectile)
38{
39 // const char* theDataDirVariable;
40 if (projectile == G4Neutron::Neutron()) {
41 theDataDirVariable = "G4NEUTRONHPDATA";
42 }
43 else if (projectile == G4Proton::Proton()) {
44 theDataDirVariable = "G4PROTONHPDATA";
45 }
46 else if (projectile == G4Deuteron::Deuteron()) {
47 theDataDirVariable = "G4DEUTERONHPDATA";
48 }
49 else if (projectile == G4Triton::Triton()) {
50 theDataDirVariable = "G4TRITONHPDATA";
51 }
52 else if (projectile == G4He3::He3()) {
53 theDataDirVariable = "G4HE3HPDATA";
54 }
55 else if (projectile == G4Alpha::Alpha()) {
56 theDataDirVariable = "G4ALPHAHPDATA";
57 }
58
60 for (G4int i = 0; i < numEle; ++i) {
61 theData.push_back(new G4ParticleHPElementData);
62 }
63 for (G4int i = 0; i < numEle; ++i) {
64 (*theData[i]).Init((*(G4Element::GetElementTable()))[i], projectile, theDataDirVariable);
65 }
66}
int G4int
Definition G4Types.hh:85
static G4Alpha * Alpha()
Definition G4Alpha.cc:83
static G4Deuteron * Deuteron()
Definition G4Deuteron.cc:90
static G4ElementTable * GetElementTable()
Definition G4Element.cc:389
static size_t GetNumberOfElements()
Definition G4Element.cc:393
static G4He3 * He3()
Definition G4He3.cc:90
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
static G4Proton * Proton()
Definition G4Proton.cc:90
static G4Triton * Triton()
Definition G4Triton.cc:90
void Init()
Definition G4IonTable.cc:75

Referenced by Instance().

◆ ~G4ParticleHPData()

G4ParticleHPData::~G4ParticleHPData ( )

Definition at line 68 of file G4ParticleHPData.cc.

69{
70 for (auto it = theData.cbegin(); it != theData.cend(); ++it)
71 delete *it;
72 theData.clear();
73}

Member Function Documentation

◆ DoPhysicsVector()

G4PhysicsVector * G4ParticleHPData::DoPhysicsVector ( G4ParticleHPVector * theVector)

Definition at line 84 of file G4ParticleHPData.cc.

85{
86 G4int len = theVector->GetVectorLength();
87 if (len == 0) return new G4PhysicsFreeVector(0, 0., 0.);
88 G4double emin = theVector->GetX(0);
89 G4double emax = theVector->GetX(len - 1);
90
91 auto theResult = new G4PhysicsFreeVector(len, emin, emax);
92 for (G4int i = 0; i < len; ++i) {
93 theResult->PutValues(i, theVector->GetX(i), theVector->GetY(i));
94 }
95 return theResult;
96}
double G4double
Definition G4Types.hh:83
G4double GetY(G4double x)
G4double GetX(G4int i) const
G4int GetVectorLength() const

Referenced by MakePhysicsVector(), MakePhysicsVector(), MakePhysicsVector(), and MakePhysicsVector().

◆ Instance()

G4ParticleHPData * G4ParticleHPData::Instance ( G4ParticleDefinition * projectile)
static

Definition at line 75 of file G4ParticleHPData.cc.

76{
77 static G4ThreadLocal G4ParticleHPData* theCrossSectionData_G4MT_TLS_ = nullptr;
78 if (theCrossSectionData_G4MT_TLS_ == nullptr)
79 theCrossSectionData_G4MT_TLS_ = new G4ParticleHPData(projectile);
80 G4ParticleHPData& theCrossSectionData = *theCrossSectionData_G4MT_TLS_;
81 return &theCrossSectionData;
82}
G4ParticleHPData(G4ParticleDefinition *projectile)
#define G4ThreadLocal
Definition tls.hh:77

Referenced by G4NeutronHPCaptureData::BuildPhysicsTable(), G4ParticleHPElasticData::BuildPhysicsTable(), G4ParticleHPFissionData::BuildPhysicsTable(), and G4ParticleHPInelasticData::BuildPhysicsTable().

◆ MakePhysicsVector() [1/4]

G4PhysicsVector * G4ParticleHPData::MakePhysicsVector ( const G4Element * thE,
G4NeutronHPCaptureData * theP )
inline

Definition at line 59 of file G4ParticleHPData.hh.

60 {
61 auto idx = (G4int)thE->GetIndex();
62 if (numEle <= idx) addPhysicsVector();
63 return DoPhysicsVector((*theData[idx]).GetData(theP));
64 }
size_t GetIndex() const
Definition G4Element.hh:159
G4PhysicsVector * DoPhysicsVector(G4ParticleHPVector *theVector)

◆ MakePhysicsVector() [2/4]

G4PhysicsVector * G4ParticleHPData::MakePhysicsVector ( const G4Element * thE,
G4ParticleHPElasticData * theP )
inline

Definition at line 65 of file G4ParticleHPData.hh.

66 {
67 auto idx = (G4int)thE->GetIndex();
68 if (numEle <= idx) addPhysicsVector();
69 return DoPhysicsVector((*theData[idx]).GetData(theP));
70 }

◆ MakePhysicsVector() [3/4]

G4PhysicsVector * G4ParticleHPData::MakePhysicsVector ( const G4Element * thE,
G4ParticleHPFissionData * theP )
inline

Definition at line 53 of file G4ParticleHPData.hh.

54 {
55 auto idx = (G4int)thE->GetIndex();
56 if (numEle <= idx) addPhysicsVector();
57 return DoPhysicsVector((*theData[idx]).GetData(theP));
58 }

Referenced by G4NeutronHPCaptureData::BuildPhysicsTable(), G4ParticleHPElasticData::BuildPhysicsTable(), G4ParticleHPFissionData::BuildPhysicsTable(), and G4ParticleHPInelasticData::BuildPhysicsTable().

◆ MakePhysicsVector() [4/4]

G4PhysicsVector * G4ParticleHPData::MakePhysicsVector ( const G4Element * thE,
G4ParticleHPInelasticData * theP )
inline

Definition at line 71 of file G4ParticleHPData.hh.

72 {
73 auto idx = (G4int)thE->GetIndex();
74 if (numEle <= idx) addPhysicsVector();
75 return DoPhysicsVector((*theData[idx]).GetData(theP));
76 }

The documentation for this class was generated from the following files: