2#include "SimCore/PhotoNuclearModels/BertiniSingleNeutronModel.h"
5bool BertiniSingleNeutronProcess::acceptEvent()
const {
8 int secondaries{theParticleChange.GetNumberOfSecondaries()};
9 for (
int i{0}; i < secondaries; ++i) {
10 const auto secondary{theParticleChange.GetSecondary(i)->GetParticle()};
11 const auto pdg_code{secondary->GetDefinition()->GetPDGEncoding()};
15 const auto energy{secondary->GetKineticEnergy()};
16 if (energy > threshold_) {
18 if (pdg_code == 2112) {
23 return nhard == 1 && nhard_neutron == 1;
27 G4ProcessManager* processManager) {
28 auto photo_nuclear_process{
29 new G4HadronInelasticProcess(
"photonNuclear", G4Gamma::Definition())};
32 model->SetMaxEnergy(15 * CLHEP::GeV);
34 photo_nuclear_process->RegisterMe(model);
35 processManager->AddDiscreteProcess(photo_nuclear_process);
constexpr bool skipCountingParticle(const int pdgcode) const
Whether or not to include a particular particle type in any counting.
void constructGammaProcess(G4ProcessManager *processManager)
The primary part of the model interface, responsible for adding the desired G4HadronicInteraction to ...
virtual void addPNCrossSectionData(G4HadronInelasticProcess *process) const
Default implementation for adding XS data for the process.
Dynamically loadable photonuclear models either from SimCore or external libraries implementing this ...