46 #ifndef G4MolecularConfiguration_ 47 #define G4MolecularConfiguration_ 1 68 if (totalOcc1 != totalOcc2)
70 return totalOcc1 < totalOcc2;
74 G4int occupancy1 = -1;
75 G4int occupancy2 = -1;
77 for (
G4int i = 0; i < sizeOrbit; i++)
82 if (occupancy1 != occupancy2)
84 return occupancy1 < occupancy2;
130 CreateMolecularConfiguration(
const G4String& userIdentifier,
132 bool& wasAlreadyCreated);
135 CreateMolecularConfiguration(
const G4String& userIdentifier,
139 bool& wasAlreadyCreated);
142 CreateMolecularConfiguration(
const G4String& userIdentifier,
146 bool& wasAlreadyCreated);
149 CreateMolecularConfiguration(
const G4String& userIdentifier,
152 bool& wasAlreadyCreated);
162 GetMolecularConfiguration(
int moleculeID);
165 GetMolecularConfiguration(
const G4String& userID);
167 static int GetNumberOfSpecies();
171 return GetManager()->GetUserIDTable();
175 static void DeleteManager();
177 static double DiffCoeffWater(
double temperature_K);
191 const G4String& GetFormatedName()
const;
195 G4int GetAtomsNumber()
const;
225 void PrintState()
const;
227 const std::vector<const G4MolecularDissociationChannel*>*
228 GetDecayChannel()
const;
230 G4int GetFakeParticleID()
const;
232 inline G4int GetMoleculeID()
const;
245 inline void SetDiffusionCoefficient(
G4double);
249 inline G4double GetDiffusionCoefficient()
const;
252 double temperature)
const;
260 inline G4double GetDecayTime()
const;
264 inline void SetVanDerVaalsRadius(
G4double);
265 inline G4double GetVanDerVaalsRadius()
const;
274 inline G4int GetCharge()
const;
288 inline void SetLabel(
const G4String&);
293 inline const G4String& GetLabel()
const;
296 static void FinalizeAll();
298 inline const G4String& GetUserID()
const;
300 static void SetGlobalTemperature(
G4double);
301 static G4double GetGlobalTemperature();
308 void Serialize(std::ostream&);
309 void Unserialize(std::istream&);
333 void CheckElectronOccupancy(
const char* line)
const;
334 void MakeExceptionIfFinalized();
335 void SetUserID(
const G4String& userID);
337 void CreateDefaultDiffCoeffParam();
338 static void ScaleAllDiffusionCoefficientsOnWater(
double temperature_K);
345 fMoleculeCreationMutex()
347 fLastMoleculeID = -1;
353 return fLastMoleculeID+1;
414 return fMolConfPerID;
433 typedef std::map<int,
435 typedef std::map<
const G4MoleculeDefinition*,
442 typedef std::map<
const G4MoleculeDefinition*,
447 typedef std::map<G4String, G4MolecularConfiguration*>
UserIDTable;
482 static double ReturnDefaultDiffCoeff(
const G4Material*,
490 return fMoleculeDefinition;
495 return fElectronOccupancy;
500 MakeExceptionIfFinalized();
501 fDynDiffusionCoefficient = dynDiffusionCoefficient;
506 return fDynDiffusionCoefficient;
511 MakeExceptionIfFinalized();
512 fDynDecayTime = dynDecayTime;
517 return fDynDecayTime;
522 MakeExceptionIfFinalized();
523 fDynVanDerVaalsRadius = dynVanDerVaalsRadius;
528 return fDynVanDerVaalsRadius;
538 MakeExceptionIfFinalized();
554 assert(fLabel == 0 || *fLabel ==
"");
576 CreateDefaultDiffCoeffParam();
582 return fUserIdentifier;
593 double temperature)
const 595 return fDiffParam(material, temperature,
this);
void SetLabel(const G4String &)
MolChargeConfTable fChargeTable
G4double fDynVanDerVaalsRadius
G4Mutex fMoleculeCreationMutex
static double fgTemperature
static G4Mutex fManagerCreationMutex
const G4MoleculeDefinition * GetDefinition() const
G4double fDynDiffusionCoefficient
std::function< double(const G4Material *, double, const G4MolecularConfiguration *)> G4DiffCoeffParam
std::vector< G4MolecularConfiguration * > fMolConfPerID
const G4ElectronOccupancy * GetElectronOccupancy() const
G4int GetSizeOfOrbit() const
G4DiffCoeffParam fDiffParam
static std::map< G4String, G4MolecularConfiguration * > & GetUserIDTable()
static G4MolecularConfigurationManager * fgManager
G4double GetVanDerVaalsRadius() const
std::map< G4String, G4MolecularConfiguration * > & GetUserIDTable()
void RecordNewlyLabeledConfiguration(G4MolecularConfiguration *molConf)
const G4String & GetLabel() const
G4double(* function)(G4double)
void Insert(const PVNodeID *pvPath, size_t pathLength, G4int index, Node *node)
bool operator()(const G4ElectronOccupancy &occ1, const G4ElectronOccupancy &occ2) const
int GetNumberOfCreatedSpecies()
void SetDiffusionCoefficient(G4double)
G4MolecularConfigurationManager()
MolElectronConfTable fElecOccTable
std::map< G4ElectronOccupancy, G4MolecularConfiguration *, comparator > ElectronOccupancyTable
MolLabelConfTable fLabelTable
const G4String & GetUserID() const
G4double GetDiffusionCoefficient() const
void SetDecayTime(G4double)
void SetVanDerVaalsRadius(G4double)
const std::vector< G4MolecularConfiguration * > & GetAllSpecies()
G4int GetTotalOccupancy() const
G4int GetOccupancy(G4int orbit) const
std::map< const G4MoleculeDefinition *, ElectronOccupancyTable > MolElectronConfTable
std::map< G4String, G4MolecularConfiguration * > UserIDTable
std::map< const G4MoleculeDefinition *, ChargeTable > MolChargeConfTable
std::map< const G4String, G4MolecularConfiguration * > LabelTable
const G4ElectronOccupancy * fElectronOccupancy
G4double GetDecayTime() const
const G4MoleculeDefinition * fMoleculeDefinition
void AddDiffCoeffParameterization(const G4DiffCoeffParam &)
G4int GetMoleculeID() const
std::map< int, G4MolecularConfiguration * > ChargeTable
std::map< const G4MoleculeDefinition *, std::map< const G4String, G4MolecularConfiguration * > > MolLabelConfTable