REST-for-Physics
v2.3
Rare Event Searches ToolKit for Physics
|
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.
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.
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.
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).
fOpticsData
member that is accessible to the inherited classes.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.
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.
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
Definition at line 35 of file TRestAxionOptics.h.
#include <TRestAxionOptics.h>
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... | |
Public Member Functions inherited from TRestMetadata | |
void | AddLog (std::string log="", bool print=true) |
Add logs to messageBuffer. More... | |
void | DoNotStore () |
If this method is called the metadata information will not be stored in disk. More... | |
TVector2 | Get2DVectorParameterWithUnits (std::string parName, TVector2 defaultValue=TVector2(-1, -1)) |
TVector3 | Get3DVectorParameterWithUnits (std::string parName, TVector3 defaultValue=TVector3(-1, -1, -1)) |
TString | GetCommit () |
Returns the REST commit value stored in fCommit. More... | |
std::string | GetConfigBuffer () |
Returns the config section of this class. More... | |
std::string | GetDataMemberValue (std::string memberName) |
Get the value of data member as string. More... | |
std::vector< std::string > | GetDataMemberValues (std::string memberName, Int_t precision=0) |
Get the value of datamember as a vector of strings. More... | |
TString | GetDataPath () |
Returns a std::string with the path used for data storage. More... | |
Double_t | GetDblParameterWithUnits (std::string parName, Double_t defaultValue=PARAMETER_NOT_FOUND_DBL) |
Gets the value of the parameter name parName, after applying unit conversion. More... | |
Bool_t | GetError () const |
It returns true if an error was identified by a derived metadata class. More... | |
TString | GetErrorMessage () |
Returns a std::string containing the error message. More... | |
TString | GetLibraryVersion () |
Returns the REST libraty version stored in fLibraryVersion. More... | |
TString | GetMainDataPath () |
Gets a std::string with the path used for data storage. More... | |
Int_t | GetNumberOfErrors () const |
Int_t | GetNumberOfWarnings () const |
std::string | GetParameter (std::string parName, TString defaultValue=PARAMETER_NOT_FOUND_STR) |
Returns corresponding REST Metadata parameter from multiple sources. More... | |
std::string | GetSectionName () |
Returns the section name of this class, defined at the beginning of fSectionName. More... | |
TRestStringOutput::REST_Verbose_Level | GetVerboseLevel () |
returns the verboselevel in type of REST_Verbose_Level enumerator More... | |
TString | GetVerboseLevelString () |
returns the verbose level in type of TString More... | |
TString | GetVersion () |
Returns the REST version stored in fVersion. More... | |
Int_t | GetVersionCode () |
UInt_t | GetVersionMajor () const |
UInt_t | GetVersionMinor () const |
UInt_t | GetVersionPatch () const |
Bool_t | GetWarning () const |
It returns true if an error was identified by a derived metadata class. More... | |
TString | GetWarningMessage () |
Returns a std::string containing the warning message. More... | |
virtual void | Initialize () |
Making default settings. More... | |
TRestMetadata * | InstantiateChildMetadata (int index, std::string pattern="") |
This method will retrieve a new TRestMetadata instance of a child element of the present TRestMetadata instance based on the index given by argument, which defines the element order to be retrieved, 0 for first element found, 1 for the second element found, etc. More... | |
TRestMetadata * | InstantiateChildMetadata (std::string pattern="", std::string name="") |
This method will retrieve a new TRestMetadata instance of a child element of the present TRestMetadata instance based on the name given by argument. More... | |
Bool_t | isCleanState () const |
Bool_t | isOfficialRelease () const |
Int_t | LoadConfigFromBuffer () |
Initialize data from a string element buffer. More... | |
Int_t | LoadConfigFromElement (TiXmlElement *eSectional, TiXmlElement *eGlobal, std::map< std::string, std::string > envs={}) |
Main starter method. More... | |
Int_t | LoadConfigFromFile (const std::string &configFilename, const std::string §ionName="") |
Give the file name, find out the corresponding section. Then call the main starter. More... | |
virtual void | Merge (const TRestMetadata &) |
TRestMetadata & | operator= (const TRestMetadata &) |
void | Print () |
Implementing TObject::Print() method. More... | |
void | PrintConfigBuffer () |
Print the config xml section stored in the class. More... | |
void | PrintMessageBuffer () |
Print the buffered message. More... | |
virtual void | PrintMetadata () |
Implemented it in the derived metadata class to print out specific metadata information. More... | |
void | PrintTimeStamp (Double_t timeStamp) |
Print the current time on local machine. More... | |
void | SetConfigFile (std::string configFilename) |
set config file path from external More... | |
void | SetError (std::string message="", bool print=true, int maxPrint=5) |
A metadata class may use this method to signal that something went wrong. More... | |
void | SetHostmgr (TRestManager *m) |
Set the host manager for this class. More... | |
void | SetSectionName (std::string sName) |
set the section name, clear the section content More... | |
void | SetVerboseLevel (TRestStringOutput::REST_Verbose_Level v) |
sets the verbose level More... | |
void | SetWarning (std::string message="", bool print=true, int maxPrint=5) |
A metadata class may use this method to signal that something went wrong. More... | |
void | Store () |
If this method is called the metadata information will be stored in disk. More... | |
TRestMetadata (const TRestMetadata &) | |
virtual void | UpdateMetadataMembers () |
Method to allow implementation of specific metadata members updates at inherited classes. More... | |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) |
overwriting the write() method with fStore considered More... | |
void | WriteConfigBuffer (std::string fName) |
Writes the config buffer to a file in append mode. More... | |
~TRestMetadata () | |
TRestMetadata 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 Member Functions inherited from TRestMetadata | |
std::string | ElementToString (TiXmlElement *ele) |
Convert an TiXmlElement object to string. More... | |
TVector2 | Get2DVectorParameterWithUnits (std::string parName, TiXmlElement *e, TVector2 defaultValue=TVector2(-1, -1)) |
TVector3 | Get3DVectorParameterWithUnits (std::string parName, TiXmlElement *e, TVector3 defaultValue=TVector3(-1, -1, -1)) |
Double_t | GetDblParameterWithUnits (std::string parName, TiXmlElement *e, Double_t defaultVal=PARAMETER_NOT_FOUND_DBL) |
TiXmlElement * | GetElement (std::string eleDeclare, TiXmlElement *e=nullptr) |
Get an xml element from a given parent element, according to its declaration. More... | |
TiXmlElement * | GetElementFromFile (std::string configFilename, std::string NameOrDecalre="") |
Open an xml encoded file and find its element. More... | |
TiXmlElement * | GetElementWithName (std::string eleDeclare, std::string eleName) |
Get an xml element from the default location, according to its declaration and its field "name". More... | |
TiXmlElement * | GetElementWithName (std::string eleDeclare, std::string eleName, TiXmlElement *e) |
Get an xml element from a given parent element, according to its declaration and its field "name". More... | |
std::string | GetFieldValue (std::string fieldName, std::string definition, size_t fromPosition=0) |
Gets field value in an xml element string by parsing it as TiXmlElement. More... | |
std::string | GetFieldValue (std::string parName, TiXmlElement *e) |
Returns the field value of an xml element which has the specified name. More... | |
std::string | GetKEYDefinition (std::string keyName) |
Gets the first key definition for keyName found inside buffer starting at fromPosition. More... | |
std::string | GetKEYDefinition (std::string keyName, size_t &Position) |
std::string | GetKEYDefinition (std::string keyName, size_t &Position, std::string buffer) |
std::string | GetKEYDefinition (std::string keyName, std::string buffer) |
std::string | GetKEYStructure (std::string keyName) |
Gets the first key structure for keyName found inside buffer after fromPosition. More... | |
std::string | GetKEYStructure (std::string keyName, size_t &Position) |
std::string | GetKEYStructure (std::string keyName, size_t &Position, std::string buffer) |
std::string | GetKEYStructure (std::string keyName, size_t &Position, TiXmlElement *ele) |
std::string | GetKEYStructure (std::string keyName, std::string buffer) |
TiXmlElement * | GetNextElement (TiXmlElement *e) |
Get the next sibling xml element of this element, with same eleDeclare. More... | |
std::string | GetParameter (std::string parName, size_t &pos, std::string inputString) |
Returns the value for the parameter name parName found in inputString. More... | |
std::string | GetParameter (std::string parName, TiXmlElement *e, TString defaultValue=PARAMETER_NOT_FOUND_STR) |
Returns the value for the parameter named parName in the given section. More... | |
std::pair< std::string, std::string > | GetParameterAndUnits (std::string parname, TiXmlElement *e=nullptr) |
Returns the unit string of the given parameter of the given xml section. More... | |
std::map< std::string, std::string > | GetParametersList () |
It retrieves a map of all parameter:value found in the metadata class. More... | |
TString | GetSearchPath () |
virtual void | InitFromConfigFile () |
To make settings from rml file. This method must be implemented in the derived class. More... | |
virtual void | InitFromRootFile () |
Method called after the object is retrieved from root file. More... | |
virtual Int_t | LoadSectionMetadata () |
This method does some preparation of xml section. More... | |
void | ReadAllParameters () |
Reflection methods, Set value of a datamember in class according to TRestMetadata::fElement. More... | |
void | ReadParametersList (std::map< std::string, std::string > &list) |
It reads a parameter list and associates it to its corresponding metadata member. par0 --> fPar0. More... | |
std::string | ReplaceConstants (const std::string buffer) |
Identifies "constants" in the input buffer, and replace them with corresponding value. More... | |
std::string | ReplaceVariables (const std::string buffer) |
Identifies environmental variable replacing marks in the input buffer, and replace them with corresponding value. More... | |
void | ReSetVersion () |
Resets the version of TRestRun to REST_RELEASE. Only TRestRun is allowed to update version. More... | |
std::string | SearchFile (std::string filename) |
Search files in current directory and directories specified in "searchPath" section. More... | |
void | SetLibraryVersion (TString version) |
Set the library version of this metadata class. More... | |
TiXmlElement * | StringToElement (std::string definition) |
Parsing a string into TiXmlElement object. More... | |
TRestMetadata () | |
TRestMetadata default constructor. More... | |
TRestMetadata (const char *configFilename) | |
constructor More... | |
void | UnSetVersion () |
Resets the version of TRestRun to -1, in case the file is old REST file. Only TRestRun is allowed to update version. 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... | |
TRestCombinedMask * | fEntranceMask = 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... | |
TRestCombinedMask * | fExitMask = 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... | |
TRestCombinedMask * | fMiddleMask = 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... | |
TRestAxionOpticsMirror * | fMirrorProperties = 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... | |
Protected Attributes inherited from TRestMetadata | |
std::string | configBuffer |
The buffer where the corresponding metadata section is stored. Filled only during Write() More... | |
std::string | fConfigFileName |
Full name of the rml file. More... | |
std::map< std::string, std::string > | fConstants |
Saving a list of rml constants. name-value std::pair. Constants are temporary for this class only. More... | |
TiXmlElement * | fElement |
Saving the sectional element together with global element. More... | |
TiXmlElement * | fElementGlobal |
Saving the global element, to be passed to the resident class, if necessary. More... | |
Bool_t | fError = false |
It can be used as a way to identify that something went wrong using SetError method. More... | |
TString | fErrorMessage = "" |
A std::string to store an optional error message through method SetError. More... | |
TRestManager * | fHostmgr |
All metadata classes can be initialized and managed by TRestManager. More... | |
Int_t | fNErrors = 0 |
It counts the number of errors notified. More... | |
Int_t | fNWarnings = 0 |
It counts the number of warnings notified. More... | |
std::string | fSectionName |
Section name given in the constructor of the derived metadata class. More... | |
Bool_t | fStore |
This variable is used to determine if the metadata structure should be stored in the ROOT file. More... | |
std::map< std::string, std::string > | fVariables |
Saving a list of rml variables. name-value std::pair. More... | |
TRestStringOutput::REST_Verbose_Level | fVerboseLevel |
Verbose level used to print debug info. More... | |
Bool_t | fWarning = false |
It can be used as a way to identify that something went wrong using SetWarning method. More... | |
TString | fWarningMessage = "" |
It can be used as a way to identify that something went wrong using SetWarning method. More... | |
std::string | messageBuffer |
The buffer to store the output message through TRestStringOutput in this class. More... | |
endl_t | RESTendl |
Termination flag object for TRestStringOutput. 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... | |
|
protected |
Default constructor.
Definition at line 156 of file TRestAxionOptics.cxx.
|
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.
cfgFileName | A const char* giving the path to an RML file. |
name | The 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 | ( | ) |
Default destructor.
Definition at line 180 of file TRestAxionOptics.cxx.
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.
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.
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.
|
pure virtual |
It draws the mirrors using a TGraph. To be implemented at the inherited class.
Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
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:
Definition at line 608 of file TRestAxionOptics.cxx.
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.
|
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.
false
it will reuse a previous focal point calculation. If true
it will force to recalculate the focal point.Definition at line 695 of file TRestAxionOptics.cxx.
|
pure virtual |
It updates the values fFirstInteractionPosition and fMiddleDirection. Returns 0 if is not in region.
Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
|
inline |
It returns the entrance angle to the optical axis (in radians).
Definition at line 144 of file TRestAxionOptics.h.
|
inline |
Returns the entrance position from the latest propagated photon.
Definition at line 175 of file TRestAxionOptics.h.
|
inline |
Returns a pointer to access directly the entrance mask information.
Definition at line 195 of file TRestAxionOptics.h.
|
inline |
Returns the entrance position from the latest propagated photon.
Definition at line 166 of file TRestAxionOptics.h.
|
pure virtual |
It returns the entrance Z-position defined by the optical axis.
Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
|
inline |
Returns the exit position from the latest propagated photon.
Definition at line 181 of file TRestAxionOptics.h.
|
inline |
Returns a pointer to access directly the exit mask information.
Definition at line 201 of file TRestAxionOptics.h.
|
inline |
Returns the exit position from the latest propagated photon.
Definition at line 172 of file TRestAxionOptics.h.
|
pure virtual |
It returns the exit Z-position defined by the optical axis.
Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
TVector3 TRestAxionOptics::GetLastGoodDirection | ( | ) |
It returns the last valid particle direction known in the particle tracking.
Definition at line 370 of file TRestAxionOptics.cxx.
TVector3 TRestAxionOptics::GetLastGoodPosition | ( | ) |
It returns the last valid particle position known in the particle tracking.
Definition at line 358 of file TRestAxionOptics.cxx.
|
inline |
Returns the middle position from the latest propagated photon.
Definition at line 178 of file TRestAxionOptics.h.
|
inline |
Returns a pointer to access directly the middle mask information.
Definition at line 198 of file TRestAxionOptics.h.
|
inline |
Returns the middle position from the latest propagated photon.
Definition at line 169 of file TRestAxionOptics.h.
|
inlineprotected |
It returns the mirror index to be used in the photon reflection.
Definition at line 117 of file TRestAxionOptics.h.
|
inline |
Returns a pointer to access directly the exit mask information.
Definition at line 204 of file TRestAxionOptics.h.
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.
|
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.
|
pure virtual |
It returns the lower/higher radius range where photons are allowed.
Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
|
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.
|
virtual |
Initialization of TRestAxionOptics members.
Reimplemented from TRestMetadata.
Reimplemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
Definition at line 189 of file TRestAxionOptics.cxx.
|
inline |
It returns true if the photon got reflected in the first mirror.
Definition at line 187 of file TRestAxionOptics.h.
|
inline |
It returns true if the photon got reflected in the second mirror.
Definition at line 190 of file TRestAxionOptics.h.
void TRestAxionOptics::PrintEntranceMask | ( | ) |
Prints on screen the mask used on the entrance optics plane.
Definition at line 478 of file TRestAxionOptics.cxx.
void TRestAxionOptics::PrintExitMask | ( | ) |
Prints on screen the mask used on the exit optics plane.
Definition at line 498 of file TRestAxionOptics.cxx.
void TRestAxionOptics::PrintMasks | ( | ) |
Prints on screen the 3-optical masks used on the optics planes.
Definition at line 462 of file TRestAxionOptics.cxx.
|
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.
void TRestAxionOptics::PrintMiddleMask | ( | ) |
Prints on screen the mask used on the middle optics plane.
Definition at line 488 of file TRestAxionOptics.cxx.
void TRestAxionOptics::PrintMirror | ( | ) |
Prints on screen the 3-optical masks used on the optics planes.
Definition at line 471 of file TRestAxionOptics.cxx.
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.
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.
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.
|
private |
It reinitializes particle positions and directions at the different optical regions.
Definition at line 336 of file TRestAxionOptics.cxx.
|
pure virtual |
It updates the values fSecondInteractionPosition and fExitDirection. Returns 0 if is not in region.
Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
|
protectedpure virtual |
It must be implemented at the inherited optics, making use of fEntrancePosition.
Implemented in TRestAxionMCPLOptics, TRestAxionTrueWolterOptics, and TRestAxionWolterOptics.
|
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.
|
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.
|
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.
|
protected |
During the photon propagation it keeps track of the active mirror shell.
Definition at line 89 of file TRestAxionOptics.h.
|
protected |
The particle position at the optics plane entrance.
Definition at line 77 of file TRestAxionOptics.h.
|
protected |
The entrance optical mask that defines a pattern with regions identified with a number.
Definition at line 50 of file TRestAxionOptics.h.
|
protected |
The particle position at the optics plane entrance.
Definition at line 62 of file TRestAxionOptics.h.
|
protected |
The particle position at the optics plane exit.
Definition at line 83 of file TRestAxionOptics.h.
|
protected |
The exit optical mask that defines a pattern with regions identified with a number.
Definition at line 56 of file TRestAxionOptics.h.
|
protected |
The particle position at the optics plane exit.
Definition at line 74 of file TRestAxionOptics.h.
|
protected |
During the photon propagation it tells us if the photon interacted in the first mirror.
Definition at line 92 of file TRestAxionOptics.h.
|
protected |
The particle position at the front mirror interaction point.
Definition at line 65 of file TRestAxionOptics.h.
|
protected |
The calculated focal in mm. It is updated by the method TRestAxionOptics::FindFocal.
Definition at line 86 of file TRestAxionOptics.h.
|
protected |
The particle position at the optics plane middle.
Definition at line 80 of file TRestAxionOptics.h.
|
protected |
The middle optical mask that defines a pattern with regions identified with a number.
Definition at line 53 of file TRestAxionOptics.h.
|
protected |
The particle position at the optics plane middle.
Definition at line 68 of file TRestAxionOptics.h.
|
protected |
The mirror length. If all mirrors got the same length. Otherwise will be zero.
Definition at line 41 of file TRestAxionOptics.h.
|
protected |
The mirror properties.
Definition at line 47 of file TRestAxionOptics.h.
|
protected |
The optics data table extracted from fOpticsFile.
Definition at line 44 of file TRestAxionOptics.h.
|
protected |
An optics file that contains all the specific optics parameters.
Definition at line 38 of file TRestAxionOptics.h.
|
protected |
The particle position at the origin.
Definition at line 59 of file TRestAxionOptics.h.
|
protected |
A pad pointer to be used by the drawing methods.
Definition at line 110 of file TRestAxionOptics.h.
|
protected |
Random number generator.
Definition at line 98 of file TRestAxionOptics.h.
|
protected |
During the photon propagation it tells us if the photon interacted in the second mirror.
Definition at line 95 of file TRestAxionOptics.h.
|
protected |
The particle position at the back mirror interaction point.
Definition at line 71 of file TRestAxionOptics.h.