Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4MolecularConfiguration Class Reference

#include <G4MolecularConfiguration.hh>

Collaboration diagram for G4MolecularConfiguration:

Classes

class  G4MolecularConfigurationManager
 

Public Types

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

Public Member Functions

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

Static Public Member Functions

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

Protected Member Functions

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

Static Protected Member Functions

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

Protected Attributes

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

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

Constructor & Destructor Documentation

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

Definition at line 438 of file G4MolecularConfiguration.cc.

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

Here is the call graph for this function:

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

Definition at line 491 of file G4MolecularConfiguration.cc.

493 {
494  fMoleculeDefinition = moleculeDef;
495 
496  fMoleculeID = GetManager()->Insert(moleculeDef,
497  charge,
498  this);
499  fElectronOccupancy = 0;
500 
501  fDynCharge = charge;
503 
507 
509  fName += "^";
511 
513  fFormatedName += "^";
514  fFormatedName += "{";
516  fFormatedName += "}";
517 
518  fLabel = 0;
519 
521 
522  fIsFinalized = false;
523 }
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:372
G4int Insert(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc, G4MolecularConfiguration *molConf)
G4double GetDecayTime() const
static G4MolecularConfigurationManager * GetManager()
static double ReturnDefaultDiffCoeff(const G4Material *, double, const G4MolecularConfiguration *molConf)
G4double GetVanDerVaalsRadius() const
const G4String & GetFormatedName() const
const G4String & GetName() const
G4double GetDiffusionCoefficient() const
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

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

Definition at line 80 of file G4MolecularConfiguration.cc.

83 {
84  fMoleculeDefinition = moleculeDef;
85 
86  fLabel = new G4String(label);
87 
88  fMoleculeID = GetManager()->Insert(moleculeDef,
89  label,
90  this);
92 
93  fDynCharge = charge;
94 
96 
100 
102  fName += "^";
104 
106  fFormatedName += "^";
107  fFormatedName += "{";
109  fFormatedName += "}";
110 
112  fIsFinalized = false;
113 }
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:372
G4int Insert(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc, G4MolecularConfiguration *molConf)
G4double GetDecayTime() const
static G4MolecularConfigurationManager * GetManager()
static double ReturnDefaultDiffCoeff(const G4Material *, double, const G4MolecularConfiguration *molConf)
G4double GetVanDerVaalsRadius() const
const G4String & GetFormatedName() const
const G4String & GetName() const
G4double GetDiffusionCoefficient() const
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

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

Definition at line 1444 of file G4MolecularConfiguration.cc.

1445 {
1446  fLabel = 0; // TODO: for now not serialized
1447  Unserialize(in);
1448  fMoleculeDefinition = 0;
1449  fElectronOccupancy = 0;
1450  if(fElectronOccupancy)
1451  {
1456 
1457  if(fLabel)
1458  {
1460  }
1461  }
1462  else if(fLabel)
1463  {
1465  }
1466  else if(fDynCharge)
1467  {
1469  }
1470 }
const G4ElectronOccupancy * FindCommonElectronOccupancy(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)
G4int Insert(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc, G4MolecularConfiguration *molConf)
void RecordNewlyLabeledConfiguration(G4MolecularConfiguration *molConf)
static G4MolecularConfigurationManager * GetManager()
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition
G4MolecularConfiguration::G4MolecularConfiguration ( const G4MolecularConfiguration &  )
protected
G4MolecularConfiguration::~G4MolecularConfiguration ( )
protected

Definition at line 527 of file G4MolecularConfiguration.cc.

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

Member Function Documentation

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

Definition at line 586 of file G4MolecularConfiguration.hh.

587 {
588  fDiffParam = para;
589 }
G4MolecularConfiguration * G4MolecularConfiguration::AddElectron ( G4int  orbit,
G4int  n = 1 
)

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 636 of file G4MolecularConfiguration.cc.

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 545 of file G4MolecularConfiguration.cc.

546 {
547  G4MolecularConfiguration* output =
549  newElectronOccupancy);
550 
551  if (!output)
552  {
554  newElectronOccupancy);
555  }
556  return output;
557 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

G4MolecularConfiguration * G4MolecularConfiguration::ChangeConfiguration ( int  charge)
protected

Definition at line 562 of file G4MolecularConfiguration.cc.

