REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
Data Structures | Public Member Functions | Protected Member Functions | Protected Attributes
TRestRawBiPoToSignalProcess Class Reference

Detailed Description

An process to read binary data from BiPo electronics.

The TRestRawBiPoToSignalProcess reads a binary file based on the BiPo acquisition. This acquisition consists of several Matacq boards that register waveforms coming from two different sources managed by the BiPo trigger configuration.

This process reads the header of the input file placing the header information in two different c-structures MatacqBoard and BiPoSettings.

For the moment the input file needs to be read uncompressed. If we got compressed data, we will need to uncompress it before start the processing with restManager, as follows:

gzip -d -c /path/to/binary/data/BiPo3Mod2_run_2600.data.gz > /tmp/BiPo3Mod2_run_2600.data
restManager --c /path/to/rml/BiPoToRawSignal.rml --f /tmp/BiPo3Mod2_run_2600.data
rm /tmp/BiPo3Mod2_run_2600.data

The file BiPoToRawSignal.rml can be found inside the pipeline/external/BiPo.

Additional information might be found at the following PR.

The produced event consists of 4-channels, each channel being divided in two time windows, the first window goes from 1 to 1500 samples, and the second window goes from 1501 to 2460.

An example of the acquired event

Warning
⚠ REST is under continous development. This documentation is offered to you by the REST community. Your HELP is needed to keep this code up to date. Your feedback will be worth to support this software, please report any problems/suggestions you may find will using it at The REST Framework forum. You are welcome to contribute fixing typos, updating information or adding/proposing new contributions. See also our Contribution Guide.

RESTsoft - Software for Rare Event Searches with TPCs

History of developments:

