HepMC event record
Todo List
Class Exception

Should it be GenException? It's a HepMC thing, but not really a "gen" thing

Should it be GenException? It's a HepMC thing, but not really a "gen" thing

Global FourVector::eta () const

Improve numerical stability

Improve numerical stability

Improve numerical stability

Global FourVector::rap () const

Improve numerical stability

Improve numerical stability

Improve numerical stability

Global GenEvent::beam_particles () const
Change this definition to require status = 4... and in principle there don't have to be two of them
Global GenEvent::m_event_number

Move to attributes?

Move to attributes?

Move to attributes?

Move to attributes?

Move to attributes?

Global GenEvent::remove_particles (std::vector< GenParticlePtr > v)
Currently the only optimization is sort by id in ascending order. Needs better optimization!
Global GenEvent::remove_vertex (GenVertexPtr v)

Optimize. Currently each particle/vertex is erased separately

Optimize. Currently each particle/vertex is erased separately

Optimize. Currently each particle/vertex is erased separately

Global GenEvent::set_beam_particles (const GenParticlePtr &p1, const GenParticlePtr &p2)

Set/require status = 4 at the same time?

Require/set status = 4

Set/require status = 4 at the same time?

Require/set status = 4

Set/require status = 4 at the same time?

Global GenEvent::set_beam_particles (const std::pair< GenParticlePtr, GenParticlePtr > &p)

Set/require status = 4 at the same time?

Set/require status = 4 at the same time?

Set/require status = 4 at the same time?

Global GenEvent::valid_beam_particles () const
Change this definition to require status = 4... and in principle there don't have to be two of them
Global GenHeavyIon::N_Nwounded_collisions

Describe!

Describe!

Describe!

Global GenHeavyIon::Nwounded_N_collisions

Describe!

Describe!

Describe!

Global GenHeavyIon::Nwounded_Nwounded_collisions

Describe!

Describe!

Describe!

Global GenRunInfo::weight_index (string name) const

Throw exception instead? Or return ssize_t for better signed/unsigned safety?

Throw exception instead? Or return ssize_t for better signed/unsigned safety?

Global GenVertex::add_attribute (string name, shared_ptr< Attribute > att)

We need a way to check if there is a position on this vertex, without messing up the interface. Is has_position() too intrusive?

We need a way to check if there is a position on this vertex, without messing up the interface. Is has_position() too intrusive?

We need a way to check if there is a position on this vertex, without messing up the interface. Is has_position() too intrusive?

Global GenVertex::GenEvent

Are these really needed? Friends usually indicate a problem...

Are these really needed? Friends usually indicate a problem...

Are these really needed? Friends usually indicate a problem...

Global GenVertex::in_event () const

Needed? Wouldn't it be good enough to just rely on user testing nullness of parent_event()?

Needed? Wouldn't it be good enough to just rely on user testing nullness of parent_event()?

Needed? Wouldn't it be good enough to just rely on user testing nullness of parent_event()?

Global GenVertex::parent_event () const

Should we be returning a smart ptr?

Should we be returning a smart ptr?

Should we be returning a smart ptr?

Global GenVertex::position () const

We need a way to check if there is a position on this vertex, without messing up the interface. Is has_position() too intrusive?

We need a way to check if there is a position on this vertex, without messing up the interface. Is has_position() too intrusive?

We need a way to check if there is a position on this vertex, without messing up the interface. Is has_position() too intrusive?

Class HEPEVT_Wrapper

Do we just make write_event and fill_next_event instead?

Do we just make write_event and fill_next_event instead?

Global HEPEVT_Wrapper::check_hepevt_consistency (std::ostream &ostr=std::cout)

HEPEVT_Wrapper::check_hepevt_consistency unimplemented!

HEPEVT_Wrapper::check_hepevt_consistency unimplemented!

Namespace HepMC

Add feature detection macros? (clearly version-related)

Add feature detection macros? (clearly version-related)

Global HepMC::Relationship

Add 'family'='parents'+'children' and 'relatives'='ancestors'+'descendants'(+'siblings')?

Add 'family'='parents'+'children' and 'relatives'='ancestors'+'descendants'(+'siblings')?

Add 'family'='parents'+'children' and 'relatives'='ancestors'+'descendants'(+'siblings')?

Global IO_GenEvent::m_reader

Use unique_ptr

Use unique_ptr

Use unique_ptr

Global IO_GenEvent::m_writer

Use unique_ptr

Use unique_ptr

Use unique_ptr

Class Print

This class has no state – why isn't it just a namespace with free functions?

This class has no state – why isn't it just a namespace with free functions?

File Print.cc
AB: Why a static class rather than some namespaced free functions?
Global ReaderAscii::get_global (std::string name)

rewrite global attributes

rewrite global attributes

Global ReaderAscii::m_file

Unify file/stream treatment

Unify file/stream treatment

Unify file/stream treatment

Global ReaderAscii::parse_particle_information (GenEvent &evt, const char *buf)
Should be an exception
Global ReaderAscii::read_event (GenEvent &evt)
Should consider exceptions for reporting parsing problems more locally to the source of trouble
Global ReaderAsciiHepMC2::parse_particle_information (const char *buf)
barcode ignored but maybe should be put as an attribute?...
Class Setup

Move some of the helper functions, logging, exceptions, etc. to specific files

Change to a namespace

Move some of the helper functions, logging, exceptions, etc. to specific files

Change to a namespace

Global WriterAscii::write_event (const GenEvent &evt)
This would be nicer as a return value of string & throw exception if there's a conversion problem...