]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/HepMC/TempParticleMap.h
doxy: TPC/stressTest/testSparse converted
[u/mrichter/AliRoot.git] / TEvtGen / HepMC / TempParticleMap.h
1 //--------------------------------------------------------------------------
2 #ifndef HEPMC_TempParticleMap_H
3 #define HEPMC_TempParticleMap_H
4
5 //////////////////////////////////////////////////////////////////////////
6 // garren@fnal.gov, October 2007
7 //
8 // Used by IO classes
9 //////////////////////////////////////////////////////////////////////////
10
11 #include <map>
12
13 namespace HepMC {
14
15     class GenParticle;
16
17     //! TempParticleMap is a temporary GenParticle* container used during input.
18
19     ///
20     /// \class  TempParticleMap
21     /// Used by IO classes for recoverable particle ordering.
22     /// Map GenParticle* against both outgoing vertex and particle order.
23     ///
24     class TempParticleMap {
25     public:
26         typedef std::map<HepMC::GenParticle*,int> TempMap;
27         typedef std::map<int,HepMC::GenParticle*> TempOrderMap;
28         typedef TempMap::iterator     TempMapIterator;
29         typedef TempOrderMap::iterator  orderIterator;
30         
31         TempParticleMap() 
32         : m_particle_to_end_vertex(), m_particle_order() {}
33         
34         ~TempParticleMap() {}
35         
36         TempMapIterator begin() { return m_particle_to_end_vertex.begin(); }
37         TempMapIterator end() { return m_particle_to_end_vertex.end(); }
38         orderIterator order_begin() { return m_particle_order.begin(); }
39         orderIterator order_end() { return m_particle_order.end(); }
40         
41         int end_vertex( GenParticle* );
42         
43         void addEndParticle( GenParticle*, int& );
44         
45     private:
46         TempMap       m_particle_to_end_vertex;
47         TempOrderMap  m_particle_order;
48     };
49     
50     inline int TempParticleMap::end_vertex( GenParticle* p )
51     { 
52         //return m_particle_to_end_vertex[p]->second; 
53         TempMapIterator it = m_particle_to_end_vertex.find(p);
54         if( it == end() ) return 0;
55         return m_particle_to_end_vertex[p];
56     }
57
58     inline void TempParticleMap::addEndParticle( GenParticle* p, int& end_vtx_code )
59     {
60         m_particle_order[p->barcode()] = p;
61         m_particle_to_end_vertex[p] = end_vtx_code;
62     }        
63
64 } // HepMC
65
66 #endif  // HEPMC_TempParticleMap_H
67 //--------------------------------------------------------------------------