CLHEP/StdHep/StdEvent.hh

00001 // $Id: StdEvent.hh,v 1.3 2002/05/20 20:15:02 garren Exp $
00002 // -*- C++ -*-
00003 //
00004 // ----------------------------------------------------------------------
00005 // StdEvent.hh
00006 //
00007 //  StdCollision has been replaced by GenEvent
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   // ---  birth/death:
00035   //
00036   StdEvent( int EventNumber, std::vector<HepMC::GenEvent*> & cvect );
00037   StdEvent( const StdEvent & orig );
00038   StdEvent& operator=( const StdEvent & );
00039   ~StdEvent();
00040 
00041   // ---  accessors:
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   // ---  mutators:
00071   //
00072   void  setEventNumber      ( int nmbr )     { itsEventNumber = nmbr; }
00073   void  appendCollision     ( HepMC::GenEvent* c );
00074 
00075   // -- old method names
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   // -- iterators
00084   //
00085 
00086 private:
00087 
00088   int           itsEventNumber;
00089   CollisionList itsCollisionList;
00090   
00091 };      // StdEvent
00092 
00093 }
00094 
00095 #endif // STDEVENT_HH

Class Library for High Energy Physics (version 1.8)