Geant4-11
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes
G4MolecularConfiguration Class Reference

#include <G4MolecularConfiguration.hh>

Data Structures

class  G4MolecularConfigurationManager
 

Public Types

typedef std::function< double(const G4Material *, double, const G4MolecularConfiguration *)> G4DiffCoeffParam
 

Public Member Functions

void AddDiffCoeffParameterization (const G4DiffCoeffParam &)
 
G4MolecularConfiguration * AddElectron (G4int orbit, G4int n=1) const
 
G4MolecularConfiguration * ExciteMolecule (G4int) const
 
void Finalize ()
 
G4int GetAtomsNumber () const
 
G4int GetCharge () const
 
G4double GetDecayTime () const
 
const G4MoleculeDefinition * GetDefinition () const
 
G4double GetDiffusionCoefficient () const
 
G4double GetDiffusionCoefficient (const G4Material *, double temperature) const
 
const std::vector< const G4MolecularDissociationChannel * > * GetDissociationChannels () const
 
const G4ElectronOccupancy * GetElectronOccupancy () const
 
G4int GetFakeParticleID () const
 
const G4String & GetFormatedName () const
 
const G4String & GetLabel () const
 
G4double GetMass () const
 
G4int GetMoleculeID () const
 
const G4String & GetName () const
 
G4double GetNbElectrons () const
 
const G4String & GetUserID () const
 
G4double GetVanDerVaalsRadius () const
 
G4MolecularConfiguration * IonizeMolecule (G4int) const
 
G4MolecularConfiguration * MoveOneElectron (G4int, G4int) const
 
void PrintState () const
 
G4MolecularConfiguration * RemoveElectron (G4int, G4int number=1) const
 
void Serialize (std::ostream &)
 
void SetDecayTime (G4double)
 
void SetDiffusionCoefficient (G4double)
 
void SetLabel (const G4String &)
 
void SetMass (G4double)
 
void SetVanDerVaalsRadius (G4double)
 
void Unserialize (std::istream &)
 

Static Public Member Functions

static G4MolecularConfiguration * CreateMolecularConfiguration (const G4String &userIdentifier, const G4MoleculeDefinition *, bool &wasAlreadyCreated)
 
static G4MolecularConfiguration * CreateMolecularConfiguration (const G4String &userIdentifier, const G4MoleculeDefinition *, const G4String &label, bool &wasAlreadyCreated)
 
static G4MolecularConfiguration * CreateMolecularConfiguration (const G4String &userIdentifier, const G4MoleculeDefinition *, const G4String &label, const G4ElectronOccupancy &eOcc, bool &wasAlreadyCreated)
 
static G4MolecularConfiguration * CreateMolecularConfiguration (const G4String &userIdentifier, const G4MoleculeDefinition *, int charge, const G4String &label, bool &wasAlreadyCreated)
 
static void DeleteManager ()
 
static double DiffCoeffWater (double temperature_K)
 
static void FinalizeAll ()
 
static G4double GetGlobalTemperature ()
 
static G4MolecularConfiguration * GetMolecularConfiguration (const G4MoleculeDefinition *, const G4String &label)
 
static G4MolecularConfiguration * GetMolecularConfiguration (const G4String &userID)
 
static G4MolecularConfiguration * GetMolecularConfiguration (int moleculeID)
 
static int GetNumberOfSpecies ()
 
static G4MolecularConfiguration * GetOrCreateMolecularConfiguration (const G4MoleculeDefinition *)
 
static G4MolecularConfiguration * GetOrCreateMolecularConfiguration (const G4MoleculeDefinition *, const G4ElectronOccupancy &eOcc)
 
static G4MolecularConfiguration * GetOrCreateMolecularConfiguration (const G4MoleculeDefinition *, int charge)
 
static std::map< G4String, G4MolecularConfiguration * > & GetUserIDTable ()
 
static G4MolecularConfiguration * Load (std::istream &)
 
static void SetGlobalTemperature (G4double)
 

Protected Member Functions

G4MolecularConfiguration * ChangeConfiguration (const G4ElectronOccupancy &newElectronOccupancy) const
 
G4MolecularConfiguration * ChangeConfiguration (int charge) const
 
void CheckElectronOccupancy (const char *line) const
 
void CreateDefaultDiffCoeffParam ()
 
 G4MolecularConfiguration (const G4MolecularConfiguration &)
 
 G4MolecularConfiguration (const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
 
 G4MolecularConfiguration (const G4MoleculeDefinition *, const G4String &label, int charge)
 
 G4MolecularConfiguration (const G4MoleculeDefinition *, int charge)
 
 G4MolecularConfiguration (std::istream &)
 
void MakeExceptionIfFinalized ()
 
G4MolecularConfiguration & operator= (G4MolecularConfiguration &right)
 
void SetUserID (const G4String &userID)
 
 ~G4MolecularConfiguration ()
 

Static Protected Member Functions

static G4MolecularConfigurationManager * GetManager ()
 
static double ReturnDefaultDiffCoeff (const G4Material *, double, const G4MolecularConfiguration *molConf)
 
static void ScaleAllDiffusionCoefficientsOnWater (double temperature_K)
 

Protected Attributes

G4DiffCoeffParam fDiffParam
 
G4int fDynCharge
 
G4double fDynDecayTime
 
G4double fDynDiffusionCoefficient
 
G4double fDynMass
 
G4double fDynVanDerVaalsRadius
 
const G4ElectronOccupancy * fElectronOccupancy
 
G4String fFormatedName
 
G4bool fIsFinalized
 
G4String * fLabel
 
const G4MoleculeDefinition * fMoleculeDefinition
 
G4int fMoleculeID
 
G4String fName
 
G4String fUserIdentifier
 

Static Protected Attributes

static G4MolecularConfigurationManager * fgManager = 0
 
static double fgTemperature = 298
 

Detailed Description

The pointer G4MolecularConfiguration will be shared by all the molecules having the same molecule definition and the same electron occupancy BE CAREFUlL !!! : If you change the mass for instance of a OH^-, this will affect all the OH^- molecule diffusing around

Definition at line 98 of file G4MolecularConfiguration.hh.

Member Typedef Documentation

◆ G4DiffCoeffParam

Definition at line 104 of file G4MolecularConfiguration.hh.

Constructor & Destructor Documentation

◆ G4MolecularConfiguration() [1/5]

G4MolecularConfiguration::G4MolecularConfiguration ( const G4MoleculeDefinition *  moleculeDef,
const G4ElectronOccupancy &  elecOcc,
const G4String &  label = "" 
)
protected

Definition at line 436 of file G4MolecularConfiguration.cc.

440{
441 fMoleculeDefinition = moleculeDef;
442
443 fMoleculeID = GetManager()->Insert(moleculeDef,
444 elecOcc,
445 this);
447 elecOcc);
448
449 /*
450 fgManager->fTable[fMoleculeDefinition][elecOcc] = this;
451 std::map<G4ElectronOccupancy, G4MolecularConfiguration*, comparator>::iterator it ;
452 it = fgManager->fTable[moleculeDef].find(elecOcc);
453 fElectronOccupancy = &(it->first);
454 */
455
458 + moleculeDef->GetCharge();
460
464
466 fName += "^";
468
470 fFormatedName += "^";
471 fFormatedName += "{";
473 fFormatedName += "}";
474
475 fLabel = 0; // let it here
476
477 if(label != "")
478 {
479 SetLabel(label);
480 }
481
483
484 fIsFinalized = false;
485}
G4int GetTotalOccupancy() const
const G4ElectronOccupancy * FindCommonElectronOccupancy(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)
G4int Insert(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc, G4MolecularConfiguration *molConf)
static G4MolecularConfigurationManager * GetManager()
const G4ElectronOccupancy * fElectronOccupancy
static double ReturnDefaultDiffCoeff(const G4Material *, double, const G4MolecularConfiguration *molConf)
const G4MoleculeDefinition * fMoleculeDefinition
const G4String & GetName() const
const G4String & GetFormatedName() const
G4double GetVanDerVaalsRadius() const
G4double GetDecayTime() const
G4double GetDiffusionCoefficient() const
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:445

