REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions
TRestAxionOptics Class Referenceabstract

Detailed Description

An abstract class to define common optics parameters and methods.

TRestAxionOptics is a class that allows to describe the geometrical and mirror properties of an optics focusing device. This metadata class is a pure abstract class used to define common data members and methods to any specific optics class.

Conceptual optics implementation

This class implements a method, TRestAxionOptics::PropagatePhoton, that is used to generate the tracking of a photon given an initial position and direction. The photon propagation is done in different phases, where the photon position and direction is calculated at different optical interfaces (entrance/middle/exit) as it is shown in the following figure.

An schematic showing the principle of use of TRestAxionOptics

The transport of the photon in between two interfaces is controlled by two pure virtual methods TRestAxionOptics::FirstMirrorReflection and TRestAxionOptics::SecondMirrorReflection, that must be implemented at the inherited optics class, such as is is done at TRestAxionWolterOptics.

Other pure virtual methods need to be implemented at the inherited class in order to define the limits of the optical device, such as TRestAxionOptics::GetEntrancePositionZ, TRestAxionOptics::GetExitPositionZ or TRestAxionOptics::GetRadialLimits.

Furthermore, this class will define common methods that can be exploited by any optical device, such as TRestAxionOptics::FindFocal or TRestAxionOptics::CalculateSpotSize, which are MonteCarlo based, and can be optionally re-implemented at the inherited class.

Optics metadata description

This class defines generic optics metadata members, that can be further extended at the inherited classes as needed.

We distinguish the following metadata members (which will be stored on disk and that can be initalized through RML).

Optical masks

Each of the optical interfaces (entrance/middle/optics) is associated with an optical mask where we can identify regions. These regions allow to determine if a photon entered by and exited from the same optical cavity or allowed region. The use of 3 masks at the entrance, middle and exit levels permits to create a 3-dimensional constrain of the movement of the photon.

Thus, masks must be constructed by the inherited class using a TRestCombinedMask definition that is instantiated at the TRestAxionOptics level as fEntranceMask, fMiddleMask and fExitMask.

Common drawing methods

This class also defines common drawing methods such as TRestAxionOptics::DrawScatterMaps, TRestAxionOptics::DrawDensityMaps and TRestAxionOptics::DrawParticleTracks. That may help to visualize and debug the tracking of photons by the new implemented optics device.

A pure virtual method TRestAxionOptics::DrawMirrors must be implemented at each class in order to draw the mirrors position, to be visualized on the TRestAxionOptics::DrawParticleTracks method.

The method TRestAxionOptics::DrawParticleTracks is designed to draw few photon tracks and help to debug the correct tracking of light particles. The thickness of the mirror lines representing the mirror shells is proportional to the real thickness, and the color of photons is chosen to match the color of the reflecting mirror. If the photon hits the entrance mask (spider or mirrors) the line will be coloured in black.

Particle tracing inside the optics

Additionally, TRestAxionOptics::DrawParticleTracks will print on screen the result of the tracking for each particle using the method TRestAxionOptics::PrintPhotonTrackingSummary. Additional debuging information can be printed on screen by setting the output level to debug, verboseLevel="debug".


RESTsoft - Software for Rare Event Searches with TPCs

History of developments:

2022-February: First concept and implementation of TRestAxionOptics class. Javier Galan

Author
Javier Galan javie.nosp@m.r.ga.nosp@m.lan@u.nosp@m.niza.nosp@m.r.es

Definition at line 35 of file TRestAxionOptics.h.

#include <TRestAxionOptics.h>

Inheritance diagram for TRestAxionOptics:
TRestMetadata TRestAxionMCPLOptics TRestAxionTrueWolterOptics TRestAxionWolterOptics

Public Member Functions

Double_t CalculateSpotSize (Double_t energy, Double_t z, Int_t particles=15000)
 It measures the spot size through Monte Carlo at a given plane given by z. If z=0 this method will check for the spot size at the focal point, which is the default behaviour. More...
 
