LDMX Software
BertiniAtLeastNProductsModel.h
1#ifndef SIMCORE_BERTINI_AT_LEAST_N_PRODUCTS_MODEL_H
2#define SIMCORE_BERTINI_AT_LEAST_N_PRODUCTS_MODEL_H
3#include <G4CrossSectionDataSetRegistry.hh>
4#include <G4Gamma.hh>
5#include <G4HadProjectile.hh>
6#include <G4HadronInelasticProcess.hh>
7#include <G4Nucleus.hh>
8#include <G4ProcessManager.hh>
9
10#include "Framework/Configure/Parameters.h"
11#include "SimCore/PhotoNuclearModel.h"
12#include "SimCore/PhotoNuclearModels/BertiniEventTopologyProcess.h" /* */
13namespace simcore {
15 public:
16 BertiniAtLeastNProductsProcess(double threshold, int Zmin, double Emin,
17 std::vector<int> pdg_ids, int min_products)
19 threshold_{threshold},
20 Zmin_{Zmin},
21 Emin_{Emin},
22 pdg_ids_{pdg_ids},
23 min_products_{min_products} {}
24 virtual ~BertiniAtLeastNProductsProcess() = default;
25 bool acceptProjectile(const G4HadProjectile& projectile) const override {
26 return projectile.GetKineticEnergy() >= Emin_;
27 }
28 bool acceptTarget(const G4Nucleus& targetNucleus) const override {
29 return targetNucleus.GetZ_asInt() >= Zmin_;
30 }
31 bool acceptEvent() const override;
32
33 private:
34 double threshold_;
35 int Zmin_;
36 double Emin_;
37 std::vector<int> pdg_ids_;
38 int min_products_;
39};
40
42 public:
43 BertiniAtLeastNProductsModel(const std::string& name,
44 const framework::config::Parameters& parameters)
45 : PhotoNuclearModel{name, parameters},
46 threshold_{parameters.getParameter<double>("hard_particle_threshold")},
47 Zmin_{parameters.getParameter<int>("zmin")},
48 Emin_{parameters.getParameter<double>("emin")},
49 pdg_ids_{parameters.getParameter<std::vector<int>>("pdg_ids")},
50 min_products_{parameters.getParameter<int>("min_products")} {}
51 virtual ~BertiniAtLeastNProductsModel() = default;
52 void ConstructGammaProcess(G4ProcessManager* processManager) override;
53
54 private:
55 double threshold_;
56 int Zmin_;
57 double Emin_;
58 std::vector<int> pdg_ids_;
59 int min_products_;
60};
61
62} // namespace simcore
63#endif /* SIMCORE_BERTINI_AT_LEAST_N_PRODUCTS_MODEL_H */
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:27
T getParameter(const std::string &name) const
Retrieve the parameter of the given name.
Definition Parameters.h:89
void ConstructGammaProcess(G4ProcessManager *processManager) override
The primary part of the model interface, responsible for adding the desired G4HadronicInteraction to ...