205 G4cout <<
"G4DNAChemistryManager already deleted" <<
G4endl;
215 G4cout <<
"G4DNAChemistryManager::Notify ---> received G4State_Quit"
250 description <<
"Global components were not initialized.";
258 description <<
"Thread local components were not initialized.";
316 G4cout <<
"G4DNAChemistryManager::InitializeMaster() is called" <<
G4endl;
335 description <<
"No user chemistry list has been provided.";
336 G4Exception(
"G4DNAChemistryManager::InitializeMaster",
"NO_CHEM_LIST",
351 G4cout <<
"G4DNAChemistryManager::InitializeThread() is called"
359 G4cout <<
"G4DNAChemistryManager: Build the physics tables for "
369 G4cout <<
"G4DNAChemistryManager: Close geometry"
391 description <<
"No user chemistry list has been provided.";
392 G4Exception(
"G4DNAChemistryManager::InitializeThread",
"NO_CHEM_LIST",
411 G4cout <<
"G4DNAChemistryManager::InitializeFile() is called"
415 *
fpgOutput_tl << std::setprecision(6) << std::scientific;
417 << setw(14) <<
"Elec Modif" << setw(13) <<
"Energy (eV)"
418 << setw(22) <<
"X pos of parent [nm]" << setw(22)
419 <<
"Y pos of parent [nm]" << setw(22) <<
"Z pos of parent [nm]"
420 << setw(14) <<
"X pos [nm]" << setw(14) <<
"Y pos [nm]"
421 << setw(14) <<
"Z pos [nm]" <<
G4endl<< setw(21) <<
"#"
422 << setw(13) <<
"1)io/ex=0/1"
425 << setw(13) <<
"2)level=0...5"
452 ios_base::openmode mode)
456 G4cout <<
"G4DNAChemistryManager: Write chemical stage into "
482 G4cout <<
"G4DNAChemistryManager: Close File" <<
G4endl;
509 G4int electronicLevel,
510 const G4Track* theIncomingTrack)
518 switch (modification)
532 << setw(10) <<
"H2O" <<
left << modification <<
internal
533 <<
":" <<
right << electronicLevel <<
left << setw(11) <<
""
534 << std::setprecision(2) << std::fixed << setw(13)
535 << energy /
eV << std::setprecision(6) << std::scientific
549 switch (modification)
552 H2O -> AddElectron(5,1);
555 H2O -> ExciteMolecule(electronicLevel);
558 H2O -> IonizeMolecule(electronicLevel);
565 H2OTrack -> SetParentID(theIncomingTrack->
GetTrackID());
567 H2OTrack -> SetKineticEnergy(0.);
583 <<
"e_aq" << setw(14) << -1 << std::setprecision(2)
584 << std::fixed << setw(13)
586 << std::setprecision(6) << std::scientific << setw(22)
593 if (finalPosition != 0)
596 << (finalPosition->y()) /
nanometer << setw(14)
615 e_aqTrack -> SetTrackStatus(
fAlive);
616 e_aqTrack -> SetParentID(theIncomingTrack->
GetTrackID());
631 << setw(14) << -1 << std::setprecision(2) << std::fixed
632 << setw(13) << -1 << std::setprecision(6) << std::scientific
633 << setw(22) << (position.x()) /
nanometer << setw(22)
634 << (position.y()) /
nanometer << setw(22)
642 track -> SetTrackStatus(
fAlive);
643 track -> SetParentID(parentID);
654 const G4Track* theIncomingTrack)
661 << molecule->
GetName() << setw(14) << -1
662 << std::setprecision(2) << std::fixed << setw(13)
664 << std::setprecision(6) << std::scientific << setw(22)
677 track -> SetTrackStatus(
fAlive);
678 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)
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()
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()