TPad * CreatePad (Int_t nx=1, Int_t ny=1)
 A prototype method to be implemented by specific optics to draw an schematic including the mirrors geometry. More...
 
TPad * DrawDensityMaps (Double_t z, Double_t energy=0, Double_t deviation=0, Int_t particles=1000, Double_t focalHint=7500)
 It implements a generic method to identify the optimum focal point. It can be reimplemented at each specific optics class. More...
 
virtual TPad * DrawMirrors ()=0
 It draws the mirrors using a TGraph. To be implemented at the inherited class. More...
 
TPad * DrawParticleTracks (Double_t deviation=0, Int_t particles=10)
 A method to draw an optics schematic including the mirrors geometry, and few photon tracks. This method is intended for debugging the photon tracking implementation. More...
 
TPad * DrawScatterMaps (Double_t z, Double_t energy=0, Double_t deviation=0, Int_t particles=1000, Double_t focalHint=7500)
 It implements a generic method to identify the optimum focal point. It can be reimplemented at each specific optics class. More...
 
virtual Double_t FindFocal (Double_t from, Double_t to, Double_t energy, Double_t precision=1, Bool_t recalculate=false, Int_t particles=5000)
 It implements a generic method to identify the optimum focal point. It can be reimplemented at each specific optics class. More...
 
virtual Int_t FirstMirrorReflection (const TVector3 &pos, const TVector3 &dir)=0
 It updates the values fFirstInteractionPosition and fMiddleDirection. Returns 0 if is not in region. More...
 
Double_t GetEntranceAngle ()
 It returns the entrance angle to the optical axis (in radians). More...
 
TVector3 GetEntranceDirection ()
 Returns the entrance position from the latest propagated photon. More...
 
TRestCombinedMask *const & GetEntranceMask () const
 Returns a pointer to access directly the entrance mask information. More...
 
TVector3 GetEntrancePosition ()
 Returns the entrance position from the latest propagated photon. More...
 
virtual Double_t GetEntrancePositionZ ()=0
 It returns the entrance Z-position defined by the optical axis. More...
 
TVector3 GetExitDirection ()
 Returns the exit position from the latest propagated photon. More...
 
TRestCombinedMask *const & GetExitMask () const
 Returns a pointer to access directly the exit mask information. More...
 
TVector3 GetExitPosition ()
 Returns the exit position from the latest propagated photon. More...
 
virtual Double_t GetExitPositionZ ()=0
 It returns the exit Z-position defined by the optical axis. More...
 
TVector3 GetLastGoodDirection ()
 It returns the last valid particle direction known in the particle tracking. More...
 
TVector3 GetLastGoodPosition ()
 It returns the last valid particle position known in the particle tracking. More...
 
TVector3 GetMiddleDirection ()
 Returns the middle position from the latest propagated photon. More...
 
TRestCombinedMask *const & GetMiddleMask () const
 Returns a pointer to access directly the middle mask information. More...
 
TVector3 GetMiddlePosition ()
 Returns the middle position from the latest propagated photon. More...
 
TRestAxionOpticsMirror *const & GetMirrorProperties () const
 Returns a pointer to access directly the exit mask information. More...
 
Int_t GetNumberOfReflections ()
 It returns the total number of reflections. Considering maximum 1-reflection per mirror. More...
 
virtual std::pair< Double_t, Double_t > GetRadialLimits ()=0
 It returns the lower/higher radius range where photons are allowed. More...
 
void InitFromConfigFile ()
 Initialization of TRestAxionOptics field members through a RML file. More...
 
virtual void Initialize ()
 Initialization of TRestAxionOptics members. More...
 
Bool_t IsFirstMirrorReflection ()
 It returns true if the photon got reflected in the first mirror. More...
 
Bool_t IsSecondMirrorReflection ()
 It returns true if the photon got reflected in the second mirror. More...
 
void PrintEntranceMask ()
 Prints on screen the mask used on the entrance optics plane. More...
 
void PrintExitMask ()
 Prints on screen the mask used on the exit optics plane. More...
 
