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 /* 28 * G4DNAMolecularIRTModel.cc 29 * 30 * Created on: Jul 23, 2019 31 * Author: W. G. Shin 32 * J. Ramos-Mendez and B. Faddegon 33 */ 34 35 #include "G4DNAIRT.hh" 36 #include "G4DNAIRTMoleculeEncounterStepper.hh" 37 38 #include <G4DNAMolecularIRTModel.hh> 39 #include <G4DNAMolecularReactionTable.hh> 40 #include <G4DNASmoluchowskiReactionModel.hh> 41 #include <G4ExceptionSeverity.hh> 42 #include <G4Molecule.hh> 43 #include <G4ReferenceCast.hh> 44 #include <globals.hh> 45 46 #include <memory> 47 48 G4DNAMolecularIRTModel::G4DNAMolecularIRTModel(const G4String& name) 49 : G4DNAMolecularIRTModel(name, 50 std::make_unique<G4DNAIRTMoleculeEncounterStepper>(), 51 std::make_unique<G4DNAIRT>()) 52 { 53 } 54 55 G4DNAMolecularIRTModel::G4DNAMolecularIRTModel(const G4String& name, 56 std::unique_ptr<G4VITTimeStepComputer> pTimeStepper, 57 std::unique_ptr<G4VITReactionProcess> pReactionProcess) 58 : G4VITStepModel(std::move(pTimeStepper), 59 std::move(pReactionProcess), 60 name) 61 , fMolecularReactionTable(reference_cast<const G4DNAMolecularReactionTable*>(fpReactionTable)) 62 { 63 fType1 = G4Molecule::ITType(); 64 fType2 = G4Molecule::ITType(); 65 } 66 67 G4DNAMolecularIRTModel::~G4DNAMolecularIRTModel() = default; 68 69 void G4DNAMolecularIRTModel::Initialize() 70 { 71 if(fpReactionTable == nullptr) 72 { 73 SetReactionTable(G4DNAMolecularReactionTable::GetReactionTable()); 74 } 75 76 if(!fpReactionModel) 77 { 78 fpReactionModel = std::make_unique<G4DNASmoluchowskiReactionModel>(); 79 } 80 81 fpReactionModel->SetReactionTable((const G4DNAMolecularReactionTable*) fpReactionTable); 82 83 ((G4DNAIRT*) fpReactionProcess.get())->SetReactionModel(fpReactionModel.get()); 84 ((G4DNAIRTMoleculeEncounterStepper*) fpTimeStepper.get())->SetReactionModel(fpReactionModel.get()); 85 86 G4VITStepModel::Initialize(); 87 } 88 89 void G4DNAMolecularIRTModel::PrintInfo() 90 { 91 #ifdef G4VERBOSE 92 G4cout << fName << " will be used" << G4endl; 93 #endif 94 } 95 96 void G4DNAMolecularIRTModel::SetReactionModel(G4VDNAReactionModel* pReactionModel) 97 { 98 fpReactionModel.reset(pReactionModel); 99 } 100 101 G4VDNAReactionModel* G4DNAMolecularIRTModel::GetReactionModel() 102 { 103 return fpReactionModel.get(); 104 } 105