00001 // 00002 // ******************************************************************** 00003 // * License and Disclaimer * 00004 // * * 00005 // * The Geant4 software is copyright of the Copyright Holders of * 00006 // * the Geant4 Collaboration. It is provided under the terms and * 00007 // * conditions of the Geant4 Software License, included in the file * 00008 // * LICENSE and available at http://cern.ch/geant4/license . These * 00009 // * include a list of copyright holders. * 00010 // * * 00011 // * Neither the authors of this software system, nor their employing * 00012 // * institutes,nor the agencies providing financial support for this * 00013 // * work make any representation or warranty, express or implied, * 00014 // * regarding this software system or assume any liability for its * 00015 // * use. Please see the license in the file LICENSE and URL above * 00016 // * for the full disclaimer and the limitation of liability. * 00017 // * * 00018 // * This code implementation is the result of the scientific and * 00019 // * technical work of the GEANT4 collaboration. * 00020 // * By using, copying, modifying or distributing the software (or * 00021 // * any work based on the software) you agree to acknowledge its * 00022 // * use in resulting scientific publications, and indicate your * 00023 // * acceptance of all terms of the Geant4 Software license. * 00024 // ******************************************************************** 00025 // 00026 // Contact: Mathieu Karamitros (kara (AT) cenbg . in2p3 . fr) 00027 // 00028 // WARNING : This class is released as a prototype. 00029 // It might strongly evolve or even disapear in the next releases. 00030 // 00031 // ---------------------------------------------------------------- 00032 // GEANT 4 class header file 00033 // 00034 // History: first implementation, Alfonso Mantero 6 Mar 2009 00035 // ---------------------------------------------------------------- 00036 // 00037 00038 00039 #ifndef G4MolecularDecayChannel_h 00040 #define G4MolecularDecayChannel_h 1 00041 00042 #include <vector> 00043 #include <map> 00044 #include "G4VMolecularDecayDisplacer.hh" 00045 #include "G4MoleculeHandleManager.hh" 00046 00047 // ###################################################################### 00048 // ### MolecularDecayChannel ### 00049 // ###################################################################### 00050 00051 class G4Molecule; 00052 00053 struct CompMoleculePointer; 00054 00055 class G4MolecularDecayChannel 00056 { 00057 // Class Description 00058 // This is where are stored and can be retrieved data of one decay channel 00059 // of excited or ionized molecules: products. energy and probability. 00060 00061 public: //With Description 00062 00063 G4MolecularDecayChannel(); 00064 G4MolecularDecayChannel(G4String); 00065 ~G4MolecularDecayChannel(); 00066 G4MolecularDecayChannel(const G4MolecularDecayChannel&); 00067 G4MolecularDecayChannel & operator=(const G4MolecularDecayChannel &right); 00068 00069 public: 00070 00071 //Root Mean Square radial distance thermalisation of a product 00072 G4double GetRMSRadialDisplacementOfProduct(const G4Molecule*); 00073 00074 // methods to construct decay channels "interactively" 00075 00076 void AddProduct(const G4Molecule*,G4double = 0); 00077 inline void SetName(const G4String&); 00078 inline void SetEnergy(G4double); 00079 inline void SetProbability(G4double); 00080 inline void SetDecayTime(G4double); 00081 inline void SetRMSMotherMoleculeDisplacement(G4double); 00082 inline void SetDisplacementType(DisplacementType); 00083 00084 // get methods to retrieve data 00085 00086 inline const G4String& GetName() const; 00087 G4int GetNbProducts() const; 00088 const G4Molecule* GetProduct(int) const; 00089 inline const std::vector<G4double>& GetRMSProductsDisplacement() const; 00090 inline G4double GetEnergy() const; 00091 inline G4double GetProbability() const; 00092 inline G4double GetDecayTime() const; 00093 inline G4double GetRMSMotherMoleculeDisplacement() const; 00094 inline DisplacementType GetDisplacementType() const; 00095 00096 private: 00097 00098 DisplacementType fDisplacementType; 00099 G4String fName; 00100 std::vector<G4MoleculeHandle>* fProductsVector; 00101 G4double fReleasedEnergy; 00102 G4double fProbability; 00103 G4double fDecayTime; // To be taken into account in the next releases 00104 00105 //Root Mean Square radial distance jump of a excited/ionised MotherMolecule molecule 00106 G4double fRMSMotherMoleculeDisplacement; 00107 std::vector<G4double> fRMSProductsDisplacementVector; 00108 }; 00109 00110 inline void G4MolecularDecayChannel::SetName(const G4String& value) 00111 { 00112 fName = value; 00113 } 00114 00115 inline void G4MolecularDecayChannel::SetEnergy(G4double value) 00116 { 00117 fReleasedEnergy = value; 00118 } 00119 00120 00121 inline void G4MolecularDecayChannel::SetProbability(G4double value) 00122 { 00123 fProbability = value; 00124 } 00125 00126 inline void G4MolecularDecayChannel::SetDecayTime(G4double value) 00127 { 00128 00129 fDecayTime = value; 00130 } 00131 00132 inline void G4MolecularDecayChannel::SetRMSMotherMoleculeDisplacement(G4double value) 00133 { 00134 fRMSMotherMoleculeDisplacement = value; 00135 } 00136 00137 inline const G4String& G4MolecularDecayChannel::GetName() const 00138 { 00139 return fName; 00140 } 00141 00142 inline const std::vector<G4double>& G4MolecularDecayChannel::GetRMSProductsDisplacement() const 00143 { 00144 return fRMSProductsDisplacementVector; 00145 } 00146 00147 inline G4double G4MolecularDecayChannel::GetEnergy() const 00148 { 00149 00150 return fReleasedEnergy; 00151 } 00152 00153 inline G4double G4MolecularDecayChannel::GetProbability() const 00154 { 00155 return fProbability; 00156 } 00157 00158 inline G4double G4MolecularDecayChannel::GetDecayTime() const 00159 { 00160 return fDecayTime; 00161 } 00162 00163 inline G4double G4MolecularDecayChannel::GetRMSMotherMoleculeDisplacement() const 00164 { 00165 return fRMSMotherMoleculeDisplacement; 00166 } 00167 00168 inline void G4MolecularDecayChannel::SetDisplacementType(DisplacementType aDisplacementType) 00169 { 00170 fDisplacementType = aDisplacementType; 00171 } 00172 00173 inline DisplacementType G4MolecularDecayChannel::GetDisplacementType() const 00174 { 00175 return fDisplacementType; 00176 } 00177 #endif 00178 00179 00180 00181 00182 00183 00184 00185