Geant4-11
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends
G4NuclearPolarizationStore Class Reference

#include <G4NuclearPolarizationStore.hh>

Public Member Functions

G4NuclearPolarizationFindOrBuild (G4int Z, G4int A, G4double Eexc)
 
void Register (G4NuclearPolarization *ptr)
 
void RemoveMe (G4NuclearPolarization *ptr)
 
 ~G4NuclearPolarizationStore ()
 

Static Public Member Functions

static G4NuclearPolarizationStoreGetInstance ()
 

Private Member Functions

 G4NuclearPolarizationStore ()
 

Private Attributes

G4NuclearPolarizationnuclist [maxNumStates]
 
G4int oldIdx
 

Static Private Attributes

static G4ThreadLocal G4NuclearPolarizationStoreinstance = nullptr
 

Friends

class G4ThreadLocalSingleton< G4NuclearPolarizationStore >
 

Detailed Description

Definition at line 45 of file G4NuclearPolarizationStore.hh.

Constructor & Destructor Documentation

◆ ~G4NuclearPolarizationStore()

G4NuclearPolarizationStore::~G4NuclearPolarizationStore ( )

Definition at line 51 of file G4NuclearPolarizationStore.cc.

52{
53 for(G4int i=0; i<maxNumStates; ++i) {
54 delete nuclist[i];
55 nuclist[i] = nullptr;
56 }
57}
const G4int maxNumStates
int G4int
Definition: G4Types.hh:85
G4NuclearPolarization * nuclist[maxNumStates]

References maxNumStates, and nuclist.

◆ G4NuclearPolarizationStore()

G4NuclearPolarizationStore::G4NuclearPolarizationStore ( )
private

Definition at line 45 of file G4NuclearPolarizationStore.cc.

46{
47 for(G4int i=0; i<maxNumStates; ++i) { nuclist[i] = nullptr; }
48 oldIdx = 0;
49}

References maxNumStates, nuclist, and oldIdx.

Member Function Documentation

◆ FindOrBuild()

G4NuclearPolarization * G4NuclearPolarizationStore::FindOrBuild ( G4int  Z,
G4int  A,
G4double  Eexc 
)

Definition at line 79 of file G4NuclearPolarizationStore.cc.

80{
81 static const G4double tolerance = 10.*CLHEP::eV;
82 for(G4int i=0; i<maxNumStates; ++i) {
83 auto nucp = nuclist[i];
84 if(nucp && Z == nucp->GetZ() && A == nucp->GetA() &&
85 std::abs(Eexc - nucp->GetExcitationEnergy()) < tolerance) {
86 return nucp;
87 }
88 }
90 Register(ptr);
91 return ptr;
92}
double G4double
Definition: G4Types.hh:83
const G4int Z[17]
const G4double A[17]
void Register(G4NuclearPolarization *ptr)
static constexpr double eV

References A, CLHEP::eV, maxNumStates, nuclist, Register(), and Z.

Referenced by G4PhotonEvaporation::EmittedFragment().

◆ GetInstance()

G4NuclearPolarizationStore * G4NuclearPolarizationStore::GetInstance ( )
static

Definition at line 36 of file G4NuclearPolarizationStore.cc.

37{
38 if(nullptr == instance) {
40 instance = inst.Instance();
41 }
42 return instance;
43}
static G4ThreadLocal G4NuclearPolarizationStore * instance

References G4ThreadLocalSingleton< T >::Instance(), and instance.

Referenced by G4PhotonEvaporation::EmittedFragment().

◆ Register()

void G4NuclearPolarizationStore::Register ( G4NuclearPolarization ptr)

Definition at line 59 of file G4NuclearPolarizationStore.cc.

60{
61 G4int idx = -1;
62 for(G4int i=0; i<maxNumStates; ++i) {
63 if(ptr == nuclist[i]) { return; }
64 if(nullptr == nuclist[i]) { idx = i; }
65 }
66 if(idx >= 0) {
67 nuclist[idx] = ptr;
68 return;
69 }
70 // delete oldest object
71 delete nuclist[oldIdx];
72 nuclist[oldIdx] = ptr;
73 // redefine oldIdx
74 ++oldIdx;
75 if(oldIdx >= maxNumStates) { oldIdx = 0; }
76}

References maxNumStates, nuclist, and oldIdx.

Referenced by FindOrBuild().

◆ RemoveMe()

void G4NuclearPolarizationStore::RemoveMe ( G4NuclearPolarization ptr)

Definition at line 94 of file G4NuclearPolarizationStore.cc.

95{
96 for(G4int i=0; i<maxNumStates; ++i) {
97 if(ptr == nuclist[i]) {
98 delete ptr;
99 nuclist[i] = nullptr;
100 // do we need redefine oldIdx?
101 if(i == oldIdx) {
102 for(G4int j=0; j<maxNumStates; ++j) {
103 if(j != i && nullptr != nuclist[j]) {
104 oldIdx = j;
105 return;
106 }
107 }
108 oldIdx = i;
109 }
110 return;
111 }
112 }
113}

References maxNumStates, nuclist, and oldIdx.

Referenced by G4PhotonEvaporation::EmittedFragment().

Friends And Related Function Documentation

◆ G4ThreadLocalSingleton< G4NuclearPolarizationStore >

Definition at line 43 of file G4NuclearPolarizationStore.hh.

Field Documentation

◆ instance

G4ThreadLocal G4NuclearPolarizationStore * G4NuclearPolarizationStore::instance = nullptr
staticprivate

Definition at line 69 of file G4NuclearPolarizationStore.hh.

Referenced by GetInstance().

◆ nuclist

G4NuclearPolarization* G4NuclearPolarizationStore::nuclist[maxNumStates]
private

◆ oldIdx

G4int G4NuclearPolarizationStore::oldIdx
private

Definition at line 72 of file G4NuclearPolarizationStore.hh.

Referenced by G4NuclearPolarizationStore(), Register(), and RemoveMe().


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