48 channelsMap::iterator it_map = fDecayChannelsMap.begin();
50 for(;it_map != fDecayChannelsMap.end() ; it_map++)
52 vector<const G4MolecularDecayChannel*>& decayChannels = it_map->second;
53 if(!decayChannels.empty())
55 for(
int i = 0 ; i < (int) decayChannels.size() ; i++)
59 delete decayChannels[i];
63 decayChannels.clear();
66 fDecayChannelsMap.clear();
83 statesMap::const_iterator it_exstates = fExcitedStatesMap.find(*conf);
84 if(it_exstates == fExcitedStatesMap.end())
return 0;
85 channelsMap::const_iterator it_decchannel = fDecayChannelsMap.find(it_exstates->second) ;
86 if(it_decchannel == fDecayChannelsMap.end())
return 0;
87 return &(it_decchannel->second);
92 channelsMap::const_iterator it_decchannel = fDecayChannelsMap.find(exState);
93 if(it_decchannel == fDecayChannelsMap.end())
return 0;
94 return &(it_decchannel->second);
99 statesMap::const_iterator it_exstates = fExcitedStatesMap.find(*conf);
101 if(it_exstates == fExcitedStatesMap.end())
103 G4String errMsg =
"Excited state not found";
104 G4Exception(
"G4MolecularDecayTable::GetExcitedState(const G4ElectronOccupancy*)",
109 return it_exstates->second;
114 statesMap::const_iterator statesIter;
116 for (statesIter=fExcitedStatesMap.begin(); statesIter!=fExcitedStatesMap.end(); statesIter++ )
118 if(exState == statesIter->second) conf = &(statesIter->first);
121 if(statesIter == fExcitedStatesMap.end())
123 G4String errMsg =
"Excited state" + exState +
" not found";
124 G4Exception(
"G4MolecularDecayTable::GetElectronOccupancy(const G4String&)",
132 channelsMap::iterator channelsIter = fDecayChannelsMap.find(label);
133 if(channelsIter != fDecayChannelsMap.end())
135 G4String errMsg =
"Excited state" + label +
" already registered in the decay table.";
136 G4Exception(
"G4MolecularDecayTable::AddExcitedState",
140 fDecayChannelsMap[label] ;
145 statesMap::iterator statesIter = fExcitedStatesMap.find(conf);
147 if (statesIter == fExcitedStatesMap.end())
149 fExcitedStatesMap[conf] = label;
153 G4Exception(
"G4MolecularDecayTable::AddExcitedState",
"G4MolecularDecayTable004",
160 fDecayChannelsMap[label].push_back(channel);
165 channelsMap::iterator channelsIter;
169 for (channelsIter=fDecayChannelsMap.begin(); channelsIter!=fDecayChannelsMap.end(); channelsIter++ )
172 vector<const G4MolecularDecayChannel*>& decayVect = channelsIter->second;
177 for (
size_t i=0; i<
max; i++)
186 G4String errMsg =
"Deexcitation Channels probabilities in " + channelsIter->
first
187 +
"excited state don't sum up to 1";
188 G4Exception(
"G4MolecularDecayTable::CheckDataConsistency",
void CheckDataConsistency()
void AddDecayChannel(const G4String &, const G4MolecularDecayChannel *)
G4double GetProbability() const
G4MolecularDecayTable & operator=(const G4MolecularDecayTable &right)
statesMap fExcitedStatesMap
ParticleList decay(Cluster *const c)
Carries out a cluster decay.
const G4String & GetExcitedState(const G4ElectronOccupancy *) const
void AddExcitedState(const G4String &)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
const G4ElectronOccupancy & GetElectronOccupancy(const G4String &) const
const channelsMap & GetDecayChannelsMap() const
void AddeConfToExcitedState(const G4String &, const G4ElectronOccupancy &)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
const std::vector< const G4MolecularDecayChannel * > * GetDecayChannels(const G4ElectronOccupancy *) const
Class Description G4MolecularDecayTable operates as a container of deexcitation modes for excited or ...
std::map< G4String, std::vector< const G4MolecularDecayChannel * >, std::less< G4String > > channelsMap