CMS 3D CMS Logo

TrackingVertex.h

Go to the documentation of this file.
00001 #ifndef SimDataFormats_TrackingVertex_h
00002 #define SimDataFormats_TrackingVertex_h
00003 
00013 #include "DataFormats/Common/interface/RefVector.h"
00014 #include "DataFormats/Math/interface/LorentzVector.h"
00015 #include "DataFormats/Math/interface/Point3D.h"
00016 
00017 #include "SimDataFormats/EncodedEventId/interface/EncodedEventId.h"
00018 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
00019 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
00020 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
00021 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
00022 
00023 class TrackingVertex {
00024 
00025   friend std::ostream& operator<< (std::ostream& s, const TrackingVertex & tv);
00026 
00027  public:
00028 
00029   typedef edm::RefVector<edm::HepMCProduct, HepMC::GenVertex > GenVertexRefVector;
00030   typedef edm::Ref<edm::HepMCProduct, HepMC::GenVertex >       GenVertexRef;
00031   typedef math::XYZTLorentzVectorD                             LorentzVector;
00032   typedef        GenVertexRefVector::iterator                  genv_iterator;
00033   typedef    std::vector<SimVertex>::const_iterator            g4v_iterator;
00034   typedef TrackingParticleRefVector::iterator                  tp_iterator;
00035 
00036 // Default constructor and constructor from values
00037   TrackingVertex();
00038   TrackingVertex(const LorentzVector &position, const bool inVolume,
00039                  const EncodedEventId e = EncodedEventId(0));
00040 
00041 // Setters
00042   void setEventId(EncodedEventId e) {eId_=e;};
00043 
00044 // Track and vertex iterators
00045   genv_iterator genVertices_begin() const; // Ref's to HepMC and Geant4
00046   genv_iterator genVertices_end()   const; // vertices associated with
00047   g4v_iterator   g4Vertices_begin() const; // this vertex, respectively
00048   g4v_iterator   g4Vertices_end()   const; // ....
00049 
00050   tp_iterator    daughterTracks_begin() const; // Ref's to daughter and source
00051   tp_iterator    daughterTracks_end()   const; // tracks associated with
00052   tp_iterator      sourceTracks_begin() const; // this vertex, respectively
00053   tp_iterator      sourceTracks_end()   const; // ....
00054 
00055   unsigned int nG4Vertices()     const { return     g4Vertices_.size(); };
00056   unsigned int nGenVertices()    const { return    genVertices_.size(); };
00057   unsigned int nDaughterTracks() const { return daughterTracks_.size(); };
00058   unsigned int nSourceTracks()   const { return   sourceTracks_.size(); };
00059 
00060 // Add references to TrackingParticles, Geant4, and HepMC vertices to containers
00061   void addG4Vertex(     const SimVertex&       );
00062   void addGenVertex(    const GenVertexRef&       );
00063   void addDaughterTrack(const TrackingParticleRef&);
00064   void addParentTrack(  const TrackingParticleRef&);
00065   void clearDaughterTracks();
00066   void clearParentTracks();
00067 
00068 // Getters for RefVectors
00069   const std::vector<SimVertex>&        g4Vertices() const;
00070   const GenVertexRefVector&           genVertices() const;
00071   const TrackingParticleRefVector&   sourceTracks() const;
00072   const TrackingParticleRefVector& daughterTracks() const;
00073 
00074 // Getters for other info
00075   const LorentzVector& position() const { return position_; };
00076   const EncodedEventId& eventId() const { return eId_;      };
00077   const bool            inVolume() const { return inVolume_; };
00078 
00079  private:
00080 
00081   LorentzVector  position_; // Vertex position and time
00082   bool           inVolume_; // Is it inside tracker volume?
00083   EncodedEventId eId_;
00084 
00085 // References to G4 and generator vertices and TrackingParticles
00086 
00087   std::vector<SimVertex>        g4Vertices_;
00088   GenVertexRefVector           genVertices_;
00089   TrackingParticleRefVector daughterTracks_;
00090   TrackingParticleRefVector   sourceTracks_;
00091 };
00092 
00093 #endif

Generated on Tue Jun 9 17:46:47 2009 for CMSSW by  doxygen 1.5.4