void PrintMasks ()
 Prints on screen the 3-optical masks used on the optics planes. More...
 
void PrintMetadata ()
 Prints on screen the information about the metadata members of TRestAxionOptics. More...
 
void PrintMiddleMask ()
 Prints on screen the mask used on the middle optics plane. More...
 
void PrintMirror ()
 Prints on screen the 3-optical masks used on the optics planes. More...
 
void PrintPhotonTrackingSummary ()
 Prints the positions taken by the photon after ray-tracing that should have been updated using the method PropagatePhoton. More...
 
Double_t PropagateMonteCarloPhoton (Double_t energy, Double_t deviation)
 It will produce a MonteCarlo photon spatially distributed in XY as defined by the GetRadialLimits method (extended by 50%), and with direction along the Z-axis with a maximum deviation angle fixed by the deviation input parameter. If deviation=0 the photons will always be parallel to the z-axis. The photons will be launched from z=-3*fMirrorLength. More...
 
Double_t PropagatePhoton (const TVector3 &pos, const TVector3 &dir, Double_t energy)
 Propagating photon. More...
 
virtual Int_t SecondMirrorReflection (const TVector3 &pos, const TVector3 &dir)=0
 It updates the values fSecondInteractionPosition and fExitDirection. Returns 0 if is not in region. More...
 
 ~TRestAxionOptics ()
 Default destructor. More...
 

Protected Member Functions

Int_t GetMirror ()
 It returns the mirror index to be used in the photon reflection. More...
 
virtual void SetMirror ()=0
 It must be implemented at the inherited optics, making use of fEntrancePosition. More...
 
Int_t TransportToEntrance (const TVector3 &pos, const TVector3 &dir)
 It moves the incoming particle at the entrance of the optics plane and returns the region number where the particle is entering. More...
 
Int_t TransportToExit (const TVector3 &pos, const TVector3 &dir)
 It moves the incoming particle to the exit of the optics plane and returns the region number where the particle is entering. More...
 
Int_t TransportToMiddle (const TVector3 &pos, const TVector3 &dir)
 It moves the incoming particle to the middle of the optics plane and returns the region number where the particle is entering. More...
 
 TRestAxionOptics ()
 Default constructor. More...
 
 TRestAxionOptics (const char *cfgFileName, std::string name="")
 Constructor loading data from a config file. More...
 

Protected Attributes

Int_t fCurrentMirror = -1
 During the photon propagation it keeps track of the active mirror shell. More...
 
TVector3 fEntranceDirection
 The particle position at the optics plane entrance. More...
 
TRestCombinedMaskfEntranceMask = nullptr
 The entrance optical mask that defines a pattern with regions identified with a number. More...
 
TVector3 fEntrancePosition
 The particle position at the optics plane entrance. More...
 
TVector3 fExitDirection
 The particle position at the optics plane exit. More...
 
TRestCombinedMaskfExitMask = nullptr
 The exit optical mask that defines a pattern with regions identified with a number. More...
 
TVector3 fExitPosition
 The particle position at the optics plane exit. More...
 
Bool_t fFirstInteraction = false
 During the photon propagation it tells us if the photon interacted in the first mirror. More...
 
TVector3 fFirstInteractionPosition
 The particle position at the front mirror interaction point. More...
 
Double_t fFocal = -1
 The calculated focal in mm. It is updated by the method TRestAxionOptics::FindFocal. More...
 
TVector3 fMiddleDirection
 The particle position at the optics plane middle. More...
 
TRestCombinedMaskfMiddleMask = nullptr
 The middle optical mask that defines a pattern with regions identified with a number. More...
 
TVector3 fMiddlePosition
 The particle position at the optics plane middle. More...
 
Double_t fMirrorLength = 0
 The mirror length. If all mirrors got the same length. Otherwise will be zero. More...
 
TRestAxionOpticsMirrorfMirrorProperties = nullptr
 The mirror properties. More...
 
std::vector< std::vector< Double_t > > fOpticsData
 The optics data table extracted from fOpticsFile. More...
 
std::string fOpticsFile = ""
 An optics file that contains all the specific optics parameters. More...
 
TVector3 fOriginPosition
 The particle position at the origin. More...
 
TPad * fPad = nullptr
 A pad pointer to be used by the drawing methods. More...
 
TRandom3 * fRandom = nullptr
 Random number generator. More...
 
Bool_t fSecondInteraction = false
 During the photon propagation it tells us if the photon interacted in the second mirror. More...
 
TVector3 fSecondInteractionPosition
 The particle position at the back mirror interaction point. More...
 

Private Member Functions

Double_t GetPhotonReflectivity (Double_t energy)
 A prototype method to be implemented by specific optics to draw an schematic including the mirrors geometry. More...
 
void ResetPositions ()
 It reinitializes particle positions and directions at the different optical regions. More...
 

Constructor & Destructor Documentation

◆ TRestAxionOptics() [1/2]

TRestAxionOptics::TRestAxionOptics ( )
protected

Default constructor.

Definition at line 156 of file TRestAxionOptics.cxx.

◆ TRestAxionOptics() [2/2]

TRestAxionOptics::TRestAxionOptics ( const char *  cfgFileName,
std::string  name = "" 
)
protected

Constructor loading data from a config file.

If no configuration path is defined using TRestMetadata::SetConfigFilePath the path to the config file must be specified using full path, absolute or relative.

The default behaviour is that the config file must be specified with full path, absolute or relative.

Parameters
cfgFileNameA const char* giving the path to an RML file.
nameThe name of the specific metadata. It will be used to find the corresponding TRestAxionOptics section inside the RML.

Definition at line 172 of file TRestAxionOptics.cxx.

◆ ~TRestAxionOptics()

TRestAxionOptics::~TRestAxionOptics ( )

Default destructor.

Definition at line 180 of file TRestAxionOptics.cxx.

Member Function Documentation

◆ CalculateSpotSize()

Double_t TRestAxionOptics::CalculateSpotSize ( Double_t  energy,
Double_t  z,
Int_t  particles = 15000 
)

It measures the spot size through Monte Carlo at a given plane given by z. If z=0 this method will check for the spot size at the focal point, which is the default behaviour.

The spot is assumed to be centered at (0,0). We are describing a perfectly aligned optics device.

The Monte Carlo generated photons are also considered to be perfectly aligned with the z-axis.

Definition at line 739 of file TRestAxionOptics.cxx.

◆ CreatePad()

TPad * TRestAxionOptics::CreatePad ( Int_t  nx = 1,
Int_t  ny = 1 
)

A prototype method to be implemented by specific optics to draw an schematic including the mirrors geometry.

Definition at line 559 of file TRestAxionOptics.cxx.

◆ DrawDensityMaps()

TPad * TRestAxionOptics::DrawDensityMaps ( Double_t  z,
Double_t  energy = 0,
Double_t  deviation = 0,
Int_t  particles = 1000,
Double_t  focalHint = 7500 
)

It implements a generic method to identify the optimum focal point. It can be reimplemented at each specific optics class.

Focal position will be searched around focalHint within half a meter range.

Definition at line 919 of file TRestAxionOptics.cxx.

◆ DrawMirrors()

virtual TPad * TRestAxionOptics::DrawMirrors ( )
pure virtual

It draws the mirrors using a TGraph. To be implemented at the inherited class.

Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

◆ DrawParticleTracks()

TPad * TRestAxionOptics::DrawParticleTracks ( Double_t  deviation = 0,
Int_t  particles = 10 
)

A method to draw an optics schematic including the mirrors geometry, and few photon tracks. This method is intended for debugging the photon tracking implementation.

Two optional parameters are allowed:

  • deviation: It controls the maximum random X and Y direction. 0 by default.
  • particles: The number of particles to be launched. 10 by default.

Definition at line 608 of file TRestAxionOptics.cxx.

◆ DrawScatterMaps()

