REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Public Member Functions | Private Member Functions | Private Attributes
TRestAxionMCPLOptics Class Reference

Detailed Description

A class to load optics response using MCPL files.

TRestAxionMCPLOptics is a class that inherits from TRestAxionOptics. It will load the optics response from a MCPL file, and inherit the common optics description.

This method will implement the pure virtual method PropagatePhoton, that will be responsible to move a particle to the exit plane of the optics. It may use the common methods defined at TRestAxionOptics.

RML definition

We can add any number of magnetic volumes inside the RML definition as shown in the following piece of code,

Example 1:

<TRestAxionMCPLOptics name="mcpl" >
<parameter name="center" value="(0,0,200)mm" />
<parameter name="axis" value="(0,0.02,0.98)" />
<parameter name="length" value="22cm" />
<!-- We build mirror shells with 0.1mm thickness -->
<parameter name="shellMinRadii" value="5,10,15,20,25" />
<parameter name="shellMaxRadii" value="9.9,14.9,19.9,24.9,29.9" />
A class to load optics response using MCPL files.

RESTsoft - Software for Rare Event Searches with TPCs

History of developments:

2022-February: First concept and implementation of TRestAxionMCPLOptics 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 31 of file TRestAxionMCPLOptics.h.

#include <TRestAxionMCPLOptics.h>

Inheritance diagram for TRestAxionMCPLOptics:
TRestAxionOptics TRestMetadata

Public Member Functions

 ClassDefOverride (TRestAxionMCPLOptics, 1)
 
TPad * DrawMirrors () override
 A method to draw the mirrors. More...
 
Double_t GetEntrancePositionZ () override
 It returns the entrance Z-position defined by the optical axis. More...
 
Double_t GetExitPositionZ () override
 It returns the exit Z-position defined by the optical axis. More...
 
std::pair< Double_t, Double_t > GetRadialLimits () override
 It returns the radial limits at the entrance of the optics. More...
 
void InitFromConfigFile () override
 Initialization of TRestAxionMCPLOptics field members through a RML file. More...
 
void PrintMetadata () override
 Prints on screen the information about the metadata members of TRestAxionMCPLOptics. More...
 
void SetMirror () override
 It must be implemented at the inherited optics, making use of fEntrancePosition. More...
 
 TRestAxionMCPLOptics ()
 Default constructor. More...
 
 TRestAxionMCPLOptics (const char *cfgFileName, std::string name="")
 Constructor loading data from a config file. More...
 
 ~TRestAxionMCPLOptics ()
 Default destructor. More...
 
- Public Member Functions inherited from TRestAxionOptics
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...
 

Private Member Functions

Int_t FirstMirrorReflection (const TVector3 &pos, const TVector3 &dir) override
 It updates the values fFirstInteractionPosition and fMiddleDirection. Returns 0 if is not in region. More...
 
void Initialize () override
 Initialization of TRestAxionMCPLOptics members. More...
 
Int_t SecondMirrorReflection (const TVector3 &pos, const TVector3 &dir) override
 It updates the values fSecondInteractionPosition and fExitDirection. Returns 0 if is not in region. More...
 

Private Attributes

std::string fInputMCPLFilename
 The file containing the input particle list. More...
 
std::string fOutputMCPLFilename
 The file containing the output particle list. More...
 

Additional Inherited Members

- Protected Member Functions inherited from TRestAxionOptics
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 inherited from TRestAxionOptics
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...
 

Constructor & Destructor Documentation

◆ TRestAxionMCPLOptics() [1/2]

TRestAxionMCPLOptics::TRestAxionMCPLOptics ( )

Default constructor.

Definition at line 77 of file TRestAxionMCPLOptics.cxx.

◆ TRestAxionMCPLOptics() [2/2]

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

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 TRestAxionMagneticField section inside the RML.

Definition at line 93 of file TRestAxionMCPLOptics.cxx.

◆ ~TRestAxionMCPLOptics()

TRestAxionMCPLOptics::~TRestAxionMCPLOptics ( )

Default destructor.

Definition at line 107 of file TRestAxionMCPLOptics.cxx.

Member Function Documentation

◆ DrawMirrors()

TPad * TRestAxionMCPLOptics::DrawMirrors ( )
overridevirtual

A method to draw the mirrors.

Implements TRestAxionOptics.

Definition at line 147 of file TRestAxionMCPLOptics.cxx.

◆ FirstMirrorReflection()

Int_t TRestAxionMCPLOptics::FirstMirrorReflection ( const TVector3 &  pos,
const TVector3 &  dir 
)
inlineoverrideprivatevirtual

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

Implements TRestAxionOptics.

Definition at line 41 of file TRestAxionMCPLOptics.h.

◆ GetEntrancePositionZ()

Double_t TRestAxionMCPLOptics::GetEntrancePositionZ ( )
inlineoverridevirtual

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

Implements TRestAxionOptics.

Definition at line 50 of file TRestAxionMCPLOptics.h.

◆ GetExitPositionZ()

Double_t TRestAxionMCPLOptics::GetExitPositionZ ( )
inlineoverridevirtual

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

Implements TRestAxionOptics.

Definition at line 53 of file TRestAxionMCPLOptics.h.

◆ GetRadialLimits()

std::pair< Double_t, Double_t > TRestAxionMCPLOptics::GetRadialLimits ( )
inlineoverridevirtual

It returns the radial limits at the entrance of the optics.

Implements TRestAxionOptics.

Definition at line 56 of file TRestAxionMCPLOptics.h.

◆ InitFromConfigFile()

void TRestAxionMCPLOptics::InitFromConfigFile ( )
overridevirtual

Initialization of TRestAxionMCPLOptics field members through a RML file.

Reimplemented from TRestMetadata.

Definition at line 122 of file TRestAxionMCPLOptics.cxx.

◆ Initialize()

void TRestAxionMCPLOptics::Initialize ( )
overrideprivatevirtual

Initialization of TRestAxionMCPLOptics members.

Reimplemented from TRestAxionOptics.

Definition at line 112 of file TRestAxionMCPLOptics.cxx.

◆ PrintMetadata()

void TRestAxionMCPLOptics::PrintMetadata ( )
overridevirtual

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

Reimplemented from TRestMetadata.

Definition at line 135 of file TRestAxionMCPLOptics.cxx.

◆ SecondMirrorReflection()

Int_t TRestAxionMCPLOptics::SecondMirrorReflection ( const TVector3 &  pos,
const TVector3 &  dir 
)
inlineoverrideprivatevirtual

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

Implements TRestAxionOptics.

Definition at line 42 of file TRestAxionMCPLOptics.h.

◆ SetMirror()

void TRestAxionMCPLOptics::SetMirror ( )
inlineoverridevirtual

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

Implements TRestAxionOptics.

Definition at line 61 of file TRestAxionMCPLOptics.h.

Field Documentation

◆ fInputMCPLFilename

std::string TRestAxionMCPLOptics::fInputMCPLFilename
private

The file containing the input particle list.

Definition at line 36 of file TRestAxionMCPLOptics.h.

◆ fOutputMCPLFilename

std::string TRestAxionMCPLOptics::fOutputMCPLFilename
private

The file containing the output particle list.

Definition at line 39 of file TRestAxionMCPLOptics.h.


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