Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4AdjointTrackingAction Class Reference

#include <G4AdjointTrackingAction.hh>

Inheritance diagram for G4AdjointTrackingAction:
G4UserTrackingAction

Public Member Functions

 G4AdjointTrackingAction (G4AdjointSteppingAction *anAction)
 
virtual ~G4AdjointTrackingAction ()
 
virtual void PreUserTrackingAction (const G4Track *)
 
virtual void PostUserTrackingAction (const G4Track *)
 
void RegisterAtEndOfAdjointTrack ()
 
void SetUserForwardTrackingAction (G4UserTrackingAction *anAction)
 
G4ThreeVector GetPositionAtEndOfLastAdjointTrack ()
 
G4ThreeVector GetDirectionAtEndOfLastAdjointTrack ()
 
G4double GetEkinAtEndOfLastAdjointTrack ()
 
G4double GetEkinNucAtEndOfLastAdjointTrack ()
 
G4double GetWeightAtEndOfLastAdjointTrack ()
 
G4double GetCosthAtEndOfLastAdjointTrack ()
 
const G4StringGetFwdParticleNameAtEndOfLastAdjointTrack ()
 
G4int GetFwdParticlePDGEncodingAtEndOfLastAdjointTrack ()
 
- Public Member Functions inherited from G4UserTrackingAction
 G4UserTrackingAction ()
 
virtual ~G4UserTrackingAction ()
 
void SetTrackingManagerPointer (G4TrackingManager *pValue)
 

Additional Inherited Members

- Protected Attributes inherited from G4UserTrackingAction
G4TrackingManagerfpTrackingManager
 

Detailed Description

Definition at line 50 of file G4AdjointTrackingAction.hh.

Constructor & Destructor Documentation

G4AdjointTrackingAction::G4AdjointTrackingAction ( G4AdjointSteppingAction anAction)

Definition at line 43 of file G4AdjointTrackingAction.cc.

45  :theAdjointSteppingAction(anAction),theUserFwdTrackingAction(0)
46 {;}
G4AdjointTrackingAction::~G4AdjointTrackingAction ( )
virtual

Definition at line 48 of file G4AdjointTrackingAction.cc.

50 {;}

Member Function Documentation

G4double G4AdjointTrackingAction::GetCosthAtEndOfLastAdjointTrack ( )
inline

Definition at line 75 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetCosthAtEndOfLastAdjointTrack().

75 {return last_cos_th;}
G4ThreeVector G4AdjointTrackingAction::GetDirectionAtEndOfLastAdjointTrack ( )
inline

Definition at line 71 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetDirectionAtEndOfLastAdjointTrack().

71 { return last_direction;}
G4double G4AdjointTrackingAction::GetEkinAtEndOfLastAdjointTrack ( )
inline

Definition at line 72 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetEkinAtEndOfLastAdjointTrack().

72 { return last_ekin;}
G4double G4AdjointTrackingAction::GetEkinNucAtEndOfLastAdjointTrack ( )
inline

Definition at line 73 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetEkinNucAtEndOfLastAdjointTrack().

73 { return last_ekin_nuc;}
const G4String& G4AdjointTrackingAction::GetFwdParticleNameAtEndOfLastAdjointTrack ( )
inline

Definition at line 76 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetFwdParticleNameAtEndOfLastAdjointTrack().

76 {return last_fwd_part_name;}
G4int G4AdjointTrackingAction::GetFwdParticlePDGEncodingAtEndOfLastAdjointTrack ( )
inline

Definition at line 77 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetFwdParticlePDGEncodingAtEndOfLastAdjointTrack().

77 {return last_fwd_part_PDGEncoding;}
G4ThreeVector G4AdjointTrackingAction::GetPositionAtEndOfLastAdjointTrack ( )
inline

Definition at line 70 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetPositionAtEndOfLastAdjointTrack().

70 { return last_pos;}
G4double G4AdjointTrackingAction::GetWeightAtEndOfLastAdjointTrack ( )
inline

Definition at line 74 of file G4AdjointTrackingAction.hh.

Referenced by G4AdjointSimManager::GetWeightAtEndOfLastAdjointTrack().

74 {return last_weight;}
void G4AdjointTrackingAction::PostUserTrackingAction ( const G4Track aTrack)
virtual

Reimplemented from G4UserTrackingAction.

Definition at line 67 of file G4AdjointTrackingAction.cc.

