File indexing completed on 2025-02-23 09:21:51
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
0030 #pragma once
0031
0032 #include "G4ITTrackingInteractivity.hh"
0033 #include "G4UserSteppingAction.hh"
0034 #include "G4UserTrackingAction.hh"
0035
0036 #include <memory>
0037 #include <vector>
0038
0039 class G4VTrajectory;
0040
0041 class ITTrackingInteractivity : public G4ITTrackingInteractivity
0042 {
0043 public:
0044 ITTrackingInteractivity();
0045 ~ITTrackingInteractivity() override;
0046
0047 void Initialize() override;
0048 void StartTracking(G4Track*) override;
0049 void AppendStep(G4Track* track, G4Step* step) override;
0050 void EndTracking(G4Track*) override;
0051 void Finalize() override;
0052
0053 void SetUserAction(G4UserTrackingAction*);
0054 inline std::unique_ptr<G4UserTrackingAction> GetUserTrackingAction();
0055
0056 void SetUserAction(G4UserSteppingAction*);
0057 inline std::unique_ptr<G4UserSteppingAction> GetUserSteppingAction();
0058
0059 private:
0060 int fStoreTrajectory;
0061 std::vector<G4VTrajectory*> fTrajectories;
0062 std::unique_ptr<G4UserTrackingAction> fpUserTrackingAction;
0063 std::unique_ptr<G4UserSteppingAction> fpUserSteppingAction;
0064 };
0065
0066 inline void ITTrackingInteractivity::SetUserAction(G4UserTrackingAction* trackAct)
0067 {
0068 fpUserTrackingAction.reset(trackAct);
0069 }
0070
0071 inline void ITTrackingInteractivity::SetUserAction(G4UserSteppingAction* stepAct)
0072 {
0073 fpUserSteppingAction.reset(stepAct);
0074 }
0075
0076 inline std::unique_ptr<G4UserSteppingAction> ITTrackingInteractivity::GetUserSteppingAction()
0077 {
0078 return std::move(fpUserSteppingAction);
0079 }
0080
0081 inline std::unique_ptr<G4UserTrackingAction> ITTrackingInteractivity::GetUserTrackingAction()
0082 {
0083 return std::move(fpUserTrackingAction);
0084 }