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 &)
 
G4MolecularConfigurationAddElectron (G4int orbit, G4int n=1) const
 
G4MolecularConfigurationExciteMolecule (G4int) const
 
void Finalize ()
 
G4int GetAtomsNumber () const
 
G4int GetCharge () const
 
G4double GetDecayTime () const
 
const G4MoleculeDefinitionGetDefinition () const
 
G4double GetDiffusionCoefficient () const
 
G4double GetDiffusionCoefficient (const G4Material *, double temperature) const
 
const std::vector< const G4MolecularDissociationChannel * > * GetDissociationChannels () const
 
const G4ElectronOccupancyGetElectronOccupancy () const
 
G4int GetFakeParticleID () const
 
const G4StringGetFormatedName () const
 
const G4StringGetLabel () const
 
G4double GetMass () const
 
G4int GetMoleculeID () const
 
const G4StringGetName () const
 
G4double GetNbElectrons () const
 
const G4StringGetUserID () const
 
G4double GetVanDerVaalsRadius () const
 
G4MolecularConfigurationIonizeMolecule (G4int) const
 
G4MolecularConfigurationMoveOneElectron (G4int, G4int) const
 
void PrintState () const
 
G4MolecularConfigurationRemoveElectron (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 G4MolecularConfigurationCreateMolecularConfiguration (const G4String &userIdentifier, const G4MoleculeDefinition *, bool &wasAlreadyCreated)
 
static G4MolecularConfigurationCreateMolecularConfiguration (const G4String &userIdentifier, const G4MoleculeDefinition *, const G4String &label, bool &wasAlreadyCreated)
 
static G4MolecularConfigurationCreateMolecularConfiguration (const G4String &userIdentifier, const G4MoleculeDefinition *, const G4String &label, const G4ElectronOccupancy &eOcc, bool &wasAlreadyCreated)
 
static G4MolecularConfigurationCreateMolecularConfiguration (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 G4MolecularConfigurationGetMolecularConfiguration (const G4MoleculeDefinition *, const G4String &label)
 
static G4MolecularConfigurationGetMolecularConfiguration (const G4String &userID)
 
static G4MolecularConfigurationGetMolecularConfiguration (int moleculeID)
 
static int GetNumberOfSpecies ()
 
static G4MolecularConfigurationGetOrCreateMolecularConfiguration (const G4MoleculeDefinition *)
 
static G4MolecularConfigurationGetOrCreateMolecularConfiguration (const G4MoleculeDefinition *, const G4ElectronOccupancy &eOcc)
 
static G4MolecularConfigurationGetOrCreateMolecularConfiguration (const G4MoleculeDefinition *, int charge)
 
static std::map< G4String, G4MolecularConfiguration * > & GetUserIDTable ()
 
static G4MolecularConfigurationLoad (std::istream &)
 
static void SetGlobalTemperature (G4double)
 

Protected Member Functions

G4MolecularConfigurationChangeConfiguration (const G4ElectronOccupancy &newElectronOccupancy) const
 
G4MolecularConfigurationChangeConfiguration (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 ()
 
G4MolecularConfigurationoperator= (G4MolecularConfiguration &right)
 
void SetUserID (const G4String &userID)
 
 ~G4MolecularConfiguration ()
 

Static Protected Member Functions

static G4MolecularConfigurationManagerGetManager ()
 
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 G4ElectronOccupancyfElectronOccupancy
 
G4String fFormatedName
 
G4bool fIsFinalized
 
G4StringfLabel
 
const G4MoleculeDefinitionfMoleculeDefinition
 
G4int fMoleculeID
 
G4String fName
 
G4String fUserIdentifier
 

Static Protected Attributes

static G4MolecularConfigurationManagerfgManager = 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: