00001 #ifndef _BDS_TRAJECTORY_POINT_HH__ 00002 #define _BDS_TRAJECTORY_POINT_HH__ 00003 00004 #include "G4TrajectoryPoint.hh" 00005 #include "G4Track.hh" 00006 #include "G4Allocator.hh" 00007 00008 class BDSTrajectoryPoint: public G4TrajectoryPoint{ 00009 public: 00010 BDSTrajectoryPoint(); 00011 BDSTrajectoryPoint(const G4Track* aTrack); 00012 ~BDSTrajectoryPoint(); 00013 00014 inline void *operator new(size_t); 00015 inline void operator delete(void *aTrajectoryPoint); 00016 inline int operator==(const BDSTrajectoryPoint& right) const 00017 {return (this==&right);}; 00018 00019 inline G4bool isScatteringProcess(){return _isScatteringProcess;} 00020 inline G4int GetTrackID(){return _trackID;} 00021 void printData(); 00022 inline G4ThreeVector GetVertexPosition(){return _vertexPosition;} 00023 00024 00025 private: 00026 G4bool _isScatteringProcess; 00027 const G4VProcess* _currentProcess; 00028 G4int _trackID; 00029 G4ThreeVector _vertexPosition; 00030 }; 00031 00032 extern G4Allocator<BDSTrajectoryPoint> bdsTrajectoryPointAllocator; 00033 00034 inline void* BDSTrajectoryPoint::operator new(size_t) 00035 { 00036 void *aTrajectoryPoint; 00037 aTrajectoryPoint = (void *) bdsTrajectoryPointAllocator.MallocSingle(); 00038 return aTrajectoryPoint; 00039 } 00040 00041 inline void BDSTrajectoryPoint::operator delete(void *aTrajectoryPoint) 00042 { 00043 bdsTrajectoryPointAllocator.FreeSingle((BDSTrajectoryPoint *) aTrajectoryPoint); 00044 } 00045 00046 00047 00048 #endif