References G4UIcommand::ConvertToString(), fDiffParam, fDynCharge, fDynDecayTime, fDynDiffusionCoefficient, fDynMass, fDynVanDerVaalsRadius, fElectronOccupancy, fFormatedName, G4MolecularConfiguration::G4MolecularConfigurationManager::FindCommonElectronOccupancy(), fIsFinalized, fLabel, fMoleculeDefinition, fMoleculeID, fName, G4MoleculeDefinition::GetCharge(), G4MoleculeDefinition::GetDecayTime(), G4MoleculeDefinition::GetDiffusionCoefficient(), G4MoleculeDefinition::GetFormatedName(), GetManager(), G4MoleculeDefinition::GetMass(), G4MoleculeDefinition::GetName(), G4MoleculeDefinition::GetNbElectrons(), G4ElectronOccupancy::GetTotalOccupancy(), G4MoleculeDefinition::GetVanDerVaalsRadius(), G4MolecularConfiguration::G4MolecularConfigurationManager::Insert(), ReturnDefaultDiffCoeff(), and SetLabel().

Referenced by ChangeConfiguration(), CreateMolecularConfiguration(), GetOrCreateMolecularConfiguration(), G4MolecularConfiguration::G4MolecularConfigurationManager::GetOrCreateMolecularConfiguration(), and Load().

◆ G4MolecularConfiguration() [2/5]

G4MolecularConfiguration::G4MolecularConfiguration ( const G4MoleculeDefinition *  moleculeDef,
int  charge 
)
protected

Definition at line 489 of file G4MolecularConfiguration.cc.

References G4UIcommand::ConvertToString(), fDiffParam, fDynCharge, fDynDecayTime, fDynDiffusionCoefficient, fDynMass, fDynVanDerVaalsRadius, fElectronOccupancy, fFormatedName, fIsFinalized, fLabel, fMoleculeDefinition, fMoleculeID, fName, G4MoleculeDefinition::GetDecayTime(), G4MoleculeDefinition::GetDiffusionCoefficient(), G4MoleculeDefinition::GetFormatedName(), GetManager(), G4MoleculeDefinition::GetMass(), G4MoleculeDefinition::GetName(), G4MoleculeDefinition::GetVanDerVaalsRadius(), G4MolecularConfiguration::G4MolecularConfigurationManager::Insert(), and ReturnDefaultDiffCoeff().

◆ G4MolecularConfiguration() [3/5]

G4MolecularConfiguration::G4MolecularConfiguration ( const G4MoleculeDefinition *  moleculeDef,
const G4String &  label,
int  charge 
)
protected

Definition at line 79 of file G4MolecularConfiguration.cc.

References G4UIcommand::ConvertToString(), fDiffParam, fDynCharge, fDynDecayTime, fDynDiffusionCoefficient, fDynMass, fDynVanDerVaalsRadius, fElectronOccupancy, fFormatedName, fIsFinalized, fLabel, fMoleculeDefinition, fMoleculeID, fName, G4MoleculeDefinition::GetDecayTime(), G4MoleculeDefinition::GetDiffusionCoefficient(), G4MoleculeDefinition::GetFormatedName(), GetManager(), G4MoleculeDefinition::GetMass(), G4MoleculeDefinition::GetName(), G4MoleculeDefinition::GetVanDerVaalsRadius(), G4MolecularConfiguration::G4MolecularConfigurationManager::Insert(), and ReturnDefaultDiffCoeff().

◆ G4MolecularConfiguration() [4/5]

G4MolecularConfiguration::G4MolecularConfiguration ( std::istream &  in)
protected

◆ G4MolecularConfiguration() [5/5]

G4MolecularConfiguration::G4MolecularConfiguration ( const G4MolecularConfiguration &  )
protected

◆ ~G4MolecularConfiguration()

G4MolecularConfiguration::~G4MolecularConfiguration ( )
protected

Definition at line 526 of file G4MolecularConfiguration.cc.

527{
529
530// if (G4AllocatorList::GetAllocatorListIfExist())
531// {
532// if (fElectronOccupancy)
533// {
534// delete fElectronOccupancy;
535// fElectronOccupancy = 0;
536// }
537// }
538}
static G4MolecularConfigurationManager * fgManager

References fgManager, and G4MolecularConfiguration::G4MolecularConfigurationManager::RemoveMolecularConfigurationFromTable().

Member Function Documentation

◆ AddDiffCoeffParameterization()

void G4MolecularConfiguration::AddDiffCoeffParameterization ( const G4DiffCoeffParam &  para)
inline

Definition at line 581 of file G4MolecularConfiguration.hh.

583{
584 fDiffParam = para;
585}

References fDiffParam.

◆ AddElectron()

G4MolecularConfiguration * G4MolecularConfiguration::AddElectron ( G4int  orbit,
G4int  n = 1 
) const

Add n electrons to a given orbit. Note : You can add as many electrons to a given orbit, the result may be unrealist.

Definition at line 635 of file G4MolecularConfiguration.cc.

637{
638// MakeExceptionIfFinalized();
639 CheckElectronOccupancy(__func__);
640 G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
641 newElectronOccupancy.AddElectron(orbit, number);
642 return ChangeConfiguration(newElectronOccupancy);
643}
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy) const
void CheckElectronOccupancy(const char *line) const

References G4ElectronOccupancy::AddElectron(), ChangeConfiguration(), CheckElectronOccupancy(), and fElectronOccupancy.

Referenced by G4Molecule::AddElectron().

◆ ChangeConfiguration() [1/2]

G4MolecularConfiguration * G4MolecularConfiguration::ChangeConfiguration ( const G4ElectronOccupancy &  newElectronOccupancy) const
protected

Definition at line 543 of file G4MolecularConfiguration.cc.

545{
548 newElectronOccupancy);
549
550 if (!output)
551 {
553 newElectronOccupancy);
554 }
555 return output;
556}
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")

References fMoleculeDefinition, G4MolecularConfiguration(), GetManager(), and G4MolecularConfiguration::G4MolecularConfigurationManager::GetMolecularConfiguration().

