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 // Contact: Mathieu Karamitros (kara (AT) cenbg . in2p3 . fr) 27 // 28 // WARNING : This class is released as a prototype. 29 // It might strongly evolve or even disapear in the next releases. 30 // 31 // The code is developed in the framework of the ESA AO7146 32 // 33 // We would be very happy hearing from you, send us your feedback! :) 34 // 35 // In order for Geant4-DNA to be maintained and still open-source, 36 // article citations are crucial. 37 // If you use Geant4-DNA chemistry and you publish papers about your software, 38 // in addition to the general paper on Geant4-DNA: 39 // 40 // Int. J. Model. Simul. Sci. Comput. 1 (2010) 157–178 41 // 42 // we ask that you please cite the following reference papers on chemistry: 43 // 44 // J. Comput. Phys. 274 (2014) 841-882 45 // Prog. Nucl. Sci. Tec. 2 (2011) 503-508 46 // 47 // ---------------------------------------------------------------- 48 // GEANT 4 class header file 49 // 50 // History: first implementation, Alfonso Mantero 6 Mar 2009 51 // ---------------------------------------------------------------- 52 // 53 54 #pragma once 55 56 #include <vector> 57 #include <map> 58 #include "G4VMolecularDissociationDisplacer.hh" 59 60 class G4Molecule; 61 class G4MolecularConfiguration; 62 63 class G4MolecularDissociationChannel 64 { 65 public: 66 G4MolecularDissociationChannel(); 67 explicit G4MolecularDissociationChannel(const G4String&); 68 ~G4MolecularDissociationChannel() = default; 69 G4MolecularDissociationChannel(const G4MolecularDissociationChannel&) = default; 70 71 G4MolecularDissociationChannel& 72 operator=(const G4MolecularDissociationChannel& right) = default; 73 74 using Product = const G4MolecularConfiguration; 75 using ProductList = std::vector<Product*>; 76 77 public: 78 79 void AddProduct(Product*, G4double displacement = 0.); 80 81 inline void SetName(const G4String&); 82 inline void SetEnergy(G4double); 83 inline void SetProbability(G4double); 84 inline void SetDecayTime(G4double); 85 inline void SetRMSMotherMoleculeDisplacement(G4double); 86 inline void SetDisplacementType(DisplacementType); 87 88 89 inline const G4String& GetName() const; 90 G4int GetNbProducts() const; 91 Product* GetProduct(int) const; 92 inline const std::vector<G4double>& GetRMSProductsDisplacement() const; 93 inline G4double GetEnergy() const; 94 inline G4double GetProbability() const; 95 inline G4double GetDecayTime() const; 96 inline G4double GetRMSMotherMoleculeDisplacement() const; 97 inline DisplacementType GetDisplacementType() const; 98 99 G4double GetRMSRadialDisplacementOfProduct(Product*); 100 101 private: 102 DisplacementType fDisplacementType; 103 G4String fName; 104 ProductList fProductsVector; 105 G4double fReleasedEnergy; 106 G4double fProbability; 107 G4double fDecayTime; 108 // Root Mean Square radial distance jump of the mother molecule 109 G4double fRMSMotherMoleculeDisplacement; 110 std::vector<G4double> fRMSProductsDisplacementVector; 111 }; 112 113 //______________________________________________________________________________ 114 115 inline void G4MolecularDissociationChannel::SetName(const G4String& value) 116 { 117 fName = value; 118 } 119 120 //______________________________________________________________________________ 121 122 inline void G4MolecularDissociationChannel::SetEnergy(G4double value) 123 { 124 fReleasedEnergy = value; 125 } 126 127 //______________________________________________________________________________ 128 129 inline void G4MolecularDissociationChannel::SetProbability(G4double value) 130 { 131 fProbability = value; 132 } 133 134 //______________________________________________________________________________ 135 136 inline void G4MolecularDissociationChannel::SetDecayTime(G4double value) 137 { 138 139 fDecayTime = value; 140 } 141 142 //______________________________________________________________________________ 143 144 inline void G4MolecularDissociationChannel:: 145 SetRMSMotherMoleculeDisplacement(G4double value) 146 { 147 fRMSMotherMoleculeDisplacement = value; 148 } 149 150 //______________________________________________________________________________ 151 152 inline const G4String& G4MolecularDissociationChannel::GetName() const 153 { 154 return fName; 155 } 156 157 //______________________________________________________________________________ 158 159 inline const std::vector<G4double>& 160 G4MolecularDissociationChannel::GetRMSProductsDisplacement() const 161 { 162 return fRMSProductsDisplacementVector; 163 } 164 165 //______________________________________________________________________________ 166 167 inline G4double G4MolecularDissociationChannel::GetEnergy() const 168 { 169 return fReleasedEnergy; 170 } 171 172 //______________________________________________________________________________ 173 174 inline G4double G4MolecularDissociationChannel::GetProbability() const 175 { 176 return fProbability; 177 } 178 179 //______________________________________________________________________________ 180 181 inline G4double G4MolecularDissociationChannel::GetDecayTime() const 182 { 183 return fDecayTime; 184 } 185 186 //______________________________________________________________________________ 187 188 inline G4double G4MolecularDissociationChannel:: 189 GetRMSMotherMoleculeDisplacement() const 190 { 191 return fRMSMotherMoleculeDisplacement; 192 } 193 194 //______________________________________________________________________________ 195 196 inline void G4MolecularDissociationChannel:: 197 SetDisplacementType(DisplacementType aDisplacementType) 198 { 199 fDisplacementType = aDisplacementType; 200 } 201 202 //______________________________________________________________________________ 203 204 inline DisplacementType G4MolecularDissociationChannel:: 205 GetDisplacementType() const 206 { 207 return fDisplacementType; 208 } 209