Import Geant4 11.2.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2023-06-30 09:09:57 +02:00
parent aef78ca386
commit dd1f179cda
3780 changed files with 212808 additions and 142780 deletions
@@ -37,9 +37,10 @@
#ifndef G4AdjointTrackingAction_hh
#define G4AdjointTrackingAction_hh 1
#include "globals.hh"
#include "G4UserTrackingAction.hh"
#include "G4ThreeVector.hh"
#include "G4UserTrackingAction.hh"
#include "globals.hh"
#include <vector>
class G4AdjointSteppingAction;
@@ -48,71 +49,73 @@ class G4ParticleDefinition;
class G4AdjointTrackingAction : public G4UserTrackingAction
{
public:
G4AdjointTrackingAction(G4AdjointSteppingAction* anAction);
~G4AdjointTrackingAction() override = default;
public:
void PreUserTrackingAction(const G4Track*) override;
void PostUserTrackingAction(const G4Track*) override;
void RegisterAtEndOfAdjointTrack();
void ClearEndOfAdjointTrackInfoVectors();
G4AdjointTrackingAction(G4AdjointSteppingAction* anAction);
virtual ~G4AdjointTrackingAction();
inline void SetUserForwardTrackingAction(G4UserTrackingAction* anAction)
{
theUserFwdTrackingAction = anAction;
}
inline G4ThreeVector GetPositionAtEndOfLastAdjointTrack(std::size_t i = 0)
{
return last_pos_vec[i];
}
inline G4ThreeVector GetDirectionAtEndOfLastAdjointTrack(std::size_t i = 0)
{
return last_direction_vec[i];
}
inline G4double GetEkinAtEndOfLastAdjointTrack(std::size_t i = 0) { return last_ekin_vec[i]; }
inline G4double GetEkinNucAtEndOfLastAdjointTrack(std::size_t i = 0)
{
return last_ekin_nuc_vec[i];
}
inline G4double GetWeightAtEndOfLastAdjointTrack(std::size_t i = 0) { return last_weight_vec[i]; }
inline G4double GetCosthAtEndOfLastAdjointTrack(std::size_t i = 0) { return last_cos_th_vec[i]; }
inline const G4String& GetFwdParticleNameAtEndOfLastAdjointTrack() { return last_fwd_part_name; }
inline G4int GetFwdParticlePDGEncodingAtEndOfLastAdjointTrack(std::size_t i = 0)
{
return last_fwd_part_PDGEncoding_vec[i];
}
inline G4bool GetIsAdjointTrackingMode() { return is_adjoint_tracking_mode; }
inline G4int GetLastFwdParticleIndex(std::size_t i = 0) { return last_fwd_part_index_vec[i]; }
inline std::size_t GetNbOfAdointTracksReachingTheExternalSurface() { return last_pos_vec.size(); }
inline void SetListOfPrimaryFwdParticles(std::vector<G4ParticleDefinition*>* aListOfParticles)
{
pListOfPrimaryFwdParticles = aListOfParticles;
}
virtual void PreUserTrackingAction(const G4Track*);
virtual void PostUserTrackingAction(const G4Track*);
void RegisterAtEndOfAdjointTrack();
void ClearEndOfAdjointTrackInfoVectors();
private:
G4AdjointSteppingAction* theAdjointSteppingAction = nullptr;
G4UserTrackingAction* theUserFwdTrackingAction = nullptr;
G4bool is_adjoint_tracking_mode = false;
inline void SetUserForwardTrackingAction(G4UserTrackingAction* anAction)
{ theUserFwdTrackingAction = anAction; }
inline G4ThreeVector GetPositionAtEndOfLastAdjointTrack(std::size_t i=0)
{ return last_pos_vec[i]; }
inline G4ThreeVector GetDirectionAtEndOfLastAdjointTrack(std::size_t i=0)
{ return last_direction_vec[i]; }
inline G4double GetEkinAtEndOfLastAdjointTrack(std::size_t i=0)
{ return last_ekin_vec[i]; }
inline G4double GetEkinNucAtEndOfLastAdjointTrack(std::size_t i=0)
{ return last_ekin_nuc_vec[i]; }
inline G4double GetWeightAtEndOfLastAdjointTrack(std::size_t i=0)
{ return last_weight_vec[i]; }
inline G4double GetCosthAtEndOfLastAdjointTrack(std::size_t i=0)
{ return last_cos_th_vec[i]; }
inline const G4String& GetFwdParticleNameAtEndOfLastAdjointTrack()
{ return last_fwd_part_name; }
inline G4int GetFwdParticlePDGEncodingAtEndOfLastAdjointTrack(std::size_t i=0)
{ return last_fwd_part_PDGEncoding_vec[i]; }
inline G4bool GetIsAdjointTrackingMode()
{ return is_adjoint_tracking_mode; }
inline G4int GetLastFwdParticleIndex(std::size_t i=0)
{ return last_fwd_part_index_vec[i]; }
inline std::size_t GetNbOfAdointTracksReachingTheExternalSurface()
{ return last_pos_vec.size(); }
inline void SetListOfPrimaryFwdParticles(std::vector<G4ParticleDefinition*>* aListOfParticles)
{ pListOfPrimaryFwdParticles = aListOfParticles; }
// Adjoint particle information on the external surface
// ----------------------------------------------------
G4ThreeVector last_pos;
G4ThreeVector last_direction;
G4double last_ekin = 0.0, last_ekin_nuc = 0.0;
// last_ekin_nuc=last_ekin/nuc, nuc is 1 if not a nucleus
G4double last_cos_th = 0.0;
G4String last_fwd_part_name;
G4int last_fwd_part_PDGEncoding = 0;
G4double last_weight = 0.0;
G4int last_fwd_part_index = 0;
std::vector<G4ParticleDefinition*>* pListOfPrimaryFwdParticles = nullptr;
private:
G4AdjointSteppingAction* theAdjointSteppingAction = nullptr;
G4UserTrackingAction* theUserFwdTrackingAction = nullptr;
G4bool is_adjoint_tracking_mode = false;
// Adjoint particle information on the external surface
// ----------------------------------------------------
G4ThreeVector last_pos;
G4ThreeVector last_direction;
G4double last_ekin = 0.0, last_ekin_nuc = 0.0;
// last_ekin_nuc=last_ekin/nuc, nuc is 1 if not a nucleus
G4double last_cos_th = 0.0;
G4String last_fwd_part_name;
G4int last_fwd_part_PDGEncoding = 0;
G4double last_weight = 0.0;
G4int last_fwd_part_index = 0;
std::vector<G4ParticleDefinition*>* pListOfPrimaryFwdParticles = nullptr;
std::vector<G4ThreeVector> last_pos_vec;
std::vector<G4ThreeVector> last_direction_vec;
std::vector<G4double> last_ekin_vec;
std::vector<G4double> last_ekin_nuc_vec;
std::vector<G4double> last_cos_th_vec;
std::vector<G4double> last_weight_vec;
std::vector<G4int> last_fwd_part_PDGEncoding_vec;
std::vector<G4int> last_fwd_part_index_vec;
std::vector<G4ThreeVector> last_pos_vec;
std::vector<G4ThreeVector> last_direction_vec;
std::vector<G4double> last_ekin_vec;
std::vector<G4double> last_ekin_nuc_vec;
std::vector<G4double> last_cos_th_vec;
std::vector<G4double> last_weight_vec;
std::vector<G4int> last_fwd_part_PDGEncoding_vec;
std::vector<G4int> last_fwd_part_index_vec;
};
#endif