TPad * TRestAxionOptics::DrawScatterMaps ( Double_t  z,
Double_t  energy = 0,
Double_t  deviation = 0,
Int_t  particles = 1000,
Double_t  focalHint = 7500 
)

It implements a generic method to identify the optimum focal point. It can be reimplemented at each specific optics class.

Focal position will be searched around focalHint within half a meter range.

Definition at line 800 of file TRestAxionOptics.cxx.

◆ FindFocal()

Double_t TRestAxionOptics::FindFocal ( Double_t  from,
Double_t  to,
Double_t  energy,
Double_t  precision = 1,
Bool_t  recalculate = false,
Int_t  particles = 5000 
)
virtual

It implements a generic method to identify the optimum focal point. It can be reimplemented at each specific optics class.

It is a statistical method, thus the result contains an implicit statistical error.

It receives 4 arguments.

  • from and to: They define the range where the focal will be searched for.
  • precision: It defines the accuracy required
  • recalculate: If false it will reuse a previous focal point calculation. If true it will force to recalculate the focal point.
  • particles: Number of particles to be launched in order to calculate the spot size.

Definition at line 695 of file TRestAxionOptics.cxx.

◆ FirstMirrorReflection()

virtual Int_t TRestAxionOptics::FirstMirrorReflection ( const TVector3 &  pos,
const TVector3 &  dir 
)
pure virtual

It updates the values fFirstInteractionPosition and fMiddleDirection. Returns 0 if is not in region.

Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

◆ GetEntranceAngle()

Double_t TRestAxionOptics::GetEntranceAngle ( )
inline

It returns the entrance angle to the optical axis (in radians).

Definition at line 144 of file TRestAxionOptics.h.

◆ GetEntranceDirection()

TVector3 TRestAxionOptics::GetEntranceDirection ( )
inline

Returns the entrance position from the latest propagated photon.

Definition at line 175 of file TRestAxionOptics.h.

◆ GetEntranceMask()

TRestCombinedMask *const & TRestAxionOptics::GetEntranceMask ( ) const
inline

Returns a pointer to access directly the entrance mask information.

Definition at line 195 of file TRestAxionOptics.h.

◆ GetEntrancePosition()

TVector3 TRestAxionOptics::GetEntrancePosition ( )
inline

Returns the entrance position from the latest propagated photon.

Definition at line 166 of file TRestAxionOptics.h.

◆ GetEntrancePositionZ()

virtual Double_t TRestAxionOptics::GetEntrancePositionZ ( )
pure virtual

It returns the entrance Z-position defined by the optical axis.

Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

◆ GetExitDirection()

TVector3 TRestAxionOptics::GetExitDirection ( )
inline

Returns the exit position from the latest propagated photon.

Definition at line 181 of file TRestAxionOptics.h.

◆ GetExitMask()

TRestCombinedMask *const & TRestAxionOptics::GetExitMask ( ) const
inline

Returns a pointer to access directly the exit mask information.

Definition at line 201 of file TRestAxionOptics.h.

◆ GetExitPosition()

TVector3 TRestAxionOptics::GetExitPosition ( )
inline

Returns the exit position from the latest propagated photon.

Definition at line 172 of file TRestAxionOptics.h.

◆ GetExitPositionZ()

virtual Double_t TRestAxionOptics::GetExitPositionZ ( )
pure virtual

It returns the exit Z-position defined by the optical axis.

Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

◆ GetLastGoodDirection()

TVector3 TRestAxionOptics::GetLastGoodDirection ( )

It returns the last valid particle direction known in the particle tracking.

Definition at line 370 of file TRestAxionOptics.cxx.

◆ GetLastGoodPosition()

TVector3 TRestAxionOptics::GetLastGoodPosition ( )

It returns the last valid particle position known in the particle tracking.

Definition at line 358 of file TRestAxionOptics.cxx.

◆ GetMiddleDirection()

TVector3 TRestAxionOptics::GetMiddleDirection ( )
inline

Returns the middle position from the latest propagated photon.

Definition at line 178 of file TRestAxionOptics.h.

◆ GetMiddleMask()

