CbmRoot
CbmDigitize< Digi > Class Template Referenceabstract

Base class template for CBM digitisation tasks. More...

#include <CbmDigitize.h>

Inheritance diagram for CbmDigitize< Digi >:
[legend]
Collaboration diagram for CbmDigitize< Digi >:
[legend]

Public Types

typedef std::pair< std::unique_ptr< Digi >, std::unique_ptr< CbmMatch > > Data
 Short for data to be handled (pair of digi and match) More...
 

Public Member Functions

 CbmDigitize ()
 Default constructor. More...
 
 CbmDigitize (const char *name, const char *branchName="")
 Constructor with name. More...
 
virtual ~CbmDigitize ()
 Destructor. More...
 
Bool_t CheckOutput ()
 Check the output for being time-sorted. More...
 
void ClearOutput ()
 Clear the output arrays. More...
 
ULong64_t FillTimeSlice (CbmTimeSlice *timeSlice)
 Move data from the DaqBuffer into the current time slice. More...
 
ULong64_t FillTimeSlice (CbmTimeSlice *timeSlice, Double_t fillTime)
 Move data from the DaqBuffer into the current time slice. More...
 
ULong64_t GetDaqBufferSize () const
 Size of DAQ buffer @value Number of data in the DAQ buffer. More...
 
std::string GetDaqBufferStatus () const
 Debug output of DAQ buffer status @value String with status of DAQ buffer. More...
 
Double_t GetDaqBufferTimeFirst () const
 Time stamp of first data in the DAQ buffer @value Time stamp of first data in the DAQ buffer. More...
 
Double_t GetDaqBufferTimeLast () const
 Time stamp of last data in the DAQ buffer @value Time stamp of last data in the DAQ buffer. More...
 
void RegisterOutput ()
 Register the output arrays. More...
 
void SendData (Digi *digi, CbmMatch *match=nullptr)
 Send a digi and the corresponding match object to the DAQ. More...
 
virtual void FillCustomData (Double_t, Bool_t=kTRUE)
 Fill custom data into time slice. More...
 
void GetEventInfo ()
 Get event information. More...
 
Double_t GetEventTime () const
 Current event time @value Start time of current event [ns]. More...
 
virtual ECbmModuleId GetSystemId () const =0
 Detector system ID. More...
 
void SetCreateMatches (Bool_t choice=kTRUE)
 Set creation of links to MC. More...
 
void SetEventMode (Bool_t choice=kTRUE)
 Set event-by-event mode. More...
 
void SetProduceNoise (Bool_t choice=kTRUE)
 Set production of inter-event noise. More...
 

Protected Attributes

Bool_t fEventMode
 
Bool_t fProduceNoise
 Flag for event-by-event mode. More...
 
Bool_t fCreateMatches
 Flag for production of inter-event noise. More...
 
Int_t fCurrentInput
 Flag for creation of links to MC. More...
 
Int_t fCurrentEvent
 Number of current input. More...
 
Int_t fCurrentMCEntry
 Number of current MC event. More...
 
Double_t fCurrentEventTime
 Number of current MC entry. More...
 

Private Member Functions

ULong64_t FillTimeSlice (CbmTimeSlice *timeSlice, Bool_t checkLimit, Double_t fillTime)
 Move data from the DaqBuffer into the current time slice. More...
 
 ClassDef (CbmDigitize, 1)
 

Private Attributes

TString fBranchName = ""
 Output branch name. More...
 
std::vector< Digi > * fDigis = nullptr
 
std::vector< CbmMatch > * fMatches = nullptr
 Output array (Digi) More...
 
std::multimap< double, DatafDaqBuffer
 Output array (CbmMatch) More...
 

Detailed Description

template<class Digi>
class CbmDigitize< Digi >

Base class template for CBM digitisation tasks.

Author
Volker Friese v.fri.nosp@m.ese@.nosp@m.gsi.d.nosp@m.e
Date
31 January 2020

