205 G4cout <<
"G4DNAChemistryManager already deleted" <<
G4endl;
215 G4cout <<
"G4DNAChemistryManager::Notify ---> received G4State_Quit"
260 description <<
"Global components were not initialized.";
268 description <<
"Thread local components were not initialized.";
326 G4cout <<
"G4DNAChemistryManager::InitializeMaster() is called" <<
G4endl;
345 description <<
"No user chemistry list has been provided.";
346 G4Exception(
"G4DNAChemistryManager::InitializeMaster",
"NO_CHEM_LIST",
361 G4cout <<
"G4DNAChemistryManager::InitializeThread() is called"
369 G4cout <<
"G4DNAChemistryManager: Build the physics tables for "
379 G4cout <<
"G4DNAChemistryManager: Close geometry"
401 description <<
"No user chemistry list has been provided.";
402 G4Exception(
"G4DNAChemistryManager::InitializeThread",
"NO_CHEM_LIST",
421 G4cout <<
"G4DNAChemistryManager::InitializeFile() is called"
425 *
fpgOutput_tl << std::setprecision(6) << std::scientific;
427 << setw(14) <<
"Elec Modif" << setw(13) <<
"Energy (eV)"
428 << setw(22) <<
"X pos of parent [nm]" << setw(22)
429 <<
"Y pos of parent [nm]" << setw(22) <<
"Z pos of parent [nm]"
430 << setw(14) <<
"X pos [nm]" << setw(14) <<
"Y pos [nm]"
431 << setw(14) <<
"Z pos [nm]" <<
G4endl<< setw(21) <<
"#"
432 << setw(13) <<
"1)io/ex=0/1"
435 << setw(13) <<
"2)level=0...5"
462 ios_base::openmode mode)
466 G4cout <<
"G4DNAChemistryManager: Write chemical stage into "
492 G4cout <<
"G4DNAChemistryManager: Close File" <<
G4endl;
519 G4int electronicLevel,
520 const G4Track* theIncomingTrack)
528 switch (modification)
542 << setw(10) <<
"H2O" <<
left << modification <<
internal
543 <<
":" <<
right << electronicLevel <<
left << setw(11) <<
""
544 << std::setprecision(2) << std::fixed << setw(13)
545 << energy /
eV << std::setprecision(6) << std::scientific
559 switch (modification)
562 H2O -> AddElectron(5,1);
565 H2O -> ExciteMolecule(electronicLevel);
568 H2O -> IonizeMolecule(electronicLevel);
575 H2OTrack -> SetParentID(theIncomingTrack->
GetTrackID());
577 H2OTrack -> SetKineticEnergy(0.);
593 <<
"e_aq" << setw(14) << -1 << std::setprecision(2)
594 << std::fixed << setw(13)
596 << std::setprecision(6) << std::scientific << setw(22)
603 if (finalPosition != 0)
606 << (finalPosition->y()) /
nanometer << setw(14)
625 e_aqTrack -> SetTrackStatus(
fAlive);
626 e_aqTrack -> SetParentID(theIncomingTrack->
GetTrackID());
641 << setw(14) << -1 << std::setprecision(2) << std::fixed
642 << setw(13) << -1 << std::setprecision(6) << std::scientific
643 << setw(22) << (position.x()) /
nanometer << setw(22)
644 << (position.y()) /
nanometer << setw(22)
652 track -> SetTrackStatus(
fAlive);
653 track -> SetParentID(parentID);
664 const G4Track* theIncomingTrack)
671 << molecule->
GetName() << setw(14) << -1
672 << std::setprecision(2) << std::fixed << setw(13)
674 << std::setprecision(6) << std::scientific << setw(22)
687 track -> SetTrackStatus(
fAlive);
688 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()
G4double ExcitationEnergy(G4int level)
static G4H2O * Definition()
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
virtual bool IsPhysicsConstructor()
void CreateSolvatedElectron(const G4Track *, G4ThreeVector *finalPosition=0)
On the same idea as the previous method but for solvated electron.
static const double nanometer
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
void AddEmptyLineInOuputFile()
G4bool IsChemistryActivated()
static G4Scheduler * Instance()
static G4bool GetNewBoolValue(const char *paramString)
static G4DNAMolecularReactionTable * GetReactionTable()
G4bool fBuildPhysicsTable
G4DNAWaterExcitationStructure * GetExcitationLevel()
const G4String & GetName() const
Returns the name of the molecule.
static G4DNAChemistryManager * fgInstance
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
virtual G4bool Notify(G4ApplicationState requestedState)
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 void DeleteManager()
static void DeleteInstance()
You should rather use DeleteInstance than the destructor of this class.
virtual ~G4DNAChemistryManager()
static G4bool IsActivated()
G4double GetGlobalTime() const
static G4GeometryManager * GetInstance()
G4bool IsMultithreadedApplication()
virtual G4String GetCurrentValue(G4UIcommand *command)
G4bool fForceThreadReinitialization
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
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
virtual void ConstructTimeStepModel(G4DNAMolecularReactionTable *reactionTable)=0
static G4DNAChemistryManager * GetInstanceIfExists()
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()