50 channelsMap::iterator it_map = fDecayChannelsMap.begin();
52 for (; it_map != fDecayChannelsMap.end(); it_map++)
54 vector<const G4MolecularDissociationChannel*>& decayChannels = it_map
56 if (!decayChannels.empty())
58 for (
int i = 0; i < (int) decayChannels.size(); i++)
62 delete decayChannels[i];
66 decayChannels.clear();
69 fDecayChannelsMap.clear();
86 statesMap::const_iterator it_exstates = fExcitedStatesMap.find(*conf);
87 if (it_exstates == fExcitedStatesMap.end())
return 0;
88 channelsMap::const_iterator it_decchannel = fDecayChannelsMap.find(
90 if (it_decchannel == fDecayChannelsMap.end())
return 0;
91 return &(it_decchannel->second);
96 channelsMap::const_iterator it_decchannel = fDecayChannelsMap.find(exState);
97 if (it_decchannel == fDecayChannelsMap.end())
return 0;
98 return &(it_decchannel->second);
103 statesMap::const_iterator it_exstates = fExcitedStatesMap.find(*conf);
105 if (it_exstates == fExcitedStatesMap.end())
107 G4String errMsg =
"Excited state not found";
109 "G4MolecularDecayTable::GetExcitedState(const G4ElectronOccupancy*)",
114 return it_exstates->second;
119 statesMap::const_iterator statesIter;
121 for (statesIter = fExcitedStatesMap.begin();
122 statesIter != fExcitedStatesMap.end(); statesIter++)
124 if (exState == statesIter->second) conf = &(statesIter->first);
127 if (statesIter == fExcitedStatesMap.end())
129 G4String errMsg =
"Excited state" + exState +
" not found";
130 G4Exception(
"G4MolecularDecayTable::GetElectronOccupancy(const G4String&)",
138 channelsMap::iterator channelsIter = fDecayChannelsMap.find(label);
139 if (channelsIter != fDecayChannelsMap.end())
141 G4String errMsg =
"Excited state" + label
142 +
" already registered in the decay table.";
143 G4Exception(
"G4MolecularDecayTable::AddExcitedState",
147 fDecayChannelsMap[label];
153 statesMap::iterator statesIter = fExcitedStatesMap.find(conf);
155 if (statesIter == fExcitedStatesMap.end())
157 fExcitedStatesMap[conf] = label;
162 "G4MolecularDecayTable::AddExcitedState",
"G4MolecularDecayTable004",
164 "Electronic configuration already registered in the decay table");
171 fDecayChannelsMap[label].push_back(channel);
176 channelsMap::iterator channelsIter;
180 for (channelsIter = fDecayChannelsMap.begin();
181 channelsIter != fDecayChannelsMap.end(); channelsIter++)
184 vector<const G4MolecularDissociationChannel*>& decayVect = channelsIter
190 for (
size_t i = 0; i <
max; i++)
199 G4String errMsg =
"Deexcitation Channels probabilities in "
200 + channelsIter->
first +
"excited state don't sum up to 1";
201 G4Exception(
"G4MolecularDecayTable::CheckDataConsistency",
G4MolecularDissociationTable & operator=(const G4MolecularDissociationTable &right)
const G4ElectronOccupancy & GetElectronOccupancy(const G4String &) const
void CheckDataConsistency()
const channelsMap & GetDecayChannelsMap() const
G4MolecularDissociationTable()
~G4MolecularDissociationTable()
Class Description G4MolecularDecayTable operates as a container of deexcitation modes for excited or ...
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannels(const G4ElectronOccupancy *) const
void AddExcitedState(const G4String &)
ParticleList decay(Cluster *const c)
Carries out a cluster decay.
std::map< G4String, std::vector< const G4MolecularDissociationChannel * >, std::less< G4String > > channelsMap
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void AddDecayChannel(const G4String &, const G4MolecularDissociationChannel *)
void AddeConfToExcitedState(const G4String &, const G4ElectronOccupancy &)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double GetProbability() const
statesMap fExcitedStatesMap
const G4String & GetExcitedState(const G4ElectronOccupancy *) const