Referenced by AddElectron(), ExciteMolecule(), IonizeMolecule(), MoveOneElectron(), and RemoveElectron().

◆ ChangeConfiguration() [2/2]

G4MolecularConfiguration * G4MolecularConfiguration::ChangeConfiguration ( int  charge) const
protected

◆ CheckElectronOccupancy()

void G4MolecularConfiguration::CheckElectronOccupancy ( const char *  line) const
protected

Definition at line 807 of file G4MolecularConfiguration.cc.

808{
809 if (fElectronOccupancy == 0)
810 {
811 G4String functionName(function);
812 G4ExceptionDescription description;
813 description
814 << "No G4ElectronOccupancy was defined for molecule definition : "
816 << ". The definition was probably defined using the charge state, "
817 "rather than electron state.";
818
819 G4Exception(functionName, "", FatalErrorInArgument, description);
820 }
821}
G4double(* function)(G4double)
@ FatalErrorInArgument
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40

References FatalErrorInArgument, fElectronOccupancy, fMoleculeDefinition, G4Exception(), and G4MoleculeDefinition::GetName().

Referenced by AddElectron(), ExciteMolecule(), GetNbElectrons(), IonizeMolecule(), MoveOneElectron(), and RemoveElectron().

◆ CreateDefaultDiffCoeffParam()

void G4MolecularConfiguration::CreateDefaultDiffCoeffParam ( )
protected

Definition at line 1499 of file G4MolecularConfiguration.cc.

1500{
1501 if(bool(fDiffParam) == false)
1502 {
1504 }
1505}

References fDiffParam, and ReturnDefaultDiffCoeff().

Referenced by Finalize().

◆ CreateMolecularConfiguration() [1/4]

G4MolecularConfiguration * G4MolecularConfiguration::CreateMolecularConfiguration ( const G4String &  userIdentifier,
const G4MoleculeDefinition *  molDef,
bool &  wasAlreadyCreated 
)
static

Definition at line 1081 of file G4MolecularConfiguration.cc.

1085{
1086 wasAlreadyCreated = false;
1087 G4MolecularConfiguration* preRegisteredMolConf =
1088 GetManager()->GetMolecularConfiguration(userIdentifier);
1089
1090 if(preRegisteredMolConf)
1091 {
1092 if(preRegisteredMolConf->GetDefinition() == molDef)
1093 {
1094 wasAlreadyCreated = true;
1095 return preRegisteredMolConf;
1096 }
1097 }
1098
1100 {
1101 const G4ElectronOccupancy& elecOcc = *molDef
1103 G4MolecularConfiguration* molConf =
1104 GetManager()->GetMolecularConfiguration(molDef, elecOcc);
1105
1106 if(molConf)
1107 {
1108 if(molConf->fUserIdentifier == "")
1109 {
1110 molConf->fUserIdentifier = userIdentifier;
1111 }
1112 else if(molConf->fUserIdentifier != userIdentifier)
1113 {
1115 errMsg << "A molecular configuration for the definition named "
1116 << molDef->GetName() << " has already been created "
1117 "and recorded with a different user ID "
1118 << molConf->fUserIdentifier;
1119 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1120 "DOUBLE_CREATION",
1122 errMsg);
1123 }
1124// TODO exception
1126 errMsg << "A molecular configuration for the definition named "
1127 << molDef->GetName() << " has already been created.";
1128 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1129 "DOUBLE_CREATION",
1131 errMsg);
1132 wasAlreadyCreated = true;
1133 return molConf;
1134 }
1135 else
1136 {
1137 // G4cout << "Create molConf for " << molDef->GetName() << G4endl;
1139 elecOcc);
1140 newConf->fUserIdentifier = userIdentifier;
1141
1142 GetManager()->AddUserID(userIdentifier, newConf);
1143
1144// G4MoleculeTable::Instance()->RecordMolecularConfiguration(userIdentifier,
1145// newConf);
1146 return newConf;
1147 }
1148 }
1149 else
1150 {
1151 return CreateMolecularConfiguration(userIdentifier,
1152 molDef,
1153 molDef->GetName(),
1154 molDef->GetCharge(),
1155 wasAlreadyCreated);
1156 }
1157}
@ JustWarning
void AddUserID(const G4String &name, G4MolecularConfiguration *molecule)
const G4MoleculeDefinition * GetDefinition() const
static G4MolecularConfiguration * CreateMolecularConfiguration(const G4String &userIdentifier, const G4MoleculeDefinition *, bool &wasAlreadyCreated)
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const

References G4MolecularConfiguration::G4MolecularConfigurationManager::AddUserID(), CreateMolecularConfiguration(), FatalErrorInArgument, fUserIdentifier, G4Exception(), G4MolecularConfiguration(), G4MoleculeDefinition::GetCharge(), GetDefinition(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), GetManager(), G4MolecularConfiguration::G4MolecularConfigurationManager::GetMolecularConfiguration(), G4MoleculeDefinition::GetName(), and JustWarning.

Referenced by G4MoleculeTable::CreateConfiguration(), CreateMolecularConfiguration(), G4MoleculeDefinition::NewConfiguration(), and G4MoleculeDefinition::NewConfigurationWithElectronOccupancy().

◆ CreateMolecularConfiguration() [2/4]

G4MolecularConfiguration * G4MolecularConfiguration::CreateMolecularConfiguration ( const G4String &  userIdentifier,
const G4MoleculeDefinition *  molDef,
const G4String &  label,
bool &  wasAlreadyCreated 
)
static

Definition at line 1162 of file G4MolecularConfiguration.cc.

1167{
1168 assert(label != "");
1169 wasAlreadyCreated = false;
1170
1171 G4MolecularConfiguration* molConf =
1172 GetManager()->GetMolecularConfiguration(molDef, label);
1173 if(molConf)
1174 {
1175 if(molConf->fLabel
1176 && *molConf->fLabel == label)
1177 {
1178 wasAlreadyCreated = true;
1179 return molConf;
1180 }
1181 else if(molConf->fLabel == 0)
1182 {
1183 wasAlreadyCreated = true;
1184 molConf->SetLabel(label);
1185 return molConf;
1186 }
1187 else if(*molConf->fLabel == "")
1188 {
1189 wasAlreadyCreated = true;
1190 molConf->SetLabel(label);
1191 return molConf;
1192 }
1193
1194 molConf->PrintState();
1195 G4ExceptionDescription errMsg ;
1196 errMsg << "A molecular configuration for the definition named "
1197 << molDef->GetName()
1198 << " has already been created "
1199 "with user ID "
1200 << molConf->fUserIdentifier << " and label "
1201 << molConf->GetLabel();
1202 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1203 "DOUBLE_CREATION",
1205 errMsg);
1206 // KILL APP
1207 }
1208 else
1209 {
1210 G4MolecularConfiguration* newConf =
1211 new G4MolecularConfiguration(molDef,
1212 label,
1213 molDef->GetCharge());
1214 newConf->fUserIdentifier = userIdentifier;
1215
1216 GetManager()->AddUserID(userIdentifier, newConf);
1217
1218// G4MoleculeTable::Instance()->
1219// RecordMolecularConfiguration(userIdentifier, newConf);
1220 return newConf;
1221 }
1222 return molConf;
1223}
const G4String & GetLabel() const

References G4MolecularConfiguration::G4MolecularConfigurationManager::AddUserID(), FatalErrorInArgument, fLabel, fUserIdentifier, G4Exception(), G4MolecularConfiguration(), G4MoleculeDefinition::GetCharge(), GetLabel(), GetManager(), G4MolecularConfiguration::G4MolecularConfigurationManager::GetMolecularConfiguration(), G4MoleculeDefinition::GetName(), PrintState(), and SetLabel().

◆ CreateMolecularConfiguration() [3/4]

G4MolecularConfiguration * G4MolecularConfiguration::CreateMolecularConfiguration ( const G4String &  userIdentifier,
const G4MoleculeDefinition *  molDef,
const G4String &  label,
const G4ElectronOccupancy &  eOcc,
bool &  wasAlreadyCreated 
)
static

Definition at line 1228 of file G4MolecularConfiguration.cc.

1234{
1235 assert(label != "");
1236 wasAlreadyCreated = false;
1237
1238 G4MolecularConfiguration* molConf =
1239 GetManager()->GetMolecularConfiguration(molDef, eOcc);
1240
1241 if(molConf)
1242 {
1243 if(molConf->GetElectronOccupancy())
1244 {
1245 if(*molConf->GetElectronOccupancy() == eOcc)
1246 {
1247 if(molConf->fLabel && *molConf->fLabel == label)
1248 {
1249 wasAlreadyCreated = true;
1250 return molConf;
1251 }
1252 else if(molConf->fLabel == 0)
1253 {
1254 wasAlreadyCreated = true;
1255 molConf->SetLabel(label);
1256 return molConf;
1257 }
1258 else if(*molConf->fLabel == "")
1259 {
1260 wasAlreadyCreated = true;
1261 molConf->SetLabel(label);
1262 return molConf;
1263 }
1264 }
1265 }
1266
1267
1268 molConf->PrintState();
1269 G4ExceptionDescription errMsg ;
1270 errMsg << "A molecular configuration for the definition named "
1271 << molDef->GetName()
1272 << " has already been created "
1273 "with user ID "
1274 << molConf->fUserIdentifier
1275 << " and possible different electronic state";
1276 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1277 "DOUBLE_CREATION",
1279 errMsg);
1280 }
1281 else
1282 {
1283 G4MolecularConfiguration* newConf =
1284 new G4MolecularConfiguration(molDef,
1285 eOcc,
1286 label);
1287 newConf->fUserIdentifier = userIdentifier;
1288
1289 GetManager()->AddUserID(userIdentifier, newConf);
1290
1291// G4MoleculeTable::Instance()->
1292// RecordMolecularConfiguration(userIdentifier, newConf);
1293 return newConf;
1294 }
1295 return molConf;
1296}
const G4ElectronOccupancy * GetElectronOccupancy() const

References G4MolecularConfiguration::G4MolecularConfigurationManager::AddUserID(), FatalErrorInArgument, fLabel, fUserIdentifier, G4Exception(), G4MolecularConfiguration(), GetElectronOccupancy(), GetManager(), G4MolecularConfiguration::G4MolecularConfigurationManager::GetMolecularConfiguration(), G4MoleculeDefinition::GetName(), PrintState(), and SetLabel().

◆ CreateMolecularConfiguration() [4/4]

G4MolecularConfiguration * G4MolecularConfiguration::CreateMolecularConfiguration ( const G4String &  userIdentifier,
const G4MoleculeDefinition *  molDef,
int  charge,
const G4String &  label,
bool &  wasAlreadyCreated 
)
static

Definition at line 989 of file G4MolecularConfiguration.cc.

994{
995 wasAlreadyCreated = false;
996 G4MolecularConfiguration* molConf =
997 GetManager()->GetMolecularConfiguration(molDef, charge);
998
999 if (molConf)
1000 {
1001 if(molConf->fLabel == 0)
1002 {
1003 molConf->SetLabel(label);
1005 wMsg << "The molecular configuration for the definition named "
1006 << molDef->GetName()
1007 << " with charge " << charge << " has already been created "
1008 "but with NO label";
1009 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1010 "DOUBLE_CREATION",
1012 wMsg);
1013 }
1014 else if(*(molConf->fLabel) == "" )
1015 {
1016 molConf->SetLabel(label);
1017 }
1018 else if(*(molConf->fLabel) != label)
1019 {
1020 G4ExceptionDescription errMsg ;
1021 errMsg << "The molecular configuration for the definition named "
1022 << molDef->GetName()
1023 << " with charge " << charge << " has already been created "
1024 "but with a different label :"
1025 << molConf->GetLabel();
1026 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1027 "DOUBLE_CREATION",
1029 errMsg);
1030 // KILL APP
1031 }
1032
1033 if(molConf->fUserIdentifier == "")
1034 {
1035 molConf->fUserIdentifier = userIdentifier;
1036
1038 wMsg << "The molecular configuration for the definition named "
1039 << molDef->GetName()
1040 << " with label " << label << " has already been created.";
1041 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1042 "DOUBLE_CREATION",
1044 wMsg);
1045 }
1046 else if(molConf->fUserIdentifier != userIdentifier)
1047 {
1048 G4ExceptionDescription errMsg ;
1049 errMsg << "The molecular configuration for the definition named "
1050 << molDef->GetName()
1051 << " with label " << label << " has already been created "
1052 "BUT with a different user ID :"
1053 << molConf->fUserIdentifier;
1054 G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1055 "DOUBLE_CREATION",
1057 errMsg);
1058 // KILL APP
1059 }
1060
1061 wasAlreadyCreated = true;
1062 return molConf;
1063 }
1064 else
1065 {
1066 G4MolecularConfiguration* newConf =
1067 new G4MolecularConfiguration(molDef, label, charge);
1068 newConf->fUserIdentifier = userIdentifier;
1069
1070 GetManager()->AddUserID(userIdentifier, newConf);
1071
1072// G4MoleculeTable::Instance()->RecordMolecularConfiguration(userIdentifier,
1073// newConf);
1074 return newConf;
1075 }
1076}

References G4MolecularConfiguration::G4MolecularConfigurationManager::AddUserID(), FatalErrorInArgument, fLabel, fUserIdentifier, G4Exception(), G4MolecularConfiguration(), GetLabel(), GetManager(), G4MolecularConfiguration::G4MolecularConfigurationManager::GetMolecularConfiguration(), G4MoleculeDefinition::GetName(), JustWarning, and SetLabel().

◆ DeleteManager()

void G4MolecularConfiguration::DeleteManager ( )
static

◆ DiffCoeffWater()

double G4MolecularConfiguration::DiffCoeffWater ( double  temperature_K)
static

Definition at line 1466 of file G4MolecularConfiguration.cc.