563 {
564  G4MolecularConfiguration* output =
566 
567  if (!output)
568  {
569  output = new G4MolecularConfiguration(fMoleculeDefinition, charge);
570  }
571  return output;
572 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

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

Definition at line 824 of file G4MolecularConfiguration.cc.

825 {
826  if (fElectronOccupancy == 0)
827  {
828  G4String functionName(function);
829  G4ExceptionDescription description;
830  description
831  << "No G4ElectronOccupancy was defined for molecule definition : "
833  << ". The definition was probably defined using the charge state, "
834  "rather than electron state.";
835 
836  G4Exception(functionName, "", FatalErrorInArgument, description);
837  }
838 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4String & GetName() const
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

void G4MolecularConfiguration::CreateDefaultDiffCoeffParam ( )
protected

Definition at line 1516 of file G4MolecularConfiguration.cc.

1517 {
1518  if(bool(fDiffParam) == false)
1519  {
1521  }
1522 }
static double ReturnDefaultDiffCoeff(const G4Material *, double, const G4MolecularConfiguration *molConf)

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 1099 of file G4MolecularConfiguration.cc.

1102 {
1103  wasAlreadyCreated = false;
1104  G4MolecularConfiguration* preRegisteredMolConf =
1105  GetManager()->GetMolecularConfiguration(userIdentifier);
1106 
1107  if(preRegisteredMolConf)
1108  {
1109  if(preRegisteredMolConf->GetDefinition() == molDef)
1110  {
1111  wasAlreadyCreated = true;
1112  return preRegisteredMolConf;
1113  }
1114  }
1115 
1116  if(molDef->GetGroundStateElectronOccupancy())
1117  {
1118  const G4ElectronOccupancy& elecOcc = *molDef
1120  G4MolecularConfiguration* molConf =
1121  GetManager()->GetMolecularConfiguration(molDef, elecOcc);
1122 
1123  if(molConf)
1124  {
1125  if(molConf->fUserIdentifier == "")
1126  {
1127  molConf->fUserIdentifier = userIdentifier;
1128  }
1129  else if(molConf->fUserIdentifier != userIdentifier)
1130  {
1131  G4ExceptionDescription errMsg;
1132  errMsg << "A molecular configuration for the definition named "
1133  << molDef->GetName() << " has already been created "
1134  "and recorded with a different user ID "
1135  << molConf->fUserIdentifier;
1136  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1137  "DOUBLE_CREATION",
1139  errMsg);
1140  }
1141 // TODO exception
1142  G4ExceptionDescription errMsg;
1143  errMsg << "A molecular configuration for the definition named "
1144  << molDef->GetName() << " has already been created.";
1145  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1146  "DOUBLE_CREATION",
1147  JustWarning,
1148  errMsg);
1149  wasAlreadyCreated = true;
1150  return molConf;
1151  }
1152  else
1153  {
1154  // G4cout << "Create molConf for " << molDef->GetName() << G4endl;
1155  G4MolecularConfiguration* newConf = new G4MolecularConfiguration(molDef,
1156  elecOcc);
1157  newConf->fUserIdentifier = userIdentifier;
1158 
1159  GetManager()->AddUserID(userIdentifier, newConf);
1160 
1161 // G4MoleculeTable::Instance()->RecordMolecularConfiguration(userIdentifier,
1162 // newConf);
1163  return newConf;
1164  }
1165  }
1166  else
1167  {
1168  return CreateMolecularConfiguration(userIdentifier,
1169  molDef,
1170  molDef->GetName(),
1171  molDef->GetCharge(),
1172  wasAlreadyCreated);
1173  }
1174 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void AddUserID(const G4String &name, G4MolecularConfiguration *molecule)
static G4MolecularConfigurationManager * GetManager()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
const G4String & GetName() const
const G4MoleculeDefinition * GetDefinition() const
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
static G4MolecularConfiguration * CreateMolecularConfiguration(const G4String &userIdentifier, const G4MoleculeDefinition *, bool &wasAlreadyCreated)

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 1246 of file G4MolecularConfiguration.cc.

1251 {
1252  assert(label != "");
1253  wasAlreadyCreated = false;
1254 
1255  G4MolecularConfiguration* molConf =
1256  GetManager()->GetMolecularConfiguration(molDef, eOcc);
1257 
1258  if(molConf)
1259  {
1260  if(molConf->GetElectronOccupancy())
1261  {
1262  if(*molConf->GetElectronOccupancy() == eOcc)
1263  {
1264  if(molConf->fLabel && *molConf->fLabel == label)
1265  {
1266  wasAlreadyCreated = true;
1267  return molConf;
1268  }
1269  else if(molConf->fLabel == 0)
1270  {
1271  wasAlreadyCreated = true;
1272  molConf->SetLabel(label);
1273  return molConf;
1274  }
1275  else if(*molConf->fLabel == "")
1276  {
1277  wasAlreadyCreated = true;
1278  molConf->SetLabel(label);
1279  return molConf;
1280  }
1281  }
1282  }
1283 
1284 
1285  molConf->PrintState();
1286  G4ExceptionDescription errMsg ;
1287  errMsg << "A molecular configuration for the definition named "
1288  << molDef->GetName()
1289  << " has already been created "
1290  "with user ID "
1291  << molConf->fUserIdentifier
1292  << " and possible different electronic state";
1293  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1294  "DOUBLE_CREATION",
1296  errMsg);
1297  }
1298  else
1299  {
1300  G4MolecularConfiguration* newConf =
1301  new G4MolecularConfiguration(molDef,
1302  eOcc,
1303  label);
1304  newConf->fUserIdentifier = userIdentifier;
1305 
1306  GetManager()->AddUserID(userIdentifier, newConf);
1307 
1308 // G4MoleculeTable::Instance()->
1309 // RecordMolecularConfiguration(userIdentifier, newConf);
1310  return newConf;
1311  }
1312  return molConf;
1313 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void AddUserID(const G4String &name, G4MolecularConfiguration *molecule)
const G4ElectronOccupancy * GetElectronOccupancy() const
static G4MolecularConfigurationManager * GetManager()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
const G4String & GetName() const
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

Here is the call graph for this function:

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

Definition at line 1006 of file G4MolecularConfiguration.cc.

1011 {
1012  wasAlreadyCreated = false;
1013  G4MolecularConfiguration* molConf =
1014  GetManager()->GetMolecularConfiguration(molDef, charge);
1015 
1016  if (molConf)
1017  {
1018  if(molConf->fLabel == 0)
1019  {
1020  molConf->SetLabel(label);
1021  G4ExceptionDescription wMsg ;
1022  wMsg << "The molecular configuration for the definition named "
1023  << molDef->GetName()
1024  << " with charge " << charge << " has already been created "
1025  "but with NO label";
1026  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1027  "DOUBLE_CREATION",
1028  JustWarning,
1029  wMsg);
1030  }
1031  else if(*(molConf->fLabel) == "" )
1032  {
1033  molConf->SetLabel(label);
1034  }
1035  else if(*(molConf->fLabel) != label)
1036  {
1037  G4ExceptionDescription errMsg ;
1038  errMsg << "The molecular configuration for the definition named "
1039  << molDef->GetName()
1040  << " with charge " << charge << " has already been created "
1041  "but with a different label :"
1042  << molConf->GetLabel();
1043  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1044  "DOUBLE_CREATION",
1046  errMsg);
1047  // KILL APP
1048  }
1049 
1050  if(molConf->fUserIdentifier == "")
1051  {
1052  molConf->fUserIdentifier = userIdentifier;
1053 
1054  G4ExceptionDescription wMsg ;
1055  wMsg << "The molecular configuration for the definition named "
1056  << molDef->GetName()
1057  << " with label " << label << " has already been created.";
1058  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1059  "DOUBLE_CREATION",
1060  JustWarning,
1061  wMsg);
1062  }
1063  else if(molConf->fUserIdentifier != userIdentifier)
1064  {
1065  G4ExceptionDescription errMsg ;
1066  errMsg << "The molecular configuration for the definition named "
1067  << molDef->GetName()
1068  << " with label " << label << " has already been created "
1069  "BUT with a different user ID :"
1070  << molConf->fUserIdentifier;
1071  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1072  "DOUBLE_CREATION",
1074  errMsg);
1075  // KILL APP
1076  }
1077 
1078  wasAlreadyCreated = true;
1079  return molConf;
1080  }
1081  else
1082  {
1083  G4MolecularConfiguration* newConf =
1084  new G4MolecularConfiguration(molDef, label, charge);
1085  newConf->fUserIdentifier = userIdentifier;
1086 
1087  GetManager()->AddUserID(userIdentifier, newConf);
1088 
1089 // G4MoleculeTable::Instance()->RecordMolecularConfiguration(userIdentifier,
1090 // newConf);
1091  return newConf;
1092  }
1093 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void AddUserID(const G4String &name, G4MolecularConfiguration *molecule)
static G4MolecularConfigurationManager * GetManager()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
const G4String & GetName() const
const G4String & GetLabel() const
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