TRestCombinedMask *const & TRestAxionOptics::GetMiddleMask ( ) const
inline

Returns a pointer to access directly the middle mask information.

Definition at line 198 of file TRestAxionOptics.h.

◆ GetMiddlePosition()

TVector3 TRestAxionOptics::GetMiddlePosition ( )
inline

Returns the middle position from the latest propagated photon.

Definition at line 169 of file TRestAxionOptics.h.

◆ GetMirror()

Int_t TRestAxionOptics::GetMirror ( )
inlineprotected

It returns the mirror index to be used in the photon reflection.

Definition at line 117 of file TRestAxionOptics.h.

◆ GetMirrorProperties()

TRestAxionOpticsMirror *const & TRestAxionOptics::GetMirrorProperties ( ) const
inline

Returns a pointer to access directly the exit mask information.

Definition at line 204 of file TRestAxionOptics.h.

◆ GetNumberOfReflections()

Int_t TRestAxionOptics::GetNumberOfReflections ( )

It returns the total number of reflections. Considering maximum 1-reflection per mirror.

Definition at line 235 of file TRestAxionOptics.cxx.

◆ GetPhotonReflectivity()

Double_t TRestAxionOptics::GetPhotonReflectivity ( Double_t  energy)
private

A prototype method to be implemented by specific optics to draw an schematic including the mirrors geometry.

Definition at line 579 of file TRestAxionOptics.cxx.

◆ GetRadialLimits()

virtual std::pair< Double_t, Double_t > TRestAxionOptics::GetRadialLimits ( )
pure virtual

It returns the lower/higher radius range where photons are allowed.

Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

◆ InitFromConfigFile()

void TRestAxionOptics::InitFromConfigFile ( )
virtual

Initialization of TRestAxionOptics field members through a RML file.

Reimplemented from TRestMetadata.

Reimplemented in TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

Definition at line 426 of file TRestAxionOptics.cxx.

◆ Initialize()

void TRestAxionOptics::Initialize ( )
virtual

Initialization of TRestAxionOptics members.

Reimplemented from TRestMetadata.

Reimplemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

Definition at line 189 of file TRestAxionOptics.cxx.

◆ IsFirstMirrorReflection()

Bool_t TRestAxionOptics::IsFirstMirrorReflection ( )
inline

It returns true if the photon got reflected in the first mirror.

Definition at line 187 of file TRestAxionOptics.h.

◆ IsSecondMirrorReflection()

Bool_t TRestAxionOptics::IsSecondMirrorReflection ( )
inline

It returns true if the photon got reflected in the second mirror.

Definition at line 190 of file TRestAxionOptics.h.

◆ PrintEntranceMask()

void TRestAxionOptics::PrintEntranceMask ( )

Prints on screen the mask used on the entrance optics plane.

Definition at line 478 of file TRestAxionOptics.cxx.

◆ PrintExitMask()

void TRestAxionOptics::PrintExitMask ( )

Prints on screen the mask used on the exit optics plane.

Definition at line 498 of file TRestAxionOptics.cxx.

◆ PrintMasks()

void TRestAxionOptics::PrintMasks ( )

Prints on screen the 3-optical masks used on the optics planes.

Definition at line 462 of file TRestAxionOptics.cxx.

◆ PrintMetadata()

void TRestAxionOptics::PrintMetadata ( )
virtual

Prints on screen the information about the metadata members of TRestAxionOptics.

Reimplemented from TRestMetadata.

Reimplemented in TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

Definition at line 443 of file TRestAxionOptics.cxx.

◆ PrintMiddleMask()

void TRestAxionOptics::PrintMiddleMask ( )

Prints on screen the mask used on the middle optics plane.

Definition at line 488 of file TRestAxionOptics.cxx.

◆ PrintMirror()

void TRestAxionOptics::PrintMirror ( )

Prints on screen the 3-optical masks used on the optics planes.

Definition at line 471 of file TRestAxionOptics.cxx.

◆ PrintPhotonTrackingSummary()

void TRestAxionOptics::PrintPhotonTrackingSummary ( )

Prints the positions taken by the photon after ray-tracing that should have been updated using the method PropagatePhoton.

Definition at line 509 of file TRestAxionOptics.cxx.

◆ PropagateMonteCarloPhoton()

Double_t TRestAxionOptics::PropagateMonteCarloPhoton ( Double_t  energy,
Double_t  deviation 
)

It will produce a MonteCarlo photon spatially distributed in XY as defined by the GetRadialLimits method (extended by 50%), and with direction along the Z-axis with a maximum deviation angle fixed by the deviation input parameter. If deviation=0 the photons will always be parallel to the z-axis. The photons will be launched from z=-3*fMirrorLength.

Definition at line 769 of file TRestAxionOptics.cxx.

◆ PropagatePhoton()

Double_t TRestAxionOptics::PropagatePhoton ( const TVector3 &  pos,
const TVector3 &  dir,
Double_t  energy 
)

Propagating photon.

We move the particle to the entrance optics plane. We update fEntrancePosition

Now that we are placed at the optics entrance plane. We define the current active mirror (same array index for front and back)

We update the position and direction at the first mirror. We update fFirstInteractionPosition and fMiddleDirection

We move the particle to the entrance optics plane. We update fEntrancePosition

We update the position and direction at the second mirror. We update fSecondInteractionPosition and fExitDirection

Definition at line 382 of file TRestAxionOptics.cxx.

◆ ResetPositions()

void TRestAxionOptics::ResetPositions ( )
private

It reinitializes particle positions and directions at the different optical regions.

Definition at line 336 of file TRestAxionOptics.cxx.

◆ SecondMirrorReflection()

virtual Int_t TRestAxionOptics::SecondMirrorReflection ( const TVector3 &  pos,
const TVector3 &  dir 
)
pure virtual

It updates the values fSecondInteractionPosition and fExitDirection. Returns 0 if is not in region.

Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

◆ SetMirror()

virtual void TRestAxionOptics::SetMirror ( )
protectedpure virtual

It must be implemented at the inherited optics, making use of fEntrancePosition.

Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.

◆ TransportToEntrance()

Int_t TRestAxionOptics::TransportToEntrance ( const TVector3 &  pos,
const TVector3 &  dir 
)
protected

It moves the incoming particle at the entrance of the optics plane and returns the region number where the particle is entering.

It updates the value of fEntrancePosition and fEntranceDirection.

If the region is 0, the particle has hit an opaque region and the photon will be lost.

Definition at line 251 of file TRestAxionOptics.cxx.

◆ TransportToExit()

Int_t TRestAxionOptics::TransportToExit ( const TVector3 &  pos,
const TVector3 &  dir 
)
protected

It moves the incoming particle to the exit of the optics plane and returns the region number where the particle is entering.

It updates the value of fExitPosition and fExitDirection.

If the region is 0, the particle has hit an opaque region and the photon will be lost.

Definition at line 311 of file TRestAxionOptics.cxx.

◆ TransportToMiddle()

Int_t TRestAxionOptics::TransportToMiddle ( const TVector3 &  pos,
const TVector3 &  dir 
)
protected

It moves the incoming particle to the middle of the optics plane and returns the region number where the particle is entering.

It updates the value of fMiddlePosition and fMiddleDirection.

If the region is 0, the particle has hit an opaque region and the photon will be lost.

Definition at line 280 of file TRestAxionOptics.cxx.

Field Documentation

◆ fCurrentMirror

Int_t TRestAxionOptics::fCurrentMirror = -1
protected

During the photon propagation it keeps track of the active mirror shell.

Definition at line 89 of file TRestAxionOptics.h.

◆ fEntranceDirection

TVector3 TRestAxionOptics::fEntranceDirection
protected

The particle position at the optics plane entrance.

Definition at line 77 of file TRestAxionOptics.h.

◆ fEntranceMask

TRestCombinedMask* TRestAxionOptics::fEntranceMask = nullptr
protected

The entrance optical mask that defines a pattern with regions identified with a number.

