LDMX Software
PhotoNuclearModel.h
1#ifndef SIMCORE_PHOTONUCLEAR_MODEL_H
2#define SIMCORE_PHOTONUCLEAR_MODEL_H
3#include <G4HadronInelasticProcess.hh>
4#include <G4ProcessManager.hh>
5#include <string>
6
7#include "Framework/Configure/Parameters.h"
8#include "Framework/Factory.h"
9
22namespace simcore {
23
25 public:
33 PhotoNuclearModel(const std::string& name,
34 const framework::config::Parameters& parameters) {};
35 virtual ~PhotoNuclearModel() = default;
36
44 virtual void constructGammaProcess(G4ProcessManager* processManager) = 0;
45
49 DECLARE_FACTORY(PhotoNuclearModel, std::shared_ptr<PhotoNuclearModel>,
50 const std::string&, const framework::config::Parameters&);
51
61 virtual void removeExistingModel(G4ProcessManager* processManager);
62
75 virtual void addPNCrossSectionData(G4HadronInelasticProcess* process) const;
76};
77} // namespace simcore
78
89#define DECLARE_PHOTONUCLEAR_MODEL(CLASS) \
90 FACTORY_REGISTRATION(simcore::PhotoNuclearModel, CLASS)
91
92#endif /* SIMCORE_PHOTONUCLEAR_MODEL_H */
Header holding Factory class and supporting macros.
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:26
virtual void removeExistingModel(G4ProcessManager *processManager)
Removes any existing photonNuclear process from the process manager of the G4Gamma class.
virtual void addPNCrossSectionData(G4HadronInelasticProcess *process) const
Default implementation for adding XS data for the process.
PhotoNuclearModel(const std::string &name, const framework::config::Parameters &parameters)
Base class does not take any parameters or do anything in particular, but any derived class may.
DECLARE_FACTORY(PhotoNuclearModel, std::shared_ptr< PhotoNuclearModel >, const std::string &, const framework::config::Parameters &)
The factory for PhotoNuclearModels.
virtual void constructGammaProcess(G4ProcessManager *processManager)=0
The primary part of the model interface, responsible for adding the desired G4HadronicInteraction to ...
Dynamically loadable photonuclear models either from SimCore or external libraries implementing this ...