File indexing completed on 2026-05-01 07:38:52
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #pragma once
0030
0031 #include "G4ITTrackingInteractivity.hh"
0032 #include "G4UserSteppingAction.hh"
0033 #include "G4UserTrackingAction.hh"
0034
0035 #include <memory>
0036 #include <vector>
0037
0038 class G4VTrajectory;
0039
0040 class ITTrackingInteractivity : public G4ITTrackingInteractivity
0041 {
0042 public:
0043 ITTrackingInteractivity();
0044 ~ITTrackingInteractivity() override = default;
0045
0046 void Initialize() override;
0047 void StartTracking(G4Track*) override;
0048 void AppendStep(G4Track* track, G4Step* step) override;
0049 void EndTracking(G4Track*) override;
0050 void Finalize() override;
0051
0052 void SetUserAction(G4UserTrackingAction*);
0053 inline std::unique_ptr<G4UserTrackingAction> GetUserTrackingAction();
0054
0055 void SetUserAction(G4UserSteppingAction*);
0056 inline std::unique_ptr<G4UserSteppingAction> GetUserSteppingAction();
0057
0058 private:
0059 int fStoreTrajectory;
0060 std::vector<G4VTrajectory*> fTrajectories;
0061 std::unique_ptr<G4UserTrackingAction> fpUserTrackingAction;
0062 std::unique_ptr<G4UserSteppingAction> fpUserSteppingAction;
0063 };
0064
0065 inline void ITTrackingInteractivity::SetUserAction(G4UserTrackingAction* trackAct)
0066 {
0067 fpUserTrackingAction.reset(trackAct);
0068 }
0069
0070 inline void ITTrackingInteractivity::SetUserAction(G4UserSteppingAction* stepAct)
0071 {
0072 fpUserSteppingAction.reset(stepAct);
0073 }
0074
0075 inline std::unique_ptr<G4UserSteppingAction> ITTrackingInteractivity::GetUserSteppingAction()
0076 {
0077 return std::move(fpUserSteppingAction);
0078 }
0079
0080 inline std::unique_ptr<G4UserTrackingAction> ITTrackingInteractivity::GetUserTrackingAction()
0081 {
0082 return std::move(fpUserTrackingAction);
0083 }