25 : m_particle( 0 ), m_extBarcode( barCode,
eventIndex ) {}
28 : m_particle( rhs.m_particle ), m_extBarcode( rhs.m_extBarcode ) {}
30 const HepMC::GenEvent* pevt );
38 operator const HepMC::GenParticle*()
const {
return cptr(); }
44 int barcode()
const {
return m_extBarcode.barcode(); }
49 const HepMC::GenParticle*
cptr()
const;
52 class ExtendedBarCode {
54 ExtendedBarCode() : m_extBC( 0 ) {}
56 assert( barcode < 0x1FFFFF );
57 assert( eventIndex < 0x7FF );
58 m_extBC = barcode + ( eventIndex << 21 );
60 ExtendedBarCode(
const ExtendedBarCode& rhs ) : m_extBC( rhs.m_extBC ) {}
62 int barcode()
const {
return m_extBC & 0x1FFFFF; }
70 mutable HepMC::GenParticle* m_particle;
71 ExtendedBarCode m_extBarcode;
HepMcParticleLink(index_type barCode, index_type eventIndex=0)
const HepMC::GenParticle & operator*() const
const HepMC::GenParticle * operator->() const
HepMcParticleLink(const HepMcParticleLink &rhs)
HepMcParticleLink(const HepMC::GenParticle *part, const HepMC::GenEvent *pevt)
const HepMC::GenParticle * cptr() const