Here is the call graph for this function:

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

Definition at line 1180 of file G4MolecularConfiguration.cc.

1184 {
1185  assert(label != "");
1186  wasAlreadyCreated = false;
1187 
1188  G4MolecularConfiguration* molConf =
1189  GetManager()->GetMolecularConfiguration(molDef, label);
1190  if(molConf)
1191  {
1192  if(molConf->fLabel
1193  && *molConf->fLabel == label)
1194  {
1195  wasAlreadyCreated = true;
1196  return molConf;
1197  }
1198  else if(molConf->fLabel == 0)
1199  {
1200  wasAlreadyCreated = true;
1201  molConf->SetLabel(label);
1202  return molConf;
1203  }
1204  else if(*molConf->fLabel == "")
1205  {
1206  wasAlreadyCreated = true;
1207  molConf->SetLabel(label);
1208  return molConf;
1209  }
1210 
1211  molConf->PrintState();
1212  G4ExceptionDescription errMsg ;
1213  errMsg << "A molecular configuration for the definition named "
1214  << molDef->GetName()
1215  << " has already been created "
1216  "with user ID "
1217  << molConf->fUserIdentifier << " and label "
1218  << molConf->GetLabel();
1219  G4Exception("G4MolecularConfiguration::CreateMolecularConfiguration",
1220  "DOUBLE_CREATION",
1222  errMsg);
1223  // KILL APP
1224  }
1225  else
1226  {
1227  G4MolecularConfiguration* newConf =
1228  new G4MolecularConfiguration(molDef,
1229  label,
1230  molDef->GetCharge());
1231  newConf->fUserIdentifier = userIdentifier;
1232 
1233  GetManager()->AddUserID(userIdentifier, newConf);
1234 
1235 // G4MoleculeTable::Instance()->
1236 // RecordMolecularConfiguration(userIdentifier, newConf);
1237  return newConf;
1238  }
1239  return molConf;
1240 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void AddUserID(const G4String &name, G4MolecularConfiguration *molecule)
static G4MolecularConfigurationManager * GetManager()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
const G4String & GetName() const
const G4String & GetLabel() const
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

Here is the call graph for this function:

void G4MolecularConfiguration::DeleteManager ( )
static

Definition at line 427 of file G4MolecularConfiguration.cc.

428 {
430  if (fgManager) delete fgManager;
431  fgManager = 0;
432  lock.unlock();
433 }
static G4MolecularConfigurationManager * fgManager

Here is the call graph for this function:

Here is the caller graph for this function:

double G4MolecularConfiguration::DiffCoeffWater ( double  temperature_K)
static

Definition at line 1483 of file G4MolecularConfiguration.cc.

1484 {
1485  return pow(10, 4.311
1486  - 2.722e3/temperature_K
1487  + 8.565e5/(temperature_K *temperature_K)
1488  - 1.181e8/(temperature_K*temperature_K*temperature_K ))*1e-9*m2/s;
1489 }
const XML_Char * s
Definition: expat.h:262
static constexpr double m2
Definition: G4SIunits.hh:130

Here is the caller graph for this function:

G4MolecularConfiguration * G4MolecularConfiguration::ExciteMolecule ( G4int  ExcitedLevel)

Method used in Geant4-DNA to excite water molecules

Definition at line 588 of file G4MolecularConfiguration.cc.

589 {
590 // MakeExceptionIfFinalized();
591  CheckElectronOccupancy(__func__);
592  G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
593 
594  newElectronOccupancy.RemoveElectron(ExcitedLevel, 1);
595  newElectronOccupancy.AddElectron(5, 1);
596 
597  return ChangeConfiguration(newElectronOccupancy);
598 }
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
void CheckElectronOccupancy(const char *line) const
const G4ElectronOccupancy * fElectronOccupancy

Here is the call graph for this function:

Here is the caller graph for this function:

void G4MolecularConfiguration::Finalize ( )
inline

Definition at line 574 of file G4MolecularConfiguration.hh.

Here is the call graph for this function:

void G4MolecularConfiguration::FinalizeAll ( )
static

Definition at line 1562 of file G4MolecularConfiguration.cc.

1563 {
1564  const std::vector<G4MolecularConfiguration*>& species =
1566 
1567  for(size_t i = 0; i < species.size() ; ++i)
1568  {
1569  species[i]->Finalize();
1570  }
1571 
1572 }
static G4MolecularConfigurationManager * GetManager()
const std::vector< G4MolecularConfiguration * > & GetAllSpecies()

Here is the caller graph for this function:

G4int G4MolecularConfiguration::GetAtomsNumber ( ) const

Returns the nomber of atoms compouning the molecule

Definition at line 737 of file G4MolecularConfiguration.cc.

738 {
740 }
const G4MoleculeDefinition * fMoleculeDefinition

Here is the caller graph for this function:

G4int G4MolecularConfiguration::GetCharge ( ) const
inline

Returns the charge of molecule.

Definition at line 531 of file G4MolecularConfiguration.hh.

532 {
533  return fDynCharge;
534 }

Here is the caller graph for this function:

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

Definition at line 790 of file G4MolecularConfiguration.cc.

791 {
792  // if (fElectronOccupancy == 0) return 0;
794 }
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannels(const G4MolecularConfiguration *) const
const G4MoleculeDefinition * fMoleculeDefinition

Here is the caller graph for this function:

G4double G4MolecularConfiguration::GetDecayTime ( ) const
inline

Returns the decay time of the molecule.

Definition at line 515 of file G4MolecularConfiguration.hh.

516 {
517  return fDynDecayTime;
518 }

Here is the caller graph for this function:

const G4MoleculeDefinition * G4MolecularConfiguration::GetDefinition ( ) const
inline

Definition at line 488 of file G4MolecularConfiguration.hh.

489 {
490  return fMoleculeDefinition;
491 }
const G4MoleculeDefinition * fMoleculeDefinition

Here is the caller graph for this function:

G4double G4MolecularConfiguration::GetDiffusionCoefficient ( ) const
inline

Returns the diffusion coefficient D.

Definition at line 504 of file G4MolecularConfiguration.hh.

505 {
507 }

Here is the caller graph for this function:

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

Definition at line 592 of file G4MolecularConfiguration.hh.

594 {
595  return fDiffParam(material, temperature, this);
596 }
const G4ElectronOccupancy * G4MolecularConfiguration::GetElectronOccupancy ( ) const
inline

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

Definition at line 493 of file G4MolecularConfiguration.hh.

494 {
495  return fElectronOccupancy;
496 }
const G4ElectronOccupancy * fElectronOccupancy

Here is the caller graph for this function:

G4int G4MolecularConfiguration::GetFakeParticleID ( ) const

Definition at line 798 of file G4MolecularConfiguration.cc.

799 {
801  else G4Exception("G4MolecularConfiguration::GetMoleculeID",
802  "",
804  "You should first enter a molecule defintion");
805 
806  return INT_MAX;
807 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define INT_MAX
Definition: templates.hh:111
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

Here is the caller graph for this function:

const G4String & G4MolecularConfiguration::GetFormatedName ( ) const

Returns the formated name of the molecule

Definition at line 722 of file G4MolecularConfiguration.cc.

723 {
724 // if (fFormatedName.isNull())
725 // {
726 // fFormatedName = fMoleculeDefinition->GetFormatedName();
727 // fFormatedName += "^";
728 // fFormatedName += "{";
729 // fFormatedName += G4UIcommand::ConvertToString(fDynCharge);
730 // fFormatedName += "}";
731 // }
732  return fFormatedName;
733 }

Here is the caller graph for this function:

G4double G4MolecularConfiguration::GetGlobalTemperature ( )
static

Definition at line 1534 of file G4MolecularConfiguration.cc.

1535 {
1536  return fgTemperature;
1537 }

Here is the caller graph for this function:

const G4String & G4MolecularConfiguration::GetLabel ( ) const
inline

Definition at line 566 of file G4MolecularConfiguration.hh.

567 {
568  if(fLabel == 0)
569  fLabel = new G4String();
570 
571  return (*fLabel);
572 }

Here is the caller graph for this function:

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

Definition at line 131 of file G4MolecularConfiguration.cc.

132 {
133  if (!fgManager)
134  {
136  if (!fgManager) // double check for MT
137  {
140  }
141  lock.unlock();
142  }
143 
144  return fgManager;
145 }
static G4MolecularConfigurationManager * fgManager

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4MolecularConfiguration::GetMass ( ) const
inline

Returns the total mass of the molecule.

Definition at line 542 of file G4MolecularConfiguration.hh.

543 {
544  return fDynMass;
545 }

Here is the caller graph for this function:

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

Definition at line 989 of file G4MolecularConfiguration.cc.

991 {
992  return GetManager()->GetMolecularConfiguration(molDef, label);
993 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

Here is the call graph for this function:

Here is the caller graph for this function:

G4MolecularConfiguration * G4MolecularConfiguration::GetMolecularConfiguration ( int  moleculeID)
static

Definition at line 998 of file G4MolecularConfiguration.cc.

999 {
1000  return GetManager()->GetMolecularConfiguration(moleculeID);
1001 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

Here is the call graph for this function:

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

Definition at line 1555 of file G4MolecularConfiguration.cc.

1556 {
1557  return GetManager()->GetMolecularConfiguration(userID);
1558 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

Here is the call graph for this function:

G4int G4MolecularConfiguration::GetMoleculeID ( ) const
inline

Definition at line 547 of file G4MolecularConfiguration.hh.

548 {
549  return fMoleculeID;
550 }

Here is the caller graph for this function:

const G4String & G4MolecularConfiguration::GetName ( ) const

Returns the name of the molecule

Definition at line 707 of file G4MolecularConfiguration.cc.

708 {
709 // if (fName.isNull())
710 // {
711 // fName = fMoleculeDefinition->GetName();
712 // fName += "^";
713 // // fName+= "{";
714 // fName += G4UIcommand::ConvertToString(fDynCharge);
715 // // fName+= "}";
716 // }
717  return fName;
718 }

Here is the caller graph for this function:

G4double G4MolecularConfiguration::GetNbElectrons ( ) const

Returns the number of electron.

Definition at line 744 of file G4MolecularConfiguration.cc.

745 {
746  CheckElectronOccupancy(__func__);
748 }
G4int GetTotalOccupancy() const
void CheckElectronOccupancy(const char *line) const
const G4ElectronOccupancy * fElectronOccupancy

Here is the caller graph for this function:

int G4MolecularConfiguration::GetNumberOfSpecies ( )
static

Definition at line 67 of file G4MolecularConfiguration.cc.

Here is the caller graph for this function:

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

Definition at line 339 of file G4MolecularConfiguration.cc.

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 383 of file G4MolecularConfiguration.cc.

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

Here is the call graph for this function:

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

Definition at line 407 of file G4MolecularConfiguration.cc.

409 {
410  G4MolecularConfiguration* molConf =
411  GetManager()->GetMolecularConfiguration(molDef, charge);
412 
413  if(molConf)
414  {
415  return molConf;
416  }
417  else
418  {
419  G4MolecularConfiguration* newConf =
420  new G4MolecularConfiguration(molDef, charge);
421  return newConf;
422  }
423 }
static G4MolecularConfigurationManager * GetManager()
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
G4MolecularConfiguration * GetMolecularConfiguration(const G4MoleculeDefinition *molDef, const G4ElectronOccupancy &eOcc)

Here is the call graph for this function:

const G4String & G4MolecularConfiguration::GetUserID ( ) const
inline

Definition at line 580 of file G4MolecularConfiguration.hh.

581 {
582  return fUserIdentifier;
583 }
static std::map<G4String, G4MolecularConfiguration*>& G4MolecularConfiguration::GetUserIDTable ( )
inlinestatic

Definition at line 169 of file G4MolecularConfiguration.hh.

170  {
171  return GetManager()->GetUserIDTable();
172  }
std::map< G4String, G4MolecularConfiguration * > & GetUserIDTable()
static G4MolecularConfigurationManager * GetManager()

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4MolecularConfiguration::GetVanDerVaalsRadius ( ) const
inline

Definition at line 526 of file G4MolecularConfiguration.hh.

527 {
528  return fDynVanDerVaalsRadius;
529 }

Here is the caller graph for this function:

G4MolecularConfiguration * G4MolecularConfiguration::IonizeMolecule ( G4int  IonizedLevel)

Method used in Geant4-DNA to ionize water molecules

Definition at line 605 of file G4MolecularConfiguration.cc.

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 1437 of file G4MolecularConfiguration.cc.

1438 {
1439  return new G4MolecularConfiguration(in);
1440 }
G4MolecularConfiguration(const G4MoleculeDefinition *, const G4ElectronOccupancy &, const G4String &label="")
void G4MolecularConfiguration::MakeExceptionIfFinalized ( )
protected

Definition at line 115 of file G4MolecularConfiguration.cc.

116 {
117  if(fIsFinalized)
118  {
119  G4ExceptionDescription errMsg;
120  errMsg << "This molecular configuration " << GetName()
121  << " is already finalized. Therefore its "
122  " properties cannot be changed.";
123  G4Exception("G4MolecularConfiguration::MakeExceptionIfFinalized",
124  "CONF_FINALIZED",FatalException,errMsg);
125  }
126 }
const G4String & GetName() const
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

Here is the caller graph for this function:

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

Move one electron from an orbit to another.

Definition at line 678 of file G4MolecularConfiguration.cc.

680 {
681 // MakeExceptionIfFinalized();
682  CheckElectronOccupancy(__func__);
683  G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
684 
685  if (newElectronOccupancy.GetOccupancy(orbitToFree) >= 1)
686  {
687  newElectronOccupancy.RemoveElectron(orbitToFree, 1);
688  newElectronOccupancy.AddElectron(orbitToFill, 1);
689  }
690  else
691  {
692  G4String errMsg = "There is no electron on the orbit "
693  + G4UIcommand::ConvertToString(orbitToFree)
694  + " you want to free. The molecule's name is " + GetName();
695  G4Exception("G4MolecularConfiguration::MoveOneElectron",
696  "",
698  errMsg);
699  PrintState();
700  }
701 
702  return ChangeConfiguration(newElectronOccupancy);
703 }
const G4String & GetName() const
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:372
void CheckElectronOccupancy(const char *line) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4ElectronOccupancy * fElectronOccupancy

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 577 of file G4MolecularConfiguration.cc.

578 {
579 // if (&right == this) return *this;
580  return *this;
581 }
void G4MolecularConfiguration::PrintState ( ) const

Display the electronic state of the molecule.

Definition at line 752 of file G4MolecularConfiguration.cc.

753 {
754  G4cout << "-------------- Start Printing State " << GetName()
755  << " ---------------" << G4endl;
756 
757  if (fElectronOccupancy)
758  {
759  G4cout << "--------------Print electronic state of " << GetName()
760  << "---------------" << G4endl;
763  {
764  G4cout<<"At ground state"<<G4endl;
765  }
766  }
767  else
768  {
769  G4cout << "--- No electron occupancy set up ---" << G4endl;
770  }
771 
772  G4cout << "Charge :"
773  << fDynCharge
774  << G4endl;
775 
776  if(fLabel)
777  {
778  G4cout << "Label :"
779  << GetLabel()
780  << G4endl;
781  }
782  G4cout << "-------------- End Of State " << GetName()
783  << " -----------------------" << G4endl;
784 }
const G4String & GetName() const
G4GLOB_DLL std::ostream G4cout
const G4String & GetLabel() const
#define G4endl
Definition: G4ios.hh:61
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
const G4ElectronOccupancy * fElectronOccupancy
const G4MoleculeDefinition * fMoleculeDefinition

Here is the caller graph for this function:

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

Remove n electrons to a given orbit.

Definition at line 649 of file G4MolecularConfiguration.cc.

651 {
652 // MakeExceptionIfFinalized();
653  CheckElectronOccupancy(__func__);
654  G4ElectronOccupancy newElectronOccupancy(*fElectronOccupancy);
655 
656  if (newElectronOccupancy.GetOccupancy(orbit) != 0)
657  {
658  newElectronOccupancy.RemoveElectron(orbit, number);
659  }
660  else
661  {
662  G4String errMsg = "There is already no electron into the orbit "
664  + " you want to free. The molecule's name is " + GetName();
665  G4Exception("G4MolecularConfiguration::RemoveElectron",
666  "",
667  JustWarning,
668  errMsg);
669  PrintState();
670  }
671 
672  return ChangeConfiguration(newElectronOccupancy);
673 }
const G4String & GetName() const
G4MolecularConfiguration * ChangeConfiguration(const G4ElectronOccupancy &newElectronOccupancy)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:372
void CheckElectronOccupancy(const char *line) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4ElectronOccupancy * fElectronOccupancy

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 72 of file G4MolecularConfiguration.cc.

76 {
77  return molConf->fDynDiffusionCoefficient;
78 }

Here is the caller graph for this function:

void G4MolecularConfiguration::ScaleAllDiffusionCoefficientsOnWater ( double  temperature_K)
staticprotected

Definition at line 1495 of file G4MolecularConfiguration.cc.

1496 {
1497  double D_water_0 = DiffCoeffWater(fgTemperature);
1498  double D_water_f = DiffCoeffWater(temperature_K);
1499 
1500  G4cout << "Scaling factor = " << D_water_f/D_water_0 << G4endl;
1501 
1504 
1505  while(it())
1506  {
1507  G4MolecularConfiguration* conf = it.value();
1508  double D_0 = conf->GetDiffusionCoefficient() ;
1509  double D_f = D_water_f * D_0 /D_water_0;
1510  conf->SetDiffusionCoefficient(D_f);
1511  };
1512 }
G4GLOB_DLL std::ostream G4cout
static double DiffCoeffWater(double temperature_K)
static G4MoleculeTable * Instance()
G4ConfigurationIterator GetConfigurationIterator()
#define G4endl
Definition: G4ios.hh:61

Here is the call graph for this function:

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

Definition at line 1387 of file G4MolecularConfiguration.cc.

1388 {
1389  G4String moleculeName = fMoleculeDefinition->GetName();
1390  WRITE(out, moleculeName);
1391 
1392 // if(fLabel)
1393 // out << fLabel;
1394 // else
1395 // out << "";
1398  WRITE(out,fDynDecayTime);
1399  WRITE(out,fDynMass);
1400  WRITE(out,fDynCharge);
1401  WRITE(out,fMoleculeID);
1402  WRITE(out,fFormatedName);
1403  WRITE(out,fName);
1404  WRITE(out,fIsFinalized);
1405 }
void WRITE(std::ostream &out, const T &toBeSaved)
Definition: G4Serialize.hh:41
const G4String & GetName() const
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

void G4MolecularConfiguration::SetDecayTime ( G4double  dynDecayTime)
inline

Set the decay time of the molecule.

Definition at line 509 of file G4MolecularConfiguration.hh.

510 {
512  fDynDecayTime = dynDecayTime;
513 }

Here is the call graph for this function:

Here is the caller graph for this function:

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 developpers/mainteners of this package

Definition at line 498 of file G4MolecularConfiguration.hh.

499 {
501  fDynDiffusionCoefficient = dynDiffusionCoefficient;
502 }

Here is the call graph for this function:

Here is the caller graph for this function:

void G4MolecularConfiguration::SetGlobalTemperature ( G4double  temperature)
static

Definition at line 1526 of file G4MolecularConfiguration.cc.

1527 {
1529  fgTemperature = temperature;
1530 }
static void ScaleAllDiffusionCoefficientsOnWater(double temperature_K)

Here is the caller graph for this function:

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

Definition at line 552 of file G4MolecularConfiguration.hh.

553 {
554  assert(fLabel == 0 || *fLabel == "");
555  if(fLabel == 0)
556  {
557  fLabel = new G4String(label);
558  }
559  else
560  {
561  *fLabel = label;
562  }
564 }
static G4MolecularConfigurationManager * fgManager
void RecordNewlyLabeledConfiguration(G4MolecularConfiguration *molConf)

Here is the call graph for this function:

Here is the caller graph for this function:

void G4MolecularConfiguration::SetMass ( G4double  aMass)
inline

Set the total mass of the molecule.

Definition at line 536 of file G4MolecularConfiguration.hh.

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 1474 of file G4MolecularConfiguration.cc.

1475 {
1476  fUserIdentifier = userID;
1477  GetManager()->AddUserID(userID, this);
1478 // G4MoleculeTable::Instance()->RecordMolecularConfiguration(userID, this);
1479 }
void AddUserID(const G4String &name, G4MolecularConfiguration *molecule)
static G4MolecularConfigurationManager * GetManager()

Here is the caller graph for this function:

void G4MolecularConfiguration::SetVanDerVaalsRadius ( G4double  dynVanDerVaalsRadius)
inline

The Van Der Valls Radius of the molecule

Definition at line 520 of file G4MolecularConfiguration.hh.

521 {
523  fDynVanDerVaalsRadius = dynVanDerVaalsRadius;
524 }

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 1409 of file G4MolecularConfiguration.cc.

1410 {
1411  G4String moleculeName;
1412  READ(in, moleculeName);
1415 
1416 // G4String label;
1417 //
1418 // in.read((char*)(&label), sizeof(label));
1419 //
1420 // if(label)
1421 // fLabel = new G4String(label);
1422 // else
1423 // fLabel = 0;
1426  READ(in,fDynDecayTime);
1427  READ(in,fDynMass);
1428  READ(in,fDynCharge);
1429  READ(in,fMoleculeID);
1430  READ(in,fFormatedName);
1431  READ(in,fName);
1432  READ(in,fIsFinalized);
1433 }
G4MoleculeDefinition * GetMoleculeDefinition(const G4String &, bool mustExist=true)
static G4MoleculeTable * Instance()
void READ(std::istream &in, T &toBeSaved)
Definition: G4Serialize.hh:49
const G4MoleculeDefinition * fMoleculeDefinition

Here is the call graph for this function:

Member Data Documentation

G4DiffCoeffParam G4MolecularConfiguration::fDiffParam
protected

Definition at line 479 of file G4MolecularConfiguration.hh.

G4int G4MolecularConfiguration::fDynCharge
protected

Definition at line 472 of file G4MolecularConfiguration.hh.

G4double G4MolecularConfiguration::fDynDecayTime
protected

Definition at line 470 of file G4MolecularConfiguration.hh.

G4double G4MolecularConfiguration::fDynDiffusionCoefficient
protected

Definition at line 468 of file G4MolecularConfiguration.hh.

G4double G4MolecularConfiguration::fDynMass
protected

Definition at line 471 of file G4MolecularConfiguration.hh.

G4double G4MolecularConfiguration::fDynVanDerVaalsRadius
protected

Definition at line 469 of file G4MolecularConfiguration.hh.

const G4ElectronOccupancy* G4MolecularConfiguration::fElectronOccupancy
protected

Definition at line 464 of file G4MolecularConfiguration.hh.

G4String G4MolecularConfiguration::fFormatedName
protected

Definition at line 474 of file G4MolecularConfiguration.hh.

MolecularConfigurationManager * G4MolecularConfiguration::fgManager = 0
staticprotected

Definition at line 460 of file G4MolecularConfiguration.hh.

G4double G4MolecularConfiguration::fgTemperature = 298
staticprotected

Definition at line 480 of file G4MolecularConfiguration.hh.

G4bool G4MolecularConfiguration::fIsFinalized
protected

Definition at line 477 of file G4MolecularConfiguration.hh.

G4String* G4MolecularConfiguration::fLabel
mutableprotected

Definition at line 466 of file G4MolecularConfiguration.hh.

const G4MoleculeDefinition* G4MolecularConfiguration::fMoleculeDefinition
protected

Definition at line 463 of file G4MolecularConfiguration.hh.

G4int G4MolecularConfiguration::fMoleculeID
protected

Definition at line 473 of file G4MolecularConfiguration.hh.

G4String G4MolecularConfiguration::fName
protected

Definition at line 475 of file G4MolecularConfiguration.hh.

G4String G4MolecularConfiguration::fUserIdentifier
protected

Definition at line 476 of file G4MolecularConfiguration.hh.


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