Concrete digitisers should concretise with their digi class as template parameters.

The requirement for the digi class is to implement Double_t GetTime().

Definition at line 39 of file CbmDigitize.h.

Member Typedef Documentation

◆ Data

template<class Digi >
typedef std::pair<std::unique_ptr<Digi>, std::unique_ptr<CbmMatch> > CbmDigitize< Digi >::Data

Short for data to be handled (pair of digi and match)

Definition at line 43 of file CbmDigitize.h.

Constructor & Destructor Documentation

◆ CbmDigitize() [1/2]

template<class Digi >
CbmDigitize< Digi >::CbmDigitize ( )
inline

Default constructor.

Definition at line 47 of file CbmDigitize.h.

◆ CbmDigitize() [2/2]

template<class Digi >
CbmDigitize< Digi >::CbmDigitize ( const char *  name,
const char *  branchName = "" 
)
inline

Constructor with name.

Parameters
nameTask name

Definition at line 53 of file CbmDigitize.h.

◆ ~CbmDigitize()

template<class Digi >
virtual CbmDigitize< Digi >::~CbmDigitize ( )
inlinevirtual

Destructor.

Definition at line 58 of file CbmDigitize.h.

Member Function Documentation

◆ CheckOutput()

template<class Digi >
Bool_t CbmDigitize< Digi >::CheckOutput ( )
inlinevirtual

Check the output for being time-sorted.

Implements CbmDigitizeBase.

Definition at line 63 of file CbmDigitize.h.

◆ ClassDef()

template<class Digi >
CbmDigitize< Digi >::ClassDef ( CbmDigitize< Digi >  ,
 
)
private

◆ ClearOutput()

template<class Digi >
void CbmDigitize< Digi >::ClearOutput ( )
inlinevirtual

Clear the output arrays.

Implements CbmDigitizeBase.

Definition at line 84 of file CbmDigitize.h.

◆ FillCustomData()

virtual void CbmDigitizeBase::FillCustomData ( Double_t  ,
Bool_t  = kTRUE 
)
inlinevirtualinherited

Fill custom data into time slice.

Parameters
fillTimeTime until data can be filled
limitIf kTRUE, only data up to fillTime will be treated; otherwise, all.

This method allows the digitizer to implement additional functionality than writing digis and match objects. It will be called from CbmDaq.

Definition at line 68 of file CbmDigitizeBase.h.

◆ FillTimeSlice() [1/3]

template<class Digi >
ULong64_t CbmDigitize< Digi >::FillTimeSlice ( CbmTimeSlice timeSlice)
inlinevirtual

Move data from the DaqBuffer into the current time slice.

Parameters
timeSlicePointer to current time slice object @value Number of digi objects filled into the time slice.

For regular time slices, all data with time stamp within the interval of the current time slice are moved from the buffer to the time slice. For time slices of type kFlexible or kEvent, all data will be moved.

Implements CbmDigitizeBase.

Definition at line 101 of file CbmDigitize.h.

Referenced by CbmDigitize< CbmTrdDigi >::FillTimeSlice().

◆ FillTimeSlice() [2/3]

template<class Digi >
ULong64_t CbmDigitize< Digi >::FillTimeSlice ( CbmTimeSlice timeSlice,
Bool_t  checkLimit,
Double_t  fillTime 
)
inlineprivate

Move data from the DaqBuffer into the current time slice.

Parameters
timeSlicePointer to current time slice object
fillTimeTime up to which data will be moved [ns] @value Number of digi objects filled into the time slice.

For regular time slices, all data with time stamp within the interval of the current time slice are moved from the buffer to the time slice. For time slices of type kFlexible or kEvent, all data will be moved.

If checkLimit is selected, only data with time stamp less than fillTime are moved.

Definition at line 256 of file CbmDigitize.h.

◆ FillTimeSlice() [3/3]