2023-May: First implementation (from https://gitlab.in2p3.fr/bipo/matacqana.git) Javier Galan

Author
Javier Galan

Definition at line 46 of file TRestRawBiPoToSignalProcess.h.

#include <TRestRawBiPoToSignalProcess.h>

Inheritance diagram for TRestRawBiPoToSignalProcess:
TRestRawToSignalProcess TRestEventProcess TRestMetadata

Data Structures

struct  BiPoSettings
 A structure to store the BiPo settings. More...
 
struct  MatacqBoard
 A structure to store the configuration settings of Matacq board. More...
 

Public Member Functions

 ClassDefOverride (TRestRawBiPoToSignalProcess, 1)
 
BiPoSettings GetBiPoSettings (Int_t n)
 It gives access to confituration of BiPo settings. More...
 
MatacqBoard GetMatacqBoard (Int_t n)
 It gives access to a Matacq board confituration. More...
 
const char * GetProcessName () const override
 Returs a given process name. More...
 
void Initialize () override
 Function to initialize input/output event members and define the section name. More...
 
void InitProcess () override
 Process initialization. Data members that require initialization just before start processing should be initialized here. More...
 
void PrintMetadata () override
 Prints out the Matacq boards configuration and BiPo setup. More...
 
TRestEventProcessEvent (TRestEvent *inputEvent) override
 The main processing event function. More...
 
 TRestRawBiPoToSignalProcess ()
 Default constructor. More...
 
 ~TRestRawBiPoToSignalProcess ()
 Default destructor. More...
 
- Public Member Functions inherited from TRestRawToSignalProcess
virtual Bool_t AddInputFile (const std::string &file) override
 
 ClassDefOverride (TRestRawToSignalProcess, 1)
 
virtual std::string GetElectronicsType () const
 
RESTValue GetInputEvent () const override
 Get pointer to input event. Must be implemented in the derived class. More...
 
RESTValue GetOutputEvent () const override
 Get pointer to output event. Must be implemented in the derived class. More...
 
TRestMetadataGetProcessMetadata () const
 
Long64_t GetTotalBytes () const override
 
Long64_t GetTotalBytesRead () const override
 Interface to external file reading, get the read bytes. To be implemented in external processes. More...
 
Bool_t GoToNextFile ()
 
void Initialize () override
 Making default settings. More...
 
virtual void InitProcess () override
 To be executed at the beginning of the run (outside event loop) More...
 
void LoadConfig (const std::string &configFilename, const std::string &name="")
 
Bool_t OpenInputFiles (const std::vector< std::string > &files) override
 
virtual void PrintMetadata () override
 Implemented it in the derived metadata class to print out specific metadata information. More...
 
Bool_t ResetEntry () override
 
void SetRunOrigin (Int_t runOrigin)
 
void SetSubRunOrigin (Int_t subRunOrigin)
 
 TRestRawToSignalProcess (const char *configFilename)
 
- Public Member Functions inherited from TRestEventProcess
virtual Bool_t AddInputFile (const std::string &file)
 
bool ApplyCut ()
 
virtual void BeginOfEventProcess (TRestEvent *inputEvent=nullptr)
 Begin of event process, preparation work. Called right before ProcessEvent() More...
 
 ClassDefOverride (TRestEventProcess, 3)
 
virtual void EndOfEventProcess (TRestEvent *inputEvent=nullptr)
 End of event process. Nothing to do. Called directly after ProcessEvent() More...
 
virtual void EndProcess ()
 To be executed at the end of the run (outside event loop) More...
 
TRestAnalysisTreeGetAnalysisTree () const
 Return the local analysis tree (dummy) More...
 
TCanvas * GetCanvas () const
 Get canvas. More...
 
TRestAnalysisTreeGetFullAnalysisTree ()
 
virtual RESTValue GetInputEvent () const =0
 Get pointer to input event. Must be implemented in the derived class. More...
 
std::vector< std::string > GetListOfAddedObservables ()
 
virtual RESTValue GetOutputEvent () const =0
 Get pointer to output event. Must be implemented in the derived class. More...
 
virtual const char * GetProcessName () const =0
 
TRestRunGetRunInfo () const
 Return the pointer of the hosting TRestRun object. More...
 
virtual Long64_t GetTotalBytes () const
 
virtual Long64_t GetTotalBytesRead () const
 Interface to external file reading, get the read bytes. To be implemented in external processes. More...
 
virtual void InitFromConfigFile () override
 To make settings from rml file. This method must be implemented in the derived class. More...
 
virtual void InitProcess ()
 To be executed at the beginning of the run (outside event loop) More...
 
Bool_t isExternal () const
 Return whether this process is external process. More...
 
Int_t LoadSectionMetadata () override
 This method does some preparation of xml section. More...
 
virtual void NotifyAnalysisTreeReset ()
 In case the analysis tree is reset(switched to new file), some process needs to have action. More...
 
virtual Bool_t OpenInputFiles (const std::vector< std::string > &files)
 
virtual TRestEventProcessEvent (TRestEvent *inputEvent)=0
 Process one event. More...
 
std::vector< std::string > ReadObservables ()
 
void RegisterAllObservables (Bool_t value=true)
 
virtual Bool_t ResetEntry ()
 
void SetAnalysisTree (TRestAnalysisTree *tree)
 Set analysis tree of this process, then add observables to it.
 
void SetCanvasSize (Int_t x, Int_t y)
 Set canvas size. More...
 
void SetFriendProcess (TRestEventProcess *p)
 Add friendly process to this process.
 
void SetObservableValidation (bool validate)
 
void SetParallelProcess (TRestEventProcess *p)
 Add parallel process to this process.
 
void SetRunInfo (TRestRun *r)
 Set TRestRun for this process. More...
 
Bool_t singleThreadOnly () const
 Return whether this process is single std::thread only. More...
 
 TRestEventProcess ()
 
 ~TRestEventProcess ()
 

Protected Member Functions

Int_t GetBin (Int_t boardIndex, Int_t channel, Int_t bin)
 It returns the ordered channel value from the Matacq memory buffer for a given board, channel and time sample, or bin. More...
 
UInt_t GetBoardIndex (Int_t address)
 It returns the std::vector storage index using the hardware address of the Matacq board. More...
 
Int_t ReadBiPoEventData (std::vector< uint16_t > &mdata)
 This method reads the event data corresponding to one event. The sampled channel data that will be made accessible at the mdata pointer provided as argument. More...
 
void ReadBiPoSetup ()
 This method reads the header data corresponding to the BiPo settings of one card. More...
 
void ReadBoard ()
 This method reads the settings of one of the Matacq boards. More...
 
void ReadFooter ()
 This method reads the header data containing the run timestamp, the number of Matacq boards, and the settings of each of the Matacq and BiPo boards. More...
 
void ReadHeader ()
 This method reads the header data containing the run timestamp, the number of Matacq boards, and the settings of each of the Matacq and BiPo boards. More...
 
- Protected Member Functions inherited from TRestRawToSignalProcess
void InitFromConfigFile () override
 To make settings from rml file. This method must be implemented in the derived class. More...
 
void LoadDefaultConfig ()
 
- Protected Member Functions inherited from TRestEventProcess
void BeginPrintProcess ()
 [name, cut range]
 
void CreateCanvas ()
 Create the canvas. More...
 
void EndPrintProcess ()
 
TRestEventProcessGetFriend (const std::string &nameOrType)
 
TRestEventProcessGetFriendLive (const std::string &nameOrType)
 
template<class T >
T * GetMetadata ()
 Get a metadata object from the host TRestRun. More...
 
TRestMetadataGetMetadata (const std::string &nameOrType)
 
size_t GetNumberOfParallelProcesses () const
 
template<class T >
GetObservableValue (const std::string &name)
 
TRestEventProcessGetParallel (int i)
 
template<class T >
std::vector< T > GetParallelDataMembers (T *member_of_process)
 Get a list of data members from parallel processes which is same to this process's certain data member. More...
 
template<class T >
void SetObservableValue (const std::string &name, const T &value)
 Set observable value for AnalysisTree. More...
 

Protected Attributes

std::vector< BiPoSettingsfBiPoSettings
 A vector of BiPo settings. More...
 
Int_t fEventCounter = 0
 A temporary counter used to define the event id. More...
 
std::vector< MatacqBoardfMatacqBoard
 A vector of Matacq boards that contain the information of each card. More...
 
Int_t fNBoards = 0
 The number of Matacq boards present on the setup. More...
 
- Protected Attributes inherited from TRestRawToSignalProcess
std::string fElectronicsType
 
bool fgKeepFileOpen
 
FILE * fInputBinFile
 
std::vector< std::string > fInputFileNames
 
std::vector< FILE * > fInputFiles
 
Int_t fMinPoints
 
unsigned int frameBits
 
Int_t fRunOrigin
 
Int_t fShowSamples
 true if need to open all raw files at the beginning More...
 
TRestRawSignalEventfSignalEvent = nullptr
 
Int_t fSubRunOrigin
 
Int_t iCurFile
 
Int_t nFiles
 
unsigned int payload
 
Long64_t totalBytes
 
Long64_t totalBytesReaded
 
Double_t tStart
 
- Protected Attributes inherited from TRestEventProcess
TRestAnalysisTreefAnalysisTree = nullptr
 
TCanvas * fCanvas = nullptr
 < Canvas for some viewer event More...
 
TVector2 fCanvasSize
 Canvas size. More...
 
std::vector< std::pair< std::string, TVector2 > > fCuts
 Stores cut definitions. Any listed observables should be in the range. More...
 
bool fDynamicObs = false
 It defines whether to use added observables only or all the observables appear in the code. More...
 
bool fIsExternal = false
 It defines if the process reads event data from an external source. More...
 
std::map< std::string, int > fObservablesDefined
 Stores the list of all the appeared process observables in the code. More...
 
std::map< std::string, int > fObservablesUpdated
 Stores the list of process observables updated when processing this event. More...
 
bool fReadOnly = false
 not used, keep for compatibility More...
 
TRestRunfRunInfo = nullptr
 < Pointer to TRestRun object where to find metadata. More...
 
bool fSingleThreadOnly = false
 
bool fValidateObservables = false
 It defines if observable names should be added to the validation list. More...
 

Additional Inherited Members

- Protected Types inherited from TRestEventProcess
enum  REST_Process_Output { No_Output , Observable , Internal_Var , Full_Output }
 

Constructor & Destructor Documentation

◆ TRestRawBiPoToSignalProcess()

TRestRawBiPoToSignalProcess::TRestRawBiPoToSignalProcess ( )

Default constructor.

Definition at line 93 of file TRestRawBiPoToSignalProcess.cxx.

◆ ~TRestRawBiPoToSignalProcess()

TRestRawBiPoToSignalProcess::~TRestRawBiPoToSignalProcess ( )

Default destructor.

Definition at line 98 of file TRestRawBiPoToSignalProcess.cxx.

Member Function Documentation

◆ GetBin()

Int_t TRestRawBiPoToSignalProcess::GetBin ( Int_t  boardIndex,
Int_t  channel,
Int_t  bin 
)
protected

It returns the ordered channel value from the Matacq memory buffer for a given board, channel and time sample, or bin.

Definition at line 559 of file TRestRawBiPoToSignalProcess.cxx.

◆ GetBiPoSettings()

BiPoSettings TRestRawBiPoToSignalProcess::GetBiPoSettings ( Int_t  n)
inline

It gives access to confituration of BiPo settings.

Definition at line 119 of file TRestRawBiPoToSignalProcess.h.

◆ GetBoardIndex()

UInt_t TRestRawBiPoToSignalProcess::GetBoardIndex ( Int_t  address)
protected

It returns the std::vector storage index using the hardware address of the Matacq board.

Definition at line 548 of file TRestRawBiPoToSignalProcess.cxx.

◆ GetMatacqBoard()

MatacqBoard TRestRawBiPoToSignalProcess::GetMatacqBoard ( Int_t  n)
inline

It gives access to a Matacq board confituration.

Definition at line 116 of file TRestRawBiPoToSignalProcess.h.

◆ GetProcessName()

const char * TRestRawBiPoToSignalProcess::GetProcessName ( ) const
inlineoverridevirtual

Returs a given process name.

Implements TRestEventProcess.

Definition at line 111 of file TRestRawBiPoToSignalProcess.h.

◆ Initialize()

void TRestRawBiPoToSignalProcess::Initialize ( )
overridevirtual

Function to initialize input/output event members and define the section name.

Reimplemented from TRestMetadata.

Definition at line 103 of file TRestRawBiPoToSignalProcess.cxx.

◆ InitProcess()

void TRestRawBiPoToSignalProcess::InitProcess ( )
overridevirtual

Process initialization. Data members that require initialization just before start processing should be initialized here.

Reading MATACQ boards and BiPo setup settings

Reimplemented from TRestRawToSignalProcess.

Definition at line 113 of file TRestRawBiPoToSignalProcess.cxx.

◆ PrintMetadata()

void TRestRawBiPoToSignalProcess::PrintMetadata ( )
overridevirtual

Prints out the Matacq boards configuration and BiPo setup.

Reimplemented from TRestRawToSignalProcess.

Definition at line 567 of file TRestRawBiPoToSignalProcess.cxx.

◆ ProcessEvent()

TRestEvent * TRestRawBiPoToSignalProcess::ProcessEvent ( TRestEvent inputEvent)
overridevirtual

The main processing event function.

Initializing the new signal event

Implements TRestEventProcess.

Definition at line 142 of file TRestRawBiPoToSignalProcess.cxx.

◆ ReadBiPoEventData()

Int_t TRestRawBiPoToSignalProcess::ReadBiPoEventData ( std::vector< uint16_t > &  mdata)
protected

This method reads the event data corresponding to one event. The sampled channel data that will be made accessible at the mdata pointer provided as argument.

The event timestamp and the triggered board values will be also read here. The event timestamp will be assigned to the fSignalEvent, while the triggered board address will be returned and it will be used later on to generate a signal id.

Definition at line 485 of file TRestRawBiPoToSignalProcess.cxx.

◆ ReadBiPoSetup()

void TRestRawBiPoToSignalProcess::ReadBiPoSetup ( )
protected

This method reads the header data corresponding to the BiPo settings of one card.

Definition at line 392 of file TRestRawBiPoToSignalProcess.cxx.

◆ ReadBoard()

void TRestRawBiPoToSignalProcess::ReadBoard ( )
protected

This method reads the settings of one of the Matacq boards.

Definition at line 298 of file TRestRawBiPoToSignalProcess.cxx.

◆ ReadFooter()

void TRestRawBiPoToSignalProcess::ReadFooter ( )
protected

This method reads the header data containing the run timestamp, the number of Matacq boards, and the settings of each of the Matacq and BiPo boards.

Reading the run start timestamp

Definition at line 218 of file TRestRawBiPoToSignalProcess.cxx.

◆ ReadHeader()

void TRestRawBiPoToSignalProcess::ReadHeader ( )
protected

This method reads the header data containing the run timestamp, the number of Matacq boards, and the settings of each of the Matacq and BiPo boards.

Reading the run start timestamp

Definition at line 245 of file TRestRawBiPoToSignalProcess.cxx.

Field Documentation

◆ fBiPoSettings

std::vector<BiPoSettings> TRestRawBiPoToSignalProcess::fBiPoSettings
protected

A vector of BiPo settings.

Definition at line 91 of file TRestRawBiPoToSignalProcess.h.

◆ fEventCounter

Int_t TRestRawBiPoToSignalProcess::fEventCounter = 0
protected

A temporary counter used to define the event id.

Definition at line 94 of file TRestRawBiPoToSignalProcess.h.

◆ fMatacqBoard

std::vector<MatacqBoard> TRestRawBiPoToSignalProcess::fMatacqBoard
protected

A vector of Matacq boards that contain the information of each card.

Definition at line 88 of file TRestRawBiPoToSignalProcess.h.

◆ fNBoards

Int_t TRestRawBiPoToSignalProcess::fNBoards = 0
protected

The number of Matacq boards present on the setup.

Definition at line 85 of file TRestRawBiPoToSignalProcess.h.


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