33 #ifndef G4ITREACTIONINFO_HH_    34 #define G4ITREACTIONINFO_HH_    45 #ifndef compTrackPerID__    46 #define compTrackPerID__    51       return rhs->GetTrackID() < lhs->GetTrackID();
    64 typedef std::map<G4Track*,
    91     if(fReactants.first != trackA) 
return fReactants.first;
    92     return fReactants.second;
    95   std::pair<G4Track*, G4Track*> 
GetReactants()
 const{
return fReactants;}
    96   std::size_t GetHash() 
const;
   102                    G4ITReactionList::iterator it)
   104     fReactionPerTrack.push_back(std::make_pair(reactionPerTrack, it));
   136     G4ITReactionList::iterator it =
   137       fReactions.insert(fReactions.end(), reaction);
   138     reaction->AddIterator(this->shared_from_this(), it);
   143     fReactionSetIt.push_back(it);
   146   bool RemoveThisReaction(G4ITReactionList::iterator it);
   151     G4ITReactionList::iterator next;
   152     for(G4ITReactionList::iterator it = fReactions.begin() ;
   153         it !=  fReactions.end() ; it = next)
   160     fReactionSetIt.clear();
   170     return fReactionSetIt;
   188     fReactionPerTrack.clear();
   189     fReactionPerTime.clear();
   204     AddReaction(trackA, reaction);
   205     AddReaction(trackB, reaction);
   209       G4ITReactionPerTime::iterator it = fReactionPerTime.insert(reaction);
   210       reaction->AddIterator(it);
   216     std::vector<G4Track*>::iterator it = reactants->begin();
   217     for(;it != reactants->end() ; ++it)
   219       AddReaction(time, trackA, *it);
   225     G4ITReactionPerTrackMap::iterator it = fReactionPerTrack.find(track);
   226     if(it != fReactionPerTrack.end())
   229       backItUp->RemoveMe();
   231       it = fReactionPerTrack.find(track);
   232       if(it != fReactionPerTrack.end())
   234         fReactionPerTrack.erase(it);
   241     reaction->RemoveMe();
   242     RemoveReactionSet(reaction->GetReactants().first);
   243     RemoveReactionSet(reaction->GetReactants().second);
   248     return fReactionPerTrack;
   253     for(std::list<G4ITReactionPerTrackMap::iterator>::iterator it =
   254             reactionPerTrack->GetListOfIterators().begin() ;
   255         it != reactionPerTrack->GetListOfIterators().end() ;
   258       fReactionPerTrack.erase(*it);
   260     reactionPerTrack->GetListOfIterators().clear();
   261     reactionPerTrack->GetReactionList().clear();
   266     for(G4ITReactionPerTrackMap::iterator it = fReactionPerTrack.begin();
   267         it != fReactionPerTrack.end() ;
   268         it = fReactionPerTrack.begin())
   270       it->second->RemoveMe();
   272     fReactionPerTrack.clear();
   273     fReactionPerTime.clear();
   278     return fReactionPerTrack.empty();
   283     return fReactionPerTime;
   289     G4ITReactionPerTrackMap::iterator it = fReactionPerTrack.find(track);
   293     if(it == fReactionPerTrack.end())
   296      std::pair< G4ITReactionPerTrackMap::iterator,bool> 
pos =
   297           fReactionPerTrack.insert(std::make_pair(track, reactionPerTrack));
   298      reactionPerTrack->AddIterator(pos.first);
   302      reactionPerTrack = it->second;
   305     reactionPerTrack->AddReaction(reaction);
 G4ITReactionPerTrackMap fReactionPerTrack
 
std::pair< G4Track *, G4Track * > GetReactants() const
 
virtual ~G4ITReactionSet()
 
#define G4enable_shared_from_this
 
bool operator()(G4Track *rhs, G4Track *lhs) const
 
G4ITReactionList & GetReactionList()
 
std::list< G4ITReactionPerTrackMap::iterator > fReactionSetIt
 
void RemoveReactionSet(G4Track *track)
 
void AddReaction(G4Track *track, G4ITReactionPtr reaction)
 
G4shared_ptr< std::vector< G4Track * > > G4TrackVectorHandle
 
std::multiset< G4ITReactionPtr, compReactionPerTime > G4ITReactionPerTime
 
void AddReactions(double time, G4Track *trackA, G4TrackVectorHandle reactants)
 
G4shared_ptr< G4ITReaction > G4ITReactionPtr
 
static G4ITReactionPerTrackPtr New()
 
void AddReaction(double time, G4Track *trackA, G4Track *trackB)
 
std::map< G4Track *, G4ITReactionPerTrackPtr, compTrackPerID > G4ITReactionPerTrackMap
 
G4ITReactionPerTrackMap & GetReactionMap()
 
static G4ITReactionSet * Instance()
 
void SelectThisReaction(G4ITReactionPtr reaction)
 
void AddReaction(G4ITReactionPtr reaction)
 
std::list< G4ITReactionPerTrackMap::iterator > & GetListOfIterators()
 
std::list< G4ITReactionPtr > G4ITReactionList
 
void AddIterator(G4ITReactionPerTimeIt it)
 
G4ITReactionPerTime & GetReactionsPerTime()
 
G4ITReactionPerTime fReactionPerTime
 
G4Track * GetReactant(G4Track *trackA)
 
void RemoveReactionPerTrack(G4ITReactionPerTrackPtr reactionPerTrack)
 
static G4ThreadLocal G4ITReactionSet * fpInstance
 
static G4ITReactionPtr New(double time, G4Track *trackA, G4Track *trackB)
 
G4shared_ptr< G4ITReactionPerTrack > G4ITReactionPerTrackPtr
 
std::pair< G4Track *, G4Track * > fReactants
 
G4ITReactionList fReactions
 
void AddIterator(G4ITReactionPerTrackPtr reactionPerTrack, G4ITReactionList::iterator it)
 
void AddIterator(G4ITReactionPerTrackMap::iterator it)
 
std::list< std::pair< G4ITReactionPerTrackPtr, G4ITReactionList::iterator > > G4ReactionPerTrackIt
 
G4ITReactionPerTimeIt * fReactionPerTimeIt
 
G4ReactionPerTrackIt fReactionPerTrack
 
std::multiset< G4ITReactionPtr, compReactionPerTime >::iterator G4ITReactionPerTimeIt
 
static const G4double pos
 
virtual ~G4ITReactionPerTrack()