1467{
1468 return pow(10, 4.311
1469 - 2.722e3/temperature_K
1470 + 8.565e5/(temperature_K *temperature_K)
1471 - 1.181e8/(temperature_K*temperature_K*temperature_K ))*1e-9*m2/s;
1472}
static constexpr double s
Definition: G4SIunits.hh:154
static constexpr double m2
Definition: G4SIunits.hh:110

References m2, and s.

Referenced by ScaleAllDiffusionCoefficientsOnWater(), and G4DNAMolecularReactionData::ScaledParameterization().

◆ ExciteMolecule()

G4MolecularConfiguration * G4MolecularConfiguration::ExciteMolecule ( G4int  ExcitedLevel) const

Method used in Geant4-DNA to excite water molecules

Definition at line 587 of file G4MolecularConfiguration.cc.

588{
589// MakeExceptionIfFinalized();
590 CheckElectronOccupancy(__func__);
591 G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
592
593 newElectronOccupancy.RemoveElectron(ExcitedLevel, 1);
594 newElectronOccupancy.AddElectron(5, 1);
595
596 return ChangeConfiguration(newElectronOccupancy);
597}

References G4ElectronOccupancy::AddElectron(), ChangeConfiguration(), CheckElectronOccupancy(), fElectronOccupancy, and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::ExciteMolecule().

◆ Finalize()

void G4MolecularConfiguration::Finalize ( )
inline

◆ FinalizeAll()

void G4MolecularConfiguration::FinalizeAll ( )
static

Definition at line 1545 of file G4MolecularConfiguration.cc.

1546{
1547 const std::vector<G4MolecularConfiguration*>& species =
1549
1550 for(size_t i = 0; i < species.size() ; ++i)
1551 {
1552 species[i]->Finalize();
1553 }
1554
1555}
const std::vector< G4MolecularConfiguration * > & GetAllSpecies()

References G4MolecularConfiguration::G4MolecularConfigurationManager::GetAllSpecies(), and GetManager().

Referenced by G4MoleculeTable::Finalize().

◆ GetAtomsNumber()

G4int G4MolecularConfiguration::GetAtomsNumber ( ) const

Returns the nomber of atoms compouning the molecule

Definition at line 720 of file G4MolecularConfiguration.cc.

721{
723}

References fMoleculeDefinition, and G4MoleculeDefinition::GetAtomsNumber().

Referenced by G4Molecule::GetAtomsNumber().

◆ GetCharge()

G4int G4MolecularConfiguration::GetCharge ( ) const
inline

◆ GetDecayTime()

G4double G4MolecularConfiguration::GetDecayTime ( ) const
inline

Returns the decay time of the molecule.

Definition at line 511 of file G4MolecularConfiguration.hh.

512{
513 return fDynDecayTime;
514}

References fDynDecayTime.

Referenced by G4Molecule::GetDecayTime().

◆ GetDefinition()

const G4MoleculeDefinition * G4MolecularConfiguration::GetDefinition ( ) const
inline

◆ GetDiffusionCoefficient() [1/2]

G4double G4MolecularConfiguration::GetDiffusionCoefficient ( ) const
inline

◆ GetDiffusionCoefficient() [2/2]

G4double G4MolecularConfiguration::GetDiffusionCoefficient ( const G4Material *  material,
double  temperature 
) const
inline

Definition at line 588 of file G4MolecularConfiguration.hh.

590{
591 return fDiffParam(material, temperature, this);
592}
string material
Definition: eplot.py:19

References fDiffParam, and eplot::material.

◆ GetDissociationChannels()

const vector< const G4MolecularDissociationChannel * > * G4MolecularConfiguration::GetDissociationChannels ( ) const

Definition at line 773 of file G4MolecularConfiguration.cc.

774{
775 // if (fElectronOccupancy == 0) return 0;
777}
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannels(const G4MolecularConfiguration *) const

References fMoleculeDefinition, and G4MoleculeDefinition::GetDecayChannels().

Referenced by G4Molecule::GetDissociationChannels().

◆ GetElectronOccupancy()

const G4ElectronOccupancy * G4MolecularConfiguration::GetElectronOccupancy ( ) const
inline

Returns the object ElectronOccupancy describing the electronic configuration of the molecule.

Definition at line 489 of file G4MolecularConfiguration.hh.

490{
491 return fElectronOccupancy;
492}

References fElectronOccupancy.

Referenced by CreateMolecularConfiguration(), G4Molecule::GetElectronOccupancy(), and G4MolecularConfiguration::G4MolecularConfigurationManager::RemoveMolecularConfigurationFromTable().

◆ GetFakeParticleID()

G4int G4MolecularConfiguration::GetFakeParticleID ( ) const

Definition at line 781 of file G4MolecularConfiguration.cc.

782{
784 else G4Exception("G4MolecularConfiguration::GetMoleculeID",
785 "",
787 "You should first enter a molecule definition");
788
789 return INT_MAX;
790}
#define INT_MAX
Definition: templates.hh:90

References FatalErrorInArgument, fMoleculeDefinition, G4Exception(), G4ParticleDefinition::GetPDGEncoding(), and INT_MAX.

Referenced by G4Molecule::GetFakeParticleID().

◆ GetFormatedName()

const G4String & G4MolecularConfiguration::GetFormatedName ( ) const

Returns the formated name of the molecule

Definition at line 713 of file G4MolecularConfiguration.cc.

714{
715 return fFormatedName;
716}

References fFormatedName.

Referenced by G4Molecule::GetFormatedName().

◆ GetGlobalTemperature()

G4double G4MolecularConfiguration::GetGlobalTemperature ( )
static

◆ GetLabel()

const G4String & G4MolecularConfiguration::GetLabel ( ) const
inline

Definition at line 562 of file G4MolecularConfiguration.hh.

563{
564 if(fLabel == 0)
565 fLabel = new G4String();
566
567 return (*fLabel);
568}

References fLabel.

Referenced by CreateMolecularConfiguration(), G4Molecule::GetLabel(), and PrintState().

◆ GetManager()

G4MolecularConfiguration::G4MolecularConfigurationManager * G4MolecularConfiguration::GetManager ( )
staticprotected

◆ GetMass()

G4double G4MolecularConfiguration::GetMass ( ) const
inline

Returns the total mass of the molecule.

Definition at line 538 of file G4MolecularConfiguration.hh.

539{
540 return fDynMass;
541}

References fDynMass.

Referenced by G4Molecule::GetDiffusionVelocity(), G4Molecule::GetKineticEnergy(), and G4Molecule::GetMass().

◆ GetMolecularConfiguration() [1/3]

G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( const G4MoleculeDefinition *  molDef,
const G4String &  label 
)
static

◆ GetMolecularConfiguration() [2/3]

G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( const G4String &  userID)
static

◆ GetMolecularConfiguration() [3/3]

G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( int  moleculeID)
static

◆ GetMoleculeID()

G4int G4MolecularConfiguration::GetMoleculeID ( ) const
inline

Definition at line 543 of file G4MolecularConfiguration.hh.

544{
545 return fMoleculeID;
546}

References fMoleculeID.

Referenced by G4Molecule::GetMoleculeID().

◆ GetName()

