Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4MolecularDissociationTable.cc
Go to the documentation of this file.
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// WARNING : This class is released as a prototype.
28// It might strongly evolve or even disapear in the next releases.
29//
30// ----------------------------------------------------------------------
31// GEANT 4 class implementation file
32//
33// History: first implementation by Alfonso Mantero 4 Mar 2009
34//
35// ----------------------------------------------------------------
36
40
41using namespace std;
42using namespace G4DNA;
43
44//______________________________________________________________________________
45
47= default;
48
49//______________________________________________________________________________
50
52{
53 auto it_map = fDissociationChannels.begin();
54
55 for (; it_map != fDissociationChannels.end(); it_map++)
56 {
57 vector<const G4MolecularDissociationChannel*>& decayChannels = it_map
58 ->second;
59 if (!decayChannels.empty())
60 {
61 for (auto & decayChannel : decayChannels)
62 {
63 if (decayChannel != nullptr)
64 {
65 delete decayChannel;
66 decayChannel = nullptr;
67 }
68 }
69 decayChannels.clear();
70 }
71 }
72 fDissociationChannels.clear();
73}
74
75//______________________________________________________________________________
76
82
83//______________________________________________________________________________
84
87{
88 if(this == &right) return *this;
89 fDissociationChannels = right.fDissociationChannels;
90 return *this;
91}
92
93//______________________________________________________________________________
94
95const vector<const G4MolecularDissociationChannel*>*
98{
99 auto it_exstates = fDissociationChannels.find(conf);
100 if (it_exstates == fDissociationChannels.end()) return nullptr;
101 return &(it_exstates->second);
102}
103
104//______________________________________________________________________________
105
106const vector<const G4MolecularDissociationChannel*>*
108{
109 for(const auto & fDissociationChannel : fDissociationChannels)
110 {
111 if(fDissociationChannel.first->GetLabel() == exState) return &(fDissociationChannel.second);
112 }
113 return nullptr;
114}
115
116//______________________________________________________________________________
117
118//void G4MolecularDissociationTable::
119// AddExcitedState(const G4String& label,
120// const G4MolecularConfiguration* molConf);
121//{
122//
123//}
124
125//______________________________________________________________________________
126
129 const G4MolecularDissociationChannel* channel)
130{
131 fDissociationChannels[molConf].push_back(channel);
132}
133
134//______________________________________________________________________________
135
137{
138 ChannelMap::const_iterator channelsIter;
139
140 for(channelsIter = fDissociationChannels.begin();
141 channelsIter != fDissociationChannels.end(); ++channelsIter)
142 {
143
144 const vector<const G4MolecularDissociationChannel*>& decayVect =
145 channelsIter->second;
146 G4double sum = 0;
147
148 G4double max = decayVect.size();
149
150 for(size_t i = 0; i < max; i++)
151 {
152 const G4MolecularDissociationChannel* decay = decayVect[i];
153 const G4double prob = decay->GetProbability();
154 sum += prob;
155 }
156
157 if(sum != 1)
158 {
160 errMsg << "The probabilities for deecitation of molecular configuration "
161 << channelsIter->first->GetName()
162 << " with label :" << channelsIter->first->GetLabel()
163 << " don't sum up to 1";
164 G4Exception("G4MolecularDissociationTable::CheckDataConsistency",
165 "BRANCHING_RATIOS_CONSISTENCY",
167 errMsg);
168 }
169 }
170}
171
172void G4MolecularDissociationTable::Serialize(std::ostream& /*char_traits*/)
173{
174 // TODO
175}
@ FatalErrorInArgument
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
double G4double
Definition G4Types.hh:83
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannels(const G4MolecularConfiguration *) const
G4MolecularDissociationTable & operator=(const G4MolecularDissociationTable &right)
void AddChannel(const G4MolecularConfiguration *molConf, const G4MolecularDissociationChannel *channel)