224 G4cout <<
"G4DNAChemistryManager already deleted" <<
G4endl;
234 G4cout <<
"G4DNAChemistryManager::Notify ---> received G4State_Quit"
302 description <<
"Global components were not initialized.";
310 description <<
"Thread local components were not initialized.";
373 G4cout <<
"G4DNAChemistryManager::InitializeMaster() is called" <<
G4endl;
399 description <<
"No user chemistry list has been provided.";
400 G4Exception(
"G4DNAChemistryManager::InitializeMaster",
"NO_CHEM_LIST",
415 G4cout <<
"G4DNAChemistryManager::InitializeThread() is called"
423 G4cout <<
"G4DNAChemistryManager: Build the physics tables for "
433 G4cout <<
"G4DNAChemistryManager: Close geometry"
455 description <<
"No user chemistry list has been provided.";
456 G4Exception(
"G4DNAChemistryManager::InitializeThread",
"NO_CHEM_LIST",
475 G4cout <<
"G4DNAChemistryManager::InitializeFile() is called"
479 *
fpgOutput_tl << std::setprecision(6) << std::scientific;
481 << setw(14) <<
"Elec Modif" << setw(13) <<
"Energy (eV)"
482 << setw(22) <<
"X pos of parent [nm]" << setw(22)
483 <<
"Y pos of parent [nm]" << setw(22) <<
"Z pos of parent [nm]"
484 << setw(14) <<
"X pos [nm]" << setw(14) <<
"Y pos [nm]"
485 << setw(14) <<
"Z pos [nm]" <<
G4endl<< setw(21) <<
"#"
486 << setw(13) <<
"1)io/ex=0/1"
489 << setw(13) <<
"2)level=0...5"
516 ios_base::openmode mode)
520 G4cout <<
"G4DNAChemistryManager: Write chemical stage into "
546 G4cout <<
"G4DNAChemistryManager: Close File" <<
G4endl;
573 G4int electronicLevel,
574 const G4Track* theIncomingTrack)
582 switch (modification)
596 << setw(10) <<
"H2O" <<
left << modification <<
internal
597 <<
":" <<
right << electronicLevel <<
left << setw(11) <<
""
598 << std::setprecision(2) << std::fixed << setw(13)
599 << energy /
eV << std::setprecision(6) << std::scientific
613 switch (modification)
616 H2O -> AddElectron(5,1);
619 H2O -> ExciteMolecule(electronicLevel);
622 H2O -> IonizeMolecule(electronicLevel);
629 H2OTrack -> SetParentID(theIncomingTrack->
GetTrackID());
631 H2OTrack -> SetKineticEnergy(0.);
647 <<
"e_aq" << setw(14) << -1 << std::setprecision(2)
648 << std::fixed << setw(13)
650 << std::setprecision(6) << std::scientific << setw(22)
657 if (finalPosition != 0)
660 << (finalPosition->y()) /
nanometer << setw(14)
679 e_aqTrack -> SetTrackStatus(
fAlive);
680 e_aqTrack -> SetParentID(theIncomingTrack->
GetTrackID());
695 << setw(14) << -1 << std::setprecision(2) << std::fixed
696 << setw(13) << -1 << std::setprecision(6) << std::scientific
697 << setw(22) << (position.x()) /
nanometer << setw(22)
698 << (position.y()) /
nanometer << setw(22)
706 track -> SetTrackStatus(
fAlive);
707 track -> SetParentID(parentID);
718 const G4Track* theIncomingTrack)
725 << molecule->
GetName() << setw(14) << -1
726 << std::setprecision(2) << std::fixed << setw(13)
728 << std::setprecision(6) << std::scientific << setw(22)
741 track -> SetTrackStatus(
fAlive);
742 track -> SetParentID(theIncomingTrack->
GetTrackID());
void WriteInto(const G4String &, std::ios_base::openmode mode=std::ios_base::out)
Tells the chemMan to write into a file the position and electronic state of the water molecule and th...
static G4VITTrackHolder * Instance()
void PushMoleculeAtParentTimeAndPlace(G4Molecule *&molecule, const G4Track *)
WARNING : In case chemistry is not activated, PushMoleculeAtParentTimeAndPlace will take care of dele...
static void DeleteInstance()
virtual void ConstructReactionTable(G4DNAMolecularReactionTable *reactionTable)=0
static G4Electron_aq * Definition()
G4UIcmdWithADoubleAndUnit * fpScaleForNewTemperature
G4double ExcitationEnergy(G4int level)
static G4H2O * Definition()
static G4DNAMolecularReactionTable * Instance()
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
void CreateSolvatedElectron(const G4Track *, G4ThreeVector *finalPosition=0)
On the same idea as the previous method but for solvated electron.
static const double nanometer
void ScaleReactionRateForNewTemperature(double temp_K)
WARNING: THIS CLASS IS A PROTOTYPE G4DNAChemistryManager is called from the physics models...
const G4ThreeVector & GetPosition() const
virtual void Push(G4Track *)
void SetChemistryActivation(G4bool)
static G4String ConvertToString(G4bool boolVal)
G4DNAWaterIonisationStructure * fpIonisationLevel
G4UIcmdWithoutParameter * fpSkipReactionsFromChemList
void AddEmptyLineInOuputFile()
void Finalize(G4MoleculeDefinition *)
G4bool IsChemistryActivated()
static G4Scheduler * Instance()
static G4bool GetNewBoolValue(const char *paramString)
static G4double ConvertToDimensionedDouble(const char *st)
static G4DNAMolecularReactionTable * GetReactionTable()
G4bool fBuildPhysicsTable
G4DNAWaterExcitationStructure * GetExcitationLevel()
const G4String & GetName() const
Returns the name of the molecule.
static G4DNAChemistryManager * fgInstance
bool IsPhysicsConstructor()
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
virtual G4bool Notify(G4ApplicationState requestedState)
static G4MoleculeCounter * Instance()
virtual void SetNewValue(G4UIcommand *, G4String)
G4VUserChemistryList * fpUserChemistryList
void PushMolecule(G4Molecule *&molecule, double time, const G4ThreeVector &position, int parentID)
WARNING : In case chemistry is not activated, PushMolecule will take care of deleting the transfered ...
virtual void ConstructDissociationChannels()
static G4MoleculeTable * Instance()
static void DeleteManager()
void SetGlobalTemperature(double temp_K)
static void DeleteInstance()
You should rather use DeleteInstance than the destructor of this class.
virtual ~G4DNAChemistryManager()
static void SetGlobalTemperature(G4double)
static G4bool IsActivated()
G4double GetGlobalTime() const
static G4GeometryManager * GetInstance()
G4bool IsMultithreadedApplication()
virtual G4String GetCurrentValue(G4UIcommand *command)
G4bool fForceThreadReinitialization
G4bool fResetCounterWhenRunEnds
G4double IonisationEnergy(G4int level)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
const char * data() const
static G4DNAChemistryManager * Instance()
G4UIcmdWithoutParameter * fpRunChem
G4DNAWaterExcitationStructure * fpExcitationLevel
virtual void ResetCounter()
G4bool fPhysicsTableBuilt
G4double energy(const ThreeVector &p, const G4double m)
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
Method used by DNA physics model to create a water molecule.
void CloseFile()
Close the file specified with WriteInto.
G4bool fMasterInitialized
static void InitializeInstance()
static void Activated(G4bool flag=true)
void OpenGeometry(G4VPhysicalVolume *vol=0)
Class Description The dynamic molecule holds all the data that change for a molecule It has a pointer...
void Gun(G4ITGun *, bool physicsTableToBuild=true)
static const double picosecond
void PrepareMolecularConfiguration()
virtual void ConstructTimeStepModel(G4DNAMolecularReactionTable *reactionTable)=0
static G4DNAChemistryManager * GetInstanceIfExists()
G4UIcmdWithoutParameter * fpInitChem
G4bool CloseGeometry(G4bool pOptimise=true, G4bool verbose=false, G4VPhysicalVolume *vol=0)
G4DNAWaterIonisationStructure * GetIonisationLevel()
G4UIdirectory * fpChemDNADirectory
static G4ThreadLocal std::ofstream * fpgOutput_tl
G4UIcmdWithABool * fpActivateChem
static G4ThreadLocal G4bool * fpgThreadInitialized_tl
static void DeleteInstance()