47 #include "G4DNAWaterExcitationStructure.hh" 48 #include "G4DNAWaterIonisationStructure.hh" 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;
552 G4DNAWaterExcitationStructure*
562 G4DNAWaterIonisationStructure*
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
601 << (theIncomingTrack->GetPosition().x()) /
nanometer 603 << (theIncomingTrack->GetPosition().y()) /
nanometer 605 << (theIncomingTrack->GetPosition().z()) /
nanometer 613 switch (modification)
616 H2O -> AddElectron(5,1);
619 H2O -> ExciteMolecule(electronicLevel);
622 H2O -> IonizeMolecule(electronicLevel);
627 theIncomingTrack->GetPosition());
629 H2OTrack -> SetParentID(theIncomingTrack->GetTrackID());
630 H2OTrack -> SetTrackStatus(fStopButAlive);
631 H2OTrack -> SetKineticEnergy(0.);
646 *
fpgOutput_tl << setw(11) << theIncomingTrack->GetTrackID() << setw(10)
647 <<
"e_aq" << setw(14) << -1 << std::setprecision(2)
648 << std::fixed << setw(13)
649 << theIncomingTrack->GetKineticEnergy() /
eV 650 << std::setprecision(6) << std::scientific << setw(22)
651 << (theIncomingTrack->GetPosition().x()) /
nanometer 653 << (theIncomingTrack->GetPosition().y()) /
nanometer 655 << (theIncomingTrack->GetPosition().z()) /
nanometer;
657 if (finalPosition != 0)
660 << (finalPosition->
y()) /
nanometer << setw(14)
670 G4Track * e_aqTrack(0);
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)
706 track -> SetTrackStatus(fAlive);
707 track -> SetParentID(parentID);
718 const G4Track* theIncomingTrack)
724 *
fpgOutput_tl << setw(11) << theIncomingTrack->GetTrackID() << setw(10)
725 << molecule->
GetName() << setw(14) << -1
726 << std::setprecision(2) << std::fixed << setw(13)
727 << theIncomingTrack->GetKineticEnergy() /
eV 728 << std::setprecision(6) << std::scientific << setw(22)
729 << (theIncomingTrack->GetPosition().x()) /
nanometer 731 << (theIncomingTrack->GetPosition().y()) /
nanometer 733 << (theIncomingTrack->GetPosition().z()) /
nanometer;
739 G4Track*
track = molecule->
BuildTrack(theIncomingTrack->GetGlobalTime(),
740 theIncomingTrack->GetPosition());
741 track -> SetTrackStatus(fAlive);
742 track -> SetParentID(theIncomingTrack->GetTrackID());
void WriteInto(const G4String &, std::ios_base::openmode mode=std::ios_base::out)
static G4VITTrackHolder * Instance()
void PushMoleculeAtParentTimeAndPlace(G4Molecule *&molecule, const G4Track *)
static void DeleteInstance()
virtual void ConstructReactionTable(G4DNAMolecularReactionTable *reactionTable)=0
static G4Electron_aq * Definition()
G4UIcmdWithADoubleAndUnit * fpScaleForNewTemperature
const char * data() const
static G4H2O * Definition()
static G4DNAMolecularReactionTable * Instance()
std::ostringstream G4ExceptionDescription
void CreateSolvatedElectron(const G4Track *, G4ThreeVector *finalPosition=0)
static const double nanometer
void ScaleReactionRateForNewTemperature(double temp_K)
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()
static G4DNAChemistryManager * fgInstance
bool IsPhysicsConstructor()
G4GLOB_DLL std::ostream G4cout
const G4String & GetName() const
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)
virtual void ConstructDissociationChannels()
static G4MoleculeTable * Instance()
static void DeleteManager()
void SetGlobalTemperature(double temp_K)
static void DeleteInstance()
virtual ~G4DNAChemistryManager()
static void SetGlobalTemperature(G4double)
static G4bool IsActivated()
static G4GeometryManager * GetInstance()
G4bool IsMultithreadedApplication()
virtual G4String GetCurrentValue(G4UIcommand *command)
G4bool fForceThreadReinitialization
G4bool fResetCounterWhenRunEnds
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
static G4DNAChemistryManager * Instance()
G4UIcmdWithoutParameter * fpRunChem
G4DNAWaterExcitationStructure * fpExcitationLevel
virtual void ResetCounter()
G4bool fPhysicsTableBuilt
void CreateWaterMolecule(ElectronicModification, G4int, const G4Track *)
G4bool fMasterInitialized
static void InitializeInstance()
static void Activated(G4bool flag=true)
void OpenGeometry(G4VPhysicalVolume *vol=0)
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()