Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // 27 /* 27 /* 28 * G4DNAMolecularIRTModel.cc 28 * G4DNAMolecularIRTModel.cc 29 * 29 * 30 * Created on: Jul 23, 2019 30 * Created on: Jul 23, 2019 31 * Author: W. G. Shin 31 * Author: W. G. Shin 32 * J. Ramos-Mendez and B. Faddego 32 * J. Ramos-Mendez and B. Faddegon 33 */ 33 */ 34 34 35 #include "G4DNAIRT.hh" << 35 #include <globals.hh> 36 #include "G4DNAIRTMoleculeEncounterStepper.hh" << 37 << 38 #include <G4DNAMolecularIRTModel.hh> << 39 #include <G4DNAMolecularReactionTable.hh> 36 #include <G4DNAMolecularReactionTable.hh> >> 37 #include <G4DNAMolecularIRTModel.hh> 40 #include <G4DNASmoluchowskiReactionModel.hh> 38 #include <G4DNASmoluchowskiReactionModel.hh> 41 #include <G4ExceptionSeverity.hh> 39 #include <G4ExceptionSeverity.hh> 42 #include <G4Molecule.hh> 40 #include <G4Molecule.hh> 43 #include <G4ReferenceCast.hh> 41 #include <G4ReferenceCast.hh> 44 #include <globals.hh> << 45 42 46 #include <memory> << 43 #include "G4DNAIRT.hh" >> 44 #include "G4DNAIRTMoleculeEncounterStepper.hh" 47 45 48 G4DNAMolecularIRTModel::G4DNAMolecularIRTModel 46 G4DNAMolecularIRTModel::G4DNAMolecularIRTModel(const G4String& name) 49 : G4DNAMolecularIRTModel(name, 47 : G4DNAMolecularIRTModel(name, 50 std::make_unique<G4DNAIRTMolec << 48 std::unique_ptr<G4DNAIRTMoleculeEncounterStepper>(new G4DNAIRTMoleculeEncounterStepper()), 51 std::make_unique<G4DNAIRT>()) << 49 std::unique_ptr<G4DNAIRT>(new G4DNAIRT())) 52 { 50 { 53 } 51 } 54 52 55 G4DNAMolecularIRTModel::G4DNAMolecularIRTModel 53 G4DNAMolecularIRTModel::G4DNAMolecularIRTModel(const G4String& name, 56 54 std::unique_ptr<G4VITTimeStepComputer> pTimeStepper, 57 55 std::unique_ptr<G4VITReactionProcess> pReactionProcess) 58 : G4VITStepModel(std::move(pTimeStepper), 56 : G4VITStepModel(std::move(pTimeStepper), 59 std::move(pReactionProces 57 std::move(pReactionProcess), 60 name) 58 name) 61 , fMolecularReactionTable(reference_cast<c 59 , fMolecularReactionTable(reference_cast<const G4DNAMolecularReactionTable*>(fpReactionTable)) 62 { 60 { 63 fType1 = G4Molecule::ITType(); 61 fType1 = G4Molecule::ITType(); 64 fType2 = G4Molecule::ITType(); 62 fType2 = G4Molecule::ITType(); 65 } 63 } 66 64 67 G4DNAMolecularIRTModel::~G4DNAMolecularIRTMode 65 G4DNAMolecularIRTModel::~G4DNAMolecularIRTModel() = default; 68 66 69 void G4DNAMolecularIRTModel::Initialize() 67 void G4DNAMolecularIRTModel::Initialize() 70 { 68 { 71 if(fpReactionTable == nullptr) 69 if(fpReactionTable == nullptr) 72 { 70 { 73 SetReactionTable(G4DNAMolecularReactio 71 SetReactionTable(G4DNAMolecularReactionTable::GetReactionTable()); 74 } 72 } 75 73 76 if(!fpReactionModel) 74 if(!fpReactionModel) 77 { 75 { 78 fpReactionModel = std::make_unique<G4D << 76 fpReactionModel.reset(new G4DNASmoluchowskiReactionModel()); 79 } 77 } 80 78 81 fpReactionModel->SetReactionTable((const G 79 fpReactionModel->SetReactionTable((const G4DNAMolecularReactionTable*) fpReactionTable); 82 80 83 ((G4DNAIRT*) fpReactionProcess.get())->Set 81 ((G4DNAIRT*) fpReactionProcess.get())->SetReactionModel(fpReactionModel.get()); 84 ((G4DNAIRTMoleculeEncounterStepper*) fpTim 82 ((G4DNAIRTMoleculeEncounterStepper*) fpTimeStepper.get())->SetReactionModel(fpReactionModel.get()); 85 83 86 G4VITStepModel::Initialize(); 84 G4VITStepModel::Initialize(); 87 } 85 } 88 86 89 void G4DNAMolecularIRTModel::PrintInfo() 87 void G4DNAMolecularIRTModel::PrintInfo() 90 { 88 { 91 #ifdef G4VERBOSE 89 #ifdef G4VERBOSE 92 G4cout << fName << " will be used" << G4en 90 G4cout << fName << " will be used" << G4endl; 93 #endif 91 #endif 94 } 92 } 95 93 96 void G4DNAMolecularIRTModel::SetReactionModel( 94 void G4DNAMolecularIRTModel::SetReactionModel(G4VDNAReactionModel* pReactionModel) 97 { 95 { 98 fpReactionModel.reset(pReactionModel); 96 fpReactionModel.reset(pReactionModel); 99 } 97 } 100 98 101 G4VDNAReactionModel* G4DNAMolecularIRTModel::G 99 G4VDNAReactionModel* G4DNAMolecularIRTModel::GetReactionModel() 102 { 100 { 103 return fpReactionModel.get(); 101 return fpReactionModel.get(); 104 } 102 } 105 103