ATLAS Offline Software
Classes | Public Member Functions | Private Attributes | List of all members
G4UA::GeantFollowerMS Class Reference

#include <GeantFollowerMS.h>

Inheritance diagram for G4UA::GeantFollowerMS:
Collaboration diagram for G4UA::GeantFollowerMS:

Classes

struct  Config
 

Public Member Functions

 GeantFollowerMS (const Config &config)
 
virtual void BeginOfEventAction (const G4Event *) override
 
virtual void EndOfEventAction (const G4Event *) override
 
virtual void BeginOfRunAction (const G4Run *) override
 
virtual void UserSteppingAction (const G4Step *) override
 

Private Attributes

Config m_config
 
Trk::IGeantFollowerMSHelperm_helperPointer
 

Detailed Description

Definition at line 33 of file GeantFollowerMS.h.

Constructor & Destructor Documentation

◆ GeantFollowerMS()

GeantFollowerMS::GeantFollowerMS ( const Config config)

Definition at line 26 of file GeantFollowerMS.cxx.

27  : m_config(config)
28  , m_helperPointer(nullptr)
29  {}

Member Function Documentation

◆ BeginOfEventAction()

void GeantFollowerMS::BeginOfEventAction ( const G4Event *  )
overridevirtual

Definition at line 31 of file GeantFollowerMS.cxx.

32  {
33  // FIXME: thread-unsafe tool usage in thread-local action? ATLASSIM-3562.
35  }

◆ BeginOfRunAction()

void GeantFollowerMS::BeginOfRunAction ( const G4Run *  )
overridevirtual

Definition at line 43 of file GeantFollowerMS.cxx.

44  {
45  if(m_config.helper.retrieve()!=StatusCode::SUCCESS) {
46  G4ExceptionDescription description;
47  description << "Cannot retrieve GeantFollowerMS helper";
48  G4Exception("GeantFollowerMS", "GeantFollowerMS1", FatalException, description);
49  return;
50  }
52 
53  if(m_config.trackingGeometrySvc.retrieve()!=StatusCode::SUCCESS) {
54  G4ExceptionDescription description;
55  description << "Cannot retrieve TrackingGeometrySvc in GeantFollowerMS";
56  G4Exception("GeantFollowerMS", "GeantFollowerMS2", FatalException, description);
57  return;
58  }
59 
60  }

◆ EndOfEventAction()

void GeantFollowerMS::EndOfEventAction ( const G4Event *  )
overridevirtual

Definition at line 37 of file GeantFollowerMS.cxx.

38  {
39  // FIXME: thread-unsafe tool usage in thread-local action? ATLASSIM-3562.
41  }

◆ UserSteppingAction()

void GeantFollowerMS::UserSteppingAction ( const G4Step *  aStep)
overridevirtual

Definition at line 62 of file GeantFollowerMS.cxx.

63  {
64  // kill secondaries
65  if (aStep->GetTrack()->GetParentID()) {
66  aStep->GetTrack()->SetTrackStatus(fStopAndKill);
67  return;
68  }
69 
70  // get the prestep point and follow this guy
71  G4StepPoint * g4PreStep = aStep->GetPreStepPoint();
72  G4ThreeVector g4Momentum = g4PreStep->GetMomentum();
73  const G4ThreeVector& g4Position = g4PreStep->GetPosition();
74 
75  G4Track* g4Track = aStep->GetTrack();
76  const G4DynamicParticle* g4DynParticle = g4Track->GetDynamicParticle();
77 
78  // the material information
79  const G4TouchableHistory* touchHist =
80  static_cast<const G4TouchableHistory*>(aStep->GetPreStepPoint()->GetTouchable());
81 
82  if(ATH_LIKELY(touchHist)) {
83  // G4LogicalVolume
84  const G4LogicalVolume *lv= touchHist->GetVolume()->GetLogicalVolume();
85 
86  if(ATH_LIKELY(lv)) {
87  const G4Material *mat = lv->GetMaterial();
88  // the step information
89  double steplength = aStep->GetStepLength();
90  // the position information
91  double X0 = mat->GetRadlen();
92  // update the track follower
93  m_helperPointer->trackParticle(g4Position, g4Momentum,
94  g4DynParticle->GetPDGcode(),
95  g4DynParticle->GetCharge(),
96  steplength, X0);
97  }
98  else {
99  G4ExceptionDescription description;
100  description << "GeantFollowerMS::SteppingAction NULL G4LogicalVolume pointer.";
101  G4Exception("GeantFollowerMS", "GeantFollowerMS3", FatalException, description);
102  }
103  }
104  else {
105  G4ExceptionDescription description;
106  description << "GeantFollowerMS::SteppingAction NULL G4TouchableHistory pointer.";
107  G4Exception("GeantFollowerMS", "GeantFollowerMS4", FatalException, description);
108  }
109  }

Member Data Documentation

◆ m_config

Config G4UA::GeantFollowerMS::m_config
private

Definition at line 56 of file GeantFollowerMS.h.

◆ m_helperPointer

Trk::IGeantFollowerMSHelper* G4UA::GeantFollowerMS::m_helperPointer
private

Definition at line 58 of file GeantFollowerMS.h.


The documentation for this class was generated from the following files:
G4UA::GeantFollowerMS::Config::trackingGeometrySvc
ServiceHandle< Trk::ITrackingGeometrySvc > trackingGeometrySvc
Definition: GeantFollowerMS.h:44
Trk::IGeantFollowerMSHelper::trackParticle
virtual void trackParticle(const G4ThreeVector &pos, const G4ThreeVector &mom, int pdg, double charge, float t, float X0)=0
Trk::IGeantFollowerMSHelper::beginEvent
virtual void beginEvent()=0
G4UA::GeantFollowerMS::m_helperPointer
Trk::IGeantFollowerMSHelper * m_helperPointer
Definition: GeantFollowerMS.h:58
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:53
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
pdg_comparison.X0
X0
Definition: pdg_comparison.py:314
G4UA::GeantFollowerMS::m_config
Config m_config
Definition: GeantFollowerMS.h:56
Trk::IGeantFollowerMSHelper::endEvent
virtual void endEvent()=0
ATH_LIKELY
#define ATH_LIKELY(x)
Definition: AthUnlikelyMacros.h:16
G4UA::GeantFollowerMS::Config::helper
ToolHandle< Trk::IGeantFollowerMSHelper > helper
Definition: GeantFollowerMS.h:42
description
std::string description
glabal timer - how long have I taken so far?
Definition: hcg.cxx:88