References G4ParticleTable::FindParticle(), G4ParticleDefinition::GetBaryonNumber(), G4AdjointSteppingAction::GetDidAdjParticleReachTheExtSource(), G4AdjointSteppingAction::GetLastEkin(), G4AdjointSteppingAction::GetLastMomentum(), G4AdjointSteppingAction::GetLastPartDef(), G4AdjointSteppingAction::GetLastPosition(), G4AdjointSteppingAction::GetLastWeight(), G4ParticleDefinition::GetParticleName(), G4ParticleTable::GetParticleTable(), G4ParticleDefinition::GetParticleType(), G4ParticleDefinition::GetPDGEncoding(), CLHEP::Hep3Vector::mag(), G4UserTrackingAction::PostUserTrackingAction(), G4String::remove(), and CLHEP::Hep3Vector::z().

68 { if(!is_adjoint_tracking_mode){
69  if (theUserFwdTrackingAction)
70  theUserFwdTrackingAction->PostUserTrackingAction(aTrack);
71  }
72  else if (theAdjointSteppingAction->GetDidAdjParticleReachTheExtSource()){
73  last_pos = theAdjointSteppingAction->GetLastPosition();
74  last_direction = theAdjointSteppingAction->GetLastMomentum();
75  last_direction /=last_direction.mag();
76  last_cos_th = last_direction.z();
77  G4ParticleDefinition* aPartDef= theAdjointSteppingAction->GetLastPartDef();
78  last_fwd_part_name= aPartDef->GetParticleName();
79  last_fwd_part_name.remove(0,4);
80  last_fwd_part_PDGEncoding=G4ParticleTable::GetParticleTable()
81  ->FindParticle(last_fwd_part_name)->GetPDGEncoding();
82  last_ekin = theAdjointSteppingAction->GetLastEkin();
83  last_ekin_nuc = last_ekin;
84  if (aPartDef->GetParticleType() == "adjoint_nucleus") {
85  G4double nb_nuc=double(aPartDef->GetBaryonNumber());
86  last_ekin_nuc /=nb_nuc;
87  }
88  last_weight = theAdjointSteppingAction->GetLastWeight(); ;
89  }
90 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4String & remove(str_size)
const G4String & GetParticleName() const
double z() const
const G4String & GetParticleType() const
G4ParticleDefinition * GetLastPartDef()
static G4ParticleTable * GetParticleTable()
virtual void PostUserTrackingAction(const G4Track *)
double G4double
Definition: G4Types.hh:76
double mag() const
void G4AdjointTrackingAction::PreUserTrackingAction ( const G4Track aTrack)
virtual

Reimplemented from G4UserTrackingAction.

Definition at line 52 of file G4AdjointTrackingAction.cc.

References G4String::contains(), G4Track::GetDynamicParticle(), G4Track::GetParticleDefinition(), G4ParticleDefinition::GetParticleType(), G4DynamicParticle::GetPrimaryParticle(), G4Track::GetWeight(), G4UserTrackingAction::PreUserTrackingAction(), G4AdjointSteppingAction::SetAdjointTrackingMode(), and G4AdjointSteppingAction::SetPrimWeight().

53 { G4String partType = aTrack->GetParticleDefinition()->GetParticleType();
54  if (aTrack->GetDynamicParticle()->GetPrimaryParticle() &&
55  partType.contains(G4String("adjoint"))){
56  is_adjoint_tracking_mode =true;
57  theAdjointSteppingAction->SetPrimWeight(aTrack->GetWeight());
58  }
59  else {
60  is_adjoint_tracking_mode =false;
61  if (theUserFwdTrackingAction)
62  theUserFwdTrackingAction->PreUserTrackingAction(aTrack);
63  }
64  theAdjointSteppingAction->SetAdjointTrackingMode(is_adjoint_tracking_mode);
65 }
void SetAdjointTrackingMode(G4bool aBool)
const G4DynamicParticle * GetDynamicParticle() const
const G4ParticleDefinition * GetParticleDefinition() const
const G4String & GetParticleType() const
G4PrimaryParticle * GetPrimaryParticle() const
void SetPrimWeight(G4double weight)
G4bool contains(const std::string &) const
G4double GetWeight() const
virtual void PreUserTrackingAction(const G4Track *)
void G4AdjointTrackingAction::RegisterAtEndOfAdjointTrack ( )
void G4AdjointTrackingAction::SetUserForwardTrackingAction ( G4UserTrackingAction anAction)
inline

Definition at line 68 of file G4AdjointTrackingAction.hh.

68  {
69  theUserFwdTrackingAction = anAction;}

The documentation for this class was generated from the following files: