44 const int id = std::abs(aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetPDGEncoding());
47 if (
id>=1000000 &&
id<=1100000 &&
52 G4Material * mat = aStep->GetTrack()->GetMaterial();
54 for (
unsigned int i=0;i<mat->GetNumberOfElements();++i){
55 if (mat->GetElement(i) &&
56 minA>mat->GetElement(i)->GetN()){
57 minA=mat->GetElement(i)->GetN();
62 if (aStep->GetPostStepPoint()->GetVelocity()>0.15*std::pow(minA,-2./3.)*CLHEP::c_light &&
63 ( !aStep->GetPostStepPoint()->GetProcessDefinedStep() ||
64 aStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessType()!=fDecay) )
70 G4SDManager * g4sdm = G4SDManager::GetSDMpointer();
72 ATH_MSG_ERROR(
"StoppedParticleFastSim could not get sensitive detector catalog." );
74 G4VSensitiveDetector * g4sd = g4sdm->FindSensitiveDetector(
"ToolSvc.SensitiveDetectorMasterTool.TrackFastSimSD");
76 ATH_MSG_ERROR(
"StoppedParticleFastSim could not get ToolSvc.SensitiveDetectorMasterTool.TrackFastSimSD sensitive detector." );
80 ATH_MSG_ERROR(
"StoppedParticleFastSim could not cast the SD." );
87 m_fsSD->WriteTrack( aStep->GetTrack() ,
false ,
true );
91 aStep->GetTrack()->SetTrackStatus(fStopAndKill);
92 const G4TrackVector *tv = aStep->GetSecondary();
93 for (
unsigned int i=0;i<tv->size();i++){
94 (*tv)[i]->SetTrackStatus(fStopAndKill);
virtual void UserSteppingAction(const G4Step *) override