11 #include "G4DynamicParticle.hh"
12 #include "G4ParticleDefinition.hh"
13 #include "G4Material.hh"
14 #include "G4Element.hh"
15 #include "G4SDManager.hh"
16 #include "G4VSensitiveDetector.hh"
17 #include "G4VProcess.hh"
18 #include "G4ProcessType.hh"
22 #include "GaudiKernel/Bootstrap.h"
23 #include "GaudiKernel/ISvcLocator.h"
24 #include "GaudiKernel/IMessageSvc.h"
33 if (
id==1000021 ||
id==1000005 ||
id==1000006 ||
id==1000512 ||
id==1000522 ||
id==1000991 ||
id==1000993 ||
34 id==1000612 ||
id==1000622 ||
id==1000632 ||
id==1000642 ||
id==1000652 ||
id==1005211 ||
35 id==1006113 ||
id==1006211 ||
id==1006213 ||
id==1006223 ||
id==1006311 ||
36 id==1006313 ||
id==1006321 ||
id==1006323 ||
id==1006333 ||
37 id==1009111 ||
id==1009113 ||
id==1009211 ||
id==1009213 ||
id==1009311 ||
38 id==1009313 ||
id==1009321 ||
id==1009323 ||
id==1009223 ||
id==1009333 ||
39 id==1092112 ||
id==1091114 ||
id==1092114 ||
id==1092212 ||
id==1092214 ||
id==1092224 ||
40 id==1093114 ||
id==1093122 ||
id==1093214 ||
id==1093224 ||
id==1093314 ||
id==1093324 ||
id==1093334)
48 "StoppedParticleAction"),
49 m_fsSD(0), m_init(false)
57 int id = std::abs(aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetPDGEncoding());
60 if (
id>=1000000 &&
id<=1100000 &&
63 G4Material *
mat = aStep->GetTrack()->GetMaterial();
65 for (
unsigned int i=0;
i<
mat->GetNumberOfElements();++
i){
66 if (
mat->GetElement(
i) &&
67 minA>
mat->GetElement(
i)->GetN()){
68 minA=
mat->GetElement(
i)->GetN();
74 ( !aStep->GetPostStepPoint()->GetProcessDefinedStep() ||
75 aStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessType()!=fDecay) )
81 G4SDManager * g4sdm = G4SDManager::GetSDMpointer();
83 ATH_MSG_ERROR(
"StoppedParticleFastSim could not get sensitive detector catalog." );
85 G4VSensitiveDetector * g4sd = g4sdm->FindSensitiveDetector(
"ToolSvc.SensitiveDetectorMasterTool.TrackFastSimSD");
87 ATH_MSG_ERROR(
"StoppedParticleFastSim could not get ToolSvc.SensitiveDetectorMasterTool.TrackFastSimSD sensitive detector." );
91 ATH_MSG_ERROR(
"StoppedParticleFastSim could not cast the SD." );
102 aStep->GetTrack()->SetTrackStatus(fStopAndKill);
103 const G4TrackVector *tv = aStep->GetSecondary();
104 for (
unsigned int i=0;
i<tv->size();
i++){
105 (*tv)[
i]->SetTrackStatus(fStopAndKill);