Definition at line 50 of file TRestAxionOptics.h.

◆ fEntrancePosition

TVector3 TRestAxionOptics::fEntrancePosition
protected

The particle position at the optics plane entrance.

Definition at line 62 of file TRestAxionOptics.h.

◆ fExitDirection

TVector3 TRestAxionOptics::fExitDirection
protected

The particle position at the optics plane exit.

Definition at line 83 of file TRestAxionOptics.h.

◆ fExitMask

TRestCombinedMask* TRestAxionOptics::fExitMask = nullptr
protected

The exit optical mask that defines a pattern with regions identified with a number.

Definition at line 56 of file TRestAxionOptics.h.

◆ fExitPosition

TVector3 TRestAxionOptics::fExitPosition
protected

The particle position at the optics plane exit.

Definition at line 74 of file TRestAxionOptics.h.

◆ fFirstInteraction

Bool_t TRestAxionOptics::fFirstInteraction = false
protected

During the photon propagation it tells us if the photon interacted in the first mirror.

Definition at line 92 of file TRestAxionOptics.h.

◆ fFirstInteractionPosition

TVector3 TRestAxionOptics::fFirstInteractionPosition
protected

The particle position at the front mirror interaction point.

Definition at line 65 of file TRestAxionOptics.h.

◆ fFocal

Double_t TRestAxionOptics::fFocal = -1
protected

The calculated focal in mm. It is updated by the method TRestAxionOptics::FindFocal.

Definition at line 86 of file TRestAxionOptics.h.

◆ fMiddleDirection

TVector3 TRestAxionOptics::fMiddleDirection
protected

The particle position at the optics plane middle.

Definition at line 80 of file TRestAxionOptics.h.

◆ fMiddleMask

TRestCombinedMask* TRestAxionOptics::fMiddleMask = nullptr
protected

The middle optical mask that defines a pattern with regions identified with a number.

Definition at line 53 of file TRestAxionOptics.h.

◆ fMiddlePosition

TVector3 TRestAxionOptics::fMiddlePosition
protected

The particle position at the optics plane middle.

Definition at line 68 of file TRestAxionOptics.h.

◆ fMirrorLength

Double_t TRestAxionOptics::fMirrorLength = 0
protected

The mirror length. If all mirrors got the same length. Otherwise will be zero.

Definition at line 41 of file TRestAxionOptics.h.

◆ fMirrorProperties

TRestAxionOpticsMirror* TRestAxionOptics::fMirrorProperties = nullptr
protected

The mirror properties.

Definition at line 47 of file TRestAxionOptics.h.

◆ fOpticsData

std::vector<std::vector<Double_t> > TRestAxionOptics::fOpticsData
protected

The optics data table extracted from fOpticsFile.

Definition at line 44 of file TRestAxionOptics.h.

◆ fOpticsFile

std::string TRestAxionOptics::fOpticsFile = ""
protected

An optics file that contains all the specific optics parameters.

Definition at line 38 of file TRestAxionOptics.h.

◆ fOriginPosition

TVector3 TRestAxionOptics::fOriginPosition
protected

The particle position at the origin.

Definition at line 59 of file TRestAxionOptics.h.

◆ fPad

TPad* TRestAxionOptics::fPad = nullptr
protected

A pad pointer to be used by the drawing methods.

Definition at line 110 of file TRestAxionOptics.h.

◆ fRandom

TRandom3* TRestAxionOptics::fRandom = nullptr
protected

Random number generator.

Definition at line 98 of file TRestAxionOptics.h.

◆ fSecondInteraction

Bool_t TRestAxionOptics::fSecondInteraction = false
protected

During the photon propagation it tells us if the photon interacted in the second mirror.

Definition at line 95 of file TRestAxionOptics.h.

◆ fSecondInteractionPosition

TVector3 TRestAxionOptics::fSecondInteractionPosition
protected

The particle position at the back mirror interaction point.

Definition at line 71 of file TRestAxionOptics.h.


The documentation for this class was generated from the following files: