00001 #ifndef SimTrack_H 00002 #define SimTrack_H 00003 00004 #include "SimDataFormats/Track/interface/CoreSimTrack.h" 00005 00006 class SimTrack : public CoreSimTrack 00007 { 00008 00009 public: 00010 00011 typedef CoreSimTrack Core; 00012 00014 SimTrack(); 00015 SimTrack(int ipart, const math::XYZTLorentzVectorD& p) ; 00016 00020 SimTrack(int ipart, const math::XYZTLorentzVectorD& p, int iv, int ig); 00021 00022 SimTrack(int ipart, const math::XYZTLorentzVectorD& p, int iv, int ig, 00023 const math::XYZVectorD& tkp, const math::XYZTLorentzVectorD& tkm); 00024 00026 SimTrack(const CoreSimTrack& t, int iv, int ig); 00027 00029 int vertIndex() const { return ivert;} 00030 bool noVertex() const { return ivert==-1;} 00031 00033 int genpartIndex() const { return igenpart;} 00034 bool noGenpart() const { return igenpart==-1;} 00035 00036 const math::XYZVectorD& trackerSurfacePosition() const { return tkposition; } 00037 00038 const math::XYZTLorentzVectorD& trackerSurfaceMomentum() const { return tkmomentum; } 00039 00040 inline void setTkPosition(const math::XYZVectorD& pos) { tkposition = pos; } 00041 00042 inline void setTkMomentum(const math::XYZTLorentzVectorD& mom) { tkmomentum = mom; } 00043 00044 private: 00045 00046 int ivert; 00047 int igenpart; 00048 00049 math::XYZVectorD tkposition ; 00050 math::XYZTLorentzVectorD tkmomentum ; 00051 00052 }; 00053 00054 #include <iosfwd> 00055 std::ostream & operator <<(std::ostream & o , const SimTrack& t); 00056 00057 #endif