23 #ifndef _TRestAxionWolterOptics
24 #define _TRestAxionWolterOptics
25 #include <TRestAxionOptics.h>
26 #include <TRestRingsMask.h>
27 #include <TRestSpiderMask.h>
28 #include <TRestTools.h>
36 std::vector<Double_t>
fR1;
39 std::vector<Double_t>
fR2;
42 std::vector<Double_t>
fR3;
45 std::vector<Double_t>
fR4;
48 std::vector<Double_t>
fR5;
124 for (
auto& x : alpha) x = x *
units(
"rad") /
units(
"deg");
147 std::pair<Double_t, Double_t> result(0, 0);
149 result = {
fR1.front(),
fR1.back()};
An abstract class to define common optics parameters and methods.
Int_t fCurrentMirror
During the photon propagation it keeps track of the active mirror shell.
std::vector< std::vector< Double_t > > fOpticsData
The optics data table extracted from fOpticsFile.
Double_t fMirrorLength
The mirror length. If all mirrors got the same length. Otherwise will be zero.
TVector3 fEntrancePosition
The particle position at the optics plane entrance.
A class that calculates the reflection path of X-rays through a Wolter 1 telescope.
std::vector< Double_t > fXSep
std::vector< Double_t > fBackVertex
The Z-position of the cone vertex defined by the back mirrors.
TRestRingsMask * fEntranceRingsMask
The rings structure to be used at entrance as an optical opaque mask.
Double_t GetEntrancePositionZ() override
It returns the entrance Z-position defined by the optical axis.
std::vector< Double_t > fR3
Radius R3 in mm. See schematic figure.
std::vector< Double_t > fR4
Radius R4 in mm. See schematic figure.
std::vector< Double_t > fAlpha
Mirror angle (alpha) in radians. See schematic figure.
TRestAxionWolterOptics()
Default constructor.
std::vector< Double_t > GetR1()
It returns a vector with the values of R1.
std::vector< Double_t > fThickness
Mirror thickness in mm. See schematic figure.
void PrintSpider()
It prints out the spider mask common to all the optical planes.
void InitFromConfigFile() override
Initialization of TRestAxionWolterOptics field members through a RML file.
std::vector< Double_t > GetR2()
It returns a vector with the values of R2.
TRestRingsMask * fExitRingsMask
The rings structure to be used at entrance as an optical opaque mask.
Int_t SecondMirrorReflection(const TVector3 &pos, const TVector3 &dir) override
Implementation of first mirror interaction. It updates fSecondInteractionPosition and fExitDirection ...
TRestRingsMask * fMiddleRingsMask
The rings structure to be used at entrance as an optical opaque mask.
void PrintMetadata() override
Prints on screen the information about the metadata members of TRestAxionWolterOptics.
std::vector< Double_t > GetThickness()
It returns a vector with the values of mirror thickness.
std::vector< Double_t > GetR4()
It returns a vector with the values of R4.
void SetMirror() override
It must be implemented at the inherited optics, making use of fEntrancePosition.
std::vector< Double_t > fCosAlpha
Mirror pre-calculated cosine angle (alpha). See schematic figure.
std::vector< Double_t > GetAlpha()
It returns a vector with the values of alpha.
void PrintParameters()
It prints out the Wolter (relevant) parameters extracted from the optics data file,...
std::vector< Double_t > fR2
Radius R2 in mm. See schematic figure.
TPad * DrawMirrors() override
A method to to draw an optics schematic including the mirrors geometry.
std::vector< Double_t > fR5
Radius R5 in mm. See schematic figure.
Int_t FirstMirrorReflection(const TVector3 &pos, const TVector3 &dir) override
Implementation of first mirror interaction. It updates fFirstInteractionPosition and fMiddleDirection...
TRestSpiderMask * fSpiderMask
The spider structure to be used as an optical opaque mask (common to all planes)
std::vector< Double_t > fCosAlpha_3
Mirror pre-calculated cosine angle (alpha). See schematic figure.
std::vector< Double_t > fR1
Entrance radius R1 in mm. See schematic figure.
~TRestAxionWolterOptics()
Default destructor.
std::pair< Double_t, Double_t > GetRadialLimits() override
It returns the lower/higher radius range where photons are allowed.
void Initialize() override
Initialization of TRestAxionWolterOptics members.
std::vector< Double_t > GetR5()
It returns a vector with the values of R5.
std::vector< Double_t > fFrontVertex
The Z-position of the cone vertex defined by the front mirrors.
std::vector< Double_t > GetR3()
It returns a vector with the values of R3.
Double_t GetExitPositionZ() override
It returns the exit Z-position defined by the optical axis.
A class used to define a rings mask pattern.
virtual Int_t GetRegion(Double_t &x, Double_t &y) override
It returns a number identifying the region where the particle with coordinates (x,...
A class used to define and generate a spider structure mask.