#include "SteppingAction.hh" #include "EventAction.hh" #include "G4SteppingManager.hh" #include "G4RunManager.hh" #include "Analysis.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... SteppingAction::SteppingAction(EventAction* EvAct) :G4UserSteppingAction(),fEventAction(EvAct) { } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... SteppingAction::~SteppingAction() { } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void SteppingAction::UserSteppingAction(const G4Step* aStep) { G4String postName; if (aStep->GetPostStepPoint()->GetStepStatus() == fWorldBoundary) postName="out"; else postName = aStep->GetPostStepPoint()->GetTouchableHandle()->GetVolume()->GetName(); auto pka1 = aStep->GetPreStepPoint(); auto pka2 = aStep->GetPostStepPoint(); auto position = aStep->GetPreStepPoint()->GetPosition(); auto tid = aStep->GetTrack()->GetTrackID(); auto pre = pka1->GetKineticEnergy(); auto post = pka2->GetKineticEnergy(); auto parentid = aStep->GetTrack()->GetParentID(); auto pname=aStep->GetTrack()->GetDefinition()->GetParticleName(); G4int trackID = aStep->GetTrack()->GetTrackID(); G4double EdepStep = aStep->GetTotalEnergyDeposit(); G4String volume =aStep->GetPreStepPoint()->GetTouchableHandle()->GetVolume()->GetName(); G4double px = position.x(); G4double py = position.y(); G4double pz = position.z(); // G4int i; auto secondary = aStep->GetSecondaryInCurrentStep(); size_t size_secondary = (*secondary).size(); //auto secstep = (*secondary)[i]; // G4String secondaryName = secstep->GetDefinition()->GetParticleName(); // auto secondaryID = secstep->GetTrackID(); // auto secEkin = secstep->GetKineticEnergy(); auto processname = pka2->GetProcessDefinedStep()->GetProcessName(); if (volume=="top") { // auto processname = pka2->GetProcessDefinedStep()->GetProcessName(); /*std::fstream layerreactionname; layerreactionname.open("layerreactionname.txt",std::ios::app|std::ios::out); layerreactionname<GetDefinition()->GetParticleName(); auto secondaryID1 = secstep1->GetParentID(); auto secEkin1 = secstep1->GetKineticEnergy(); std::fstream layersecondary; layersecondary.open("csecondary.txt",std::ios::app|std::ios::out); layersecondary<AddEdep(EdepStep); // total energy deposit //G4cout<0.) { std::fstream edeposit; edeposit.open("stepdeposit.txt",std::ios::app|std::ios::out); edeposit<GetProcessDefinedStep()->GetProcessName(); /* std::fstream diamondreactionfile; diamondreactionfile.open("diamondreactionname.txt",std::ios::app|std::ios::out); diamondreactionfile<GetDefinition()->GetParticleName(); auto secondaryID2 = secstep2->GetParentID(); auto secEkin2 = secstep2->GetKineticEnergy(); std::fstream diamondsecondaryfile; diamondsecondaryfile.open("dsecondary.txt",std::ios::app|std::ios::out); diamondsecondaryfile<AddEdep(EdepStep); // total energy deposit //G4cout<