Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 /* 27 * G4PhysChemIO.hh 28 * 29 * Created on: 3 févr. 2017 30 * Author: matkara 31 */ 32 #ifndef G4PHYSCHEMIO_HH_ 33 #define G4PHYSCHEMIO_HH_ 34 35 #include "G4VPhysChemIO.hh" 36 37 //------------------------------------------------------------------------------ 38 namespace G4PhysChemIO{ 39 40 class FormattedText: public G4VPhysChemIO 41 { 42 public: 43 FormattedText(); 44 ~FormattedText() override; 45 46 void InitializeMaster() override{} 47 void InitializeThread() override{} 48 void InitializeFile() override; 49 50 void NewRun() override{} 51 void NewEvent() override{} 52 53 /** 54 * When DNA physics model create a water molecule, you'll get a notification 55 * through this method. 56 * The ElectronicModification is a flag telling whether the molecule 57 * is ionized or excited, the electronic level is calculated by the 58 * model and the IncomingTrack is the track responsible for the creation 59 * of this molecule (electron, proton...) 60 */ 61 void CreateWaterMolecule(G4int electronicModif, 62 G4int /*electronicLevel*/, 63 G4double energy, 64 const G4Track* /*theIncomingTrack*/) override; 65 66 /** 67 * Same idea as the previous method but for solvated electron. 68 * This method should be used by the physics model of the ElectronSolvatation 69 * process. 70 */ 71 void CreateSolvatedElectron(const G4Track* /*theIncomingTrack*/, 72 G4ThreeVector* finalPosition = nullptr) override; 73 74 //============================================================================ 75 // FILE OPERATIONS 76 //============================================================================ 77 78 /** 79 * Tells the chemistry manager to write into a file 80 * the position and electronic state of the water molecule 81 * and the position thermalized or not of the solvated electron 82 */ 83 void WriteInto(const G4String&, 84 std::ios_base::openmode mode = std::ios_base::out) override; 85 void AddEmptyLineInOutputFile() override; 86 87 /** 88 * Close the file specified with WriteInto 89 */ 90 void CloseFile() override; 91 92 protected: 93 G4int fRunID; // unused 94 G4int fEventID; // unused 95 G4bool fFileInitialized; 96 std::ofstream fOfstream; 97 }; 98 99 //------------------------------------------------------------------------------ 100 101 class G4Analysis: public G4VPhysChemIO 102 { 103 public: 104 G4Analysis(G4VAnalysisManager*); 105 ~G4Analysis() override; 106 107 void InitializeMaster() override{} 108 void InitializeThread() override{} 109 void InitializeFile() override; 110 111 void NewRun() override{} 112 void NewEvent() override{} 113 114 /** 115 * Method used by DNA physics model to create a water molecule. 116 * The ElectronicModification is a flag telling wheter the molecule 117 * is ionized or excited, the electronic level is calculated by the 118 * model and the IncomingTrack is the track responsible for the creation 119 * of this molecule, for instance an electron. 120 */ 121 void CreateWaterMolecule(G4int electronicModif, 122 G4int /*electronicLevel*/, 123 G4double energy, 124 const G4Track* /*theIncomingTrack*/) override; 125 126 /** 127 * Same idea as the previous method but for solvated electron. 128 * This method should be used by the physics model of the ElectronSolvatation 129 * process. 130 */ 131 void CreateSolvatedElectron(const G4Track* /*theIncomingTrack*/, 132 G4ThreeVector* finalPosition = nullptr) override; 133 134 //============================================================================ 135 // FILE OPERATIONS 136 //============================================================================ 137 138 /** 139 * Tells the chemMan to write into a file 140 * the position and electronic state of the water molecule 141 * and the position thermalized or not of the solvated electron 142 */ 143 void WriteInto(const G4String&, std::ios_base::openmode mode = 144 std::ios_base::out) override; 145 void AddEmptyLineInOutputFile() override{} 146 147 /** 148 * Close the file specified with WriteInto 149 */ 150 void CloseFile() override; 151 152 protected: 153 G4VAnalysisManager* fpAnalysisManager; 154 int fNtupleID; 155 G4bool fFileInitialized; 156 }; 157 158 } 159 160 #endif // G4PHYSCHEMIO_HH_ 161