template<class Digi >
ULong64_t CbmDigitize< Digi >::FillTimeSlice ( CbmTimeSlice timeSlice,
Double_t  fillTime 
)
inlinevirtual

Move data from the DaqBuffer into the current time slice.

Parameters
timeSlicePointer to current time slice object
fillTimeTime up to which data will be moved [ns] @value Number of digi objects filled into the time slice.

Move data with time stamp up to fillTime from the buffer to the time slice. For regular time slices, only data with time stamp within the time slice interval will be moved. For time slices of type kFlexible or kEvent, all data up to fillTime will be moved.

Implements CbmDigitizeBase.

Definition at line 118 of file CbmDigitize.h.

◆ GetDaqBufferSize()

template<class Digi >
ULong64_t CbmDigitize< Digi >::GetDaqBufferSize ( ) const
inlinevirtual

Size of DAQ buffer @value Number of data in the DAQ buffer.

Implements CbmDigitizeBase.

Definition at line 128 of file CbmDigitize.h.

Referenced by CbmDigitize< CbmTrdDigi >::GetDaqBufferStatus().

◆ GetDaqBufferStatus()

template<class Digi >
std::string CbmDigitize< Digi >::GetDaqBufferStatus ( ) const
inlinevirtual

Debug output of DAQ buffer status @value String with status of DAQ buffer.

Implements CbmDigitizeBase.

Definition at line 136 of file CbmDigitize.h.

◆ GetDaqBufferTimeFirst()

template<class Digi >
Double_t CbmDigitize< Digi >::GetDaqBufferTimeFirst ( ) const
inlinevirtual

Time stamp of first data in the DAQ buffer @value Time stamp of first data in the DAQ buffer.

Implements CbmDigitizeBase.

Definition at line 150 of file CbmDigitize.h.

Referenced by CbmDigitize< CbmTrdDigi >::GetDaqBufferStatus().

◆ GetDaqBufferTimeLast()

template<class Digi >
Double_t CbmDigitize< Digi >::GetDaqBufferTimeLast ( ) const
inlinevirtual

Time stamp of last data in the DAQ buffer @value Time stamp of last data in the DAQ buffer.

Implements CbmDigitizeBase.

Definition at line 161 of file CbmDigitize.h.

Referenced by CbmDigitize< CbmTrdDigi >::GetDaqBufferStatus().

◆ GetEventInfo()

void CbmDigitizeBase::GetEventInfo ( )
inherited

Get event information.

MC input number, entry number and event time are taken from FairEventHeader and stored in the private data members for convenience. Note that the MC entry number need not coincide with the event number, for instance if the run does not start with the first MC entry, or in the case of mixed MC inputs to digitization.

Definition at line 48 of file CbmDigitizeBase.cxx.

References CbmDigitizeBase::fCurrentEvent, CbmDigitizeBase::fCurrentEventTime, CbmDigitizeBase::fCurrentInput, and CbmDigitizeBase::fCurrentMCEntry.

Referenced by CbmMvdDigitizer::Exec(), CbmPsdSimpleDigitizer::Exec(), CbmRichDigitizer::Exec(), CbmTofDigitize::Exec(), CbmMuchDigitizeGem::Exec(), CbmTrdDigitizer::Exec(), and CbmStsDigitize::Exec().

◆ GetEventTime()

Double_t CbmDigitizeBase::GetEventTime ( ) const
inlineinherited

Current event time @value Start time of current event [ns].

Definition at line 107 of file CbmDigitizeBase.h.

References CbmDigitizeBase::fCurrentEventTime.

◆ GetSystemId()

virtual ECbmModuleId CbmDigitizeBase::GetSystemId ( ) const
pure virtualinherited

Detector system ID.

Returns
Detector system ID [ECbmModuleId]

Implemented in CbmStsDigitize, CbmMuchDigitizeGem, CbmTrdDigitizer, CbmRichDigitizer, CbmTofDigitize, CbmMvdDigitizer, and CbmPsdSimpleDigitizer.

