LDMX Software
GenieGenerator.h
Go to the documentation of this file.
1
7#ifndef SIMCORE_GENIE_GENERATOR_H
8#define SIMCORE_GENIE_GENERATOR_H
9
10//----------//
11// ROOT //
12//----------//
13#include "TRandom.h"
14#include "TRandomGen.h"
15
16//------------//
17// GENIE //
18//------------//
19#include <string>
20#include <vector>
21
22#include "GENIE/Framework/EventGen/GEVGDriver.h"
23#include "GENIE/Framework/EventGen/HepMC3Converter.h"
24
25//------------//
26// LDMX //
27//------------//
28#include "Framework/Logger.h"
29#include "SimCore/G4User/UserEventInformation.h"
31
32// Forward declarations
33class G4Event;
34
35namespace simcore {
36namespace generators {
37
43 public:
59 GenieGenerator(const std::string& name,
60 const framework::config::Parameters& parameters);
61
64
70 void GeneratePrimaryVertex(G4Event* event) final override;
71
72 void RecordConfig(const std::string& id, ldmx::RunHeader& rh) final override;
73
74 private:
80 std::vector<genie::GEVGDriver> evg_drivers_;
81 genie::HepMC3Converter hep_mc3_converter_;
82
83 double energy_;
84 std::vector<int> targets_;
85 std::vector<double> abundances_;
86 std::vector<double> position_;
87 std::vector<double> beam_size_;
88 float target_thickness_;
89 float time_;
90 std::vector<double> direction_;
91
92 std::string tune_;
93 std::string spline_file_;
94
95 std::string message_threshold_file_;
96
97 std::vector<float> ev_weighting_integral_;
98 size_t n_events_generated_;
99 std::vector<size_t> n_events_by_target_;
100 std::vector<float> xsec_by_target_;
101
102 float xsec_total_;
103
104 void fillConfig(
106 bool validateConfig();
107
108 void initializeGENIE();
109 void calculateTotalXS();
110
111 enableLogging("GenieGenerator")
112
113}; // GenieGenerator
114
115} // namespace generators
116} // namespace simcore
117
118#endif // SIMCORE_GENIE_GENERATOR_H
Header file for PrimaryGenerator.
Class encapsulating parameters for configuring a processor.
Definition Parameters.h:29
Run-specific configuration and data stored in its own output TTree alongside the event TTree in the o...
Definition RunHeader.h:57
Interface that defines a simulation primary generator.
Class that uses GENIE's GEVGDriver to generator eN interactions.
void calculateTotalXS()
GENIE initialization.
void initializeGENIE()
simple validation check on configuration params
void RecordConfig(const std::string &id, ldmx::RunHeader &rh) final override
Record the configuration of the primary generator into the run header.
GenieGenerator(const std::string &name, const framework::config::Parameters &parameters)
Constructor.
std::vector< genie::GEVGDriver > evg_drivers_
One GENIE event generator driver per target and convertor to HepMC3GenEvent.
bool validateConfig()
fill the configuration
void GeneratePrimaryVertex(G4Event *event) final override
Generate the primary vertices in the Geant4 event.
Dynamically loadable photonuclear models either from SimCore or external libraries implementing this ...