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

#include <Em10SteppingAction.hh>

Inheritance diagram for Em10SteppingAction:
G4UserSteppingAction

Public Member Functions

 Em10SteppingAction (Em10EventAction *, Em10RunAction *)
 
virtual ~Em10SteppingAction ()
 
void UserSteppingAction (const G4Step *)
 
- Public Member Functions inherited from G4UserSteppingAction
 G4UserSteppingAction ()
 
virtual ~G4UserSteppingAction ()
 
void SetSteppingManagerPointer (G4SteppingManager *pValue)
 

Additional Inherited Members

- Protected Attributes inherited from G4UserSteppingAction
G4SteppingManagerfpSteppingManager
 

Detailed Description

Definition at line 51 of file Em10SteppingAction.hh.

Constructor & Destructor Documentation

Em10SteppingAction::Em10SteppingAction ( Em10EventAction EA,
Em10RunAction RA 
)

Definition at line 51 of file Em10SteppingAction.cc.

53  :G4UserSteppingAction(),eventaction (EA),runaction (RA),
54  IDold(-1)
55 {}
Em10SteppingAction::~Em10SteppingAction ( )
virtual

Definition at line 59 of file Em10SteppingAction.cc.

60 {}

Member Function Documentation

void Em10SteppingAction::UserSteppingAction ( const G4Step aStep)
virtual

Reimplemented from G4UserSteppingAction.

Definition at line 64 of file Em10SteppingAction.cc.

References Em10EventAction::AddCharged(), Em10EventAction::AddE(), Em10EventAction::AddNeutral(), Em10EventAction::AddP(), Em10EventAction::CountStepsCharged(), Em10EventAction::CountStepsNeutral(), G4Electron::Electron(), fGeomBoundary, Em10RunAction::FillGammaSpectrum(), Em10RunAction::FillR(), Em10RunAction::FillTb(), Em10RunAction::FillTh(), Em10RunAction::FillThBack(), Em10RunAction::FillTsec(), Em10RunAction::FillTt(), Em10RunAction::Fillvertexz(), G4Gamma::Gamma(), G4DynamicParticle::GetDefinition(), G4Track::GetDynamicParticle(), Em10EventAction::GetEventno(), G4Track::GetKineticEnergy(), G4Track::GetMomentumDirection(), G4VPhysicalVolume::GetName(), G4Track::GetParentID(), G4StepPoint::GetPhysicalVolume(), G4Track::GetPosition(), G4Step::GetPostStepPoint(), G4Step::GetPreStepPoint(), G4StepPoint::GetStepStatus(), G4Step::GetTotalEnergyDeposit(), G4Step::GetTrack(), G4Track::GetTrackID(), G4Track::GetVertexPosition(), python.hepunit::pi, G4Positron::Positron(), Em10EventAction::SetRef(), Em10EventAction::SetTr(), CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

65 {
66 
67  G4double Theta,Thetaback,Ttrans,Tback,Tsec,Egamma,yend,zend,rend;
68 
69  G4int evno = eventaction->GetEventno();
70 
71  const G4Track* track = aStep->GetTrack();
72  const G4StepPoint* prePoint = aStep->GetPreStepPoint();
73  G4int trackID = track->GetTrackID();
74  G4int parentID = track->GetParentID();
75 
76  const G4DynamicParticle* dynParticle = track->GetDynamicParticle();
77  const G4ParticleDefinition* particle = dynParticle->GetDefinition();
78  G4VPhysicalVolume* preVol = prePoint->GetPhysicalVolume();
80 
81  IDnow = evno+10000*trackID+100000000*parentID;
82  if(IDnow != IDold) {
83  IDold=IDnow;
84  if(trackID > 1 && (particle == G4Electron::Electron() ||
85  particle == G4Positron::Positron() ||
86  particle == G4Gamma::Gamma())) {
87  runaction->Fillvertexz(track->GetVertexPosition().z());
88 
89  if(preVol->GetName()=="Absorber") {
90  if(particle == G4Gamma::Gamma()) {
91  eventaction->AddNeutral();
92  } else {
93  eventaction->AddCharged();
94  Tsec = track->GetKineticEnergy();
95  Tsec += aStep->GetTotalEnergyDeposit();
96  runaction->FillTsec(Tsec);
97  if(particle == G4Electron::Electron()) {
98  eventaction->AddE();
99  } else {
100  eventaction->AddP();
101  }
102  }
103  }
104  }
105  }
106 
107  if(preVol->GetName()=="Absorber") {
108  if(particle == G4Electron::Electron() ||
109  particle == G4Positron::Positron()) {
110  eventaction->CountStepsCharged();
111 
112  } else if(particle == G4Gamma::Gamma()) {
113  eventaction->CountStepsNeutral();
114  }
115 
116  if(prePoint->GetStepStatus() == fGeomBoundary &&
117  preVol != postVol) {
118 
119  if(trackID == 1) {
120  if(track->GetMomentumDirection().z()>0.) {
121 
122  eventaction->SetTr();
123  Theta = std::acos(track->GetMomentumDirection().z());
124  runaction->FillTh(Theta);
125  Ttrans = track->GetKineticEnergy();
126  runaction->FillTt(Ttrans);
127  yend= aStep->GetTrack()->GetPosition().y();
128  zend= aStep->GetTrack()->GetPosition().x();
129  rend = std::sqrt(yend*yend+zend*zend);
130  runaction->FillR(rend);
131 
132  } else {
133  eventaction->SetRef();
134  Thetaback = std::acos(aStep->GetTrack()->GetMomentumDirection().z());
135  Thetaback -= 0.5*pi;
136  runaction->FillThBack(Thetaback);
137  Tback = aStep->GetTrack()->GetKineticEnergy();
138  runaction->FillTb(Tback);
139  }
140  }
141  if(track->GetMomentumDirection().z()>0. &&
142  particle == G4Gamma::Gamma()) {
143 
144  Egamma = aStep->GetTrack()->GetKineticEnergy();
145  runaction->FillGammaSpectrum(Egamma);
146  }
147  }
148  }
149 }
void Fillvertexz(G4double z)
G4int GetParentID() const
double x() const
const G4DynamicParticle * GetDynamicParticle() const
G4StepStatus GetStepStatus() const
const G4ThreeVector & GetPosition() const
void FillTh(G4double Th)
G4ParticleDefinition * GetDefinition() const
void FillThBack(G4double Th)
int G4int
Definition: G4Types.hh:78
double z() const
G4StepPoint * GetPreStepPoint() const
void FillR(G4double R)
G4double GetKineticEnergy() const
G4VPhysicalVolume * GetPhysicalVolume() const
const G4String & GetName() const
G4int GetTrackID() const
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
void FillTt(G4double Tt)
const G4ThreeVector & GetVertexPosition() const
G4double GetTotalEnergyDeposit() const
static G4Positron * Positron()
Definition: G4Positron.cc:94
const G4ThreeVector & GetMomentumDirection() const
G4StepPoint * GetPostStepPoint() const
double y() const
void FillTsec(G4double T)
void FillGammaSpectrum(G4double E)
static G4Electron * Electron()
Definition: G4Electron.cc:94
double G4double
Definition: G4Types.hh:76
G4Track * GetTrack() const
void FillTb(G4double Tt)

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