117#include "TRestAxionFieldPropagationProcess.h"
164 RESTDebug <<
"Entering ... TRestAxionFieldPropagationProcess::InitProcess" <<
RESTendl;
169 RESTError <<
"TRestAxionFieldPropagationprocess. Magnetic Field was not defined!" <<
RESTendl;
197 RESTDebug <<
"TRestAxionFieldPropagationProcess::ProcessEvent : " <<
fAxionEvent->GetID() <<
RESTendl;
204 std::pair<Double_t, Double_t> prob =
210 Double_t transmission = 1;
214 transmission = exp(-GammaL);
219 RESTDebug <<
" --- Process observables: " <<
RESTendl;
220 RESTDebug <<
"Probability: " << prob.first <<
" T" <<
RESTendl;
221 RESTDebug <<
"Error: " << prob.second <<
" T" <<
RESTendl;
222 RESTDebug <<
"Transmission: " << transmission <<
" mm" <<
RESTendl;
A metadata class to define the gas properties used in axion search calculations.
Double_t GetPhotonAbsorptionLength(Double_t energy)
It returns the inverse of the absorption lenght, for the gas mixture, in cm-1, for the given energy i...
TRestAxionEvent * fAxionEvent
A pointer to the specific TRestAxionEvent.
An event data class to define the parameters related to an axion particle.
TVector3 GetPosition()
It keeps track of efficiency introduced at different helioscope components.
A process to introduce the magnetic field profile integration along the track.
Int_t fNumIntervals
Number of intervales used by the GSL integrator.
TRestEvent * ProcessEvent(TRestEvent *eventInput) override
Process one event.
void InitProcess() override
Process initialization. Data members that require initialization just before start processing should ...
TRestAxionField * fAxionField
A pointer to TRestAxionField that implements probability calculations.
~TRestAxionFieldPropagationProcess()
Default destructor.
TVector3 fReMap
It will re-size the cells in the magnetic field (affecting the time required for integral computation...
TRestAxionBufferGas * fBufferGas
A pointer to TRestBufferGas given to TRestAxionField to perform calculations in a particular gas.
Double_t fAccuracy
The tolerance or accuracy used inside the GSL integrator.
TRestAxionFieldPropagationProcess()
Default constructor.
Int_t fQawoLevels
Number of levels used by the GSL integrator to parameterize the cosine integral.
Double_t fBufferGasAdditionalLength
The additional length in mm that the converted photon propagates without magnetic field.
TRestAxionMagneticField * fMagneticField
A pointer to the magnetic field description stored in TRestRun.
void Initialize() override
Function to initialize input/output event members and define the section name.
A basic class to define analytical axion-photon conversion calculations for axion helioscopes.
std::pair< Double_t, Double_t > GammaTransmissionFieldMapProbability(Double_t Ea, Double_t ma, Double_t accuracy=1.e-1, Int_t num_intervals=100, Int_t qawo_levels=20)
Performs the calculation of axion-photon conversion probability using directly equation (28) from J....
void AssignBufferGas(TRestAxionBufferGas *buffGas)
It assigns a gas buffer medium to the calculation.
void AssignMagneticField(TRestAxionMagneticField *mField)
It assigns a magnetic field to the calculation.
A class to load magnetic field maps and evaluate the field on those maps including interpolation.
void PrintMetadata()
Prints on screen the information about the metadata members of TRestAxionMagneticField.
void SetTrack(const TVector3 &position, const TVector3 &direction)
It initializes the field track boundaries data members of this class using a track position and direc...
unsigned int GetNumberOfVolumes()
The number of magnetic volumes loaded into the object.
void ReMap(const size_t &n, const TVector3 &newMapSize)
It allows to remap the magnetic field to a larger mesh size. The new mesh size granularity must be pr...
T * GetMetadata()
Get a metadata object from the host TRestRun.
void SetObservableValue(const std::string &name, const T &value)
Set observable value for AnalysisTree.
A base class for any REST event.
@ REST_Info
+show most of the information for each steps
@ REST_Debug
+show the defined debug messages