16#ifndef _RMG_GENERATOR_FROM_FILE_HH_
17#define _RMG_GENERATOR_FROM_FILE_HH_
21#include "CLHEP/Units/SystemOfUnits.h"
22#include "G4GenericMessenger.hh"
23#include "G4ParticleGun.hh"
25#include "RMGAnalysisReader.hh"
26#include "RMGVGenerator.hh"
40class RMGGeneratorFromFile :
public RMGVGenerator {
44 RMGGeneratorFromFile();
45 ~RMGGeneratorFromFile() =
default;
47 RMGGeneratorFromFile(RMGGeneratorFromFile
const&) =
delete;
48 RMGGeneratorFromFile& operator=(RMGGeneratorFromFile
const&) =
delete;
49 RMGGeneratorFromFile(RMGGeneratorFromFile&&) =
delete;
50 RMGGeneratorFromFile& operator=(RMGGeneratorFromFile&&) =
delete;
77 [[nodiscard]]
bool IsValid()
const {
78 return fG4Pid != -1 && !std::isnan(fEkin) && !std::isnan(fPx) && !std::isnan(fPy) &&
79 !std::isnan(fPz) && !std::isnan(fTime) && fNpart != -1;
83 static RMGAnalysisReader* fReader;
84 inline static RowData fRowData{};
86 std::unique_ptr<G4GenericMessenger> fMessenger =
nullptr;
87 void DefineCommands();
89 std::string fNtupleDirectoryName =
"vtx";
91 std::unique_ptr<G4ParticleGun> fGun =
nullptr;
93 G4ThreeVector fParticlePosition;
void OpenFile(std::string &name)
Set the path of the input ntuple file.
Definition RMGGeneratorFromFile.cc:38
void BeginOfRunAction(const G4Run *) override
Open the input file and bind the row reader to the configured ntuple columns.
Definition RMGGeneratorFromFile.cc:56
void SetParticlePosition(G4ThreeVector pos) override
Set the vertex position for the next call to GeneratePrimaries.
Definition RMGGeneratorFromFile.hh:55
void EndOfRunAction(const G4Run *) override
Close the input file.
Definition RMGGeneratorFromFile.cc:99
void GeneratePrimaries(G4Event *) override
Read the next row(s) from the input ntuple and create the primary vertex.
Definition RMGGeneratorFromFile.cc:107