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

#include <G4ChemEquilibrium.hh>

Public Types

using MolType = const G4MolecularConfiguration*
 
using Reaction = const G4DNAMolecularReactionData*
 

Public Member Functions

 G4ChemEquilibrium (const G4int &type, const G4double &time)
 
 ~G4ChemEquilibrium ()=default
 
void Initialize ()
 
G4bool IsStatusChanged ()
 
void Reset ()
 
void SetVerbose (const G4int &verbose)
 
void SetGlobalTime (const G4double &time)
 
void SetEquilibrium (Reaction pReaction)
 
G4bool GetEquilibriumStatus () const
 
void PrintInfo () const
 

Detailed Description

Definition at line 38 of file G4ChemEquilibrium.hh.

Member Typedef Documentation

◆ MolType

Definition at line 41 of file G4ChemEquilibrium.hh.

◆ Reaction

Constructor & Destructor Documentation

◆ G4ChemEquilibrium()

G4ChemEquilibrium::G4ChemEquilibrium ( const G4int & type,
const G4double & time )
explicit

Definition at line 33 of file G4ChemEquilibrium.cc.

34 : fEquilibriumDuration(time), fRectionType(type)
35{}

◆ ~G4ChemEquilibrium()

G4ChemEquilibrium::~G4ChemEquilibrium ( )
default

Member Function Documentation

◆ GetEquilibriumStatus()

G4bool G4ChemEquilibrium::GetEquilibriumStatus ( ) const
inline

Definition at line 91 of file G4ChemEquilibrium.hh.

92 {
93 return fAddEquilibrium;
94 }

◆ Initialize()

void G4ChemEquilibrium::Initialize ( )

Definition at line 37 of file G4ChemEquilibrium.cc.

38{
39 MolType H2O =
41 MolType H3OpB =
43 MolType OHmB =
45 const auto& reactionList = G4DNAMolecularReactionTable::Instance()->
47 for(const auto& it : reactionList)
48 {
49 if(it->GetReactionType()==fRectionType)
50 {
51 if(it->GetReactant1() != H2O
52 && it->GetReactant1() != H3OpB
53 && it->GetReactant1() != OHmB)
54 {
55 fReactant1 = it->GetReactant1();
56 fReactantB1 = it->GetReactant2();
57 }else
58 {
59 fReactant1 = it->GetReactant2();
60 fReactantB1 = it->GetReactant1();
61 }
62 for(const auto& itt : *(it->GetProducts()))
63 {
64 if(itt != H3OpB
65 && itt != OHmB)
66 {
67 fReactant2 = itt;
68 }else
69 {
70 fReactantB2 = itt;
71 }
72 }
73 if(fVerbose > 1) {
74 G4cout << "Equilibrium processes(ID) " << fRectionType << " : " << fReactant1->GetName()
75 << " <=> " << fReactant2->GetName()
76 << " Time to Equilibrium : " << fEquilibriumDuration / CLHEP::us
77 << " Initial status : " << fAddEquilibrium << G4endl;
78 }
79 break ;
80 }
81 }
82}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
const G4MolecularConfiguration * MolType
static G4DNAMolecularReactionTable * Instance()
const G4String & GetName() const
G4MolecularConfiguration * GetConfiguration(const G4String &, bool mustExist=true)
static G4MoleculeTable * Instance()

◆ IsStatusChanged()

G4bool G4ChemEquilibrium::IsStatusChanged ( )
inline

Definition at line 46 of file G4ChemEquilibrium.hh.

47 {
48 if(fStatus == fAddEquilibrium){
49 return false;
50 }else
51 {
52 fStatus = fAddEquilibrium;
53 if(fVerbose > 0)
54 {
55 PrintInfo();
56 }
57 return true;
58 }
59 }

◆ PrintInfo()

void G4ChemEquilibrium::PrintInfo ( ) const

Definition at line 84 of file G4ChemEquilibrium.cc.

85{
86 G4cout<<"Equilibrium reactions : "<<fReactant1->GetName()
87 <<" + "<<fReactantB1->GetName()
88 <<" <=> "<<fReactant2->GetName()
89 <<" + "<<fReactantB2->GetName()
90 <<" Status : "<<fAddEquilibrium
91 <<" from "<<G4BestUnit(fEquilibriumTime,"Time")<<" to "
92 <<G4BestUnit(fEquilibriumTime + fEquilibriumDuration,"Time")<<G4endl;
93}
#define G4BestUnit(a, b)

Referenced by IsStatusChanged().

◆ Reset()

void G4ChemEquilibrium::Reset ( )
inline

Definition at line 61 of file G4ChemEquilibrium.hh.

62 {
63 fStatus = false;
64 fAddEquilibrium = false;
65 fEquilibriumTime = 0;
66 fGlobalTime = 0;
67 }

◆ SetEquilibrium()

void G4ChemEquilibrium::SetEquilibrium ( Reaction pReaction)

Definition at line 96 of file G4ChemEquilibrium.cc.

97{
98 if(pReaction->GetReactionType() != fRectionType)
99 {
100 std::vector<MolType> molVector;
101 molVector.push_back(pReaction->GetReactant1());
102 molVector.push_back(pReaction->GetReactant2());
103 const G4int nbProducts = pReaction->GetNbProducts();
104 if (nbProducts) {
105 for (G4int j = 0; j < nbProducts; ++j) {
106 auto product = pReaction->GetProduct(j);
107 molVector.push_back(product);
108 }
109 }
110 for(const auto& it : molVector)
111 {
112 if(it == fReactant1 || it == fReactant2 )
113 {
114 fAddEquilibrium = true;
115 fEquilibriumTime = fGlobalTime;
116 if(fVerbose >1) {
117 G4cout << "Reaction type : " << pReaction->GetReactionType() << " : "
118 << pReaction->GetReactant1()->GetName() << " + "
119 << pReaction->GetReactant2()->GetName() << G4endl;
120 G4cout << "SetEquilibrium : on " << fRectionType << " fEquilibriumTime : "
121 << G4BestUnit(fEquilibriumTime, "Time")<<G4endl;
122 }
123 break;
124 }
125 }
126 }
127}
int G4int
Definition G4Types.hh:85

◆ SetGlobalTime()

void G4ChemEquilibrium::SetGlobalTime ( const G4double & time)
inline

Definition at line 74 of file G4ChemEquilibrium.hh.

75 {
76 fGlobalTime = time;
77
78 if(fGlobalTime - fEquilibriumTime > fEquilibriumDuration && fAddEquilibrium)
79 {
80 fAddEquilibrium = false;
81 if(fVerbose) {
82 G4cout << "SetEquilibrium : off " << fRectionType
83 << " fGlobalTime : " << G4BestUnit(fGlobalTime, "Time")
84 << " fEquilibriumTime8 : " << G4BestUnit(fEquilibriumTime, "Time")
85 << " fAddEquilibrium : " << fAddEquilibrium << G4endl;
86 }
87 }
88 }

◆ SetVerbose()

void G4ChemEquilibrium::SetVerbose ( const G4int & verbose)
inline

Definition at line 69 of file G4ChemEquilibrium.hh.

70 {
71 fVerbose = verbose;
72 }

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