00001 #ifndef SimG4Core_G4SimTrack_H
00002 #define SimG4Core_G4SimTrack_H
00003
00004 #include "DataFormats/Math/interface/Vector3D.h"
00005 #include "DataFormats/Math/interface/LorentzVector.h"
00006 #include <vector>
00007 #include <cmath>
00008
00009 class G4SimTrack
00010 {
00011 public:
00012 G4SimTrack() {}
00013
00014 G4SimTrack(int iid, int ipart, const math::XYZVectorD & ip, double ie)
00015 : id_(iid), ipart_(ipart), ip_(ip), ie_(ie),ivert_(-1),igenpart_(-1), parentID_(-1),
00016 parentMomentum_(math::XYZVectorD(0.,0.,0.)),tkSurfacePosition_(math::XYZVectorD(0.,0.,0.)),
00017 tkSurfaceMomentum_(math::XYZTLorentzVectorD(0.,0.,0.,0.)){}
00018
00019 G4SimTrack(int iid, int ipart, const math::XYZVectorD& ip, double ie,
00020 int iv, int ig, const math::XYZVectorD& ipmom)
00021 : id_(iid),ipart_(ipart),ip_(ip),ie_(ie),ivert_(iv),igenpart_(ig),parentMomentum_(ipmom),
00022 tkSurfacePosition_(math::XYZVectorD(0.,0.,0.)),tkSurfaceMomentum_(math::XYZTLorentzVectorD(0.,0.,0.,0.)) {}
00023
00024 G4SimTrack(int iid, int ipart, const math::XYZVectorD& ip, double ie,
00025 int iv, int ig, const math::XYZVectorD& ipmom,
00026 const math::XYZVectorD & tkpos, const math::XYZTLorentzVectorD & tkmom)
00027 : id_(iid),ipart_(ipart),ip_(ip),ie_(ie),ivert_(iv),igenpart_(ig),parentMomentum_(ipmom),
00028 tkSurfacePosition_(tkpos),tkSurfaceMomentum_(tkmom) {}
00029
00030 ~G4SimTrack() {}
00031
00032 const int id() const { return id_; }
00033 const int part() const { return ipart_; }
00034 const math::XYZVectorD & momentum() const { return ip_; }
00035 const double energy() const { return ie_; }
00036 int const ivert() const { return ivert_; }
00037 int const igenpart() const { return igenpart_; }
00038
00039 const math::XYZVectorD & parentMomentum() const { return parentMomentum_; }
00040
00041 const math::XYZVectorD & trackerSurfacePosition() const {return tkSurfacePosition_;}
00042 const math::XYZTLorentzVectorD & trackerSurfaceMomentum() const {return tkSurfaceMomentum_;}
00043
00044
00045 const int parentID() const { return parentID_; }
00046 private:
00047 int id_;
00048 int ipart_;
00049 math::XYZVectorD ip_;
00050 double ie_;
00051 int ivert_;
00052 int igenpart_;
00053 int parentID_;
00054 math::XYZVectorD parentMomentum_;
00055 math::XYZVectorD tkSurfacePosition_;
00056 math::XYZTLorentzVectorD tkSurfaceMomentum_;
00057 };
00058
00059 #endif