// /// \file B4aSteppingAction.cc /// \brief Implementation of the B4aSteppingAction class #include "B4aSteppingAction.hh" #include "B4aEventAction.hh" #include "B4DetectorConstruction.hh" #include "G4Step.hh" #include "G4RunManager.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... B4aSteppingAction::B4aSteppingAction( const B4DetectorConstruction* detectorConstruction, B4aEventAction* eventAction) : G4UserSteppingAction(), fDetConstruction(detectorConstruction), fEventAction(eventAction) {} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... B4aSteppingAction::~B4aSteppingAction() {} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void B4aSteppingAction::UserSteppingAction(const G4Step* step) { // Collect energy and track length step by step // get volume of the current step auto volume = step->GetPreStepPoint()->GetTouchableHandle()->GetVolume(); // energy deposit auto edep = step->GetTotalEnergyDeposit(); // step length G4double stepLength = 0.; if ( step->GetTrack()->GetDefinition()->GetPDGCharge() != 0. ) { stepLength = step->GetStepLength(); } if ( volume == fDetConstruction->GetSiliconPV() ) { fEventAction->AddSil(edep,stepLength); } if ( volume == fDetConstruction->GetScintillatorPV() ) { fEventAction->AddSci(edep,stepLength); } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......