REST-for-Physics
v2.3
Rare Event Searches ToolKit for Physics
|
A metadata class to generate/store a readout description.
This is the main metadata readout class of REST. The readout class defines the methods allowing to stablish a relation between the hits inside the TPC and the signals read out by the electronics daq.
A full readout description is composed by at least one readout plane, (TRestDetectorReadoutPlane), where we can place any number of readout modules (TRestDetectorReadoutModule). A readout module is composed by readout channels (TRestDetectorReadoutChannel) which describe the basic active detection area, which can take any complex shape by combinning primitive geometry elements (TRestDetectorReadoutPixel).
REST processes such as TRestDetectorSignalToHitsProcess and TRestDetectorHitsToSignalProcess use the TRestDetectorReadout class to transform the spatial coordinates into raw signal data, and viceversa.
The readout definition must be initialized through a RML file. The basic metadata structure of a readout follows this scheme
The mappingNodes parameter allows to specify the size of the virtual grid that will be used to map the readout. The mapping allows to speed up the process finding a pixel inside a module for a given x,y coordinates. In general, the number of mapping nodes should be high enough so that every pixel from any readout channel is associated to, or contains, a node in the grid. However, as higher is the number of nodes in the mapping grid, higher will be the required computation time to find a pixel for a given x,y coordinates. If this value is not defined REST will try to find an optimum value for this parameter. Therefore, it is recommended to do not specify this parameter, except for solving readout problems or optimization purposes.
The relation between the channel number imposed by the electronic acquisition and the readout channel id defined inside readoutChannel is given to TRestDetectorReadout through a decoding file.
The decodingFile parameter inside each module added to the readout plane allows to set the filename (in the code above, module.dec) of a file used to define the relation between the physical readout id defined at each readout channel, as <readoutChannel id="n">
and the daq channel number defined at the acquisition system. If no decoding file is defined the relation between daq and readout channel is assigned one to one. The decoding file must be a text file defining two columns with as many columns as the number of channels defined in the readout module. The first column is the daq channel number, and the second column is the readout channel defined in the RML file.
An example of contents of a decoding file. Here 0, 1, 2, 3, ... are the physical readout channels corresponding to the daq channels 67, 65, 63, 61, ...
The channel number defined on the left column will be shifted by the value firstDaqChannel defined when adding the readout module to the readout plane. This may allow to re-use a decoding file for different readout modules in case we have a repetitive connection pattern.
New method has been added to update the decoding in an already generated readout. The following lines give an example of how to do it:
Once TRestDetectorReadout has been initialized, through and RML file or a previously stored TRestDetectorReadout class stored in a ROOT file, we can find the corresponding xy-position for a given readout channel id, module id, and readout plane, or the corresponding coordinates for a given channel inside a module contained in a readout plane.
The following code shows how we can identify the readout plane (planeId), the readout module (moduleId), and the readout channel (chanId) for a given x,y,z coordinates.
Once we found the readout channel, we can obtain the associated daq channel number, that was defined using the decoding file.
The other way around we can obtain the corresponding x and y coordinates for a given daq channel id. The following code shows the basic idea to find signalId.
RESTsoft - Software for Rare Event Searches with TPCs
History of developments:
2015-aug: First concept. Javier Galan
Definition at line 33 of file TRestDetectorReadout.h.
#include <TRestDetectorReadout.h>
Public Member Functions | |
void | AddReadoutPlane (const TRestDetectorReadoutPlane &plane) |
Adds a readout plane to the readout. | |
ClassDefOverride (TRestDetectorReadout, 3) | |
void | Draw () |
Draws the readout on screen. Not yet implemented. | |
void | Export (const std::string &fileName) |
Export readout to a root file. | |
std::set< Int_t > | GetAllDaqIds () |
Int_t | GetDaqId (const TVector3 &position, bool check=true) |
Returns the DaqID of the channel for position. If no channel is found returns -1. | |
Int_t | GetHitsDaqChannel (const TVector3 &position, Int_t &planeID, Int_t &moduleID, Int_t &channelID) |
std::tuple< Int_t, Int_t, Int_t > | GetHitsDaqChannelAtReadoutPlane (const TVector3 &position, Int_t planeId=0) |
Returns a tuple with the DaqID, ModuleID, ChannelID. More... | |
Int_t | GetModuleDefinitionId (const TString &name) |
Returns the id of the readout module with a given name. | |
Int_t | GetNumberOfChannels () |
Returns the total number of channels implemented in all the readout planes and modules. | |
Int_t | GetNumberOfModules () |
Returns the total number of modules implemented in all the readout planes. | |
Int_t | GetNumberOfReadoutPlanes () const |
void | GetPlaneModuleChannel (Int_t daqID, Int_t &planeID, Int_t &moduleID, Int_t &channelID) |
TRestDetectorReadoutChannel * | GetReadoutChannelWithDaqID (int daqId) |
Returns a pointer to the readout channel by daq id. | |
TRestDetectorReadoutModule * | GetReadoutModuleWithID (int id) |
Returns a pointer to the readout module by ID. More... | |
TRestDetectorReadoutPlane * | GetReadoutPlane (int p) |
Returns a pointer to the readout plane by index. | |
TRestDetectorReadoutPlane * | GetReadoutPlaneWithID (int id) |
Returns a pointer to the readout plane by ID. | |
std::string | GetTypeForChannelDaqId (Int_t daqId) |
Double_t | GetX (Int_t planeID, Int_t modID, Int_t chID) |
It returns the x-coordinate for the given readout plane, plane, a given module, modID, and a given channel, chID. | |
Double_t | GetX (Int_t signalID) |
It returns the physical X-coordinate corresponding to a given signal id in plane coordinates. | |
Double_t | GetY (Int_t planeID, Int_t modID, Int_t chID) |
It returns the y-coordinate for the given readout plane, plane, a given module, modID, and a given channel, chID. | |
Double_t | GetY (Int_t signalID) |
It returns the physical Y-coordinate corresponding to a given signal id in plane coordinates. | |
TRestDetectorReadoutPlane & | operator[] (int p) |
TRestDetectorReadoutModule * | ParseModuleDefinition (TiXmlElement *moduleDefinition) |
void | PrintMetadata () override |
Implemented it in the derived metadata class to print out specific metadata information. More... | |
void | PrintMetadata (Int_t DetailLevel) |
Prints on screen the details about the readout definition. More... | |
TRestDetectorReadout () | |
TRestDetectorReadout default constructor. | |
TRestDetectorReadout (const char *configFilename) | |
TRestDetectorReadout constructor loading data from a config file. More... | |
TRestDetectorReadout (const char *configFilename, const std::string &name) | |
TRestDetectorReadout constructor loading data from a config file. More... | |
~TRestDetectorReadout () override | |
TRestDetectorReadout default destructor. | |
Public Member Functions inherited from TRestMetadata | |
void | AddLog (std::string log="", bool print=true) |
Add logs to messageBuffer. | |
void | DoNotStore () |
If this method is called the metadata information will not be stored in disk. | |
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. | |
std::string | GetConfigBuffer () |
Returns the config section of this class. | |
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. | |
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. | |
TString | GetErrorMessage () |
Returns a std::string containing the error message. | |
TString | GetLibraryVersion () |
Returns the REST libraty version stored in fLibraryVersion. | |
TString | GetMainDataPath () |
Gets a std::string with the path used for data storage. | |
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. | |
TRestStringOutput::REST_Verbose_Level | GetVerboseLevel () |
returns the verboselevel in type of REST_Verbose_Level enumerator | |
TString | GetVerboseLevelString () |
returns the verbose level in type of TString More... | |
TString | GetVersion () |
Returns the REST version stored in fVersion. | |
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. | |
TString | GetWarningMessage () |
Returns a std::string containing the warning message. | |
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. | |
virtual void | Merge (const TRestMetadata &) |
TRestMetadata & | operator= (const TRestMetadata &) |
void | Print () |
Implementing TObject::Print() method. | |
void | PrintConfigBuffer () |
Print the config xml section stored in the class. More... | |
void | PrintMessageBuffer () |
Print the buffered message. | |
void | PrintTimeStamp (Double_t timeStamp) |
Print the current time on local machine. More... | |
void | SetConfigFile (std::string configFilename) |
set config file path from external | |
void | SetError (std::string message="", bool print=true, int maxPrint=5) |
A metadata class may use this method to signal that something went wrong. | |
void | SetHostmgr (TRestManager *m) |
Set the host manager for this class. | |
void | SetSectionName (std::string sName) |
set the section name, clear the section content | |
void | SetVerboseLevel (TRestStringOutput::REST_Verbose_Level v) |
sets the verbose level | |
void | SetWarning (std::string message="", bool print=true, int maxPrint=5) |
A metadata class may use this method to signal that something went wrong. | |
void | Store () |
If this method is called the metadata information will be stored in disk. | |
TRestMetadata (const TRestMetadata &) | |
virtual void | UpdateMetadataMembers () |
Method to allow implementation of specific metadata members updates at inherited classes. | |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) |
overwriting the write() method with fStore considered | |
void | WriteConfigBuffer (std::string fName) |
Writes the config buffer to a file in append mode. | |
~TRestMetadata () | |
TRestMetadata default destructor. | |
Private Member Functions | |
void | InitFromConfigFile () override |
Initializes the readout members using the information given in the TRestDetectorReadout RML section. | |
void | Initialize () override |
Initializes the readout members and defines the section name. | |
*TRestDetectorReadoutModule definitions *void | ValidateReadout () const |
This method is not implemented yet. But it could do some checks to help verifying the readout. | |
Private Attributes | |
Int_t | fMappingNodes |
*coordinate mapping See also TRestDetectorReadoutMapping *std::vector< TRestDetectorReadoutModule > | fModuleDefinitions |
std::vector< TRestDetectorReadoutPlane > | fReadoutPlanes |
A std::vector storing the TRestDetectorReadoutPlane definitions. | |
Additional Inherited Members | |
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. | |
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". | |
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". | |
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. | |
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. | |
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. | |
TString | GetSearchPath () |
virtual void | InitFromRootFile () |
Method called after the object is retrieved from root file. | |
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. | |
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. | |
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. | |
TiXmlElement * | StringToElement (std::string definition) |
Parsing a string into TiXmlElement object. More... | |
TRestMetadata () | |
TRestMetadata default constructor. | |
TRestMetadata (const char *configFilename) | |
constructor | |
void | UnSetVersion () |
Resets the version of TRestRun to -1, in case the file is old REST file. Only TRestRun is allowed to update version. | |
Protected Attributes inherited from TRestMetadata | |
std::string | configBuffer |
The buffer where the corresponding metadata section is stored. Filled only during Write() | |
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. | |
TiXmlElement * | fElement |
Saving the sectional element together with global element. | |
TiXmlElement * | fElementGlobal |
Saving the global element, to be passed to the resident class, if necessary. | |
Bool_t | fError = false |
It can be used as a way to identify that something went wrong using SetError method. | |
TString | fErrorMessage = "" |
A std::string to store an optional error message through method SetError. | |
TRestManager * | fHostmgr |
All metadata classes can be initialized and managed by TRestManager. | |
Int_t | fNErrors = 0 |
It counts the number of errors notified. | |
Int_t | fNWarnings = 0 |
It counts the number of warnings notified. | |
std::string | fSectionName |
Section name given in the constructor of the derived metadata class. | |
Bool_t | fStore |
This variable is used to determine if the metadata structure should be stored in the ROOT file. | |
std::map< std::string, std::string > | fVariables |
Saving a list of rml variables. name-value std::pair. | |
TRestStringOutput::REST_Verbose_Level | fVerboseLevel |
Verbose level used to print debug info. | |
Bool_t | fWarning = false |
It can be used as a way to identify that something went wrong using SetWarning method. | |
TString | fWarningMessage = "" |
It can be used as a way to identify that something went wrong using SetWarning method. | |
std::string | messageBuffer |
The buffer to store the output message through TRestStringOutput in this class. | |
endl_t | RESTendl |
Termination flag object for TRestStringOutput. | |
|
explicit |
TRestDetectorReadout constructor loading data from a config file.
If no configuration path was defined using TRestMetadata::SetConfigFilePath the path to the config file must be specified using full path, absolute or relative.
By default the config file must be specified with full path, absolute or relative.
First TRestDetectorReadout section occurrence will be loaded.
configFilename | A const char* giving the path to an RML file. |
Definition at line 311 of file src/TRestDetectorReadout.cxx.
TRestDetectorReadout::TRestDetectorReadout | ( | const char * | configFilename, |
const std::string & | name | ||
) |
TRestDetectorReadout constructor loading data from a config file.
If no configuration path was defined using TRestMetadata::SetConfigFilePath the path to the config file must be specified using full path, absolute or relative.
By default the config file must be specified with full path, absolute or relative.
configFilename | A const char* giving the path to an RML file. |
name | The name of the TRestDetectorReadout section to be loaded |
Definition at line 331 of file src/TRestDetectorReadout.cxx.
std::tuple< Int_t, Int_t, Int_t > TRestDetectorReadout::GetHitsDaqChannelAtReadoutPlane | ( | const TVector3 & | position, |
Int_t | planeId = 0 |
||
) |
Returns a tuple with the DaqID, ModuleID, ChannelID.
This method recovers the channel daq id corresponding to the (x,y,z) coordinates given by argument. It will fill the value the corresponding moduleID, and channelID where the hit was found, while it will return the value of the daq channel id.
It will search only at the specified readout plane.
This method requires to specify the plane id where the readout channel is to be found. If not given, the default value will be planeId = 0.
Definition at line 728 of file src/TRestDetectorReadout.cxx.
TRestDetectorReadoutModule * TRestDetectorReadout::GetReadoutModuleWithID | ( | int | id | ) |
Returns a pointer to the readout module by ID.
e.g. micromegas M0 has id 0, M5 has id 5. The ID is Unique of all the readout mudules
Definition at line 409 of file src/TRestDetectorReadout.cxx.
|
inlineoverridevirtual |
Implemented it in the derived metadata class to print out specific metadata information.
Prints metadata content on screen. Usually overloaded by the derived metadata class.
Reimplemented from TRestMetadata.
Definition at line 96 of file TRestDetectorReadout.h.
void TRestDetectorReadout::PrintMetadata | ( | Int_t | DetailLevel | ) |
Prints on screen the details about the readout definition.
fullDetail | Prints all modules, channels and pixels info. |
Definition at line 825 of file src/TRestDetectorReadout.cxx.