#ifndef G4Lab_Trajectory_h #define G4Lab_Trajectory_h // Inheritance : #include #include #include #include //class G4VProcess; namespace G4Lab { class TrajectoryPoint; class Trajectory :public G4Trajectory ,public virtual IGeant4Trajectory { public: // G4VTrajectory: virtual const std::map* GetAttDefs() const; virtual std::vector* CreateAttValues() const; public: // G4Trajectory: virtual void ShowTrajectory(std::ostream& = G4cout) const; virtual void DrawTrajectory(G4int =0) const; virtual void AppendStep(const G4Step*); virtual int GetPointEntries() const; virtual G4VTrajectoryPoint* GetPoint(G4int) const; virtual void MergeTrajectory(G4VTrajectory*); public: // IGeant4Trajectory: virtual double kineticEnergy() const; virtual double totalEnergy() const; virtual double globalTime() const; virtual unsigned int pointEntries() const; virtual double pointGlobalTime(unsigned int) const; virtual std::string creatorProcessName() const; virtual std::string creatorProcessType() const; virtual void setSave(bool); virtual bool save() const; virtual std::vector stoppingPoint() const; virtual G4VPhysicalVolume* stoppingPhysicalVolume() const; public: Trajectory(const G4Track*); Trajectory(Trajectory&); virtual ~Trajectory(); void* operator new(size_t); void operator delete(void*); int operator == (const Trajectory&) const; private: std::vector fPoints; G4double fKineticEnergy; G4double fTotalEnergy; G4double fGlobalTime; const G4VProcess* fProcess; bool fSave; G4ThreeVector fStoppingPoint; G4VPhysicalVolume* fStoppingVolume; Lib::Debug fDebug; }; } #endif