00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef STDEVENT_HH
00010 #define STDEVENT_HH
00011
00012 #include <vector>
00013 #include "CLHEP/config/CLHEP.h"
00014 #include "CLHEP/config/iostream.h"
00015
00016 #include "CLHEP/HepMC/GenEvent.h"
00017 #include "CLHEP/HepMC/GenParticle.h"
00018 #include "CLHEP/HepMC/GenVertex.h"
00019
00020 namespace StdHep {
00021
00026 class StdEvent {
00027
00028 public:
00029
00030 typedef std::vector<HepMC::GenEvent*> CollisionList;
00031 typedef HepMC::GenParticle Particle;
00032 typedef HepMC::GenEvent Collision;
00033
00034
00035
00036 StdEvent( int EventNumber, std::vector<HepMC::GenEvent*> & cvect );
00037 StdEvent( const StdEvent & orig );
00038 StdEvent& operator=( const StdEvent & );
00039 ~StdEvent();
00040
00041
00042
00043 int eventNumber() const { return itsEventNumber; }
00044 int numCollisions() const { return itsCollisionList.size(); }
00045 int numParticles() const;
00046 int numVertices() const;
00047 int size() const { return itsCollisionList.size(); }
00048 CollisionList::const_iterator begin() const { return itsCollisionList.begin(); }
00049 CollisionList::const_iterator end() const { return itsCollisionList.end(); }
00050
00051 HepMC::GenParticle* particle( int i ) const;
00052 HepMC::GenParticle* particle( int i, int icol ) const;
00053 HepMC::GenVertex* vertex( int i ) const;
00054 HepMC::GenVertex* vertex( int i, int icol ) const;
00055 HepMC::GenEvent* collision( int i ) const;
00056
00057 std::vector<HepMC::GenParticle*> children(HepMC::GenParticle*) const;
00058 std::vector<HepMC::GenParticle*> descendants(HepMC::GenParticle*) const;
00059 std::vector<HepMC::GenParticle*> parents(HepMC::GenParticle*) const;
00060 std::vector<HepMC::GenParticle*> ancestors(HepMC::GenParticle*) const;
00061
00062 std::vector<HepMC::GenParticle*> children(HepMC::GenVertex*) const;
00063 std::vector<HepMC::GenParticle*> descendants(HepMC::GenVertex*) const;
00064 std::vector<HepMC::GenParticle*> parents(HepMC::GenVertex*) const;
00065 std::vector<HepMC::GenParticle*> ancestors(HepMC::GenVertex*) const;
00066
00067 void print( std::ostream & os = std::cout ) const;
00068 void tree ( std::ostream & os = std::cout ) const;
00069
00070
00071
00072 void setEventNumber ( int nmbr ) { itsEventNumber = nmbr; }
00073 void appendCollision ( HepMC::GenEvent* c );
00074
00075
00076
00077 int EventNumber() const { return eventNumber(); }
00078 int NumberParticles() const { return numParticles(); }
00079 int NumberCollisions() const { return numCollisions(); }
00080 Particle HEParticle( int i ) const { return *(particle(i)); }
00081 Collision HEPCollision( int i ) const { return *(itsCollisionList[i]); }
00082
00083
00084
00085
00086 private:
00087
00088 int itsEventNumber;
00089 CollisionList itsCollisionList;
00090
00091 };
00092
00093 }
00094
00095 #endif // STDEVENT_HH