Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ITReactionSet Class Reference

#include <G4ITReaction.hh>

Collaboration diagram for G4ITReactionSet:

Public Member Functions

virtual ~G4ITReactionSet ()
 
void AddReaction (double time, G4Track *trackA, G4Track *trackB)
 
void AddReactions (double time, G4Track *trackA, G4TrackVectorHandle reactants)
 
void RemoveReactionSet (G4Track *track)
 
void SelectThisReaction (G4ITReactionPtr reaction)
 
G4ITReactionPerTrackMap & GetReactionMap ()
 
void RemoveReactionPerTrack (G4ITReactionPerTrackPtr reactionPerTrack)
 
void CleanAllReaction ()
 
bool Empty ()
 
G4ITReactionPerTime & GetReactionsPerTime ()
 

Static Public Member Functions

static G4ITReactionSet * Instance ()
 

Protected Member Functions

void AddReaction (G4Track *track, G4ITReactionPtr reaction)
 

Protected Attributes

G4ITReactionPerTrackMap fReactionPerTrack
 
G4ITReactionPerTime fReactionPerTime
 
bool fSortByTime
 

Static Protected Attributes

static G4ThreadLocal
G4ITReactionSet * 
fpInstance
 

Detailed Description

Definition at line 178 of file G4ITReaction.hh.

Constructor & Destructor Documentation

virtual G4ITReactionSet::~G4ITReactionSet ( )
inlinevirtual

Definition at line 186 of file G4ITReaction.hh.

187  {
188  fReactionPerTrack.clear();
189  fReactionPerTime.clear();
190  }
G4ITReactionPerTrackMap fReactionPerTrack
G4ITReactionPerTime fReactionPerTime

Member Function Documentation

void G4ITReactionSet::AddReaction ( double  time,
G4Track *  trackA,
G4Track *  trackB 
)
inline

Definition at line 201 of file G4ITReaction.hh.

202  {
203  G4ITReactionPtr reaction(G4ITReaction::New(time, trackA, trackB));
204  AddReaction(trackA, reaction);
205  AddReaction(trackB, reaction);
206 
207  if(fSortByTime)
208  {
209  G4ITReactionPerTime::iterator it = fReactionPerTime.insert(reaction);
210  reaction->AddIterator(it);
211  }
212  }
G4shared_ptr< G4ITReaction > G4ITReactionPtr
Definition: G4ITReaction.hh:59
void AddReaction(double time, G4Track *trackA, G4Track *trackB)
G4ITReactionPerTime fReactionPerTime
static G4ITReactionPtr New(double time, G4Track *trackA, G4Track *trackB)
Definition: G4ITReaction.hh:83

Here is the call graph for this function:

Here is the caller graph for this function:

void G4ITReactionSet::AddReaction ( G4Track *  track,
G4ITReactionPtr  reaction 
)
inlineprotected

Definition at line 287 of file G4ITReaction.hh.

288  {
289  G4ITReactionPerTrackMap::iterator it = fReactionPerTrack.find(track);
290 
291  G4ITReactionPerTrackPtr reactionPerTrack;
292 
293  if(it == fReactionPerTrack.end())
294  {
295  reactionPerTrack = G4ITReactionPerTrack::New();
296  std::pair< G4ITReactionPerTrackMap::iterator,bool> pos =
297  fReactionPerTrack.insert(std::make_pair(track, reactionPerTrack));
298  reactionPerTrack->AddIterator(pos.first);
299  }
300  else
301  {
302  reactionPerTrack = it->second;
303  }
304 
305  reactionPerTrack->AddReaction(reaction);
306  }
G4ITReactionPerTrackMap fReactionPerTrack
static G4ITReactionPerTrackPtr New()
G4shared_ptr< G4ITReactionPerTrack > G4ITReactionPerTrackPtr
Definition: G4ITReaction.hh:61
static const G4double pos

Here is the call graph for this function:

void G4ITReactionSet::AddReactions ( double  time,
G4Track *  trackA,
G4TrackVectorHandle  reactants 
)
inline

Definition at line 214 of file G4ITReaction.hh.

215  {
216  std::vector<G4Track*>::iterator it = reactants->begin();
217  for(;it != reactants->end() ; ++it)
218  {
219  AddReaction(time, trackA, *it);
220  }
221  }
void AddReaction(double time, G4Track *trackA, G4Track *trackB)

Here is the call graph for this function:

void G4ITReactionSet::CleanAllReaction ( )
inline

Definition at line 264 of file G4ITReaction.hh.

265  {
266  for(G4ITReactionPerTrackMap::iterator it = fReactionPerTrack.begin();
267  it != fReactionPerTrack.end() ;
268  it = fReactionPerTrack.begin())
269  {
270  it->second->RemoveMe();
271  }
272  fReactionPerTrack.clear();
273  fReactionPerTime.clear();
274  }
G4ITReactionPerTrackMap fReactionPerTrack
G4ITReactionPerTime fReactionPerTime

Here is the caller graph for this function:

bool G4ITReactionSet::Empty ( )
inline

Definition at line 276 of file G4ITReaction.hh.

277  {
278  return fReactionPerTrack.empty();
279  }
G4ITReactionPerTrackMap fReactionPerTrack
G4ITReactionPerTrackMap& G4ITReactionSet::GetReactionMap ( )
inline

Definition at line 246 of file G4ITReaction.hh.

247  {
248  return fReactionPerTrack;
249  }
G4ITReactionPerTrackMap fReactionPerTrack

Here is the caller graph for this function:

G4ITReactionPerTime& G4ITReactionSet::GetReactionsPerTime ( )
inline

Definition at line 281 of file G4ITReaction.hh.

282  {
283  return fReactionPerTime;
284  }
G4ITReactionPerTime fReactionPerTime

Here is the caller graph for this function:

static G4ITReactionSet* G4ITReactionSet::Instance ( )
inlinestatic

Definition at line 192 of file G4ITReaction.hh.

193  {
194  if(fpInstance == 0) new G4ITReactionSet();
195 
196  return fpInstance;
197  }
static G4ThreadLocal G4ITReactionSet * fpInstance

Here is the caller graph for this function:

void G4ITReactionSet::RemoveReactionPerTrack ( G4ITReactionPerTrackPtr  reactionPerTrack)
inline

Definition at line 251 of file G4ITReaction.hh.

252  {
253  for(std::list<G4ITReactionPerTrackMap::iterator>::iterator it =
254  reactionPerTrack->GetListOfIterators().begin() ;
255  it != reactionPerTrack->GetListOfIterators().end() ;
256  ++it)
257  {
258  fReactionPerTrack.erase(*it);
259  }
260  reactionPerTrack->GetListOfIterators().clear();
261  reactionPerTrack->GetReactionList().clear();
262  }
G4ITReactionPerTrackMap fReactionPerTrack

Here is the caller graph for this function:

void G4ITReactionSet::RemoveReactionSet ( G4Track *  track)
inline

Definition at line 223 of file G4ITReaction.hh.

224  {
225  G4ITReactionPerTrackMap::iterator it = fReactionPerTrack.find(track);
226  if(it != fReactionPerTrack.end())
227  {
228  G4ITReactionPerTrackPtr backItUp = it->second->shared_from_this();
229  backItUp->RemoveMe();
230  //fReactionPerTrack.erase(it); // not needed : once empty ==> auto-erase
231  it = fReactionPerTrack.find(track);
232  if(it != fReactionPerTrack.end())
233  {
234  fReactionPerTrack.erase(it);
235  }
236  }
237  }
G4ITReactionPerTrackMap fReactionPerTrack
G4shared_ptr< G4ITReactionPerTrack > G4ITReactionPerTrackPtr
Definition: G4ITReaction.hh:61

Here is the caller graph for this function:

void G4ITReactionSet::SelectThisReaction ( G4ITReactionPtr  reaction)
inline

Definition at line 239 of file G4ITReaction.hh.

240  {
241  reaction->RemoveMe();
242  RemoveReactionSet(reaction->GetReactants().first);
243  RemoveReactionSet(reaction->GetReactants().second);
244  }
void RemoveReactionSet(G4Track *track)

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

G4ThreadLocal G4ITReactionSet * G4ITReactionSet::fpInstance
staticprotected

Definition at line 311 of file G4ITReaction.hh.

G4ITReactionPerTime G4ITReactionSet::fReactionPerTime
protected

Definition at line 308 of file G4ITReaction.hh.

G4ITReactionPerTrackMap G4ITReactionSet::fReactionPerTrack
protected

Definition at line 307 of file G4ITReaction.hh.

bool G4ITReactionSet::fSortByTime
protected

Definition at line 310 of file G4ITReaction.hh.


The documentation for this class was generated from the following files: