37#ifndef G4AdjointTrackingAction_hh
38#define G4AdjointTrackingAction_hh 1
63 theUserFwdTrackingAction = anAction;
67 return last_pos_vec[i];
71 return last_direction_vec[i];
76 return last_ekin_nuc_vec[i];
83 return last_fwd_part_PDGEncoding_vec[i];
90 pListOfPrimaryFwdParticles = aListOfParticles;
96 G4bool is_adjoint_tracking_mode =
false;
102 G4double last_ekin = 0.0, last_ekin_nuc = 0.0;
106 G4int last_fwd_part_PDGEncoding = 0;
108 G4int last_fwd_part_index = 0;
109 std::vector<G4ParticleDefinition*>* pListOfPrimaryFwdParticles =
nullptr;
111 std::vector<G4ThreeVector> last_pos_vec;
112 std::vector<G4ThreeVector> last_direction_vec;
113 std::vector<G4double> last_ekin_vec;
114 std::vector<G4double> last_ekin_nuc_vec;
115 std::vector<G4double> last_cos_th_vec;
116 std::vector<G4double> last_weight_vec;
117 std::vector<G4int> last_fwd_part_PDGEncoding_vec;
118 std::vector<G4int> last_fwd_part_index_vec;
CLHEP::Hep3Vector G4ThreeVector
G4double GetEkinAtEndOfLastAdjointTrack(std::size_t i=0)
void SetListOfPrimaryFwdParticles(std::vector< G4ParticleDefinition * > *aListOfParticles)
G4double GetEkinNucAtEndOfLastAdjointTrack(std::size_t i=0)
G4ThreeVector GetPositionAtEndOfLastAdjointTrack(std::size_t i=0)
G4bool GetIsAdjointTrackingMode()
const G4String & GetFwdParticleNameAtEndOfLastAdjointTrack()
G4int GetFwdParticlePDGEncodingAtEndOfLastAdjointTrack(std::size_t i=0)
G4double GetWeightAtEndOfLastAdjointTrack(std::size_t i=0)
G4AdjointTrackingAction(G4AdjointSteppingAction *anAction)
void RegisterAtEndOfAdjointTrack()
void ClearEndOfAdjointTrackInfoVectors()
std::size_t GetNbOfAdointTracksReachingTheExternalSurface()
G4ThreeVector GetDirectionAtEndOfLastAdjointTrack(std::size_t i=0)
void PostUserTrackingAction(const G4Track *) override
G4int GetLastFwdParticleIndex(std::size_t i=0)
~G4AdjointTrackingAction() override=default
G4double GetCosthAtEndOfLastAdjointTrack(std::size_t i=0)
void SetUserForwardTrackingAction(G4UserTrackingAction *anAction)
void PreUserTrackingAction(const G4Track *) override