42 #include "TRestAxionTransmissionProcess.h"
66 LoadConfig(cfgFileName);
78 SetName(this->ClassName());
79 SetTitle(
"Default config");
93 if (LoadConfigFromFile(cfgFilename, name)) LoadDefaultConfig();
100 SetSectionName(this->ClassName());
101 SetLibraryVersion(LIBRARY_VERSION);
111 RESTDebug <<
"Entering ... TRestAxionGeneratorProcess::InitProcess" << RESTendl;
113 RegisterAllObservables();
115 fXrayWindows.clear();
116 for (
const auto& wName : fWindowNames) {
120 RESTError <<
"TRestAxionTransmissionProcess. Window definition with name : " << wName
121 <<
" not found!" << RESTendl;
123 fXrayWindows.push_back(w);
134 TVector3 inPos = fAxionEvent->GetPosition();
135 TVector3 inDir = fAxionEvent->GetDirection();
141 Double_t transmission = 1;
142 Double_t x = newPos.X();
143 Double_t y = newPos.Y();
144 Double_t z = newPos.Z();
145 Double_t en = fAxionEvent->GetEnergy();
147 RESTDebug <<
"Particle position to evaluate window transmission. " << RESTendl;
148 RESTDebug <<
"X : " << x <<
" Y: " << y <<
" Z: " << z << RESTendl;
150 for (
const auto& window : fXrayWindows) {
151 transmission *= window->GetTransmission(en, x, y);
153 RESTDebug <<
"Transmission: " << transmission << RESTendl;
155 SetObservableValue(
"transmission", transmission);
158 fAxionEvent->PrintEvent();
173 TiXmlElement* windowDefinition = GetElement(
"window");
174 while (windowDefinition) {
175 fWindowNames.push_back(GetFieldValue(
"name", windowDefinition));
177 windowDefinition = GetNextElement(windowDefinition);
An event data class to define the parameters related to an axion particle.
A process to include photon transmission using a combination of TRestAxionXrayWindow definitions.
TRestEvent * ProcessEvent(TRestEvent *evInput) override
The main processing event function.
void InitProcess() override
Process initialization. Data members that require initialization just before start processing should ...
TRestAxionTransmissionProcess()
Default constructor.
~TRestAxionTransmissionProcess()
Default destructor.
void InitFromConfigFile() override
Function reading input parameters from the RML TRestAxionTransmissionProcess metadata section.
void LoadDefaultConfig()
Function to load the default config in absence of RML input.
void Initialize() override
Function to initialize input/output event members and define the section name.
void LoadConfig(std::string cfgFilename, std::string name="")
Function to load the configuration from an external configuration file.
A metadata class to create x-ray transmission window definitions.
virtual void InitFromConfigFile() override
To make settings from rml file. This method must be implemented in the derived class.
A base class for any REST event.
@ REST_Extreme
show everything
@ REST_Debug
+show the defined debug messages
TVector3 MoveToPlane(const TVector3 &pos, const TVector3 &dir, const TVector3 &n, const TVector3 &a)
This method will translate the vector with direction dir starting at position pos to the plane define...
Int_t GetChar(std::string hint="Press a KEY to continue ...")
Helps to pause the program, printing a message before pausing.