23#ifndef RestCore_TRestGeant4NeutronTaggingProcess
24#define RestCore_TRestGeant4NeutronTaggingProcess
26#include <TRestGeant4Event.h>
27#include <TRestGeant4Metadata.h>
29#include "TRestEventProcess.h"
42 std::vector<int> fCaptureVolumeIds;
43 std::vector<int> fShieldingVolumeIds;
45 std::string fVetoKeyword =
"";
46 std::string fCaptureKeyword =
"";
47 std::string fShieldingKeyword =
"";
48 std::vector<std::string> fVetoGroupKeywords;
49 std::map<std::string, std::vector<std::string>> fVetoGroupVolumeNames;
50 std::vector<Float_t> fQuenchingFactors;
53 Int_t fNeutronsCapturedNumber;
56 std::vector<Double_t> fNeutronsCapturedPosY;
57 std::vector<Double_t> fNeutronsCapturedPosZ;
60 std::vector<Double_t> fNeutronsCapturedProductionE;
61 std::vector<Double_t> fNeutronsCapturedEDepByNeutron;
62 std::vector<Double_t> fNeutronsCapturedEDepByNeutronAndChildren;
63 std::vector<Double_t> fNeutronsCapturedEDepByNeutronInVeto;
64 std::vector<Double_t> fNeutronsCapturedEDepByNeutronAndChildrenInVeto;
65 std::vector<Double_t> fNeutronsCapturedEDepByNeutronAndChildrenInVetoMax;
66 std::vector<Double_t> fNeutronsCapturedEDepByNeutronAndChildrenInVetoMin;
69 Int_t fGammasNeutronCaptureNumber;
70 std::vector<Double_t> fGammasNeutronCapturePosX;
71 std::vector<Double_t> fGammasNeutronCapturePosY;
72 std::vector<Double_t> fGammasNeutronCapturePosZ;
73 std::vector<Int_t> fGammasNeutronCaptureIsCaptureVolume;
74 std::vector<Double_t> fGammasNeutronCaptureProductionE;
77 Int_t fSecondaryNeutronsShieldingNumber;
78 std::vector<Double_t> fSecondaryNeutronsShieldingExitPosX;
79 std::vector<Double_t> fSecondaryNeutronsShieldingExitPosY;
80 std::vector<Double_t> fSecondaryNeutronsShieldingExitPosZ;
81 std::vector<Int_t> fSecondaryNeutronsShieldingIsCaptured;
82 std::vector<Int_t> fSecondaryNeutronsShieldingIsCapturedInCaptureVolume;
83 std::vector<Double_t> fSecondaryNeutronsShieldingProductionE;
84 std::vector<Double_t> fSecondaryNeutronsShieldingExitE;
102 void LoadConfig(
const std::string& configFilename,
const std::string& name =
"");
108 RESTDebug <<
"VETO KEYWORD: " << fVetoKeyword <<
RESTendl;
111 RESTDebug <<
"VETO GROUP KEYWORDS:" <<
RESTendl;
112 for (
unsigned int i = 0; i < fVetoGroupKeywords.size(); i++) {
113 RESTDebug <<
"\t" << fVetoGroupKeywords[i] <<
RESTendl;
125 RESTDebug <<
"CAPTURE KEYWORD: " << fCaptureKeyword <<
RESTendl;
128 RESTDebug <<
"Found " << fCaptureVolumeIds.size() <<
" Capture volumes:" <<
RESTendl;
129 for (
unsigned int i = 0; i < fCaptureVolumeIds.size(); i++) {
136 RESTDebug <<
"SHIELDING KEYWORD: " << fShieldingKeyword <<
RESTendl;
139 RESTDebug <<
"Found " << fShieldingVolumeIds.size() <<
" Shielding volumes:" <<
RESTendl;
140 for (
unsigned int i = 0; i < fShieldingVolumeIds.size(); i++) {
145 RESTDebug <<
"QUENCHING FACTORS (" << fQuenchingFactors.size() <<
" Total)" <<
RESTendl;
146 for (
unsigned int i = 0; i < fQuenchingFactors.size(); i++) {
147 RESTDebug <<
"\t" << fQuenchingFactors[i] <<
RESTendl;
A base class for any REST event process.
void BeginPrintProcess()
[name, cut range]
A base class for any REST event.
An event class to store geant4 generated event information.
std::vector< Int_t > fNeutronsCapturedIsCaptureVolume
If documentation is added perhaps they could be shorter names.
void InitProcess() override
Process initialization.
void Initialize() override
Function to initialize input/output event members and define the section name.
TRestGeant4Event * fInputG4Event
A pointer to the specific TRestGeant4Event input.
void LoadConfig(const std::string &configFilename, const std::string &name="")
Function to load the configuration from an external configuration file.
const char * GetProcessName() const override
Returns the name of this process.
TRestEvent * ProcessEvent(TRestEvent *inputEvent) override
The main processing event function.
void InitFromConfigFile() override
Function to read input parameters from the RML TRestGeant4NeutronTaggingProcess metadata section.
std::vector< int > fVetoVolumeIds
TODO these members should be documented.
void LoadDefaultConfig()
Function to load the default config in absence of RML input.
void PrintMetadata() override
It prints out the process parameters stored in the metadata structure.
void EndProcess() override
Function to include required actions after all events have been processed.
std::vector< Double_t > fNeutronsCapturedPosX
TODO it might be simplified using std::vector<TVector3>
TRestGeant4Event * fOutputG4Event
A pointer to the specific TRestGeant4Event output.
RESTValue GetOutputEvent() const override
Get pointer to output event. Must be implemented in the derived class.
TRestEventProcess * Maker()
Returns a new instance of this class.
~TRestGeant4NeutronTaggingProcess()
Default destructor.
RESTValue GetInputEvent() const override
Get pointer to input event. Must be implemented in the derived class.
TRestGeant4Metadata * fG4Metadata
A pointer to the simulation metadata information accessible to TRestRun.