const G4String & G4MolecularConfiguration::GetName ( ) const

◆ GetNbElectrons()

G4double G4MolecularConfiguration::GetNbElectrons ( ) const

Returns the number of electron.

Definition at line 727 of file G4MolecularConfiguration.cc.

728{
729 CheckElectronOccupancy(__func__);
731}

References CheckElectronOccupancy(), fElectronOccupancy, and G4ElectronOccupancy::GetTotalOccupancy().

Referenced by G4Molecule::GetNbElectrons().

◆ GetNumberOfSpecies()

int G4MolecularConfiguration::GetNumberOfSpecies ( )
static

◆ GetOrCreateMolecularConfiguration() [1/3]

G4MolecularConfiguration * G4MolecularConfiguration::GetOrCreateMolecularConfiguration ( const G4MoleculeDefinition *  molDef)
static

Definition at line 337 of file G4MolecularConfiguration.cc.

339{
341 {
342 const G4ElectronOccupancy& elecOcc =
344 G4MolecularConfiguration* molConf =
345 GetManager()->GetMolecularConfiguration(molDef, elecOcc);
346
347 if (molConf)
348 {
349 return molConf;
350 }
351 else
352 {
353 G4MolecularConfiguration* newConf =
354 new G4MolecularConfiguration(molDef,
355 elecOcc);
356 newConf->SetUserID(molDef->GetName());
357 return newConf;
358 }
359 }
360 else
361 {
362 G4MolecularConfiguration* molConf =
363 GetManager()->GetMolecularConfiguration(molDef, molDef->GetCharge());
364 if(molConf)
365 {
366 return molConf;
367 }
368 else
369 {
370 G4MolecularConfiguration* newConf =
371 new G4MolecularConfiguration(molDef, molDef->GetCharge());
372 newConf->SetUserID(molDef->GetName());
373 return newConf;
374 }
375 }
376}
void SetUserID(const G4String &userID)

References G4MolecularConfiguration(), G4MoleculeDefinition::GetCharge(), G4MoleculeDefinition::GetGroundStateElectronOccupancy(), GetManager(), G4MolecularConfiguration::G4MolecularConfigurationManager::GetMolecularConfiguration(), G4MoleculeDefinition::GetName(), and SetUserID().

Referenced by G4Molecule::G4Molecule(), G4MoleculeTable::PrepareMolecularConfiguration(), and G4Molecule::SetElectronOccupancy().

◆ GetOrCreateMolecularConfiguration() [2/3]

G4MolecularConfiguration * G4MolecularConfiguration::GetOrCreateMolecularConfiguration ( const G4MoleculeDefinition *  molDef,
const G4ElectronOccupancy &  eOcc 
)
static

Definition at line 381 of file G4MolecularConfiguration.cc.

384{
385 return GetManager()->GetOrCreateMolecularConfiguration(molDef, elecOcc);
386
387// G4MolecularConfiguration* molConf =
388// GetManager()->GetMolecularConfiguration(molDef, elecOcc);
389//
390// if (molConf)
391// {
392// return molConf;
393// }
394// else
395// {
396// G4MolecularConfiguration* newConf =
397// new G4MolecularConfiguration(molDef, elecOcc);
398// return newConf;
399// }
400}
G4MolecularConfiguration * GetOrCreateMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

References GetManager(), and G4MolecularConfiguration::G4MolecularConfigurationManager::GetOrCreateMolecularConfiguration().

◆ GetOrCreateMolecularConfiguration() [3/3]

G4MolecularConfiguration * G4MolecularConfiguration::GetOrCreateMolecularConfiguration ( const G4MoleculeDefinition *  molDef,
int  charge 
)
static

Definition at line 405 of file G4MolecularConfiguration.cc.

408{
409 G4MolecularConfiguration* molConf =
410 GetManager()->GetMolecularConfiguration(molDef, charge);
411
412 if(molConf)
413 {
414 return molConf;
415 }
416 else
417 {
418 G4MolecularConfiguration* newConf =
419 new G4MolecularConfiguration(molDef, charge);
420 return newConf;
421 }
422}

References G4MolecularConfiguration(), GetManager(), and G4MolecularConfiguration::G4MolecularConfigurationManager::GetMolecularConfiguration().

◆ GetUserID()

const G4String & G4MolecularConfiguration::GetUserID ( ) const
inline

Definition at line 576 of file G4MolecularConfiguration.hh.

577{
578 return fUserIdentifier;
579}

References fUserIdentifier.

◆ GetUserIDTable()

static std::map< G4String, G4MolecularConfiguration * > & G4MolecularConfiguration::GetUserIDTable ( )
inlinestatic

◆ GetVanDerVaalsRadius()

G4double G4MolecularConfiguration::GetVanDerVaalsRadius ( ) const
inline

◆ IonizeMolecule()

G4MolecularConfiguration * G4MolecularConfiguration::IonizeMolecule ( G4int  IonizedLevel) const

Method used in Geant4-DNA to ionize water molecules

Definition at line 604 of file G4MolecularConfiguration.cc.

605{
606// MakeExceptionIfFinalized();
607 CheckElectronOccupancy(__func__);
608 G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
609
610 if (newElectronOccupancy.GetOccupancy(IonizedLevel) != 0)
611 {
612 newElectronOccupancy.RemoveElectron(IonizedLevel, 1);
613 }
614 else
615 {
616 G4String errMsg = "There is no electron on the orbit "
617 + G4UIcommand::ConvertToString(IonizedLevel)
618 + " you want to free. The molecule's name you want to ionized is "
619 + GetName();
620 G4Exception("G4MolecularConfiguration::IonizeMolecule",
621 "",
623 errMsg);
624 PrintState();
625 }
626
627 // DEBUG
628 // PrintState();
629
630 return ChangeConfiguration(newElectronOccupancy);
631}
const G4String & GetName() const

References ChangeConfiguration(), CheckElectronOccupancy(), G4UIcommand::ConvertToString(), FatalErrorInArgument, fElectronOccupancy, G4Exception(), GetName(), G4ElectronOccupancy::GetOccupancy(), PrintState(), and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::IonizeMolecule().

◆ Load()

G4MolecularConfiguration * G4MolecularConfiguration::Load ( std::istream &  in)
static

Definition at line 1420 of file G4MolecularConfiguration.cc.

1421{
1422 return new G4MolecularConfiguration(in);
1423}

References G4MolecularConfiguration().

◆ MakeExceptionIfFinalized()

void G4MolecularConfiguration::MakeExceptionIfFinalized ( )
protected

Definition at line 114 of file G4MolecularConfiguration.cc.

115{
116 if(fIsFinalized)
117 {
119 errMsg << "This molecular configuration " << GetName()
120 << " is already finalized. Therefore its "
121 " properties cannot be changed.";
122 G4Exception("G4MolecularConfiguration::MakeExceptionIfFinalized",
123 "CONF_FINALIZED",FatalException,errMsg);
124 }
125}
@ FatalException

References FatalException, fIsFinalized, G4Exception(), and GetName().

Referenced by SetDecayTime(), SetDiffusionCoefficient(), SetMass(), and SetVanDerVaalsRadius().

