File indexing completed on 2025-01-31 09:21:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 #include "G4ParticleDefinition.hh"
0044 #include "G4Track.hh"
0045 #include "G4ios.hh"
0046 #include "G4VProcess.hh"
0047 #include "G4ClassificationOfNewTrack.hh"
0048 #include "G4GenericMessenger.hh"
0049
0050 #include "StackingAction.hh"
0051
0052 StackingAction::StackingAction()
0053 : G4UserStackingAction()
0054 {
0055 DefineCommands();
0056 }
0057
0058 StackingAction::~StackingAction() { delete fMessenger; }
0059 G4ClassificationOfNewTrack StackingAction::ClassifyNewTrack(
0060 const G4Track* aTrack)
0061 {
0062 G4ClassificationOfNewTrack classification = fWaiting;
0063 if(aTrack->GetParentID() == 0)
0064 return classification;
0065 if(aTrack->GetDefinition()->GetParticleName() == "pi0")
0066 {
0067 if(fkillPi0)
0068 {
0069 classification = fKill;
0070 }
0071 }
0072 if(aTrack->GetDefinition()->GetParticleName() == "eta")
0073 {
0074 if(fkilleta)
0075 {
0076 classification = fKill;
0077 }
0078 }
0079 if(aTrack->GetDefinition()->GetParticleName() == "gamma")
0080 {
0081 if(aTrack->GetCreatorProcess()->GetProcessName() == "nCapture")
0082 {
0083 if(fkillGammafromnCapture)
0084 {
0085 classification = fKill;
0086 }
0087 }
0088 }
0089 return classification;
0090 }
0091
0092 void StackingAction::Print()
0093 {
0094 G4cout << "===================================================" << G4endl;
0095 G4cout << " StackingAction configuration: " << G4endl;
0096 G4cout << " Kill Pi0s : " << fkillPi0 << G4endl;
0097 G4cout << " Kill etas : " << fkilleta << G4endl;
0098 G4cout << " Kill Gammas from neutron Capture: " << fkillGammafromnCapture
0099 << G4endl;
0100 G4cout << "===================================================" << G4endl;
0101 }
0102
0103 void StackingAction::DefineCommands()
0104 {
0105 fMessenger = new G4GenericMessenger(this, "/CaTS/StackingAction/",
0106 "select particles to kill");
0107 auto& killPi0Cmd = fMessenger->DeclareProperty("killPi0", fkillPi0);
0108 killPi0Cmd.SetGuidance("kill Pi0 (true/false)");
0109 killPi0Cmd.SetStates(G4State_PreInit, G4State_Init, G4State_Idle);
0110 killPi0Cmd.SetDefaultValue("false");
0111 auto& killetaCmd = fMessenger->DeclareProperty("killeta", fkilleta);
0112 killetaCmd.SetGuidance("kill eta (true/false)");
0113 killetaCmd.SetStates(G4State_PreInit, G4State_Init, G4State_Idle);
0114 killetaCmd.SetDefaultValue("false");
0115 auto& killGammafromnCaptureCmd = fMessenger->DeclareProperty(
0116 "killGammafromnCapture", fkillGammafromnCapture);
0117 killGammafromnCaptureCmd.SetGuidance("kill GammafromnCapture (true/false)");
0118 killGammafromnCaptureCmd.SetStates(G4State_PreInit, G4State_Init,
0119 G4State_Idle);
0120 killGammafromnCaptureCmd.SetDefaultValue("false");
0121 fMessenger->DeclareMethod("Print", &StackingAction::Print)
0122 .SetGuidance("Print StackingAction configuration")
0123 .SetStates(G4State_PreInit, G4State_Idle);
0124 }