File indexing completed on 2025-01-18 09:58:41
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054 #pragma once
0055
0056 #include <vector>
0057 #include <map>
0058 #include "G4VMolecularDissociationDisplacer.hh"
0059
0060 class G4Molecule;
0061 class G4MolecularConfiguration;
0062
0063 class G4MolecularDissociationChannel
0064 {
0065 public:
0066 G4MolecularDissociationChannel();
0067 explicit G4MolecularDissociationChannel(const G4String&);
0068 ~G4MolecularDissociationChannel() = default;
0069 G4MolecularDissociationChannel(const G4MolecularDissociationChannel&) = default;
0070
0071 G4MolecularDissociationChannel&
0072 operator=(const G4MolecularDissociationChannel& right) = default;
0073
0074 using Product = const G4MolecularConfiguration;
0075 using ProductList = std::vector<Product*>;
0076
0077 public:
0078
0079 void AddProduct(Product*, G4double displacement = 0.);
0080
0081 inline void SetName(const G4String&);
0082 inline void SetEnergy(G4double);
0083 inline void SetProbability(G4double);
0084 inline void SetDecayTime(G4double);
0085 inline void SetRMSMotherMoleculeDisplacement(G4double);
0086 inline void SetDisplacementType(DisplacementType);
0087
0088
0089 inline const G4String& GetName() const;
0090 G4int GetNbProducts() const;
0091 Product* GetProduct(int) const;
0092 inline const std::vector<G4double>& GetRMSProductsDisplacement() const;
0093 inline G4double GetEnergy() const;
0094 inline G4double GetProbability() const;
0095 inline G4double GetDecayTime() const;
0096 inline G4double GetRMSMotherMoleculeDisplacement() const;
0097 inline DisplacementType GetDisplacementType() const;
0098
0099 G4double GetRMSRadialDisplacementOfProduct(Product*);
0100
0101 private:
0102 DisplacementType fDisplacementType;
0103 G4String fName;
0104 ProductList fProductsVector;
0105 G4double fReleasedEnergy;
0106 G4double fProbability;
0107 G4double fDecayTime;
0108
0109 G4double fRMSMotherMoleculeDisplacement;
0110 std::vector<G4double> fRMSProductsDisplacementVector;
0111 };
0112
0113
0114
0115 inline void G4MolecularDissociationChannel::SetName(const G4String& value)
0116 {
0117 fName = value;
0118 }
0119
0120
0121
0122 inline void G4MolecularDissociationChannel::SetEnergy(G4double value)
0123 {
0124 fReleasedEnergy = value;
0125 }
0126
0127
0128
0129 inline void G4MolecularDissociationChannel::SetProbability(G4double value)
0130 {
0131 fProbability = value;
0132 }
0133
0134
0135
0136 inline void G4MolecularDissociationChannel::SetDecayTime(G4double value)
0137 {
0138
0139 fDecayTime = value;
0140 }
0141
0142
0143
0144 inline void G4MolecularDissociationChannel::
0145 SetRMSMotherMoleculeDisplacement(G4double value)
0146 {
0147 fRMSMotherMoleculeDisplacement = value;
0148 }
0149
0150
0151
0152 inline const G4String& G4MolecularDissociationChannel::GetName() const
0153 {
0154 return fName;
0155 }
0156
0157
0158
0159 inline const std::vector<G4double>&
0160 G4MolecularDissociationChannel::GetRMSProductsDisplacement() const
0161 {
0162 return fRMSProductsDisplacementVector;
0163 }
0164
0165
0166
0167 inline G4double G4MolecularDissociationChannel::GetEnergy() const
0168 {
0169 return fReleasedEnergy;
0170 }
0171
0172
0173
0174 inline G4double G4MolecularDissociationChannel::GetProbability() const
0175 {
0176 return fProbability;
0177 }
0178
0179
0180
0181 inline G4double G4MolecularDissociationChannel::GetDecayTime() const
0182 {
0183 return fDecayTime;
0184 }
0185
0186
0187
0188 inline G4double G4MolecularDissociationChannel::
0189 GetRMSMotherMoleculeDisplacement() const
0190 {
0191 return fRMSMotherMoleculeDisplacement;
0192 }
0193
0194
0195
0196 inline void G4MolecularDissociationChannel::
0197 SetDisplacementType(DisplacementType aDisplacementType)
0198 {
0199 fDisplacementType = aDisplacementType;
0200 }
0201
0202
0203
0204 inline DisplacementType G4MolecularDissociationChannel::
0205 GetDisplacementType() const
0206 {
0207 return fDisplacementType;
0208 }