Referenced by CbmDigitize< CbmTrdDigi >::FillTimeSlice().

◆ RegisterOutput()

template<class Digi >
void CbmDigitize< Digi >::RegisterOutput ( )
inline

Register the output arrays.

Arrays for the digis and the match objects will be created and registered as output to the ROOT tree. The current implementation uses std::vector as container.

Definition at line 175 of file CbmDigitize.h.

◆ SendData()

template<class Digi >
void CbmDigitize< Digi >::SendData ( Digi *  digi,
CbmMatch match = nullptr 
)
inline

Send a digi and the corresponding match object to the DAQ.

Parameters
digiPointer to digi object (template parameter)
matchPointer to match object

TODO: The interface should be unique pointers, meaning that the digitisers have to create objects by unique pointers from the start.

Definition at line 219 of file CbmDigitize.h.

Referenced by CbmTrdModuleSimT::FlushBuffer().

◆ SetCreateMatches()

void CbmDigitizeBase::SetCreateMatches ( Bool_t  choice = kTRUE)
inlineinherited

Set creation of links to MC.

Parameters
ChoiceIf kTRUE, the match objects will be created

Definition at line 143 of file CbmDigitizeBase.h.

References CbmDigitizeBase::fCreateMatches.

Referenced by CbmDigitization::Run().

◆ SetEventMode()

void CbmDigitizeBase::SetEventMode ( Bool_t  choice = kTRUE)
inlineinherited

Set event-by-event mode.

Parameters
ChoiceIf kTRUE, the digitizer will run in event-by-event mode

Definition at line 149 of file CbmDigitizeBase.h.

References CbmDigitizeBase::fEventMode.

Referenced by CbmDigitization::Run().

◆ SetProduceNoise()

void CbmDigitizeBase::SetProduceNoise ( Bool_t  choice = kTRUE)
inlineinherited

Set production of inter-event noise.

Parameters
ChoiceIf kTRUE, the digitizer will produce noise

Definition at line 155 of file CbmDigitizeBase.h.

References CbmDigitizeBase::fProduceNoise.

Referenced by CbmDigitization::Run().

Member Data Documentation

◆ fBranchName

template<class Digi >
TString CbmDigitize< Digi >::fBranchName = ""
private

Output branch name.

Definition at line 230 of file CbmDigitize.h.

Referenced by CbmDigitize< CbmTrdDigi >::RegisterOutput().

◆ fCreateMatches

◆ fCurrentEvent

◆ fCurrentEventTime

◆ fCurrentInput

◆ fCurrentMCEntry

◆ fDaqBuffer

template<class Digi >
std::multimap<double, Data> CbmDigitize< Digi >::fDaqBuffer
private

Output array (CbmMatch)

DAQ buffer. Here, the digis and matches are buffered until they are filled into the time slice output (ROOT branch). The map key is the digi time.

Definition at line 239 of file CbmDigitize.h.

Referenced by CbmDigitize< CbmTrdDigi >::FillTimeSlice(), CbmDigitize< CbmTrdDigi >::GetDaqBufferSize(), CbmDigitize< CbmTrdDigi >::GetDaqBufferTimeFirst(), CbmDigitize< CbmTrdDigi >::GetDaqBufferTimeLast(), and CbmDigitize< CbmTrdDigi >::SendData().

◆ fDigis

template<class Digi >
std::vector<Digi>* CbmDigitize< Digi >::fDigis = nullptr
private

◆ fEventMode

◆ fMatches

template<class Digi >
std::vector<CbmMatch>* CbmDigitize< Digi >::fMatches = nullptr
private

◆ fProduceNoise

Bool_t CbmDigitizeBase::fProduceNoise
protectedinherited

Flag for event-by-event mode.

Definition at line 160 of file CbmDigitizeBase.h.

Referenced by CbmRichDigitizer::Exec(), CbmStsDigitize::InitParams(), and CbmDigitizeBase::SetProduceNoise().


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