◆ MoveOneElectron()

G4MolecularConfiguration * G4MolecularConfiguration::MoveOneElectron ( G4int  orbitToFree,
G4int  orbitToFill 
) const

Move one electron from an orbit to another.

Definition at line 677 of file G4MolecularConfiguration.cc.

679{
680// MakeExceptionIfFinalized();
681 CheckElectronOccupancy(__func__);
682 G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
683
684 if (newElectronOccupancy.GetOccupancy(orbitToFree) >= 1)
685 {
686 newElectronOccupancy.RemoveElectron(orbitToFree, 1);
687 newElectronOccupancy.AddElectron(orbitToFill, 1);
688 }
689 else
690 {
691 G4String errMsg = "There is no electron on the orbit "
692 + G4UIcommand::ConvertToString(orbitToFree)
693 + " you want to free. The molecule's name is " + GetName();
694 G4Exception("G4MolecularConfiguration::MoveOneElectron",
695 "",
697 errMsg);
698 PrintState();
699 }
700
701 return ChangeConfiguration(newElectronOccupancy);
702}

References G4ElectronOccupancy::AddElectron(), ChangeConfiguration(), CheckElectronOccupancy(), G4UIcommand::ConvertToString(), FatalErrorInArgument, fElectronOccupancy, G4Exception(), GetName(), G4ElectronOccupancy::GetOccupancy(), PrintState(), and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::MoveOneElectron().

◆ operator=()

G4MolecularConfiguration & G4MolecularConfiguration::operator= ( G4MolecularConfiguration &  right)
protected

Definition at line 576 of file G4MolecularConfiguration.cc.

577{
578// if (&right == this) return *this;
579 return *this;
580}

◆ PrintState()

void G4MolecularConfiguration::PrintState ( ) const

Display the electronic state of the molecule.

Definition at line 735 of file G4MolecularConfiguration.cc.

736{
737 G4cout << "-------------- Start Printing State " << GetName()
738 << " ---------------" << G4endl;
739
741 {
742 G4cout << "--------------Print electronic state of " << GetName()
743 << "---------------" << G4endl;
746 {
747 G4cout<<"At ground state"<<G4endl;
748 }
749 }
750 else
751 {
752 G4cout << "--- No electron occupancy set up ---" << G4endl;
753 }
754
755 G4cout << "Charge :"
756 << fDynCharge
757 << G4endl;
758
759 if(fLabel)
760 {
761 G4cout << "Label :"
762 << GetLabel()
763 << G4endl;
764 }
765 G4cout << "-------------- End Of State " << GetName()
766 << " -----------------------" << G4endl;
767}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout

References G4ElectronOccupancy::DumpInfo(), fDynCharge, fElectronOccupancy, fLabel, fMoleculeDefinition, G4cout, G4endl, G4MoleculeDefinition::GetGroundStateElectronOccupancy(), GetLabel(), and GetName().

Referenced by CreateMolecularConfiguration(), IonizeMolecule(), MoveOneElectron(), G4Molecule::PrintState(), G4MoleculeCounter::RemoveAMoleculeAtTime(), and RemoveElectron().

◆ RemoveElectron()

G4MolecularConfiguration * G4MolecularConfiguration::RemoveElectron ( G4int  orbit,
G4int  number = 1 
) const

Remove n electrons to a given orbit.

Definition at line 648 of file G4MolecularConfiguration.cc.

650{
651// MakeExceptionIfFinalized();
652 CheckElectronOccupancy(__func__);
653 G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
654
655 if (newElectronOccupancy.GetOccupancy(orbit) != 0)
656 {
657 newElectronOccupancy.RemoveElectron(orbit, number);
658 }
659 else
660 {
661 G4String errMsg = "There is already no electron into the orbit "
663 + " you want to free. The molecule's name is " + GetName();
664 G4Exception("G4MolecularConfiguration::RemoveElectron",
665 "",
667 errMsg);
668 PrintState();
669 }
670
671 return ChangeConfiguration(newElectronOccupancy);
672}

References ChangeConfiguration(), CheckElectronOccupancy(), G4UIcommand::ConvertToString(), fElectronOccupancy, G4Exception(), GetName(), G4ElectronOccupancy::GetOccupancy(), JustWarning, PrintState(), and G4ElectronOccupancy::RemoveElectron().

Referenced by G4Molecule::RemoveElectron().

◆ ReturnDefaultDiffCoeff()

double G4MolecularConfiguration::ReturnDefaultDiffCoeff ( const G4Material *  ,
double  ,
const G4MolecularConfiguration *  molConf 
)
staticprotected

Definition at line 71 of file G4MolecularConfiguration.cc.

75{
76 return molConf->fDynDiffusionCoefficient;
77}

References fDynDiffusionCoefficient.

Referenced by CreateDefaultDiffCoeffParam(), and G4MolecularConfiguration().

◆ ScaleAllDiffusionCoefficientsOnWater()

void G4MolecularConfiguration::ScaleAllDiffusionCoefficientsOnWater ( double  temperature_K)
staticprotected

Definition at line 1477 of file G4MolecularConfiguration.cc.

1479{
1480 double D_water_0 = DiffCoeffWater(fgTemperature);
1481 double D_water_f = DiffCoeffWater(temperature_K);
1482
1483 G4cout << "Scaling factor = " << D_water_f/D_water_0 << G4endl;
1484
1487
1488 while(it())
1489 {
1490 G4MolecularConfiguration* conf = it.value();
1491 double D_0 = conf->GetDiffusionCoefficient() ;
1492 double D_f = D_water_f * D_0 /D_water_0;
1493 conf->SetDiffusionCoefficient(D_f);
1494 };
1495}
static double DiffCoeffWater(double temperature_K)
static G4MoleculeTable * Instance()
G4ConfigurationIterator GetConfigurationIterator()

References DiffCoeffWater(), fgTemperature, G4cout, G4endl, G4MoleculeTable::GetConfigurationIterator(), GetDiffusionCoefficient(), G4MoleculeTable::Instance(), SetDiffusionCoefficient(), and G4MoleculeIterator< MOLECULE >::value().

Referenced by SetGlobalTemperature().

◆ Serialize()

void G4MolecularConfiguration::Serialize ( std::ostream &  out)

Definition at line 1370 of file G4MolecularConfiguration.cc.

1371{
1372 G4String moleculeName = fMoleculeDefinition->GetName();
1373 WRITE(out, moleculeName);
1374
1375// if(fLabel)
1376// out << fLabel;
1377// else
1378// out << "";
1381 WRITE(out,fDynDecayTime);
1382 WRITE(out,fDynMass);
1383 WRITE(out,fDynCharge);
1384 WRITE(out,fMoleculeID);
1385 WRITE(out,fFormatedName);
1386 WRITE(out,fName);
1387 WRITE(out,fIsFinalized);
1388}
void WRITE(std::ostream &out, const T &toBeSaved)
Definition: G4Serialize.hh:41

References fDynCharge, fDynDecayTime, fDynDiffusionCoefficient, fDynMass, fDynVanDerVaalsRadius, fFormatedName, fIsFinalized, fMoleculeDefinition, fMoleculeID, fName, G4MoleculeDefinition::GetName(), and WRITE().

◆ SetDecayTime()

void G4MolecularConfiguration::SetDecayTime ( G4double  dynDecayTime)
inline

Set the decay time of the molecule.

Definition at line 505 of file G4MolecularConfiguration.hh.

506{
508 fDynDecayTime = dynDecayTime;
509}

References fDynDecayTime, and MakeExceptionIfFinalized().

Referenced by G4MoleculeDefinition::NewConfigurationWithElectronOccupancy().

◆ SetDiffusionCoefficient()

void G4MolecularConfiguration::SetDiffusionCoefficient ( G4double  dynDiffusionCoefficient)
inline

Sets the diffusion coefficient D of the molecule used in diffusion processes to calculate the mean square jump distance between two changes of direction. In three dimension : <x^2> = 6 D t where t is the mean jump time between two changes of direction.

Note : Diffusion Coefficient in one medium only For the time being, we will consider only one diffusion coefficient for the all simulation => diffusion in one medium only If the user needs to use the diffusion in different materials, she/he should contact the developers/maintainers of this package

Definition at line 494 of file G4MolecularConfiguration.hh.

495{
497 fDynDiffusionCoefficient = dynDiffusionCoefficient;
498}

References fDynDiffusionCoefficient, and MakeExceptionIfFinalized().

Referenced by G4EmDNAChemistry_option1::ConstructMolecule(), G4EmDNAChemistry_option3::ConstructMolecule(), G4MoleculeTable::CreateConfiguration(), and ScaleAllDiffusionCoefficientsOnWater().

◆ SetGlobalTemperature()

void G4MolecularConfiguration::SetGlobalTemperature ( G4double  temperature)
static

Definition at line 1509 of file G4MolecularConfiguration.cc.

1510{
1512 fgTemperature = temperature;
1513}
static void ScaleAllDiffusionCoefficientsOnWater(double temperature_K)

References fgTemperature, and ScaleAllDiffusionCoefficientsOnWater().

Referenced by G4DNAChemistryManager::SetGlobalTemperature().

◆ SetLabel()

void G4MolecularConfiguration::SetLabel ( const G4String &  label)
inline

Definition at line 548 of file G4MolecularConfiguration.hh.

549{
550 assert(fLabel == 0 || *fLabel == "");
551 if(fLabel == 0)
552 {
553 fLabel = new G4String(label);
554 }
555 else
556 {
557 *fLabel = label;
558 }
560}

References fgManager, fLabel, and G4MolecularConfiguration::G4MolecularConfigurationManager::RecordNewlyLabeledConfiguration().

Referenced by CreateMolecularConfiguration(), and G4MolecularConfiguration().

◆ SetMass()

void G4MolecularConfiguration::SetMass ( G4double  aMass)
inline

◆ SetUserID()

void G4MolecularConfiguration::SetUserID ( const G4String &  userID)
protected

Definition at line 1457 of file G4MolecularConfiguration.cc.

1458{
1459 fUserIdentifier = userID;
1460 GetManager()->AddUserID(userID, this);
1461// G4MoleculeTable::Instance()->RecordMolecularConfiguration(userID, this);
1462}

References G4MolecularConfiguration::G4MolecularConfigurationManager::AddUserID(), fUserIdentifier, and GetManager().

Referenced by GetOrCreateMolecularConfiguration().

◆ SetVanDerVaalsRadius()

void G4MolecularConfiguration::SetVanDerVaalsRadius ( G4double  dynVanDerVaalsRadius)
inline

The Van Der Valls Radius of the molecule

Definition at line 516 of file G4MolecularConfiguration.hh.

517{
519 fDynVanDerVaalsRadius = dynVanDerVaalsRadius;
520}

References fDynVanDerVaalsRadius, and MakeExceptionIfFinalized().

Referenced by G4EmDNAChemistry_option3::ConstructMolecule().

◆ Unserialize()

void G4MolecularConfiguration::Unserialize ( std::istream &  in)

Definition at line 1392 of file G4MolecularConfiguration.cc.

1393{
1394 G4String moleculeName;
1395 READ(in, moleculeName);
1398
1399// G4String label;
1400//
1401// in.read((char*)(&label), sizeof(label));
1402//
1403// if(label)
1404// fLabel = new G4String(label);
1405// else
1406// fLabel = 0;
1409 READ(in,fDynDecayTime);
1410 READ(in,fDynMass);
1411 READ(in,fDynCharge);
1412 READ(in,fMoleculeID);
1413 READ(in,fFormatedName);
1414 READ(in,fName);
1415 READ(in,fIsFinalized);
1416}
void READ(std::istream &in, T &toBeSaved)
Definition: G4Serialize.hh:49
G4MoleculeDefinition * GetMoleculeDefinition(const G4String &, bool mustExist=true)

References fDynCharge, fDynDecayTime, fDynDiffusionCoefficient, fDynMass, fDynVanDerVaalsRadius, fFormatedName, fIsFinalized, fMoleculeDefinition, fMoleculeID, fName, G4MoleculeTable::GetMoleculeDefinition(), G4MoleculeTable::Instance(), and READ().

Referenced by G4MolecularConfiguration().

Field Documentation

◆ fDiffParam

G4DiffCoeffParam G4MolecularConfiguration::fDiffParam
protected

◆ fDynCharge

G4int G4MolecularConfiguration::fDynCharge
protected

◆ fDynDecayTime

G4double G4MolecularConfiguration::fDynDecayTime
protected

◆ fDynDiffusionCoefficient

G4double G4MolecularConfiguration::fDynDiffusionCoefficient
protected

◆ fDynMass

G4double G4MolecularConfiguration::fDynMass
protected

◆ fDynVanDerVaalsRadius

G4double G4MolecularConfiguration::fDynVanDerVaalsRadius
protected

◆ fElectronOccupancy

const G4ElectronOccupancy* G4MolecularConfiguration::fElectronOccupancy
protected

◆ fFormatedName

G4String G4MolecularConfiguration::fFormatedName
protected

◆ fgManager

MolecularConfigurationManager * G4MolecularConfiguration::fgManager = 0
staticprotected

◆ fgTemperature

G4double G4MolecularConfiguration::fgTemperature = 298
staticprotected

◆ fIsFinalized

G4bool G4MolecularConfiguration::fIsFinalized
protected

◆ fLabel

G4String* G4MolecularConfiguration::fLabel
mutableprotected

◆ fMoleculeDefinition

const G4MoleculeDefinition* G4MolecularConfiguration::fMoleculeDefinition
protected

◆ fMoleculeID

G4int G4MolecularConfiguration::fMoleculeID
protected

◆ fName

G4String G4MolecularConfiguration::fName
protected

◆ fUserIdentifier

G4String G4MolecularConfiguration::fUserIdentifier
protected

Definition at line 472 of file G4MolecularConfiguration.hh.

Referenced by CreateMolecularConfiguration(), GetUserID(), and SetUserID().


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